From b4465987f95fe062ef1df3c510ccd9631f58db0e Mon Sep 17 00:00:00 2001 From: Jarrod Lowe Date: Tue, 8 Apr 2025 13:39:00 +1200 Subject: [PATCH 001/238] Environment variable to redirect on logout --- backend/open_webui/env.py | 3 +++ backend/open_webui/main.py | 2 ++ backend/open_webui/routers/auths.py | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index e3819fdc5..bcc8a02c3 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -340,6 +340,9 @@ BYPASS_MODEL_ACCESS_CONTROL = ( os.environ.get("BYPASS_MODEL_ACCESS_CONTROL", "False").lower() == "true" ) +SIGNOUT_REDIRECT_URI = os.environ.get("SIGNOUT_REDIRECT_URI", None) + + #################################### # WEBUI_SECRET_KEY #################################### diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index c9ca059c2..07efa1e5f 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -335,6 +335,7 @@ from open_webui.env import ( WEBUI_SESSION_COOKIE_SECURE, WEBUI_AUTH_TRUSTED_EMAIL_HEADER, WEBUI_AUTH_TRUSTED_NAME_HEADER, + SIGNOUT_REDIRECT_URI, ENABLE_WEBSOCKET_SUPPORT, BYPASS_MODEL_ACCESS_CONTROL, RESET_CONFIG_ON_START, @@ -564,6 +565,7 @@ app.state.config.LDAP_CIPHERS = LDAP_CIPHERS app.state.AUTH_TRUSTED_EMAIL_HEADER = WEBUI_AUTH_TRUSTED_EMAIL_HEADER app.state.AUTH_TRUSTED_NAME_HEADER = WEBUI_AUTH_TRUSTED_NAME_HEADER +app.state.SIGNOUT_REDIRECT_URI = SIGNOUT_REDIRECT_URI app.state.USER_COUNT = None app.state.TOOLS = {} diff --git a/backend/open_webui/routers/auths.py b/backend/open_webui/routers/auths.py index 67c2e9f2a..04e04afbf 100644 --- a/backend/open_webui/routers/auths.py +++ b/backend/open_webui/routers/auths.py @@ -27,6 +27,7 @@ from open_webui.env import ( WEBUI_AUTH_TRUSTED_NAME_HEADER, WEBUI_AUTH_COOKIE_SAME_SITE, WEBUI_AUTH_COOKIE_SECURE, + SIGNOUT_REDIRECT_URI, SRC_LOG_LEVELS, ) from fastapi import APIRouter, Depends, HTTPException, Request, status @@ -555,6 +556,12 @@ async def signout(request: Request, response: Response): detail="Failed to sign out from the OpenID provider.", ) + if SIGNOUT_REDIRECT_URI: + return RedirectResponse( + headers=response.headers, + url=SIGNOUT_REDIRECT_URI, + ) + return {"status": True} From 839ba22c90991dc4d72810aa6f6a527664db80c2 Mon Sep 17 00:00:00 2001 From: tth37 Date: Mon, 14 Apr 2025 01:49:05 +0800 Subject: [PATCH 002/238] feat: Backend for Self-Hosted/External Web Search/Loader Engines --- backend/open_webui/config.py | 23 ++++++++ backend/open_webui/main.py | 8 +++ .../open_webui/retrieval/loaders/external.py | 56 +++++++++++++++++++ backend/open_webui/retrieval/web/external.py | 45 +++++++++++++++ backend/open_webui/retrieval/web/utils.py | 8 +++ backend/open_webui/routers/retrieval.py | 9 +++ 6 files changed, 149 insertions(+) create mode 100644 backend/open_webui/retrieval/loaders/external.py create mode 100644 backend/open_webui/retrieval/web/external.py diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index bd822d06d..434b6403f 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -2236,6 +2236,29 @@ FIRECRAWL_API_BASE_URL = PersistentConfig( os.environ.get("FIRECRAWL_API_BASE_URL", "https://api.firecrawl.dev"), ) +EXTERNAL_WEB_SEARCH_URL = PersistentConfig( + "EXTERNAL_WEB_SEARCH_URL", + "rag.web.search.external_web_search_url", + os.environ.get("EXTERNAL_WEB_SEARCH_URL", ""), +) + +EXTERNAL_WEB_SEARCH_API_KEY = PersistentConfig( + "EXTERNAL_WEB_SEARCH_API_KEY", + "rag.web.search.external_web_search_api_key", + os.environ.get("EXTERNAL_WEB_SEARCH_API_KEY", ""), +) + +EXTERNAL_WEB_LOADER_URL = PersistentConfig( + "EXTERNAL_WEB_LOADER_URL", + "rag.web.loader.external_web_loader_url", + os.environ.get("EXTERNAL_WEB_LOADER_URL", ""), +) + +EXTERNAL_WEB_LOADER_API_KEY = PersistentConfig( + "EXTERNAL_WEB_LOADER_API_KEY", + "rag.web.loader.external_web_loader_api_key", + os.environ.get("EXTERNAL_WEB_LOADER_API_KEY", ""), +) #################################### # Images diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 1d1efc5df..b18313f5c 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -245,6 +245,10 @@ from open_webui.config import ( ENABLE_GOOGLE_DRIVE_INTEGRATION, ENABLE_ONEDRIVE_INTEGRATION, UPLOAD_DIR, + EXTERNAL_WEB_SEARCH_URL, + EXTERNAL_WEB_SEARCH_API_KEY, + EXTERNAL_WEB_LOADER_URL, + EXTERNAL_WEB_LOADER_API_KEY, # WebUI WEBUI_AUTH, WEBUI_NAME, @@ -667,6 +671,10 @@ app.state.config.EXA_API_KEY = EXA_API_KEY app.state.config.PERPLEXITY_API_KEY = PERPLEXITY_API_KEY app.state.config.SOUGOU_API_SID = SOUGOU_API_SID app.state.config.SOUGOU_API_SK = SOUGOU_API_SK +app.state.config.EXTERNAL_WEB_SEARCH_URL = EXTERNAL_WEB_SEARCH_URL +app.state.config.EXTERNAL_WEB_SEARCH_API_KEY = EXTERNAL_WEB_SEARCH_API_KEY +app.state.config.EXTERNAL_WEB_LOADER_URL = EXTERNAL_WEB_LOADER_URL +app.state.config.EXTERNAL_WEB_LOADER_API_KEY = EXTERNAL_WEB_LOADER_API_KEY app.state.config.PLAYWRIGHT_WS_URL = PLAYWRIGHT_WS_URL diff --git a/backend/open_webui/retrieval/loaders/external.py b/backend/open_webui/retrieval/loaders/external.py new file mode 100644 index 000000000..8ff2e617e --- /dev/null +++ b/backend/open_webui/retrieval/loaders/external.py @@ -0,0 +1,56 @@ +import requests +import logging +from typing import Iterator, List, Union + +from langchain_core.document_loaders import BaseLoader +from langchain_core.documents import Document +from open_webui.env import SRC_LOG_LEVELS + +log = logging.getLogger(__name__) +log.setLevel(SRC_LOG_LEVELS["RAG"]) + + +class ExternalLoader(BaseLoader): + def __init__( + self, + web_paths: Union[str, List[str]], + external_url: str, + external_api_key: str, + continue_on_failure: bool = True, + **kwargs, + ) -> None: + if not web_paths: + raise ValueError("At least one URL must be provided.") + + self.external_url = external_url + self.external_api_key = external_api_key + self.urls = web_paths if isinstance(web_paths, list) else [web_paths] + self.continue_on_failure = continue_on_failure + + def lazy_load(self) -> Iterator[Document]: + batch_size = 20 + for i in range(0, len(self.urls), batch_size): + urls = self.urls[i : i + batch_size] + try: + response = requests.get( + self.external_url, + headers={ + "User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot", + "Authorization": f"Bearer {self.external_api_key}", + }, + params={ + "urls": urls, + } + ) + response.raise_for_status() + results = response.json() + for result in results: + yield Document( + page_content=result.get("page_content", ""), + metadata=result.get("metadata", {}), + ) + except Exception as e: + if self.continue_on_failure: + log.error(f"Error extracting content from batch {urls}: {e}") + else: + raise e diff --git a/backend/open_webui/retrieval/web/external.py b/backend/open_webui/retrieval/web/external.py new file mode 100644 index 000000000..29e914f84 --- /dev/null +++ b/backend/open_webui/retrieval/web/external.py @@ -0,0 +1,45 @@ +import logging +from typing import Optional, List + +import requests +from open_webui.retrieval.web.main import SearchResult, get_filtered_results +from open_webui.env import SRC_LOG_LEVELS + +log = logging.getLogger(__name__) +log.setLevel(SRC_LOG_LEVELS["RAG"]) + + +def search_external( + external_url: str, + external_api_key: str, + query: str, + count: int, + filter_list: Optional[List[str]] = None, +) -> List[SearchResult]: + try: + response = requests.get( + external_url, + headers={ + "User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot", + "Authorization": f"Bearer {external_api_key}", + }, + params={ + "query": query, + "count": count, + } + ) + response.raise_for_status() + results = response.json() + if filter_list: + results = get_filtered_results(results, filter_list) + return [ + SearchResult( + link=result.get("link"), + title=result.get("title"), + snippet=result.get("snippet"), + ) + for result in results[:count] + ] + except Exception as e: + log.error(f"Error in External search: {e}") + return [] diff --git a/backend/open_webui/retrieval/web/utils.py b/backend/open_webui/retrieval/web/utils.py index 718cfe52f..fc46d78c4 100644 --- a/backend/open_webui/retrieval/web/utils.py +++ b/backend/open_webui/retrieval/web/utils.py @@ -25,6 +25,7 @@ from langchain_community.document_loaders.firecrawl import FireCrawlLoader from langchain_community.document_loaders.base import BaseLoader from langchain_core.documents import Document from open_webui.retrieval.loaders.tavily import TavilyLoader +from open_webui.retrieval.loaders.external import ExternalLoader from open_webui.constants import ERROR_MESSAGES from open_webui.config import ( ENABLE_RAG_LOCAL_WEB_FETCH, @@ -35,6 +36,8 @@ from open_webui.config import ( FIRECRAWL_API_KEY, TAVILY_API_KEY, TAVILY_EXTRACT_DEPTH, + EXTERNAL_WEB_LOADER_URL, + EXTERNAL_WEB_LOADER_API_KEY, ) from open_webui.env import SRC_LOG_LEVELS @@ -619,6 +622,11 @@ def get_web_loader( web_loader_args["api_key"] = TAVILY_API_KEY.value web_loader_args["extract_depth"] = TAVILY_EXTRACT_DEPTH.value + if WEB_LOADER_ENGINE.value == "external": + WebLoaderClass = ExternalLoader + web_loader_args["external_url"] = EXTERNAL_WEB_LOADER_URL.value + web_loader_args["external_api_key"] = EXTERNAL_WEB_LOADER_API_KEY.value + if WebLoaderClass: web_loader = WebLoaderClass(**web_loader_args) diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 8f89351ac..72d10245d 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -61,6 +61,7 @@ from open_webui.retrieval.web.bing import search_bing from open_webui.retrieval.web.exa import search_exa from open_webui.retrieval.web.perplexity import search_perplexity from open_webui.retrieval.web.sougou import search_sougou +from open_webui.retrieval.web.external import search_external from open_webui.retrieval.utils import ( get_embedding_function, @@ -1465,6 +1466,14 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]: raise Exception( "No SOUGOU_API_SID or SOUGOU_API_SK found in environment variables" ) + elif engine == "external": + return search_external( + request.app.state.config.EXTERNAL_WEB_SEARCH_URL, + request.app.state.config.EXTERNAL_WEB_SEARCH_API_KEY, + query, + request.app.state.config.WEB_SEARCH_RESULT_COUNT, + request.app.state.config.WEB_SEARCH_DOMAIN_FILTER_LIST, + ) else: raise Exception("No search engine API key found in environment variables") From 22f0365cef0d366632be48e20b25fbf09330f9ec Mon Sep 17 00:00:00 2001 From: tth37 Date: Mon, 14 Apr 2025 02:05:58 +0800 Subject: [PATCH 003/238] format --- backend/open_webui/retrieval/loaders/external.py | 2 +- backend/open_webui/retrieval/web/external.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/external.py b/backend/open_webui/retrieval/loaders/external.py index 8ff2e617e..dd67035fd 100644 --- a/backend/open_webui/retrieval/loaders/external.py +++ b/backend/open_webui/retrieval/loaders/external.py @@ -40,7 +40,7 @@ class ExternalLoader(BaseLoader): }, params={ "urls": urls, - } + }, ) response.raise_for_status() results = response.json() diff --git a/backend/open_webui/retrieval/web/external.py b/backend/open_webui/retrieval/web/external.py index 29e914f84..f0a97fcfd 100644 --- a/backend/open_webui/retrieval/web/external.py +++ b/backend/open_webui/retrieval/web/external.py @@ -26,7 +26,7 @@ def search_external( params={ "query": query, "count": count, - } + }, ) response.raise_for_status() results = response.json() From 008fec80c10b911068205a1782ea28507e3dea6b Mon Sep 17 00:00:00 2001 From: tth37 Date: Mon, 14 Apr 2025 18:17:27 +0800 Subject: [PATCH 004/238] fix: Update external search/loader method to POST --- backend/open_webui/retrieval/loaders/external.py | 7 ++----- backend/open_webui/retrieval/web/external.py | 8 +++++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/external.py b/backend/open_webui/retrieval/loaders/external.py index dd67035fd..642cfd3a5 100644 --- a/backend/open_webui/retrieval/loaders/external.py +++ b/backend/open_webui/retrieval/loaders/external.py @@ -19,9 +19,6 @@ class ExternalLoader(BaseLoader): continue_on_failure: bool = True, **kwargs, ) -> None: - if not web_paths: - raise ValueError("At least one URL must be provided.") - self.external_url = external_url self.external_api_key = external_api_key self.urls = web_paths if isinstance(web_paths, list) else [web_paths] @@ -32,13 +29,13 @@ class ExternalLoader(BaseLoader): for i in range(0, len(self.urls), batch_size): urls = self.urls[i : i + batch_size] try: - response = requests.get( + response = requests.post( self.external_url, headers={ "User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot", "Authorization": f"Bearer {self.external_api_key}", }, - params={ + json={ "urls": urls, }, ) diff --git a/backend/open_webui/retrieval/web/external.py b/backend/open_webui/retrieval/web/external.py index f0a97fcfd..a5c8003e4 100644 --- a/backend/open_webui/retrieval/web/external.py +++ b/backend/open_webui/retrieval/web/external.py @@ -17,13 +17,13 @@ def search_external( filter_list: Optional[List[str]] = None, ) -> List[SearchResult]: try: - response = requests.get( + response = requests.post( external_url, headers={ "User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot", "Authorization": f"Bearer {external_api_key}", }, - params={ + json={ "query": query, "count": count, }, @@ -32,7 +32,7 @@ def search_external( results = response.json() if filter_list: results = get_filtered_results(results, filter_list) - return [ + results = [ SearchResult( link=result.get("link"), title=result.get("title"), @@ -40,6 +40,8 @@ def search_external( ) for result in results[:count] ] + log.info(f"External search results: {results}") + return results except Exception as e: log.error(f"Error in External search: {e}") return [] From 85f8e91288c201d68cece8f3ec3d08968a6d5fb1 Mon Sep 17 00:00:00 2001 From: tth37 Date: Mon, 14 Apr 2025 18:19:26 +0800 Subject: [PATCH 005/238] feat: Allow admin editing external search/loader settings --- backend/open_webui/routers/retrieval.py | 24 +++++++ .../admin/Settings/WebSearch.svelte | 66 ++++++++++++++++++- 2 files changed, 88 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 72d10245d..91e3fa7ae 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -419,6 +419,10 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)): "FIRECRAWL_API_KEY": request.app.state.config.FIRECRAWL_API_KEY, "FIRECRAWL_API_BASE_URL": request.app.state.config.FIRECRAWL_API_BASE_URL, "TAVILY_EXTRACT_DEPTH": request.app.state.config.TAVILY_EXTRACT_DEPTH, + "EXTERNAL_WEB_SEARCH_URL": request.app.state.config.EXTERNAL_WEB_SEARCH_URL, + "EXTERNAL_WEB_SEARCH_API_KEY": request.app.state.config.EXTERNAL_WEB_SEARCH_API_KEY, + "EXTERNAL_WEB_LOADER_URL": request.app.state.config.EXTERNAL_WEB_LOADER_URL, + "EXTERNAL_WEB_LOADER_API_KEY": request.app.state.config.EXTERNAL_WEB_LOADER_API_KEY, "YOUTUBE_LOADER_LANGUAGE": request.app.state.config.YOUTUBE_LOADER_LANGUAGE, "YOUTUBE_LOADER_PROXY_URL": request.app.state.config.YOUTUBE_LOADER_PROXY_URL, "YOUTUBE_LOADER_TRANSLATION": request.app.state.YOUTUBE_LOADER_TRANSLATION, @@ -464,6 +468,10 @@ class WebConfig(BaseModel): FIRECRAWL_API_KEY: Optional[str] = None FIRECRAWL_API_BASE_URL: Optional[str] = None TAVILY_EXTRACT_DEPTH: Optional[str] = None + EXTERNAL_WEB_SEARCH_URL: Optional[str] = None + EXTERNAL_WEB_SEARCH_API_KEY: Optional[str] = None + EXTERNAL_WEB_LOADER_URL: Optional[str] = None + EXTERNAL_WEB_LOADER_API_KEY: Optional[str] = None YOUTUBE_LOADER_LANGUAGE: Optional[List[str]] = None YOUTUBE_LOADER_PROXY_URL: Optional[str] = None YOUTUBE_LOADER_TRANSLATION: Optional[str] = None @@ -698,6 +706,18 @@ async def update_rag_config( request.app.state.config.FIRECRAWL_API_BASE_URL = ( form_data.web.FIRECRAWL_API_BASE_URL ) + request.app.state.config.EXTERNAL_WEB_SEARCH_URL = ( + form_data.web.EXTERNAL_WEB_SEARCH_URL + ) + request.app.state.config.EXTERNAL_WEB_SEARCH_API_KEY = ( + form_data.web.EXTERNAL_WEB_SEARCH_API_KEY + ) + request.app.state.config.EXTERNAL_WEB_LOADER_URL = ( + form_data.web.EXTERNAL_WEB_LOADER_URL + ) + request.app.state.config.EXTERNAL_WEB_LOADER_API_KEY = ( + form_data.web.EXTERNAL_WEB_LOADER_API_KEY + ) request.app.state.config.TAVILY_EXTRACT_DEPTH = ( form_data.web.TAVILY_EXTRACT_DEPTH ) @@ -779,6 +799,10 @@ async def update_rag_config( "FIRECRAWL_API_KEY": request.app.state.config.FIRECRAWL_API_KEY, "FIRECRAWL_API_BASE_URL": request.app.state.config.FIRECRAWL_API_BASE_URL, "TAVILY_EXTRACT_DEPTH": request.app.state.config.TAVILY_EXTRACT_DEPTH, + "EXTERNAL_WEB_SEARCH_URL": request.app.state.config.EXTERNAL_WEB_SEARCH_URL, + "EXTERNAL_WEB_SEARCH_API_KEY": request.app.state.config.EXTERNAL_WEB_SEARCH_API_KEY, + "EXTERNAL_WEB_LOADER_URL": request.app.state.config.EXTERNAL_WEB_LOADER_URL, + "EXTERNAL_WEB_LOADER_API_KEY": request.app.state.config.EXTERNAL_WEB_LOADER_API_KEY, "YOUTUBE_LOADER_LANGUAGE": request.app.state.config.YOUTUBE_LOADER_LANGUAGE, "YOUTUBE_LOADER_PROXY_URL": request.app.state.config.YOUTUBE_LOADER_PROXY_URL, "YOUTUBE_LOADER_TRANSLATION": request.app.state.YOUTUBE_LOADER_TRANSLATION, diff --git a/src/lib/components/admin/Settings/WebSearch.svelte b/src/lib/components/admin/Settings/WebSearch.svelte index d9771f835..82bd67814 100644 --- a/src/lib/components/admin/Settings/WebSearch.svelte +++ b/src/lib/components/admin/Settings/WebSearch.svelte @@ -30,9 +30,10 @@ 'bing', 'exa', 'perplexity', - 'sougou' + 'sougou', + 'external' ]; - let webLoaderEngines = ['playwright', 'firecrawl', 'tavily']; + let webLoaderEngines = ['playwright', 'firecrawl', 'tavily', 'external']; let webConfig = null; @@ -431,6 +432,36 @@ /> + {:else if webConfig.WEB_SEARCH_ENGINE === 'external'} +
+
+ {$i18n.t('External Web Search URL')} +
+ +
+
+ +
+
+
+
+
+
+ {$i18n.t('External Web Search API Key')} +
+ + +
+
{/if} {/if} @@ -652,6 +683,37 @@ {/if} + {:else if webConfig.WEB_LOADER_ENGINE === 'external'} +
+
+
+ {$i18n.t('External Web Loader URL')} +
+ +
+
+ +
+
+
+ +
+
+ {$i18n.t('External Web Loader API Key')} +
+ + +
+
{/if}
From dcb3f18e1e4e342c736dc1c86f337467883bc1bb Mon Sep 17 00:00:00 2001 From: tth37 Date: Mon, 14 Apr 2025 18:56:47 +0800 Subject: [PATCH 006/238] refac: styling --- .../admin/Settings/WebSearch.svelte | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/lib/components/admin/Settings/WebSearch.svelte b/src/lib/components/admin/Settings/WebSearch.svelte index 82bd67814..96b887405 100644 --- a/src/lib/components/admin/Settings/WebSearch.svelte +++ b/src/lib/components/admin/Settings/WebSearch.svelte @@ -433,25 +433,26 @@
{:else if webConfig.WEB_SEARCH_ENGINE === 'external'} -
-
- {$i18n.t('External Web Search URL')} -
- -
-
- -
-
-
+
+ {$i18n.t('External Web Search URL')} +
+ +
+
+ +
+
+
+ +
{$i18n.t('External Web Search API Key')}
From 21206bf4b9a194e6a032a273707c9b35e9f02cf5 Mon Sep 17 00:00:00 2001 From: Panda Date: Mon, 14 Apr 2025 14:26:10 +0200 Subject: [PATCH 007/238] i18n: zh-cn fix --- src/lib/i18n/locales/zh-CN/translation.json | 30 ++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index f775849a4..af8211709 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -57,20 +57,20 @@ "All": "全部", "All Documents": "所有文档", "All models deleted successfully": "所有模型删除成功", - "Allow Call": "", - "Allow Chat Controls": "允许对话高级设置", + "Allow Call": "允许通话", + "Allow Chat Controls": "允许使用对话高级设置", "Allow Chat Delete": "允许删除对话记录", "Allow Chat Deletion": "允许删除对话记录", "Allow Chat Edit": "允许编辑对话记录", "Allow File Upload": "允许上传文件", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "允许同时与多个模型聊天", "Allow non-local voices": "允许调用非本地音色", - "Allow Speech to Text": "", + "Allow Speech to Text": "允许语音转文本", "Allow Temporary Chat": "允许临时对话", - "Allow Text to Speech": "", + "Allow Text to Speech": "允许文本转语音", "Allow User Location": "允许获取您的位置", "Allow Voice Interruption in Call": "允许通话中的打断语音", - "Allowed Endpoints": "允许的端点", + "Allowed Endpoints": "允许的 API 端点", "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.": "top_p 的替代方法,旨在确保质量和多样性之间的平衡。参数 p 表示相对于最可能令牌的概率,一个令牌被考虑的最小概率。例如,当 p=0.05 且最可能的令牌概率为 0.9 时,概率值小于 0.045 的词元将被过滤掉。", "Always": "保持", @@ -83,7 +83,7 @@ "and": "和", "and {{COUNT}} more": "还有 {{COUNT}} 个", "and create a new shared link.": "并创建一个新的分享链接。", - "Android": "", + "Android": "Android", "API Base URL": "API 请求地址", "API Key": "API 密钥", "API Key created.": "API 密钥已创建。", @@ -245,7 +245,7 @@ "Copied shared chat URL to clipboard!": "已复制此对话分享链接至剪贴板!", "Copied to clipboard": "已复制到剪贴板", "Copy": "复制", - "Copy Formatted Text": "", + "Copy Formatted Text": "复制格式化文本", "Copy last code block": "复制最后一个代码块中的代码", "Copy last response": "复制最后一次回复内容", "Copy Link": "复制链接", @@ -308,7 +308,7 @@ "Deleted User": "已删除用户", "Describe your knowledge base and objectives": "描述您的知识库和目标", "Description": "描述", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "自动检测 Artifacts", "Didn't fully follow instructions": "没有完全遵照指示", "Direct": "直接", "Direct Connections": "直接连接", @@ -364,7 +364,7 @@ "e.g. my_filter": "例如:my_filter", "e.g. my_tools": "例如:my_tools", "e.g. Tools for performing various operations": "例如:用于执行各种操作的工具", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "例如,'en-US,ja-JP'(留空以便自动检测)", "Edit": "编辑", "Edit Arena Model": "编辑竞技场模型", "Edit Channel": "编辑频道", @@ -605,8 +605,8 @@ "Hybrid Search": "混合搜索", "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "我已阅读并理解我的行为所带来的影响,明白执行任意代码所涉及的风险。且我已验证代码来源可信度。", "ID": "ID", - "iframe Sandbox Allow Forms": "", - "iframe Sandbox Allow Same Origin": "", + "iframe Sandbox Allow Forms": "iframe 沙盒允许表单提交", + "iframe Sandbox Allow Same Origin": "iframe 沙盒允许同源访问", "Ignite curiosity": "点燃好奇心", "Image": "图像生成", "Image Compression": "图像压缩", @@ -667,7 +667,7 @@ "Label": "标签", "Landing Page Mode": "默认主页样式", "Language": "语言", - "Language Locales": "", + "Language Locales": "语言环境", "Last Active": "最后在线时间", "Last Modified": "最后修改时间", "Last reply": "最后回复", @@ -902,7 +902,7 @@ "Reindex Knowledge Base Vectors": "重建知识库向量", "Release Notes": "更新日志", "Relevance": "相关性", - "Relevance Threshold": "", + "Relevance Threshold": "相关性阈值", "Remove": "移除", "Remove Model": "移除模型", "Rename": "重命名", @@ -1203,7 +1203,7 @@ "variable": "变量", "variable to have them replaced with clipboard content.": "变量将被剪贴板内容替换。", "Verify Connection": "验证连接", - "Verify SSL Certificate": "", + "Verify SSL Certificate": "验证 SSL 证书", "Version": "版本", "Version {{selectedVersion}} of {{totalVersions}}": "版本 {{selectedVersion}}/{{totalVersions}}", "View Replies": "查看回复", From 5fd794612e2c9627e46386843786c02b691f1cad Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Mon, 14 Apr 2025 22:57:32 +0900 Subject: [PATCH 008/238] add onedrive sub menu --- .../chat/MessageInput/InputMenu.svelte | 146 ++++----- src/lib/utils/onedrive-file-picker.ts | 284 +++++++++++++----- 2 files changed, 273 insertions(+), 157 deletions(-) diff --git a/src/lib/components/chat/MessageInput/InputMenu.svelte b/src/lib/components/chat/MessageInput/InputMenu.svelte index 27fe2cde2..ab455ddeb 100644 --- a/src/lib/components/chat/MessageInput/InputMenu.svelte +++ b/src/lib/components/chat/MessageInput/InputMenu.svelte @@ -229,94 +229,66 @@ {/if} {#if $config?.features?.enable_onedrive_integration} - { - uploadOneDriveHandler(); - }} - > - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$i18n.t('Microsoft OneDrive')}
+ + + { + uploadOneDriveHandler('personal'); + }} > - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{$i18n.t('OneDrive')}
-
+
{$i18n.t('Microsoft OneDrive (personal)')}
+
+ { + uploadOneDriveHandler('organizations'); + }} + > +
+
{$i18n.t('Microsoft OneDrive (work/school)')}
+
Includes SharePoint
+
+
+ + {/if}
diff --git a/src/lib/utils/onedrive-file-picker.ts b/src/lib/utils/onedrive-file-picker.ts index 60d2bb13c..e7fb80a4c 100644 --- a/src/lib/utils/onedrive-file-picker.ts +++ b/src/lib/utils/onedrive-file-picker.ts @@ -2,70 +2,130 @@ import { PublicClientApplication } from '@azure/msal-browser'; import type { PopupRequest } from '@azure/msal-browser'; import { v4 as uuidv4 } from 'uuid'; -let CLIENT_ID = ''; +class OneDriveConfig { + private static instance: OneDriveConfig; + private clientId: string = ''; + private authorityType: 'personal' | 'organizations' = 'personal'; + private sharepointUrl: string = ''; + private msalInstance: PublicClientApplication | null = null; -async function getCredentials() { - if (CLIENT_ID) return; + private constructor() {} - const response = await fetch('/api/config'); - if (!response.ok) { - throw new Error('Failed to fetch OneDrive credentials'); + public static getInstance(): OneDriveConfig { + if (!OneDriveConfig.instance) { + OneDriveConfig.instance = new OneDriveConfig(); + } + return OneDriveConfig.instance; } - const config = await response.json(); - CLIENT_ID = config.onedrive?.client_id; - if (!CLIENT_ID) { - throw new Error('OneDrive client ID not configured'); + + public async initialize(selectedAuthorityType?: 'personal' | 'organizations'): Promise { + await this.getCredentials(selectedAuthorityType); } -} -let msalInstance: PublicClientApplication | null = null; + public async ensureInitialized(selectedAuthorityType?: 'personal' | 'organizations'): Promise { + await this.initialize(selectedAuthorityType); + } -// Initialize MSAL authentication -async function initializeMsal() { - try { - if (!CLIENT_ID) { - await getCredentials(); + private async getCredentials(selectedAuthorityType?: 'personal' | 'organizations'): Promise { + let response; + if(window.location.hostname === 'localhost') { + response = await fetch('http://localhost:8080/api/config'); + } else { + response = await fetch('/api/config'); + } + + if (!response.ok) { + throw new Error('Failed to fetch OneDrive credentials'); + } + + const config = await response.json(); + + const newClientId = config.onedrive?.client_id; + const newSharepointUrl = config.onedrive?.sharepoint_url; + + if (!newClientId) { + throw new Error('OneDrive configuration is incomplete'); } - const msalParams = { - auth: { - authority: 'https://login.microsoftonline.com/consumers', - clientId: CLIENT_ID - } - }; + // Reset MSAL instance if config changes + if (this.clientId && + (this.clientId !== newClientId || + this.authorityType !== selectedAuthorityType || + this.sharepointUrl !== newSharepointUrl)) { + this.msalInstance = null; + } - if (!msalInstance) { - msalInstance = new PublicClientApplication(msalParams); - if (msalInstance.initialize) { - await msalInstance.initialize(); + this.clientId = newClientId; + this.authorityType = selectedAuthorityType || 'personal'; + this.sharepointUrl = newSharepointUrl; + } + + public async getMsalInstance(): Promise { + await this.ensureInitialized(); + + if (!this.msalInstance) { + const authorityEndpoint = this.authorityType === 'organizations' ? 'common' : 'consumers'; + const msalParams = { + auth: { + authority: `https://login.microsoftonline.com/${authorityEndpoint}`, + clientId: this.clientId + } + }; + + this.msalInstance = new PublicClientApplication(msalParams); + if (this.msalInstance.initialize) { + await this.msalInstance.initialize(); } } - return msalInstance; - } catch (error) { - throw new Error( - 'MSAL initialization failed: ' + (error instanceof Error ? error.message : String(error)) - ); + return this.msalInstance; + } + + public getAuthorityType(): 'personal' | 'organizations' { + return this.authorityType; + } + + public getSharepointUrl(): string { + return this.sharepointUrl; + } + + public getBaseUrl(): string { + if (this.authorityType === 'organizations') { + if (!this.sharepointUrl || this.sharepointUrl === '') { + throw new Error('Sharepoint URL not configured'); + } + + let sharePointBaseUrl = this.sharepointUrl.replace(/^https?:\/\//, ''); + sharePointBaseUrl = sharePointBaseUrl.replace(/\/$/, ''); + + return `https://${sharePointBaseUrl}`; + } else { + return 'https://onedrive.live.com/picker'; + } } } + // Retrieve OneDrive access token -async function getToken(): Promise { - const authParams: PopupRequest = { scopes: ['OneDrive.ReadWrite'] }; - let accessToken = ''; - try { - msalInstance = await initializeMsal(); - if (!msalInstance) { - throw new Error('MSAL not initialized'); - } +async function getToken(resource?: string): Promise { + const config = OneDriveConfig.getInstance(); + await config.ensureInitialized(); + + const authorityType = config.getAuthorityType(); + const scopes = authorityType === 'organizations' + ? [`${resource || config.getBaseUrl()}/.default`] + : ['OneDrive.ReadWrite']; + + const authParams: PopupRequest = { scopes }; + let accessToken = ''; + + try { + const msalInstance = await config.getMsalInstance(); const resp = await msalInstance.acquireTokenSilent(authParams); accessToken = resp.accessToken; } catch (err) { - if (!msalInstance) { - throw new Error('MSAL not initialized'); - } - + const msalInstance = await config.getMsalInstance(); try { const resp = await msalInstance.loginPopup(authParams); msalInstance.setActiveAccount(resp.account); @@ -88,60 +148,129 @@ async function getToken(): Promise { return accessToken; } -const baseUrl = 'https://onedrive.live.com/picker'; -const params = { - sdk: '8.0', +// Get picker parameters based on account type +function getPickerParams(): { + sdk: string; entry: { - oneDrive: { - files: {} - } - }, - authentication: {}, + oneDrive: Record; + }; + authentication: Record; messaging: { - origin: window?.location?.origin, - channelId: uuidv4() - }, + origin: string; + channelId: string; + }; typesAndSources: { - mode: 'files', - pivots: { - oneDrive: true, - recent: true - } + mode: string; + pivots: Record; + }; +} { + const channelId = uuidv4(); + + if (OneDriveConfig.getInstance().getAuthorityType() === 'organizations') { + // Parameters for OneDrive for Business + return { + sdk: '8.0', + entry: { + oneDrive: {} + }, + authentication: {}, + messaging: { + origin: window?.location?.origin || '', + channelId + }, + typesAndSources: { + mode: 'files', + pivots: { + oneDrive: true, + recent: true + } + } + }; + } else { + // Parameters for personal OneDrive + return { + sdk: '8.0', + entry: { + oneDrive: { + files: {} + } + }, + authentication: {}, + messaging: { + origin: window?.location?.origin || '', + channelId + }, + typesAndSources: { + mode: 'files', + pivots: { + oneDrive: true, + recent: true + } + } + }; } -}; +} // Download file from OneDrive -async function downloadOneDriveFile(fileInfo: any): Promise { +async function downloadOneDriveFile(fileInfo: Record): Promise { const accessToken = await getToken(); if (!accessToken) { throw new Error('Unable to retrieve OneDrive access token.'); } + + // The endpoint URL is provided in the file info const fileInfoUrl = `${fileInfo['@sharePoint.endpoint']}/drives/${fileInfo.parentReference.driveId}/items/${fileInfo.id}`; + const response = await fetch(fileInfoUrl, { headers: { Authorization: `Bearer ${accessToken}` } }); + if (!response.ok) { throw new Error('Failed to fetch file information.'); } + const fileData = await response.json(); const downloadUrl = fileData['@content.downloadUrl']; const downloadResponse = await fetch(downloadUrl); + if (!downloadResponse.ok) { throw new Error('Failed to download file.'); } + return await downloadResponse.blob(); } +interface PickerResult { + items?: Array<{ + id: string; + name: string; + parentReference: { + driveId: string; + }; + '@sharePoint.endpoint': string; + [key: string]: any; + }>; + command?: string; + [key: string]: any; +} + // Open OneDrive file picker and return selected file metadata -export async function openOneDrivePicker(): Promise { +export async function openOneDrivePicker(): Promise { if (typeof window === 'undefined') { throw new Error('Not in browser environment'); } + + // Force reinitialization of OneDrive config + const config = OneDriveConfig.getInstance(); + await config.initialize(); + return new Promise((resolve, reject) => { let pickerWindow: Window | null = null; let channelPort: MessagePort | null = null; + const params = getPickerParams(); + const baseUrl = config.getBaseUrl(); const handleWindowMessage = (event: MessageEvent) => { if (event.source !== pickerWindow) return; @@ -166,7 +295,9 @@ export async function openOneDrivePicker(): Promise { switch (command.command) { case 'authenticate': { try { - const newToken = await getToken(); + // Pass the resource from the command for org accounts + const resource = OneDriveConfig.getInstance().getAuthorityType() === 'organizations' ? command.resource : undefined; + const newToken = await getToken(resource); if (newToken) { channelPort?.postMessage({ type: 'result', @@ -178,9 +309,12 @@ export async function openOneDrivePicker(): Promise { } } catch (err) { channelPort?.postMessage({ - result: 'error', - error: { code: 'tokenError', message: 'Failed to get token' }, - isExpected: true + type: 'result', + id: portData.id, + data: { + result: 'error', + error: { code: 'tokenError', message: 'Failed to get token' } + } }); } break; @@ -240,7 +374,14 @@ export async function openOneDrivePicker(): Promise { const queryString = new URLSearchParams({ filePicker: JSON.stringify(params) }); - const url = `${baseUrl}?${queryString.toString()}`; + + let url = ''; + if(OneDriveConfig.getInstance().getAuthorityType() === 'organizations') { + url = baseUrl + `/_layouts/15/FilePicker.aspx?${queryString}`; + }else{ + url = baseUrl + `?${queryString}`; + } + const form = pickerWindow.document.createElement('form'); form.setAttribute('action', url); @@ -268,7 +409,10 @@ export async function openOneDrivePicker(): Promise { } // Pick and download file from OneDrive -export async function pickAndDownloadFile(): Promise<{ blob: Blob; name: string } | null> { +export async function pickAndDownloadFile(authorityType: 'personal' | 'organizations' = 'personal'): Promise<{ blob: Blob; name: string } | null> { + const config = OneDriveConfig.getInstance(); + await config.initialize(authorityType); + const pickerResult = await openOneDrivePicker(); if (!pickerResult || !pickerResult.items || pickerResult.items.length === 0) { @@ -281,4 +425,4 @@ export async function pickAndDownloadFile(): Promise<{ blob: Blob; name: string return { blob, name: selectedFile.name }; } -export { downloadOneDriveFile }; +export { downloadOneDriveFile }; \ No newline at end of file From 2d7062fc993f4d8b06a2356bdeabbe1119da9d97 Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Tue, 15 Apr 2025 00:27:59 +0900 Subject: [PATCH 009/238] fix: onedrive orgs selection --- backend/open_webui/config.py | 7 ++ backend/open_webui/main.py | 7 +- src/lib/components/chat/MessageInput.svelte | 4 +- src/lib/utils/onedrive-file-picker.ts | 72 ++++++++++++--------- 4 files changed, 56 insertions(+), 34 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 3b40977f2..8584fa88d 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1760,6 +1760,13 @@ ONEDRIVE_CLIENT_ID = PersistentConfig( os.environ.get("ONEDRIVE_CLIENT_ID", ""), ) +ONEDRIVE_SHAREPOINT_URL = PersistentConfig( + "ONEDRIVE_SHAREPOINT_URL", + "onedrive.sharepoint_url", + os.environ.get("ONEDRIVE_SHAREPOINT_URL", ""), +) + + # RAG Content Extraction CONTENT_EXTRACTION_ENGINE = PersistentConfig( "CONTENT_EXTRACTION_ENGINE", diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 56ea17fa1..652e0284c 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -100,6 +100,7 @@ from open_webui.config import ( # OpenAI ENABLE_OPENAI_API, ONEDRIVE_CLIENT_ID, + ONEDRIVE_SHAREPOINT_URL, OPENAI_API_BASE_URLS, OPENAI_API_KEYS, OPENAI_API_CONFIGS, @@ -240,6 +241,7 @@ from open_webui.config import ( GOOGLE_DRIVE_CLIENT_ID, GOOGLE_DRIVE_API_KEY, ONEDRIVE_CLIENT_ID, + ONEDRIVE_SHAREPOINT_URL, ENABLE_RAG_HYBRID_SEARCH, ENABLE_RAG_LOCAL_WEB_FETCH, ENABLE_WEB_LOADER_SSL_VERIFICATION, @@ -1327,7 +1329,10 @@ async def get_app_config(request: Request): "client_id": GOOGLE_DRIVE_CLIENT_ID.value, "api_key": GOOGLE_DRIVE_API_KEY.value, }, - "onedrive": {"client_id": ONEDRIVE_CLIENT_ID.value}, + "onedrive": { + "client_id": ONEDRIVE_CLIENT_ID.value, + "sharepoint_url": ONEDRIVE_SHAREPOINT_URL.value, + }, "license_metadata": app.state.LICENSE_METADATA, **( { diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index ca6487cf5..b17cabead 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -1063,9 +1063,9 @@ ); } }} - uploadOneDriveHandler={async () => { + uploadOneDriveHandler={async (authorityType) => { try { - const fileData = await pickAndDownloadFile(); + const fileData = await pickAndDownloadFile(authorityType); if (fileData) { const file = new File([fileData.blob], fileData.name, { type: fileData.blob.type || 'application/octet-stream' diff --git a/src/lib/utils/onedrive-file-picker.ts b/src/lib/utils/onedrive-file-picker.ts index e7fb80a4c..4e27b88f0 100644 --- a/src/lib/utils/onedrive-file-picker.ts +++ b/src/lib/utils/onedrive-file-picker.ts @@ -8,6 +8,7 @@ class OneDriveConfig { private authorityType: 'personal' | 'organizations' = 'personal'; private sharepointUrl: string = ''; private msalInstance: PublicClientApplication | null = null; + private currentAuthorityType: 'personal' | 'organizations' = 'personal'; private constructor() {} @@ -18,20 +19,35 @@ class OneDriveConfig { return OneDriveConfig.instance; } - public async initialize(selectedAuthorityType?: 'personal' | 'organizations'): Promise { - await this.getCredentials(selectedAuthorityType); + public async initialize(authorityType?: 'personal' | 'organizations'): Promise { + if (authorityType && this.currentAuthorityType !== authorityType) { + console.log('Authority type changed, resetting msalInstance'); + this.currentAuthorityType = authorityType; + this.msalInstance = null; + } + await this.getCredentials(); } - public async ensureInitialized(selectedAuthorityType?: 'personal' | 'organizations'): Promise { - await this.initialize(selectedAuthorityType); + public async ensureInitialized(authorityType?: 'personal' | 'organizations'): Promise { + await this.initialize(authorityType); } private async getCredentials(selectedAuthorityType?: 'personal' | 'organizations'): Promise { let response; + const headers: HeadersInit = { + 'Content-Type': 'application/json' + }; + if(window.location.hostname === 'localhost') { - response = await fetch('http://localhost:8080/api/config'); + response = await fetch('http://localhost:8080/api/config', { + headers, + credentials: 'include' + }); } else { - response = await fetch('/api/config'); + response = await fetch('/api/config', { + headers, + credentials: 'include' + }); } if (!response.ok) { @@ -46,25 +62,16 @@ class OneDriveConfig { if (!newClientId) { throw new Error('OneDrive configuration is incomplete'); } - - // Reset MSAL instance if config changes - if (this.clientId && - (this.clientId !== newClientId || - this.authorityType !== selectedAuthorityType || - this.sharepointUrl !== newSharepointUrl)) { - this.msalInstance = null; - } - + this.clientId = newClientId; - this.authorityType = selectedAuthorityType || 'personal'; this.sharepointUrl = newSharepointUrl; } - public async getMsalInstance(): Promise { - await this.ensureInitialized(); + public async getMsalInstance(authorityType?: 'personal' | 'organizations'): Promise { + await this.ensureInitialized(authorityType); if (!this.msalInstance) { - const authorityEndpoint = this.authorityType === 'organizations' ? 'common' : 'consumers'; + const authorityEndpoint = this.currentAuthorityType === 'organizations' ? 'common' : 'consumers'; const msalParams = { auth: { authority: `https://login.microsoftonline.com/${authorityEndpoint}`, @@ -82,7 +89,7 @@ class OneDriveConfig { } public getAuthorityType(): 'personal' | 'organizations' { - return this.authorityType; + return this.currentAuthorityType; } public getSharepointUrl(): string { @@ -90,7 +97,7 @@ class OneDriveConfig { } public getBaseUrl(): string { - if (this.authorityType === 'organizations') { + if (this.currentAuthorityType === 'organizations') { if (!this.sharepointUrl || this.sharepointUrl === '') { throw new Error('Sharepoint URL not configured'); } @@ -107,25 +114,27 @@ class OneDriveConfig { // Retrieve OneDrive access token -async function getToken(resource?: string): Promise { +async function getToken(resource?: string, authorityType?: 'personal' | 'organizations'): Promise { const config = OneDriveConfig.getInstance(); - await config.ensureInitialized(); + await config.ensureInitialized(authorityType); - const authorityType = config.getAuthorityType(); + const currentAuthorityType = config.getAuthorityType(); - const scopes = authorityType === 'organizations' + const scopes = currentAuthorityType === 'organizations' ? [`${resource || config.getBaseUrl()}/.default`] : ['OneDrive.ReadWrite']; + + console.log('scopes', scopes); const authParams: PopupRequest = { scopes }; let accessToken = ''; try { - const msalInstance = await config.getMsalInstance(); + const msalInstance = await config.getMsalInstance(authorityType); const resp = await msalInstance.acquireTokenSilent(authParams); accessToken = resp.accessToken; } catch (err) { - const msalInstance = await config.getMsalInstance(); + const msalInstance = await config.getMsalInstance(authorityType); try { const resp = await msalInstance.loginPopup(authParams); msalInstance.setActiveAccount(resp.account); @@ -212,8 +221,8 @@ function getPickerParams(): { } // Download file from OneDrive -async function downloadOneDriveFile(fileInfo: Record): Promise { - const accessToken = await getToken(); +async function downloadOneDriveFile(fileInfo: Record, authorityType?: 'personal' | 'organizations'): Promise { + const accessToken = await getToken(undefined, authorityType); if (!accessToken) { throw new Error('Unable to retrieve OneDrive access token.'); } @@ -409,7 +418,8 @@ export async function openOneDrivePicker(): Promise { } // Pick and download file from OneDrive -export async function pickAndDownloadFile(authorityType: 'personal' | 'organizations' = 'personal'): Promise<{ blob: Blob; name: string } | null> { +export async function pickAndDownloadFile(authorityType?: 'personal' | 'organizations'): Promise<{ blob: Blob; name: string } | null> { + // Force reinitialization with selected authority type const config = OneDriveConfig.getInstance(); await config.initialize(authorityType); @@ -420,7 +430,7 @@ export async function pickAndDownloadFile(authorityType: 'personal' | 'organizat } const selectedFile = pickerResult.items[0]; - const blob = await downloadOneDriveFile(selectedFile); + const blob = await downloadOneDriveFile(selectedFile, authorityType); return { blob, name: selectedFile.name }; } From 55d077b52a69862321d16e9b190d1191043c9d4d Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Tue, 15 Apr 2025 00:35:18 +0900 Subject: [PATCH 010/238] refactor --- src/lib/utils/onedrive-file-picker.ts | 145 ++++++++++++-------------- 1 file changed, 64 insertions(+), 81 deletions(-) diff --git a/src/lib/utils/onedrive-file-picker.ts b/src/lib/utils/onedrive-file-picker.ts index 4e27b88f0..2771119ae 100644 --- a/src/lib/utils/onedrive-file-picker.ts +++ b/src/lib/utils/onedrive-file-picker.ts @@ -5,7 +5,6 @@ import { v4 as uuidv4 } from 'uuid'; class OneDriveConfig { private static instance: OneDriveConfig; private clientId: string = ''; - private authorityType: 'personal' | 'organizations' = 'personal'; private sharepointUrl: string = ''; private msalInstance: PublicClientApplication | null = null; private currentAuthorityType: 'personal' | 'organizations' = 'personal'; @@ -21,7 +20,6 @@ class OneDriveConfig { public async initialize(authorityType?: 'personal' | 'organizations'): Promise { if (authorityType && this.currentAuthorityType !== authorityType) { - console.log('Authority type changed, resetting msalInstance'); this.currentAuthorityType = authorityType; this.msalInstance = null; } @@ -32,7 +30,7 @@ class OneDriveConfig { await this.initialize(authorityType); } - private async getCredentials(selectedAuthorityType?: 'personal' | 'organizations'): Promise { + private async getCredentials(): Promise { let response; const headers: HeadersInit = { 'Content-Type': 'application/json' @@ -62,7 +60,7 @@ class OneDriveConfig { if (!newClientId) { throw new Error('OneDrive configuration is incomplete'); } - + this.clientId = newClientId; this.sharepointUrl = newSharepointUrl; } @@ -123,8 +121,6 @@ async function getToken(resource?: string, authorityType?: 'personal' | 'organiz const scopes = currentAuthorityType === 'organizations' ? [`${resource || config.getBaseUrl()}/.default`] : ['OneDrive.ReadWrite']; - - console.log('scopes', scopes); const authParams: PopupRequest = { scopes }; let accessToken = ''; @@ -157,8 +153,7 @@ async function getToken(resource?: string, authorityType?: 'personal' | 'organiz return accessToken; } -// Get picker parameters based on account type -function getPickerParams(): { +interface PickerParams { sdk: string; entry: { oneDrive: Record; @@ -172,56 +167,58 @@ function getPickerParams(): { mode: string; pivots: Record; }; -} { +} + +interface PickerResult { + command?: string; + items?: OneDriveFileInfo[]; + [key: string]: any; +} + +// Get picker parameters based on account type +function getPickerParams(): PickerParams { const channelId = uuidv4(); + const config = OneDriveConfig.getInstance(); - if (OneDriveConfig.getInstance().getAuthorityType() === 'organizations') { - // Parameters for OneDrive for Business - return { - sdk: '8.0', - entry: { - oneDrive: {} - }, - authentication: {}, - messaging: { - origin: window?.location?.origin || '', - channelId - }, - typesAndSources: { - mode: 'files', - pivots: { - oneDrive: true, - recent: true - } + const params: PickerParams = { + sdk: '8.0', + entry: { + oneDrive: {} + }, + authentication: {}, + messaging: { + origin: window?.location?.origin || '', + channelId + }, + typesAndSources: { + mode: 'files', + pivots: { + oneDrive: true, + recent: true } - }; - } else { - // Parameters for personal OneDrive - return { - sdk: '8.0', - entry: { - oneDrive: { - files: {} - } - }, - authentication: {}, - messaging: { - origin: window?.location?.origin || '', - channelId - }, - typesAndSources: { - mode: 'files', - pivots: { - oneDrive: true, - recent: true - } - } - }; + } + }; + + // For personal accounts, set files object in oneDrive + if (config.getAuthorityType() !== 'organizations') { + params.entry.oneDrive = { files: {} }; } + + return params; +} + +interface OneDriveFileInfo { + id: string; + name: string; + parentReference: { + driveId: string; + }; + '@sharePoint.endpoint': string; + [key: string]: any; } // Download file from OneDrive -async function downloadOneDriveFile(fileInfo: Record, authorityType?: 'personal' | 'organizations'): Promise { +async function downloadOneDriveFile(fileInfo: OneDriveFileInfo, authorityType?: 'personal' | 'organizations'): Promise { const accessToken = await getToken(undefined, authorityType); if (!accessToken) { throw new Error('Unable to retrieve OneDrive access token.'); @@ -237,43 +234,34 @@ async function downloadOneDriveFile(fileInfo: Record, authorityType }); if (!response.ok) { - throw new Error('Failed to fetch file information.'); + throw new Error(`Failed to fetch file information: ${response.status} ${response.statusText}`); } const fileData = await response.json(); const downloadUrl = fileData['@content.downloadUrl']; + + if (!downloadUrl) { + throw new Error('Download URL not found in file data'); + } + const downloadResponse = await fetch(downloadUrl); if (!downloadResponse.ok) { - throw new Error('Failed to download file.'); + throw new Error(`Failed to download file: ${downloadResponse.status} ${downloadResponse.statusText}`); } return await downloadResponse.blob(); } -interface PickerResult { - items?: Array<{ - id: string; - name: string; - parentReference: { - driveId: string; - }; - '@sharePoint.endpoint': string; - [key: string]: any; - }>; - command?: string; - [key: string]: any; -} - // Open OneDrive file picker and return selected file metadata -export async function openOneDrivePicker(): Promise { +export async function openOneDrivePicker(authorityType?: 'personal' | 'organizations'): Promise { if (typeof window === 'undefined') { throw new Error('Not in browser environment'); } - // Force reinitialization of OneDrive config + // Initialize OneDrive config with the specified authority type const config = OneDriveConfig.getInstance(); - await config.initialize(); + await config.initialize(authorityType); return new Promise((resolve, reject) => { let pickerWindow: Window | null = null; @@ -305,8 +293,8 @@ export async function openOneDrivePicker(): Promise { case 'authenticate': { try { // Pass the resource from the command for org accounts - const resource = OneDriveConfig.getInstance().getAuthorityType() === 'organizations' ? command.resource : undefined; - const newToken = await getToken(resource); + const resource = config.getAuthorityType() === 'organizations' ? command.resource : undefined; + const newToken = await getToken(resource, authorityType); if (newToken) { channelPort?.postMessage({ type: 'result', @@ -370,7 +358,7 @@ export async function openOneDrivePicker(): Promise { const initializePicker = async () => { try { - const authToken = await getToken(); + const authToken = await getToken(undefined, authorityType); if (!authToken) { return reject(new Error('Failed to acquire access token')); } @@ -385,13 +373,12 @@ export async function openOneDrivePicker(): Promise { }); let url = ''; - if(OneDriveConfig.getInstance().getAuthorityType() === 'organizations') { + if(config.getAuthorityType() === 'organizations') { url = baseUrl + `/_layouts/15/FilePicker.aspx?${queryString}`; - }else{ + } else { url = baseUrl + `?${queryString}`; } - const form = pickerWindow.document.createElement('form'); form.setAttribute('action', url); form.setAttribute('method', 'POST'); @@ -419,11 +406,7 @@ export async function openOneDrivePicker(): Promise { // Pick and download file from OneDrive export async function pickAndDownloadFile(authorityType?: 'personal' | 'organizations'): Promise<{ blob: Blob; name: string } | null> { - // Force reinitialization with selected authority type - const config = OneDriveConfig.getInstance(); - await config.initialize(authorityType); - - const pickerResult = await openOneDrivePicker(); + const pickerResult = await openOneDrivePicker(authorityType); if (!pickerResult || !pickerResult.items || pickerResult.items.length === 0) { return null; From a3d950872c050303689d234a6215c6fcbfd74384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aindri=C3=BA=20Mac=20Giolla=20Eoin?= Date: Mon, 14 Apr 2025 17:14:02 +0100 Subject: [PATCH 011/238] Updated Irish translations - April --- src/lib/i18n/locales/ie-GA/translation.json | 262 ++++++++++---------- 1 file changed, 131 insertions(+), 131 deletions(-) diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 516c68a10..d9ac2e97d 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -4,10 +4,10 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(m.sh. `sh webui.sh --api --api-auth username_password `)", "(e.g. `sh webui.sh --api`)": "(m.sh. `sh webui.sh --api`)", "(latest)": "(is déanaí)", - "(Ollama)": "", + "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", - "{{COUNT}} Available Tools": "", - "{{COUNT}} hidden lines": "", + "{{COUNT}} Available Tools": "{{COUNT}} Uirlisí ar Fáil", + "{{COUNT}} hidden lines": "{{COUNT}} línte folaithe", "{{COUNT}} Replies": "{{COUNT}} Freagra", "{{user}}'s Chats": "Comhráite {{user}}", "{{webUIName}} Backend Required": "{{webUIName}} Ceoldeireadh Riachtanach", @@ -54,28 +54,28 @@ "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Tá rochtain ag riarthóirí ar gach uirlis i gcónaí; teastaíonn ó úsáideoirí uirlisí a shanntar in aghaidh an mhúnla sa spás oibre.", "Advanced Parameters": "Paraiméadair Casta", "Advanced Params": "Paraiméid Casta", - "All": "", + "All": "Gach", "All Documents": "Gach Doiciméad", "All models deleted successfully": "Scriosadh na múnlaí go léir go rathúil", - "Allow Call": "", + "Allow Call": "Ceadaigh Glao", "Allow Chat Controls": "Ceadaigh Rialuithe Comhrá", "Allow Chat Delete": "Ceadaigh Comhrá a Scriosadh", "Allow Chat Deletion": "Cead Scriosadh Comhrá", "Allow Chat Edit": "Ceadaigh Eagarthóireacht Comhrá", "Allow File Upload": "Ceadaigh Uaslódáil Comhad", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "Ceadaigh Múnlaí Il sa Chomhrá", "Allow non-local voices": "Lig guthanna neamh-áitiúla", - "Allow Speech to Text": "", + "Allow Speech to Text": "Ceadaigh Óráid go Téacs", "Allow Temporary Chat": "Cead Comhrá Sealadach", - "Allow Text to Speech": "", + "Allow Text to Speech": "Ceadaigh Téacs a Chaint", "Allow User Location": "Ceadaigh Suíomh Úsáideora", "Allow Voice Interruption in Call": "Ceadaigh Briseadh Guth i nGlao", "Allowed Endpoints": "Críochphointí Ceadaithe", "Already have an account?": "Tá cuntas agat cheana féin?", - "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "", + "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "Rogha eile seachas an top_p, agus tá sé mar aidhm aige cothromaíocht cáilíochta agus éagsúlachta a chinntiú. Léiríonn an paraiméadar p an dóchúlacht íosta go mbreithneofar comhartha, i gcoibhneas le dóchúlacht an chomhartha is dóichí. Mar shampla, le p=0.05 agus dóchúlacht 0.9 ag an comhartha is dóichí, déantar logits le luach níos lú ná 0.045 a scagadh amach.", "Always": "I gcónaí", - "Always Collapse Code Blocks": "", - "Always Expand Details": "", + "Always Collapse Code Blocks": "Laghdaigh Bloic Chóid i gcónaí", + "Always Expand Details": "Leathnaigh Sonraí i gcónaí", "Amazing": "Iontach", "an assistant": "cúntóir", "Analyzed": "Anailísithe", @@ -83,7 +83,7 @@ "and": "agus", "and {{COUNT}} more": "agus {{COUNT}} eile", "and create a new shared link.": "agus cruthaigh nasc nua roinnte.", - "Android": "", + "Android": "Android", "API Base URL": "URL Bonn API", "API Key": "Eochair API", "API Key created.": "Cruthaíodh Eochair API.", @@ -104,7 +104,7 @@ "Are you sure?": "An bhfuil tú cinnte?", "Arena Models": "Múnlaí Airéine", "Artifacts": "Déantáin", - "Ask": "", + "Ask": "Fiafraigh", "Ask a question": "Cuir ceist", "Assistant": "Cúntóir", "Attach file from knowledge": "Ceangail comhad ó eolas", @@ -113,10 +113,10 @@ "Attribute for Username": "Tréith don Ainm Úsáideora", "Audio": "Fuaim", "August": "Lúnasa", - "Auth": "", + "Auth": "Údarú", "Authenticate": "Fíordheimhnigh", "Authentication": "Fíordheimhniú", - "Auto": "", + "Auto": "Uath", "Auto-Copy Response to Clipboard": "Freagra AutoCopy go Gearrthaisce", "Auto-playback response": "Freagra uathsheinm", "Autocomplete Generation": "Giniúint Uathchríochnaithe", @@ -126,7 +126,7 @@ "AUTOMATIC1111 Base URL": "UATHOIBRÍOCH1111 Bun URL", "AUTOMATIC1111 Base URL is required.": "Tá URL bonn UATHOIBRÍOCH1111 ag teastáil.", "Available list": "Liosta atá ar fáil", - "Available Tools": "", + "Available Tools": "Uirlisí ar Fáil", "available!": "ar fáil!", "Awful": "Uafásach", "Azure AI Speech": "Óráid Azure AI", @@ -142,7 +142,7 @@ "Bing Search V7 Endpoint": "Cuardach Bing V7 Críochphointe", "Bing Search V7 Subscription Key": "Eochair Síntiúis Bing Cuardach V7", "Bocha Search API Key": "Eochair API Cuardach Bocha", - "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Treisiú nó pionós a ghearradh ar chomharthaí sonracha as freagraí srianta. Déanfar luachanna laofachta a chlampáil idir -100 agus 100 (san áireamh). (Réamhshocrú: ceann ar bith)", "Brave Search API Key": "Eochair API Cuardaigh Brave", "By {{name}}": "Le {{name}}", "Bypass Embedding and Retrieval": "Seachbhóthar Leabú agus Aisghabháil", @@ -205,7 +205,7 @@ "Code Interpreter": "Ateangaire Cód", "Code Interpreter Engine": "Inneall Ateangaire Cóid", "Code Interpreter Prompt Template": "Teimpléad Pras Ateangaire Cód", - "Collapse": "", + "Collapse": "Laghdaigh", "Collection": "Bailiúchán", "Color": "Dath", "ComfyUI": "ComfyUI", @@ -223,12 +223,12 @@ "Confirm your action": "Deimhnigh do ghníomh", "Confirm your new password": "Deimhnigh do phasfhocal nua", "Connect to your own OpenAI compatible API endpoints.": "Ceangail le do chríochphointí API atá comhoiriúnach le OpenAI.", - "Connect to your own OpenAPI compatible external tool servers.": "", - "Connection failed": "", - "Connection successful": "", + "Connect to your own OpenAPI compatible external tool servers.": "Ceangail le do fhreastalaithe uirlisí seachtracha atá comhoiriúnach le OpenAPI.", + "Connection failed": "Theip ar an gceangal", + "Connection successful": "Ceangal rathúil", "Connections": "Naisc", - "Connections saved successfully": "", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", + "Connections saved successfully": "D'éirigh le naisc a shábháil", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "Srianann iarracht ar réasúnaíocht a dhéanamh ar shamhlacha réasúnaíochta. Ní bhaineann ach le samhlacha réasúnaíochta ó sholáthraithe sonracha a thacaíonn le hiarracht réasúnaíochta.", "Contact Admin for WebUI Access": "Déan teagmháil le Riarachán le haghaidh Rochtana WebUI", "Content": "Ábhar", "Content Extraction Engine": "Inneall Eastóscadh Ábhar", @@ -240,12 +240,12 @@ "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.": "Rialú conas a roinntear téacs teachtaireachta d'iarratais TTS. Roinneann 'poncaíocht' ina abairtí, scoilteann 'míreanna' i míreanna, agus coinníonn 'aon' an teachtaireacht mar shreang amháin.", "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "Rialú a dhéanamh ar athrá seichimh chomharthaí sa téacs ginte. Cuirfidh luach níos airde (m.sh., 1.5) pionós níos láidre ar athrá, agus beidh luach níos ísle (m.sh., 1.1) níos boige. Ag 1, tá sé díchumasaithe. (Réamhshocrú: 1.1)", "Controls": "Rialuithe", - "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "", + "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "Rialaíonn sé an chothromaíocht idir comhleanúnachas agus éagsúlacht an aschuir. Beidh téacs níos dírithe agus níos soiléire mar thoradh ar luach níos ísle.", "Copied": "Cóipeáladh", "Copied shared chat URL to clipboard!": "Cóipeáladh URL an chomhrá roinnte chuig an ngearrthaisce!", "Copied to clipboard": "Cóipeáilte go gear", "Copy": "Cóipeáil", - "Copy Formatted Text": "", + "Copy Formatted Text": "Cóipeáil Téacs Formáidithe", "Copy last code block": "Cóipeáil bloc cód deireanach", "Copy last response": "Cóipeáil an fhreagairt", "Copy Link": "Cóipeáil Nasc", @@ -266,7 +266,7 @@ "Created At": "Cruthaithe Ag", "Created by": "Cruthaithe ag", "CSV Import": "Iompórtáil CSV", - "Ctrl+Enter to Send": "", + "Ctrl+Enter to Send": "Ctrl+Iontráil chun Seol", "Current Model": "Múnla Reatha", "Current Password": "Pasfhocal Reatha", "Custom": "Saincheaptha", @@ -286,7 +286,7 @@ "Default Prompt Suggestions": "Moltaí Leid Réamhshocraithe", "Default to 389 or 636 if TLS is enabled": "Réamhshocrú go 389 nó 636 má tá TLS cumasaithe", "Default to ALL": "Réamhshocrú do GACH", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Réamhshocrú maidir le haisghabháil deighilte d’eastóscadh ábhar dírithe agus ábhartha, moltar é seo i bhformhór na gcásanna.", "Default User Role": "Ról Úsáideora Réamhshocraithe", "Delete": "Scrios", "Delete a model": "Scrios múnla", @@ -308,13 +308,13 @@ "Deleted User": "Úsáideoir Scriosta", "Describe your knowledge base and objectives": "Déan cur síos ar do bhunachar eolais agus do chuspóirí", "Description": "Cur síos", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "Déan Déantáin a bhrath go huathoibríoch", "Didn't fully follow instructions": "Níor lean sé treoracha go hiomlán", - "Direct": "", + "Direct": "Díreach", "Direct Connections": "Naisc Dhíreacha", "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Ligeann Connections Direct d’úsáideoirí ceangal lena gcríochphointí API féin atá comhoiriúnach le OpenAI.", "Direct Connections settings updated": "Nuashonraíodh socruithe Connections Direct", - "Direct Tool Servers": "", + "Direct Tool Servers": "Freastalaithe Uirlisí Díreacha", "Disabled": "Díchumasaithe", "Discover a function": "Faigh amach feidhm", "Discover a model": "Faigh amach múnla", @@ -334,8 +334,8 @@ "Dive into knowledge": "Léim isteach eolas", "Do not install functions from sources you do not fully trust.": "Ná suiteáil feidhmeanna ó fhoinsí nach bhfuil muinín iomlán agat.", "Do not install tools from sources you do not fully trust.": "Ná suiteáil uirlisí ó fhoinsí nach bhfuil muinín iomlán agat.", - "Docling": "", - "Docling Server URL required.": "", + "Docling": "Docling", + "Docling Server URL required.": "URL Freastalaí Doling ag teastáil.", "Document": "Doiciméad", "Document Intelligence": "Faisnéise Doiciméad", "Document Intelligence endpoint and key required.": "Críochphointe Faisnéise Doiciméad agus eochair ag teastáil.", @@ -356,15 +356,15 @@ "Draw": "Tarraing", "Drop any files here to add to the conversation": "Scaoil aon chomhaid anseo le cur leis an gcomhrá", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "m.sh. '30s', '10m'. Is iad aonaid ama bailí ná 's', 'm', 'h'.", - "e.g. \"json\" or a JSON schema": "", + "e.g. \"json\" or a JSON schema": "m.sh. \"json\" nó scéimre JSON", "e.g. 60": "m.sh. 60", "e.g. A filter to remove profanity from text": "m.h. Scagaire chun profanity a bhaint as téacs", "e.g. My Filter": "m.sh. Mo Scagaire", - "e.g. My Tools": "e.g. Mo Uirlisí", + "e.g. My Tools": "m.sh. Mo Uirlisí", "e.g. my_filter": "m.sh. mo_scagaire", "e.g. my_tools": "m.sh. mo_uirlisí", "e.g. Tools for performing various operations": "m.sh. Uirlisí chun oibríochtaí éagsúla a dhéanamh", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "m.sh., en-US, ja-JP (fág bán le haghaidh uathbhraite)", "Edit": "Cuir in eagar", "Edit Arena Model": "Cuir Samhail Airéine in Eagar", "Edit Channel": "Cuir Cainéal in Eagar", @@ -383,16 +383,16 @@ "Embedding model set to \"{{embedding_model}}\"": "Múnla leabaithe socraithe go \"{{embedding_model}}\"", "Enable API Key": "Cumasaigh Eochair API", "Enable autocomplete generation for chat messages": "Cumasaigh giniúint uathchríochnaithe le haghaidh teachtaireachtaí comhrá", - "Enable Code Execution": "", + "Enable Code Execution": "Cumasaigh Forghníomhú Cód", "Enable Code Interpreter": "Cumasaigh Ateangaire Cóid", "Enable Community Sharing": "Cumasaigh Comhroinnt Pobail", "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Cumasaigh Glasáil Cuimhne (mlock) chun sonraí samhaltaithe a chosc ó RAM. Glasálann an rogha seo sraith oibre leathanaigh an mhúnla isteach i RAM, ag cinntiú nach ndéanfar iad a mhalartú go diosca. Is féidir leis seo cabhrú le feidhmíocht a choinneáil trí lochtanna leathanaigh a sheachaint agus rochtain tapa ar shonraí a chinntiú.", "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.": "Cumasaigh Mapáil Cuimhne (mmap) chun sonraí samhla a lódáil. Ligeann an rogha seo don chóras stóráil diosca a úsáid mar leathnú ar RAM trí chomhaid diosca a chóireáil amhail is dá mba i RAM iad. Is féidir leis seo feidhmíocht na samhla a fheabhsú trí rochtain níos tapúla ar shonraí a cheadú. Mar sin féin, d'fhéadfadh sé nach n-oibreoidh sé i gceart le gach córas agus féadfaidh sé méid suntasach spáis diosca a ithe.", "Enable Message Rating": "Cumasaigh Rátáil Teachtai", - "Enable Mirostat sampling for controlling perplexity.": "", + "Enable Mirostat sampling for controlling perplexity.": "Cumasaigh sampláil Mirostat chun seachrán a rialú.", "Enable New Sign Ups": "Cumasaigh Clárúcháin Nua", "Enabled": "Cumasaithe", - "Enforce Temporary Chat": "", + "Enforce Temporary Chat": "Cuir Comhrá Sealadach i bhfeidhm", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Déan cinnte go bhfuil 4 cholún san ord seo i do chomhad CSV: Ainm, Ríomhphost, Pasfhocal, Ról.", "Enter {{role}} message here": "Cuir isteach teachtaireacht {{role}} anseo", "Enter a detail about yourself for your LLMs to recall": "Cuir isteach mionsonraí fút féin chun do LLManna a mheabhrú", @@ -407,15 +407,15 @@ "Enter CFG Scale (e.g. 7.0)": "Cuir isteach Scála CFG (m.sh. 7.0)", "Enter Chunk Overlap": "Cuir isteach Chunk Forluí", "Enter Chunk Size": "Cuir isteach Méid an Smután", - "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", + "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Cuir isteach péirí camóg-scartha \"comhartha:luach laofachta\" (mar shampla: 5432:100, 413:-100)", "Enter description": "Iontráil cur síos", - "Enter Docling Server URL": "", + "Enter Docling Server URL": "Cuir isteach URL Freastalaí Doling", "Enter Document Intelligence Endpoint": "Iontráil Críochphointe Faisnéise Doiciméid", "Enter Document Intelligence Key": "Iontráil Eochair Faisnéise Doiciméad", "Enter domains separated by commas (e.g., example.com,site.org)": "Cuir isteach fearainn atá scartha le camóga (m.sh., example.com,site.org)", "Enter Exa API Key": "Cuir isteach Eochair Exa API", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", + "Enter Firecrawl API Base URL": "Cuir isteach URL Bonn API Firecrawl", + "Enter Firecrawl API Key": "Cuir isteach Eochair API Firecrawl", "Enter Github Raw URL": "Cuir isteach URL Github Raw", "Enter Google PSE API Key": "Cuir isteach Eochair API Google PSE", "Enter Google PSE Engine Id": "Cuir isteach ID Inneall Google PSE", @@ -425,16 +425,16 @@ "Enter Jupyter Token": "Cuir isteach Jupyter Chomhartha", "Enter Jupyter URL": "Cuir isteach URL Jupyter", "Enter Kagi Search API Key": "Cuir isteach Eochair Kagi Cuardach API", - "Enter Key Behavior": "", + "Enter Key Behavior": "Iontráil Iompar Eochair", "Enter language codes": "Cuir isteach cóid teanga", - "Enter Mistral API Key": "", + "Enter Mistral API Key": "Cuir isteach Eochair API Mistral", "Enter Model ID": "Iontráil ID Mhúnla", "Enter model tag (e.g. {{modelTag}})": "Cuir isteach chlib samhail (m.sh. {{modelTag}})", "Enter Mojeek Search API Key": "Cuir isteach Eochair API Cuardach Mojeek", "Enter Number of Steps (e.g. 50)": "Iontráil Líon na gCéimeanna (m.sh. 50)", - "Enter Perplexity API Key": "", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", + "Enter Perplexity API Key": "Cuir isteach Eochair API Perplexity", + "Enter Playwright Timeout": "Iontráil Teorainn Ama na nDrámadóir", + "Enter Playwright WebSocket URL": "Cuir isteach URL WebSocket Seinmeora", "Enter proxy URL (e.g. https://user:password@host:port)": "Cuir isteach URL seachfhreastalaí (m.sh. https://user:password@host:port)", "Enter reasoning effort": "Cuir isteach iarracht réasúnaíochta", "Enter Sampler (e.g. Euler a)": "Cuir isteach Sampler (m.sh. Euler a)", @@ -452,26 +452,26 @@ "Enter server host": "Cuir isteach óstach freastalaí", "Enter server label": "Cuir isteach lipéad freastalaí", "Enter server port": "Cuir isteach port freastalaí", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", + "Enter Sougou Search API sID": "Cuir isteach sID Sougou Search API", + "Enter Sougou Search API SK": "Cuir isteach Sougou Search API SK", "Enter stop sequence": "Cuir isteach seicheamh stad", "Enter system prompt": "Cuir isteach an chóras leid", - "Enter system prompt here": "", + "Enter system prompt here": "Cuir leid córais isteach anseo", "Enter Tavily API Key": "Cuir isteach eochair API Tavily", - "Enter Tavily Extract Depth": "", + "Enter Tavily Extract Depth": "Cuir isteach Doimhneacht Sliocht Tavily", "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Cuir isteach URL poiblí do WebUI. Bainfear úsáid as an URL seo chun naisc a ghiniúint sna fógraí.", "Enter Tika Server URL": "Cuir isteach URL freastalaí Tika", "Enter timeout in seconds": "Cuir isteach an t-am istigh i soicindí", - "Enter to Send": "", + "Enter to Send": "Iontráil chun Seol", "Enter Top K": "Cuir isteach Barr K", - "Enter Top K Reranker": "", + "Enter Top K Reranker": "Cuir isteach Barr K Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "Iontráil URL (m.sh. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Iontráil URL (m.sh. http://localhost:11434)", "Enter your current password": "Cuir isteach do phasfhocal reatha", "Enter Your Email": "Cuir isteach do Ríomhphost", "Enter Your Full Name": "Cuir isteach d'Ainm Iomlán", "Enter your message": "Cuir isteach do theachtaireacht", - "Enter your name": "", + "Enter your name": "Cuir isteach d'ainm", "Enter your new password": "Cuir isteach do phasfhocal nua", "Enter Your Password": "Cuir isteach do phasfhocal", "Enter Your Role": "Cuir isteach do Ról", @@ -488,14 +488,14 @@ "Example: mail": "Sampla: ríomhphost", "Example: ou=users,dc=foo,dc=example": "Sampla: ou=úsáideoirí,dc=foo,dc=sampla", "Example: sAMAccountName or uid or userPrincipalName": "Sampla: sAMAaccountName nó uid nó userPrincipalName", - "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "", + "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Níos mó ná líon na suíochán i do cheadúnas. Déan teagmháil le do thoil le tacaíocht chun líon na suíochán a mhéadú.", "Exclude": "Eisigh", "Execute code for analysis": "Íosluchtaigh cód le haghaidh anailíse", - "Executing **{{NAME}}**...": "", - "Expand": "", + "Executing **{{NAME}}**...": "**{{NAME}}** á rith...", + "Expand": "Leathnaigh", "Experimental": "Turgnamhach", - "Explain": "", - "Explain this section to me in more detail": "", + "Explain": "Mínigh", + "Explain this section to me in more detail": "Mínigh an chuid seo dom níos mine", "Explore the cosmos": "Déan iniúchadh ar an cosmos", "Export": "Easpórtáil", "Export All Archived Chats": "Easpórtáil Gach Comhrá Cartlainne", @@ -509,14 +509,14 @@ "Export Prompts": "Leideanna Easpórtála", "Export to CSV": "Easpórtáil go CSV", "Export Tools": "Uirlisí Easpór", - "External": "", + "External": "Seachtrach", "External Models": "Múnlaí Seachtracha", "Failed to add file.": "Theip ar an gcomhad a chur leis.", - "Failed to connect to {{URL}} OpenAPI tool server": "", + "Failed to connect to {{URL}} OpenAPI tool server": "Theip ar nascadh le {{URL}} freastalaí uirlisí OpenAPI", "Failed to create API Key.": "Theip ar an eochair API a chruthú.", "Failed to fetch models": "Theip ar shamhlacha a fháil", "Failed to read clipboard contents": "Theip ar ábhar gearrthaisce a lé", - "Failed to save connections": "", + "Failed to save connections": "Theip ar na naisc a shábháil", "Failed to save models configuration": "Theip ar chumraíocht na múnlaí a shábháil", "Failed to update settings": "Theip ar shocruithe a nuashonrú", "Failed to upload file.": "Theip ar uaslódáil an chomhaid.", @@ -539,8 +539,8 @@ "Filter is now globally enabled": "Tá an scagaire cumasaithe go domhanda anois", "Filters": "Scagairí", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Braithíodh spoofing méarloirg: Ní féidir teachlitreacha a úsáid mar avatar. Réamhshocrú ar íomhá próifíle réamhshocraithe.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "URL Bunús API Firecrawl", + "Firecrawl API Key": "Eochair API Firecrawl", "Fluidly stream large external response chunks": "Sruthaigh codanna móra freagartha seachtracha go sreabhach", "Focus chat input": "Ionchur comhrá fócas", "Folder deleted successfully": "Scriosadh an fillteán go rathúil", @@ -551,7 +551,7 @@ "Forge new paths": "Déan cosáin nua a chruthú", "Form": "Foirm", "Format your variables using brackets like this:": "Formáidigh na hathróga ag baint úsáide as lúibíní mar seo:", - "Forwards system user session credentials to authenticate": "", + "Forwards system user session credentials to authenticate": "Cuir dintiúir seisiúin úsáideora córais ar aghaidh lena bhfíordheimhniú", "Frequency Penalty": "Pionós Minicíochta", "Full Context Mode": "Mód Comhthéacs Iomlán", "Function": "Feidhm", @@ -573,7 +573,7 @@ "Gemini API Key is required.": "Tá Eochair Gemini API ag teastáil.", "General": "Ginearálta", "Generate an image": "Gin íomhá", - "Generate Image": "Ginigh Íomhá", + "Generate Image": "Gin Íomhá", "Generate prompt pair": "Gin péire pras", "Generating search query": "Giniúint ceist cuardaigh", "Get started": "Cuir tús leis", @@ -597,7 +597,7 @@ "Hex Color": "Dath Heics", "Hex Color - Leave empty for default color": "Dath Heics - Fág folamh don dath réamhshocraithe", "Hide": "Folaigh", - "Hide Model": "", + "Hide Model": "Folaigh Múnla", "Home": "Baile", "Host": "Óstach", "How can I help you today?": "Conas is féidir liom cabhrú leat inniu?", @@ -605,8 +605,8 @@ "Hybrid Search": "Cuardach Hibrideach", "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.": "Admhaím gur léigh mé agus tuigim impleachtaí mo ghníomhaíochta. Táim ar an eolas faoi na rioscaí a bhaineann le cód treallach a fhorghníomhú agus tá iontaofacht na foinse fíoraithe agam.", "ID": "ID", - "iframe Sandbox Allow Forms": "", - "iframe Sandbox Allow Same Origin": "", + "iframe Sandbox Allow Forms": "iframe Bosca Gainimh Foirmeacha Ceadaithe", + "iframe Sandbox Allow Same Origin": "Bosca Gainimh iframe Ceadaigh an Bunús Céanna", "Ignite curiosity": "Las fiosracht", "Image": "Íomhá", "Image Compression": "Comhbhrú Íomhá", @@ -628,16 +628,16 @@ "Include": "Cuir san áireamh", "Include `--api-auth` flag when running stable-diffusion-webui": "Cuir bratach `--api-auth` san áireamh agus webui stable-diffusion-reatha á rith", "Include `--api` flag when running stable-diffusion-webui": "Cuir bratach `--api` san áireamh agus webui cobhsaí-scaipthe á rith", - "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "", + "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "Bíonn tionchar aige ar chomh tapa agus a fhreagraíonn an t-algartam d’aiseolas ón téacs ginte. Beidh coigeartuithe níos moille mar thoradh ar ráta foghlama níos ísle, agus déanfaidh ráta foghlama níos airde an t-algartam níos freagraí.", "Info": "Eolas", - "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", + "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Instealladh an t-ábhar ar fad mar chomhthéacs do phróiseáil chuimsitheach, moltar é seo le haghaidh ceisteanna casta.", "Input commands": "Orduithe ionchuir", "Install from Github URL": "Suiteáil ó Github URL", "Instant Auto-Send After Voice Transcription": "Seoladh Uathoibríoch Láithreach Tar éis", "Integration": "Comhtháthú", "Interface": "Comhéadan", "Invalid file format.": "Formáid comhaid neamhbhailí.", - "Invalid JSON schema": "", + "Invalid JSON schema": "Scéimre JSON neamhbhailí", "Invalid Tag": "Clib neamhbhailí", "is typing...": "ag clóscríobh...", "January": "Eanáir", @@ -645,7 +645,7 @@ "join our Discord for help.": "bí inár Discord chun cabhair a fháil.", "JSON": "JSON", "JSON Preview": "Réamhamharc JSON", - "July": "Lúil", + "July": "Iúil", "June": "Meitheamh", "Jupyter Auth": "Fíordheimhniú Jupyter", "Jupyter URL": "URL Jupyter", @@ -659,7 +659,7 @@ "Knowledge Access": "Rochtain Eolais", "Knowledge created successfully.": "Eolas cruthaithe go rathúil.", "Knowledge deleted successfully.": "D'éirigh leis an eolas a scriosadh.", - "Knowledge Public Sharing": "", + "Knowledge Public Sharing": "Roinnt Faisnéise Poiblí", "Knowledge reset successfully.": "D'éirigh le hathshocrú eolais.", "Knowledge updated successfully": "D'éirigh leis an eolas a nuashonrú", "Kokoro.js (Browser)": "Kokoro.js (Brabhsálaí)", @@ -667,17 +667,17 @@ "Label": "Lipéad", "Landing Page Mode": "Mód Leathanach Tuirlingthe", "Language": "Teanga", - "Language Locales": "", + "Language Locales": "Logánta Teanga", "Last Active": "Gníomhach Deiridh", "Last Modified": "Athraithe Deiridh", "Last reply": "Freagra deiridh", "LDAP": "LDAP", "LDAP server updated": "Nuashonraíodh freastalaí LDAP", "Leaderboard": "An Clár Ceannairí", - "Learn more about OpenAPI tool servers.": "", + "Learn more about OpenAPI tool servers.": "Foghlaim tuilleadh faoi fhreastalaithe uirlisí OpenAPI.", "Leave empty for unlimited": "Fág folamh le haghaidh neamhtheoranta", - "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "", - "Leave empty to include all models from \"{{url}}/models\" endpoint": "", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Fág folamh chun gach múnla ó chríochphointe \"{{url}}/api/tags\" a chur san áireamh", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "Fág folamh chun gach múnla ón gcríochphointe \"{{url}}/models\" a chur san áireamh", "Leave empty to include all models or select specific models": "Fág folamh chun gach múnla a chur san áireamh nó roghnaigh múnlaí sonracha", "Leave empty to use the default prompt, or enter a custom prompt": "Fág folamh chun an leid réamhshocraithe a úsáid, nó cuir isteach leid saincheaptha", "Leave model field empty to use the default model.": "Fág réimse an mhúnla folamh chun an tsamhail réamhshocraithe a úsáid.", @@ -691,7 +691,7 @@ "Local": "Áitiúil", "Local Models": "Múnlaí Áitiúla", "Location access not allowed": "Ní cheadaítear rochtain suímh", - "Logit Bias": "", + "Logit Bias": "Bias Logit", "Lost": "Cailleadh", "LTR": "LTR", "Made by Open WebUI Community": "Déanta ag OpenWebUI Community", @@ -704,7 +704,7 @@ "Manage Ollama API Connections": "Bainistigh Naisc API Ollama", "Manage OpenAI API Connections": "Bainistigh Naisc API OpenAI", "Manage Pipelines": "Bainistigh píblín", - "Manage Tool Servers": "", + "Manage Tool Servers": "Bainistigh Freastalaithe Uirlisí", "March": "Márta", "Max Tokens (num_predict)": "Comharthaí Uasta (num_predicate)", "Max Upload Count": "Líon Uaslódála Max", @@ -724,16 +724,16 @@ "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", "Mirostat Tau": "Mirostat Tau", - "Mistral OCR": "", - "Mistral OCR API Key required.": "", + "Mistral OCR": "OCR Mistral", + "Mistral OCR API Key required.": "Mistral OCR API Eochair ag teastáil.", "Model": "Múnla", "Model '{{modelName}}' has been successfully downloaded.": "Rinneadh an tsamhail '{{modelName}}' a íoslódáil go rathúil.", "Model '{{modelTag}}' is already in queue for downloading.": "Tá múnla ‘{{modelTag}}’ sa scuaine cheana féin le híoslódáil.", "Model {{modelId}} not found": "Múnla {{modelId}} gan aimsiú", "Model {{modelName}} is not vision capable": "Níl samhail {{modelName}} in ann amharc", "Model {{name}} is now {{status}}": "Tá samhail {{name}} {{status}} anois", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", + "Model {{name}} is now hidden": "Tá múnla {{name}} i bhfolach anois", + "Model {{name}} is now visible": "Tá múnla {{name}} le feiceáil anois", "Model accepts image inputs": "Glacann múnla le hionchuir", "Model created successfully!": "Cruthaíodh múnla go rathúil!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Fuarthas cosán an múnla. Teastaíonn ainm gearr an mhúnla le haghaidh nuashonraithe, ní féidir leanúint ar aghaidh.", @@ -749,7 +749,7 @@ "Models": "Múnlaí", "Models Access": "Rochtain Múnlaí", "Models configuration saved successfully": "Sábháladh cumraíocht na múnlaí go rathúil", - "Models Public Sharing": "", + "Models Public Sharing": "Múnlaí Comhroinnte Poiblí", "Mojeek Search API Key": "Eochair API Cuardach Mojeek", "more": "níos mó", "More": "Tuilleadh", @@ -812,7 +812,7 @@ "Open file": "Oscail comhad", "Open in full screen": "Oscail i scáileán iomlán", "Open new chat": "Oscail comhrá nua", - "Open WebUI can use tools provided by any OpenAPI server.": "", + "Open WebUI can use tools provided by any OpenAPI server.": "Is féidir le WebUI Oscailte uirlisí a úsáid a sholáthraíonn aon fhreastalaí OpenAPI.", "Open WebUI uses faster-whisper internally.": "Úsáideann Open WebUI cogar níos tapúla go hinmheánach.", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Úsáideann Open WebUI úsáidí SpeechT5 agus CMU leabaithe cainteoir Artach.", "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Tá leagan WebUI oscailte (v{{OPEN_WEBUI_VERSION}}) níos ísle ná an leagan riachtanach (v{{REQUIRED_VERSION}})", @@ -822,7 +822,7 @@ "OpenAI API Key is required.": "Tá Eochair API OpenAI ag teastáil.", "OpenAI API settings updated": "Nuashonraíodh socruithe OpenAI API", "OpenAI URL/Key required.": "Teastaíonn URL/eochair OpenAI.", - "openapi.json Path": "", + "openapi.json Path": "Conair openapi.json", "or": "nó", "Organize your users": "Eagraigh do chuid úsáideoirí", "Other": "Eile", @@ -839,7 +839,7 @@ "Permission denied when accessing microphone": "Cead diúltaithe agus tú ag rochtain ar", "Permission denied when accessing microphone: {{error}}": "Cead diúltaithe agus tú ag teacht ar mhicreafón: {{error}}", "Permissions": "Ceadanna", - "Perplexity API Key": "", + "Perplexity API Key": "Eochair API Perplexity", "Personalization": "Pearsantú", "Pin": "Bioráin", "Pinned": "Pinneáilte", @@ -851,13 +851,13 @@ "Pipelines Valves": "Comhlaí Píblíne", "Plain text (.txt)": "Téacs simplí (.txt)", "Playground": "Clós súgartha", - "Playwright Timeout (ms)": "", - "Playwright WebSocket URL": "", + "Playwright Timeout (ms)": "Teorainn Ama drámadóra (ms)", + "Playwright WebSocket URL": "URL drámadóir WebSocket", "Please carefully review the following warnings:": "Déan athbhreithniú cúramach ar na rabhaidh seo a leanas le do thoil:", "Please do not close the settings page while loading the model.": "Ná dún leathanach na socruithe agus an tsamhail á luchtú.", "Please enter a prompt": "Cuir isteach leid", - "Please enter a valid path": "", - "Please enter a valid URL": "", + "Please enter a valid path": "Cuir isteach cosán bailí", + "Please enter a valid URL": "Cuir isteach URL bailí", "Please fill in all fields.": "Líon isteach gach réimse le do thoil.", "Please select a model first.": "Roghnaigh munla ar dtús le do thoil.", "Please select a model.": "Roghnaigh múnla le do thoil.", @@ -869,19 +869,19 @@ "Presence Penalty": "Pionós Láithreacht", "Previous 30 days": "30 lá roimhe seo", "Previous 7 days": "7 lá roimhe seo", - "Private": "", + "Private": "Príobháideach", "Profile Image": "Íomhá Próifíl", "Prompt": "Leid", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Leid (m.sh. inis dom fíric spraíúil faoin Impireacht Rómhánach)", - "Prompt Autocompletion": "", + "Prompt Autocompletion": "Uathchríochnú Pras", "Prompt Content": "Ábhar Leid", "Prompt created successfully": "Leid cruthaithe go rathúil", "Prompt suggestions": "Moltaí leid", "Prompt updated successfully": "D'éirigh leis an leid a nuashonrú", "Prompts": "Leabhair", "Prompts Access": "Rochtain ar Chuirí", - "Prompts Public Sharing": "", - "Public": "", + "Prompts Public Sharing": "Spreagann Roinnt Phoiblí", + "Public": "Poiblí", "Pull \"{{searchValue}}\" from Ollama.com": "Tarraing \"{{searchValue}}\" ó Ollama.com", "Pull a model from Ollama.com": "Tarraing múnla ó Ollama.com", "Query Generation Prompt": "Cuirí Ginearáil Ceisteanna", @@ -893,16 +893,16 @@ "Reasoning Effort": "Iarracht Réasúnúcháin", "Record voice": "Taifead guth", "Redirecting you to Open WebUI Community": "Tú a atreorú chuig OpenWebUI Community", - "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", + "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Laghdaíonn sé an dóchúlacht go giniúint nonsense. Tabharfaidh luach níos airde (m.sh. 100) freagraí níos éagsúla, agus beidh luach níos ísle (m.sh. 10) níos coimeádaí.", "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Tagairt duit féin mar \"Úsáideoir\" (m.sh., \"Tá an úsáideoir ag foghlaim Spáinnis\")", "References from": "Tagairtí ó", "Refused when it shouldn't have": "Diúltaíodh nuair nár chóir dó", "Regenerate": "Athghiniúint", - "Reindex": "", - "Reindex Knowledge Base Vectors": "", + "Reindex": "Reindex", + "Reindex Knowledge Base Vectors": "Veicteoirí Bonn Eolais a ath-innéacsú", "Release Notes": "Nótaí Scaoilte", "Relevance": "Ábharthacht", - "Relevance Threshold": "", + "Relevance Threshold": "Tairseach Ábharthaíochta", "Remove": "Bain", "Remove Model": "Bain Múnla", "Rename": "Athainmnigh", @@ -1005,22 +1005,22 @@ "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "Socraigh líon na snáitheanna oibrithe a úsáidtear le haghaidh ríomh. Rialaíonn an rogha seo cé mhéad snáithe a úsáidtear chun iarratais a thagann isteach a phróiseáil i gcomhthráth. D'fhéadfadh méadú ar an luach seo feidhmíocht a fheabhsú faoi ualaí oibre comhairgeadra ard ach féadfaidh sé níos mó acmhainní LAP a úsáid freisin.", "Set Voice": "Socraigh Guth", "Set whisper model": "Socraigh múnla cogar", - "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets how far back for the model to look back to prevent repetition.": "", - "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "", - "Sets the size of the context window used to generate the next token.": "", + "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Socraíonn sé claonadh cothrom i gcoinne comharthaí a tháinig chun solais uair amháin ar a laghad. Cuirfidh luach níos airde (m.sh., 1.5) pionós níos láidre ar athrá, agus beidh luach níos ísle (m.sh., 0.9) níos boige. Ag 0, tá sé díchumasaithe.", + "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Socraíonn sé laofacht scálaithe i gcoinne comharthaí chun pionós a ghearradh ar athrá, bunaithe ar cé mhéad uair a tháinig siad chun solais. Cuirfidh luach níos airde (m.sh., 1.5) pionós níos láidre ar athrá, agus beidh luach níos ísle (m.sh., 0.9) níos boige. Ag 0, tá sé díchumasaithe.", + "Sets how far back for the model to look back to prevent repetition.": "Socraíonn sé cé chomh fada siar is atá an tsamhail le breathnú siar chun athrá a chosc.", + "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "Socraíonn sé an síol uimhir randamach a úsáid le haghaidh giniúna. Má shocraítear é seo ar uimhir shainiúil, ginfidh an tsamhail an téacs céanna don leid céanna.", + "Sets the size of the context window used to generate the next token.": "Socraíonn sé méid na fuinneoige comhthéacs a úsáidtear chun an chéad chomhartha eile a ghiniúint.", "Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "Socraíonn sé na stadanna le húsáid. Nuair a thagtar ar an bpatrún seo, stopfaidh an LLM ag giniúint téacs agus ag filleadh. Is féidir patrúin stad iolracha a shocrú trí pharaiméadair stadanna iolracha a shonrú i gcomhad samhail.", "Settings": "Socruithe", "Settings saved successfully!": "Socruithe sábhálta go rathúil!", "Share": "Comhroinn", "Share Chat": "Comhroinn Comhrá", "Share to Open WebUI Community": "Comhroinn le Pobal OpenWebUI", - "Sharing Permissions": "", + "Sharing Permissions": "Ceadanna a Roinnt", "Show": "Taispeáin", "Show \"What's New\" modal on login": "Taispeáin módúil \"Cad atá Nua\" ar logáil isteach", "Show Admin Details in Account Pending Overlay": "Taispeáin Sonraí Riaracháin sa Chuntas ar Feitheamh Forleagan", - "Show Model": "", + "Show Model": "Taispeáin Múnla", "Show shortcuts": "Taispeáin aicearraí", "Show your support!": "Taispeáin do thacaíocht!", "Showcased creativity": "Cruthaitheacht léirithe", @@ -1032,8 +1032,8 @@ "Sign up to {{WEBUI_NAME}}": "Cláraigh le {{WEBUI_NAME}}", "Signing in to {{WEBUI_NAME}}": "Ag síniú isteach ar {{WEBUI_NAME}}", "sk-1234": "sk-1234", - "Sougou Search API sID": "", - "Sougou Search API SK": "", + "Sougou Search API sID": "Sougou Search API sID", + "Sougou Search API SK": "Sougou Search API SK", "Source": "Foinse", "Speech Playback Speed": "Luas Athsheinm Urlabhra", "Speech recognition error: {{error}}": "Earráid aitheantais cainte: {{error}}", @@ -1053,7 +1053,7 @@ "System": "Córas", "System Instructions": "Treoracha Córas", "System Prompt": "Córas Leid", - "Tags": "", + "Tags": "Clibeanna", "Tags Generation": "Giniúint Clibeanna", "Tags Generation Prompt": "Clibeanna Giniúint Leid", "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.": "Úsáidtear sampláil saor ó eireabaill chun tionchar na n-chomharthaí ón aschur nach bhfuil chomh dóchúil céanna a laghdú. Laghdóidh luach níos airde (m.sh., 2.0) an tionchar níos mó, agus díchumasaíonn luach 1.0 an socrú seo. (réamhshocraithe: 1)", @@ -1061,7 +1061,7 @@ "Tap to interrupt": "Tapáil chun cur isteach", "Tasks": "Tascanna", "Tavily API Key": "Eochair API Tavily", - "Tavily Extract Depth": "", + "Tavily Extract Depth": "Doimhneacht Sliocht Tavily", "Tell us more:": "Inis dúinn níos mó:", "Temperature": "Teocht", "Template": "Teimpléad", @@ -1072,7 +1072,7 @@ "Thanks for your feedback!": "Go raibh maith agat as do chuid aiseolas!", "The Application Account DN you bind with for search": "An Cuntas Feidhmchláir DN a nascann tú leis le haghaidh cuardaigh", "The base to search for users": "An bonn chun cuardach a dhéanamh ar úsáideoirí", - "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "", + "The 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.": "Cinneann méid an bhaisc cé mhéad iarratas téacs a phróiseáiltear le chéile ag an am céanna. Is féidir le méid baisc níos airde feidhmíocht agus luas an mhúnla a mhéadú, ach éilíonn sé níos mó cuimhne freisin.", "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Is deonacha paiseanta ón bpobal iad na forbróirí taobh thiar den bhreiseán seo. Má aimsíonn an breiseán seo cabhrach leat, smaoinigh ar rannchuidiú lena fhorbairt.", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Tá an clár ceannairí meastóireachta bunaithe ar chóras rátála Elo agus déantar é a nuashonrú i bhfíor-am.", "The LDAP attribute that maps to the mail that users use to sign in.": "An tréith LDAP a mhapálann don ríomhphost a úsáideann úsáideoirí chun síniú isteach.", @@ -1081,16 +1081,16 @@ "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "Uasmhéid an chomhaid i MB. Má sháraíonn méid an chomhaid an teorainn seo, ní uaslódófar an comhad.", "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.": "An líon uasta na gcomhaid is féidir a úsáid ag an am céanna i gcomhrá. Má sháraíonn líon na gcomhaid an teorainn seo, ní uaslódófar na comhaid.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Ba chóir go mbeadh an scór ina luach idir 0.0 (0%) agus 1.0 (100%).", - "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "", + "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "Teocht an mhúnla. Déanfaidh méadú ar an teocht an freagra múnla níos cruthaithí.", "Theme": "Téama", "Thinking...": "Ag smaoineamh...", "This action cannot be undone. Do you wish to continue?": "Ní féidir an gníomh seo a chur ar ais. Ar mhaith leat leanúint ar aghaidh?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", - "This chat won’t appear in history and your messages will not be saved.": "", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Cruthaíodh an cainéal seo ar {{createdAt}}. Seo tús an chainéil {{channelName}}.", + "This chat won’t appear in history and your messages will not be saved.": "Ní bheidh an comhrá seo le feiceáil sa stair agus ní shábhálfar do theachtaireachtaí.", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Cinntíonn sé seo go sábhálfar do chomhráite luachmhara go daingean i do bhunachar sonraí cúltaca Go raibh maith agat!", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Is gné turgnamhach í seo, b'fhéidir nach bhfeidhmeoidh sé mar a bhíothas ag súil leis agus tá sé faoi réir athraithe ag am ar bith.", - "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.": "", - "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", + "This option 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.": "Rialaíonn an rogha seo cé mhéad comhartha a chaomhnaítear agus an comhthéacs á athnuachan. Mar shampla, má shocraítear go 2 é, coinneofar an 2 chomhartha dheireanacha de chomhthéacs an chomhrá. Is féidir le comhthéacs a chaomhnú cabhrú le leanúnachas comhrá a choinneáil, ach d’fhéadfadh sé laghdú a dhéanamh ar an gcumas freagairt do thopaicí nua.", + "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.": "Socraíonn an rogha seo an t-uaslíon comharthaí is féidir leis an tsamhail a ghiniúint ina fhreagra. Tríd an teorainn seo a mhéadú is féidir leis an tsamhail freagraí níos faide a sholáthar, ach d’fhéadfadh go méadódh sé an dóchúlacht go nginfear ábhar neamhchabhrach nó nach mbaineann le hábhar.", "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Scriosfaidh an rogha seo gach comhad atá sa bhailiúchán agus cuirfear comhaid nua-uaslódála ina n-ionad.", "This response was generated by \"{{model}}\"": "Gin an freagra seo ag \"{{model}}\"", "This will delete": "Scriosfaidh sé seo", @@ -1103,7 +1103,7 @@ "Thought for {{DURATION}} seconds": "Smaoineamh ar feadh {{DURATION}} soicind", "Tika": "Tika", "Tika Server URL required.": "Teastaíonn URL Freastalaí Tika.", - "Tiktoken": "Tictoken", + "Tiktoken": "Tiktoken", "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Leid: Nuashonraigh sliotáin iolracha athróg as a chéile trí bhrú ar an eochair cluaisín san ionchur comhrá tar éis gach athsholáthair.", "Title": "Teideal", "Title (e.g. Tell me a fun fact)": "Teideal (m.sh. inis dom fíric spraíúil)", @@ -1134,7 +1134,7 @@ "Tool ID": "ID Uirlis", "Tool imported successfully": "Uirlis iompórtáilte", "Tool Name": "Ainm Uirlis", - "Tool Servers": "", + "Tool Servers": "Freastalaithe Uirlisí", "Tool updated successfully": "An uirlis nuashonraithe", "Tools": "Uirlisí", "Tools Access": "Rochtain Uirlisí", @@ -1142,9 +1142,9 @@ "Tools Function Calling Prompt": "Leid Glaonna Feidhm Uirlisí", "Tools have a function calling system that allows arbitrary code execution": "Tá córas glaonna feidhme ag uirlisí a cheadaíonn forghníomhú cód treallach", "Tools have a function calling system that allows arbitrary code execution.": "Tá córas glaonna feidhme ag uirlisí a cheadaíonn forghníomhú cód treallach.", - "Tools Public Sharing": "", + "Tools Public Sharing": "Uirlisí Roinnte Poiblí", "Top K": "Barr K", - "Top K Reranker": "", + "Top K Reranker": "Barr K Reranker", "Top P": "Barr P", "Transformers": "Claochladáin", "Trouble accessing Ollama?": "Deacracht teacht ar Ollama?", @@ -1184,14 +1184,14 @@ "Use Gravatar": "Úsáid Gravatar", "Use groups to group your users and assign permissions.": "Úsáid grúpaí chun d'úsáideoirí a ghrúpáil agus ceadanna a shannadh", "Use Initials": "Úsáid ceannlitreacha", - "Use no proxy to fetch page contents.": "", - "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "", + "Use no proxy to fetch page contents.": "Ná húsáid seachfhreastalaí chun inneachar an leathanaigh a fháil.", + "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Úsáid seachfhreastalaí ainmnithe ag athróga timpeallachta http_proxy agus https_proxy chun inneachar an leathanaigh a fháil.", "use_mlock (Ollama)": "use_mlock (Ollama)", "use_mmap (Ollama)": "use_mmap (Ollama)", "user": "úsáideoir", "User": "Úsáideoir", "User location successfully retrieved.": "Fuarthas suíomh an úsáideora go rathúil.", - "User Webhooks": "", + "User Webhooks": "Crúcaí Gréasáin Úsáideoir", "Username": "Ainm Úsáideora", "Users": "Úsáideoirí", "Using the default arena model with all models. Click the plus button to add custom models.": "Ag baint úsáide as an múnla réimse réamhshocraithe le gach múnlaí. Cliceáil ar an gcnaipe móide chun múnlaí saincheaptha a chur leis.", @@ -1202,12 +1202,12 @@ "Valves updated successfully": "Comhlaí nuashonraíodh", "variable": "athraitheach", "variable to have them replaced with clipboard content.": "athróg chun ábhar gearrthaisce a chur in ionad iad.", - "Verify Connection": "", - "Verify SSL Certificate": "", + "Verify Connection": "Fíoraigh Ceangal", + "Verify SSL Certificate": "Fíoraigh Deimhniú SSL", "Version": "Leagan", "Version {{selectedVersion}} of {{totalVersions}}": "Leagan {{selectedVersion}} de {{totalVersions}}", "View Replies": "Féach ar Fhreagraí", - "View Result from **{{NAME}}**": "", + "View Result from **{{NAME}}**": "Féach ar Thoradh ó **{{NAME}}**", "Visibility": "Infheictheacht", "Voice": "Guth", "Voice Input": "Ionchur Gutha", @@ -1218,7 +1218,7 @@ "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Rabhadh: Trí fhorghníomhú Jupyter is féidir cód a fhorghníomhú go treallach, rud a chruthaíonn mór-rioscaí slándála - bí fíorchúramach.", "Web": "Gréasán", "Web API": "API Gréasáin", - "Web Loader Engine": "", + "Web Loader Engine": "Inneall Luchtaithe Gréasáin", "Web Search": "Cuardach Gréasáin", "Web Search Engine": "Inneall Cuardaigh Gréasáin", "Web Search in Chat": "Cuardach Gréasáin i gComhrá", @@ -1226,7 +1226,7 @@ "Webhook URL": "URL Webhook", "WebUI Settings": "Socruithe WebUI", "WebUI URL": "URL WebUI", - "WebUI will make requests to \"{{url}}\"": "", + "WebUI will make requests to \"{{url}}\"": "Déanfaidh WebUI iarratais ar \"{{url}}\"", "WebUI will make requests to \"{{url}}/api/chat\"": "Déanfaidh WebUI iarratais ar \"{{url}}/api/chat\"", "WebUI will make requests to \"{{url}}/chat/completions\"": "Déanfaidh WebUI iarratais ar \"{{url}}/chat/completions\"", "What are you trying to achieve?": "Cad atá tú ag iarraidh a bhaint amach?", @@ -1238,7 +1238,7 @@ "Why?": "Cén fáth?", "Widescreen Mode": "Mód Leathanscáileán", "Won": "Bhuaigh", - "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.": "", + "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.": "Oibríonn sé le barr-k. Beidh téacs níos éagsúla mar thoradh ar luach níos airde (m.sh., 0.95), agus ginfidh luach níos ísle (m.sh., 0.5) téacs níos dírithe agus níos coimeádaí.", "Workspace": "Spás oibre", "Workspace Permissions": "Ceadanna Spás Oibre", "Write": "Scríobh", @@ -1248,7 +1248,7 @@ "Write your model template content here": "Scríobh do mhúnla ábhar teimpléad anseo", "Yesterday": "Inné", "You": "Tú", - "You are currently using a trial license. Please contact support to upgrade your license.": "", + "You are currently using a trial license. Please contact support to upgrade your license.": "Tá ceadúnas trialach á úsáid agat faoi láthair. Déan teagmháil leis an bhfoireann tacaíochta chun do cheadúnas a uasghrádú.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Ní féidir leat comhrá a dhéanamh ach le comhad {{maxCount}} ar a mhéad ag an am.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Is féidir leat do chuid idirghníomhaíochtaí le LLManna a phearsantú ach cuimhní cinn a chur leis tríd an gcnaipe 'Bainistigh' thíos, rud a fhágann go mbeidh siad níos cabhrach agus níos oiriúnaí duit.", "You cannot upload an empty file.": "Ní féidir leat comhad folamh a uaslódáil.", From 0d388b4e546df7e6d3f521178bff9ffebeefdfb2 Mon Sep 17 00:00:00 2001 From: Tiancong Li Date: Tue, 15 Apr 2025 03:33:30 +0800 Subject: [PATCH 012/238] i18n: update zh-TW --- src/lib/i18n/locales/zh-TW/translation.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 4eb153550..1268ac800 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -57,7 +57,7 @@ "All": "全部", "All Documents": "所有文件", "All models deleted successfully": "成功刪除所有模型", - "Allow Call": "", + "Allow Call": "允許通話", "Allow Chat Controls": "允許控制對話", "Allow Chat Delete": "允許刪除對話", "Allow Chat Deletion": "允許刪除對話紀錄", @@ -65,9 +65,9 @@ "Allow File Upload": "允許上傳檔案", "Allow Multiple Models in Chat": "允許在聊天中使用多個模型", "Allow non-local voices": "允許非本機語音", - "Allow Speech to Text": "", + "Allow Speech to Text": "允許語音轉文字", "Allow Temporary Chat": "允許暫時對話", - "Allow Text to Speech": "", + "Allow Text to Speech": "允許文字轉語音", "Allow User Location": "允許使用者位置", "Allow Voice Interruption in Call": "允許在通話中打斷語音", "Allowed Endpoints": "允許的端點", @@ -245,7 +245,7 @@ "Copied shared chat URL to clipboard!": "已複製共用對話 URL 到剪貼簿!", "Copied to clipboard": "已複製到剪貼簿", "Copy": "複製", - "Copy Formatted Text": "", + "Copy Formatted Text": "複製格式化文字", "Copy last code block": "複製最後一個程式碼區塊", "Copy last response": "複製最後一個回應", "Copy Link": "複製連結", From 575c12f80c469bf0e888af3dc05e496aa68e529f Mon Sep 17 00:00:00 2001 From: Athanasios Oikonomou Date: Tue, 15 Apr 2025 01:35:39 +0300 Subject: [PATCH 013/238] feat: add QDRANT_ON_DISK configuration option for Qdrant integration This commit will allow configuring the on_disk client parameter, to reduce the memory usage. https://qdrant.tech/documentation/concepts/storage/?q=mmap#configuring-memmap-storage Default is false, keeping vectors in memory. --- backend/open_webui/config.py | 1 + backend/open_webui/retrieval/vector/dbs/qdrant.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 3b40977f2..55d3e8260 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1693,6 +1693,7 @@ MILVUS_TOKEN = os.environ.get("MILVUS_TOKEN", None) # Qdrant QDRANT_URI = os.environ.get("QDRANT_URI", None) QDRANT_API_KEY = os.environ.get("QDRANT_API_KEY", None) +QDRANT_ON_DISK = os.environ.get("QDRANT_ON_DISK", "false").lower() == "true" # OpenSearch OPENSEARCH_URI = os.environ.get("OPENSEARCH_URI", "https://localhost:9200") diff --git a/backend/open_webui/retrieval/vector/dbs/qdrant.py b/backend/open_webui/retrieval/vector/dbs/qdrant.py index be0df6c6a..895098e29 100644 --- a/backend/open_webui/retrieval/vector/dbs/qdrant.py +++ b/backend/open_webui/retrieval/vector/dbs/qdrant.py @@ -6,7 +6,7 @@ from qdrant_client.http.models import PointStruct from qdrant_client.models import models from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult -from open_webui.config import QDRANT_URI, QDRANT_API_KEY +from open_webui.config import QDRANT_URI, QDRANT_API_KEY, QDRANT_ON_DISK from open_webui.env import SRC_LOG_LEVELS NO_LIMIT = 999999999 @@ -20,6 +20,7 @@ class QdrantClient: self.collection_prefix = "open-webui" self.QDRANT_URI = QDRANT_URI self.QDRANT_API_KEY = QDRANT_API_KEY + self.QDRANT_ON_DISK = QDRANT_ON_DISK self.client = ( Qclient(url=self.QDRANT_URI, api_key=self.QDRANT_API_KEY) if self.QDRANT_URI @@ -50,7 +51,7 @@ class QdrantClient: self.client.create_collection( collection_name=collection_name_with_prefix, vectors_config=models.VectorParams( - size=dimension, distance=models.Distance.COSINE + size=dimension, distance=models.Distance.COSINE, on_disk=self.QDRANT_ON_DISK ), ) From 12c7ecf0f4bd4e6ed4c1840962f6a1fdf7f80b5e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 14 Apr 2025 22:34:38 -0700 Subject: [PATCH 014/238] refac: styling --- src/lib/components/chat/ModelSelector/Selector.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/ModelSelector/Selector.svelte b/src/lib/components/chat/ModelSelector/Selector.svelte index dcbc7ca18..860fe9a40 100644 --- a/src/lib/components/chat/ModelSelector/Selector.svelte +++ b/src/lib/components/chat/ModelSelector/Selector.svelte @@ -778,7 +778,7 @@
- {:else if filteredItems.length === 0} + {:else}
{/if} From 36b2052fb08be64d5fe8d01e60524a14910a8563 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 15 Apr 2025 09:55:35 +0200 Subject: [PATCH 015/238] Update __init__.py --- backend/open_webui/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/__init__.py b/backend/open_webui/__init__.py index ff386957c..967a49de8 100644 --- a/backend/open_webui/__init__.py +++ b/backend/open_webui/__init__.py @@ -76,7 +76,7 @@ def serve( from open_webui.env import UVICORN_WORKERS # Import the workers setting uvicorn.run( - open_webui.main.app, + "open_webui.main:app", host=host, port=port, forwarded_allow_ips="*", From 4f14b17c34f5b5e6ed18878eff349c71fa053600 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 15 Apr 2025 13:50:52 +0200 Subject: [PATCH 016/238] Update users.py --- backend/open_webui/routers/users.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index a9ac34e2f..295c9eeb1 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -288,6 +288,19 @@ async def update_user_by_id( form_data: UserUpdateForm, session_user=Depends(get_admin_user), ): + # Prevent modification of the primary admin user by other admins + try: + first_user = Users.get_first_user() + if first_user and user_id == first_user.id and session_user.id != user_id: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=ERROR_MESSAGES.ACTION_PROHIBITED, + ) + except Exception as e: + log.error(f"Error checking primary admin status: {e}") + raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Could not verify primary admin status.") + + user = Users.get_user_by_id(user_id) if user: @@ -328,6 +341,7 @@ async def update_user_by_id( ) + ############################ # DeleteUserById ############################ @@ -335,6 +349,18 @@ async def update_user_by_id( @router.delete("/{user_id}", response_model=bool) async def delete_user_by_id(user_id: str, user=Depends(get_admin_user)): + # Prevent deletion of the primary admin user + try: + first_user = Users.get_first_user() + if first_user and user_id == first_user.id: + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=ERROR_MESSAGES.ACTION_PROHIBITED, + ) + except Exception as e: + log.error(f"Error checking primary admin status: {e}") + raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Could not verify primary admin status.") + if user.id != user_id: result = Auths.delete_auth_by_id(user_id) @@ -346,6 +372,7 @@ async def delete_user_by_id(user_id: str, user=Depends(get_admin_user)): detail=ERROR_MESSAGES.DELETE_USER_ERROR, ) + # Prevent self-deletion raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.ACTION_PROHIBITED, From b1ef53873fa3adccd0a5a1b68e5b638316e40248 Mon Sep 17 00:00:00 2001 From: Juan Calderon-Perez <835733+gaby@users.noreply.github.com> Date: Tue, 15 Apr 2025 08:53:05 -0400 Subject: [PATCH 017/238] Check if content is present before removing --- backend/open_webui/routers/files.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index 8a2888d86..5907b69f4 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -173,7 +173,8 @@ async def list_files(user=Depends(get_verified_user), content: bool = Query(True if not content: for file in files: - del file.data["content"] + if "content" in file.data: + del file.data["content"] return files @@ -214,7 +215,8 @@ async def search_files( if not content: for file in matching_files: - del file.data["content"] + if "content" in file.data: + del file.data["content"] return matching_files From b4d0d840d1ae14b168fb085993f68d7def07f55f Mon Sep 17 00:00:00 2001 From: Juan Calderon-Perez <835733+gaby@users.noreply.github.com> Date: Tue, 15 Apr 2025 08:56:51 -0400 Subject: [PATCH 018/238] Fix formatting of qdrant.py --- backend/open_webui/retrieval/vector/dbs/qdrant.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/vector/dbs/qdrant.py b/backend/open_webui/retrieval/vector/dbs/qdrant.py index 895098e29..13d0b5328 100644 --- a/backend/open_webui/retrieval/vector/dbs/qdrant.py +++ b/backend/open_webui/retrieval/vector/dbs/qdrant.py @@ -51,7 +51,9 @@ class QdrantClient: self.client.create_collection( collection_name=collection_name_with_prefix, vectors_config=models.VectorParams( - size=dimension, distance=models.Distance.COSINE, on_disk=self.QDRANT_ON_DISK + size=dimension, + distance=models.Distance.COSINE, + on_disk=self.QDRANT_ON_DISK, ), ) From 8a50d50038728964efdff0614ff4e2126a17a93f Mon Sep 17 00:00:00 2001 From: Kylapaallikko Date: Tue, 15 Apr 2025 19:44:20 +0300 Subject: [PATCH 019/238] Update translation.json --- src/lib/i18n/locales/fi-FI/translation.json | 84 ++++++++++----------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index e1022e938..76e6af4de 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -57,17 +57,17 @@ "All": "Kaikki", "All Documents": "Kaikki asiakirjat", "All models deleted successfully": "Kaikki mallit poistettu onnistuneesti", - "Allow Call": "", + "Allow Call": "Salli puhelut", "Allow Chat Controls": "Salli keskustelujen hallinta", "Allow Chat Delete": "Salli keskustelujen poisto", "Allow Chat Deletion": "Salli keskustelujen poisto", "Allow Chat Edit": "Salli keskustelujen muokkaus", "Allow File Upload": "Salli tiedostojen lataus", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "Salli useampi malli keskustelussa", "Allow non-local voices": "Salli ei-paikalliset äänet", - "Allow Speech to Text": "", + "Allow Speech to Text": "Salli puhe tekstiksi", "Allow Temporary Chat": "Salli väliaikaiset keskustelut", - "Allow Text to Speech": "", + "Allow Text to Speech": "Salli teksti puheeksi", "Allow User Location": "Salli käyttäjän sijainti", "Allow Voice Interruption in Call": "Salli äänen keskeytys puhelussa", "Allowed Endpoints": "Hyväksytyt päätepisteet", @@ -83,7 +83,7 @@ "and": "ja", "and {{COUNT}} more": "ja {{COUNT}} muuta", "and create a new shared link.": "ja luo uusi jaettu linkki.", - "Android": "", + "Android": "Android", "API Base URL": "API:n verkko-osoite", "API Key": "API-avain", "API Key created.": "API-avain luotu.", @@ -116,7 +116,7 @@ "Auth": "Todennus", "Authenticate": "Todentaa", "Authentication": "Todennus", - "Auto": "", + "Auto": "Automaattinen", "Auto-Copy Response to Clipboard": "Kopioi vastaus automaattisesti leikepöydälle", "Auto-playback response": "Soita vastaus automaattisesti", "Autocomplete Generation": "Automaattisen täydennyksen luonti", @@ -157,7 +157,7 @@ "Change Password": "Vaihda salasana", "Channel Name": "Kanavan nimi", "Channels": "Kanavat", - "Character": "Hahmo", + "Character": "Kirjain", "Character limit for autocomplete generation input": "Automaattisen täydennyksen syötteen merkkiraja", "Chart new frontiers": "Kartoita uusia rajapintoja", "Chat": "Keskustelu", @@ -224,10 +224,10 @@ "Confirm your new password": "Vahvista uusi salasanasi", "Connect to your own OpenAI compatible API endpoints.": "Yhdistä omat OpenAI yhteensopivat API päätepisteet.", "Connect to your own OpenAPI compatible external tool servers.": "Yhdistä omat ulkopuoliset OpenAPI yhteensopivat työkalu palvelimet.", - "Connection failed": "", - "Connection successful": "", + "Connection failed": "Yhteys epäonnistui", + "Connection successful": "Yhteys onnistui", "Connections": "Yhteydet", - "Connections saved successfully": "", + "Connections saved successfully": "Yhteyksien tallentaminen onnistui", "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", "Contact Admin for WebUI Access": "Ota yhteyttä ylläpitäjään WebUI-käyttöä varten", "Content": "Sisältö", @@ -245,7 +245,7 @@ "Copied shared chat URL to clipboard!": "Jaettu keskustelulinkki kopioitu leikepöydälle!", "Copied to clipboard": "Kopioitu leikepöydälle", "Copy": "Kopioi", - "Copy Formatted Text": "", + "Copy Formatted Text": "Kopioi muotoiltu teksti", "Copy last code block": "Kopioi viimeisin koodilohko", "Copy last response": "Kopioi viimeisin vastaus", "Copy Link": "Kopioi linkki", @@ -308,7 +308,7 @@ "Deleted User": "Käyttäjä poistettu", "Describe your knowledge base and objectives": "Kuvaa tietokantasi ja tavoitteesi", "Description": "Kuvaus", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "Tunnista artefaktit automaattisesti", "Didn't fully follow instructions": "Ei noudattanut ohjeita täysin", "Direct": "Suora", "Direct Connections": "Suorat yhteydet", @@ -364,7 +364,7 @@ "e.g. my_filter": "esim. oma_suodatin", "e.g. my_tools": "esim. omat_työkalut", "e.g. Tools for performing various operations": "esim. työkaluja erilaisten toimenpiteiden suorittamiseen", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "esim. en-US,ja-JP (Tyhjäksi jättämällä, automaattinen tunnistus)", "Edit": "Muokkaa", "Edit Arena Model": "Muokkaa Arena-mallia", "Edit Channel": "Muokkaa kanavaa", @@ -407,15 +407,15 @@ "Enter CFG Scale (e.g. 7.0)": "Kirjoita CFG-mitta (esim. 7.0)", "Enter Chunk Overlap": "Syötä osien päällekkäisyys", "Enter Chunk Size": "Syötä osien koko", - "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", + "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Syötä pilkulla erottaen \"token:bias_value\" parit (esim. 5432:100, 413:-100)", "Enter description": "Kirjoita kuvaus", "Enter Docling Server URL": "Kirjoita Docling palvelimen verkko-osoite", "Enter Document Intelligence Endpoint": "Kirjoita asiakirja tiedustelun päätepiste", "Enter Document Intelligence Key": "Kirjoiuta asiakirja tiedustelun avain", "Enter domains separated by commas (e.g., example.com,site.org)": "Verkko-osoitteet erotetaan pilkulla (esim. esimerkki.com,sivu.org)", "Enter Exa API Key": "Kirjoita Exa API -avain", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", + "Enter Firecrawl API Base URL": "Kirjoita Firecrawl API -verkko-osoite", + "Enter Firecrawl API Key": "Kirjoita Firecrawl API-avain", "Enter Github Raw URL": "Kirjoita Github Raw -verkko-osoite", "Enter Google PSE API Key": "Kirjoita Google PSE API -avain", "Enter Google PSE Engine Id": "Kirjoita Google PSE -moottorin tunnus", @@ -433,8 +433,8 @@ "Enter Mojeek Search API Key": "Kirjoita Mojeek Search API -avain", "Enter Number of Steps (e.g. 50)": "Kirjoita askelten määrä (esim. 50)", "Enter Perplexity API Key": "Aseta Perplexity API-avain", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", + "Enter Playwright Timeout": "Aseta Playwright aikakatkaisu", + "Enter Playwright WebSocket URL": "Aseta Playwright WebSocket-aikakatkaisu", "Enter proxy URL (e.g. https://user:password@host:port)": "Kirjoita välityspalvelimen verkko-osoite (esim. https://käyttäjä:salasana@host:portti)", "Enter reasoning effort": "", "Enter Sampler (e.g. Euler a)": "Kirjoita näytteistäjä (esim. Euler a)", @@ -516,7 +516,7 @@ "Failed to create API Key.": "API-avaimen luonti epäonnistui.", "Failed to fetch models": "Mallien hakeminen epäonnistui", "Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui", - "Failed to save connections": "", + "Failed to save connections": "Yhteyksien tallentaminen epäonnistui", "Failed to save models configuration": "Mallien määrityksen tallentaminen epäonnistui", "Failed to update settings": "Asetusten päivittäminen epäonnistui", "Failed to upload file.": "Tiedoston lataaminen epäonnistui.", @@ -539,8 +539,8 @@ "Filter is now globally enabled": "Suodatin on nyt otettu käyttöön globaalisti", "Filters": "Suodattimet", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Sormenjäljen väärentäminen havaittu: Alkukirjaimia ei voi käyttää avatarina. Käytetään oletusprofiilikuvaa.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "Firecrawl API -verkko-osoite", + "Firecrawl API Key": "Firecrawl API-avain", "Fluidly stream large external response chunks": "Virtaa suuria ulkoisia vastausosia joustavasti", "Focus chat input": "Fokusoi syöttökenttään", "Folder deleted successfully": "Kansio poistettu onnistuneesti", @@ -605,8 +605,8 @@ "Hybrid Search": "Hybridihaku", "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Vahvistan, että olen lukenut ja ymmärrän toimintani seuraukset. Olen tietoinen mielivaltaisen koodin suorittamiseen liittyvistä riskeistä ja olen varmistanut lähteen luotettavuuden.", "ID": "Tunnus", - "iframe Sandbox Allow Forms": "", - "iframe Sandbox Allow Same Origin": "", + "iframe Sandbox Allow Forms": "Salli lomakkeet iframe hiekkalaatikossa", + "iframe Sandbox Allow Same Origin": "Salli iframe hiekkalaatikko samasta alkuperästä", "Ignite curiosity": "Sytytä uteliaisuus", "Image": "Kuva", "Image Compression": "Kuvan pakkaus", @@ -667,14 +667,14 @@ "Label": "Tunniste", "Landing Page Mode": "Etusivun tila", "Language": "Kieli", - "Language Locales": "", + "Language Locales": "Kielialueet", "Last Active": "Viimeksi aktiivinen", "Last Modified": "Viimeksi muokattu", "Last reply": "Viimeksi vastattu", "LDAP": "LDAP", "LDAP server updated": "LDAP-palvelin päivitetty", "Leaderboard": "Tulosluettelo", - "Learn more about OpenAPI tool servers.": "", + "Learn more about OpenAPI tool servers.": "Lue lisää OpenAPI työkalu palvelimista.", "Leave empty for unlimited": "Rajaton tyhjäksi jättämällä", "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Jätä tyhjäksi sisällyttääksesi \"{{url}}/api/tags\" päätepisteen mallit", "Leave empty to include all models from \"{{url}}/models\" endpoint": "Jätä tyhjäksi sisällyttääksesi \"{{url}}/models\" päätepisteen mallit", @@ -812,7 +812,7 @@ "Open file": "Avaa tiedosto", "Open in full screen": "Avaa koko näytön tilaan", "Open new chat": "Avaa uusi keskustelu", - "Open WebUI can use tools provided by any OpenAPI server.": "", + "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI voi käyttää minkä tahansa OpenAPI-palvelimen tarjoamia työkaluja.", "Open WebUI uses faster-whisper internally.": "Open WebUI käyttää faster-whisperia sisäisesti.", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI käyttää SpeechT5:tä ja CMU Arctic -kaiuttimen upotuksia.", "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI -versio (v{{OPEN_WEBUI_VERSION}}) on alempi kuin vaadittu versio (v{{REQUIRED_VERSION}})", @@ -851,13 +851,13 @@ "Pipelines Valves": "Putkistojen venttiilit", "Plain text (.txt)": "Pelkkä teksti (.txt)", "Playground": "Leikkipaikka", - "Playwright Timeout (ms)": "", - "Playwright WebSocket URL": "", + "Playwright Timeout (ms)": "Playwright aikakatkaisu (ms)", + "Playwright WebSocket URL": "Playwright WebSocket verkko-osoite", "Please carefully review the following warnings:": "Tarkista huolellisesti seuraavat varoitukset:", "Please do not close the settings page while loading the model.": "Älä sulje asetussivua mallin latautuessa.", "Please enter a prompt": "Kirjoita kehote", - "Please enter a valid path": "", - "Please enter a valid URL": "", + "Please enter a valid path": "Kirjoita kelvollinen polku", + "Please enter a valid URL": "Kirjoita kelvollinen verkko-osoite", "Please fill in all fields.": "Täytä kaikki kentät.", "Please select a model first.": "Valitse ensin malli.", "Please select a model.": "Valitse malli.", @@ -885,7 +885,7 @@ "Pull \"{{searchValue}}\" from Ollama.com": "Lataa \"{{searchValue}}\" Ollama.comista", "Pull a model from Ollama.com": "Lataa malli Ollama.comista", "Query Generation Prompt": "Kyselytulosten luontikehote", - "RAG Template": "RAG-malline", + "RAG Template": "RAG-kehote", "Rating": "Arviointi", "Re-rank models by topic similarity": "Uudelleenjärjestä mallit aiheyhteyden mukaan", "Read": "Lue", @@ -898,11 +898,11 @@ "References from": "Viitteet lähteistä", "Refused when it shouldn't have": "Kieltäytyi, vaikka ei olisi pitänyt", "Regenerate": "Uudelleentuota", - "Reindex": "", - "Reindex Knowledge Base Vectors": "", + "Reindex": "Indeksoi uudelleen", + "Reindex Knowledge Base Vectors": "Indeksoi tietämyksen vektorit uudelleen", "Release Notes": "Julkaisutiedot", "Relevance": "Relevanssi", - "Relevance Threshold": "", + "Relevance Threshold": "Relevanssikynnys", "Remove": "Poista", "Remove Model": "Poista malli", "Rename": "Nimeä uudelleen", @@ -1085,7 +1085,7 @@ "Theme": "Teema", "Thinking...": "Ajattelee...", "This action cannot be undone. Do you wish to continue?": "Tätä toimintoa ei voi peruuttaa. Haluatko jatkaa?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Tämä kanava on luotiin {{createdAt}}. Tämä on {{channelName}} kanavan alku.", "This chat won’t appear in history and your messages will not be saved.": "Tämä keskustelu ei näy historiassa, eikä viestejäsi tallenneta.", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tämä varmistaa, että arvokkaat keskustelusi tallennetaan turvallisesti backend-tietokantaasi. Kiitos!", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Tämä on kokeellinen ominaisuus, se ei välttämättä toimi odotetulla tavalla ja se voi muuttua milloin tahansa.", @@ -1144,7 +1144,7 @@ "Tools have a function calling system that allows arbitrary code execution.": "Työkalut sallivat mielivaltaisen koodin suorittamisen toimintokutsuilla.", "Tools Public Sharing": "Työkalujen julkinen jakaminen", "Top K": "Top K", - "Top K Reranker": "", + "Top K Reranker": "Top K uudelleen sijoittaja", "Top P": "Top P", "Transformers": "Muunnokset", "Trouble accessing Ollama?": "Ongelmia Ollama-yhteydessä?", @@ -1170,7 +1170,7 @@ "Updated": "Päivitetty", "Updated at": "Päivitetty", "Updated At": "Päivitetty", - "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "", + "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Päivitä lisenssi saadaksesi parempia ominaisuuksia, mukaan lukien mukautetun teeman ja brändäyksen sekä yksilöllistä tukea.", "Upload": "Lataa", "Upload a GGUF model": "Lataa GGUF-malli", "Upload directory": "Latauksen hakemisto", @@ -1184,8 +1184,8 @@ "Use Gravatar": "Käytä Gravataria", "Use groups to group your users and assign permissions.": "Käytä ryhmiä jäsentääksesi käyttäjiä ja antaaksesi käyttöoikeuksia.", "Use Initials": "Käytä alkukirjaimia", - "Use no proxy to fetch page contents.": "", - "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "", + "Use no proxy to fetch page contents.": "Älä käytä välityspalvelinta sivun tietoja haettaessa.", + "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Käytä http_proxy- ja https_proxy-ympäristömuuttujien määrittämää välityspalvelinta sivun sisällön hakemiseen.", "use_mlock (Ollama)": "use_mlock (Ollama)", "use_mmap (Ollama)": "use_mmap (Ollama)", "user": "käyttäjä", @@ -1203,7 +1203,7 @@ "variable": "muuttuja", "variable to have them replaced with clipboard content.": "muuttuja korvataan leikepöydän sisällöllä.", "Verify Connection": "Tarkista yhteys", - "Verify SSL Certificate": "", + "Verify SSL Certificate": "Tarkista SSL-varmenne", "Version": "Versio", "Version {{selectedVersion}} of {{totalVersions}}": "Versio {{selectedVersion}} / {{totalVersions}}", "View Replies": "Näytä vastaukset", @@ -1218,7 +1218,7 @@ "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Varoitus: Jupyter käyttö voi mahdollistaa mielivaltaiseen koodin suorittamiseen, mikä voi aiheuttaa tietoturvariskejä - käytä äärimmäisen varoen.", "Web": "Web", "Web API": "Web-API", - "Web Loader Engine": "", + "Web Loader Engine": "Verkko lataaja moottori", "Web Search": "Verkkohaku", "Web Search Engine": "Hakukoneet", "Web Search in Chat": "Verkkohaku keskustelussa", @@ -1248,7 +1248,7 @@ "Write your model template content here": "Kirjoita mallisi mallinnesisältö tähän", "Yesterday": "Eilen", "You": "Sinä", - "You are currently using a trial license. Please contact support to upgrade your license.": "", + "You are currently using a trial license. Please contact support to upgrade your license.": "Käytät tällä hetkellä kokeiluversiota. Ota yhteyttä tukeen lisenssin päivittämiseksi.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Voit keskustella enintään {{maxCount}} tiedoston kanssa kerralla.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Voit personoida vuorovaikutustasi LLM-ohjelmien kanssa lisäämällä muistoja 'Hallitse'-painikkeen kautta, jolloin ne ovat hyödyllisempiä ja räätälöityjä sinua varten.", "You cannot upload an empty file.": "Et voi ladata tyhjää tiedostoa.", From 84f5a529236e662f9ddb6135d24853b06813cf21 Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Wed, 16 Apr 2025 02:38:20 +0900 Subject: [PATCH 020/238] chore: clean up unnecessary code --- src/lib/utils/onedrive-file-picker.ts | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/lib/utils/onedrive-file-picker.ts b/src/lib/utils/onedrive-file-picker.ts index 2771119ae..47b4e9627 100644 --- a/src/lib/utils/onedrive-file-picker.ts +++ b/src/lib/utils/onedrive-file-picker.ts @@ -31,22 +31,15 @@ class OneDriveConfig { } private async getCredentials(): Promise { - let response; + const headers: HeadersInit = { 'Content-Type': 'application/json' }; - if(window.location.hostname === 'localhost') { - response = await fetch('http://localhost:8080/api/config', { - headers, - credentials: 'include' - }); - } else { - response = await fetch('/api/config', { - headers, - credentials: 'include' - }); - } + const response = await fetch('/api/config', { + headers, + credentials: 'include' + }); if (!response.ok) { throw new Error('Failed to fetch OneDrive credentials'); From bb1dea72d4aff8a5fcb719d39d6deec3c91c5f19 Mon Sep 17 00:00:00 2001 From: Rimvydas Date: Wed, 16 Apr 2025 09:59:20 +0300 Subject: [PATCH 021/238] Update translation.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed typo from "Tęstti" to "Tęsti" (continue). --- src/lib/i18n/locales/lt-LT/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 32abbcc14..63d31e5c4 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -234,7 +234,7 @@ "Content Extraction Engine": "", "Context Length": "Konteksto ilgis", "Continue Response": "Tęsti atsakymą", - "Continue with {{provider}}": "Tęstti su {{tiekėju}}", + "Continue with {{provider}}": "Tęsti su {{tiekėju}}", "Continue with Email": "", "Continue with 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.": "", From 59918b0f542100eb4e223c51a0a6de2f7f406b84 Mon Sep 17 00:00:00 2001 From: Aleix Dorca Date: Wed, 16 Apr 2025 11:20:03 +0200 Subject: [PATCH 022/238] Update catalan translation.json --- src/lib/i18n/locales/ca-ES/translation.json | 64 ++++++++++----------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index f726721d2..f2571dfa5 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -57,17 +57,17 @@ "All": "Tots", "All Documents": "Tots els documents", "All models deleted successfully": "Tots els models s'han eliminat correctament", - "Allow Call": "", + "Allow Call": "Permetre la trucada", "Allow Chat Controls": "Permetre els controls de xat", "Allow Chat Delete": "Permetre eliminar el xat", "Allow Chat Deletion": "Permetre la supressió del xat", "Allow Chat Edit": "Permetre editar el xat", "Allow File Upload": "Permetre la pujada d'arxius", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "Permetre múltiple models al xat", "Allow non-local voices": "Permetre veus no locals", - "Allow Speech to Text": "", + "Allow Speech to Text": "Permetre Parla a Text", "Allow Temporary Chat": "Permetre el xat temporal", - "Allow Text to Speech": "", + "Allow Text to Speech": "Permetre Text a Parla", "Allow User Location": "Permetre la ubicació de l'usuari", "Allow Voice Interruption in Call": "Permetre la interrupció de la veu en una trucada", "Allowed Endpoints": "Punts d'accés permesos", @@ -83,7 +83,7 @@ "and": "i", "and {{COUNT}} more": "i {{COUNT}} més", "and create a new shared link.": "i crear un nou enllaç compartit.", - "Android": "", + "Android": "Android", "API Base URL": "URL Base de l'API", "API Key": "clau API", "API Key created.": "clau API creada.", @@ -245,7 +245,7 @@ "Copied shared chat URL to clipboard!": "S'ha copiat l'URL compartida al porta-retalls!", "Copied to clipboard": "Copiat al porta-retalls", "Copy": "Copiar", - "Copy Formatted Text": "", + "Copy Formatted Text": "Copiar el text formatat", "Copy last code block": "Copiar l'últim bloc de codi", "Copy last response": "Copiar l'última resposta", "Copy Link": "Copiar l'enllaç", @@ -308,7 +308,7 @@ "Deleted User": "Usuari eliminat", "Describe your knowledge base and objectives": "Descriu la teva base de coneixement i objectius", "Description": "Descripció", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "Detectar automàticament els artefactes", "Didn't fully follow instructions": "No s'han seguit les instruccions completament", "Direct": "Directe", "Direct Connections": "Connexions directes", @@ -364,7 +364,7 @@ "e.g. my_filter": "p. ex. els_meus_filtres", "e.g. my_tools": "p. ex. les_meves_eines", "e.g. Tools for performing various operations": "p. ex. Eines per dur a terme operacions", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "p. ex. en-US, ja-JP, ca-ES (deixa-ho en blanc per detecció automàtica)", "Edit": "Editar", "Edit Arena Model": "Editar model de l'Arena", "Edit Channel": "Editar el canal", @@ -414,8 +414,8 @@ "Enter Document Intelligence Key": "Introdueix la clau de Document Intelligence", "Enter domains separated by commas (e.g., example.com,site.org)": "Introdueix els dominis separats per comes (p. ex. example.com,site.org)", "Enter Exa API Key": "Introdueix la clau API de d'EXA", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", + "Enter Firecrawl API Base URL": "Introdueix la URL base de Firecrawl API", + "Enter Firecrawl API Key": "Introdueix la clau API de Firecrawl", "Enter Github Raw URL": "Introdueix l'URL en brut de Github", "Enter Google PSE API Key": "Introdueix la clau API de Google PSE", "Enter Google PSE Engine Id": "Introdueix l'identificador del motor PSE de Google", @@ -433,8 +433,8 @@ "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 Perplexity API Key": "Introdueix la clau API de Perplexity", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", + "Enter Playwright Timeout": "Introdueix el timeout de Playwright", + "Enter Playwright WebSocket URL": "Introdueix la URL de Playwright WebSocket", "Enter proxy URL (e.g. https://user:password@host:port)": "Entra l'URL (p. ex. https://user:password@host:port)", "Enter reasoning effort": "Introdueix l'esforç de raonament", "Enter Sampler (e.g. Euler a)": "Introdueix el mostrejador (p.ex. Euler a)", @@ -452,13 +452,13 @@ "Enter server host": "Introdueix el servidor", "Enter server label": "Introdueix l'etiqueta del servidor", "Enter server port": "Introdueix el port del servidor", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", + "Enter Sougou Search API sID": "Introdueix el sID de l'API de Sougou Search", + "Enter Sougou Search API SK": "Introdueix l'SK de l'API de Sougou Search", "Enter stop sequence": "Introdueix la seqüència de parada", "Enter system prompt": "Introdueix la indicació de sistema", "Enter system prompt here": "Entra la indicació de sistema aquí", "Enter Tavily API Key": "Introdueix la clau API de Tavily", - "Enter Tavily Extract Depth": "", + "Enter Tavily Extract Depth": "Introdueix la profunditat d'extracció de Tavily", "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Entra la URL pública de WebUI. Aquesta URL s'utilitzarà per generar els enllaços en les notificacions.", "Enter Tika Server URL": "Introdueix l'URL del servidor Tika", "Enter timeout in seconds": "Entra el temps màxim en segons", @@ -539,8 +539,8 @@ "Filter is now globally enabled": "El filtre ha estat activat globalment", "Filters": "Filtres", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "S'ha detectat la suplantació d'identitat de l'empremta digital: no es poden utilitzar les inicials com a avatar. S'estableix la imatge de perfil predeterminada.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "URL de l'API de base de Firecrawl", + "Firecrawl API Key": "Clau API de Firecrawl", "Fluidly stream large external response chunks": "Transmetre amb fluïdesa grans trossos de resposta externa", "Focus chat input": "Estableix el focus a l'entrada del xat", "Folder deleted successfully": "Carpeta eliminada correctament", @@ -605,8 +605,8 @@ "Hybrid Search": "Cerca híbrida", "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.": "Afirmo que he llegit i entenc les implicacions de la meva acció. Soc conscient dels riscos associats a l'execució de codi arbitrari i he verificat la fiabilitat de la font.", "ID": "ID", - "iframe Sandbox Allow Forms": "", - "iframe Sandbox Allow Same Origin": "", + "iframe Sandbox Allow Forms": "Permetre formularis sandbox iframe", + "iframe Sandbox Allow Same Origin": "Permetre same-origin sandbox iframe", "Ignite curiosity": "Despertar la curiositat", "Image": "Imatge", "Image Compression": "Compressió d'imatges", @@ -667,7 +667,7 @@ "Label": "Etiqueta", "Landing Page Mode": "Mode de la pàgina d'entrada", "Language": "Idioma", - "Language Locales": "", + "Language Locales": "Localització d'idiomes", "Last Active": "Activitat recent", "Last Modified": "Modificació", "Last reply": "Darrera resposta", @@ -851,8 +851,8 @@ "Pipelines Valves": "Vàlvules de les Pipelines", "Plain text (.txt)": "Text pla (.txt)", "Playground": "Zona de jocs", - "Playwright Timeout (ms)": "", - "Playwright WebSocket URL": "", + "Playwright Timeout (ms)": "Temps d'espera (ms) de Playwright", + "Playwright WebSocket URL": "URL del WebSocket de Playwright", "Please carefully review the following warnings:": "Si us plau, revisa els següents avisos amb cura:", "Please do not close the settings page while loading the model.": "No tanquis la pàgina de configuració mentre carregues el model.", "Please enter a prompt": "Si us plau, entra una indicació", @@ -898,11 +898,11 @@ "References from": "Referències de", "Refused when it shouldn't have": "Refusat quan no hauria d'haver estat", "Regenerate": "Regenerar", - "Reindex": "", - "Reindex Knowledge Base Vectors": "", + "Reindex": "Reindexar", + "Reindex Knowledge Base Vectors": "Reindexar els vector base del Coneixement", "Release Notes": "Notes de la versió", "Relevance": "Rellevància", - "Relevance Threshold": "", + "Relevance Threshold": "Límit de rellevància", "Remove": "Eliminar", "Remove Model": "Eliminar el model", "Rename": "Canviar el nom", @@ -1032,8 +1032,8 @@ "Sign up to {{WEBUI_NAME}}": "Registrar-se a {{WEBUI_NAME}}", "Signing in to {{WEBUI_NAME}}": "Iniciant sessió a {{WEBUI_NAME}}", "sk-1234": "sk-1234", - "Sougou Search API sID": "", - "Sougou Search API SK": "", + "Sougou Search API sID": "sID de l'API de Sougou Search", + "Sougou Search API SK": "SK de l'API de Sougou Search", "Source": "Font", "Speech Playback Speed": "Velocitat de la parla", "Speech recognition error: {{error}}": "Error de reconeixement de veu: {{error}}", @@ -1061,7 +1061,7 @@ "Tap to interrupt": "Prem per interrompre", "Tasks": "Tasques", "Tavily API Key": "Clau API de Tavily", - "Tavily Extract Depth": "", + "Tavily Extract Depth": "Profunditat d'extracció de Tavily", "Tell us more:": "Dona'ns més informació:", "Temperature": "Temperatura", "Template": "Plantilla", @@ -1184,8 +1184,8 @@ "Use Gravatar": "Utilitzar Gravatar", "Use groups to group your users and assign permissions.": "Utilitza grups per agrupar els usuaris i assignar permisos.", "Use Initials": "Utilitzar inicials", - "Use no proxy to fetch page contents.": "", - "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "", + "Use no proxy to fetch page contents.": "No utilitzis un proxy per obtenir contingut de la pàgina.", + "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Utilitza el proxy designat per les variables d'entorn http_proxy i https_proxy per obtenir el contingut de la pàgina.", "use_mlock (Ollama)": "use_mlock (Ollama)", "use_mmap (Ollama)": "use_mmap (Ollama)", "user": "usuari", @@ -1203,7 +1203,7 @@ "variable": "variable", "variable to have them replaced with clipboard content.": "variable per tenir-les reemplaçades amb el contingut del porta-retalls.", "Verify Connection": "Verificar la connexió", - "Verify SSL Certificate": "", + "Verify SSL Certificate": "Verificar el certificat SSL", "Version": "Versió", "Version {{selectedVersion}} of {{totalVersions}}": "Versió {{selectedVersion}} de {{totalVersions}}", "View Replies": "Veure les respostes", @@ -1218,7 +1218,7 @@ "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Avís: l'execució de Jupyter permet l'execució de codi arbitrari, la qual cosa comporta greus riscos de seguretat; procediu amb extrema precaució.", "Web": "Web", "Web API": "Web API", - "Web Loader Engine": "", + "Web Loader Engine": "Motor de càrrega Web", "Web Search": "Cerca la web", "Web Search Engine": "Motor de cerca de la web", "Web Search in Chat": "Cerca a internet al xat", From 6076476a740925ed5e9bb9fc6ac47534fcd50399 Mon Sep 17 00:00:00 2001 From: JaworIwanowRoosi <167782571+JaworIwanowRoosi@users.noreply.github.com> Date: Wed, 16 Apr 2025 14:47:15 +0200 Subject: [PATCH 023/238] fixed: typos in German translation --- src/lib/i18n/locales/de-DE/translation.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index b4a0e0776..33d074bda 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -346,7 +346,7 @@ "Don't have an account?": "Haben Sie noch kein Benutzerkonto?", "don't install random functions from sources you don't trust.": "installieren Sie keine Funktionen aus Quellen, denen Sie nicht vertrauen.", "don't install random tools from sources you don't trust.": "installieren Sie keine Werkzeuge aus Quellen, denen Sie nicht vertrauen.", - "Don't like the style": "schlechter Schreibstil", + "Don't like the style": "Schlechter Schreibstil", "Done": "Erledigt", "Download": "Exportieren", "Download as SVG": "Exportieren als SVG", @@ -781,7 +781,7 @@ "No valves to update": "Keine Valves zum Aktualisieren", "None": "Nichts", "Not factually correct": "Nicht sachlich korrekt", - "Not helpful": "Nich hilfreich", + "Not helpful": "Nicht hilfreich", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Hinweis: Wenn Sie eine Mindestpunktzahl festlegen, werden in der Suche nur Dokumente mit einer Punktzahl größer oder gleich der Mindestpunktzahl zurückgegeben.", "Notes": "Notizen", "Notification Sound": "Benachrichtigungston", From 6188c0c5b749525f3afac87dd71985c43e383c9a Mon Sep 17 00:00:00 2001 From: Juan Calderon-Perez Date: Thu, 17 Apr 2025 01:13:49 -0400 Subject: [PATCH 024/238] Add suport for Qdrant GRPC --- backend/open_webui/config.py | 2 ++ .../open_webui/retrieval/vector/dbs/qdrant.py | 36 +++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 55d3e8260..1bc880bbf 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1694,6 +1694,8 @@ MILVUS_TOKEN = os.environ.get("MILVUS_TOKEN", None) QDRANT_URI = os.environ.get("QDRANT_URI", None) QDRANT_API_KEY = os.environ.get("QDRANT_API_KEY", None) QDRANT_ON_DISK = os.environ.get("QDRANT_ON_DISK", "false").lower() == "true" +QDRANT_PREFER_GRPC = os.environ.get("QDRANT_PREFER_GRPC", "False").lower() == "true" +QDRANT_GRPC_PORT = int(os.environ.get("QDRANT_GRPC_PORT", "6334")) # OpenSearch OPENSEARCH_URI = os.environ.get("OPENSEARCH_URI", "https://localhost:9200") diff --git a/backend/open_webui/retrieval/vector/dbs/qdrant.py b/backend/open_webui/retrieval/vector/dbs/qdrant.py index 13d0b5328..a0d602610 100644 --- a/backend/open_webui/retrieval/vector/dbs/qdrant.py +++ b/backend/open_webui/retrieval/vector/dbs/qdrant.py @@ -1,12 +1,19 @@ from typing import Optional import logging +from urllib.parse import urlparse from qdrant_client import QdrantClient as Qclient from qdrant_client.http.models import PointStruct from qdrant_client.models import models from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult -from open_webui.config import QDRANT_URI, QDRANT_API_KEY, QDRANT_ON_DISK +from open_webui.config import ( + QDRANT_URI, + QDRANT_API_KEY, + QDRANT_ON_DISK, + QDRANT_GRPC_PORT, + QDRANT_PREFER_GRPC, +) from open_webui.env import SRC_LOG_LEVELS NO_LIMIT = 999999999 @@ -21,11 +28,28 @@ class QdrantClient: self.QDRANT_URI = QDRANT_URI self.QDRANT_API_KEY = QDRANT_API_KEY self.QDRANT_ON_DISK = QDRANT_ON_DISK - self.client = ( - Qclient(url=self.QDRANT_URI, api_key=self.QDRANT_API_KEY) - if self.QDRANT_URI - else None - ) + self.PREFER_GRPC = QDRANT_PREFER_GRPC + self.GRPC_PORT = QDRANT_GRPC_PORT + + if not self.QDRANT_URI: + self.client = None + return + + # Unified handling for either scheme + parsed = urlparse(self.QDRANT_URI) + host = parsed.hostname or self.QDRANT_URI + http_port = parsed.port or 6333 # default REST port + + if self.PREFER_GRPC: + self.client = Qclient( + host=host, + port=http_port, + grpc_port=self.GRPC_PORT, + prefer_grpc=self.PREFER_GRPC, + api_key=self.QDRANT_API_KEY, + ) + else: + self.client = Qclient(url=self.QDRANT_URI, api_key=self.QDRANT_API_KEY) def _result_to_get_result(self, points) -> GetResult: ids = [] From a6ccc48d9146a6fb3e54ef816c427d71f9d3ee6e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 17 Apr 2025 00:35:39 -0700 Subject: [PATCH 025/238] refac: textarea component --- src/lib/components/common/Textarea.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lib/components/common/Textarea.svelte b/src/lib/components/common/Textarea.svelte index 4a3d47675..d7e01c7eb 100644 --- a/src/lib/components/common/Textarea.svelte +++ b/src/lib/components/common/Textarea.svelte @@ -4,6 +4,7 @@ export let value = ''; export let placeholder = ''; export let rows = 1; + export let minSize = null; export let required = false; export let className = 'w-full rounded-lg px-3 py-2 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-hidden h-full'; @@ -29,7 +30,9 @@ const resize = () => { if (textareaElement) { textareaElement.style.height = ''; - textareaElement.style.height = `${textareaElement.scrollHeight}px`; + textareaElement.style.height = minSize + ? `${Math.max(textareaElement.scrollHeight, minSize)}px` + : `${textareaElement.scrollHeight}px`; } }; From c4edcdb12ad94f039b368f5fb2ac68c0ba90569c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20P=C4=99kala?= Date: Thu, 17 Apr 2025 10:56:23 +0200 Subject: [PATCH 026/238] fix: update Polish translations for clarity and consistency --- src/lib/i18n/locales/pl-PL/translation.json | 64 ++++++++++----------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index ab15e12c6..320a4cf10 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -43,7 +43,7 @@ "Add Reaction": "Dodaj reakcję", "Add Tag": "Dodaj tag", "Add Tags": "Dodaj tagi", - "Add text content": "Dodaj tekstową zawartość", + "Add text content": "Dodaj zawartość tekstową", "Add User": "Dodaj użytkownika", "Add User Group": "Dodaj grupę użytkowników", "Adjusting these settings will apply changes universally to all users.": "Dostosowanie tych ustawień spowoduje wprowadzenie zmian dla wszystkich użytkowników.", @@ -54,7 +54,7 @@ "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratorzy mają dostęp do wszystkich narzędzi przez cały czas; użytkownicy muszą mieć przydzielone narzędzia dla każdego modelu w przestrzeni roboczej.", "Advanced Parameters": "Zaawansowane ustawienia", "Advanced Params": "Zaawansowane ustawienia", - "All": "", + "All": "Wszystkie", "All Documents": "Wszystkie dokumenty", "All models deleted successfully": "Wszystkie modele zostały usunięte pomyślnie.", "Allow Call": "", @@ -74,8 +74,8 @@ "Already have an account?": "Czy masz już konto?", "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.": "", "Always": "Zawsze", - "Always Collapse Code Blocks": "", - "Always Expand Details": "", + "Always Collapse Code Blocks": "Zawsze zwijaj bloki kodu", + "Always Expand Details": "Zawsze rozwiń szczegóły", "Amazing": "Niesamowite", "an assistant": "asystent", "Analyzed": "Przeanalizowane", @@ -147,8 +147,8 @@ "By {{name}}": "Przez {{name}}", "Bypass Embedding and Retrieval": "", "Calendar": "Kalendarz", - "Call": "Wywołanie", - "Call feature is not supported when using Web STT engine": "Funkcja wywołania nie jest obsługiwana podczas korzystania z silnika Web STT", + "Call": "Rozmowa", + "Call feature is not supported when using Web STT engine": "Funkcja rozmowy nie jest obsługiwana podczas korzystania z silnika Web STT", "Camera": "Kamera", "Cancel": "Anuluj", "Capabilities": "Możliwości", @@ -193,14 +193,14 @@ "click here.": "kliknij tutaj.", "Click on the user role button to change a user's role.": "Kliknij przycisk roli użytkownika, aby zmienić jego uprawnienia.", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Nie można było skopiować do schowka. Sprawdź ustawienia przeglądarki, aby przyznać wymagany dostęp.", - "Clone": "Sklonuj", + "Clone": "Duplikuj", "Clone Chat": "Sklonuj czat", "Clone of {{TITLE}}": "Klon {{TITLE}}", "Close": "Zamknij", "Code execution": "Wykonanie kodu", "Code Execution": "Wykonanie kodu", "Code Execution Engine": "Silnik wykonawczy kodu", - "Code Execution Timeout": "Limit czasu wykonania kodu", + "Code Execution Timeout": "Limit czasu wykonywania kodu", "Code formatted successfully": "Kod został sformatowany pomyślnie.", "Code Interpreter": "Interpreter kodu", "Code Interpreter Engine": "Silnik interpretatora kodu", @@ -245,7 +245,7 @@ "Copied shared chat URL to clipboard!": "Skopiowano udostępniony URL czatu do schowka!", "Copied to clipboard": "Skopiowane do schowka", "Copy": "Skopiuj", - "Copy Formatted Text": "", + "Copy Formatted Text": "Skopiuj sformatowany tekst", "Copy last code block": "Skopiuj ostatni fragment kodu", "Copy last response": "Skopiuj ostatnią wypowiedź", "Copy Link": "Skopiuj link", @@ -283,7 +283,7 @@ "Default Models": "Domyślne modele", "Default permissions": "Domyślne uprawnienia", "Default permissions updated successfully": "Domyślne uprawnienia zaktualizowane pomyślnie", - "Default Prompt Suggestions": "Domyślne propozycje wpisów", + "Default Prompt Suggestions": "Domyślne propozycje promptów", "Default to 389 or 636 if TLS is enabled": "Domyślnie użyj 389 lub 636, jeśli TLS jest włączony", "Default to ALL": "Domyślne dla wszystkich", "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", @@ -316,12 +316,12 @@ "Direct Connections settings updated": "Ustawienia połączeń bezpośrednich zaktualizowane", "Direct Tool Servers": "", "Disabled": "Wyłączony", - "Discover a function": "Odkryj funkcję", - "Discover a model": "Odkryj model", - "Discover a prompt": "Odkryj prompty", - "Discover a tool": "Odkryj narzędzie", + "Discover a function": "Odkrywaj funkcję", + "Discover a model": "Odkrywaj model", + "Discover a prompt": "Odkrywaj prompty", + "Discover a tool": "Odkrywaj narzędzia", "Discover how to use Open WebUI and seek support from the community.": "Odkryj, jak korzystać z Open WebUI i szukaj wsparcia w społeczności.", - "Discover wonders": "Odkryj cuda", + "Discover wonders": "Odkrywaj cuda", "Discover, download, and explore custom functions": "Odkryj, pobierz i eksploruj niestandardowe funkcje", "Discover, download, and explore custom prompts": "Odkryj, pobierz i eksploruj niestandardowe prompty", "Discover, download, and explore custom tools": "Odkryj, pobierz i eksploruj niestandardowe narzędzia", @@ -425,7 +425,7 @@ "Enter Jupyter Token": "Wprowadź token Jupyter", "Enter Jupyter URL": "Podaj adres URL Jupytera", "Enter Kagi Search API Key": "Wprowadź klucz wyszukiwania Kagi", - "Enter Key Behavior": "", + "Enter Key Behavior": "Zachowanie klawisza Enter", "Enter language codes": "Wprowadź kody języków", "Enter Mistral API Key": "", "Enter Model ID": "Wprowadź ID modelu", @@ -455,7 +455,7 @@ "Enter Sougou Search API sID": "", "Enter Sougou Search API SK": "", "Enter stop sequence": "Wprowadź sekwencję stop", - "Enter system prompt": "Wprowadź polecenie systemowe", + "Enter system prompt": "Wprowadź prompt systemowy", "Enter system prompt here": "", "Enter Tavily API Key": "Wprowadź klucz API Tavily", "Enter Tavily Extract Depth": "", @@ -624,7 +624,7 @@ "Import Models": "Importowanie modeli", "Import Presets": "Importuj ustawienia", "Import Prompts": "Importuj prompty", - "Import Tools": "Import narzędzi", + "Import Tools": "Importuj narzędzia", "Include": "Włączyć", "Include `--api-auth` flag when running stable-diffusion-webui": "Użyj flagi `--api-auth` podczas uruchamiania stable-diffusion-webui", "Include `--api` flag when running stable-diffusion-webui": "Użyj flagi `--api` podczas uruchamiania stable-diffusion-webui.", @@ -792,14 +792,14 @@ "num_thread (Ollama)": "num_thread (Ollama)", "OAuth ID": "Identyfikator OAuth", "October": "Październik", - "Off": "Wyłączony", + "Off": "Wyłączone", "Okay, Let's Go!": "Okej, do dzieła!", "OLED Dark": "Ciemny OLED", "Ollama": "Ollama", "Ollama API": "Interfejs API Ollama", "Ollama API settings updated": "Ustawienia API Ollama zostały zaktualizowane", "Ollama Version": "Wersja Ollama", - "On": "Włączony", + "On": "Włączone", "OneDrive": "", "Only alphanumeric characters and hyphens are allowed": "Dozwolone są tylko znaki alfanumeryczne i myślniki", "Only alphanumeric characters and hyphens are allowed in the command string.": "W komendzie dozwolone są wyłącznie znaki alfanumeryczne i myślniki.", @@ -855,7 +855,7 @@ "Playwright WebSocket URL": "", "Please carefully review the following warnings:": "Proszę uważnie przejrzeć poniższe ostrzeżenia:", "Please do not close the settings page while loading the model.": "Proszę nie zamykać strony ustawień podczas ładowania modelu.", - "Please enter a prompt": "Proszę podać promp", + "Please enter a prompt": "Proszę podać prompt", "Please enter a valid path": "", "Please enter a valid URL": "", "Please fill in all fields.": "Proszę wypełnić wszystkie pola.", @@ -874,7 +874,7 @@ "Prompt": "Wprowadź prompt: ", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (np. podaj ciekawostkę o Imperium Rzymskim)", "Prompt Autocompletion": "", - "Prompt Content": "Treść podpowiedzi", + "Prompt Content": "Treść promptu", "Prompt created successfully": "Prompt został utworzony pomyślnie", "Prompt suggestions": "Sugestie promptów", "Prompt updated successfully": "Prompt został zaktualizowany pomyślnie.", @@ -894,7 +894,7 @@ "Record voice": "Nagraj swój głos", "Redirecting you to Open WebUI Community": "Przekierowujemy Cię do społeczności Open WebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", - "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Odnosić się do siebie jako \"Użytkownik\" (np. \"Użytkownik uczy się hiszpańskiego\")", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Odnoś się do mnie jako \"Użytkownik\" (np. \"Użytkownik uczy się hiszpańskiego\")", "References from": "Odniesienia do", "Refused when it shouldn't have": "Odmówił, gdy nie powinien", "Regenerate": "Wygeneruj ponownie", @@ -948,18 +948,18 @@ "Search Filters": "Filtry wyszukiwania", "search for tags": "wyszukiwanie tagów", "Search Functions": "Funkcje wyszukiwania", - "Search Knowledge": "Wyszukaj wiedzę", + "Search Knowledge": "Przeszukaj wiedzę", "Search Models": "Wyszukiwanie modeli", "Search options": "Opcje wyszukiwania", - "Search Prompts": "Prompty wyszukiwania", + "Search Prompts": "Szukaj promptów", "Search Result Count": "Liczba wyników wyszukiwania", "Search the internet": "Przeszukaj internet", - "Search Tools": "Narzędzia wyszukiwania", + "Search Tools": "Szukaj narzędzi", "SearchApi API Key": "Klucz API SearchApi", "SearchApi Engine": "Search API Engine", "Searched {{count}} sites": "Przeszukano {{count}} stron", "Searching \"{{searchQuery}}\"": "Wyszukiwanie \"{{searchQuery}}\"", - "Searching Knowledge for \"{{searchQuery}}\"": "Wyszukiwanie wiedzy dla \"{{searchQuery}}\"", + "Searching Knowledge for \"{{searchQuery}}\"": "Przeszukiwanie wiedzy dla \"{{searchQuery}}\"", "Searxng Query URL": "Adres URL zapytania Searxng", "See readme.md for instructions": "Sprawdź readme.md dla instrukcji", "See what's new": "Sprawdź nowości", @@ -998,7 +998,7 @@ "Set Image Size": "Ustaw rozmiar obrazu", "Set reranking model (e.g. {{model}})": "Skonfiguruj model ponownego rankingu (np. {{model}})", "Set Sampler": "Próbnik samplera", - "Set Scheduler": "Ustawiacz harmonogramu", + "Set Scheduler": "Ustaw harmonogram", "Set Steps": "Ustaw kroki", "Set Task Model": "Konfiguracja modelu zadań", "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "Ustaw liczbę warstw, które zostaną przeniesione na GPU. Zwiększenie tej wartości może znacząco poprawić wydajność dla modeli optymalizowanych pod kątem akceleracji GPU, ale także może zużywać więcej energii i zasobów GPU.", @@ -1038,7 +1038,7 @@ "Speech Playback Speed": "Prędkość odtwarzania mowy", "Speech recognition error: {{error}}": "Błąd rozpoznawania mowy: {{error}}", "Speech-to-Text Engine": "Silnik konwersji mowy na tekst", - "Stop": "Zatrzymaj się", + "Stop": "Zatrzymaj", "Stop Sequence": "Zatrzymaj sekwencję", "Stream Chat Response": "Strumieniowanie odpowiedzi z czatu", "STT Model": "Model STT", @@ -1108,7 +1108,7 @@ "Title": "Tytuł", "Title (e.g. Tell me a fun fact)": "Tytuł (na przykład {e.g.} Powiedz mi jakiś zabawny fakt)", "Title Auto-Generation": "Automatyczne tworzenie tytułu", - "Title cannot be an empty string.": "Tytuł nie może być pustą stringiem.", + "Title cannot be an empty string.": "Tytuł nie może być pustym stringiem.", "Title Generation": "Generowanie tytułów", "Title Generation Prompt": "Prompt do generowania tytułu", "TLS": "TLS", @@ -1202,8 +1202,8 @@ "Valves updated successfully": "Zawory zaktualizowane pomyślnie", "variable": "zmienna", "variable to have them replaced with clipboard content.": "Zmienna, która ma zostać zastąpiona zawartością schowka.", - "Verify Connection": "", - "Verify SSL Certificate": "", + "Verify Connection": "Sprawdź połączenie", + "Verify SSL Certificate": "Sprawdź certyfikat SSL", "Version": "Wersja", "Version {{selectedVersion}} of {{totalVersions}}": "Wersja {{selectedVersion}} z {{totalVersions}}", "View Replies": "Wyświetl odpowiedzi", From 9669cd3454fd2b259bff86e59ef5b7cf5f71de0c Mon Sep 17 00:00:00 2001 From: Youggls Date: Thu, 17 Apr 2025 17:23:20 +0800 Subject: [PATCH 027/238] fix: use run_in_threadpool for search_web to prevent blocking Used fastapi's run_in_threadpool function to execute the search_web function, preventing the synchronous function from blocking the entire web search process. --- backend/open_webui/routers/retrieval.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 13f012483..ce79503db 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -1477,8 +1477,11 @@ async def process_web_search( logging.info( f"trying to web search with {request.app.state.config.WEB_SEARCH_ENGINE, form_data.query}" ) - web_results = search_web( - request, request.app.state.config.WEB_SEARCH_ENGINE, form_data.query + web_results = await run_in_threadpool( + search_web, + request, + request.app.state.config.WEB_SEARCH_ENGINE, + form_data.query, ) except Exception as e: log.exception(e) From 9f8b94e45fbc9f3fcd8ed3ff507cd1ed143bbb91 Mon Sep 17 00:00:00 2001 From: David Holmlund Date: Thu, 17 Apr 2025 14:56:57 +0200 Subject: [PATCH 028/238] fix: improve international character handling in prompt commands --- .../workspace/Prompts/PromptEditor.svelte | 15 ++++++++++++--- src/lib/utils/index.ts | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/lib/components/workspace/Prompts/PromptEditor.svelte b/src/lib/components/workspace/Prompts/PromptEditor.svelte index 6a29d03b2..624bb551e 100644 --- a/src/lib/components/workspace/Prompts/PromptEditor.svelte +++ b/src/lib/components/workspace/Prompts/PromptEditor.svelte @@ -8,6 +8,7 @@ import LockClosed from '$lib/components/icons/LockClosed.svelte'; import AccessControlModal from '../common/AccessControlModal.svelte'; import { user } from '$lib/stores'; + import { slugify } from '$lib/utils'; export let onSubmit: Function; export let edit = false; @@ -25,8 +26,15 @@ let showAccessControlModal = false; - $: if (!edit) { - command = title !== '' ? `${title.replace(/\s+/g, '-').toLowerCase()}` : ''; + let hasManualEdit = false; + + $: if (!edit && !hasManualEdit) { + command = title !== '' ? slugify(title) : ''; + } + + // Track manual edits + function handleCommandInput(e: Event) { + hasManualEdit = true; } const submitHandler = async () => { @@ -64,7 +72,7 @@ command = prompt.command.at(0) === '/' ? prompt.command.slice(1) : prompt.command; content = prompt.content; - accessControl = prompt?.access_control ?? null; + accessControl = prompt?.access_control ?? {}; } }); @@ -125,6 +133,7 @@ class=" w-full bg-transparent outline-hidden" placeholder={$i18n.t('Command')} bind:value={command} + on:input={handleCommandInput} required disabled={edit} /> diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 022a901c1..83fd8d0cc 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -1298,3 +1298,17 @@ export const convertOpenApiToToolPayload = (openApiSpec) => { return toolPayload; }; + +export const slugify = (str: string): string => { + return str + // 1. Normalize: separate accented letters into base + combining marks + .normalize("NFD") + // 2. Remove all combining marks (the accents) + .replace(/[\u0300-\u036f]/g, "") + // 3. Replace any sequence of whitespace with a single hyphen + .replace(/\s+/g, "-") + // 4. Remove all characters except alphanumeric characters and hyphens + .replace(/[^a-zA-Z0-9-]/g, "") + // 5. Convert to lowercase + .toLowerCase(); +}; From b1629d8660e34d4892a288e5435d49ddc8388f0f Mon Sep 17 00:00:00 2001 From: Damian Mendez Romera Date: Thu, 17 Apr 2025 13:07:52 +0100 Subject: [PATCH 029/238] i18n: Update es-ES (Spanish) translation.json --- src/lib/i18n/locales/es-ES/translation.json | 192 ++++++++++---------- 1 file changed, 96 insertions(+), 96 deletions(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 3e3179031..bafa2c817 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -14,29 +14,29 @@ "*Prompt node ID(s) are required for image generation": "Los ID de nodo son requeridos para la generación de imágenes", "A new version (v{{LATEST_VERSION}}) is now available.": "Nueva versión (v{{LATEST_VERSION}}) disponible.", "A task model is used when performing tasks such as generating titles for chats and web search queries": "El modelo de tareas realiza tareas como la generación de títulos para chats y consultas de búsqueda web", - "a user": "un/a usuari@", + "a user": "un usuario", "About": "Acerca de", "Accept autocomplete generation / Jump to prompt variable": "Aceptar generación de autocompletado / Saltar a indicador variable", "Access": "Acceso", "Access Control": "Control de Acceso", - "Accessible to all users": "Accesible para todos l@s usuari@s", + "Accessible to all users": "Accesible para todos los usuarios", "Account": "Cuenta", "Account Activation Pending": "Activación de cuenta Pendiente", "Accurate information": "Información precisa", "Actions": "Acciones", "Activate": "Activar", "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Activar este comando escribiendo \"/{{COMMAND}}\" en el chat", - "Active Users": "Usuari@s activos", + "Active Users": "Usuarios activos", "Add": "Añadir", "Add a model ID": "Añadir un ID de modelo", "Add a short description about what this model does": "Añadir una breve descripción sobre lo que hace este modelo", "Add a tag": "Añadir una etiqueta", - "Add Arena Model": "Añadir un modelo a la Arena", + "Add Arena Model": "Añadir modelo a la Arena", "Add Connection": "Añadir Conexión", "Add Content": "Añadir Contenido", "Add content here": "Añadir contenido aquí", "Add custom prompt": "Añadir un indicador personalizado", - "Add Files": "Añadir Ficheros", + "Add Files": "Añadir Archivos", "Add Group": "Añadir Grupo", "Add Memory": "Añadir Memoria", "Add Model": "Añadir Modelo", @@ -44,31 +44,31 @@ "Add Tag": "Añadir etiqueta", "Add Tags": "Añadir etiquetas", "Add text content": "Añade contenido de texto", - "Add User": "Añadir Usuari@", - "Add User Group": "Añadir Grupo de Usuari@", - "Adjusting these settings will apply changes universally to all users.": "El ajuste de estas opciones se aplicará globalmente a todos l@s usuari@s.", + "Add User": "Añadir Usuario", + "Add User Group": "Añadir grupo de usuarios", + "Adjusting these settings will apply changes universally to all users.": "El ajuste de estas opciones se aplicará globalmente a todos los usuarios.", "admin": "admin", "Admin": "Admin", "Admin Panel": "Administración", "Admin Settings": "Ajustes de Admin", - "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Los Admins tienen acceso a todas las herramientas en todo momento; l@s usuari@s necesitan, en el área de trabajo, que los modelos tengan asignadas las herramentas.", + "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Los administradores tienen acceso a todas las herramientas en todo momento; los usuarios necesitan que los modelos tengan asignadas las herramientas en el area de trabajo.", "Advanced Parameters": "Parámetros Avanzados", - "Advanced Params": "Param. Avanz.", + "Advanced Params": "Parámetros Avanzados", "All": "Todos", "All Documents": "Todos los Documentos", "All models deleted successfully": "Todos los modelos borrados correctamnete", - "Allow Call": "", + "Allow Call": "Permitir Llamada", "Allow Chat Controls": "Permitir Controles del Chat", "Allow Chat Delete": "Permitir Borrar Chat", "Allow Chat Deletion": "Permitir Borrado de Chat", "Allow Chat Edit": "Pemritir Editar Chat", - "Allow File Upload": "Permitir Subida de Ficheros", + "Allow File Upload": "Permitir Subida de Archivos", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Permitir voces no locales", "Allow Speech to Text": "", "Allow Temporary Chat": "Permitir Chat Temporal", "Allow Text to Speech": "", - "Allow User Location": "Permitir Ubicación de Usuari@", + "Allow User Location": "Permitir Ubicación de Usuario", "Allow Voice Interruption in Call": "Permitir Interrupción de Voz en Llamada", "Allowed Endpoints": "Endpoints Permitidos", "Already have an account?": "¿Ya tienes una cuenta?", @@ -91,34 +91,34 @@ "API keys": "Claves API", "Application DN": "Aplicacion DN", "Application DN Password": "Contraseña Aplicacion DN", - "applies to all users with the \"user\" role": "se aplica a todos l@s usuari@s con el rol \"user\" ", + "applies to all users with the \"user\" role": "se aplica a todos los usuarios con el rol \"user\" ", "April": "Abril", "Archive": "Archivar", "Archive All Chats": "Archivar Todos los Chats", "Archived Chats": "Chats archivados", "archived-chat-export": "exportar chats archivados", - "Are you sure you want to clear all memories? This action cannot be undone.": "¿estas segur@ que quieres borrar todas las memorias? (¡esta acción NO se puede deshacer!)", - "Are you sure you want to delete this channel?": "¿Estás segur@ de que quieres eliminar este canal?", - "Are you sure you want to delete this message?": "¿Estás segur@ de que quieres eliminar este mensaje? ", - "Are you sure you want to unarchive all archived chats?": "¿Estás segur@ de que quieres desarchivar todos los chats archivados?", - "Are you sure?": "¿Está segur@?", + "Are you sure you want to clear all memories? This action cannot be undone.": "¿Seguro que quieres borrar todas las memorias? (¡esta acción NO se puede deshacer!)", + "Are you sure you want to delete this channel?": "¿Seguro de que quieres eliminar este canal?", + "Are you sure you want to delete this message?": "¿Seguro de que quieres eliminar este mensaje? ", + "Are you sure you want to unarchive all archived chats?": "¿Seguro de que quieres desarchivar todos los chats archivados?", + "Are you sure?": "¿Estás seguro?", "Arena Models": "Arena de Modelos", "Artifacts": "Artefactos", "Ask": "Preguntar", "Ask a question": "Haz una pregunta", "Assistant": "Asistente", - "Attach file from knowledge": "Adjuntar fichero desde el conocimiento", + "Attach file from knowledge": "Adjuntar archivo desde conocimiento", "Attention to detail": "Atención al detalle", "Attribute for Mail": "Atributo para Correo", - "Attribute for Username": "Atributo para Nombre de Usuari@", + "Attribute for Username": "Atributo para Nombre de Usuario", "Audio": "Audio", "August": "Agosto", "Auth": "Autorización", "Authenticate": "Autentificar", - "Authentication": "Autentificación", + "Authentication": "Autenticación", "Auto": "Auto", "Auto-Copy Response to Clipboard": "AutoCopiado de respuesta al Portapapeles", - "Auto-playback response": "AutoReproducir Respuesta", + "Auto-playback response": "Reproducir Respuesta automáticamente", "Autocomplete Generation": "Generación de Autocompletado", "Autocomplete Generation Input Max Length": "Max. Longitud de Entrada en Generación de Autocompletado", "Automatic1111": "AUTOMATIC1111", @@ -126,7 +126,7 @@ "AUTOMATIC1111 Base URL": "URL Base de AUTOMATIC1111", "AUTOMATIC1111 Base URL is required.": "la URL Base de AUTOMATIC1111 es necesaria.", "Available list": "Lista disponible", - "Available Tools": "", + "Available Tools": "Herramientas Disponibles", "available!": "¡disponible!", "Awful": "Horrible", "Azure AI Speech": "Voz Azure AI", @@ -148,23 +148,23 @@ "Bypass Embedding and Retrieval": "Evitar Incrustración y Recuperación", "Calendar": "Calendario", "Call": "Llamada", - "Call feature is not supported when using Web STT engine": "La característica Llamada no está soportada cuando se usa el motor Web STT", + "Call feature is not supported when using Web STT engine": "La funcionalidad de Llamada no está soportada cuando se usa el motor Web STT", "Camera": "Cámara", "Cancel": "Cancelar", "Capabilities": "Capacidades", "Capture": "Captura", "Certificate Path": "Ruta a Certificado", - "Change Password": "Cambia la Contraseña", - "Channel Name": "Nombre de Canal", + "Change Password": "Cambiar Contraseña", + "Channel Name": "Nombre del Canal", "Channels": "Canal", "Character": "Carácter", "Character limit for autocomplete generation input": "Límite de caracteres de entrada de la generación de autocompletado", "Chart new frontiers": "Trazar nuevas fronteras", "Chat": "Chat", "Chat Background Image": "Imágen de Fondo del Chat", - "Chat Bubble UI": "Interface del Chat tipo Burbuja", - "Chat Controls": "Controles del chat", - "Chat direction": "Dirección del Chat", + "Chat Bubble UI": "Interface de Chat tipo Burbuja", + "Chat Controls": "Controles de chat", + "Chat direction": "Dirección de Chat", "Chat Overview": "Vista General del Chat", "Chat Permissions": "Permisos del Chat", "Chat Tags Auto-Generation": "AutoGeneración de Etiquetas de Chat", @@ -183,15 +183,15 @@ "Click here for filter guides.": "Pulsar aquí para guías de filtros", "Click here for help.": "Pulsar aquí para Ayuda.", "Click here to": "Pulsa aquí para", - "Click here to download user import template file.": "Pulsa aquí para descargar la plantilla de importación de usuari@.", - "Click here to learn more about faster-whisper and see the available models.": "Pulsa aquí para saber más sobre faster-whisper y ver modelos disponibles.", + "Click here to download user import template file.": "Pulsa aquí para descargar la plantilla para importar usuarios.", + "Click here to learn more about faster-whisper and see the available models.": "Pulsa aquí para saber más sobre faster-whisper y ver los modelos disponibles.", "Click here to see available models.": "Pulsa aquí para ver modelos disponibles.", "Click here to select": "Pulsa aquí para seleccionar", "Click here to select a csv file.": "Pulsa aquí para seleccionar un fichero de Valores Separados por Comas (.csv)", "Click here to select a py file.": "Pulsa aquí para seleccionar un fichero Python (.py)", "Click here to upload a workflow.json file.": "Pulsa aquí para subir un fichero workflow.json", "click here.": "Pulsa aquí.", - "Click on the user role button to change a user's role.": "Pulsa en el botón rol de usuari@ para cambiar su rol.", + "Click on the user role button to change a user's role.": "Pulsa en el botón rol de usuario para cambiar su rol.", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permisos de escritura del portapapeles denegado. Por favor, comprueba la configuración de tu navegador para otorgar el permiso necesario.", "Clone": "Clonar", "Clone Chat": "Clonar Chat", @@ -200,8 +200,8 @@ "Code execution": "Ejecución de Código", "Code Execution": "Ejecución de Código", "Code Execution Engine": "Motor de Ejecución de Código", - "Code Execution Timeout": "Tiempo", - "Code formatted successfully": "Se ha formateado correctamente el código.", + "Code Execution Timeout": "Tiempo límite de espera para Ejecución de Código", + "Code formatted successfully": "El codigo se ha formateado correctamente.", "Code Interpreter": "Interprete de Código", "Code Interpreter Engine": "Motor del Interprete de Código", "Code Interpreter Prompt Template": "Plantilla del Indicador del Interprete de Código", @@ -287,7 +287,7 @@ "Default to 389 or 636 if TLS is enabled": "Predeterminado a 389, o 636 si TLS está habilitado", "Default to ALL": "Predeterminado a TODOS", "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Por defecto está predeterminada una segmentación de la recuperación para una extracción de contenido centrado y relevante, recomendado para la mayoría de los casos.", - "Default User Role": "Rol Predeterminado de l@s Usuari@s Nuev@s", + "Default User Role": "Rol predeterminado de los nuevos usuarios", "Delete": "Borrar", "Delete a model": "Borrar un modelo", "Delete All Chats": "Borrar todos los chats", @@ -302,17 +302,17 @@ "Delete prompt?": "¿Borrar el indicador?", "delete this link": "Borrar este enlace", "Delete tool?": "¿Borrar la herramienta?", - "Delete User": "Borrar Usuari@", + "Delete User": "Borrar Usuario", "Deleted {{deleteModelTag}}": "{{deleteModelTag}} Borrado", "Deleted {{name}}": "{{nombre}} Borrado", - "Deleted User": "Usuari@ Borrado", + "Deleted User": "Usuario Borrado", "Describe your knowledge base and objectives": "Describe tu Base de Conocimientos y sus objetivos", "Description": "Descripción", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "Detectar Artefactos Automáticamente", "Didn't fully follow instructions": "No seguiste completamente las instrucciones", "Direct": "Directo", "Direct Connections": "Conexiones Directas", - "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Las Conexiones Directas permiten a l@s usuari@s conectar a sus propios endpoints compatibles API OpenAI.", + "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Las Conexiones Directas permiten a los usuarios conectar a sus propios endpoints compatibles API OpenAI.", "Direct Connections settings updated": "Se actualizaron las configuraciones de las Conexiones Directas", "Direct Tool Servers": "Servidores de Herramientas Directos", "Disabled": "Deshabilitado", @@ -328,8 +328,8 @@ "Discover, download, and explore model presets": "Descubre, descarga y explora modelos con preajustados", "Dismissible": "Desestimable", "Display": "Mostrar", - "Display Emoji in Call": "Muestra chirimbolitos(Emojis) en Llamada", - "Display the username instead of You in the Chat": "Mostrar en el chat el nombre de usuari@ en lugar del genérico Tu/Usted", + "Display Emoji in Call": "Muestra Emojis en Llamada", + "Display the username instead of You in the Chat": "Mostrar en el chat el nombre de usuario en lugar del genérico Tu", "Displays citations in the response": "Mostrar citas en la respuesta", "Dive into knowledge": "Sumérgete en el conocimiento", "Do not install functions from sources you do not fully trust.": "¡No instalar funciones de fuentes en las que que no se confíe totalmente!", @@ -344,8 +344,8 @@ "does not make any external connections, and your data stays securely on your locally hosted server.": "no se realiza ninguna conexión externa y tus datos permanecen seguros alojados localmente en tu servidor.", "Domain Filter List": "Lista de Filtrado de Dominio", "Don't have an account?": "¿No tienes una cuenta?", - "don't install random functions from sources you don't trust.": "¡no instalar funciones aleatorias de fuentes en las que no se confíe!", - "don't install random tools from sources you don't trust.": "¡no instalar herramientas aleatorias de fuentes en las que no se confíe!", + "don't install random functions from sources you don't trust.": "¡no instalar funciones desconocidas de fuentes en las que no se confíe!", + "don't install random tools from sources you don't trust.": "¡no instalar herramientas desconocidas de fuentes en las que no se confíe!", "Don't like the style": "¿No te gusta el estilo?", "Done": "Hecho", "Download": "Descargar", @@ -358,21 +358,21 @@ "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p.ej. '30s','10m'. Unidades de tiempo válidas son 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "p.ej. \"json\" o un esquema JSON", "e.g. 60": "p.ej. 60", - "e.g. A filter to remove profanity from text": "p.ej. Un filtro para eliminar 'blasfemia' del texto", + "e.g. A filter to remove profanity from text": "p.ej. Un filtro para eliminar malas palabras del texto", "e.g. My Filter": "p.ej. Mi Filtro", "e.g. My Tools": "p.ej. Mis Herramientas", "e.g. my_filter": "p.ej. mi_filtro", "e.g. my_tools": "p.ej. mis_herramientas", "e.g. Tools for performing various operations": "p.ej. Herramientas para realizar varias operaciones", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "p. ej., en-US,ja-JP (dejar en blanco para detectar automáticamente)", "Edit": "Editar", "Edit Arena Model": "Editar Modelo en Arena", "Edit Channel": "Editar Canal", "Edit Connection": "Editar Conexión", "Edit Default Permissions": "Editar Permisos Predeterminados", "Edit Memory": "Editar Memoria", - "Edit User": "Editar Usuari@", - "Edit User Group": "Editar Grupo de Usuari@", + "Edit User": "Editar Usuario", + "Edit User Group": "Editar Grupo de Usuarios", "ElevenLabs": "ElevenLabs", "Email": "Email", "Embark on adventures": "Embarcate en aventuras", @@ -390,13 +390,13 @@ "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.": "Habilitar Mapeado de Memoria (mmap) para cargar datos del modelo. Esta opción permite al sistema usar el almacenamiento del disco como una extensión de la RAM al tratar los archivos en disco como si estuvieran en la RAM. Esto puede mejorar el rendimiento del modelo al permitir un acceso más rápido a los datos. Sin embargo, puede no funcionar correctamente con todos los sistemas y puede consumir una cantidad significativa de espacio en disco.", "Enable Message Rating": "Habilitar Calificación de los Mensajes", "Enable Mirostat sampling for controlling perplexity.": "Algoritmo de decodificación de texto neuronal que controla activamente el proceso generativo para mantener la perplejidad del texto generado en un valor deseado. Previene las trampas de aburrimiento (por excesivas repeticiones) y de incoherencia (por generación de excesivo texto).", - "Enable New Sign Ups": "Habilitar Registros de Nuev@s Usuari@s", + "Enable New Sign Ups": "Habilitar Registros de Nuevos Usuarios", "Enabled": "Habilitado", - "Enforce Temporary Chat": "", + "Enforce Temporary Chat": "Forzar el uso de Chat Temporal", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Asegúrese de que su archivo CSV incluya 4 columnas en este orden: Nombre, Correo Electrónico, Contraseña, Rol.", "Enter {{role}} message here": "Ingresar mensaje {{role}} aquí", "Enter a detail about yourself for your LLMs to recall": "Ingresar detalles sobre ti para que los recuerden sus LLMs", - "Enter api auth string (e.g. username:password)": "Ingresar cadena de autorización de la api (p.ej. nombre:contraseña)", + "Enter api auth string (e.g. username:password)": "Ingresar campo de autorización de la api (p.ej. nombre:contraseña)", "Enter Application DN": "Ingresar el DN de la Aplicación", "Enter Application DN Password": "Ingresar la Contraseña del DN de la Aplicación", "Enter Bing Search V7 Endpoint": "Ingresar el Endpoint de Bing Search V7", @@ -414,8 +414,8 @@ "Enter Document Intelligence Key": "Ingresar Clave de Azure Document Intelligence", "Enter domains separated by commas (e.g., example.com,site.org)": "Ingresar dominios separados por comas (p.ej., ejemplo.com,sitio.org)", "Enter Exa API Key": "Ingresar Clave API de Exa", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", + "Enter Firecrawl API Base URL": "Ingresar URL Base del API de Firecrawl", + "Enter Firecrawl API Key": "Ingresar Clave del API de Firecrawl", "Enter Github Raw URL": "Ingresar URL Github en Bruto(raw)", "Enter Google PSE API Key": "Ingresar Clave API de Google PSE", "Enter Google PSE Engine Id": "Ingresa ID del Motor PSE de Google", @@ -433,8 +433,8 @@ "Enter Mojeek Search API Key": "Ingresar Clave API de Mojeek Search", "Enter Number of Steps (e.g. 50)": "Ingresar Número de Pasos (p.ej., 50)", "Enter Perplexity API Key": "Ingresar Clave API de Perplexity", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", + "Enter Playwright Timeout": "Ingresar límite de tiempo de espera de Playwright", + "Enter Playwright WebSocket URL": "Ingresar URL de WebSocket de Playwright", "Enter proxy URL (e.g. https://user:password@host:port)": "Ingresar URL del proxy (p.ej. https://user:password@host:port)", "Enter reasoning effort": "Ingresar esfuerzo de razonamiento", "Enter Sampler (e.g. Euler a)": "Ingresar Muestreador (p.ej., Euler a)", @@ -452,16 +452,16 @@ "Enter server host": "Ingresar host del servidor", "Enter server label": "Ingresar etiqueta del servidor", "Enter server port": "Ingresar puerto del servidor", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", + "Enter Sougou Search API sID": "Ingresar Sougou Search API sID", + "Enter Sougou Search API SK": "Ingresar Sougou Search API SK", "Enter stop sequence": "Ingresar secuencia de parada", "Enter system prompt": "Ingresar Indicador del sistema", "Enter system prompt here": "Ingresa aquí el indicador del sistema", "Enter Tavily API Key": "Ingresar Clave API de Tavily", - "Enter Tavily Extract Depth": "", - "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Ingresar URL pública de su WebUI. Esta URL se usará para generar enlaces en las notificaciones.", + "Enter Tavily Extract Depth": "Ingresar parámetro de Extract Depth de Taviliy", + "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Ingresar URL pública de WebUI. Esta URL se usará para generar enlaces en las notificaciones.", "Enter Tika Server URL": "Ingresar URL del servidor Tika", - "Enter timeout in seconds": "Ingresar timeout en segundos", + "Enter timeout in seconds": "Ingresar tiempo límite de espera en segundos", "Enter to Send": "'Enter' para Enviar", "Enter Top K": "Ingresar Top K", "Enter Top K Reranker": "Ingresar Top K Reclasificador", @@ -475,8 +475,8 @@ "Enter your new password": "Ingresa tu contraseña nueva", "Enter Your Password": "Ingresa tu contraseña", "Enter Your Role": "Ingresa tu rol", - "Enter Your Username": "Ingresa tu nombre de usuari@", - "Enter your webhook URL": "Ingresa tu URL de enganchesWeb(webhook)", + "Enter Your Username": "Ingresa tu nombre de usuario", + "Enter your webhook URL": "Ingresa tu URL de webhook", "Error": "Error", "ERROR": "ERROR", "Error accessing Google Drive: {{error}}": "Error accediendo a Google Drive: {{error}}", @@ -488,18 +488,18 @@ "Example: mail": "Ejemplo: correo", "Example: ou=users,dc=foo,dc=example": "Ejemplo: ou=usuarios,dc=foo,dc=ejemplo", "Example: sAMAccountName or uid or userPrincipalName": "Ejemplo: sAMNombreCuenta o uid o userNombrePrincipal", - "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Excedido el número de accesos en su licencia. Por favor, contacte con soporte para aumentar el número de accesos.", + "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Excedido el número de accesos de usuarios en tu licencia. Por favor, contacta con soporte para aumentar el número de accesos.", "Exclude": "Excluir", "Execute code for analysis": "Ejecutar código para análisis", - "Executing **{{NAME}}**...": "", + "Executing **{{NAME}}**...": "Ejecutando **{{NAME}}**...", "Expand": "Expandir", "Experimental": "Experimental", "Explain": "Explicar", - "Explain this section to me in more detail": "Explicame esta sección con más detalle", + "Explain this section to me in more detail": "Explícame esta sección con más detalle", "Explore the cosmos": "Explora el cosmos", "Export": "Exportar", "Export All Archived Chats": "Exportar Todos los Chats Archivados", - "Export All Chats (All Users)": "Exportar Todos los Chats (Todos l@s Usuari@s)", + "Export All Chats (All Users)": "Exportar Todos los Chats (Todos los Usuarios)", "Export chat (.json)": "Exportar chat (.json)", "Export Chats": "Exportar Chats", "Export Config to JSON File": "Exportar Configuración a archivo JSON", @@ -523,8 +523,8 @@ "Features": "Características", "Features Permissions": "Permisos de las Características", "February": "Febrero", - "Feedback History": "Historial de realimentación", - "Feedbacks": "Realimentaciones", + "Feedback History": "Historial de Opiniones", + "Feedbacks": "Opiniones", "Feel free to add specific details": "Añade libremente detalles específicos", "File": "Archivo", "File added successfully.": "Archivo añadido correctamente.", @@ -539,11 +539,11 @@ "Filter is now globally enabled": "El filtro ahora está habilitado globalmente", "Filters": "Filtros", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Se detectó suplantación de huellas: No se pueden usar las iniciales como avatar. Se establece la imagen de perfil predeterminada.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "URL Base de API de Firecrawl", + "Firecrawl API Key": "Clave de API de Firecrawl", "Fluidly stream large external response chunks": "Transmisión fluida de fragmentos de grandes respuestas externas", - "Focus chat input": "Enfoque entrada del chat", - "Folder deleted successfully": "Carpeta bollada correctamente", + "Focus chat input": "Enfocar campo de chat", + "Folder deleted successfully": "Carpeta eliminada correctamente", "Folder name cannot be empty": "El nombre de la carpeta no puede estar vacío", "Folder name cannot be empty.": "El nombre de la carpeta no puede estar vacío", "Folder name updated successfully": "Nombre de la carpeta actualizado correctamente", @@ -719,7 +719,7 @@ "Memory updated successfully": "Memoria actualizada correctamente", "Merge Responses": "Fusionar Respuestas", "Message rating should be enabled to use this feature": "Para usar esta función debe estar habilitada la calificación de mensajes", - "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Los mensajes que envíe después de la creación del enlace no se compartirán. L@s usuari@s con la URL del enlace podrán ver el chat compartido.", + "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Los mensajes que envíe después de la creación del enlace no se compartirán. Los usuarios con la URL del enlace podrán ver el chat compartido.", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -777,7 +777,7 @@ "No results found": "No se encontraron resultados", "No search query generated": "No se generó ninguna consulta de búsqueda", "No source available": "No hay fuente disponible", - "No users were found.": "No se encontraron usuari@s.", + "No users were found.": "No se encontraron usuarios.", "No valves to update": "No hay válvulas para actualizar", "None": "Ninguno", "Not factually correct": "No es correcto en todos los aspectos", @@ -804,7 +804,7 @@ "Only alphanumeric characters and hyphens are allowed": "Sólo están permitidos caracteres alfanuméricos y guiones", "Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo están permitidos en la cadena de comandos caracteres alfanuméricos y guiones.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Solo se pueden editar las colecciones, para añadir/editar documentos hay que crear una nueva base de conocimientos", - "Only select users and groups with permission can access": "Solo pueden acceder l@s usuari@s y grupos con permiso", + "Only select users and groups with permission can access": "Solo pueden acceder los usuarios y grupos con permiso", "Oops! Looks like the URL is invalid. Please double-check and try again.": "¡vaya! Parece que la URL es inválida. Por favor, revisala y reintenta de nuevo.", "Oops! There are files still uploading. Please wait for the upload to complete.": "¡vaya! Todavía hay archivos subiendose. Por favor, espera a que se complete la subida.", "Oops! There was an error in the previous response.": "¡vaya! Hubo un error en la respuesta previa.", @@ -824,7 +824,7 @@ "OpenAI URL/Key required.": "URL/Clave de OpenAI requerida.", "openapi.json Path": "Ruta a openapi.json", "or": "o", - "Organize your users": "Organiza tus usuari@s", + "Organize your users": "Organiza tus usuarios", "Other": "Otro", "OUTPUT": "SALIDA", "Output format": "Formato de salida", @@ -851,8 +851,8 @@ "Pipelines Valves": "Válvulas de Tuberías", "Plain text (.txt)": "Texto plano (.txt)", "Playground": "Zona de Pruebas", - "Playwright Timeout (ms)": "", - "Playwright WebSocket URL": "", + "Playwright Timeout (ms)": "Tiempo Límite de Espera (ms) de Playwright", + "Playwright WebSocket URL": "URL de WebSocket de Playwright", "Please carefully review the following warnings:": "Por favor revisar cuidadosamente los siguientes avisos:", "Please do not close the settings page while loading the model.": "Por favor no cerrar la página de ajustes mientras se está descargando el modelo.", "Please enter a prompt": "Por favor ingresar un indicador", @@ -894,7 +894,7 @@ "Record voice": "Grabar voz", "Redirecting you to Open WebUI Community": "Redireccionando a la Comunidad Open-WebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Reduce la probabilidad de generación sin sentido. Un valor más alto (p.ej. 100) dará respuestas más diversas, mientras que un valor más bajo (p.ej. 10) será más conservador.", - "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Referir a ti mismo como \"Usuari@\" (p.ej. \"Usuari@ está aprendiendo Español\")", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Referir a ti mismo como \"Usuario\" (p.ej. \"Usuario está aprendiendo Español\")", "References from": "Referencias desde", "Refused when it shouldn't have": "Rechazado cuando no debería haberlo hecho", "Regenerate": "Regenerar", @@ -902,7 +902,7 @@ "Reindex Knowledge Base Vectors": "Reindexar Base Vectorial de Conocimiento", "Release Notes": "Notas de la Versión", "Relevance": "Relevancia", - "Relevance Threshold": "", + "Relevance Threshold": "Umbral de Relevancia", "Remove": "Eliminar", "Remove Model": "Eliminar Modelo", "Rename": "Renombrar", @@ -1020,7 +1020,7 @@ "Show": "Mostrar", "Show \"What's New\" modal on login": "Mostrar modal \"Qué hay de Nuevo\" al iniciar sesión", "Show Admin Details in Account Pending Overlay": "Mostrar Detalles Admin en la sobrecapa de 'Cuenta Pendiente'", - "Show Model": "", + "Show Model": "Mostrar Modelo", "Show shortcuts": "Mostrar Atajos", "Show your support!": "¡Muestra tu apoyo!", "Showcased creativity": "Creatividad exhibida", @@ -1061,7 +1061,7 @@ "Tap to interrupt": "Toca para interrumpir", "Tasks": "Tareas", "Tavily API Key": "Clave API de Tavily", - "Tavily Extract Depth": "", + "Tavily Extract Depth": "Parámetro Extract Depth de Taviliy", "Tell us more:": "Dinos algo más:", "Temperature": "Temperatura", "Template": "Plantilla", @@ -1069,14 +1069,14 @@ "Text Splitter": "Divisor de Texto", "Text-to-Speech Engine": "Motor Texto a Voz(TTS)", "Tfs Z": "TFS Z", - "Thanks for your feedback!": "¡Gracias por tu realimentación!", + "Thanks for your feedback!": "¡Gracias por tu comentario!", "The Application Account DN you bind with for search": "Cuenta DN de la aplicación vinculada para búsqueda", - "The base to search for users": "La base para buscar usuari@s", + "The base to search for users": "Base para buscar usuarios", "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.": "El tamaño de lote determina cuántas solicitudes de texto se procesan juntas de una vez. Un tamaño de lote más alto puede aumentar el rendimiento y la velocidad del modelo, pero también requiere más memoria.", - "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "L@s desarrolladores de este complemento son apasionad@s voluntari@s de la comunidad. Si este complemento te es útil, por favor considera contribuir a su desarrollo.", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Quienes desarollaron este complemento son apasionados voluntarios/as de la comunidad. Si este complemento te es útil, por favor considera contribuir a su desarrollo.", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "La tabla clasificatoria de evaluación se basa en el sistema de clasificación Elo y se actualiza en tiempo real.", - "The LDAP attribute that maps to the mail that users use to sign in.": "El atributo LDAP que mapea el correo que l@s usuari@s utilizan para iniciar sesión.", - "The LDAP attribute that maps to the username that users use to sign in.": "El atributo LDAP que mapea el nombre de usuari@ que l@s usuari@s utilizan para iniciar sesión.", + "The LDAP attribute that maps to the mail that users use to sign in.": "El atributo LDAP que mapea el correo que los usuarios utilizan para iniciar sesión.", + "The LDAP attribute that maps to the username that users use to sign in.": "El atributo LDAP que mapea el nombre de usuario que los usuarios utilizan para iniciar sesión.", "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "La tabla clasificatoria está actualmente en beta, por lo que los cálculos de clasificación pueden reajustarse a medida que se refina el algoritmo.", "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "El tamaño máximo del archivo en MB. Si el tamaño del archivo supera este límite, el archivo no se subirá.", "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "El número máximo de archivos que se pueden utilizar a la vez en el chat. Si se supera este límite, los archivos no se subirán.", @@ -1114,7 +1114,7 @@ "TLS": "TLS", "To access the available model names for downloading,": "Para acceder a los nombres de modelos disponibles para descargar,", "To access the GGUF models available for downloading,": "Para acceder a los modelos GGUF disponibles para descargar,", - "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para acceder a WebUI, por favor contacte con Admins. L@s administradores pueden gestionar los estados de l@s usuari@s esde el panel de administración.", + "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para acceder a WebUI, por favor contacte con Admins. Los administradores pueden gestionar los estados de los usuarios esde el panel de administración.", "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Para adjuntar la base de conocimientos aquí, primero añadirla a \"Conocimiento\" en el área de trabajo.", "To learn more about available endpoints, visit our documentation.": "Para aprender más sobre los endpoints disponibles, visite nuestra documentación.", "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.": "Para proteger tu privacidad, de tu realimentación solo se comparten las calificaciones, IDs de modelo, etiquetas y metadatos; tus chat registrados permanecen privados y no se incluyen.", @@ -1182,18 +1182,18 @@ "URL Mode": "Modo URL", "Use '#' in the prompt input to load and include your knowledge.": "Utilizar '#' en el indicador para cargar e incluir tu conocimiento.", "Use Gravatar": "Usar Gravatar", - "Use groups to group your users and assign permissions.": "Usar grupos para agrupar a usuari@s y asignar permisos.", + "Use groups to group your users and assign permissions.": "Usar grupos para agrupar a usuarios y asignar permisos.", "Use Initials": "Usar Iniciales", "Use no proxy to fetch page contents.": "No usar proxy para extraer contenidos", "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Usar el proxy asignado en las variables del entorno http_proxy y/o https_proxy para extraer contenido", "use_mlock (Ollama)": "use_mlock (Ollama)", "use_mmap (Ollama)": "use_mmap (Ollama)", - "user": "usuari@", - "User": "Usuari@", - "User location successfully retrieved.": "Ubicación de usuari@ obtenida correctamente.", - "User Webhooks": "Usuari@ EnganchesWeb(webhooks)", - "Username": "Nombre de Usuari@", - "Users": "Usuari@s", + "user": "usuario", + "User": "Usuario", + "User location successfully retrieved.": "Ubicación de usuario obtenida correctamente.", + "User Webhooks": "Usuario Webhooks", + "Username": "Nombre de Usuario", + "Users": "Usuarios", "Using the default arena model with all models. Click the plus button to add custom models.": "Usando el modelo de arena predeterminado con todos los modelos. Pulsar en el botón + para agregar modelos personalizados.", "Utilize": "Utilizar", "Valid time units:": "Unidades de tiempo válidas:", @@ -1213,7 +1213,7 @@ "Voice Input": "Entrada de Voz", "Warning": "Aviso", "Warning:": "Aviso:", - "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Aviso: Habilitar esto permitirá a l@s usuari@s subir código arbitrario al servidor.", + "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Aviso: Habilitar esto permitirá a los usuarios subir código arbitrario al servidor.", "Warning: If you update or change your embedding model, you will need to re-import all documents.": "Aviso: Si actualizas o cambias el modelo de incrustacción, necesitarás re-importar todos los documentos.", "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Aviso: La ejecución Jupyter habilita la ejecución de código arbitrario, planteando graves riesgos de seguridad; Proceder con extrema precaución.", "Web": "Web", From 3dcbf1acf51f9e7ec810c7388cdb58df4039f614 Mon Sep 17 00:00:00 2001 From: Thomas Rehn <271119+tremlin@users.noreply.github.com> Date: Thu, 17 Apr 2025 15:44:48 +0200 Subject: [PATCH 030/238] feat: support OpenAPI parameter description and enum values in tool spec --- backend/open_webui/utils/tools.py | 11 ++++++++++- src/lib/utils/index.ts | 6 +++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index b5d916e1d..97dded91f 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -384,9 +384,18 @@ def convert_openapi_to_tool_payload(openapi_spec): for param in operation.get("parameters", []): param_name = param["name"] param_schema = param.get("schema", {}) + description = param_schema.get("description", "") + if not description: + description = param.get("description") or "" + if param_schema.get("enum") and isinstance( + param_schema.get("enum"), list + ): + description += ( + f". Possible values: {', '.join(param_schema.get('enum'))}" + ) tool["parameters"]["properties"][param_name] = { "type": param_schema.get("type"), - "description": param_schema.get("description", ""), + "description": description, } if param.get("required"): tool["parameters"]["required"].append(param_name) diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 022a901c1..80c2b2902 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -1257,9 +1257,13 @@ export const convertOpenApiToToolPayload = (openApiSpec) => { // Extract path and query parameters if (operation.parameters) { operation.parameters.forEach((param) => { + let description = param.schema.description || param.description || ''; + if (param.schema.enum && Array.isArray(param.schema.enum)) { + description += `. Possible values: ${param.schema.enum.join(', ')}`; + } tool.parameters.properties[param.name] = { type: param.schema.type, - description: param.schema.description || '' + description: description }; if (param.required) { From 79bde6fa4718205713a12aefc97fa4c0789e8d68 Mon Sep 17 00:00:00 2001 From: tth37 Date: Thu, 17 Apr 2025 22:27:22 +0800 Subject: [PATCH 031/238] fix: Align backend tag indexing with frontend citation grouping --- backend/open_webui/utils/middleware.py | 16 ++++++++++------ .../components/chat/Messages/Citations.svelte | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 4070bc697..4dde09643 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -888,16 +888,20 @@ async def process_chat_payload(request, form_data, user, metadata, model): # If context is not empty, insert it into the messages if len(sources) > 0: context_string = "" - citated_file_idx = {} - for _, source in enumerate(sources, 1): + citation_idx = {} + for source in sources: if "document" in source: for doc_context, doc_meta in zip( source["document"], source["metadata"] ): - file_id = doc_meta.get("file_id") - if file_id not in citated_file_idx: - citated_file_idx[file_id] = len(citated_file_idx) + 1 - context_string += f'{doc_context}\n' + citation_id = ( + doc_meta.get("source", None) + or source.get("source", {}).get("id", None) + or "N/A" + ) + if citation_id not in citation_idx: + citation_idx[citation_id] = len(citation_idx) + 1 + context_string += f'{doc_context}\n' context_string = context_string.strip() prompt = get_last_user_message(form_data["messages"]) diff --git a/src/lib/components/chat/Messages/Citations.svelte b/src/lib/components/chat/Messages/Citations.svelte index 8c2fbf799..7177f27f2 100644 --- a/src/lib/components/chat/Messages/Citations.svelte +++ b/src/lib/components/chat/Messages/Citations.svelte @@ -83,6 +83,7 @@ }); return acc; }, []); + console.log('citations', citations); showRelevance = calculateShowRelevance(citations); showPercentage = shouldShowPercentage(citations); From cdf26d8189b8e720f75eb1bd772bae8fc9ae83ce Mon Sep 17 00:00:00 2001 From: knight-upstage Date: Thu, 17 Apr 2025 09:57:22 -0700 Subject: [PATCH 032/238] i18n: Update ko-KR (Korean) translation.json --- src/lib/i18n/locales/ko-KR/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index f59326035..956fa7972 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -128,7 +128,7 @@ "Available list": "가능한 목록", "Available Tools": "", "available!": "사용 가능!", - "Awful": "끔찍함", + "Awful": "형편없음", "Azure AI Speech": "Azure AI 음성", "Azure Region": "Azure 지역", "Back": "뒤로가기", From 0577dc299066374934d37311d7a6a719d8db6821 Mon Sep 17 00:00:00 2001 From: Felipe Hernandez Date: Fri, 18 Apr 2025 01:40:30 +0200 Subject: [PATCH 033/238] feat: Lazy load file content on click --- backend/open_webui/routers/knowledge.py | 6 ++--- .../workspace/Knowledge/KnowledgeBase.svelte | 24 +++++++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py index 15547afa7..408d1c7ed 100644 --- a/backend/open_webui/routers/knowledge.py +++ b/backend/open_webui/routers/knowledge.py @@ -9,7 +9,7 @@ from open_webui.models.knowledge import ( KnowledgeResponse, KnowledgeUserResponse, ) -from open_webui.models.files import Files, FileModel +from open_webui.models.files import Files, FileModel, FileMetadataResponse from open_webui.retrieval.vector.connector import VECTOR_DB_CLIENT from open_webui.routers.retrieval import ( process_file, @@ -235,7 +235,7 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us class KnowledgeFilesResponse(KnowledgeResponse): - files: list[FileModel] + files: list[FileMetadataResponse] @router.get("/{id}", response_model=Optional[KnowledgeFilesResponse]) @@ -251,7 +251,7 @@ async def get_knowledge_by_id(id: str, user=Depends(get_verified_user)): ): file_ids = knowledge.data.get("file_ids", []) if knowledge.data else [] - files = Files.get_files_by_ids(file_ids) + files = Files.get_file_metadatas_by_ids(file_ids) return KnowledgeFilesResponse( **knowledge.model_dump(), diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte index dc0e354ec..420673500 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte @@ -11,7 +11,7 @@ import { page } from '$app/stores'; import { mobile, showSidebar, knowledge as _knowledge, config, user } from '$lib/stores'; - import { updateFileDataContentById, uploadFile, deleteFileById } from '$lib/apis/files'; + import { updateFileDataContentById, uploadFile, deleteFileById, getFileById } from '$lib/apis/files'; import { addFileToKnowledgeById, getKnowledgeById, @@ -84,12 +84,12 @@ let selectedFile = null; let selectedFileId = null; + let selectedFileContent = ''; $: if (selectedFileId) { const file = (knowledge?.files ?? []).find((file) => file.id === selectedFileId); if (file) { - file.data = file.data ?? { content: '' }; - selectedFile = file; + handleFileClick(file); } else { selectedFile = null; } @@ -450,6 +450,20 @@ } }; + const handleFileClick = async (file) => { + try { + selectedFile = file; + const response = await getFileById(localStorage.token, file.id); + if (response) { + selectedFileContent = response.data.content; + } else { + toast.error($i18n.t('No content found in file.')); + } + } catch (e) { + toast.error($i18n.t('Failed to load file content.')); + } + }; + const onDragOver = (e) => { e.preventDefault(); @@ -728,7 +742,7 @@ {#key selectedFile.id} @@ -786,7 +800,7 @@ {#key selectedFile.id} From 88f97372d9cbbe8315bd19002eb742c4368c6cfc Mon Sep 17 00:00:00 2001 From: Felipe Hernandez Date: Fri, 18 Apr 2025 02:01:47 +0200 Subject: [PATCH 034/238] fix: Show content on upload file --- backend/open_webui/routers/knowledge.py | 10 +++++----- .../workspace/Knowledge/KnowledgeBase.svelte | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py index 408d1c7ed..926b35b17 100644 --- a/backend/open_webui/routers/knowledge.py +++ b/backend/open_webui/routers/knowledge.py @@ -379,7 +379,7 @@ def add_file_to_knowledge_by_id( knowledge = Knowledges.update_knowledge_data_by_id(id=id, data=data) if knowledge: - files = Files.get_files_by_ids(file_ids) + files = Files.get_file_metadatas_by_ids(file_ids) return KnowledgeFilesResponse( **knowledge.model_dump(), @@ -456,7 +456,7 @@ def update_file_from_knowledge_by_id( data = knowledge.data or {} file_ids = data.get("file_ids", []) - files = Files.get_files_by_ids(file_ids) + files = Files.get_file_metadatas_by_ids(file_ids) return KnowledgeFilesResponse( **knowledge.model_dump(), @@ -538,7 +538,7 @@ def remove_file_from_knowledge_by_id( knowledge = Knowledges.update_knowledge_data_by_id(id=id, data=data) if knowledge: - files = Files.get_files_by_ids(file_ids) + files = Files.get_file_metadatas_by_ids(file_ids) return KnowledgeFilesResponse( **knowledge.model_dump(), @@ -734,7 +734,7 @@ def add_files_to_knowledge_batch( error_details = [f"{err.file_id}: {err.error}" for err in result.errors] return KnowledgeFilesResponse( **knowledge.model_dump(), - files=Files.get_files_by_ids(existing_file_ids), + files=Files.get_file_metadatas_by_ids(existing_file_ids), warnings={ "message": "Some files failed to process", "errors": error_details, @@ -742,5 +742,5 @@ def add_files_to_knowledge_batch( ) return KnowledgeFilesResponse( - **knowledge.model_dump(), files=Files.get_files_by_ids(existing_file_ids) + **knowledge.model_dump(), files=Files.get_file_metadatas_by_ids(existing_file_ids) ) diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte index 420673500..46348b2bc 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte @@ -394,7 +394,7 @@ const updateFileContentHandler = async () => { const fileId = selectedFile.id; - const content = selectedFile.data.content; + const content = selectedFileContent const res = updateFileDataContentById(localStorage.token, fileId, content).catch((e) => { toast.error(`${e}`); From 824238a620218b23d8c81c27288b1db1f1a2e90d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 17 Apr 2025 22:02:16 -0700 Subject: [PATCH 035/238] enh: `AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL` --- backend/open_webui/env.py | 5 +++++ backend/open_webui/utils/tools.py | 24 ++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index c9d71a4a0..cc1b02e01 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -437,6 +437,11 @@ else: except Exception: AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA = 10 + +AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL = ( + os.environ.get("AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL", "True").lower() == "true" +) + #################################### # OFFLINE_MODE #################################### diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index b5d916e1d..876e1c21d 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -36,7 +36,10 @@ from langchain_core.utils.function_calling import ( from open_webui.models.tools import Tools from open_webui.models.users import UserModel from open_webui.utils.plugin import load_tool_module_by_id -from open_webui.env import AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA +from open_webui.env import ( + AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA, + AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL, +) import copy @@ -431,8 +434,10 @@ async def get_tool_server_data(token: str, url: str) -> Dict[str, Any]: error = None try: timeout = aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA) - async with aiohttp.ClientSession(timeout=timeout) as session: - async with session.get(url, headers=headers) as response: + async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session: + async with session.get( + url, headers=headers, ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL + ) as response: if response.status != 200: error_body = await response.json() raise Exception(error_body) @@ -573,19 +578,26 @@ async def execute_tool_server( if token: headers["Authorization"] = f"Bearer {token}" - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(trust_env=True) as session: request_method = getattr(session, http_method.lower()) if http_method in ["post", "put", "patch"]: async with request_method( - final_url, json=body_params, headers=headers + final_url, + json=body_params, + headers=headers, + ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL, ) as response: if response.status >= 400: text = await response.text() raise Exception(f"HTTP error {response.status}: {text}") return await response.json() else: - async with request_method(final_url, headers=headers) as response: + async with request_method( + final_url, + headers=headers, + ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL, + ) as response: if response.status >= 400: text = await response.text() raise Exception(f"HTTP error {response.status}: {text}") From eb80719cf086ec064231c8a3c9fc3b8eca3ea57e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 17 Apr 2025 22:11:42 -0700 Subject: [PATCH 036/238] feat: `AIOHTTP_CLIENT_SESSION_SSL` --- backend/open_webui/env.py | 5 +++++ backend/open_webui/routers/ollama.py | 8 +++++++- backend/open_webui/routers/openai.py | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index cc1b02e01..e619b1a74 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -409,6 +409,11 @@ else: except Exception: AIOHTTP_CLIENT_TIMEOUT = 300 + +AIOHTTP_CLIENT_SESSION_SSL = ( + os.environ.get("AIOHTTP_CLIENT_SESSION_SSL", "True").lower() == "true" +) + AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST = os.environ.get( "AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST", os.environ.get("AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST", "10"), diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 775cd0446..3ab88f622 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -54,6 +54,7 @@ from open_webui.config import ( from open_webui.env import ( ENV, SRC_LOG_LEVELS, + AIOHTTP_CLIENT_SESSION_SSL, AIOHTTP_CLIENT_TIMEOUT, AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST, BYPASS_MODEL_ACCESS_CONTROL, @@ -91,6 +92,7 @@ async def send_get_request(url, key=None, user: UserModel = None): else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) as response: return await response.json() except Exception as e: @@ -141,6 +143,7 @@ async def send_post_request( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) r.raise_for_status() @@ -234,6 +237,7 @@ async def verify_connection( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) as r: if r.status != 200: detail = f"HTTP Error: {r.status}" @@ -1482,7 +1486,9 @@ async def download_file_stream( timeout = aiohttp.ClientTimeout(total=600) # Set the timeout async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session: - async with session.get(file_url, headers=headers) as response: + async with session.get( + file_url, headers=headers, ssl=AIOHTTP_CLIENT_SESSION_SSL + ) as response: total_size = int(response.headers.get("content-length", 0)) + current_size with open(file_path, "ab+") as file: diff --git a/backend/open_webui/routers/openai.py b/backend/open_webui/routers/openai.py index 0310014cf..2abe3cbb0 100644 --- a/backend/open_webui/routers/openai.py +++ b/backend/open_webui/routers/openai.py @@ -21,6 +21,7 @@ from open_webui.config import ( CACHE_DIR, ) from open_webui.env import ( + AIOHTTP_CLIENT_SESSION_SSL, AIOHTTP_CLIENT_TIMEOUT, AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST, ENABLE_FORWARD_USER_INFO_HEADERS, @@ -74,6 +75,7 @@ async def send_get_request(url, key=None, user: UserModel = None): else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) as response: return await response.json() except Exception as e: @@ -481,6 +483,7 @@ async def get_models( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) as r: if r.status != 200: # Extract response error details if available @@ -561,6 +564,7 @@ async def verify_connection( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) as r: if r.status != 200: # Extract response error details if available @@ -723,6 +727,7 @@ async def generate_chat_completion( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) # Check if response is SSE @@ -802,6 +807,7 @@ async def proxy(path: str, request: Request, user=Depends(get_verified_user)): else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) r.raise_for_status() From a22be555cbd83be85914f59227db52c86e0db5b4 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 18 Apr 2025 01:26:42 -0700 Subject: [PATCH 037/238] refac --- src/lib/components/channel/Channel.svelte | 2 +- src/lib/components/chat/ChatControls.svelte | 2 +- src/lib/components/common/Drawer.svelte | 7 +++---- .../components/workspace/Knowledge/KnowledgeBase.svelte | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/lib/components/channel/Channel.svelte b/src/lib/components/channel/Channel.svelte index ce2aa54f1..a0de69570 100644 --- a/src/lib/components/channel/Channel.svelte +++ b/src/lib/components/channel/Channel.svelte @@ -262,7 +262,7 @@ {#if threadId !== null} { + onClose={() => { threadId = null; }} > diff --git a/src/lib/components/chat/ChatControls.svelte b/src/lib/components/chat/ChatControls.svelte index 92c7e4d8d..64fd8d92d 100644 --- a/src/lib/components/chat/ChatControls.svelte +++ b/src/lib/components/chat/ChatControls.svelte @@ -140,7 +140,7 @@ {#if $showControls} { + onClose={() => { showControls.set(false); }} > diff --git a/src/lib/components/common/Drawer.svelte b/src/lib/components/common/Drawer.svelte index 2a0330013..50d5c7dac 100644 --- a/src/lib/components/common/Drawer.svelte +++ b/src/lib/components/common/Drawer.svelte @@ -1,13 +1,12 @@ {#key id} - { - dispatch('update', e.detail); - }} - on:code={(e) => { - dispatch('code', e.detail); - }} - /> + {/key} diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte index 790cf5be9..ac73fb119 100644 --- a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte +++ b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte @@ -1,6 +1,6 @@ @@ -238,10 +240,9 @@ messageChildrenIds = history.messages[currentMessageId].childrenIds; } history.currentId = currentMessageId; - - await tick(); - await updateChat(); - triggerScroll(); + // await tick(); + // await updateChat(); + // triggerScroll(); } }} > diff --git a/src/lib/components/chat/Settings/Interface.svelte b/src/lib/components/chat/Settings/Interface.svelte index c6298173a..45399e616 100644 --- a/src/lib/components/chat/Settings/Interface.svelte +++ b/src/lib/components/chat/Settings/Interface.svelte @@ -855,7 +855,7 @@
- {$i18n.t('Scroll to bottom when switching between branches')} + {$i18n.t('Scroll On Branch Change')}
+ {#if notificationSound} +
+
+
+ {$i18n.t('Always Play Notification Sound')} +
+ + +
+
+ {/if} + {#if $user?.role === 'admin'}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a908fe20d..97976955d 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -26,7 +26,8 @@ isLastActiveTab, isApp, appInfo, - toolServers + toolServers, + playingNotificationSound } from '$lib/stores'; import { goto } from '$app/navigation'; import { page } from '$app/stores'; @@ -259,6 +260,16 @@ const { done, content, title } = data; if (done) { + if ($settings?.notificationSoundAlways ?? false) { + playingNotificationSound.set(true); + + const audio = new Audio(`/audio/notification.mp3`); + audio.play().finally(() => { + // Ensure the global state is reset after the sound finishes + playingNotificationSound.set(false); + }); + } + if ($isLastActiveTab) { if ($settings?.notificationEnabled ?? false) { new Notification(`${title} | Open WebUI`, { From 6fd082d55ffaf6eb226efdeebc7155e3693d2d01 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 19 Apr 2025 23:38:08 -0700 Subject: [PATCH 066/238] enh: html token (allow yt embed) --- .../chat/Messages/Markdown/HTMLToken.svelte | 49 +++++++++++++++++++ .../Markdown/MarkdownInlineTokens.svelte | 12 +---- .../Messages/Markdown/MarkdownTokens.svelte | 12 +---- 3 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 src/lib/components/chat/Messages/Markdown/HTMLToken.svelte diff --git a/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte b/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte new file mode 100644 index 000000000..66ca2ea30 --- /dev/null +++ b/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte @@ -0,0 +1,49 @@ + + +{#if token.type === 'html'} + {#if html && html.includes(']*src="https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9_-]{11})"[^>]*><\/iframe>/)} + {@const match = token.text.match( + /]*src="https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9_-]{11})"[^>]*><\/iframe>/ + )} + {@const ytId = match && match[1]} + {#if ytId} + + {/if} + {:else if token.text.includes(` {/if} - {:else if token.text.includes(` + {/if} {:else if token.text.includes(` {:else} diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 2dbca7759..25aea433b 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -41,8 +41,7 @@ export const replaceTokens = (content, sourceIds, char, user) => { }, { regex: /{{HTML_FILE_ID_([a-f0-9-]+)}}/gi, - replacement: (_, fileId) => - `` + replacement: (_, fileId) => `` } ]; From 317032aa5c62ba108247755fea51f74ea7c63d4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:52:50 +0000 Subject: [PATCH 149/238] build(deps-dev): bump @typescript-eslint/parser from 6.21.0 to 8.31.1 Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.21.0 to 8.31.1. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-version: 8.31.1 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 144 +++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 131 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cabf0974..14324a4e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", "@typescript-eslint/eslint-plugin": "^6.17.0", - "@typescript-eslint/parser": "^6.17.0", + "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", @@ -3687,31 +3687,147 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.1.tgz", + "integrity": "sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/typescript-estree": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", + "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", + "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", + "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", + "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.31.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" } }, "node_modules/@typescript-eslint/scope-manager": { diff --git a/package.json b/package.json index 8e3feab5a..fbaba4cd8 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", "@typescript-eslint/eslint-plugin": "^6.17.0", - "@typescript-eslint/parser": "^6.17.0", + "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", From c5fd40d951baba42111f6d8c205cf25cbf8a0b82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:53:05 +0000 Subject: [PATCH 150/238] build(deps): bump @tiptap/extension-code-block-lowlight Bumps [@tiptap/extension-code-block-lowlight](https://github.com/ueberdosis/tiptap/tree/HEAD/packages/extension-code-block-lowlight) from 2.10.0 to 2.11.9. - [Release notes](https://github.com/ueberdosis/tiptap/releases) - [Changelog](https://github.com/ueberdosis/tiptap/blob/@tiptap/extension-code-block-lowlight@2.11.9/packages/extension-code-block-lowlight/CHANGELOG.md) - [Commits](https://github.com/ueberdosis/tiptap/commits/@tiptap/extension-code-block-lowlight@2.11.9/packages/extension-code-block-lowlight) --- updated-dependencies: - dependency-name: "@tiptap/extension-code-block-lowlight" dependency-version: 2.11.9 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cabf0974..c23899033 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@sveltejs/adapter-node": "^2.0.0", "@sveltejs/svelte-virtual-list": "^3.0.1", "@tiptap/core": "^2.10.0", - "@tiptap/extension-code-block-lowlight": "^2.10.0", + "@tiptap/extension-code-block-lowlight": "^2.11.9", "@tiptap/extension-highlight": "^2.10.0", "@tiptap/extension-placeholder": "^2.10.0", "@tiptap/extension-typography": "^2.10.0", @@ -2969,9 +2969,9 @@ } }, "node_modules/@tiptap/extension-code-block-lowlight": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.10.0.tgz", - "integrity": "sha512-dAv03XIHT5h+sdFmJzvx2FfpfFOOK9SBKHflRUdqTa8eA+0VZNAcPRjvJWVEWqts1fKZDJj774mO28NlhFzk9Q==", + "version": "2.11.9", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.11.9.tgz", + "integrity": "sha512-bB8N59A2aU18/ieyKRZAI0J0xyimmUckYePqBkUX8HFnq8yf9HsM0NPFpqZdK0eqjnZYCXcNwAI3YluLsHuutw==", "license": "MIT", "funding": { "type": "github", diff --git a/package.json b/package.json index 8e3feab5a..f100f16af 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@sveltejs/adapter-node": "^2.0.0", "@sveltejs/svelte-virtual-list": "^3.0.1", "@tiptap/core": "^2.10.0", - "@tiptap/extension-code-block-lowlight": "^2.10.0", + "@tiptap/extension-code-block-lowlight": "^2.11.9", "@tiptap/extension-highlight": "^2.10.0", "@tiptap/extension-placeholder": "^2.10.0", "@tiptap/extension-typography": "^2.10.0", From dc5107a47370cc7ac9217658887bcb7d043b77e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:53:26 +0000 Subject: [PATCH 151/238] build(deps): bump prosemirror-schema-list from 1.4.1 to 1.5.1 Bumps [prosemirror-schema-list](https://github.com/prosemirror/prosemirror-schema-list) from 1.4.1 to 1.5.1. - [Changelog](https://github.com/ProseMirror/prosemirror-schema-list/blob/master/CHANGELOG.md) - [Commits](https://github.com/prosemirror/prosemirror-schema-list/compare/1.4.1...1.5.1) --- updated-dependencies: - dependency-name: prosemirror-schema-list dependency-version: 1.5.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cabf0974..8ad00c472 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,7 +59,7 @@ "prosemirror-markdown": "^1.13.1", "prosemirror-model": "^1.23.0", "prosemirror-schema-basic": "^1.2.3", - "prosemirror-schema-list": "^1.4.1", + "prosemirror-schema-list": "^1.5.1", "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.34.3", "pyodide": "^0.27.3", @@ -9860,9 +9860,10 @@ } }, "node_modules/prosemirror-schema-list": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz", - "integrity": "sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", diff --git a/package.json b/package.json index 8e3feab5a..d00c2de09 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "prosemirror-markdown": "^1.13.1", "prosemirror-model": "^1.23.0", "prosemirror-schema-basic": "^1.2.3", - "prosemirror-schema-list": "^1.4.1", + "prosemirror-schema-list": "^1.5.1", "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.34.3", "pyodide": "^0.27.3", From efc163fedeeef6e2a3789757a8d9b645e539a4db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:53:31 +0000 Subject: [PATCH 152/238] build(deps): bump codemirror-lang-hcl from 0.0.0-beta.2 to 0.1.0 Bumps codemirror-lang-hcl from 0.0.0-beta.2 to 0.1.0. --- updated-dependencies: - dependency-name: codemirror-lang-hcl dependency-version: 0.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cabf0974..4b0671ca4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "bits-ui": "^0.19.7", "codemirror": "^6.0.1", "codemirror-lang-elixir": "^4.0.0", - "codemirror-lang-hcl": "^0.0.0-beta.2", + "codemirror-lang-hcl": "^0.1.0", "crc-32": "^1.2.2", "dayjs": "^1.11.10", "dompurify": "^3.2.5", @@ -4995,9 +4995,9 @@ } }, "node_modules/codemirror-lang-hcl": { - "version": "0.0.0-beta.2", - "resolved": "https://registry.npmjs.org/codemirror-lang-hcl/-/codemirror-lang-hcl-0.0.0-beta.2.tgz", - "integrity": "sha512-R3ew7Z2EYTdHTMXsWKBW9zxnLoLPYO+CrAa3dPZjXLrIR96Q3GR4cwJKF7zkSsujsnWgwRQZonyWpXYXfhQYuQ==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/codemirror-lang-hcl/-/codemirror-lang-hcl-0.1.0.tgz", + "integrity": "sha512-duwKEaQDhkJWad4YQ9pv4282BS6hCdR+gS/qTAj3f9bypXNNZ42bIN43h9WK3DjyZRENtVlUQdrQM1sA44wHmA==", "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", diff --git a/package.json b/package.json index 8e3feab5a..b39956f08 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "bits-ui": "^0.19.7", "codemirror": "^6.0.1", "codemirror-lang-elixir": "^4.0.0", - "codemirror-lang-hcl": "^0.0.0-beta.2", + "codemirror-lang-hcl": "^0.1.0", "crc-32": "^1.2.2", "dayjs": "^1.11.10", "dompurify": "^3.2.5", From 0b84863d762c5281fc150b9fedab0ba08cbab6a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:54:49 +0000 Subject: [PATCH 153/238] build(deps): bump rapidocr-onnxruntime from 1.3.24 to 1.4.4 in /backend Bumps [rapidocr-onnxruntime](https://github.com/RapidAI/RapidOCR) from 1.3.24 to 1.4.4. - [Release notes](https://github.com/RapidAI/RapidOCR/releases) - [Commits](https://github.com/RapidAI/RapidOCR/compare/v1.3.24...v1.4.4) --- updated-dependencies: - dependency-name: rapidocr-onnxruntime dependency-version: 1.4.4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- backend/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 5ba6a84d4..1073225de 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -81,7 +81,7 @@ azure-ai-documentintelligence==1.0.0 pillow==11.1.0 opencv-python-headless==4.11.0.86 -rapidocr-onnxruntime==1.3.24 +rapidocr-onnxruntime==1.4.4 rank-bm25==0.2.2 onnxruntime==1.20.1 From 10f55d39d2e69044171f7f6c94de32a5d49e08b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:54:52 +0000 Subject: [PATCH 154/238] build(deps): update pytest requirement in /backend Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.3.2...8.3.5) --- updated-dependencies: - dependency-name: pytest dependency-version: 8.3.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- backend/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 5ba6a84d4..5bb326859 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -107,7 +107,7 @@ google-auth-oauthlib ## Tests docker~=7.1.0 -pytest~=8.3.2 +pytest~=8.3.5 pytest-docker~=3.1.1 googleapis-common-protos==1.63.2 From 753d530cd024cb8659d7505d0442d10c4e152229 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:54:56 +0000 Subject: [PATCH 155/238] build(deps): bump elasticsearch from 8.17.1 to 9.0.1 in /backend Bumps [elasticsearch](https://github.com/elastic/elasticsearch-py) from 8.17.1 to 9.0.1. - [Release notes](https://github.com/elastic/elasticsearch-py/releases) - [Commits](https://github.com/elastic/elasticsearch-py/compare/v8.17.1...v9.0.1) --- updated-dependencies: - dependency-name: elasticsearch dependency-version: 9.0.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- backend/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 5ba6a84d4..f3f84b4b6 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -49,7 +49,7 @@ pymilvus==2.5.0 qdrant-client~=1.12.0 opensearch-py==2.8.0 playwright==1.49.1 # Caution: version must match docker-compose.playwright.yaml -elasticsearch==8.17.1 +elasticsearch==9.0.1 pinecone==6.0.2 transformers From 4eaaeb188892c2fb65f31b3c78486de99eeab6c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 02:54:59 +0000 Subject: [PATCH 156/238] build(deps): bump loguru from 0.7.2 to 0.7.3 in /backend Bumps [loguru](https://github.com/Delgan/loguru) from 0.7.2 to 0.7.3. - [Release notes](https://github.com/Delgan/loguru/releases) - [Changelog](https://github.com/Delgan/loguru/blob/master/CHANGELOG.rst) - [Commits](https://github.com/Delgan/loguru/compare/0.7.2...0.7.3) --- updated-dependencies: - dependency-name: loguru dependency-version: 0.7.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- backend/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 5ba6a84d4..8a414ed49 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -31,7 +31,7 @@ APScheduler==3.10.4 RestrictedPython==8.0 -loguru==0.7.2 +loguru==0.7.3 asgiref==3.8.1 # AI libraries From a7cbf62c6812325ef88657759886985940b853f2 Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Thu, 1 May 2025 12:43:19 +0900 Subject: [PATCH 157/238] update Korean translation --- src/lib/i18n/locales/ko-KR/translation.json | 483 ++++++++++---------- 1 file changed, 241 insertions(+), 242 deletions(-) diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index f92bfa659..0f18e9e66 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -1,14 +1,14 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1은 제한 없음을 의미하며, 양의 정수는 특정 제한을 나타냅니다", "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "만료 없음은 's', 'm', 'h', 'd', 'w' 아니면 '-1' 중 하나를 사용하세요.", "(e.g. `sh webui.sh --api --api-auth username_password`)": "(예: `sh webui.sh --api --api-auth 사용자이름_비밀번호`)", "(e.g. `sh webui.sh --api`)": "(예: `sh webui.sh --api`)", "(latest)": "(최근)", "(Ollama)": "", "{{ models }}": "{{ models }}", - "{{COUNT}} Available Tools": "", - "{{COUNT}} hidden lines": "", - "{{COUNT}} Replies": "", + "{{COUNT}} Available Tools": "사용 가능한 도구 {{COUNT}}개", + "{{COUNT}} hidden lines": "숨겨진 줄 {{COUNT}}개", + "{{COUNT}} Replies": "답글 {{COUNT}}개", "{{user}}'s Chats": "{{user}}의 채팅", "{{webUIName}} Backend Required": "{{webUIName}} 백엔드가 필요합니다.", "*Prompt node ID(s) are required for image generation": "사진 생성을 위해 프롬프트 노드 ID가 필요합니다", @@ -16,7 +16,7 @@ "A task model is used when performing tasks such as generating titles for chats and web search queries": "작업 모델은 채팅 및 웹 검색 쿼리에 대한 제목 생성 등의 작업 수행 시 사용됩니다.", "a user": "사용자", "About": "정보", - "Accept autocomplete generation / Jump to prompt variable": "", + "Accept autocomplete generation / Jump to prompt variable": "자동 완성 생성 수락 / 프롬프트 변수로 이동", "Access": "접근", "Access Control": "접근 제어", "Accessible to all users": "모든 사용자가 접근 가능", @@ -46,7 +46,7 @@ "Add text content": "글 추가", "Add User": "사용자 추가", "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 Panel": "관리자 패널", @@ -62,27 +62,27 @@ "Allow Chat Delete": "채팅 삭제 허용", "Allow Chat Deletion": "채팅 삭제 허용", "Allow Chat Edit": "채팅 수정 허용", - "Allow Chat Export": "", - "Allow Chat Share": "", + "Allow Chat Export": "채팅 내보내기 허용", + "Allow Chat Share": "채팅 공유 허용", "Allow File Upload": "파일 업로드 허용", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "채팅에서 여러 모델 허용", "Allow non-local voices": "외부 음성 허용", - "Allow Speech to Text": "", + "Allow Speech to Text": "음성 텍스트 변환 허용", "Allow Temporary Chat": "임시 채팅 허용", - "Allow Text to Speech": "", + "Allow Text to Speech": "텍스트 음성 변환 허용", "Allow User Location": "사용자 위치 활용 허용", "Allow Voice Interruption in Call": "음성 기능에서 음성 방해 허용", - "Allowed Endpoints": "", + "Allowed Endpoints": "허용 엔드포인트", "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.": "", - "Always": "", - "Always Collapse Code Blocks": "", - "Always Expand Details": "", - "Always Play Notification Sound": "", + "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "top_p의 대안으로, 품질과 다양성 간의 균형을 보장하는 것을 목표로 합니다. 매개변수 p는 가장 가능성이 높은 토큰의 확률 대비 고려될 토큰의 최소 확률을 나타냅니다. 예를 들어, p=0.05이고 가장 가능성이 높은 토큰의 확률이 0.9인 경우, 값이 0.045보다 작은 로짓은 필터링됩니다.", + "Always": "항상", + "Always Collapse Code Blocks": "항상 코드 블록 접기", + "Always Expand Details": "항상 세부 정보 펼치기", + "Always Play Notification Sound": "항상 알림 소리 재생", "Amazing": "놀라움", "an assistant": "어시스턴트", - "Analyzed": "", - "Analyzing...": "", + "Analyzed": "분석됨", + "Analyzing...": "분석 중...", "and": "그리고", "and {{COUNT}} more": "그리고 {{COUNT}} 더", "and create a new shared link.": "새로운 공유 링크를 생성합니다.", @@ -99,8 +99,8 @@ "Archive": "보관", "Archive All Chats": "모든 채팅 보관", "Archived Chats": "보관된 채팅", - "archived-chat-export": "", - "Are you sure you want to clear all memories? This action cannot be undone.": "", + "archived-chat-export": "보관된 채팅 내보내기", + "Are you sure you want to clear all memories? This action cannot be undone.": "정말 모든 메모리를 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", "Are you sure you want to delete this channel?": "정말 이 채널을 삭제하시겠습니까?", "Are you sure you want to delete this message?": "정말 이 메세지를 삭제하시겠습니까?", "Are you sure you want to unarchive all archived chats?": "정말 보관된 모든 채팅을 보관 해제하시겠습니까?", @@ -110,16 +110,16 @@ "Ask": "", "Ask a question": "질문하기", "Assistant": "어시스턴트", - "Attach file from knowledge": "", + "Attach file from knowledge": "지식 베이스에서 파일 첨부", "Attention to detail": "세부 사항에 대한 주의", - "Attribute for Mail": "", - "Attribute for Username": "", + "Attribute for Mail": "메일 속성", + "Attribute for Username": "사용자 이름 속성", "Audio": "오디오", "August": "8월", - "Auth": "", - "Authenticate": "", - "Authentication": "", - "Auto": "", + "Auth": "인증", + "Authenticate": "인증하다", + "Authentication": "인증", + "Auto": "자동", "Auto-Copy Response to Clipboard": "응답을 클립보드에 자동 복사", "Auto-playback response": "응답 자동 재생", "Autocomplete Generation": "자동완성 생성", @@ -129,7 +129,7 @@ "AUTOMATIC1111 Base URL": "AUTOMATIC1111 기본 URL", "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 기본 URL 설정이 필요합니다.", "Available list": "가능한 목록", - "Available Tools": "", + "Available Tools": "사용 가능한 도구", "available!": "사용 가능!", "Awful": "형편없음", "Azure AI Speech": "Azure AI 음성", @@ -141,28 +141,28 @@ "Batch Size (num_batch)": "배치 크기 (num_batch)", "before": "이전", "Being lazy": "게으름 피우기", - "Beta": "", + "Beta": "베타", "Bing Search V7 Endpoint": "Bing Search V7 엔드포인트", "Bing Search V7 Subscription Key": "Bing Search V7 구독 키", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", "Brave Search API Key": "Brave Search API 키", - "By {{name}}": "", - "Bypass Embedding and Retrieval": "", - "Calendar": "", + "By {{name}}": "작성자: {{name}}", + "Bypass Embedding and Retrieval": "임베딩 검색 우회", + "Calendar": "캘린더", "Call": "음성 기능", "Call feature is not supported when using Web STT engine": "웹 STT 엔진 사용 시, 음성 기능은 지원되지 않습니다.", "Camera": "카메라", "Cancel": "취소", "Capabilities": "기능", - "Capture": "", - "Certificate Path": "", + "Capture": "캡처", + "Certificate Path": "인증서 경로", "Change Password": "비밀번호 변경", - "Channel Name": "", + "Channel Name": "채널 이름", "Channels": "채널", "Character": "캐릭터", - "Character limit for autocomplete generation input": "", - "Chart new frontiers": "", + "Character limit for autocomplete generation input": "자동 완성 생성 입력 문자 제한", + "Chart new frontiers": "새로운 영역 개척", "Chat": "채팅", "Chat Background Image": "채팅 배경 이미지", "Chat Bubble UI": "버블형 채팅 UI", @@ -181,14 +181,14 @@ "Ciphers": "", "Citation": "인용", "Clear memory": "메모리 초기화", - "Clear Memory": "", - "click here": "", - "Click here for filter guides.": "", + "Clear Memory": "메모리 지우기", + "click here": "여기를 클릭하세요", + "Click here for filter guides.": "필터 가이드를 보려면 여기를 클릭하세요.", "Click here for help.": "도움말을 보려면 여기를 클릭하세요.", "Click here to": "여기를 클릭하면", "Click here to download user import template file.": "사용자 삽입 템플렛 파일을 다운받으려면 여기를 클릭하세요", "Click here to learn more about faster-whisper and see the available models.": "빠른 속삭임에 대해 배우거나 가능한 모델을 보려면 여기를 클릭하세요", - "Click here to see available models.": "", + "Click here to see available models.": "사용 가능한 모델을 보려면 여기를 클릭하세요.", "Click here to select": "선택하려면 여기를 클릭하세요.", "Click here to select a csv file.": "csv 파일을 선택하려면 여기를 클릭하세요.", "Click here to select a py file.": "py 파일을 선택하려면 여기를 클릭하세요.", @@ -197,22 +197,22 @@ "Click on the user role button to change a user's role.": "사용자 역할 버튼을 클릭하여 사용자의 역할을 변경하세요.", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "클립보드 사용 권한이 거절되었습니다. 필요한 접근을 사용하기 위해 브라우져 설정을 확인 부탁드립니다.", "Clone": "복제", - "Clone Chat": "", - "Clone of {{TITLE}}": "", + "Clone Chat": "채팅 복제", + "Clone of {{TITLE}}": "{{TITLE}}의 복제본", "Close": "닫기", "Code execution": "코드 실행", - "Code Execution": "", - "Code Execution Engine": "", - "Code Execution Timeout": "", + "Code Execution": "코드 실행", + "Code Execution Engine": "코드 실행 엔진", + "Code Execution Timeout": "코드 실행 시간 초과", "Code formatted successfully": "성공적으로 코드가 생성되었습니다", - "Code Interpreter": "", - "Code Interpreter Engine": "", - "Code Interpreter Prompt Template": "", - "Collapse": "", + "Code Interpreter": "코드 인터프리터", + "Code Interpreter Engine": "코드 인터프리터 엔진", + "Code Interpreter Prompt Template": "코드 인터프리터 프롬프트 템플릿", + "Collapse": "접기", "Collection": "컬렉션", - "Color": "", + "Color": "색상", "ComfyUI": "ComfyUI", - "ComfyUI API Key": "", + "ComfyUI API Key": "ComfyUI API 키", "ComfyUI Base URL": "ComfyUI 기본 URL", "ComfyUI Base URL is required.": "ComfyUI 기본 URL이 필요합니다.", "ComfyUI Workflow": "ComfyUI 워크플로", @@ -220,41 +220,41 @@ "Command": "명령", "Completions": "완성됨", "Concurrent Requests": "동시 요청 수", - "Configure": "", + "Configure": "구성", "Confirm": "확인", "Confirm Password": "비밀번호 확인", "Confirm your action": "액션 확인", "Confirm your new password": "새로운 비밀번호를 한 번 더 입력해 주세요", - "Connect to your own OpenAI compatible API endpoints.": "", - "Connect to your own OpenAPI compatible external tool servers.": "", - "Connection failed": "", - "Connection successful": "", + "Connect to your own OpenAI compatible API endpoints.": "OpenAI 호환 API 엔드포인트에 연결합니다.", + "Connect to your own OpenAPI compatible external tool servers.": "OpenAPI 호환 외부 도구 서버에 연결합니다.", + "Connection failed": "연결 실패", + "Connection successful": "연결 성공", "Connections": "연결", - "Connections saved successfully": "", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", + "Connections saved successfully": "연결이 성공적으로 저장되었습니다", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "추론 모델의 추론 난이도를 제한합니다. 추론 난이도를 지원하는 특정 공급자의 추론 모델에만 적용됩니다.", "Contact Admin for WebUI Access": "WebUI 접속을 위해서는 관리자에게 연락에 연락하십시오", "Content": "내용", - "Content Extraction Engine": "", + "Content Extraction Engine": "콘텐츠 추출 엔진", "Context Length": "내용 길이", "Continue Response": "대화 계속", "Continue with {{provider}}": "{{provider}}로 계속", "Continue with Email": "", "Continue with 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 the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "", + "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "생성된 텍스트에서 토큰 시퀀스의 반복을 제어합니다. 높은 값(예: 1.5)은 반복에 더 강한 페널티를 부과하고, 낮은 값(예: 1.1)은 더 관대합니다. 1일 경우 비활성화됩니다.", "Controls": "제어", - "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "", + "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "출력의 일관성과 다양성 간의 균형을 제어합니다. 낮은 값은 더 집중되고 일관성 있는 텍스트를 생성합니다.", "Copied": "복사됨", "Copied shared chat URL to clipboard!": "채팅 공유 URL이 클립보드에 복사되었습니다!", "Copied to clipboard": "클립보드에 복사되었습니다", "Copy": "복사", - "Copy Formatted Text": "", + "Copy Formatted Text": "서식 있는 텍스트 복사", "Copy last code block": "마지막 코드 블록 복사", "Copy last response": "마지막 응답 복사", "Copy Link": "링크 복사", "Copy to clipboard": "클립보드에 복사", "Copying to clipboard was successful!": "성공적으로 클립보드에 복사되었습니다!", - "CORS must be properly configured by the provider to allow requests from Open WebUI.": "", + "CORS must be properly configured by the provider to allow requests from Open WebUI.": "Open WebUI의 요청을 허용하려면 공급자가 CORS를 올바르게 구성해야 합니다.", "Create": "생성", "Create a knowledge base": "지식 기반 생성", "Create a model": "모델 생성", @@ -269,18 +269,18 @@ "Created At": "생성일", "Created by": "생성자", "CSV Import": "CSV 가져오기", - "Ctrl+Enter to Send": "", + "Ctrl+Enter to Send": "Ctrl+Enter로 보내기", "Current Model": "현재 모델", "Current Password": "현재 비밀번호", "Custom": "사용자 정의", - "Danger Zone": "", + "Danger Zone": "위험 기능", "Dark": "다크", "Database": "데이터베이스", "December": "12월", "Default": "기본값", "Default (Open AI)": "기본값 (Open AI)", "Default (SentenceTransformers)": "기본값 (SentenceTransformers)", - "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model’s built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "기본 모드는 실행 전에 도구를 한 번 호출하여 더 넓은 범위의 모델과 작동합니다. 네이티브 모드는 모델의 내장 도구 호출 기능을 활용하지만, 모델이 본질적으로 이 기능을 지원해야 합니다.", "Default Model": "기본 모델", "Default model updated": "기본 모델이 업데이트되었습니다.", "Default Models": "기본 모델", @@ -288,8 +288,8 @@ "Default permissions updated successfully": "성공적으로 기본 권한이 수정되었습니다", "Default Prompt Suggestions": "기본 프롬프트 제안", "Default to 389 or 636 if TLS is enabled": "", - "Default to ALL": "", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", + "Default to ALL": "기본값: 모두", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "집중적이고 관련성 있는 콘텐츠 추출을 위해 세분화된 검색을 기본값으로 사용합니다. 대부분의 경우 권장됩니다.", "Default User Role": "기본 사용자 역할", "Delete": "삭제", "Delete a model": "모델 삭제", @@ -300,8 +300,8 @@ "Delete chat?": "채팅을 삭제하겠습니까?", "Delete folder?": "폴더를 삭제하시겠습니까?", "Delete function?": "함수를 삭제하시겠습니까?", - "Delete Message": "", - "Delete message?": "", + "Delete Message": "메시지 삭제", + "Delete message?": "메시지를 삭제하시겠습니까?", "Delete prompt?": "프롬프트를 삭제하시겠습니까?", "delete this link": "이 링크를 삭제합니다.", "Delete tool?": "도구를 삭제하시겠습니까?", @@ -311,20 +311,20 @@ "Deleted User": "삭제된 사용자", "Describe your knowledge base and objectives": "지식 기반에 대한 설명과 목적을 입력하세요", "Description": "설명", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "아티팩트 자동 감지", "Didn't fully follow instructions": "완전히 지침을 따르지 않음", "Direct": "", - "Direct Connections": "", - "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", - "Direct Connections settings updated": "", + "Direct Connections": "직접 연결", + "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "직접 연결을 통해 사용자는 자체 OpenAI 호환 API 엔드포인트에 연결할 수 있습니다.", + "Direct Connections settings updated": "직접 연결 설정이 업데이트되었습니다", "Direct Tool Servers": "", "Disabled": "제한됨", "Discover a function": "함수 검색", "Discover a model": "모델 검색", "Discover a prompt": "프롬프트 검색", "Discover a tool": "도구 검색", - "Discover how to use Open WebUI and seek support from the community.": "", - "Discover wonders": "", + "Discover how to use Open WebUI and seek support from the community.": "Open WebUI 사용 방법을 알아보고 커뮤니티에서 지원을 받으세요.", + "Discover wonders": "놀라움을 체험하세요", "Discover, download, and explore custom functions": "사용자 정의 함수 검색, 다운로드 및 탐색", "Discover, download, and explore custom prompts": "사용자 정의 프롬프트 검색, 다운로드 및 탐색", "Discover, download, and explore custom tools": "사용자 정의 도구 검색, 다운로드 및 탐색", @@ -333,145 +333,145 @@ "Display": "", "Display Emoji in Call": "음성기능에서 이모지 표시", "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 tools from sources you do not fully trust.": "불분명한 출처를 가진 도구를 설치하지마세요", "Docling": "", - "Docling Server URL required.": "", + "Docling Server URL required.": "Docling 서버 URL이 필요합니다.", "Document": "문서", "Document Intelligence": "", - "Document Intelligence endpoint and key required.": "", + "Document Intelligence endpoint and key required.": "Document Intelligence 엔드포인트 및 키가 필요합니다.", "Documentation": "문서 조사", "Documents": "문서", "does not make any external connections, and your data stays securely on your locally hosted server.": "외부와 어떠한 연결도 하지 않으며, 데이터는 로컬에서 호스팅되는 서버에 안전하게 유지됩니다.", - "Domain Filter List": "", + "Domain Filter List": "도메인 필터 목록", "Don't have an account?": "계정이 없으신가요?", "don't install random functions from sources you don't trust.": "불분명한 출처를 가진 임의의 함수를 설치하지마세요", "don't install random tools from sources you don't trust.": "불분명한 출처를 가진 임의의 도구를 설치하지마세요", "Don't like the style": "스타일이 마음에 안 드시나요?", "Done": "완료됨", "Download": "다운로드", - "Download as SVG": "", + "Download as SVG": "SVG로 다운로드", "Download canceled": "다운로드 취소", "Download Database": "데이터베이스 다운로드", - "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": "그리기", "Drop any files here to add to the conversation": "대화에 추가할 파일을 여기에 드롭하세요.", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "예: '30초','10분'. 유효한 시간 단위는 '초', '분', '시'입니다.", - "e.g. \"json\" or a JSON schema": "", - "e.g. 60": "", - "e.g. A filter to remove profanity from text": "", - "e.g. My Filter": "", - "e.g. My Tools": "", - "e.g. my_filter": "", - "e.g. my_tools": "", - "e.g. Tools for performing various operations": "", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g. \"json\" or a JSON schema": "예: \\\"json\\\" 또는 JSON 스키마", + "e.g. 60": "예: 60", + "e.g. A filter to remove profanity from text": "예: 텍스트에서 비속어를 제거하는 필터", + "e.g. My Filter": "예: 내 필터", + "e.g. My Tools": "예: 내 도구", + "e.g. my_filter": "예: my_filter", + "e.g. my_tools": "예: my_tools", + "e.g. Tools for performing various operations": "예: 다양한 작업을 수행하는 도구", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "예: en-US, ja-JP (자동 감지를 위해 비워 두세요)", "Edit": "편집", "Edit Arena Model": "아레나 모델 편집", - "Edit Channel": "", - "Edit Connection": "", - "Edit Default Permissions": "", + "Edit Channel": "채널 편집", + "Edit Connection": "연결 편집", + "Edit Default Permissions": "기본 권한 편집", "Edit Memory": "메모리 편집", "Edit User": "사용자 편집", - "Edit User Group": "", + "Edit User Group": "사용자 그룹 편집", "ElevenLabs": "ElevenLabs", "Email": "이메일", "Embark on adventures": "", - "Embedding": "", + "Embedding": "임베딩", "Embedding Batch Size": "임베딩 배치 크기", "Embedding Model": "임베딩 모델", "Embedding Model Engine": "임베딩 모델 엔진", "Embedding model set to \"{{embedding_model}}\"": "임베딩 모델을 \"{{embedding_model}}\"로 설정함", "Enable API Key": "API 키 활성화", - "Enable autocomplete generation for chat messages": "", - "Enable Code Execution": "", - "Enable Code Interpreter": "", + "Enable autocomplete generation for chat messages": "채팅 메시지에 대한 자동 완성 생성 활성화", + "Enable Code Execution": "코드 실행 활성화", + "Enable Code Interpreter": "코드 인터프리터 활성화", "Enable Community Sharing": "커뮤니티 공유 활성화", - "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "", - "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "", + "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "모델 데이터가 RAM에서 스왑 아웃되는 것을 방지하기 위해 메모리 잠금(mlock)을 활성화합니다. 이 옵션은 모델의 작업 페이지 집합을 RAM에 잠가 디스크로 스왑 아웃되지 않도록 보장합니다. 이는 페이지 폴트를 피하고 빠른 데이터 액세스를 보장하여 성능을 유지하는 데 도움이 될 수 있습니다.", + "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "모델 데이터를 로드하기 위해 메모리 매핑(mmap)을 활성화합니다. 이 옵션을 사용하면 시스템이 디스크 파일을 RAM에 있는 것처럼 처리하여 디스크 스토리지를 RAM의 확장으로 사용할 수 있습니다. 이는 더 빠른 데이터 액세스를 허용하여 모델 성능을 향상시킬 수 있습니다. 그러나 모든 시스템에서 올바르게 작동하지 않을 수 있으며 상당한 양의 디스크 공간을 소비할 수 있습니다.", "Enable Message Rating": "메시지 평가 활성화", - "Enable Mirostat sampling for controlling perplexity.": "", + "Enable Mirostat sampling for controlling perplexity.": "퍼플렉서티 제어를 위해 Mirostat 샘플링 활성화", "Enable New Sign Ups": "새 회원가입 활성화", "Enabled": "활성화됨", - "Enforce Temporary Chat": "", + "Enforce Temporary Chat": "임시 채팅 강제 적용", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV 파일에 이름, 이메일, 비밀번호, 역할 4개의 열이 순서대로 포함되어 있는지 확인하세요.", "Enter {{role}} message here": "여기에 {{role}} 메시지 입력", "Enter a detail about yourself for your LLMs to recall": "자신에 대한 세부사항을 입력하여 LLM들이 기억할 수 있도록 하세요.", "Enter api auth string (e.g. username:password)": "API 인증 문자 입력 (예: 사용자 이름:비밀번호)", - "Enter Application DN": "", - "Enter Application DN Password": "", + "Enter Application DN": "애플리케이션 DN 입력", + "Enter Application DN Password": "애플리케이션 DN 비밀번호 입력", "Enter Bing Search V7 Endpoint": "Bing Search V7 엔드포인트 입력", "Enter Bing Search V7 Subscription Key": "Bing Search V7 구독 키 입력", - "Enter Bocha Search API Key": "", + "Enter Bocha Search API Key": "Bocha 검색 API 키 입력", "Enter Brave Search API Key": "Brave Search API Key 입력", - "Enter certificate path": "", + "Enter certificate path": "인증서 경로 입력", "Enter CFG Scale (e.g. 7.0)": "CFG Scale 입력 (예: 7.0)", "Enter Chunk Overlap": "청크 오버랩 입력", "Enter Chunk Size": "청크 크기 입력", - "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", + "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "쉼표로 구분된 \\\"토큰:편향_값\\\" 쌍 입력 (예: 5432:100, 413:-100)", "Enter description": "설명 입력", - "Enter Docling Server URL": "", - "Enter Document Intelligence Endpoint": "", - "Enter Document Intelligence Key": "", - "Enter domains separated by commas (e.g., example.com,site.org)": "", - "Enter Exa API Key": "", - "Enter External Web Loader API Key": "", - "Enter External Web Loader URL": "", - "Enter External Web Search API Key": "", - "Enter External Web Search URL": "", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", + "Enter Docling Server URL": "Docling 서버 URL 입력", + "Enter Document Intelligence Endpoint": "Document Intelligence 엔드포인트 입력", + "Enter Document Intelligence Key": "Document Intelligence 키 입력", + "Enter domains separated by commas (e.g., example.com,site.org)": "쉼표로 구분된 도메인 입력 (예: example.com, site.org)", + "Enter Exa API Key": "Exa API 키 입력", + "Enter External Web Loader API Key": "외부 웹 로더 API 키 입력", + "Enter External Web Loader URL": "외부 웹 로더 URL 입력", + "Enter External Web Search API Key": "외부 웹 검색 API 키 입력", + "Enter External Web Search URL": "외부 웹 검색 URL 입력", + "Enter Firecrawl API Base URL": "Firecrawl API 기본 URL 입력", + "Enter Firecrawl API Key": "Firecrawl API 키 입력", "Enter Github Raw URL": "Github Raw URL 입력", "Enter Google PSE API Key": "Google PSE API 키 입력", "Enter Google PSE Engine Id": "Google PSE 엔진 ID 입력", "Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)", "Enter Jina API Key": "Jina API 키 입력", - "Enter Jupyter Password": "", - "Enter Jupyter Token": "", - "Enter Jupyter URL": "", + "Enter Jupyter Password": "Jupyter 비밀번호 입력", + "Enter Jupyter Token": "Jupyter 토큰 입력", + "Enter Jupyter URL": "Jupyter URL 입력", "Enter Kagi Search API Key": "Kagi Search API 키 입력", - "Enter Key Behavior": "", + "Enter Key Behavior": "키 동작 입력", "Enter language codes": "언어 코드 입력", - "Enter Mistral API Key": "", + "Enter Mistral API Key": "Mistral API 키 입력", "Enter Model ID": "모델 ID 입력", "Enter model tag (e.g. {{modelTag}})": "모델 태그 입력(예: {{modelTag}})", "Enter Mojeek Search API Key": "Mojeek Search API 키 입력", "Enter Number of Steps (e.g. 50)": "단계 수 입력(예: 50)", - "Enter Perplexity API Key": "", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", + "Enter Perplexity API Key": "Perplexity API 키 입력", + "Enter Playwright Timeout": "Playwright 시간 초과 입력", + "Enter Playwright WebSocket URL": "Playwright WebSocket URL 입력", "Enter proxy URL (e.g. https://user:password@host:port)": "프록시 URL 입력(예: https://user:password@host:port)", - "Enter reasoning effort": "", + "Enter reasoning effort": "추론 난이도", "Enter Sampler (e.g. Euler a)": "샘플러 입력 (예: 오일러 a(Euler a))", "Enter Scheduler (e.g. Karras)": "스케쥴러 입력 (예: 카라스(Karras))", "Enter Score": "점수 입력", "Enter SearchApi API Key": "SearchApi API 키 입력", "Enter SearchApi Engine": "SearchApi 엔진 입력", "Enter Searxng Query URL": "Searxng 쿼리 URL 입력", - "Enter Seed": "", - "Enter SerpApi API Key": "", - "Enter SerpApi Engine": "", + "Enter Seed": "Seed 입력", + "Enter SerpApi API Key": "SerpApi API 키 입력", + "Enter SerpApi Engine": "SerpApi 엔진 입력", "Enter Serper API Key": "Serper API 키 입력", "Enter Serply API Key": "Serply API 키 입력", "Enter Serpstack API Key": "Serpstack API 키 입력", - "Enter server host": "", - "Enter server label": "", - "Enter server port": "", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", + "Enter server host": "서버 호스트 입력", + "Enter server label": "서버 레이블 입력", + "Enter server port": "서버 포트 입력", + "Enter Sougou Search API sID": "Sougou 검색 API sID 입력", + "Enter Sougou Search API SK": "Sougou 검색 API SK 입력", "Enter stop sequence": "중지 시퀀스 입력", "Enter system prompt": "시스템 프롬프트 입력", - "Enter system prompt here": "", + "Enter system prompt here": "여기에 시스템 프롬프트 입력", "Enter Tavily API Key": "Tavily API 키 입력", - "Enter Tavily Extract Depth": "", + "Enter Tavily Extract Depth": "Tavily 추출 깊이 입력", "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUI의 공개 URL을 입력해 주세요. 이 URL은 알림에서 링크를 생성하는 데 사용합니다.", "Enter Tika Server URL": "Tika 서버 URL 입력", - "Enter timeout in seconds": "", - "Enter to Send": "", + "Enter timeout in seconds": "시간 초과(초) 입력", + "Enter to Send": "Enter로 보내기", "Enter Top K": "Top K 입력", - "Enter Top K Reranker": "", + "Enter Top K Reranker": "Top K 리랭커 입력", "Enter URL (e.g. http://127.0.0.1:7860/)": "URL 입력(예: http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "URL 입력(예: http://localhost:11434)", "Enter your current password": "현재 비밀번호를 입력해 주세요", @@ -486,23 +486,23 @@ "Enter your webhook URL": "웹훅 URL을 입력해 주세요", "Error": "오류", "ERROR": "오류", - "Error accessing Google Drive: {{error}}": "", - "Error uploading file: {{error}}": "", + "Error accessing Google Drive: {{error}}": "Google Drive 액세스 오류: {{error}}", + "Error uploading file: {{error}}": "파일 업로드 오류: {{error}}", "Evaluations": "평가", - "Exa API Key": "", - "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", - "Example: ALL": "", - "Example: mail": "", - "Example: ou=users,dc=foo,dc=example": "", - "Example: sAMAccountName or uid or userPrincipalName": "", - "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "", + "Exa API Key": "Exa API 키", + "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "예: (&(objectClass=inetOrgPerson)(uid=%s))", + "Example: ALL": "예: ALL", + "Example: mail": "예: mail", + "Example: ou=users,dc=foo,dc=example": "예: ou=users,dc=foo,dc=example", + "Example: sAMAccountName or uid or userPrincipalName": "예: sAMAccountName 또는 uid 또는 userPrincipalName", + "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "라이선스의 사용자 수를 초과했습니다. 사용자 수를 늘리려면 지원팀에 문의하세요.", "Exclude": "미포함", - "Execute code for analysis": "", - "Executing **{{NAME}}**...": "", - "Expand": "", + "Execute code for analysis": "분석을 위한 코드 실행", + "Executing **{{NAME}}**...": "**{{NAME}}** 실행 중...", + "Expand": "펼치기", "Experimental": "실험적", - "Explain": "", - "Explain this section to me in more detail": "", + "Explain": "설명", + "Explain this section to me in more detail": "이 섹션을 더 자세히 설명해주세요", "Explore the cosmos": "", "Export": "내보내기", "Export All Archived Chats": "", @@ -514,25 +514,25 @@ "Export Models": "모델 내보내기", "Export Presets": "프리셋 내보내기", "Export Prompts": "프롬프트 내보내기", - "Export to CSV": "", + "Export to CSV": "CSV로 내보내기", "Export Tools": "도구 내보내기", - "External": "", + "External": "외부", "External Models": "외부 모델", - "External Web Loader API Key": "", - "External Web Loader URL": "", - "External Web Search API Key": "", - "External Web Search URL": "", + "External Web Loader API Key": "외부 웹 로더 API 키", + "External Web Loader URL": "외부 웹 로더 URL", + "External Web Search API Key": "외부 웹 검색 API 키", + "External Web Search URL": "외부 웹 검색 URL", "Failed to add file.": "파일추가에 실패했습니다", - "Failed to connect to {{URL}} OpenAPI tool server": "", + "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI 도구 서버 연결 실패", "Failed to create API Key.": "API 키 생성에 실패했습니다.", - "Failed to fetch models": "", - "Failed to load file content.": "", + "Failed to fetch models": "모델 가져오기 실패", + "Failed to load file content.": "파일 내용 로드 실패.", "Failed to read clipboard contents": "클립보드 내용 가져오기를 실패하였습니다.", - "Failed to save connections": "", - "Failed to save models configuration": "", + "Failed to save connections": "연결 저장 실패", + "Failed to save models configuration": "모델 구성 저장 실패", "Failed to update settings": "설정 업데이트에 실패하였습니다.", "Failed to upload file.": "파일 업로드에 실패했습니다", - "Features": "", + "Features": "기능", "Features Permissions": "기능 권한", "February": "2월", "Feedback History": "피드백 기록", @@ -545,14 +545,14 @@ "File not found.": "파일을 찾을 수 없습니다.", "File removed successfully.": "성공적으로 파일이 제거되었습니다", "File size should not exceed {{maxSize}} MB.": "파일 사이즈가 {{maxSize}} MB를 초과하면 안됩니다.", - "File uploaded successfully": "", + "File uploaded successfully": "파일이 성공적으로 업로드되었습니다", "Files": "파일", "Filter is now globally disabled": "전반적으로 필터 비활성화됨", "Filter is now globally enabled": "전반적으로 필터 활성화됨", "Filters": "필터", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Fingerprint spoofing 감지: 이니셜을 아바타로 사용할 수 없습니다. 기본 프로필 이미지로 설정합니다.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "Firecrawl API 기본 URL", + "Firecrawl API Key": "Firecrawl API 키", "Fluidly stream large external response chunks": "대규모 외부 응답 청크를 유연하게 스트리밍", "Focus chat input": "채팅 입력창에 포커스", "Folder deleted successfully": "성공적으로 폴터가 생성되었습니다", @@ -563,33 +563,33 @@ "Forge new paths": "", "Form": "폼", "Format your variables using brackets like this:": "변수를 다음과 같이 괄호를 사용하여 생성하세요", - "Forwards system user session credentials to authenticate": "", + "Forwards system user session credentials to authenticate": "인증을 위해 시스템 사용자 세션 자격 증명 전달", "Frequency Penalty": "빈도 페널티", "Full Context Mode": "", "Function": "함수", - "Function Calling": "", + "Function Calling": "함수 호출", "Function created successfully": "성공적으로 함수가 생성되었습니다", "Function deleted successfully": "성공적으로 함수가 삭제되었습니다", - "Function Description": "", - "Function ID": "", + "Function Description": "함수 설명", + "Function ID": "함수 ID", "Function is now globally disabled": "전반적으로 함수 비활성화됨", "Function is now globally enabled": "전반적으로 함수 활성화됨", - "Function Name": "", + "Function Name": "함수 이름", "Function updated successfully": "성공적으로 함수가 업데이트되었습니다", "Functions": "함수", "Functions allow arbitrary code execution": "함수로 임이의 코드 실행 허용하기", "Functions allow arbitrary code execution.": "함수가 임이의 코드를 실행하도록 허용하였습니다", "Functions imported successfully": "성공적으로 함수가 가져왔습니다", "Gemini": "", - "Gemini API Config": "", - "Gemini API Key is required.": "", + "Gemini API Config": "Gemini API 구성", + "Gemini API Key is required.": "Gemini API 키가 필요합니다.", "General": "일반", "Generate an image": "", "Generate Image": "이미지 생성", "Generate prompt pair": "", "Generating search query": "검색 쿼리 생성", - "Get started": "", - "Get started with {{WEBUI_NAME}}": "", + "Get started": "시작하기", + "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} 시작하기", "Global": "글로벌", "Good Response": "좋은 응답", "Google Drive": "", @@ -609,13 +609,13 @@ "Hex Color": "", "Hex Color - Leave empty for default color": "", "Hide": "숨기기", - "Hide Model": "", - "Home": "", - "Host": "", + "Hide Model": "모델 숨기기", + "Home": "홈", + "Host": "호스트", "How can I help you today?": "오늘 어떻게 도와드릴까요?", "How would you rate this response?": "이 응답을 어떻게 평가하시겠어요?", "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", "iframe Sandbox Allow Forms": "", "iframe Sandbox Allow Same Origin": "", @@ -626,8 +626,8 @@ "Image Generation (Experimental)": "이미지 생성(실험적)", "Image Generation Engine": "이미지 생성 엔진", "Image Max Compression Size": "이미지 최대 압축 크기", - "Image Prompt Generation": "", - "Image Prompt Generation Prompt": "", + "Image Prompt Generation": "이미지 프롬프트 생성", + "Image Prompt Generation Prompt": "이미지 프롬프트를 생성하기 위한 프롬프트", "Image Settings": "이미지 설정", "Images": "이미지", "Import Chats": "채팅 가져오기", @@ -646,12 +646,12 @@ "Input commands": "명령어 입력", "Install from Github URL": "Github URL에서 설치", "Instant Auto-Send After Voice Transcription": "음성 변환 후 즉시 자동 전송", - "Integration": "", + "Integration": "통합", "Interface": "인터페이스", "Invalid file format.": "잘못된 파일 형식", - "Invalid JSON schema": "", + "Invalid JSON schema": "잘못된 JSON 스키마", "Invalid Tag": "잘못된 태그", - "is typing...": "", + "is typing...": "입력 중...", "January": "1월", "Jina API Key": "Jina API 키", "join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.", @@ -659,8 +659,8 @@ "JSON Preview": "JSON 미리 보기", "July": "7월", "June": "6월", - "Jupyter Auth": "", - "Jupyter URL": "", + "Jupyter Auth": "Jupyter 인증", + "Jupyter URL": "Jupyter URL", "JWT Expiration": "JWT 만료", "JWT Token": "JWT 토큰", "Kagi Search API Key": "Kagi Search API 키", @@ -682,27 +682,26 @@ "Language Locales": "", "Last Active": "최근 활동", "Last Modified": "마지막 수정", - "Last reply": "", + "Last reply": "마지막 답글", "LDAP": "", - "LDAP server updated": "", + "LDAP server updated": "LDAP 서버가 업데이트되었습니다", "Leaderboard": "리더보드", - "Learn more about OpenAPI tool servers.": "", + "Learn more about OpenAPI tool servers.": "OpenAPI 도구 서버에 대해 자세히 알아보세요.", "Leave empty for unlimited": "무제한을 위해 빈칸으로 남겨두세요", - "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "", - "Leave empty to include all models from \"{{url}}/models\" endpoint": "", - "Leave empty to include all models or select specific models": "특정 모델을 선택하거나 모든 모델을 포함하고 싶으면 빈칸으로 남겨두세요", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "\\\"{{url}}/api/tags\\\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "\\\"{{url}}/models\\\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", "Leave empty to use the default prompt, or enter a custom prompt": "기본 프롬프트를 사용하기 위해 빈칸으로 남겨두거나, 커스텀 프롬프트를 입력하세요", - "Leave model field empty to use the default model.": "", - "License": "", + "Leave model field empty to use the default model.": "기본 모델을 사용하려면 모델 필드를 비워 두세요.", + "License": "라이선스", "Light": "라이트", "Listening...": "듣는 중...", - "Llama.cpp": "", + "Llama.cpp": "Llama.cpp", "LLMs can make mistakes. Verify important information.": "LLM에 오류가 있을 수 있습니다. 중요한 정보는 확인이 필요합니다.", - "Loader": "", - "Loading Kokoro.js...": "", + "Loader": "로더", + "Loading Kokoro.js...": "Kokoro.js 로딩 중...", "Local": "", "Local Models": "로컬 모델", - "Location access not allowed": "", + "Location access not allowed": "위치 접근이 허용되지 않음", "Logit Bias": "", "Lost": "패배", "LTR": "LTR", @@ -710,13 +709,13 @@ "Make sure to enclose them with": "꼭 다음으로 감싸세요:", "Make sure to export a workflow.json file as API format from ComfyUI.": "꼭 workflow.json 파일을 ComfyUI의 API 형식대로 내보내세요", "Manage": "관리", - "Manage Direct Connections": "", - "Manage Models": "", - "Manage Ollama": "", + "Manage Direct Connections": "다이렉트 연결 관리", + "Manage Models": "모델 관리", + "Manage Ollama": "Ollama 관리", "Manage Ollama API Connections": "Ollama API 연결 관리", "Manage OpenAI API Connections": "OpenAI API 연결 관리", "Manage Pipelines": "파이프라인 관리", - "Manage Tool Servers": "", + "Manage Tool Servers": "툴 서버 관리", "March": "3월", "Max Tokens (num_predict)": "최대 토큰(num_predict)", "Max Upload Count": "업로드 최대 수", @@ -734,26 +733,26 @@ "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이 있는 사용자는 공유된 채팅을 볼 수 있습니다.", "Microsoft OneDrive": "", - "Microsoft OneDrive (personal)": "", - "Microsoft OneDrive (work/school)": "", + "Microsoft OneDrive (personal)": "Microsoft OneDrive (개인용)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive (회사/학교용)", "Min P": "최소 P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", "Mirostat Tau": "Mirostat Tau", "Mistral OCR": "", - "Mistral OCR API Key required.": "", + "Mistral OCR API Key required.": "Mistral OCR API 키가 필요합니다.", "Model": "모델", "Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' 모델이 성공적으로 다운로드되었습니다.", "Model '{{modelTag}}' is already in queue for downloading.": "'{{modelTag}}' 모델은 이미 다운로드 대기열에 있습니다.", "Model {{modelId}} not found": "{{modelId}} 모델을 찾을 수 없습니다.", "Model {{modelName}} is not vision capable": "{{modelName}} 모델은 비전을 사용할 수 없습니다.", "Model {{name}} is now {{status}}": "{{name}} 모델은 이제 {{status}} 상태입니다.", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", + "Model {{name}} is now hidden": "{{name}} 모델이 이제 숨겨짐", + "Model {{name}} is now visible": "{{name}} 모델이 이제 표시됨", "Model accepts image inputs": "모델이 이미지 삽입을 허용합니다", "Model created successfully!": "성공적으로 모델이 생성되었습니다", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "모델 파일 시스템 경로가 감지되었습니다. 업데이트하려면 모델 단축 이름이 필요하며 계속할 수 없습니다.", - "Model Filtering": "", + "Model Filtering": "모델 필터링", "Model ID": "모델 ID", "Model IDs": "", "Model Name": "모델 이름", @@ -764,20 +763,20 @@ "Modelfile Content": "Modelfile 내용", "Models": "모델", "Models Access": "모델 접근", - "Models configuration saved successfully": "", - "Models Public Sharing": "", + "Models configuration saved successfully": "모델 구성이 성공적으로 저장되었습니다", + "Models Public Sharing": "모델 공개 공유", "Mojeek Search API Key": "Mojeek Search API 키", "more": "더보기", "More": "더보기", "Name": "이름", "Name your knowledge base": "지식 기반 이름을 지정하세요", - "Native": "", + "Native": "네이티브", "New Chat": "새 채팅", "New Folder": "", "New Password": "새 비밀번호", "new-channel": "", "No content found": "내용을 찾을 수 없음", - "No content found in file.": "", + "No content found in file.": "파일에서 내용을 찾을 수 없습니다.", "No content to speak": "음성 출력할 내용을 찾을 수 없음", "No distance available": "거리 불가능", "No feedbacks found": "피드백 없음", @@ -785,10 +784,10 @@ "No files found.": "파일 없음", "No groups with access, add a group to grant access": "접근 권한이 있는 그룹이 없습니다. 접근 권한을 부여하려면 그룹을 추가하세요.", "No HTML, CSS, or JavaScript content found.": "HTML, CSS, JavaScript이 발견되지 않음", - "No inference engine with management support found": "", + "No inference engine with management support found": "관리 지원이 포함된 추론 엔진을 찾을 수 없음", "No knowledge found": "지식 기반 없음", - "No memories to clear": "", - "No model IDs": "", + "No memories to clear": "지울 메모리 없음", + "No model IDs": "모델 ID 없음", "No models found": "모델 없음", "No models selected": "", "No results found": "결과 없음", @@ -829,7 +828,7 @@ "Open file": "파일 열기", "Open in full screen": "전체화면으로 열기", "Open new chat": "새 채팅 열기", - "Open WebUI can use tools provided by any OpenAPI server.": "", + "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI는 모든 OpenAPI 서버에서 제공하는 도구를 사용할 수 있습니다.", "Open WebUI uses faster-whisper internally.": "Open WebUI는 내부적으로 패스트 위스퍼를 사용합니다.", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI는 SpeechT5와 CMU Arctic 스피커 임베딩을 사용합니다.", "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "열린 WebUI 버젼(v{{OPEN_WEBUI_VERSION}})은 최소 버젼 (v{{REQUIRED_VERSION}})보다 낮습니다", @@ -839,7 +838,7 @@ "OpenAI API Key is required.": "OpenAI API 키가 필요합니다.", "OpenAI API settings updated": "", "OpenAI URL/Key required.": "OpenAI URL/키가 필요합니다.", - "openapi.json Path": "", + "openapi.json Path": "openapi.json 경로", "or": "또는", "Organize your users": "사용자를 ", "Other": "기타", @@ -856,7 +855,7 @@ "Permission denied when accessing microphone": "마이크 접근 권한이 거부되었습니다.", "Permission denied when accessing microphone: {{error}}": "마이크 접근 권환이 거부되었습니다: {{error}}", "Permissions": "권한", - "Perplexity API Key": "", + "Perplexity API Key": "Perplexity API 키", "Personalization": "개인화", "Pin": "고정", "Pinned": "고정됨", @@ -868,16 +867,16 @@ "Pipelines Valves": "파이프라인 밸브", "Plain text (.txt)": "일반 텍스트(.txt)", "Playground": "놀이터", - "Playwright Timeout (ms)": "", - "Playwright WebSocket URL": "", + "Playwright Timeout (ms)": "Playwright 시간 초과 (ms)", + "Playwright WebSocket URL": "Playwright WebSocket URL", "Please carefully review the following warnings:": "다음 주의를 조심히 확인해주십시오", - "Please do not close the settings page while loading the model.": "", + "Please do not close the settings page while loading the model.": "모델을 로드하는 동안 설정 페이지를 닫지 마세요.", "Please enter a prompt": "프롬프트를 입력해주세요", - "Please enter a valid path": "", - "Please enter a valid URL": "", + "Please enter a valid path": "유효한 경로를 입력하세요", + "Please enter a valid URL": "유효한 URL을 입력하세요", "Please fill in all fields.": "모두 빈칸없이 채워주세요", - "Please select a model first.": "", - "Please select a model.": "", + "Please select a model first.": "먼저 모델을 선택하세요.", + "Please select a model.": "모델을 선택하세요.", "Please select a reason": "이유를 선택해주세요", "Port": "포트", "Positive attitude": "긍정적인 자세", @@ -886,11 +885,11 @@ "Presence Penalty": "", "Previous 30 days": "이전 30일", "Previous 7 days": "이전 7일", - "Private": "", + "Private": "비공개", "Profile Image": "프로필 이미지", - "Prompt": "", + "Prompt": "프롬프트", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "프롬프트 (예: 로마 황제에 대해 재미있는 사실을 알려주세요)", - "Prompt Autocompletion": "", + "Prompt Autocompletion": "프롬프트 자동 완성", "Prompt Content": "프롬프트 내용", "Prompt created successfully": "성공적으로 프롬프트를 생성했습니다", "Prompt suggestions": "프롬프트 제안", @@ -898,16 +897,16 @@ "Prompts": "프롬프트", "Prompts Access": "프롬프트 접근", "Prompts Public Sharing": "", - "Public": "", + "Public": "공개", "Pull \"{{searchValue}}\" from Ollama.com": "Ollama.com에서 \"{{searchValue}}\" 가져오기", "Pull a model from Ollama.com": "Ollama.com에서 모델 가져오기(pull)", "Query Generation Prompt": "", "RAG Template": "RAG 템플릿", "Rating": "평가", "Re-rank models by topic similarity": "주제 유사성으로 모델을 재정렬하기", - "Read": "", + "Read": "읽기", "Read Aloud": "읽어주기", - "Reasoning Effort": "", + "Reasoning Effort": "추론 난이도", "Record voice": "음성 녹음", "Redirecting you to Open WebUI Community": "OpenWebUI 커뮤니티로 리디렉션 중", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -915,18 +914,18 @@ "References from": "출처", "Refused when it shouldn't have": "허용되지 않았지만 허용되어야 합니다.", "Regenerate": "재생성", - "Reindex": "", - "Reindex Knowledge Base Vectors": "", + "Reindex": "재색인", + "Reindex Knowledge Base Vectors": "전체 지식 베이스 재색인", "Release Notes": "릴리스 노트", "Relevance": "관련도", - "Relevance Threshold": "", + "Relevance Threshold": "관련성 임계값", "Remove": "삭제", "Remove Model": "모델 삭제", "Rename": "이름 변경", "Reorder Models": "모델 재정렬", "Repeat Last N": "마지막 N 반복", "Repeat Penalty (Ollama)": "", - "Reply in Thread": "", + "Reply in Thread": "스레드에 답글 달기", "Request Mode": "요청 모드", "Reranking Model": "Reranking 모델", "Reranking model disabled": "Reranking 모델 비활성화", From f46c7d53b73c366e761c444327eaf46c03f675b6 Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Thu, 1 May 2025 12:55:07 +0900 Subject: [PATCH 158/238] update Korean translation --- src/lib/i18n/locales/ko-KR/translation.json | 78 ++++++++++----------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 0f18e9e66..dce734270 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -934,12 +934,12 @@ "Reset All Models": "모든 모델 초기화", "Reset Upload Directory": "업로드 디렉토리 초기화", "Reset Vector Storage/Knowledge": "벡터 저장 공간/지식 기반 초기화", - "Reset view": "", + "Reset view": "보기 초기화", "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "웹사이트 권환과 같이 응답 알림이 활성화될 수 없습니다. 필요한 접근을 사용하기 위해 브라우져 설정을 확인 부탁드립니다.", "Response splitting": "응답 나누기", "Result": "결과", - "Retrieval": "", - "Retrieval Query Generation": "", + "Retrieval": "검색", + "Retrieval Query Generation": "검색 쿼리 생성", "Rich Text Input for Chat": "채팅을 위한 풍부한 텍스트(Rich Text) 입력", "RK": "RK", "Role": "역할", @@ -955,10 +955,10 @@ "Save Tag": "태그 저장", "Saved": "저장됨", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "브라우저의 저장소에 채팅 로그를 직접 저장하는 것은 더 이상 지원되지 않습니다. 아래 버튼을 클릭하여 채팅 로그를 다운로드하고 삭제하세요. 걱정 마세요. 백엔드를 통해 채팅 로그를 쉽게 다시 가져올 수 있습니다.", - "Scroll On Branch Change": "", + "Scroll On Branch Change": "브랜치 변경 시 스크롤", "Search": "검색", "Search a model": "모델 검색", - "Search Base": "", + "Search Base": "검색 기반", "Search Chats": "채팅 검색", "Search Collection": "컬렉션 검색", "Search Filters": "필터 검색", @@ -969,11 +969,11 @@ "Search options": "옵션 검색", "Search Prompts": "프롬프트 검색", "Search Result Count": "검색 결과 수", - "Search the internet": "", + "Search the internet": "인터넷 검색", "Search Tools": "검색 도구", "SearchApi API Key": "SearchApi API 키", "SearchApi Engine": "SearchApi 엔진", - "Searched {{count}} sites": "", + "Searched {{count}} sites": "{{count}}개 사이트 검색됨", "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" 검색 중", "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\"위한 지식 기반 검색 중", "Searxng Query URL": "Searxng 쿼리 URL", @@ -988,8 +988,8 @@ "Select a pipeline": "파이프라인 선택", "Select a pipeline url": "파이프라인 URL 선택", "Select a tool": "도구 선택", - "Select an auth method": "", - "Select an Ollama instance": "", + "Select an auth method": "인증 방법 선택", + "Select an Ollama instance": "Ollama 인스턴스 선택", "Select Engine": "엔진 선택", "Select Knowledge": "지식 기반 선택", "Select only one model to call": "음성 기능을 위해서는 모델을 하나만 선택해야 합니다.", @@ -1000,8 +1000,8 @@ "Send message": "메시지 보내기", "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "'stream_options: { include_usage: true }' 요청 보내기 \n지원되는 제공자가 토큰 사용 정보를 응답할 예정입니다", "September": "9월", - "SerpApi API Key": "", - "SerpApi Engine": "", + "SerpApi API Key": "SerpApi API 키", + "SerpApi Engine": "SerpApi 엔진", "Serper API Key": "Serper API 키", "Serply API Key": "Serply API 키", "Serpstack API Key": "Serpstack API 키", @@ -1075,7 +1075,7 @@ "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.": "", "Talk to model": "", "Tap to interrupt": "탭하여 중단", - "Tasks": "", + "Tasks": "작업", "Tavily API Key": "Tavily API 키", "Tavily Extract Depth": "", "Tell us more:": "더 알려주세요:", @@ -1086,13 +1086,13 @@ "Text-to-Speech Engine": "텍스트-음성 변환 엔진", "Tfs Z": "Tfs Z", "Thanks for your feedback!": "피드백 감사합니다!", - "The Application Account DN you bind with for search": "", - "The base to search for users": "", + "The Application Account DN you bind with for search": "검색을 위해 바인딩하는 응용 프로그램 계정 DN", + "The base to search for users": "사용자 검색을 위한 기본 경로", "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "", "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "이 플러그인 뒤에 있는 개발자는 커뮤니티에서 활동하는 단순한 열정적인 일반인들입니다. 만약 플러그인이 도움 되었다면, 플러그인 개발에 기여를 고려해주세요!", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "평가 리더보드는 Elo 평가 시스템을 기반으로 하고 실시간으로 업데이트됩니다", - "The LDAP attribute that maps to the mail that users use to sign in.": "", - "The LDAP attribute that maps to the username that users use to sign in.": "", + "The LDAP attribute that maps to the mail that users use to sign in.": "사용자가 로그인할 때 사용하는 메일에 매핑되는 LDAP 속성입니다.", + "The LDAP attribute that maps to the username that users use to sign in.": "사용자가 로그인할 때 사용하는 사용자 이름에 매핑되는 LDAP 속성입니다.", "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "리더보드는 베타테스트중에 있습니다, 평가 기준이 알고리즘 수정과 함께 변할 수 있습니다", "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "최대 파일 크기(MB). 만약 파일 크기가 한도를 초과할 시, 파일은 업로드되지 않습니다", "The maximum 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.": "하나의 채팅에서는 사용가능한 최대 파일 수가 있습니다. 만약 파일 수가 한도를 초과할 시, 파일은 업로드되지 않습니다.", @@ -1101,8 +1101,8 @@ "Theme": "테마", "Thinking...": "생각 중...", "This action cannot be undone. Do you wish to continue?": "이 액션은 되돌릴 수 없습니다. 계속 하시겠습니까?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", - "This chat won’t appear in history and your messages will not be saved.": "", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "이 채널은 {{createdAt}}에 생성되었습니다. 여기가 {{channelName}} 채널의 시작입니다.", + "This chat won't appear in history and your messages will not be saved.": "이 채팅은 기록에 표시되지 않으며 메시지가 저장되지 않습니다.", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "이렇게 하면 소중한 대화 내용이 백엔드 데이터베이스에 안전하게 저장됩니다. 감사합니다!", "This 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.": "", @@ -1116,7 +1116,7 @@ "This will reset the knowledge base and sync all files. Do you wish to continue?": "지식 기반과 모든 파일 연동을 초기화합니다. 계속 하시겠습니까?", "Thorough explanation": "완전한 설명", "Thought for {{DURATION}}": "{{DURATION}} 동안 생각함", - "Thought for {{DURATION}} seconds": "", + "Thought for {{DURATION}} seconds": "{{DURATION}}초 동안 생각함", "Tika": "티카(Tika)", "Tika Server URL required.": "티카 서버 URL이 필요합니다", "Tiktoken": "틱토큰 (Tiktoken)", @@ -1150,34 +1150,34 @@ "Tool ID": "도구 ID", "Tool imported successfully": "성공적으로 도구를 가져왔습니다", "Tool Name": "도구 이름", - "Tool Servers": "", + "Tool Servers": "도구 서버", "Tool updated successfully": "성공적으로 도구가 업데이트되었습니다", "Tools": "도구", "Tools Access": "도구 접근", "Tools are a function calling system with arbitrary code execution": "도구는 임의 코드를 실행시키는 함수를 불러오는 시스템입니다", - "Tools Function Calling Prompt": "", + "Tools Function Calling Prompt": "도구 함수 호출 프롬프트", "Tools have a function calling system that allows arbitrary code execution": "도구에 임의 코드 실행을 허용하는 함수가 포함되어 있습니다", "Tools have a function calling system that allows arbitrary code execution.": "도구에 임의 코드 실행을 허용하는 함수가 포함되어 있습니다.", - "Tools Public Sharing": "", + "Tools Public Sharing": "도구 공개 및 공유", "Top K": "Top K", "Top K Reranker": "", "Top P": "Top P", "Transformers": "", "Trouble accessing Ollama?": "올라마(Ollama)에 접근하는 데 문제가 있나요?", - "Trust Proxy Environment": "", + "Trust Proxy Environment": "신뢰 할 수 있는 프록시 환경", "TTS Model": "TTS 모델", "TTS Settings": "TTS 설정", "TTS Voice": "TTS 음성", "Type": "입력", "Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (다운로드) URL 입력", - "Uh-oh! There was an issue with the response.": "", + "Uh-oh! There was an issue with the response.": "이런! 응답에 문제가 발생했습니다.", "UI": "UI", "Unarchive All": "모두 보관 해제", "Unarchive All Archived Chats": "보관된 모든 채팅을 보관 해제", "Unarchive Chat": "채팅 보관 해제", - "Unlock mysteries": "", + "Unlock mysteries": "미스터리 풀기", "Unpin": "고정 해제", - "Unravel secrets": "", + "Unravel secrets": "비밀 풀기", "Untagged": "태그 해제", "Update": "업데이트", "Update and Copy Link": "링크 업데이트 및 복사", @@ -1207,8 +1207,8 @@ "user": "사용자", "User": "사용자", "User location successfully retrieved.": "성공적으로 사용자의 위치를 불러왔습니다", - "User Webhooks": "", - "Username": "", + "User Webhooks": "사용자 웹훅", + "Username": "사용자 이름", "Users": "사용자", "Using the default arena model with all models. Click the plus button to add custom models.": "모든 모델은 기본 아레나 모델을 사용중입니다. 플러스 버튼을 눌러 커스텀 모델을 추가하세요", "Utilize": "활용", @@ -1222,8 +1222,8 @@ "Verify SSL Certificate": "", "Version": "버전", "Version {{selectedVersion}} of {{totalVersions}}": "버전 {{totalVersions}}의 {{selectedVersion}}", - "View Replies": "", - "View Result from **{{NAME}}**": "", + "View Replies": "답글 보기", + "View Result from **{{NAME}}**": "**{{NAME}}**의 결과 보기", "Visibility": "공개 범위", "Voice": "음성", "Voice Input": "음성 입력", @@ -1234,22 +1234,22 @@ "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "", "Web": "웹", "Web API": "웹 API", - "Web Loader Engine": "", + "Web Loader Engine": "웹 로더 엔진", "Web Search": "웹 검색", "Web Search Engine": "웹 검색 엔진", - "Web Search in Chat": "", - "Web Search Query Generation": "", + "Web Search in Chat": "채팅에서 웹 검색", + "Web Search Query Generation": "웹 검색 쿼리 생성", "Webhook URL": "웹훅 URL", "WebUI Settings": "WebUI 설정", "WebUI URL": "", - "WebUI will make requests to \"{{url}}\"": "", + "WebUI will make requests to \"{{url}}\"": "WebUI가 \"{{url}}\"로 요청을 보냅니다", "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI가 \"{{url}}/api/chat\"로 요청을 보냅니다", "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI가 \"{{url}}/chat/completions\"로 요청을 보냅니다", "What are you trying to achieve?": "무엇을 성취하고 싶으신가요?", "What are you working on?": "어떤 작업을 하고 계신가요?", "What’s New in": "새로운 기능:", "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "활성화하면 모델이 각 채팅 메시지에 실시간으로 응답하여 사용자가 메시지를 보내는 즉시 응답을 생성합니다. 이 모드는 실시간 채팅 애플리케이션에 유용하지만, 느린 하드웨어에서는 성능에 영향을 미칠 수 있습니다.", - "wherever you are": "", + "wherever you are": "당신이 어디에 있든", "Whisper (Local)": "Whisper (로컬)", "Why?": "이유는?", "Widescreen Mode": "와이드스크린 모드", @@ -1264,11 +1264,11 @@ "Write your model template content here": "여기에 모델 템플릿 내용을 입력하세요", "Yesterday": "어제", "You": "당신", - "You are currently using a trial license. Please contact support to upgrade your license.": "", + "You are currently using a trial license. Please contact support to upgrade your license.": "현재 평가판 라이선스를 사용 중입니다. 라이선스 업그레이드를 위해 지원팀에 문의하세요.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "동시에 최대 {{maxCount}} 파일과만 대화할 수 있습니다 ", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "아래 '관리' 버튼으로 메모리를 추가하여 LLM들과의 상호작용을 개인화할 수 있습니다. 이를 통해 더 유용하고 맞춤화된 경험을 제공합니다.", "You cannot upload an empty file.": "빈 파일을 업로드 할 수 없습니다", - "You do not have permission to upload files": "", + "You do not have permission to upload files": "파일을 업로드할 권한이 없습니다", "You do not have permission to upload files.": "", "You have no archived conversations.": "채팅을 보관한 적이 없습니다.", "You have shared this chat": "이 채팅을 공유했습니다.", @@ -1277,6 +1277,6 @@ "Your account status is currently pending activation.": "현재 계정은 아직 활성화되지 않았습니다.", "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "당신의 모든 기여는 곧바로 플러그인 개발자에게 갑니다; Open WebUI는 일절 가져가지 않습니다 하지만, 선택한 후원 플랫폼은 수수료를 가져갈 수 있습니다.", "Youtube": "유튜브", - "Youtube Language": "", - "Youtube Proxy URL": "" + "Youtube Language": "Youtube브 언어", + "Youtube Proxy URL": "Youtube 프록시 URL" } From 1ca5d532b817c7722ce1e301f471fd3565c0450c Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Thu, 1 May 2025 13:00:27 +0900 Subject: [PATCH 159/238] chore(i18n): update parsed i18n data and Korean translations --- .../chat/MessageInput/InputMenu.svelte | 4 ++-- src/lib/i18n/locales/ar-BH/translation.json | 9 ++++++++- src/lib/i18n/locales/ar/translation.json | 9 ++++++++- src/lib/i18n/locales/bg-BG/translation.json | 9 ++++++++- src/lib/i18n/locales/bn-BD/translation.json | 9 ++++++++- src/lib/i18n/locales/bo-TB/translation.json | 9 ++++++++- src/lib/i18n/locales/ca-ES/translation.json | 9 ++++++++- src/lib/i18n/locales/ceb-PH/translation.json | 9 ++++++++- src/lib/i18n/locales/cs-CZ/translation.json | 9 ++++++++- src/lib/i18n/locales/da-DK/translation.json | 9 ++++++++- src/lib/i18n/locales/de-DE/translation.json | 9 ++++++++- src/lib/i18n/locales/dg-DG/translation.json | 9 ++++++++- src/lib/i18n/locales/el-GR/translation.json | 9 ++++++++- src/lib/i18n/locales/en-GB/translation.json | 9 ++++++++- src/lib/i18n/locales/en-US/translation.json | 9 ++++++++- src/lib/i18n/locales/es-ES/translation.json | 9 ++++++++- src/lib/i18n/locales/et-EE/translation.json | 9 ++++++++- src/lib/i18n/locales/eu-ES/translation.json | 9 ++++++++- src/lib/i18n/locales/fa-IR/translation.json | 9 ++++++++- src/lib/i18n/locales/fi-FI/translation.json | 9 ++++++++- src/lib/i18n/locales/fr-CA/translation.json | 9 ++++++++- src/lib/i18n/locales/fr-FR/translation.json | 9 ++++++++- src/lib/i18n/locales/he-IL/translation.json | 9 ++++++++- src/lib/i18n/locales/hi-IN/translation.json | 9 ++++++++- src/lib/i18n/locales/hr-HR/translation.json | 9 ++++++++- src/lib/i18n/locales/hu-HU/translation.json | 9 ++++++++- src/lib/i18n/locales/id-ID/translation.json | 9 ++++++++- src/lib/i18n/locales/ie-GA/translation.json | 9 ++++++++- src/lib/i18n/locales/it-IT/translation.json | 9 ++++++++- src/lib/i18n/locales/ja-JP/translation.json | 9 ++++++++- src/lib/i18n/locales/ka-GE/translation.json | 9 ++++++++- src/lib/i18n/locales/ko-KR/translation.json | 16 ++++++++++++---- src/lib/i18n/locales/lt-LT/translation.json | 9 ++++++++- src/lib/i18n/locales/ms-MY/translation.json | 9 ++++++++- src/lib/i18n/locales/nb-NO/translation.json | 9 ++++++++- src/lib/i18n/locales/nl-NL/translation.json | 9 ++++++++- src/lib/i18n/locales/pa-IN/translation.json | 9 ++++++++- src/lib/i18n/locales/pl-PL/translation.json | 9 ++++++++- src/lib/i18n/locales/pt-BR/translation.json | 9 ++++++++- src/lib/i18n/locales/pt-PT/translation.json | 9 ++++++++- src/lib/i18n/locales/ro-RO/translation.json | 9 ++++++++- src/lib/i18n/locales/ru-RU/translation.json | 9 ++++++++- src/lib/i18n/locales/sk-SK/translation.json | 9 ++++++++- src/lib/i18n/locales/sr-RS/translation.json | 9 ++++++++- src/lib/i18n/locales/sv-SE/translation.json | 9 ++++++++- src/lib/i18n/locales/th-TH/translation.json | 9 ++++++++- src/lib/i18n/locales/tk-TW/translation.json | 9 ++++++++- src/lib/i18n/locales/tr-TR/translation.json | 9 ++++++++- src/lib/i18n/locales/uk-UA/translation.json | 9 ++++++++- src/lib/i18n/locales/ur-PK/translation.json | 9 ++++++++- src/lib/i18n/locales/vi-VN/translation.json | 9 ++++++++- src/lib/i18n/locales/zh-CN/translation.json | 9 ++++++++- src/lib/i18n/locales/zh-TW/translation.json | 9 ++++++++- 53 files changed, 422 insertions(+), 57 deletions(-) diff --git a/src/lib/components/chat/MessageInput/InputMenu.svelte b/src/lib/components/chat/MessageInput/InputMenu.svelte index 7f269ef3e..2447c3aa5 100644 --- a/src/lib/components/chat/MessageInput/InputMenu.svelte +++ b/src/lib/components/chat/MessageInput/InputMenu.svelte @@ -146,7 +146,7 @@ {/if} Date: Thu, 1 May 2025 13:16:47 +0900 Subject: [PATCH 160/238] Consolidate duplicate messages into a single one --- src/lib/components/admin/Functions/FunctionEditor.svelte | 2 +- .../components/chat/MessageInput/Commands/Knowledge.svelte | 2 +- src/lib/components/layout/Sidebar/RecursiveFolder.svelte | 2 +- src/lib/components/workspace/Tools.svelte | 2 +- src/lib/i18n/locales/ar-BH/translation.json | 4 ---- src/lib/i18n/locales/ar/translation.json | 4 ---- src/lib/i18n/locales/bg-BG/translation.json | 4 ---- src/lib/i18n/locales/bn-BD/translation.json | 4 ---- src/lib/i18n/locales/bo-TB/translation.json | 4 ---- src/lib/i18n/locales/ca-ES/translation.json | 4 ---- src/lib/i18n/locales/ceb-PH/translation.json | 4 ---- src/lib/i18n/locales/cs-CZ/translation.json | 4 ---- src/lib/i18n/locales/da-DK/translation.json | 4 ---- src/lib/i18n/locales/de-DE/translation.json | 4 ---- src/lib/i18n/locales/dg-DG/translation.json | 4 ---- src/lib/i18n/locales/el-GR/translation.json | 4 ---- src/lib/i18n/locales/en-GB/translation.json | 4 ---- src/lib/i18n/locales/en-US/translation.json | 4 ---- src/lib/i18n/locales/es-ES/translation.json | 4 ---- src/lib/i18n/locales/et-EE/translation.json | 4 ---- src/lib/i18n/locales/eu-ES/translation.json | 4 ---- src/lib/i18n/locales/fa-IR/translation.json | 4 ---- src/lib/i18n/locales/fi-FI/translation.json | 4 ---- src/lib/i18n/locales/fr-CA/translation.json | 4 ---- src/lib/i18n/locales/fr-FR/translation.json | 4 ---- src/lib/i18n/locales/he-IL/translation.json | 4 ---- src/lib/i18n/locales/hi-IN/translation.json | 4 ---- src/lib/i18n/locales/hr-HR/translation.json | 4 ---- src/lib/i18n/locales/hu-HU/translation.json | 4 ---- src/lib/i18n/locales/id-ID/translation.json | 4 ---- src/lib/i18n/locales/ie-GA/translation.json | 4 ---- src/lib/i18n/locales/it-IT/translation.json | 4 ---- src/lib/i18n/locales/ja-JP/translation.json | 4 ---- src/lib/i18n/locales/ka-GE/translation.json | 4 ---- src/lib/i18n/locales/ko-KR/translation.json | 4 ---- src/lib/i18n/locales/lt-LT/translation.json | 4 ---- src/lib/i18n/locales/ms-MY/translation.json | 4 ---- src/lib/i18n/locales/nb-NO/translation.json | 4 ---- src/lib/i18n/locales/nl-NL/translation.json | 4 ---- src/lib/i18n/locales/pa-IN/translation.json | 4 ---- src/lib/i18n/locales/pl-PL/translation.json | 4 ---- src/lib/i18n/locales/pt-BR/translation.json | 4 ---- src/lib/i18n/locales/pt-PT/translation.json | 4 ---- src/lib/i18n/locales/ro-RO/translation.json | 4 ---- src/lib/i18n/locales/ru-RU/translation.json | 4 ---- src/lib/i18n/locales/sk-SK/translation.json | 4 ---- src/lib/i18n/locales/sr-RS/translation.json | 4 ---- src/lib/i18n/locales/sv-SE/translation.json | 4 ---- src/lib/i18n/locales/th-TH/translation.json | 4 ---- src/lib/i18n/locales/tk-TW/translation.json | 4 ---- src/lib/i18n/locales/tr-TR/translation.json | 4 ---- src/lib/i18n/locales/uk-UA/translation.json | 4 ---- src/lib/i18n/locales/ur-PK/translation.json | 4 ---- src/lib/i18n/locales/vi-VN/translation.json | 4 ---- src/lib/i18n/locales/zh-CN/translation.json | 4 ---- src/lib/i18n/locales/zh-TW/translation.json | 4 ---- 56 files changed, 4 insertions(+), 212 deletions(-) diff --git a/src/lib/components/admin/Functions/FunctionEditor.svelte b/src/lib/components/admin/Functions/FunctionEditor.svelte index 6da2a83f4..9b2355fe4 100644 --- a/src/lib/components/admin/Functions/FunctionEditor.svelte +++ b/src/lib/components/admin/Functions/FunctionEditor.svelte @@ -387,7 +387,7 @@ class Pipe:
{$i18n.t('Warning:')} - {$i18n.t('Functions allow arbitrary code execution')}
— + {$i18n.t('Functions allow arbitrary code execution.')}
{$i18n.t(`don't install random functions from sources you don't trust.`)} diff --git a/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte b/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte index bae077b9b..adf82bb0f 100644 --- a/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte +++ b/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte @@ -265,7 +265,7 @@ {/each} {:else}
- {$i18n.t('No files found.')} + {$i18n.t('File not found.')}
{/if}
--> diff --git a/src/lib/components/layout/Sidebar/RecursiveFolder.svelte b/src/lib/components/layout/Sidebar/RecursiveFolder.svelte index 34899012a..f6958a772 100644 --- a/src/lib/components/layout/Sidebar/RecursiveFolder.svelte +++ b/src/lib/components/layout/Sidebar/RecursiveFolder.svelte @@ -252,7 +252,7 @@ const nameUpdateHandler = async () => { if (name === '') { - toast.error($i18n.t('Folder name cannot be empty')); + toast.error($i18n.t('Folder name cannot be empty.')); return; } diff --git a/src/lib/components/workspace/Tools.svelte b/src/lib/components/workspace/Tools.svelte index 593797822..726a39205 100644 --- a/src/lib/components/workspace/Tools.svelte +++ b/src/lib/components/workspace/Tools.svelte @@ -503,7 +503,7 @@
  • - {$i18n.t('Tools have a function calling system that allows arbitrary code execution')}. + {$i18n.t('Tools have a function calling system that allows arbitrary code execution.')}.
  • {$i18n.t('Do not install tools from sources you do not fully trust.')}
diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 60585a707..76e41c76c 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "دفق قطع الاستجابة الخارجية الكبيرة بسلاسة", "Focus chat input": "التركيز على إدخال الدردشة", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "اتبعت التعليمات على أكمل وجه", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json index ce19a3041..6db3de4e0 100644 --- a/src/lib/i18n/locales/ar/translation.json +++ b/src/lib/i18n/locales/ar/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "دفق قطع الاستجابة الخارجية الكبيرة بسلاسة", "Focus chat input": "التركيز على إدخال الدردشة", "Folder deleted successfully": "تم حذف المجلد بنجاح", - "Folder name cannot be empty": "لا يمكن أن يكون اسم المجلد فارغًا", "Folder name cannot be empty.": "لا يمكن أن يكون اسم المجلد فارغًا.", "Folder name updated successfully": "تم تحديث اسم المجلد بنجاح", "Followed instructions perfectly": "اتبعت التعليمات على أكمل وجه", @@ -582,7 +581,6 @@ "Function Name": "اسم الوظيفة", "Function updated successfully": "تم تحديث الوظيفة بنجاح", "Functions": "الوظائف", - "Functions allow arbitrary code execution": "الوظائف تتيح تنفيذ كود برمجي مخصص", "Functions allow arbitrary code execution.": "الوظائف تتيح تنفيذ كود برمجي مخصص.", "Functions imported successfully": "تم استيراد الوظائف بنجاح", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "لا توجد مسافة متاحة", "No feedbacks found": "لم يتم العثور على ملاحظات", "No file selected": "لم يتم تحديد ملف", - "No files found.": "لم يتم العثور على ملفات.", "No groups with access, add a group to grant access": "لا توجد مجموعات لها حق الوصول، أضف مجموعة لمنح الوصول", "No HTML, CSS, or JavaScript content found.": "لم يتم العثور على محتوى HTML أو CSS أو JavaScript.", "No inference engine with management support found": "لم يتم العثور على محرك استدلال يدعم الإدارة", @@ -1162,7 +1159,6 @@ "Tools Access": "الوصول إلى الأدوات", "Tools are a function calling system with arbitrary code execution": "الأدوات عبارة عن نظام لاستدعاء الوظائف يسمح بتنفيذ كود برمجي مخصص", "Tools Function Calling Prompt": "توجيه استدعاء وظائف الأدوات", - "Tools have a function calling system that allows arbitrary code execution": "تحتوي الأدوات على نظام لاستدعاء الوظائف يتيح تنفيذ كود برمجي مخصص", "Tools have a function calling system that allows arbitrary code execution.": "تحتوي الأدوات على نظام لاستدعاء الوظائف يتيح تنفيذ كود برمجي مخصص.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 0e30a5fe2..598df508e 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Плавно предаване на големи части от външен отговор", "Focus chat input": "Фокусиране на чат вход", "Folder deleted successfully": "Папката е изтрита успешно", - "Folder name cannot be empty": "Името на папката не може да бъде празно", "Folder name cannot be empty.": "Името на папката не може да бъде празно.", "Folder name updated successfully": "Името на папката е актуализирано успешно", "Followed instructions perfectly": "Следвайте инструкциите перфектно", @@ -582,7 +581,6 @@ "Function Name": "Име на функцията", "Function updated successfully": "Функцията е актуализирана успешно", "Functions": "Функции", - "Functions allow arbitrary code execution": "Функциите позволяват произволно изпълнение на код", "Functions allow arbitrary code execution.": "Функциите позволяват произволно изпълнение на код.", "Functions imported successfully": "Функциите са импортирани успешно", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Няма налично разстояние", "No feedbacks found": "Не са намерени обратни връзки", "No file selected": "Не е избран файл", - "No files found.": "Не са намерени файлове.", "No groups with access, add a group to grant access": "Няма групи с достъп, добавете група, за да предоставите достъп", "No HTML, CSS, or JavaScript content found.": "Не е намерено HTML, CSS или JavaScript съдържание.", "No inference engine with management support found": "Не е намерен механизъм за извод с поддръжка на управление", @@ -1162,7 +1159,6 @@ "Tools Access": "Достъп до инструменти", "Tools are a function calling system with arbitrary code execution": "Инструментите са система за извикване на функции с произволно изпълнение на код", "Tools Function Calling Prompt": "Промпт за извикване на функции на инструментите", - "Tools have a function calling system that allows arbitrary code execution": "Инструментите имат система за извикване на функции, която позволява произволно изпълнение на код", "Tools have a function calling system that allows arbitrary code execution.": "Инструментите имат система за извикване на функции, която позволява произволно изпълнение на код.", "Tools Public Sharing": "", "Top K": "Топ K", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index b0eed4e1f..6ec232952 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "বড় এক্সটার্নাল রেসপন্স চাঙ্কগুলো মসৃণভাবে প্রবাহিত করুন", "Focus chat input": "চ্যাট ইনপুট ফোকাস করুন", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "নির্দেশাবলী নিখুঁতভাবে অনুসরণ করা হয়েছে", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json index 007d32d29..ff82f2b56 100644 --- a/src/lib/i18n/locales/bo-TB/translation.json +++ b/src/lib/i18n/locales/bo-TB/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "ཕྱི་རོལ་གྱི་ལན་གྱི་དུམ་བུ་ཆེན་པོ་རྒྱུན་བཞིན་རྒྱུག་པ།", "Focus chat input": "ཁ་བརྡའི་ནང་འཇུག་ལ་དམིགས་པ།", "Folder deleted successfully": "ཡིག་སྣོད་ལེགས་པར་བསུབས་ཟིན།", - "Folder name cannot be empty": "ཡིག་སྣོད་ཀྱི་མིང་སྟོང་པ་ཡིན་མི་ཆོག", "Folder name cannot be empty.": "ཡིག་སྣོད་ཀྱི་མིང་སྟོང་པ་ཡིན་མི་ཆོག", "Folder name updated successfully": "ཡིག་སྣོད་ཀྱི་མིང་ལེགས་པར་གསར་སྒྱུར་བྱས་ཟིན།", "Followed instructions perfectly": "ལམ་སྟོན་ཡང་དག་པར་བསྒྲུབས།", @@ -582,7 +581,6 @@ "Function Name": "ལས་འགན་གྱི་མིང་།", "Function updated successfully": "ལས་འགན་ལེགས་པར་གསར་སྒྱུར་བྱས་ཟིན།", "Functions": "ལས་འགན།", - "Functions allow arbitrary code execution": "ལས་འགན་གྱིས་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་ལ་གནང་བ་སྤྲོད།", "Functions allow arbitrary code execution.": "ལས་འགན་གྱིས་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་ལ་གནང་བ་སྤྲོད།", "Functions imported successfully": "ལས་འགན་ལེགས་པར་ནང་འདྲེན་བྱས།", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "ཐག་རིང་ཚད་མེད།", "No feedbacks found": "བསམ་འཆར་མ་རྙེད།", "No file selected": "ཡིག་ཆ་གདམ་ག་མ་བྱས།", - "No files found.": "ཡིག་ཆ་མ་རྙེད།", "No groups with access, add a group to grant access": "འཛུལ་སྤྱོད་ཡོད་པའི་ཚོགས་པ་མེད། འཛུལ་སྤྱོད་སྤྲོད་པར་ཚོགས་པ་ཞིག་སྣོན་པ།", "No HTML, CSS, or JavaScript content found.": "HTML, CSS, ཡང་ན་ JavaScript གི་ནང་དོན་མ་རྙེད།", "No inference engine with management support found": "དོ་དམ་རྒྱབ་སྐྱོར་ཡོད་པའི་དཔོག་རྩིས་འཕྲུལ་འཁོར་མ་རྙེད།", @@ -1162,7 +1159,6 @@ "Tools Access": "ལག་ཆར་འཛུལ་སྤྱོད།", "Tools are a function calling system with arbitrary code execution": "ལག་ཆ་ནི་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་ཡོད་པའི་ལས་འགན་འབོད་པའི་མ་ལག་ཅིག་ཡིན།", "Tools Function Calling Prompt": "ལག་ཆ་ལས་འགན་འབོད་པའི་འགུལ་སློང་།", - "Tools have a function calling system that allows arbitrary code execution": "ལག་ཆར་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་ལ་གནང་བ་སྤྲོད་པའི་ལས་འགན་འབོད་པའི་མ་ལག་ཡོད།", "Tools have a function calling system that allows arbitrary code execution.": "ལག་ཆར་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་ལ་གནང་བ་སྤྲོད་པའི་ལས་འགན་འབོད་པའི་མ་ལག་ཡོད།", "Tools Public Sharing": "ལག་ཆ་སྤྱི་སྤྱོད་མཉམ་སྤྱོད།", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index df9cf3d00..036597227 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Transmetre amb fluïdesa grans trossos de resposta externa", "Focus chat input": "Estableix el focus a l'entrada del xat", "Folder deleted successfully": "Carpeta eliminada correctament", - "Folder name cannot be empty": "El nom de la carpeta no pot ser buit", "Folder name cannot be empty.": "El nom de la carpeta no pot ser buit.", "Folder name updated successfully": "Nom de la carpeta actualitzat correctament", "Followed instructions perfectly": "S'han seguit les instruccions perfectament", @@ -582,7 +581,6 @@ "Function Name": "Nom de la funció", "Function updated successfully": "La funció s'ha actualitzat correctament", "Functions": "Funcions", - "Functions allow arbitrary code execution": "Les funcions permeten l'execució de codi arbitrari", "Functions allow arbitrary code execution.": "Les funcions permeten l'execució de codi arbitrari.", "Functions imported successfully": "Les funcions s'han importat correctament", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "No hi ha distància disponible", "No feedbacks found": "No s'han trobat comentaris", "No file selected": "No s'ha escollit cap fitxer", - "No files found.": "No s'han trobat arxius.", "No groups with access, add a group to grant access": "No hi ha cap grup amb accés, afegeix un grup per concedir accés", "No HTML, CSS, or JavaScript content found.": "No s'ha trobat contingut HTML, CSS o JavaScript.", "No inference engine with management support found": "No s'ha trobat un motor d'inferència amb suport de gestió", @@ -1162,7 +1159,6 @@ "Tools Access": "Accés a les eines", "Tools are a function calling system with arbitrary code execution": "Les eines són un sistema de crida a funcions amb execució de codi arbitrari", "Tools Function Calling Prompt": "Indicació per a la crida de funcions", - "Tools have a function calling system that allows arbitrary code execution": "Les eines disposen d'un sistema de crida a funcions que permet execució de codi arbitrari", "Tools have a function calling system that allows arbitrary code execution.": "Les eines disposen d'un sistema de crida a funcions que permet execució de codi arbitrari.", "Tools Public Sharing": "Compartició pública d'eines", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 0adcba54f..8d41ae6fb 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Hapsay nga paghatud sa daghang mga tipik sa eksternal nga mga tubag", "Focus chat input": "Pag-focus sa entry sa diskusyon", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index 5510fd96c..cb2f1ddca 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Plynule streamujte velké externí části odpovědí", "Focus chat input": "Zaměřte se na vstup chatu", "Folder deleted successfully": "Složka byla úspěšně smazána", - "Folder name cannot be empty": "Název složky nesmí být prázdný", "Folder name cannot be empty.": "Název složky nesmí být prázdný.", "Folder name updated successfully": "Název složky byl úspěšně aktualizován.", "Followed instructions perfectly": "Dodržel pokyny dokonale.", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Funkce byla úspěšně aktualizována.", "Functions": "Funkce", - "Functions allow arbitrary code execution": "Funkce umožňují vykonávat libovolný kód.", "Functions allow arbitrary code execution.": "Funkce umožňují provádění libovolného kódu.", "Functions imported successfully": "Funkce byly úspěšně importovány", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Není dostupná žádná vzdálenost", "No feedbacks found": "Žádná zpětná vazba nenalezena", "No file selected": "Nebyl vybrán žádný soubor", - "No files found.": "Nebyly nalezeny žádné soubory.", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "Nebyl nalezen žádný obsah HTML, CSS ani JavaScriptu.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "Nástroje jsou systémem pro volání funkcí s vykonáváním libovolného kódu.", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Nástroje mají systém volání funkcí, který umožňuje libovolné spouštění kódu.", "Tools have a function calling system that allows arbitrary code execution.": "Nástroje mají systém volání funkcí, který umožňuje spuštění libovolného kódu.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index 0f5fb4d49..57b43211b 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Stream store eksterne svar chunks flydende", "Focus chat input": "Fokuser på chatinput", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Fulgte instruktionerne perfekt", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Funktion opdateret.", "Functions": "Funktioner", - "Functions allow arbitrary code execution": "Funktioner tillader kørsel af vilkårlig kode", "Functions allow arbitrary code execution.": "Funktioner tillader kørsel af vilkårlig kode.", "Functions imported successfully": "Funktioner importeret.", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "Ingen fil valgt", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "Intet HTML-, CSS- eller JavaScript-indhold fundet.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "Værktøjs Adgang", "Tools are a function calling system with arbitrary code execution": "Værktøjer er et funktionkaldssystem med vilkårlig kodeudførelse", "Tools Function Calling Prompt": "Værktøjs Funktionkaldprompt", - "Tools have a function calling system that allows arbitrary code execution": "Værktøjer har et funktionkaldssystem, der tillader vilkårlig kodeudførelse", "Tools have a function calling system that allows arbitrary code execution.": "Værktøjer har et funktionkaldssystem, der tillader vilkårlig kodeudførelse.", "Tools Public Sharing": "Værktøjer Offentlig Deling", "Top K": "Top K", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index b8e818032..4f5ff4f44 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Nahtlose Übertragung großer externer Antwortabschnitte", "Focus chat input": "Chat-Eingabe fokussieren", "Folder deleted successfully": "Ordner erfolgreich gelöscht", - "Folder name cannot be empty": "Ordnername darf nicht leer sein", "Folder name cannot be empty.": "Ordnername darf nicht leer sein.", "Folder name updated successfully": "Ordnername erfolgreich aktualisiert", "Followed instructions perfectly": "Anweisungen perfekt befolgt", @@ -582,7 +581,6 @@ "Function Name": "Funktionsname", "Function updated successfully": "Funktion erfolgreich aktualisiert", "Functions": "Funktionen", - "Functions allow arbitrary code execution": "Funktionen ermöglichen die Ausführung beliebigen Codes", "Functions allow arbitrary code execution.": "Funktionen ermöglichen die Ausführung beliebigen Codes.", "Functions imported successfully": "Funktionen erfolgreich importiert", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Keine Distanz verfügbar", "No feedbacks found": "Kein Feedback gefunden", "No file selected": "Keine Datei ausgewählt", - "No files found.": "Keine Dateien gefunden.", "No groups with access, add a group to grant access": "Keine Gruppen mit Zugriff, fügen Sie eine Gruppe hinzu, um Zugriff zu gewähren", "No HTML, CSS, or JavaScript content found.": "Keine HTML-, CSS- oder JavaScript-Inhalte gefunden.", "No inference engine with management support found": "Keine Inferenz-Engine mit Management-Unterstützung gefunden", @@ -1162,7 +1159,6 @@ "Tools Access": "Werkzeugzugriff", "Tools are a function calling system with arbitrary code execution": "Wekzeuge sind ein Funktionssystem mit beliebiger Codeausführung", "Tools Function Calling Prompt": "Prompt für Funktionssystemaufrufe", - "Tools have a function calling system that allows arbitrary code execution": "Werkezuge verfügen über ein Funktionssystem, das die Ausführung beliebigen Codes ermöglicht", "Tools have a function calling system that allows arbitrary code execution.": "Werkzeuge verfügen über ein Funktionssystem, das die Ausführung beliebigen Codes ermöglicht.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index 64eb5e1fc..d4b740730 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Fluidly wow big chunks", "Focus chat input": "Focus chat bork", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K very top", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index 558e8fefa..9f008ec4d 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Ροή μεγάλων εξωτερικών τμημάτων απάντησης ομαλά", "Focus chat input": "Εστίαση στο πεδίο συνομιλίας", "Folder deleted successfully": "Ο φάκελος διαγράφηκε με επιτυχία", - "Folder name cannot be empty": "Το όνομα του φακέλου δεν μπορεί να είναι κενό", "Folder name cannot be empty.": "Το όνομα του φακέλου δεν μπορεί να είναι κενό.", "Folder name updated successfully": "Το όνομα του φακέλου ενημερώθηκε με επιτυχία", "Followed instructions perfectly": "Ακολούθησε τις οδηγίες τέλεια", @@ -582,7 +581,6 @@ "Function Name": "Όνομα Λειτουργίας", "Function updated successfully": "Η λειτουργία ενημερώθηκε με επιτυχία", "Functions": "Λειτουργίες", - "Functions allow arbitrary code execution": "Οι λειτουργίες επιτρέπουν την εκτέλεση αυθαίρετου κώδικα", "Functions allow arbitrary code execution.": "Οι λειτουργίες επιτρέπουν την εκτέλεση αυθαίρετου κώδικα.", "Functions imported successfully": "Οι λειτουργίες εισήχθησαν με επιτυχία", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Δεν υπάρχει διαθέσιμη απόσταση", "No feedbacks found": "Δεν βρέθηκαν ανατροφοδοτήσεις", "No file selected": "Δεν έχει επιλεγεί αρχείο", - "No files found.": "Δεν βρέθηκαν αρχεία.", "No groups with access, add a group to grant access": "Δεν υπάρχουν ομάδες με πρόσβαση, προσθέστε μια ομάδα για να χορηγήσετε πρόσβαση", "No HTML, CSS, or JavaScript content found.": "Δεν βρέθηκε περιεχόμενο HTML, CSS ή JavaScript.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "Πρόσβαση Εργαλείων", "Tools are a function calling system with arbitrary code execution": "Τα εργαλεία είναι ένα σύστημα κλήσης λειτουργιών με αυθαίρετη εκτέλεση κώδικα", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Τα εργαλεία διαθέτουν ένα σύστημα κλήσης λειτουργιών που επιτρέπει την αυθαίρετη εκτέλεση κώδικα", "Tools have a function calling system that allows arbitrary code execution.": "Τα εργαλεία διαθέτουν ένα σύστημα κλήσης λειτουργιών που επιτρέπει την αυθαίρετη εκτέλεση κώδικα.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index 776d0274b..b45ba5399 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "", "Focus chat input": "", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 776d0274b..b45ba5399 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "", "Focus chat input": "", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index e6c260c00..5024d7222 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Transmisión fluida de fragmentos de grandes respuestas externas", "Focus chat input": "Enfocar campo de chat", "Folder deleted successfully": "Carpeta eliminada correctamente", - "Folder name cannot be empty": "El nombre de la carpeta no puede estar vacío", "Folder name cannot be empty.": "El nombre de la carpeta no puede estar vacío", "Folder name updated successfully": "Nombre de la carpeta actualizado correctamente", "Followed instructions perfectly": "Siguió las instrucciones perfectamente", @@ -582,7 +581,6 @@ "Function Name": "Nombre de la Función", "Function updated successfully": "Función actualizada correctamente", "Functions": "Funciones", - "Functions allow arbitrary code execution": "Las Funciones habilitan la ejecución de código arbitrario", "Functions allow arbitrary code execution.": "Las Funciones habilitan la ejecución de código arbitrario.", "Functions imported successfully": "Funciones importadas correctamente", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "No hay distancia disponible", "No feedbacks found": "No se encontraron realimentaciones", "No file selected": "No se seleccionó archivo", - "No files found.": "No se encontraron archivos.", "No groups with access, add a group to grant access": "No hay grupos con acceso, añade un grupo para otorgar acceso", "No HTML, CSS, or JavaScript content found.": "No se encontró contenido HTML, CSS, o JavaScript.", "No inference engine with management support found": "No se encontró un motor de inferencia que soporte gestión", @@ -1162,7 +1159,6 @@ "Tools Access": "Acceso a Herramientas", "Tools are a function calling system with arbitrary code execution": "Las herramientas son un sistema de llamada de funciones con ejecución de código arbitrario", "Tools Function Calling Prompt": "Indicador para la Función de Llamada a las Herramientas", - "Tools have a function calling system that allows arbitrary code execution": "Las herramientas tienen un sistema de llamadas de funciones que permite la ejecución de código arbitrario", "Tools have a function calling system that allows arbitrary code execution.": "Las herramientas tienen un sistema de llamada de funciones que permite la ejecución de código arbitrario.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json index 08920b853..98815bc91 100644 --- a/src/lib/i18n/locales/et-EE/translation.json +++ b/src/lib/i18n/locales/et-EE/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Suurte väliste vastuste tükkide sujuv voogedastus", "Focus chat input": "Fokuseeri vestluse sisendile", "Folder deleted successfully": "Kaust edukalt kustutatud", - "Folder name cannot be empty": "Kausta nimi ei saa olla tühi", "Folder name cannot be empty.": "Kausta nimi ei saa olla tühi.", "Folder name updated successfully": "Kausta nimi edukalt uuendatud", "Followed instructions perfectly": "Järgis juhiseid täiuslikult", @@ -582,7 +581,6 @@ "Function Name": "Funktsiooni nimi", "Function updated successfully": "Funktsioon edukalt uuendatud", "Functions": "Funktsioonid", - "Functions allow arbitrary code execution": "Funktsioonid võimaldavad suvalise koodi käivitamist", "Functions allow arbitrary code execution.": "Funktsioonid võimaldavad suvalise koodi käivitamist.", "Functions imported successfully": "Funktsioonid edukalt imporditud", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Kaugus pole saadaval", "No feedbacks found": "Tagasisidet ei leitud", "No file selected": "Faili pole valitud", - "No files found.": "Faile ei leitud.", "No groups with access, add a group to grant access": "Puuduvad juurdepääsuõigustega grupid, lisage grupp juurdepääsu andmiseks", "No HTML, CSS, or JavaScript content found.": "HTML, CSS ega JavaScript sisu ei leitud.", "No inference engine with management support found": "Järeldusmootorit haldamise toega ei leitud", @@ -1162,7 +1159,6 @@ "Tools Access": "Tööriistade juurdepääs", "Tools are a function calling system with arbitrary code execution": "Tööriistad on funktsioonide kutsumise süsteem suvalise koodi täitmisega", "Tools Function Calling Prompt": "Tööriistade funktsioonide kutsumise vihje", - "Tools have a function calling system that allows arbitrary code execution": "Tööriistadel on funktsioonide kutsumise süsteem, mis võimaldab suvalise koodi täitmist", "Tools have a function calling system that allows arbitrary code execution.": "Tööriistadel on funktsioonide kutsumise süsteem, mis võimaldab suvalise koodi täitmist.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index 2ec4fb86b..4ff344591 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Modu jariagarrian transmititu kanpoko erantzun zati handiak", "Focus chat input": "Fokuratu txataren sarrera", "Folder deleted successfully": "Karpeta ongi ezabatu da", - "Folder name cannot be empty": "Karpetaren izena ezin da hutsik egon", "Folder name cannot be empty.": "Karpetaren izena ezin da hutsik egon.", "Folder name updated successfully": "Karpetaren izena ongi eguneratu da", "Followed instructions perfectly": "Jarraibideak perfektuki jarraitu ditu", @@ -582,7 +581,6 @@ "Function Name": "Funtzioaren Izena", "Function updated successfully": "Funtzioa ongi eguneratu da", "Functions": "Funtzioak", - "Functions allow arbitrary code execution": "Funtzioek kode arbitrarioa exekutatzea ahalbidetzen dute", "Functions allow arbitrary code execution.": "Funtzioek kode arbitrarioa exekutatzea ahalbidetzen dute.", "Functions imported successfully": "Funtzioak ongi inportatu dira", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Ez dago distantziarik eskuragarri", "No feedbacks found": "Ez da iritzirik aurkitu", "No file selected": "Ez da fitxategirik hautatu", - "No files found.": "Ez da fitxategirik aurkitu.", "No groups with access, add a group to grant access": "Ez dago sarbidea duen talderik, gehitu talde bat sarbidea emateko", "No HTML, CSS, or JavaScript content found.": "Ez da HTML, CSS, edo JavaScript edukirik aurkitu.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "Tresnen sarbidea", "Tools are a function calling system with arbitrary code execution": "Tresnak kode arbitrarioa exekutatzeko funtzio deitzeko sistema bat dira", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Tresnek kode arbitrarioa exekutatzeko aukera ematen duen funtzio deitzeko sistema dute", "Tools have a function calling system that allows arbitrary code execution.": "Tresnek kode arbitrarioa exekutatzeko aukera ematen duen funtzio deitzeko sistema dute.", "Tools Public Sharing": "", "Top K": "Goiko K", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 02d0261e6..7b54bb826 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "تکه های پاسخ خارجی بزرگ را به صورت سیال پخش کنید", "Focus chat input": "فوکوس کردن ورودی گپ", "Folder deleted successfully": "پوشه با موفقیت حذف شد", - "Folder name cannot be empty": "نام پوشه نمی\u200cتواند خالی باشد", "Folder name cannot be empty.": "نام پوشه نمی\u200cتواند خالی باشد.", "Folder name updated successfully": "نام پوشه با موفقیت به\u200cروز شد", "Followed instructions perfectly": "دستورالعمل ها را کاملا دنبال کرد", @@ -582,7 +581,6 @@ "Function Name": "نام تابع", "Function updated successfully": "تابع با موفقیت به\u200cروز شد", "Functions": "توابع", - "Functions allow arbitrary code execution": "توابع اجازه اجرای کد دلخواه را می\u200cدهند", "Functions allow arbitrary code execution.": "توابع اجازه اجرای کد دلخواه را می\u200cدهند.", "Functions imported successfully": "درون\u200cریزی توابع با موفقیت انجام شد", "Gemini": "جمینی", @@ -787,7 +785,6 @@ "No distance available": "فاصله\u200cای در دسترس نیست", "No feedbacks found": "بازخوردی یافت نشد", "No file selected": "فایلی انتخاب نشده است", - "No files found.": "فایلی یافت نشد.", "No groups with access, add a group to grant access": "هیچ گروهی با دسترسی وجود ندارد، یک گروه برای اعطای دسترسی اضافه کنید", "No HTML, CSS, or JavaScript content found.": "محتوای HTML، CSS یا JavaScript یافت نشد.", "No inference engine with management support found": "موتور استنتاج با پشتیبانی مدیریت یافت نشد", @@ -1162,7 +1159,6 @@ "Tools Access": "دسترسی به ابزارها", "Tools are a function calling system with arbitrary code execution": "ابزارها یک سیستم فراخوانی تابع با اجرای کد دلخواه هستند", "Tools Function Calling Prompt": "پرامپت فراخوانی تابع ابزارها", - "Tools have a function calling system that allows arbitrary code execution": "ابزارها دارای سیستم فراخوانی تابع هستند که اجازه اجرای کد دلخواه را می\u200cدهد", "Tools have a function calling system that allows arbitrary code execution.": "ابزارها دارای سیستم فراخوانی تابع هستند که اجازه اجرای کد دلخواه را می\u200cدهد.", "Tools Public Sharing": "اشتراک\u200cگذاری عمومی ابزارها", "Top K": "Top K", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 065dcd373..9c8a4bbce 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Virtaa suuria ulkoisia vastausosia joustavasti", "Focus chat input": "Fokusoi syöttökenttään", "Folder deleted successfully": "Kansio poistettu onnistuneesti", - "Folder name cannot be empty": "Kansion nimi ei voi olla tyhjä", "Folder name cannot be empty.": "Kansion nimi ei voi olla tyhjä.", "Folder name updated successfully": "Kansion nimi päivitetty onnistuneesti", "Followed instructions perfectly": "Noudatti ohjeita täydellisesti", @@ -582,7 +581,6 @@ "Function Name": "Toiminnon nimi", "Function updated successfully": "Toiminto päivitetty onnistuneesti", "Functions": "Toiminnot", - "Functions allow arbitrary code execution": "Toiminnot sallivat mielivaltaisen koodin suorittamisen", "Functions allow arbitrary code execution.": "Toiminnot sallivat mielivaltaisen koodin suorittamisen.", "Functions imported successfully": "Toiminnot tuotu onnistuneesti", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Etäisyyttä ei saatavilla", "No feedbacks found": "Palautteita ei löytynyt", "No file selected": "Tiedostoa ei ole valittu", - "No files found.": "Tiedostoja ei löytynyt.", "No groups with access, add a group to grant access": "Ei ryhmiä, joilla on pääsy, lisää ryhmä antaaksesi pääsyn", "No HTML, CSS, or JavaScript content found.": "HTML-, CSS- tai JavaScript-sisältöä ei löytynyt.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "Työkalujen käyttöoikeudet", "Tools are a function calling system with arbitrary code execution": "Työkalut ovat toimintokutsuihin perustuva järjestelmä, joka sallii mielivaltaisen koodin suorittamisen", "Tools Function Calling Prompt": "Työkalujen kutsukehote", - "Tools have a function calling system that allows arbitrary code execution": "Työkaluilla on toimintokutsuihin perustuva järjestelmä, joka sallii mielivaltaisen koodin suorittamisen", "Tools have a function calling system that allows arbitrary code execution.": "Työkalut sallivat mielivaltaisen koodin suorittamisen toimintokutsuilla.", "Tools Public Sharing": "Työkalujen julkinen jakaminen", "Top K": "Top K", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 41e30c3a8..ae026de44 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Diffuser de manière fluide de larges portions de réponses externes", "Focus chat input": "Se concentrer sur le chat en entrée", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "A parfaitement suivi les instructions", @@ -582,7 +581,6 @@ "Function Name": "Nom de la fonction", "Function updated successfully": "La fonction a été mise à jour avec succès", "Functions": "Fonctions", - "Functions allow arbitrary code execution": "Les fonctions permettent l'exécution de code arbitraire", "Functions allow arbitrary code execution.": "Les fonctions permettent l'exécution de code arbitraire.", "Functions imported successfully": "Fonctions importées avec succès", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "Aucun fichier sélectionné", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 925e4dc95..6e392691d 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Streaming fluide de gros chunks de réponses externes", "Focus chat input": "Mettre le focus sur le champ de chat", "Folder deleted successfully": "Dossier supprimé avec succès", - "Folder name cannot be empty": "Le nom du dossier ne peut pas être vide", "Folder name cannot be empty.": "Le nom du dossier ne peut pas être vide.", "Folder name updated successfully": "Le nom du dossier a été mis à jour avec succès", "Followed instructions perfectly": "A parfaitement suivi les instructions", @@ -582,7 +581,6 @@ "Function Name": "Nom de la fonction", "Function updated successfully": "La fonction a été mise à jour avec succès", "Functions": "Fonctions", - "Functions allow arbitrary code execution": "Les fonctions permettent l'exécution de code arbitraire", "Functions allow arbitrary code execution.": "Les fonctions permettent l'exécution de code arbitraire.", "Functions imported successfully": "Fonctions importées avec succès", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Aucune distance disponible", "No feedbacks found": "Aucun avis trouvé", "No file selected": "Aucun fichier sélectionné", - "No files found.": "Aucun fichier trouvé.", "No groups with access, add a group to grant access": "Aucun groupe n'a accès, ajoutez un groupe pour accorder l'accès", "No HTML, CSS, or JavaScript content found.": "Aucun contenu HTML, CSS ou JavaScript trouvé.", "No inference engine with management support found": "Aucun moteur d'inférence avec support trouvé", @@ -1162,7 +1159,6 @@ "Tools Access": "Accès aux outils", "Tools are a function calling system with arbitrary code execution": "Les outils sont un système d'appel de fonction avec exécution de code arbitraire", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Les outils ont un système d'appel de fonction qui permet l'exécution de code arbitraire", "Tools have a function calling system that allows arbitrary code execution.": "Les outils ont un système d'appel de fonction qui permet l'exécution de code arbitraire.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index b01b39df3..afc4d4607 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "שידור נתונים חיצוניים בקצב רציף", "Focus chat input": "מיקוד הקלט לצ'אט", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "עקב אחר ההוראות במושלמות", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index a73ca1aa7..49eee6921 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "बड़े बाह्य प्रतिक्रिया खंडों को तरल रूप से प्रवाहित करें", "Focus chat input": "चैट इनपुट पर फ़ोकस करें", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "निर्देशों का पूर्णतः पालन किया", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "शीर्ष K", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index 50a23d5aa..75dc92458 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Glavno strujanje velikih vanjskih dijelova odgovora", "Focus chat input": "Fokusiraj unos razgovora", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Savršeno slijedio upute", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index 466fb9d91..ac8661d6c 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Nagy külső válasz darabok folyamatos streamelése", "Focus chat input": "Chat bevitel fókuszálása", "Folder deleted successfully": "Mappa sikeresen törölve", - "Folder name cannot be empty": "A mappa neve nem lehet üres", "Folder name cannot be empty.": "A mappa neve nem lehet üres.", "Folder name updated successfully": "Mappa neve sikeresen frissítve", "Followed instructions perfectly": "Tökéletesen követte az utasításokat", @@ -582,7 +581,6 @@ "Function Name": "Funkció neve", "Function updated successfully": "Funkció sikeresen frissítve", "Functions": "Funkciók", - "Functions allow arbitrary code execution": "A funkciók tetszőleges kód végrehajtását teszik lehetővé", "Functions allow arbitrary code execution.": "A funkciók tetszőleges kód végrehajtását teszik lehetővé.", "Functions imported successfully": "Funkciók sikeresen importálva", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Nincs elérhető távolság", "No feedbacks found": "Nem található visszajelzés", "No file selected": "Nincs kiválasztva fájl", - "No files found.": "Nem található fájl.", "No groups with access, add a group to grant access": "Nincs hozzáféréssel rendelkező csoport, adj hozzá egy csoportot a hozzáférés megadásához", "No HTML, CSS, or JavaScript content found.": "Nem található HTML, CSS vagy JavaScript tartalom.", "No inference engine with management support found": "Nem található kezelést támogató következtetési motor", @@ -1162,7 +1159,6 @@ "Tools Access": "Eszközök hozzáférése", "Tools are a function calling system with arbitrary code execution": "Az eszközök olyan függvényhívó rendszert alkotnak, amely tetszőleges kód végrehajtását teszi lehetővé", "Tools Function Calling Prompt": "Eszközök függvényhívási promptja", - "Tools have a function calling system that allows arbitrary code execution": "Az eszközök olyan függvényhívó rendszerrel rendelkeznek, amely lehetővé teszi tetszőleges kód végrehajtását", "Tools have a function calling system that allows arbitrary code execution.": "Az eszközök olyan függvényhívó rendszerrel rendelkeznek, amely lehetővé teszi tetszőleges kód végrehajtását.", "Tools Public Sharing": "Eszközök nyilvános megosztása", "Top K": "Top K", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index a4e88b134..6be73d5b2 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Mengalirkan potongan respons eksternal yang besar dengan lancar", "Focus chat input": "Memfokuskan input obrolan", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Mengikuti instruksi dengan sempurna", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Fungsi berhasil diperbarui", "Functions": "Fungsi", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "Fungsi berhasil diimpor", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "Tidak ada file yang dipilih", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "K atas", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 73d932981..6952a4bf8 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Sruthaigh codanna móra freagartha seachtracha go sreabhach", "Focus chat input": "Ionchur comhrá fócas", "Folder deleted successfully": "Scriosadh an fillteán go rathúil", - "Folder name cannot be empty": "Ní féidir ainm fillteáin a bheith folamh", "Folder name cannot be empty.": "Ní féidir ainm fillteáin a bheith folamh.", "Folder name updated successfully": "D'éirigh le hainm an fhillteáin a nuashonrú", "Followed instructions perfectly": "Lean treoracha go foirfe", @@ -582,7 +581,6 @@ "Function Name": "Ainm Feidhme", "Function updated successfully": "Feidhm nuashonraithe", "Functions": "Feidhmeanna", - "Functions allow arbitrary code execution": "Ligeann feidhmeanna forghníomhú cód", "Functions allow arbitrary code execution.": "Ceadaíonn feidhmeanna forghníomhú cód treallach.", "Functions imported successfully": "Feidhmeanna allmhairi", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Níl achar ar fáil", "No feedbacks found": "Níor aimsíodh aon aiseolas", "No file selected": "Níl aon chomhad roghnaithe", - "No files found.": "Níor aimsíodh aon chomhaid.", "No groups with access, add a group to grant access": "Gan aon ghrúpa a bhfuil rochtain acu, cuir grúpa leis chun rochtain a dheonú", "No HTML, CSS, or JavaScript content found.": "Níor aimsíodh aon ábhar HTML, CSS nó JavaScript.", "No inference engine with management support found": "Níor aimsíodh aon inneall tátail le tacaíocht bhainistíochta", @@ -1162,7 +1159,6 @@ "Tools Access": "Rochtain Uirlisí", "Tools are a function calling system with arbitrary code execution": "Is córas glaonna feidhme iad uirlisí le forghníomhú cód treallach", "Tools Function Calling Prompt": "Leid Glaonna Feidhm Uirlisí", - "Tools have a function calling system that allows arbitrary code execution": "Tá córas glaonna feidhme ag uirlisí a cheadaíonn forghníomhú cód treallach", "Tools have a function calling system that allows arbitrary code execution.": "Tá córas glaonna feidhme ag uirlisí a cheadaíonn forghníomhú cód treallach.", "Tools Public Sharing": "Uirlisí Roinnte Poiblí", "Top K": "Barr K", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index ba831fa32..75cab5392 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Trasmetti in modo fluido blocchi di risposta esterni di grandi dimensioni", "Focus chat input": "Metti a fuoco l'input della chat", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Ha seguito le istruzioni alla perfezione", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 9cf01f0d0..473dd5231 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "大規模な外部応答チャンクをスムーズにストリーミングする", "Focus chat input": "チャット入力をフォーカス", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "完全に指示に従った", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Functionのアップデートが成功しました。", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "Functionsのインポートが成功しました", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "トップ K", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index b9420f93a..d929dc0c7 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "დიდი გარე პასუხის ფრაგმენტების გლუვად დასტრიმვა", "Focus chat input": "ჩატში შეყვანის ფოკუსი", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "ინსტრუქციების ზუსტად მიჰყევით", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "ფუნქციები", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "მარჩბივი", @@ -787,7 +785,6 @@ "No distance available": "მანძილი ხელმისაწვდომი არაა", "No feedbacks found": "", "No file selected": "ფაილი არჩეული არაა", - "No files found.": "ფაილები ვერ მოიძებნა.", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "ტოპ K", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 0177452d6..205737b8b 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "대규모 외부 응답 청크를 유연하게 스트리밍", "Focus chat input": "채팅 입력창에 포커스", "Folder deleted successfully": "성공적으로 폴터가 생성되었습니다", - "Folder name cannot be empty": "폴더 이름을 작성해주세요", "Folder name cannot be empty.": "폴더 이름을 작성해주세요", "Folder name updated successfully": "성공적으로 폴더 이름이 저장되었습니다", "Followed instructions perfectly": "명령을 완벽히 수행함", @@ -582,7 +581,6 @@ "Function Name": "함수 이름", "Function updated successfully": "성공적으로 함수가 업데이트되었습니다", "Functions": "함수", - "Functions allow arbitrary code execution": "함수로 임이의 코드 실행 허용하기", "Functions allow arbitrary code execution.": "함수가 임이의 코드를 실행하도록 허용하였습니다", "Functions imported successfully": "성공적으로 함수가 가져왔습니다", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "거리 불가능", "No feedbacks found": "피드백 없음", "No file selected": "파일이 선택되지 않음", - "No files found.": "파일 없음", "No groups with access, add a group to grant access": "접근 권한이 있는 그룹이 없습니다. 접근 권한을 부여하려면 그룹을 추가하세요.", "No HTML, CSS, or JavaScript content found.": "HTML, CSS, JavaScript이 발견되지 않음", "No inference engine with management support found": "관리 지원이 포함된 추론 엔진을 찾을 수 없음", @@ -1162,7 +1159,6 @@ "Tools Access": "도구 접근", "Tools are a function calling system with arbitrary code execution": "도구는 임의 코드를 실행시키는 함수를 불러오는 시스템입니다", "Tools Function Calling Prompt": "도구 함수 호출 프롬프트", - "Tools have a function calling system that allows arbitrary code execution": "도구에 임의 코드 실행을 허용하는 함수가 포함되어 있습니다", "Tools have a function calling system that allows arbitrary code execution.": "도구에 임의 코드 실행을 허용하는 함수가 포함되어 있습니다.", "Tools Public Sharing": "도구 공개 및 공유", "Top K": "Top K", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 8d6498f57..0fa6b7549 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Sklandžiai transliuoti ilgus atsakymus", "Focus chat input": "Fokusuoti žinutės įvestį", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Tobulai sekė instrukcijas", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Funkcija atnaujinta sėkmingai", "Functions": "Funkcijos", - "Functions allow arbitrary code execution": "Funkcijos leidžia nekontroliuojamo kodo vykdymą", "Functions allow arbitrary code execution.": "Funkcijos leidžia nekontroliuojamo kodo vykdymą", "Functions imported successfully": "Funkcijos importuotos sėkmingai", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "Nėra pasirinktų dokumentų", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "Įrankiai gali naudoti funkcijas ir vykdyti kodą", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Įrankiai gali naudoti funkcijas ir leisti vykdyti kodą", "Tools have a function calling system that allows arbitrary code execution.": "Įrankiai gali naudoti funkcijas ir leisti vykdyti kodą", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 1be4ea54a..07f4d38d3 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Strim 'chunks' respons luaran yang besar dengan lancar", "Focus chat input": "Fokus kepada input perbualan", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Mengikut arahan dengan sempurna", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Fungsi berjaya dikemaskini", "Functions": "Fungsi", - "Functions allow arbitrary code execution": "Fungsi membenarkan pelaksanaan kod sewenang-wenangnya", "Functions allow arbitrary code execution.": "Fungsi membenarkan pelaksanaan kod sewenang-wenangnya.", "Functions imported successfully": "Fungsi berjaya diimport", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "Tiada fail dipilih", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "Alatan ialah sistem panggilan fungsi dengan pelaksanaan kod sewenang-wenangnya", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Alatan mempunyai sistem panggilan fungsi yang membolehkan pelaksanaan kod sewenang-wenangnya", "Tools have a function calling system that allows arbitrary code execution.": "Alatan mempunyai sistem panggilan fungsi yang membolehkan pelaksanaan kod sewenang-wenangnya.", "Tools Public Sharing": "", "Top K": "'Top K'", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index e8135067e..9777cf17c 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Flytende strømming av store eksterne svarpakker", "Focus chat input": "Fokusert chat-inndata", "Folder deleted successfully": "Mappe slettet", - "Folder name cannot be empty": "Mappenavn kan ikke være tomt", "Folder name cannot be empty.": "Mappenavn kan ikke være tomt.", "Folder name updated successfully": "Mappenavn oppdatert", "Followed instructions perfectly": "Fulgte instruksjonene perfekt", @@ -582,7 +581,6 @@ "Function Name": "Funksjonens navn", "Function updated successfully": "Funksjonen er oppdatert", "Functions": "Funksjoner", - "Functions allow arbitrary code execution": "Funksjoner tillater vilkårlig kodekjøring", "Functions allow arbitrary code execution.": "Funksjoner tillater vilkårlig kodekjøring.", "Functions imported successfully": "Funksjoner er importert", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Ingen avstand tilgjengelig", "No feedbacks found": "Finner ingen tilbakemeldinger", "No file selected": "Ingen fil valgt", - "No files found.": "Finner ingen filer", "No groups with access, add a group to grant access": "Ingen grupper med tilgang. Legg til en gruppe som skal ha tilgang.", "No HTML, CSS, or JavaScript content found.": "Finner ikke noe HTML, CSS- eller JavaScript-innhold.", "No inference engine with management support found": "Fant ingen konklusjonsmotor med støtte for administrasjon", @@ -1162,7 +1159,6 @@ "Tools Access": "Verktøyets tilgang", "Tools are a function calling system with arbitrary code execution": "Verktøy er et funksjonskallsystem med vilkårlig kodekjøring", "Tools Function Calling Prompt": "Ledetekst for kalling av verktøyfunksjonen", - "Tools have a function calling system that allows arbitrary code execution": "Verktøy inneholder et funksjonskallsystem som tillater vilkårlig kodekjøring", "Tools have a function calling system that allows arbitrary code execution.": "Verktøy inneholder et funksjonskallsystem som tillater vilkårlig kodekjøring.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 70ee3cb7c..f7fedabbd 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Stream grote externe responsbrokken vloeiend", "Focus chat input": "Focus chat input", "Folder deleted successfully": "Map succesvol verwijderd", - "Folder name cannot be empty": "Mapnaam kan niet leeg zijn", "Folder name cannot be empty.": "Mapnaam kan niet leeg zijn", "Folder name updated successfully": "Mapnaam succesvol aangepast", "Followed instructions perfectly": "Volgde instructies perfect", @@ -582,7 +581,6 @@ "Function Name": "Functienaam", "Function updated successfully": "Functienaam succesvol aangepast", "Functions": "Functies", - "Functions allow arbitrary code execution": "Functies staan willekeurige code-uitvoering toe", "Functions allow arbitrary code execution.": "Functies staan willekeurige code-uitvoering toe", "Functions imported successfully": "Functies succesvol geïmporteerd", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Geen afstand beschikbaar", "No feedbacks found": "Geen feedback gevonden", "No file selected": "Geen bestand geselecteerd", - "No files found.": "Geen bestanden gevonden", "No groups with access, add a group to grant access": "Geen groepen met toegang, voeg een groep toe om toegang te geven", "No HTML, CSS, or JavaScript content found.": "Geen HTML, CSS, of JavaScript inhoud gevonden", "No inference engine with management support found": "Geen inferentie-engine met beheerondersteuning gevonden", @@ -1162,7 +1159,6 @@ "Tools Access": "Gereedschaptoegang", "Tools are a function calling system with arbitrary code execution": "Gereedschappen zijn een systeem voor het aanroepen van functies met willekeurige code-uitvoering", "Tools Function Calling Prompt": "Gereedschapsfunctie aanroepprompt", - "Tools have a function calling system that allows arbitrary code execution": "Gereedschappen hebben een systeem voor het aanroepen van functies waarmee willekeurige code kan worden uitgevoerd", "Tools have a function calling system that allows arbitrary code execution.": "Gereedschappen hebben een systeem voor het aanroepen van functies waarmee willekeurige code kan worden uitgevoerd", "Tools Public Sharing": "Gereedschappen publiek delen", "Top K": "Top K", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index db5341380..587e4d3b9 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "ਵੱਡੇ ਬਾਹਰੀ ਜਵਾਬ ਚੰਕਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਟ੍ਰੀਮ ਕਰੋ", "Focus chat input": "ਗੱਲਬਾਤ ਇਨਪੁਟ 'ਤੇ ਧਿਆਨ ਦਿਓ", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "ਹਦਾਇਤਾਂ ਨੂੰ ਬਿਲਕੁਲ ਫਾਲੋ ਕੀਤਾ", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "ਸਿਖਰ K", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 75988397a..73d396b1e 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Płynnie strumieniuj duże fragmenty odpowiedzi zewnętrznych", "Focus chat input": "Skup się na czacie", "Folder deleted successfully": "Folder został usunięty pomyślnie", - "Folder name cannot be empty": "Nazwa folderu nie może być pusta", "Folder name cannot be empty.": "Nazwa folderu nie może być pusta.", "Folder name updated successfully": "Nazwa folderu została zaktualizowana pomyślnie", "Followed instructions perfectly": "Wykonał instrukcje idealnie", @@ -582,7 +581,6 @@ "Function Name": "Nazwa Funkcji", "Function updated successfully": "Funkcja została zaktualizowana pomyślnie", "Functions": "Funkcje", - "Functions allow arbitrary code execution": "Funkcje umożliwiają wykonanie dowolnego kodu", "Functions allow arbitrary code execution.": "Funkcje umożliwiają wykonanie dowolnego kodu.", "Functions imported successfully": "Funkcje zostały pomyślnie zaimportowane", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Brak dostępnej odległości", "No feedbacks found": "Nie znaleziono żadnych opinii", "No file selected": "Nie wybrano żadnego pliku", - "No files found.": "Nie znaleziono żadnych plików.", "No groups with access, add a group to grant access": "Brak grup z dostępem, dodaj grupę, aby przyznać dostęp", "No HTML, CSS, or JavaScript content found.": "Nie znaleziono żadnej zawartości HTML, CSS ani JavaScript.", "No inference engine with management support found": "Nie znaleziono silnika wnioskującego z obsługą zarządzania", @@ -1162,7 +1159,6 @@ "Tools Access": "Narzędzia Dostępu", "Tools are a function calling system with arbitrary code execution": "Narzędzia to system wywoływania funkcji z możliwością wykonania dowolnego kodu.", "Tools Function Calling Prompt": "Narzędzia Funkcja Wywołania Promptu", - "Tools have a function calling system that allows arbitrary code execution": "Narzędzia mają funkcję wywoływania systemu, która umożliwia wykonywanie dowolnego kodu", "Tools have a function calling system that allows arbitrary code execution.": "Narzędzia mają funkcję wywoływania systemu, która umożliwia wykonanie dowolnego kodu.", "Tools Public Sharing": "", "Top K": "Najlepsze K", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 8cd883610..bf823bdb2 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Transmitir fluentemente grandes blocos de respostas externas", "Focus chat input": "Focar entrada de chat", "Folder deleted successfully": "Pasta excluída com sucesso", - "Folder name cannot be empty": "Nome da pasta não pode estar vazio", "Folder name cannot be empty.": "Nome da pasta não pode estar vazio.", "Folder name updated successfully": "Nome da pasta atualizado com sucesso", "Followed instructions perfectly": "Seguiu as instruções perfeitamente", @@ -582,7 +581,6 @@ "Function Name": "Nome da Função", "Function updated successfully": "Função atualizada com sucesso", "Functions": "Funções", - "Functions allow arbitrary code execution": "Funções permitem a execução arbitrária de código", "Functions allow arbitrary code execution.": "Funções permitem a execução arbitrária de código.", "Functions imported successfully": "Funções importadas com sucesso", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Sem distância disponível", "No feedbacks found": "Comentários não encontrados", "No file selected": "Nenhum arquivo selecionado", - "No files found.": "Nenhum arquivo encontrado.", "No groups with access, add a group to grant access": "Nenhum grupo com acesso, adicione um grupo para dar acesso", "No HTML, CSS, or JavaScript content found.": "Nenhum conteúdo HTML, CSS ou JavaScript encontrado.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "Acesso as Ferramentas", "Tools are a function calling system with arbitrary code execution": "Ferramentas são um sistema de chamada de funções com execução de código arbitrário", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Ferramentas possuem um sistema de chamada de funções que permite a execução de código arbitrário", "Tools have a function calling system that allows arbitrary code execution.": "Ferramentas possuem um sistema de chamada de funções que permite a execução de código arbitrário.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 72060b8ef..aecfa3dd6 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Transmita com fluidez grandes blocos de resposta externa", "Focus chat input": "Focar na conversa", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Seguiu instruções perfeitamente", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 4c37c2e87..81ffb3509 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Transmite fluent blocuri mari de răspuns extern", "Focus chat input": "Focalizează câmpul de intrare pentru conversație", "Folder deleted successfully": "Folder șters cu succes", - "Folder name cannot be empty": "Numele folderului nu poate fi gol", "Folder name cannot be empty.": "Numele folderului nu poate fi gol.", "Folder name updated successfully": "Numele folderului a fost actualizat cu succes", "Followed instructions perfectly": "A urmat instrucțiunile perfect", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Funcția a fost actualizată cu succes", "Functions": "Funcții", - "Functions allow arbitrary code execution": "Funcțiile permit executarea arbitrară a codului", "Functions allow arbitrary code execution.": "Funcțiile permit executarea arbitrară a codului.", "Functions imported successfully": "Funcțiile au fost importate cu succes", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Nicio distanță disponibilă", "No feedbacks found": "Niciun feedback găsit", "No file selected": "Nu a fost selectat niciun fișier", - "No files found.": "Nu au fost găsite fișiere.", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "Niciun conținut HTML, CSS sau JavaScript găsit.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "Instrumentele sunt un sistem de apelare a funcțiilor cu executare arbitrară a codului", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Instrumentele au un sistem de apelare a funcțiilor care permite executarea arbitrară a codului", "Tools have a function calling system that allows arbitrary code execution.": "Instrumentele au un sistem de apelare a funcțiilor care permite executarea arbitrară a codului.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 9defd4145..111a0e14d 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Плавная потоковая передача больших фрагментов внешних ответов", "Focus chat input": "Фокус ввода чата", "Folder deleted successfully": "Папка успешно удалена", - "Folder name cannot be empty": "Имя папки не может быть пустым", "Folder name cannot be empty.": "Имя папки не может быть пустым.", "Folder name updated successfully": "Имя папки успешно обновлено", "Followed instructions perfectly": "Идеально соответствует инструкциям", @@ -582,7 +581,6 @@ "Function Name": "Имя Функции", "Function updated successfully": "Функция успешно обновлена", "Functions": "Функции", - "Functions allow arbitrary code execution": "Функции позволяют выполнять произвольный код", "Functions allow arbitrary code execution.": "Функции позволяют выполнять произвольный код.", "Functions imported successfully": "Функции успешно импортированы", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Никаких доступных растояний", "No feedbacks found": "Никаких обратных связей не найдено", "No file selected": "Файлы не выбраны", - "No files found.": "Файлы не найдены.", "No groups with access, add a group to grant access": "Нет групп с доступом, добавьте группу для предоставления доступа", "No HTML, CSS, or JavaScript content found.": "Содержимое в формате HTML, CSS или JavaScript не найдено.", "No inference engine with management support found": "Механизм логического вывода с поддержкой управления не найден", @@ -1162,7 +1159,6 @@ "Tools Access": "Доступ к инструментам", "Tools are a function calling system with arbitrary code execution": "Инструменты - это система вызова функций с выполнением произвольного кода", "Tools Function Calling Prompt": "Промпт на вызов функции Инструменты", - "Tools have a function calling system that allows arbitrary code execution": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код", "Tools have a function calling system that allows arbitrary code execution.": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код.", "Tools Public Sharing": "Публичный обмен инструментами", "Top K": "Top K", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index fd5b0686c..f96d27f65 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Plynule streamujte veľké externé časti odpovedí", "Focus chat input": "Zamerajte sa na vstup chatu", "Folder deleted successfully": "Priečinok bol úspešne vymazaný", - "Folder name cannot be empty": "Názov priečinka nesmie byť prázdny", "Folder name cannot be empty.": "Názov priečinka nesmie byť prázdny.", "Folder name updated successfully": "Názov priečinka bol úspešne aktualizovaný.", "Followed instructions perfectly": "Dodržal pokyny dokonale.", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "Funkcia bola úspešne aktualizovaná.", "Functions": "Funkcie", - "Functions allow arbitrary code execution": "Funkcie umožňujú vykonávať ľubovoľný kód.", "Functions allow arbitrary code execution.": "Funkcie umožňujú vykonávanie ľubovoľného kódu.", "Functions imported successfully": "Funkcie boli úspešne importované", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Nie je dostupná žiadna vzdialenosť", "No feedbacks found": "Žiadna spätná väzba nenájdená", "No file selected": "Nebola vybratá žiadna súbor", - "No files found.": "Neboli nájdené žiadne súbory.", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "Nebola nájdená žiadny obsah HTML, CSS ani JavaScript.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "Nástroje sú systémom na volanie funkcií s vykonávaním ľubovoľného kódu.", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Nástroje majú systém volania funkcií, ktorý umožňuje ľubovoľné spúšťanie kódu.", "Tools have a function calling system that allows arbitrary code execution.": "Nástroje majú systém volania funkcií, ktorý umožňuje spúšťanie ľubovoľného kódu.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 83b8a634f..c91e1692e 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Течно стримујте велике спољне делове одговора", "Focus chat input": "Усредсредите унос ћаскања", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Упутства су савршено праћена", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "Функције", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "Приступ алатима", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "Топ К", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 5a997cbe4..8f85e76ed 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Strömma flytande stora externa svarschunks", "Focus chat input": "Fokusera på chattfältet", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "Följde instruktionerna perfekt", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "Verktyg är ett funktionsanropssystem med godtycklig kodkörning", "Tools Function Calling Prompt": "Prompt för anrop av verktygsfunktion:", - "Tools have a function calling system that allows arbitrary code execution": "Verktyg har ett funktionsanropssystem som tillåter godtycklig kodkörning", "Tools have a function calling system that allows arbitrary code execution.": "Verktyg har ett funktionsanropssystem som tillåter godtycklig kodkörning", "Tools Public Sharing": "", "Top K": "Topp K", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 36b225509..638d9eca3 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "สตรีมชิ้นส่วนการตอบสนองขนาดใหญ่จากภายนอกอย่างลื่นไหล", "Focus chat input": "โฟกัสการป้อนแชท", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "ปฏิบัติตามคำแนะนำอย่างสมบูรณ์แบบ", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "อัปเดตฟังก์ชันสำเร็จ", "Functions": "ฟังก์ชัน", - "Functions allow arbitrary code execution": "ฟังก์ชันอนุญาตการเรียกใช้โค้ดโดยพลการ", "Functions allow arbitrary code execution.": "ฟังก์ชันอนุญาตการเรียกใช้โค้ดโดยพลการ", "Functions imported successfully": "นำเข้าฟังก์ชันสำเร็จ", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "ไม่ได้เลือกไฟล์", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "เครื่องมือคือระบบการเรียกใช้ฟังก์ชันที่สามารถดำเนินการโค้ดใดๆ ได้", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "เครื่องมือมีระบบการเรียกใช้ฟังก์ชันที่สามารถดำเนินการโค้ดใดๆ ได้", "Tools have a function calling system that allows arbitrary code execution.": "เครื่องมือมีระบบการเรียกใช้ฟังก์ชันที่สามารถดำเนินการโค้ดใดๆ ได้", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index ec5aeef00..6f5d4ce19 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "", "Focus chat input": "", "Folder deleted successfully": "", - "Folder name cannot be empty": "", "Folder name cannot be empty.": "", "Folder name updated successfully": "", "Followed instructions perfectly": "", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "", "No feedbacks found": "", "No file selected": "", - "No files found.": "", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "", "Tools have a function calling system that allows arbitrary code execution.": "", "Tools Public Sharing": "", "Top K": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index 03d1d7fce..7fb9df64d 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Büyük harici yanıt chunklarını akıcı bir şekilde yayınlayın", "Focus chat input": "Sohbet girişine odaklan", "Folder deleted successfully": "Klasör başarıyla silindi", - "Folder name cannot be empty": "Klasör adı boş olamaz", "Folder name cannot be empty.": "Klasör adı boş olamaz.", "Folder name updated successfully": "Klasör adı başarıyla güncellendi", "Followed instructions perfectly": "Talimatları mükemmel şekilde takip etti", @@ -582,7 +581,6 @@ "Function Name": "Fonksiyon Adı", "Function updated successfully": "Fonksiyon başarıyla güncellendi", "Functions": "Fonksiyonlar", - "Functions allow arbitrary code execution": "Fonksiyonlar keyfi kod yürütülmesine izin verir", "Functions allow arbitrary code execution.": "Fonksiyonlar keyfi kod yürütülmesine izin verir.", "Functions imported successfully": "Fonksiyonlar başarıyla içe aktarıldı", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "Mesafe mevcut değil", "No feedbacks found": "Geri bildirim bulunamadı", "No file selected": "Hiçbir dosya seçilmedi", - "No files found.": "Dosya bulunamadı.", "No groups with access, add a group to grant access": "Erişimi olan grup yok, erişim sağlamak için bir grup ekleyin", "No HTML, CSS, or JavaScript content found.": "HTML, CSS veya JavaScript içeriği bulunamadı.", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "Araçlara Erişim", "Tools are a function calling system with arbitrary code execution": "Araçlar, keyfi kod yürütme ile bir fonksiyon çağırma sistemine sahiptir", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "Araçlar, keyfi kod yürütme izni veren bir fonksiyon çağırma sistemine sahiptir", "Tools have a function calling system that allows arbitrary code execution.": "Araçlar, keyfi kod yürütme izni veren bir fonksiyon çağırma sistemine sahiptir.", "Tools Public Sharing": "", "Top K": "Top K", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 8a325afa3..f6b786cfd 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Плавно передавати великі фрагменти зовнішніх відповідей", "Focus chat input": "Фокус вводу чату", "Folder deleted successfully": "Папку успішно видалено", - "Folder name cannot be empty": "Назва папки не може бути порожньою", "Folder name cannot be empty.": "Назва папки не може бути порожньою.", "Folder name updated successfully": "Назву папки успішно оновлено", "Followed instructions perfectly": "Бездоганно дотримувався інструкцій", @@ -582,7 +581,6 @@ "Function Name": "Назва функції", "Function updated successfully": "Функцію успішно оновлено", "Functions": "Функції", - "Functions allow arbitrary code execution": "Функції дозволяють виконання довільного коду", "Functions allow arbitrary code execution.": "Функції дозволяють виконання довільного коду.", "Functions imported successfully": "Функції успішно імпортовано", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Відстань недоступна", "No feedbacks found": "Відгуків не знайдено", "No file selected": "Файл не обрано", - "No files found.": "Файли не знайдено.", "No groups with access, add a group to grant access": "Немає груп з доступом, додайте групу для надання доступу", "No HTML, CSS, or JavaScript content found.": "HTML, CSS або JavaScript контент не знайдено.", "No inference engine with management support found": "Не знайдено двигуна висновків з підтримкою керування", @@ -1162,7 +1159,6 @@ "Tools Access": "Доступ до інструментів", "Tools are a function calling system with arbitrary code execution": "Інструменти - це система виклику функцій з довільним виконанням коду", "Tools Function Calling Prompt": "Підказка для виклику функцій інструментів", - "Tools have a function calling system that allows arbitrary code execution": "Інструменти мають систему виклику функцій, яка дозволяє виконання довільного коду", "Tools have a function calling system that allows arbitrary code execution.": "Інструменти мають систему виклику функцій, яка дозволяє виконання довільного коду.", "Tools Public Sharing": "Публічний обмін інструментами", "Top K": "Top K", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index e903b9af5..03e78f317 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "بڑے بیرونی جوابات کے حصوں کو بہاؤ میں منتقل کریں", "Focus chat input": "چیٹ ان پٹ پر توجہ مرکوز کریں", "Folder deleted successfully": "پوشہ کامیابی سے حذف ہو گیا", - "Folder name cannot be empty": "پوشے کا نام خالی نہیں ہو سکتا", "Folder name cannot be empty.": "پوشے کا نام خالی نہیں ہو سکتا", "Folder name updated successfully": "فولڈر کا نام کامیابی سے اپ ڈیٹ ہوگیا", "Followed instructions perfectly": "ہدایتوں کی مکمل پیروی کی گئی", @@ -582,7 +581,6 @@ "Function Name": "", "Function updated successfully": "فنکشن کو کامیابی سے اپ ڈیٹ کر دیا گیا", "Functions": "افعال", - "Functions allow arbitrary code execution": "فنکشنز کوڈ کے بلاواسطہ نفاذ کی اجازت دیتے ہیں", "Functions allow arbitrary code execution.": "افعال صوابدیدی کوڈ کے اجرا کی اجازت دیتے ہیں", "Functions imported successfully": "فنکشنز کامیابی سے درآمد ہو گئے ہیں", "Gemini": "", @@ -787,7 +785,6 @@ "No distance available": "فاصلہ دستیاب نہیں ہے", "No feedbacks found": "کوئی تبصرے نہیں ملے", "No file selected": "کوئی فائل منتخب نہیں کی گئی", - "No files found.": "کوئی فائلیں نہیں ملیں", "No groups with access, add a group to grant access": "", "No HTML, CSS, or JavaScript content found.": "کوئی HTML، CSS، یا جاوا اسکرپٹ مواد نہیں ملا", "No inference engine with management support found": "", @@ -1162,7 +1159,6 @@ "Tools Access": "", "Tools are a function calling system with arbitrary code execution": "ٹولز ایک فنکشن کالنگ سسٹم ہیں جس میں مرضی کے مطابق کوڈ چلایا جاتا ہے", "Tools Function Calling Prompt": "", - "Tools have a function calling system that allows arbitrary code execution": "ٹولز کے پاس ایک فنکشن کالنگ سسٹم ہے جو اختیاری کوڈ کے نفاذ کی اجازت دیتا ہے", "Tools have a function calling system that allows arbitrary code execution.": "ٹولز کے پاس ایک فنکشن کالنگ سسٹم ہے جو اختیاری کوڈ کی عمل درآمد کی اجازت دیتا ہے", "Tools Public Sharing": "", "Top K": "اوپر کے K", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 22f868afd..8ff968405 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "Truyền tải các khối phản hồi bên ngoài lớn một cách trôi chảy", "Focus chat input": "Tập trung vào nội dung chat", "Folder deleted successfully": "Xóa thư mục thành công", - "Folder name cannot be empty": "Tên thư mục không được để trống", "Folder name cannot be empty.": "Tên thư mục không được để trống.", "Folder name updated successfully": "Cập nhật tên thư mục thành công", "Followed instructions perfectly": "Tuân theo chỉ dẫn một cách hoàn hảo", @@ -582,7 +581,6 @@ "Function Name": "Tên Function", "Function updated successfully": "Function được cập nhật thành công", "Functions": "Functions", - "Functions allow arbitrary code execution": "Các Function cho phép thực thi mã tùy ý", "Functions allow arbitrary code execution.": "Các Function cho phép thực thi mã tùy ý.", "Functions imported successfully": "Các function đã được nạp thành công", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "Không có khoảng cách khả dụng", "No feedbacks found": "Không tìm thấy phản hồi nào", "No file selected": "Chưa có tệp nào được chọn", - "No files found.": "Không tìm thấy tệp nào.", "No groups with access, add a group to grant access": "Không có nhóm nào có quyền truy cập, hãy thêm một nhóm để cấp quyền truy cập", "No HTML, CSS, or JavaScript content found.": "Không tìm thấy nội dung HTML, CSS hoặc JavaScript.", "No inference engine with management support found": "Không tìm thấy engine suy luận nào có hỗ trợ quản lý", @@ -1162,7 +1159,6 @@ "Tools Access": "Truy cập Tools", "Tools are a function calling system with arbitrary code execution": "Tools là một hệ thống gọi function với việc thực thi mã tùy ý", "Tools Function Calling Prompt": "Prompt Gọi Function của Tools", - "Tools have a function calling system that allows arbitrary code execution": "Các Tools có hệ thống gọi function cho phép thực thi mã tùy ý", "Tools have a function calling system that allows arbitrary code execution.": "Các Tools có hệ thống gọi function cho phép thực thi mã tùy ý.", "Tools Public Sharing": "Chia sẻ Công khai Tools", "Top K": "Top K", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 11d262e3a..1681b2dcc 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "流畅地传输外部大型响应块数据", "Focus chat input": "聚焦对话输入", "Folder deleted successfully": "分组删除成功", - "Folder name cannot be empty": "分组名称不能为空", "Folder name cannot be empty.": "分组名称不能为空。", "Folder name updated successfully": "分组名称更新成功。", "Followed instructions perfectly": "完全按照指示执行", @@ -582,7 +581,6 @@ "Function Name": "函数名称", "Function updated successfully": "函数更新成功", "Functions": "函数", - "Functions allow arbitrary code execution": "注意:函数有权执行任意代码", "Functions allow arbitrary code execution.": "注意:函数有权执行任意代码。", "Functions imported successfully": "函数导入成功", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "没有可用距离", "No feedbacks found": "暂无任何反馈", "No file selected": "未选中文件", - "No files found.": "未找到文件。", "No groups with access, add a group to grant access": "没有权限组,请添加一个权限组以授予访问权限", "No HTML, CSS, or JavaScript content found.": "未找到 HTML、CSS 或 JavaScript 内容。", "No inference engine with management support found": "未找到支持管理的推理引擎", @@ -1162,7 +1159,6 @@ "Tools Access": "访问工具", "Tools are a function calling system with arbitrary code execution": "工具是一个具有任意代码执行能力的函数调用系统", "Tools Function Calling Prompt": "工具函数调用提示词", - "Tools have a function calling system that allows arbitrary code execution": "注意:工具有权执行任意代码", "Tools have a function calling system that allows arbitrary code execution.": "注意:工具有权执行任意代码。", "Tools Public Sharing": "工具公开分享", "Top K": "Top K", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 04eeeda48..b07c1cab7 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -561,7 +561,6 @@ "Fluidly stream large external response chunks": "流暢地串流大型外部回應區塊", "Focus chat input": "聚焦對話輸入", "Folder deleted successfully": "資料夾刪除成功", - "Folder name cannot be empty": "資料夾名稱不能為空", "Folder name cannot be empty.": "資料夾名稱不能為空。", "Folder name updated successfully": "資料夾名稱更新成功", "Followed instructions perfectly": "完全遵循指示", @@ -582,7 +581,6 @@ "Function Name": "函式名稱", "Function updated successfully": "成功更新函式", "Functions": "函式", - "Functions allow arbitrary code execution": "函式允許執行任意程式碼", "Functions allow arbitrary code execution.": "函式允許執行任意程式碼。", "Functions imported successfully": "成功匯入函式", "Gemini": "Gemini", @@ -787,7 +785,6 @@ "No distance available": "無可用距離", "No feedbacks found": "找不到回饋", "No file selected": "未選取檔案", - "No files found.": "找不到檔案。", "No groups with access, add a group to grant access": "沒有具有存取權限的群組,新增群組以授予存取權限", "No HTML, CSS, or JavaScript content found.": "找不到 HTML、CSS 或 JavaScript 內容。", "No inference engine with management support found": "找不到支援管理功能的推理引擎", @@ -1162,7 +1159,6 @@ "Tools Access": "工具存取", "Tools are a function calling system with arbitrary code execution": "工具是一個具有任意程式碼執行功能的函式呼叫系統", "Tools Function Calling Prompt": "工具函式呼叫提示詞", - "Tools have a function calling system that allows arbitrary code execution": "工具具有允許執行任意程式碼的函式呼叫系統", "Tools have a function calling system that allows arbitrary code execution.": "工具具有允許執行任意程式碼的函式呼叫系統。", "Tools Public Sharing": "工具公開分享", "Top K": "Top K", From 513d5c8bf5e199a645a0f9747bfa471b739740e5 Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Thu, 1 May 2025 13:21:15 +0900 Subject: [PATCH 161/238] Fix typos --- src/lib/i18n/locales/ko-KR/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 205737b8b..42435e30d 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -1281,6 +1281,6 @@ "Your account status is currently pending activation.": "현재 계정은 아직 활성화되지 않았습니다.", "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "당신의 모든 기여는 곧바로 플러그인 개발자에게 갑니다; Open WebUI는 일절 가져가지 않습니다 하지만, 선택한 후원 플랫폼은 수수료를 가져갈 수 있습니다.", "Youtube": "유튜브", - "Youtube Language": "Youtube브 언어", + "Youtube Language": "Youtube 언어", "Youtube Proxy URL": "Youtube 프록시 URL" } From 079af5fffec909271ccf80fa17368b0a1a969768 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 1 May 2025 09:41:07 +0400 Subject: [PATCH 162/238] fix: send webhook notification when user is not active --- backend/open_webui/utils/middleware.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 0d6951c58..8cc2b2b77 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1133,7 +1133,7 @@ async def process_chat_response( ) # Send a webhook notification if the user is not active - if get_active_status_by_user_id(user.id): + if not get_active_status_by_user_id(user.id): webhook_url = Users.get_user_webhook_url_by_id(user.id) if webhook_url: post_webhook( @@ -2224,7 +2224,7 @@ async def process_chat_response( ) # Send a webhook notification if the user is not active - if get_active_status_by_user_id(user.id): + if not get_active_status_by_user_id(user.id): webhook_url = Users.get_user_webhook_url_by_id(user.id) if webhook_url: post_webhook( From c82671734367450ddcd93716456f51a6ae27a4b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 05:44:35 +0000 Subject: [PATCH 163/238] build(deps): bump @tiptap/core from 2.10.0 to 2.11.9 Bumps [@tiptap/core](https://github.com/ueberdosis/tiptap/tree/HEAD/packages/core) from 2.10.0 to 2.11.9. - [Release notes](https://github.com/ueberdosis/tiptap/releases) - [Changelog](https://github.com/ueberdosis/tiptap/blob/@tiptap/core@2.11.9/packages/core/CHANGELOG.md) - [Commits](https://github.com/ueberdosis/tiptap/commits/@tiptap/core@2.11.9/packages/core) --- updated-dependencies: - dependency-name: "@tiptap/core" dependency-version: 2.11.9 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index c23899033..261543d55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@pyscript/core": "^0.4.32", "@sveltejs/adapter-node": "^2.0.0", "@sveltejs/svelte-virtual-list": "^3.0.1", - "@tiptap/core": "^2.10.0", + "@tiptap/core": "^2.11.9", "@tiptap/extension-code-block-lowlight": "^2.11.9", "@tiptap/extension-highlight": "^2.10.0", "@tiptap/extension-placeholder": "^2.10.0", @@ -2890,9 +2890,9 @@ } }, "node_modules/@tiptap/core": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.10.0.tgz", - "integrity": "sha512-58nAjPxLRFcXepdDqQRC1mhrw6E8Sanqr6bbO4Tz0+FWgDJMZvHG+dOK5wHaDVNSgK2iJDz08ETvQayfOOgDvg==", + "version": "2.11.9", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.11.9.tgz", + "integrity": "sha512-UZSxQLLyJst47xep3jlyKM6y1ebZnmvbGsB7njBVjfxf5H+4yFpRJwwNqrBHM/vyU55LCtPChojqaYC1wXLf6g==", "license": "MIT", "funding": { "type": "github", diff --git a/package.json b/package.json index f100f16af..8baa28566 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@pyscript/core": "^0.4.32", "@sveltejs/adapter-node": "^2.0.0", "@sveltejs/svelte-virtual-list": "^3.0.1", - "@tiptap/core": "^2.10.0", + "@tiptap/core": "^2.11.9", "@tiptap/extension-code-block-lowlight": "^2.11.9", "@tiptap/extension-highlight": "^2.10.0", "@tiptap/extension-placeholder": "^2.10.0", From b5cfa2b99259e15493837710cc228329f83fba8d Mon Sep 17 00:00:00 2001 From: Yak! Date: Thu, 1 May 2025 16:41:06 +0900 Subject: [PATCH 164/238] fix: Multiple actions in an action module do not work as intended. --- backend/open_webui/utils/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/open_webui/utils/models.py b/backend/open_webui/utils/models.py index 95d360bed..245eaf874 100644 --- a/backend/open_webui/utils/models.py +++ b/backend/open_webui/utils/models.py @@ -203,6 +203,7 @@ async def get_all_models(request, user: UserModel = None): else: function_module, _, _ = load_function_module_by_id(function_id) request.app.state.FUNCTIONS[function_id] = function_module + return function_module for model in models: action_ids = [ From 32257089f96db4c4a7e782511c63fae0f5729292 Mon Sep 17 00:00:00 2001 From: Bryan Berns Date: Thu, 1 May 2025 03:56:20 -0400 Subject: [PATCH 165/238] Use SHA256 For Query Result Computation --- backend/open_webui/retrieval/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index 410945c81..b952080d3 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -207,7 +207,7 @@ def merge_and_sort_query_results(query_results: list[dict], k: int) -> dict: for distance, document, metadata in zip(distances, documents, metadatas): if isinstance(document, str): - doc_hash = hashlib.md5( + doc_hash = hashlib.sha256( document.encode() ).hexdigest() # Compute a hash for uniqueness From f26cafd9844eefd5dbeab52a49588fbbd903aa96 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 1 May 2025 15:58:45 +0400 Subject: [PATCH 166/238] chore: langchain bump --- backend/requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 12f87a544..8b25308ab 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -40,8 +40,8 @@ anthropic google-generativeai==0.8.4 tiktoken -langchain==0.3.19 -langchain-community==0.3.18 +langchain==0.3.24 +langchain-community==0.3.23 fake-useragent==2.1.0 chromadb==0.6.3 From 5d5e351937d796b6af6e4434b809aec2535969b1 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 1 May 2025 16:39:36 +0400 Subject: [PATCH 167/238] feat: notes scaffolding --- backend/open_webui/config.py | 5 ++ backend/open_webui/main.py | 5 +- backend/open_webui/routers/auths.py | 6 ++- .../components/admin/Settings/General.svelte | 8 +++ src/lib/components/layout/Sidebar.svelte | 42 ++++++++++++++++ src/routes/(app)/admin/+layout.svelte | 2 +- src/routes/(app)/home/+layout.svelte | 2 +- src/routes/(app)/notes/+layout.svelte | 50 +++++++++++++++++++ src/routes/(app)/notes/+page.svelte | 0 src/routes/(app)/playground/+layout.svelte | 2 +- src/routes/(app)/workspace/+layout.svelte | 2 +- src/routes/+layout.svelte | 4 +- src/routes/s/[id]/+page.svelte | 2 +- 13 files changed, 121 insertions(+), 9 deletions(-) create mode 100644 src/routes/(app)/notes/+layout.svelte create mode 100644 src/routes/(app)/notes/+page.svelte diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 7dc4be9f0..6b1f27d46 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1178,6 +1178,11 @@ ENABLE_CHANNELS = PersistentConfig( os.environ.get("ENABLE_CHANNELS", "False").lower() == "true", ) +ENABLE_NOTES = PersistentConfig( + "ENABLE_NOTES", + "notes.enable", + os.environ.get("ENABLE_NOTES", "True").lower() == "true", +) ENABLE_EVALUATION_ARENA_MODELS = PersistentConfig( "ENABLE_EVALUATION_ARENA_MODELS", diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 862f554f4..2ffdd01d3 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -156,7 +156,7 @@ from open_webui.config import ( AUDIO_STT_AZURE_REGION, AUDIO_STT_AZURE_LOCALES, AUDIO_STT_AZURE_BASE_URL, - AUDIO_STT_AZURE_MAX_SPEAKERS, + AUDIO_STT_AZURE_MAX_SPEAKERS, AUDIO_TTS_API_KEY, AUDIO_TTS_ENGINE, AUDIO_TTS_MODEL, @@ -274,6 +274,7 @@ from open_webui.config import ( ENABLE_API_KEY_ENDPOINT_RESTRICTIONS, API_KEY_ALLOWED_ENDPOINTS, ENABLE_CHANNELS, + ENABLE_NOTES, ENABLE_COMMUNITY_SHARING, ENABLE_MESSAGE_RATING, ENABLE_USER_WEBHOOKS, @@ -570,6 +571,7 @@ app.state.config.MODEL_ORDER_LIST = MODEL_ORDER_LIST app.state.config.ENABLE_CHANNELS = ENABLE_CHANNELS +app.state.config.ENABLE_NOTES = ENABLE_NOTES app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING app.state.config.ENABLE_MESSAGE_RATING = ENABLE_MESSAGE_RATING app.state.config.ENABLE_USER_WEBHOOKS = ENABLE_USER_WEBHOOKS @@ -1321,6 +1323,7 @@ async def get_app_config(request: Request): { "enable_direct_connections": app.state.config.ENABLE_DIRECT_CONNECTIONS, "enable_channels": app.state.config.ENABLE_CHANNELS, + "enable_notes": app.state.config.ENABLE_NOTES, "enable_web_search": app.state.config.ENABLE_WEB_SEARCH, "enable_code_execution": app.state.config.ENABLE_CODE_EXECUTION, "enable_code_interpreter": app.state.config.ENABLE_CODE_INTERPRETER, diff --git a/backend/open_webui/routers/auths.py b/backend/open_webui/routers/auths.py index a820527dd..91057b90d 100644 --- a/backend/open_webui/routers/auths.py +++ b/backend/open_webui/routers/auths.py @@ -689,6 +689,7 @@ async def get_admin_config(request: Request, user=Depends(get_admin_user)): "ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING, "ENABLE_MESSAGE_RATING": request.app.state.config.ENABLE_MESSAGE_RATING, "ENABLE_CHANNELS": request.app.state.config.ENABLE_CHANNELS, + "ENABLE_NOTES": request.app.state.config.ENABLE_NOTES, "ENABLE_USER_WEBHOOKS": request.app.state.config.ENABLE_USER_WEBHOOKS, } @@ -705,6 +706,7 @@ class AdminConfig(BaseModel): ENABLE_COMMUNITY_SHARING: bool ENABLE_MESSAGE_RATING: bool ENABLE_CHANNELS: bool + ENABLE_NOTES: bool ENABLE_USER_WEBHOOKS: bool @@ -725,6 +727,7 @@ async def update_admin_config( ) request.app.state.config.ENABLE_CHANNELS = form_data.ENABLE_CHANNELS + request.app.state.config.ENABLE_NOTES = form_data.ENABLE_NOTES if form_data.DEFAULT_USER_ROLE in ["pending", "user", "admin"]: request.app.state.config.DEFAULT_USER_ROLE = form_data.DEFAULT_USER_ROLE @@ -749,11 +752,12 @@ async def update_admin_config( "ENABLE_API_KEY": request.app.state.config.ENABLE_API_KEY, "ENABLE_API_KEY_ENDPOINT_RESTRICTIONS": request.app.state.config.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS, "API_KEY_ALLOWED_ENDPOINTS": request.app.state.config.API_KEY_ALLOWED_ENDPOINTS, - "ENABLE_CHANNELS": request.app.state.config.ENABLE_CHANNELS, "DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE, "JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN, "ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING, "ENABLE_MESSAGE_RATING": request.app.state.config.ENABLE_MESSAGE_RATING, + "ENABLE_CHANNELS": request.app.state.config.ENABLE_CHANNELS, + "ENABLE_NOTES": request.app.state.config.ENABLE_NOTES, "ENABLE_USER_WEBHOOKS": request.app.state.config.ENABLE_USER_WEBHOOKS, } diff --git a/src/lib/components/admin/Settings/General.svelte b/src/lib/components/admin/Settings/General.svelte index c44f9caa2..3741168f8 100644 --- a/src/lib/components/admin/Settings/General.svelte +++ b/src/lib/components/admin/Settings/General.svelte @@ -601,6 +601,14 @@
+
+
+ {$i18n.t('Notes')} ({$i18n.t('Beta')}) +
+ + +
+
{$i18n.t('Channels')} ({$i18n.t('Beta')}) diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index 2de4c8e85..d8c018b42 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -609,6 +609,48 @@
{/if} + {#if $config?.features?.enable_notes ?? false} + + {/if} +
{#if $temporaryChatEnabled}
diff --git a/src/routes/(app)/admin/+layout.svelte b/src/routes/(app)/admin/+layout.svelte index bc3caa338..6f0462f76 100644 --- a/src/routes/(app)/admin/+layout.svelte +++ b/src/routes/(app)/admin/+layout.svelte @@ -20,7 +20,7 @@ - {$i18n.t('Admin Panel')} | {$WEBUI_NAME} + {$i18n.t('Admin Panel')} • {$WEBUI_NAME} diff --git a/src/routes/(app)/home/+layout.svelte b/src/routes/(app)/home/+layout.svelte index 63abe4169..c41e70c53 100644 --- a/src/routes/(app)/home/+layout.svelte +++ b/src/routes/(app)/home/+layout.svelte @@ -11,7 +11,7 @@ - {$i18n.t('Home')} | {$WEBUI_NAME} + {$i18n.t('Home')} • {$WEBUI_NAME} diff --git a/src/routes/(app)/notes/+layout.svelte b/src/routes/(app)/notes/+layout.svelte new file mode 100644 index 000000000..3f6830240 --- /dev/null +++ b/src/routes/(app)/notes/+layout.svelte @@ -0,0 +1,50 @@ + + + + + {$i18n.t('Notes')} • {$WEBUI_NAME} + + + +
+ + +
+ +
+
diff --git a/src/routes/(app)/notes/+page.svelte b/src/routes/(app)/notes/+page.svelte new file mode 100644 index 000000000..e69de29bb diff --git a/src/routes/(app)/playground/+layout.svelte b/src/routes/(app)/playground/+layout.svelte index 8da329b2f..4a2ebb3aa 100644 --- a/src/routes/(app)/playground/+layout.svelte +++ b/src/routes/(app)/playground/+layout.svelte @@ -11,7 +11,7 @@ - {$i18n.t('Playground')} | {$WEBUI_NAME} + {$i18n.t('Playground')} • {$WEBUI_NAME} diff --git a/src/routes/(app)/workspace/+layout.svelte b/src/routes/(app)/workspace/+layout.svelte index 0240e693c..fc7d434fd 100644 --- a/src/routes/(app)/workspace/+layout.svelte +++ b/src/routes/(app)/workspace/+layout.svelte @@ -45,7 +45,7 @@ - {$i18n.t('Workspace')} | {$WEBUI_NAME} + {$i18n.t('Workspace')} • {$WEBUI_NAME} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 218e92e43..04debfac5 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -227,7 +227,7 @@ if ($isLastActiveTab) { if ($settings?.notificationEnabled ?? false) { - new Notification(`${title} | Open WebUI`, { + new Notification(`${title} • Open WebUI`, { body: content, icon: `${WEBUI_BASE_URL}/static/favicon.png` }); @@ -376,7 +376,7 @@ if (type === 'message') { if ($isLastActiveTab) { if ($settings?.notificationEnabled ?? false) { - new Notification(`${data?.user?.name} (#${event?.channel?.name}) | Open WebUI`, { + new Notification(`${data?.user?.name} (#${event?.channel?.name}) • Open WebUI`, { body: data?.content, icon: data?.user?.profile_image_url ?? `${WEBUI_BASE_URL}/static/favicon.png` }); diff --git a/src/routes/s/[id]/+page.svelte b/src/routes/s/[id]/+page.svelte index d8f3f42ea..c5849178a 100644 --- a/src/routes/s/[id]/+page.svelte +++ b/src/routes/s/[id]/+page.svelte @@ -145,7 +145,7 @@ {title - ? `${title.length > 30 ? `${title.slice(0, 30)}...` : title} | ${$WEBUI_NAME}` + ? `${title.length > 30 ? `${title.slice(0, 30)}...` : title} • ${$WEBUI_NAME}` : `${$WEBUI_NAME}`} From 72f985aba7a384fd0dc26338f3b1d16bd8c4ec8c Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Thu, 1 May 2025 22:39:29 +0900 Subject: [PATCH 168/238] fix: align eslint plugin and parser versions --- package-lock.json | 356 ++++++++++------------------------------------ package.json | 2 +- 2 files changed, 80 insertions(+), 278 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06b6e369b..185eaae55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -81,7 +81,7 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", - "@typescript-eslint/eslint-plugin": "^6.17.0", + "@typescript-eslint/eslint-plugin": "^8.31.0", "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", "eslint": "^8.56.0", @@ -3547,12 +3547,6 @@ "@types/unist": "*" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, "node_modules/@types/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", @@ -3604,12 +3598,6 @@ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", @@ -3652,38 +3640,33 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.1.tgz", + "integrity": "sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/type-utils": "8.31.1", + "@typescript-eslint/utils": "8.31.1", + "@typescript-eslint/visitor-keys": "8.31.1", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^2.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser": { @@ -3711,7 +3694,7 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "8.31.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.1.tgz", "integrity": "sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==", @@ -3729,7 +3712,31 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/type-utils": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.1.tgz", + "integrity": "sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.31.1", + "@typescript-eslint/utils": "8.31.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { "version": "8.31.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.1.tgz", "integrity": "sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==", @@ -3743,7 +3750,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/typescript-estree": { "version": "8.31.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.1.tgz", "integrity": "sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==", @@ -3770,7 +3777,31 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/utils": { + "version": "8.31.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.1.tgz", + "integrity": "sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.31.1", + "@typescript-eslint/types": "8.31.1", + "@typescript-eslint/typescript-estree": "8.31.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { "version": "8.31.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.1.tgz", "integrity": "sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==", @@ -3788,7 +3819,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", @@ -3801,162 +3832,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -4282,15 +4157,6 @@ "dequal": "^2.0.3" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -6138,18 +6004,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -7270,26 +7124,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -8878,10 +8712,10 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8957,21 +8791,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/minizlib/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/minizlib/node_modules/rimraf": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", @@ -9446,15 +9265,6 @@ "node": "14 || >=16.14" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/pathe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", @@ -11186,15 +10996,6 @@ "node": ">=18" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", @@ -11959,15 +11760,16 @@ } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-dedent": { diff --git a/package.json b/package.json index c12fbfb74..b53506e31 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", - "@typescript-eslint/eslint-plugin": "^6.17.0", + "@typescript-eslint/eslint-plugin": "^8.31.0", "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", "eslint": "^8.56.0", From 12626107b6a5c097b50e1d8e5f001fd88947d8ae Mon Sep 17 00:00:00 2001 From: Francois LE FEVRE Date: Thu, 1 May 2025 15:46:58 +0200 Subject: [PATCH 169/238] first elements translated in french --- src/lib/i18n/locales/fr-FR/translation.json | 114 ++++++++++---------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 1de002e5f..b0559c415 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -4,10 +4,10 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(par ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(par exemple `sh webui.sh --api`)", "(latest)": "(dernière version)", - "(Ollama)": "", + "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", - "{{COUNT}} Available Tools": "", - "{{COUNT}} hidden lines": "", + "{{COUNT}} Available Tools": "Nombre d'outils disponibles {{COUNT}}", + "{{COUNT}} hidden lines": "Nombres de lignes cachées {{COUNT}}", "{{COUNT}} Replies": "{{COUNT}} réponses", "{{user}}'s Chats": "Conversations de {{user}}", "{{webUIName}} Backend Required": "Backend {{webUIName}} requis", @@ -16,7 +16,7 @@ "A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modèle de tâche est utilisé lors de l’exécution de tâches telles que la génération de titres pour les conversations et les requêtes de recherche sur le web.", "a user": "un utilisateur", "About": "À propos", - "Accept autocomplete generation / Jump to prompt variable": "", + "Accept autocomplete generation / Jump to prompt variable": "Accepter la génération de saisie semi-automatique / Accéder directement à la variable du prompt", "Access": "Accès", "Access Control": "Contrôle d'accès", "Accessible to all users": "Accessible à tous les utilisateurs", @@ -54,36 +54,36 @@ "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Les administrateurs ont accès à tous les outils en permanence ; les utilisateurs doivent se voir attribuer des outils pour chaque modèle dans l’espace de travail.", "Advanced Parameters": "Paramètres avancés", "Advanced Params": "Paramètres avancés", - "All": "", + "All": "Tout", "All Documents": "Tous les documents", "All models deleted successfully": "Tous les modèles ont été supprimés avec succès", - "Allow Call": "", + "Allow Call": "Autoriser les appels", "Allow Chat Controls": "Autoriser les contrôles de chat", "Allow Chat Delete": "Autoriser la suppression de la conversation", "Allow Chat Deletion": "Autoriser la suppression de l'historique de chat", "Allow Chat Edit": "Autoriser la modification de la conversation", "Allow File Upload": "Autoriser le téléchargement de fichiers", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "Autoriser plusieurs modèles dans le chat", "Allow non-local voices": "Autoriser les voix non locales", - "Allow Speech to Text": "", + "Allow Speech to Text": "Autoriser la reconnaissance vocale", "Allow Temporary Chat": "Autoriser le chat éphémère", - "Allow Text to Speech": "", + "Allow Text to Speech": "Autoriser la synthèse vocale", "Allow User Location": "Autoriser l'emplacement de l'utilisateur", "Allow Voice Interruption in Call": "Autoriser l'interruption vocale pendant un appel", "Allowed Endpoints": "Points de terminaison autorisés", "Already have an account?": "Avez-vous déjà un compte ?", "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.": "", - "Always": "", - "Always Collapse Code Blocks": "", - "Always Expand Details": "", + "Always": "Toujours", + "Always Collapse Code Blocks": "Toujours réduire les blocs de code", + "Always Expand Details": "Toujours afficher les détails", "Amazing": "Incroyable", "an assistant": "un assistant", - "Analyzed": "", - "Analyzing...": "", + "Analyzed": "Analysé", + "Analyzing...": "Analyse en cours", "and": "et", "and {{COUNT}} more": "et {{COUNT}} autres", "and create a new shared link.": "et créer un nouveau lien partagé.", - "Android": "", + "Android": "Android", "API Base URL": "URL de base de l'API", "API Key": "Clé d'API", "API Key created.": "Clé d'API générée.", @@ -97,26 +97,26 @@ "Archive All Chats": "Archiver toutes les conversations", "Archived Chats": "Conversations archivées", "archived-chat-export": "exportation de conversation archivée", - "Are you sure you want to clear all memories? This action cannot be undone.": "", + "Are you sure you want to clear all memories? This action cannot be undone.": "Êtes-vous certain de vouloir supprimer toutes les mémoires ? Cette action est définitive.", "Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?", "Are you sure you want to delete this message?": "Êtes-vous sûr de vouloir supprimer ce message ?", "Are you sure you want to unarchive all archived chats?": "Êtes-vous sûr de vouloir désarchiver toutes les conversations archivées?", "Are you sure?": "Êtes-vous certain ?", "Arena Models": "Modèles d'arène", "Artifacts": "Artéfacts", - "Ask": "", + "Ask": "Demander", "Ask a question": "Posez votre question", "Assistant": "Assistant", - "Attach file from knowledge": "", + "Attach file from knowledge": "Joindre un fichier depuis la base de connaissances", "Attention to detail": "Attention aux détails", "Attribute for Mail": "Attribut pour l'e-mail", "Attribute for Username": "Attribut pour le nom d'utilisateur", "Audio": "Audio", "August": "Août", - "Auth": "", + "Auth": "Auth", "Authenticate": "Authentifier", - "Authentication": "", - "Auto": "", + "Authentication": "Authentification", + "Auto": "Automatique", "Auto-Copy Response to Clipboard": "Copie automatique de la réponse vers le presse-papiers", "Auto-playback response": "Lire automatiquement la réponse", "Autocomplete Generation": "Génération des suggestions", @@ -126,7 +126,7 @@ "AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111", "AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.", "Available list": "Liste disponible", - "Available Tools": "", + "Available Tools": "Outils disponibles", "available!": "disponible !", "Awful": "Horrible", "Azure AI Speech": "Azure AI Speech", @@ -141,12 +141,12 @@ "Beta": "Bêta", "Bing Search V7 Endpoint": "Point de terminaison Bing Search V7", "Bing Search V7 Subscription Key": "Clé d'abonnement Bing Search V7", - "Bocha Search API Key": "", + "Bocha Search API Key": "Clé API Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", "Brave Search API Key": "Clé API Brave Search", "By {{name}}": "Par {{name}}", - "Bypass Embedding and Retrieval": "", - "Calendar": "", + "Bypass Embedding and Retrieval": "Ignorer l'Embedding et le Retrieval", + "Calendar": "Calendrier", "Call": "Appeler", "Call feature is not supported when using Web STT engine": "La fonction d'appel n'est pas prise en charge lors de l'utilisation du moteur Web STT", "Camera": "Appareil photo", @@ -178,14 +178,14 @@ "Ciphers": "Chiffres", "Citation": "Citation", "Clear memory": "Effacer la mémoire", - "Clear Memory": "", + "Clear Memory": "Effacer la mémoire", "click here": "cliquez ici", "Click here for filter guides.": "Cliquez ici pour les guides de filtrage.", "Click here for help.": "Cliquez ici pour obtenir de l'aide.", "Click here to": "Cliquez ici pour", "Click here to download user import template file.": "Cliquez ici pour télécharger le fichier modèle d'importation des utilisateurs.", "Click here to learn more about faster-whisper and see the available models.": "Cliquez ici pour en savoir plus sur faster-whisper et voir les modèles disponibles.", - "Click here to see available models.": "", + "Click here to see available models.": "Cliquer ici pour voir tous les modèles disponibles.", "Click here to select": "Cliquez ici pour sélectionner", "Click here to select a csv file.": "Cliquez ici pour sélectionner un fichier .csv.", "Click here to select a py file.": "Cliquez ici pour sélectionner un fichier .py.", @@ -195,17 +195,17 @@ "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.", "Clone": "Cloner", "Clone Chat": "Dupliquer le Chat", - "Clone of {{TITLE}}": "", + "Clone of {{TITLE}}": "Dupliquat de {{TITLE}}", "Close": "Fermer", "Code execution": "Exécution de code", - "Code Execution": "", - "Code Execution Engine": "", - "Code Execution Timeout": "", + "Code Execution": "Exécution de code", + "Code Execution Engine": "Moteur d'execution de code", + "Code Execution Timeout": "Délai d'exécution du code dépassé", "Code formatted successfully": "Le code a été formaté avec succès", - "Code Interpreter": "", - "Code Interpreter Engine": "", - "Code Interpreter Prompt Template": "", - "Collapse": "", + "Code Interpreter": "Interpreteur de code", + "Code Interpreter Engine": "Moteur de l'interpreteur de code", + "Code Interpreter Prompt Template": "Modèle d'invite pour l'interpréteur de code", + "Collapse": "Réduire", "Collection": "Collection", "Color": "Couleur", "ComfyUI": "ComfyUI", @@ -222,16 +222,16 @@ "Confirm Password": "Confirmer le mot de passe", "Confirm your action": "Confirmer votre action", "Confirm your new password": "Confirmer votre nouveau mot de passe", - "Connect to your own OpenAI compatible API endpoints.": "", - "Connect to your own OpenAPI compatible external tool servers.": "", - "Connection failed": "", - "Connection successful": "", + "Connect to your own OpenAI compatible API endpoints.": "Connectez-vous à vos points d'extension API compatibles OpenAI.", + "Connect to your own OpenAPI compatible external tool servers.": "Connectez-vous à vos serveurs d'outils externes.", + "Connection failed": "Échec de la connexion", + "Connection successful": "Connexion réussie", "Connections": "Connexions", - "Connections saved successfully": "", + "Connections saved successfully": "Connexions enregistrées avec succès", "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", "Contact Admin for WebUI Access": "Contacter l'administrateur pour obtenir l'accès à WebUI", "Content": "Contenu", - "Content Extraction Engine": "", + "Content Extraction Engine": "Moteur d'extraction de contenu", "Context Length": "Longueur du contexte", "Continue Response": "Continuer la réponse", "Continue with {{provider}}": "Continuer avec {{provider}}", @@ -245,7 +245,7 @@ "Copied shared chat URL to clipboard!": "URL du chat copié dans le presse-papiers !", "Copied to clipboard": "Copié dans le presse-papiers", "Copy": "Copier", - "Copy Formatted Text": "", + "Copy Formatted Text": "Copier le texte en gardant le format", "Copy last code block": "Copier le dernier bloc de code", "Copy last response": "Copier la dernière réponse", "Copy Link": "Copier le lien", @@ -266,11 +266,11 @@ "Created At": "Créé le", "Created by": "Créé par", "CSV Import": "Import CSV", - "Ctrl+Enter to Send": "", + "Ctrl+Enter to Send": "Ctrl+Enter pour envoyer", "Current Model": "Modèle actuel", "Current Password": "Mot de passe actuel", "Custom": "Sur mesure", - "Danger Zone": "", + "Danger Zone": "Zone de danger", "Dark": "Sombre", "Database": "Base de données", "December": "Décembre", @@ -298,7 +298,7 @@ "Delete folder?": "Supprimer le dossier ?", "Delete function?": "Supprimer la fonction ?", "Delete Message": "Supprimer le message", - "Delete message?": "", + "Delete message?": "Supprimer le message ?", "Delete prompt?": "Supprimer le prompt ?", "delete this link": "supprimer ce lien", "Delete tool?": "Effacer l'outil ?", @@ -308,19 +308,19 @@ "Deleted User": "Utilisateur supprimé", "Describe your knowledge base and objectives": "Décrivez votre base de connaissances et vos objectifs", "Description": "Description", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "Détection automatique des Artifacts", "Didn't fully follow instructions": "N'a pas entièrement respecté les instructions", - "Direct": "", - "Direct Connections": "", - "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", - "Direct Connections settings updated": "", - "Direct Tool Servers": "", + "Direct": "Direct", + "Direct Connections": "Direct connexions", + "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Les connexions directes permettent aux utilisateurs de se connecter à leurs propres points d'extension API compatibles OpenAI.", + "Direct Connections settings updated": "Paramètres des connexions directes mis à jour", + "Direct Tool Servers": "Serveur d'outils directs", "Disabled": "Désactivé", "Discover a function": "Trouvez une fonction", "Discover a model": "Trouvez un modèle", "Discover a prompt": "Trouvez un prompt", "Discover a tool": "Trouvez un outil", - "Discover how to use Open WebUI and seek support from the community.": "", + "Discover how to use Open WebUI and seek support from the community.": "Découvrez comment utiliser Open WebUI et obtenir de l’aide de la communauté.", "Discover wonders": "Découvrir des merveilles", "Discover, download, and explore custom functions": "Découvrez, téléchargez et explorez des fonctions personnalisées", "Discover, download, and explore custom prompts": "Découvrez, téléchargez et explorez des prompts personnalisés", @@ -334,15 +334,15 @@ "Dive into knowledge": "Plonger dans les connaissances", "Do not install functions from sources you do not fully trust.": "N'installez pas de fonctions provenant de sources auxquelles vous ne faites pas entièrement confiance.", "Do not install tools from sources you do not fully trust.": "N'installez pas d'outils provenant de sources auxquelles vous ne faites pas entièrement confiance.", - "Docling": "", - "Docling Server URL required.": "", + "Docling": "Docling", + "Docling Server URL required.": "URL du serveur Docling requise.", "Document": "Document", - "Document Intelligence": "", - "Document Intelligence endpoint and key required.": "", + "Document Intelligence": "Intelligence documentaire", + "Document Intelligence endpoint and key required.": "Endpoint et clé requis pour l'intelligence documentaire", "Documentation": "Documentation", "Documents": "Documents", "does not make any external connections, and your data stays securely on your locally hosted server.": "n'établit aucune connexion externe et garde vos données en sécurité sur votre serveur local.", - "Domain Filter List": "", + "Domain Filter List": "Liste des domaines à filtrés", "Don't have an account?": "Vous n'avez pas de compte ?", "don't install random functions from sources you don't trust.": "n'installez pas de fonctions aléatoires provenant de sources auxquelles vous ne faites pas confiance.", "don't install random tools from sources you don't trust.": "n'installez pas d'outils aléatoires provenant de sources auxquelles vous ne faites pas confiance.", From 57cb030a2429db2024456e36392d7f5a854756ad Mon Sep 17 00:00:00 2001 From: Francois LE FEVRE Date: Thu, 1 May 2025 15:59:52 +0200 Subject: [PATCH 170/238] seconde review on french translation --- src/lib/i18n/locales/fr-FR/translation.json | 34 ++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index b0559c415..38dd1162b 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -356,15 +356,15 @@ "Draw": "Match nul", "Drop any files here to add to the conversation": "Déposez des fichiers ici pour les ajouter à la conversation", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "par ex. '30s', '10 min'. Les unités de temps valides sont 's', 'm', 'h'.", - "e.g. \"json\" or a JSON schema": "", - "e.g. 60": "", + "e.g. \"json\" or a JSON schema": "par ex. \"json\" ou un schéma JSON", + "e.g. 60": "par ex. 60", "e.g. A filter to remove profanity from text": "par ex. un filtre pour retirer les vulgarités du texte", "e.g. My Filter": "par ex. Mon Filtre", "e.g. My Tools": "par ex. Mes Outils", "e.g. my_filter": "par ex. mon_filtre", "e.g. my_tools": "par ex. mes_outils", "e.g. Tools for performing various operations": "par ex. Outils pour effectuer diverses opérations", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "par ex., en-US, ja-JP (laisser vide pour détection automatique)", "Edit": "Modifier", "Edit Arena Model": "Modifier le modèle d'arène", "Edit Channel": "Modifier le canal", @@ -376,23 +376,23 @@ "ElevenLabs": "ElevenLabs", "Email": "E-mail", "Embark on adventures": "Embarquez pour des aventures", - "Embedding": "", + "Embedding": "Embedding", "Embedding Batch Size": "Taille du lot d'embedding", "Embedding Model": "Modèle d'embedding", "Embedding Model Engine": "Moteur de modèle d'embedding", "Embedding model set to \"{{embedding_model}}\"": "Modèle d'embedding défini sur « {{embedding_model}} »", "Enable API Key": "Activer la clé API", "Enable autocomplete generation for chat messages": "Activer la génération des suggestions pour les messages", - "Enable Code Execution": "", - "Enable Code Interpreter": "", + "Enable Code Execution": "Autoriser l'execution de code", + "Enable Code Interpreter": "Autoriser l'interprétation de code", "Enable Community Sharing": "Activer le partage communautaire", "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activer le verrouillage de la mémoire (mlock) pour empêcher les données du modèle d'être échangées de la RAM. Cette option verrouille l'ensemble de pages de travail du modèle en RAM, garantissant qu'elles ne seront pas échangées vers le disque. Cela peut aider à maintenir les performances en évitant les défauts de page et en assurant un accès rapide aux données.", "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.": "Activer le mappage de la mémoire (mmap) pour charger les données du modèle. Cette option permet au système d'utiliser le stockage disque comme une extension de la RAM en traitant les fichiers disque comme s'ils étaient en RAM. Cela peut améliorer les performances du modèle en permettant un accès plus rapide aux données. Cependant, cela peut ne pas fonctionner correctement avec tous les systèmes et peut consommer une quantité significative d'espace disque.", "Enable Message Rating": "Activer l'évaluation des messages", - "Enable Mirostat sampling for controlling perplexity.": "", + "Enable Mirostat sampling for controlling perplexity.": "Activer l'échantillonnage Mirostat pour contrôler Perplexité.", "Enable New Sign Ups": "Activer les nouvelles inscriptions", "Enabled": "Activé", - "Enforce Temporary Chat": "", + "Enforce Temporary Chat": "Imposer les discussions temporaires", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Vérifiez que votre fichier CSV comprenne les 4 colonnes dans cet ordre : Name, Email, Password, Role.", "Enter {{role}} message here": "Entrez le message {{role}} ici", "Enter a detail about yourself for your LLMs to recall": "Saisissez un détail sur vous-même que vos LLMs pourront se rappeler", @@ -409,21 +409,21 @@ "Enter Chunk Size": "Entrez la taille des chunks", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Entrez la description", - "Enter Docling Server URL": "", - "Enter Document Intelligence Endpoint": "", - "Enter Document Intelligence Key": "", + "Enter Docling Server URL": "Entrez l'url du serveur Docling", + "Enter Document Intelligence Endpoint": "Entrez le point d'extension d'Intelligence documentaire", + "Enter Document Intelligence Key": "Entrez la clé du sevice d'Intelligence documentaire", "Enter domains separated by commas (e.g., example.com,site.org)": "", - "Enter Exa API Key": "", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", + "Enter Exa API Key": "Entrez la clé d'API Exa", + "Enter Firecrawl API Base URL": "Entrez l'url d'API pour Firecrawl", + "Enter Firecrawl API Key": "Entrez la clé d'API pour Firecrawl", "Enter Github Raw URL": "Entrez l'URL brute de GitHub", "Enter Google PSE API Key": "Entrez la clé API Google PSE", "Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE", "Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)", "Enter Jina API Key": "Entrez la clé API Jina", - "Enter Jupyter Password": "", - "Enter Jupyter Token": "", - "Enter Jupyter URL": "", + "Enter Jupyter Password": "Entrez le mot de passe Jupyter", + "Enter Jupyter Token": "Entrez le Token Jupyter", + "Enter Jupyter URL": "Entrez l'url de Jupyter", "Enter Kagi Search API Key": "Entrez la clé API Kagi Search", "Enter Key Behavior": "", "Enter language codes": "Entrez les codes de langue", From 725761ad6b56f0fbdb01476967bb4a302df46071 Mon Sep 17 00:00:00 2001 From: Tiancong Li Date: Thu, 1 May 2025 22:56:47 +0800 Subject: [PATCH 171/238] i18n: update zh-TW --- src/lib/i18n/locales/zh-TW/translation.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index b07c1cab7..e342b6ce4 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -438,7 +438,7 @@ "Enter Model ID": "輸入模型 ID", "Enter model tag (e.g. {{modelTag}})": "輸入模型標籤(例如:{{modelTag}})", "Enter Mojeek Search API Key": "輸入 Mojeek 搜尋 API 金鑰", - "Enter New Password": "", + "Enter New Password": "輸入新密碼", "Enter Number of Steps (e.g. 50)": "輸入步驟數(例如:50)", "Enter Perplexity API Key": "輸入 Perplexity API 金鑰", "Enter Playwright Timeout": "輸入 Playwright 逾時時間(毫秒)", @@ -475,15 +475,15 @@ "Enter Top K Reranker": "輸入 Top K Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "輸入 URL(例如:http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "輸入 URL(例如:http://localhost:11434)", - "Enter Yacy Password": "", - "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", - "Enter Yacy Username": "", + "Enter Yacy Password": "輸入 Yacy 密碼", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "輸入 Yacy URL(例如:http://yacy.example.com:8090)", + "Enter Yacy Username": "輸入 Yacy 使用者名稱", "Enter your current password": "輸入您的目前密碼", "Enter Your Email": "輸入您的電子郵件", "Enter Your Full Name": "輸入您的全名", "Enter your message": "輸入您的訊息", "Enter your name": "輸入你的名稱", - "Enter Your Name": "", + "Enter Your Name": "輸入您的姓名", "Enter your new password": "輸入您的新密碼", "Enter Your Password": "輸入您的密碼", "Enter Your Role": "輸入您的角色", @@ -1264,9 +1264,9 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "用 50 字寫一篇總結 [主題或關鍵字] 的摘要。", "Write something...": "寫一些什麼...", "Write your model template content here": "在此撰寫您的模型範本內容", - "Yacy Instance URL": "", - "Yacy Password": "", - "Yacy Username": "", + "Yacy Instance URL": "Yacy 實例 URL", + "Yacy Password": "Yacy 密碼", + "Yacy Username": "Yacy 使用者名稱", "Yesterday": "昨天", "You": "您", "You are currently using a trial license. Please contact support to upgrade your license.": "您目前使用的是試用授權。請聯絡支援以升級您的授權。", From 754a3c4cb9bb72ec98282a6ea450f1b81a5eab0f Mon Sep 17 00:00:00 2001 From: Francois LE FEVRE Date: Thu, 1 May 2025 20:07:56 +0200 Subject: [PATCH 172/238] last elements to translate into french --- src/lib/i18n/locales/fr-FR/translation.json | 220 ++++++++++---------- 1 file changed, 110 insertions(+), 110 deletions(-) diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 38dd1162b..3a35327cc 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -425,16 +425,16 @@ "Enter Jupyter Token": "Entrez le Token Jupyter", "Enter Jupyter URL": "Entrez l'url de Jupyter", "Enter Kagi Search API Key": "Entrez la clé API Kagi Search", - "Enter Key Behavior": "", + "Enter Key Behavior": "Entrez la clé Behavior", "Enter language codes": "Entrez les codes de langue", - "Enter Mistral API Key": "", + "Enter Mistral API Key": "Entrez la clé APU de Mistral", "Enter Model ID": "Entrez l'ID du modèle", "Enter model tag (e.g. {{modelTag}})": "Entrez le tag du modèle (par ex. {{modelTag}})", "Enter Mojeek Search API Key": "Entrez la clé API Mojeek", "Enter Number of Steps (e.g. 50)": "Entrez le nombre d'étapes (par ex. 50)", - "Enter Perplexity API Key": "", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", + "Enter Perplexity API Key": "Entrez la clé pour l'API de Perplixity", + "Enter Playwright Timeout": "Entrez le délai d'expiration Playwright", + "Enter Playwright WebSocket URL": "Entrez l'irl du websocket Playwright", "Enter proxy URL (e.g. https://user:password@host:port)": "Entrez l'URL du proxy (par ex. https://use:password@host:port)", "Enter reasoning effort": "Entrez l'effort de raisonnement", "Enter Sampler (e.g. Euler a)": "Entrez le sampler (par ex. Euler a)", @@ -444,34 +444,34 @@ "Enter SearchApi Engine": "Entrez le moteur de recherche SearchApi", "Enter Searxng Query URL": "Entrez l'URL de la requête Searxng", "Enter Seed": "Entrez Seed", - "Enter SerpApi API Key": "", - "Enter SerpApi Engine": "", + "Enter SerpApi API Key": "Entrez la clé API SerPAI", + "Enter SerpApi Engine": "Entrez le moteur SerApi", "Enter Serper API Key": "Entrez la clé API Serper", "Enter Serply API Key": "Entrez la clé API Serply", "Enter Serpstack API Key": "Entrez la clé API Serpstack", "Enter server host": "Entrez l'hôte du serveur", "Enter server label": "Entrez l'étiquette du serveur", "Enter server port": "Entrez le port du serveur", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", + "Enter Sougou Search API sID": "Entrez le sID pour l'API Search de Sougou", + "Enter Sougou Search API SK": "Entrez la SK pour l'API Search de Sougou", "Enter stop sequence": "Entrez la séquence d'arrêt", "Enter system prompt": "Entrez le prompt système", - "Enter system prompt here": "", + "Enter system prompt here": "Entrez le prompt système ici", "Enter Tavily API Key": "Entrez la clé API Tavily", - "Enter Tavily Extract Depth": "", + "Enter Tavily Extract Depth": "Entrez la profondeur d'extraction de Tavily", "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Entrez l'URL publique de votre WebUI. Cette URL sera utilisée pour générer des liens dans les notifications.", "Enter Tika Server URL": "Entrez l'URL du serveur Tika", - "Enter timeout in seconds": "", - "Enter to Send": "", - "Enter Top K": "Entrez les Top K", - "Enter Top K Reranker": "", + "Enter timeout in seconds": "Entrez le délai d'expiration en secondes", + "Enter to Send": "Taper entrer pour envoyer", + "Enter Top K": "Entrez la valeur Top K", + "Enter Top K Reranker": "Entrez la valeur Top K pour le Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "Entrez l'URL (par ex. {http://127.0.0.1:7860/})", "Enter URL (e.g. http://localhost:11434)": "Entrez l'URL (par ex. http://localhost:11434)", "Enter your current password": "Entrez votre mot de passe actuel", "Enter Your Email": "Entrez votre adresse e-mail", "Enter Your Full Name": "Entrez votre nom complet", "Enter your message": "Entrez votre message", - "Enter your name": "", + "Enter your name": "Entrez votre nom", "Enter your new password": "Entrez votre nouveau mot de passe", "Enter Your Password": "Entrez votre mot de passe", "Enter Your Role": "Entrez votre rôle", @@ -482,7 +482,7 @@ "Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}", "Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}", "Evaluations": "Évaluations", - "Exa API Key": "", + "Exa API Key": "Clé d'Exa API", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemple: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Exemple: TOUS", "Example: mail": "Exemple: mail", @@ -490,12 +490,12 @@ "Example: sAMAccountName or uid or userPrincipalName": "Exemple: sAMAccountName ou uid ou userPrincipalName", "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "", "Exclude": "Exclure", - "Execute code for analysis": "", - "Executing **{{NAME}}**...": "", - "Expand": "", + "Execute code for analysis": "Executer le code pour l'analyse", + "Executing **{{NAME}}**...": "Execution **{{NAME}}**...", + "Expand": "Développer", "Experimental": "Expérimental", - "Explain": "", - "Explain this section to me in more detail": "", + "Explain": "Explique", + "Explain this section to me in more detail": "Explique-moi cette section plus en détail", "Explore the cosmos": "Explorer le cosmos", "Export": "Exportation", "Export All Archived Chats": "Exporter toutes les conversations archivées", @@ -509,18 +509,18 @@ "Export Prompts": "Exporter des prompts", "Export to CSV": "Exporter en CSV", "Export Tools": "Exporter des outils", - "External": "", + "External": "Externe", "External Models": "Modèles externes", "Failed to add file.": "Échec de l'ajout du fichier.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Échec de la création de la clé API.", "Failed to fetch models": "Échec de la récupération des modèles", "Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers", - "Failed to save connections": "", + "Failed to save connections": "Échec de la sauvegarde des connexions", "Failed to save models configuration": "Échec de la sauvegarde de la configuration des modèles", "Failed to update settings": "Échec de la mise à jour des paramètres", "Failed to upload file.": "Échec du téléchargement du fichier.", - "Features": "", + "Features": "Fonctionnalités", "Features Permissions": "Autorisations des fonctionnalités", "February": "Février", "Feedback History": "Historique des avis", @@ -539,8 +539,8 @@ "Filter is now globally enabled": "Le filtre est désormais activé globalement", "Filters": "Filtres", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Spoofing détecté : impossible d'utiliser les initiales comme avatar. Retour à l'image de profil par défaut.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "Url de l'API Base Firecrawl", + "Firecrawl API Key": "Clé de l'API Firecrawl", "Fluidly stream large external response chunks": "Streaming fluide de gros chunks de réponses externes", "Focus chat input": "Mettre le focus sur le champ de chat", "Folder deleted successfully": "Dossier supprimé avec succès", @@ -551,11 +551,11 @@ "Forge new paths": "Créer de nouveaux chemins", "Form": "Formulaire", "Format your variables using brackets like this:": "Formatez vos variables en utilisant des parenthèses comme ceci :", - "Forwards system user session credentials to authenticate": "", + "Forwards system user session credentials to authenticate": "Transmet les identifiants de session de l'utilisateur pour l'authentification", "Frequency Penalty": "Pénalité de fréquence", - "Full Context Mode": "", + "Full Context Mode": "Mode avec injection complète dans le Context", "Function": "Fonction", - "Function Calling": "", + "Function Calling": "Appel de fonction", "Function created successfully": "La fonction a été créée avec succès", "Function deleted successfully": "Fonction supprimée avec succès", "Function Description": "Description de la fonction", @@ -568,13 +568,13 @@ "Functions allow arbitrary code execution": "Les fonctions permettent l'exécution de code arbitraire", "Functions allow arbitrary code execution.": "Les fonctions permettent l'exécution de code arbitraire.", "Functions imported successfully": "Fonctions importées avec succès", - "Gemini": "", - "Gemini API Config": "", - "Gemini API Key is required.": "", + "Gemini": "Gemini", + "Gemini API Config": "Configuration de l'API de Gemini", + "Gemini API Key is required.": "La clé d'API de Gemini est requise", "General": "Général", - "Generate an image": "", + "Generate an image": "Génère une image", "Generate Image": "Générer une image", - "Generate prompt pair": "", + "Generate prompt pair": "Générer une paire de prompt", "Generating search query": "Génération d'une requête de recherche", "Get started": "Démarrer", "Get started with {{WEBUI_NAME}}": "Démarrez avec {{WEBUI_NAME}}", @@ -597,16 +597,16 @@ "Hex Color": "Couleur Hex", "Hex Color - Leave empty for default color": "Couleur Hex - Laissez vide pour la couleur par défaut", "Hide": "Cacher", - "Hide Model": "", - "Home": "", + "Hide Model": "Cache le Model", + "Home": "Home", "Host": "Hôte", "How can I help you today?": "Comment puis-je vous aider aujourd'hui ?", "How would you rate this response?": "Comment évalueriez-vous cette réponse ?", "Hybrid Search": "Recherche hybride", "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.": "Je reconnais avoir lu et compris les implications de mes actions. Je suis conscient des risques associés à l'exécution d'un code arbitraire et j'ai vérifié la fiabilité de la source.", "ID": "ID", - "iframe Sandbox Allow Forms": "", - "iframe Sandbox Allow Same Origin": "", + "iframe Sandbox Allow Forms": "Autoriser les formulaires dans l'iframe sandbox", + "iframe Sandbox Allow Same Origin": "Autoriser même origine dans l'iframe sandbox", "Ignite curiosity": "Éveiller la curiosité", "Image": "Image", "Image Compression": "Compression d'image", @@ -630,14 +630,14 @@ "Include `--api` flag when running stable-diffusion-webui": "Inclure le drapeau `--api` lorsque vous exécutez 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.": "", "Info": "Info", - "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", + "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injecter l'ensemble du contenu comme contexte pour un traitement complet, recommandé pour les requêtes complexes.", "Input commands": "Commandes d'entrée", "Install from Github URL": "Installer depuis une URL GitHub", "Instant Auto-Send After Voice Transcription": "Envoi automatique après la transcription", - "Integration": "", + "Integration": "Intégration", "Interface": "Interface utilisateur", "Invalid file format.": "Format de fichier non valide.", - "Invalid JSON schema": "", + "Invalid JSON schema": "Schema JSon non valide", "Invalid Tag": "Tag non valide", "is typing...": "est en train d'écrire...", "January": "Janvier", @@ -647,8 +647,8 @@ "JSON Preview": "Aperçu JSON", "July": "Juillet", "June": "Juin", - "Jupyter Auth": "", - "Jupyter URL": "", + "Jupyter Auth": "Auth Jupyther", + "Jupyter URL": "URL Jupyter", "JWT Expiration": "Expiration du token JWT", "JWT Token": "Token JWT", "Kagi Search API Key": "Clé API Kagi Search", @@ -659,52 +659,52 @@ "Knowledge Access": "Accès aux connaissances", "Knowledge created successfully.": "Connaissance créée avec succès.", "Knowledge deleted successfully.": "Connaissance supprimée avec succès.", - "Knowledge Public Sharing": "", + "Knowledge Public Sharing": "Partage public des Connaissances", "Knowledge reset successfully.": "Connaissance réinitialisée avec succès.", "Knowledge updated successfully": "Connaissance mise à jour avec succès", - "Kokoro.js (Browser)": "", - "Kokoro.js Dtype": "", + "Kokoro.js (Browser)": "Kokoro.js (Navigateur)", + "Kokoro.js Dtype": "Kokoro.js Dtype", "Label": "Étiquette", "Landing Page Mode": "Mode de la page d'accueil", "Language": "Langue", - "Language Locales": "", + "Language Locales": "Paramètres régionaux de langue", "Last Active": "Dernière activité", "Last Modified": "Dernière modification", "Last reply": "Déernière réponse", "LDAP": "LDAP", "LDAP server updated": "Serveur LDAP mis à jour", "Leaderboard": "Classement", - "Learn more about OpenAPI tool servers.": "", + "Learn more about OpenAPI tool servers.": "En savoir plus sur les serveurs d'outils OpenAPI.", "Leave empty for unlimited": "Laissez vide pour illimité", "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "", "Leave empty to include all models from \"{{url}}/models\" endpoint": "", "Leave empty to include all models or select specific models": "Laissez vide pour inclure tous les modèles ou sélectionnez des modèles spécifiques", "Leave empty to use the default prompt, or enter a custom prompt": "Laissez vide pour utiliser le prompt par défaut, ou entrez un prompt personnalisé", - "Leave model field empty to use the default model.": "", - "License": "", + "Leave model field empty to use the default model.": "Laisser le champ du modèle vide pour utiliser le modèle par défaut.", + "License": "Licence", "Light": "Clair", "Listening...": "Écoute en cours...", "Llama.cpp": "Llama.cpp", "LLMs can make mistakes. Verify important information.": "Les LLM peuvent faire des erreurs. Vérifiez les informations importantes.", - "Loader": "", - "Loading Kokoro.js...": "", + "Loader": "Chargeur", + "Loading Kokoro.js...": "Chargement de Kokoro.js...", "Local": "Local", "Local Models": "Modèles locaux", - "Location access not allowed": "", - "Logit Bias": "", + "Location access not allowed": "Accès à la localisation non autorisé", + "Logit Bias": "Biais de Logit", "Lost": "Perdu", "LTR": "LTR", "Made by Open WebUI Community": "Réalisé par la communauté OpenWebUI", "Make sure to enclose them with": "Assurez-vous de les inclure dans", "Make sure to export a workflow.json file as API format from ComfyUI.": "Veillez à exporter un fichier workflow.json au format API depuis ComfyUI.", "Manage": "Gérer", - "Manage Direct Connections": "", + "Manage Direct Connections": "Gérer les connexions directes", "Manage Models": "Gérer les modèles", "Manage Ollama": "Gérer Ollama", "Manage Ollama API Connections": "Gérer les connexions API Ollama", "Manage OpenAI API Connections": "Gérer les connexions API OpenAI", "Manage Pipelines": "Gérer les pipelines", - "Manage Tool Servers": "", + "Manage Tool Servers": "Gérer les serveurs d'outils", "March": "Mars", "Max Tokens (num_predict)": "Nb max de tokens (num_predict)", "Max Upload Count": "Nombre maximal de téléversements", @@ -724,16 +724,16 @@ "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", "Mirostat Tau": "Mirostat Tau", - "Mistral OCR": "", - "Mistral OCR API Key required.": "", + "Mistral OCR": "Mistral OCR", + "Mistral OCR API Key required.": "Clé d'API pour Mistral OCR requise", "Model": "Modèle", "Model '{{modelName}}' has been successfully downloaded.": "Le modèle '{{modelName}}' a été téléchargé avec succès.", "Model '{{modelTag}}' is already in queue for downloading.": "Le modèle '{{modelTag}}' est déjà dans la file d'attente pour le téléchargement.", "Model {{modelId}} not found": "Modèle {{modelId}} introuvable", "Model {{modelName}} is not vision capable": "Le modèle {{modelName}} n'a pas de capacités visuelles", "Model {{name}} is now {{status}}": "Le modèle {{name}} est désormais {{status}}.", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", + "Model {{name}} is now hidden": "Le modèle {{name}} est maintenant masqué", + "Model {{name}} is now visible": "Le modèle {{name}} est maintenant visible", "Model accepts image inputs": "Le modèle accepte les images en entrée", "Model created successfully!": "Le modèle a été créé avec succès !", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Chemin du système de fichiers de modèle détecté. Le nom court du modèle est requis pour la mise à jour, l'opération ne peut pas être poursuivie.", @@ -749,7 +749,7 @@ "Models": "Modèles", "Models Access": "Accès aux modèles", "Models configuration saved successfully": "Configuration des modèles enregistrée avec succès", - "Models Public Sharing": "", + "Models Public Sharing": "Partage public des modèles", "Mojeek Search API Key": "Clé API Mojeek", "more": "plus", "More": "Plus", @@ -812,7 +812,7 @@ "Open file": "Ouvrir le fichier", "Open in full screen": "Ouvrir en plein écran", "Open new chat": "Ouvrir une nouvelle conversation", - "Open WebUI can use tools provided by any OpenAPI server.": "", + "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.", "Open WebUI uses faster-whisper internally.": "Open WebUI utilise faster-whisper en interne.", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI utilise SpeechT5 et les embeddings de locuteur CMU Arctic.", "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La version Open WebUI (v{{OPEN_WEBUI_VERSION}}) est inférieure à la version requise (v{{REQUIRED_VERSION}})", @@ -822,7 +822,7 @@ "OpenAI API Key is required.": "Une clé API OpenAI est requise.", "OpenAI API settings updated": "Paramètres de l'API OpenAI mis à jour", "OpenAI URL/Key required.": "URL/Clé OpenAI requise.", - "openapi.json Path": "", + "openapi.json Path": "Chemin du fichier openapi.json", "or": "ou", "Organize your users": "Organisez vos utilisateurs", "Other": "Autre", @@ -839,7 +839,7 @@ "Permission denied when accessing microphone": "Accès au microphone refusé", "Permission denied when accessing microphone: {{error}}": "Accès au microphone refusé : {{error}}", "Permissions": "Permissions", - "Perplexity API Key": "", + "Perplexity API Key": "Clé d'API de Perplexity", "Personalization": "Personnalisation", "Pin": "Épingler", "Pinned": "Épinglé", @@ -851,13 +851,13 @@ "Pipelines Valves": "Vannes de pipelines", "Plain text (.txt)": "Texte (.txt)", "Playground": "Playground", - "Playwright Timeout (ms)": "", - "Playwright WebSocket URL": "", + "Playwright Timeout (ms)": "Délai d'attente Playwright (ms)", + "Playwright WebSocket URL": "URL du websocket Playwright", "Please carefully review the following warnings:": "Veuillez lire attentivement les avertissements suivants :", "Please do not close the settings page while loading the model.": "Veuillez ne pas fermer les paramètres pendant le chargement du modèle.", "Please enter a prompt": "Veuillez saisir un prompt", - "Please enter a valid path": "", - "Please enter a valid URL": "", + "Please enter a valid path": "Veuillez entrer un chemin d'accès valide", + "Please enter a valid URL": "Veuillez entrer une URL valide", "Please fill in all fields.": "Veuillez remplir tous les champs.", "Please select a model first.": "Veuillez d'abord sélectionner un modèle.", "Please select a model.": "Veuillez sélectionner un modèle.", @@ -869,19 +869,19 @@ "Presence Penalty": "Pénalité de présence", "Previous 30 days": "30 derniers jours", "Previous 7 days": "7 derniers jours", - "Private": "", + "Private": "Privé", "Profile Image": "Image de profil", "Prompt": "Prompt", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (par ex. Dites-moi un fait amusant à propos de l'Empire romain)", - "Prompt Autocompletion": "", + "Prompt Autocompletion": "Autocomplétion de prompt", "Prompt Content": "Contenu du prompt", "Prompt created successfully": "Prompt créé avec succès", "Prompt suggestions": "Suggestions pour le prompt", "Prompt updated successfully": "Prompt mis à jour avec succès", "Prompts": "Prompts", "Prompts Access": "Accès aux prompts", - "Prompts Public Sharing": "", - "Public": "", + "Prompts Public Sharing": "Partage public des promts", + "Public": "Public", "Pull \"{{searchValue}}\" from Ollama.com": "Récupérer « {{searchValue}} » depuis Ollama.com", "Pull a model from Ollama.com": "Télécharger un modèle depuis Ollama.com", "Query Generation Prompt": "Prompt de génération de requête", @@ -893,16 +893,16 @@ "Reasoning Effort": "Effort de raisonnement", "Record voice": "Enregistrer la voix", "Redirecting you to Open WebUI Community": "Redirection vers la communauté OpenWebUI", - "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", + "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Réduit la probabilité de générer du contenu incohérent. Une valeur plus élevée (ex. : 100) produira des réponses plus variées, tandis qu'une valeur plus faible (ex. : 10) sera plus conservatrice.", "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Désignez-vous comme « Utilisateur » (par ex. « L'utilisateur apprend l'espagnol »)", "References from": "Références de", "Refused when it shouldn't have": "Refusé alors qu'il n'aurait pas dû l'être", "Regenerate": "Regénérer", - "Reindex": "", - "Reindex Knowledge Base Vectors": "", + "Reindex": "Réindexer", + "Reindex Knowledge Base Vectors": "Réindexer les vecteurs de la base de connaissance", "Release Notes": "Notes de mise à jour", "Relevance": "Pertinence", - "Relevance Threshold": "", + "Relevance Threshold": "Seuil de pertinence", "Remove": "Retirer", "Remove Model": "Retirer le modèle", "Rename": "Renommer", @@ -953,7 +953,7 @@ "Search options": "Options de recherche", "Search Prompts": "Rechercher des prompts", "Search Result Count": "Nombre de résultats de recherche", - "Search the internet": "", + "Search the internet": "Cherche sur Internet", "Search Tools": "Rechercher des outils", "SearchApi API Key": "Clé API SearchApi", "SearchApi Engine": "Moteur de recherche SearchApi", @@ -1005,22 +1005,22 @@ "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "Définir le nombre de threads de travail utilisés pour le calcul. Cette option contrôle combien de threads sont utilisés pour traiter les demandes entrantes simultanément. L'augmentation de cette valeur peut améliorer les performances sous de fortes charges de travail concurrentes mais peut également consommer plus de ressources CPU.", "Set Voice": "Choisir la voix", "Set whisper model": "Choisir le modèle Whisper", - "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets how far back for the model to look back to prevent repetition.": "", - "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "", - "Sets the size of the context window used to generate the next token.": "", + "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Applique un biais uniforme contre les jetons déjà apparus. Une valeur élevée (ex. : 1,5) pénalise fortement les répétitions, une valeur faible (ex. : 0,9) les tolère davantage. À 0, ce paramètre est désactivé.", + "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Applique un biais progressif contre les jetons en fonction de leur fréquence d'apparition. Une valeur plus élevée les pénalise davantage ; une valeur plus faible est plus indulgente. À 0, ce paramètre est désactivé.", + "Sets how far back for the model to look back to prevent repetition.": "Définit la profondeur de rétrospection du modèle pour éviter les répétitions.", + "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "Définit la graine du générateur aléatoire pour produire un résultat déterministe. Une même graine produira toujours la même sortie pour une invite donnée.", + "Sets the size of the context window used to generate the next token.": "Définit la taille de la fenêtre de contexte utilisée pour générer le prochain Token.", "Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "Définit les séquences d'arrêt à utiliser. Lorsque ce motif est rencontré, le LLM cessera de générer du texte et retournera. Plusieurs motifs d'arrêt peuvent être définis en spécifiant plusieurs paramètres d'arrêt distincts dans un fichier modèle.", "Settings": "Paramètres", "Settings saved successfully!": "Paramètres enregistrés avec succès !", "Share": "Partager", "Share Chat": "Partage de conversation", "Share to Open WebUI Community": "Partager avec la communauté OpenWebUI", - "Sharing Permissions": "", + "Sharing Permissions": "Autorisation de partage", "Show": "Afficher", "Show \"What's New\" modal on login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion", "Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente", - "Show Model": "", + "Show Model": "Afficher le model", "Show shortcuts": "Afficher les raccourcis", "Show your support!": "Montrez votre soutien !", "Showcased creativity": "Créativité mise en avant", @@ -1032,8 +1032,8 @@ "Sign up to {{WEBUI_NAME}}": "Inscrivez-vous à {{WEBUI_NAME}}", "Signing in to {{WEBUI_NAME}}": "Connexion à {{WEBUI_NAME}}", "sk-1234": "sk-1234", - "Sougou Search API sID": "", - "Sougou Search API SK": "", + "Sougou Search API sID": "Identifiant API Sougou Search (sID)", + "Sougou Search API SK": "Clé secrète API Sougou Search (SK)", "Source": "Source", "Speech Playback Speed": "Vitesse de lecture de la parole", "Speech recognition error: {{error}}": "Erreur de reconnaissance vocale : {{error}}", @@ -1053,7 +1053,7 @@ "System": "Système", "System Instructions": "Instructions système", "System Prompt": "Prompt système", - "Tags": "", + "Tags": "Étiquettes", "Tags Generation": "Génération de tags", "Tags Generation Prompt": "Prompt de génération de tags", "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.": "", @@ -1061,7 +1061,7 @@ "Tap to interrupt": "Appuyez pour interrompre", "Tasks": "Tâches", "Tavily API Key": "Clé API Tavily", - "Tavily Extract Depth": "", + "Tavily Extract Depth": "Profondeur d'extraction Tavily", "Tell us more:": "Dites-nous en plus à ce sujet : ", "Temperature": "Température", "Template": "Template", @@ -1072,7 +1072,7 @@ "Thanks for your feedback!": "Merci pour vos commentaires !", "The Application Account DN you bind with for search": "Le DN du compte de l'application avec lequel vous vous liez pour la recherche", "The base to search for users": "La base pour rechercher des utilisateurs", - "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "", + "The 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.": "La taille du lot détermine combien de requêtes texte sont traitées simultanément. Une taille plus grande améliore les performances mais consomme plus de mémoire.", "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Les développeurs de ce plugin sont des bénévoles passionnés issus de la communauté. Si vous trouvez ce plugin utile, merci de contribuer à son développement.", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Le classement d'évaluation est basé sur le système de notation Elo et est mis à jour en temps réel.", "The LDAP attribute that maps to the mail that users use to sign in.": "L'attribut LDAP qui correspond à l'adresse e-mail que les utilisateurs utilisent pour se connecter.", @@ -1081,16 +1081,16 @@ "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "La taille maximale du fichier en Mo. Si la taille du fichier dépasse cette limite, le fichier ne sera pas téléchargé.", "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.": "Le nombre maximal de fichiers pouvant être utilisés en même temps dans la conversation. Si le nombre de fichiers dépasse cette limite, les fichiers ne seront pas téléchargés.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Le score doit être une valeur comprise entre 0,0 (0%) et 1,0 (100%).", - "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "", + "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "La température du modèle. Une température plus élevée rend les réponses plus créatives.", "Theme": "Thème", "Thinking...": "En train de réfléchir...", "This action cannot be undone. Do you wish to continue?": "Cette action ne peut pas être annulée. Souhaitez-vous continuer ?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", - "This chat won’t appear in history and your messages will not be saved.": "", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Ce canal a été créé le {{createdAt}}. Voici le tout début du canal {{channelName}}.", + "This chat won’t appear in history and your messages will not be saved.": "Cette conversation n'apparaîtra pas dans l'historique et vos messages ne seront pas enregistrés.", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Cela garantit que vos conversations précieuses soient sauvegardées en toute sécurité dans votre base de données backend. Merci !", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.", - "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.": "", - "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", + "This option 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.": "Cette option détermine combien de Token sont conservés lors du rafraîchissement du contexte. Par exemple, avec une valeur de 2, les 2 derniers Token seront conservés. Cela aide à maintenir la continuité de la conversation, mais peut limiter la capacité à traiter de nouveaux sujets.", + "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.": "Cette option définit le nombre maximal de Token que le modèle peut générer dans sa réponse. Une valeur plus élevée permet des réponses plus longues, mais peut aussi générer du contenu moins pertinent.", "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Cette option supprimera tous les fichiers existants dans la collection et les remplacera par les fichiers nouvellement téléchargés.", "This response was generated by \"{{model}}\"": "Cette réponse a été générée par \"{{model}}\"", "This will delete": "Cela supprimera", @@ -1100,7 +1100,7 @@ "This will reset the knowledge base and sync all files. Do you wish to continue?": "Cela réinitialisera la base de connaissances et synchronisera tous les fichiers. Souhaitez-vous continuer ?", "Thorough explanation": "Explication approfondie", "Thought for {{DURATION}}": "Réflexion de {{DURATION}}", - "Thought for {{DURATION}} seconds": "", + "Thought for {{DURATION}} seconds": "Réflexion pendant {{DURATION}} secondes", "Tika": "Tika", "Tika Server URL required.": "URL du serveur Tika requise.", "Tiktoken": "Tiktoken", @@ -1134,7 +1134,7 @@ "Tool ID": "ID de l'outil", "Tool imported successfully": "Outil importé avec succès", "Tool Name": "Nom de l'outil", - "Tool Servers": "", + "Tool Servers": "Serveurs d'outils", "Tool updated successfully": "L'outil a été mis à jour avec succès", "Tools": "Outils", "Tools Access": "Accès aux outils", @@ -1142,9 +1142,9 @@ "Tools Function Calling Prompt": "", "Tools have a function calling system that allows arbitrary code execution": "Les outils ont un système d'appel de fonction qui permet l'exécution de code arbitraire", "Tools have a function calling system that allows arbitrary code execution.": "Les outils ont un système d'appel de fonction qui permet l'exécution de code arbitraire.", - "Tools Public Sharing": "", + "Tools Public Sharing": "Partage public des outils", "Top K": "Top K", - "Top K Reranker": "", + "Top K Reranker": "Top K Reranker", "Top P": "Top P", "Transformers": "Transformers", "Trouble accessing Ollama?": "Problèmes d'accès à Ollama ?", @@ -1184,14 +1184,14 @@ "Use Gravatar": "Utiliser Gravatar", "Use groups to group your users and assign permissions.": "Utilisez des groupes pour regrouper vos utilisateurs et attribuer des permissions.", "Use Initials": "Utiliser les initiales", - "Use no proxy to fetch page contents.": "", - "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "", + "Use no proxy to fetch page contents.": "Ne pas utiliser de proxy pour récupérer le contenu des pages.", + "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Utiliser le proxy défini par les variables d'environnement http_proxy et https_proxy pour récupérer le contenu des pages.", "use_mlock (Ollama)": "Utiliser mlock (Ollama)", "use_mmap (Ollama)": "Utiliser mmap (Ollama)", "user": "utilisateur", "User": "Utilisateur", "User location successfully retrieved.": "L'emplacement de l'utilisateur a été récupéré avec succès.", - "User Webhooks": "", + "User Webhooks": "Webhooks utilisateur", "Username": "Nom d'utilisateur", "Users": "Utilisateurs", "Using the default arena model with all models. Click the plus button to add custom models.": "Utilisation du modèle d'arène par défaut avec tous les modèles. Cliquez sur le bouton plus pour ajouter des modèles personnalisés.", @@ -1202,12 +1202,12 @@ "Valves updated successfully": "Les vannes ont été mises à jour avec succès", "variable": "variable", "variable to have them replaced with clipboard content.": "variable pour qu'elles soient remplacées par le contenu du presse-papiers.", - "Verify Connection": "", - "Verify SSL Certificate": "", + "Verify Connection": "Vérifier la connexion", + "Verify SSL Certificate": "Vérifier le certificat SSL", "Version": "Version:", "Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} de {{totalVersions}}", "View Replies": "Voir les réponses", - "View Result from **{{NAME}}**": "", + "View Result from **{{NAME}}**": "Voir le résultat de **{{NAME}}**", "Visibility": "Visibilité", "Voice": "Voix", "Voice Input": "Saisie vocale", @@ -1215,10 +1215,10 @@ "Warning:": "Avertissement :", "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Avertissement : Activer cette option permettra aux utilisateurs de télécharger du code arbitraire sur le serveur.", "Warning: If you update or change your embedding model, you will need to re-import all documents.": "Avertissement : Si vous mettez à jour ou modifiez votre modèle d'embedding, vous devrez réimporter tous les documents.", - "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "", + "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Avertissement : L'exécution Jupyter permet l'exécution de code arbitraire, ce qui présente des risques de sécurité importants. Procédez avec une extrême prudence.", "Web": "Web", "Web API": "API Web", - "Web Loader Engine": "", + "Web Loader Engine": "Moteur de chargement Web", "Web Search": "Recherche Web", "Web Search Engine": "Moteur de recherche Web", "Web Search in Chat": "Recherche web depuis le chat", @@ -1226,7 +1226,7 @@ "Webhook URL": "URL du webhook", "WebUI Settings": "Paramètres de WebUI", "WebUI URL": "URL de WebUI", - "WebUI will make requests to \"{{url}}\"": "", + "WebUI will make requests to \"{{url}}\"": "WebUI effectuera des requêtes vers \"{{url}}\"", "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI fera des requêtes à \"{{url}}/api/chat\"", "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI fera des requêtes à \"{{url}}/chat/completions\"", "What are you trying to achieve?": "Que cherchez-vous à accomplir ?", @@ -1248,11 +1248,11 @@ "Write your model template content here": "Écrivez ici le contenu de votre modèle", "Yesterday": "Hier", "You": "Vous", - "You are currently using a trial license. Please contact support to upgrade your license.": "", + "You are currently using a trial license. Please contact support to upgrade your license.": "Vous utilisez actuellement une licence d'essai. Veuillez contacter le support pour mettre à niveau votre licence.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Vous ne pouvez discuter qu'avec un maximum de {{maxCount}} fichier(s) à la fois.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Vous pouvez personnaliser vos interactions avec les LLM en ajoutant des mémoires à l'aide du bouton « Gérer » ci-dessous, ce qui les rendra plus utiles et mieux adaptées à vos besoins.", "You cannot upload an empty file.": "Vous ne pouvez pas envoyer un fichier vide.", - "You do not have permission to upload files": "", + "You do not have permission to upload files": "Vous n'avez pas l'autorisation de téléverser des fichiers.", "You do not have permission to upload files.": "Vous n'avez pas la permission de télécharger des fichiers.", "You have no archived conversations.": "Vous n'avez aucune conversation archivée.", "You have shared this chat": "Vous avez partagé cette conversation.", From ef7acfbf3d78447b89cc0a4336286835367fb5b0 Mon Sep 17 00:00:00 2001 From: nathaniel Date: Thu, 1 May 2025 21:33:57 +0100 Subject: [PATCH 173/238] WHISPER_LANGUAGE no longer a "PersistentConfig" variable (Was not appropriate with how WHISPER_LANGUAGE is currently configured). --- backend/open_webui/config.py | 6 +----- backend/open_webui/main.py | 1 - backend/open_webui/routers/audio.py | 3 ++- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 04500411f..b5d37cc8e 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -2510,11 +2510,7 @@ WHISPER_VAD_FILTER = PersistentConfig( os.getenv("WHISPER_VAD_FILTER", "False").lower() == "true", ) -WHISPER_LANGUAGE = PersistentConfig( - "WHISPER_LANGUAGE", - "audio.stt.whisper_language", - os.getenv("WHISPER_LANGUAGE", None).lower(), -) +WHISPER_LANGUAGE = os.getenv("WHISPER_LANGUAGE", None).lower() # Add Deepgram configuration DEEPGRAM_API_KEY = PersistentConfig( diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 3462661dd..26d9c29c5 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -792,7 +792,6 @@ app.state.config.STT_MODEL = AUDIO_STT_MODEL app.state.config.WHISPER_MODEL = WHISPER_MODEL app.state.config.WHISPER_VAD_FILTER = WHISPER_VAD_FILTER -app.state.config.WHISPER_LANGUAGE = WHISPER_LANGUAGE app.state.config.DEEPGRAM_API_KEY = DEEPGRAM_API_KEY app.state.config.AUDIO_STT_AZURE_API_KEY = AUDIO_STT_AZURE_API_KEY diff --git a/backend/open_webui/routers/audio.py b/backend/open_webui/routers/audio.py index c086aea00..513a8323a 100644 --- a/backend/open_webui/routers/audio.py +++ b/backend/open_webui/routers/audio.py @@ -33,6 +33,7 @@ from open_webui.config import ( WHISPER_MODEL_AUTO_UPDATE, WHISPER_MODEL_DIR, CACHE_DIR, + WHISPER_LANGUAGE ) from open_webui.constants import ERROR_MESSAGES @@ -501,7 +502,7 @@ def transcribe(request: Request, file_path): file_path, beam_size=5, vad_filter=request.app.state.config.WHISPER_VAD_FILTER, - language=request.app.state.config.WHISPER_LANGUAGE + language=WHISPER_LANGUAGE ) log.info( "Detected language '%s' with probability %f" From cc14aacaaa6248426aa4bd1c3b2ee984b4ba850b Mon Sep 17 00:00:00 2001 From: nathaniel Date: Thu, 1 May 2025 22:03:49 +0100 Subject: [PATCH 174/238] Improvements to parsing of WHISPER_LANGUAGE environment variable (Setting as empty string now equivalent to unsetting/removing WHISPER_LANGUAGE). Resolved crash caused when unset --- backend/open_webui/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index b5d37cc8e..6d4ddc7e6 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -2510,7 +2510,7 @@ WHISPER_VAD_FILTER = PersistentConfig( os.getenv("WHISPER_VAD_FILTER", "False").lower() == "true", ) -WHISPER_LANGUAGE = os.getenv("WHISPER_LANGUAGE", None).lower() +WHISPER_LANGUAGE = os.getenv("WHISPER_LANGUAGE", "").lower() or None # Add Deepgram configuration DEEPGRAM_API_KEY = PersistentConfig( From 10243b0faca82d7537dea2e4a005a15ef8ba733b Mon Sep 17 00:00:00 2001 From: hurxxxx Date: Fri, 2 May 2025 09:44:51 +0900 Subject: [PATCH 175/238] chore: bump @typescript-eslint/eslint-plugin to 8.31.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 185eaae55..b5145a90b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -81,7 +81,7 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", - "@typescript-eslint/eslint-plugin": "^8.31.0", + "@typescript-eslint/eslint-plugin": "^8.31.1", "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", "eslint": "^8.56.0", diff --git a/package.json b/package.json index b53506e31..ce1cb2545 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/postcss": "^4.0.0", "@tailwindcss/typography": "^0.5.13", - "@typescript-eslint/eslint-plugin": "^8.31.0", + "@typescript-eslint/eslint-plugin": "^8.31.1", "@typescript-eslint/parser": "^8.31.1", "cypress": "^13.15.0", "eslint": "^8.56.0", From c2582727091eca4b3b0e2cdf4b06768307f1de92 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 2 May 2025 13:37:41 +0400 Subject: [PATCH 176/238] refac --- src/lib/components/layout/Sidebar.svelte | 78 ++++++++++++------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index d8c018b42..02a2f2e08 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -570,45 +570,6 @@
{/if} --> - {#if $user?.role === 'admin' || $user?.permissions?.workspace?.models || $user?.permissions?.workspace?.knowledge || $user?.permissions?.workspace?.prompts || $user?.permissions?.workspace?.tools} - - {/if} - {#if $config?.features?.enable_notes ?? false}
{/if} + {#if $user?.role === 'admin' || $user?.permissions?.workspace?.models || $user?.permissions?.workspace?.knowledge || $user?.permissions?.workspace?.prompts || $user?.permissions?.workspace?.tools} + + {/if} +
{#if $temporaryChatEnabled}
From 6d81eef425b1a602a1b6933c58ff7848acd0b9af Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 2 May 2025 14:04:12 +0400 Subject: [PATCH 177/238] refac: reasoning detection --- backend/open_webui/utils/middleware.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 8cc2b2b77..d81170f01 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1422,8 +1422,10 @@ async def process_chat_response( if after_tag: content_blocks[-1]["content"] = after_tag + content = after_tag break - elif content_blocks[-1]["type"] == content_type: + + if content and content_blocks[-1]["type"] == content_type: start_tag = content_blocks[-1]["start_tag"] end_tag = content_blocks[-1]["end_tag"] # Match end tag e.g., From 4a0b2a3afc6f8f30a7291a478146cc332d16b256 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 2 May 2025 14:06:57 +0400 Subject: [PATCH 178/238] chore: bump --- backend/requirements.txt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index 8b25308ab..aea3d2306 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -127,14 +127,14 @@ firecrawl-py==1.12.0 tencentcloud-sdk-python==3.0.1336 ## Trace -opentelemetry-api==1.31.1 -opentelemetry-sdk==1.31.1 -opentelemetry-exporter-otlp==1.31.1 -opentelemetry-instrumentation==0.52b1 -opentelemetry-instrumentation-fastapi==0.52b1 -opentelemetry-instrumentation-sqlalchemy==0.52b1 -opentelemetry-instrumentation-redis==0.52b1 -opentelemetry-instrumentation-requests==0.52b1 -opentelemetry-instrumentation-logging==0.52b1 -opentelemetry-instrumentation-httpx==0.52b1 -opentelemetry-instrumentation-aiohttp-client==0.52b1 +opentelemetry-api==1.32.1 +opentelemetry-sdk==1.32.1 +opentelemetry-exporter-otlp==1.32.1 +opentelemetry-instrumentation==0.53b0 +opentelemetry-instrumentation-fastapi==0.53b0 +opentelemetry-instrumentation-sqlalchemy==0.53b0 +opentelemetry-instrumentation-redis==0.53b0 +opentelemetry-instrumentation-requests==0.53b0 +opentelemetry-instrumentation-logging==0.53b0 +opentelemetry-instrumentation-httpx==0.53b0 +opentelemetry-instrumentation-aiohttp-client==0.53b0 From 74f160b8491b7e53a595b9df45586b1f21d17f84 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 2 May 2025 14:16:11 +0400 Subject: [PATCH 179/238] refac --- src/lib/components/chat/Messages/ResponseMessage.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 2c6d94e2d..df273bf15 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -684,7 +684,7 @@ {:else if status?.description === 'Generating search query'} {$i18n.t('Generating search query')} {:else if status?.description === 'Searching the web'} - {$i18n.t('Searching the web')} + {$i18n.t('Searching the web...')} {:else} {status?.description} {/if} From c1ddb0037704b277696dcdf2fc38b794a27205e8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 2 May 2025 14:19:53 +0400 Subject: [PATCH 180/238] refac: styling --- src/lib/components/chat/Messages/ResponseMessage.svelte | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index df273bf15..e8143e47c 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -623,12 +623,6 @@ ).at(-1)} {#if !status?.hidden}
- {#if status?.done === false} -
- -
- {/if} - {#if status?.action === 'web_search' && status?.urls}
@@ -779,7 +773,7 @@
{:else}
- {#if message.content === '' && !message.error} + {#if message.content === '' && !message.error && (message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]).length === 0} {:else if message.content && message.error !== true} From 754f631a07f9b3637f7335e4a33835bfb8c8c7a1 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 2 May 2025 14:47:02 +0400 Subject: [PATCH 181/238] feat: OAUTH_BLOCKED_GROUPS support --- backend/open_webui/config.py | 7 +++++++ backend/open_webui/utils/oauth.py | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 96e688d1b..7f593be2a 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -515,6 +515,13 @@ ENABLE_OAUTH_GROUP_CREATION = PersistentConfig( os.environ.get("ENABLE_OAUTH_GROUP_CREATION", "False").lower() == "true", ) + +OAUTH_BLOCKED_GROUPS = PersistentConfig( + "OAUTH_BLOCKED_GROUPS", + "oauth.blocked_groups", + os.environ.get("OAUTH_BLOCKED_GROUPS", "[]"), +) + OAUTH_ROLES_CLAIM = PersistentConfig( "OAUTH_ROLES_CLAIM", "oauth.roles_claim", diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index d526382c1..283bc3b5c 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -3,6 +3,7 @@ import logging import mimetypes import sys import uuid +import json import aiohttp from authlib.integrations.starlette_client import OAuth @@ -24,6 +25,7 @@ from open_webui.config import ( ENABLE_OAUTH_ROLE_MANAGEMENT, ENABLE_OAUTH_GROUP_MANAGEMENT, ENABLE_OAUTH_GROUP_CREATION, + OAUTH_BLOCKED_GROUPS, OAUTH_ROLES_CLAIM, OAUTH_GROUPS_CLAIM, OAUTH_EMAIL_CLAIM, @@ -59,6 +61,7 @@ auth_manager_config.OAUTH_MERGE_ACCOUNTS_BY_EMAIL = OAUTH_MERGE_ACCOUNTS_BY_EMAI auth_manager_config.ENABLE_OAUTH_ROLE_MANAGEMENT = ENABLE_OAUTH_ROLE_MANAGEMENT auth_manager_config.ENABLE_OAUTH_GROUP_MANAGEMENT = ENABLE_OAUTH_GROUP_MANAGEMENT auth_manager_config.ENABLE_OAUTH_GROUP_CREATION = ENABLE_OAUTH_GROUP_CREATION +auth_manager_config.OAUTH_BLOCKED_GROUPS = OAUTH_BLOCKED_GROUPS auth_manager_config.OAUTH_ROLES_CLAIM = OAUTH_ROLES_CLAIM auth_manager_config.OAUTH_GROUPS_CLAIM = OAUTH_GROUPS_CLAIM auth_manager_config.OAUTH_EMAIL_CLAIM = OAUTH_EMAIL_CLAIM @@ -142,6 +145,12 @@ class OAuthManager: log.debug("Running OAUTH Group management") oauth_claim = auth_manager_config.OAUTH_GROUPS_CLAIM + try: + blocked_groups = json.loads(auth_manager_config.OAUTH_BLOCKED_GROUPS) + except Exception as e: + log.exception(f"Error loading OAUTH_BLOCKED_GROUPS: {e}") + blocked_groups = [] + user_oauth_groups = [] # Nested claim search for groups claim if oauth_claim: @@ -208,7 +217,11 @@ class OAuthManager: # Remove groups that user is no longer a part of for group_model in user_current_groups: - if user_oauth_groups and group_model.name not in user_oauth_groups: + if ( + user_oauth_groups + and group_model.name not in user_oauth_groups + and group_model.name not in blocked_groups + ): # Remove group from user log.debug( f"Removing user from group {group_model.name} as it is no longer in their oauth groups" @@ -238,6 +251,7 @@ class OAuthManager: user_oauth_groups and group_model.name in user_oauth_groups and not any(gm.name == group_model.name for gm in user_current_groups) + and group_model.name not in blocked_groups ): # Add user to group log.debug( From cafba3eafffedeba07c38433c55f4b25e75ceac4 Mon Sep 17 00:00:00 2001 From: Samer Albahra Date: Fri, 2 May 2025 11:30:59 -0400 Subject: [PATCH 182/238] Fix model reference with Ollama proxy when prefixes are used --- backend/open_webui/routers/ollama.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 775cd0446..ee8d56b61 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -880,6 +880,10 @@ async def embed( url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] key = get_api_key(url_idx, url, request.app.state.config.OLLAMA_API_CONFIGS) + prefix_id = api_config.get("prefix_id", None) + if prefix_id: + form_data.model = form_data.model.replace(f"{prefix_id}.", "") + try: r = requests.request( method="POST", @@ -959,6 +963,10 @@ async def embeddings( url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] key = get_api_key(url_idx, url, request.app.state.config.OLLAMA_API_CONFIGS) + prefix_id = api_config.get("prefix_id", None) + if prefix_id: + form_data.model = form_data.model.replace(f"{prefix_id}.", "") + try: r = requests.request( method="POST", From 657162e96d3fe8e65ccc9de36701784578995340 Mon Sep 17 00:00:00 2001 From: Athanasios Oikonomou Date: Sat, 3 May 2025 00:31:00 +0300 Subject: [PATCH 183/238] feat(ocr): add support for Docling OCR engine and language configuration This commit adds support for configuring the OCR engine and language(s) for Docling. Configuration can be set via the environment variables `DOCLING_OCR_ENGINE` and `DOCLING_OCR_LANG`, or through the UI. Fixes #13133 --- backend/open_webui/config.py | 12 ++++++++++++ backend/open_webui/main.py | 4 ++++ backend/open_webui/retrieval/loaders/main.py | 16 ++++++++++++++-- backend/open_webui/routers/retrieval.py | 18 ++++++++++++++++++ .../admin/Settings/Documents.svelte | 19 +++++++++++++++++++ 5 files changed, 67 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 7f593be2a..d0b4ed8f3 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1839,6 +1839,18 @@ DOCLING_SERVER_URL = PersistentConfig( os.getenv("DOCLING_SERVER_URL", "http://docling:5001"), ) +DOCLING_OCR_ENGINE = PersistentConfig( + "DOCLING_OCR_ENGINE", + "rag.docling_ocr_engine", + os.getenv("DOCLING_OCR_ENGINE", "tesseract"), +) + +DOCLING_OCR_LANG = PersistentConfig( + "DOCLING_OCR_LANG", + "rag.docling_ocr_lang", + os.getenv("DOCLING_OCR_LANG", "eng,fra,deu,spa"), +) + DOCUMENT_INTELLIGENCE_ENDPOINT = PersistentConfig( "DOCUMENT_INTELLIGENCE_ENDPOINT", "rag.document_intelligence_endpoint", diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index ef38904c0..83f5e6f15 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -202,6 +202,8 @@ from open_webui.config import ( CONTENT_EXTRACTION_ENGINE, TIKA_SERVER_URL, DOCLING_SERVER_URL, + DOCLING_OCR_ENGINE, + DOCLING_OCR_LANG, DOCUMENT_INTELLIGENCE_ENDPOINT, DOCUMENT_INTELLIGENCE_KEY, MISTRAL_OCR_API_KEY, @@ -635,6 +637,8 @@ app.state.config.ENABLE_WEB_LOADER_SSL_VERIFICATION = ENABLE_WEB_LOADER_SSL_VERI app.state.config.CONTENT_EXTRACTION_ENGINE = CONTENT_EXTRACTION_ENGINE app.state.config.TIKA_SERVER_URL = TIKA_SERVER_URL app.state.config.DOCLING_SERVER_URL = DOCLING_SERVER_URL +app.state.config.DOCLING_OCR_ENGINE = DOCLING_OCR_ENGINE +app.state.config.DOCLING_OCR_LANG = DOCLING_OCR_LANG app.state.config.DOCUMENT_INTELLIGENCE_ENDPOINT = DOCUMENT_INTELLIGENCE_ENDPOINT app.state.config.DOCUMENT_INTELLIGENCE_KEY = DOCUMENT_INTELLIGENCE_KEY app.state.config.MISTRAL_OCR_API_KEY = MISTRAL_OCR_API_KEY diff --git a/backend/open_webui/retrieval/loaders/main.py b/backend/open_webui/retrieval/loaders/main.py index 0403c5c51..fa996e16d 100644 --- a/backend/open_webui/retrieval/loaders/main.py +++ b/backend/open_webui/retrieval/loaders/main.py @@ -100,7 +100,7 @@ class TikaLoader: headers = {} if self.kwargs.get("PDF_EXTRACT_IMAGES") == True: - headers['X-Tika-PDFextractInlineImages'] = 'true' + headers["X-Tika-PDFextractInlineImages"] = "true" endpoint = self.url if not endpoint.endswith("/"): @@ -124,10 +124,14 @@ class TikaLoader: class DoclingLoader: - def __init__(self, url, file_path=None, mime_type=None): + def __init__( + self, url, file_path=None, mime_type=None, ocr_engine=None, ocr_lang=None + ): self.url = url.rstrip("/") self.file_path = file_path self.mime_type = mime_type + self.ocr_engine = ocr_engine + self.ocr_lang = ocr_lang def load(self) -> list[Document]: with open(self.file_path, "rb") as f: @@ -144,6 +148,12 @@ class DoclingLoader: "table_mode": "accurate", } + if self.ocr_engine and self.ocr_lang: + params["ocr_engine"] = self.ocr_engine + params["ocr_lang"] = [ + lang.strip() for lang in self.ocr_lang.split(",") if lang.strip() + ] + endpoint = f"{self.url}/v1alpha/convert/file" r = requests.post(endpoint, files=files, data=params) @@ -212,6 +222,8 @@ class Loader: url=self.kwargs.get("DOCLING_SERVER_URL"), file_path=file_path, mime_type=file_content_type, + ocr_engine=self.kwargs.get("DOCLING_OCR_ENGINE"), + ocr_lang=self.kwargs.get("DOCLING_OCR_LANG"), ) elif ( self.engine == "document_intelligence" diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 36897cdea..f75b03483 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -378,6 +378,8 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)): "PDF_EXTRACT_IMAGES": request.app.state.config.PDF_EXTRACT_IMAGES, "TIKA_SERVER_URL": request.app.state.config.TIKA_SERVER_URL, "DOCLING_SERVER_URL": request.app.state.config.DOCLING_SERVER_URL, + "DOCLING_OCR_ENGINE": request.app.state.config.DOCLING_OCR_ENGINE, + "DOCLING_OCR_LANG": request.app.state.config.DOCLING_OCR_LANG, "DOCUMENT_INTELLIGENCE_ENDPOINT": request.app.state.config.DOCUMENT_INTELLIGENCE_ENDPOINT, "DOCUMENT_INTELLIGENCE_KEY": request.app.state.config.DOCUMENT_INTELLIGENCE_KEY, "MISTRAL_OCR_API_KEY": request.app.state.config.MISTRAL_OCR_API_KEY, @@ -511,6 +513,8 @@ class ConfigForm(BaseModel): PDF_EXTRACT_IMAGES: Optional[bool] = None TIKA_SERVER_URL: Optional[str] = None DOCLING_SERVER_URL: Optional[str] = None + DOCLING_OCR_ENGINE: Optional[str] = None + DOCLING_OCR_LANG: Optional[str] = None DOCUMENT_INTELLIGENCE_ENDPOINT: Optional[str] = None DOCUMENT_INTELLIGENCE_KEY: Optional[str] = None MISTRAL_OCR_API_KEY: Optional[str] = None @@ -600,6 +604,16 @@ async def update_rag_config( if form_data.DOCLING_SERVER_URL is not None else request.app.state.config.DOCLING_SERVER_URL ) + request.app.state.config.DOCLING_OCR_ENGINE = ( + form_data.DOCLING_OCR_ENGINE + if form_data.DOCLING_OCR_ENGINE is not None + else request.app.state.config.DOCLING_OCR_ENGINE + ) + request.app.state.config.DOCLING_OCR_LANG = ( + form_data.DOCLING_OCR_LANG + if form_data.DOCLING_OCR_LANG is not None + else request.app.state.config.DOCLING_OCR_LANG + ) request.app.state.config.DOCUMENT_INTELLIGENCE_ENDPOINT = ( form_data.DOCUMENT_INTELLIGENCE_ENDPOINT if form_data.DOCUMENT_INTELLIGENCE_ENDPOINT is not None @@ -767,6 +781,8 @@ async def update_rag_config( "PDF_EXTRACT_IMAGES": request.app.state.config.PDF_EXTRACT_IMAGES, "TIKA_SERVER_URL": request.app.state.config.TIKA_SERVER_URL, "DOCLING_SERVER_URL": request.app.state.config.DOCLING_SERVER_URL, + "DOCLING_OCR_ENGINE": request.app.state.config.DOCLING_OCR_ENGINE, + "DOCLING_OCR_LANG": request.app.state.config.DOCLING_OCR_LANG, "DOCUMENT_INTELLIGENCE_ENDPOINT": request.app.state.config.DOCUMENT_INTELLIGENCE_ENDPOINT, "DOCUMENT_INTELLIGENCE_KEY": request.app.state.config.DOCUMENT_INTELLIGENCE_KEY, "MISTRAL_OCR_API_KEY": request.app.state.config.MISTRAL_OCR_API_KEY, @@ -1080,6 +1096,8 @@ def process_file( engine=request.app.state.config.CONTENT_EXTRACTION_ENGINE, TIKA_SERVER_URL=request.app.state.config.TIKA_SERVER_URL, DOCLING_SERVER_URL=request.app.state.config.DOCLING_SERVER_URL, + DOCLING_OCR_ENGINE=request.app.state.config.DOCLING_OCR_ENGINE, + DOCLING_OCR_LANG=request.app.state.config.DOCLING_OCR_LANG, PDF_EXTRACT_IMAGES=request.app.state.config.PDF_EXTRACT_IMAGES, DOCUMENT_INTELLIGENCE_ENDPOINT=request.app.state.config.DOCUMENT_INTELLIGENCE_ENDPOINT, DOCUMENT_INTELLIGENCE_KEY=request.app.state.config.DOCUMENT_INTELLIGENCE_KEY, diff --git a/src/lib/components/admin/Settings/Documents.svelte b/src/lib/components/admin/Settings/Documents.svelte index 2047a07e7..ad7d46f47 100644 --- a/src/lib/components/admin/Settings/Documents.svelte +++ b/src/lib/components/admin/Settings/Documents.svelte @@ -161,6 +161,13 @@ toast.error($i18n.t('Docling Server URL required.')); return; } + if ( + RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling' && + (RAGConfig.DOCLING_OCR_ENGINE === '' || RAGConfig.DOCLING_OCR_LANG === '') + ) { + toast.error($i18n.t('Docling OCR Engine and Language(s) required.')); + return; + } if ( RAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence' && @@ -326,6 +333,18 @@ bind:value={RAGConfig.DOCLING_SERVER_URL} />
+
+ + +
{:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence'}
Date: Sat, 3 May 2025 08:02:00 +0300 Subject: [PATCH 184/238] fix: correct condition for Docling OCR engine and language validation Both must have value or both must be empty. --- src/lib/components/admin/Settings/Documents.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/admin/Settings/Documents.svelte b/src/lib/components/admin/Settings/Documents.svelte index ad7d46f47..fcc5afe44 100644 --- a/src/lib/components/admin/Settings/Documents.svelte +++ b/src/lib/components/admin/Settings/Documents.svelte @@ -163,7 +163,7 @@ } if ( RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling' && - (RAGConfig.DOCLING_OCR_ENGINE === '' || RAGConfig.DOCLING_OCR_LANG === '') + (RAGConfig.DOCLING_OCR_ENGINE !== '' || RAGConfig.DOCLING_OCR_LANG !== '') ) { toast.error($i18n.t('Docling OCR Engine and Language(s) required.')); return; From 437804a2f8bc94527aa06f41581b49d110e86526 Mon Sep 17 00:00:00 2001 From: Athanasios Oikonomou Date: Sat, 3 May 2025 08:12:58 +0300 Subject: [PATCH 185/238] fix: update validation logic for Docling OCR engine and language requirements Both Docling OCR Engine and Language(s) must be provided or both left empty. --- src/lib/components/admin/Settings/Documents.svelte | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib/components/admin/Settings/Documents.svelte b/src/lib/components/admin/Settings/Documents.svelte index fcc5afe44..ed314e658 100644 --- a/src/lib/components/admin/Settings/Documents.svelte +++ b/src/lib/components/admin/Settings/Documents.svelte @@ -161,11 +161,10 @@ toast.error($i18n.t('Docling Server URL required.')); return; } - if ( - RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling' && - (RAGConfig.DOCLING_OCR_ENGINE !== '' || RAGConfig.DOCLING_OCR_LANG !== '') - ) { - toast.error($i18n.t('Docling OCR Engine and Language(s) required.')); + if (RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling' && + ((RAGConfig.DOCLING_OCR_ENGINE === '' && RAGConfig.DOCLING_OCR_LANG !== '') || + (RAGConfig.DOCLING_OCR_ENGINE !== '' && RAGConfig.DOCLING_OCR_LANG === ''))) { + toast.error($i18n.t('Both Docling OCR Engine and Language(s) must be provided or both left empty.')); return; } From 7fee84c06e665b895fc1193f3d5f06c2edbff400 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 18:16:32 +0400 Subject: [PATCH 186/238] feat: notes --- backend/open_webui/main.py | 3 + .../versions/9f0c9cd09105_add_note_table.py | 33 +++ backend/open_webui/models/notes.py | 135 ++++++++++++ backend/open_webui/routers/notes.py | 163 ++++++++++++++ src/lib/apis/notes/index.ts | 168 +++++++++++++++ src/lib/components/admin/Functions.svelte | 2 +- src/lib/components/channel/Channel.svelte | 2 +- src/lib/components/chat/Chat.svelte | 2 +- src/lib/components/chat/Navbar.svelte | 4 +- .../components/layout/Sidebar/ChatItem.svelte | 67 +++--- src/lib/components/notes/Notes.svelte | 204 ++++++++++++++++++ src/lib/components/workspace/Knowledge.svelte | 2 +- src/lib/components/workspace/Models.svelte | 2 +- src/lib/components/workspace/Prompts.svelte | 2 +- src/lib/components/workspace/Tools.svelte | 2 +- src/routes/(app)/notes/+layout.svelte | 49 ++++- src/routes/(app)/notes/+page.svelte | 5 + 17 files changed, 801 insertions(+), 44 deletions(-) create mode 100644 backend/open_webui/migrations/versions/9f0c9cd09105_add_note_table.py create mode 100644 backend/open_webui/models/notes.py create mode 100644 backend/open_webui/routers/notes.py create mode 100644 src/lib/apis/notes/index.ts create mode 100644 src/lib/components/notes/Notes.svelte diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index ef38904c0..f19f81022 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -64,6 +64,7 @@ from open_webui.routers import ( auths, channels, chats, + notes, folders, configs, groups, @@ -996,6 +997,8 @@ app.include_router(users.router, prefix="/api/v1/users", tags=["users"]) app.include_router(channels.router, prefix="/api/v1/channels", tags=["channels"]) app.include_router(chats.router, prefix="/api/v1/chats", tags=["chats"]) +app.include_router(notes.router, prefix="/api/v1/notes", tags=["notes"]) + app.include_router(models.router, prefix="/api/v1/models", tags=["models"]) app.include_router(knowledge.router, prefix="/api/v1/knowledge", tags=["knowledge"]) diff --git a/backend/open_webui/migrations/versions/9f0c9cd09105_add_note_table.py b/backend/open_webui/migrations/versions/9f0c9cd09105_add_note_table.py new file mode 100644 index 000000000..8e983a2cf --- /dev/null +++ b/backend/open_webui/migrations/versions/9f0c9cd09105_add_note_table.py @@ -0,0 +1,33 @@ +"""Add note table + +Revision ID: 9f0c9cd09105 +Revises: 3781e22d8b01 +Create Date: 2025-05-03 03:00:00.000000 + +""" + +from alembic import op +import sqlalchemy as sa + +revision = "9f0c9cd09105" +down_revision = "3781e22d8b01" +branch_labels = None +depends_on = None + + +def upgrade(): + op.create_table( + "note", + sa.Column("id", sa.Text(), nullable=False, primary_key=True, unique=True), + sa.Column("user_id", sa.Text(), nullable=True), + sa.Column("title", sa.Text(), nullable=True), + sa.Column("data", sa.JSON(), nullable=True), + sa.Column("meta", sa.JSON(), nullable=True), + sa.Column("access_control", sa.JSON(), nullable=True), + sa.Column("created_at", sa.BigInteger(), nullable=True), + sa.Column("updated_at", sa.BigInteger(), nullable=True), + ) + + +def downgrade(): + op.drop_table("note") diff --git a/backend/open_webui/models/notes.py b/backend/open_webui/models/notes.py new file mode 100644 index 000000000..114ccdc57 --- /dev/null +++ b/backend/open_webui/models/notes.py @@ -0,0 +1,135 @@ +import json +import time +import uuid +from typing import Optional + +from open_webui.internal.db import Base, get_db +from open_webui.utils.access_control import has_access +from open_webui.models.users import Users, UserResponse + + +from pydantic import BaseModel, ConfigDict +from sqlalchemy import BigInteger, Boolean, Column, String, Text, JSON +from sqlalchemy import or_, func, select, and_, text +from sqlalchemy.sql import exists + +#################### +# Note DB Schema +#################### + + +class Note(Base): + __tablename__ = "note" + + id = Column(Text, primary_key=True) + user_id = Column(Text) + + title = Column(Text) + data = Column(JSON, nullable=True) + meta = Column(JSON, nullable=True) + + access_control = Column(JSON, nullable=True) + + created_at = Column(BigInteger) + updated_at = Column(BigInteger) + + +class NoteModel(BaseModel): + model_config = ConfigDict(from_attributes=True) + + id: str + user_id: str + + title: str + data: Optional[dict] = None + meta: Optional[dict] = None + + access_control: Optional[dict] = None + + created_at: int # timestamp in epoch + updated_at: int # timestamp in epoch + + +#################### +# Forms +#################### + + +class NoteForm(BaseModel): + title: str + data: Optional[dict] = None + meta: Optional[dict] = None + access_control: Optional[dict] = None + + +class NoteUserResponse(NoteModel): + user: Optional[UserResponse] = None + + +class NoteTable: + def insert_new_note( + self, + form_data: NoteForm, + user_id: str, + ) -> Optional[NoteModel]: + with get_db() as db: + note = NoteModel( + **{ + "id": str(uuid.uuid4()), + "user_id": user_id, + **form_data.model_dump(), + "created_at": int(time.time_ns()), + "updated_at": int(time.time_ns()), + } + ) + + new_note = Note(**note.model_dump()) + + db.add(new_note) + db.commit() + return note + + def get_notes(self) -> list[NoteModel]: + with get_db() as db: + notes = db.query(Note).order_by(Note.updated_at.desc()).all() + return [NoteModel.model_validate(note) for note in notes] + + def get_notes_by_user_id( + self, user_id: str, permission: str = "write" + ) -> list[NoteModel]: + notes = self.get_notes() + return [ + note + for note in notes + if note.user_id == user_id + or has_access(user_id, permission, note.access_control) + ] + + def get_note_by_id(self, id: str) -> Optional[NoteModel]: + with get_db() as db: + note = db.query(Note).filter(Note.id == id).first() + return NoteModel.model_validate(note) if note else None + + def update_note_by_id(self, id: str, form_data: NoteForm) -> Optional[NoteModel]: + with get_db() as db: + note = db.query(Note).filter(Note.id == id).first() + if not note: + return None + + note.title = form_data.title + note.data = form_data.data + note.meta = form_data.meta + note.access_control = form_data.access_control + note.updated_at = int(time.time_ns()) + + db.commit() + return NoteModel.model_validate(note) if note else None + + def delete_note_by_id(self, id: str): + with get_db() as db: + db.query(Note).filter(Note.id == id).delete() + db.commit() + return True + + +Notes = NoteTable() diff --git a/backend/open_webui/routers/notes.py b/backend/open_webui/routers/notes.py new file mode 100644 index 000000000..ed373e1b5 --- /dev/null +++ b/backend/open_webui/routers/notes.py @@ -0,0 +1,163 @@ +import json +import logging +from typing import Optional + + +from fastapi import APIRouter, Depends, HTTPException, Request, status, BackgroundTasks +from pydantic import BaseModel + +from open_webui.models.users import Users, UserNameResponse +from open_webui.models.notes import Notes, NoteModel, NoteForm, NoteUserResponse + +from open_webui.config import ENABLE_ADMIN_CHAT_ACCESS, ENABLE_ADMIN_EXPORT +from open_webui.constants import ERROR_MESSAGES +from open_webui.env import SRC_LOG_LEVELS + + +from open_webui.utils.auth import get_admin_user, get_verified_user +from open_webui.utils.access_control import has_access + +log = logging.getLogger(__name__) +log.setLevel(SRC_LOG_LEVELS["MODELS"]) + +router = APIRouter() + +############################ +# GetNotes +############################ + + +@router.get("/", response_model=list[NoteUserResponse]) +async def get_notes(user=Depends(get_verified_user)): + notes = [ + NoteUserResponse( + **{ + **note.model_dump(), + "user": UserNameResponse( + **Users.get_user_by_id(note.user_id).model_dump() + ), + } + ) + for note in Notes.get_notes_by_user_id(user.id, "write") + ] + + return notes + + +@router.get("/list", response_model=list[NoteUserResponse]) +async def get_note_list(user=Depends(get_verified_user)): + notes = [ + NoteUserResponse( + **{ + **note.model_dump(), + "user": UserNameResponse( + **Users.get_user_by_id(note.user_id).model_dump() + ), + } + ) + for note in Notes.get_notes_by_user_id(user.id, "read") + ] + + return notes + + +############################ +# CreateNewNote +############################ + + +@router.post("/create", response_model=Optional[NoteModel]) +async def create_new_note(form_data: NoteForm, user=Depends(get_admin_user)): + try: + note = Notes.insert_new_note(form_data, user.id) + return note + except Exception as e: + log.exception(e) + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT() + ) + + +############################ +# GetNoteById +############################ + + +@router.get("/{id}", response_model=Optional[NoteModel]) +async def get_note_by_id(id: str, user=Depends(get_verified_user)): + note = Notes.get_note_by_id(id) + if not note: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND + ) + + if user.role != "admin" and not has_access( + user.id, type="read", access_control=note.access_control + ): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT() + ) + + return note + + +############################ +# UpdateNoteById +############################ + + +@router.post("/{id}/update", response_model=Optional[NoteModel]) +async def update_note_by_id( + id: str, form_data: NoteForm, user=Depends(get_verified_user) +): + note = Notes.get_note_by_id(id) + if not note: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND + ) + + if user.role != "admin" and not has_access( + user.id, type="write", access_control=note.access_control + ): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT() + ) + + try: + note = Notes.update_note_by_id(id, form_data) + return note + except Exception as e: + log.exception(e) + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT() + ) + + +############################ +# DeleteNoteById +############################ + + +@router.delete("/{id}/delete", response_model=bool) +async def delete_note_by_id(id: str, user=Depends(get_verified_user)): + note = Notes.get_note_by_id(id) + if not note: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND + ) + + if user.role != "admin" and not has_access( + user.id, type="write", access_control=note.access_control + ): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT() + ) + + try: + note = Notes.delete_note_by_id(id) + return True + except Exception as e: + log.exception(e) + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT() + ) diff --git a/src/lib/apis/notes/index.ts b/src/lib/apis/notes/index.ts new file mode 100644 index 000000000..445697fd3 --- /dev/null +++ b/src/lib/apis/notes/index.ts @@ -0,0 +1,168 @@ +import { WEBUI_API_BASE_URL } from '$lib/constants'; + +type NoteItem = { + title: string; + content: string; + access_control?: null | object; +}; + +export const createNewNote = async (token: string, note: NoteItem) => { + let error = null; + + const res = await fetch(`${WEBUI_API_BASE_URL}/notes/create`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + authorization: `Bearer ${token}` + }, + body: JSON.stringify({ + ...note + }) + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + error = err.detail; + console.log(err); + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + +export const getNotes = async (token: string = '') => { + let error = null; + + const res = await fetch(`${WEBUI_API_BASE_URL}/notes/`, { + method: 'GET', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + authorization: `Bearer ${token}` + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .then((json) => { + return json; + }) + .catch((err) => { + error = err.detail; + console.log(err); + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + +export const getNoteById = async (token: string, id: string) => { + let error = null; + + const res = await fetch(`${WEBUI_API_BASE_URL}/notes/${id}`, { + method: 'GET', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + authorization: `Bearer ${token}` + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .then((json) => { + return json; + }) + .catch((err) => { + error = err.detail; + + console.log(err); + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + +export const updateNoteById = async (token: string, id: string, note: NoteItem) => { + let error = null; + + const res = await fetch(`${WEBUI_API_BASE_URL}/notes/${id}/update`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + authorization: `Bearer ${token}` + }, + body: JSON.stringify({ + ...note + }) + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .then((json) => { + return json; + }) + .catch((err) => { + error = err.detail; + + console.log(err); + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + +export const deleteNoteById = async (token: string, id: string) => { + let error = null; + + const res = await fetch(`${WEBUI_API_BASE_URL}/notes/${id}/delete`, { + method: 'DELETE', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + authorization: `Bearer ${token}` + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .then((json) => { + return json; + }) + .catch((err) => { + error = err.detail; + + console.log(err); + return null; + }); + + if (error) { + throw error; + } + + return res; +}; diff --git a/src/lib/components/admin/Functions.svelte b/src/lib/components/admin/Functions.svelte index 87f4958d4..fbeb61596 100644 --- a/src/lib/components/admin/Functions.svelte +++ b/src/lib/components/admin/Functions.svelte @@ -192,7 +192,7 @@ - {$i18n.t('Functions')} | {$WEBUI_NAME} + {$i18n.t('Functions')} • {$WEBUI_NAME} diff --git a/src/lib/components/channel/Channel.svelte b/src/lib/components/channel/Channel.svelte index a0de69570..1b1ca25de 100644 --- a/src/lib/components/channel/Channel.svelte +++ b/src/lib/components/channel/Channel.svelte @@ -195,7 +195,7 @@ - #{channel?.name ?? 'Channel'} | Open WebUI + #{channel?.name ?? 'Channel'} • Open WebUI
{$chatTitle - ? `${$chatTitle.length > 30 ? `${$chatTitle.slice(0, 30)}...` : $chatTitle} | ${$WEBUI_NAME}` + ? `${$chatTitle.length > 30 ? `${$chatTitle.slice(0, 30)}...` : $chatTitle} • ${$WEBUI_NAME}` : `${$WEBUI_NAME}`} diff --git a/src/lib/components/chat/Navbar.svelte b/src/lib/components/chat/Navbar.svelte index 4fbc8029e..4687dd983 100644 --- a/src/lib/components/chat/Navbar.svelte +++ b/src/lib/components/chat/Navbar.svelte @@ -47,8 +47,8 @@ -
- {#if notes.length > 0} -
- -
-
-
- -
- -
-
-
+ {#each notes[timeRange] as note, idx (note.id)} +
+
+
+ +
+
{note.title}
+
-
+ {/each} {:else}
@@ -133,7 +164,9 @@ diff --git a/src/routes/(app)/notes/+layout.svelte b/src/routes/(app)/notes/+layout.svelte index 512cb2415..23a3ab72c 100644 --- a/src/routes/(app)/notes/+layout.svelte +++ b/src/routes/(app)/notes/+layout.svelte @@ -85,7 +85,7 @@
-
+
diff --git a/src/routes/(app)/notes/[id]/+page.svelte b/src/routes/(app)/notes/[id]/+page.svelte new file mode 100644 index 000000000..262d8555a --- /dev/null +++ b/src/routes/(app)/notes/[id]/+page.svelte @@ -0,0 +1,5 @@ + + +{$page.params.id} From a74297ed47fe1b31fa637d336cbf164a9aa76c04 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 18:56:27 +0400 Subject: [PATCH 188/238] refac: styling --- src/lib/components/notes/Notes.svelte | 8 ++++---- src/routes/(app)/notes/+layout.svelte | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 629e8b7b3..53da2e80a 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -101,8 +101,8 @@ {$i18n.t(timeRange)}
- {#each notes[timeRange] as note, idx (note.id)} -
+
+ {#each notes[timeRange] as note, idx (note.id)}
@@ -141,8 +141,8 @@
-
- {/each} + {/each} +
{/each} {:else}
diff --git a/src/routes/(app)/notes/+layout.svelte b/src/routes/(app)/notes/+layout.svelte index 23a3ab72c..e2ebec71a 100644 --- a/src/routes/(app)/notes/+layout.svelte +++ b/src/routes/(app)/notes/+layout.svelte @@ -46,9 +46,9 @@
From 52d32e8bf222593918b6c707f13897ba23889917 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 21:02:21 +0400 Subject: [PATCH 189/238] refac: styling --- src/lib/components/notes/Notes.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 53da2e80a..6ebb8be63 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -162,7 +162,7 @@
+ + {/if} + + +
+
diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 6ebb8be63..2ff3503fb 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -95,68 +95,70 @@
- {#if Object.keys(notes).length > 0} - {#each Object.keys(notes) as timeRange} -
- {$i18n.t(timeRange)} -
+
+ {#if Object.keys(notes).length > 0} + {#each Object.keys(notes) as timeRange} +
+ {$i18n.t(timeRange)} +
-
- {#each notes[timeRange] as note, idx (note.id)} -
-
- -
-
{note.title}
-
- -
- {#if note.data?.content} - {note.data?.content} - {:else} - {$i18n.t('No content')} - {/if} -
- -
- - {/each} - {:else} -
-
-
- {$i18n.t('No Notes')} -
-
- {$i18n.t('Create your first note by clicking on the plus button below.')} +
+ {#if note.data?.content} + {note.data?.content} + {:else} + {$i18n.t('No content')} + {/if} +
+ +
+
+ {dayjs(note.updated_at / 1000000).fromNow()} +
+ +
+ {$i18n.t('By {{name}}', { + name: capitalizeFirstLetter( + note?.user?.name ?? note?.user?.email ?? $i18n.t('Deleted User') + ) + })} +
+
+
+ +
+
+ {/each} +
+ {/each} + {:else} +
+
+
+ {$i18n.t('No Notes')} +
+ +
+ {$i18n.t('Create your first note by clicking on the plus button below.')} +
-
- {/if} + {/if} +
diff --git a/src/routes/(app)/notes/+layout.svelte b/src/routes/(app)/notes/+layout.svelte index e2ebec71a..8b8792c94 100644 --- a/src/routes/(app)/notes/+layout.svelte +++ b/src/routes/(app)/notes/+layout.svelte @@ -85,7 +85,7 @@
-
+
diff --git a/src/routes/(app)/notes/[id]/+page.svelte b/src/routes/(app)/notes/[id]/+page.svelte index 262d8555a..737c0e00f 100644 --- a/src/routes/(app)/notes/[id]/+page.svelte +++ b/src/routes/(app)/notes/[id]/+page.svelte @@ -1,5 +1,6 @@ -{$page.params.id} + From 4acd278624f0005d5dd83a8b7b466ebbb34b72d6 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 22:53:23 +0400 Subject: [PATCH 191/238] refac --- .../components/channel/MessageInput.svelte | 6 +- src/lib/components/chat/MessageInput.svelte | 6 +- .../chat/MessageInput/VoiceRecording.svelte | 149 +++++++++------- .../components/common/RichTextInput.svelte | 164 +++++++++-------- src/lib/components/icons/Calendar.svelte | 19 ++ src/lib/components/icons/CalendarSolid.svelte | 11 ++ src/lib/components/icons/Users.svelte | 19 ++ src/lib/components/notes/NoteEditor.svelte | 167 ++++++++++++------ src/lib/components/notes/Notes.svelte | 39 ++-- src/lib/components/playground/Notes.svelte | 6 +- .../KnowledgeBase/AddTextContentModal.svelte | 6 +- 11 files changed, 370 insertions(+), 222 deletions(-) create mode 100644 src/lib/components/icons/Calendar.svelte create mode 100644 src/lib/components/icons/CalendarSolid.svelte create mode 100644 src/lib/components/icons/Users.svelte diff --git a/src/lib/components/channel/MessageInput.svelte b/src/lib/components/channel/MessageInput.svelte index 9f495a8de..d60851fc8 100644 --- a/src/lib/components/channel/MessageInput.svelte +++ b/src/lib/components/channel/MessageInput.svelte @@ -357,14 +357,14 @@ {#if recording} { + onCancel={async () => { recording = false; await tick(); document.getElementById(`chat-input-${id}`)?.focus(); }} - on:confirm={async (e) => { - const { text, filename } = e.detail; + onConfirm={async (data) => { + const { text, filename } = data; content = `${content}${text} `; recording = false; diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index d31861459..bcf28f61c 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -479,14 +479,14 @@ {#if recording} { + onCancel={async () => { recording = false; await tick(); document.getElementById('chat-input')?.focus(); }} - on:confirm={async (e) => { - const { text, filename } = e.detail; + onConfirm={async (data) => { + const { text, filename } = data; prompt = `${prompt}${text} `; recording = false; diff --git a/src/lib/components/chat/MessageInput/VoiceRecording.svelte b/src/lib/components/chat/MessageInput/VoiceRecording.svelte index 70472055f..726e26bbb 100644 --- a/src/lib/components/chat/MessageInput/VoiceRecording.svelte +++ b/src/lib/components/chat/MessageInput/VoiceRecording.svelte @@ -1,6 +1,6 @@
diff --git a/src/lib/components/icons/Calendar.svelte b/src/lib/components/icons/Calendar.svelte new file mode 100644 index 000000000..4406015fd --- /dev/null +++ b/src/lib/components/icons/Calendar.svelte @@ -0,0 +1,19 @@ + + + + + diff --git a/src/lib/components/icons/CalendarSolid.svelte b/src/lib/components/icons/CalendarSolid.svelte new file mode 100644 index 000000000..3f75fc91b --- /dev/null +++ b/src/lib/components/icons/CalendarSolid.svelte @@ -0,0 +1,11 @@ + + + + + diff --git a/src/lib/components/icons/Users.svelte b/src/lib/components/icons/Users.svelte new file mode 100644 index 000000000..9ef032dd7 --- /dev/null +++ b/src/lib/components/icons/Users.svelte @@ -0,0 +1,19 @@ + + + + + diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index c12511e04..3d2ebf837 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -3,26 +3,58 @@ const i18n = getContext('i18n'); import { toast } from 'svelte-sonner'; - import { getNoteById } from '$lib/apis/notes'; + + import { showSidebar } from '$lib/stores'; + import { goto } from '$app/navigation'; + + import dayjs from '$lib/dayjs'; + import calendar from 'dayjs/plugin/calendar'; + import duration from 'dayjs/plugin/duration'; + import relativeTime from 'dayjs/plugin/relativeTime'; + + dayjs.extend(calendar); + dayjs.extend(duration); + dayjs.extend(relativeTime); + + async function loadLocale(locales) { + for (const locale of locales) { + try { + dayjs.locale(locale); + break; // Stop after successfully loading the first available locale + } catch (error) { + console.error(`Could not load locale '${locale}':`, error); + } + } + } + + // Assuming $i18n.languages is an array of language codes + $: loadLocale($i18n.languages); + + import { getNoteById, updateNoteById } from '$lib/apis/notes'; import RichTextInput from '../common/RichTextInput.svelte'; import Spinner from '../common/Spinner.svelte'; - import Sparkles from '../icons/Sparkles.svelte'; - import SparklesSolid from '../icons/SparklesSolid.svelte'; import Mic from '../icons/Mic.svelte'; import VoiceRecording from '../chat/MessageInput/VoiceRecording.svelte'; import Tooltip from '../common/Tooltip.svelte'; - import { showSidebar } from '$lib/stores'; + + import Calendar from '../icons/Calendar.svelte'; + import Users from '../icons/Users.svelte'; export let id: null | string = null; - let title = ''; - let data = { - content: '', - files: [] + let note = { + title: '', + data: { + content: { + json: null, + html: '', + md: '' + } + }, + meta: null, + access_control: null }; - let meta = null; - let accessControl = null; let voiceInput = false; let loading = false; @@ -35,15 +67,38 @@ }); if (res) { - title = res.title; - data = res.data; - meta = res.meta; - accessControl = res.access_control; + note = res; + } else { + toast.error($i18n.t('Note not found')); + goto('/notes'); + return; } loading = false; }; + let debounceTimeout: NodeJS.Timeout | null = null; + + const changeDebounceHandler = () => { + console.log('debounce'); + if (debounceTimeout) { + clearTimeout(debounceTimeout); + } + + debounceTimeout = setTimeout(async () => { + const res = await updateNoteById(localStorage.token, id, { + ...note, + title: note.title === '' ? $i18n.t('Untitled') : note.title + }).catch((e) => { + toast.error(`${e}`); + }); + }, 200); + }; + + $: if (note) { + changeDebounceHandler(); + } + $: if (id) { init(); } @@ -56,35 +111,55 @@
- {/if} + {:else} +
+
+
+ +
+
-
-
-
- + + + +
+ +
+ { + note.data.html = content.html; + note.data.md = content.md; + }} />
- -
- -
-
+ {/if}
-
+
@@ -93,24 +168,12 @@ { + transcribe={false} + onCancel={() => { voiceInput = false; }} - on:confirm={(e) => { - const { text, filename } = e.detail; - - // url is hostname + /cache/audio/transcription/ + filename - const url = `${window.location.origin}/cache/audio/transcription/${filename}`; - - // Open in new tab - - if (content.trim() !== '') { - content = `${content}\n\n${text}\n\nRecording: ${url}\n\n`; - } else { - content = `${content}${text}\n\nRecording: ${url}\n\n`; - } - - voiceInput = false; + onConfirm={(data) => { + console.log(data); }} />
diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 2ff3503fb..fd8ff6b1b 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -58,7 +58,11 @@ const res = await createNewNote(localStorage.token, { title: $i18n.t('New Note'), data: { - content: '' + content: { + json: null, + html: '', + md: '' + } }, meta: null, access_control: null @@ -95,30 +99,37 @@
-
+
{#if Object.keys(notes).length > 0} {#each Object.keys(notes) as timeRange}
{$i18n.t(timeRange)}
-
+
{#each notes[timeRange] as note, idx (note.id)}
- -
-
{note.title}
-
+
+
+
+
{note.title}
+
-
- {#if note.data?.content} - {note.data?.content} - {:else} - {$i18n.t('No content')} - {/if} +
+ {#if note.data?.md} + {note.data?.md} + {:else} + {$i18n.t('No content')} + {/if} +
diff --git a/src/lib/components/playground/Notes.svelte b/src/lib/components/playground/Notes.svelte index 8e41e2cde..8db333e69 100644 --- a/src/lib/components/playground/Notes.svelte +++ b/src/lib/components/playground/Notes.svelte @@ -57,11 +57,11 @@ { + onCancel={() => { voiceInput = false; }} - on:confirm={(e) => { - const { text, filename } = e.detail; + onConfirm={(data) => { + const { text, filename } = data; // url is hostname + /cache/audio/transcription/ + filename const url = `${window.location.origin}/cache/audio/transcription/${filename}`; diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte index 3ada1c192..4762d5d97 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte @@ -85,11 +85,11 @@ { + onCancel={() => { voiceInput = false; }} - on:confirm={(e) => { - const { text, filename } = e.detail; + onConfirm={(data) => { + const { text, filename } = data; content = `${content}${text} `; voiceInput = false; From f43cb875566e3b127a8f5e4ac82721ba4d2a8f4e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 23:05:25 +0400 Subject: [PATCH 192/238] refac --- .../components/common/RichTextInput.svelte | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte index bfcc37860..2b506670a 100644 --- a/src/lib/components/common/RichTextInput.svelte +++ b/src/lib/components/common/RichTextInput.svelte @@ -387,9 +387,33 @@ selectTemplate(); } } else { - if (value !== editor.getHTML()) { - editor.commands.setContent(value); - selectTemplate(); + if (raw) { + if (value !== editor.getHTML()) { + editor.commands.setContent(value); + selectTemplate(); + } + } else { + if ( + value !== + turndownService + .turndown( + (preserveBreaks + ? editor.getHTML().replace(/

<\/p>/g, '
') + : editor.getHTML() + ).replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0')) + ) + .replace(/\u00a0/g, ' ') + ) { + preserveBreaks + ? editor.commands.setContent(value) + : editor.commands.setContent( + marked.parse(value.replaceAll(`\n
`, `
`), { + breaks: false + }) + ); // Update editor content + + selectTemplate(); + } } } }; From 116b61c53b0325b7e26c837a486f7336b7dadf11 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 23:06:46 +0400 Subject: [PATCH 193/238] refac --- src/lib/components/playground/Notes.svelte | 122 ------------------ .../(app)/playground/notes/+page.svelte | 5 - 2 files changed, 127 deletions(-) delete mode 100644 src/lib/components/playground/Notes.svelte delete mode 100644 src/routes/(app)/playground/notes/+page.svelte diff --git a/src/lib/components/playground/Notes.svelte b/src/lib/components/playground/Notes.svelte deleted file mode 100644 index 8db333e69..000000000 --- a/src/lib/components/playground/Notes.svelte +++ /dev/null @@ -1,122 +0,0 @@ - - -

- {#if loading} -
-
- -
-
- {/if} - -
-
-
- -
-
- -
- -
-
- -
-
- {#if voiceInput} -
- { - voiceInput = false; - }} - onConfirm={(data) => { - const { text, filename } = data; - - // url is hostname + /cache/audio/transcription/ + filename - const url = `${window.location.origin}/cache/audio/transcription/${filename}`; - - // Open in new tab - - if (content.trim() !== '') { - content = `${content}\n\n${text}\n\nRecording: ${url}\n\n`; - } else { - content = `${content}${text}\n\nRecording: ${url}\n\n`; - } - - voiceInput = false; - }} - /> -
- {:else} - - - - {/if} - - -
-
-
diff --git a/src/routes/(app)/playground/notes/+page.svelte b/src/routes/(app)/playground/notes/+page.svelte deleted file mode 100644 index 51a4bc517..000000000 --- a/src/routes/(app)/playground/notes/+page.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - From 23da63b06a779be0be614064b97161941bc32622 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 23:08:28 +0400 Subject: [PATCH 194/238] refac: styling --- src/lib/components/notes/Notes.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index fd8ff6b1b..4b460b2dc 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -99,14 +99,14 @@
-
+
{#if Object.keys(notes).length > 0} {#each Object.keys(notes) as timeRange} -
+
{$i18n.t(timeRange)}
-
+
{#each notes[timeRange] as note, idx (note.id)}
Date: Sat, 3 May 2025 23:29:19 +0400 Subject: [PATCH 195/238] enh: note files --- src/lib/components/common/Image.svelte | 48 +++- src/lib/components/notes/NoteEditor.svelte | 252 +++++++++++++++++++-- 2 files changed, 274 insertions(+), 26 deletions(-) diff --git a/src/lib/components/common/Image.svelte b/src/lib/components/common/Image.svelte index d1801c918..da97ec2c8 100644 --- a/src/lib/components/common/Image.svelte +++ b/src/lib/components/common/Image.svelte @@ -8,20 +8,48 @@ export let className = ' w-full outline-hidden focus:outline-hidden'; export let imageClassName = 'rounded-lg'; + export let dismissible = false; + export let onDismiss = () => {}; + let _src = ''; $: _src = src.startsWith('/') ? `${WEBUI_BASE_URL}${src}` : src; let showImagePreview = false; - - + +
+ + + {#if dismissible} +
+ +
+ {/if} +
diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 3d2ebf837..e00e843cc 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -1,12 +1,16 @@ -
+
{#if loading}
@@ -125,20 +309,54 @@
-
- + {dayjs(note.created_at / 1000000).calendar()} + - + You + +
+ + {#if note.data?.files} +
+ {#each note.data.files as file} +
+ {#if file.type === 'image'} + { + files = files.filter((item) => item?.id !== file.id); + note.data.files = files.length > 0 ? files : null; + }} + /> + {:else} + { + files = files.filter((item) => item?.id !== file.id); + note.data.files = files.length > 0 ? files : null; + }} + /> + {/if} +
+ {/each} +
+ {/if}
@@ -173,7 +391,9 @@ voiceInput = false; }} onConfirm={(data) => { - console.log(data); + if (data?.file) { + uploadFileHandler(data?.file); + } }} />
From 0f14f34dbe65af71cca0faeea86d65922445df30 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 23:47:41 +0400 Subject: [PATCH 196/238] refac --- src/lib/components/AddFilesPlaceholder.svelte | 2 +- src/lib/components/notes/NoteEditor.svelte | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/lib/components/AddFilesPlaceholder.svelte b/src/lib/components/AddFilesPlaceholder.svelte index d3d700795..6d72ee0e6 100644 --- a/src/lib/components/AddFilesPlaceholder.svelte +++ b/src/lib/components/AddFilesPlaceholder.svelte @@ -21,7 +21,7 @@ {#if content} {content} {:else} - {$i18n.t('Drop any files here to add to the conversation')} + {$i18n.t('Drop any files here to upload')} {/if}
diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index e00e843cc..067715e50 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -48,6 +48,7 @@ import { uploadFile } from '$lib/apis/files'; import Image from '../common/Image.svelte'; import FileItem from '../common/FileItem.svelte'; + import FilesOverlay from '../chat/MessageInput/FilesOverlay.svelte'; export let id: null | string = null; @@ -288,6 +289,8 @@ }); + +
{#if loading}
@@ -297,7 +300,7 @@
{:else}
-
+
-
+
+
+
{#if note.data?.files} -
- {#each note.data.files as file} -
+
+ {#each note.data.files as file, fileIdx} +
{#if file.type === 'image'} { - files = files.filter((item) => item?.id !== file.id); + files = files.filter((item, idx) => idx !== fileIdx); note.data.files = files.length > 0 ? files : null; }} /> @@ -357,11 +362,9 @@ {/each}
{/if} -
-
Date: Sat, 3 May 2025 23:48:12 +0400 Subject: [PATCH 197/238] chore: format --- .../components/admin/Settings/Audio.svelte | 12 +-- .../admin/Settings/Documents.svelte | 10 ++- src/lib/i18n/locales/ar-BH/translation.json | 21 ++++- src/lib/i18n/locales/ar/translation.json | 21 ++++- src/lib/i18n/locales/bg-BG/translation.json | 21 ++++- src/lib/i18n/locales/bn-BD/translation.json | 21 ++++- src/lib/i18n/locales/bo-TB/translation.json | 21 ++++- src/lib/i18n/locales/ca-ES/translation.json | 21 ++++- src/lib/i18n/locales/ceb-PH/translation.json | 21 ++++- src/lib/i18n/locales/cs-CZ/translation.json | 21 ++++- src/lib/i18n/locales/da-DK/translation.json | 21 ++++- src/lib/i18n/locales/de-DE/translation.json | 21 ++++- src/lib/i18n/locales/dg-DG/translation.json | 21 ++++- src/lib/i18n/locales/el-GR/translation.json | 21 ++++- src/lib/i18n/locales/en-GB/translation.json | 21 ++++- src/lib/i18n/locales/en-US/translation.json | 21 ++++- src/lib/i18n/locales/es-ES/translation.json | 21 ++++- src/lib/i18n/locales/et-EE/translation.json | 21 ++++- src/lib/i18n/locales/eu-ES/translation.json | 21 ++++- src/lib/i18n/locales/fa-IR/translation.json | 21 ++++- src/lib/i18n/locales/fi-FI/translation.json | 21 ++++- src/lib/i18n/locales/fr-CA/translation.json | 21 ++++- src/lib/i18n/locales/fr-FR/translation.json | 24 +++++- src/lib/i18n/locales/he-IL/translation.json | 21 ++++- src/lib/i18n/locales/hi-IN/translation.json | 21 ++++- src/lib/i18n/locales/hr-HR/translation.json | 21 ++++- src/lib/i18n/locales/hu-HU/translation.json | 21 ++++- src/lib/i18n/locales/id-ID/translation.json | 21 ++++- src/lib/i18n/locales/ie-GA/translation.json | 21 ++++- src/lib/i18n/locales/it-IT/translation.json | 21 ++++- src/lib/i18n/locales/ja-JP/translation.json | 21 ++++- src/lib/i18n/locales/ka-GE/translation.json | 21 ++++- src/lib/i18n/locales/ko-KR/translation.json | 21 ++++- src/lib/i18n/locales/lt-LT/translation.json | 21 ++++- src/lib/i18n/locales/ms-MY/translation.json | 21 ++++- src/lib/i18n/locales/nb-NO/translation.json | 21 ++++- src/lib/i18n/locales/nl-NL/translation.json | 21 ++++- src/lib/i18n/locales/pa-IN/translation.json | 21 ++++- src/lib/i18n/locales/pl-PL/translation.json | 21 ++++- src/lib/i18n/locales/pt-BR/translation.json | 21 ++++- src/lib/i18n/locales/pt-PT/translation.json | 21 ++++- src/lib/i18n/locales/ro-RO/translation.json | 21 ++++- src/lib/i18n/locales/ru-RU/translation.json | 21 ++++- src/lib/i18n/locales/sk-SK/translation.json | 21 ++++- src/lib/i18n/locales/sr-RS/translation.json | 21 ++++- src/lib/i18n/locales/sv-SE/translation.json | 21 ++++- src/lib/i18n/locales/th-TH/translation.json | 21 ++++- src/lib/i18n/locales/tk-TW/translation.json | 21 ++++- src/lib/i18n/locales/tr-TR/translation.json | 21 ++++- src/lib/i18n/locales/uk-UA/translation.json | 21 ++++- src/lib/i18n/locales/ur-PK/translation.json | 21 ++++- src/lib/i18n/locales/vi-VN/translation.json | 21 ++++- src/lib/i18n/locales/zh-CN/translation.json | 21 ++++- src/lib/i18n/locales/zh-TW/translation.json | 21 ++++- src/lib/utils/websocket.ts | 79 +++++++++---------- 55 files changed, 1092 insertions(+), 104 deletions(-) diff --git a/src/lib/components/admin/Settings/Audio.svelte b/src/lib/components/admin/Settings/Audio.svelte index 29c3569b5..070ed9b69 100644 --- a/src/lib/components/admin/Settings/Audio.svelte +++ b/src/lib/components/admin/Settings/Audio.svelte @@ -43,7 +43,7 @@ let STT_AZURE_REGION = ''; let STT_AZURE_LOCALES = ''; let STT_AZURE_BASE_URL = ''; - let STT_AZURE_MAX_SPEAKERS = ''; + let STT_AZURE_MAX_SPEAKERS = ''; let STT_DEEPGRAM_API_KEY = ''; let STT_WHISPER_MODEL_LOADING = false; @@ -293,9 +293,9 @@ />
-
- -
+
+ +
{$i18n.t('Base URL')}
@@ -307,8 +307,8 @@
- -
+ +
{$i18n.t('Max Speakers')}
diff --git a/src/lib/components/admin/Settings/Documents.svelte b/src/lib/components/admin/Settings/Documents.svelte index ed314e658..b54404f79 100644 --- a/src/lib/components/admin/Settings/Documents.svelte +++ b/src/lib/components/admin/Settings/Documents.svelte @@ -161,10 +161,14 @@ toast.error($i18n.t('Docling Server URL required.')); return; } - if (RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling' && + if ( + RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling' && ((RAGConfig.DOCLING_OCR_ENGINE === '' && RAGConfig.DOCLING_OCR_LANG !== '') || - (RAGConfig.DOCLING_OCR_ENGINE !== '' && RAGConfig.DOCLING_OCR_LANG === ''))) { - toast.error($i18n.t('Both Docling OCR Engine and Language(s) must be provided or both left empty.')); + (RAGConfig.DOCLING_OCR_ENGINE !== '' && RAGConfig.DOCLING_OCR_LANG === '')) + ) { + toast.error( + $i18n.t('Both Docling OCR Engine and Language(s) must be provided or both left empty.') + ); return; } diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 76e41c76c..d75f5216b 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "( `sh webui.sh --api`مثال)", "(latest)": "(الأخير)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ نماذج }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "استجابة خطاء", "Banners": "لافتات", "Base Model (From)": "النموذج الأساسي (من)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "قبل", "Being lazy": "كون كسول", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "مفتاح واجهة برمجة تطبيقات البحث الشجاع", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "عمل مفتاح جديد", "Create new secret key": "عمل سر جديد", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "أنشئت في", "Created At": "أنشئت من", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "أحذف هذا الرابط", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "تحميل قاعدة البيانات", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "e.g. '30s','10m'. الوحدات الزمنية الصالحة هي 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "تعديل", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "أدخل Chunk الحجم", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "عام", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "استيراد النماذج", + "Import Notes": "", "Import Presets": "", "Import Prompts": "مطالبات الاستيراد", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "إدارة خطوط الأنابيب", "Manage Tool Servers": "", "March": "مارس", + "Max Speakers": "", "Max Tokens (num_predict)": "ماكس توكنز (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "دردشة جديدة", "New Folder": "", + "New Note": "", "New Password": "كلمة المرور الجديدة", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "لا توجد نتايج", "No search query generated": "لم يتم إنشاء استعلام بحث", "No source available": "لا يوجد مصدر متاح", @@ -801,6 +816,7 @@ "None": "اي", "Not factually correct": "ليس صحيحا من حيث الواقع", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "أقراء لي", "Reasoning Effort": "", + "Record": "", "Record voice": "سجل صوت", "Redirecting you to Open WebUI Community": "OpenWebUI إعادة توجيهك إلى مجتمع ", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "عنوان URL لاستعلام Searxng", "See readme.md for instructions": "readme.md للحصول على التعليمات", "See what's new": "ما الجديد", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "تحديث ونسخ الرابط", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json index 6db3de4e0..373a4d0c1 100644 --- a/src/lib/i18n/locales/ar/translation.json +++ b/src/lib/i18n/locales/ar/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(مثال: `sh webui.sh --api --api-auth اسم_المستخدم_كلمة_المرور`)", "(e.g. `sh webui.sh --api`)": "(مثال: تشغيل الأمر: `sh webui.sh --api`)", "(latest)": "(أحدث)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "النماذج: {{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "رد سيئ", "Banners": "لافتات", "Base Model (From)": "النموذج الأساسي (من)", + "Base URL": "", "Batch Size (num_batch)": "حجم الدفعة (num_batch)", "before": "قبل", "Being lazy": "كونك كسولاً", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "مفتاح اشتراك Bing Search V7", "Bocha Search API Key": "مفتاح API لـ Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "تعزيز أو معاقبة رموز محددة لردود مقيدة. ستتراوح قيم التحيز بين -100 و100 (شاملة). (افتراضي: لا شيء)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "مفتاح API لـ Brave Search", "By {{name}}": "بواسطة {{name}}", "Bypass Embedding and Retrieval": "تجاوز التضمين والاسترجاع", @@ -265,6 +268,8 @@ "Create Knowledge": "إنشاء معرفة", "Create new key": "إنشاء مفتاح جديد", "Create new secret key": "إنشاء مفتاح سري جديد", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "تم الإنشاء في", "Created At": "تاريخ الإنشاء", "Created by": "تم الإنشاء بواسطة", @@ -302,6 +307,7 @@ "Delete function?": "هل تريد حذف الوظيفة؟", "Delete Message": "حذف الرسالة", "Delete message?": "هل تريد حذف الرسالة؟", + "Delete note?": "", "Delete prompt?": "هل تريد حذف الموجه؟", "delete this link": "أحذف هذا الرابط", "Delete tool?": "هل تريد حذف الأداة؟", @@ -357,7 +363,7 @@ "Download Database": "تحميل قاعدة البيانات", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "e.g. '30s','10m'. الوحدات الزمنية الصالحة هي 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "مثال: 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "مثال: my_filter", "e.g. my_tools": "مثال: my_tools", "e.g. Tools for performing various operations": "مثال: أدوات لتنفيذ عمليات متنوعة", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "تعديل", "Edit Arena Model": "تعديل نموذج Arena", @@ -412,6 +419,8 @@ "Enter Chunk Size": "أدخل Chunk الحجم", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "أدخل أزواج \"الرمز:قيمة التحيز\" مفصولة بفواصل (مثال: 5432:100، 413:-100)", "Enter description": "أدخل الوصف", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "أدخل نقطة نهاية تحليل المستندات", "Enter Document Intelligence Key": "أدخل مفتاح تحليل المستندات", @@ -587,6 +596,7 @@ "Gemini API Config": "إعدادات واجهة Gemini API", "Gemini API Key is required.": "مفتاح Gemini API مطلوب.", "General": "عام", + "Generate": "", "Generate an image": "توليد صورة", "Generate Image": "توليد صورة", "Generate prompt pair": "توليد زوج من التعليمات", @@ -637,6 +647,7 @@ "Import Config from JSON File": "استيراد الإعدادات من ملف JSON", "Import Functions": "استيراد الوظائف", "Import Models": "استيراد النماذج", + "Import Notes": "", "Import Presets": "استيراد الإعدادات المسبقة", "Import Prompts": "مطالبات الاستيراد", "Import Tools": "استيراد الأدوات", @@ -721,6 +732,7 @@ "Manage Pipelines": "إدارة خطوط الأنابيب", "Manage Tool Servers": "", "March": "مارس", + "Max Speakers": "", "Max Tokens (num_predict)": "ماكس توكنز (num_predict)", "Max Upload Count": "الحد الأقصى لعدد التحميلات", "Max Upload Size": "الحد الأقصى لحجم الملف المرفوع", @@ -777,8 +789,10 @@ "Native": "أصلي", "New Chat": "دردشة جديدة", "New Folder": "مجلد جديد", + "New Note": "", "New Password": "كلمة المرور الجديدة", "new-channel": "قناة جديدة", + "No content": "", "No content found": "لم يتم العثور على محتوى", "No content found in file.": "", "No content to speak": "لا يوجد محتوى للتحدث عنه", @@ -793,6 +807,7 @@ "No model IDs": "لا توجد معرّفات نماذج", "No models found": "لم يتم العثور على نماذج", "No models selected": "لم يتم اختيار نماذج", + "No Notes": "", "No results found": "لا توجد نتايج", "No search query generated": "لم يتم إنشاء استعلام بحث", "No source available": "لا يوجد مصدر متاح", @@ -801,6 +816,7 @@ "None": "اي", "Not factually correct": "ليس صحيحا من حيث الواقع", "Not helpful": "غير مفيد", + "Note not found": "", "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": "ملاحظات", "Notification Sound": "صوت الإشعارات", @@ -910,6 +926,7 @@ "Read": "قراءة", "Read Aloud": "أقراء لي", "Reasoning Effort": "جهد الاستدلال", + "Record": "", "Record voice": "سجل صوت", "Redirecting you to Open WebUI Community": "OpenWebUI إعادة توجيهك إلى مجتمع ", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "يقلل من احتمال توليد إجابات غير منطقية. القيم الأعلى (مثل 100) تعطي إجابات أكثر تنوعًا، بينما القيم الأدنى (مثل 10) تكون أكثر تحفظًا.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "تم البحث في {{count}} مواقع", "Searching \"{{searchQuery}}\"": "جارٍ البحث عن \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "جارٍ البحث في المعرفة عن \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "عنوان URL لاستعلام Searxng", "See readme.md for instructions": "readme.md للحصول على التعليمات", "See what's new": "ما الجديد", @@ -1181,6 +1199,7 @@ "Unpin": "إزالة التثبيت", "Unravel secrets": "فكّ الأسرار", "Untagged": "بدون وسوم", + "Untitled": "", "Update": "تحديث", "Update and Copy Link": "تحديث ونسخ الرابط", "Update for the latest features and improvements.": "حدّث للحصول على أحدث الميزات والتحسينات.", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 598df508e..7ba5d0d7b 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(напр. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(напр. `sh webui.sh --api`)", "(latest)": "(последна)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Невалиден отговор от API", "Banners": "Банери", "Base Model (From)": "Базов модел (от)", + "Base URL": "", "Batch Size (num_batch)": "Размер на партидата (num_batch)", "before": "преди", "Being lazy": "Да бъдеш мързелив", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Абонаментен ключ за Bing Search V7", "Bocha Search API Key": "API ключ за Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "API ключ за Brave Search", "By {{name}}": "От {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Създаване на знания", "Create new key": "Създаване на нов ключ", "Create new secret key": "Създаване на нов секретен ключ", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Създадено на", "Created At": "Създадено на", "Created by": "Създадено от", @@ -302,6 +307,7 @@ "Delete function?": "Изтриване на функцията?", "Delete Message": "Изтриване на съобщение", "Delete message?": "Изтриване на съобщението?", + "Delete note?": "", "Delete prompt?": "Изтриване на промпта?", "delete this link": "Изтриване на този линк", "Delete tool?": "Изтриване на инструмента?", @@ -357,7 +363,7 @@ "Download Database": "Сваляне на база данни", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр. '30с','10м'. Валидни единици са 'с', 'м', 'ч'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "напр. моят_филтър", "e.g. my_tools": "напр. моите_инструменти", "e.g. Tools for performing various operations": "напр. Инструменти за извършване на различни операции", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Редактиране", "Edit Arena Model": "Редактиране на Arena модел", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Въведете размер на чънк", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Въведете описание", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Основни", + "Generate": "", "Generate an image": "Генериране на изображение", "Generate Image": "Генериране на изображение", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Импортиране на конфигурация от JSON файл", "Import Functions": "Импортиране на функции", "Import Models": "Импортиране на модели", + "Import Notes": "", "Import Presets": "Импортиране на предварителни настройки", "Import Prompts": "Импортване на промптове", "Import Tools": "Импортиране на инструменти", @@ -721,6 +732,7 @@ "Manage Pipelines": "Управление на пайплайни", "Manage Tool Servers": "", "March": "Март", + "Max Speakers": "", "Max Tokens (num_predict)": "Макс токени (num_predict)", "Max Upload Count": "Максимален брой качвания", "Max Upload Size": "Максимален размер на качване", @@ -777,8 +789,10 @@ "Native": "Нативен", "New Chat": "Нов чат", "New Folder": "Нова папка", + "New Note": "", "New Password": "Нова парола", "new-channel": "нов-канал", + "No content": "", "No content found": "Не е намерено съдържание", "No content found in file.": "", "No content to speak": "Няма съдържание за изговаряне", @@ -793,6 +807,7 @@ "No model IDs": "Няма ИД-та на модели", "No models found": "Не са намерени модели", "No models selected": "Няма избрани модели", + "No Notes": "", "No results found": "Няма намерени резултати", "No search query generated": "Не е генерирана заявка за търсене", "No source available": "Няма наличен източник", @@ -801,6 +816,7 @@ "None": "Никой", "Not factually correct": "Не е фактологически правилно", "Not helpful": "Не е полезно", + "Note not found": "", "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": "Бележки", "Notification Sound": "Звук за известия", @@ -910,6 +926,7 @@ "Read": "Четене", "Read Aloud": "Прочети на глас", "Reasoning Effort": "Усилие за разсъждение", + "Record": "", "Record voice": "Записване на глас", "Redirecting you to Open WebUI Community": "Пренасочване към OpenWebUI общността", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Претърсени {{count}} сайта", "Searching \"{{searchQuery}}\"": "Търсене на \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Търсене в знанията за \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "URL адрес на заявка на Searxng", "See readme.md for instructions": "Виж readme.md за инструкции", "See what's new": "Виж какво е новото", @@ -1181,6 +1199,7 @@ "Unpin": "Откачи", "Unravel secrets": "Разгадай тайни", "Untagged": "Без етикет", + "Untitled": "", "Update": "Актуализиране", "Update and Copy Link": "Обнови и копирай връзка", "Update for the latest features and improvements.": "Актуализирайте за най-новите функции и подобрения.", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index 6ec232952..d046b97cf 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(যেমন `sh webui.sh --api`)", "(latest)": "(সর্বশেষ)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ মডেল}}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "খারাপ প্রতিক্রিয়া", "Banners": "ব্যানার", "Base Model (From)": "বেস মডেল (থেকে)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "পূর্ববর্তী", "Being lazy": "অলস হওয়া", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "সাহসী অনুসন্ধান API কী", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "একটি নতুন কী তৈরি করুন", "Create new secret key": "একটি নতুন সিক্রেট কী তৈরি করুন", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "নির্মানকাল", "Created At": "নির্মানকাল", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "এই লিংক মুছে ফেলুন", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "ডেটাবেজ ডাউনলোড করুন", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "যেমন '30s','10m'. সময়ের অনুমোদিত অনুমোদিত এককগুলি হচ্ছে 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "এডিট করুন", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "চাংক সাইজ লিখুন", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "সাধারণ", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "মডেল আমদানি করুন", + "Import Notes": "", "Import Presets": "", "Import Prompts": "প্রম্পটগুলো ইমপোর্ট করুন", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "পাইপলাইন পরিচালনা করুন", "Manage Tool Servers": "", "March": "মার্চ", + "Max Speakers": "", "Max Tokens (num_predict)": "সর্বোচ্চ টোকেন (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "নতুন চ্যাট", "New Folder": "", + "New Note": "", "New Password": "নতুন পাসওয়ার্ড", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "কোন ফলাফল পাওয়া যায়নি", "No search query generated": "কোনও অনুসন্ধান ক্যোয়ারী উত্পন্ন হয়নি", "No source available": "কোন উৎস পাওয়া যায়নি", @@ -801,6 +816,7 @@ "None": "কোনোটিই নয়", "Not factually correct": "তথ্যগত দিক থেকে সঠিক নয়", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "পড়াশোনা করুন", "Reasoning Effort": "", + "Record": "", "Record voice": "ভয়েস রেকর্ড করুন", "Redirecting you to Open WebUI Community": "আপনাকে OpenWebUI কমিউনিটিতে পাঠানো হচ্ছে", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng ক্যোয়ারী URL", "See readme.md for instructions": "নির্দেশিকার জন্য readme.md দেখুন", "See what's new": "নতুন কী আছে দেখুন", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "আপডেট এবং লিংক কপি করুন", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json index ff82f2b56..353c41a4a 100644 --- a/src/lib/i18n/locales/bo-TB/translation.json +++ b/src/lib/i18n/locales/bo-TB/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(དཔེར་ན། `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(དཔེར་ན། `sh webui.sh --api`)", "(latest)": "(ཆེས་གསར།)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "ལན་ངན་པ།", "Banners": "དར་ཆ།", "Base Model (From)": "གཞི་རྩའི་དཔེ་དབྱིབས། (ནས།)", + "Base URL": "", "Batch Size (num_batch)": "ཚན་ཆུང་ཆེ་ཆུང་། (num_batch)", "before": "སྔོན།", "Being lazy": "ལེ་ལོ་བྱེད་པ།", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Search V7 མངགས་ཉོ་ལྡེ་མིག", "Bocha Search API Key": "Bocha Search API ལྡེ་མིག", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "ཚད་བཀག་ལན་གྱི་ཆེད་དུ་ཊོཀ་ཀེན་ངེས་ཅན་ལ་ཤུགས་སྣོན་ནམ་ཉེས་ཆད་གཏོང་བ། ཕྱོགས་ཞེན་གྱི་རིན་ཐང་ -100 ནས་ 100 བར་བཙིར་ངེས། (ཚུད་པ།) (སྔོན་སྒྲིག་མེད།)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API ལྡེ་མིག", "By {{name}}": "{{name}} ཡིས།", "Bypass Embedding and Retrieval": "ཚུད་འཇུག་དང་ལེན་ཚུར་སྒྲུབ་ལས་བརྒལ་བ།", @@ -265,6 +268,8 @@ "Create Knowledge": "ཤེས་བྱ་གསར་བཟོ།", "Create new key": "ལྡེ་མིག་གསར་པ་བཟོ་བ།", "Create new secret key": "གསང་བའི་ལྡེ་མིག་གསར་པ་བཟོ་བ།", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "གསར་བཟོ་བྱེད་དུས།", "Created At": "གསར་བཟོ་བྱེད་དུས།", "Created by": "གསར་བཟོ་བྱེད་མཁན།", @@ -302,6 +307,7 @@ "Delete function?": "ལས་འགན་བསུབ་པ།?", "Delete Message": "འཕྲིན་བསུབ་པ།", "Delete message?": "འཕྲིན་བསུབ་པ།?", + "Delete note?": "", "Delete prompt?": "འགུལ་སློང་བསུབ་པ།?", "delete this link": "སྦྲེལ་ཐག་འདི་བསུབ་པ།", "Delete tool?": "ལག་ཆ་བསུབ་པ།?", @@ -357,7 +363,7 @@ "Download Database": "གནས་ཚུལ་མཛོད་ཕབ་ལེན།", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "དཔེར་ན། '30s','10m'. ནུས་ལྡན་དུས་ཚོད་ཀྱི་ཚན་པ་ནི། 's', 'm', 'h' ཡིན།", "e.g. \"json\" or a JSON schema": "དཔེར་ན། \"json\" ཡང་ན་ JSON གི་ schema", "e.g. 60": "དཔེར་ན། ༦༠", @@ -367,6 +373,7 @@ "e.g. my_filter": "དཔེར་ན། my_filter", "e.g. my_tools": "དཔེར་ན། my_tools", "e.g. Tools for performing various operations": "དཔེར་ན། ལས་ཀ་སྣ་ཚོགས་སྒྲུབ་བྱེད་ཀྱི་ལག་ཆ།", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "ཞུ་དག", "Edit Arena Model": "Arena དཔེ་དབྱིབས་ཞུ་དག", @@ -412,6 +419,8 @@ "Enter Chunk Size": "དུམ་བུའི་ཆེ་ཆུང་འཇུག་པ།", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "ཚེག་བསྐུངས་ཀྱིས་ལོགས་སུ་བཀར་བའི་ \"ཊོཀ་ཀེན།:ཕྱོགས་ཞེན་རིན་ཐང་།\" ཆ་འཇུག་པ། (དཔེར། 5432:100, 413:-100)", "Enter description": "འགྲེལ་བཤད་འཇུག་པ།", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Docling སར་བར་གྱི་ URL འཇུག་པ།", "Enter Document Intelligence Endpoint": "ཡིག་ཆའི་རིག་ནུས་མཇུག་མཐུད་འཇུག་པ།", "Enter Document Intelligence Key": "ཡིག་ཆའི་རིག་ནུས་ལྡེ་མིག་འཇུག་པ།", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API Config", "Gemini API Key is required.": "Gemini API ལྡེ་མིག་དགོས་ངེས།", "General": "སྤྱིར་བཏང་།", + "Generate": "", "Generate an image": "པར་ཞིག་བཟོ་བ།", "Generate Image": "པར་བཟོ་བ།", "Generate prompt pair": "འགུལ་སློང་ཆ་ཞིག་བཟོ་བ།", @@ -637,6 +647,7 @@ "Import Config from JSON File": "JSON ཡིག་ཆ་ནས་སྒྲིག་འགོད་ནང་འདྲེན།", "Import Functions": "ལས་འགན་ནང་འདྲེན།", "Import Models": "དཔེ་དབྱིབས་ནང་འདྲེན།", + "Import Notes": "", "Import Presets": "སྔོན་སྒྲིག་ནང་འདྲེན།", "Import Prompts": "འགུལ་སློང་ནང་འདྲེན།", "Import Tools": "ལག་ཆ་ནང་འདྲེན།", @@ -721,6 +732,7 @@ "Manage Pipelines": "རྒྱུ་ལམ་དོ་དམ།", "Manage Tool Servers": "ལག་ཆའི་སར་བར་དོ་དམ།", "March": "ཟླ་བ་གསུམ་པ།", + "Max Speakers": "", "Max Tokens (num_predict)": "ཊོཀ་ཀེན་མང་ཤོས། (num_predict)", "Max Upload Count": "སྤར་བའི་གྲངས་མང་ཤོས།", "Max Upload Size": "སྤར་བའི་ཆེ་ཆུང་མང་ཤོས།", @@ -777,8 +789,10 @@ "Native": "ས་སྐྱེས།", "New Chat": "ཁ་བརྡ་གསར་པ།", "New Folder": "ཡིག་སྣོད་གསར་པ།", + "New Note": "", "New Password": "གསང་གྲངས་གསར་པ།", "new-channel": "བགྲོ་གླེང་གསར་པ།", + "No content": "", "No content found": "ནང་དོན་མ་རྙེད།", "No content found in file.": "", "No content to speak": "བཤད་རྒྱུའི་ནང་དོན་མེད།", @@ -793,6 +807,7 @@ "No model IDs": "དཔེ་དབྱིབས་ཀྱི་ ID མེད།", "No models found": "དཔེ་དབྱིབས་མ་རྙེད།", "No models selected": "དཔེ་དབྱིབས་གདམ་ག་མ་བྱས།", + "No Notes": "", "No results found": "འབྲས་བུ་མ་རྙེད།", "No search query generated": "འཚོལ་བཤེར་འདྲི་བ་བཟོས་མེད།", "No source available": "འབྱུང་ཁུངས་མེད།", @@ -801,6 +816,7 @@ "None": "གཅིག་ཀྱང་མེད།", "Not factually correct": "དོན་དངོས་དང་མི་མཐུན།", "Not helpful": "ཕན་ཐོགས་མེད།", + "Note not found": "", "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": "མཆན་བུ།", "Notification Sound": "བརྡ་ཁྱབ་ཀྱི་སྒྲ།", @@ -910,6 +926,7 @@ "Read": "ཀློག་པ།", "Read Aloud": "སྐད་གསལ་པོས་ཀློག་པ།", "Reasoning Effort": "རྒྱུ་མཚན་འདྲེན་པའི་འབད་བརྩོན།", + "Record": "", "Record voice": "སྐད་སྒྲ་ཕབ་པ།", "Redirecting you to Open WebUI Community": "ཁྱེད་ Open WebUI སྤྱི་ཚོགས་ལ་ཁ་ཕྱོགས་སྒྱུར་བཞིན་པ།", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "དོན་མེད་བཟོ་བའི་ཆགས་ཚུལ་ཉུང་དུ་གཏོང་བ། རིན་ཐང་མཐོ་བ་ (དཔེར་ན། ༡༠༠) ཡིས་ལན་སྣ་ཚོགས་ཆེ་བ་སྤྲོད་ངེས། དེ་བཞིན་དུ་རིན་ཐང་དམའ་བ་ (དཔེར་ན། ༡༠) ཡིས་སྲུང་འཛིན་ཆེ་བ་ཡོང་ངེས།", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "དྲ་ཚིགས་ {{count}} འཚོལ་བཤེར་བྱས།", "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" འཚོལ་བཞིན་པ།", "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\" ཆེད་དུ་ཤེས་བྱ་འཚོལ་བཞིན་པ།", + "Searching the web...": "", "Searxng Query URL": "Searxng Query URL", "See readme.md for instructions": "ལམ་སྟོན་ཆེད་དུ་ readme.md ལ་ལྟ་བ།", "See what's new": "གསར་པ་ཅི་ཡོད་ལྟ་བ།", @@ -1181,6 +1199,7 @@ "Unpin": "ཕྱིར་འདོན།", "Unravel secrets": "གསང་བ་གྲོལ་བ།", "Untagged": "རྟགས་མེད།", + "Untitled": "", "Update": "གསར་སྒྱུར།", "Update and Copy Link": "གསར་སྒྱུར་དང་སྦྲེལ་ཐག་འདྲ་བཤུས།", "Update for the latest features and improvements.": "ཁྱད་ཆོས་དང་ལེགས་བཅོས་གསར་ཤོས་ཀྱི་ཆེད་དུ་གསར་སྒྱུར་བྱེད་པ།", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 036597227..89a2348d8 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -4,6 +4,7 @@ "(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`)", "(latest)": "(últim)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} eines disponibles", @@ -138,6 +139,7 @@ "Bad Response": "Resposta errònia", "Banners": "Banners", "Base Model (From)": "Model base (des de)", + "Base URL": "", "Batch Size (num_batch)": "Mida del lot (num_batch)", "before": "abans", "Being lazy": "Essent mandrós", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Clau de subscripció a Bing Search V7", "Bocha Search API Key": "Clau API de Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Potenciar o penalitzar tokens específics per a respostes limitades. Els valors de biaix es fixaran entre -100 i 100 (inclosos). (Per defecte: cap)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Clau API de Brave Search", "By {{name}}": "Per {{name}}", "Bypass Embedding and Retrieval": "Desactivar l'Embedding i el Retrieval", @@ -265,6 +268,8 @@ "Create Knowledge": "Crear Coneixement", "Create new key": "Crear una nova clau", "Create new secret key": "Crear una nova clau secreta", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Creat el", "Created At": "Creat el", "Created by": "Creat per", @@ -302,6 +307,7 @@ "Delete function?": "Eliminar funció?", "Delete Message": "Eleiminar el missatge", "Delete message?": "Eliminar el missatge?", + "Delete note?": "", "Delete prompt?": "Eliminar indicació?", "delete this link": "Eliminar aquest enllaç", "Delete tool?": "Eliminar eina?", @@ -357,7 +363,7 @@ "Download Database": "Descarregar la base de dades", "Drag and drop a file to upload or select a file to view": "Arrossegar un arxiu per pujar o escull un arxiu a veure", "Draw": "Dibuixar", - "Drop any files here to add to the conversation": "Deixa qualsevol arxiu aquí per afegir-lo a la conversa", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p. ex. '30s','10m'. Les unitats de temps vàlides són 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "p. ex. \"json\" o un esquema JSON", "e.g. 60": "p. ex. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "p. ex. els_meus_filtres", "e.g. my_tools": "p. ex. les_meves_eines", "e.g. Tools for performing various operations": "p. ex. Eines per dur a terme operacions", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "p. ex. en-US, ja-JP, ca-ES (deixa-ho en blanc per detecció automàtica)", "Edit": "Editar", "Edit Arena Model": "Editar model de l'Arena", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Introdueix la mida del bloc", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Introdueix parelles de \"token:valor de biaix\" separats per comes (exemple: 5432:100, 413:-100)", "Enter description": "Introdueix la descripció", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Introdueix la URL del servidor Docling", "Enter Document Intelligence Endpoint": "Introdueix el punt de connexió de Document Intelligence", "Enter Document Intelligence Key": "Introdueix la clau de Document Intelligence", @@ -587,6 +596,7 @@ "Gemini API Config": "Configuració de Gemini API", "Gemini API Key is required.": "La clau API de Gemini és necessària", "General": "General", + "Generate": "", "Generate an image": "Generar una imatge", "Generate Image": "Generar imatge", "Generate prompt pair": "Generar parella d'indicació", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importar la configuració des d'un arxiu JSON", "Import Functions": "Importar funcions", "Import Models": "Importar models", + "Import Notes": "", "Import Presets": "Importar configuracions", "Import Prompts": "Importar indicacions", "Import Tools": "Importar eines", @@ -721,6 +732,7 @@ "Manage Pipelines": "Gestionar les Pipelines", "Manage Tool Servers": "Gestionar els servidors d'eines", "March": "Març", + "Max Speakers": "", "Max Tokens (num_predict)": "Nombre màxim de Tokens (num_predict)", "Max Upload Count": "Nombre màxim de càrregues", "Max Upload Size": "Mida màxima de càrrega", @@ -777,8 +789,10 @@ "Native": "Natiu", "New Chat": "Nou xat", "New Folder": "Nova carpeta", + "New Note": "", "New Password": "Nova contrasenya", "new-channel": "nou-canal", + "No content": "", "No content found": "No s'ha trobat contingut", "No content found in file.": "No s'ha trobat contingut en el fitxer.", "No content to speak": "No hi ha contingut per parlar", @@ -793,6 +807,7 @@ "No model IDs": "No hi ha IDs de model", "No models found": "No s'han trobat models", "No models selected": "No s'ha seleccionat cap model", + "No Notes": "", "No results found": "No s'han trobat resultats", "No search query generated": "No s'ha generat cap consulta", "No source available": "Sense font disponible", @@ -801,6 +816,7 @@ "None": "Cap", "Not factually correct": "No és clarament correcte", "Not helpful": "No ajuda", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si s'estableix una puntuació mínima, la cerca només retornarà documents amb una puntuació major o igual a la puntuació mínima.", "Notes": "Notes", "Notification Sound": "So de la notificació", @@ -910,6 +926,7 @@ "Read": "Llegit", "Read Aloud": "Llegir en veu alta", "Reasoning Effort": "Esforç de raonament", + "Record": "", "Record voice": "Enregistrar la veu", "Redirecting you to Open WebUI Community": "Redirigint-te a la comunitat OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Redueix la probabilitat de generar ximpleries. Un valor més alt (p. ex. 100) donarà respostes més diverses, mentre que un valor més baix (p. ex. 10) serà més conservador.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "S'han cercat {{count}} pàgines", "Searching \"{{searchQuery}}\"": "Cercant \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Cercant \"{{searchQuery}}\" al coneixement", + "Searching the web...": "", "Searxng Query URL": "URL de consulta de Searxng", "See readme.md for instructions": "Consulta l'arxiu readme.md per obtenir instruccions", "See what's new": "Veure què hi ha de nou", @@ -1181,6 +1199,7 @@ "Unpin": "Alliberar", "Unravel secrets": "Descobreix els secrets", "Untagged": "Sense etiquetes", + "Untitled": "", "Update": "Actualitzar", "Update and Copy Link": "Actualitzar i copiar l'enllaç", "Update for the latest features and improvements.": "Actualitza per a les darreres característiques i millores.", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 8d41ae6fb..de8db3d7e 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(pananglitan `sh webui.sh --api`)", "(latest)": "", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", + "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "", "Create new secret key": "", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Gihimo ang", "Created At": "", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "I-download ang database", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Ihulog ang bisan unsang file dinhi aron idugang kini sa panag-istoryahanay", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p. ", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Isulod ang block size", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Heneral", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Import prompt", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "", "Manage Tool Servers": "", "March": "", + "Max Speakers": "", "Max Tokens (num_predict)": "", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Bag-ong diskusyon", "New Folder": "", + "New Note": "", "New Password": "Bag-ong Password", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "", "No search query generated": "", "No source available": "Walay tinubdan nga anaa", @@ -801,6 +816,7 @@ "None": "", "Not factually correct": "", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "", "Reasoning Effort": "", + "Record": "", "Record voice": "Irekord ang tingog", "Redirecting you to Open WebUI Community": "Gi-redirect ka sa komunidad sa OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "", "See readme.md for instructions": "Tan-awa ang readme.md alang sa mga panudlo", "See what's new": "Tan-awa unsay bag-o", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index cb2f1ddca..b54aace9b 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(např. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(např. `sh webui.sh --api`)", "(latest)": "Nejnovější", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Špatná odezva", "Banners": "Bannery", "Base Model (From)": "Základní model (z)", + "Base URL": "", "Batch Size (num_batch)": "Batch size (num_batch)", "before": "před", "Being lazy": "", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Klíč API pro Brave Search", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Vytvořit knowledge", "Create new key": "Vytvořit nový klíč", "Create new secret key": "Vytvořte nový tajný klíč", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Vytvořeno dne", "Created At": "Vytvořeno dne", "Created by": "Vytvořeno uživatelem", @@ -302,6 +307,7 @@ "Delete function?": "Funkce pro odstranění?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Smazat prompt?", "delete this link": "smazat tento odkaz", "Delete tool?": "Odstranit nástroj?", @@ -357,7 +363,7 @@ "Download Database": "Stáhnout databázi", "Drag and drop a file to upload or select a file to view": "", "Draw": "Namalovat", - "Drop any files here to add to the conversation": "Sem přetáhněte libovolné soubory, které chcete přidat do konverzace", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "např. '30s','10m'. Platné časové jednotky jsou 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Upravit", "Edit Arena Model": "Upravit Arena Model", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Zadejte velikost bloku", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Zadejte popis", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Obecný", + "Generate": "", "Generate an image": "", "Generate Image": "Vygenerovat obrázek", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importování konfigurace z JSON souboru", "Import Functions": "Načítání funkcí", "Import Models": "Importování modelů", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importovat Prompty", "Import Tools": "Importovat nástroje", @@ -721,6 +732,7 @@ "Manage Pipelines": "Správa pipelines", "Manage Tool Servers": "", "March": "Březen", + "Max Speakers": "", "Max Tokens (num_predict)": "Maximální počet tokenů (num_predict)", "Max Upload Count": "Maximální počet nahrání", "Max Upload Size": "Maximální velikost nahrávání", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Nový chat", "New Folder": "", + "New Note": "", "New Password": "Nové heslo", "new-channel": "", + "No content": "", "No content found": "Nebyly nalezeny žádné obsahové informace.", "No content found in file.": "", "No content to speak": "Žádný obsah k diskusi.", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "Nebyly nalezeny žádné modely", "No models selected": "", + "No Notes": "", "No results found": "Nebyly nalezeny žádné výsledky", "No search query generated": "Nebyl vygenerován žádný vyhledávací dotaz.", "No source available": "Není k dispozici žádný zdroj.", @@ -801,6 +816,7 @@ "None": "Žádný", "Not factually correct": "Není fakticky správné", "Not helpful": "Nepomocné", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Poznámka: Pokud nastavíte minimální skóre, vyhledávání vrátí pouze dokumenty s hodnocením, které je větší nebo rovno zadanému minimálnímu skóre.", "Notes": "Poznámky", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Číst nahlas", "Reasoning Effort": "", + "Record": "", "Record voice": "Nahrát hlas", "Redirecting you to Open WebUI Community": "Přesměrování na komunitu OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Hledání \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Vyhledávání znalostí pro \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Adresa URL dotazu Searxng", "See readme.md for instructions": "Podívejte se do {{readme.md}} pro pokyny.", "See what's new": "Podívejte se, co je nového", @@ -1181,6 +1199,7 @@ "Unpin": "Odepnout", "Unravel secrets": "", "Untagged": "Nebyla označena", + "Untitled": "", "Update": "Aktualizovat", "Update and Copy Link": "Aktualizovat a zkopírovat odkaz", "Update for the latest features and improvements.": "Aktualizace pro nejnovější funkce a vylepšení.", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index 57b43211b..3a26e5739 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(f.eks. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(f.eks. `sh webui.sh --api`)", "(latest)": "(seneste)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ modeller }}", "{{COUNT}} Available Tools": "{{COUNT}} Tilgængelige Værktøj", @@ -138,6 +139,7 @@ "Bad Response": "Problem i response", "Banners": "Bannere", "Base Model (From)": "Base Model (Fra)", + "Base URL": "", "Batch Size (num_batch)": "Batch størrelse (num_batch)", "before": "før", "Being lazy": "At være doven", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API nøgle", "By {{name}}": "Af {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Opret Viden", "Create new key": "Opret en ny nøgle", "Create new secret key": "Opret en ny hemmelig nøgle", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Oprettet", "Created At": "Oprettet", "Created by": "Oprettet af", @@ -302,6 +307,7 @@ "Delete function?": "Slet funktion?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Slet prompt?", "delete this link": "slet dette link", "Delete tool?": "Slet værktøj?", @@ -357,7 +363,7 @@ "Download Database": "Download database", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Upload filer her for at tilføje til samtalen", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "f.eks. '30s', '10m'. Tilladte værdier er 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Rediger", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Indtast størrelse af tekststykker", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Generelt", + "Generate": "", "Generate an image": "", "Generate Image": "Generer billede", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importer konfiguration fra JSON-fil", "Import Functions": "Importer funktioner", "Import Models": "Importer modeller", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importer prompts", "Import Tools": "Importer værktøjer", @@ -721,6 +732,7 @@ "Manage Pipelines": "Administrer pipelines", "Manage Tool Servers": "", "March": "Marts", + "Max Speakers": "", "Max Tokens (num_predict)": "Maks. tokens (num_predict)", "Max Upload Count": "Maks. uploadantal", "Max Upload Size": "Maks. uploadstørrelse", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Ny chat", "New Folder": "", + "New Note": "", "New Password": "Ny adgangskode", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "Intet indhold at tale", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Ingen resultater fundet", "No search query generated": "Ingen søgeforespørgsel genereret", "No source available": "Ingen kilde tilgængelig", @@ -801,6 +816,7 @@ "None": "Ingen", "Not factually correct": "Ikke faktuelt korrekt", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Bemærk: Hvis du angiver en minimumscore, returnerer søgningen kun dokumenter med en score, der er større end eller lig med minimumscoren.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "Læs", "Read Aloud": "Læs højt", "Reasoning Effort": "", + "Record": "", "Record voice": "Optag stemme", "Redirecting you to Open WebUI Community": "Omdirigerer dig til OpenWebUI Community", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Søger efter \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Søger i viden efter \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng forespørgsels-URL", "See readme.md for instructions": "Se readme.md for instruktioner", "See what's new": "Se, hvad der er nyt", @@ -1181,6 +1199,7 @@ "Unpin": "Frigør", "Unravel secrets": "Afslør hemmeligheder", "Untagged": "Uden mærker", + "Untitled": "", "Update": "Opdater", "Update and Copy Link": "Opdater og kopier link", "Update for the latest features and improvements.": "Opdater for at få de nyeste funktioner og forbedringer.", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 4f5ff4f44..c230b067c 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(z. B. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(z. B. `sh webui.sh --api`)", "(latest)": "(neueste)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ Modelle }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Schlechte Antwort", "Banners": "Banner", "Base Model (From)": "Basismodell (From)", + "Base URL": "", "Batch Size (num_batch)": "Stapelgröße (num_batch)", "before": "bereits geteilt", "Being lazy": "Faulheit", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Search V7-Abonnement-Schlüssel", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API-Schlüssel", "By {{name}}": "Von {{name}}", "Bypass Embedding and Retrieval": "Embedding und Retrieval umgehen", @@ -265,6 +268,8 @@ "Create Knowledge": "Wissen erstellen", "Create new key": "Neuen Schlüssel erstellen", "Create new secret key": "Neuen API-Schlüssel erstellen", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Erstellt am", "Created At": "Erstellt am", "Created by": "Erstellt von", @@ -302,6 +307,7 @@ "Delete function?": "Funktion löschen?", "Delete Message": "Nachricht löschen", "Delete message?": "Nachricht löschen?", + "Delete note?": "", "Delete prompt?": "Prompt löschen?", "delete this link": "diesen Link löschen", "Delete tool?": "Werkzeug löschen?", @@ -357,7 +363,7 @@ "Download Database": "Datenbank exportieren", "Drag and drop a file to upload or select a file to view": "Ziehen Sie eine Datei zum Hochladen oder wählen Sie eine Datei zum Anzeigen aus", "Draw": "Zeichnen", - "Drop any files here to add to the conversation": "Ziehen Sie beliebige Dateien hierher, um sie dem Chat hinzuzufügen", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "z. B. '30s','10m'. Gültige Zeiteinheiten sind 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "z. B. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "z. B. mein_filter", "e.g. my_tools": "z. B. meine_werkzeuge", "e.g. Tools for performing various operations": "z. B. Werkzeuge für verschiedene Operationen", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "z. B. en-US,de-DE (freilassen für automatische Erkennung)", "Edit": "Bearbeiten", "Edit Arena Model": "Arena-Modell bearbeiten", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Geben Sie die Blockgröße ein", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Geben Sie eine Beschreibung ein", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API-Konfiguration", "Gemini API Key is required.": "Gemini API-Schlüssel ist erforderlich.", "General": "Allgemein", + "Generate": "", "Generate an image": "Bild erzeugen", "Generate Image": "Bild erzeugen", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Konfiguration aus JSON-Datei importieren", "Import Functions": "Funktionen importieren", "Import Models": "Modelle importieren", + "Import Notes": "", "Import Presets": "Voreinstellungen importieren", "Import Prompts": "Prompts importieren", "Import Tools": "Werkzeuge importieren", @@ -721,6 +732,7 @@ "Manage Pipelines": "Pipelines verwalten", "Manage Tool Servers": "", "March": "März", + "Max Speakers": "", "Max Tokens (num_predict)": "Maximale Tokenanzahl (num_predict)", "Max Upload Count": "Maximale Anzahl der Uploads", "Max Upload Size": "Maximale Uploadgröße", @@ -777,8 +789,10 @@ "Native": "Nativ", "New Chat": "Neuer Chat", "New Folder": "Neuer Ordner", + "New Note": "", "New Password": "Neues Passwort", "new-channel": "neuer-kanal", + "No content": "", "No content found": "Kein Inhalt gefunden", "No content found in file.": "", "No content to speak": "Kein Inhalt zum Vorlesen", @@ -793,6 +807,7 @@ "No model IDs": "Keine Modell-IDs", "No models found": "Keine Modelle gefunden", "No models selected": "Keine Modelle ausgewählt", + "No Notes": "", "No results found": "Keine Ergebnisse gefunden", "No search query generated": "Keine Suchanfrage generiert", "No source available": "Keine Quelle verfügbar", @@ -801,6 +816,7 @@ "None": "Nichts", "Not factually correct": "Nicht sachlich korrekt", "Not helpful": "Nicht hilfreich", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Hinweis: Wenn Sie eine Mindestpunktzahl festlegen, werden in der Suche nur Dokumente mit einer Punktzahl größer oder gleich der Mindestpunktzahl zurückgegeben.", "Notes": "Notizen", "Notification Sound": "Benachrichtigungston", @@ -910,6 +926,7 @@ "Read": "Lesen", "Read Aloud": "Vorlesen", "Reasoning Effort": "Schlussfolgerungsaufwand", + "Record": "", "Record voice": "Stimme aufnehmen", "Redirecting you to Open WebUI Community": "Sie werden zur OpenWebUI-Community weitergeleitet", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "{{count}} Websites durchsucht", "Searching \"{{searchQuery}}\"": "Suche nach \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Suche im Wissen nach \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng-Abfrage-URL", "See readme.md for instructions": "Anleitung in readme.md anzeigen", "See what's new": "Entdecken Sie die Neuigkeiten", @@ -1181,6 +1199,7 @@ "Unpin": "Lösen", "Unravel secrets": "Geheimnisse lüften", "Untagged": "Ungetaggt", + "Untitled": "", "Update": "Aktualisieren", "Update and Copy Link": "Aktualisieren und Link kopieren", "Update for the latest features and improvements.": "Aktualisieren Sie für die neuesten Funktionen und Verbesserungen.", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index d4b740730..ae0517246 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(such e.g. `sh webui.sh --api`)", "(latest)": "(much latest)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", + "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "", "Create new secret key": "", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Created at", "Created At": "", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "Download Database", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Drop files here to add to conversation", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "e.g. '30s','10m'. Much time units are 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Enter Size of Chunk", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Woweral", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Import Promptos", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "", "Manage Tool Servers": "", "March": "", + "Max Speakers": "", "Max Tokens (num_predict)": "", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "New Bark", "New Folder": "", + "New Note": "", "New Password": "New Barkword", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "", "No search query generated": "", "No source available": "No source available", @@ -801,6 +816,7 @@ "None": "", "Not factually correct": "", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "", "Reasoning Effort": "", + "Record": "", "Record voice": "Record Bark", "Redirecting you to Open WebUI Community": "Redirecting you to Open WebUI Community", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "", "See readme.md for instructions": "See readme.md for instructions wow", "See what's new": "See what's new so amaze", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index 9f008ec4d..11d19d3fa 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(π.χ. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(π.χ. `sh webui.sh --api`)", "(latest)": "(τελευταίο)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Κακή Απάντηση", "Banners": "Προβολές", "Base Model (From)": "Βασικό Μοντέλο (Από)", + "Base URL": "", "Batch Size (num_batch)": "Μέγεθος Παρτίδας (num_batch)", "before": "πριν", "Being lazy": "Τρώλακας", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Κλειδί Συνδρομής Bing Search V7", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Κλειδί API Brave Search", "By {{name}}": "Από {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Δημιουργία Γνώσης", "Create new key": "Δημιουργία νέου κλειδιού", "Create new secret key": "Δημιουργία νέου μυστικού κλειδιού", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Δημιουργήθηκε στις", "Created At": "Δημιουργήθηκε στις", "Created by": "Δημιουργήθηκε από", @@ -302,6 +307,7 @@ "Delete function?": "Διαγραφή λειτουργίας;", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Διαγραφή προτροπής;", "delete this link": "διαγραφή αυτού του συνδέσμου", "Delete tool?": "Διαγραφή εργαλείου;", @@ -357,7 +363,7 @@ "Download Database": "Λήψη Βάσης Δεδομένων", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "π.χ. '30s','10m'. Οι έγκυρες μονάδες χρόνου είναι 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "π.χ. my_filter", "e.g. my_tools": "π.χ. my_tools", "e.g. Tools for performing various operations": "π.χ. Εργαλεία για την εκτέλεση διάφορων λειτουργιών", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Επεξεργασία", "Edit Arena Model": "Επεξεργασία Μοντέλου Arena", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Εισάγετε το Μέγεθος Τμημάτων", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Εισάγετε την περιγραφή", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Γενικά", + "Generate": "", "Generate an image": "", "Generate Image": "Δημιουργία Εικόνας", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Εισαγωγή Διαμόρφωσης από Αρχείο JSON", "Import Functions": "Εισαγωγή Λειτουργιών", "Import Models": "Εισαγωγή Μοντέλων", + "Import Notes": "", "Import Presets": "Εισαγωγή Προκαθορισμένων", "Import Prompts": "Εισαγωγή Προτροπών", "Import Tools": "Εισαγωγή Εργαλείων", @@ -721,6 +732,7 @@ "Manage Pipelines": "Διαχείριση Καναλιών", "Manage Tool Servers": "", "March": "Μάρτιος", + "Max Speakers": "", "Max Tokens (num_predict)": "Μέγιστος Αριθμός Tokens (num_predict)", "Max Upload Count": "Μέγιστος Αριθμός Ανεβάσματος", "Max Upload Size": "Μέγιστο Μέγεθος Αρχείου", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Νέα Συνομιλία", "New Folder": "", + "New Note": "", "New Password": "Νέος Κωδικός", "new-channel": "", + "No content": "", "No content found": "Δεν βρέθηκε περιεχόμενο", "No content found in file.": "", "No content to speak": "Δεν υπάρχει περιεχόμενο για ανάγνωση", @@ -793,6 +807,7 @@ "No model IDs": "Δεν υπάρχουν IDs μοντέλων", "No models found": "Δεν βρέθηκαν μοντέλα", "No models selected": "Δεν έχουν επιλεγεί μοντέλα", + "No Notes": "", "No results found": "Δεν βρέθηκαν αποτελέσματα", "No search query generated": "Δεν δημιουργήθηκε ερώτηση αναζήτησης", "No source available": "Δεν υπάρχει διαθέσιμη πηγή", @@ -801,6 +816,7 @@ "None": "Κανένα", "Not factually correct": "Δεν είναι γεγονότα", "Not helpful": "Δεν είναι χρήσιμο", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Σημείωση: Αν ορίσετε ένα ελάχιστο score, η αναζήτηση θα επιστρέψει μόνο έγγραφα με score μεγαλύτερο ή ίσο με το ελάχιστο score.", "Notes": "Σημειώσεις", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Ανάγνωση Φωναχτά", "Reasoning Effort": "", + "Record": "", "Record voice": "Εγγραφή φωνής", "Redirecting you to Open WebUI Community": "Μετακατεύθυνση στην Κοινότητα OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Αναζήτηση \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Αναζήτηση Γνώσης για \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "URL Ερώτησης Searxng", "See readme.md for instructions": "Δείτε readme.md για οδηγίες", "See what's new": "Δείτε τι νέο υπάρχει", @@ -1181,6 +1199,7 @@ "Unpin": "Αφαίρεση καρφίτσματος", "Unravel secrets": "Ξετυλίξτε μυστικά", "Untagged": "Χωρίς Ετικέτες", + "Untitled": "", "Update": "Ενημέρωση", "Update and Copy Link": "Ενημέρωση και Αντιγραφή Συνδέσμου", "Update for the latest features and improvements.": "Ενημέρωση για τις τελευταίες λειτουργίες και βελτιώσεις.", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index b45ba5399..e3e3d2f2c 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "", "(latest)": "", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", + "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "", "Create new secret key": "", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "", "Created At": "", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "", + "Import Notes": "", "Import Presets": "", "Import Prompts": "", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "", "Manage Tool Servers": "", "March": "", + "Max Speakers": "", "Max Tokens (num_predict)": "", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "", "New Folder": "", + "New Note": "", "New Password": "", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "", "No search query generated": "", "No source available": "", @@ -801,6 +816,7 @@ "None": "", "Not factually correct": "", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "", "Reasoning Effort": "", + "Record": "", "Record voice": "", "Redirecting you to Open WebUI Community": "", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "", "See readme.md for instructions": "", "See what's new": "", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index b45ba5399..e3e3d2f2c 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "", "(latest)": "", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", + "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "", "Create new secret key": "", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "", "Created At": "", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "", + "Import Notes": "", "Import Presets": "", "Import Prompts": "", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "", "Manage Tool Servers": "", "March": "", + "Max Speakers": "", "Max Tokens (num_predict)": "", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "", "New Folder": "", + "New Note": "", "New Password": "", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "", "No search query generated": "", "No source available": "", @@ -801,6 +816,7 @@ "None": "", "Not factually correct": "", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "", "Reasoning Effort": "", + "Record": "", "Record voice": "", "Redirecting you to Open WebUI Community": "", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "", "See readme.md for instructions": "", "See what's new": "", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 5024d7222..9c65a5ceb 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(p.ej. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(p.ej. `sh webui.sh --api`)", "(latest)": "(último)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Mala Respuesta", "Banners": "Banners", "Base Model (From)": "Modelo Base (desde)", + "Base URL": "", "Batch Size (num_batch)": "Tamaño de Lote (num_batch)", "before": "antes", "Being lazy": "Ser perezoso", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Clave de Suscripción de Bing Search V7", "Bocha Search API Key": "Clave API de Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Impulsando o penalizando tokens específicos para respuestas restringidas. Los valores de sesgo se limitarán entre -100 y 100 (inclusive). (Por defecto: ninguno)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Clave API de Brave Search", "By {{name}}": "Por {{name}}", "Bypass Embedding and Retrieval": "Evitar Incrustración y Recuperación", @@ -265,6 +268,8 @@ "Create Knowledge": "Crear Conocimiento", "Create new key": "Crear Nueva Clave", "Create new secret key": "Crear Nueva Clave Secreta", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Creado en", "Created At": "Creado En", "Created by": "Creado por", @@ -302,6 +307,7 @@ "Delete function?": "Borrar la función?", "Delete Message": "Borrar mensaje", "Delete message?": "¿Borrar mensaje?", + "Delete note?": "", "Delete prompt?": "¿Borrar el indicador?", "delete this link": "Borrar este enlace", "Delete tool?": "¿Borrar la herramienta?", @@ -357,7 +363,7 @@ "Download Database": "Descargar Base de Datos", "Drag and drop a file to upload or select a file to view": "Arrastra y suelta un archivo para subirlo o selecciona uno para verlo", "Draw": "Dibujar", - "Drop any files here to add to the conversation": "Suelta cualquier archivo aquí para añadirlo a la conversación", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p.ej. '30s','10m'. Unidades de tiempo válidas son 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "p.ej. \"json\" o un esquema JSON", "e.g. 60": "p.ej. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "p.ej. mi_filtro", "e.g. my_tools": "p.ej. mis_herramientas", "e.g. Tools for performing various operations": "p.ej. Herramientas para realizar varias operaciones", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "p. ej., en-US,ja-JP (dejar en blanco para detectar automáticamente)", "Edit": "Editar", "Edit Arena Model": "Editar Modelo en Arena", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Ingresar el Tamaño del Fragmento", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Ingresar pares \"token:valor_sesgo\" separados por comas (ejemplo: 5432:100, 413:-100)", "Enter description": "Ingresar Descripción", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Ingresar URL del Servidor Docling", "Enter Document Intelligence Endpoint": "Ingresar el Endpoint de Azure Document Intelligence", "Enter Document Intelligence Key": "Ingresar Clave de Azure Document Intelligence", @@ -587,6 +596,7 @@ "Gemini API Config": "Config API Gemini", "Gemini API Key is required.": "Se requiere Clave API de Gemini.", "General": "General", + "Generate": "", "Generate an image": "Generar una imagen", "Generate Image": "Generar imagen", "Generate prompt pair": "Generar par de indicadores", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importar Config desde Archivo JSON", "Import Functions": "Importar Funciones", "Import Models": "Importar Modelos", + "Import Notes": "", "Import Presets": "Importar Preajustes", "Import Prompts": "Importar Indicadores", "Import Tools": "Importar Herramientas", @@ -721,6 +732,7 @@ "Manage Pipelines": "Gestionar Tuberías", "Manage Tool Servers": "Gestionar Servidores de Herramientas", "March": "Marzo", + "Max Speakers": "", "Max Tokens (num_predict)": "Máx Tokens (num_predict)", "Max Upload Count": "Número Max de Subidas", "Max Upload Size": "Tamaño Max de Subidas", @@ -777,8 +789,10 @@ "Native": "Nativo", "New Chat": "Nuevo Chat", "New Folder": "Nueva Carpeta", + "New Note": "", "New Password": "Nueva Contraseña", "new-channel": "nuevo-canal", + "No content": "", "No content found": "No se encontró contenido", "No content found in file.": "", "No content to speak": "No hay contenido para hablar", @@ -793,6 +807,7 @@ "No model IDs": "No hay IDs de modelo", "No models found": "No se encontraron modelos", "No models selected": "No se seleccionaron modelos", + "No Notes": "", "No results found": "No se encontraron resultados", "No search query generated": "No se generó ninguna consulta de búsqueda", "No source available": "No hay fuente disponible", @@ -801,6 +816,7 @@ "None": "Ninguno", "Not factually correct": "No es correcto en todos los aspectos", "Not helpful": "No aprovechable", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si estableces una puntuación mínima, la búsqueda sólo devolverá documentos con una puntuación mayor o igual a la puntuación mínima establecida.", "Notes": "Notas", "Notification Sound": "Notificación Sonora", @@ -910,6 +926,7 @@ "Read": "Leer", "Read Aloud": "Leer en voz alta", "Reasoning Effort": "Esfuerzo del Razonamiento", + "Record": "", "Record voice": "Grabar voz", "Redirecting you to Open WebUI Community": "Redireccionando a la Comunidad Open-WebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Reduce la probabilidad de generación sin sentido. Un valor más alto (p.ej. 100) dará respuestas más diversas, mientras que un valor más bajo (p.ej. 10) será más conservador.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "{{count}} sitios buscados", "Searching \"{{searchQuery}}\"": "Buscando \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Buscando \"{{searchQuery}}\" en Conocimiento", + "Searching the web...": "", "Searxng Query URL": "Searxng URL de Consulta", "See readme.md for instructions": "Ver readme.md para instrucciones", "See what's new": "Ver las novedades", @@ -1181,6 +1199,7 @@ "Unpin": "Desfijar", "Unravel secrets": "Desentrañar secretos", "Untagged": "Desetiquetado", + "Untitled": "", "Update": "Actualizar", "Update and Copy Link": "Actualizar y Copiar Enlace", "Update for the latest features and improvements.": "Actualizar para las últimas características y mejoras.", diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json index 98815bc91..f93af7fe0 100644 --- a/src/lib/i18n/locales/et-EE/translation.json +++ b/src/lib/i18n/locales/et-EE/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(nt `sh webui.sh --api --api-auth kasutajanimi_parool`)", "(e.g. `sh webui.sh --api`)": "(nt `sh webui.sh --api`)", "(latest)": "(uusim)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ mudelid }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Halb vastus", "Banners": "Bännerid", "Base Model (From)": "Baas mudel (Allikas)", + "Base URL": "", "Batch Size (num_batch)": "Partii suurus (num_batch)", "before": "enne", "Being lazy": "Laisklemine", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Search V7 tellimuse võti", "Bocha Search API Key": "Bocha otsingu API võti", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Konkreetsete tokenite võimendamine või karistamine piiratud vastuste jaoks. Kallutatuse väärtused piiratakse vahemikku -100 kuni 100 (kaasa arvatud). (Vaikimisi: puudub)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API võti", "By {{name}}": "Autor: {{name}}", "Bypass Embedding and Retrieval": "Möödaminek sisestamisest ja taastamisest", @@ -265,6 +268,8 @@ "Create Knowledge": "Loo teadmised", "Create new key": "Loo uus võti", "Create new secret key": "Loo uus salavõti", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Loomise aeg", "Created At": "Loomise aeg", "Created by": "Autor", @@ -302,6 +307,7 @@ "Delete function?": "Kustutada funktsioon?", "Delete Message": "Kustuta sõnum", "Delete message?": "Kustutada sõnum?", + "Delete note?": "", "Delete prompt?": "Kustutada vihjed?", "delete this link": "kustuta see link", "Delete tool?": "Kustutada tööriist?", @@ -357,7 +363,7 @@ "Download Database": "Laadi alla andmebaas", "Drag and drop a file to upload or select a file to view": "Lohistage ja kukutage fail üleslaadimiseks või valige fail vaatamiseks", "Draw": "Joonista", - "Drop any files here to add to the conversation": "Lohistage siia mistahes failid, et lisada need vestlusele", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "nt '30s', '10m'. Kehtivad ajaühikud on 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "nt 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "nt minu_filter", "e.g. my_tools": "nt minu_toriistad", "e.g. Tools for performing various operations": "nt tööriistad mitmesuguste operatsioonide teostamiseks", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Muuda", "Edit Arena Model": "Muuda Areena mudelit", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Sisestage tüki suurus", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Sisestage komadega eraldatud \"token:kallutuse_väärtus\" paarid (näide: 5432:100, 413:-100)", "Enter description": "Sisestage kirjeldus", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "Sisestage dokumendi intelligentsuse lõpp-punkt", "Enter Document Intelligence Key": "Sisestage dokumendi intelligentsuse võti", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API seadistus", "Gemini API Key is required.": "Gemini API võti on nõutav.", "General": "Üldine", + "Generate": "", "Generate an image": "Genereeri pilt", "Generate Image": "Genereeri pilt", "Generate prompt pair": "Genereeri vihjete paar", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Impordi seadistus JSON-failist", "Import Functions": "Impordi funktsioonid", "Import Models": "Impordi mudelid", + "Import Notes": "", "Import Presets": "Impordi eelseadistused", "Import Prompts": "Impordi vihjed", "Import Tools": "Impordi tööriistad", @@ -721,6 +732,7 @@ "Manage Pipelines": "Halda torustikke", "Manage Tool Servers": "", "March": "Märts", + "Max Speakers": "", "Max Tokens (num_predict)": "Max tokeneid (num_predict)", "Max Upload Count": "Maksimaalne üleslaadimiste arv", "Max Upload Size": "Maksimaalne üleslaadimise suurus", @@ -777,8 +789,10 @@ "Native": "Omane", "New Chat": "Uus vestlus", "New Folder": "Uus kaust", + "New Note": "", "New Password": "Uus parool", "new-channel": "uus-kanal", + "No content": "", "No content found": "Sisu ei leitud", "No content found in file.": "", "No content to speak": "Pole mida rääkida", @@ -793,6 +807,7 @@ "No model IDs": "Mudeli ID-d puuduvad", "No models found": "Mudeleid ei leitud", "No models selected": "Mudeleid pole valitud", + "No Notes": "", "No results found": "Tulemusi ei leitud", "No search query generated": "Otsingupäringut ei genereeritud", "No source available": "Allikas pole saadaval", @@ -801,6 +816,7 @@ "None": "Mitte ühtegi", "Not factually correct": "Faktiliselt ebakorrektne", "Not helpful": "Pole abistav", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Märkus: kui määrate minimaalse skoori, tagastab otsing ainult dokumendid, mille skoor on suurem või võrdne minimaalse skooriga.", "Notes": "Märkmed", "Notification Sound": "Teavituse heli", @@ -910,6 +926,7 @@ "Read": "Loe", "Read Aloud": "Loe valjult", "Reasoning Effort": "Arutluspingutus", + "Record": "", "Record voice": "Salvesta hääl", "Redirecting you to Open WebUI Community": "Suunamine Open WebUI kogukonda", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Vähendab mõttetuste genereerimise tõenäosust. Kõrgem väärtus (nt 100) annab mitmekesisemaid vastuseid, samas kui madalam väärtus (nt 10) on konservatiivsem.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Otsiti {{count}} saidilt", "Searching \"{{searchQuery}}\"": "Otsimine: \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Teadmistest otsimine: \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng päringu URL", "See readme.md for instructions": "Juhiste saamiseks vaadake readme.md", "See what's new": "Vaata, mis on uut", @@ -1181,6 +1199,7 @@ "Unpin": "Võta lahti", "Unravel secrets": "Ava saladused", "Untagged": "Sildistamata", + "Untitled": "", "Update": "Uuenda", "Update and Copy Link": "Uuenda ja kopeeri link", "Update for the latest features and improvements.": "Uuendage, et saada uusimad funktsioonid ja täiustused.", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index 4ff344591..22bd409c0 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(adib. `sh webui.sh --api --api-auth erabiltzaile_pasahitza`)", "(e.g. `sh webui.sh --api`)": "(adib. `sh webui.sh --api`)", "(latest)": "(azkena)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Erantzun Txarra", "Banners": "Bannerrak", "Base Model (From)": "Oinarrizko Eredua (Nondik)", + "Base URL": "", "Batch Size (num_batch)": "Batch Tamaina (num_batch)", "before": "aurretik", "Being lazy": "Alferra izatea", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Bilaketa V7 Harpidetza Gakoa", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Bilaketa API Gakoa", "By {{name}}": "{{name}}-k", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Sortu Ezagutza", "Create new key": "Sortu gako berria", "Create new secret key": "Sortu gako sekretu berria", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Sortze data", "Created At": "Sortze Data", "Created by": "Sortzailea", @@ -302,6 +307,7 @@ "Delete function?": "Ezabatu funtzioa?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Ezabatu prompta?", "delete this link": "ezabatu esteka hau", "Delete tool?": "Ezabatu tresna?", @@ -357,7 +363,7 @@ "Download Database": "Deskargatu Datu-basea", "Drag and drop a file to upload or select a file to view": "Arrastatu eta jaregin fitxategi bat igotzeko edo hautatu fitxategi bat ikusteko", "Draw": "Marraztu", - "Drop any files here to add to the conversation": "Jaregin edozein fitxategi hemen elkarrizketara gehitzeko", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "adib. '30s','10m'. Denbora unitate baliodunak dira 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "adib. nire_iragazkia", "e.g. my_tools": "adib. nire_tresnak", "e.g. Tools for performing various operations": "adib. Hainbat eragiketa egiteko tresnak", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Editatu", "Edit Arena Model": "Editatu Arena Eredua", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Sartu Zati Tamaina", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Sartu deskribapena", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Orokorra", + "Generate": "", "Generate an image": "", "Generate Image": "Sortu Irudia", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Inportatu Konfigurazioa JSON Fitxategitik", "Import Functions": "Inportatu Funtzioak", "Import Models": "Inportatu Ereduak", + "Import Notes": "", "Import Presets": "Inportatu Aurrezarpenak", "Import Prompts": "Inportatu Promptak", "Import Tools": "Inportatu Tresnak", @@ -721,6 +732,7 @@ "Manage Pipelines": "Kudeatu Pipeline-ak", "Manage Tool Servers": "", "March": "Martxoa", + "Max Speakers": "", "Max Tokens (num_predict)": "Token maximoak (num_predict)", "Max Upload Count": "Karga kopuru maximoa", "Max Upload Size": "Karga tamaina maximoa", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Txat berria", "New Folder": "", + "New Note": "", "New Password": "Pasahitz berria", "new-channel": "", + "No content": "", "No content found": "Ez da edukirik aurkitu", "No content found in file.": "", "No content to speak": "Ez dago hitz egiteko edukirik", @@ -793,6 +807,7 @@ "No model IDs": "Ez dago modelo IDrik", "No models found": "Ez da modelorik aurkitu", "No models selected": "Ez da modelorik hautatu", + "No Notes": "", "No results found": "Ez da emaitzarik aurkitu", "No search query generated": "Ez da bilaketa kontsultarik sortu", "No source available": "Ez dago iturririk eskuragarri", @@ -801,6 +816,7 @@ "None": "Bat ere ez", "Not factually correct": "Ez da faktikoki zuzena", "Not helpful": "Ez da lagungarria", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Oharra: Gutxieneko puntuazio bat ezartzen baduzu, bilaketak gutxieneko puntuazioa baino handiagoa edo berdina duten dokumentuak soilik itzuliko ditu.", "Notes": "Oharrak", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Irakurri ozen", "Reasoning Effort": "", + "Record": "", "Record voice": "Grabatu ahotsa", "Redirecting you to Open WebUI Community": "OpenWebUI Komunitatera berbideratzen", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" bilatzen", "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\"rentzako ezagutza bilatzen", + "Searching the web...": "", "Searxng Query URL": "Searxng kontsulta URLa", "See readme.md for instructions": "Ikusi readme.md argibideetarako", "See what's new": "Ikusi berritasunak", @@ -1181,6 +1199,7 @@ "Unpin": "Kendu aingura", "Unravel secrets": "Askatu sekretuak", "Untagged": "Etiketatu gabea", + "Untitled": "", "Update": "Eguneratu", "Update and Copy Link": "Eguneratu eta kopiatu esteka", "Update for the latest features and improvements.": "Eguneratu azken ezaugarri eta hobekuntzak izateko.", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 7b54bb826..0c3a06a07 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(مثال: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)", "(latest)": "(آخرین)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} ابزار موجود", @@ -138,6 +139,7 @@ "Bad Response": "پاسخ خوب نیست", "Banners": "بنر", "Base Model (From)": "مدل پایه (از)", + "Base URL": "", "Batch Size (num_batch)": "اندازه دسته (num_batch)", "before": "قبل", "Being lazy": "حالت سازنده", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "کلید اشتراک جستجوی Bing V7", "Bocha Search API Key": "کلید API جستجوی Bocha", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "تقویت یا جریمه توکن\u200cهای خاص برای پاسخ\u200cهای محدود. مقادیر بایاس بین -100 و 100 (شامل) محدود خواهند شد. (پیش\u200cفرض: هیچ)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "کلید API جستجوی شجاع", "By {{name}}": "توسط {{name}}", "Bypass Embedding and Retrieval": "دور زدن جاسازی و بازیابی", @@ -265,6 +268,8 @@ "Create Knowledge": "ایجاد دانش", "Create new key": "ساخت کلید جدید", "Create new secret key": "ساخت کلید مخفی جدید", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "ایجاد شده در", "Created At": "ایجاد شده در", "Created by": "ایجاد شده توسط", @@ -302,6 +307,7 @@ "Delete function?": "تابع حذف شود؟", "Delete Message": "حذف پیام", "Delete message?": "پیام حذف شود؟", + "Delete note?": "", "Delete prompt?": "پرامپت حذف شود؟", "delete this link": "حذف این لینک", "Delete tool?": "ابزار حذف شود؟", @@ -357,7 +363,7 @@ "Download Database": "دانلود پایگاه داده", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "به طور مثال '30s','10m'. واحد\u200cهای زمانی معتبر 's', 'm', 'h' هستند.", "e.g. \"json\" or a JSON schema": "مثلا \"json\" یا یک طرح JSON", "e.g. 60": "مثلا 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "مثلا my_filter", "e.g. my_tools": "مثلا my_tools", "e.g. Tools for performing various operations": "مثلا ابزارهایی برای انجام عملیات مختلف", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "مثلا en-US,ja-JP (برای تشخیص خودکار خالی بگذارید)", "Edit": "ویرایش", "Edit Arena Model": "ویرایش مدل آرنا", @@ -412,6 +419,8 @@ "Enter Chunk Size": "مقدار Chunk Size را وارد کنید", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "جفت\u200cهای \"توکن:مقدار_بایاس\" را با کاما جدا شده وارد کنید (مثال: 5432:100, 413:-100)", "Enter description": "توضیحات را وارد کنید", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "آدرس سرور Docling را وارد کنید", "Enter Document Intelligence Endpoint": "نقطه پایانی هوش سند را وارد کنید", "Enter Document Intelligence Key": "کلید هوش سند را وارد کنید", @@ -587,6 +596,7 @@ "Gemini API Config": "پیکربندی API جمینی", "Gemini API Key is required.": "کلید API جمینی مورد نیاز است.", "General": "عمومی", + "Generate": "", "Generate an image": "تولید یک تصویر", "Generate Image": "تولید تصویر", "Generate prompt pair": "تولید جفت پرامپت", @@ -637,6 +647,7 @@ "Import Config from JSON File": "درون\u200cریزی از پروندهٔ JSON", "Import Functions": "درون\u200cریزی توابع", "Import Models": "درون\u200cریزی مدل\u200cها", + "Import Notes": "", "Import Presets": "درون\u200cریزی پیش\u200cتنظیم\u200cها", "Import Prompts": "درون\u200cریزی پرامپت\u200cها", "Import Tools": "درون\u200cریزی ابزارها", @@ -721,6 +732,7 @@ "Manage Pipelines": "مدیریت خطوط لوله", "Manage Tool Servers": "مدیریت سرورهای ابزار", "March": "مارچ", + "Max Speakers": "", "Max Tokens (num_predict)": "توکنهای بیشینه (num_predict)", "Max Upload Count": "حداکثر تعداد آپلود", "Max Upload Size": "حداکثر اندازه آپلود", @@ -777,8 +789,10 @@ "Native": "بومی", "New Chat": "گپ جدید", "New Folder": "پوشه جدید", + "New Note": "", "New Password": "رمز عبور جدید", "new-channel": "کانال-جدید", + "No content": "", "No content found": "محتوایی یافت نشد", "No content found in file.": "", "No content to speak": "محتوایی برای خواندن وجود ندارد", @@ -793,6 +807,7 @@ "No model IDs": "شناسه مدلی وجود ندارد", "No models found": "مدلی یافت نشد", "No models selected": "مدلی انتخاب نشده است", + "No Notes": "", "No results found": "نتیجه\u200cای یافت نشد", "No search query generated": "پرسوجوی جستجویی ایجاد نشده است", "No source available": "منبعی در دسترس نیست", @@ -801,6 +816,7 @@ "None": "هیچ کدام", "Not factually correct": "اشتباهی فکری نیست", "Not helpful": "مفید نیست", + "Note not found": "", "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": "یادداشت\u200cها", "Notification Sound": "صدای اعلان", @@ -910,6 +926,7 @@ "Read": "خواندن", "Read Aloud": "خواندن به صورت صوتی", "Reasoning Effort": "تلاش استدلال", + "Record": "", "Record voice": "ضبط صدا", "Redirecting you to Open WebUI Community": "در حال هدایت به OpenWebUI Community", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "احتمال تولید محتوای بی\u200cمعنی را کاهش می\u200cدهد. مقدار بالاتر (مثلاً 100) پاسخ\u200cهای متنوع\u200cتری می\u200cدهد، در حالی که مقدار پایین\u200cتر (مثلاً 10) محافظه\u200cکارانه\u200cتر خواهد بود.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "جستجوی {{count}} سایت", "Searching \"{{searchQuery}}\"": "جستجوی «{{searchQuery}}»", "Searching Knowledge for \"{{searchQuery}}\"": "جستجوی دانش برای «{{searchQuery}}»", + "Searching the web...": "", "Searxng Query URL": "نشانی وب جستجوی Searxng", "See readme.md for instructions": "برای مشاهده دستورالعمل\u200cها به readme.md مراجعه کنید", "See what's new": "ببینید موارد جدید چه بوده", @@ -1181,6 +1199,7 @@ "Unpin": "برداشتن پین", "Unravel secrets": "کشف رازها", "Untagged": "بدون برچسب", + "Untitled": "", "Update": "به\u200cروزرسانی", "Update and Copy Link": "به روزرسانی و کپی لینک", "Update for the latest features and improvements.": "برای آخرین ویژگی\u200cها و بهبودها به\u200cروزرسانی کنید.", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 9c8a4bbce..05bd2806f 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(esim. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(esim. `sh webui.sh --api`)", "(latest)": "(uusin)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ mallit }}", "{{COUNT}} Available Tools": "{{COUNT}} työkalua saatavilla", @@ -138,6 +139,7 @@ "Bad Response": "Huono vastaus", "Banners": "Bannerit", "Base Model (From)": "Perusmalli (alkaen)", + "Base URL": "", "Batch Size (num_batch)": "Erän koko (num_batch)", "before": "ennen", "Being lazy": "Oli laiska", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Search V7 -tilauskäyttäjäavain", "Bocha Search API Key": "Bocha Search API -avain", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API -avain", "By {{name}}": "Tekijä {{name}}", "Bypass Embedding and Retrieval": "Ohita upotus ja haku", @@ -265,6 +268,8 @@ "Create Knowledge": "Luo tietoa", "Create new key": "Luo uusi avain", "Create new secret key": "Luo uusi salainen avain", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Luotu", "Created At": "Luotu", "Created by": "Luonut", @@ -302,6 +307,7 @@ "Delete function?": "Haluatko varmasti poistaa tämän toiminnon?", "Delete Message": "Poista viesti", "Delete message?": "Poista viesti?", + "Delete note?": "", "Delete prompt?": "Haluatko varmasti poistaa tämän kehotteen?", "delete this link": "poista tämä linkki", "Delete tool?": "Haluatko varmasti poistaa tämän työkalun?", @@ -357,7 +363,7 @@ "Download Database": "Lataa tietokanta", "Drag and drop a file to upload or select a file to view": "Raahaa ja pudota tiedosto ladattavaksi tai valitse tiedosto katseltavaksi", "Draw": "Piirros", - "Drop any files here to add to the conversation": "Pudota tiedostoja tähän lisätäksesi ne keskusteluun", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "esim. '30s', '10m'. Kelpoiset aikayksiköt ovat 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "esim. \"json\" tai JSON kaava", "e.g. 60": "esim. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "esim. oma_suodatin", "e.g. my_tools": "esim. omat_työkalut", "e.g. Tools for performing various operations": "esim. työkaluja erilaisten toimenpiteiden suorittamiseen", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "esim. en-US,ja-JP (Tyhjäksi jättämällä, automaattinen tunnistus)", "Edit": "Muokkaa", "Edit Arena Model": "Muokkaa Arena-mallia", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Syötä osien koko", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Syötä pilkulla erottaen \"token:bias_value\" parit (esim. 5432:100, 413:-100)", "Enter description": "Kirjoita kuvaus", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Kirjoita Docling palvelimen verkko-osoite", "Enter Document Intelligence Endpoint": "Kirjoita asiakirja tiedustelun päätepiste", "Enter Document Intelligence Key": "Kirjoiuta asiakirja tiedustelun avain", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API konfiguraatio", "Gemini API Key is required.": "Gemini API -avain on vaaditaan.", "General": "Yleinen", + "Generate": "", "Generate an image": "Luo kuva", "Generate Image": "Luo kuva", "Generate prompt pair": "Luo kehotepari", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Tuo asetukset JSON-tiedostosta", "Import Functions": "Tuo toiminnot", "Import Models": "Tuo malleja", + "Import Notes": "", "Import Presets": "Tuo esiasetuksia", "Import Prompts": "Tuo kehotteet", "Import Tools": "Tuo työkalut", @@ -721,6 +732,7 @@ "Manage Pipelines": "Hallitse putkia", "Manage Tool Servers": "Hallitse työkalu palvelimia", "March": "maaliskuu", + "Max Speakers": "", "Max Tokens (num_predict)": "Tokenien enimmäismäärä (num_predict)", "Max Upload Count": "Latausten enimmäismäärä", "Max Upload Size": "Latausten enimmäiskoko", @@ -777,8 +789,10 @@ "Native": "Natiivi", "New Chat": "Uusi keskustelu", "New Folder": "Uusi kansio", + "New Note": "", "New Password": "Uusi salasana", "new-channel": "uusi-kanava", + "No content": "", "No content found": "Sisältöä ei löytynyt", "No content found in file.": "", "No content to speak": "Ei puhuttavaa sisältöä", @@ -793,6 +807,7 @@ "No model IDs": "Ei mallitunnuksia", "No models found": "Malleja ei löytynyt", "No models selected": "Malleja ei ole valittu", + "No Notes": "", "No results found": "Ei tuloksia", "No search query generated": "Hakukyselyä ei luotu", "No source available": "Lähdettä ei saatavilla", @@ -801,6 +816,7 @@ "None": "Ei mikään", "Not factually correct": "Ei faktuaalisesti oikein", "Not helpful": "Ei hyödyllinen", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Huomautus: Jos asetat vähimmäispistemäärän, haku palauttaa vain sellaiset asiakirjat, joiden pistemäärä on vähintään vähimmäismäärä.", "Notes": "Muistiinpanot", "Notification Sound": "Ilmoitusääni", @@ -910,6 +926,7 @@ "Read": "Lue", "Read Aloud": "Lue ääneen", "Reasoning Effort": "", + "Record": "", "Record voice": "Nauhoita ääntä", "Redirecting you to Open WebUI Community": "Ohjataan sinut OpenWebUI-yhteisöön", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Etsitty {{count}} sivulta", "Searching \"{{searchQuery}}\"": "Haetaan \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Haetaan tietämystä \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng-kyselyn verkko-osoite", "See readme.md for instructions": "Katso ohjeet readme.md-tiedostosta", "See what's new": "Katso, mitä uutta", @@ -1181,6 +1199,7 @@ "Unpin": "Irrota kiinnitys", "Unravel secrets": "Avaa salaisuuksia", "Untagged": "Ei tageja", + "Untitled": "", "Update": "Päivitä", "Update and Copy Link": "Päivitä ja kopioi linkki", "Update for the latest features and improvements.": "Päivitä uusimpiin ominaisuuksiin ja parannuksiin.", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index ae026de44..31c2d0793 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(par ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(par exemple `sh webui.sh --api`)", "(latest)": "(dernier)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modèles }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Mauvaise réponse", "Banners": "Banniers", "Base Model (From)": "Modèle de base (à partir de)", + "Base URL": "", "Batch Size (num_batch)": "Taille du lot (num_batch)", "before": "avant", "Being lazy": "Être fainéant", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Clé API Brave Search", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Créer une nouvelle clé principale", "Create new secret key": "Créer une nouvelle clé secrète", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Créé à", "Created At": "Créé le", "Created by": "Créé par", @@ -302,6 +307,7 @@ "Delete function?": "Supprimer la fonction ?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Supprimer la prompt ?", "delete this link": "supprimer ce lien", "Delete tool?": "Effacer l'outil ?", @@ -357,7 +363,7 @@ "Download Database": "Télécharger la base de données", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Déposez des fichiers ici pour les ajouter à la conversation", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "par ex. '30s', '10 min'. Les unités de temps valides sont 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Modifier", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Entrez la taille de bloc", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Général", + "Generate": "", "Generate an image": "", "Generate Image": "Générer une image", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "Import de fonctions", "Import Models": "Importer des modèles", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importer des Enseignes", "Import Tools": "Outils d'importation", @@ -721,6 +732,7 @@ "Manage Pipelines": "Gérer les pipelines", "Manage Tool Servers": "", "March": "Mars", + "Max Speakers": "", "Max Tokens (num_predict)": "Tokens maximaux (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Nouvelle conversation", "New Folder": "", + "New Note": "", "New Password": "Nouveau mot de passe", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "Rien à signaler", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Aucun résultat trouvé", "No search query generated": "Aucune requête de recherche générée", "No source available": "Aucune source n'est disponible", @@ -801,6 +816,7 @@ "None": "Aucun", "Not factually correct": "Non factuellement correct", "Not helpful": "", + "Note not found": "", "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 : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Lire à haute voix", "Reasoning Effort": "", + "Record": "", "Record voice": "Enregistrer la voix", "Redirecting you to Open WebUI Community": "Redirection vers la communauté OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Recherche de « {{searchQuery}} »", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "URL de recherche Searxng", "See readme.md for instructions": "Voir le fichier readme.md pour les instructions", "See what's new": "Découvrez les nouvelles fonctionnalités", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "Mise à jour", "Update and Copy Link": "Mettre à jour et copier le lien", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 21f4161b1..35ec9dd21 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(par ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(par exemple `sh webui.sh --api`)", "(latest)": "(dernière version)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "Nombre d'outils disponibles {{COUNT}}", @@ -138,6 +139,7 @@ "Bad Response": "Mauvaise réponse", "Banners": "Bannières", "Base Model (From)": "Modèle de base (à partir de)", + "Base URL": "", "Batch Size (num_batch)": "Batch Size (num_batch)", "before": "avant", "Being lazy": "Être fainéant", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Clé d'abonnement Bing Search V7", "Bocha Search API Key": "Clé API Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Clé API Brave Search", "By {{name}}": "Par {{name}}", "Bypass Embedding and Retrieval": "Ignorer l'Embedding et le Retrieval", @@ -265,6 +268,8 @@ "Create Knowledge": "Créer une connaissance", "Create new key": "Créer une nouvelle clé", "Create new secret key": "Créer une nouvelle clé secrète", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Créé le", "Created At": "Créé le", "Created by": "Créé par", @@ -302,6 +307,7 @@ "Delete function?": "Supprimer la fonction ?", "Delete Message": "Supprimer le message", "Delete message?": "Supprimer le message ?", + "Delete note?": "", "Delete prompt?": "Supprimer le prompt ?", "delete this link": "supprimer ce lien", "Delete tool?": "Effacer l'outil ?", @@ -357,7 +363,7 @@ "Download Database": "Télécharger la base de données", "Drag and drop a file to upload or select a file to view": "Glissez et déposez un fichier pour le télécharger ou sélectionnez un fichier à visualiser", "Draw": "Match nul", - "Drop any files here to add to the conversation": "Déposez des fichiers ici pour les ajouter à la conversation", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "par ex. '30s', '10 min'. Les unités de temps valides sont 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "par ex. \"json\" ou un schéma JSON", "e.g. 60": "par ex. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "par ex. mon_filtre", "e.g. my_tools": "par ex. mes_outils", "e.g. Tools for performing various operations": "par ex. Outils pour effectuer diverses opérations", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "par ex., en-US, ja-JP (laisser vide pour détection automatique)", "Edit": "Modifier", "Edit Arena Model": "Modifier le modèle d'arène", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Entrez la taille des chunks", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Entrez la description", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Entrez l'url du serveur Docling", "Enter Document Intelligence Endpoint": "Entrez le point d'extension d'Intelligence documentaire", "Enter Document Intelligence Key": "Entrez la clé du sevice d'Intelligence documentaire", @@ -483,6 +492,7 @@ "Enter Your Full Name": "Entrez votre nom complet", "Enter your message": "Entrez votre message", "Enter your name": "Entrez votre nom", + "Enter Your Name": "", "Enter your new password": "Entrez votre nouveau mot de passe", "Enter Your Password": "Entrez votre mot de passe", "Enter Your Role": "Entrez votre rôle", @@ -586,6 +596,7 @@ "Gemini API Config": "Configuration de l'API de Gemini", "Gemini API Key is required.": "La clé d'API de Gemini est requise", "General": "Général", + "Generate": "", "Generate an image": "Génère une image", "Generate Image": "Générer une image", "Generate prompt pair": "Générer une paire de prompt", @@ -636,6 +647,7 @@ "Import Config from JSON File": "Importer la configuration depuis un fichier JSON", "Import Functions": "Importer des fonctions", "Import Models": "Importer des modèles", + "Import Notes": "", "Import Presets": "Importer les préréglages", "Import Prompts": "Importer des prompts", "Import Tools": "Importer des outils", @@ -720,6 +732,7 @@ "Manage Pipelines": "Gérer les pipelines", "Manage Tool Servers": "Gérer les serveurs d'outils", "March": "Mars", + "Max Speakers": "", "Max Tokens (num_predict)": "Nb max de tokens (num_predict)", "Max Upload Count": "Nombre maximal de téléversements", "Max Upload Size": "Limite de taille de téléversement", @@ -776,8 +789,10 @@ "Native": "Natif", "New Chat": "Nouvelle conversation", "New Folder": "Nouveau dossier", + "New Note": "", "New Password": "Nouveau mot de passe", "new-channel": "nouveau-canal", + "No content": "", "No content found": "Aucun contenu trouvé", "No content found in file.": "", "No content to speak": "Rien à signaler", @@ -792,6 +807,7 @@ "No model IDs": "Aucun ID de modèle", "No models found": "Aucun modèle trouvé", "No models selected": "Aucun modèle sélectionné", + "No Notes": "", "No results found": "Aucun résultat trouvé", "No search query generated": "Aucune requête de recherche générée", "No source available": "Aucune source n'est disponible", @@ -800,6 +816,7 @@ "None": "Aucun", "Not factually correct": "Non factuellement correct", "Not helpful": "Pas utile", + "Note not found": "", "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 : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.", "Notes": "Notes", "Notification Sound": "Son de notification", @@ -909,6 +926,7 @@ "Read": "Lire", "Read Aloud": "Lire à haute voix", "Reasoning Effort": "Effort de raisonnement", + "Record": "", "Record voice": "Enregistrer la voix", "Redirecting you to Open WebUI Community": "Redirection vers la communauté OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Réduit la probabilité de générer du contenu incohérent. Une valeur plus élevée (ex. : 100) produira des réponses plus variées, tandis qu'une valeur plus faible (ex. : 10) sera plus conservatrice.", @@ -978,6 +996,7 @@ "Searched {{count}} sites": "{{count}} sites recherchés", "Searching \"{{searchQuery}}\"": "Recherche de « {{searchQuery}} »", "Searching Knowledge for \"{{searchQuery}}\"": "Recherche des connaissances pour « {{searchQuery}} »", + "Searching the web...": "", "Searxng Query URL": "URL de recherche Searxng", "See readme.md for instructions": "Voir le fichier readme.md pour les instructions", "See what's new": "Découvrez les nouvelles fonctionnalités", @@ -1180,6 +1199,7 @@ "Unpin": "Désépingler", "Unravel secrets": "Dévoiler les secrets", "Untagged": "Pas de tag", + "Untitled": "", "Update": "Mise à jour", "Update and Copy Link": "Mettre à jour et copier le lien", "Update for the latest features and improvements.": "Mettez à jour pour bénéficier des dernières fonctionnalités et améliorations.", @@ -1272,7 +1292,7 @@ "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Vous ne pouvez discuter qu'avec un maximum de {{maxCount}} fichier(s) à la fois.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Vous pouvez personnaliser vos interactions avec les LLM en ajoutant des mémoires à l'aide du bouton « Gérer » ci-dessous, ce qui les rendra plus utiles et mieux adaptées à vos besoins.", "You cannot upload an empty file.": "Vous ne pouvez pas envoyer un fichier vide.", - "You do not have permission to upload files": "Vous n'avez pas l'autorisation de téléverser des fichiers.", + "You do not have permission to upload files.": "", "You have no archived conversations.": "Vous n'avez aucune conversation archivée.", "You have shared this chat": "Vous avez partagé cette conversation.", "You're a helpful assistant.": "Vous êtes un assistant efficace.", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index afc4d4607..568226b45 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(למשל `sh webui.sh --api`)", "(latest)": "(האחרון)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ דגמים }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "תגובה שגויה", "Banners": "באנרים", "Base Model (From)": "דגם בסיס (מ)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "לפני", "Being lazy": "להיות עצלן", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "מפתח API של חיפוש אמיץ", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "צור מפתח חדש", "Create new secret key": "צור מפתח סודי חדש", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "נוצר ב", "Created At": "נוצר ב", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "מחק את הקישור הזה", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "הורד מסד נתונים", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "למשל '30s', '10m'. יחידות זמן חוקיות הן 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "ערוך", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "הזן גודל נתונים", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "כללי", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "ייבוא דגמים", + "Import Notes": "", "Import Presets": "", "Import Prompts": "יבוא פקודות", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "ניהול צינורות", "Manage Tool Servers": "", "March": "מרץ", + "Max Speakers": "", "Max Tokens (num_predict)": "מקסימום אסימונים (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "צ'אט חדש", "New Folder": "", + "New Note": "", "New Password": "סיסמה חדשה", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "לא נמצאו תוצאות", "No search query generated": "לא נוצרה שאילתת חיפוש", "No source available": "אין מקור זמין", @@ -801,6 +816,7 @@ "None": "ללא", "Not factually correct": "לא נכון מבחינה עובדתית", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "קרא בקול", "Reasoning Effort": "", + "Record": "", "Record voice": "הקלט קול", "Redirecting you to Open WebUI Community": "מפנה אותך לקהילת OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "כתובת URL של שאילתת Searxng", "See readme.md for instructions": "ראה את readme.md להוראות", "See what's new": "ראה מה חדש", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "עדכן ושכפל קישור", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 49eee6921..8a314f924 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)", "(latest)": "(latest)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ मॉडल }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "ख़राब प्रतिक्रिया", "Banners": "बैनर", "Base Model (From)": "बेस मॉडल (से)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "पहले", "Being lazy": "आलसी होना", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave सर्च एपीआई कुंजी", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "नया क्रिप्टोग्राफिक क्षेत्र बनाएं", "Create new secret key": "नया क्रिप्टोग्राफिक क्षेत्र बनाएं", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "किस समय बनाया गया", "Created At": "किस समय बनाया गया", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "इस लिंक को हटाएं", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "डेटाबेस डाउनलोड करें", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "जैसे '30s', '10m', मान्य समय इकाइयाँ 's', 'm', 'h' हैं।", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "संपादित करें", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "खंड आकार दर्ज करें", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "सामान्य", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "आयात मॉडल", + "Import Notes": "", "Import Presets": "", "Import Prompts": "प्रॉम्प्ट आयात करें", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "पाइपलाइनों का प्रबंधन करें", "Manage Tool Servers": "", "March": "मार्च", + "Max Speakers": "", "Max Tokens (num_predict)": "अधिकतम टोकन (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "नई चैट", "New Folder": "", + "New Note": "", "New Password": "नया पासवर्ड", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "कोई परिणाम नहीं मिला", "No search query generated": "कोई खोज क्वेरी जनरेट नहीं हुई", "No source available": "कोई स्रोत उपलब्ध नहीं है", @@ -801,6 +816,7 @@ "None": "कोई नहीं", "Not factually correct": "तथ्यात्मक रूप से सही नहीं है", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "जोर से पढ़ें", "Reasoning Effort": "", + "Record": "", "Record voice": "आवाज रिकॉर्ड करना", "Redirecting you to Open WebUI Community": "आपको OpenWebUI समुदाय पर पुनर्निर्देशित किया जा रहा है", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng क्वेरी URL", "See readme.md for instructions": "निर्देशों के लिए readme.md देखें", "See what's new": "देखें, क्या नया है", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "अपडेट करें और लिंक कॉपी करें", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index 75dc92458..22bda1a7a 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(npr. `sh webui.sh --api`)", "(latest)": "(najnovije)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modeli }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Loš odgovor", "Banners": "Baneri", "Base Model (From)": "Osnovni model (Od)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "prije", "Being lazy": "Biti lijen", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave tražilica - API ključ", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Stvori novi ključ", "Create new secret key": "Stvori novi tajni ključ", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Stvoreno", "Created At": "Stvoreno", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "izbriši ovu vezu", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "Preuzmi bazu podataka", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Spustite bilo koje datoteke ovdje za dodavanje u razgovor", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "npr. '30s','10m'. Važeće vremenske jedinice su 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Uredi", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Unesite veličinu dijela", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Općenito", + "Generate": "", "Generate an image": "", "Generate Image": "Gneriraj sliku", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "Uvoz modela", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Uvoz prompta", "Import Tools": "Uvoz alata", @@ -721,6 +732,7 @@ "Manage Pipelines": "Upravljanje cjevovodima", "Manage Tool Servers": "", "March": "Ožujak", + "Max Speakers": "", "Max Tokens (num_predict)": "Maksimalan broj tokena (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Novi razgovor", "New Folder": "", + "New Note": "", "New Password": "Nova lozinka", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Nema rezultata", "No search query generated": "Nije generiran upit za pretraživanje", "No source available": "Nema dostupnog izvora", @@ -801,6 +816,7 @@ "None": "Ništa", "Not factually correct": "Nije činjenično točno", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Napomena: Ako postavite minimalnu ocjenu, pretraga će vratiti samo dokumente s ocjenom većom ili jednakom minimalnoj ocjeni.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Čitaj naglas", "Reasoning Effort": "", + "Record": "", "Record voice": "Snimanje glasa", "Redirecting you to Open WebUI Community": "Preusmjeravanje na OpenWebUI zajednicu", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng URL upita", "See readme.md for instructions": "Pogledajte readme.md za upute", "See what's new": "Pogledajte što je novo", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "Ažuriraj i kopiraj vezu", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index ac8661d6c..56dba8ed1 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(pl. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(pl. `sh webui.sh --api`)", "(latest)": "(legújabb)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ modellek }}", "{{COUNT}} Available Tools": "{{COUNT}} Elérhető eszköz", @@ -138,6 +139,7 @@ "Bad Response": "Rossz válasz", "Banners": "Bannerek", "Base Model (From)": "Alap modell (Forrás)", + "Base URL": "", "Batch Size (num_batch)": "Köteg méret (num_batch)", "before": "előtt", "Being lazy": "Lustaság", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Search V7 előfizetési kulcs", "Bocha Search API Key": "Bocha Search API kulcs", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Specifikus tokenek növelése vagy büntetése korlátozott válaszokhoz. Az elfogultság értékei -100 és 100 között lesznek rögzítve (beleértve). (Alapértelmezett: nincs)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API kulcs", "By {{name}}": "Készítette: {{name}}", "Bypass Embedding and Retrieval": "Beágyazás és visszakeresés kihagyása", @@ -265,6 +268,8 @@ "Create Knowledge": "Tudás létrehozása", "Create new key": "Új kulcs létrehozása", "Create new secret key": "Új titkos kulcs létrehozása", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Létrehozva", "Created At": "Létrehozva", "Created by": "Létrehozta", @@ -302,6 +307,7 @@ "Delete function?": "Törli a funkciót?", "Delete Message": "Üzenet törlése", "Delete message?": "Üzenet törlése?", + "Delete note?": "", "Delete prompt?": "Törli a promptot?", "delete this link": "link törlése", "Delete tool?": "Törli az eszközt?", @@ -357,7 +363,7 @@ "Download Database": "Adatbázis letöltése", "Drag and drop a file to upload or select a file to view": "Húzz ide egy fájlt a feltöltéshez vagy válassz fájlt a megtekintéshez", "Draw": "Rajzolás", - "Drop any files here to add to the conversation": "Húzz ide fájlokat a beszélgetéshez való hozzáadáshoz", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "pl. '30s','10m'. Érvényes időegységek: 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "pl. \"json\" vagy egy JSON séma", "e.g. 60": "pl. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "pl. az_en_szűrőm", "e.g. my_tools": "pl. az_en_eszkozeim", "e.g. Tools for performing various operations": "pl. Eszközök különböző műveletek elvégzéséhez", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Szerkesztés", "Edit Arena Model": "Arena modell szerkesztése", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Add meg a darab méretet", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Add meg vesszővel elválasztott \"token:bias_érték\" párokat (példa: 5432:100, 413:-100)", "Enter description": "Add meg a leírást", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Add meg a Docling szerver URL-t", "Enter Document Intelligence Endpoint": "Add meg a dokumentum intelligencia végpontot", "Enter Document Intelligence Key": "Add meg a dokumentum intelligencia kulcsot", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API konfiguráció", "Gemini API Key is required.": "Gemini API kulcs szükséges.", "General": "Általános", + "Generate": "", "Generate an image": "Kép generálása", "Generate Image": "Kép generálása", "Generate prompt pair": "Prompt pár generálása", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Konfiguráció importálása JSON fájlból", "Import Functions": "Funkciók importálása", "Import Models": "Modellek importálása", + "Import Notes": "", "Import Presets": "Előre beállított importálás", "Import Prompts": "Promptok importálása", "Import Tools": "Eszközök importálása", @@ -721,6 +732,7 @@ "Manage Pipelines": "Folyamatok kezelése", "Manage Tool Servers": "Eszközszerverek kezelése", "March": "Március", + "Max Speakers": "", "Max Tokens (num_predict)": "Maximum tokenek (num_predict)", "Max Upload Count": "Maximum feltöltések száma", "Max Upload Size": "Maximum feltöltési méret", @@ -777,8 +789,10 @@ "Native": "Natív", "New Chat": "Új beszélgetés", "New Folder": "Új mappa", + "New Note": "", "New Password": "Új jelszó", "new-channel": "új csatorna", + "No content": "", "No content found": "Nem található tartalom", "No content found in file.": "", "No content to speak": "Nincs felolvasható tartalom", @@ -793,6 +807,7 @@ "No model IDs": "Nincs modell azonosító", "No models found": "Nem található modell", "No models selected": "Nincs kiválasztott modell", + "No Notes": "", "No results found": "Nincs találat", "No search query generated": "Nem generálódott keresési lekérdezés", "No source available": "Nincs elérhető forrás", @@ -801,6 +816,7 @@ "None": "Nincs", "Not factually correct": "Tényszerűen nem helyes", "Not helpful": "Nem segítőkész", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Megjegyzés: Ha minimum pontszámot állít be, a keresés csak olyan dokumentumokat ad vissza, amelyek pontszáma nagyobb vagy egyenlő a minimum pontszámmal.", "Notes": "Jegyzetek", "Notification Sound": "Értesítési hang", @@ -910,6 +926,7 @@ "Read": "Olvasás", "Read Aloud": "Felolvasás", "Reasoning Effort": "Érvelési erőfeszítés", + "Record": "", "Record voice": "Hang rögzítése", "Redirecting you to Open WebUI Community": "Átirányítás az OpenWebUI közösséghez", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Csökkenti a ostobaság generálásának valószínűségét. Magasabb érték (pl. 100) változatosabb válaszokat ad, míg alacsonyabb érték (pl. 10) konzervatívabb lesz.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "{{count}} oldal keresése megtörtént", "Searching \"{{searchQuery}}\"": "Keresés: \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Tudásbázis keresése: \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng lekérdezési URL", "See readme.md for instructions": "Lásd a readme.md fájlt az útmutatásért", "See what's new": "Újdonságok megtekintése", @@ -1181,6 +1199,7 @@ "Unpin": "Rögzítés feloldása", "Unravel secrets": "Titkok megfejtése", "Untagged": "Címkézetlen", + "Untitled": "", "Update": "Frissítés", "Update and Copy Link": "Frissítés és link másolása", "Update for the latest features and improvements.": "Frissítsen a legújabb funkciókért és fejlesztésekért.", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index 6be73d5b2..f44bd36dd 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(contoh: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(contoh: `sh webui.sh --api`)", "(latest)": "(terbaru)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Respons Buruk", "Banners": "Spanduk", "Base Model (From)": "Model Dasar (Dari)", + "Base URL": "", "Batch Size (num_batch)": "Ukuran Batch (num_batch)", "before": "sebelum", "Being lazy": "Menjadi malas", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Kunci API Pencarian Berani", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Buat kunci baru", "Create new secret key": "Buat kunci rahasia baru", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Dibuat di", "Created At": "Dibuat di", "Created by": "Dibuat oleh", @@ -302,6 +307,7 @@ "Delete function?": "Fungsi hapus?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Perintah hapus?", "delete this link": "hapus tautan ini", "Delete tool?": "Hapus alat?", @@ -357,7 +363,7 @@ "Download Database": "Unduh Basis Data", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Letakkan file apa pun di sini untuk ditambahkan ke percakapan", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "misalnya '30-an', '10m'. Satuan waktu yang valid adalah 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Edit", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Masukkan Ukuran Potongan", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Umum", + "Generate": "", "Generate an image": "", "Generate Image": "Menghasilkan Gambar", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "Fungsi Impor", "Import Models": "Model Impor", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Petunjuk Impor", "Import Tools": "Alat Impor", @@ -721,6 +732,7 @@ "Manage Pipelines": "Mengelola Saluran Pipa", "Manage Tool Servers": "", "March": "Maret", + "Max Speakers": "", "Max Tokens (num_predict)": "Token Maksimal (num_prediksi)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Obrolan Baru", "New Folder": "", + "New Note": "", "New Password": "Kata Sandi Baru", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "Tidak ada konten untuk dibicarakan", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Tidak ada hasil yang ditemukan", "No search query generated": "Tidak ada permintaan pencarian yang dibuat", "No source available": "Tidak ada sumber yang tersedia", @@ -801,6 +816,7 @@ "None": "Tidak ada", "Not factually correct": "Tidak benar secara faktual", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Catatan: Jika Anda menetapkan skor minimum, pencarian hanya akan mengembalikan dokumen dengan skor yang lebih besar atau sama dengan skor minimum.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Baca dengan Keras", "Reasoning Effort": "", + "Record": "", "Record voice": "Rekam suara", "Redirecting you to Open WebUI Community": "Mengarahkan Anda ke Komunitas OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Mencari \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "URL Kueri Pencarian Searxng", "See readme.md for instructions": "Lihat readme.md untuk instruksi", "See what's new": "Lihat apa yang baru", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "Memperbarui", "Update and Copy Link": "Perbarui dan Salin Tautan", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 6952a4bf8..005de73c1 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(m.sh. `sh webui.sh --api --api-auth username_password `)", "(e.g. `sh webui.sh --api`)": "(m.sh. `sh webui.sh --api`)", "(latest)": "(is déanaí)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} Uirlisí ar Fáil", @@ -138,6 +139,7 @@ "Bad Response": "Droch-fhreagra", "Banners": "Meirgí", "Base Model (From)": "Múnla Bonn (Ó)", + "Base URL": "", "Batch Size (num_batch)": "Méid Baisc (num_batch)", "before": "roimh", "Being lazy": "A bheith leisciúil", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Eochair Síntiúis Bing Cuardach V7", "Bocha Search API Key": "Eochair API Cuardach Bocha", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Treisiú nó pionós a ghearradh ar chomharthaí sonracha as freagraí srianta. Déanfar luachanna laofachta a chlampáil idir -100 agus 100 (san áireamh). (Réamhshocrú: ceann ar bith)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Eochair API Cuardaigh Brave", "By {{name}}": "Le {{name}}", "Bypass Embedding and Retrieval": "Seachbhóthar Leabú agus Aisghabháil", @@ -265,6 +268,8 @@ "Create Knowledge": "Cruthaigh Eolais", "Create new key": "Cruthaigh eochair nua", "Create new secret key": "Cruthaigh eochair rúnda nua", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Cruthaithe ag", "Created At": "Cruthaithe Ag", "Created by": "Cruthaithe ag", @@ -302,6 +307,7 @@ "Delete function?": "Scrios feidhm?", "Delete Message": "Scrios Teachtaireacht", "Delete message?": "Scrios teachtaireacht?", + "Delete note?": "", "Delete prompt?": "Scrios leid?", "delete this link": "scrios an nasc seo", "Delete tool?": "Uirlis a scriosadh?", @@ -357,7 +363,7 @@ "Download Database": "Íoslódáil Bunachair", "Drag and drop a file to upload or select a file to view": "Tarraing agus scaoil comhad le huaslódáil nó roghnaigh comhad le féachaint air", "Draw": "Tarraing", - "Drop any files here to add to the conversation": "Scaoil aon chomhaid anseo le cur leis an gcomhrá", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "m.sh. '30s', '10m'. Is iad aonaid ama bailí ná 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "m.sh. \"json\" nó scéimre JSON", "e.g. 60": "m.sh. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "m.sh. mo_scagaire", "e.g. my_tools": "m.sh. mo_uirlisí", "e.g. Tools for performing various operations": "m.sh. Uirlisí chun oibríochtaí éagsúla a dhéanamh", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "m.sh., en-US, ja-JP (fág bán le haghaidh uathbhraite)", "Edit": "Cuir in eagar", "Edit Arena Model": "Cuir Samhail Airéine in Eagar", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Cuir isteach Méid an Smután", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Cuir isteach péirí camóg-scartha \"comhartha:luach laofachta\" (mar shampla: 5432:100, 413:-100)", "Enter description": "Iontráil cur síos", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Cuir isteach URL Freastalaí Doling", "Enter Document Intelligence Endpoint": "Iontráil Críochphointe Faisnéise Doiciméid", "Enter Document Intelligence Key": "Iontráil Eochair Faisnéise Doiciméad", @@ -587,6 +596,7 @@ "Gemini API Config": "Cumraíocht Gemini API", "Gemini API Key is required.": "Tá Eochair Gemini API ag teastáil.", "General": "Ginearálta", + "Generate": "", "Generate an image": "Gin íomhá", "Generate Image": "Gin Íomhá", "Generate prompt pair": "Gin péire pras", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Cumraíocht Iompórtáil ó Chomhad JSON", "Import Functions": "Feidhmeanna Iom", "Import Models": "Múnlaí a Iompórtáil", + "Import Notes": "", "Import Presets": "Réamhshocruithe Iompórtáil", "Import Prompts": "Leideanna Iompórtála", "Import Tools": "Uirlisí Iomp", @@ -721,6 +732,7 @@ "Manage Pipelines": "Bainistigh píblín", "Manage Tool Servers": "Bainistigh Freastalaithe Uirlisí", "March": "Márta", + "Max Speakers": "", "Max Tokens (num_predict)": "Comharthaí Uasta (num_predicate)", "Max Upload Count": "Líon Uaslódála Max", "Max Upload Size": "Méid Uaslódála Max", @@ -777,8 +789,10 @@ "Native": "Dúchasach", "New Chat": "Comhrá Nua", "New Folder": "Fillteán Nua", + "New Note": "", "New Password": "Pasfhocal Nua", "new-channel": "nua-chainéil", + "No content": "", "No content found": "Níor aimsíodh aon ábhar", "No content found in file.": "", "No content to speak": "Níl aon ábhar le labhairt", @@ -793,6 +807,7 @@ "No model IDs": "Gan IDanna múnla", "No models found": "Níor aimsíodh aon mhúnlaí", "No models selected": "Níor roghnaíodh aon mhúnlaí", + "No Notes": "", "No results found": "Níl aon torthaí le fáil", "No search query generated": "Ní ghintear aon cheist cuardaigh", "No source available": "Níl aon fhoinse ar fáil", @@ -801,6 +816,7 @@ "None": "Dada", "Not factually correct": "Níl sé ceart go fírineach", "Not helpful": "Gan a bheith cabhrach", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nóta: Má shocraíonn tú íosscór, ní thabharfaidh an cuardach ach doiciméid a bhfuil scór níos mó ná nó cothrom leis an scór íosta ar ais.", "Notes": "Nótaí", "Notification Sound": "Fuaim Fógra", @@ -910,6 +926,7 @@ "Read": "Léigh", "Read Aloud": "Léigh Ard", "Reasoning Effort": "Iarracht Réasúnúcháin", + "Record": "", "Record voice": "Taifead guth", "Redirecting you to Open WebUI Community": "Tú a atreorú chuig OpenWebUI Community", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Laghdaíonn sé an dóchúlacht go giniúint nonsense. Tabharfaidh luach níos airde (m.sh. 100) freagraí níos éagsúla, agus beidh luach níos ísle (m.sh. 10) níos coimeádaí.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Cuardaíodh {{count}} suíomh", "Searching \"{{searchQuery}}\"": "Ag cuardach \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Cuardach Eolas do \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "URL ceisteanna cuardaigh", "See readme.md for instructions": "Féach readme.md le haghaidh treoracha", "See what's new": "Féach cad atá nua", @@ -1181,6 +1199,7 @@ "Unpin": "Díphoráil", "Unravel secrets": "Rúin a réiteach", "Untagged": "Gan chlib", + "Untitled": "", "Update": "Nuashonraigh", "Update and Copy Link": "Nuashonraigh agus Cóipeáil Nasc", "Update for the latest features and improvements.": "Nuashonrú le haghaidh na gnéithe agus na feabhsuithe is déanaí.", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 75cab5392..9eea69ab4 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(p.e. `sh webui.sh --api`)", "(latest)": "(ultima)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modelli }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Risposta non valida", "Banners": "Banner", "Base Model (From)": "Modello base (da)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "prima", "Being lazy": "Essere pigri", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Chiave API di ricerca Brave", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Crea nuova chiave", "Create new secret key": "Crea nuova chiave segreta", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Creato il", "Created At": "Creato il", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "elimina questo link", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "Scarica database", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Trascina qui i file da aggiungere alla conversazione", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "ad esempio '30s','10m'. Le unità di tempo valide sono 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Modifica", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Inserisci la dimensione chunk", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Generale", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "Importazione di modelli", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importa prompt", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "Gestire le pipeline", "Manage Tool Servers": "", "March": "Marzo", + "Max Speakers": "", "Max Tokens (num_predict)": "Numero massimo di gettoni (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Nuova chat", "New Folder": "", + "New Note": "", "New Password": "Nuova password", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Nessun risultato trovato", "No search query generated": "Nessuna query di ricerca generata", "No source available": "Nessuna fonte disponibile", @@ -801,6 +816,7 @@ "None": "Nessuno", "Not factually correct": "Non corretto dal punto di vista fattuale", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: se imposti un punteggio minimo, la ricerca restituirà solo i documenti con un punteggio maggiore o uguale al punteggio minimo.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Leggi ad alta voce", "Reasoning Effort": "", + "Record": "", "Record voice": "Registra voce", "Redirecting you to Open WebUI Community": "Reindirizzamento alla comunità OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng Query URL", "See readme.md for instructions": "Vedi readme.md per le istruzioni", "See what's new": "Guarda le novità", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "Aggiorna e copia link", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 473dd5231..fc9879500 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例: `sh webui.sh --api`)", "(latest)": "(最新)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ モデル }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "応答が悪い", "Banners": "バナー", "Base Model (From)": "ベースモデル (From)", + "Base URL": "", "Batch Size (num_batch)": "バッチサイズ (num_batch)", "before": "より前", "Being lazy": "怠惰な", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search APIキー", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "ナレッジベース作成", "Create new key": "新しいキーを作成", "Create new secret key": "新しいシークレットキーを作成", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "作成日時", "Created At": "作成日時", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "Functionを削除しますか?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "プロンプトを削除しますか?", "delete this link": "このリンクを削除します", "Delete tool?": "ツールを削除しますか?", @@ -357,7 +363,7 @@ "Download Database": "データベースをダウンロード", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例: '30秒'、'10分'。有効な時間単位は '秒'、'分'、'時間' です。", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "編集", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "チャンクサイズを入力してください", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "一般", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "設定をJSONファイルからインポート", "Import Functions": "Functionのインポート", "Import Models": "モデルのインポート", + "Import Notes": "", "Import Presets": "", "Import Prompts": "プロンプトをインポート", "Import Tools": "ツールのインポート", @@ -721,6 +732,7 @@ "Manage Pipelines": "パイプラインの管理", "Manage Tool Servers": "", "March": "3月", + "Max Speakers": "", "Max Tokens (num_predict)": "最大トークン数 (num_predict)", "Max Upload Count": "最大アップロード数", "Max Upload Size": "最大アップロードサイズ", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "新しいチャット", "New Folder": "", + "New Note": "", "New Password": "新しいパスワード", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "結果が見つかりません", "No search query generated": "検索クエリは生成されません", "No source available": "使用可能なソースがありません", @@ -801,6 +816,7 @@ "None": "何一つ", "Not factually correct": "実事上正しくない", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "通知音", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "読み上げ", "Reasoning Effort": "", + "Record": "", "Record voice": "音声を録音", "Redirecting you to Open WebUI Community": "OpenWebUI コミュニティにリダイレクトしています", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng クエリ URL", "See readme.md for instructions": "手順については readme.md を参照してください", "See what's new": "新機能を見る", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "リンクの更新とコピー", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index d929dc0c7..b73f612d8 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(მაგ: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(მაგ: `sh webui.sh --api`)", "(latest)": "(უახლესი)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ მოდელები }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "არასწორი პასუხი", "Banners": "ბანერები", "Base Model (From)": "საბაზისო მოდელი (საიდან)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "მითითებულ დრომდე", "Being lazy": "ზარმაცობა", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API-ის გასაღები", "By {{name}}": "ავტორი {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "ახალი გასაღების შექმნა", "Create new secret key": "ახალი საიდუმლო გასაღების შექმნა", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "შექმნის დრო", "Created At": "შექმნის დრო", "Created by": "ავტორი", @@ -302,6 +307,7 @@ "Delete function?": "წავშალო ფუნქცია?", "Delete Message": "შეტყობინების წაშლა", "Delete message?": "წავშალო შეტყობინება?", + "Delete note?": "", "Delete prompt?": "წავშალო მოთხოვნის ზოლი?", "delete this link": "ამ ბმული წაშლა", "Delete tool?": "წავშალო ხელსაწყო?", @@ -357,7 +363,7 @@ "Download Database": "მონაცემთა ბაზის გადმოწერა", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "მაგ: '30წ', '10მ'. მოქმედი დროის ერთეულები: 'წ', 'წთ', 'სთ'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "მაგ: 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "მაგ: ჩემი_ფილტრი", "e.g. my_tools": "მაგ: ჩემი_ხელსაწყოები", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "ჩასწორება", "Edit Arena Model": "არენის მოდელის ჩასწორება", @@ -412,6 +419,8 @@ "Enter Chunk Size": "შეიყვანე ფრაგმენტის ზომა", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "შეიყვანეთ აღწერა", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "ზოგადი", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "მოდელების შემოტანა", + "Import Notes": "", "Import Presets": "პრესეტების შემოტანა", "Import Prompts": "მოთხოვნების შემოტანა", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "მილსადენების მართვა", "Manage Tool Servers": "", "March": "მარტი", + "Max Speakers": "", "Max Tokens (num_predict)": "მაქს. ტოკეტები (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "საკუთარი", "New Chat": "ახალი მიმოწერა", "New Folder": "ახალი საქაღალდე", + "New Note": "", "New Password": "ახალი პაროლი", "new-channel": "new-channel", + "No content": "", "No content found": "შემცველობა აღმოჩენილი არაა", "No content found in file.": "", "No content to speak": "წარმოსათქმელი შემცველობის გარეშე", @@ -793,6 +807,7 @@ "No model IDs": "მოდელის ID-ების გარეშე", "No models found": "მოდელები აღმოჩენილი არაა", "No models selected": "მოდელები არჩეული არაა", + "No Notes": "", "No results found": "შედეგების გარეშე", "No search query generated": "ძებნის მოთხოვნა არ შექმნილა", "No source available": "წყარო ხელმისაწვდომი არაა", @@ -801,6 +816,7 @@ "None": "არცერთი", "Not factually correct": "მთლად სწორი არაა", "Not helpful": "სასარგებლო არაა", + "Note not found": "", "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": "შენიშვნები", "Notification Sound": "გაფრთხილების ხმა", @@ -910,6 +926,7 @@ "Read": "წაკითხვა", "Read Aloud": "ხმამაღლა წაკითხვა", "Reasoning Effort": "", + "Record": "", "Record voice": "ხმის ჩაწერა", "Redirecting you to Open WebUI Community": "მიმდინარეობს გადამისამართება OpenWebUI-ის საზოგადოების საიტზე", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "მოძებნილია {{count}} საიტზე", "Searching \"{{searchQuery}}\"": "მიმდინარეობს ძებნა \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng Query URL", "See readme.md for instructions": "ინსტრუქციებისთვის იხილეთ readme.md", "See what's new": "ნახეთ, რა არის ახალი", @@ -1181,6 +1199,7 @@ "Unpin": "ჩამოხსნა", "Unravel secrets": "", "Untagged": "ჭდის გარეშე", + "Untitled": "", "Update": "განახლება", "Update and Copy Link": "განახლება და ბმულის კოპირება", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 42435e30d..9cacb2baf 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(예: `sh webui.sh --api --api-auth 사용자이름_비밀번호`)", "(e.g. `sh webui.sh --api`)": "(예: `sh webui.sh --api`)", "(latest)": "(최근)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "사용 가능한 도구 {{COUNT}}개", @@ -138,6 +139,7 @@ "Bad Response": "잘못된 응답", "Banners": "배너", "Base Model (From)": "기본 모델(시작)", + "Base URL": "", "Batch Size (num_batch)": "배치 크기 (num_batch)", "before": "이전", "Being lazy": "게으름 피우기", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Search V7 구독 키", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API 키", "By {{name}}": "작성자: {{name}}", "Bypass Embedding and Retrieval": "임베딩 검색 우회", @@ -265,6 +268,8 @@ "Create Knowledge": "지식 생성", "Create new key": "새로운 키 생성", "Create new secret key": "새로운 비밀 키 생성", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "생성일", "Created At": "생성일", "Created by": "생성자", @@ -302,6 +307,7 @@ "Delete function?": "함수를 삭제하시겠습니까?", "Delete Message": "메시지 삭제", "Delete message?": "메시지를 삭제하시겠습니까?", + "Delete note?": "", "Delete prompt?": "프롬프트를 삭제하시겠습니까?", "delete this link": "이 링크를 삭제합니다.", "Delete tool?": "도구를 삭제하시겠습니까?", @@ -357,7 +363,7 @@ "Download Database": "데이터베이스 다운로드", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "예: '30초','10분'. 유효한 시간 단위는 '초', '분', '시'입니다.", "e.g. \"json\" or a JSON schema": "예: \\\"json\\\" 또는 JSON 스키마", "e.g. 60": "예: 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "예: my_filter", "e.g. my_tools": "예: my_tools", "e.g. Tools for performing various operations": "예: 다양한 작업을 수행하는 도구", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "예: en-US, ja-JP (자동 감지를 위해 비워 두세요)", "Edit": "편집", "Edit Arena Model": "아레나 모델 편집", @@ -412,6 +419,8 @@ "Enter Chunk Size": "청크 크기 입력", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "쉼표로 구분된 \\\"토큰:편향_값\\\" 쌍 입력 (예: 5432:100, 413:-100)", "Enter description": "설명 입력", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Docling 서버 URL 입력", "Enter Document Intelligence Endpoint": "Document Intelligence 엔드포인트 입력", "Enter Document Intelligence Key": "Document Intelligence 키 입력", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API 구성", "Gemini API Key is required.": "Gemini API 키가 필요합니다.", "General": "일반", + "Generate": "", "Generate an image": "", "Generate Image": "이미지 생성", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "JSON 파일에서 Config 불러오기", "Import Functions": "함수 가져오기", "Import Models": "모델 가져오기", + "Import Notes": "", "Import Presets": "프리셋 가져오기", "Import Prompts": "프롬프트 가져오기", "Import Tools": "도구 가져오기", @@ -721,6 +732,7 @@ "Manage Pipelines": "파이프라인 관리", "Manage Tool Servers": "툴 서버 관리", "March": "3월", + "Max Speakers": "", "Max Tokens (num_predict)": "최대 토큰(num_predict)", "Max Upload Count": "업로드 최대 수", "Max Upload Size": "업로드 최대 사이즈", @@ -777,8 +789,10 @@ "Native": "네이티브", "New Chat": "새 채팅", "New Folder": "", + "New Note": "", "New Password": "새 비밀번호", "new-channel": "", + "No content": "", "No content found": "내용을 찾을 수 없음", "No content found in file.": "파일에서 내용을 찾을 수 없습니다.", "No content to speak": "음성 출력할 내용을 찾을 수 없음", @@ -793,6 +807,7 @@ "No model IDs": "모델 ID 없음", "No models found": "모델 없음", "No models selected": "", + "No Notes": "", "No results found": "결과 없음", "No search query generated": "검색어가 생성되지 않았습니다.", "No source available": "사용 가능한 소스 없음", @@ -801,6 +816,7 @@ "None": "없음", "Not factually correct": "사실상 맞지 않음", "Not helpful": "도움이 되지않음", + "Note not found": "", "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": "노트", "Notification Sound": "알림 소리", @@ -910,6 +926,7 @@ "Read": "읽기", "Read Aloud": "읽어주기", "Reasoning Effort": "추론 난이도", + "Record": "", "Record voice": "음성 녹음", "Redirecting you to Open WebUI Community": "OpenWebUI 커뮤니티로 리디렉션 중", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "{{count}}개 사이트 검색됨", "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" 검색 중", "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\"위한 지식 기반 검색 중", + "Searching the web...": "", "Searxng Query URL": "Searxng 쿼리 URL", "See readme.md for instructions": "설명은 readme.md를 참조하세요.", "See what's new": "새로운 기능 보기", @@ -1181,6 +1199,7 @@ "Unpin": "고정 해제", "Unravel secrets": "비밀 풀기", "Untagged": "태그 해제", + "Untitled": "", "Update": "업데이트", "Update and Copy Link": "링크 업데이트 및 복사", "Update for the latest features and improvements.": "이번 업데이트의 새로운 기능과 개선", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 0fa6b7549..27e03b284 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(pvz. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(pvz. `sh webui.sh --api`)", "(latest)": "(naujausias)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Neteisingas atsakymas", "Banners": "Baneriai", "Base Model (From)": "Bazinis modelis", + "Base URL": "", "Batch Size (num_batch)": "Batch dydis", "before": "prieš", "Being lazy": "Būvimas tingiu", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API raktas", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Sukurti naują raktą", "Create new secret key": "Sukurti naują slaptą raktą", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Sukurta", "Created At": "Sukurta", "Created by": "Sukurta", @@ -302,6 +307,7 @@ "Delete function?": "Ištrinti funkciją", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Ištrinti užklausą?", "delete this link": "Ištrinti nuorodą", "Delete tool?": "Ištrinti įrankį?", @@ -357,7 +363,7 @@ "Download Database": "Parsisiųsti duomenų bazę", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Įkelkite dokumentus čia, kad juos pridėti į pokalbį", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "pvz. '30s', '10m'. Laiko vienetai yra 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Redaguoti", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Įveskite blokų dydį", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Bendri", + "Generate": "", "Generate an image": "", "Generate Image": "Generuoti paveikslėlį", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "Importuoti funkcijas", "Import Models": "Importuoti modelius", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importuoti užklausas", "Import Tools": "Importuoti įrankius", @@ -721,6 +732,7 @@ "Manage Pipelines": "Tvarkyti procesus", "Manage Tool Servers": "", "March": "Kovas", + "Max Speakers": "", "Max Tokens (num_predict)": "Maksimalus žetonų kiekis (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Naujas pokalbis", "New Folder": "", + "New Note": "", "New Password": "Naujas slaptažodis", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "Nėra turinio kalbėjimui", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Rezultatų nerasta", "No search query generated": "Paieškos užklausa nesugeneruota", "No source available": "Šaltinių nerasta", @@ -801,6 +816,7 @@ "None": "Nėra", "Not factually correct": "Faktiškai netikslu", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Jei turite minimalų įvertį, paieška gražins tik tą informaciją, kuri viršyje šį įvertį", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Skaityti garsiai", "Reasoning Effort": "", + "Record": "", "Record voice": "Įrašyti balsą", "Redirecting you to Open WebUI Community": "Perkeliam Jus į OpenWebUI bendruomenę", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Ieškoma \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng užklausos URL", "See readme.md for instructions": "Žiūrėti readme.md papildomoms instrukcijoms", "See what's new": "Žiūrėti naujoves", @@ -1181,6 +1199,7 @@ "Unpin": "Atsemigti", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "Atnaujinti", "Update and Copy Link": "Atnaujinti ir kopijuoti nuorodą", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 07f4d38d3..52c3c1e36 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(contoh `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(contoh `sh webui.sh --api`)", "(latest)": "(terkini)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Maklumbalas Salah", "Banners": "Sepanduk", "Base Model (From)": "Model Asas (Dari)", + "Base URL": "", "Batch Size (num_batch)": "Saiz Kumpulan (num_batch)", "before": "sebelum,", "Being lazy": "Menjadi Malas", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Kunci API Carian Brave", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Cipta kekunci baharu", "Create new secret key": "Cipta kekunci rahsia baharu", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Dicipta di", "Created At": "Dicipta Pada", "Created by": "Dicipta oleh", @@ -302,6 +307,7 @@ "Delete function?": "Padam fungsi?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Padam Gesaan?", "delete this link": "Padam pautan ini?", "Delete tool?": "Padam alat?", @@ -357,7 +363,7 @@ "Download Database": "Muat turun Pangkalan Data", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Letakkan mana-mana fail di sini untuk ditambahkan pada perbualan", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "cth '30s','10m'. Unit masa yang sah ialah 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Edit", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Masukkan Saiz 'Chunk'", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Umum", + "Generate": "", "Generate an image": "", "Generate Image": "Jana Imej", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "Import Fungsi", "Import Models": "Import Model", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Import Gesaan", "Import Tools": "Import Alat", @@ -721,6 +732,7 @@ "Manage Pipelines": "Urus 'Pipelines'", "Manage Tool Servers": "", "March": "Mac", + "Max Speakers": "", "Max Tokens (num_predict)": "Token Maksimum ( num_predict )", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Perbualan Baru", "New Folder": "", + "New Note": "", "New Password": "Kata Laluan Baru", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "Tiada kandungan untuk bercakap", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Tiada keputusan dijumpai", "No search query generated": "Tiada pertanyaan carian dijana", "No source available": "Tiada sumber tersedia", @@ -801,6 +816,7 @@ "None": "Tiada", "Not factually correct": "Tidak tepat secara fakta", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Jika anda menetapkan skor minimum, carian hanya akan mengembalikan dokumen dengan skor lebih besar daripada atau sama dengan skor minimum.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Baca dengan lantang", "Reasoning Effort": "", + "Record": "", "Record voice": "Rakam suara", "Redirecting you to Open WebUI Community": "Membawa anda ke Komuniti OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "encari \"{{ searchQuery }}\"", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "URL Pertanyaan Searxng", "See readme.md for instructions": "Lihat readme.md untuk arahan", "See what's new": "Lihat apa yang terbaru", @@ -1181,6 +1199,7 @@ "Unpin": "Nyahsematkan", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "Kemaskini", "Update and Copy Link": "Kemaskini dan salin pautan", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 9777cf17c..65e56362b 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(f.eks. `sh webui.sh --api --api-auth brukernavn_passord`)", "(e.g. `sh webui.sh --api`)": "(f.eks. `sh webui.sh --api`)", "(latest)": "(siste)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modeller }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Dårlig svar", "Banners": "Bannere", "Base Model (From)": "Grunnmodell (fra)", + "Base URL": "", "Batch Size (num_batch)": "Batchstørrelse (num_batch)", "before": "før", "Being lazy": "Er lat", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Abonnementsnøkkel for Bing Search V7", "Bocha Search API Key": "API-nøkkel for Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "API-nøkkel for Brave Search", "By {{name}}": "Etter {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Opprett kunnskap", "Create new key": "Lag ny nøkkel", "Create new secret key": "Lag ny hemmelig nøkkel", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Opprettet", "Created At": "Opprettet", "Created by": "Opprettet av", @@ -302,6 +307,7 @@ "Delete function?": "Slette funksjon?", "Delete Message": "Slett melding", "Delete message?": "Slette melding?", + "Delete note?": "", "Delete prompt?": "Slette ledetekst?", "delete this link": "slett denne lenken", "Delete tool?": "Slette verktøy?", @@ -357,7 +363,7 @@ "Download Database": "Last ned database", "Drag and drop a file to upload or select a file to view": "Dra og slipp en fil for å laste den opp, eller velg en fil å vise den", "Draw": "Tegne", - "Drop any files here to add to the conversation": "Slipp filer her for å legge dem til i samtalen", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "f.eks. '30s','10m'. Gyldige tidsenheter er 's', 'm', 't'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "f.eks. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "f.eks. mitt_filter", "e.g. my_tools": "f.eks. mine_verktøy", "e.g. Tools for performing various operations": "f.eks. Verktøy for å gjøre ulike handlinger", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Rediger", "Edit Arena Model": "Rediger Arena-modell", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Angi Chunk-størrelse", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Angi beskrivelse", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "Angi endepunkt for Intelligens i dokumenter", "Enter Document Intelligence Key": "Angi nøkkel for Intelligens i dokumenter", @@ -587,6 +596,7 @@ "Gemini API Config": "Konfigurasjon", "Gemini API Key is required.": "Det kreves en API-nøkkel for Gemini.", "General": "Generelt", + "Generate": "", "Generate an image": "Genrer et bilde", "Generate Image": "Generer bilde", "Generate prompt pair": "Generer ledetekst-kombinasjon", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importer konfigurasjon fra en JSON-fil", "Import Functions": "Importer funksjoner", "Import Models": "Importer modeller", + "Import Notes": "", "Import Presets": "Importer forhåndsinnstillinger", "Import Prompts": "Importer ledetekster", "Import Tools": "Importer verktøy", @@ -721,6 +732,7 @@ "Manage Pipelines": "Behandle pipelines", "Manage Tool Servers": "", "March": "mars", + "Max Speakers": "", "Max Tokens (num_predict)": "Maks antall tokener (num_predict)", "Max Upload Count": "Maks antall opplastinger", "Max Upload Size": "Maks størrelse på opplasting", @@ -777,8 +789,10 @@ "Native": "Opprinnelig", "New Chat": "Ny chat", "New Folder": "Ny mappe", + "New Note": "", "New Password": "Nytt passord", "new-channel": "ny-kanal", + "No content": "", "No content found": "Finner ikke noe innhold", "No content found in file.": "", "No content to speak": "Mangler innhold for tale", @@ -793,6 +807,7 @@ "No model IDs": "Ingen modell-ID-er", "No models found": "Finner ingen modeller", "No models selected": "Ingen modeller er valgt", + "No Notes": "", "No results found": "Finner ingen resultater", "No search query generated": "Ingen søkespørringer er generert", "No source available": "Ingen kilde tilgjengelig", @@ -801,6 +816,7 @@ "None": "Ingen", "Not factually correct": "Uriktig informasjon", "Not helpful": "Ikke nyttig", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Merk: Hvis du setter en minimumspoengsum, returnerer søket kun dokumenter med en poengsum som er større enn eller lik minimumspoengsummen.", "Notes": "Notater", "Notification Sound": "Lyd for varsler", @@ -910,6 +926,7 @@ "Read": "Les", "Read Aloud": "Les høyt", "Reasoning Effort": "Resonneringsinnsats", + "Record": "", "Record voice": "Ta opp tale", "Redirecting you to Open WebUI Community": "Omdirigerer deg til OpenWebUI-fellesskapet", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Søkte på {{count}} nettsider", "Searching \"{{searchQuery}}\"": "Søker etter \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Søker etter kunnskap for \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng forespørsels-URL", "See readme.md for instructions": "Se readme.md for å få instruksjoner", "See what's new": "Se hva som er nytt", @@ -1181,6 +1199,7 @@ "Unpin": "Løsne", "Unravel secrets": "Avslør hemmeligheter", "Untagged": "Ikke merket", + "Untitled": "", "Update": "Oppdater", "Update and Copy Link": "Oppdater og kopier lenke", "Update for the latest features and improvements.": "Oppdater for å få siste funksjoner og forbedringer.", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index f7fedabbd..6869783a8 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(bv. `sh webui.sh --api --api-auth gebruikersnaam_wachtwoord`)", "(e.g. `sh webui.sh --api`)": "(bv. `sh webui.sh --api`)", "(latest)": "(nieuwste)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ modellen }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Ongeldig antwoord", "Banners": "Banners", "Base Model (From)": "Basismodel (Vanaf)", + "Base URL": "", "Batch Size (num_batch)": "Batchgrootte (num_batch)", "before": "voor", "Being lazy": "Lui zijn", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Search V7 Subscription Key", "Bocha Search API Key": "Bocha Search API-sleutel", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Versterken of bestraffen van specifieke tokens voor beperkte reacties. Biaswaarden worden geklemd tussen -100 en 100 (inclusief). (Standaard: none)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API-sleutel", "By {{name}}": "Op {{name}}", "Bypass Embedding and Retrieval": "Embedding en ophalen omzeilen ", @@ -265,6 +268,8 @@ "Create Knowledge": "Creër kennis", "Create new key": "Maak nieuwe sleutel", "Create new secret key": "Maak nieuwe geheime sleutel", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Gemaakt op", "Created At": "Gemaakt op", "Created by": "Gemaakt door", @@ -302,6 +307,7 @@ "Delete function?": "Verwijder functie?", "Delete Message": "Verwijder bericht", "Delete message?": "Verwijder bericht", + "Delete note?": "", "Delete prompt?": "Verwijder prompt?", "delete this link": "verwijder deze link", "Delete tool?": "Verwijder tool?", @@ -357,7 +363,7 @@ "Download Database": "Download database", "Drag and drop a file to upload or select a file to view": "Sleep een bestand om te uploaden of selecteer een bestand om te bekijken", "Draw": "Teken", - "Drop any files here to add to the conversation": "Sleep hier bestanden om toe te voegen aan het gesprek", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "bijv. '30s', '10m'. Geldige tijdseenheden zijn 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "bijv. \"json\" of een JSON-schema", "e.g. 60": "bijv. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "bijv. mijn_filter", "e.g. my_tools": "bijv. mijn_gereedschappen", "e.g. Tools for performing various operations": "Gereedschappen om verschillende bewerkingen uit te voeren", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Wijzig", "Edit Arena Model": "Bewerk arenamodel", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Voeg Chunk Size toe", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Voer kommagescheiden \"token:bias_waarde\" paren in (bijv. 5432:100, 413:-100)", "Enter description": "Voer beschrijving in", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Voer Docling Server-URL in", "Enter Document Intelligence Endpoint": "Voer Document Intelligence endpoint in", "Enter Document Intelligence Key": "Voer Document Intelligence sleutel in", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API-configuratie", "Gemini API Key is required.": "Gemini API-sleutel is vereisd", "General": "Algemeen", + "Generate": "", "Generate an image": "Genereer een afbeelding", "Generate Image": "Genereer afbeelding", "Generate prompt pair": "Genereer promptpaar", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importeer configuratie vanuit JSON-bestand", "Import Functions": "Importeer Functies", "Import Models": "Modellen importeren", + "Import Notes": "", "Import Presets": "Importeer voorinstellingen", "Import Prompts": "Importeer Prompts", "Import Tools": "Importeer Gereedschappen", @@ -721,6 +732,7 @@ "Manage Pipelines": "Pijplijnen beheren", "Manage Tool Servers": "Beheer gereedschapservers", "March": "Maart", + "Max Speakers": "", "Max Tokens (num_predict)": "Max Tokens (num_predict)", "Max Upload Count": "Maximale Uploadhoeveelheid", "Max Upload Size": "Maximale Uploadgrootte", @@ -777,8 +789,10 @@ "Native": "Native", "New Chat": "Nieuwe Chat", "New Folder": "Nieuwe map", + "New Note": "", "New Password": "Nieuw Wachtwoord", "new-channel": "nieuw-kanaal", + "No content": "", "No content found": "Geen content gevonden", "No content found in file.": "", "No content to speak": "Geen inhoud om over te spreken", @@ -793,6 +807,7 @@ "No model IDs": "Geen model-ID's", "No models found": "Geen modellen gevonden", "No models selected": "Geen modellen geselecteerd", + "No Notes": "", "No results found": "Geen resultaten gevonden", "No search query generated": "Geen zoekopdracht gegenereerd", "No source available": "Geen bron beschikbaar", @@ -801,6 +816,7 @@ "None": "Geen", "Not factually correct": "Niet feitelijk juist", "Not helpful": "Niet nuttig", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Opmerking: Als je een minimumscore instelt, levert de zoekopdracht alleen documenten op met een score groter dan of gelijk aan de minimumscore.", "Notes": "Aantekeningen", "Notification Sound": "Notificatiegeluid", @@ -910,6 +926,7 @@ "Read": "Voorlezen", "Read Aloud": "Voorlezen", "Reasoning Effort": "Redeneerinspanning", + "Record": "", "Record voice": "Neem stem op", "Redirecting you to Open WebUI Community": "Je wordt doorgestuurd naar OpenWebUI Community", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Vermindert de kans op het genereren van onzin. Een hogere waarde (bijv. 100) zal meer diverse antwoorden geven, terwijl een lagere waarde (bijv. 10) conservatiever zal zijn.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Zocht op {{count}} sites", "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" aan het zoeken.", "Searching Knowledge for \"{{searchQuery}}\"": "Zoek kennis bij \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng Query URL", "See readme.md for instructions": "Zie readme.md voor instructies", "See what's new": "Zie wat er nieuw is", @@ -1181,6 +1199,7 @@ "Unpin": "Losmaken", "Unravel secrets": "Ontrafel geheimen", "Untagged": "Ongemarkeerd", + "Untitled": "", "Update": "Bijwerken", "Update and Copy Link": "Bijwerken en kopieer link", "Update for the latest features and improvements.": "Bijwerken voor de nieuwste functies en verbeteringen", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index 587e4d3b9..2b26cf991 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(ਉਦਾਹਰਣ ਦੇ ਤੌਰ ਤੇ `sh webui.sh --api`)", "(latest)": "(ਤਾਜ਼ਾ)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ ਮਾਡਲ }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "ਖਰਾਬ ਜਵਾਬ", "Banners": "ਬੈਨਰ", "Base Model (From)": "ਬੇਸ ਮਾਡਲ (ਤੋਂ)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "ਪਹਿਲਾਂ", "Being lazy": "ਆਲਸੀ ਹੋਣਾ", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "ਬਹਾਦਰ ਖੋਜ API ਕੁੰਜੀ", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "ਨਵੀਂ ਕੁੰਜੀ ਬਣਾਓ", "Create new secret key": "ਨਵੀਂ ਗੁਪਤ ਕੁੰਜੀ ਬਣਾਓ", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "ਤੇ ਬਣਾਇਆ ਗਿਆ", "Created At": "ਤੇ ਬਣਾਇਆ ਗਿਆ", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "ਇਸ ਲਿੰਕ ਨੂੰ ਮਿਟਾਓ", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "ਡਾਟਾਬੇਸ ਡਾਊਨਲੋਡ ਕਰੋ", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "ਉਦਾਹਰਣ ਲਈ '30ਸ','10ਮਿ'. ਸਹੀ ਸਮਾਂ ਇਕਾਈਆਂ ਹਨ 'ਸ', 'ਮ', 'ਘੰ'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "ਸੰਪਾਦਨ ਕਰੋ", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "ਚੰਕ ਆਕਾਰ ਦਰਜ ਕਰੋ", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "ਆਮ", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "ਮਾਡਲ ਆਯਾਤ ਕਰੋ", + "Import Notes": "", "Import Presets": "", "Import Prompts": "ਪ੍ਰੰਪਟ ਆਯਾਤ ਕਰੋ", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "ਪਾਈਪਲਾਈਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ", "Manage Tool Servers": "", "March": "ਮਾਰਚ", + "Max Speakers": "", "Max Tokens (num_predict)": "ਮੈਕਸ ਟੋਕਨ (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "ਨਵੀਂ ਗੱਲਬਾਤ", "New Folder": "", + "New Note": "", "New Password": "ਨਵਾਂ ਪਾਸਵਰਡ", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ", "No search query generated": "ਕੋਈ ਖੋਜ ਪੁੱਛਗਿੱਛ ਤਿਆਰ ਨਹੀਂ ਕੀਤੀ ਗਈ", "No source available": "ਕੋਈ ਸਰੋਤ ਉਪਲਬਧ ਨਹੀਂ", @@ -801,6 +816,7 @@ "None": "ਕੋਈ ਨਹੀਂ", "Not factually correct": "ਤੱਥਕ ਰੂਪ ਵਿੱਚ ਸਹੀ ਨਹੀਂ", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "ਜੋਰ ਨਾਲ ਪੜ੍ਹੋ", "Reasoning Effort": "", + "Record": "", "Record voice": "ਆਵਾਜ਼ ਰਿਕਾਰਡ ਕਰੋ", "Redirecting you to Open WebUI Community": "ਤੁਹਾਨੂੰ ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਵੱਲ ਰੀਡਾਇਰੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng Query URL", "See readme.md for instructions": "ਹਦਾਇਤਾਂ ਲਈ readme.md ਵੇਖੋ", "See what's new": "ਨਵਾਂ ਕੀ ਹੈ ਵੇਖੋ", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "ਅੱਪਡੇਟ ਕਰੋ ਅਤੇ ਲਿੰਕ ਕਾਪੀ ਕਰੋ", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 73d396b1e..d548d744c 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(np. `sh webui.sh --api --api-auth username_password`)>", "(e.g. `sh webui.sh --api`)": "(np. `sh webui.sh --api`)", "(latest)": "(najnowszy)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modele }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Nieprawidłowa odpowiedź", "Banners": "Bannery", "Base Model (From)": "Model bazowy (od)", + "Base URL": "", "Batch Size (num_batch)": "Rozmiar partii (num_batch)", "before": "przed", "Being lazy": "Jest leniwy.", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Klucz subskrypcji Wyszukiwarki Bing V7", "Bocha Search API Key": "Klucz API Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Klucz API wyszukiwania Brave", "By {{name}}": "Przez {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Utwórz wiedzę", "Create new key": "Utwórz nowy klucz", "Create new secret key": "Utwórz nowy secret key", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Utworzono o", "Created At": "Utworzono o", "Created by": "Stworzone przez", @@ -302,6 +307,7 @@ "Delete function?": "Czy na pewno chcesz usunąć funkcję?", "Delete Message": "Usuń wiadomość", "Delete message?": "Usuń wiadomość?", + "Delete note?": "", "Delete prompt?": "Czy chcesz usunąć prompt?", "delete this link": "usuń to połączenie", "Delete tool?": "Usunąć narzędzie?", @@ -357,7 +363,7 @@ "Download Database": "Pobierz bazę danych", "Drag and drop a file to upload or select a file to view": "Przeciągnij i upuść plik, aby go przesłać lub wybierz plik, aby go wyświetlić.", "Draw": "Rysuj", - "Drop any files here to add to the conversation": "Przeciągnij i upuść pliki tutaj, aby dodać je do rozmowy.", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "np. '30s', '10m'. Poprawne jednostki czasu to: 's' (sekunda), 'm' (minuta), 'h' (godzina).", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "np. moj_filtr", "e.g. my_tools": "np. moje_narzędzia", "e.g. Tools for performing various operations": "np. Narzędzia do wykonywania różnych operacji", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Edytuj", "Edit Arena Model": "Edytuj model arenę", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Wprowadź wielkość bloku", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Wprowadź opis", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "Konfiguracja API Gemini", "Gemini API Key is required.": "Wymagany jest klucz API Gemini.", "General": "Ogólne", + "Generate": "", "Generate an image": "Wygeneruj obraz", "Generate Image": "Wygeneruj obraz", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importuj konfigurację z pliku JSON", "Import Functions": "Importowanie funkcji", "Import Models": "Importowanie modeli", + "Import Notes": "", "Import Presets": "Importuj ustawienia", "Import Prompts": "Importuj prompty", "Import Tools": "Importuj narzędzia", @@ -721,6 +732,7 @@ "Manage Pipelines": "Zarządzanie przepływem", "Manage Tool Servers": "", "March": "Marzec", + "Max Speakers": "", "Max Tokens (num_predict)": "Maksymalna liczba tokenów (num_predict)", "Max Upload Count": "Maksymalna liczba przesyłanych plików", "Max Upload Size": "Maksymalny rozmiar przesyłanego pliku", @@ -777,8 +789,10 @@ "Native": "Rodzimy", "New Chat": "Nowy czat", "New Folder": "Nowy Folder", + "New Note": "", "New Password": "Nowe hasło", "new-channel": "nowy-kanał", + "No content": "", "No content found": "Nie znaleziono żadnej zawartości.", "No content found in file.": "", "No content to speak": "Brak treści do omówienia", @@ -793,6 +807,7 @@ "No model IDs": "Brak identyfikatorów modeli", "No models found": "Nie znaleziono modeli", "No models selected": "Brak wybranych modeli", + "No Notes": "", "No results found": "Brak wyników", "No search query generated": "Nie wygenerowano żadnego zapytania wyszukiwania", "No source available": "Źródło nie jest dostępne.", @@ -801,6 +816,7 @@ "None": "Brak", "Not factually correct": "Niezgodne z rzeczywistością", "Not helpful": "Nieprzydatne", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Uwaga: Jeśli określisz minimalną punktację, wyszukiwanie zwróci tylko dokumenty o wyniku równym lub wyższym niż minimalna punktacja.", "Notes": "Uwagi", "Notification Sound": "Dźwięk powiadomienia", @@ -910,6 +926,7 @@ "Read": "Czytaj", "Read Aloud": "Czytaj na głos", "Reasoning Effort": "Wysiłek rozumowania", + "Record": "", "Record voice": "Nagraj swój głos", "Redirecting you to Open WebUI Community": "Przekierowujemy Cię do społeczności Open WebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Przeszukano {{count}} stron", "Searching \"{{searchQuery}}\"": "Wyszukiwanie \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Przeszukiwanie wiedzy dla \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Adres URL zapytania Searxng", "See readme.md for instructions": "Sprawdź readme.md dla instrukcji", "See what's new": "Sprawdź nowości", @@ -1181,6 +1199,7 @@ "Unpin": "Odpiąć", "Unravel secrets": "Odkryj tajemnice", "Untagged": "Nie otagowane", + "Untitled": "", "Update": "Aktualizacja", "Update and Copy Link": "Aktualizuj i kopiuj link", "Update for the latest features and improvements.": "Aktualizacja do najnowszych funkcji i ulepszeń.", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index bf823bdb2..dd508396d 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(por exemplo, `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(por exemplo, `sh webui.sh --api`)", "(latest)": "(último)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Resposta Ruim", "Banners": "Banners", "Base Model (From)": "Modelo Base (De)", + "Base URL": "", "Batch Size (num_batch)": "Tamanho do Lote (num_batch)", "before": "antes", "Being lazy": "Sendo preguiçoso", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Chave API do Brave Search", "By {{name}}": "Por {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Criar Conhecimento", "Create new key": "Criar nova chave", "Create new secret key": "Criar nova chave secreta", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Criado em", "Created At": "Criado Em", "Created by": "Criado por", @@ -302,6 +307,7 @@ "Delete function?": "Excluir função?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Excluir prompt?", "delete this link": "Excluir este link", "Delete tool?": "Excluir ferramenta?", @@ -357,7 +363,7 @@ "Download Database": "Baixar Banco de Dados", "Drag and drop a file to upload or select a file to view": "Arraste e solte um arquivo para enviar ou selecione um arquivo para visualizar", "Draw": "Empate", - "Drop any files here to add to the conversation": "Solte qualquer arquivo aqui para adicionar à conversa", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "Exemplo: my_filter", "e.g. my_tools": "Exemplo: my_tools", "e.g. Tools for performing various operations": "Exemplo: Ferramentas para executar operações diversas", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Editar", "Edit Arena Model": "Editar Arena de Modelos", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Digite o Tamanho do Chunk", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Digite a descrição", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Geral", + "Generate": "", "Generate an image": "", "Generate Image": "Gerar Imagem", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importar Configurações de JSON", "Import Functions": "Importar Funções", "Import Models": "Importar Modelos", + "Import Notes": "", "Import Presets": "Importar Presets", "Import Prompts": "Importar Prompts", "Import Tools": "Importar Ferramentas", @@ -721,6 +732,7 @@ "Manage Pipelines": "Gerenciar Pipelines", "Manage Tool Servers": "", "March": "Março", + "Max Speakers": "", "Max Tokens (num_predict)": "Máximo de Tokens (num_predict)", "Max Upload Count": "Quantidade máxima de anexos", "Max Upload Size": "Tamanho máximo do arquivo", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Novo Chat", "New Folder": "", + "New Note": "", "New Password": "Nova Senha", "new-channel": "", + "No content": "", "No content found": "Nenhum conteúdo encontrado", "No content found in file.": "", "No content to speak": "Sem conteúdo para falar", @@ -793,6 +807,7 @@ "No model IDs": "Nenhum ID de modelo", "No models found": "Nenhum modelo encontrado", "No models selected": "", + "No Notes": "", "No results found": "Nenhum resultado encontrado", "No search query generated": "Nenhuma consulta de pesquisa gerada", "No source available": "Nenhuma fonte disponível", @@ -801,6 +816,7 @@ "None": "Nenhum", "Not factually correct": "Não está factualmente correto", "Not helpful": "Não é útil", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Se você definir uma pontuação mínima, a pesquisa retornará apenas documentos com pontuação igual ou superior à pontuação mínima.", "Notes": "Notas", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Ler em Voz Alta", "Reasoning Effort": "", + "Record": "", "Record voice": "Gravar voz", "Redirecting you to Open WebUI Community": "Redirecionando você para a Comunidade OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Pesquisando \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Buscando conhecimento para \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "URL da Consulta Searxng", "See readme.md for instructions": "Veja readme.md para instruções", "See what's new": "Veja o que há de novo", @@ -1181,6 +1199,7 @@ "Unpin": "Desfixar", "Unravel secrets": "Desvendar segredos", "Untagged": "Sem tag", + "Untitled": "", "Update": "Atualizar", "Update and Copy Link": "Atualizar e Copiar Link", "Update for the latest features and improvements.": "Atualizar para as novas funcionalidades e melhorias.", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index aecfa3dd6..d5fcd2314 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(por exemplo, `sh webui.sh --api`)", "(latest)": "(mais recente)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modelos }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Resposta má", "Banners": "Estandartes", "Base Model (From)": "Modelo Base (De)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "antes", "Being lazy": "Ser preguiçoso", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Chave da API de Pesquisa Brave", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Criar nova chave", "Create new secret key": "Criar nova chave secreta", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Criado em", "Created At": "Criado em", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "apagar este link", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "Descarregar Base de Dados", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Largue os ficheiros aqui para adicionar à conversa", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Editar", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Escreva o Tamanho do Fragmento", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Geral", + "Generate": "", "Generate an image": "", "Generate Image": "Gerar imagem", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "Importar Modelos", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importar Prompts", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "Gerir pipelines", "Manage Tool Servers": "", "March": "Março", + "Max Speakers": "", "Max Tokens (num_predict)": "Máx Tokens (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Nova Conversa", "New Folder": "", + "New Note": "", "New Password": "Nova Senha", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Não foram encontrados resultados", "No search query generated": "Não foi gerada nenhuma consulta de pesquisa", "No source available": "Nenhuma fonte disponível", @@ -801,6 +816,7 @@ "None": "Nenhum", "Not factually correct": "Não é correto em termos factuais", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Se você definir uma pontuação mínima, a pesquisa só retornará documentos com uma pontuação maior ou igual à pontuação mínima.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Ler em Voz Alta", "Reasoning Effort": "", + "Record": "", "Record voice": "Gravar voz", "Redirecting you to Open WebUI Community": "Redirecionando-o para a Comunidade OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "URL de consulta Searxng", "See readme.md for instructions": "Consulte readme.md para obter instruções", "See what's new": "Veja o que há de novo", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "Atualizar e Copiar Link", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 81ffb3509..991c73677 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(de ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(de ex. `sh webui.sh --api`)", "(latest)": "(ultimul)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modele }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Răspuns Greșit", "Banners": "Bannere", "Base Model (From)": "Model de Bază (De la)", + "Base URL": "", "Batch Size (num_batch)": "Dimensiune Lot (num_batch)", "before": "înainte", "Being lazy": "Fiind leneș", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Cheie API Brave Search", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Creează cunoștințe", "Create new key": "Creează cheie nouă", "Create new secret key": "Creează cheie secretă nouă", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Creat la", "Created At": "Creat La", "Created by": "Creat de", @@ -302,6 +307,7 @@ "Delete function?": "Șterge funcția?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Șterge promptul?", "delete this link": "șterge acest link", "Delete tool?": "Șterge instrumentul?", @@ -357,7 +363,7 @@ "Download Database": "Descarcă Baza de Date", "Drag and drop a file to upload or select a file to view": "", "Draw": "Desenează", - "Drop any files here to add to the conversation": "Plasează orice fișiere aici pentru a le adăuga la conversație", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "de ex. '30s', '10m'. Unitățile de timp valide sunt 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Editează", "Edit Arena Model": "Editați Modelul Arena", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Introduceți Dimensiunea Blocului", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Introduceți descrierea", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "General", + "Generate": "", "Generate an image": "", "Generate Image": "Generează Imagine", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importarea configurației dintr-un fișier JSON", "Import Functions": "Importă Funcțiile", "Import Models": "Importă Modelele", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importă Prompturile", "Import Tools": "Importă Instrumentele", @@ -721,6 +732,7 @@ "Manage Pipelines": "Gestionează Conductele", "Manage Tool Servers": "", "March": "Martie", + "Max Speakers": "", "Max Tokens (num_predict)": "Număr Maxim de Tokeni (num_predict)", "Max Upload Count": "Număr maxim de încărcări", "Max Upload Size": "Dimensiune Maximă de Încărcare", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Conversație Nouă", "New Folder": "", + "New Note": "", "New Password": "Parolă Nouă", "new-channel": "", + "No content": "", "No content found": "Nu a fost găsit niciun conținut", "No content found in file.": "", "No content to speak": "Nu există conținut de vorbit", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "Nu s-au găsit modele", "No models selected": "", + "No Notes": "", "No results found": "Nu au fost găsite rezultate", "No search query generated": "Nu a fost generată nicio interogare de căutare", "No source available": "Nicio sursă disponibilă", @@ -801,6 +816,7 @@ "None": "Niciunul", "Not factually correct": "Nu este corect din punct de vedere factual", "Not helpful": "Nu este de ajutor", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Notă: Dacă setați un scor minim, căutarea va returna doar documente cu un scor mai mare sau egal cu scorul minim.", "Notes": "Note", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "Citește", "Read Aloud": "Citește cu Voce Tare", "Reasoning Effort": "", + "Record": "", "Record voice": "Înregistrează vocea", "Redirecting you to Open WebUI Community": "Vă redirecționăm către Comunitatea OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Căutare \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Căutare cunoștințe pentru \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "URL Interogare Searxng", "See readme.md for instructions": "Consultați readme.md pentru instrucțiuni", "See what's new": "Vezi ce e nou", @@ -1181,6 +1199,7 @@ "Unpin": "Anulează Fixarea", "Unravel secrets": "Dezvăluie secretele", "Untagged": "Netichetat", + "Untitled": "", "Update": "Actualizează", "Update and Copy Link": "Actualizează și Copiază Link-ul", "Update for the latest features and improvements.": "Actualizare pentru cele mai recente caracteristici și îmbunătățiri.", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 111a0e14d..a3d5996b8 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(например, `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(например, `sh webui.sh --api`)", "(latest)": "(последняя)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ модели }}", "{{COUNT}} Available Tools": "{{COUNT}} доступных инструментов", @@ -138,6 +139,7 @@ "Bad Response": "Плохой ответ", "Banners": "Баннеры", "Base Model (From)": "Базовая модель (от)", + "Base URL": "", "Batch Size (num_batch)": "Размер партии (num_batch)", "before": "до", "Being lazy": "Лениво", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Ключ API Bing Search V7", "Bocha Search API Key": "Ключ API поиска Bocha", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Увеличение или отмена определенных токенов за ограниченные ответы. Значения смещения будут находиться в диапазоне от -100 до 100 (включительно). (По умолчанию: ничего)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Ключ API поиска Brave", "By {{name}}": "От {{name}}", "Bypass Embedding and Retrieval": "Обход встраивания и извлечения данных", @@ -265,6 +268,8 @@ "Create Knowledge": "Создать знание", "Create new key": "Создать новый ключ", "Create new secret key": "Создать новый секретный ключ", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Создан(а)", "Created At": "Создано", "Created by": "Создано", @@ -302,6 +307,7 @@ "Delete function?": "Удалить функцию?", "Delete Message": "Удалить сообщение", "Delete message?": "Удалить сообщение?", + "Delete note?": "", "Delete prompt?": "Удалить промпт?", "delete this link": "удалить эту ссылку", "Delete tool?": "Удалить этот инструмент?", @@ -357,7 +363,7 @@ "Download Database": "Загрузить базу данных", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "например, '30s','10m'. Допустимые единицы времени: 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "например, \"json\" или схему JSON", "e.g. 60": "например, 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "например, мой_фильтр", "e.g. my_tools": "например, мой_инструмент", "e.g. Tools for performing various operations": "например, инструменты для выполнения различных операций", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "например, en-US,ja-JP (оставьте поле пустым для автоматического определения)", "Edit": "Редактировать", "Edit Arena Model": "Изменить модель арены", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Введите размер фрагмента", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Введите пары \"token:bias_value\", разделенные запятыми (пример: 5432:100, 413:-100).", "Enter description": "Введите описание", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Введите URL сервера Docling", "Enter Document Intelligence Endpoint": "Введите энд-поинт анализа документов", "Enter Document Intelligence Key": "Введите ключ для анализа документов", @@ -587,6 +596,7 @@ "Gemini API Config": "Конфигурация Gemini API", "Gemini API Key is required.": "Требуется API ключ для Gemini.", "General": "Общее", + "Generate": "", "Generate an image": "Сгенерировать изображение", "Generate Image": "Сгенерировать изображение", "Generate prompt pair": "Сгенерировать пару запросов", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Импорт конфигурации из JSON-файла", "Import Functions": "Импортировать Функции", "Import Models": "Импортировать Модели", + "Import Notes": "", "Import Presets": "Импортировать Пресеты", "Import Prompts": "Импортировать Промпты", "Import Tools": "Импортировать Инструменты", @@ -721,6 +732,7 @@ "Manage Pipelines": "Управление конвейерами", "Manage Tool Servers": "Управление серверами инструментов", "March": "Март", + "Max Speakers": "", "Max Tokens (num_predict)": "Максимальное количество токенов (num_predict)", "Max Upload Count": "Максимальное количество загрузок", "Max Upload Size": "Максимальный размер загрузок", @@ -777,8 +789,10 @@ "Native": "Нативно", "New Chat": "Новый чат", "New Folder": "Новая папка", + "New Note": "", "New Password": "Новый пароль", "new-channel": "", + "No content": "", "No content found": "Контент не найден", "No content found in file.": "", "No content to speak": "Нечего говорить", @@ -793,6 +807,7 @@ "No model IDs": "Нет ID модели", "No models found": "Модели не найдены", "No models selected": "Модели не выбраны", + "No Notes": "", "No results found": "Результатов не найдено", "No search query generated": "Поисковый запрос не сгенерирован", "No source available": "Нет доступных источников", @@ -801,6 +816,7 @@ "None": "Нет", "Not factually correct": "Не соответствует действительности", "Not helpful": "Бесполезно", + "Note not found": "", "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": "Заметки", "Notification Sound": "Звук уведомления", @@ -910,6 +926,7 @@ "Read": "Прочитать", "Read Aloud": "Прочитать вслух", "Reasoning Effort": "Усилие рассуждения", + "Record": "", "Record voice": "Записать голос", "Redirecting you to Open WebUI Community": "Перенаправляем вас в сообщество OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Снижает вероятность появления бессмыслицы. Большее значение (например, 100) даст более разнообразные ответы, в то время как меньшее значение (например, 10) будет более консервативным.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Поиск по {{count}} сайтам", "Searching \"{{searchQuery}}\"": "Поиск по запросу \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Поиск знания для \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "URL-адрес запроса Searxng", "See readme.md for instructions": "Смотрите readme.md для инструкций", "See what's new": "Посмотреть, что нового", @@ -1181,6 +1199,7 @@ "Unpin": "Открепить", "Unravel secrets": "Разгадать секреты", "Untagged": "Без тегов", + "Untitled": "", "Update": "Обновить", "Update and Copy Link": "Обновить и скопировать ссылку", "Update for the latest features and improvements.": "Обновитесь для получения последних функций и улучшений.", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index f96d27f65..6ec072791 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(napr. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(napr. `sh webui.sh --api`)", "(latest)": "Najnovšie", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Zlá odozva", "Banners": "Bannery", "Base Model (From)": "Základný model (z)", + "Base URL": "", "Batch Size (num_batch)": "Veľkosť batchu (num_batch)", "before": "pred", "Being lazy": "", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "API kľúč pre Brave Search", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Vytvoriť knowledge", "Create new key": "Vytvoriť nový kľúč", "Create new secret key": "Vytvoriť nový tajný kľúč", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Vytvorené dňa", "Created At": "Vytvorené dňa", "Created by": "Vytvorené užívateľom", @@ -302,6 +307,7 @@ "Delete function?": "Funkcia na odstránenie?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Odstrániť prompt?", "delete this link": "odstrániť tento odkaz", "Delete tool?": "Odstrániť nástroj?", @@ -357,7 +363,7 @@ "Download Database": "Stiahnuť databázu", "Drag and drop a file to upload or select a file to view": "", "Draw": "Nakresliť", - "Drop any files here to add to the conversation": "Sem presuňte akékoľvek súbory, ktoré chcete pridať do konverzácie", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "napr. '30s','10m'. Platné časové jednotky sú 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Upraviť", "Edit Arena Model": "Upraviť Arena Model", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Zadajte veľkosť časti", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Zadajte popis", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Všeobecné", + "Generate": "", "Generate an image": "", "Generate Image": "Vygenerovať obrázok", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Importovanie konfigurácie z JSON súboru", "Import Functions": "Načítanie funkcií", "Import Models": "Importovanie modelov", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importovať Prompty", "Import Tools": "Importovať nástroje", @@ -721,6 +732,7 @@ "Manage Pipelines": "Správa pipelines", "Manage Tool Servers": "", "March": "Marec", + "Max Speakers": "", "Max Tokens (num_predict)": "Maximálny počet tokenov (num_predict)", "Max Upload Count": "Maximálny počet nahraní", "Max Upload Size": "Maximálna veľkosť nahrávania", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Nový chat", "New Folder": "", + "New Note": "", "New Password": "Nové heslo", "new-channel": "", + "No content": "", "No content found": "Nebol nájdený žiadny obsah.", "No content found in file.": "", "No content to speak": "Žiadny obsah na diskusiu.", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "Neboli nájdené žiadne modely", "No models selected": "", + "No Notes": "", "No results found": "Neboli nájdené žiadne výsledky", "No search query generated": "Nebola vygenerovaná žiadna vyhľadávacia otázka.", "No source available": "Nie je dostupný žiadny zdroj.", @@ -801,6 +816,7 @@ "None": "Žiadny", "Not factually correct": "Nie je fakticky správne", "Not helpful": "Nepomocné", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Poznámka: Ak nastavíte minimálne skóre, vyhľadávanie vráti iba dokumenty s hodnotením, ktoré je väčšie alebo rovné zadanému minimálnemu skóre.", "Notes": "Poznámky", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Čítať nahlas", "Reasoning Effort": "", + "Record": "", "Record voice": "Nahrať hlas", "Redirecting you to Open WebUI Community": "Presmerovanie na komunitu OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Hľadanie \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Vyhľadávanie znalostí pre \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Adresa URL dotazu Searxng", "See readme.md for instructions": "Pozrite si {{readme.md}} pre pokyny.", "See what's new": "Pozrite sa, čo je nové", @@ -1181,6 +1199,7 @@ "Unpin": "Odopnúť", "Unravel secrets": "", "Untagged": "Nebola označená", + "Untitled": "", "Update": "Aktualizovať", "Update and Copy Link": "Aktualizovať a skopírovať odkaz", "Update for the latest features and improvements.": "Aktualizácia pre najnovšie funkcie a vylepšenia.", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index c91e1692e..634d98f24 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(нпр. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(нпр. `sh webui.sh --api`)", "(latest)": "(најновије)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ модели }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Лош одговор", "Banners": "Барјаке", "Base Model (From)": "Основни модел (од)", + "Base URL": "", "Batch Size (num_batch)": "", "before": "пре", "Being lazy": "Бити лењ", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Апи кључ за храбру претрагу", "By {{name}}": "Од {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Направи знање", "Create new key": "Направи нови кључ", "Create new secret key": "Направи нови тајни кључ", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Направљено у", "Created At": "Направљено у", "Created by": "Направио/ла", @@ -302,6 +307,7 @@ "Delete function?": "Обрисати функцију?", "Delete Message": "Обриши поруку", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Обрисати упит?", "delete this link": "обриши ову везу", "Delete tool?": "Обрисати алат?", @@ -357,7 +363,7 @@ "Download Database": "Преузми базу података", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "нпр. '30s', '10m'. Важеће временске јединице су 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Измени", "Edit Arena Model": "Измени модел арене", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Унесите величину дела", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Опште", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "Увези функције", "Import Models": "Увези моделе", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Увези упите", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "Управљање цевоводима", "Manage Tool Servers": "", "March": "Март", + "Max Speakers": "", "Max Tokens (num_predict)": "Маx Токенс (нум_предицт)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Ново ћаскање", "New Folder": "", + "New Note": "", "New Password": "Нова лозинка", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Нема резултата", "No search query generated": "Није генерисан упит за претрагу", "No source available": "Нема доступног извора", @@ -801,6 +816,7 @@ "None": "Нико", "Not factually correct": "Није чињенично тачно", "Not helpful": "Није од помоћи", + "Note not found": "", "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": "Белешке", "Notification Sound": "Звук обавештења", @@ -910,6 +926,7 @@ "Read": "Читање", "Read Aloud": "Прочитај наглас", "Reasoning Effort": "Јачина размишљања", + "Record": "", "Record voice": "Сними глас", "Redirecting you to Open WebUI Community": "Преусмеравање на OpenWebUI заједницу", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "УРЛ адреса Сеарxнг упита", "See readme.md for instructions": "Погледај readme.md за упутства", "See what's new": "Погледај шта је ново", @@ -1181,6 +1199,7 @@ "Unpin": "Откачи", "Unravel secrets": "Разоткриј тајне", "Untagged": "Неозначено", + "Untitled": "", "Update": "Ажурирај", "Update and Copy Link": "Ажурирај и копирај везу", "Update for the latest features and improvements.": "Ажурирајте за најновије могућности и побољшања.", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 8f85e76ed..6e9a90958 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(t.ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(t.ex. `sh webui.sh --api`)", "(latest)": "(senaste)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ modeller }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Felaktig respons", "Banners": "Banners", "Base Model (From)": "Basmodell (Från)", + "Base URL": "", "Batch Size (num_batch)": "Batchstorlek (num_batch)", "before": "före", "Being lazy": "Lägg till", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "API-nyckel för Brave Search", "By {{name}}": "Av {{name}}", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "Skapa ny nyckel", "Create new secret key": "Skapa ny hemlig nyckel", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Skapad", "Created At": "Skapad", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "radera denna länk", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "Ladda ner databas", "Drag and drop a file to upload or select a file to view": "", "Draw": "", - "Drop any files here to add to the conversation": "Släpp filer här för att lägga till i samtalet", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "t.ex. '30s', '10m'. Giltiga tidsenheter är 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Redigera", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Ange chunkstorlek", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Allmän", + "Generate": "", "Generate an image": "", "Generate Image": "Generera bild", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "Importera modeller", + "Import Notes": "", "Import Presets": "", "Import Prompts": "Importera instruktioner", "Import Tools": "Importera verktyg", @@ -721,6 +732,7 @@ "Manage Pipelines": "Hantera rörledningar", "Manage Tool Servers": "", "March": "mars", + "Max Speakers": "", "Max Tokens (num_predict)": "Maximalt antal tokens (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Ny chatt", "New Folder": "", + "New Note": "", "New Password": "Nytt lösenord", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "Inga resultat hittades", "No search query generated": "Ingen sökfråga genererad", "No source available": "Ingen tillgänglig källa", @@ -801,6 +816,7 @@ "None": "Ingen", "Not factually correct": "Inte faktiskt korrekt", "Not helpful": "", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Obs: Om du anger en tröskel kommer sökningen endast att returnera dokument med ett betyg som är större än eller lika med tröskeln.", "Notes": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "Läs igenom", "Reasoning Effort": "", + "Record": "", "Record voice": "Spela in röst", "Redirecting you to Open WebUI Community": "Omdirigerar dig till OpenWebUI Community", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "Söker \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "Searxng Query URL", "See readme.md for instructions": "Se readme.md för instruktioner", "See what's new": "Se vad som är nytt", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "Avslöja hemligheter", "Untagged": "", + "Untitled": "", "Update": "Uppdatera", "Update and Copy Link": "Uppdatera och kopiera länk", "Update for the latest features and improvements.": "Uppdatera för att få de senaste funktionerna och förbättringarna.", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 638d9eca3..c7a155635 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(เช่น `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(เช่น `sh webui.sh --api`)", "(latest)": "(ล่าสุด)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "การตอบสนองที่ไม่ดี", "Banners": "แบนเนอร์", "Base Model (From)": "โมเดลพื้นฐาน (จาก)", + "Base URL": "", "Batch Size (num_batch)": "ขนาดชุด (num_batch)", "before": "ก่อน", "Being lazy": "ขี้เกียจ", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "คีย์ API ของ Brave Search", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "สร้างคีย์ใหม่", "Create new secret key": "สร้างคีย์ลับใหม่", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "สร้างเมื่อ", "Created At": "สร้างเมื่อ", "Created by": "สร้างโดย", @@ -302,6 +307,7 @@ "Delete function?": "ลบฟังก์ชัน?", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "ลบพรอมต์?", "delete this link": "ลบลิงก์นี้", "Delete tool?": "ลบเครื่องมือ?", @@ -357,7 +363,7 @@ "Download Database": "ดาวน์โหลดฐานข้อมูล", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "เช่น '30s', '10m' หน่วยเวลาที่ถูกต้องคือ 's', 'm', 'h'", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "แก้ไข", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "ใส่ขนาดส่วนข้อมูล", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "ทั่วไป", + "Generate": "", "Generate an image": "", "Generate Image": "สร้างภาพ", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "นำเข้าฟังก์ชัน", "Import Models": "นำเข้าโมเดล", + "Import Notes": "", "Import Presets": "", "Import Prompts": "นำเข้าพรอมต์", "Import Tools": "นำเข้าเครื่องมือ", @@ -721,6 +732,7 @@ "Manage Pipelines": "จัดการไปป์ไลน์", "Manage Tool Servers": "", "March": "มีนาคม", + "Max Speakers": "", "Max Tokens (num_predict)": "โทเค็นสูงสุด (num_predict)", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "แชทใหม่", "New Folder": "", + "New Note": "", "New Password": "รหัสผ่านใหม่", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "ไม่มีเนื้อหาที่จะพูด", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "ไม่มีผลลัพธ์", "No search query generated": "ไม่มีการสร้างคำค้นหา", "No source available": "ไม่มีแหล่งข้อมูล", @@ -801,6 +816,7 @@ "None": "ไม่มี", "Not factually correct": "ไม่ถูกต้องตามข้อเท็จจริง", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "อ่านออกเสียง", "Reasoning Effort": "", + "Record": "", "Record voice": "บันทึกเสียง", "Redirecting you to Open WebUI Community": "กำลังเปลี่ยนเส้นทางคุณไปยังชุมชน OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "กำลังค้นหา \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "URL คำค้นหา", "See readme.md for instructions": "ดู readme.md สำหรับคำแนะนำ", "See what's new": "ดูสิ่งที่ใหม่", @@ -1181,6 +1199,7 @@ "Unpin": "ยกเลิกการปักหมุด", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "อัปเดต", "Update and Copy Link": "อัปเดตและคัดลอกลิงก์", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index 6f5d4ce19..7469405a6 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "", "(latest)": "", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", + "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "", "Create new key": "", "Create new secret key": "", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "", "Created At": "", "Created by": "", @@ -302,6 +307,7 @@ "Delete function?": "", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "", "delete this link": "", "Delete tool?": "", @@ -357,7 +363,7 @@ "Download Database": "", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "", "Edit Arena Model": "", @@ -412,6 +419,8 @@ "Enter Chunk Size": "", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "", + "Generate": "", "Generate an image": "", "Generate Image": "", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "", "Import Functions": "", "Import Models": "", + "Import Notes": "", "Import Presets": "", "Import Prompts": "", "Import Tools": "", @@ -721,6 +732,7 @@ "Manage Pipelines": "", "Manage Tool Servers": "", "March": "", + "Max Speakers": "", "Max Tokens (num_predict)": "", "Max Upload Count": "", "Max Upload Size": "", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "", "New Folder": "", + "New Note": "", "New Password": "", "new-channel": "", + "No content": "", "No content found": "", "No content found in file.": "", "No content to speak": "", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "", "No models selected": "", + "No Notes": "", "No results found": "", "No search query generated": "", "No source available": "", @@ -801,6 +816,7 @@ "None": "", "Not factually correct": "", "Not helpful": "", + "Note not found": "", "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": "", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "", "Reasoning Effort": "", + "Record": "", "Record voice": "", "Redirecting you to Open WebUI Community": "", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "", "Searching Knowledge for \"{{searchQuery}}\"": "", + "Searching the web...": "", "Searxng Query URL": "", "See readme.md for instructions": "", "See what's new": "", @@ -1181,6 +1199,7 @@ "Unpin": "", "Unravel secrets": "", "Untagged": "", + "Untitled": "", "Update": "", "Update and Copy Link": "", "Update for the latest features and improvements.": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index 7fb9df64d..978ed6293 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(örn. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(örn. `sh webui.sh --api`)", "(latest)": "(en son)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Kötü Yanıt", "Banners": "Afişler", "Base Model (From)": "Temel Model ('den)", + "Base URL": "", "Batch Size (num_batch)": "Yığın Boyutu (num_batch)", "before": "önce", "Being lazy": "Tembelleşiyor", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing Arama V7 Abonelik Anahtarı", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API Anahtarı", "By {{name}}": "{{name}} Tarafından", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "Bilgi Oluştur", "Create new key": "Yeni anahtar oluştur", "Create new secret key": "Yeni gizli anahtar oluştur", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Oluşturulma tarihi", "Created At": "Şu Tarihte Oluşturuldu:", "Created by": "Şunun tarafından oluşturuldu:", @@ -302,6 +307,7 @@ "Delete function?": "Fonksiyonu sil?", "Delete Message": "Mesajı Sil", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "Promptu sil?", "delete this link": "bu bağlantıyı sil", "Delete tool?": "Aracı sil?", @@ -357,7 +363,7 @@ "Download Database": "Veritabanını İndir", "Drag and drop a file to upload or select a file to view": "Yüklemek için bir dosyayı sürükleyip bırakın veya görüntülemek için bir dosya seçin", "Draw": "Çiz", - "Drop any files here to add to the conversation": "Sohbete eklemek istediğiniz dosyaları buraya bırakın", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "örn. '30s', '10m'. Geçerli zaman birimleri 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "örn. benim_filtrem", "e.g. my_tools": "örn. benim_araçlarım", "e.g. Tools for performing various operations": " örn.Çeşitli işlemleri gerçekleştirmek için araçlar", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Düzenle", "Edit Arena Model": "Arena Modelini Düzenle", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Chunk Boyutunu Girin", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "Açıklama girin", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "Genel", + "Generate": "", "Generate an image": "Bir Görsel Oluştur", "Generate Image": "Görsel Üret", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Yapılandırmayı JSON Dosyasından İçe Aktar", "Import Functions": "Fonksiyonları İçe Aktar", "Import Models": "Modelleri İçe Aktar", + "Import Notes": "", "Import Presets": "Ön Ayarları İçe Aktar", "Import Prompts": "Promptları İçe Aktar", "Import Tools": "Araçları İçe Aktar", @@ -721,6 +732,7 @@ "Manage Pipelines": "Pipelineları Yönet", "Manage Tool Servers": "", "March": "Mart", + "Max Speakers": "", "Max Tokens (num_predict)": "Maksimum Token (num_predict)", "Max Upload Count": "Maksimum Yükleme Sayısı", "Max Upload Size": "Maksimum Yükleme Boyutu", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "Yeni Sohbet", "New Folder": "Yeni Klasör", + "New Note": "", "New Password": "Yeni Parola", "new-channel": "yeni-kanal", + "No content": "", "No content found": "İçerik bulunamadı", "No content found in file.": "", "No content to speak": "Konuşacak içerik yok", @@ -793,6 +807,7 @@ "No model IDs": "Model ID yok", "No models found": "Model bulunamadı", "No models selected": "Model seçilmedi", + "No Notes": "", "No results found": "Sonuç bulunamadı", "No search query generated": "Hiç arama sorgusu oluşturulmadı", "No source available": "Kaynak mevcut değil", @@ -801,6 +816,7 @@ "None": "Yok", "Not factually correct": "Gerçeklere göre doğru değil", "Not helpful": "Yardımcı olmadı", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Not: Minimum bir skor belirlerseniz, arama yalnızca minimum skora eşit veya daha yüksek bir skora sahip belgeleri getirecektir.", "Notes": "Notlar", "Notification Sound": "Bildirim Sesi", @@ -910,6 +926,7 @@ "Read": "Oku", "Read Aloud": "Sesli Oku", "Reasoning Effort": "", + "Record": "", "Record voice": "Ses kaydı yap", "Redirecting you to Open WebUI Community": "OpenWebUI Topluluğuna yönlendiriliyorsunuz", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "{{count}} site arandı", "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" aranıyor", "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\" için Bilgi aranıyor", + "Searching the web...": "", "Searxng Query URL": "Searxng Sorgu URL'si", "See readme.md for instructions": "Yönergeler için readme.md dosyasına bakın", "See what's new": "Yeniliklere göz atın", @@ -1181,6 +1199,7 @@ "Unpin": "Sabitlemeyi Kaldır", "Unravel secrets": "", "Untagged": "Etiketsiz", + "Untitled": "", "Update": "Güncelle", "Update and Copy Link": "Güncelle ve Bağlantıyı Kopyala", "Update for the latest features and improvements.": "En son özellikler ve iyileştirmeler için güncelleyin.", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index f6b786cfd..2e3c81ef8 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(напр. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(напр. `sh webui.sh --api`)", "(latest)": "(остання)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "Неправильна відповідь", "Banners": "Прапори", "Base Model (From)": "Базова модель (від)", + "Base URL": "", "Batch Size (num_batch)": "Розмір партії (num_batch)", "before": "до того, як", "Being lazy": "Не поспішати", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Ключ підписки Bing Search V7", "Bocha Search API Key": "Ключ API пошуку Bocha", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Підсилення або штрафування конкретних токенів для обмежених відповідей. Значення зміщення будуть обмежені між -100 і 100 (включно). (За замовчуванням: відсутнє)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Ключ API пошуку Brave", "By {{name}}": "Від {{name}}", "Bypass Embedding and Retrieval": "Минути вбудовування та пошук", @@ -265,6 +268,8 @@ "Create Knowledge": "Створити знання", "Create new key": "Створити новий ключ", "Create new secret key": "Створити новий секретний ключ", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Створено у", "Created At": "Створено у", "Created by": "Створено", @@ -302,6 +307,7 @@ "Delete function?": "Видалити функцію?", "Delete Message": "Видалити повідомлення", "Delete message?": "Видалити повідомлення?", + "Delete note?": "", "Delete prompt?": "Видалити промт?", "delete this link": "видалити це посилання", "Delete tool?": "Видалити інструмент?", @@ -357,7 +363,7 @@ "Download Database": "Завантажити базу даних", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр., '30s','10m'. Дійсні одиниці часу: 'с', 'хв', 'г'.", "e.g. \"json\" or a JSON schema": "напр., \"json\" або схема JSON", "e.g. 60": "напр. 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "напр., my_filter", "e.g. my_tools": "напр., my_tools", "e.g. Tools for performing various operations": "напр., Інструменти для виконання різних операцій", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Редагувати", "Edit Arena Model": "Редагувати модель Arena", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Введіть розмір фрагменту", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Введіть пари \"токен:значення_зміщення\", розділені комами (напр.: 5432:100, 413:-100)", "Enter description": "Введіть опис", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Введіть URL-адресу сервера Docling", "Enter Document Intelligence Endpoint": "Введіть кінцеву точку Інтелекту документа", "Enter Document Intelligence Key": "Введіть ключ Інтелекту документа", @@ -587,6 +596,7 @@ "Gemini API Config": "Конфігурація Gemini API", "Gemini API Key is required.": "Потрібен ключ API Gemini.", "General": "Загальні", + "Generate": "", "Generate an image": "Згенерувати зображення", "Generate Image": "Створити зображення", "Generate prompt pair": "Згенерувати пару промтів", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Імпорт конфігурації з файлу JSON", "Import Functions": "Імпорт функцій ", "Import Models": "Імпорт моделей", + "Import Notes": "", "Import Presets": "Імпорт пресетів", "Import Prompts": "Імпорт промтів", "Import Tools": "Імпорт інструментів", @@ -721,6 +732,7 @@ "Manage Pipelines": "Керування конвеєрами", "Manage Tool Servers": "Керувати серверами інструментів", "March": "Березень", + "Max Speakers": "", "Max Tokens (num_predict)": "Макс токенів (num_predict)", "Max Upload Count": "Макс. кількість завантажень", "Max Upload Size": "Макс. розмір завантаження", @@ -777,8 +789,10 @@ "Native": "Рідний", "New Chat": "Новий чат", "New Folder": "Нова папка", + "New Note": "", "New Password": "Новий пароль", "new-channel": "новий-канал", + "No content": "", "No content found": "Контент не знайдено.", "No content found in file.": "", "No content to speak": "Нема чого говорити", @@ -793,6 +807,7 @@ "No model IDs": "Немає ID моделей", "No models found": "Моделей не знайдено", "No models selected": "Моделі не вибрано", + "No Notes": "", "No results found": "Не знайдено жодного результату", "No search query generated": "Пошуковий запит не сформовано", "No source available": "Джерело не доступне", @@ -801,6 +816,7 @@ "None": "Нема", "Not factually correct": "Не відповідає дійсності", "Not helpful": "Не корисно", + "Note not found": "", "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": "Примітки", "Notification Sound": "Звук сповіщення", @@ -910,6 +926,7 @@ "Read": "Читати", "Read Aloud": "Читати вголос", "Reasoning Effort": "Зусилля на міркування", + "Record": "", "Record voice": "Записати голос", "Redirecting you to Open WebUI Community": "Перенаправляємо вас до спільноти OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Зменшує ймовірність генерування нісенітниць. Вищий показник (напр., 100) забезпечить більше різноманітних відповідей, тоді як нижчий показник (напр., 10) буде більш обережним.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Шукалося {{count}} сайтів", "Searching \"{{searchQuery}}\"": "Шукаю \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Пошук знань для \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "Searxng Query URL", "See readme.md for instructions": "Див. readme.md для інструкцій", "See what's new": "Подивіться, що нового", @@ -1181,6 +1199,7 @@ "Unpin": "Відчепити", "Unravel secrets": "Розплутуйте секрети", "Untagged": "Без тегів", + "Untitled": "", "Update": "Оновлення", "Update and Copy Link": "Оновлення та копіювання посилання", "Update for the latest features and improvements.": "Оновіть програми для нових функцій та покращень.", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index 03e78f317..ca890d938 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(مثال کے طور پر: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(مثال کے طور پر: `sh webui.sh --api`)", "(latest)": "(تازہ ترین)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "", "{{ models }}": "{{ ماڈلز }}", "{{COUNT}} Available Tools": "", @@ -138,6 +139,7 @@ "Bad Response": "غلط جواب", "Banners": "بینرز", "Base Model (From)": "بیس ماڈل (سے)", + "Base URL": "", "Batch Size (num_batch)": "بیچ سائز (num_batch)", "before": "پہلے", "Being lazy": "سستی کر رہا ہے", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "", "Bocha Search API Key": "", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "بریو سرچ API کلید", "By {{name}}": "", "Bypass Embedding and Retrieval": "", @@ -265,6 +268,8 @@ "Create Knowledge": "علم بنائیں", "Create new key": "نیا کلید بنائیں", "Create new secret key": "نیا خفیہ کلید بنائیں", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "پر بنایا گیا", "Created At": "بنایا گیا:", "Created by": "تخلیق کردہ", @@ -302,6 +307,7 @@ "Delete function?": "حذف کریں؟", "Delete Message": "", "Delete message?": "", + "Delete note?": "", "Delete prompt?": "پرومپٹ کو حذف کریں؟", "delete this link": "اس لنک کو حذف کریں", "Delete tool?": "کیا آپ حذف کرنا چاہتے ہیں؟", @@ -357,7 +363,7 @@ "Download Database": "ڈیٹا بیس ڈاؤن لوڈ کریں", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "مثلاً '30s'، '10m' درست وقت کی اکائیاں ہیں 's'، 'm'، 'h'", "e.g. \"json\" or a JSON schema": "", "e.g. 60": "", @@ -367,6 +373,7 @@ "e.g. my_filter": "", "e.g. my_tools": "", "e.g. Tools for performing various operations": "", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "ترمیم کریں", "Edit Arena Model": "ایرینا ماڈل میں ترمیم کریں", @@ -412,6 +419,8 @@ "Enter Chunk Size": "چنک سائز درج کریں", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", "Enter description": "تفصیل درج کریں", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "", "Enter Document Intelligence Endpoint": "", "Enter Document Intelligence Key": "", @@ -587,6 +596,7 @@ "Gemini API Config": "", "Gemini API Key is required.": "", "General": "عمومی", + "Generate": "", "Generate an image": "", "Generate Image": "تصویر بنائیں", "Generate prompt pair": "", @@ -637,6 +647,7 @@ "Import Config from JSON File": "JSON فائل سے تشکیلات درآمد کریں", "Import Functions": "درآمد فنکشنز", "Import Models": "ماڈلز درآمد کریں", + "Import Notes": "", "Import Presets": "", "Import Prompts": "پرامپٹس درآمد کریں", "Import Tools": "امپورٹ ٹولز", @@ -721,6 +732,7 @@ "Manage Pipelines": "پائپ لائنز کا نظم کریں", "Manage Tool Servers": "", "March": "مارچ", + "Max Speakers": "", "Max Tokens (num_predict)": "زیادہ سے زیادہ ٹوکنز (num_predict)", "Max Upload Count": "زیادہ سے زیادہ اپلوڈ تعداد", "Max Upload Size": "زیادہ سے زیادہ اپلوڈ سائز", @@ -777,8 +789,10 @@ "Native": "", "New Chat": "نئی بات چیت", "New Folder": "", + "New Note": "", "New Password": "نیا پاس ورڈ", "new-channel": "", + "No content": "", "No content found": "کوئی مواد نہیں ملا", "No content found in file.": "", "No content to speak": "بولنے کے لیے کوئی مواد نہیں", @@ -793,6 +807,7 @@ "No model IDs": "", "No models found": "کوئی ماڈل نہیں ملا", "No models selected": "", + "No Notes": "", "No results found": "کوئی نتائج نہیں ملے", "No search query generated": "کوئی تلاش کی درخواست نہیں بنائی گئی", "No source available": "ماخذ دستیاب نہیں ہے", @@ -801,6 +816,7 @@ "None": "کوئی نہیں", "Not factually correct": "حقیقت کے مطابق نہیں ہے", "Not helpful": "مددگار نہیں ہے", + "Note not found": "", "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": "نوٹس", "Notification Sound": "", @@ -910,6 +926,7 @@ "Read": "", "Read Aloud": "بُلند آواز میں پڑھیں", "Reasoning Effort": "", + "Record": "", "Record voice": "صوت ریکارڈ کریں", "Redirecting you to Open WebUI Community": "آپ کو اوپن ویب یو آئی کمیونٹی کی طرف ری ڈائریکٹ کیا جا رہا ہے", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "", "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" تلاش کر رہے ہیں", "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\" کے لیے علم کی تلاش", + "Searching the web...": "", "Searxng Query URL": "تلاش کا سوال URL", "See readme.md for instructions": "ہدایات کے لیے readme.md دیکھیں", "See what's new": "نیا کیا ہے دیکھیں", @@ -1181,6 +1199,7 @@ "Unpin": "ان پن کریں", "Unravel secrets": "", "Untagged": "غیر مہر شدہ", + "Untitled": "", "Update": "اپ ڈیٹ کریں", "Update and Copy Link": "اپڈیٹ اور لنک کاپی کریں", "Update for the latest features and improvements.": "تازہ ترین خصوصیات اور بہتریوں کے لیے اپ ڈیٹ کریں", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 8ff968405..fc9cffc96 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(vd: `sh webui.sh --api --api-auth tên_người_dùng_mật_khẩu`)", "(e.g. `sh webui.sh --api`)": "(vd: `sh webui.sh --api`)", "(latest)": "(mới nhất)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ mô hình }}", "{{COUNT}} Available Tools": "{{COUNT}} Công cụ có sẵn", @@ -138,6 +139,7 @@ "Bad Response": "Trả lời KHÔNG tốt", "Banners": "Biểu ngữ", "Base Model (From)": "Mô hình cơ sở (từ)", + "Base URL": "", "Batch Size (num_batch)": "Kích thước Lô (num_batch)", "before": "trước", "Being lazy": "Lười biếng", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Khóa đăng ký Bing Search V7", "Bocha Search API Key": "Khóa API Bocha Search", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Tăng cường hoặc phạt các token cụ thể cho các phản hồi bị ràng buộc. Giá trị bias sẽ được giới hạn trong khoảng từ -100 đến 100 (bao gồm). (Mặc định: không có)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Khóa API tìm kiếm dũng cảm", "By {{name}}": "Bởi {{name}}", "Bypass Embedding and Retrieval": "Bỏ qua Embedding và Truy xuất", @@ -265,6 +268,8 @@ "Create Knowledge": "Tạo Kiến thức", "Create new key": "Tạo key mới", "Create new secret key": "Tạo key bí mật mới", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "Được tạo vào lúc", "Created At": "Tạo lúc", "Created by": "Tạo bởi", @@ -302,6 +307,7 @@ "Delete function?": "Xóa function?", "Delete Message": "Xóa Tin nhắn", "Delete message?": "Xóa tin nhắn?", + "Delete note?": "", "Delete prompt?": "Xóa prompt?", "delete this link": "Xóa link này", "Delete tool?": "Xóa tool?", @@ -357,7 +363,7 @@ "Download Database": "Tải xuống Cơ sở dữ liệu", "Drag and drop a file to upload or select a file to view": "Kéo và thả tệp để tải lên hoặc chọn tệp để xem", "Draw": "Vẽ", - "Drop any files here to add to the conversation": "Thả bất kỳ tệp nào ở đây để thêm vào nội dung chat", + "Drop any files here to upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "vd: '30s','10m'. Đơn vị thời gian hợp lệ là 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "ví dụ: \"json\" hoặc một lược đồ JSON", "e.g. 60": "vd: 60", @@ -367,6 +373,7 @@ "e.g. my_filter": "vd: bo_loc_cua_toi", "e.g. my_tools": "vd: cong_cu_cua_toi", "e.g. Tools for performing various operations": "vd: Các công cụ để thực hiện các hoạt động khác nhau", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", "Edit": "Chỉnh sửa", "Edit Arena Model": "Chỉnh sửa Mô hình Arena", @@ -412,6 +419,8 @@ "Enter Chunk Size": "Nhập Kích thước Chunk", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Nhập các cặp \"token:giá_trị_bias\" được phân tách bằng dấu phẩy (ví dụ: 5432:100, 413:-100)", "Enter description": "Nhập mô tả", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "Nhập URL Máy chủ Docling", "Enter Document Intelligence Endpoint": "Nhập Endpoint Trí tuệ Tài liệu", "Enter Document Intelligence Key": "Nhập Khóa Trí tuệ Tài liệu", @@ -587,6 +596,7 @@ "Gemini API Config": "Cấu hình API Gemini", "Gemini API Key is required.": "Yêu cầu Khóa API Gemini.", "General": "Cài đặt chung", + "Generate": "", "Generate an image": "Tạo một hình ảnh", "Generate Image": "Sinh ảnh", "Generate prompt pair": "Tạo cặp prompt", @@ -637,6 +647,7 @@ "Import Config from JSON File": "Nhập Cấu hình từ Tệp JSON", "Import Functions": "Nạp Functions", "Import Models": "Nạp model", + "Import Notes": "", "Import Presets": "Nhập các Preset", "Import Prompts": "Nạp các prompt lên hệ thống", "Import Tools": "Nạp Tools", @@ -721,6 +732,7 @@ "Manage Pipelines": "Quản lý Pipelines", "Manage Tool Servers": "Quản lý Máy chủ Công cụ", "March": "Tháng 3", + "Max Speakers": "", "Max Tokens (num_predict)": "Tokens tối đa (num_predict)", "Max Upload Count": "Số lượng Tải lên Tối đa", "Max Upload Size": "Kích thước Tải lên Tối đa", @@ -777,8 +789,10 @@ "Native": "Gốc", "New Chat": "Tạo chat mới", "New Folder": "Thư mục Mới", + "New Note": "", "New Password": "Mật khẩu mới", "new-channel": "kênh-mới", + "No content": "", "No content found": "Không tìm thấy nội dung", "No content found in file.": "", "No content to speak": "Không có nội dung để nói", @@ -793,6 +807,7 @@ "No model IDs": "Không có ID mô hình", "No models found": "Không tìm thấy mô hình nào", "No models selected": "Chưa chọn mô hình nào", + "No Notes": "", "No results found": "Không tìm thấy kết quả", "No search query generated": "Không có truy vấn tìm kiếm nào được tạo ra", "No source available": "Không có nguồn", @@ -801,6 +816,7 @@ "None": "Không ai", "Not factually correct": "Không chính xác so với thực tế", "Not helpful": "Không hữu ích", + "Note not found": "", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Lưu ý: Nếu bạn đặt điểm (Score) tối thiểu thì tìm kiếm sẽ chỉ trả về những tài liệu có điểm lớn hơn hoặc bằng điểm tối thiểu.", "Notes": "Ghi chú", "Notification Sound": "Âm thanh Thông báo", @@ -910,6 +926,7 @@ "Read": "Đọc", "Read Aloud": "Đọc ra loa", "Reasoning Effort": "Nỗ lực Suy luận", + "Record": "", "Record voice": "Ghi âm", "Redirecting you to Open WebUI Community": "Đang chuyển hướng bạn đến Cộng đồng OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Giảm xác suất tạo ra nội dung vô nghĩa. Giá trị cao hơn (ví dụ: 100) sẽ cho câu trả lời đa dạng hơn, trong khi giá trị thấp hơn (ví dụ: 10) sẽ thận trọng hơn.", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "Đã tìm kiếm {{count}} trang web", "Searching \"{{searchQuery}}\"": "Đang tìm \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Đang tìm kiếm Kiến thức cho \"{{searchQuery}}\"", + "Searching the web...": "", "Searxng Query URL": "URL truy vấn Searxng", "See readme.md for instructions": "Xem readme.md để biết hướng dẫn", "See what's new": "Xem những cập nhật mới", @@ -1181,6 +1199,7 @@ "Unpin": "Bỏ ghim", "Unravel secrets": "Làm sáng tỏ những bí mật", "Untagged": "Chưa gắn thẻ", + "Untitled": "", "Update": "Cập nhật", "Update and Copy Link": "Cập nhật và sao chép link", "Update for the latest features and improvements.": "Cập nhật để có các tính năng và cải tiến mới nhất.", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 1681b2dcc..6934ee429 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)", "(latest)": "(最新版)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} 个可用工具", @@ -138,6 +139,7 @@ "Bad Response": "点踩此回答", "Banners": "公告横幅", "Base Model (From)": "基础模型 (来自)", + "Base URL": "", "Batch Size (num_batch)": "批大小 (num_batch)", "before": "对话", "Being lazy": "懒惰", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing 搜索 V7 订阅密钥", "Bocha Search API Key": "Bocha Search API 密钥", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "为受限响应提升或惩罚特定标记。偏置值将被限制在 -100 到 100(包括两端)之间。(默认:无)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave Search API 密钥", "By {{name}}": "由 {{name}} 提供", "Bypass Embedding and Retrieval": "绕过嵌入和检索", @@ -265,6 +268,8 @@ "Create Knowledge": "创建知识", "Create new key": "创建新密钥", "Create new secret key": "创建新安全密钥", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "创建于", "Created At": "创建于", "Created by": "作者", @@ -302,6 +307,7 @@ "Delete function?": "删除函数?", "Delete Message": "删除消息", "Delete message?": "删除消息?", + "Delete note?": "", "Delete prompt?": "删除提示词?", "delete this link": "此处删除这个链接", "Delete tool?": "删除工具?", @@ -357,7 +363,7 @@ "Download Database": "下载数据库", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如 '30s','10m'。有效的时间单位是秒:'s',分:'m',时:'h'。", "e.g. \"json\" or a JSON schema": "例如 \"json\" 或一个 JSON schema", "e.g. 60": "例如 '60'", @@ -367,6 +373,7 @@ "e.g. my_filter": "例如:my_filter", "e.g. my_tools": "例如:my_tools", "e.g. Tools for performing various operations": "例如:用于执行各种操作的工具", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "例如,'en-US,ja-JP'(留空以便自动检测)", "Edit": "编辑", "Edit Arena Model": "编辑竞技场模型", @@ -412,6 +419,8 @@ "Enter Chunk Size": "输入块大小 (Chunk Size)", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "输入以逗号分隔的“token:bias_value”对(例如:5432:100, 413:-100)", "Enter description": "输入简介描述", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "输入 Docling 服务器 URL", "Enter Document Intelligence Endpoint": "输入 Document Intelligence 端点", "Enter Document Intelligence Key": "输入 Document Intelligence 密钥", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API 配置", "Gemini API Key is required.": "需要 Gemini API 密钥。", "General": "通用", + "Generate": "", "Generate an image": "生成图像", "Generate Image": "生成图像", "Generate prompt pair": "生成提示对", @@ -637,6 +647,7 @@ "Import Config from JSON File": "导入 JSON 文件中的配置信息", "Import Functions": "导入函数", "Import Models": "导入模型", + "Import Notes": "", "Import Presets": "导入预设", "Import Prompts": "导入提示词", "Import Tools": "导入工具", @@ -721,6 +732,7 @@ "Manage Pipelines": "管理 Pipeline", "Manage Tool Servers": "管理工具服务器", "March": "三月", + "Max Speakers": "", "Max Tokens (num_predict)": "最大 Token 数量 (num_predict)", "Max Upload Count": "最大上传数量", "Max Upload Size": "最大上传大小", @@ -777,8 +789,10 @@ "Native": "原生", "New Chat": "新对话", "New Folder": "新文件夹", + "New Note": "", "New Password": "新密码", "new-channel": "新频道", + "No content": "", "No content found": "未发现内容", "No content found in file.": "文件中未找到内容", "No content to speak": "没有内容可朗读", @@ -793,6 +807,7 @@ "No model IDs": "没有模型 ID", "No models found": "未找到任何模型", "No models selected": "未选择任何模型", + "No Notes": "", "No results found": "未找到结果", "No search query generated": "未生成搜索查询", "No source available": "没有可用来源", @@ -801,6 +816,7 @@ "None": "无", "Not factually correct": "事实并非如此", "Not helpful": "无帮助", + "Note not found": "", "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": "笔记", "Notification Sound": "通知提示音", @@ -910,6 +926,7 @@ "Read": "只读", "Read Aloud": "朗读", "Reasoning Effort": "推理努力", + "Record": "", "Record voice": "录音", "Redirecting you to Open WebUI Community": "正在将您重定向到 OpenWebUI 社区", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "降低生成无意义内容的概率。较高的值(如100)将产生更多样化的回答,而较低的值(如10)则更加保守。", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "已搜索 {{count}} 个网站", "Searching \"{{searchQuery}}\"": "搜索 \"{{searchQuery}}\" 中", "Searching Knowledge for \"{{searchQuery}}\"": "检索有关 \"{{searchQuery}}\" 的知识中", + "Searching the web...": "", "Searxng Query URL": "Searxng 查询 URL", "See readme.md for instructions": "查看 readme.md 以获取说明", "See what's new": "查阅最新更新内容", @@ -1181,6 +1199,7 @@ "Unpin": "取消置顶", "Unravel secrets": "解开秘密", "Untagged": "无标签", + "Untitled": "", "Update": "更新", "Update and Copy Link": "更新和复制链接", "Update for the latest features and improvements.": "更新来获得最新功能与改进。", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index e342b6ce4..ce3801eaf 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -4,6 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如:`sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例如:`sh webui.sh --api`)", "(latest)": "(最新版)", + "(leave blank for Azure Commercial URL auto-generation)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} 個可用工具", @@ -138,6 +139,7 @@ "Bad Response": "錯誤回應", "Banners": "橫幅", "Base Model (From)": "基礎模型(來自)", + "Base URL": "", "Batch Size (num_batch)": "批次大小(num_batch)", "before": "之前", "Being lazy": "懶惰模式", @@ -146,6 +148,7 @@ "Bing Search V7 Subscription Key": "Bing 搜尋 V7 訂閱金鑰", "Bocha Search API Key": "Bocha 搜尋 API 金鑰", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "針對受限的回應,增強或懲罰特定 tokens。偏差值將限制在 -100 到 100 (含)。 (預設:none)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", "Brave Search API Key": "Brave 搜尋 API 金鑰", "By {{name}}": "由 {{name}} 製作", "Bypass Embedding and Retrieval": "繞過嵌入與檢索", @@ -265,6 +268,8 @@ "Create Knowledge": "建立知識", "Create new key": "建立新的金鑰", "Create new secret key": "建立新的金鑰", + "Create Note": "", + "Create your first note by clicking on the plus button below.": "", "Created at": "建立於", "Created At": "建立於", "Created by": "建立者", @@ -302,6 +307,7 @@ "Delete function?": "刪除函式?", "Delete Message": "刪除訊息", "Delete message?": "刪除訊息?", + "Delete note?": "", "Delete prompt?": "刪除提示詞?", "delete this link": "刪除此連結", "Delete tool?": "刪除工具?", @@ -357,7 +363,7 @@ "Download Database": "下載資料庫", "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 upload": "", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如:'30s'、'10m'。有效的時間單位為 's'、'm'、'h'。", "e.g. \"json\" or a JSON schema": "範例:\"json\" 或一個 JSON schema", "e.g. 60": "例如:60", @@ -367,6 +373,7 @@ "e.g. my_filter": "例如:my_filter", "e.g. my_tools": "例如:my_tools", "e.g. Tools for performing various operations": "例如:用於執行各種操作的工具", + "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "例如:en-US, ja-JP(留空以自動偵測)", "Edit": "編輯", "Edit Arena Model": "編輯競技場模型", @@ -412,6 +419,8 @@ "Enter Chunk Size": "輸入區塊大小", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "輸入逗號分隔的 \"token:bias_value\" 配對 (範例:5432:100, 413:-100)", "Enter description": "輸入描述", + "Enter Docling OCR Engine": "", + "Enter Docling OCR Language(s)": "", "Enter Docling Server URL": "請輸入 Docling 伺服器 URL", "Enter Document Intelligence Endpoint": "輸入 Document Intelligence 端點", "Enter Document Intelligence Key": "輸入 Document Intelligence 金鑰", @@ -587,6 +596,7 @@ "Gemini API Config": "Gemini API 設定", "Gemini API Key is required.": "必須提供 Gemini API 金鑰", "General": "一般", + "Generate": "", "Generate an image": "產生圖片", "Generate Image": "產生圖片", "Generate prompt pair": "產生提示配對", @@ -637,6 +647,7 @@ "Import Config from JSON File": "從 JSON 檔案匯入設定", "Import Functions": "匯入函式", "Import Models": "匯入模型", + "Import Notes": "", "Import Presets": "匯入預設集", "Import Prompts": "匯入提示詞", "Import Tools": "匯入工具", @@ -721,6 +732,7 @@ "Manage Pipelines": "管理管線", "Manage Tool Servers": "管理工具伺服器", "March": "3 月", + "Max Speakers": "", "Max Tokens (num_predict)": "最大 token 數(num_predict)", "Max Upload Count": "最大上傳數量", "Max Upload Size": "最大上傳大小", @@ -777,8 +789,10 @@ "Native": "原生", "New Chat": "新增對話", "New Folder": "新增資料夾", + "New Note": "", "New Password": "新密碼", "new-channel": "new-channel", + "No content": "", "No content found": "找不到內容", "No content found in file.": "檔案中找不到內容。", "No content to speak": "無可朗讀的內容", @@ -793,6 +807,7 @@ "No model IDs": "沒有任何模型 ID", "No models found": "找不到模型", "No models selected": "未選取模型", + "No Notes": "", "No results found": "找不到任何結果", "No search query generated": "未產生搜尋查詢", "No source available": "無可用源", @@ -801,6 +816,7 @@ "None": "無", "Not factually correct": "與事實不符", "Not helpful": "沒有幫助", + "Note not found": "", "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": "注意", "Notification Sound": "通知聲音", @@ -910,6 +926,7 @@ "Read": "讀取", "Read Aloud": "大聲朗讀", "Reasoning Effort": "推理程度", + "Record": "", "Record voice": "錄音", "Redirecting you to Open WebUI Community": "正在將您重導向至 Open WebUI 社群", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "降低產生無意義內容的機率。較高的值(例如:100)會產生更多樣化的答案,而較低的值(例如:10)會更保守。", @@ -979,6 +996,7 @@ "Searched {{count}} sites": "搜尋到 {{count}} 個站點", "Searching \"{{searchQuery}}\"": "正在搜尋「{{searchQuery}}」", "Searching Knowledge for \"{{searchQuery}}\"": "正在搜尋知識庫中的「{{searchQuery}}」", + "Searching the web...": "", "Searxng Query URL": "Searxng 查詢 URL", "See readme.md for instructions": "檢視 readme.md 以取得說明", "See what's new": "檢視新功能", @@ -1181,6 +1199,7 @@ "Unpin": "取消釘選", "Unravel secrets": "揭開秘密", "Untagged": "取消標簽的", + "Untitled": "", "Update": "更新", "Update and Copy Link": "更新並複製連結", "Update for the latest features and improvements.": "更新以獲得最新功能和改進。", diff --git a/src/lib/utils/websocket.ts b/src/lib/utils/websocket.ts index 41fc21b50..a24ef21a8 100644 --- a/src/lib/utils/websocket.ts +++ b/src/lib/utils/websocket.ts @@ -1,56 +1,51 @@ import { io } from 'socket.io-client'; -import { - socket, - activeUserIds, - USAGE_POOL, -} from '$lib/stores'; +import { socket, activeUserIds, USAGE_POOL } from '$lib/stores'; import { WEBUI_BASE_URL } from '$lib/constants'; - export const setupSocket = async (enableWebsocket) => { - const _socket = io(`${WEBUI_BASE_URL}` || undefined, { - reconnection: true, - reconnectionDelay: 1000, - reconnectionDelayMax: 5000, - randomizationFactor: 0.5, - path: '/ws/socket.io', - transports: enableWebsocket ? ['websocket'] : ['polling', 'websocket'], - auth: { token: localStorage.token } - }); + const _socket = io(`${WEBUI_BASE_URL}` || undefined, { + reconnection: true, + reconnectionDelay: 1000, + reconnectionDelayMax: 5000, + randomizationFactor: 0.5, + path: '/ws/socket.io', + transports: enableWebsocket ? ['websocket'] : ['polling', 'websocket'], + auth: { token: localStorage.token } + }); - await socket.set(_socket); + await socket.set(_socket); - _socket.on('connect_error', (err) => { - console.log('connect_error', err); - }); + _socket.on('connect_error', (err) => { + console.log('connect_error', err); + }); - _socket.on('connect', () => { - console.log('connected', _socket.id); - }); + _socket.on('connect', () => { + console.log('connected', _socket.id); + }); - _socket.on('reconnect_attempt', (attempt) => { - console.log('reconnect_attempt', attempt); - }); + _socket.on('reconnect_attempt', (attempt) => { + console.log('reconnect_attempt', attempt); + }); - _socket.on('reconnect_failed', () => { - console.log('reconnect_failed'); - }); + _socket.on('reconnect_failed', () => { + console.log('reconnect_failed'); + }); - _socket.on('disconnect', (reason, details) => { - console.log(`Socket ${_socket.id} disconnected due to ${reason}`); - if (details) { - console.log('Additional details:', details); - } - }); + _socket.on('disconnect', (reason, details) => { + console.log(`Socket ${_socket.id} disconnected due to ${reason}`); + if (details) { + console.log('Additional details:', details); + } + }); - _socket.on('user-list', (data) => { - console.log('user-list', data); - activeUserIds.set(data.user_ids); - }); + _socket.on('user-list', (data) => { + console.log('user-list', data); + activeUserIds.set(data.user_ids); + }); - _socket.on('usage', (data) => { - console.log('usage', data); - USAGE_POOL.set(data['models']); - }); + _socket.on('usage', (data) => { + console.log('usage', data); + USAGE_POOL.set(data['models']); + }); }; From 4cfb99248d52d504416ee3345bd47d1993c36407 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 3 May 2025 23:48:24 +0400 Subject: [PATCH 198/238] chore: format --- backend/open_webui/retrieval/web/yacy.py | 6 ++++-- backend/open_webui/routers/audio.py | 18 ++++++++++++------ backend/open_webui/socket/main.py | 24 +++++++++++++----------- backend/open_webui/utils/tools.py | 4 +++- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/backend/open_webui/retrieval/web/yacy.py b/backend/open_webui/retrieval/web/yacy.py index 8d75dfa6e..bc61425cb 100644 --- a/backend/open_webui/retrieval/web/yacy.py +++ b/backend/open_webui/retrieval/web/yacy.py @@ -53,7 +53,7 @@ def search_yacy( # Check if provided a json API URL if not query_url.endswith("yacysearch.json"): # Strip all query parameters from the URL - query_url = query_url.rstrip('/') + "/yacysearch.json" + query_url = query_url.rstrip("/") + "/yacysearch.json" log.debug(f"searching {query_url}") @@ -79,7 +79,9 @@ def search_yacy( sorted_results = get_filtered_results(sorted_results, filter_list) return [ SearchResult( - link=result["link"], title=result.get("title"), snippet=result.get("description") + link=result["link"], + title=result.get("title"), + snippet=result.get("description"), ) for result in sorted_results[:count] ] diff --git a/backend/open_webui/routers/audio.py b/backend/open_webui/routers/audio.py index 6d9a2b604..fba41af4c 100644 --- a/backend/open_webui/routers/audio.py +++ b/backend/open_webui/routers/audio.py @@ -33,7 +33,7 @@ from open_webui.config import ( WHISPER_MODEL_AUTO_UPDATE, WHISPER_MODEL_DIR, CACHE_DIR, - WHISPER_LANGUAGE + WHISPER_LANGUAGE, ) from open_webui.constants import ERROR_MESSAGES @@ -154,6 +154,7 @@ class STTConfigForm(BaseModel): AZURE_BASE_URL: str AZURE_MAX_SPEAKERS: str + class AudioConfigUpdateForm(BaseModel): tts: TTSConfigForm stt: STTConfigForm @@ -184,7 +185,7 @@ async def get_audio_config(request: Request, user=Depends(get_admin_user)): "AZURE_REGION": request.app.state.config.AUDIO_STT_AZURE_REGION, "AZURE_LOCALES": request.app.state.config.AUDIO_STT_AZURE_LOCALES, "AZURE_BASE_URL": request.app.state.config.AUDIO_STT_AZURE_BASE_URL, - "AZURE_MAX_SPEAKERS": request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS, + "AZURE_MAX_SPEAKERS": request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS, }, } @@ -215,7 +216,9 @@ async def update_audio_config( request.app.state.config.AUDIO_STT_AZURE_REGION = form_data.stt.AZURE_REGION request.app.state.config.AUDIO_STT_AZURE_LOCALES = form_data.stt.AZURE_LOCALES request.app.state.config.AUDIO_STT_AZURE_BASE_URL = form_data.stt.AZURE_BASE_URL - request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS = form_data.stt.AZURE_MAX_SPEAKERS + request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS = ( + form_data.stt.AZURE_MAX_SPEAKERS + ) if request.app.state.config.STT_ENGINE == "": request.app.state.faster_whisper_model = set_faster_whisper_model( @@ -245,7 +248,7 @@ async def update_audio_config( "AZURE_REGION": request.app.state.config.AUDIO_STT_AZURE_REGION, "AZURE_LOCALES": request.app.state.config.AUDIO_STT_AZURE_LOCALES, "AZURE_BASE_URL": request.app.state.config.AUDIO_STT_AZURE_BASE_URL, - "AZURE_MAX_SPEAKERS": request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS, + "AZURE_MAX_SPEAKERS": request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS, }, } @@ -509,7 +512,7 @@ def transcribe(request: Request, file_path): file_path, beam_size=5, vad_filter=request.app.state.config.WHISPER_VAD_FILTER, - language=WHISPER_LANGUAGE + language=WHISPER_LANGUAGE, ) log.info( "Detected language '%s' with probability %f" @@ -698,7 +701,10 @@ def transcribe(request: Request, file_path): ) } - url = base_url or f"https://{region}.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-11-15" + url = ( + base_url + or f"https://{region}.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-11-15" + ) # Use context manager to ensure file is properly closed with open(file_path, "rb") as audio_file: diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 3d81a4e1e..57ccd6e57 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -193,7 +193,7 @@ async def connect(sid, environ, auth): await sio.emit("user-list", {"user_ids": list(USER_POOL.keys())}) await sio.emit("usage", {"models": get_models_in_use()}) return True - + return False @@ -317,16 +317,18 @@ def get_event_emitter(request_info, update_db=True): ) ) - emit_tasks = [sio.emit( - "chat-events", - { - "chat_id": request_info.get("chat_id", None), - "message_id": request_info.get("message_id", None), - "data": event_data, - }, - to=session_id, - ) - for session_id in session_ids] + emit_tasks = [ + sio.emit( + "chat-events", + { + "chat_id": request_info.get("chat_id", None), + "message_id": request_info.get("message_id", None), + "data": event_data, + }, + to=session_id, + ) + for session_id in session_ids + ] await asyncio.gather(*emit_tasks) diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index 42df84f9e..123ec5fb9 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -291,7 +291,9 @@ def convert_function_to_pydantic_model(func: Callable) -> type[BaseModel]: param_description = function_param_descriptions.get(name, None) if param_description: - field_defs[name] = type_hint, Field(default_value, description=param_description) + field_defs[name] = type_hint, Field( + default_value, description=param_description + ) else: field_defs[name] = type_hint, default_value From 9c4a931d2235dcad683997d03082b5be8929d4d9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 00:14:19 +0400 Subject: [PATCH 199/238] feat: capture display media audio --- .../chat/MessageInput/VoiceRecording.svelte | 35 ++++++-- .../components/icons/CursorArrowRays.svelte | 19 +++++ src/lib/components/icons/Mic.svelte | 15 +++- src/lib/components/icons/MicSolid.svelte | 10 +++ src/lib/components/notes/NoteEditor.svelte | 85 ++++++++++--------- src/lib/components/notes/RecordMenu.svelte | 70 +++++++++++++++ .../KnowledgeBase/AddTextContentModal.svelte | 4 +- 7 files changed, 189 insertions(+), 49 deletions(-) create mode 100644 src/lib/components/icons/CursorArrowRays.svelte create mode 100644 src/lib/components/icons/MicSolid.svelte create mode 100644 src/lib/components/notes/RecordMenu.svelte diff --git a/src/lib/components/chat/MessageInput/VoiceRecording.svelte b/src/lib/components/chat/MessageInput/VoiceRecording.svelte index 726e26bbb..941c814d7 100644 --- a/src/lib/components/chat/MessageInput/VoiceRecording.svelte +++ b/src/lib/components/chat/MessageInput/VoiceRecording.svelte @@ -10,6 +10,8 @@ export let recording = false; export let transcribe = true; + export let displayMedia = false; + export let className = ' p-2.5 w-full max-w-full'; export let onCancel = () => {}; @@ -175,13 +177,34 @@ const startRecording = async () => { loading = true; - stream = await navigator.mediaDevices.getUserMedia({ - audio: { - echoCancellation: true, - noiseSuppression: true, - autoGainControl: true + try { + if (displayMedia) { + stream = await navigator.mediaDevices.getDisplayMedia({ + video: { + mediaSource: 'screen' + }, + audio: { + echoCancellation: true, + noiseSuppression: true, + autoGainControl: true + } + }); + } else { + stream = await navigator.mediaDevices.getUserMedia({ + audio: { + echoCancellation: true, + noiseSuppression: true, + autoGainControl: true + } + }); } - }); + } catch (err) { + console.error('Error accessing media devices.', err); + toast.error($i18n.t('Error accessing media devices.')); + loading = false; + recording = false; + return; + } mediaRecorder = new MediaRecorder(stream); mediaRecorder.onstart = () => { diff --git a/src/lib/components/icons/CursorArrowRays.svelte b/src/lib/components/icons/CursorArrowRays.svelte new file mode 100644 index 000000000..801626838 --- /dev/null +++ b/src/lib/components/icons/CursorArrowRays.svelte @@ -0,0 +1,19 @@ + + + + + diff --git a/src/lib/components/icons/Mic.svelte b/src/lib/components/icons/Mic.svelte index 7967b6da2..dbfc11126 100644 --- a/src/lib/components/icons/Mic.svelte +++ b/src/lib/components/icons/Mic.svelte @@ -1,10 +1,19 @@ - - + diff --git a/src/lib/components/icons/MicSolid.svelte b/src/lib/components/icons/MicSolid.svelte new file mode 100644 index 000000000..7967b6da2 --- /dev/null +++ b/src/lib/components/icons/MicSolid.svelte @@ -0,0 +1,10 @@ + + + + + + diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 067715e50..93f5d65b4 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -38,7 +38,7 @@ import RichTextInput from '../common/RichTextInput.svelte'; import Spinner from '../common/Spinner.svelte'; - import Mic from '../icons/Mic.svelte'; + import MicSolid from '../icons/MicSolid.svelte'; import VoiceRecording from '../chat/MessageInput/VoiceRecording.svelte'; import Tooltip from '../common/Tooltip.svelte'; @@ -49,6 +49,7 @@ import Image from '../common/Image.svelte'; import FileItem from '../common/FileItem.svelte'; import FilesOverlay from '../chat/MessageInput/FilesOverlay.svelte'; + import RecordMenu from './RecordMenu.svelte'; export let id: null | string = null; @@ -67,7 +68,8 @@ }; let files = []; - let voiceInput = false; + let recording = false; + let displayMediaRecord = false; let dragged = false; let loading = false; @@ -380,64 +382,71 @@
- {#if voiceInput} + {#if recording}
{ - voiceInput = false; + recording = false; + displayMediaRecord = false; }} onConfirm={(data) => { if (data?.file) { uploadFileHandler(data?.file); } + + recording = false; + displayMediaRecord = false; }} />
{:else} - + { + displayMediaRecord = false; + + try { + let stream = await navigator.mediaDevices + .getUserMedia({ audio: true }) + .catch(function (err) { + toast.error( + $i18n.t(`Permission denied when accessing microphone: {{error}}`, { + error: err + }) + ); + return null; + }); + + if (stream) { + recording = true; + const tracks = stream.getTracks(); + tracks.forEach((track) => track.stop()); + } + stream = null; + } catch { + toast.error($i18n.t('Permission denied when accessing microphone')); + } + }} + onCaptureAudio={async () => { + displayMediaRecord = true; + + recording = true; + }} + > - + {/if} - -
diff --git a/src/lib/components/notes/RecordMenu.svelte b/src/lib/components/notes/RecordMenu.svelte new file mode 100644 index 000000000..4ab195497 --- /dev/null +++ b/src/lib/components/notes/RecordMenu.svelte @@ -0,0 +1,70 @@ + + + { + dispatch('change', state); + }} +> + + + + + + fade(e, { duration: 100 })} + > + + + + + + diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte index 4762d5d97..2e288c6d7 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte @@ -9,7 +9,7 @@ import Modal from '$lib/components/common/Modal.svelte'; import RichTextInput from '$lib/components/common/RichTextInput.svelte'; import XMark from '$lib/components/icons/XMark.svelte'; - import Mic from '$lib/components/icons/Mic.svelte'; + import MicSolid from '$lib/components/icons/MicSolid.svelte'; import Tooltip from '$lib/components/common/Tooltip.svelte'; import VoiceRecording from '$lib/components/chat/MessageInput/VoiceRecording.svelte'; export let show = false; @@ -125,7 +125,7 @@ } }} > - + {/if} From 59e52add63f7438480f9ff15674a65da3a36d094 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 00:15:46 +0400 Subject: [PATCH 200/238] chore: bump --- backend/requirements.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/requirements.txt b/backend/requirements.txt index aea3d2306..ce55d2d34 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -130,11 +130,11 @@ tencentcloud-sdk-python==3.0.1336 opentelemetry-api==1.32.1 opentelemetry-sdk==1.32.1 opentelemetry-exporter-otlp==1.32.1 -opentelemetry-instrumentation==0.53b0 -opentelemetry-instrumentation-fastapi==0.53b0 -opentelemetry-instrumentation-sqlalchemy==0.53b0 -opentelemetry-instrumentation-redis==0.53b0 -opentelemetry-instrumentation-requests==0.53b0 -opentelemetry-instrumentation-logging==0.53b0 -opentelemetry-instrumentation-httpx==0.53b0 -opentelemetry-instrumentation-aiohttp-client==0.53b0 +opentelemetry-instrumentation==0.53b1 +opentelemetry-instrumentation-fastapi==0.53b1 +opentelemetry-instrumentation-sqlalchemy==0.53b1 +opentelemetry-instrumentation-redis==0.53b1 +opentelemetry-instrumentation-requests==0.53b1 +opentelemetry-instrumentation-logging==0.53b1 +opentelemetry-instrumentation-httpx==0.53b1 +opentelemetry-instrumentation-aiohttp-client==0.53b1 From c5c98591f942027892fcf977245422bcb7e35263 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 00:20:30 +0400 Subject: [PATCH 201/238] refac --- src/lib/components/notes/NoteEditor.svelte | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 93f5d65b4..e1e51c79e 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -331,9 +331,9 @@
- {#if note.data?.files} + {#if files}
- {#each note.data.files as file, fileIdx} + {#each files as file, fileIdx}
{#if file.type === 'image'} { files = files.filter((item) => item?.id !== file.id); From a7cbfeec9fd81955bfb4f65b591ccb4aa55d98ca Mon Sep 17 00:00:00 2001 From: Tiancong Li Date: Sun, 4 May 2025 11:58:20 +0800 Subject: [PATCH 202/238] i18n: update zh-TW --- src/lib/i18n/locales/zh-TW/translation.json | 38 ++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index ce3801eaf..1ac748e1b 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如:`sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例如:`sh webui.sh --api`)", "(latest)": "(最新版)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for Azure Commercial URL auto-generation)": "(留空以自動產生 Azure Commercial URL)", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} 個可用工具", @@ -139,7 +139,7 @@ "Bad Response": "錯誤回應", "Banners": "橫幅", "Base Model (From)": "基礎模型(來自)", - "Base URL": "", + "Base URL": "Base URL", "Batch Size (num_batch)": "批次大小(num_batch)", "before": "之前", "Being lazy": "懶惰模式", @@ -148,7 +148,7 @@ "Bing Search V7 Subscription Key": "Bing 搜尋 V7 訂閱金鑰", "Bocha Search API Key": "Bocha 搜尋 API 金鑰", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "針對受限的回應,增強或懲罰特定 tokens。偏差值將限制在 -100 到 100 (含)。 (預設:none)", - "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "必須同時提供 Docling OCR 引擎與語言設定,或兩者皆留空。", "Brave Search API Key": "Brave 搜尋 API 金鑰", "By {{name}}": "由 {{name}} 製作", "Bypass Embedding and Retrieval": "繞過嵌入與檢索", @@ -268,8 +268,8 @@ "Create Knowledge": "建立知識", "Create new key": "建立新的金鑰", "Create new secret key": "建立新的金鑰", - "Create Note": "", - "Create your first note by clicking on the plus button below.": "", + "Create Note": "新增筆記", + "Create your first note by clicking on the plus button below.": "點擊下方加號按鈕建立您的第一則筆記。", "Created at": "建立於", "Created At": "建立於", "Created by": "建立者", @@ -307,7 +307,7 @@ "Delete function?": "刪除函式?", "Delete Message": "刪除訊息", "Delete message?": "刪除訊息?", - "Delete note?": "", + "Delete note?": "刪除筆記?", "Delete prompt?": "刪除提示詞?", "delete this link": "刪除此連結", "Delete tool?": "刪除工具?", @@ -363,7 +363,7 @@ "Download Database": "下載資料庫", "Drag and drop a file to upload or select a file to view": "拖放檔案以上傳或選擇檔案以檢視", "Draw": "繪製", - "Drop any files here to upload": "", + "Drop any files here to upload": "拖曳檔案至此處進行上傳", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如:'30s'、'10m'。有效的時間單位為 's'、'm'、'h'。", "e.g. \"json\" or a JSON schema": "範例:\"json\" 或一個 JSON schema", "e.g. 60": "例如:60", @@ -373,7 +373,7 @@ "e.g. my_filter": "例如:my_filter", "e.g. my_tools": "例如:my_tools", "e.g. Tools for performing various operations": "例如:用於執行各種操作的工具", - "e.g., 3, 4, 5 (leave blank for default)": "", + "e.g., 3, 4, 5 (leave blank for default)": "例如:3、4、5(留空使用預設值)", "e.g., en-US,ja-JP (leave blank for auto-detect)": "例如:en-US, ja-JP(留空以自動偵測)", "Edit": "編輯", "Edit Arena Model": "編輯競技場模型", @@ -419,8 +419,8 @@ "Enter Chunk Size": "輸入區塊大小", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "輸入逗號分隔的 \"token:bias_value\" 配對 (範例:5432:100, 413:-100)", "Enter description": "輸入描述", - "Enter Docling OCR Engine": "", - "Enter Docling OCR Language(s)": "", + "Enter Docling OCR Engine": "輸入 Docling OCR 引擎", + "Enter Docling OCR Language(s)": "輸入 Docling OCR 語言", "Enter Docling Server URL": "請輸入 Docling 伺服器 URL", "Enter Document Intelligence Endpoint": "輸入 Document Intelligence 端點", "Enter Document Intelligence Key": "輸入 Document Intelligence 金鑰", @@ -596,7 +596,7 @@ "Gemini API Config": "Gemini API 設定", "Gemini API Key is required.": "必須提供 Gemini API 金鑰", "General": "一般", - "Generate": "", + "Generate": "產生", "Generate an image": "產生圖片", "Generate Image": "產生圖片", "Generate prompt pair": "產生提示配對", @@ -647,7 +647,7 @@ "Import Config from JSON File": "從 JSON 檔案匯入設定", "Import Functions": "匯入函式", "Import Models": "匯入模型", - "Import Notes": "", + "Import Notes": "匯入筆記", "Import Presets": "匯入預設集", "Import Prompts": "匯入提示詞", "Import Tools": "匯入工具", @@ -789,10 +789,10 @@ "Native": "原生", "New Chat": "新增對話", "New Folder": "新增資料夾", - "New Note": "", + "New Note": "新增筆記", "New Password": "新密碼", "new-channel": "new-channel", - "No content": "", + "No content": "無內容", "No content found": "找不到內容", "No content found in file.": "檔案中找不到內容。", "No content to speak": "無可朗讀的內容", @@ -807,7 +807,7 @@ "No model IDs": "沒有任何模型 ID", "No models found": "找不到模型", "No models selected": "未選取模型", - "No Notes": "", + "No Notes": "尚無筆記", "No results found": "找不到任何結果", "No search query generated": "未產生搜尋查詢", "No source available": "無可用源", @@ -816,7 +816,7 @@ "None": "無", "Not factually correct": "與事實不符", "Not helpful": "沒有幫助", - "Note not found": "", + "Note not found": "找不到筆記", "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": "注意", "Notification Sound": "通知聲音", @@ -926,7 +926,7 @@ "Read": "讀取", "Read Aloud": "大聲朗讀", "Reasoning Effort": "推理程度", - "Record": "", + "Record": "錄製", "Record voice": "錄音", "Redirecting you to Open WebUI Community": "正在將您重導向至 Open WebUI 社群", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "降低產生無意義內容的機率。較高的值(例如:100)會產生更多樣化的答案,而較低的值(例如:10)會更保守。", @@ -996,7 +996,7 @@ "Searched {{count}} sites": "搜尋到 {{count}} 個站點", "Searching \"{{searchQuery}}\"": "正在搜尋「{{searchQuery}}」", "Searching Knowledge for \"{{searchQuery}}\"": "正在搜尋知識庫中的「{{searchQuery}}」", - "Searching the web...": "", + "Searching the web...": "正在搜尋網路……", "Searxng Query URL": "Searxng 查詢 URL", "See readme.md for instructions": "檢視 readme.md 以取得說明", "See what's new": "檢視新功能", @@ -1199,7 +1199,7 @@ "Unpin": "取消釘選", "Unravel secrets": "揭開秘密", "Untagged": "取消標簽的", - "Untitled": "", + "Untitled": "未命名", "Update": "更新", "Update and Copy Link": "更新並複製連結", "Update for the latest features and improvements.": "更新以獲得最新功能和改進。", From dd42a10aa15dc1ec341b7e5513d73169bbd2f4a6 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 12:01:20 +0400 Subject: [PATCH 203/238] refac --- src/lib/components/notes/NoteEditor.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index e1e51c79e..84f769acd 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -96,7 +96,6 @@ let debounceTimeout: NodeJS.Timeout | null = null; const changeDebounceHandler = () => { - console.log('debounce'); if (debounceTimeout) { clearTimeout(debounceTimeout); } From 1cf98434687f4f13173afbb64396e37658a02246 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 12:02:10 +0400 Subject: [PATCH 204/238] refac --- src/lib/components/common/RichTextInput.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte index 2b506670a..fa35add42 100644 --- a/src/lib/components/common/RichTextInput.svelte +++ b/src/lib/components/common/RichTextInput.svelte @@ -374,7 +374,7 @@ } }); - $: if (value && editor) { + $: if (value !== null && editor) { onValueChange(); } From 0e51b7565412b285137faad18dd79a9cff755cbf Mon Sep 17 00:00:00 2001 From: SadmL Date: Sun, 4 May 2025 11:59:13 +0300 Subject: [PATCH 205/238] Russian locale update --- src/lib/i18n/locales/ru-RU/translation.json | 94 ++++++++++----------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index a3d5996b8..040ac6fec 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(например, `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(например, `sh webui.sh --api`)", "(latest)": "(последняя)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for Azure Commercial URL auto-generation)": "(оставьте поле пустым для автоматической генерации коммерческого URL-адреса Azure)", "(Ollama)": "", "{{ models }}": "{{ модели }}", "{{COUNT}} Available Tools": "{{COUNT}} доступных инструментов", @@ -58,19 +58,19 @@ "All": "Все", "All Documents": "Все документы", "All models deleted successfully": "Все модели успешно удалены", - "Allow Call": "", + "Allow Call": "Разрешить звонки", "Allow Chat Controls": "Разрешить управление чатом", "Allow Chat Delete": "Разрешить удаление чата", "Allow Chat Deletion": "Разрешить удаление чата", "Allow Chat Edit": "Разрешить редактирование чата", - "Allow Chat Export": "", - "Allow Chat Share": "", + "Allow Chat Export": "Разрешить экспорт чата", + "Allow Chat Share": "Разрешить общий доступ к чату", "Allow File Upload": "Разрешить загрузку файлов", "Allow Multiple Models in Chat": "Разрешить использование нескольких моделей в чате", "Allow non-local voices": "Разрешить не локальные голоса", - "Allow Speech to Text": "", + "Allow Speech to Text": "Разрешить преобразование речи в текст", "Allow Temporary Chat": "Разрешить временные чаты", - "Allow Text to Speech": "", + "Allow Text to Speech": "Разрешить преобразование текста в речь", "Allow User Location": "Разрешить доступ к местоположению пользователя", "Allow Voice Interruption in Call": "Разрешить прерывание голоса во время вызова", "Allowed Endpoints": "Разрешенные энд-поинты", @@ -79,7 +79,7 @@ "Always": "Всегда", "Always Collapse Code Blocks": "Всегда сворачивать блоки кода", "Always Expand Details": "Всегда разворачивать детали", - "Always Play Notification Sound": "", + "Always Play Notification Sound": "Всегда проигрывать звук уведомления", "Amazing": "Удивительно", "an assistant": "ассистент", "Analyzed": "Проанализировано", @@ -139,7 +139,7 @@ "Bad Response": "Плохой ответ", "Banners": "Баннеры", "Base Model (From)": "Базовая модель (от)", - "Base URL": "", + "Base URL": "Базовый URL адрес", "Batch Size (num_batch)": "Размер партии (num_batch)", "before": "до", "Being lazy": "Лениво", @@ -148,7 +148,7 @@ "Bing Search V7 Subscription Key": "Ключ API Bing Search V7", "Bocha Search API Key": "Ключ API поиска Bocha", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Увеличение или отмена определенных токенов за ограниченные ответы. Значения смещения будут находиться в диапазоне от -100 до 100 (включительно). (По умолчанию: ничего)", - "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "Для Docling должны быть указаны как механизм распознавания текста, так и язык(и), или оба должны быть оставлены пустыми.", "Brave Search API Key": "Ключ API поиска Brave", "By {{name}}": "От {{name}}", "Bypass Embedding and Retrieval": "Обход встраивания и извлечения данных", @@ -251,7 +251,7 @@ "Copied shared chat URL to clipboard!": "Копирование в буфер обмена выполнено успешно!", "Copied to clipboard": "Скопировано в буфер обмена", "Copy": "Копировать", - "Copy Formatted Text": "", + "Copy Formatted Text": "Копировать форматированный текст", "Copy last code block": "Копировать последний блок кода", "Copy last response": "Копировать последний ответ", "Copy Link": "Копировать ссылку", @@ -268,8 +268,8 @@ "Create Knowledge": "Создать знание", "Create new key": "Создать новый ключ", "Create new secret key": "Создать новый секретный ключ", - "Create Note": "", - "Create your first note by clicking on the plus button below.": "", + "Create Note": "Создать заметку", + "Create your first note by clicking on the plus button below.": "Создайте свою первую заметку, нажав на кнопку "плюс" ниже.", "Created at": "Создан(а)", "Created At": "Создано", "Created by": "Создано", @@ -307,7 +307,7 @@ "Delete function?": "Удалить функцию?", "Delete Message": "Удалить сообщение", "Delete message?": "Удалить сообщение?", - "Delete note?": "", + "Delete note?": "Удалить заметку?", "Delete prompt?": "Удалить промпт?", "delete this link": "удалить эту ссылку", "Delete tool?": "Удалить этот инструмент?", @@ -363,7 +363,7 @@ "Download Database": "Загрузить базу данных", "Drag and drop a file to upload or select a file to view": "Перетащите файл для загрузки или выберите файл для просмотра.", "Draw": "Рисовать", - "Drop any files here to upload": "", + "Drop any files here to upload": "Переместите сюда любые файлы для загрузки", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "например, '30s','10m'. Допустимые единицы времени: 's', 'm', 'h'.", "e.g. \"json\" or a JSON schema": "например, \"json\" или схему JSON", "e.g. 60": "например, 60", @@ -373,7 +373,7 @@ "e.g. my_filter": "например, мой_фильтр", "e.g. my_tools": "например, мой_инструмент", "e.g. Tools for performing various operations": "например, инструменты для выполнения различных операций", - "e.g., 3, 4, 5 (leave blank for default)": "", + "e.g., 3, 4, 5 (leave blank for default)": "например, 3, 4, 5 (оставьте поле пустым по умолчанию)", "e.g., en-US,ja-JP (leave blank for auto-detect)": "например, en-US,ja-JP (оставьте поле пустым для автоматического определения)", "Edit": "Редактировать", "Edit Arena Model": "Изменить модель арены", @@ -419,17 +419,17 @@ "Enter Chunk Size": "Введите размер фрагмента", "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Введите пары \"token:bias_value\", разделенные запятыми (пример: 5432:100, 413:-100).", "Enter description": "Введите описание", - "Enter Docling OCR Engine": "", - "Enter Docling OCR Language(s)": "", + "Enter Docling OCR Engine": "Введите Docling OCR Engine", + "Enter Docling OCR Language(s)": "Введите языки для Docling OCR", "Enter Docling Server URL": "Введите URL сервера Docling", "Enter Document Intelligence Endpoint": "Введите энд-поинт анализа документов", "Enter Document Intelligence Key": "Введите ключ для анализа документов", "Enter domains separated by commas (e.g., example.com,site.org)": "Введите домены, разделенные запятыми (например, example.com,site.org)", "Enter Exa API Key": "Введите ключ API для Exa", - "Enter External Web Loader API Key": "", - "Enter External Web Loader URL": "", - "Enter External Web Search API Key": "", - "Enter External Web Search URL": "", + "Enter External Web Loader API Key": "Введите ключ API внешнего веб-загрузчика", + "Enter External Web Loader URL": "Введите URL-адрес внешнего веб-загрузчика", + "Enter External Web Search API Key": "Введите ключ API внешнего веб-поиска", + "Enter External Web Search URL": "Введите URL-адрес внешнего веб-поиска", "Enter Firecrawl API Base URL": "Введите базовый URL-адрес Firecrawl API", "Enter Firecrawl API Key": "Введите ключ API для Firecrawl", "Enter Github Raw URL": "Введите необработанный URL-адрес Github", @@ -447,7 +447,7 @@ "Enter Model ID": "Введите ID модели", "Enter model tag (e.g. {{modelTag}})": "Введите тег модели (например, {{modelTag}})", "Enter Mojeek Search API Key": "Введите ключ API поиска Mojeek", - "Enter New Password": "", + "Enter New Password": "Введите новый пароль", "Enter Number of Steps (e.g. 50)": "Введите количество шагов (например, 50)", "Enter Perplexity API Key": "Введите ключ API Perplexity", "Enter Playwright Timeout": "Введите таймаут для Playwright", @@ -484,15 +484,15 @@ "Enter Top K Reranker": "Введите Top K переоценщика", "Enter URL (e.g. http://127.0.0.1:7860/)": "Введите URL-адрес (например, http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Введите URL-адрес (например, http://localhost:11434)", - "Enter Yacy Password": "", - "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", - "Enter Yacy Username": "", + "Enter Yacy Password": "Введите пароль Yacy", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Введите URL-адрес Yacy (напр., http://yacy.example.com:8090)", + "Enter Yacy Username": "Введите имя пользователя Yacy", "Enter your current password": "Введите ваш текущий пароль", "Enter Your Email": "Введите вашу электронную почту", "Enter Your Full Name": "Введите ваше полное имя", "Enter your message": "Введите ваше сообщение", "Enter your name": "Введите ваше имя", - "Enter Your Name": "", + "Enter Your Name": "Введите ваше Имя", "Enter your new password": "Введите свой новый пароль", "Enter Your Password": "Введите ваш пароль", "Enter Your Role": "Введите вашу роль", @@ -532,15 +532,15 @@ "Export Tools": "Экспортировать инструменты", "External": "Внешнее", "External Models": "Внешние модели", - "External Web Loader API Key": "", - "External Web Loader URL": "", - "External Web Search API Key": "", - "External Web Search URL": "", + "External Web Loader API Key": "Ключ API внешнего веб-загрузчика", + "External Web Loader URL": "URL-адрес внешнего веб-загрузчика", + "External Web Search API Key": "Внешний ключ API веб-поиска", + "External Web Search URL": "URL-адрес внешнего веб-поиска", "Failed to add file.": "Не удалось добавить файл.", "Failed to connect to {{URL}} OpenAPI tool server": "Не удалось подключиться к серверу инструмента OpenAI {{URL}}", "Failed to create API Key.": "Не удалось создать ключ API.", "Failed to fetch models": "Не удалось получить модели", - "Failed to load file content.": "", + "Failed to load file content.": "Не удалось загрузить содержимое файла.", "Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена", "Failed to save connections": "Не удалось сохранить подключения", "Failed to save models configuration": "Не удалось сохранить конфигурацию моделей", @@ -596,7 +596,7 @@ "Gemini API Config": "Конфигурация Gemini API", "Gemini API Key is required.": "Требуется API ключ для Gemini.", "General": "Общее", - "Generate": "", + "Generate": "Сгенерировать", "Generate an image": "Сгенерировать изображение", "Generate Image": "Сгенерировать изображение", "Generate prompt pair": "Сгенерировать пару запросов", @@ -647,7 +647,7 @@ "Import Config from JSON File": "Импорт конфигурации из JSON-файла", "Import Functions": "Импортировать Функции", "Import Models": "Импортировать Модели", - "Import Notes": "", + "Import Notes": "Импортировать Заметки", "Import Presets": "Импортировать Пресеты", "Import Prompts": "Импортировать Промпты", "Import Tools": "Импортировать Инструменты", @@ -749,8 +749,8 @@ "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, смогут просматривать общий чат.", "Microsoft OneDrive": "", - "Microsoft OneDrive (personal)": "", - "Microsoft OneDrive (work/school)": "", + "Microsoft OneDrive (personal)": "Microsoft OneDrive (личный)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive (работа/школа)", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -789,12 +789,12 @@ "Native": "Нативно", "New Chat": "Новый чат", "New Folder": "Новая папка", - "New Note": "", + "New Note": "Новая заметка", "New Password": "Новый пароль", "new-channel": "", - "No content": "", + "No content": "Нет контента", "No content found": "Контент не найден", - "No content found in file.": "", + "No content found in file.": "В файле не найдено никакого содержимого", "No content to speak": "Нечего говорить", "No distance available": "Никаких доступных растояний", "No feedbacks found": "Никаких обратных связей не найдено", @@ -807,7 +807,7 @@ "No model IDs": "Нет ID модели", "No models found": "Модели не найдены", "No models selected": "Модели не выбраны", - "No Notes": "", + "No Notes": "Нет заметок", "No results found": "Результатов не найдено", "No search query generated": "Поисковый запрос не сгенерирован", "No source available": "Нет доступных источников", @@ -816,7 +816,7 @@ "None": "Нет", "Not factually correct": "Не соответствует действительности", "Not helpful": "Бесполезно", - "Note not found": "", + "Note not found": "Заметки не найдены", "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": "Заметки", "Notification Sound": "Звук уведомления", @@ -926,7 +926,7 @@ "Read": "Прочитать", "Read Aloud": "Прочитать вслух", "Reasoning Effort": "Усилие рассуждения", - "Record": "", + "Record": "Запись", "Record voice": "Записать голос", "Redirecting you to Open WebUI Community": "Перенаправляем вас в сообщество OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "Снижает вероятность появления бессмыслицы. Большее значение (например, 100) даст более разнообразные ответы, в то время как меньшее значение (например, 10) будет более консервативным.", @@ -975,7 +975,7 @@ "Save Tag": "Сохранить тег", "Saved": "Сохранено", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Прямое сохранение журналов чата в хранилище вашего браузера больше не поддерживается. Пожалуйста, потратьте минуту, чтобы скачать и удалить ваши журналы чата, нажав на кнопку ниже. Не волнуйтесь, вы легко сможете повторно импортировать свои журналы чата в бэкенд через", - "Scroll On Branch Change": "", + "Scroll On Branch Change": "Чтобы изменить ветку. прокрутите страницу", "Search": "Поиск", "Search a model": "Поиск по моделям", "Search Base": "Поиск в базе", @@ -996,7 +996,7 @@ "Searched {{count}} sites": "Поиск по {{count}} сайтам", "Searching \"{{searchQuery}}\"": "Поиск по запросу \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Поиск знания для \"{{searchQuery}}\"", - "Searching the web...": "", + "Searching the web...": "Поиск в интернете...", "Searxng Query URL": "URL-адрес запроса Searxng", "See readme.md for instructions": "Смотрите readme.md для инструкций", "See what's new": "Посмотреть, что нового", @@ -1137,7 +1137,7 @@ "This will reset the knowledge base and sync all files. Do you wish to continue?": "Это сбросит базу знаний и синхронизирует все файлы. Хотите продолжить?", "Thorough explanation": "Подробное объяснение", "Thought for {{DURATION}}": "Рассуждаю {{DURATION}}", - "Thought for {{DURATION}} seconds": "Рассуждал {{DURATION}} секунд", + "Thought for {{DURATION}} seconds": "Рассуждал {{DURATION}} секунд(ы)", "Tika": "Tika", "Tika Server URL required.": "Требуется URL-адрес сервера Tika.", "Tiktoken": "", @@ -1283,9 +1283,9 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Напишите резюме в 50 словах, которое кратко описывает [тему или ключевое слово].", "Write something...": "Напишите что-нибудь...", "Write your model template content here": "Напишите здесь содержимое шаблона вашей модели.", - "Yacy Instance URL": "", - "Yacy Password": "", - "Yacy Username": "", + "Yacy Instance URL": "URL-адрес экземпляра Yacy", + "Yacy Password": "Пароль Yacy", + "Yacy Username": "Имя пользователя Yacy", "Yesterday": "Вчера", "You": "Вы", "You are currently using a trial license. Please contact support to upgrade your license.": "В настоящее время вы используете пробную лицензию. Пожалуйста, обратитесь в службу поддержки для обновления вашей лицензии.", From 9b133a2245a57bb80f887872593cdcfcb43b6fa8 Mon Sep 17 00:00:00 2001 From: SadmL Date: Sun, 4 May 2025 12:05:21 +0300 Subject: [PATCH 206/238] misspell fix --- src/lib/i18n/locales/ru-RU/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 040ac6fec..912b704b9 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -269,7 +269,7 @@ "Create new key": "Создать новый ключ", "Create new secret key": "Создать новый секретный ключ", "Create Note": "Создать заметку", - "Create your first note by clicking on the plus button below.": "Создайте свою первую заметку, нажав на кнопку "плюс" ниже.", + "Create your first note by clicking on the plus button below.": "Создайте свою первую заметку, нажав на кнопку плюс ниже.", "Created at": "Создан(а)", "Created At": "Создано", "Created by": "Создано", From 175bbe27e98f2e09cf05887b52c730659bb6730f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 16:53:48 +0400 Subject: [PATCH 207/238] refac --- src/lib/components/notes/NoteEditor.svelte | 4 +- src/lib/components/notes/Notes.svelte | 89 ++++++++++++++++++- .../components/notes/Notes/NoteMenu.svelte | 87 ++++++++++++++++++ 3 files changed, 174 insertions(+), 6 deletions(-) create mode 100644 src/lib/components/notes/Notes/NoteMenu.svelte diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 84f769acd..58cfa3932 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -371,8 +371,8 @@ placeholder={$i18n.t('Write something...')} json={true} onChange={(content) => { - note.data.html = content.html; - note.data.md = content.md; + note.data.content.html = content.html; + note.data.content.md = content.md; }} />
diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 4b460b2dc..6fc98ede9 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -3,6 +3,9 @@ import fileSaver from 'file-saver'; const { saveAs } = fileSaver; + import jsPDF from 'jspdf'; + import html2canvas from 'html2canvas-pro'; + import dayjs from '$lib/dayjs'; import duration from 'dayjs/plugin/duration'; import relativeTime from 'dayjs/plugin/relativeTime'; @@ -29,6 +32,7 @@ import { WEBUI_NAME, config, prompts as _prompts, user } from '$lib/stores'; import { createNewNote, getNotes } from '$lib/apis/notes'; + import { capitalizeFirstLetter } from '$lib/utils'; import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte'; import DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; @@ -37,7 +41,7 @@ import ChevronRight from '../icons/ChevronRight.svelte'; import Spinner from '../common/Spinner.svelte'; import Tooltip from '../common/Tooltip.svelte'; - import { capitalizeFirstLetter } from '$lib/utils'; + import NoteMenu from './Notes/NoteMenu.svelte'; const i18n = getContext('i18n'); let loaded = false; @@ -76,6 +80,62 @@ } }; + const downloadHandler = async (type) => { + console.log('downloadHandler', type); + console.log('selectedNote', selectedNote); + if (type === 'md') { + const blob = new Blob([selectedNote.data.content.md], { type: 'text/markdown' }); + saveAs(blob, `${selectedNote.title}.md`); + } else if (type === 'pdf') { + await downloadPdf(selectedNote); + } + }; + + const downloadPdf = async (note) => { + try { + // Define a fixed virtual screen size + const virtualWidth = 1024; // Fixed width (adjust as needed) + const virtualHeight = 1400; // Fixed height (adjust as needed) + + // Render to canvas with predefined width + const canvas = await html2canvas(note.data.content.html, { + useCORS: true, + scale: 2, // Keep at 1x to avoid unexpected enlargements + width: virtualWidth, // Set fixed virtual screen width + windowWidth: virtualWidth, // Ensure consistent rendering + windowHeight: virtualHeight + }); + + const imgData = canvas.toDataURL('image/png'); + + // A4 page settings + const pdf = new jsPDF('p', 'mm', 'a4'); + const imgWidth = 210; // A4 width in mm + const pageHeight = 297; // A4 height in mm + + // Maintain aspect ratio + const imgHeight = (canvas.height * imgWidth) / canvas.width; + let heightLeft = imgHeight; + let position = 0; + + pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + heightLeft -= pageHeight; + + // Handle additional pages + while (heightLeft > 0) { + position -= pageHeight; + pdf.addPage(); + + pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + heightLeft -= pageHeight; + } + + pdf.save(`${note.title}.pdf`); + } catch (error) { + console.error('Error generating PDF', error); + } + }; + onMount(async () => { await init(); loaded = true; @@ -117,15 +177,36 @@ class="w-full -translate-y-0.5 flex flex-col justify-between" >
-
+
{note.title}
+ +
+ { + selectedNote = note; + + downloadHandler(type); + }} + onDelete={() => { + selectedNote = note; + showDeleteConfirm = true; + }} + > + + +
- {#if note.data?.md} - {note.data?.md} + {#if note.data?.content?.md} + {note.data?.content?.md} {:else} {$i18n.t('No content')} {/if} diff --git a/src/lib/components/notes/Notes/NoteMenu.svelte b/src/lib/components/notes/Notes/NoteMenu.svelte new file mode 100644 index 000000000..fb54f9ecc --- /dev/null +++ b/src/lib/components/notes/Notes/NoteMenu.svelte @@ -0,0 +1,87 @@ + + + { + onChange(state); + }} +> + + + + + + fade(e, { duration: 100 })} + > + + + + +
{$i18n.t('Download')}
+
+ + { + onDownload('md'); + }} + > +
{$i18n.t('Plain text (.md)')}
+
+ + { + onDownload('pdf'); + }} + > +
{$i18n.t('PDF document (.pdf)')}
+
+
+
+ { + onDelete(); + }} + > + +
{$i18n.t('Delete')}
+
+
+
+
From 18149483f22b0ae56ebc2786424a7c659e90351f Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 16:59:41 +0400 Subject: [PATCH 208/238] refac: note pdf export --- src/lib/components/notes/Notes.svelte | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 6fc98ede9..ea4c96c99 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -97,8 +97,20 @@ const virtualWidth = 1024; // Fixed width (adjust as needed) const virtualHeight = 1400; // Fixed height (adjust as needed) + // STEP 1. Get a DOM node to render + const html = note.data?.content?.html ?? ''; + let node; + if (html instanceof HTMLElement) { + node = html; + } else { + // If it's HTML string, render to a temporary hidden element + node = document.createElement('div'); + node.innerHTML = html; + document.body.appendChild(node); + } + // Render to canvas with predefined width - const canvas = await html2canvas(note.data.content.html, { + const canvas = await html2canvas(node, { useCORS: true, scale: 2, // Keep at 1x to avoid unexpected enlargements width: virtualWidth, // Set fixed virtual screen width @@ -106,6 +118,11 @@ windowHeight: virtualHeight }); + // Remove hidden node if needed + if (!(html instanceof HTMLElement)) { + document.body.removeChild(node); + } + const imgData = canvas.toDataURL('image/png'); // A4 page settings @@ -133,6 +150,8 @@ pdf.save(`${note.title}.pdf`); } catch (error) { console.error('Error generating PDF', error); + + toast.error(`${error}`); } }; From f716968009df1aec2a381597b141cdda572326e9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 17:01:12 +0400 Subject: [PATCH 209/238] enh: delete notes --- src/lib/components/notes/Notes.svelte | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index ea4c96c99..7ec9d830e 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -31,7 +31,7 @@ import { onMount, getContext } from 'svelte'; import { WEBUI_NAME, config, prompts as _prompts, user } from '$lib/stores'; - import { createNewNote, getNotes } from '$lib/apis/notes'; + import { createNewNote, deleteNoteById, getNotes } from '$lib/apis/notes'; import { capitalizeFirstLetter } from '$lib/utils'; import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte'; @@ -155,6 +155,17 @@ } }; + const deleteNoteHandler = async (id) => { + const res = await deleteNoteById(localStorage.token, id).catch((error) => { + toast.error(`${error}`); + return null; + }); + + if (res) { + init(); + } + }; + onMount(async () => { await init(); loaded = true; @@ -171,7 +182,10 @@ {}} + on:confirm={() => { + deleteNoteHandler(selectedNote.id); + showDeleteConfirm = false; + }} >
{$i18n.t('This will delete')} {selectedNote.title}. From 84a05bec7b7ab6c1b8110e9ed2878db604196b88 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 17:22:51 +0400 Subject: [PATCH 210/238] enh: notes user group permission --- backend/open_webui/config.py | 5 + backend/open_webui/routers/notes.py | 67 ++++++++- backend/open_webui/routers/users.py | 1 + src/lib/components/admin/Users/Groups.svelte | 3 +- .../admin/Users/Groups/Permissions.svelte | 11 +- src/lib/components/layout/Sidebar.svelte | 2 +- src/lib/components/notes/NoteEditor.svelte | 13 +- src/routes/(app)/notes/+layout.svelte | 140 ++++++++++-------- 8 files changed, 165 insertions(+), 77 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index d0b4ed8f3..a6cffeecd 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1137,6 +1137,10 @@ USER_PERMISSIONS_FEATURES_CODE_INTERPRETER = ( == "true" ) +USER_PERMISSIONS_FEATURES_NOTES = ( + os.environ.get("USER_PERMISSIONS_FEATURES_NOTES", "True").lower() == "true" +) + DEFAULT_USER_PERMISSIONS = { "workspace": { @@ -1170,6 +1174,7 @@ DEFAULT_USER_PERMISSIONS = { "web_search": USER_PERMISSIONS_FEATURES_WEB_SEARCH, "image_generation": USER_PERMISSIONS_FEATURES_IMAGE_GENERATION, "code_interpreter": USER_PERMISSIONS_FEATURES_CODE_INTERPRETER, + "notes": USER_PERMISSIONS_FEATURES_NOTES, }, } diff --git a/backend/open_webui/routers/notes.py b/backend/open_webui/routers/notes.py index a78953bb4..74156dea3 100644 --- a/backend/open_webui/routers/notes.py +++ b/backend/open_webui/routers/notes.py @@ -15,7 +15,7 @@ from open_webui.env import SRC_LOG_LEVELS from open_webui.utils.auth import get_admin_user, get_verified_user -from open_webui.utils.access_control import has_access +from open_webui.utils.access_control import has_permission log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["MODELS"]) @@ -28,7 +28,16 @@ router = APIRouter() @router.get("/", response_model=list[NoteUserResponse]) -async def get_notes(user=Depends(get_verified_user)): +async def get_notes(request: Request, user=Depends(get_verified_user)): + + if user.role != "admin" and not has_permission( + user.id, "features.notes", request.app.state.config.USER_PERMISSIONS + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.UNAUTHORIZED, + ) + notes = [ NoteUserResponse( **{ @@ -43,7 +52,16 @@ async def get_notes(user=Depends(get_verified_user)): @router.get("/list", response_model=list[NoteUserResponse]) -async def get_note_list(user=Depends(get_verified_user)): +async def get_note_list(request: Request, user=Depends(get_verified_user)): + + if user.role != "admin" and not has_permission( + user.id, "features.notes", request.app.state.config.USER_PERMISSIONS + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.UNAUTHORIZED, + ) + notes = [ NoteUserResponse( **{ @@ -63,7 +81,18 @@ async def get_note_list(user=Depends(get_verified_user)): @router.post("/create", response_model=Optional[NoteModel]) -async def create_new_note(form_data: NoteForm, user=Depends(get_admin_user)): +async def create_new_note( + request: Request, form_data: NoteForm, user=Depends(get_verified_user) +): + + if user.role != "admin" and not has_permission( + user.id, "features.notes", request.app.state.config.USER_PERMISSIONS + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.UNAUTHORIZED, + ) + try: note = Notes.insert_new_note(form_data, user.id) return note @@ -80,7 +109,15 @@ async def create_new_note(form_data: NoteForm, user=Depends(get_admin_user)): @router.get("/{id}", response_model=Optional[NoteModel]) -async def get_note_by_id(id: str, user=Depends(get_verified_user)): +async def get_note_by_id(request: Request, id: str, user=Depends(get_verified_user)): + if user.role != "admin" and not has_permission( + user.id, "features.notes", request.app.state.config.USER_PERMISSIONS + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.UNAUTHORIZED, + ) + note = Notes.get_note_by_id(id) if not note: raise HTTPException( @@ -104,8 +141,16 @@ async def get_note_by_id(id: str, user=Depends(get_verified_user)): @router.post("/{id}/update", response_model=Optional[NoteModel]) async def update_note_by_id( - id: str, form_data: NoteForm, user=Depends(get_verified_user) + request: Request, id: str, form_data: NoteForm, user=Depends(get_verified_user) ): + if user.role != "admin" and not has_permission( + user.id, "features.notes", request.app.state.config.USER_PERMISSIONS + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.UNAUTHORIZED, + ) + note = Notes.get_note_by_id(id) if not note: raise HTTPException( @@ -135,7 +180,15 @@ async def update_note_by_id( @router.delete("/{id}/delete", response_model=bool) -async def delete_note_by_id(id: str, user=Depends(get_verified_user)): +async def delete_note_by_id(request: Request, id: str, user=Depends(get_verified_user)): + if user.role != "admin" and not has_permission( + user.id, "features.notes", request.app.state.config.USER_PERMISSIONS + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.UNAUTHORIZED, + ) + note = Notes.get_note_by_id(id) if not note: raise HTTPException( diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index 0c348f51e..50014a5f6 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -129,6 +129,7 @@ class FeaturesPermissions(BaseModel): web_search: bool = True image_generation: bool = True code_interpreter: bool = True + notes: bool = True class UserPermissions(BaseModel): diff --git a/src/lib/components/admin/Users/Groups.svelte b/src/lib/components/admin/Users/Groups.svelte index e89b463b0..5847ebbb1 100644 --- a/src/lib/components/admin/Users/Groups.svelte +++ b/src/lib/components/admin/Users/Groups.svelte @@ -81,7 +81,8 @@ direct_tool_servers: false, web_search: true, image_generation: true, - code_interpreter: true + code_interpreter: true, + notes: true } }; diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index 9edf20ca0..6af935813 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -37,7 +37,8 @@ direct_tool_servers: false, web_search: true, image_generation: true, - code_interpreter: true + code_interpreter: true, + notes: true } }; @@ -380,5 +381,13 @@
+ +
+
+ {$i18n.t('Notes')} +
+ + +
diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index 02a2f2e08..e9158a396 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -570,7 +570,7 @@
{/if} --> - {#if $config?.features?.enable_notes ?? false} + {#if ($config?.features?.enable_notes ?? false) && ($user?.role === 'admin' || ($user?.permissions?.features?.notes ?? true))}
{ + if (!note) { + return; + } + + console.log('Saving note:', note); + const res = await updateNoteById(localStorage.token, id, { ...note, title: note.title === '' ? $i18n.t('Untitled') : note.title diff --git a/src/routes/(app)/notes/+layout.svelte b/src/routes/(app)/notes/+layout.svelte index 8b8792c94..84267b6ae 100644 --- a/src/routes/(app)/notes/+layout.svelte +++ b/src/routes/(app)/notes/+layout.svelte @@ -1,17 +1,27 @@ @@ -21,71 +31,73 @@ -
- + -
- +
+ +
-
+{/if} From 6475ae3b11cf14f1ea84813158d7d9e722e90ae8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 17:23:42 +0400 Subject: [PATCH 211/238] refac --- src/lib/components/notes/NoteEditor.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 003198d44..78c6ba6bc 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -337,7 +337,7 @@
- {#if files} + {#if files && files.length > 0}
{#each files as file, fileIdx}
From f2cf21d64ced6ef5113e08ef29a6156866b75c90 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 17:29:59 +0400 Subject: [PATCH 212/238] enh: file item display audio --- .../components/common/FileItemModal.svelte | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/lib/components/common/FileItemModal.svelte b/src/lib/components/common/FileItemModal.svelte index ef55e96b2..1ff724638 100644 --- a/src/lib/components/common/FileItemModal.svelte +++ b/src/lib/components/common/FileItemModal.svelte @@ -16,10 +16,21 @@ export let edit = false; let enableFullContent = false; + + let isPdf = false; + let isAudio = false; + $: isPDF = item?.meta?.content_type === 'application/pdf' || (item?.name && item?.name.toLowerCase().endsWith('.pdf')); + $: isAudio = + item?.meta?.content_type.startsWith('audio/') || + (item?.name && item?.name.toLowerCase().endsWith('.mp3')) || + (item?.name && item?.name.toLowerCase().endsWith('.wav')) || + (item?.name && item?.name.toLowerCase().endsWith('.ogg')) || + (item?.name && item?.name.toLowerCase().endsWith('.m4a')); + onMount(() => { console.log(item); if (item?.context === 'full') { @@ -122,6 +133,15 @@ class="w-full h-[70vh] border-0 rounded-lg mt-4" /> {:else} + {#if isAudio} +
{$i18n.t('Capture Audio')}
+ + From 360b5b303a23eed4bcc3f32bf43c11312123bbf9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sun, 4 May 2025 18:32:21 +0400 Subject: [PATCH 216/238] enh: note editor --- src/lib/components/notes/NoteEditor.svelte | 139 ++++++++++++++++++++- 1 file changed, 134 insertions(+), 5 deletions(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 3cccc40d7..c247f6909 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -1,6 +1,11 @@ @@ -178,136 +274,139 @@ -{#if loaded} - { - deleteNoteHandler(selectedNote.id); - showDeleteConfirm = false; - }} - > -
- {$i18n.t('This will delete')} {selectedNote.title}. -
-
+ -
- {#if Object.keys(notes).length > 0} - {#each Object.keys(notes) as timeRange} -
- {$i18n.t(timeRange)} -
- - - {/each} - {:else} -
-
-
- {$i18n.t('No Notes')} -
- -
- {$i18n.t('Create your first note by clicking on the plus button below.')} -
-
+
+ {#if loaded} + { + deleteNoteHandler(selectedNote.id); + showDeleteConfirm = false; + }} + > +
+ {$i18n.t('This will delete')} {selectedNote.title}.
- {/if} -
+ -
-
- - - +
+ {#if Object.keys(notes).length > 0} + {#each Object.keys(notes) as timeRange} +
+ {$i18n.t(timeRange)} +
- +
-
- -{:else} -
- -
-{/if} + {:else} +
+ +
+ {/if} +
From e8b23ef0c17d5fa99cd7f6eee576582dfc653b16 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 00:05:06 +0400 Subject: [PATCH 220/238] refac --- .../components/icons/Bars3BottomLeft.svelte | 12 ++++ src/lib/components/notes/NoteEditor.svelte | 70 ++++++++++++++++--- src/lib/components/notes/Notes.svelte | 2 +- .../components/notes/Notes/NoteMenu.svelte | 31 +++++++- 4 files changed, 104 insertions(+), 11 deletions(-) create mode 100644 src/lib/components/icons/Bars3BottomLeft.svelte diff --git a/src/lib/components/icons/Bars3BottomLeft.svelte b/src/lib/components/icons/Bars3BottomLeft.svelte new file mode 100644 index 000000000..9a0886cd0 --- /dev/null +++ b/src/lib/components/icons/Bars3BottomLeft.svelte @@ -0,0 +1,12 @@ + + + + + diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 36651d2a0..30effb7dc 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -14,7 +14,7 @@ import { config, settings, showSidebar } from '$lib/stores'; import { goto } from '$app/navigation'; - import { compressImage } from '$lib/utils'; + import { compressImage, copyToClipboard } from '$lib/utils'; import { WEBUI_API_BASE_URL } from '$lib/constants'; import { uploadFile } from '$lib/apis/files'; @@ -58,6 +58,10 @@ import RecordMenu from './RecordMenu.svelte'; import NoteMenu from './Notes/NoteMenu.svelte'; import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte'; + import Sparkles from '../icons/Sparkles.svelte'; + import SparklesSolid from '../icons/SparklesSolid.svelte'; + import Tooltip from '../common/Tooltip.svelte'; + import Bars3BottomLeft from '../icons/Bars3BottomLeft.svelte'; export let id: null | string = null; @@ -79,6 +83,8 @@ let files = []; + let selectedVersion = 'note'; + let recording = false; let displayMediaRecord = false; @@ -135,6 +141,8 @@ init(); } + const versionToggleHandler = () => {}; + const uploadFileHandler = async (file) => { const tempItemId = uuidv4(); const fileItem = { @@ -434,6 +442,16 @@ onDownload={(type) => { downloadHandler(type); }} + onCopyToClipboard={async () => { + const res = await copyToClipboard(note.data.content.md).catch((error) => { + toast.error(`${error}`); + return null; + }); + + if (res) { + toast.success($i18n.t('Copied to clipboard')); + } + }} onDelete={() => { showDeleteConfirm = true; }} @@ -465,7 +483,7 @@
-
+
{#if files && files.length > 0}
{#each files as file, fileIdx} @@ -516,12 +534,12 @@ {/if}
-
-
+
+
{#if recording}
+ +
+ + + + + + + +
{/if}
diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 932b5a670..d7fbfd38b 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -388,7 +388,7 @@
+ + +
+
+ {/if} + { downloadHandler(type); @@ -524,6 +653,7 @@ placeholder={$i18n.t('Write something...')} html={note.data?.content?.html} json={true} + editable={versionIdx === null} onChange={(content) => { note.data.content.html = content.html; note.data.content.md = content.md; @@ -609,18 +739,20 @@ }; }} > - + + +
- + - +
-
+
+ {#if enhancing} +
+ {/if} + {#if files && files.length > 0}
{#each files as file, fileIdx} @@ -653,7 +662,7 @@ placeholder={$i18n.t('Write something...')} html={note.data?.content?.html} json={true} - editable={versionIdx === null} + editable={versionIdx === null && !enhancing} onChange={(content) => { note.data.content.html = content.html; note.data.content.md = content.md; @@ -665,7 +674,7 @@
@@ -769,13 +778,20 @@
From 9faf2d98496be4b2dbfe04ca6936f6251dc10066 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 01:51:51 +0400 Subject: [PATCH 223/238] refac: styling --- src/lib/components/notes/Notes.svelte | 140 +++++++++++++------------- 1 file changed, 72 insertions(+), 68 deletions(-) diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index d7fbfd38b..581f984e7 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -276,7 +276,7 @@ -
+
{#if loaded} {#if Object.keys(notes).length > 0} - {#each Object.keys(notes) as timeRange} -
- {$i18n.t(timeRange)} -
+
+ {#each Object.keys(notes) as timeRange} +
+ {$i18n.t(timeRange)} +
-
- {#each notes[timeRange] as note, idx (note.id)} -
-
- - {:else}
From 62a5b146426b094259f656caa0f5f13dbf43db69 Mon Sep 17 00:00:00 2001 From: Tiancong Li Date: Mon, 5 May 2025 10:15:20 +0800 Subject: [PATCH 224/238] i18n: update zh-TW --- src/lib/i18n/locales/zh-TW/translation.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index a1d6b468b..6af4a3aac 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -159,7 +159,7 @@ "Cancel": "取消", "Capabilities": "功能", "Capture": "擷取", - "Capture Audio": "", + "Capture Audio": "錄製音訊", "Certificate Path": "憑證路徑", "Change Password": "修改密碼", "Channel Name": "頻道名稱", @@ -502,7 +502,7 @@ "Error": "錯誤", "ERROR": "錯誤", "Error accessing Google Drive: {{error}}": "存取 Google Drive 時發生錯誤:{{error}}", - "Error accessing media devices.": "", + "Error accessing media devices.": "存取媒體裝置時發生錯誤。", "Error uploading file: {{error}}": "上傳檔案時發生錯誤:{{error}}", "Evaluations": "評估", "Exa API Key": "Exa API 金鑰", @@ -541,7 +541,7 @@ "Failed to add file.": "新增檔案失敗。", "Failed to connect to {{URL}} OpenAPI tool server": "無法連線至 {{URL}} OpenAPI 工具伺服器", "Failed to create API Key.": "建立 API 金鑰失敗。", - "Failed to delete note": "", + "Failed to delete note": "刪除筆記失敗", "Failed to fetch models": "取得模型失敗", "Failed to load file content.": "載入檔案內容失敗。", "Failed to read clipboard contents": "讀取剪貼簿內容失敗", @@ -735,7 +735,7 @@ "Manage Pipelines": "管理管線", "Manage Tool Servers": "管理工具伺服器", "March": "3 月", - "Max Speakers": "", + "Max Speakers": "最大發言者數", "Max Tokens (num_predict)": "最大 token 數(num_predict)", "Max Upload Count": "最大上傳數量", "Max Upload Size": "最大上傳大小", @@ -819,7 +819,7 @@ "None": "無", "Not factually correct": "與事實不符", "Not helpful": "沒有幫助", - "Note deleted successfully": "", + "Note deleted successfully": "筆記已成功刪除", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:如果您設定了最低分數,則搜尋只會回傳分數大於或等於最低分數的文件。", "Notes": "注意", "Notification Sound": "通知聲音", @@ -887,7 +887,7 @@ "Pipelines": "管線", "Pipelines Not Detected": "未偵測到管線", "Pipelines Valves": "管線閥門", - "Plain text (.md)": "", + "Plain text (.md)": "純文字 (.md)", "Plain text (.txt)": "純文字 (.txt)", "Playground": "遊樂場", "Playwright Timeout (ms)": "Playwright 逾時時間(毫秒)", @@ -1214,7 +1214,7 @@ "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "升級至授權方案以獲得更強大功能,包括客製化主題與品牌,和專屬支援。", "Upload": "上傳", "Upload a GGUF model": "上傳 GGUF 模型", - "Upload Audio": "", + "Upload Audio": "上傳音訊", "Upload directory": "上傳目錄", "Upload files": "上傳檔案", "Upload Files": "上傳檔案", From deb1f6b6d709fd17836c67d99154a486edc27f0e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 09:22:54 +0400 Subject: [PATCH 225/238] feat: ai enhanced notes --- src/lib/components/notes/NoteEditor.svelte | 206 +++++++++++++++++---- 1 file changed, 174 insertions(+), 32 deletions(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index fa878b2d0..a14682d0a 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -12,11 +12,11 @@ import { marked } from 'marked'; import { toast } from 'svelte-sonner'; - import { config, settings, showSidebar } from '$lib/stores'; + import { config, models, settings, showSidebar } from '$lib/stores'; import { goto } from '$app/navigation'; - import { compressImage, copyToClipboard } from '$lib/utils'; - import { WEBUI_API_BASE_URL } from '$lib/constants'; + import { compressImage, copyToClipboard, splitStream } from '$lib/utils'; + import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import { uploadFile } from '$lib/apis/files'; import dayjs from '$lib/dayjs'; @@ -65,6 +65,10 @@ import Bars3BottomLeft from '../icons/Bars3BottomLeft.svelte'; import ArrowUturnLeft from '../icons/ArrowUturnLeft.svelte'; import ArrowUturnRight from '../icons/ArrowUturnRight.svelte'; + import Sidebar from '../common/Sidebar.svelte'; + import ArrowRight from '../icons/ArrowRight.svelte'; + import Cog6 from '../icons/Cog6.svelte'; + import { chatCompletion } from '$lib/apis/openai'; export let id: null | string = null; @@ -88,14 +92,19 @@ let files = []; let versionIdx = null; + let selectedModelId = null; + let recording = false; let displayMediaRecord = false; + let showSettings = false; let showDeleteConfirm = false; - let dragged = false; + let dragged = false; let loading = false; + let enhancing = false; + let streaming = false; const init = async () => { loading = true; @@ -165,29 +174,22 @@ return false; } - async function aiEnhanceContent(content) { - // fake delay - await new Promise((resolve) => setTimeout(resolve, 2000)); - - const md = content.md + '_ai'; - const html = marked.parse(md); - - return { - json: null, - html: html, - md: md - }; - } - async function enhanceNoteHandler() { - insertNoteVersion(note); + if (selectedModelId === '') { + toast.error($i18n.t('Please select a model.')); + return; + } + + const model = $models.find((model) => model.id === selectedModelId); + if (!model) { + selectedModelId = ''; + return; + } enhancing = true; - const aiResult = await aiEnhanceContent(note.data.content); - note.data.content.json = aiResult.json; - note.data.content.html = aiResult.html; - note.data.content.md = aiResult.md; + insertNoteVersion(note); + await enhanceCompletionHandler(model); enhancing = false; versionIdx = null; @@ -456,6 +458,96 @@ } }; + const enhanceCompletionHandler = async (model) => { + let enhancedContent = { + json: null, + html: '', + md: '' + }; + + const systemPrompt = `Enhance existing notes using additional context provided from audio transcription or uploaded file content. Your task is to make the notes more useful and comprehensive by incorporating relevant information from the provided context. + +Input will be provided within and XML tags, providing a structure for the existing notes and context respectively. + +# Output Format + +Provide the enhanced notes in markdown format. Use markdown syntax for headings, lists, and emphasis to improve clarity and presentation. Ensure that all integrated content from the context is accurately reflected. Return only the markdown formatted note. +`; + + const [res, controller] = await chatCompletion( + localStorage.token, + { + model: model.id, + stream: true, + messages: [ + { + role: 'system', + content: systemPrompt + }, + { + role: 'user', + content: + `${note.data.content.md}` + + (files && files.length > 0 + ? `\n${files.map((file) => `${file.name}: ${file?.file?.data?.content ?? 'Could not extract content'}\n`).join('')}` + : '') + } + ] + }, + `${WEBUI_BASE_URL}/api` + ); + + await tick(); + + streaming = true; + + if (res && res.ok) { + const reader = res.body + .pipeThrough(new TextDecoderStream()) + .pipeThrough(splitStream('\n')) + .getReader(); + + while (true) { + const { value, done } = await reader.read(); + if (done) { + break; + } + + try { + let lines = value.split('\n'); + + for (const line of lines) { + if (line !== '') { + console.log(line); + if (line === 'data: [DONE]') { + console.log(line); + } else { + let data = JSON.parse(line.replace(/^data: /, '')); + console.log(data); + + if (data.choices && data.choices.length > 0) { + const choice = data.choices[0]; + if (choice.delta && choice.delta.content) { + enhancedContent.md += choice.delta.content; + enhancedContent.html = marked.parse(enhancedContent.md); + + note.data.content.md = enhancedContent.md; + note.data.content.html = enhancedContent.html; + note.data.content.json = null; + } + } + } + } + } + } catch (error) { + console.log(error); + } + } + } + + streaming = false; + }; + const onDragOver = (e) => { e.preventDefault(); @@ -489,6 +581,14 @@ onMount(async () => { await tick(); + if ($settings?.models) { + selectedModelId = $settings?.models[0]; + } else if ($config?.default_models) { + selectedModelId = $config?.default_models.split(',')[0]; + } else { + selectedModelId = ''; + } + const dropzoneElement = document.getElementById('note-editor'); dropzoneElement?.addEventListener('dragover', onDragOver); @@ -524,6 +624,42 @@
+ +
+
+
Settings
+ +
+ +
+
+ +
+
+
Model
+ +
+ +
+
+
+
+
+ {#if loading}
@@ -542,7 +678,7 @@ required /> -
+
{#if note.data?.versions?.length > 0}
@@ -588,13 +724,17 @@ showDeleteConfirm = true; }} > - + + +
@@ -618,7 +758,9 @@
{#if enhancing}
{/if} @@ -674,7 +816,7 @@
From 827fd6606ceac5c8b588972be63f4ade9324d7e6 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 09:36:34 +0400 Subject: [PATCH 226/238] refac --- src/lib/components/notes/NoteEditor.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index a14682d0a..0ff91d3a4 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -758,7 +758,7 @@ Provide the enhanced notes in markdown format. Use markdown syntax for headings,
{#if enhancing}
From a20a920ca46e587dcf11dcf3428cd25c798183d1 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 09:41:25 +0400 Subject: [PATCH 227/238] refac: styling --- src/lib/components/notes/NoteEditor.svelte | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 0ff91d3a4..d1983d5c2 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -458,6 +458,14 @@ } }; + const scrollToBottom = () => { + const element = document.getElementById('note-content-container'); + + if (element) { + element.scrollTop = element?.scrollHeight; + } + }; + const enhanceCompletionHandler = async (model) => { let enhancedContent = { json: null, @@ -534,6 +542,8 @@ Provide the enhanced notes in markdown format. Use markdown syntax for headings, note.data.content.md = enhancedContent.md; note.data.content.html = enhancedContent.html; note.data.content.json = null; + + scrollToBottom(); } } } @@ -668,7 +678,7 @@ Provide the enhanced notes in markdown format. Use markdown syntax for headings,
{:else}
-
+
-
+
{#if enhancing}
{ - editInputFocused = true; - }} - on:blur={() => { - if (editInputFocused) { - if (chatTitle !== title) { - editChatTitle(id, chatTitle); - } + on:blur={async (e) => { + if (doubleClicked) { + e.preventDefault(); + e.stopPropagation(); - confirmEdit = false; - chatTitle = ''; + await tick(); + setTimeout(() => { + const input = document.getElementById(`chat-title-input-${id}`); + if (input) input.focus(); + }, 0); + + doubleClicked = false; + return; } + + if (chatTitle !== title) { + editChatTitle(id, chatTitle); + } + + confirmEdit = false; + chatTitle = ''; }} />
@@ -304,9 +311,12 @@ showSidebar.set(false); } }} - on:dblclick={() => { - chatTitle = title; - confirmEdit = true; + on:dblclick={async (e) => { + e.preventDefault(); + e.stopPropagation(); + + doubleClicked = true; + renameHandler(); }} on:mouseenter={(e) => { mouseOver = true; @@ -394,16 +404,7 @@ archiveChatHandler={() => { archiveChatHandler(id); }} - renameHandler={async () => { - chatTitle = title; - confirmEdit = true; - - await tick(); - const input = document.getElementById(`chat-title-input-${id}`); - if (input) { - input.focus(); - } - }} + {renameHandler} deleteHandler={() => { showDeleteConfirm = true; }} From 9e1400f055af218dfb46c943664f7983d8a5b518 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 10:36:01 +0400 Subject: [PATCH 229/238] enh: generate title --- src/lib/apis/index.ts | 36 +++++++++++- .../components/layout/Sidebar/ChatItem.svelte | 58 ++++++++++++++++++- 2 files changed, 90 insertions(+), 4 deletions(-) diff --git a/src/lib/apis/index.ts b/src/lib/apis/index.ts index 0929e0a69..3892afeb8 100644 --- a/src/lib/apis/index.ts +++ b/src/lib/apis/index.ts @@ -539,7 +539,7 @@ export const updateTaskConfig = async (token: string, config: object) => { export const generateTitle = async ( token: string = '', model: string, - messages: string[], + messages: object[], chat_id?: string ) => { let error = null; @@ -573,7 +573,39 @@ export const generateTitle = async ( throw error; } - return res?.choices[0]?.message?.content.replace(/["']/g, '') ?? 'New Chat'; + try { + // Step 1: Safely extract the response string + const response = res?.choices[0]?.message?.content ?? ''; + + // Step 2: Attempt to fix common JSON format issues like single quotes + const sanitizedResponse = response.replace(/['‘’`]/g, '"'); // Convert single quotes to double quotes for valid JSON + + // Step 3: Find the relevant JSON block within the response + const jsonStartIndex = sanitizedResponse.indexOf('{'); + const jsonEndIndex = sanitizedResponse.lastIndexOf('}'); + + // Step 4: Check if we found a valid JSON block (with both `{` and `}`) + if (jsonStartIndex !== -1 && jsonEndIndex !== -1) { + const jsonResponse = sanitizedResponse.substring(jsonStartIndex, jsonEndIndex + 1); + + // Step 5: Parse the JSON block + const parsed = JSON.parse(jsonResponse); + + // Step 6: If there's a "tags" key, return the tags array; otherwise, return an empty array + if (parsed && parsed.title) { + return parsed.title; + } else { + return null; + } + } + + // If no valid JSON block found, return an empty array + return null; + } catch (e) { + // Catch and safely return empty array on any parsing errors + console.error('Failed to parse response: ', e); + return null; + } }; export const generateTags = async ( diff --git a/src/lib/components/layout/Sidebar/ChatItem.svelte b/src/lib/components/layout/Sidebar/ChatItem.svelte index 19c19cd3d..9e1476310 100644 --- a/src/lib/components/layout/Sidebar/ChatItem.svelte +++ b/src/lib/components/layout/Sidebar/ChatItem.svelte @@ -39,6 +39,7 @@ import XMark from '$lib/components/icons/XMark.svelte'; import Document from '$lib/components/icons/Document.svelte'; import Sparkles from '$lib/components/icons/Sparkles.svelte'; + import { generateTitle } from '$lib/apis'; export let className = ''; @@ -136,6 +137,7 @@ let itemElement; + let generating = false; let doubleClicked = false; let dragged = false; let x = 0; @@ -223,6 +225,40 @@ if (input) input.focus(); }, 0); }; + + const generateTitleHandler = async () => { + generating = true; + if (!chat) { + chat = await getChatById(localStorage.token, id); + } + + const messages = (chat.chat?.messages ?? []).map((message) => { + return { + role: message.role, + content: message.content + }; + }); + + const model = chat.chat.models.at(0) ?? chat.models.at(0) ?? ''; + + chatTitle = ''; + + const generatedTitle = await generateTitle(localStorage.token, model, messages).catch( + (error) => { + toast.error(`${error}`); + return null; + } + ); + + if (generatedTitle) { + if (generatedTitle !== title) { + editChatTitle(id, generatedTitle); + } + + confirmEdit = false; + } + generating = false; + }; @@ -264,14 +300,22 @@ ? 'bg-gray-200 dark:bg-gray-900' : selected ? 'bg-gray-100 dark:bg-gray-950' - : 'group-hover:bg-gray-100 dark:group-hover:bg-gray-950'} whitespace-nowrap text-ellipsis" + : 'group-hover:bg-gray-100 dark:group-hover:bg-gray-950'} whitespace-nowrap text-ellipsis relative {generating + ? 'cursor-not-allowed' + : ''}" > { + // check if target is generate button + if (e.relatedTarget?.id === 'generate-title-button') { + return; + } + if (doubleClicked) { e.preventDefault(); e.stopPropagation(); @@ -360,7 +404,17 @@ class="flex self-center items-center space-x-1.5 z-10 translate-y-[0.5px] -translate-x-[0.5px]" > - From eec7a2afa1d4662ba29205fd0fb4aa8e34f2de14 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 11:25:00 +0400 Subject: [PATCH 230/238] refac --- .../chat/MessageInput/VoiceRecording.svelte | 11 ++++++++++- .../chat/Messages/Markdown/HTMLToken.svelte | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/MessageInput/VoiceRecording.svelte b/src/lib/components/chat/MessageInput/VoiceRecording.svelte index 6bbb161ed..d9bddf022 100644 --- a/src/lib/components/chat/MessageInput/VoiceRecording.svelte +++ b/src/lib/components/chat/MessageInput/VoiceRecording.svelte @@ -239,7 +239,16 @@ audioChunks = []; recording = false; }; - mediaRecorder.start(); + + try { + mediaRecorder.start(); + } catch (error) { + console.error('Error starting recording:', error); + toast.error($i18n.t('Error starting recording.')); + loading = false; + recording = false; + return; + } if (transcribe) { if ($config.audio.stt.engine === 'web' || ($settings?.audio?.stt?.engine ?? '') === 'web') { diff --git a/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte b/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte index 20a9039ff..168df854d 100644 --- a/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte +++ b/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte @@ -22,7 +22,21 @@ {#if token.type === 'html'} {#if html && html.includes(']*>([\s\S]*?)<\/video>/)} + {@const videoSrc = video && video[1]} + {#if videoSrc} + + + {:else} + {token.text} + {/if} {:else if token.text && token.text.match(/]*src="https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9_-]{11})(?:\?[^"]*)?"[^>]*><\/iframe>/)} {@const match = token.text.match( /]*src="https:\/\/www\.youtube\.com\/embed\/([a-zA-Z0-9_-]{11})(?:\?[^"]*)?"[^>]*><\/iframe>/ From de0f52b686cae3ccfd8863ed3972102c1722ec66 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 15:42:14 +0400 Subject: [PATCH 231/238] doc: readme --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 15f173159..0978624a4 100644 --- a/README.md +++ b/README.md @@ -61,9 +61,21 @@ For more information, be sure to check out our [Open WebUI Documentation](https: Want to learn more about Open WebUI's features? Check out our [Open WebUI documentation](https://docs.openwebui.com/features) for a comprehensive overview! -## 🔗 Also Check Out Open WebUI Community! -Don't forget to explore our sibling project, [Open WebUI Community](https://openwebui.com/), where you can discover, download, and explore customized Modelfiles. Open WebUI Community offers a wide range of exciting possibilities for enhancing your chat interactions with Open WebUI! 🚀 + + +## Sponsors 🙌 + + +#### Emerald + + + n8n + + + +We are incredibly grateful for the generous support of our sponsors. Their contributions help us to maintain and improve our project, ensuring we can continue to deliver quality work to our community. Thank you! + ## How to Install 🚀 From d16ff548952884313c1f0b928c2ca7de47f18c91 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 15:46:55 +0400 Subject: [PATCH 232/238] refac --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0978624a4..a00bcb9bf 100644 --- a/README.md +++ b/README.md @@ -66,13 +66,13 @@ Want to learn more about Open WebUI's features? Check out our [Open WebUI docume ## Sponsors 🙌 - #### Emerald
n8n +--- We are incredibly grateful for the generous support of our sponsors. Their contributions help us to maintain and improve our project, ensuring we can continue to deliver quality work to our community. Thank you! From 3771d27a52ed45d54db073c11ca441661f750bb7 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 15:50:09 +0400 Subject: [PATCH 233/238] refac --- README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a00bcb9bf..33f8720d9 100644 --- a/README.md +++ b/README.md @@ -68,9 +68,18 @@ Want to learn more about Open WebUI's features? Check out our [Open WebUI docume #### Emerald - - n8n - + + + + + +
+ + n8n + + + Does your interface have a backend yet?
Try n8n +
--- From 457a0f318abcd77c7ab063267bac9695a2c711d8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 16:05:39 +0400 Subject: [PATCH 234/238] refac --- src/lib/components/admin/Users/UserList.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index 738489c55..bf15a6799 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -156,19 +156,19 @@
{#if ($config?.license_metadata?.seats ?? null) !== null} - {#if users.length > $config?.license_metadata?.seats} + {#if total > $config?.license_metadata?.seats} {users.length} of {$config?.license_metadata?.seats} + >{total} of {$config?.license_metadata?.seats} available users {:else} {users.length} of {$config?.license_metadata?.seats} + >{total} of {$config?.license_metadata?.seats} available users {/if} {:else} - {users.length} + {total} {/if}
From 26e9cd0b4b4ec9067495d79f39db1b1c84c802a3 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 16:10:36 +0400 Subject: [PATCH 235/238] enh: user role update confirm dialog --- .../components/admin/Users/UserList.svelte | 37 +++++++++++++++---- .../components/common/ConfirmDialog.svelte | 6 ++- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index bf15a6799..4567a24b8 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -23,6 +23,8 @@ import AddUserModal from '$lib/components/admin/Users/UserList/AddUserModal.svelte'; import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; + import RoleUpdateConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; + import Badge from '$lib/components/common/Badge.svelte'; import Plus from '$lib/components/icons/Plus.svelte'; import ChevronUp from '$lib/components/icons/ChevronUp.svelte'; @@ -49,7 +51,17 @@ let showUserChatsModal = false; let showEditUserModal = false; + let showUpdateRoleModal = false; + const onUpdateRole = (user) => { + if (user.role === 'user') { + updateRoleHandler(user.id, 'admin'); + } else if (user.role === 'pending') { + updateRoleHandler(user.id, 'user'); + } else { + updateRoleHandler(user.id, 'pending'); + } + }; const updateRoleHandler = async (id, role) => { const res = await updateUserRole(localStorage.token, id, role).catch((error) => { toast.error(`${error}`); @@ -114,6 +126,22 @@ }} /> + { + onUpdateRole(selectedUser); + }} + title={$i18n.t('Update User Role')} + message={$i18n.t(`Are you sure you want to update this user\'s role to **{{ROLE}}**?`, { + ROLE: + selectedUser?.role === 'user' + ? 'admin' + : selectedUser?.role === 'pending' + ? 'user' + : 'pending' + })} +/> + {#key selectedUser} { - if (user.role === 'user') { - updateRoleHandler(user.id, 'admin'); - } else if (user.role === 'pending') { - updateRoleHandler(user.id, 'user'); - } else { - updateRoleHandler(user.id, 'pending'); - } + selectedUser = user; + showUpdateRoleModal = true; }} > + import DOMPurify from 'dompurify'; + import { onMount, getContext, createEventDispatcher } from 'svelte'; const i18n = getContext('i18n'); const dispatch = createEventDispatcher(); import { fade } from 'svelte/transition'; import { flyAndScale } from '$lib/utils/transitions'; + import { marked } from 'marked'; export let title = ''; export let message = ''; @@ -90,7 +93,8 @@
{#if message !== ''} - {message} + {@const html = DOMPurify.sanitize(marked.parse(message))} + {@html html} {:else} {$i18n.t('This action cannot be undone. Do you wish to continue?')} {/if} From abdde10b74e30ff5ae8d1a085ce790beb11db2d8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 16:12:41 +0400 Subject: [PATCH 236/238] refac --- src/lib/components/admin/Users/UserList.svelte | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index 4567a24b8..41b698864 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -78,6 +78,12 @@ toast.error(`${error}`); return null; }); + + // if the user is deleted and the current page has only one user, go back to the previous page + if (users.length === 1 && page > 1) { + page -= 1; + } + if (res) { getUserList(); } From 33c206c15c952d626dbe11a702701665dce19ec4 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 16:17:20 +0400 Subject: [PATCH 237/238] enh: include profile image during user import --- src/lib/apis/auths/index.ts | 6 ++++-- src/lib/components/admin/Users/UserList.svelte | 1 - .../components/admin/Users/UserList/AddUserModal.svelte | 7 +++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lib/apis/auths/index.ts b/src/lib/apis/auths/index.ts index 40caebf5d..75252fd71 100644 --- a/src/lib/apis/auths/index.ts +++ b/src/lib/apis/auths/index.ts @@ -354,7 +354,8 @@ export const addUser = async ( name: string, email: string, password: string, - role: string = 'pending' + role: string = 'pending', + profile_image_url: null | string = null ) => { let error = null; @@ -368,7 +369,8 @@ export const addUser = async ( name: name, email: email, password: password, - role: role + role: role, + ...(profile_image_url && { profile_image_url: profile_image_url }) }) }) .then(async (res) => { diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index 41b698864..1f091c47a 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -137,7 +137,6 @@ on:confirm={() => { onUpdateRole(selectedUser); }} - title={$i18n.t('Update User Role')} message={$i18n.t(`Are you sure you want to update this user\'s role to **{{ROLE}}**?`, { ROLE: selectedUser?.role === 'user' diff --git a/src/lib/components/admin/Users/UserList/AddUserModal.svelte b/src/lib/components/admin/Users/UserList/AddUserModal.svelte index f0ebd15aa..8b3d74c52 100644 --- a/src/lib/components/admin/Users/UserList/AddUserModal.svelte +++ b/src/lib/components/admin/Users/UserList/AddUserModal.svelte @@ -7,6 +7,7 @@ import { WEBUI_BASE_URL } from '$lib/constants'; import Modal from '$lib/components/common/Modal.svelte'; + import { generateInitialsImage } from '$lib/utils'; const i18n = getContext('i18n'); const dispatch = createEventDispatcher(); @@ -47,7 +48,8 @@ _user.name, _user.email, _user.password, - _user.role + _user.role, + generateInitialsImage(_user.name) ).catch((error) => { toast.error(`${error}`); }); @@ -83,7 +85,8 @@ columns[0], columns[1], columns[2], - columns[3].toLowerCase() + columns[3].toLowerCase(), + generateInitialsImage(columns[0]) ).catch((error) => { toast.error(`Row ${idx + 1}: ${error}`); return null; From 267889809d093b079b523e19c2e963b6f646d2e0 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 5 May 2025 16:19:05 +0400 Subject: [PATCH 238/238] chore: format --- README.md | 4 ---- src/lib/i18n/locales/ar-BH/translation.json | 7 +++++++ src/lib/i18n/locales/ar/translation.json | 7 +++++++ src/lib/i18n/locales/bg-BG/translation.json | 7 +++++++ src/lib/i18n/locales/bn-BD/translation.json | 7 +++++++ src/lib/i18n/locales/bo-TB/translation.json | 7 +++++++ src/lib/i18n/locales/ca-ES/translation.json | 7 +++++++ src/lib/i18n/locales/ceb-PH/translation.json | 7 +++++++ src/lib/i18n/locales/cs-CZ/translation.json | 7 +++++++ src/lib/i18n/locales/da-DK/translation.json | 7 +++++++ src/lib/i18n/locales/de-DE/translation.json | 7 +++++++ src/lib/i18n/locales/dg-DG/translation.json | 7 +++++++ src/lib/i18n/locales/el-GR/translation.json | 7 +++++++ src/lib/i18n/locales/en-GB/translation.json | 7 +++++++ src/lib/i18n/locales/en-US/translation.json | 7 +++++++ src/lib/i18n/locales/es-ES/translation.json | 7 +++++++ src/lib/i18n/locales/et-EE/translation.json | 7 +++++++ src/lib/i18n/locales/eu-ES/translation.json | 7 +++++++ src/lib/i18n/locales/fa-IR/translation.json | 7 +++++++ src/lib/i18n/locales/fi-FI/translation.json | 7 +++++++ src/lib/i18n/locales/fr-CA/translation.json | 7 +++++++ src/lib/i18n/locales/fr-FR/translation.json | 7 +++++++ src/lib/i18n/locales/he-IL/translation.json | 7 +++++++ src/lib/i18n/locales/hi-IN/translation.json | 7 +++++++ src/lib/i18n/locales/hr-HR/translation.json | 7 +++++++ src/lib/i18n/locales/hu-HU/translation.json | 7 +++++++ src/lib/i18n/locales/id-ID/translation.json | 7 +++++++ src/lib/i18n/locales/ie-GA/translation.json | 7 +++++++ src/lib/i18n/locales/it-IT/translation.json | 7 +++++++ src/lib/i18n/locales/ja-JP/translation.json | 7 +++++++ src/lib/i18n/locales/ka-GE/translation.json | 7 +++++++ src/lib/i18n/locales/ko-KR/translation.json | 7 +++++++ src/lib/i18n/locales/lt-LT/translation.json | 7 +++++++ src/lib/i18n/locales/ms-MY/translation.json | 7 +++++++ src/lib/i18n/locales/nb-NO/translation.json | 7 +++++++ src/lib/i18n/locales/nl-NL/translation.json | 7 +++++++ src/lib/i18n/locales/pa-IN/translation.json | 7 +++++++ src/lib/i18n/locales/pl-PL/translation.json | 7 +++++++ src/lib/i18n/locales/pt-BR/translation.json | 7 +++++++ src/lib/i18n/locales/pt-PT/translation.json | 7 +++++++ src/lib/i18n/locales/ro-RO/translation.json | 7 +++++++ src/lib/i18n/locales/ru-RU/translation.json | 7 +++++++ src/lib/i18n/locales/sk-SK/translation.json | 7 +++++++ src/lib/i18n/locales/sr-RS/translation.json | 7 +++++++ src/lib/i18n/locales/sv-SE/translation.json | 7 +++++++ src/lib/i18n/locales/th-TH/translation.json | 7 +++++++ src/lib/i18n/locales/tk-TW/translation.json | 7 +++++++ src/lib/i18n/locales/tr-TR/translation.json | 7 +++++++ src/lib/i18n/locales/uk-UA/translation.json | 7 +++++++ src/lib/i18n/locales/ur-PK/translation.json | 7 +++++++ src/lib/i18n/locales/vi-VN/translation.json | 7 +++++++ src/lib/i18n/locales/zh-CN/translation.json | 7 +++++++ src/lib/i18n/locales/zh-TW/translation.json | 7 +++++++ 53 files changed, 364 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 33f8720d9..8445b5a39 100644 --- a/README.md +++ b/README.md @@ -61,9 +61,6 @@ For more information, be sure to check out our [Open WebUI Documentation](https: Want to learn more about Open WebUI's features? Check out our [Open WebUI documentation](https://docs.openwebui.com/features) for a comprehensive overview! - - - ## Sponsors 🙌 #### Emerald @@ -85,7 +82,6 @@ Want to learn more about Open WebUI's features? Check out our [Open WebUI docume We are incredibly grateful for the generous support of our sponsors. Their contributions help us to maintain and improve our project, ensuring we can continue to deliver quality work to our community. Thank you! - ## How to Install 🚀 ### Installation via Python pip 🐍 diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 98f6dd844..fa71e4e25 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "هل أنت متأكد ؟", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "تأكد من أن ملف CSV الخاص بك يتضمن 4 أعمدة بهذا الترتيب: Name, Email, Password, Role.", "Enter {{role}} message here": "أدخل رسالة {{role}} هنا", "Enter a detail about yourself for your LLMs to recall": "ادخل معلومات عنك تريد أن يتذكرها الموديل", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "إنشاء استعلام بحث", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "واجهه المستخدم", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "تاق غير صالحة", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "المزيد", + "My Notes": "", "Name": "الأسم", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "يُسمح فقط بالأحرف الأبجدية الرقمية والواصلات في سلسلة الأمر.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "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.": "", diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json index 4ba1bddce..928bdfa2d 100644 --- a/src/lib/i18n/locales/ar/translation.json +++ b/src/lib/i18n/locales/ar/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "هل أنت متأكد من رغبتك في حذف هذه القناة؟", "Are you sure you want to delete this message?": "هل أنت متأكد من رغبتك في حذف هذه الرسالة؟", "Are you sure you want to unarchive all archived chats?": "هل أنت متأكد من رغبتك في إلغاء أرشفة جميع المحادثات المؤرشفة؟", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "هل أنت متأكد؟", "Arena Models": "نماذج الساحة", "Artifacts": "القطع الأثرية", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة", "Enabled": "مفعل", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "تأكد من أن ملف CSV الخاص بك يتضمن 4 أعمدة بهذا الترتيب: Name, Email, Password, Role.", "Enter {{role}} message here": "أدخل رسالة {{role}} هنا", "Enter a detail about yourself for your LLMs to recall": "ادخل معلومات عنك تريد أن يتذكرها الموديل", @@ -503,6 +505,7 @@ "ERROR": "خطأ", "Error accessing Google Drive: {{error}}": "حدث خطأ أثناء الوصول إلى Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "حدث خطأ أثناء تحميل الملف: {{error}}", "Evaluations": "التقييمات", "Exa API Key": "مفتاح API لـ Exa", @@ -604,6 +607,7 @@ "Generate Image": "توليد صورة", "Generate prompt pair": "توليد زوج من التعليمات", "Generating search query": "إنشاء استعلام بحث", + "Generating...": "", "Get started": "ابدأ الآن", "Get started with {{WEBUI_NAME}}": "ابدأ باستخدام {{WEBUI_NAME}}", "Global": "عام", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "إرسال تلقائي فوري بعد تحويل الصوت إلى نص", "Integration": "التكامل", "Interface": "واجهه المستخدم", + "Invalid file content": "", "Invalid file format.": "تنسيق ملف غير صالح.", "Invalid JSON schema": "", "Invalid Tag": "تاق غير صالحة", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "مفتاح API لـ Mojeek Search", "more": "المزيد", "More": "المزيد", + "My Notes": "", "Name": "الأسم", "Name your knowledge base": "قم بتسمية قاعدة معرفتك", "Native": "أصلي", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "يُسمح فقط بالحروف والأرقام والواصلات", "Only alphanumeric characters and hyphens are allowed in the command string.": "يُسمح فقط بالأحرف الأبجدية الرقمية والواصلات في سلسلة الأمر.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "يمكن تعديل المجموعات فقط، أنشئ قاعدة معرفة جديدة لتعديل أو إضافة مستندات.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "يمكن الوصول فقط من قبل المستخدمين والمجموعات المصرح لهم", "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.": "عذرًا! لا تزال بعض الملفات قيد الرفع. يرجى الانتظار حتى يكتمل الرفع.", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 351485c9a..293441eb6 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Сигурни ли сте, че искате да изтриете този канал?", "Are you sure you want to delete this message?": "Сигурни ли сте, че искате да изтриете това съобщение?", "Are you sure you want to unarchive all archived chats?": "Сигурни ли сте, че искате да разархивирате всички архивирани чатове?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Сигурни ли сте?", "Arena Models": "Arena Модели", "Artifacts": "Артефакти", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Включване на нови регистрации", "Enabled": "Активирано", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Уверете се, че вашият CSV файл включва 4 колони в следния ред: Име, Имейл, Парола, Роля.", "Enter {{role}} message here": "Въведете съобщение за {{role}} тук", "Enter a detail about yourself for your LLMs to recall": "Въведете подробности за себе си, за да ги запомнят вашите LLMs", @@ -503,6 +505,7 @@ "ERROR": "ГРЕШКА", "Error accessing Google Drive: {{error}}": "Грешка при достъп до Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Грешка при качване на файла: {{error}}", "Evaluations": "Оценки", "Exa API Key": "API ключ за Exa", @@ -604,6 +607,7 @@ "Generate Image": "Генериране на изображение", "Generate prompt pair": "", "Generating search query": "Генериране на заявка за търсене", + "Generating...": "", "Get started": "Започнете", "Get started with {{WEBUI_NAME}}": "Започнете с {{WEBUI_NAME}}", "Global": "Глобално", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Незабавно автоматично изпращане след гласова транскрипция", "Integration": "", "Interface": "Интерфейс", + "Invalid file content": "", "Invalid file format.": "Невалиден формат на файла.", "Invalid JSON schema": "", "Invalid Tag": "Невалиден таг", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "API ключ за Mojeek Search", "more": "още", "More": "Повече", + "My Notes": "", "Name": "Име", "Name your knowledge base": "Именувайте вашата база от знания", "Native": "Нативен", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Разрешени са само буквено-цифрови знаци и тирета", "Only alphanumeric characters and hyphens are allowed in the command string.": "Само алфанумерични знаци и тире са разрешени в командния низ.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Само колекции могат да бъдат редактирани, създайте нова база от знания, за да редактирате/добавяте документи.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Само избрани потребители и групи с разрешение могат да имат достъп", "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.": "Упс! Все още има файлове, които се качват. Моля, изчакайте качването да приключи.", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index ab6ffadc8..62446dadf 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "আপনি নিশ্চিত?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "নতুন সাইনআপ চালু করুন", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "আপনার সিএসভি ফাইলটিতে এই ক্রমে 4 টি কলাম অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন: নাম, ইমেল, পাসওয়ার্ড, ভূমিকা।.", "Enter {{role}} message here": "{{role}} মেসেজ এখানে লিখুন", "Enter a detail about yourself for your LLMs to recall": "আপনার এলএলএমগুলি স্মরণ করার জন্য নিজের সম্পর্কে একটি বিশদ লিখুন", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "অনুসন্ধান ক্যোয়ারী তৈরি করা হচ্ছে", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "ইন্টারফেস", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "অবৈধ ট্যাগ", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "আরো", + "My Notes": "", "Name": "নাম", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "কমান্ড স্ট্রিং-এ শুধুমাত্র ইংরেজি অক্ষর, সংখ্যা এবং হাইফেন ব্যবহার করা যাবে।", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "ওহ, মনে হচ্ছে ইউআরএলটা ইনভ্যালিড। দয়া করে আর চেক করে চেষ্টা করুন।", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json index 15174e0ef..bd5a3a903 100644 --- a/src/lib/i18n/locales/bo-TB/translation.json +++ b/src/lib/i18n/locales/bo-TB/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "ཁྱེད་ཀྱིས་བགྲོ་གླེང་འདི་བསུབ་འདོད་ངེས་ཡིན་ནམ།", "Are you sure you want to delete this message?": "འཕྲིན་འདི་བསུབ་འདོད་ངེས་ཡིན་ནམ།", "Are you sure you want to unarchive all archived chats?": "ཁྱེད་ཀྱིས་ཡིག་མཛོད་དུ་བཞག་པའི་ཁ་བརྡ་ཡོངས་རྫོགས་ཕྱིར་འདོན་འདོད་ངེས་ཡིན་ནམ།", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "ཁྱོད་ངེས་པ་ཡིན་ནམ།", "Arena Models": "Arena དཔེ་དབྱིབས།", "Artifacts": "རྫས་རྟེན།", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "ཐོ་འགོད་གསར་པ་སྒུལ་བསྐྱོད་བྱེད་པ།", "Enabled": "སྒུལ་བསྐྱོད་བྱས་ཡོད།", "Enforce Temporary Chat": "གནས་སྐབས་ཁ་བརྡ་བཙན་བཀོལ་བྱེད་པ།", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ཁྱེད་ཀྱི་ CSV ཡིག་ཆར་གོ་རིམ་འདི་ལྟར། མིང་། ཡིག་ཟམ། གསང་གྲངས། གནས་ཚད། སྟར་པ་ ༤ ཚུད་ཡོད་པ་ཁག་ཐེག་བྱེད་རོགས།", "Enter {{role}} message here": "{{role}} ཡི་འཕྲིན་འདིར་འཇུག་པ།", "Enter a detail about yourself for your LLMs to recall": "ཁྱེད་ཀྱི་ LLMs ཡིས་ཕྱིར་དྲན་ཆེད་དུ་ཁྱེད་རང་གི་སྐོར་གྱི་ཞིབ་ཕྲ་ཞིག་འཇུག་པ།", @@ -503,6 +505,7 @@ "ERROR": "ནོར་འཁྲུལ།", "Error accessing Google Drive: {{error}}": "Google Drive འཛུལ་སྤྱོད་སྐབས་ནོར་འཁྲུལ།: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "ཡིག་ཆ་སྤར་སྐབས་ནོར་འཁྲུལ།: {{error}}", "Evaluations": "གདེང་འཇོག", "Exa API Key": "Exa API ལྡེ་མིག", @@ -604,6 +607,7 @@ "Generate Image": "པར་བཟོ་བ།", "Generate prompt pair": "འགུལ་སློང་ཆ་ཞིག་བཟོ་བ།", "Generating search query": "འཚོལ་བཤེར་འདྲི་བ་བཟོ་བཞིན་པ།", + "Generating...": "", "Get started": "འགོ་འཛུགས།", "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} དང་མཉམ་དུ་འགོ་འཛུགས་པ།", "Global": "འཛམ་གླིང་ཡོངས་ཀྱི་", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "སྐད་ཆ་ཡིག་འབེབས་བྱས་རྗེས་ལམ་སང་རང་འགུལ་གཏོང་བ།", "Integration": "མཉམ་འདྲེས།", "Interface": "ངོས་འཛིན།", + "Invalid file content": "", "Invalid file format.": "ཡིག་ཆའི་བཀོད་པ་ནུས་མེད།", "Invalid JSON schema": "JSON schema ནུས་མེད།", "Invalid Tag": "རྟགས་ནུས་མེད།", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API ལྡེ་མིག", "more": "མང་བ།", "More": "མང་བ།", + "My Notes": "", "Name": "མིང་།", "Name your knowledge base": "ཁྱེད་ཀྱི་ཤེས་བྱའི་རྟེན་གཞི་ལ་མིང་ཐོགས།", "Native": "ས་སྐྱེས།", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "ཨང་ཀི་དང་དབྱིན་ཡིག་གི་ཡིག་འབྲུ་དང་སྦྲེལ་རྟགས་ཁོ་ན་ཆོག་པ།", "Only alphanumeric characters and hyphens are allowed in the command string.": "བཀའ་བརྡའི་ཡིག་ཕྲེང་ནང་ཨང་ཀི་དང་དབྱིན་ཡིག་གི་ཡིག་འབྲུ་དང་སྦྲེལ་རྟགས་ཁོ་ན་ཆོག་པ།", "Only collections can be edited, create a new knowledge base to edit/add documents.": "བསྡུ་གསོག་ཁོ་ན་ཞུ་དག་བྱེད་ཐུབ། ཡིག་ཆ་ཞུ་དག་/སྣོན་པར་ཤེས་བྱའི་རྟེན་གཞི་གསར་པ་ཞིག་བཟོ་བ།", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "དབང་ཚད་ཡོད་པའི་བེད་སྤྱོད་མཁན་དང་ཚོགས་པ་གདམ་ག་བྱས་པ་ཁོ་ན་འཛུལ་སྤྱོད་ཐུབ།", "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.": "ཨོའོ། ད་དུང་སྤར་བཞིན་པའི་ཡིག་ཆ་ཡོད། སྤར་ཚར་བར་སྒུག་རོགས།", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index c5989dc1b..9e2ed64cb 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Estàs segur que vols eliminar aquest canal?", "Are you sure you want to delete this message?": "Estàs segur que vols eliminar aquest missatge?", "Are you sure you want to unarchive all archived chats?": "Estàs segur que vols desarxivar tots els xats arxivats?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Estàs segur?", "Arena Models": "Models de l'Arena", "Artifacts": "Artefactes", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Permetre nous registres", "Enabled": "Habilitat", "Enforce Temporary Chat": "Forçar els xats temporals", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Assegura't que els teus fitxers CSV inclouen 4 columnes en aquest ordre: Nom, Correu electrònic, Contrasenya, Rol.", "Enter {{role}} message here": "Introdueix aquí el missatge de {{role}}", "Enter a detail about yourself for your LLMs to recall": "Introdueix un detall sobre tu què els teus models de llenguatge puguin recordar", @@ -503,6 +505,7 @@ "ERROR": "ERROR", "Error accessing Google Drive: {{error}}": "Error en accedir a Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Error en pujar l'arxiu: {{error}}", "Evaluations": "Avaluacions", "Exa API Key": "Clau API d'EXA", @@ -604,6 +607,7 @@ "Generate Image": "Generar imatge", "Generate prompt pair": "Generar parella d'indicació", "Generating search query": "Generant consulta", + "Generating...": "", "Get started": "Començar", "Get started with {{WEBUI_NAME}}": "Començar amb {{WEBUI_NAME}}", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Enviament automàtic després de la transcripció de veu", "Integration": "Integració", "Interface": "Interfície", + "Invalid file content": "", "Invalid file format.": "Format d'arxiu no vàlid.", "Invalid JSON schema": "Esquema JSON no vàlid", "Invalid Tag": "Etiqueta no vàlida", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Clau API de Mojeek Search", "more": "més", "More": "Més", + "My Notes": "", "Name": "Nom", "Name your knowledge base": "Anomena la teva base de coneixement", "Native": "Natiu", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Només es permeten caràcters alfanumèrics i guions", "Only alphanumeric characters and hyphens are allowed in the command string.": "Només es permeten caràcters alfanumèrics i guions en la comanda.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Només es poden editar col·leccions, crea una nova base de coneixement per editar/afegir documents.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Només hi poden accedir usuaris i grups seleccionats amb permís", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ui! Sembla que l'URL no és vàlida. Si us plau, revisa-la i torna-ho a provar.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Ui! Encara hi ha fitxers pujant-se. Si us plau, espera que finalitzi la càrrega.", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 49e690b7b..44c1aaf74 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Sigurado ka ?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "I-enable ang bag-ong mga rehistro", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", "Enter {{role}} message here": "Pagsulod sa mensahe {{role}} dinhi", "Enter a detail about yourself for your LLMs to recall": "", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "Interface", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "", + "My Notes": "", "Name": "Ngalan", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Ang alphanumeric nga mga karakter ug hyphen lang ang gitugotan sa command string.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! ", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index 8b77c4204..f52c9026d 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Jste si jistý?", "Arena Models": "Arena modely", "Artifacts": "Artefakty", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Povolit nové registrace", "Enabled": "Povoleno", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Ujistěte se, že váš CSV soubor obsahuje 4 sloupce v tomto pořadí: Name, Email, Password, Role.", "Enter {{role}} message here": "Zadejte zprávu {{role}} sem", "Enter a detail about yourself for your LLMs to recall": "Zadejte podrobnost o sobě, kterou si vaše LLM mají pamatovat.", @@ -503,6 +505,7 @@ "ERROR": "Chyba", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "Hodnocení", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Vygenerovat obrázek", "Generate prompt pair": "", "Generating search query": "Generování vyhledávacího dotazu", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "Globální", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Okamžité automatické odeslání po přepisu hlasu", "Integration": "", "Interface": "Rozhraní", + "Invalid file content": "", "Invalid file format.": "Neplatný formát souboru.", "Invalid JSON schema": "", "Invalid Tag": "Neplatný tag", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "více", "More": "Více", + "My Notes": "", "Name": "Jméno", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Příkazový řetězec smí obsahovat pouze alfanumerické znaky a pomlčky.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Pouze kolekce mohou být upravovány, pro úpravu/přidání dokumentů vytvořte novou znalostní bázi.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Jejda! Vypadá to, že URL adresa je neplatná. Prosím, zkontrolujte ji a zkuste to znovu.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Jejda! Některé soubory se stále nahrávají. Prosím, počkejte, až bude nahrávání dokončeno.", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index bf72ef05b..ad3fc78e5 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Er du sikker på du vil slette denne kanal?", "Are you sure you want to delete this message?": "Er du sikker på du vil slette denne besked?", "Are you sure you want to unarchive all archived chats?": "Er du sikker på du vil fjerne alle arkiverede chats?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Er du sikker?", "Arena Models": "Arena Modeller", "Artifacts": "Artifakter", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Aktiver nye signups", "Enabled": "Aktiveret", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Sørg for at din CSV-fil indeholder 4 kolonner in denne rækkefølge: Name, Email, Password, Role.", "Enter {{role}} message here": "Indtast {{role}} besked her", "Enter a detail about yourself for your LLMs to recall": "Indtast en detalje om dig selv, som dine LLMs kan huske", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Generer billede", "Generate prompt pair": "", "Generating search query": "Genererer søgeforespørgsel", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Øjeblikkelig automatisk afsendelse efter stemmetransskription", "Integration": "", "Interface": "Grænseflade", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Ugyldigt tag", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Mere", + "My Notes": "", "Name": "Navn", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Kun alfanumeriske tegn og bindestreger er tilladt i kommandostrengen.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Kun samlinger kan redigeres, opret en ny vidensbase for at redigere/tilføje dokumenter.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! URL'en ser ud til at være ugyldig. Tjek den igen, og prøv igen.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 5c052965b..2dfa9be9c 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Sind Sie sicher, dass Sie diesen Kanal löschen möchten?", "Are you sure you want to delete this message?": "Sind Sie sicher, dass Sie diese Nachricht löschen möchten?", "Are you sure you want to unarchive all archived chats?": "Sind Sie sicher, dass Sie alle archivierten Chats wiederherstellen möchten?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Sind Sie sicher?", "Arena Models": "Arena-Modelle", "Artifacts": "Artefakte", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Registrierung erlauben", "Enabled": "Aktiviert", "Enforce Temporary Chat": "Temporären Chat erzwingen", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Stellen Sie sicher, dass Ihre CSV-Datei 4 Spalten in dieser Reihenfolge enthält: Name, E-Mail, Passwort, Rolle.", "Enter {{role}} message here": "Geben Sie die {{role}}-Nachricht hier ein", "Enter a detail about yourself for your LLMs to recall": "Geben Sie ein Detail über sich selbst ein, das Ihre Sprachmodelle (LLMs) sich merken sollen", @@ -503,6 +505,7 @@ "ERROR": "FEHLER", "Error accessing Google Drive: {{error}}": "Fehler beim Zugriff auf Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Fehler beim Hochladen der Datei: {{error}}", "Evaluations": "Evaluationen", "Exa API Key": "Exa-API-Schlüssel", @@ -604,6 +607,7 @@ "Generate Image": "Bild erzeugen", "Generate prompt pair": "", "Generating search query": "Suchanfrage wird erstellt", + "Generating...": "", "Get started": "Loslegen", "Get started with {{WEBUI_NAME}}": "Loslegen mit {{WEBUI_NAME}}", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Spracherkennung direkt absenden", "Integration": "", "Interface": "Oberfläche", + "Invalid file content": "", "Invalid file format.": "Ungültiges Dateiformat.", "Invalid JSON schema": "", "Invalid Tag": "Ungültiger Tag", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API-Schlüssel", "more": "mehr", "More": "Mehr", + "My Notes": "", "Name": "Name", "Name your knowledge base": "Benennen Sie Ihren Wissensspeicher", "Native": "Nativ", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Nur alphanumerische Zeichen und Bindestriche sind erlaubt", "Only alphanumeric characters and hyphens are allowed in the command string.": "In der Befehlszeichenfolge sind nur alphanumerische Zeichen und Bindestriche erlaubt.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Nur Sammlungen können bearbeitet werden. Erstellen Sie eine neue Wissensbasis, um Dokumente zu bearbeiten/hinzuzufügen.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Nur ausgewählte Benutzer und Gruppen mit Berechtigung können darauf zugreifen", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppla! Es scheint, dass die URL ungültig ist. Bitte überprüfen Sie diese und versuchen Sie es erneut.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Hoppla! Es werden noch Dateien hochgeladen. Bitte warten Sie, bis der Upload abgeschlossen ist.", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index 9de0bc98f..136770e31 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Such certainty?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Enable New Bark Ups", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", "Enter {{role}} message here": "Enter {{role}} bork here", "Enter a detail about yourself for your LLMs to recall": "", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "Interface", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "", + "My Notes": "", "Name": "Name", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Only wow characters and hyphens are allowed in the bork string.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Looks like the URL is invalid. Please double-check and try again.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index 4d2602023..b66052dc5 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "Είστε σίγουροι ότι θέλετε να απο-αρχειοθετήσετε όλες τις αρχειοθετημένες συνομιλίες;", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Είστε σίγουροι;", "Arena Models": "Μοντέλα Arena", "Artifacts": "Αρχεία", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Ενεργοποίηση Νέων Εγγραφών", "Enabled": "Ενεργοποιημένο", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Βεβαιωθείτε ότι το αρχείο CSV σας περιλαμβάνει 4 στήλες με αυτή τη σειρά: Όνομα, Email, Κωδικός, Ρόλος.", "Enter {{role}} message here": "Εισάγετε το μήνυμα {{role}} εδώ", "Enter a detail about yourself for your LLMs to recall": "Εισάγετε μια λεπτομέρεια για τον εαυτό σας ώστε τα LLMs να την ανακαλούν", @@ -503,6 +505,7 @@ "ERROR": "ΣΦΑΛΜΑ", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "Αξιολογήσεις", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Δημιουργία Εικόνας", "Generate prompt pair": "", "Generating search query": "Γενιά αναζήτησης ερώτησης", + "Generating...": "", "Get started": "Ξεκινήστε", "Get started with {{WEBUI_NAME}}": "Ξεκινήστε με {{WEBUI_NAME}}", "Global": "Καθολικό", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Άμεση Αυτόματη Αποστολή μετά τη μεταγραφή φωνής", "Integration": "", "Interface": "Διεπαφή", + "Invalid file content": "", "Invalid file format.": "Μη έγκυρη μορφή αρχείου.", "Invalid JSON schema": "", "Invalid Tag": "Μη έγκυρη Ετικέτα", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Κλειδί API Mojeek Search", "more": "περισσότερα", "More": "Περισσότερα", + "My Notes": "", "Name": "Όνομα", "Name your knowledge base": "Ονομάστε τη βάση γνώσης σας", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Επιτρέπονται μόνο αλφαριθμητικοί χαρακτήρες και παύλες", "Only alphanumeric characters and hyphens are allowed in the command string.": "Επιτρέπονται μόνο αλφαριθμητικοί χαρακτήρες και παύλες στο string της εντολής.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Μόνο συλλογές μπορούν να επεξεργαστούν, δημιουργήστε μια νέα βάση γνώσης για επεξεργασία/προσθήκη εγγράφων.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Μόνο επιλεγμένοι χρήστες και ομάδες με άδεια μπορούν να έχουν πρόσβαση", "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.": "Ωχ! Υπάρχουν αρχεία που εξακολουθούν να ανεβαίνουν. Παρακαλώ περιμένετε να ολοκληρωθεί η μεταφόρτωση.", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index 4c2943c94..20a483b91 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", "Enter {{role}} message here": "", "Enter a detail about yourself for your LLMs to recall": "", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "", + "My Notes": "", "Name": "", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 4c2943c94..20a483b91 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", "Enter {{role}} message here": "", "Enter a detail about yourself for your LLMs to recall": "", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "", + "My Notes": "", "Name": "", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index b3ec51232..b75811634 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "¿Seguro de que quieres eliminar este canal?", "Are you sure you want to delete this message?": "¿Seguro de que quieres eliminar este mensaje? ", "Are you sure you want to unarchive all archived chats?": "¿Seguro de que quieres desarchivar todos los chats archivados?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "¿Estás seguro?", "Arena Models": "Arena de Modelos", "Artifacts": "Artefactos", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Habilitar Registros de Nuevos Usuarios", "Enabled": "Habilitado", "Enforce Temporary Chat": "Forzar el uso de Chat Temporal", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Asegúrese de que su archivo CSV incluya 4 columnas en este orden: Nombre, Correo Electrónico, Contraseña, Rol.", "Enter {{role}} message here": "Ingresar mensaje {{role}} aquí", "Enter a detail about yourself for your LLMs to recall": "Ingresar detalles sobre ti para que los recuerden sus LLMs", @@ -503,6 +505,7 @@ "ERROR": "ERROR", "Error accessing Google Drive: {{error}}": "Error accediendo a Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Error subiendo el archivo: {{error}}", "Evaluations": "Evaluaciones", "Exa API Key": "Clave API de Exa", @@ -604,6 +607,7 @@ "Generate Image": "Generar imagen", "Generate prompt pair": "Generar par de indicadores", "Generating search query": "Generando consulta de búsqueda", + "Generating...": "", "Get started": "Empezar", "Get started with {{WEBUI_NAME}}": "Empezar con {{WEBUI_NAME}}", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "AutoEnvio Instantaneo tras la Transcripción de Voz", "Integration": "Integración", "Interface": "Interface", + "Invalid file content": "", "Invalid file format.": "Formato de archivo Inválido.", "Invalid JSON schema": "Esquema JSON Inválido", "Invalid Tag": "Etiqueta Inválida", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Clave API de Mojeek Search", "more": "más", "More": "Más", + "My Notes": "", "Name": "Nombre", "Name your knowledge base": "Nombra tu base de conocimientos", "Native": "Nativo", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Sólo están permitidos caracteres alfanuméricos y guiones", "Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo están permitidos en la cadena de comandos caracteres alfanuméricos y guiones.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Solo se pueden editar las colecciones, para añadir/editar documentos hay que crear una nueva base de conocimientos", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Solo pueden acceder los usuarios y grupos con permiso", "Oops! Looks like the URL is invalid. Please double-check and try again.": "¡vaya! Parece que la URL es inválida. Por favor, revisala y reintenta de nuevo.", "Oops! There are files still uploading. Please wait for the upload to complete.": "¡vaya! Todavía hay archivos subiendose. Por favor, espera a que se complete la subida.", diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json index e9d0dd747..c4d87a3b6 100644 --- a/src/lib/i18n/locales/et-EE/translation.json +++ b/src/lib/i18n/locales/et-EE/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Kas olete kindel, et soovite selle kanali kustutada?", "Are you sure you want to delete this message?": "Kas olete kindel, et soovite selle sõnumi kustutada?", "Are you sure you want to unarchive all archived chats?": "Kas olete kindel, et soovite kõik arhiveeritud vestlused arhiivist eemaldada?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Kas olete kindel?", "Arena Models": "Areena mudelid", "Artifacts": "Tekkinud objektid", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Luba uued registreerimised", "Enabled": "Lubatud", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Veenduge, et teie CSV-fail sisaldab 4 veergu selles järjekorras: Nimi, E-post, Parool, Roll.", "Enter {{role}} message here": "Sisestage {{role}} sõnum siia", "Enter a detail about yourself for your LLMs to recall": "Sisestage detail enda kohta, mida teie LLM-id saavad meenutada", @@ -503,6 +505,7 @@ "ERROR": "VIGA", "Error accessing Google Drive: {{error}}": "Viga Google Drive'i juurdepääsul: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Viga faili üleslaadimisel: {{error}}", "Evaluations": "Hindamised", "Exa API Key": "Exa API võti", @@ -604,6 +607,7 @@ "Generate Image": "Genereeri pilt", "Generate prompt pair": "Genereeri vihjete paar", "Generating search query": "Otsinguküsimuse genereerimine", + "Generating...": "", "Get started": "Alusta", "Get started with {{WEBUI_NAME}}": "Alusta {{WEBUI_NAME}} kasutamist", "Global": "Globaalne", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Kohene automaatne saatmine pärast hääle transkriptsiooni", "Integration": "Integratsioon", "Interface": "Kasutajaliides", + "Invalid file content": "", "Invalid file format.": "Vigane failiformaat.", "Invalid JSON schema": "", "Invalid Tag": "Vigane silt", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API võti", "more": "rohkem", "More": "Rohkem", + "My Notes": "", "Name": "Nimi", "Name your knowledge base": "Nimetage oma teadmiste baas", "Native": "Omane", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Lubatud on ainult tähtede-numbrite kombinatsioonid ja sidekriipsud", "Only alphanumeric characters and hyphens are allowed in the command string.": "Käsustringis on lubatud ainult tähtede-numbrite kombinatsioonid ja sidekriipsud.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Muuta saab ainult kogusid, dokumentide muutmiseks/lisamiseks looge uus teadmiste baas.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Juurdepääs on ainult valitud õigustega kasutajatel ja gruppidel", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oih! URL tundub olevat vigane. Palun kontrollige ja proovige uuesti.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Oih! Failide üleslaadimine on veel pooleli. Palun oodake, kuni üleslaadimine lõpeb.", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index f0ce97bbf..8b87b6e01 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "Ziur zaude artxibatutako txat guztiak desartxibatu nahi dituzula?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Ziur zaude?", "Arena Models": "Arena Ereduak", "Artifacts": "Artefaktuak", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Gaitu Izena Emate Berriak", "Enabled": "Gaituta", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Ziurtatu zure CSV fitxategiak 4 zutabe dituela ordena honetan: Izena, Posta elektronikoa, Pasahitza, Rola.", "Enter {{role}} message here": "Sartu {{role}} mezua hemen", "Enter a detail about yourself for your LLMs to recall": "Sartu zure buruari buruzko xehetasun bat LLMek gogoratzeko", @@ -503,6 +505,7 @@ "ERROR": "ERROREA", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "Ebaluazioak", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Sortu Irudia", "Generate prompt pair": "", "Generating search query": "Bilaketa kontsulta sortzen", + "Generating...": "", "Get started": "Hasi", "Get started with {{WEBUI_NAME}}": "Hasi {{WEBUI_NAME}}-rekin", "Global": "Globala", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Bidalketa Automatiko Berehalakoa Ahots Transkripzioaren Ondoren", "Integration": "", "Interface": "Interfazea", + "Invalid file content": "", "Invalid file format.": "Fitxategi formatu baliogabea.", "Invalid JSON schema": "", "Invalid Tag": "Etiketa Baliogabea", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek bilaketa API gakoa", "more": "gehiago", "More": "Gehiago", + "My Notes": "", "Name": "Izena", "Name your knowledge base": "Izendatu zure ezagutza-basea", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Karaktere alfanumerikoak eta marratxoak soilik onartzen dira", "Only alphanumeric characters and hyphens are allowed in the command string.": "Karaktere alfanumerikoak eta marratxoak soilik onartzen dira komando katean.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Bildumak soilik edita daitezke, sortu ezagutza-base berri bat dokumentuak editatzeko/gehitzeko.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Baimena duten erabiltzaile eta talde hautatuek soilik sar daitezke", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ui! URLa ez da baliozkoa. Mesedez, egiaztatu eta saiatu berriro.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Ui! Oraindik fitxategiak kargatzen ari dira. Mesedez, itxaron karga amaitu arte.", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 4ac95e33c..55a395405 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "آیا مطمئن هستید که می\u200cخواهید این کانال را حذف کنید؟", "Are you sure you want to delete this message?": "آیا مطمئن هستید که می\u200cخواهید این پیام را حذف کنید؟", "Are you sure you want to unarchive all archived chats?": "آیا مطمئن هستید که می\u200cخواهید همه گفتگوهای بایگانی شده را از بایگانی خارج کنید؟", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "مطمئنید؟", "Arena Models": "مدل\u200cهای آرنا", "Artifacts": "مصنوعات", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "فعال کردن ثبت نام\u200cهای جدید", "Enabled": "فعال شده", "Enforce Temporary Chat": "اجبار چت موقت", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "اطمینان حاصل کنید که فایل CSV شما شامل چهار ستون در این ترتیب است: نام، ایمیل، رمز عبور، نقش.", "Enter {{role}} message here": "پیام {{role}} را اینجا وارد کنید", "Enter a detail about yourself for your LLMs to recall": "برای ذخیره سازی اطلاعات خود، یک توضیح کوتاه درباره خود را وارد کنید", @@ -503,6 +505,7 @@ "ERROR": "خطا", "Error accessing Google Drive: {{error}}": "خطا در دسترسی به گوگل درایو: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "خطا در بارگذاری فایل: {{error}}", "Evaluations": "ارزیابی\u200cها", "Exa API Key": "کلید API اکسا", @@ -604,6 +607,7 @@ "Generate Image": "تولید تصویر", "Generate prompt pair": "تولید جفت پرامپت", "Generating search query": "در حال تولید پرسوجوی جستجو", + "Generating...": "", "Get started": "شروع کنید", "Get started with {{WEBUI_NAME}}": "شروع کار با {{WEBUI_NAME}}", "Global": "سراسری", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "ارسال خودکار فوری پس از رونویسی صوتی", "Integration": "یکپارچه\u200cسازی", "Interface": "رابط", + "Invalid file content": "", "Invalid file format.": "قالب فایل نامعتبر است.", "Invalid JSON schema": "طرح JSON نامعتبر", "Invalid Tag": "تگ نامعتبر", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "کلید API جستجوی موجیک", "more": "بیشتر", "More": "بیشتر", + "My Notes": "", "Name": "نام", "Name your knowledge base": "پایگاه دانش خود را نام\u200cگذاری کنید", "Native": "بومی", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "فقط حروف الفبا، اعداد و خط تیره مجاز هستند", "Only alphanumeric characters and hyphens are allowed in the command string.": "فقط کاراکترهای الفبایی و خط فاصله در رشته فرمان مجاز هستند.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "فقط مجموعه\u200cها قابل ویرایش هستند، برای ویرایش/افزودن اسناد یک پایگاه دانش جدید ایجاد کنید.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "فقط کاربران و گروه\u200cهای دارای مجوز می\u200cتوانند دسترسی داشته باشند", "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.": "اوه! هنوز فایل\u200cهایی در حال آپلود هستند. لطفاً منتظر تکمیل آپلود بمانید.", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index c9352ee3c..f4fac4cda 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Haluatko varmasti poistaa tämän kanavan?", "Are you sure you want to delete this message?": "Haluatko varmasti poistaa tämän viestin?", "Are you sure you want to unarchive all archived chats?": "Haluatko varmasti purkaa kaikkien arkistoitujen keskustelujen arkistoinnin?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Oletko varma?", "Arena Models": "Arena-mallit", "Artifacts": "Artefaktit", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Salli uudet rekisteröitymiset", "Enabled": "Käytössä", "Enforce Temporary Chat": "Pakota väliaikaiset keskustelut", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Varmista, että CSV-tiedostossasi on 4 saraketta tässä järjestyksessä: Nimi, Sähköposti, Salasana, Rooli.", "Enter {{role}} message here": "Kirjoita {{role}}-viesti tähän", "Enter a detail about yourself for your LLMs to recall": "Kirjoita yksityiskohta itsestäsi, jonka LLM-ohjelmat voivat muistaa", @@ -503,6 +505,7 @@ "ERROR": "VIRHE", "Error accessing Google Drive: {{error}}": "Virhe yhdistäessä Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Virhe ladattaessa tiedostoa: {{error}}", "Evaluations": "Arvioinnit", "Exa API Key": "Exa API -avain", @@ -604,6 +607,7 @@ "Generate Image": "Luo kuva", "Generate prompt pair": "Luo kehotepari", "Generating search query": "Luodaan hakukyselyä", + "Generating...": "", "Get started": "Aloita", "Get started with {{WEBUI_NAME}}": "Aloita käyttämään {{WEBUI_NAME}}:iä", "Global": "Yleinen", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Heti automaattinen lähetys äänitunnistuksen jälkeen", "Integration": "Integrointi", "Interface": "Käyttöliittymä", + "Invalid file content": "", "Invalid file format.": "Virheellinen tiedostomuoto.", "Invalid JSON schema": "Virheellinen JSON kaava", "Invalid Tag": "Virheellinen tagi", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API -avain", "more": "lisää", "More": "Lisää", + "My Notes": "", "Name": "Nimi", "Name your knowledge base": "Anna tietokannalle nimi", "Native": "Natiivi", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja", "Only alphanumeric characters and hyphens are allowed in the command string.": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja komentosarjassa.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Vain kokoelmia voi muokata, luo uusi tietokanta muokataksesi/lisätäksesi asiakirjoja.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Vain valitut käyttäjät ja ryhmät, joilla on käyttöoikeus, pääsevät käyttämään", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Hups! Näyttää siltä, että verkko-osoite on virheellinen. Tarkista se ja yritä uudelleen.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Hups! Tiedostoja on vielä ladattavana. Odota, että lataus on valmis.", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 8ebe5a40c..946b6ca57 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Êtes-vous certain ?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Activer les nouvelles inscriptions", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Vérifiez que votre fichier CSV comprenne les 4 colonnes dans cet ordre : Name, Email, Password, Role.", "Enter {{role}} message here": "Entrez le message {{role}} ici", "Enter a detail about yourself for your LLMs to recall": "Saisissez un détail sur vous-même que vos LLMs pourront se rappeler", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Générer une image", "Generate prompt pair": "", "Generating search query": "Génération d'une requête de recherche", + "Generating...": "", "Get started": "Démarrer", "Get started with {{WEBUI_NAME}}": "Démarrez avec {{WEBUI_NAME}}", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Envoi automatique instantané après transcription vocale", "Integration": "", "Interface": "Interface utilisateur", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Étiquette non valide", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Plus de", + "My Notes": "", "Name": "Nom", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index b2ca637a8..72116af22 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?", "Are you sure you want to delete this message?": "Êtes-vous sûr de vouloir supprimer ce message ?", "Are you sure you want to unarchive all archived chats?": "Êtes-vous sûr de vouloir désarchiver toutes les conversations archivées?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Êtes-vous certain ?", "Arena Models": "Modèles d'arène", "Artifacts": "Artéfacts", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Activer les nouvelles inscriptions", "Enabled": "Activé", "Enforce Temporary Chat": "Imposer les discussions temporaires", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Vérifiez que votre fichier CSV comprenne les 4 colonnes dans cet ordre : Name, Email, Password, Role.", "Enter {{role}} message here": "Entrez le message {{role}} ici", "Enter a detail about yourself for your LLMs to recall": "Saisissez un détail sur vous-même que vos LLMs pourront se rappeler", @@ -503,6 +505,7 @@ "ERROR": "ERREUR", "Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}", "Evaluations": "Évaluations", "Exa API Key": "Clé d'Exa API", @@ -604,6 +607,7 @@ "Generate Image": "Générer une image", "Generate prompt pair": "Générer une paire de prompt", "Generating search query": "Génération d'une requête de recherche", + "Generating...": "", "Get started": "Démarrer", "Get started with {{WEBUI_NAME}}": "Démarrez avec {{WEBUI_NAME}}", "Global": "Globale", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Envoi automatique après la transcription", "Integration": "Intégration", "Interface": "Interface utilisateur", + "Invalid file content": "", "Invalid file format.": "Format de fichier non valide.", "Invalid JSON schema": "Schema JSon non valide", "Invalid Tag": "Tag non valide", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Clé API Mojeek", "more": "plus", "More": "Plus", + "My Notes": "", "Name": "Nom d'utilisateur", "Name your knowledge base": "Nommez votre base de connaissances", "Native": "Natif", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Seuls les caractères alphanumériques et les tirets sont autorisés", "Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissance pour modifier/ajouter des documents.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Seuls les utilisateurs et groupes autorisés peuvent accéder", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Oups ! Des fichiers sont encore en cours de téléversement. Veuillez patienter jusqu'à la fin du téléversement.", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index bca516ac6..57331189e 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "האם אתה בטוח?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "אפשר הרשמות חדשות", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ודא שקובץ ה-CSV שלך כולל 4 עמודות בסדר הבא: שם, דוא\"ל, סיסמה, תפקיד.", "Enter {{role}} message here": "הזן הודעת {{role}} כאן", "Enter a detail about yourself for your LLMs to recall": "הזן פרטים על עצמך כדי שLLMs יזכור", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "יצירת שאילתת חיפוש", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "ממשק", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "תג לא חוקי", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "עוד", + "My Notes": "", "Name": "שם", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "רק תווים אלפאנומריים ומקפים מותרים במחרוזת הפקודה.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "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.": "", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 93e83f449..8d80137c6 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "क्या आपको यकीन है?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "नए साइन अप सक्रिय करें", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "सुनिश्चित करें कि आपकी CSV फ़ाइल में इस क्रम में 4 कॉलम शामिल हैं: नाम, ईमेल, पासवर्ड, भूमिका।", "Enter {{role}} message here": "यहां {{role}} संदेश दर्ज करें", "Enter a detail about yourself for your LLMs to recall": "अपने एलएलएम को याद करने के लिए अपने बारे में एक विवरण दर्ज करें", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "खोज क्वेरी जनरेट करना", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "इंटरफेस", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "अवैध टैग", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "और..", + "My Notes": "", "Name": "नाम", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "कमांड स्ट्रिंग में केवल अल्फ़ान्यूमेरिक वर्ण और हाइफ़न की अनुमति है।", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "उफ़! ऐसा लगता है कि यूआरएल अमान्य है. कृपया दोबारा जांचें और पुनः प्रयास करें।", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index e684941ec..b6e4ef89d 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Jeste li sigurni?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Omogući nove prijave", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Provjerite da vaša CSV datoteka uključuje 4 stupca u ovom redoslijedu: Name, Email, Password, Role.", "Enter {{role}} message here": "Unesite {{role}} poruku ovdje", "Enter a detail about yourself for your LLMs to recall": "Unesite pojedinosti o sebi da bi učitali memoriju u LLM", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Gneriraj sliku", "Generate prompt pair": "", "Generating search query": "Generiranje upita za pretraživanje", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Trenutačno automatsko slanje nakon glasovne transkripcije", "Integration": "", "Interface": "Sučelje", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Nevažeća oznaka", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Više", + "My Notes": "", "Name": "Ime", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Samo alfanumerički znakovi i crtice su dopušteni u naredbenom nizu.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Izgleda da je URL nevažeći. Molimo provjerite ponovno i pokušajte ponovo.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index 3de6cefe7..f4cd3a4f0 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Biztosan törölni szeretnéd ezt a csatornát?", "Are you sure you want to delete this message?": "Biztosan törölni szeretnéd ezt az üzenetet?", "Are you sure you want to unarchive all archived chats?": "Biztosan vissza szeretnéd állítani az összes archivált csevegést?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Biztos vagy benne?", "Arena Models": "Arena modellek", "Artifacts": "Műtermékek", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Új regisztrációk engedélyezése", "Enabled": "Engedélyezve", "Enforce Temporary Chat": "Ideiglenes csevegés kikényszerítése", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Győződj meg róla, hogy a CSV fájl tartalmazza ezt a 4 oszlopot ebben a sorrendben: Név, Email, Jelszó, Szerep.", "Enter {{role}} message here": "Írd ide a {{role}} üzenetet", "Enter a detail about yourself for your LLMs to recall": "Adj meg egy részletet magadról, amit az LLM-ek megjegyezhetnek", @@ -503,6 +505,7 @@ "ERROR": "HIBA", "Error accessing Google Drive: {{error}}": "Hiba a Google Drive elérése során: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Hiba a fájl feltöltése során: {{error}}", "Evaluations": "Értékelések", "Exa API Key": "Exa API kulcs", @@ -604,6 +607,7 @@ "Generate Image": "Kép generálása", "Generate prompt pair": "Prompt pár generálása", "Generating search query": "Keresési lekérdezés generálása", + "Generating...": "", "Get started": "Kezdj neki", "Get started with {{WEBUI_NAME}}": "Kezdj neki a {{WEBUI_NAME}}-val", "Global": "Globális", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Azonnali automatikus küldés hangfelismerés után", "Integration": "Integráció", "Interface": "Felület", + "Invalid file content": "", "Invalid file format.": "Érvénytelen fájlformátum.", "Invalid JSON schema": "Érvénytelen JSON séma", "Invalid Tag": "Érvénytelen címke", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API kulcs", "more": "több", "More": "Több", + "My Notes": "", "Name": "Név", "Name your knowledge base": "Nevezd el a tudásbázisodat", "Native": "Natív", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Csak alfanumerikus karakterek és kötőjelek engedélyezettek", "Only alphanumeric characters and hyphens are allowed in the command string.": "Csak alfanumerikus karakterek és kötőjelek engedélyezettek a parancssorban.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Csak gyűjtemények szerkeszthetők, hozzon létre új tudásbázist dokumentumok szerkesztéséhez/hozzáadásához.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Csak a kiválasztott, engedéllyel rendelkező felhasználók és csoportok férhetnek hozzá", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppá! Úgy tűnik, az URL érvénytelen. Kérjük, ellenőrizze és próbálja újra.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Hoppá! Még vannak feltöltés alatt álló fájlok. Kérjük, várja meg a feltöltés befejezését.", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index f982b963b..9d38fff1e 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Apakah Anda yakin?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Aktifkan Pendaftaran Baru", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Pastikan file CSV Anda menyertakan 4 kolom dengan urutan sebagai berikut: Nama, Email, Kata Sandi, Peran.", "Enter {{role}} message here": "Masukkan pesan {{role}} di sini", "Enter a detail about yourself for your LLMs to recall": "Masukkan detail tentang diri Anda untuk diingat oleh LLM Anda", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Menghasilkan Gambar", "Generate prompt pair": "", "Generating search query": "Membuat kueri penelusuran", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Kirim Otomatis Instan Setelah Transkripsi Suara", "Integration": "", "Interface": "Antarmuka", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Tag tidak valid", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Lainnya", + "My Notes": "", "Name": "Nama", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Hanya karakter alfanumerik dan tanda hubung yang diizinkan dalam string perintah.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Sepertinya URL tidak valid. Mohon periksa ulang dan coba lagi.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index aa8903b5f..cef0b7b10 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "An bhfuil tú cinnte gur mhaith leat an cainéal seo a scriosadh?", "Are you sure you want to delete this message?": "An bhfuil tú cinnte gur mhaith leat an teachtaireacht seo a scriosadh?", "Are you sure you want to unarchive all archived chats?": "An bhfuil tú cinnte gur mhaith leat gach comhrá cartlainne a dhíchartlannú?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "An bhfuil tú cinnte?", "Arena Models": "Múnlaí Airéine", "Artifacts": "Déantáin", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Cumasaigh Clárúcháin Nua", "Enabled": "Cumasaithe", "Enforce Temporary Chat": "Cuir Comhrá Sealadach i bhfeidhm", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Déan cinnte go bhfuil 4 cholún san ord seo i do chomhad CSV: Ainm, Ríomhphost, Pasfhocal, Ról.", "Enter {{role}} message here": "Cuir isteach teachtaireacht {{role}} anseo", "Enter a detail about yourself for your LLMs to recall": "Cuir isteach mionsonraí fút féin chun do LLManna a mheabhrú", @@ -503,6 +505,7 @@ "ERROR": "EARRÁID", "Error accessing Google Drive: {{error}}": "Earráid agus tú ag rochtain Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Earráid agus comhad á uaslódáil: {{error}}", "Evaluations": "Meastóireachtaí", "Exa API Key": "Eochair Exa API", @@ -604,6 +607,7 @@ "Generate Image": "Gin Íomhá", "Generate prompt pair": "Gin péire pras", "Generating search query": "Giniúint ceist cuardaigh", + "Generating...": "", "Get started": "Cuir tús leis", "Get started with {{WEBUI_NAME}}": "Cuir tús le {{WEBUI_NAME}}", "Global": "Domhanda", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Seoladh Uathoibríoch Láithreach Tar éis", "Integration": "Comhtháthú", "Interface": "Comhéadan", + "Invalid file content": "", "Invalid file format.": "Formáid comhaid neamhbhailí.", "Invalid JSON schema": "Scéimre JSON neamhbhailí", "Invalid Tag": "Clib neamhbhailí", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Eochair API Cuardach Mojeek", "more": "níos mó", "More": "Tuilleadh", + "My Notes": "", "Name": "Ainm", "Name your knowledge base": "Cuir ainm ar do bhunachar eolais", "Native": "Dúchasach", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Ní cheadaítear ach carachtair alfa-uimhriúla agus fleiscíní", "Only alphanumeric characters and hyphens are allowed in the command string.": "Ní cheadaítear ach carachtair alfauméireacha agus braithíní sa sreangán ordaithe.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Ní féidir ach bailiúcháin a chur in eagar, bonn eolais nua a chruthú chun doiciméid a chur in eagar/a chur leis.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Ní féidir ach le húsáideoirí roghnaithe agus le grúpaí a bhfuil cead acu rochtain a fháil", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Is cosúil go bhfuil an URL neamhbhailí. Seiceáil faoi dhó le do thoil agus iarracht arís.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Úps! Tá comhaid fós á n-uaslódáil. Fan go mbeidh an uaslódáil críochnaithe.", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index e480cca7d..899d682a9 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Sei sicuro?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Abilita nuove iscrizioni", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Assicurati che il tuo file CSV includa 4 colonne in questo ordine: Nome, Email, Password, Ruolo.", "Enter {{role}} message here": "Inserisci il messaggio per {{role}} qui", "Enter a detail about yourself for your LLMs to recall": "Inserisci un dettaglio su di te per che i LLM possano ricordare", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "Generazione di query di ricerca", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "Interfaccia", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Tag non valido", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Altro", + "My Notes": "", "Name": "Nome", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Nella stringa di comando sono consentiti solo caratteri alfanumerici e trattini.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ops! Sembra che l'URL non sia valido. Si prega di ricontrollare e riprovare.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index ff212b358..c3954b068 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "よろしいですか?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "新規登録を有効にする", "Enabled": "有効", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSVファイルに4つの列が含まれていることを確認してください: Name, Email, Password, Role.", "Enter {{role}} message here": "{{role}} メッセージをここに入力してください", "Enter a detail about yourself for your LLMs to recall": "LLM が記憶するために、自分についての詳細を入力してください", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "検索クエリの生成", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "グローバル", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "インターフェース", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "無効なタグ", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "もっと見る", + "My Notes": "", "Name": "名前", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "コマンド文字列には英数字とハイフンのみが許可されています。", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "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.": "", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index 2b288d816..031a457b8 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "დარწმუნებული ბრძანდებით?", "Arena Models": "არენის მოდელები", "Artifacts": "არტეფაქტები", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "ახალი რეგისტრაციების ჩართვა", "Enabled": "ჩართულია", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "დარწმუნდით, რომ თქვენი CSV-ფაილი შეიცავს 4 ველს ამ მიმდევრობით: სახელი, ელფოსტა, პაროლი, როლი.", "Enter {{role}} message here": "შეიყვანე {{role}} შეტყობინება აქ", "Enter a detail about yourself for your LLMs to recall": "შეიყვანეთ რამე თქვენს შესახებ, რომ თქვენმა LLM-მა გაიხსენოს", @@ -503,6 +505,7 @@ "ERROR": "ERROR", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "ძებნის მოთხოვნის გენერაცია", + "Generating...": "", "Get started": "დაიწყეთ", "Get started with {{WEBUI_NAME}}": "", "Global": "გლობალური", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "ინტერფეისი", + "Invalid file content": "", "Invalid file format.": "არასწორი ფაილის ფორმატი.", "Invalid JSON schema": "", "Invalid Tag": "არასწორი ჭდე", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "მეტი", "More": "მეტი", + "My Notes": "", "Name": "სახელი", "Name your knowledge base": "", "Native": "საკუთარი", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "ბრძანების სტრიქონში დაშვებულია, მხოლოდ, ალფარიცხვითი სიმბოლოები და ტირეები.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "უი! როგორც ჩანს, მისამართი არასწორია. გთხოვთ, გადაამოწმოთ და ისევ სცადოთ.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index f1fade5fc..638a3a297 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "정말 이 채널을 삭제하시겠습니까?", "Are you sure you want to delete this message?": "정말 이 메세지를 삭제하시겠습니까?", "Are you sure you want to unarchive all archived chats?": "정말 보관된 모든 채팅을 보관 해제하시겠습니까?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "확실합니까?", "Arena Models": "아레나 모델", "Artifacts": "아티팩트", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "새 회원가입 활성화", "Enabled": "활성화됨", "Enforce Temporary Chat": "임시 채팅 강제 적용", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV 파일에 이름, 이메일, 비밀번호, 역할 4개의 열이 순서대로 포함되어 있는지 확인하세요.", "Enter {{role}} message here": "여기에 {{role}} 메시지 입력", "Enter a detail about yourself for your LLMs to recall": "자신에 대한 세부사항을 입력하여 LLM들이 기억할 수 있도록 하세요.", @@ -503,6 +505,7 @@ "ERROR": "오류", "Error accessing Google Drive: {{error}}": "Google Drive 액세스 오류: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "파일 업로드 오류: {{error}}", "Evaluations": "평가", "Exa API Key": "Exa API 키", @@ -604,6 +607,7 @@ "Generate Image": "이미지 생성", "Generate prompt pair": "", "Generating search query": "검색 쿼리 생성", + "Generating...": "", "Get started": "시작하기", "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} 시작하기", "Global": "글로벌", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "음성 변환 후 즉시 자동 전송", "Integration": "통합", "Interface": "인터페이스", + "Invalid file content": "", "Invalid file format.": "잘못된 파일 형식", "Invalid JSON schema": "잘못된 JSON 스키마", "Invalid Tag": "잘못된 태그", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API 키", "more": "더보기", "More": "더보기", + "My Notes": "", "Name": "이름", "Name your knowledge base": "지식 기반 이름을 지정하세요", "Native": "네이티브", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "영문자, 숫자 및 하이픈(-)만 허용됨", "Only alphanumeric characters and hyphens are allowed in the command string.": "명령어 문자열에는 영문자, 숫자 및 하이픈(-)만 허용됩니다.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "가지고 있는 컬렉션만 수정 가능합니다, 새 지식 기반을 생성하여 문서를 수정 혹은 추가하십시오", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "권한이 있는 사용자와 그룹만 접근 가능합니다", "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.": "이런! 파일이 계속 업로드중 입니다. 업로드가 완료될 때까지 잠시만 기다려주세요", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 697fa9fe8..6d6e6512c 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Are esate tikri?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Aktyvuoti naujas registracijas", "Enabled": "Leisti", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Įsitikinkite, kad CSV failas turi 4 kolonas šiuo eiliškumu: Name, Email, Password, Role.", "Enter {{role}} message here": "Įveskite {{role}} žinutę čia", "Enter a detail about yourself for your LLMs to recall": "Įveskite informaciją apie save jūsų modelio atminčiai", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Generuoti paveikslėlį", "Generate prompt pair": "", "Generating search query": "Generuoti paieškos užklausą", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "Globalu", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Siųsti iškart po balso transkripcijos", "Integration": "", "Interface": "Sąsaja", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Neteisinga žyma", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Daugiau", + "My Notes": "", "Name": "Pavadinimas", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Leistinos tik raidės, skaičiai ir brūkšneliai.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Regis nuoroda nevalidi. Prašau patikrtinkite ir pabandykite iš naujo.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 4f99d888e..1d73282d2 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Adakah anda pasti", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Benarkan Pendaftaran Baharu", "Enabled": "Dibenarkan", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "astikan fail CSV anda mengandungi 4 lajur dalam susunan ini: Nama, E-mel, Kata Laluan, Peranan.", "Enter {{role}} message here": "Masukkan mesej {{role}} di sini", "Enter a detail about yourself for your LLMs to recall": "Masukkan butiran tentang diri anda untuk diingati oleh LLM anda", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Jana Imej", "Generate prompt pair": "", "Generating search query": "Jana pertanyaan carian", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Hantar Secara Automatik Dengan Segera Selepas Transkripsi Suara", "Integration": "", "Interface": "Antaramuka", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Tag tidak sah", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Lagi", + "My Notes": "", "Name": "Nama", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Hanya aksara alfanumerik dan sempang dibenarkan dalam rentetan arahan.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Maaf, didapati URL tidak sah. Sila semak semula dan cuba lagi.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 82097a7e8..10306ef85 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Er du sikker på at du vil slette denne kanalen?", "Are you sure you want to delete this message?": "Er du sikker på at du vil slette denne meldingen?", "Are you sure you want to unarchive all archived chats?": "Er du sikker på at du vil oppheve arkiveringen av alle arkiverte chatter?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Er du sikker?", "Arena Models": "Arena-modeller", "Artifacts": "Artifakter", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Aktiver nye registreringer", "Enabled": "Aktivert", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Sørg for at CSV-filen din inkluderer fire kolonner i denne rekkefølgen: Navn, E-post, Passord, Rolle.", "Enter {{role}} message here": "Skriv inn {{role}} melding her", "Enter a detail about yourself for your LLMs to recall": "Skriv inn en detalj om deg selv som språkmodellene dine kan huske", @@ -503,6 +505,7 @@ "ERROR": "FEIL", "Error accessing Google Drive: {{error}}": "Feil under tilgang til Google Disk: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Feil under opplasting av fil: {{error}}", "Evaluations": "Vurderinger", "Exa API Key": "API-nøkkel for Exa", @@ -604,6 +607,7 @@ "Generate Image": "Generer bilde", "Generate prompt pair": "Generer ledetekst-kombinasjon", "Generating search query": "Genererer søkespørring", + "Generating...": "", "Get started": "Kom i gang", "Get started with {{WEBUI_NAME}}": "Kom i gang med {{WEBUI_NAME}}", "Global": "Globalt", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Øyeblikkelig automatisk sending etter taletranskripsjon", "Integration": "", "Interface": "Grensesnitt", + "Invalid file content": "", "Invalid file format.": "Ugyldig filformat.", "Invalid JSON schema": "", "Invalid Tag": "Ugyldig etikett", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "API-nøekkel for Mojeek Search", "more": "mer", "More": "Mer", + "My Notes": "", "Name": "Navn", "Name your knowledge base": "Gi kunnskapsbasen et navn", "Native": "Opprinnelig", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Bare alfanumeriske tegn og bindestreker er tillatt", "Only alphanumeric characters and hyphens are allowed in the command string.": "Bare alfanumeriske tegn og bindestreker er tillatt i kommandostrengen.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Bare samlinger kan redigeres, eller lag en ny kunnskapsbase for å kunne redigere / legge til dokumenter.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Bare utvalgte brukere og grupper med tillatelse kan få tilgang", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oi! Det ser ut som URL-en er ugyldig. Dobbeltsjekk, og prøv på nytt.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Oi! Det er fortsatt filer som lastes opp. Vent til opplastingen er ferdig.", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index e778f71f9..6948c4b6e 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Weet je zeker dat je dit kanaal wil verwijderen?", "Are you sure you want to delete this message?": "Weet je zeker dat je dit bericht wil verwijderen?", "Are you sure you want to unarchive all archived chats?": "Weet je zeker dat je alle gearchiveerde chats wil onarchiveren?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Weet je het zeker?", "Arena Models": "Arenamodellen", "Artifacts": "Artefacten", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Schakel nieuwe registraties in", "Enabled": "Ingeschakeld", "Enforce Temporary Chat": "Tijdelijke chat afdwingen", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Zorg ervoor dat uw CSV-bestand de volgende vier kolommen in deze volgorde bevat: Naam, E-mail, Wachtwoord, Rol.", "Enter {{role}} message here": "Voeg {{role}} bericht hier toe", "Enter a detail about yourself for your LLMs to recall": "Voer een detail over jezelf in zodat LLM's het kunnen onthouden", @@ -503,6 +505,7 @@ "ERROR": "ERROR", "Error accessing Google Drive: {{error}}": "Fout bij het benaderen van Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Error bij het uploaden van bestand: {{error}}", "Evaluations": "Beoordelingen", "Exa API Key": "Exa API-sleutel", @@ -604,6 +607,7 @@ "Generate Image": "Genereer afbeelding", "Generate prompt pair": "Genereer promptpaar", "Generating search query": "Zoekopdracht genereren", + "Generating...": "", "Get started": "Begin", "Get started with {{WEBUI_NAME}}": "Begin met {{WEBUI_NAME}}", "Global": "Globaal", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Direct automatisch verzenden na spraaktranscriptie", "Integration": "Integratie", "Interface": "Interface", + "Invalid file content": "", "Invalid file format.": "Ongeldig bestandsformaat", "Invalid JSON schema": "Ongeldig JSON-schema", "Invalid Tag": "Ongeldige Tag", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API-sleutel", "more": "Meer", "More": "Meer", + "My Notes": "", "Name": "Naam", "Name your knowledge base": "Geef je kennisbasis een naam", "Native": "Native", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Alleen alfanumerieke tekens en koppeltekens zijn toegestaan", "Only alphanumeric characters and hyphens are allowed in the command string.": "Alleen alfanumerieke karakters en streepjes zijn toegestaan in de commando string.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Alleen verzamelinge kunnen gewijzigd worden, maak een nieuwe kennisbank aan om bestanden aan te passen/toe te voegen", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Alleen geselecteerde gebruikers en groepen met toestemming hebben toegang", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oeps! Het lijkt erop dat de URL ongeldig is. Controleer het nogmaals en probeer opnieuw.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Oeps! Er zijn nog bestanden aan het uploaden. Wacht tot het uploaden voltooid is.", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index fe0e2fb7a..58d6e2cc1 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "ਕੀ ਤੁਸੀਂ ਯਕੀਨਨ ਹੋ?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "ਨਵੇਂ ਸਾਈਨ ਅਪ ਯੋਗ ਕਰੋ", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਤੁਹਾਡੀ CSV ਫਾਈਲ ਵਿੱਚ ਇਸ ਕ੍ਰਮ ਵਿੱਚ 4 ਕਾਲਮ ਹਨ: ਨਾਮ, ਈਮੇਲ, ਪਾਸਵਰਡ, ਭੂਮਿਕਾ।", "Enter {{role}} message here": "{{role}} ਸੁਨੇਹਾ ਇੱਥੇ ਦਰਜ ਕਰੋ", "Enter a detail about yourself for your LLMs to recall": "ਤੁਹਾਡੇ LLMs ਨੂੰ ਸੁਨੇਹਾ ਕਰਨ ਲਈ ਸੁਨੇਹਾ ਇੱਥੇ ਦਰਜ ਕਰੋ", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "ਖੋਜ ਪੁੱਛਗਿੱਛ ਤਿਆਰ ਕਰਨਾ", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "ਇੰਟਰਫੇਸ", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "ਗਲਤ ਟੈਗ", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "ਹੋਰ", + "My Notes": "", "Name": "ਨਾਮ", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "ਕਮਾਂਡ ਸਤਰ ਵਿੱਚ ਸਿਰਫ਼ ਅਲਫ਼ਾਨਯੂਮੈਰਿਕ ਅੱਖਰ ਅਤੇ ਹਾਈਫਨ ਦੀ ਆਗਿਆ ਹੈ।", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "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.": "", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index d388acaec..68ac649a8 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Czy na pewno chcesz usunąć ten kanał?", "Are you sure you want to delete this message?": "Czy na pewno chcesz usunąć tę wiadomość?", "Are you sure you want to unarchive all archived chats?": "Czy na pewno chcesz przywrócić wszystkie zapisane rozmowy?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Czy jesteś pewien?", "Arena Models": "Modele Areny", "Artifacts": "Artefakty", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Włącz nowe rejestracje", "Enabled": "Włączone", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Upewnij się, że twój plik CSV zawiera dokładnie 4 kolumny w następującej kolejności: Nazwa, Email, Hasło, Rola.", "Enter {{role}} message here": "Wprowadź komunikat dla {{role}} tutaj", "Enter a detail about yourself for your LLMs to recall": "Podaj informacje o sobie, aby LLMs mogły je przypomnieć.", @@ -503,6 +505,7 @@ "ERROR": "BŁĄD", "Error accessing Google Drive: {{error}}": "Błąd podczas dostępu do Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Błąd podczas przesyłania pliku: {{error}}", "Evaluations": "Oceny", "Exa API Key": "Klucz API Exa", @@ -604,6 +607,7 @@ "Generate Image": "Wygeneruj obraz", "Generate prompt pair": "", "Generating search query": "Tworzenie zapytania wyszukiwania", + "Generating...": "", "Get started": "Rozpocznij", "Get started with {{WEBUI_NAME}}": "Rozpocznij pracę z {{WEBUI_NAME}}", "Global": "Globalny", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Automatyczne natychmiastowe wysyłanie po transkrypcji głosowej", "Integration": "", "Interface": "Interfejs", + "Invalid file content": "", "Invalid file format.": "Nieprawidłowy format pliku.", "Invalid JSON schema": "Nieprawidłowy schemat JSON", "Invalid Tag": "Nieprawidłowy tag", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Klucz API Mojeek Search", "more": "więcej", "More": "Więcej", + "My Notes": "", "Name": "Nazwa", "Name your knowledge base": "Nazwij swoją bazę wiedzy", "Native": "Rodzimy", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Dozwolone są tylko znaki alfanumeryczne i myślniki", "Only alphanumeric characters and hyphens are allowed in the command string.": "W komendzie dozwolone są wyłącznie znaki alfanumeryczne i myślniki.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Tylko kolekcje można edytować, utwórz nową bazę wiedzy, aby edytować/dodawać dokumenty.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Tylko wybrani użytkownicy i grupy z uprawnieniami mogą uzyskać dostęp.", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Wygląda na to, że podany URL jest nieprawidłowy. Proszę sprawdzić go ponownie i spróbować jeszcze raz.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Oops! Nadal trwa przesyłanie plików. Proszę poczekać, aż przesyłanie zostanie ukończone.", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 488148f83..77da4afaf 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "Você tem certeza que deseja desarquivar todos os chats arquivados?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Você tem certeza?", "Arena Models": "Arena de Modelos", "Artifacts": "Artefatos", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Ativar Novos Cadastros", "Enabled": "Ativado", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Certifique-se de que seu arquivo CSV inclua 4 colunas nesta ordem: Nome, Email, Senha, Função.", "Enter {{role}} message here": "Digite a mensagem de {{role}} aqui", "Enter a detail about yourself for your LLMs to recall": "Digite um detalhe sobre você para seus LLMs lembrarem", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "Avaliações", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Gerar Imagem", "Generate prompt pair": "", "Generating search query": "Gerando consulta de pesquisa", + "Generating...": "", "Get started": "Iniciar", "Get started with {{WEBUI_NAME}}": "Iniciar com {{WEBUI_NAME}}", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Envio Automático Instantâneo Após Transcrição de Voz", "Integration": "", "Interface": "Interface", + "Invalid file content": "", "Invalid file format.": "Formato de arquivo inválido.", "Invalid JSON schema": "", "Invalid Tag": "Tag Inválida", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Chave de API Mojeel Search", "more": "mais", "More": "Mais", + "My Notes": "", "Name": "Nome", "Name your knowledge base": "Nome da sua base de conhecimento", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Somente caracteres alfanuméricos e hífens são permitidos", "Only alphanumeric characters and hyphens are allowed in the command string.": "Apenas caracteres alfanuméricos e hífens são permitidos na string de comando.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Somente coleções podem ser editadas. Crie uma nova base de conhecimento para editar/adicionar documentos.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Somente usuários e grupos selecionados com permissão podem acessar.", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ops! Parece que a URL é inválida. Por favor, verifique novamente e tente de novo.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Ops! Existem arquivos a serem carregados. Por favor, aguarde que o carregamento tenha concluído.", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index b77603681..031cad130 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Tem a certeza?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Ativar Novas Inscrições", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Confirme que o seu ficheiro CSV inclui 4 colunas nesta ordem: Nome, E-mail, Senha, Função.", "Enter {{role}} message here": "Escreva a mensagem de {{role}} aqui", "Enter a detail about yourself for your LLMs to recall": "Escreva um detalhe sobre você para que os seus LLMs possam lembrar-se", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Gerar imagem", "Generate prompt pair": "", "Generating search query": "A gerar a consulta da pesquisa", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Enviar automaticamente depois da transcrição da voz", "Integration": "", "Interface": "Interface", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Etiqueta Inválida", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Mais", + "My Notes": "", "Name": "Nome", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Apenas caracteres alfanuméricos e hífens são permitidos na string de comando.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Epá! Parece que o URL é inválido. Verifique novamente e tente outra vez.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 6851be8be..f0d8def90 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Ești sigur că vrei să ștergi acest canal?", "Are you sure you want to delete this message?": "Ești sigur că vrei să ștergi acest mesaj?", "Are you sure you want to unarchive all archived chats?": "Ești sigur că vrei să dezarhivezi toate conversațiile arhivate?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Ești sigur?", "Arena Models": "Arena Models", "Artifacts": "Artefacte", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Activează Înscrierile Noi", "Enabled": "Activat", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Asigurați-vă că fișierul CSV include 4 coloane în această ordine: Nume, Email, Parolă, Rol.", "Enter {{role}} message here": "Introduceți mesajul pentru {{role}} aici", "Enter a detail about yourself for your LLMs to recall": "Introduceți un detaliu despre dvs. pe care LLM-urile să-l rețină", @@ -503,6 +505,7 @@ "ERROR": "EROARE", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "Evaluări", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Generează Imagine", "Generate prompt pair": "", "Generating search query": "Se generează interogarea de căutare", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "Global", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Trimitere Automată Instantanee După Transcrierea Vocii", "Integration": "", "Interface": "Interfață", + "Invalid file content": "", "Invalid file format.": "Format de fișier invalid.", "Invalid JSON schema": "", "Invalid Tag": "Etichetă Invalidă", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "mai mult", "More": "Mai multe", + "My Notes": "", "Name": "Nume", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Doar caracterele alfanumerice și cratimele sunt permise în șirul de comandă.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Doar colecțiile pot fi editate, creați o nouă bază de cunoștințe pentru a edita/adăuga documente.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Se pare că URL-ul este invalid. Vă rugăm să verificați din nou și să încercați din nou.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Ups! Încă mai există fișiere care se încarcă. Vă rugăm să așteptați până se finalizează încărcarea.", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 2d25ffa0c..9f8068157 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Вы уверены, что хотите удалить этот канал?", "Are you sure you want to delete this message?": "Вы уверены, что хотите удалить это сообщение?", "Are you sure you want to unarchive all archived chats?": "Вы уверены, что хотите разархивировать все заархивированные чаты?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Вы уверены?", "Arena Models": "Арена моделей", "Artifacts": "Артефакты", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Разрешить новые регистрации", "Enabled": "Включено", "Enforce Temporary Chat": "Принудительный временный чат", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Убедитесь, что ваш CSV-файл включает в себя 4 столбца в следующем порядке: Имя, Электронная почта, Пароль, Роль.", "Enter {{role}} message here": "Введите сообщение {{role}} здесь", "Enter a detail about yourself for your LLMs to recall": "Введите детали о себе, чтобы LLMs могли запомнить", @@ -503,6 +505,7 @@ "ERROR": "ОШИБКА", "Error accessing Google Drive: {{error}}": "Ошибка доступа к Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Ошибка загрузки файла: {{error}}", "Evaluations": "Оценки", "Exa API Key": "Ключ API для Exa", @@ -604,6 +607,7 @@ "Generate Image": "Сгенерировать изображение", "Generate prompt pair": "Сгенерировать пару запросов", "Generating search query": "Генерация поискового запроса", + "Generating...": "", "Get started": "Давайте начнём", "Get started with {{WEBUI_NAME}}": "Давайте начнём с {{WEBUI_NAME}}", "Global": "Глобально", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Мгновенная автоматическая отправка после расшифровки голоса", "Integration": "Интеграция", "Interface": "Интерфейс", + "Invalid file content": "", "Invalid file format.": "Неверный формат файла.", "Invalid JSON schema": "Недопустимая схема JSON", "Invalid Tag": "Недопустимый тег", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Ключ API для поиска Mojeek", "more": "больше", "More": "Больше", + "My Notes": "", "Name": "Имя", "Name your knowledge base": "Назовите свою базу знаний", "Native": "Нативно", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Разрешены только буквенно-цифровые символы и дефисы.", "Only alphanumeric characters and hyphens are allowed in the command string.": "В строке команды разрешено использовать только буквенно-цифровые символы и дефисы.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Редактировать можно только коллекции, создайте новую базу знаний для редактирования/добавления документов.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Доступ имеют только избранные пользователи и группы, имеющие разрешение.", "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.": "Упс! Есть файлы, которые все еще загружаются. Пожалуйста, дождитесь завершения загрузки.", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index d1370de56..d89f8eb9b 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Ste si istý?", "Arena Models": "Arena modely", "Artifacts": "Artefakty", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Povoliť nové registrácie", "Enabled": "Povolené", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Uistite sa, že váš CSV súbor obsahuje 4 stĺpce v tomto poradí: Name, Email, Password, Role.", "Enter {{role}} message here": "Zadajte správu {{role}} sem", "Enter a detail about yourself for your LLMs to recall": "Zadajte podrobnosť o sebe, ktorú si vaše LLM majú zapamätať.", @@ -503,6 +505,7 @@ "ERROR": "Chyba", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "Hodnotenia", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Vygenerovať obrázok", "Generate prompt pair": "", "Generating search query": "Generovanie vyhľadávacieho dotazu", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "Globálne", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Okamžité automatické odoslanie po prepisu hlasu", "Integration": "", "Interface": "Rozhranie", + "Invalid file content": "", "Invalid file format.": "Neplatný formát súboru.", "Invalid JSON schema": "", "Invalid Tag": "Neplatný tag", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "viac", "More": "Viac", + "My Notes": "", "Name": "Meno", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Príkazový reťazec môže obsahovať iba alfanumerické znaky a pomlčky.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Iba kolekcie môžu byť upravované, na úpravu/pridanie dokumentov vytvorte novú znalostnú databázu.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Jejda! Vyzerá to, že URL adresa je neplatná. Prosím, skontrolujte ju a skúste to znova.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Jejda! Niektoré súbory sa stále nahrávajú. Prosím, počkajte, kým sa nahrávanie dokončí.", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 12271b8b9..f25199ac9 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Да ли сигурно желите обрисати овај канал?", "Are you sure you want to delete this message?": "Да ли сигурно желите обрисати ову поруку?", "Are you sure you want to unarchive all archived chats?": "Да ли сигурно желите деархивирати све архиве?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Да ли сте сигурни?", "Arena Models": "Модели са Арене", "Artifacts": "Артефакти", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Омогући нове пријаве", "Enabled": "Омогућено", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Уверите се да ваша CSV датотека укључује 4 колоне у овом редоследу: Име, Е-пошта, Лозинка, Улога.", "Enter {{role}} message here": "Унесите {{role}} поруку овде", "Enter a detail about yourself for your LLMs to recall": "Унесите детаље за себе да ће LLMs преузимати", @@ -503,6 +505,7 @@ "ERROR": "ГРЕШКА", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "Процењивања", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "Генерисање упита претраге", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "Изглед", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Неисправна ознака", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "више", "More": "Више", + "My Notes": "", "Name": "Име", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Само алфанумерички знакови и цртице су дозвољени у низу наредби.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Изгледа да је адреса неважећа. Молимо вас да проверите и покушате поново.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index e2a6611a3..6fa339c5d 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Är du säker på att du vill radera denna kanal?", "Are you sure you want to delete this message?": "Är du säker på att du vill radera detta meddelande?", "Are you sure you want to unarchive all archived chats?": "Är du säker på att du vill avarkivera alla arkiverade chattar?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Är du säker?", "Arena Models": "Arenamodeller", "Artifacts": "Artefakter", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Aktivera nya registreringar", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Se till att din CSV-fil innehåller fyra kolumner i denna ordning: Name, Email, Password, Role.", "Enter {{role}} message here": "Skriv {{role}} meddelande här", "Enter a detail about yourself for your LLMs to recall": "Skriv en detalj om dig själv för att dina LLMs ska komma ihåg", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Generera bild", "Generate prompt pair": "", "Generating search query": "Genererar sökfråga", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Skicka automatiskt efter rösttranskribering", "Integration": "", "Interface": "Gränssnitt", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "Ogiltig tagg", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "Mer", + "My Notes": "", "Name": "Namn", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "Endast alfanumeriska tecken och bindestreck är tillåtna i kommandosträngen.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppsan! Det ser ut som om URL:en är ogiltig. Dubbelkolla gärna och försök igen.", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 0dea0854e..5f58a7258 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "คุณแน่ใจหรือ?", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "เปิดใช้งานการสมัครใหม่", "Enabled": "เปิดใช้งาน", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ตรวจสอบว่าไฟล์ CSV ของคุณมี 4 คอลัมน์ในลำดับนี้: ชื่อ, อีเมล, รหัสผ่าน, บทบาท", "Enter {{role}} message here": "ใส่ข้อความ {{role}} ที่นี่", "Enter a detail about yourself for your LLMs to recall": "ใส่รายละเอียดเกี่ยวกับตัวคุณสำหรับ LLMs ของคุณให้จดจำ", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "การประเมิน", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "สร้างภาพ", "Generate prompt pair": "", "Generating search query": "สร้างคำค้นหา", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "ทั่วโลก", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "ส่งอัตโนมัติทันทีหลังจากการถอดเสียง", "Integration": "", "Interface": "อินเทอร์เฟซ", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "แท็กไม่ถูกต้อง", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "เพิ่มเติม", + "My Notes": "", "Name": "ชื่อ", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "อนุญาตให้ใช้เฉพาะอักขระตัวอักษรและตัวเลข รวมถึงเครื่องหมายขีดกลางในสตริงคำสั่งเท่านั้น", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "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.": "", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index 8b3cc5962..62749c160 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "", "Arena Models": "", "Artifacts": "", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "", "Enabled": "", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", "Enter {{role}} message here": "", "Enter a detail about yourself for your LLMs to recall": "", @@ -503,6 +505,7 @@ "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "", "Generate prompt pair": "", "Generating search query": "", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "", "Integration": "", "Interface": "", + "Invalid file content": "", "Invalid file format.": "", "Invalid JSON schema": "", "Invalid Tag": "", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "", "More": "", + "My Notes": "", "Name": "", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "", "Oops! There are files still uploading. Please wait for the upload to complete.": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index 8c2df550b..f450a30b5 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Bu kanalı silmek istediğinizden emin misiniz?", "Are you sure you want to delete this message?": "Bu mesajı silmek istediğinizden emin misiniz?", "Are you sure you want to unarchive all archived chats?": "Arşivlenmiş tüm sohbetlerin arşivini kaldırmak istediğinizden emin misiniz?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Emin misiniz?", "Arena Models": "Arena Modelleri", "Artifacts": "Eserler", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Yeni Kayıtları Etkinleştir", "Enabled": "Etkin", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV dosyanızın şu sırayla 4 sütun içerdiğinden emin olun: İsim, E-posta, Şifre, Rol.", "Enter {{role}} message here": "Buraya {{role}} mesajını girin", "Enter a detail about yourself for your LLMs to recall": "LLM'lerinizin hatırlaması için kendiniz hakkında bir bilgi girin", @@ -503,6 +505,7 @@ "ERROR": "HATA", "Error accessing Google Drive: {{error}}": "Google Drive'a erişim hatası: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Dosya yüklenirken hata oluştu: {{error}}", "Evaluations": "Değerlendirmeler", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "Görsel Üret", "Generate prompt pair": "", "Generating search query": "Arama sorgusu oluşturma", + "Generating...": "", "Get started": "Başlayın", "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} ile başlayın", "Global": "Evrensel", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Ses Transkripsiyonundan Sonra Anında Otomatik Gönder", "Integration": "", "Interface": "Arayüz", + "Invalid file content": "", "Invalid file format.": "Geçersiz dosya biçimi.", "Invalid JSON schema": "", "Invalid Tag": "Geçersiz etiket", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API Anahtarı", "more": "daha fazla", "More": "Daha Fazla", + "My Notes": "", "Name": "Ad", "Name your knowledge base": "Bilgi tabanınıza bir ad verin", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Yalnızca alfasayısal karakterler ve tireler kabul edilir", "Only alphanumeric characters and hyphens are allowed in the command string.": "Komut dizisinde yalnızca alfasayısal karakterler ve tireler kabul edilir.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Yalnızca koleksiyonlar düzenlenebilir, belgeleri düzenlemek/eklemek için yeni bir bilgi tabanı oluşturun.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "İzinli kullanıcılar ve gruplar yalnızca erişebilir", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Hop! URL geçersiz gibi görünüyor. Lütfen tekrar kontrol edin ve yeniden deneyin.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Hop! Hala yüklenen dosyalar var. Yüklemenin tamamlanmasını bekleyin.", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 81cd1a805..fd621a0c6 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Ви впевнені, що хочете видалити цей канал?", "Are you sure you want to delete this message?": "Ви впевнені, що хочете видалити це повідомлення?", "Are you sure you want to unarchive all archived chats?": "Ви впевнені, що хочете розархівувати усі архівовані чати?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Ви впевнені?", "Arena Models": "Моделі Arena", "Artifacts": "Артефакти", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Дозволити нові реєстрації", "Enabled": "Увімкнено", "Enforce Temporary Chat": "Застосувати тимчасовий чат", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Переконайтеся, що ваш CSV-файл містить 4 колонки в такому порядку: Ім'я, Email, Пароль, Роль.", "Enter {{role}} message here": "Введіть повідомлення {{role}} тут", "Enter a detail about yourself for your LLMs to recall": "Введіть відомості про себе для запам'ятовування вашими LLM.", @@ -503,6 +505,7 @@ "ERROR": "ПОМИЛКА", "Error accessing Google Drive: {{error}}": "Помилка доступу до Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Помилка завантаження файлу: {{error}}", "Evaluations": "Оцінювання", "Exa API Key": "Exa API ключ", @@ -604,6 +607,7 @@ "Generate Image": "Створити зображення", "Generate prompt pair": "Згенерувати пару промтів", "Generating search query": "Сформувати пошуковий запит", + "Generating...": "", "Get started": "Почати", "Get started with {{WEBUI_NAME}}": "Почати з {{WEBUI_NAME}}", "Global": "Глоб.", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Миттєва автоматична відправка після транскрипції голосу", "Integration": "Інтеграція", "Interface": "Інтерфейс", + "Invalid file content": "", "Invalid file format.": "Неправильний формат файлу.", "Invalid JSON schema": "Невірна схема JSON", "Invalid Tag": "Недійсний тег", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "API ключ для пошуку Mojeek", "more": "більше", "More": "Більше", + "My Notes": "", "Name": "Ім'я", "Name your knowledge base": "Назвіть вашу базу знань", "Native": "Рідний", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Дозволені тільки алфавітно-цифрові символи та дефіси", "Only alphanumeric characters and hyphens are allowed in the command string.": "У рядку команди дозволено використовувати лише алфавітно-цифрові символи та дефіси.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Редагувати можна лише колекції, створіть нову базу знань, щоб редагувати або додавати документи.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Тільки вибрані користувачі та групи з дозволом можуть отримати доступ", "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.": "Упс! Деякі файли все ще завантажуються. Будь ласка, зачекайте, поки завантаження завершиться.", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index 4acf1755a..1bebaa52a 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this message?": "", "Are you sure you want to unarchive all archived chats?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "کیا آپ کو یقین ہے؟", "Arena Models": "ارینا ماڈلز", "Artifacts": "نوادرات", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "نئے سائن اپس کو فعال کریں", "Enabled": "فعال کردیا گیا ہے", "Enforce Temporary Chat": "", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "یقینی بنائیں کہ آپ کی CSV فائل میں 4 کالم اس ترتیب میں شامل ہوں: نام، ای میل، پاس ورڈ، کردار", "Enter {{role}} message here": "یہاں {{کردار}} پیغام درج کریں", "Enter a detail about yourself for your LLMs to recall": "اپنی ذات کے بارے میں کوئی تفصیل درج کریں تاکہ آپ کے LLMs اسے یاد رکھ سکیں", @@ -503,6 +505,7 @@ "ERROR": "غلطی", "Error accessing Google Drive: {{error}}": "", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "", "Evaluations": "تشخیصات", "Exa API Key": "", @@ -604,6 +607,7 @@ "Generate Image": "تصویر بنائیں", "Generate prompt pair": "", "Generating search query": "تلاش کے لیے سوالیہ عبارت تیار کی جا رہی ہے", + "Generating...": "", "Get started": "", "Get started with {{WEBUI_NAME}}": "", "Global": "عالمی", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "آواز کی نقل کے بعد فوری خودکار بھیجنا", "Integration": "", "Interface": "انٹرفیس", + "Invalid file content": "", "Invalid file format.": "غلط فائل فارمیٹ", "Invalid JSON schema": "", "Invalid Tag": "غلط ٹیگ", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "", "more": "مزید", "More": "مزید", + "My Notes": "", "Name": "نام", "Name your knowledge base": "", "Native": "", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "کمانڈ سٹرنگ میں صرف حروفی، عددی کردار اور ہائفن کی اجازت ہے", "Only collections can be edited, create a new knowledge base to edit/add documents.": "صرف مجموعے ترمیم کیے جا سکتے ہیں، دستاویزات کو ترمیم یا شامل کرنے کے لیے نیا علمی بنیاد بنائیں", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "", "Oops! Looks like the URL is invalid. Please double-check and try again.": "اوہ! لگتا ہے کہ یو آر ایل غلط ہے براۂ کرم دوبارہ چیک کریں اور دوبارہ کوشش کریں", "Oops! There are files still uploading. Please wait for the upload to complete.": "اوہ! کچھ فائلیں ابھی بھی اپ لوڈ ہو رہی ہیں براہ کرم اپ لوڈ مکمل ہونے کا انتظار کریں", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 0e505b40b..7d1cb7d8d 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "Bạn có chắc chắn muốn xóa kênh này không?", "Are you sure you want to delete this message?": "Bạn có chắc chắn muốn xóa tin nhắn này không?", "Are you sure you want to unarchive all archived chats?": "Bạn có chắc chắn muốn bỏ lưu trữ tất cả các cuộc trò chuyện đã lưu trữ không?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "Bạn có chắc chắn không?", "Arena Models": "Các Mô hình Arena", "Artifacts": "Kết quả tạo ra", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "Cho phép đăng ký mới", "Enabled": "Đã bật", "Enforce Temporary Chat": "Bắt buộc Chat nháp", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Đảm bảo tệp CSV của bạn bao gồm 4 cột theo thứ tự sau: Name, Email, Password, Role.", "Enter {{role}} message here": "Nhập yêu cầu của {{role}} ở đây", "Enter a detail about yourself for your LLMs to recall": "Nhập chi tiết về bản thân của bạn để LLMs có thể nhớ", @@ -503,6 +505,7 @@ "ERROR": "LỖI", "Error accessing Google Drive: {{error}}": "Lỗi truy cập Google Drive: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "Lỗi tải lên tệp: {{error}}", "Evaluations": "Đánh giá", "Exa API Key": "Khóa API Exa", @@ -604,6 +607,7 @@ "Generate Image": "Sinh ảnh", "Generate prompt pair": "Tạo cặp prompt", "Generating search query": "Tạo truy vấn tìm kiếm", + "Generating...": "", "Get started": "Bắt đầu", "Get started with {{WEBUI_NAME}}": "Bắt đầu với {{WEBUI_NAME}}", "Global": "Toàn hệ thống", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "Tự động gửi ngay lập tức sau khi phiên dịch giọng nói", "Integration": "Tích hợp", "Interface": "Giao diện", + "Invalid file content": "", "Invalid file format.": "Định dạng tệp không hợp lệ.", "Invalid JSON schema": "Lược đồ JSON không hợp lệ", "Invalid Tag": "Tag không hợp lệ", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Khóa API Mojeek Search", "more": "thêm", "More": "Thêm", + "My Notes": "", "Name": "Tên", "Name your knowledge base": "Đặt tên cho cơ sở kiến thức của bạn", "Native": "Gốc", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "Chỉ cho phép các ký tự chữ và số và dấu gạch nối", "Only alphanumeric characters and hyphens are allowed in the command string.": "Chỉ ký tự số và gạch nối được phép trong chuỗi lệnh.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Chỉ có thể chỉnh sửa bộ sưu tập, tạo cơ sở kiến thức mới để chỉnh sửa/thêm tài liệu.", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "Chỉ người dùng và nhóm được chọn có quyền mới có thể truy cập", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Rất tiếc! URL dường như không hợp lệ. Vui lòng kiểm tra lại và thử lại.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Ối! Vẫn còn tệp đang tải lên. Vui lòng đợi quá trình tải lên hoàn tất.", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index ab2cd4e23..3e7ec91e3 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "是否确认删除此频道?", "Are you sure you want to delete this message?": "是否确认删除此消息?", "Are you sure you want to unarchive all archived chats?": "是否确认取消所有已归档的对话?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "是否确定?", "Arena Models": "启用竞技场匿名评价模型", "Artifacts": "Artifacts", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "允许新用户注册", "Enabled": "启用", "Enforce Temporary Chat": "强制临时聊天", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "确保您的 CSV 文件按以下顺序包含 4 列: 姓名、电子邮箱、密码、角色。", "Enter {{role}} message here": "在此处输入 {{role}} 的对话内容", "Enter a detail about yourself for your LLMs to recall": "输入一个关于你自己的详细信息,方便你的大语言模型记住这些内容", @@ -503,6 +505,7 @@ "ERROR": "错误", "Error accessing Google Drive: {{error}}": "访问 Google 云端硬盘 出错: {{error}}", "Error accessing media devices.": "", + "Error starting recording.": "", "Error uploading file: {{error}}": "上传文件时出错: {{error}}", "Evaluations": "竞技场评估", "Exa API Key": "Exa API 密钥", @@ -604,6 +607,7 @@ "Generate Image": "生成图像", "Generate prompt pair": "生成提示对", "Generating search query": "生成搜索查询", + "Generating...": "", "Get started": "开始使用", "Get started with {{WEBUI_NAME}}": "开始使用 {{WEBUI_NAME}}", "Global": "全局", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "语音转录文字后即时自动发送", "Integration": "集成", "Interface": "界面", + "Invalid file content": "", "Invalid file format.": "无效文件格式。", "Invalid JSON schema": "无效的 JSON schema", "Invalid Tag": "无效标签", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek Search API 密钥", "more": "更多", "More": "更多", + "My Notes": "", "Name": "名称", "Name your knowledge base": "为您的知识库命名", "Native": "原生", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "只允许使用英文字母,数字 (0-9) 以及连字符 (-)", "Only alphanumeric characters and hyphens are allowed in the command string.": "命令字符串中只允许使用英文字母,数字 (0-9) 以及连字符 (-)。", "Only collections can be edited, create a new knowledge base to edit/add documents.": "只能编辑文件集,创建一个新的知识库来编辑/添加文件。", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "只有具有权限的用户和组才能访问", "Oops! Looks like the URL is invalid. Please double-check and try again.": "此链接似乎为无效链接。请检查后重试。", "Oops! There are files still uploading. Please wait for the upload to complete.": "稍等!还有文件正在上传。请等待上传完成。", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 6af4a3aac..f90776c16 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -105,6 +105,7 @@ "Are you sure you want to delete this channel?": "您確定要刪除此頻道嗎?", "Are you sure you want to delete this message?": "您確定要刪除此訊息嗎?", "Are you sure you want to unarchive all archived chats?": "您確定要解除封存所有封存的對話記錄嗎?", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "", "Are you sure?": "您確定嗎?", "Arena Models": "競技場模型", "Artifacts": "成品", @@ -404,6 +405,7 @@ "Enable New Sign Ups": "允許新使用者註冊", "Enabled": "已啟用", "Enforce Temporary Chat": "強制使用臨時對話", + "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "請確認您的 CSV 檔案包含以下 4 個欄位,並按照此順序排列:姓名、電子郵件、密碼、角色。", "Enter {{role}} message here": "在此輸入 {{role}} 訊息", "Enter a detail about yourself for your LLMs to recall": "輸入有關您的詳細資訊,讓您的大型語言模型可以回想起來", @@ -503,6 +505,7 @@ "ERROR": "錯誤", "Error accessing Google Drive: {{error}}": "存取 Google Drive 時發生錯誤:{{error}}", "Error accessing media devices.": "存取媒體裝置時發生錯誤。", + "Error starting recording.": "", "Error uploading file: {{error}}": "上傳檔案時發生錯誤:{{error}}", "Evaluations": "評估", "Exa API Key": "Exa API 金鑰", @@ -604,6 +607,7 @@ "Generate Image": "產生圖片", "Generate prompt pair": "產生提示配對", "Generating search query": "正在產生搜尋查詢", + "Generating...": "", "Get started": "開始使用", "Get started with {{WEBUI_NAME}}": "開始使用 {{WEBUI_NAME}}", "Global": "全域", @@ -665,6 +669,7 @@ "Instant Auto-Send After Voice Transcription": "語音轉錄後立即自動傳送", "Integration": "整合", "Interface": "介面", + "Invalid file content": "", "Invalid file format.": "無效檔案格式。", "Invalid JSON schema": "無效的 JSON schema", "Invalid Tag": "無效標籤", @@ -787,6 +792,7 @@ "Mojeek Search API Key": "Mojeek 搜尋 API 金鑰", "more": "更多", "More": "更多", + "My Notes": "", "Name": "名稱", "Name your knowledge base": "命名您的知識庫", "Native": "原生", @@ -842,6 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "只允許使用英文字母、數字和連字號", "Only alphanumeric characters and hyphens are allowed in the command string.": "命令字串中只允許使用英文字母、數字和連字號。", "Only collections can be edited, create a new knowledge base to edit/add documents.": "只能編輯集合,請建立新的知識以編輯或新增文件。", + "Only markdown files are allowed": "", "Only select users and groups with permission can access": "只有具有權限的選定使用者和群組可以存取", "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.": "哎呀!還有檔案正在上傳。請等候上傳完畢。",