diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index ae2e2529c..7f603cb10 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -73,4 +73,4 @@ ### Contributor License Agreement -By submitting this pull request, I confirm that I have read and fully agree to the [CONTRIBUTOR_LICENSE_AGREEMENT](CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. \ No newline at end of file +By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. diff --git a/Dockerfile b/Dockerfile index 4a5411611..5102afd28 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ ARG USE_CUDA=false ARG USE_OLLAMA=false # Tested with cu117 for CUDA 11 and cu121 for CUDA 12 (default) -ARG USE_CUDA_VER=cu121 +ARG USE_CUDA_VER=cu128 # any sentence transformer model; models to use can be found at https://huggingface.co/models?library=sentence-transformers # Leaderboard: https://huggingface.co/spaces/mteb/leaderboard # for better performance and multilangauge support use "intfloat/multilingual-e5-large" (~2.5GB) or "intfloat/multilingual-e5-base" (~1.5GB) diff --git a/LICENSE b/LICENSE index 89109d751..399105097 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2023-2025 Timothy Jaeryang Baek +Copyright (c) 2023-2025 Timothy Jaeryang Baek (Open WebUI) All rights reserved. Redistribution and use in source and binary forms, with or without @@ -15,6 +15,12 @@ modification, are permitted provided that the following conditions are met: contributors may be used to endorse or promote products derived from this software without specific prior written permission. +4. Notwithstanding any other provision of this License, and as a material condition of the rights granted herein, licensees are strictly prohibited from altering, removing, obscuring, or replacing any "Open WebUI" branding, including but not limited to the name, logo, or any visual, textual, or symbolic identifiers that distinguish the software and its interfaces, in any deployment or distribution, regardless of the number of users, except as explicitly set forth in Clauses 5 and 6 below. + +5. The branding restriction enumerated in Clause 4 shall not apply in the following limited circumstances: (i) deployments or distributions where the total number of end users (defined as individual natural persons with direct access to the application) does not exceed fifty (50) within any rolling thirty (30) day period; (ii) cases in which the licensee is an official contributor to the codebase—with a substantive code change successfully merged into the main branch of the official codebase maintained by the copyright holder—who has obtained specific prior written permission for branding adjustment from the copyright holder; or (iii) where the licensee has obtained a duly executed enterprise license expressly permitting such modification. For all other cases, any removal or alteration of the "Open WebUI" branding shall constitute a material breach of license. + +6. All code, modifications, or derivative works incorporated into this project prior to the incorporation of this branding clause remain licensed under the BSD 3-Clause License, and prior contributors retain all BSD-3 rights therein; if any such contributor requests the removal of their BSD-3-licensed code, the copyright holder will do so, and any replacement code will be licensed under the project's primary license then in effect. By contributing after this clause's adoption, you agree to the project's Contributor License Agreement (CLA) and to these updated terms for all new contributions. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE diff --git a/README.md b/README.md index 54ad41503..15f173159 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ ![GitHub language count](https://img.shields.io/github/languages/count/open-webui/open-webui) ![GitHub top language](https://img.shields.io/github/languages/top/open-webui/open-webui) ![GitHub last commit](https://img.shields.io/github/last-commit/open-webui/open-webui?color=red) -![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Follama-webui%2Follama-wbui&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false) [![Discord](https://img.shields.io/badge/Discord-Open_WebUI-blue?logo=discord&logoColor=white)](https://discord.gg/5rJgQTnV4s) [![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/tjbck) @@ -206,7 +205,7 @@ Discover upcoming features on our roadmap in the [Open WebUI Documentation](http ## License 📜 -This project is licensed under the [BSD-3-Clause License](LICENSE) - see the [LICENSE](LICENSE) file for details. 📄 +This project is licensed under the [Open WebUI License](LICENSE), a revised BSD-3-Clause license. You receive all the same rights as the classic BSD-3 license: you can use, modify, and distribute the software, including in proprietary and commercial products, with minimal restrictions. The only additional requirement is to preserve the "Open WebUI" branding, as detailed in the LICENSE file. For full terms, see the [LICENSE](LICENSE) document. 📄 ## Support 💬 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="*", diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 3b40977f2..6b1f27d46 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -509,6 +509,12 @@ ENABLE_OAUTH_GROUP_MANAGEMENT = PersistentConfig( os.environ.get("ENABLE_OAUTH_GROUP_MANAGEMENT", "False").lower() == "true", ) +ENABLE_OAUTH_GROUP_CREATION = PersistentConfig( + "ENABLE_OAUTH_GROUP_CREATION", + "oauth.enable_group_creation", + os.environ.get("ENABLE_OAUTH_GROUP_CREATION", "False").lower() == "true", +) + OAUTH_ROLES_CLAIM = PersistentConfig( "OAUTH_ROLES_CLAIM", "oauth.roles_claim", @@ -952,10 +958,15 @@ DEFAULT_MODELS = PersistentConfig( "DEFAULT_MODELS", "ui.default_models", os.environ.get("DEFAULT_MODELS", None) ) -DEFAULT_PROMPT_SUGGESTIONS = PersistentConfig( - "DEFAULT_PROMPT_SUGGESTIONS", - "ui.prompt_suggestions", - [ +try: + default_prompt_suggestions = json.loads( + os.environ.get("DEFAULT_PROMPT_SUGGESTIONS", "[]") + ) +except Exception as e: + log.exception(f"Error loading DEFAULT_PROMPT_SUGGESTIONS: {e}") + default_prompt_suggestions = [] +if default_prompt_suggestions == []: + default_prompt_suggestions = [ { "title": ["Help me study", "vocabulary for a college entrance exam"], "content": "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.", @@ -983,7 +994,11 @@ DEFAULT_PROMPT_SUGGESTIONS = PersistentConfig( "title": ["Overcome procrastination", "give me tips"], "content": "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?", }, - ], + ] +DEFAULT_PROMPT_SUGGESTIONS = PersistentConfig( + "DEFAULT_PROMPT_SUGGESTIONS", + "ui.prompt_suggestions", + default_prompt_suggestions, ) MODEL_ORDER_LIST = PersistentConfig( @@ -1062,6 +1077,14 @@ USER_PERMISSIONS_CHAT_EDIT = ( os.environ.get("USER_PERMISSIONS_CHAT_EDIT", "True").lower() == "true" ) +USER_PERMISSIONS_CHAT_SHARE = ( + os.environ.get("USER_PERMISSIONS_CHAT_SHARE", "True").lower() == "true" +) + +USER_PERMISSIONS_CHAT_EXPORT = ( + os.environ.get("USER_PERMISSIONS_CHAT_EXPORT", "True").lower() == "true" +) + USER_PERMISSIONS_CHAT_STT = ( os.environ.get("USER_PERMISSIONS_CHAT_STT", "True").lower() == "true" ) @@ -1126,6 +1149,8 @@ DEFAULT_USER_PERMISSIONS = { "file_upload": USER_PERMISSIONS_CHAT_FILE_UPLOAD, "delete": USER_PERMISSIONS_CHAT_DELETE, "edit": USER_PERMISSIONS_CHAT_EDIT, + "share": USER_PERMISSIONS_CHAT_SHARE, + "export": USER_PERMISSIONS_CHAT_EXPORT, "stt": USER_PERMISSIONS_CHAT_STT, "tts": USER_PERMISSIONS_CHAT_TTS, "call": USER_PERMISSIONS_CHAT_CALL, @@ -1153,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", @@ -1203,6 +1233,9 @@ ENABLE_USER_WEBHOOKS = PersistentConfig( os.environ.get("ENABLE_USER_WEBHOOKS", "True").lower() == "true", ) +# FastAPI / AnyIO settings +THREAD_POOL_SIZE = int(os.getenv("THREAD_POOL_SIZE", "0")) + def validate_cors_origins(origins): for origin in origins: @@ -1229,7 +1262,9 @@ def validate_cors_origin(origin): # To test CORS_ALLOW_ORIGIN locally, you can set something like # CORS_ALLOW_ORIGIN=http://localhost:5173;http://localhost:8080 # in your .env file depending on your frontend port, 5173 in this case. -CORS_ALLOW_ORIGIN = os.environ.get("CORS_ALLOW_ORIGIN", "*").split(";") +CORS_ALLOW_ORIGIN = os.environ.get( + "CORS_ALLOW_ORIGIN", "*;http://localhost:5173;http://localhost:8080" +).split(";") if "*" in CORS_ALLOW_ORIGIN: log.warning( @@ -1693,6 +1728,9 @@ 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" +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") @@ -1724,6 +1762,14 @@ PGVECTOR_INITIALIZE_MAX_VECTOR_LENGTH = int( os.environ.get("PGVECTOR_INITIALIZE_MAX_VECTOR_LENGTH", "1536") ) +# Pinecone +PINECONE_API_KEY = os.environ.get("PINECONE_API_KEY", None) +PINECONE_ENVIRONMENT = os.environ.get("PINECONE_ENVIRONMENT", None) +PINECONE_INDEX_NAME = os.getenv("PINECONE_INDEX_NAME", "open-webui-index") +PINECONE_DIMENSION = int(os.getenv("PINECONE_DIMENSION", 1536)) # or 3072, 1024, 768 +PINECONE_METRIC = os.getenv("PINECONE_METRIC", "cosine") +PINECONE_CLOUD = os.getenv("PINECONE_CLOUD", "aws") # or "gcp" or "azure" + #################################### # Information Retrieval (RAG) #################################### @@ -1760,6 +1806,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", @@ -2087,6 +2140,24 @@ SEARXNG_QUERY_URL = PersistentConfig( os.getenv("SEARXNG_QUERY_URL", ""), ) +YACY_QUERY_URL = PersistentConfig( + "YACY_QUERY_URL", + "rag.web.search.yacy_query_url", + os.getenv("YACY_QUERY_URL", ""), +) + +YACY_USERNAME = PersistentConfig( + "YACY_USERNAME", + "rag.web.search.yacy_username", + os.getenv("YACY_USERNAME", ""), +) + +YACY_PASSWORD = PersistentConfig( + "YACY_PASSWORD", + "rag.web.search.yacy_password", + os.getenv("YACY_PASSWORD", ""), +) + GOOGLE_PSE_API_KEY = PersistentConfig( "GOOGLE_PSE_API_KEY", "rag.web.search.google_pse_api_key", @@ -2251,6 +2322,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 @@ -2561,6 +2655,18 @@ AUDIO_STT_AZURE_LOCALES = PersistentConfig( os.getenv("AUDIO_STT_AZURE_LOCALES", ""), ) +AUDIO_STT_AZURE_BASE_URL = PersistentConfig( + "AUDIO_STT_AZURE_BASE_URL", + "audio.stt.azure.base_url", + os.getenv("AUDIO_STT_AZURE_BASE_URL", ""), +) + +AUDIO_STT_AZURE_MAX_SPEAKERS = PersistentConfig( + "AUDIO_STT_AZURE_MAX_SPEAKERS", + "audio.stt.azure.max_speakers", + os.getenv("AUDIO_STT_AZURE_MAX_SPEAKERS", "3"), +) + AUDIO_TTS_OPENAI_API_BASE_URL = PersistentConfig( "AUDIO_TTS_OPENAI_API_BASE_URL", "audio.tts.openai.api_base_url", diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index c9d71a4a0..59557349e 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -354,6 +354,10 @@ BYPASS_MODEL_ACCESS_CONTROL = ( os.environ.get("BYPASS_MODEL_ACCESS_CONTROL", "False").lower() == "true" ) +WEBUI_AUTH_SIGNOUT_REDIRECT_URL = os.environ.get( + "WEBUI_AUTH_SIGNOUT_REDIRECT_URL", None +) + #################################### # WEBUI_SECRET_KEY #################################### @@ -409,6 +413,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"), @@ -437,6 +446,56 @@ 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" +) + + +#################################### +# SENTENCE TRANSFORMERS +#################################### + + +SENTENCE_TRANSFORMERS_BACKEND = os.environ.get("SENTENCE_TRANSFORMERS_BACKEND", "") +if SENTENCE_TRANSFORMERS_BACKEND == "": + SENTENCE_TRANSFORMERS_BACKEND = "torch" + + +SENTENCE_TRANSFORMERS_MODEL_KWARGS = os.environ.get( + "SENTENCE_TRANSFORMERS_MODEL_KWARGS", "" +) +if SENTENCE_TRANSFORMERS_MODEL_KWARGS == "": + SENTENCE_TRANSFORMERS_MODEL_KWARGS = None +else: + try: + SENTENCE_TRANSFORMERS_MODEL_KWARGS = json.loads( + SENTENCE_TRANSFORMERS_MODEL_KWARGS + ) + except Exception: + SENTENCE_TRANSFORMERS_MODEL_KWARGS = None + + +SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND = os.environ.get( + "SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND", "" +) +if SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND == "": + SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND = "torch" + + +SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = os.environ.get( + "SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS", "" +) +if SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS == "": + SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = None +else: + try: + SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = json.loads( + SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS + ) + except Exception: + SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS = None + #################################### # OFFLINE_MODE #################################### @@ -446,6 +505,7 @@ OFFLINE_MODE = os.environ.get("OFFLINE_MODE", "false").lower() == "true" if OFFLINE_MODE: os.environ["HF_HUB_OFFLINE"] = "1" + #################################### # AUDIT LOGGING #################################### @@ -467,6 +527,7 @@ AUDIT_EXCLUDED_PATHS = os.getenv("AUDIT_EXCLUDED_PATHS", "/chats,/chat,/folders" AUDIT_EXCLUDED_PATHS = [path.strip() for path in AUDIT_EXCLUDED_PATHS] AUDIT_EXCLUDED_PATHS = [path.lstrip("/") for path in AUDIT_EXCLUDED_PATHS] + #################################### # OPENTELEMETRY #################################### diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 56ea17fa1..2ffdd01d3 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -17,6 +17,7 @@ from sqlalchemy import text from typing import Optional from aiocache import cached import aiohttp +import anyio.to_thread import requests @@ -100,11 +101,14 @@ 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, # Direct Connections ENABLE_DIRECT_CONNECTIONS, + # Thread pool size for FastAPI/AnyIO + THREAD_POOL_SIZE, # Tool Server Configs TOOL_SERVER_CONNECTIONS, # Code Execution @@ -151,6 +155,8 @@ from open_webui.config import ( AUDIO_STT_AZURE_API_KEY, AUDIO_STT_AZURE_REGION, AUDIO_STT_AZURE_LOCALES, + AUDIO_STT_AZURE_BASE_URL, + AUDIO_STT_AZURE_MAX_SPEAKERS, AUDIO_TTS_API_KEY, AUDIO_TTS_ENGINE, AUDIO_TTS_MODEL, @@ -219,6 +225,9 @@ from open_webui.config import ( SERPAPI_API_KEY, SERPAPI_ENGINE, SEARXNG_QUERY_URL, + YACY_QUERY_URL, + YACY_USERNAME, + YACY_PASSWORD, SERPER_API_KEY, SERPLY_API_KEY, SERPSTACK_API_KEY, @@ -240,12 +249,17 @@ 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, 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, @@ -260,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, @@ -341,6 +356,7 @@ from open_webui.env import ( WEBUI_SESSION_COOKIE_SECURE, WEBUI_AUTH_TRUSTED_EMAIL_HEADER, WEBUI_AUTH_TRUSTED_NAME_HEADER, + WEBUI_AUTH_SIGNOUT_REDIRECT_URL, ENABLE_WEBSOCKET_SUPPORT, BYPASS_MODEL_ACCESS_CONTROL, RESET_CONFIG_ON_START, @@ -370,6 +386,7 @@ from open_webui.utils.auth import ( get_admin_user, get_verified_user, ) +from open_webui.utils.plugin import install_tool_and_function_dependencies from open_webui.utils.oauth import OAuthManager from open_webui.utils.security_headers import SecurityHeadersMiddleware @@ -432,7 +449,18 @@ async def lifespan(app: FastAPI): if LICENSE_KEY: get_license_data(app, LICENSE_KEY) + # This should be blocking (sync) so functions are not deactivated on first /get_models calls + # when the first user lands on the / route. + log.info("Installing external dependencies of functions and tools...") + install_tool_and_function_dependencies() + + pool_size = THREAD_POOL_SIZE + if pool_size and pool_size > 0: + limiter = anyio.to_thread.current_default_thread_limiter() + limiter.total_tokens = pool_size + asyncio.create_task(periodic_usage_pool_cleanup()) + yield @@ -543,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 @@ -576,6 +605,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.WEBUI_AUTH_SIGNOUT_REDIRECT_URL = WEBUI_AUTH_SIGNOUT_REDIRECT_URL app.state.EXTERNAL_PWA_MANIFEST_URL = EXTERNAL_PWA_MANIFEST_URL app.state.USER_COUNT = None @@ -646,6 +676,9 @@ app.state.config.BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL = ( app.state.config.ENABLE_GOOGLE_DRIVE_INTEGRATION = ENABLE_GOOGLE_DRIVE_INTEGRATION app.state.config.ENABLE_ONEDRIVE_INTEGRATION = ENABLE_ONEDRIVE_INTEGRATION app.state.config.SEARXNG_QUERY_URL = SEARXNG_QUERY_URL +app.state.config.YACY_QUERY_URL = YACY_QUERY_URL +app.state.config.YACY_USERNAME = YACY_USERNAME +app.state.config.YACY_PASSWORD = YACY_PASSWORD app.state.config.GOOGLE_PSE_API_KEY = GOOGLE_PSE_API_KEY app.state.config.GOOGLE_PSE_ENGINE_ID = GOOGLE_PSE_ENGINE_ID app.state.config.BRAVE_SEARCH_API_KEY = BRAVE_SEARCH_API_KEY @@ -668,6 +701,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 @@ -796,6 +833,8 @@ app.state.config.DEEPGRAM_API_KEY = DEEPGRAM_API_KEY app.state.config.AUDIO_STT_AZURE_API_KEY = AUDIO_STT_AZURE_API_KEY app.state.config.AUDIO_STT_AZURE_REGION = AUDIO_STT_AZURE_REGION app.state.config.AUDIO_STT_AZURE_LOCALES = AUDIO_STT_AZURE_LOCALES +app.state.config.AUDIO_STT_AZURE_BASE_URL = AUDIO_STT_AZURE_BASE_URL +app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS = AUDIO_STT_AZURE_MAX_SPEAKERS app.state.config.TTS_OPENAI_API_BASE_URL = AUDIO_TTS_OPENAI_API_BASE_URL app.state.config.TTS_OPENAI_API_KEY = AUDIO_TTS_OPENAI_API_KEY @@ -869,7 +908,8 @@ class RedirectMiddleware(BaseHTTPMiddleware): # Check for the specific watch path and the presence of 'v' parameter if path.endswith("/watch") and "v" in query_params: - video_id = query_params["v"][0] # Extract the first 'v' parameter + # Extract the first 'v' parameter + video_id = query_params["v"][0] encoded_video_id = urlencode({"youtube": video_id}) redirect_url = f"/?{encoded_video_id}" return RedirectResponse(url=redirect_url) @@ -1283,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, @@ -1327,7 +1368,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, **( { @@ -1439,7 +1483,7 @@ async def get_manifest_json(): "start_url": "/", "display": "standalone", "background_color": "#343541", - "orientation": "natural", + "orientation": "any", "icons": [ { "src": "/static/logo.png", diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index 605299528..3b95d1609 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -10,6 +10,8 @@ from open_webui.models.groups import Groups from pydantic import BaseModel, ConfigDict from sqlalchemy import BigInteger, Column, String, Text +from sqlalchemy import or_ + #################### # User DB Schema @@ -67,6 +69,11 @@ class UserModel(BaseModel): #################### +class UserListResponse(BaseModel): + users: list[UserModel] + total: int + + class UserResponse(BaseModel): id: str name: str @@ -160,11 +167,63 @@ class UsersTable: return None def get_users( - self, skip: Optional[int] = None, limit: Optional[int] = None - ) -> list[UserModel]: + self, + filter: Optional[dict] = None, + skip: Optional[int] = None, + limit: Optional[int] = None, + ) -> UserListResponse: with get_db() as db: + query = db.query(User) - query = db.query(User).order_by(User.created_at.desc()) + if filter: + query_key = filter.get("query") + if query_key: + query = query.filter( + or_( + User.name.ilike(f"%{query_key}%"), + User.email.ilike(f"%{query_key}%"), + ) + ) + + order_by = filter.get("order_by") + direction = filter.get("direction") + + if order_by == "name": + if direction == "asc": + query = query.order_by(User.name.asc()) + else: + query = query.order_by(User.name.desc()) + elif order_by == "email": + if direction == "asc": + query = query.order_by(User.email.asc()) + else: + query = query.order_by(User.email.desc()) + + elif order_by == "created_at": + if direction == "asc": + query = query.order_by(User.created_at.asc()) + else: + query = query.order_by(User.created_at.desc()) + + elif order_by == "last_active_at": + if direction == "asc": + query = query.order_by(User.last_active_at.asc()) + else: + query = query.order_by(User.last_active_at.desc()) + + elif order_by == "updated_at": + if direction == "asc": + query = query.order_by(User.updated_at.asc()) + else: + query = query.order_by(User.updated_at.desc()) + elif order_by == "role": + if direction == "asc": + query = query.order_by(User.role.asc()) + else: + query = query.order_by(User.role.desc()) + + else: + query = query.order_by(User.created_at.desc()) if skip: query = query.offset(skip) @@ -172,8 +231,10 @@ class UsersTable: query = query.limit(limit) users = query.all() - - return [UserModel.model_validate(user) for user in users] + return { + "users": [UserModel.model_validate(user) for user in users], + "total": db.query(User).count(), + } def get_users_by_user_ids(self, user_ids: list[str]) -> list[UserModel]: with get_db() as db: diff --git a/backend/open_webui/retrieval/loaders/external.py b/backend/open_webui/retrieval/loaders/external.py new file mode 100644 index 000000000..642cfd3a5 --- /dev/null +++ b/backend/open_webui/retrieval/loaders/external.py @@ -0,0 +1,53 @@ +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: + 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.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}", + }, + json={ + "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/utils.py b/backend/open_webui/retrieval/utils.py index 2b23cad17..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 @@ -260,23 +260,47 @@ def query_collection( k: int, ) -> dict: results = [] - for query in queries: - log.debug(f"query_collection:query {query}") - query_embedding = embedding_function(query, prefix=RAG_EMBEDDING_QUERY_PREFIX) - for collection_name in collection_names: + error = False + + def process_query_collection(collection_name, query_embedding): + try: if collection_name: - try: - result = query_doc( - collection_name=collection_name, - k=k, - query_embedding=query_embedding, - ) - if result is not None: - results.append(result.model_dump()) - except Exception as e: - log.exception(f"Error when querying the collection: {e}") - else: - pass + result = query_doc( + collection_name=collection_name, + k=k, + query_embedding=query_embedding, + ) + if result is not None: + return result.model_dump(), None + return None, None + except Exception as e: + log.exception(f"Error when querying the collection: {e}") + return None, e + + # Generate all query embeddings (in one call) + query_embeddings = embedding_function(queries, prefix=RAG_EMBEDDING_QUERY_PREFIX) + log.debug( + f"query_collection: processing {len(queries)} queries across {len(collection_names)} collections" + ) + + with ThreadPoolExecutor() as executor: + future_results = [] + for query_embedding in query_embeddings: + for collection_name in collection_names: + result = executor.submit( + process_query_collection, collection_name, query_embedding + ) + future_results.append(result) + task_results = [future.result() for future in future_results] + + for result, err in task_results: + if err is not None: + error = True + elif result is not None: + results.append(result) + + if error and not results: + log.warning("All collection queries failed. No results returned.") return merge_and_sort_query_results(results, k=k) diff --git a/backend/open_webui/retrieval/vector/connector.py b/backend/open_webui/retrieval/vector/connector.py index ac8884c04..198e6f176 100644 --- a/backend/open_webui/retrieval/vector/connector.py +++ b/backend/open_webui/retrieval/vector/connector.py @@ -20,6 +20,10 @@ elif VECTOR_DB == "elasticsearch": from open_webui.retrieval.vector.dbs.elasticsearch import ElasticsearchClient VECTOR_DB_CLIENT = ElasticsearchClient() +elif VECTOR_DB == "pinecone": + from open_webui.retrieval.vector.dbs.pinecone import PineconeClient + + VECTOR_DB_CLIENT = PineconeClient() else: from open_webui.retrieval.vector.dbs.chroma import ChromaClient diff --git a/backend/open_webui/retrieval/vector/dbs/chroma.py b/backend/open_webui/retrieval/vector/dbs/chroma.py index a6b97df3e..f9adc9c95 100755 --- a/backend/open_webui/retrieval/vector/dbs/chroma.py +++ b/backend/open_webui/retrieval/vector/dbs/chroma.py @@ -5,7 +5,12 @@ from chromadb.utils.batch_utils import create_batches from typing import Optional -from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult +from open_webui.retrieval.vector.main import ( + VectorDBBase, + VectorItem, + SearchResult, + GetResult, +) from open_webui.config import ( CHROMA_DATA_PATH, CHROMA_HTTP_HOST, @@ -23,7 +28,7 @@ log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["RAG"]) -class ChromaClient: +class ChromaClient(VectorDBBase): def __init__(self): settings_dict = { "allow_reset": True, diff --git a/backend/open_webui/retrieval/vector/dbs/elasticsearch.py b/backend/open_webui/retrieval/vector/dbs/elasticsearch.py index c89628494..18a915e38 100644 --- a/backend/open_webui/retrieval/vector/dbs/elasticsearch.py +++ b/backend/open_webui/retrieval/vector/dbs/elasticsearch.py @@ -2,7 +2,12 @@ from elasticsearch import Elasticsearch, BadRequestError from typing import Optional import ssl from elasticsearch.helpers import bulk, scan -from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult +from open_webui.retrieval.vector.main import ( + VectorDBBase, + VectorItem, + SearchResult, + GetResult, +) from open_webui.config import ( ELASTICSEARCH_URL, ELASTICSEARCH_CA_CERTS, @@ -15,7 +20,7 @@ from open_webui.config import ( ) -class ElasticsearchClient: +class ElasticsearchClient(VectorDBBase): """ Important: in order to reduce the number of indexes and since the embedding vector length is fixed, we avoid creating diff --git a/backend/open_webui/retrieval/vector/dbs/milvus.py b/backend/open_webui/retrieval/vector/dbs/milvus.py index 26b4dd5ed..f116c57f7 100644 --- a/backend/open_webui/retrieval/vector/dbs/milvus.py +++ b/backend/open_webui/retrieval/vector/dbs/milvus.py @@ -4,7 +4,12 @@ import json import logging from typing import Optional -from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult +from open_webui.retrieval.vector.main import ( + VectorDBBase, + VectorItem, + SearchResult, + GetResult, +) from open_webui.config import ( MILVUS_URI, MILVUS_DB, @@ -16,7 +21,7 @@ log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["RAG"]) -class MilvusClient: +class MilvusClient(VectorDBBase): def __init__(self): self.collection_prefix = "open_webui" if MILVUS_TOKEN is None: diff --git a/backend/open_webui/retrieval/vector/dbs/opensearch.py b/backend/open_webui/retrieval/vector/dbs/opensearch.py index 432bcef41..60ef2d906 100644 --- a/backend/open_webui/retrieval/vector/dbs/opensearch.py +++ b/backend/open_webui/retrieval/vector/dbs/opensearch.py @@ -2,7 +2,12 @@ from opensearchpy import OpenSearch from opensearchpy.helpers import bulk from typing import Optional -from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult +from open_webui.retrieval.vector.main import ( + VectorDBBase, + VectorItem, + SearchResult, + GetResult, +) from open_webui.config import ( OPENSEARCH_URI, OPENSEARCH_SSL, @@ -12,7 +17,7 @@ from open_webui.config import ( ) -class OpenSearchClient: +class OpenSearchClient(VectorDBBase): def __init__(self): self.index_prefix = "open_webui" self.client = OpenSearch( diff --git a/backend/open_webui/retrieval/vector/dbs/pgvector.py b/backend/open_webui/retrieval/vector/dbs/pgvector.py index c38dbb036..b6cb2a4e2 100644 --- a/backend/open_webui/retrieval/vector/dbs/pgvector.py +++ b/backend/open_webui/retrieval/vector/dbs/pgvector.py @@ -22,7 +22,12 @@ from pgvector.sqlalchemy import Vector from sqlalchemy.ext.mutable import MutableDict from sqlalchemy.exc import NoSuchTableError -from open_webui.retrieval.vector.main import VectorItem, SearchResult, GetResult +from open_webui.retrieval.vector.main import ( + VectorDBBase, + VectorItem, + SearchResult, + GetResult, +) from open_webui.config import PGVECTOR_DB_URL, PGVECTOR_INITIALIZE_MAX_VECTOR_LENGTH from open_webui.env import SRC_LOG_LEVELS @@ -44,7 +49,7 @@ class DocumentChunk(Base): vmetadata = Column(MutableDict.as_mutable(JSONB), nullable=True) -class PgvectorClient: +class PgvectorClient(VectorDBBase): def __init__(self) -> None: # if no pgvector uri, use the existing database connection @@ -136,9 +141,8 @@ class PgvectorClient: # Pad the vector with zeros vector += [0.0] * (VECTOR_LENGTH - current_length) elif current_length > VECTOR_LENGTH: - raise Exception( - f"Vector length {current_length} not supported. Max length must be <= {VECTOR_LENGTH}" - ) + # Truncate the vector to VECTOR_LENGTH + vector = vector[:VECTOR_LENGTH] return vector def insert(self, collection_name: str, items: List[VectorItem]) -> None: diff --git a/backend/open_webui/retrieval/vector/dbs/pinecone.py b/backend/open_webui/retrieval/vector/dbs/pinecone.py new file mode 100644 index 000000000..bc9bd8bc3 --- /dev/null +++ b/backend/open_webui/retrieval/vector/dbs/pinecone.py @@ -0,0 +1,412 @@ +from typing import Optional, List, Dict, Any, Union +import logging +from pinecone import Pinecone, ServerlessSpec + +from open_webui.retrieval.vector.main import ( + VectorDBBase, + VectorItem, + SearchResult, + GetResult, +) +from open_webui.config import ( + PINECONE_API_KEY, + PINECONE_ENVIRONMENT, + PINECONE_INDEX_NAME, + PINECONE_DIMENSION, + PINECONE_METRIC, + PINECONE_CLOUD, +) +from open_webui.env import SRC_LOG_LEVELS + +NO_LIMIT = 10000 # Reasonable limit to avoid overwhelming the system +BATCH_SIZE = 100 # Recommended batch size for Pinecone operations + +log = logging.getLogger(__name__) +log.setLevel(SRC_LOG_LEVELS["RAG"]) + + +class PineconeClient(VectorDBBase): + def __init__(self): + self.collection_prefix = "open-webui" + + # Validate required configuration + self._validate_config() + + # Store configuration values + self.api_key = PINECONE_API_KEY + self.environment = PINECONE_ENVIRONMENT + self.index_name = PINECONE_INDEX_NAME + self.dimension = PINECONE_DIMENSION + self.metric = PINECONE_METRIC + self.cloud = PINECONE_CLOUD + + # Initialize Pinecone client + self.client = Pinecone(api_key=self.api_key) + + # Create index if it doesn't exist + self._initialize_index() + + def _validate_config(self) -> None: + """Validate that all required configuration variables are set.""" + missing_vars = [] + if not PINECONE_API_KEY: + missing_vars.append("PINECONE_API_KEY") + if not PINECONE_ENVIRONMENT: + missing_vars.append("PINECONE_ENVIRONMENT") + if not PINECONE_INDEX_NAME: + missing_vars.append("PINECONE_INDEX_NAME") + if not PINECONE_DIMENSION: + missing_vars.append("PINECONE_DIMENSION") + if not PINECONE_CLOUD: + missing_vars.append("PINECONE_CLOUD") + + if missing_vars: + raise ValueError( + f"Required configuration missing: {', '.join(missing_vars)}" + ) + + def _initialize_index(self) -> None: + """Initialize the Pinecone index.""" + try: + # Check if index exists + if self.index_name not in self.client.list_indexes().names(): + log.info(f"Creating Pinecone index '{self.index_name}'...") + self.client.create_index( + name=self.index_name, + dimension=self.dimension, + metric=self.metric, + spec=ServerlessSpec(cloud=self.cloud, region=self.environment), + ) + log.info(f"Successfully created Pinecone index '{self.index_name}'") + else: + log.info(f"Using existing Pinecone index '{self.index_name}'") + + # Connect to the index + self.index = self.client.Index(self.index_name) + + except Exception as e: + log.error(f"Failed to initialize Pinecone index: {e}") + raise RuntimeError(f"Failed to initialize Pinecone index: {e}") + + def _create_points( + self, items: List[VectorItem], collection_name_with_prefix: str + ) -> List[Dict[str, Any]]: + """Convert VectorItem objects to Pinecone point format.""" + points = [] + for item in items: + # Start with any existing metadata or an empty dict + metadata = item.get("metadata", {}).copy() if item.get("metadata") else {} + + # Add text to metadata if available + if "text" in item: + metadata["text"] = item["text"] + + # Always add collection_name to metadata for filtering + metadata["collection_name"] = collection_name_with_prefix + + point = { + "id": item["id"], + "values": item["vector"], + "metadata": metadata, + } + points.append(point) + return points + + def _get_collection_name_with_prefix(self, collection_name: str) -> str: + """Get the collection name with prefix.""" + return f"{self.collection_prefix}_{collection_name}" + + def _normalize_distance(self, score: float) -> float: + """Normalize distance score based on the metric used.""" + if self.metric.lower() == "cosine": + # Cosine similarity ranges from -1 to 1, normalize to 0 to 1 + return (score + 1.0) / 2.0 + elif self.metric.lower() in ["euclidean", "dotproduct"]: + # These are already suitable for ranking (smaller is better for Euclidean) + return score + else: + # For other metrics, use as is + return score + + def _result_to_get_result(self, matches: list) -> GetResult: + """Convert Pinecone matches to GetResult format.""" + ids = [] + documents = [] + metadatas = [] + + for match in matches: + metadata = match.get("metadata", {}) + ids.append(match["id"]) + documents.append(metadata.get("text", "")) + metadatas.append(metadata) + + return GetResult( + **{ + "ids": [ids], + "documents": [documents], + "metadatas": [metadatas], + } + ) + + def has_collection(self, collection_name: str) -> bool: + """Check if a collection exists by searching for at least one item.""" + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + + try: + # Search for at least 1 item with this collection name in metadata + response = self.index.query( + vector=[0.0] * self.dimension, # dummy vector + top_k=1, + filter={"collection_name": collection_name_with_prefix}, + include_metadata=False, + ) + return len(response.matches) > 0 + except Exception as e: + log.exception( + f"Error checking collection '{collection_name_with_prefix}': {e}" + ) + return False + + def delete_collection(self, collection_name: str) -> None: + """Delete a collection by removing all vectors with the collection name in metadata.""" + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + try: + self.index.delete(filter={"collection_name": collection_name_with_prefix}) + log.info( + f"Collection '{collection_name_with_prefix}' deleted (all vectors removed)." + ) + except Exception as e: + log.warning( + f"Failed to delete collection '{collection_name_with_prefix}': {e}" + ) + raise + + def insert(self, collection_name: str, items: List[VectorItem]) -> None: + """Insert vectors into a collection.""" + if not items: + log.warning("No items to insert") + return + + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + points = self._create_points(items, collection_name_with_prefix) + + # Insert in batches for better performance and reliability + for i in range(0, len(points), BATCH_SIZE): + batch = points[i : i + BATCH_SIZE] + try: + self.index.upsert(vectors=batch) + log.debug( + f"Inserted batch of {len(batch)} vectors into '{collection_name_with_prefix}'" + ) + except Exception as e: + log.error( + f"Error inserting batch into '{collection_name_with_prefix}': {e}" + ) + raise + + log.info( + f"Successfully inserted {len(items)} vectors into '{collection_name_with_prefix}'" + ) + + def upsert(self, collection_name: str, items: List[VectorItem]) -> None: + """Upsert (insert or update) vectors into a collection.""" + if not items: + log.warning("No items to upsert") + return + + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + points = self._create_points(items, collection_name_with_prefix) + + # Upsert in batches + for i in range(0, len(points), BATCH_SIZE): + batch = points[i : i + BATCH_SIZE] + try: + self.index.upsert(vectors=batch) + log.debug( + f"Upserted batch of {len(batch)} vectors into '{collection_name_with_prefix}'" + ) + except Exception as e: + log.error( + f"Error upserting batch into '{collection_name_with_prefix}': {e}" + ) + raise + + log.info( + f"Successfully upserted {len(items)} vectors into '{collection_name_with_prefix}'" + ) + + def search( + self, collection_name: str, vectors: List[List[Union[float, int]]], limit: int + ) -> Optional[SearchResult]: + """Search for similar vectors in a collection.""" + if not vectors or not vectors[0]: + log.warning("No vectors provided for search") + return None + + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + + if limit is None or limit <= 0: + limit = NO_LIMIT + + try: + # Search using the first vector (assuming this is the intended behavior) + query_vector = vectors[0] + + # Perform the search + query_response = self.index.query( + vector=query_vector, + top_k=limit, + include_metadata=True, + filter={"collection_name": collection_name_with_prefix}, + ) + + if not query_response.matches: + # Return empty result if no matches + return SearchResult( + ids=[[]], + documents=[[]], + metadatas=[[]], + distances=[[]], + ) + + # Convert to GetResult format + get_result = self._result_to_get_result(query_response.matches) + + # Calculate normalized distances based on metric + distances = [ + [ + self._normalize_distance(match.score) + for match in query_response.matches + ] + ] + + return SearchResult( + ids=get_result.ids, + documents=get_result.documents, + metadatas=get_result.metadatas, + distances=distances, + ) + except Exception as e: + log.error(f"Error searching in '{collection_name_with_prefix}': {e}") + return None + + def query( + self, collection_name: str, filter: Dict, limit: Optional[int] = None + ) -> Optional[GetResult]: + """Query vectors by metadata filter.""" + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + + if limit is None or limit <= 0: + limit = NO_LIMIT + + try: + # Create a zero vector for the dimension as Pinecone requires a vector + zero_vector = [0.0] * self.dimension + + # Combine user filter with collection_name + pinecone_filter = {"collection_name": collection_name_with_prefix} + if filter: + pinecone_filter.update(filter) + + # Perform metadata-only query + query_response = self.index.query( + vector=zero_vector, + filter=pinecone_filter, + top_k=limit, + include_metadata=True, + ) + + return self._result_to_get_result(query_response.matches) + + except Exception as e: + log.error(f"Error querying collection '{collection_name}': {e}") + return None + + def get(self, collection_name: str) -> Optional[GetResult]: + """Get all vectors in a collection.""" + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + + try: + # Use a zero vector for fetching all entries + zero_vector = [0.0] * self.dimension + + # Add filter to only get vectors for this collection + query_response = self.index.query( + vector=zero_vector, + top_k=NO_LIMIT, + include_metadata=True, + filter={"collection_name": collection_name_with_prefix}, + ) + + return self._result_to_get_result(query_response.matches) + + except Exception as e: + log.error(f"Error getting collection '{collection_name}': {e}") + return None + + def delete( + self, + collection_name: str, + ids: Optional[List[str]] = None, + filter: Optional[Dict] = None, + ) -> None: + """Delete vectors by IDs or filter.""" + collection_name_with_prefix = self._get_collection_name_with_prefix( + collection_name + ) + + try: + if ids: + # Delete by IDs (in batches for large deletions) + for i in range(0, len(ids), BATCH_SIZE): + batch_ids = ids[i : i + BATCH_SIZE] + # Note: When deleting by ID, we can't filter by collection_name + # This is a limitation of Pinecone - be careful with ID uniqueness + self.index.delete(ids=batch_ids) + log.debug( + f"Deleted batch of {len(batch_ids)} vectors by ID from '{collection_name_with_prefix}'" + ) + log.info( + f"Successfully deleted {len(ids)} vectors by ID from '{collection_name_with_prefix}'" + ) + + elif filter: + # Combine user filter with collection_name + pinecone_filter = {"collection_name": collection_name_with_prefix} + if filter: + pinecone_filter.update(filter) + # Delete by metadata filter + self.index.delete(filter=pinecone_filter) + log.info( + f"Successfully deleted vectors by filter from '{collection_name_with_prefix}'" + ) + + else: + log.warning("No ids or filter provided for delete operation") + + except Exception as e: + log.error(f"Error deleting from collection '{collection_name}': {e}") + raise + + def reset(self) -> None: + """Reset the database by deleting all collections.""" + try: + self.index.delete(delete_all=True) + log.info("All vectors successfully deleted from the index.") + except Exception as e: + log.error(f"Failed to reset Pinecone index: {e}") + raise diff --git a/backend/open_webui/retrieval/vector/dbs/qdrant.py b/backend/open_webui/retrieval/vector/dbs/qdrant.py index be0df6c6a..dfe297907 100644 --- a/backend/open_webui/retrieval/vector/dbs/qdrant.py +++ b/backend/open_webui/retrieval/vector/dbs/qdrant.py @@ -1,12 +1,24 @@ 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 +from open_webui.retrieval.vector.main import ( + VectorDBBase, + VectorItem, + SearchResult, + GetResult, +) +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 @@ -15,16 +27,34 @@ log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["RAG"]) -class QdrantClient: +class QdrantClient(VectorDBBase): def __init__(self): self.collection_prefix = "open-webui" self.QDRANT_URI = QDRANT_URI self.QDRANT_API_KEY = QDRANT_API_KEY - self.client = ( - Qclient(url=self.QDRANT_URI, api_key=self.QDRANT_API_KEY) - if self.QDRANT_URI - else None - ) + self.QDRANT_ON_DISK = QDRANT_ON_DISK + 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 = [] @@ -50,7 +80,9 @@ 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, ), ) diff --git a/backend/open_webui/retrieval/vector/main.py b/backend/open_webui/retrieval/vector/main.py index f0cf0c038..53f752f57 100644 --- a/backend/open_webui/retrieval/vector/main.py +++ b/backend/open_webui/retrieval/vector/main.py @@ -1,5 +1,6 @@ from pydantic import BaseModel -from typing import Optional, List, Any +from abc import ABC, abstractmethod +from typing import Any, Dict, List, Optional, Union class VectorItem(BaseModel): @@ -17,3 +18,69 @@ class GetResult(BaseModel): class SearchResult(GetResult): distances: Optional[List[List[float | int]]] + + +class VectorDBBase(ABC): + """ + Abstract base class for all vector database backends. + + Implementations of this class provide methods for collection management, + vector insertion, deletion, similarity search, and metadata filtering. + + Any custom vector database integration must inherit from this class and + implement all abstract methods. + """ + + @abstractmethod + def has_collection(self, collection_name: str) -> bool: + """Check if the collection exists in the vector DB.""" + pass + + @abstractmethod + def delete_collection(self, collection_name: str) -> None: + """Delete a collection from the vector DB.""" + pass + + @abstractmethod + def insert(self, collection_name: str, items: List[VectorItem]) -> None: + """Insert a list of vector items into a collection.""" + pass + + @abstractmethod + def upsert(self, collection_name: str, items: List[VectorItem]) -> None: + """Insert or update vector items in a collection.""" + pass + + @abstractmethod + def search( + self, collection_name: str, vectors: List[List[Union[float, int]]], limit: int + ) -> Optional[SearchResult]: + """Search for similar vectors in a collection.""" + pass + + @abstractmethod + def query( + self, collection_name: str, filter: Dict, limit: Optional[int] = None + ) -> Optional[GetResult]: + """Query vectors from a collection using metadata filter.""" + pass + + @abstractmethod + def get(self, collection_name: str) -> Optional[GetResult]: + """Retrieve all vectors from a collection.""" + pass + + @abstractmethod + def delete( + self, + collection_name: str, + ids: Optional[List[str]] = None, + filter: Optional[Dict] = None, + ) -> None: + """Delete vectors by ID or filter from a collection.""" + pass + + @abstractmethod + def reset(self) -> None: + """Reset the vector database by removing all collections or those matching a condition.""" + pass diff --git a/backend/open_webui/retrieval/web/external.py b/backend/open_webui/retrieval/web/external.py new file mode 100644 index 000000000..a5c8003e4 --- /dev/null +++ b/backend/open_webui/retrieval/web/external.py @@ -0,0 +1,47 @@ +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.post( + external_url, + headers={ + "User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot", + "Authorization": f"Bearer {external_api_key}", + }, + json={ + "query": query, + "count": count, + }, + ) + response.raise_for_status() + results = response.json() + if filter_list: + results = get_filtered_results(results, filter_list) + results = [ + SearchResult( + link=result.get("link"), + title=result.get("title"), + snippet=result.get("snippet"), + ) + 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 [] diff --git a/backend/open_webui/retrieval/web/firecrawl.py b/backend/open_webui/retrieval/web/firecrawl.py new file mode 100644 index 000000000..a85fc51fb --- /dev/null +++ b/backend/open_webui/retrieval/web/firecrawl.py @@ -0,0 +1,49 @@ +import logging +from typing import Optional, List +from urllib.parse import urljoin + +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_firecrawl( + firecrawl_url: str, + firecrawl_api_key: str, + query: str, + count: int, + filter_list: Optional[List[str]] = None, +) -> List[SearchResult]: + try: + firecrawl_search_url = urljoin(firecrawl_url, "/v1/search") + response = requests.post( + firecrawl_search_url, + headers={ + "User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot", + "Authorization": f"Bearer {firecrawl_api_key}", + }, + json={ + "query": query, + "limit": count, + }, + ) + response.raise_for_status() + results = response.json().get("data", []) + if filter_list: + results = get_filtered_results(results, filter_list) + results = [ + SearchResult( + link=result.get("url"), + title=result.get("title"), + snippet=result.get("description"), + ) + 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 [] diff --git a/backend/open_webui/retrieval/web/tavily.py b/backend/open_webui/retrieval/web/tavily.py index da70aa8e7..bfd102afa 100644 --- a/backend/open_webui/retrieval/web/tavily.py +++ b/backend/open_webui/retrieval/web/tavily.py @@ -2,7 +2,7 @@ import logging from typing import Optional import requests -from open_webui.retrieval.web.main import SearchResult +from open_webui.retrieval.web.main import SearchResult, get_filtered_results from open_webui.env import SRC_LOG_LEVELS log = logging.getLogger(__name__) @@ -21,18 +21,25 @@ def search_tavily( Args: api_key (str): A Tavily Search API key query (str): The query to search for + count (int): The maximum number of results to return Returns: list[SearchResult]: A list of search results """ url = "https://api.tavily.com/search" - data = {"query": query, "api_key": api_key} - response = requests.post(url, json=data) + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {api_key}", + } + data = {"query": query, "max_results": count} + response = requests.post(url, headers=headers, json=data) response.raise_for_status() json_response = response.json() - raw_search_results = json_response.get("results", []) + results = json_response.get("results", []) + if filter_list: + results = get_filtered_results(results, filter_list) return [ SearchResult( @@ -40,5 +47,5 @@ def search_tavily( title=result.get("title", ""), snippet=result.get("content"), ) - for result in raw_search_results[:count] + for result in results ] diff --git a/backend/open_webui/retrieval/web/utils.py b/backend/open_webui/retrieval/web/utils.py index 718cfe52f..78c962f15 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 @@ -167,7 +170,7 @@ class SafeFireCrawlLoader(BaseLoader, RateLimitMixin, URLProcessingMixin): continue_on_failure: bool = True, api_key: Optional[str] = None, api_url: Optional[str] = None, - mode: Literal["crawl", "scrape", "map"] = "crawl", + mode: Literal["crawl", "scrape", "map"] = "scrape", proxy: Optional[Dict[str, str]] = None, params: Optional[Dict] = None, ): @@ -225,7 +228,10 @@ class SafeFireCrawlLoader(BaseLoader, RateLimitMixin, URLProcessingMixin): mode=self.mode, params=self.params, ) - yield from loader.lazy_load() + for document in loader.lazy_load(): + if not document.metadata.get("source"): + document.metadata["source"] = document.metadata.get("sourceURL") + yield document except Exception as e: if self.continue_on_failure: log.exception(f"Error loading {url}: {e}") @@ -245,6 +251,8 @@ class SafeFireCrawlLoader(BaseLoader, RateLimitMixin, URLProcessingMixin): params=self.params, ) async for document in loader.alazy_load(): + if not document.metadata.get("source"): + document.metadata["source"] = document.metadata.get("sourceURL") yield document except Exception as e: if self.continue_on_failure: @@ -619,6 +627,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/retrieval/web/yacy.py b/backend/open_webui/retrieval/web/yacy.py new file mode 100644 index 000000000..8d75dfa6e --- /dev/null +++ b/backend/open_webui/retrieval/web/yacy.py @@ -0,0 +1,85 @@ +import logging +from typing import Optional + +import requests +from requests.auth import HTTPDigestAuth +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_yacy( + query_url: str, + username: Optional[str], + password: Optional[str], + query: str, + count: int, + filter_list: Optional[list[str]] = None, +) -> list[SearchResult]: + """ + Search a Yacy instance for a given query and return the results as a list of SearchResult objects. + + The function accepts username and password for authenticating to Yacy. + + Args: + query_url (str): The base URL of the Yacy server. + username (str): Optional YaCy username. + password (str): Optional YaCy password. + query (str): The search term or question to find in the Yacy database. + count (int): The maximum number of results to retrieve from the search. + + Returns: + list[SearchResult]: A list of SearchResults sorted by relevance score in descending order. + + Raise: + requests.exceptions.RequestException: If a request error occurs during the search process. + """ + + # Use authentication if either username or password is set + yacy_auth = None + if username or password: + yacy_auth = HTTPDigestAuth(username, password) + + params = { + "query": query, + "contentdom": "text", + "resource": "global", + "maximumRecords": count, + "nav": "none", + } + + # 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" + + log.debug(f"searching {query_url}") + + response = requests.get( + query_url, + auth=yacy_auth, + headers={ + "User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot", + "Accept": "text/html", + "Accept-Encoding": "gzip, deflate", + "Accept-Language": "en-US,en;q=0.5", + "Connection": "keep-alive", + }, + params=params, + ) + + response.raise_for_status() # Raise an exception for HTTP errors. + + json_response = response.json() + results = json_response.get("channels", [{}])[0].get("items", []) + sorted_results = sorted(results, key=lambda x: x.get("ranking", 0), reverse=True) + if filter_list: + sorted_results = get_filtered_results(sorted_results, filter_list) + return [ + SearchResult( + 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 da51d1ecf..e4d945dc1 100644 --- a/backend/open_webui/routers/audio.py +++ b/backend/open_webui/routers/audio.py @@ -150,7 +150,8 @@ class STTConfigForm(BaseModel): AZURE_API_KEY: str AZURE_REGION: str AZURE_LOCALES: str - + AZURE_BASE_URL: str + AZURE_MAX_SPEAKERS: str class AudioConfigUpdateForm(BaseModel): tts: TTSConfigForm @@ -181,6 +182,8 @@ async def get_audio_config(request: Request, user=Depends(get_admin_user)): "AZURE_API_KEY": request.app.state.config.AUDIO_STT_AZURE_API_KEY, "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, }, } @@ -210,6 +213,8 @@ async def update_audio_config( request.app.state.config.AUDIO_STT_AZURE_API_KEY = form_data.stt.AZURE_API_KEY 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 if request.app.state.config.STT_ENGINE == "": request.app.state.faster_whisper_model = set_faster_whisper_model( @@ -238,6 +243,8 @@ async def update_audio_config( "AZURE_API_KEY": request.app.state.config.AUDIO_STT_AZURE_API_KEY, "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, }, } @@ -641,6 +648,8 @@ def transcribe(request: Request, file_path): api_key = request.app.state.config.AUDIO_STT_AZURE_API_KEY region = request.app.state.config.AUDIO_STT_AZURE_REGION locales = request.app.state.config.AUDIO_STT_AZURE_LOCALES + base_url = request.app.state.config.AUDIO_STT_AZURE_BASE_URL + max_speakers = request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS # IF NO LOCALES, USE DEFAULTS if len(locales) < 2: @@ -664,7 +673,13 @@ def transcribe(request: Request, file_path): if not api_key or not region: raise HTTPException( status_code=400, - detail="Azure API key and region are required for Azure STT", + detail="Azure API key is required for Azure STT", + ) + + if not base_url and not region: + raise HTTPException( + status_code=400, + detail="Azure region or base url is required for Azure STT", ) r = None @@ -674,13 +689,14 @@ def transcribe(request: Request, file_path): "definition": json.dumps( { "locales": locales.split(","), - "diarization": {"maxSpeakers": 3, "enabled": True}, + "diarization": {"maxSpeakers": max_speakers, "enabled": True}, } if locales else {} ) } - url = 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/routers/auths.py b/backend/open_webui/routers/auths.py index 9c4d5cb9f..91057b90d 100644 --- a/backend/open_webui/routers/auths.py +++ b/backend/open_webui/routers/auths.py @@ -27,20 +27,24 @@ from open_webui.env import ( WEBUI_AUTH_TRUSTED_NAME_HEADER, WEBUI_AUTH_COOKIE_SAME_SITE, WEBUI_AUTH_COOKIE_SECURE, + WEBUI_AUTH_SIGNOUT_REDIRECT_URL, SRC_LOG_LEVELS, ) from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi.responses import RedirectResponse, Response from open_webui.config import OPENID_PROVIDER_URL, ENABLE_OAUTH_SIGNUP, ENABLE_LDAP from pydantic import BaseModel + from open_webui.utils.misc import parse_duration, validate_email_format from open_webui.utils.auth import ( + decode_token, create_api_key, create_token, get_admin_user, get_verified_user, get_current_user, get_password_hash, + get_http_authorization_cred, ) from open_webui.utils.webhook import post_webhook from open_webui.utils.access_control import get_permissions @@ -72,27 +76,29 @@ class SessionUserResponse(Token, UserResponse): async def get_session_user( request: Request, response: Response, user=Depends(get_current_user) ): - expires_delta = parse_duration(request.app.state.config.JWT_EXPIRES_IN) - expires_at = None - if expires_delta: - expires_at = int(time.time()) + int(expires_delta.total_seconds()) - token = create_token( - data={"id": user.id}, - expires_delta=expires_delta, - ) + auth_header = request.headers.get("Authorization") + auth_token = get_http_authorization_cred(auth_header) + token = auth_token.credentials + data = decode_token(token) - datetime_expires_at = ( - datetime.datetime.fromtimestamp(expires_at, datetime.timezone.utc) - if expires_at - else None - ) + expires_at = data.get("exp") + + if (expires_at is not None) and int(time.time()) > expires_at: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.INVALID_TOKEN, + ) # Set the cookie token response.set_cookie( key="token", value=token, - expires=datetime_expires_at, + expires=( + datetime.datetime.fromtimestamp(expires_at, datetime.timezone.utc) + if expires_at + else None + ), httponly=True, # Ensures the cookie is not accessible via JavaScript samesite=WEBUI_AUTH_COOKIE_SAME_SITE, secure=WEBUI_AUTH_COOKIE_SECURE, @@ -288,18 +294,30 @@ async def ldap_auth(request: Request, response: Response, form_data: LdapForm): user = Auths.authenticate_user_by_trusted_header(email) if user: + expires_delta = parse_duration(request.app.state.config.JWT_EXPIRES_IN) + expires_at = None + if expires_delta: + expires_at = int(time.time()) + int(expires_delta.total_seconds()) + token = create_token( data={"id": user.id}, - expires_delta=parse_duration( - request.app.state.config.JWT_EXPIRES_IN - ), + expires_delta=expires_delta, ) # Set the cookie token response.set_cookie( key="token", value=token, + expires=( + datetime.datetime.fromtimestamp( + expires_at, datetime.timezone.utc + ) + if expires_at + else None + ), httponly=True, # Ensures the cookie is not accessible via JavaScript + samesite=WEBUI_AUTH_COOKIE_SAME_SITE, + secure=WEBUI_AUTH_COOKIE_SECURE, ) user_permissions = get_permissions( @@ -309,6 +327,7 @@ async def ldap_auth(request: Request, response: Response, form_data: LdapForm): return { "token": token, "token_type": "Bearer", + "expires_at": expires_at, "id": user.id, "email": user.email, "name": user.name, @@ -566,6 +585,12 @@ async def signout(request: Request, response: Response): detail="Failed to sign out from the OpenID provider.", ) + if WEBUI_AUTH_SIGNOUT_REDIRECT_URL: + return RedirectResponse( + headers=response.headers, + url=WEBUI_AUTH_SIGNOUT_REDIRECT_URL, + ) + return {"status": True} @@ -664,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, } @@ -680,6 +706,7 @@ class AdminConfig(BaseModel): ENABLE_COMMUNITY_SHARING: bool ENABLE_MESSAGE_RATING: bool ENABLE_CHANNELS: bool + ENABLE_NOTES: bool ENABLE_USER_WEBHOOKS: bool @@ -700,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 @@ -724,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/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py index 5fd44ab9f..6f00dd4d7 100644 --- a/backend/open_webui/routers/chats.py +++ b/backend/open_webui/routers/chats.py @@ -638,8 +638,17 @@ async def archive_chat_by_id(id: str, user=Depends(get_verified_user)): @router.post("/{id}/share", response_model=Optional[ChatResponse]) -async def share_chat_by_id(id: str, user=Depends(get_verified_user)): +async def share_chat_by_id(request: Request, id: str, user=Depends(get_verified_user)): + if not has_permission( + user.id, "chat.share", request.app.state.config.USER_PERMISSIONS + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) + chat = Chats.get_chat_by_id_and_user_id(id, user.id) + if chat: if chat.share_id: shared_chat = Chats.update_shared_chat_by_chat_id(chat.id) diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index 8a2888d86..bc998dae8 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -19,6 +19,8 @@ from fastapi import ( from fastapi.responses import FileResponse, StreamingResponse from open_webui.constants import ERROR_MESSAGES from open_webui.env import SRC_LOG_LEVELS + +from open_webui.models.users import Users from open_webui.models.files import ( FileForm, FileModel, @@ -83,10 +85,12 @@ def upload_file( request: Request, file: UploadFile = File(...), user=Depends(get_verified_user), - file_metadata: dict = {}, + file_metadata: dict = None, process: bool = Query(True), ): log.info(f"file.content_type: {file.content_type}") + + file_metadata = file_metadata if file_metadata else {} try: unsanitized_filename = file.filename filename = os.path.basename(unsanitized_filename) @@ -95,7 +99,13 @@ def upload_file( id = str(uuid.uuid4()) name = filename filename = f"{id}_{filename}" - contents, file_path = Storage.upload_file(file.file, filename) + tags = { + "OpenWebUI-User-Email": user.email, + "OpenWebUI-User-Id": user.id, + "OpenWebUI-User-Name": user.name, + "OpenWebUI-File-Id": id, + } + contents, file_path = Storage.upload_file(file.file, filename, tags) file_item = Files.insert_new_file( user.id, @@ -129,7 +139,15 @@ def upload_file( ProcessFileForm(file_id=id, content=result.get("text", "")), user=user, ) - elif file.content_type not in ["image/png", "image/jpeg", "image/gif"]: + elif file.content_type not in [ + "image/png", + "image/jpeg", + "image/gif", + "video/mp4", + "video/ogg", + "video/quicktime", + "video/webm", + ]: process_file(request, ProcessFileForm(file_id=id), user=user) file_item = Files.get_file_by_id(id=id) @@ -173,7 +191,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 +233,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 @@ -431,6 +451,13 @@ async def get_html_file_content_by_id(id: str, user=Depends(get_verified_user)): detail=ERROR_MESSAGES.NOT_FOUND, ) + file_user = Users.get_user_by_id(file.user_id) + if not file_user.role == "admin": + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=ERROR_MESSAGES.NOT_FOUND, + ) + if ( file.user_id == user.id or user.role == "admin" diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index 275704f34..22fd8ac71 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -500,7 +500,11 @@ async def image_generations( if form_data.size else request.app.state.config.IMAGE_SIZE ), - "response_format": "b64_json", + **( + {"response_format": "b64_json"} + if "gpt-image-1" in request.app.state.config.IMAGE_GENERATION_MODEL + else {} + ), } # Use asyncio.to_thread for the requests.post call diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py index 15547afa7..920130858 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, @@ -178,10 +178,26 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us log.info(f"Starting reindexing for {len(knowledge_bases)} knowledge bases") - for knowledge_base in knowledge_bases: - try: - files = Files.get_files_by_ids(knowledge_base.data.get("file_ids", [])) + deleted_knowledge_bases = [] + for knowledge_base in knowledge_bases: + # -- Robust error handling for missing or invalid data + if not knowledge_base.data or not isinstance(knowledge_base.data, dict): + log.warning( + f"Knowledge base {knowledge_base.id} has no data or invalid data ({knowledge_base.data!r}). Deleting." + ) + try: + Knowledges.delete_knowledge_by_id(id=knowledge_base.id) + deleted_knowledge_bases.append(knowledge_base.id) + except Exception as e: + log.error( + f"Failed to delete invalid knowledge base {knowledge_base.id}: {e}" + ) + continue + + try: + file_ids = knowledge_base.data.get("file_ids", []) + files = Files.get_files_by_ids(file_ids) try: if VECTOR_DB_CLIENT.has_collection(collection_name=knowledge_base.id): VECTOR_DB_CLIENT.delete_collection( @@ -189,10 +205,7 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us ) except Exception as e: log.error(f"Error deleting collection {knowledge_base.id}: {str(e)}") - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail=f"Error deleting vector DB collection", - ) + continue # Skip, don't raise failed_files = [] for file in files: @@ -213,10 +226,8 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us except Exception as e: log.error(f"Error processing knowledge base {knowledge_base.id}: {str(e)}") - raise HTTPException( - status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, - detail=f"Error processing knowledge base", - ) + # Don't raise, just continue + continue if failed_files: log.warning( @@ -225,7 +236,9 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us for failed in failed_files: log.warning(f"File ID: {failed['file_id']}, Error: {failed['error']}") - log.info("Reindexing completed successfully") + log.info( + f"Reindexing completed. Deleted {len(deleted_knowledge_bases)} invalid knowledge bases: {deleted_knowledge_bases}" + ) return True @@ -235,7 +248,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 +264,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(), @@ -379,7 +392,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 +469,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 +551,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 +747,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 +755,6 @@ 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/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 775cd0446..b41a240a7 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() @@ -216,7 +219,8 @@ async def verify_connection( key = form_data.key async with aiohttp.ClientSession( - timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST) + trust_env=True, + timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST), ) as session: try: async with session.get( @@ -234,6 +238,7 @@ async def verify_connection( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) as r: if r.status != 200: detail = f"HTTP Error: {r.status}" @@ -1006,7 +1011,7 @@ class GenerateCompletionForm(BaseModel): prompt: str suffix: Optional[str] = None images: Optional[list[str]] = None - format: Optional[str] = None + format: Optional[Union[dict, str]] = None options: Optional[dict] = None system: Optional[str] = None template: Optional[str] = None @@ -1482,7 +1487,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: @@ -1497,7 +1504,8 @@ async def download_file_stream( if done: file.seek(0) - hashed = calculate_sha256(file) + chunk_size = 1024 * 1024 * 2 + hashed = calculate_sha256(file, chunk_size) file.seek(0) url = f"{ollama_url}/api/blobs/sha256:{hashed}" diff --git a/backend/open_webui/routers/openai.py b/backend/open_webui/routers/openai.py index 0310014cf..02a81209c 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: @@ -92,20 +94,19 @@ async def cleanup_response( await session.close() -def openai_o1_o3_handler(payload): +def openai_o_series_handler(payload): """ - Handle o1, o3 specific parameters + Handle "o" series specific parameters """ if "max_tokens" in payload: - # Remove "max_tokens" from the payload + # Convert "max_tokens" to "max_completion_tokens" for all o-series models payload["max_completion_tokens"] = payload["max_tokens"] del payload["max_tokens"] - # Fix: o1 and o3 do not support the "system" role directly. - # For older models like "o1-mini" or "o1-preview", use role "user". - # For newer o1/o3 models, replace "system" with "developer". + # Handle system role conversion based on model type if payload["messages"][0]["role"] == "system": model_lower = payload["model"].lower() + # Legacy models use "user" role instead of "system" if model_lower.startswith("o1-mini") or model_lower.startswith("o1-preview"): payload["messages"][0]["role"] = "user" else: @@ -462,7 +463,8 @@ async def get_models( r = None async with aiohttp.ClientSession( - timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST) + trust_env=True, + timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST), ) as session: try: async with session.get( @@ -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 @@ -542,7 +545,8 @@ async def verify_connection( key = form_data.key async with aiohttp.ClientSession( - timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST) + trust_env=True, + timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST), ) as session: try: async with session.get( @@ -561,6 +565,7 @@ async def verify_connection( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) as r: if r.status != 200: # Extract response error details if available @@ -666,10 +671,10 @@ async def generate_chat_completion( url = request.app.state.config.OPENAI_API_BASE_URLS[idx] key = request.app.state.config.OPENAI_API_KEYS[idx] - # Fix: o1,o3 does not support the "max_tokens" parameter, Modify "max_tokens" to "max_completion_tokens" - is_o1_o3 = payload["model"].lower().startswith(("o1", "o3-")) - if is_o1_o3: - payload = openai_o1_o3_handler(payload) + # Check if model is from "o" series + is_o_series = payload["model"].lower().startswith(("o1", "o3", "o4")) + if is_o_series: + payload = openai_o_series_handler(payload) elif "api.openai.com" not in url: # Remove "max_completion_tokens" from the payload for backward compatibility if "max_completion_tokens" in payload: @@ -723,6 +728,7 @@ async def generate_chat_completion( else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) # Check if response is SSE @@ -802,6 +808,7 @@ async def proxy(path: str, request: Request, user=Depends(get_verified_user)): else {} ), }, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) r.raise_for_status() diff --git a/backend/open_webui/routers/pipelines.py b/backend/open_webui/routers/pipelines.py index 10c8e9b2e..f14002502 100644 --- a/backend/open_webui/routers/pipelines.py +++ b/backend/open_webui/routers/pipelines.py @@ -66,7 +66,7 @@ async def process_pipeline_inlet_filter(request, payload, user, models): if "pipeline" in model: sorted_filters.append(model) - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(trust_env=True) as session: for filter in sorted_filters: urlIdx = filter.get("urlIdx") if urlIdx is None: @@ -115,7 +115,7 @@ async def process_pipeline_outlet_filter(request, payload, user, models): if "pipeline" in model: sorted_filters = [model] + sorted_filters - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(trust_env=True) as session: for filter in sorted_filters: urlIdx = filter.get("urlIdx") if urlIdx is None: diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 13f012483..36897cdea 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -53,6 +53,7 @@ from open_webui.retrieval.web.jina_search import search_jina from open_webui.retrieval.web.searchapi import search_searchapi from open_webui.retrieval.web.serpapi import search_serpapi from open_webui.retrieval.web.searxng import search_searxng +from open_webui.retrieval.web.yacy import search_yacy from open_webui.retrieval.web.serper import search_serper from open_webui.retrieval.web.serply import search_serply from open_webui.retrieval.web.serpstack import search_serpstack @@ -61,6 +62,8 @@ 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.firecrawl import search_firecrawl +from open_webui.retrieval.web.external import search_external from open_webui.retrieval.utils import ( get_embedding_function, @@ -90,7 +93,12 @@ from open_webui.env import ( SRC_LOG_LEVELS, DEVICE_TYPE, DOCKER, + SENTENCE_TRANSFORMERS_BACKEND, + SENTENCE_TRANSFORMERS_MODEL_KWARGS, + SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND, + SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS, ) + from open_webui.constants import ERROR_MESSAGES log = logging.getLogger(__name__) @@ -117,6 +125,8 @@ def get_ef( get_model_path(embedding_model, auto_update), device=DEVICE_TYPE, trust_remote_code=RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE, + backend=SENTENCE_TRANSFORMERS_BACKEND, + model_kwargs=SENTENCE_TRANSFORMERS_MODEL_KWARGS, ) except Exception as e: log.debug(f"Error loading SentenceTransformer: {e}") @@ -150,6 +160,8 @@ def get_rf( get_model_path(reranking_model, auto_update), device=DEVICE_TYPE, trust_remote_code=RAG_RERANKING_MODEL_TRUST_REMOTE_CODE, + backend=SENTENCE_TRANSFORMERS_CROSS_ENCODER_BACKEND, + model_kwargs=SENTENCE_TRANSFORMERS_CROSS_ENCODER_MODEL_KWARGS, ) except Exception as e: log.error(f"CrossEncoder: {e}") @@ -389,6 +401,9 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)): "WEB_SEARCH_DOMAIN_FILTER_LIST": request.app.state.config.WEB_SEARCH_DOMAIN_FILTER_LIST, "BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL": request.app.state.config.BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL, "SEARXNG_QUERY_URL": request.app.state.config.SEARXNG_QUERY_URL, + "YACY_QUERY_URL": request.app.state.config.YACY_QUERY_URL, + "YACY_USERNAME": request.app.state.config.YACY_USERNAME, + "YACY_PASSWORD": request.app.state.config.YACY_PASSWORD, "GOOGLE_PSE_API_KEY": request.app.state.config.GOOGLE_PSE_API_KEY, "GOOGLE_PSE_ENGINE_ID": request.app.state.config.GOOGLE_PSE_ENGINE_ID, "BRAVE_SEARCH_API_KEY": request.app.state.config.BRAVE_SEARCH_API_KEY, @@ -418,6 +433,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, @@ -434,6 +453,9 @@ class WebConfig(BaseModel): WEB_SEARCH_DOMAIN_FILTER_LIST: Optional[List[str]] = [] BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL: Optional[bool] = None SEARXNG_QUERY_URL: Optional[str] = None + YACY_QUERY_URL: Optional[str] = None + YACY_USERNAME: Optional[str] = None + YACY_PASSWORD: Optional[str] = None GOOGLE_PSE_API_KEY: Optional[str] = None GOOGLE_PSE_ENGINE_ID: Optional[str] = None BRAVE_SEARCH_API_KEY: Optional[str] = None @@ -463,6 +485,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 @@ -651,6 +677,9 @@ async def update_rag_config( form_data.web.BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL ) request.app.state.config.SEARXNG_QUERY_URL = form_data.web.SEARXNG_QUERY_URL + request.app.state.config.YACY_QUERY_URL = form_data.web.YACY_QUERY_URL + request.app.state.config.YACY_USERNAME = form_data.web.YACY_USERNAME + request.app.state.config.YACY_PASSWORD = form_data.web.YACY_PASSWORD request.app.state.config.GOOGLE_PSE_API_KEY = form_data.web.GOOGLE_PSE_API_KEY request.app.state.config.GOOGLE_PSE_ENGINE_ID = ( form_data.web.GOOGLE_PSE_ENGINE_ID @@ -697,6 +726,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 ) @@ -749,6 +790,9 @@ async def update_rag_config( "WEB_SEARCH_DOMAIN_FILTER_LIST": request.app.state.config.WEB_SEARCH_DOMAIN_FILTER_LIST, "BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL": request.app.state.config.BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL, "SEARXNG_QUERY_URL": request.app.state.config.SEARXNG_QUERY_URL, + "YACY_QUERY_URL": request.app.state.config.YACY_QUERY_URL, + "YACY_USERNAME": request.app.state.config.YACY_USERNAME, + "YACY_PASSWORD": request.app.state.config.YACY_PASSWORD, "GOOGLE_PSE_API_KEY": request.app.state.config.GOOGLE_PSE_API_KEY, "GOOGLE_PSE_ENGINE_ID": request.app.state.config.GOOGLE_PSE_ENGINE_ID, "BRAVE_SEARCH_API_KEY": request.app.state.config.BRAVE_SEARCH_API_KEY, @@ -778,6 +822,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, @@ -1266,6 +1314,7 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]: """Search the web using a search engine and return the results as a list of SearchResult objects. Will look for a search engine API key in environment variables in the following order: - SEARXNG_QUERY_URL + - YACY_QUERY_URL + YACY_USERNAME + YACY_PASSWORD - GOOGLE_PSE_API_KEY + GOOGLE_PSE_ENGINE_ID - BRAVE_SEARCH_API_KEY - KAGI_SEARCH_API_KEY @@ -1295,6 +1344,18 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]: ) else: raise Exception("No SEARXNG_QUERY_URL found in environment variables") + elif engine == "yacy": + if request.app.state.config.YACY_QUERY_URL: + return search_yacy( + request.app.state.config.YACY_QUERY_URL, + request.app.state.config.YACY_USERNAME, + request.app.state.config.YACY_PASSWORD, + query, + request.app.state.config.WEB_SEARCH_RESULT_COUNT, + request.app.state.config.WEB_SEARCH_DOMAIN_FILTER_LIST, + ) + else: + raise Exception("No YACY_QUERY_URL found in environment variables") elif engine == "google_pse": if ( request.app.state.config.GOOGLE_PSE_API_KEY @@ -1465,6 +1526,22 @@ 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 == "firecrawl": + return search_firecrawl( + request.app.state.config.FIRECRAWL_API_BASE_URL, + request.app.state.config.FIRECRAWL_API_KEY, + query, + request.app.state.config.WEB_SEARCH_RESULT_COUNT, + request.app.state.config.WEB_SEARCH_DOMAIN_FILTER_LIST, + ) + 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") @@ -1477,8 +1554,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) @@ -1500,8 +1580,8 @@ async def process_web_search( ) docs = await loader.aload() urls = [ - doc.metadata["source"] for doc in docs - ] # only keep URLs which could be retrieved + doc.metadata.get("source") for doc in docs if doc.metadata.get("source") + ] # only keep URLs if request.app.state.config.BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL: return { @@ -1521,19 +1601,22 @@ async def process_web_search( collection_names = [] for doc_idx, doc in enumerate(docs): if doc and doc.page_content: - collection_name = f"web-search-{calculate_sha256_string(form_data.query + '-' + urls[doc_idx])}"[ - :63 - ] + try: + collection_name = f"web-search-{calculate_sha256_string(form_data.query + '-' + urls[doc_idx])}"[ + :63 + ] - collection_names.append(collection_name) - await run_in_threadpool( - save_docs_to_vector_db, - request, - [doc], - collection_name, - overwrite=True, - user=user, - ) + collection_names.append(collection_name) + await run_in_threadpool( + save_docs_to_vector_db, + request, + [doc], + collection_name, + overwrite=True, + user=user, + ) + except Exception as e: + log.debug(f"error saving doc {doc_idx}: {e}") return { "status": True, diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index a9ac34e2f..0c348f51e 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -6,6 +6,7 @@ from open_webui.models.groups import Groups from open_webui.models.chats import Chats from open_webui.models.users import ( UserModel, + UserListResponse, UserRoleUpdateForm, Users, UserSettings, @@ -33,13 +34,38 @@ router = APIRouter() ############################ -@router.get("/", response_model=list[UserModel]) +PAGE_ITEM_COUNT = 10 + + +@router.get("/", response_model=UserListResponse) async def get_users( - skip: Optional[int] = None, - limit: Optional[int] = None, + query: Optional[str] = None, + order_by: Optional[str] = None, + direction: Optional[str] = None, + page: Optional[int] = 1, user=Depends(get_admin_user), ): - return Users.get_users(skip, limit) + limit = PAGE_ITEM_COUNT + + page = max(1, page) + skip = (page - 1) * limit + + filter = {} + if query: + filter["query"] = query + if order_by: + filter["order_by"] = order_by + if direction: + filter["direction"] = direction + + return Users.get_users(filter=filter, skip=skip, limit=limit) + + +@router.get("/all", response_model=UserListResponse) +async def get_all_users( + user=Depends(get_admin_user), +): + return Users.get_users() ############################ @@ -88,6 +114,8 @@ class ChatPermissions(BaseModel): file_upload: bool = True delete: bool = True edit: bool = True + share: bool = True + export: bool = True stt: bool = True tts: bool = True call: bool = True @@ -288,6 +316,21 @@ 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: @@ -335,6 +378,21 @@ 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 +404,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, diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 282f4db95..3d81a4e1e 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -192,6 +192,9 @@ async def connect(sid, environ, auth): # print(f"user {user.name}({user.id}) connected with session ID {sid}") await sio.emit("user-list", {"user_ids": list(USER_POOL.keys())}) await sio.emit("usage", {"models": get_models_in_use()}) + return True + + return False @sio.on("user-join") @@ -314,16 +317,18 @@ def get_event_emitter(request_info, update_db=True): ) ) - for session_id in session_ids: - await 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, - ) + 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) if update_db: if "type" in event_data and event_data["type"] == "status": diff --git a/backend/open_webui/storage/provider.py b/backend/open_webui/storage/provider.py index c5c0056cc..17d7f5ab5 100644 --- a/backend/open_webui/storage/provider.py +++ b/backend/open_webui/storage/provider.py @@ -3,7 +3,7 @@ import shutil import json import logging from abc import ABC, abstractmethod -from typing import BinaryIO, Tuple +from typing import BinaryIO, Tuple, Dict import boto3 from botocore.config import Config @@ -44,7 +44,9 @@ class StorageProvider(ABC): pass @abstractmethod - def upload_file(self, file: BinaryIO, filename: str) -> Tuple[bytes, str]: + def upload_file( + self, file: BinaryIO, filename: str, tags: Dict[str, str] + ) -> Tuple[bytes, str]: pass @abstractmethod @@ -58,7 +60,9 @@ class StorageProvider(ABC): class LocalStorageProvider(StorageProvider): @staticmethod - def upload_file(file: BinaryIO, filename: str) -> Tuple[bytes, str]: + def upload_file( + file: BinaryIO, filename: str, tags: Dict[str, str] + ) -> Tuple[bytes, str]: contents = file.read() if not contents: raise ValueError(ERROR_MESSAGES.EMPTY_CONTENT) @@ -131,12 +135,20 @@ class S3StorageProvider(StorageProvider): self.bucket_name = S3_BUCKET_NAME self.key_prefix = S3_KEY_PREFIX if S3_KEY_PREFIX else "" - def upload_file(self, file: BinaryIO, filename: str) -> Tuple[bytes, str]: + def upload_file( + self, file: BinaryIO, filename: str, tags: Dict[str, str] + ) -> Tuple[bytes, str]: """Handles uploading of the file to S3 storage.""" - _, file_path = LocalStorageProvider.upload_file(file, filename) + _, file_path = LocalStorageProvider.upload_file(file, filename, tags) + tagging = {"TagSet": [{"Key": k, "Value": v} for k, v in tags.items()]} try: s3_key = os.path.join(self.key_prefix, filename) self.s3_client.upload_file(file_path, self.bucket_name, s3_key) + self.s3_client.put_object_tagging( + Bucket=self.bucket_name, + Key=s3_key, + Tagging=tagging, + ) return ( open(file_path, "rb").read(), "s3://" + self.bucket_name + "/" + s3_key, @@ -207,9 +219,11 @@ class GCSStorageProvider(StorageProvider): self.gcs_client = storage.Client() self.bucket = self.gcs_client.bucket(GCS_BUCKET_NAME) - def upload_file(self, file: BinaryIO, filename: str) -> Tuple[bytes, str]: + def upload_file( + self, file: BinaryIO, filename: str, tags: Dict[str, str] + ) -> Tuple[bytes, str]: """Handles uploading of the file to GCS storage.""" - contents, file_path = LocalStorageProvider.upload_file(file, filename) + contents, file_path = LocalStorageProvider.upload_file(file, filename, tags) try: blob = self.bucket.blob(filename) blob.upload_from_filename(file_path) @@ -277,9 +291,11 @@ class AzureStorageProvider(StorageProvider): self.container_name ) - def upload_file(self, file: BinaryIO, filename: str) -> Tuple[bytes, str]: + def upload_file( + self, file: BinaryIO, filename: str, tags: Dict[str, str] + ) -> Tuple[bytes, str]: """Handles uploading of the file to Azure Blob Storage.""" - contents, file_path = LocalStorageProvider.upload_file(file, filename) + contents, file_path = LocalStorageProvider.upload_file(file, filename, tags) try: blob_client = self.container_client.get_blob_client(filename) blob_client.upload_blob(contents, overwrite=True) diff --git a/backend/open_webui/utils/audit.py b/backend/open_webui/utils/audit.py index 2d7ceabcb..8193907d2 100644 --- a/backend/open_webui/utils/audit.py +++ b/backend/open_webui/utils/audit.py @@ -37,7 +37,7 @@ if TYPE_CHECKING: class AuditLogEntry: # `Metadata` audit level properties id: str - user: dict[str, Any] + user: Optional[dict[str, Any]] audit_level: str verb: str request_uri: str @@ -190,21 +190,40 @@ class AuditLoggingMiddleware: finally: await self._log_audit_entry(request, context) - async def _get_authenticated_user(self, request: Request) -> UserModel: - + async def _get_authenticated_user(self, request: Request) -> Optional[UserModel]: auth_header = request.headers.get("Authorization") - assert auth_header - user = get_current_user(request, None, get_http_authorization_cred(auth_header)) - return user + try: + user = get_current_user( + request, None, get_http_authorization_cred(auth_header) + ) + return user + except Exception as e: + logger.debug(f"Failed to get authenticated user: {str(e)}") + + return None def _should_skip_auditing(self, request: Request) -> bool: if ( request.method not in {"POST", "PUT", "PATCH", "DELETE"} or AUDIT_LOG_LEVEL == "NONE" - or not request.headers.get("authorization") ): return True + + ALWAYS_LOG_ENDPOINTS = { + "/api/v1/auths/signin", + "/api/v1/auths/signout", + "/api/v1/auths/signup", + } + path = request.url.path.lower() + for endpoint in ALWAYS_LOG_ENDPOINTS: + if path.startswith(endpoint): + return False # Do NOT skip logging for auth endpoints + + # Skip logging if the request is not authenticated + if not request.headers.get("authorization"): + return True + # match either /api//...(for the endpoint /api/chat case) or /api/v1//... pattern = re.compile( r"^/api(?:/v1)?/(" + "|".join(self.excluded_paths) + r")\b" @@ -231,17 +250,32 @@ class AuditLoggingMiddleware: try: user = await self._get_authenticated_user(request) + user = ( + user.model_dump(include={"id", "name", "email", "role"}) if user else {} + ) + + request_body = context.request_body.decode("utf-8", errors="replace") + response_body = context.response_body.decode("utf-8", errors="replace") + + # Redact sensitive information + if "password" in request_body: + request_body = re.sub( + r'"password":\s*"(.*?)"', + '"password": "********"', + request_body, + ) + entry = AuditLogEntry( id=str(uuid.uuid4()), - user=user.model_dump(include={"id", "name", "email", "role"}), + user=user, audit_level=self.audit_level.value, verb=request.method, request_uri=str(request.url), response_status_code=context.metadata.get("response_status_code", None), source_ip=request.client.host if request.client else None, user_agent=request.headers.get("user-agent"), - request_object=context.request_body.decode("utf-8", errors="replace"), - response_object=context.response_body.decode("utf-8", errors="replace"), + request_object=request_body, + response_object=response_body, ) self.audit_logger.write(entry) diff --git a/backend/open_webui/utils/code_interpreter.py b/backend/open_webui/utils/code_interpreter.py index 312baff24..1ad5ee93c 100644 --- a/backend/open_webui/utils/code_interpreter.py +++ b/backend/open_webui/utils/code_interpreter.py @@ -50,7 +50,7 @@ class JupyterCodeExecuter: self.password = password self.timeout = timeout self.kernel_id = "" - self.session = aiohttp.ClientSession(base_url=self.base_url) + self.session = aiohttp.ClientSession(trust_env=True, base_url=self.base_url) self.params = {} self.result = ResultModel() diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 4070bc697..8cc2b2b77 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"]) @@ -1129,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) is None: + 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( @@ -1667,6 +1671,15 @@ async def process_chat_response( if current_response_tool_call is None: # Add the new tool call + delta_tool_call.setdefault( + "function", {} + ) + delta_tool_call[ + "function" + ].setdefault("name", "") + delta_tool_call[ + "function" + ].setdefault("arguments", "") response_tool_calls.append( delta_tool_call ) @@ -2211,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) is None: + 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( diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index 9ebe0e6dc..d526382c1 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -15,7 +15,7 @@ from starlette.responses import RedirectResponse from open_webui.models.auths import Auths from open_webui.models.users import Users -from open_webui.models.groups import Groups, GroupModel, GroupUpdateForm +from open_webui.models.groups import Groups, GroupModel, GroupUpdateForm, GroupForm from open_webui.config import ( DEFAULT_USER_ROLE, ENABLE_OAUTH_SIGNUP, @@ -23,6 +23,7 @@ from open_webui.config import ( OAUTH_PROVIDERS, ENABLE_OAUTH_ROLE_MANAGEMENT, ENABLE_OAUTH_GROUP_MANAGEMENT, + ENABLE_OAUTH_GROUP_CREATION, OAUTH_ROLES_CLAIM, OAUTH_GROUPS_CLAIM, OAUTH_EMAIL_CLAIM, @@ -57,6 +58,7 @@ auth_manager_config.ENABLE_OAUTH_SIGNUP = ENABLE_OAUTH_SIGNUP auth_manager_config.OAUTH_MERGE_ACCOUNTS_BY_EMAIL = OAUTH_MERGE_ACCOUNTS_BY_EMAIL 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_ROLES_CLAIM = OAUTH_ROLES_CLAIM auth_manager_config.OAUTH_GROUPS_CLAIM = OAUTH_GROUPS_CLAIM auth_manager_config.OAUTH_EMAIL_CLAIM = OAUTH_EMAIL_CLAIM @@ -152,6 +154,51 @@ class OAuthManager: user_current_groups: list[GroupModel] = Groups.get_groups_by_member_id(user.id) all_available_groups: list[GroupModel] = Groups.get_groups() + # Create groups if they don't exist and creation is enabled + if auth_manager_config.ENABLE_OAUTH_GROUP_CREATION: + log.debug("Checking for missing groups to create...") + all_group_names = {g.name for g in all_available_groups} + groups_created = False + # Determine creator ID: Prefer admin, fallback to current user if no admin exists + admin_user = Users.get_admin_user() + creator_id = admin_user.id if admin_user else user.id + log.debug(f"Using creator ID {creator_id} for potential group creation.") + + for group_name in user_oauth_groups: + if group_name not in all_group_names: + log.info( + f"Group '{group_name}' not found via OAuth claim. Creating group..." + ) + try: + new_group_form = GroupForm( + name=group_name, + description=f"Group '{group_name}' created automatically via OAuth.", + permissions=default_permissions, # Use default permissions from function args + user_ids=[], # Start with no users, user will be added later by subsequent logic + ) + # Use determined creator ID (admin or fallback to current user) + created_group = Groups.insert_new_group( + creator_id, new_group_form + ) + if created_group: + log.info( + f"Successfully created group '{group_name}' with ID {created_group.id} using creator ID {creator_id}" + ) + groups_created = True + # Add to local set to prevent duplicate creation attempts in this run + all_group_names.add(group_name) + else: + log.error( + f"Failed to create group '{group_name}' via OAuth." + ) + except Exception as e: + log.error(f"Error creating group '{group_name}' via OAuth: {e}") + + # Refresh the list of all available groups if any were created + if groups_created: + all_available_groups = Groups.get_groups() + log.debug("Refreshed list of all available groups after creation.") + log.debug(f"Oauth Groups claim: {oauth_claim}") log.debug(f"User oauth groups: {user_oauth_groups}") log.debug(f"User's current groups: {[g.name for g in user_current_groups]}") @@ -257,7 +304,7 @@ class OAuthManager: try: access_token = token.get("access_token") headers = {"Authorization": f"Bearer {access_token}"} - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(trust_env=True) as session: async with session.get( "https://api.github.com/user/emails", headers=headers ) as resp: @@ -339,7 +386,7 @@ class OAuthManager: get_kwargs["headers"] = { "Authorization": f"Bearer {access_token}", } - async with aiohttp.ClientSession() as session: + async with aiohttp.ClientSession(trust_env=True) as session: async with session.get( picture_url, **get_kwargs ) as resp: diff --git a/backend/open_webui/utils/plugin.py b/backend/open_webui/utils/plugin.py index d4e519601..9c2ee1bbd 100644 --- a/backend/open_webui/utils/plugin.py +++ b/backend/open_webui/utils/plugin.py @@ -157,7 +157,8 @@ def load_function_module_by_id(function_id, content=None): raise Exception("No Function class found in the module") except Exception as e: log.error(f"Error loading module: {function_id}: {e}") - del sys.modules[module_name] # Cleanup by removing the module in case of error + # Cleanup by removing the module in case of error + del sys.modules[module_name] Functions.update_function_by_id(function_id, {"is_active": False}) raise e @@ -182,3 +183,32 @@ def install_frontmatter_requirements(requirements: str): else: log.info("No requirements found in frontmatter.") + + +def install_tool_and_function_dependencies(): + """ + Install all dependencies for all admin tools and active functions. + + By first collecting all dependencies from the frontmatter of each tool and function, + and then installing them using pip. Duplicates or similar version specifications are + handled by pip as much as possible. + """ + function_list = Functions.get_functions(active_only=True) + tool_list = Tools.get_tools() + + all_dependencies = "" + try: + for function in function_list: + frontmatter = extract_frontmatter(replace_imports(function.content)) + if dependencies := frontmatter.get("requirements"): + all_dependencies += f"{dependencies}, " + for tool in tool_list: + # Only install requirements for admin tools + if tool.user.role == "admin": + frontmatter = extract_frontmatter(replace_imports(tool.content)) + if dependencies := frontmatter.get("requirements"): + all_dependencies += f"{dependencies}, " + + install_frontmatter_requirements(all_dependencies.strip(", ")) + except Exception as e: + log.error(f"Error installing requirements: {e}") diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index b5d916e1d..42df84f9e 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 @@ -276,8 +279,8 @@ def convert_function_to_pydantic_model(func: Callable) -> type[BaseModel]: docstring = func.__doc__ - description = parse_description(docstring) - function_descriptions = parse_docstring(docstring) + function_description = parse_description(docstring) + function_param_descriptions = parse_docstring(docstring) field_defs = {} for name, param in parameters.items(): @@ -285,15 +288,15 @@ def convert_function_to_pydantic_model(func: Callable) -> type[BaseModel]: type_hint = type_hints.get(name, Any) default_value = param.default if param.default is not param.empty else ... - description = function_descriptions.get(name, None) + param_description = function_param_descriptions.get(name, None) - if description: - field_defs[name] = type_hint, Field(default_value, description=description) + if param_description: + field_defs[name] = type_hint, Field(default_value, description=param_description) else: field_defs[name] = type_hint, default_value model = create_model(func.__name__, **field_defs) - model.__doc__ = description + model.__doc__ = function_description return model @@ -371,51 +374,64 @@ def convert_openapi_to_tool_payload(openapi_spec): for path, methods in openapi_spec.get("paths", {}).items(): for method, operation in methods.items(): - tool = { - "type": "function", - "name": operation.get("operationId"), - "description": operation.get( - "description", operation.get("summary", "No description available.") - ), - "parameters": {"type": "object", "properties": {}, "required": []}, - } - - # Extract path and query parameters - for param in operation.get("parameters", []): - param_name = param["name"] - param_schema = param.get("schema", {}) - tool["parameters"]["properties"][param_name] = { - "type": param_schema.get("type"), - "description": param_schema.get("description", ""), + if operation.get("operationId"): + tool = { + "type": "function", + "name": operation.get("operationId"), + "description": operation.get( + "description", + operation.get("summary", "No description available."), + ), + "parameters": {"type": "object", "properties": {}, "required": []}, } - if param.get("required"): - tool["parameters"]["required"].append(param_name) - # Extract and resolve requestBody if available - request_body = operation.get("requestBody") - if request_body: - content = request_body.get("content", {}) - json_schema = content.get("application/json", {}).get("schema") - if json_schema: - resolved_schema = resolve_schema( - json_schema, openapi_spec.get("components", {}) - ) - - if resolved_schema.get("properties"): - tool["parameters"]["properties"].update( - resolved_schema["properties"] + # Extract path and query parameters + 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'))}" ) - if "required" in resolved_schema: - tool["parameters"]["required"] = list( - set( - tool["parameters"]["required"] - + resolved_schema["required"] - ) - ) - elif resolved_schema.get("type") == "array": - tool["parameters"] = resolved_schema # special case for array + tool["parameters"]["properties"][param_name] = { + "type": param_schema.get("type"), + "description": description, + } + if param.get("required"): + tool["parameters"]["required"].append(param_name) - tool_payload.append(tool) + # Extract and resolve requestBody if available + request_body = operation.get("requestBody") + if request_body: + content = request_body.get("content", {}) + json_schema = content.get("application/json", {}).get("schema") + if json_schema: + resolved_schema = resolve_schema( + json_schema, openapi_spec.get("components", {}) + ) + + if resolved_schema.get("properties"): + tool["parameters"]["properties"].update( + resolved_schema["properties"] + ) + if "required" in resolved_schema: + tool["parameters"]["required"] = list( + set( + tool["parameters"]["required"] + + resolved_schema["required"] + ) + ) + elif resolved_schema.get("type") == "array": + tool["parameters"] = ( + resolved_schema # special case for array + ) + + tool_payload.append(tool) return tool_payload @@ -431,8 +447,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 +591,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}") diff --git a/backend/requirements.txt b/backend/requirements.txt index f0cf262ee..8b25308ab 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 @@ -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 @@ -49,11 +49,11 @@ 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 -sentence-transformers==3.3.1 +sentence-transformers==4.1.0 accelerate colbert-ai==0.2.21 einops==0.8.1 @@ -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 @@ -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 diff --git a/package-lock.json b/package-lock.json index c4f6948bd..06b6e369b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.5", + "version": "0.6.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.5", + "version": "0.6.6", "dependencies": { "@azure/msal-browser": "^4.5.0", "@codemirror/lang-javascript": "^6.2.2", @@ -18,8 +18,8 @@ "@pyscript/core": "^0.4.32", "@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/core": "^2.11.9", + "@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", @@ -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", @@ -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", @@ -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", @@ -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", @@ -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", @@ -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": { @@ -4995,9 +5111,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", @@ -9860,9 +9976,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 0a982196e..c12fbfb74 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.5", + "version": "0.6.6", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", @@ -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", @@ -61,8 +61,8 @@ "@pyscript/core": "^0.4.32", "@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/core": "^2.11.9", + "@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", @@ -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", @@ -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", diff --git a/pyproject.toml b/pyproject.toml index 8a48c90fa..7760b51bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,9 +58,10 @@ dependencies = [ "opensearch-py==2.8.0", "playwright==1.49.1", "elasticsearch==8.17.1", + "pinecone==6.0.2", "transformers", - "sentence-transformers==3.3.1", + "sentence-transformers==4.1.0", "accelerate", "colbert-ai==0.2.21", "einops==0.8.1", diff --git a/src/lib/apis/channels/index.ts b/src/lib/apis/channels/index.ts index f16b43505..cd46410c7 100644 --- a/src/lib/apis/channels/index.ts +++ b/src/lib/apis/channels/index.ts @@ -1,5 +1,4 @@ import { WEBUI_API_BASE_URL } from '$lib/constants'; -import { t } from 'i18next'; type ChannelForm = { name: string; diff --git a/src/lib/apis/users/index.ts b/src/lib/apis/users/index.ts index f479b130c..be82454c2 100644 --- a/src/lib/apis/users/index.ts +++ b/src/lib/apis/users/index.ts @@ -116,10 +116,33 @@ export const updateUserRole = async (token: string, id: string, role: string) => return res; }; -export const getUsers = async (token: string) => { +export const getUsers = async ( + token: string, + query?: string, + orderBy?: string, + direction?: string, + page = 1 +) => { let error = null; + let res = null; - const res = await fetch(`${WEBUI_API_BASE_URL}/users/`, { + let searchParams = new URLSearchParams(); + + searchParams.set('page', `${page}`); + + if (query) { + searchParams.set('query', query); + } + + if (orderBy) { + searchParams.set('order_by', orderBy); + } + + if (direction) { + searchParams.set('direction', direction); + } + + res = await fetch(`${WEBUI_API_BASE_URL}/users/?${searchParams.toString()}`, { method: 'GET', headers: { 'Content-Type': 'application/json', @@ -140,7 +163,35 @@ export const getUsers = async (token: string) => { throw error; } - return res ? res : []; + return res; +}; + +export const getAllUsers = async (token: string) => { + let error = null; + let res = null; + + res = await fetch(`${WEBUI_API_BASE_URL}/users/all`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}` + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + console.log(err); + error = err.detail; + return null; + }); + + if (error) { + throw error; + } + + return res; }; export const getUserSettings = async (token: string) => { 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/admin/Settings/Audio.svelte b/src/lib/components/admin/Settings/Audio.svelte index 52b874935..29c3569b5 100644 --- a/src/lib/components/admin/Settings/Audio.svelte +++ b/src/lib/components/admin/Settings/Audio.svelte @@ -42,6 +42,8 @@ let STT_AZURE_API_KEY = ''; let STT_AZURE_REGION = ''; let STT_AZURE_LOCALES = ''; + let STT_AZURE_BASE_URL = ''; + let STT_AZURE_MAX_SPEAKERS = ''; let STT_DEEPGRAM_API_KEY = ''; let STT_WHISPER_MODEL_LOADING = false; @@ -114,7 +116,9 @@ DEEPGRAM_API_KEY: STT_DEEPGRAM_API_KEY, AZURE_API_KEY: STT_AZURE_API_KEY, AZURE_REGION: STT_AZURE_REGION, - AZURE_LOCALES: STT_AZURE_LOCALES + AZURE_LOCALES: STT_AZURE_LOCALES, + AZURE_BASE_URL: STT_AZURE_BASE_URL, + AZURE_MAX_SPEAKERS: STT_AZURE_MAX_SPEAKERS } }); @@ -157,6 +161,8 @@ STT_AZURE_API_KEY = res.stt.AZURE_API_KEY; STT_AZURE_REGION = res.stt.AZURE_REGION; STT_AZURE_LOCALES = res.stt.AZURE_LOCALES; + STT_AZURE_BASE_URL = res.stt.AZURE_BASE_URL; + STT_AZURE_MAX_SPEAKERS = res.stt.AZURE_MAX_SPEAKERS; STT_DEEPGRAM_API_KEY = res.stt.DEEPGRAM_API_KEY; } @@ -287,6 +293,32 @@ />
+ + +
+
{$i18n.t('Base URL')}
+
+
+ +
+
+
+ +
+
{$i18n.t('Max Speakers')}
+
+
+ +
+
{:else if STT_ENGINE === ''} diff --git a/src/lib/components/admin/Settings/General.svelte b/src/lib/components/admin/Settings/General.svelte index 5c50bf311..3741168f8 100644 --- a/src/lib/components/admin/Settings/General.svelte +++ b/src/lib/components/admin/Settings/General.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index c7a1308a5..9edf20ca0 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -24,6 +24,8 @@ file_upload: true, delete: true, edit: true, + share: true, + export: true, stt: true, tts: true, call: true, @@ -276,6 +278,22 @@ +
+
+ {$i18n.t('Allow Chat Share')} +
+ + +
+ +
+
+ {$i18n.t('Allow Chat Export')} +
+ + +
+
{$i18n.t('Allow Speech to Text')} diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index 02fcdd717..738489c55 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -33,13 +33,17 @@ const i18n = getContext('i18n'); - export let users = []; - - let search = ''; - let selectedUser = null; - let page = 1; + let users = []; + let total = 0; + + let query = ''; + let orderBy = 'created_at'; // default sort key + let direction = 'asc'; // default sort order + + let selectedUser = null; + let showDeleteConfirmDialog = false; let showAddUserModal = false; @@ -53,7 +57,7 @@ }); if (res) { - users = await getUsers(localStorage.token); + getUserList(); } }; @@ -63,41 +67,44 @@ return null; }); if (res) { - users = await getUsers(localStorage.token); + getUserList(); } }; - let sortKey = 'created_at'; // default sort key - let sortOrder = 'asc'; // default sort order - - function setSortKey(key) { - if (sortKey === key) { - sortOrder = sortOrder === 'asc' ? 'desc' : 'asc'; + const setSortKey = (key) => { + if (orderBy === key) { + direction = direction === 'asc' ? 'desc' : 'asc'; } else { - sortKey = key; - sortOrder = 'asc'; + orderBy = key; + direction = 'asc'; } + }; + + const getUserList = async () => { + try { + const res = await getUsers(localStorage.token, query, orderBy, direction, page).catch( + (error) => { + toast.error(`${error}`); + return null; + } + ); + + if (res) { + users = res.users; + total = res.total; + } + } catch (err) { + console.error(err); + } + }; + + $: if (page) { + getUserList(); } - let filteredUsers; - - $: filteredUsers = users - .filter((user) => { - if (search === '') { - return true; - } else { - let name = user.name.toLowerCase(); - let email = user.email.toLowerCase(); - const query = search.toLowerCase(); - return name.includes(query) || email.includes(query); - } - }) - .sort((a, b) => { - if (a[sortKey] < b[sortKey]) return sortOrder === 'asc' ? -1 : 1; - if (a[sortKey] > b[sortKey]) return sortOrder === 'asc' ? 1 : -1; - return 0; - }) - .slice((page - 1) * 20, page * 20); + $: if (query !== null && orderBy && direction) { + getUserList(); + } { - users = await getUsers(localStorage.token); + getUserList(); }} /> {/key} @@ -121,7 +128,7 @@ { - users = await getUsers(localStorage.token); + getUserList(); }} /> @@ -184,7 +191,7 @@
@@ -223,9 +230,9 @@
{$i18n.t('Role')} - {#if sortKey === 'role'} + {#if orderBy === 'role'} {#if sortOrder === 'asc'} + >{#if direction === 'asc'} {:else} @@ -246,9 +253,9 @@
{$i18n.t('Name')} - {#if sortKey === 'name'} + {#if orderBy === 'name'} {#if sortOrder === 'asc'} + >{#if direction === 'asc'} {:else} @@ -269,9 +276,9 @@
{$i18n.t('Email')} - {#if sortKey === 'email'} + {#if orderBy === 'email'} {#if sortOrder === 'asc'} + >{#if direction === 'asc'} {:else} @@ -293,9 +300,9 @@
{$i18n.t('Last Active')} - {#if sortKey === 'last_active_at'} + {#if orderBy === 'last_active_at'} {#if sortOrder === 'asc'} + >{#if direction === 'asc'} {:else} @@ -315,9 +322,9 @@ >
{$i18n.t('Created at')} - {#if sortKey === 'created_at'} + {#if orderBy === 'created_at'} {#if sortOrder === 'asc'} + >{#if direction === 'asc'} {:else} @@ -339,9 +346,9 @@
{$i18n.t('OAuth ID')} - {#if sortKey === 'oauth_sub'} + {#if orderBy === 'oauth_sub'} {#if sortOrder === 'asc'} + >{#if direction === 'asc'} {:else} @@ -359,7 +366,7 @@ - {#each filteredUsers as user, userIdx} + {#each users as user, userIdx}
-
-
+
-
+
-
+
+
+
+
{$i18n.t('Email')}
-
-
-
{$i18n.t('Email')}
+
+ +
+
-
- +
+
{$i18n.t('Name')}
+ +
+ +
+
+ +
+
{$i18n.t('New Password')}
+ +
+ +
-
-
{$i18n.t('Name')}
- -
- -
+
+
- -
-
{$i18n.t('New Password')}
- -
- -
-
-
- -
-
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/Chat.svelte b/src/lib/components/chat/Chat.svelte index fb9faa247..b0f806452 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -236,9 +236,11 @@ await tick(); await tick(); - const messageElement = document.getElementById(`message-${message.id}`); - if (messageElement) { - messageElement.scrollIntoView({ behavior: 'smooth' }); + if ($settings?.scrollOnBranchChange ?? true) { + const messageElement = document.getElementById(`message-${message.id}`); + if (messageElement) { + messageElement.scrollIntoView({ behavior: 'smooth' }); + } } await tick(); 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/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index ca6487cf5..d31861459 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -395,39 +395,37 @@
- {#if atSelectedModel !== undefined || selectedToolIds.length > 0 || webSearchEnabled || ($settings?.webSearch ?? false) === 'always' || imageGenerationEnabled || codeInterpreterEnabled} + {#if atSelectedModel !== undefined}
- {#if atSelectedModel !== undefined} -
-
- model profile model.id === atSelectedModel.id)?.info?.meta - ?.profile_image_url ?? - ($i18n.language === 'dg-DG' - ? `/doge.png` - : `${WEBUI_BASE_URL}/static/favicon.png`)} - /> -
- Talking to {atSelectedModel.name} -
-
-
- +
+
+ model profile model.id === atSelectedModel.id)?.info?.meta + ?.profile_image_url ?? + ($i18n.language === 'dg-DG' + ? `/doge.png` + : `${WEBUI_BASE_URL}/static/favicon.png`)} + /> +
+ Talking to {atSelectedModel.name}
- {/if} +
+ +
+
{/if} @@ -1063,9 +1061,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/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/chat/MessageInput/InputMenu.svelte b/src/lib/components/chat/MessageInput/InputMenu.svelte index 27fe2cde2..2447c3aa5 100644 --- a/src/lib/components/chat/MessageInput/InputMenu.svelte +++ b/src/lib/components/chat/MessageInput/InputMenu.svelte @@ -146,7 +146,7 @@ {/if} { - 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/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); diff --git a/src/lib/components/chat/Messages/CitationsModal.svelte b/src/lib/components/chat/Messages/CitationsModal.svelte index 174d80c4f..35a5594f1 100644 --- a/src/lib/components/chat/Messages/CitationsModal.svelte +++ b/src/lib/components/chat/Messages/CitationsModal.svelte @@ -139,13 +139,16 @@ {percentage.toFixed(2)}% {/if} + + {#if typeof document?.distance === 'number'} + + ({(document?.distance ?? 0).toFixed(4)}) + + {/if} + {:else if typeof document?.distance === 'number'} ({(document?.distance ?? 0).toFixed(4)}) - {:else} - - {(document?.distance ?? 0).toFixed(4)} - {/if}
diff --git a/src/lib/components/chat/Messages/ContentRenderer.svelte b/src/lib/components/chat/Messages/ContentRenderer.svelte index d3a5812f7..74487255d 100644 --- a/src/lib/components/chat/Messages/ContentRenderer.svelte +++ b/src/lib/components/chat/Messages/ContentRenderer.svelte @@ -154,11 +154,11 @@ }, [])} {onSourceClick} {onTaskClick} - on:update={(e) => { - dispatch('update', e.detail); + onUpdate={(value) => { + dispatch('update', value); }} - on:code={(e) => { - const { lang, code } = e.detail; + onCode={(value) => { + const { lang, code } = value; if ( ($settings?.detectArtifacts ?? true) && diff --git a/src/lib/components/chat/Messages/Markdown.svelte b/src/lib/components/chat/Messages/Markdown.svelte index 472e53e59..a014500ef 100644 --- a/src/lib/components/chat/Messages/Markdown.svelte +++ b/src/lib/components/chat/Messages/Markdown.svelte @@ -7,9 +7,6 @@ import markedKatexExtension from '$lib/utils/marked/katex-extension'; import MarkdownTokens from './Markdown/MarkdownTokens.svelte'; - import { createEventDispatcher } from 'svelte'; - - const dispatch = createEventDispatcher(); export let id = ''; export let content; @@ -18,6 +15,9 @@ export let sourceIds = []; + export let onUpdate = () => {}; + export let onCode = () => {}; + export let onSourceClick = () => {}; export let onTaskClick = () => {}; @@ -40,17 +40,5 @@ {#key id} - { - dispatch('update', e.detail); - }} - on:code={(e) => { - dispatch('code', e.detail); - }} - /> + {/key} 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..20a9039ff --- /dev/null +++ b/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte @@ -0,0 +1,66 @@ + + +{#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(` + {:else} + {token.text} + {/if} +{/if} diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte index 7693e4cb4..4ca972136 100644 --- a/src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte +++ b/src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte @@ -13,6 +13,7 @@ import Image from '$lib/components/common/Image.svelte'; import KatexRenderer from './KatexRenderer.svelte'; import Source from './Source.svelte'; + import HtmlToken from './HTMLToken.svelte'; export let id: string; export let tokens: Token[]; @@ -23,16 +24,7 @@ {#if token.type === 'escape'} {unescapeHtml(token.text)} {:else if token.type === 'html'} - {@const html = DOMPurify.sanitize(token.text)} - {#if html && html.includes(' diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte index 790cf5be9..9f80fbc77 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(); } }} > @@ -293,7 +294,7 @@
- Merged Response + {$i18n.t('Merged Response')} {#if message.timestamp} { 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} diff --git a/src/lib/components/chat/Settings/About.svelte b/src/lib/components/chat/Settings/About.svelte index 56554cd56..56cf484b7 100644 --- a/src/lib/components/chat/Settings/About.svelte +++ b/src/lib/components/chat/Settings/About.svelte @@ -159,15 +159,21 @@ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. + list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +4. Notwithstanding any other provision of this License, and as a material condition of the rights granted herein, licensees are strictly prohibited from altering, removing, obscuring, or replacing any "Open WebUI" branding, including but not limited to the name, logo, or any visual, textual, or symbolic identifiers that distinguish the software and its interfaces, in any deployment or distribution, regardless of the number of users, except as explicitly set forth in Clauses 5 and 6 below. + +5. The branding restriction enumerated in Clause 4 shall not apply in the following limited circumstances: (i) deployments or distributions where the total number of end users (defined as individual natural persons with direct access to the application) does not exceed fifty (50) within any rolling thirty (30) day period; (ii) cases in which the licensee is an official contributor to the codebase—with a substantive code change successfully merged into the main branch of the official codebase maintained by the copyright holder—who has obtained specific prior written permission for branding adjustment from the copyright holder; or (iii) where the licensee has obtained a duly executed enterprise license expressly permitting such modification. For all other cases, any removal or alteration of the "Open WebUI" branding shall constitute a material breach of license. + +6. All code, modifications, or derivative works incorporated into this project prior to the incorporation of this branding clause remain licensed under the BSD 3-Clause License, and prior contributors retain all BSD-3 rights therein; if any such contributor requests the removal of their BSD-3-licensed code, the copyright holder will do so, and any replacement code will be licensed under the project's primary license then in effect. By contributing after this clause's adoption, you agree to the project's Contributor License Agreement (CLA) and to these updated terms for all new contributions. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE diff --git a/src/lib/components/chat/Settings/Account.svelte b/src/lib/components/chat/Settings/Account.svelte index db403252f..20866af3c 100644 --- a/src/lib/components/chat/Settings/Account.svelte +++ b/src/lib/components/chat/Settings/Account.svelte @@ -87,7 +87,7 @@
-
+
-
+
+ +
-
+ {#if ($config?.features?.enable_api_key ?? true) || $user?.role === 'admin'} +
+
{$i18n.t('API keys')}
+ +
-
-
{$i18n.t('API keys')}
- -
+ {#if showAPIKeys} +
+ {#if $user?.role === 'admin'} +
+
+
{$i18n.t('JWT Token')}
+
- {#if showAPIKeys} -
-
-
-
{$i18n.t('JWT Token')}
-
- -
- - - -
-
- {#if $config?.features?.enable_api_key ?? true} -
-
-
{$i18n.t('API Key')}
-
-
- {#if APIKey} - +
+ +
+
+ {/if} + + {#if $config?.features?.enable_api_key ?? true} +
+ {#if $user?.role === 'admin'} +
+
{$i18n.t('API Key')}
+
+ {/if} +
+ {#if APIKey} + - + + + + + {:else} + - - {:else} - - {/if} + {$i18n.t('Create new secret key')} + {/if} +
-
- {/if} -
+ {/if} +
+ {/if} {/if}
diff --git a/src/lib/components/chat/Settings/Chats.svelte b/src/lib/components/chat/Settings/Chats.svelte index e7c424b05..8a0ada02d 100644 --- a/src/lib/components/chat/Settings/Chats.svelte +++ b/src/lib/components/chat/Settings/Chats.svelte @@ -140,28 +140,31 @@
{$i18n.t('Import Chats')}
- + + {#if $user?.role === 'admin' || ($user.permissions?.chat?.export ?? true)} + + {/if}

diff --git a/src/lib/components/chat/Settings/Interface.svelte b/src/lib/components/chat/Settings/Interface.svelte index c6298173a..f78fa5593 100644 --- a/src/lib/components/chat/Settings/Interface.svelte +++ b/src/lib/components/chat/Settings/Interface.svelte @@ -1,6 +1,4 @@ diff --git a/src/lib/components/layout/Navbar/Menu.svelte b/src/lib/components/layout/Navbar/Menu.svelte index 73468a197..d0bed0808 100644 --- a/src/lib/components/layout/Navbar/Menu.svelte +++ b/src/lib/components/layout/Navbar/Menu.svelte @@ -18,7 +18,8 @@ showArtifacts, mobile, temporaryChatEnabled, - theme + theme, + user } from '$lib/stores'; import { flyAndScale } from '$lib/utils/transitions'; @@ -212,7 +213,7 @@ {/if} - {#if !$temporaryChatEnabled} + {#if !$temporaryChatEnabled && ($user?.role === 'admin' || ($user.permissions?.chat?.share ?? true))} - { - downloadJSONExport(); - }} - > -
{$i18n.t('Export chat (.json)')}
-
+ {#if $user?.role === 'admin' || ($user.permissions?.chat?.export ?? true)} + { + downloadJSONExport(); + }} + > +
{$i18n.t('Export chat (.json)')}
+
+ {/if} { 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/lib/components/layout/Sidebar/ChatMenu.svelte b/src/lib/components/layout/Sidebar/ChatMenu.svelte index 395b0ec3a..1f60e8bf3 100644 --- a/src/lib/components/layout/Sidebar/ChatMenu.svelte +++ b/src/lib/components/layout/Sidebar/ChatMenu.svelte @@ -26,7 +26,7 @@ getChatPinnedStatusById, toggleChatPinnedStatusById } from '$lib/apis/chats'; - import { chats, theme } from '$lib/stores'; + import { chats, theme, user } from '$lib/stores'; import { createMessagesList } from '$lib/utils'; import { downloadChatAsPDF } from '$lib/apis/utils'; import Download from '$lib/components/icons/Download.svelte'; @@ -233,15 +233,17 @@
{$i18n.t('Archive')}
- { - shareHandler(); - }} - > - -
{$i18n.t('Share')}
-
+ {#if $user?.role === 'admin' || ($user.permissions?.chat?.share ?? true)} + { + shareHandler(); + }} + > + +
{$i18n.t('Share')}
+
+ {/if} - { - downloadJSONExport(); - }} - > -
{$i18n.t('Export chat (.json)')}
-
+ {#if $user?.role === 'admin' || ($user.permissions?.chat?.export ?? true)} + { + downloadJSONExport(); + }} + > +
{$i18n.t('Export chat (.json)')}
+
+ {/if} + { diff --git a/src/lib/components/layout/Sidebar/RecursiveFolder.svelte b/src/lib/components/layout/Sidebar/RecursiveFolder.svelte index a7eb920d7..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; } @@ -374,8 +374,8 @@ buttonClassName="w-full" hide={(folders[folderId]?.childrenIds ?? []).length === 0 && (folders[folderId].items?.chats ?? []).length === 0} - on:change={(e) => { - dispatch('open', e.detail); + onChange={(state) => { + dispatch('open', state); }} > diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte index dc0e354ec..52e8d36ad 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte @@ -11,7 +11,12 @@ 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 +89,15 @@ let selectedFile = null; let selectedFileId = null; + let selectedFileContent = ''; + + // Add cache object + let fileContentCache = new Map(); $: if (selectedFileId) { const file = (knowledge?.files ?? []).find((file) => file.id === selectedFileId); if (file) { - file.data = file.data ?? { content: '' }; - selectedFile = file; + fileSelectHandler(file); } else { selectedFile = null; } @@ -394,7 +402,10 @@ const updateFileContentHandler = async () => { const fileId = selectedFile.id; - const content = selectedFile.data.content; + const content = selectedFileContent; + + // Clear the cache for this file since we're updating it + fileContentCache.delete(fileId); const res = updateFileDataContentById(localStorage.token, fileId, content).catch((e) => { toast.error(`${e}`); @@ -450,6 +461,29 @@ } }; + const fileSelectHandler = async (file) => { + try { + selectedFile = file; + + // Check cache first + if (fileContentCache.has(file.id)) { + selectedFileContent = fileContentCache.get(file.id); + return; + } + + const response = await getFileById(localStorage.token, file.id); + if (response) { + selectedFileContent = response.data.content; + // Cache the content + fileContentCache.set(file.id, 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 +762,7 @@ {#key selectedFile.id} @@ -747,7 +781,7 @@ { + onClose={() => { selectedFileId = null; }} > @@ -786,7 +820,7 @@ {#key selectedFile.id} diff --git a/src/lib/components/workspace/Models/ModelEditor.svelte b/src/lib/components/workspace/Models/ModelEditor.svelte index 4bd875ee2..1965db103 100644 --- a/src/lib/components/workspace/Models/ModelEditor.svelte +++ b/src/lib/components/workspace/Models/ModelEditor.svelte @@ -56,6 +56,7 @@ } } + let system = ''; let info = { id: '', base_model_id: null, @@ -155,6 +156,7 @@ } } + info.params.system = system.trim() === '' ? null : system; info.params.stop = params.stop ? params.stop.split(',').filter((s) => s.trim()) : null; Object.keys(info.params).forEach((key) => { if (info.params[key] === '' || info.params[key] === null) { @@ -201,6 +203,8 @@ } } + system = model?.params?.system ?? ''; + params = { ...params, ...model?.params }; params.stop = params?.stop ? (typeof params.stop === 'string' ? params.stop.split(',') : (params?.stop ?? [])).join( @@ -553,7 +557,7 @@ className=" text-sm w-full bg-transparent outline-hidden resize-none overflow-y-hidden " placeholder={`Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.`} rows={4} - bind:value={info.params.system} + bind:value={system} />
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/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 b391cfecd..76e41c76c 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "يستطيع حذف المحادثات", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "مساعد", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "أدخل عنوان URL ل Github Raw", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "(e.g. {{modelTag}}) أدخل الموديل تاق", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "(e.g. 50) أدخل عدد الخطوات", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "الرابط (e.g. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "URL (e.g. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "أدخل البريد الاكتروني", "Enter Your Full Name": "أدخل الاسم كامل", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "ادخل كلمة المرور", "Enter Your Role": "أدخل الصلاحيات", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "فشل في إنشاء مفتاح API.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "فشل في قراءة محتويات الحافظة", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "اتبعت التعليمات على أكمل وجه", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "نتيجة الردود المدمجة", "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)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "كلمة المرور الجديدة", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "البحث", "Search a model": "البحث عن موديل", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "أمس", "You": "انت", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "تم مشاركة هذه المحادثة", diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json index 264b6b868..6db3de4e0 100644 --- a/src/lib/i18n/locales/ar/translation.json +++ b/src/lib/i18n/locales/ar/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "السماح بحذف المحادثة", "Allow Chat Deletion": "السماح بحذف المحادثة", "Allow Chat Edit": "السماح بتعديل المحادثة", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "السماح بتحميل الملفات", "Allow Multiple Models in Chat": "", "Allow non-local voices": "السماح بالأصوات غير المحلية", @@ -76,6 +78,7 @@ "Always": "دائمًا", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "رائع", "an assistant": "مساعد", "Analyzed": "تم التحليل", @@ -414,6 +417,10 @@ "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 Firecrawl API Base URL": "", "Enter Firecrawl API Key": "", "Enter Github Raw URL": "أدخل عنوان URL ل Github Raw", @@ -431,6 +438,7 @@ "Enter Model ID": "أدخل معرف النموذج", "Enter model tag (e.g. {{modelTag}})": "(e.g. {{modelTag}}) أدخل الموديل تاق", "Enter Mojeek Search API Key": "أدخل مفتاح API لـ Mojeek Search", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "(e.g. 50) أدخل عدد الخطوات", "Enter Perplexity API Key": "أدخل مفتاح API لـ Perplexity", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "الرابط (e.g. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "URL (e.g. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "أدخل كلمة المرور الحالية", "Enter Your Email": "أدخل البريد الاكتروني", "Enter Your Full Name": "أدخل الاسم كامل", "Enter your message": "أدخل رسالتك", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "أدخل كلمة المرور الجديدة", "Enter Your Password": "ادخل كلمة المرور", "Enter Your Role": "أدخل الصلاحيات", @@ -511,10 +523,15 @@ "Export Tools": "تصدير الأدوات", "External": "", "External Models": "نماذج خارجية", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "فشل في إضافة الملف.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "فشل في إنشاء مفتاح API.", "Failed to fetch models": "فشل في جلب النماذج", + "Failed to load file content.": "", "Failed to read clipboard contents": "فشل في قراءة محتويات الحافظة", "Failed to save connections": "", "Failed to save models configuration": "فشل في حفظ إعدادات النماذج", @@ -544,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": "اتبعت التعليمات على أكمل وجه", @@ -565,7 +581,6 @@ "Function Name": "اسم الوظيفة", "Function updated successfully": "تم تحديث الوظيفة بنجاح", "Functions": "الوظائف", - "Functions allow arbitrary code execution": "الوظائف تتيح تنفيذ كود برمجي مخصص", "Functions allow arbitrary code execution.": "الوظائف تتيح تنفيذ كود برمجي مخصص.", "Functions imported successfully": "تم استيراد الوظائف بنجاح", "Gemini": "Gemini", @@ -718,8 +733,12 @@ "Memory deleted successfully": "تم حذف الذاكرة بنجاح", "Memory updated successfully": "تم تحديث الذاكرة بنجاح", "Merge Responses": "دمج الردود", + "Merged Response": "نتيجة الردود المدمجة", "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)": "", "Min P": "الحد الأدنى P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "كلمة المرور الجديدة", "new-channel": "قناة جديدة", "No content found": "لم يتم العثور على محتوى", + "No content found in file.": "", "No content to speak": "لا يوجد محتوى للتحدث عنه", "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": "لم يتم العثور على محرك استدلال يدعم الإدارة", @@ -939,7 +958,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 to bottom when switching between branches": "التمرير للأسفل عند التبديل بين الفروع", + "Scroll On Branch Change": "", "Search": "البحث", "Search a model": "البحث عن موديل", "Search Base": "قاعدة البحث", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "أمس", "You": "انت", "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.": "يمكنك تخصيص تفاعلك مع النماذج اللغوية عن طريق إضافة الذكريات باستخدام زر \"إدارة\" أدناه، مما يجعلها أكثر فائدة وتناسبًا لك.", "You cannot upload an empty file.": "لا يمكنك رفع ملف فارغ.", - "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": "تم مشاركة هذه المحادثة", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index f48faa24f..598df508e 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Разреши изтриване на чат", "Allow Chat Deletion": "Позволи Изтриване на Чат", "Allow Chat Edit": "Разреши редактиране на чат", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Разреши качване на файлове", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Разреши нелокални гласове", @@ -76,6 +78,7 @@ "Always": "Винаги", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Невероятно", "an assistant": "асистент", "Analyzed": "Анализирано", @@ -414,6 +417,10 @@ "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 Firecrawl API Base URL": "", "Enter Firecrawl API Key": "", "Enter Github Raw URL": "Въведете URL адрес на Github Raw", @@ -431,6 +438,7 @@ "Enter Model ID": "Въведете ID на модела", "Enter model tag (e.g. {{modelTag}})": "Въведете таг на модел (напр. {{modelTag}})", "Enter Mojeek Search API Key": "Въведете API ключ за Mojeek Search", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Въведете брой стъпки (напр. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter 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 your current password": "Въведете текущата си парола", "Enter Your Email": "Въведете имейл", "Enter Your Full Name": "Въведете вашето пълно име", "Enter your message": "Въведете съобщението си", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "Въведете новата си парола", "Enter Your Password": "Въведете вашата парола", "Enter Your Role": "Въведете вашата роля", @@ -511,10 +523,15 @@ "Export Tools": "Експортиране на инструменти", "External": "", "External Models": "Външни модели", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Неуспешно добавяне на файл.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Неуспешно създаване на API ключ.", "Failed to fetch models": "Неуспешно извличане на модели", + "Failed to load file content.": "", "Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда", "Failed to save connections": "", "Failed to save models configuration": "Неуспешно запазване на конфигурацията на моделите", @@ -544,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": "Следвайте инструкциите перфектно", @@ -565,7 +581,6 @@ "Function Name": "Име на функцията", "Function updated successfully": "Функцията е актуализирана успешно", "Functions": "Функции", - "Functions allow arbitrary code execution": "Функциите позволяват произволно изпълнение на код", "Functions allow arbitrary code execution.": "Функциите позволяват произволно изпълнение на код.", "Functions imported successfully": "Функциите са импортирани успешно", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Паметта е изтрита успешно", "Memory updated successfully": "Паметта е актуализирана успешно", "Merge Responses": "Обединяване на отговори", + "Merged Response": "Обединен отговор", "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)": "", "Min P": "Мин P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Нова парола", "new-channel": "нов-канал", "No content found": "Не е намерено съдържание", + "No content found in file.": "", "No content to speak": "Няма съдържание за изговаряне", "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": "Не е намерен механизъм за извод с поддръжка на управление", @@ -939,7 +958,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 to bottom when switching between branches": "Превъртане до дъното при превключване между клонове", + "Scroll On Branch Change": "", "Search": "Търси", "Search a model": "Търси модел", "Search Base": "База за търсене", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "вчера", "You": "Вие", "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 have no archived conversations.": "Нямате архивирани разговори.", "You have shared this chat": "Вие сте споделили този чат", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index e669ec3ec..6ec232952 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "চ্যাট ডিলিট করতে দিন", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "একটা এসিস্ট্যান্ট", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "গিটহাব কাঁচা URL লিখুন", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "মডেল ট্যাগ লিখুন (e.g. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "ধাপের সংখ্যা দিন (যেমন: 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "ইউআরএল দিন (যেমন http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "ইউআরএল দিন (যেমন http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "আপনার ইমেইল লিখুন", "Enter Your Full Name": "আপনার পূর্ণ নাম লিখুন", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "আপনার পাসওয়ার্ড লিখুন", "Enter Your Role": "আপনার রোল লিখুন", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "API Key তৈরি করা যায়নি।", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "নির্দেশাবলী নিখুঁতভাবে অনুসরণ করা হয়েছে", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "একত্রিত প্রতিক্রিয়া ফলাফল", "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.": "আপনার লিঙ্ক তৈরি করার পরে আপনার পাঠানো বার্তাগুলি শেয়ার করা হবে না। ইউআরএল ব্যবহারকারীরা শেয়ার করা চ্যাট দেখতে পারবেন।", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "নতুন পাসওয়ার্ড", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "অনুসন্ধান", "Search a model": "মডেল অনুসন্ধান করুন", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "৫০ শব্দের মধ্যে [topic or keyword] এর একটি সারসংক্ষেপ লিখুন।", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "আগামী", "You": "আপনি", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "আপনি এই চ্যাটটি শেয়ার করেছেন", diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json index d747d1d49..ff82f2b56 100644 --- a/src/lib/i18n/locales/bo-TB/translation.json +++ b/src/lib/i18n/locales/bo-TB/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "ཁ་བརྡ་བསུབ་པར་གནང་བ་སྤྲོད་པ།", "Allow Chat Deletion": "ཁ་བརྡ་བསུབ་པར་གནང་བ་སྤྲོད་པ།", "Allow Chat Edit": "ཁ་བརྡ་ཞུ་དག་ལ་གནང་བ་སྤྲོད་པ།", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "ཡིག་ཆ་སྤར་བར་གནང་བ་སྤྲོད་པ།", "Allow Multiple Models in Chat": "", "Allow non-local voices": "ས་གནས་མིན་པའི་སྐད་གདངས་ལ་གནང་བ་སྤྲོད་པ།", @@ -76,6 +78,7 @@ "Always": "རྟག་ཏུ།", "Always Collapse Code Blocks": "རྟག་ཏུ་ཀོཌ་གཏོགས་ཁོངས་བསྐུམ་པ།", "Always Expand Details": "རྟག་ཏུ་ཞིབ་ཕྲ་རྒྱ་བསྐྱེད་པ།", + "Always Play Notification Sound": "", "Amazing": "ངོ་མཚར་ཆེན།", "an assistant": "ལག་རོགས་པ།", "Analyzed": "དབྱེ་ཞིབ་བྱས་པ།", @@ -414,6 +417,10 @@ "Enter Document Intelligence Key": "ཡིག་ཆའི་རིག་ནུས་ལྡེ་མིག་འཇུག་པ།", "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": "", + "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 Github Raw URL": "Github Raw URL འཇུག་པ།", @@ -431,6 +438,7 @@ "Enter Model ID": "དཔེ་དབྱིབས་ཀྱི་ ID འཇུག་པ།", "Enter model tag (e.g. {{modelTag}})": "དཔེ་དབྱིབས་ཀྱི་རྟགས་འཇུག་པ། (དཔེར་ན། {{modelTag}})", "Enter Mojeek Search API Key": "Mojeek Search API ལྡེ་མིག་འཇུག་པ།", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "གོམ་གྲངས་འཇུག་པ། (དཔེར་ན། ༥༠)", "Enter Perplexity API Key": "Perplexity API ལྡེ་མིག་འཇུག་པ།", "Enter Playwright Timeout": "", @@ -467,11 +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 your current password": "ཁྱེད་ཀྱི་ད་ལྟའི་གསང་གྲངས་འཇུག་པ།", "Enter Your Email": "ཁྱེད་ཀྱི་ཡིག་ཟམ་འཇུག་པ།", "Enter Your Full Name": "ཁྱེད་ཀྱི་མིང་ཆ་ཚང་འཇུག་པ།", "Enter your message": "ཁྱེད་ཀྱི་འཕྲིན་འཇུག་པ།", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "ཁྱེད་ཀྱི་གསང་གྲངས་གསར་པ་འཇུག་པ།", "Enter Your Password": "ཁྱེད་ཀྱི་གསང་གྲངས་འཇུག་པ།", "Enter Your Role": "ཁྱེད་ཀྱི་གནས་ཚད་འཇུག་པ།", @@ -511,10 +523,15 @@ "Export Tools": "ལག་ཆ་ཕྱིར་གཏོང་།", "External": "ཕྱི་རོལ།", "External Models": "ཕྱི་རོལ་གྱི་དཔེ་དབྱིབས།", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "ཡིག་ཆ་སྣོན་པར་མ་ཐུབ།", "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 read clipboard contents": "སྦྱར་སྡེར་གྱི་ནང་དོན་ཀློག་མ་ཐུབ།", "Failed to save connections": "", "Failed to save models configuration": "དཔེ་དབྱིབས་སྒྲིག་འགོད་ཉར་ཚགས་བྱེད་མ་ཐུབ།", @@ -544,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": "ལམ་སྟོན་ཡང་དག་པར་བསྒྲུབས།", @@ -565,7 +581,6 @@ "Function Name": "ལས་འགན་གྱི་མིང་།", "Function updated successfully": "ལས་འགན་ལེགས་པར་གསར་སྒྱུར་བྱས་ཟིན།", "Functions": "ལས་འགན།", - "Functions allow arbitrary code execution": "ལས་འགན་གྱིས་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་ལ་གནང་བ་སྤྲོད།", "Functions allow arbitrary code execution.": "ལས་འགན་གྱིས་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་ལ་གནང་བ་སྤྲོད།", "Functions imported successfully": "ལས་འགན་ལེགས་པར་ནང་འདྲེན་བྱས།", "Gemini": "Gemini", @@ -718,8 +733,12 @@ "Memory deleted successfully": "དྲན་ཤེས་ལེགས་པར་བསུབས་ཟིན།", "Memory updated successfully": "དྲན་ཤེས་ལེགས་པར་གསར་སྒྱུར་བྱས་ཟིན།", "Merge Responses": "ལན་ཟླ་སྒྲིལ།", + "Merged Response": "བསྡུར་མཐུན་གྱི་ལན་གསལ་གནས་ཡོད།", "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)": "", "Min P": "P ཉུང་ཤོས།", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "གསང་གྲངས་གསར་པ།", "new-channel": "བགྲོ་གླེང་གསར་པ།", "No content found": "ནང་དོན་མ་རྙེད།", + "No content found in file.": "", "No content to speak": "བཤད་རྒྱུའི་ནང་དོན་མེད།", "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": "དོ་དམ་རྒྱབ་སྐྱོར་ཡོད་པའི་དཔོག་རྩིས་འཕྲུལ་འཁོར་མ་རྙེད།", @@ -939,7 +958,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 to bottom when switching between branches": "ཡན་ལག་བརྗེ་སྐབས་མཐིལ་དུ་འགྲིལ་བ།", + "Scroll On Branch Change": "", "Search": "འཚོལ་བཤེར།", "Search a model": "དཔེ་དབྱིབས་ཤིག་འཚོལ་བ།", "Search Base": "འཚོལ་བཤེར་གཞི་རྩ།", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "[བརྗོད་གཞི་ཡང་ན་གནད་ཚིག] ཕྱོགས་སྡོམ་བྱེད་པའི་ཚིག་ ༥༠ ནང་གི་སྙིང་བསྡུས་ཤིག་འབྲི་བ།", "Write something...": "ཅི་ཞིག་འབྲི་བ།...", "Write your model template content here": "ཁྱེད་ཀྱི་དཔེ་དབྱིབས་མ་དཔེའི་ནང་དོན་འདིར་འབྲི་བ།", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "ཁ་ས།", "You": "ཁྱེད།", "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.": "ཁྱེད་ཀྱིས་གཤམ་གྱི་ 'དོ་དམ་' མཐེབ་གནོན་བརྒྱུད་དྲན་ཤེས་སྣོན་ནས་ LLMs དང་མཉམ་དུ་འབྲེལ་འདྲིས་བྱེད་པ་སྒེར་སྤྱོད་ཅན་བཟོ་ཐུབ། དེ་དག་ཁྱེད་ལ་སྔར་ལས་ཕན་ཐོགས་པ་དང་འཚམ་པོ་བཟོ་ཐུབ།", "You cannot upload an empty file.": "ཁྱེད་ཀྱིས་ཡིག་ཆ་སྟོང་པ་སྤར་མི་ཐུབ།", - "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": "ཁྱེད་ཀྱིས་ཁ་བརྡ་འདི་མཉམ་སྤྱོད་བྱས་ཡོད།", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index f726721d2..036597227 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -57,17 +57,19 @@ "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 Chat Export": "Permetre exportar el xat", + "Allow Chat Share": "Permetre compartir 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", @@ -76,6 +78,7 @@ "Always": "Sempre", "Always Collapse Code Blocks": "Reduir sempre els blocs de codi", "Always Expand Details": "Expandir sempre els detalls", + "Always Play Notification Sound": "Reproduir sempre un so de notificació", "Amazing": "Al·lucinant", "an assistant": "un assistent", "Analyzed": "Analitzat", @@ -83,7 +86,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 +248,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 +311,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 +367,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 +417,12 @@ "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 External Web Loader API Key": "Introdueix la clau API d'External Web Loader", + "Enter External Web Loader URL": "Introdueix la URL d'External Web Loader", + "Enter External Web Search API Key": "Introdueix la clau API d'External Web Search", + "Enter External Web Search URL": "Introdueix la URL d'External Web Search", + "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", @@ -431,10 +438,11 @@ "Enter Model ID": "Introdueix l'identificador del model", "Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})", "Enter Mojeek Search API Key": "Introdueix la clau API de Mojeek Search", + "Enter New Password": "", "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 +460,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", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "Introdueix el Top K Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "Introdueix l'URL (p. ex. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Introdueix l'URL (p. ex. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Introdueix la teva contrasenya actual", "Enter Your Email": "Introdueix el teu correu electrònic", "Enter Your Full Name": "Introdueix el teu nom complet", "Enter your message": "Introdueix el teu missatge", "Enter your name": "Entra el teu nom", + "Enter Your Name": "", "Enter your new password": "Introdueix la teva nova contrasenya", "Enter Your Password": "Introdueix la teva contrasenya", "Enter Your Role": "Introdueix el teu rol", @@ -511,10 +523,15 @@ "Export Tools": "Exportar les eines", "External": "Extern", "External Models": "Models externs", + "External Web Loader API Key": "Clau API d'External Web Loader", + "External Web Loader URL": "URL d'External Web Loader", + "External Web Search API Key": "Clau API d'External Web Search", + "External Web Search URL": "URL d'External Web Search", "Failed to add file.": "No s'ha pogut afegir l'arxiu.", "Failed to connect to {{URL}} OpenAPI tool server": "No s'ha pogut connecta al servidor d'eines OpenAPI {{URL}}", "Failed to create API Key.": "No s'ha pogut crear la clau API.", "Failed to fetch models": "No s'han pogut obtenir els models", + "Failed to load file content.": "No s'ha pogut carregar el contingut del fitxer", "Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls", "Failed to save connections": "No s'han pogut desar les connexions", "Failed to save models configuration": "No s'ha pogut desar la configuració dels models", @@ -539,12 +556,11 @@ "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", - "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", @@ -565,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", @@ -605,8 +620,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 +682,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memòria eliminada correctament", "Memory updated successfully": "Memòria actualitzada correctament", "Merge Responses": "Fusionar les respostes", + "Merged Response": "Resposta combinada", "Message rating should be enabled to use this feature": "La classificació dels missatges s'hauria d'activar per utilitzar aquesta funció", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Els missatges enviats després de crear el teu enllaç no es compartiran. Els usuaris amb l'URL podran veure el xat compartit.", + "Microsoft OneDrive": "Microsoft OneDrive", + "Microsoft OneDrive (personal)": "Microsoft OneDrive (personal)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive (feina/escola)", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Eta de Mirostat", @@ -761,11 +780,11 @@ "New Password": "Nova contrasenya", "new-channel": "nou-canal", "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", "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ó", @@ -851,8 +870,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 +917,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", @@ -939,7 +958,7 @@ "Save Tag": "Desar l'etiqueta", "Saved": "Desat", "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": "Desar els registres de xat directament a l'emmagatzematge del teu navegador ja no està suportat. Si us plau, descarregr i elimina els registres de xat fent clic al botó de sota. No et preocupis, pots tornar a importar fàcilment els teus registres de xat al backend a través de", - "Scroll to bottom when switching between branches": "Desplaçar a la part inferior quan es canviï de branca", + "Scroll On Branch Change": "Fer scroll en canviar de branca", "Search": "Cercar", "Search a model": "Cercar un model", "Search Base": "Base de cerca", @@ -1032,8 +1051,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 +1080,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", @@ -1140,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", @@ -1184,8 +1202,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 +1221,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 +1236,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Escriu un resum en 50 paraules que resumeixi [tema o paraula clau].", "Write something...": "Escriu quelcom...", "Write your model template content here": "Introdueix el contingut de la plantilla del teu model aquí", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Ahir", "You": "Tu", "You are currently using a trial license. Please contact support to upgrade your license.": "Actualment esteu utilitzant una llicència de prova. Poseu-vos en contacte amb el servei d'assistència per actualitzar la vostra llicència.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Només pots xatejar amb un màxim de {{maxCount}} fitxers alhora.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Pots personalitzar les teves interaccions amb els models de llenguatge afegint memòries mitjançant el botó 'Gestiona' que hi ha a continuació, fent-les més útils i adaptades a tu.", "You cannot upload an empty file.": "No es pot pujar un ariux buit.", - "You do not have permission to upload files": "No tens permisos per pujar arxius", "You do not have permission to upload files.": "No tens permisos per pujar arxius.", "You have no archived conversations.": "No tens converses arxivades.", "You have shared this chat": "Has compartit aquest xat", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 30608b163..8d41ae6fb 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Tugoti nga mapapas ang mga chat", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "usa ka katabang", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Pagsulod sa template tag (e.g. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Pagsulod sa gidaghanon sa mga lakang (e.g. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Pagsulod sa URL (e.g. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Pagsulod sa imong e-mail address", "Enter Your Full Name": "Ibutang ang imong tibuok nga ngalan", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Ibutang ang imong password", "Enter Your Role": "", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Napakyas sa pagbasa sa sulod sa clipboard", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "Gihiusa nga Resulta sa Tubag", "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.": "", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Bag-ong Password", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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": "Ang pag-save sa mga chat log direkta sa imong browser storage dili na suportado. ", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Pagpanukiduki", "Search a model": "", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Pagsulat og 50 ka pulong nga summary nga nagsumaryo [topic o keyword].", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "", "You": "", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index ec735ac85..cb2f1ddca 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Povolit odstranění chatu", "Allow Chat Deletion": "Povolit odstranění chatu", "Allow Chat Edit": "Povolit úpravu chatu", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Povolit nahrávat soubory", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Povolit ne-místní hlasy", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "asistent", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Zadejte URL adresu Github Raw", @@ -431,6 +438,7 @@ "Enter Model ID": "Zadejte ID modelu", "Enter model tag (e.g. {{modelTag}})": "Zadejte označení modelu (např. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Zadejte počet kroků (např. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Zadejte URL (např. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Zadejte URL (např. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Zadejte svůj email", "Enter Your Full Name": "Zadejte své plné jméno", "Enter your message": "Zadejte svou zprávu", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Zadejte své heslo", "Enter Your Role": "Zadejte svou roli", @@ -511,10 +523,15 @@ "Export Tools": "Exportní nástroje", "External": "", "External Models": "Externí modely", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Nepodařilo se přidat soubor.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Nepodařilo se vytvořit API klíč.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Nepodařilo se přečíst obsah schránky", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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.", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Paměť byla úspěšně smazána", "Memory updated successfully": "Paměť úspěšně aktualizována", "Merge Responses": "Sloučit odpovědi", + "Merged Response": "Sloučená odpověď", "Message rating should be enabled to use this feature": "Hodnocení zpráv musí být povoleno, aby bylo možné tuto funkci používat.", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Zprávy, které odešlete po vytvoření odkazu, nebudou sdíleny. Uživatelé s URL budou moci zobrazit sdílený chat.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nové heslo", "new-channel": "", "No content found": "Nebyly nalezeny žádné obsahové informace.", + "No content found in file.": "", "No content to speak": "Žádný obsah k diskusi.", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Uložit štítek", "Saved": "Uloženo", "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": "Ukládání záznamů chatu přímo do úložiště vašeho prohlížeče již není podporováno. Věnujte prosím chvíli stažení a smazání svých záznamů chatu kliknutím na tlačítko níže. Nemějte obavy, můžete snadno znovu importovat své záznamy chatu na backend prostřednictvím", - "Scroll to bottom when switching between branches": "Přejít na konec při přepínání mezi větvemi.", + "Scroll On Branch Change": "", "Search": "Vyhledávání", "Search a model": "Vyhledat model", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Napište shrnutí na 50 slov, které shrnuje [téma nebo klíčové slovo].", "Write something...": "Napište něco...", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Včera", "You": "Vy", "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.": "Můžete komunikovat pouze s maximálně {{maxCount}} soubor(y) najednou.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Můžete personalizovat své interakce s LLM pomocí přidávání vzpomínek prostřednictvím tlačítka 'Spravovat' níže, což je učiní pro vás užitečnějšími a lépe přizpůsobenými.", "You cannot upload an empty file.": "Nemůžete nahrát prázdný soubor.", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Nemáte žádné archivované konverzace.", "You have shared this chat": "Sdíleli jste tento chat.", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index f5b535f1a..57b43211b 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -4,11 +4,11 @@ "(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)", - "(Ollama)": "", + "(Ollama)": "(Ollama)", "{{ models }}": "{{ modeller }}", - "{{COUNT}} Available Tools": "", - "{{COUNT}} hidden lines": "", - "{{COUNT}} Replies": "", + "{{COUNT}} Available Tools": "{{COUNT}} Tilgængelige Værktøj", + "{{COUNT}} hidden lines": "{{COUNT}} skjulte linjer", + "{{COUNT}} Replies": "{{COUNT}} Svar", "{{user}}'s Chats": "{{user}}s chats", "{{webUIName}} Backend Required": "{{webUIName}} Backend kræves", "*Prompt node ID(s) are required for image generation": "*Prompt node ID(s) er påkrævet for at kunne generere billeder", @@ -16,28 +16,28 @@ "A task model is used when performing tasks such as generating titles for chats and web search queries": "En 'task model' bliver brugt til at opgaver såsom at generere overskrifter til chats eller internetsøgninger", "a user": "en bruger", "About": "Information", - "Accept autocomplete generation / Jump to prompt variable": "", - "Access": "", - "Access Control": "", - "Accessible to all users": "", + "Accept autocomplete generation / Jump to prompt variable": "Accepter generede autofuldførsel / Spring til prompt variabel", + "Access": "Adgang", + "Access Control": "Adgangskontrol", + "Accessible to all users": "Tilgængelig for alle brugere", "Account": "Profil", "Account Activation Pending": "Aktivering af profil afventer", "Accurate information": "Profilinformation", "Actions": "Handlinger", - "Activate": "", + "Activate": "Aktiver", "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "", "Active Users": "Aktive brugere", "Add": "Tilføj", - "Add a model ID": "", + "Add a model ID": "Tilføj en model-ID", "Add a short description about what this model does": "En kort beskrivelse af hvad denne model gør", "Add a tag": "Tilføj et tag", - "Add Arena Model": "", - "Add Connection": "", + "Add Arena Model": "Tilføj Area Model", + "Add Connection": "Tilføj forbindelser", "Add Content": "Tilføj indhold", "Add content here": "Tilføj indhold her", "Add custom prompt": "Tilføj en special-prompt", "Add Files": "Tilføj filer", - "Add Group": "", + "Add Group": "Tilføj gruppe", "Add Memory": "Tilføj hukommelse", "Add Model": "Tilføj model", "Add Reaction": "", @@ -45,7 +45,7 @@ "Add Tags": "Tilføj tags", "Add text content": "Tilføj tekst", "Add User": "Tilføj bruger", - "Add User Group": "", + "Add User Group": "Tilføj Brugergruppe", "Adjusting these settings will apply changes universally to all users.": "Ændringer af disse indstillinger har konsekvenser for alle brugere.", "admin": "administrator", "Admin": "Administrator", @@ -54,81 +54,84 @@ "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratorer har adgang til alle værktøjer altid; brugere skal tilføjes værktøjer pr. model i hvert workspace.", "Advanced Parameters": "Advancerede indstillinger", "Advanced Params": "Advancerede indstillinger", - "All": "", + "All": "Alle", "All Documents": "Alle dokumenter", - "All models deleted successfully": "", - "Allow Call": "", - "Allow Chat Controls": "", - "Allow Chat Delete": "", + "All models deleted successfully": "Alle modeller slettet uden fejl", + "Allow Call": "Tillad kald", + "Allow Chat Controls": "Tillad kontrol af chats", + "Allow Chat Delete": "Tillad sletning af chats", "Allow Chat Deletion": "Tillad sletning af chats", - "Allow Chat Edit": "", - "Allow File Upload": "", - "Allow Multiple Models in Chat": "", + "Allow Chat Edit": "Tillad redigering af chats", + "Allow Chat Export": "", + "Allow Chat Share": "", + "Allow File Upload": "Tillad upload af fil", + "Allow Multiple Models in Chat": "Tillad flere modeller i chats", "Allow non-local voices": "Tillad ikke-lokale stemmer", - "Allow Speech to Text": "", + "Allow Speech to Text": "Tillad tale til tekst", "Allow Temporary Chat": "Tillad midlertidig chat", - "Allow Text to Speech": "", + "Allow Text to Speech": "Tillad tekst til take", "Allow User Location": "Tillad bruger-lokation", "Allow Voice Interruption in Call": "Tillad afbrydelser i stemme i opkald", - "Allowed Endpoints": "", + "Allowed Endpoints": "Tilladte endpoints", "Already have an account?": "Har du allerede en profil?", "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": "", - "Amazing": "", + "Always": "Altid", + "Always Collapse Code Blocks": "Altid kollapsere kodeblokke", + "Always Expand Details": "Altid udvide detaljer", + "Always Play Notification Sound": "", + "Amazing": "Fantastisk", "an assistant": "en assistent", - "Analyzed": "", - "Analyzing...": "", + "Analyzed": "Analyseret", + "Analyzing...": "Analyserer...", "and": "og", - "and {{COUNT}} more": "", + "and {{COUNT}} more": "og {{COUNT}} mere", "and create a new shared link.": "og lav et nyt link til deling", - "Android": "", + "Android": "Android", "API Base URL": "API Base URL", "API Key": "API nøgle", "API Key created.": "API nøgle lavet", - "API Key Endpoint Restrictions": "", + "API Key Endpoint Restrictions": "API nøgler endpoint forbehold", "API keys": "API nøgler", "Application DN": "", "Application DN Password": "", "applies to all users with the \"user\" role": "", - "April": "april", + "April": "April", "Archive": "Arkiv", "Archive All Chats": "Arkiver alle chats", "Archived Chats": "Arkiverede chats", - "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?": "", + "archived-chat-export": "arkiveret-chat-eksport", + "Are you sure you want to clear all memories? This action cannot be undone.": "Er du sikker på du vil rydde hele hukommelsen? Dette kan ikke gøres om.", + "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?": "Er du sikker?", - "Arena Models": "", + "Arena Models": "Arena Modeller", "Artifacts": "Artifakter", - "Ask": "", + "Ask": "Spørg", "Ask a question": "Stil et spørgsmål", - "Assistant": "", - "Attach file from knowledge": "", + "Assistant": "Assistent", + "Attach file from knowledge": "Vedhæft fil fra viden", "Attention to detail": "Detajleorientering", - "Attribute for Mail": "", - "Attribute for Username": "", + "Attribute for Mail": "Attribut for Mail", + "Attribute for Username": "Attribut for brugernavn", "Audio": "Lyd", "August": "august", - "Auth": "", - "Authenticate": "", - "Authentication": "", - "Auto": "", + "Auth": "Auth", + "Authenticate": "Autentificer", + "Authentication": "Autentikation", + "Auto": "Auto", "Auto-Copy Response to Clipboard": "Automatisk kopiering af svar til udklipsholder", "Auto-playback response": "Automatisk afspil svar", - "Autocomplete Generation": "", + "Autocomplete Generation": "Genere automatisk fuldførsel", "Autocomplete Generation Input Max Length": "", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Auth String", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL", "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Base URL er påkrævet.", "Available list": "Tilgængelige lister", - "Available Tools": "", + "Available Tools": "Tilgængelige værktøj", "available!": "tilgængelig!", - "Awful": "", + "Awful": "Forfærdeligt", "Azure AI Speech": "Azure AI Speech", "Azure Region": "Azure Region", "Back": "Tilbage", @@ -138,26 +141,26 @@ "Batch Size (num_batch)": "Batch størrelse (num_batch)", "before": "før", "Being lazy": "At være doven", - "Beta": "", + "Beta": "Beta", "Bing Search V7 Endpoint": "", "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)": "", "Brave Search API Key": "Brave Search API nøgle", - "By {{name}}": "", + "By {{name}}": "Af {{name}}", "Bypass Embedding and Retrieval": "", - "Calendar": "", + "Calendar": "Kalender", "Call": "Opkald", "Call feature is not supported when using Web STT engine": "Opkaldsfunktion er ikke understøttet for Web STT engine", "Camera": "Kamera", "Cancel": "Afbryd", "Capabilities": "Funktioner", - "Capture": "", - "Certificate Path": "", + "Capture": "Indfang", + "Certificate Path": "Certifikat sti", "Change Password": "Skift password", - "Channel Name": "", - "Channels": "", - "Character": "", + "Channel Name": "Kanalnavn", + "Channels": "Kanaler", + "Character": "Karakterer", "Character limit for autocomplete generation input": "", "Chart new frontiers": "", "Chat": "Chat", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Indtast Github Raw URL", @@ -431,6 +438,7 @@ "Enter Model ID": "Indtast model-ID", "Enter model tag (e.g. {{modelTag}})": "Indtast modelmærke (f.eks. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Indtast antal trin (f.eks. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Indtast URL (f.eks. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Indtast URL (f.eks. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Indtast din e-mail", "Enter Your Full Name": "Indtast dit fulde navn", "Enter your message": "Indtast din besked", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Indtast din adgangskode", "Enter Your Role": "Indtast din rolle", @@ -511,10 +523,15 @@ "Export Tools": "Eksportér værktøjer", "External": "", "External Models": "Eksterne modeller", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Kunne ikke oprette API-nøgle.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Kunne ikke læse indholdet af udklipsholderen", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Hukommelse slettet.", "Memory updated successfully": "Hukommelse opdateret.", "Merge Responses": "Flet svar", + "Merged Response": "Sammensat svar", "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.": "Beskeder, du sender efter at have oprettet dit link, deles ikke. Brugere med URL'en vil kunne se den delte chat.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Ny adgangskode", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "Intet indhold at tale", "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": "", @@ -869,7 +888,7 @@ "Presence Penalty": "", "Previous 30 days": "Seneste 30 dage", "Previous 7 days": "Seneste 7 dage", - "Private": "", + "Private": "Privat", "Profile Image": "Profilbillede", "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (f.eks. Fortæl mig en sjov kendsgerning om Romerriget)", @@ -888,7 +907,7 @@ "RAG Template": "RAG-skabelon", "Rating": "", "Re-rank models by topic similarity": "", - "Read": "", + "Read": "Læs", "Read Aloud": "Læs højt", "Reasoning Effort": "", "Record voice": "Optag stemme", @@ -939,7 +958,7 @@ "Save Tag": "Gem tag", "Saved": "Gemt", "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": "Lagring af chatlogs direkte i din browsers lager understøttes ikke længere. Download og slet dine chatlogs ved at klikke på knappen nedenfor. Du kan nemt importere dine chatlogs til backend igennem", - "Scroll to bottom when switching between branches": "Rul til bunden, når du skifter mellem grene", + "Scroll On Branch Change": "", "Search": "Søg", "Search a model": "Søg efter en model", "Search Base": "", @@ -953,7 +972,7 @@ "Search options": "", "Search Prompts": "Søg i prompts", "Search Result Count": "Antal søgeresultater", - "Search the internet": "", + "Search the internet": "Søg internettet", "Search Tools": "Søg i værktøjer", "SearchApi API Key": "SearchApi API-nøgle", "SearchApi Engine": "SearchApi-engine", @@ -967,7 +986,7 @@ "Select a base model": "Vælg en basemodel", "Select a engine": "Vælg en engine", "Select a function": "Vælg en funktion", - "Select a group": "", + "Select a group": "Vælg en gruppe", "Select a model": "Vælg en model", "Select a pipeline": "Vælg en pipeline", "Select a pipeline url": "Vælg en pipeline-URL", @@ -1031,7 +1050,7 @@ "Sign up": "Tilmeld dig", "Sign up to {{WEBUI_NAME}}": "Tilmeld dig {{WEBUI_NAME}}", "Signing in to {{WEBUI_NAME}}": "Logger ind på {{WEBUI_NAME}}", - "sk-1234": "", + "sk-1234": "sk-1234", "Sougou Search API sID": "", "Sougou Search API SK": "", "Source": "Kilde", @@ -1099,8 +1118,8 @@ "This will delete all models including custom models and cannot be undone.": "", "This will reset the knowledge base and sync all files. Do you wish to continue?": "Dette vil nulstille vidensbasen og synkronisere alle filer. Vil du fortsætte?", "Thorough explanation": "Grundig forklaring", - "Thought for {{DURATION}}": "", - "Thought for {{DURATION}} seconds": "", + "Thought for {{DURATION}}": "Tanker for {{DURATION}}", + "Thought for {{DURATION}} seconds": "Tanker for {{DURATION}} sekunder", "Tika": "Tika", "Tika Server URL required.": "Tika-server-URL påkrævet.", "Tiktoken": "", @@ -1109,9 +1128,9 @@ "Title (e.g. Tell me a fun fact)": "Titel (f.eks. Fortæl mig en sjov kendsgerning)", "Title Auto-Generation": "Automatisk titelgenerering", "Title cannot be an empty string.": "Titel kan ikke være en tom streng.", - "Title Generation": "", + "Title Generation": "Titel Generation", "Title Generation Prompt": "Prompt til titelgenerering", - "TLS": "", + "TLS": "TLS", "To access the available model names for downloading,": "For at få adgang til de tilgængelige modelnavne til download,", "To access the GGUF models available for downloading,": "For at få adgang til de GGUF-modeller, der er tilgængelige til download,", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "For at få adgang til WebUI skal du kontakte administratoren. Administratorer kan administrere brugerstatus fra administrationspanelet.", @@ -1127,49 +1146,48 @@ "Toggle sidebar": "Skift sidebjælke", "Token": "", "Tokens To Keep On Context Refresh (num_keep)": "Tokens, der skal beholdes ved kontekstopdatering (num_keep)", - "Too verbose": "", + "Too verbose": "For ordrigt", "Tool created successfully": "Værktøj oprettet.", "Tool deleted successfully": "Værktøj slettet.", - "Tool Description": "", - "Tool ID": "", + "Tool Description": "Værktøjsbeskrivelse", + "Tool ID": "Værktøj-ID", "Tool imported successfully": "Værktøj importeret.", - "Tool Name": "", - "Tool Servers": "", + "Tool Name": "Værktøjsnavn", + "Tool Servers": "Værktøjsserverer", "Tool updated successfully": "Værktøj opdateret.", "Tools": "Værktøjer", - "Tools Access": "", + "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": "", - "Tools have a function calling system that allows arbitrary code execution": "Værktøjer har et funktionkaldssystem, der tillader 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 Public Sharing": "", + "Tools Public Sharing": "Værktøjer Offentlig Deling", "Top K": "Top K", "Top K Reranker": "", "Top P": "Top P", - "Transformers": "", + "Transformers": "Transformers", "Trouble accessing Ollama?": "Problemer med at få adgang til Ollama?", - "Trust Proxy Environment": "", + "Trust Proxy Environment": "Stol på Proxymiljø", "TTS Model": "TTS-model", "TTS Settings": "TTS-indstillinger", "TTS Voice": "TTS-stemme", "Type": "Type", "Type Hugging Face Resolve (Download) URL": "Indtast Hugging Face Resolve (Download) URL", - "Uh-oh! There was an issue with the response.": "", + "Uh-oh! There was an issue with the response.": "Uh-oh! Der var et problem det det svar.", "UI": "UI", - "Unarchive All": "", - "Unarchive All Archived Chats": "", - "Unarchive Chat": "", - "Unlock mysteries": "", + "Unarchive All": "Udpak alle arkiver", + "Unarchive All Archived Chats": "Udpak alle arkiverede chats", + "Unarchive Chat": "Fjern chat fra arkiv", + "Unlock mysteries": "Lås op for mysterier", "Unpin": "Frigør", - "Unravel secrets": "", - "Untagged": "", + "Unravel secrets": "Afslør hemmeligheder", + "Untagged": "Uden mærker", "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.", "Update password": "Opdater adgangskode", - "Updated": "", + "Updated": "Opdateret", "Updated at": "Opdateret kl.", - "Updated At": "", + "Updated At": "Opdateret Klokken.", "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "", "Upload": "Upload", "Upload a GGUF model": "Upload en GGUF-model", @@ -1178,7 +1196,7 @@ "Upload Files": "Upload filer", "Upload Pipeline": "Upload pipeline", "Upload Progress": "Uploadfremdrift", - "URL": "", + "URL": "URL", "URL Mode": "URL-tilstand", "Use '#' in the prompt input to load and include your knowledge.": "Brug '#' i promptinput for at indlæse og inkludere din viden.", "Use Gravatar": "Brug Gravatar", @@ -1189,10 +1207,10 @@ "use_mlock (Ollama)": "use_mlock (Ollama)", "use_mmap (Ollama)": "use_mmap (Ollama)", "user": "bruger", - "User": "", + "User": "Bruger:", "User location successfully retrieved.": "Brugerplacering hentet.", - "User Webhooks": "", - "Username": "", + "User Webhooks": "Bruger Webhooks", + "Username": "Brugernavn", "Users": "Brugere", "Using the default arena model with all models. Click the plus button to add custom models.": "", "Utilize": "Anvend", @@ -1208,9 +1226,9 @@ "Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} af {{totalVersions}}", "View Replies": "", "View Result from **{{NAME}}**": "", - "Visibility": "", + "Visibility": "Synlighed", "Voice": "Stemme", - "Voice Input": "", + "Voice Input": "Stemme Input", "Warning": "Advarsel", "Warning:": "Advarsel:", "Warning: Enabling this will allow users to upload arbitrary code on the server.": "", @@ -1229,31 +1247,33 @@ "WebUI will make requests to \"{{url}}\"": "", "WebUI will make requests to \"{{url}}/api/chat\"": "", "WebUI will make requests to \"{{url}}/chat/completions\"": "", - "What are you trying to achieve?": "", - "What are you working on?": "", + "What are you trying to achieve?": "Hvad prøver du at opnå?", + "What are you working on?": "Hvad arbejder du på?", "What’s New in": "Nyheder i", "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": "hvad end du er", "Whisper (Local)": "Whisper (lokal)", - "Why?": "", + "Why?": "Hvorfor?", "Widescreen Mode": "Widescreen-tilstand", - "Won": "", + "Won": "Vandt", "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.": "", "Workspace": "Arbejdsområde", - "Workspace Permissions": "", - "Write": "", + "Workspace Permissions": "Arbejdsområde rettigheder", + "Write": "Skriv", "Write a prompt suggestion (e.g. Who are you?)": "Skriv et promptforslag (f.eks. Hvem er du?)", "Write a summary in 50 words that summarizes [topic or keyword].": "Skriv en opsummering på 50 ord, der opsummerer [emne eller søgeord].", - "Write something...": "", - "Write your model template content here": "", + "Write something...": "Skriv noget...", + "Write your model template content here": "Skriv den model-skabelons indhold her", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "I går", "You": "Du", "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.": "Du kan kun chatte med maksimalt {{maxCount}} fil(er) ad gangen.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Du kan personliggøre dine interaktioner med LLM'er ved at tilføje minder via knappen 'Administrer' nedenfor, hvilket gør dem mere nyttige og skræddersyet til dig.", - "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", - "You do not have permission to upload files.": "", + "You cannot upload an empty file.": "Du kan ikke uploade en tom fil", + "You do not have permission to upload files.": "Du har ikke rettighed til at uploade filer.", "You have no archived conversations.": "Du har ingen arkiverede samtaler.", "You have shared this chat": "Du har delt denne chat", "You're a helpful assistant.": "Du er en hjælpsom assistent.", @@ -1261,6 +1281,6 @@ "Your account status is currently pending activation.": "Din kontostatus afventer i øjeblikket aktivering.", "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.": "Hele dit bidrag går direkte til plugin-udvikleren; Open WebUI tager ikke nogen procentdel. Den valgte finansieringsplatform kan dog have sine egne gebyrer.", "Youtube": "Youtube", - "Youtube Language": "", - "Youtube Proxy URL": "" + "Youtube Language": "Youtube sprog", + "Youtube Proxy URL": "Youtube Proxy URL" } diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index b4a0e0776..4f5ff4f44 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -57,17 +57,19 @@ "All": "Alle", "All Documents": "Alle Dokumente", "All models deleted successfully": "Alle Modelle erfolgreich gelöscht", - "Allow Call": "", + "Allow Call": "Anruffunktion erlauben", "Allow Chat Controls": "Chat-Steuerung erlauben", "Allow Chat Delete": "Löschen von Chats erlauben", "Allow Chat Deletion": "Löschen von Chats erlauben", "Allow Chat Edit": "Bearbeiten von Chats erlauben", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Hochladen von Dateien erlauben", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "Multiple Modelle in Chat erlauben", "Allow non-local voices": "Nicht-lokale Stimmen erlauben", - "Allow Speech to Text": "", + "Allow Speech to Text": "Sprache zu Text erlauben", "Allow Temporary Chat": "Temporäre Chats erlauben", - "Allow Text to Speech": "", + "Allow Text to Speech": "Text zu Sprache erlauben", "Allow User Location": "Standort freigeben", "Allow Voice Interruption in Call": "Unterbrechung durch Stimme im Anruf zulassen", "Allowed Endpoints": "Erlaubte Endpunkte", @@ -76,6 +78,7 @@ "Always": "Immer", "Always Collapse Code Blocks": "Code-Blöcke immer zuklappen", "Always Expand Details": "Details immer aufklappen", + "Always Play Notification Sound": "", "Amazing": "Fantastisch", "an assistant": "ein Assistent", "Analyzed": "Analysiert", @@ -126,7 +129,7 @@ "AUTOMATIC1111 Base URL": "AUTOMATIC1111-Basis-URL", "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111-Basis-URL ist erforderlich.", "Available list": "Verfügbare Liste", - "Available Tools": "", + "Available Tools": "Verfügbare Werkzeuge", "available!": "Verfügbar!", "Awful": "Schrecklich", "Azure AI Speech": "Azure AI Speech", @@ -223,9 +226,9 @@ "Confirm your action": "Bestätigen Sie Ihre Aktion.", "Confirm your new password": "Neues Passwort bestätigen", "Connect to your own OpenAI compatible API endpoints.": "Verbinden Sie sich zu Ihren OpenAI-kompatiblen Endpunkten.", - "Connect to your own OpenAPI compatible external tool servers.": "", - "Connection failed": "", - "Connection successful": "", + "Connect to your own OpenAPI compatible external tool servers.": "Verbinden Sie sich zu Ihren OpenAPI-kompatiblen Werkzeug-Servern.", + "Connection failed": "Verbindung fehlgeschlagen", + "Connection successful": "Verbindung erfolgreich", "Connections": "Verbindungen", "Connections saved successfully": "", "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", @@ -245,7 +248,7 @@ "Copied shared chat URL to clipboard!": "Freigabelink in die Zwischenablage kopiert!", "Copied to clipboard": "In die Zwischenablage kopiert", "Copy": "Kopieren", - "Copy Formatted Text": "", + "Copy Formatted Text": "Formatierten Text kopieren", "Copy last code block": "Letzten Codeblock kopieren", "Copy last response": "Letzte Antwort kopieren", "Copy Link": "Link kopieren", @@ -308,13 +311,13 @@ "Deleted User": "Benutzer gelöscht", "Describe your knowledge base and objectives": "Beschreibe deinen Wissensspeicher und deine Ziele", "Description": "Beschreibung", - "Detect Artifacts Automatically": "", + "Detect Artifacts Automatically": "Artefakte automatisch erkennen", "Didn't fully follow instructions": "Nicht genau den Answeisungen gefolgt", "Direct": "Direkt", "Direct Connections": "Direktverbindungen", "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Direktverbindungen ermöglichen es Benutzern, sich mit ihren eigenen OpenAI-kompatiblen API-Endpunkten zu verbinden.", "Direct Connections settings updated": "Direktverbindungs-Einstellungen aktualisiert", - "Direct Tool Servers": "", + "Direct Tool Servers": "Direkt verbundene Werkzeug-Server", "Disabled": "Deaktiviert", "Discover a function": "Entdecken Sie weitere Funktionen", "Discover a model": "Entdecken Sie weitere Modelle", @@ -346,7 +349,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", @@ -364,7 +367,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., en-US,ja-JP (leave blank for auto-detect)": "", + "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", "Edit Channel": "Kanal bearbeiten", @@ -401,7 +404,7 @@ "Enter Application DN Password": "Geben Sie das Anwendungs-DN-Passwort ein", "Enter Bing Search V7 Endpoint": "Geben Sie den Bing Search V7-Endpunkt ein", "Enter Bing Search V7 Subscription Key": "Geben Sie den Bing Search V7-Abonnement-Schlüssel ein", - "Enter Bocha Search API Key": "", + "Enter Bocha Search API Key": "Geben Sie den Bocha Search API-Schlüssel ein", "Enter Brave Search API Key": "Geben Sie den Brave Search API-Schlüssel ein", "Enter certificate path": "Geben Sie den Zertifikatpfad ein", "Enter CFG Scale (e.g. 7.0)": "Geben Sie die CFG-Skala ein (z. B. 7.0)", @@ -414,8 +417,12 @@ "Enter Document Intelligence Key": "", "Enter domains separated by commas (e.g., example.com,site.org)": "Geben Sie die Domains durch Kommas separiert ein (z.B. example.com,site.org)", "Enter Exa API Key": "Geben Sie den Exa-API-Schlüssel ein", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl 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": "Geben Sie die Firecrawl Basis-URL ein", + "Enter Firecrawl API Key": "Geben Sie den Firecrawl API-Schlüssel ein", "Enter Github Raw URL": "Geben Sie die Github Raw-URL ein", "Enter Google PSE API Key": "Geben Sie den Google PSE-API-Schlüssel ein", "Enter Google PSE Engine Id": "Geben Sie die Google PSE-Engine-ID ein", @@ -427,14 +434,15 @@ "Enter Kagi Search API Key": "Geben Sie den Kagi Search API-Schlüssel ein", "Enter Key Behavior": "Verhalten von 'Enter'", "Enter language codes": "Geben Sie die Sprachcodes ein", - "Enter Mistral API Key": "", + "Enter Mistral API Key": "Geben Sie den Mistral API-Schlüssel ein", "Enter Model ID": "Geben Sie die Modell-ID ein", "Enter model tag (e.g. {{modelTag}})": "Geben Sie den Model-Tag ein", "Enter Mojeek Search API Key": "Geben Sie den Mojeek Search API-Schlüssel ein", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Geben Sie die Anzahl an Schritten ein (z. B. 50)", - "Enter Perplexity API Key": "Geben Sie den Perplexity API-Key ein", + "Enter Perplexity API Key": "Geben Sie den Perplexity API-Schlüssel ein", "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", + "Enter Playwright WebSocket URL": "Geben Sie die Playwright WebSocket-URL ein", "Enter proxy URL (e.g. https://user:password@host:port)": "Geben sie die Proxy-URL ein (z. B. https://user:password@host:port)", "Enter reasoning effort": "Geben Sie den Schlussfolgerungsaufwand ein", "Enter Sampler (e.g. Euler a)": "Geben Sie den Sampler ein (z. B. Euler a)", @@ -444,7 +452,7 @@ "Enter SearchApi Engine": "Geben Sie die SearchApi-Engine ein", "Enter Searxng Query URL": "Geben Sie die Searxng-Abfrage-URL ein", "Enter Seed": "Geben Sie den Seed ein", - "Enter SerpApi API Key": "", + "Enter SerpApi API Key": "Geben Sie den SerpApi API-Schlüssel ein", "Enter SerpApi Engine": "", "Enter Serper API Key": "Geben Sie den Serper-API-Schlüssel ein", "Enter Serply API Key": "Geben Sie den", @@ -456,7 +464,7 @@ "Enter Sougou Search API SK": "", "Enter stop sequence": "Stop-Sequenz eingeben", "Enter system prompt": "Systemprompt eingeben", - "Enter system prompt here": "", + "Enter system prompt here": "Systemprompt hier eingeben", "Enter Tavily API Key": "Geben Sie den Tavily-API-Schlüssel ein", "Enter Tavily Extract Depth": "", "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Geben sie die öffentliche URL Ihrer WebUI ein. Diese URL wird verwendet, um Links in den Benachrichtigungen zu generieren.", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "Geben Sie Top K für Reranker ein", "Enter URL (e.g. http://127.0.0.1:7860/)": "Geben Sie die URL ein (z. B. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Geben Sie die URL ein (z. B. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Geben Sie Ihr aktuelles Passwort ein", "Enter Your Email": "Geben Sie Ihre E-Mail-Adresse ein", "Enter Your Full Name": "Geben Sie Ihren vollständigen Namen ein", "Enter your message": "Geben Sie Ihre Nachricht ein", - "Enter your name": "", + "Enter your name": "Geben Sie Ihren Namen ein", + "Enter Your Name": "", "Enter your new password": "Geben Sie Ihr neues Passwort ein", "Enter Your Password": "Geben Sie Ihr Passwort ein", "Enter Your Role": "Geben Sie Ihre Rolle ein", @@ -511,10 +523,15 @@ "Export Tools": "Werkzeuge exportieren", "External": "Extern", "External Models": "Externe Modelle", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Fehler beim Hinzufügen der Datei.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Fehler beim Erstellen des API-Schlüssels.", "Failed to fetch models": "Fehler beim Abrufen der Modelle", + "Failed to load file content.": "", "Failed to read clipboard contents": "Fehler beim Abruf der Zwischenablage", "Failed to save connections": "", "Failed to save models configuration": "Fehler beim Speichern der Modellkonfiguration", @@ -539,12 +556,11 @@ "Filter is now globally enabled": "Filter ist jetzt global aktiviert", "Filters": "Filter", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Fingerabdruck-Spoofing erkannt: Initialen können nicht als Avatar verwendet werden. Standard-Avatar wird verwendet.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "Firecrawl API Basis-URL", + "Firecrawl API Key": "Firecrawl API-Schlüssel", "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", @@ -565,12 +581,11 @@ "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": "", - "Gemini API Config": "", - "Gemini API Key is required.": "", + "Gemini API Config": "Gemini API-Konfiguration", + "Gemini API Key is required.": "Gemini API-Schlüssel ist erforderlich.", "General": "Allgemein", "Generate an image": "Bild erzeugen", "Generate Image": "Bild erzeugen", @@ -597,7 +612,7 @@ "Hex Color": "Hex-Farbe", "Hex Color - Leave empty for default color": "Hex-Farbe - Leer lassen für Standardfarbe", "Hide": "Verbergen", - "Hide Model": "", + "Hide Model": "Modell verstecken", "Home": "", "Host": "Host", "How can I help you today?": "Wie kann ich Ihnen heute helfen?", @@ -718,22 +733,26 @@ "Memory deleted successfully": "Erinnerung erfolgreich gelöscht", "Memory updated successfully": "Erinnerung erfolgreich aktualisiert", "Merge Responses": "Antworten zusammenführen", + "Merged Response": "Zusammengeführte Antwort", "Message rating should be enabled to use this feature": "Antwortbewertung muss aktiviert sein, um diese Funktion zu verwenden", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Nachrichten, die Sie nach der Erstellung Ihres Links senden, werden nicht geteilt. Nutzer mit der URL können den freigegebenen Chat einsehen.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min 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-Schlüssel erforderlich.", "Model": "Modell", "Model '{{modelName}}' has been successfully downloaded.": "Modell '{{modelName}}' wurde erfolgreich heruntergeladen.", "Model '{{modelTag}}' is already in queue for downloading.": "Modell '{{modelTag}}' befindet sich bereits in der Warteschlange zum Herunterladen.", "Model {{modelId}} not found": "Modell {{modelId}} nicht gefunden", "Model {{modelName}} is not vision capable": "Das Modell {{modelName}} ist nicht für die Bildverarbeitung geeignet", "Model {{name}} is now {{status}}": "Modell {{name}} ist jetzt {{status}}", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", + "Model {{name}} is now hidden": "Modell {{name}} ist jetzt versteckt.", + "Model {{name}} is now visible": "Modell {{name}} ist jetzt sichtbar.", "Model accepts image inputs": "Modell akzeptiert Bildeingaben", "Model created successfully!": "Modell erfolgreich erstellt!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Modell-Dateisystempfad erkannt. Modellkurzname ist für das Update erforderlich, Fortsetzung nicht möglich.", @@ -761,11 +780,11 @@ "New Password": "Neues Passwort", "new-channel": "neuer-kanal", "No content found": "Kein Inhalt gefunden", + "No content found in file.": "", "No content to speak": "Kein Inhalt zum Vorlesen", "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", @@ -781,7 +800,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", @@ -822,7 +841,7 @@ "OpenAI API Key is required.": "OpenAI-API-Schlüssel erforderlich.", "OpenAI API settings updated": "OpenAI-API-Einstellungen aktualisiert", "OpenAI URL/Key required.": "OpenAI-URL/Schlüssel erforderlich.", - "openapi.json Path": "", + "openapi.json Path": "openapi.json Pfad", "or": "oder", "Organize your users": "Organisieren Sie Ihre Benutzer", "Other": "Andere", @@ -839,7 +858,7 @@ "Permission denied when accessing microphone": "Zugriff auf das Mikrofon verweigert", "Permission denied when accessing microphone: {{error}}": "Zugriff auf das Mikrofon verweigert: {{error}}", "Permissions": "Berechtigungen", - "Perplexity API Key": "", + "Perplexity API Key": "Perplexity API-Schlüssel", "Personalization": "Personalisierung", "Pin": "Anheften", "Pinned": "Angeheftet", @@ -856,8 +875,8 @@ "Please carefully review the following warnings:": "Bitte überprüfen Sie die folgenden Warnungen sorgfältig:", "Please do not close the settings page while loading the model.": "Bitte schließen die Einstellungen-Seite nicht, während das Modell lädt.", "Please enter a prompt": "Bitte geben Sie einen Prompt ein", - "Please enter a valid path": "", - "Please enter a valid URL": "", + "Please enter a valid path": "Bitte geben Sie einen gültigen Pfad ein", + "Please enter a valid URL": "Bitte geben Sie eine gültige URL ein", "Please fill in all fields.": "Bitte füllen Sie alle Felder aus.", "Please select a model first.": "Bitte wählen Sie zuerst ein Modell aus.", "Please select a model.": "Bitte wählen Sie ein Modell aus.", @@ -898,11 +917,11 @@ "References from": "Referenzen aus", "Refused when it shouldn't have": "Abgelehnt, obwohl es nicht hätte abgelehnt werden sollen", "Regenerate": "Neu generieren", - "Reindex": "", + "Reindex": "Neu indexieren", "Reindex Knowledge Base Vectors": "", "Release Notes": "Veröffentlichungshinweise", "Relevance": "Relevanz", - "Relevance Threshold": "", + "Relevance Threshold": "Relevanzschwelle", "Remove": "Entfernen", "Remove Model": "Modell entfernen", "Rename": "Umbenennen", @@ -939,7 +958,7 @@ "Save Tag": "Tag speichern", "Saved": "Gespeichert", "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": "Das direkte Speichern von Chats im Browser-Speicher wird nicht mehr unterstützt. Bitte nehmen Sie einen Moment Zeit, um Ihre Chats zu exportieren und zu löschen, indem Sie auf die Schaltfläche unten klicken. Keine Sorge, Sie können Ihre Chats problemlos über das Backend wieder importieren.", - "Scroll to bottom when switching between branches": "Beim Wechsel zwischen Branches nach unten scrollen", + "Scroll On Branch Change": "", "Search": "Suchen", "Search a model": "Modell suchen", "Search Base": "Suchbasis", @@ -1016,11 +1035,11 @@ "Share": "Teilen", "Share Chat": "Chat teilen", "Share to Open WebUI Community": "Mit OpenWebUI Community teilen", - "Sharing Permissions": "", + "Sharing Permissions": "Berechtigungen teilen", "Show": "Anzeigen", "Show \"What's New\" modal on login": "\"Was gibt's Neues\"-Modal beim Anmelden anzeigen", "Show Admin Details in Account Pending Overlay": "Admin-Details im Account-Pending-Overlay anzeigen", - "Show Model": "", + "Show Model": "Modell anzeigen", "Show shortcuts": "Verknüpfungen anzeigen", "Show your support!": "Zeigen Sie Ihre Unterstützung!", "Showcased creativity": "Kreativität gezeigt", @@ -1140,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", @@ -1191,7 +1209,7 @@ "user": "Benutzer", "User": "Benutzer", "User location successfully retrieved.": "Benutzerstandort erfolgreich ermittelt.", - "User Webhooks": "", + "User Webhooks": "Benutzer Webhooks", "Username": "Benutzername", "Users": "Benutzer", "Using the default arena model with all models. Click the plus button to add custom models.": "Verwendung des Standard-Arena-Modells mit allen Modellen. Klicken Sie auf die Plus-Schaltfläche, um benutzerdefinierte Modelle hinzuzufügen.", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Schreibe eine kurze Zusammenfassung in 50 Wörtern, die [Thema oder Schlüsselwort] zusammenfasst.", "Write something...": "Schreiben Sie etwas...", "Write your model template content here": "Schreiben Sie hier Ihren Modellvorlageninhalt", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Gestern", "You": "Sie", "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.": "Sie können nur mit maximal {{maxCount}} Datei(en) gleichzeitig chatten.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Personalisieren Sie Interaktionen mit LLMs, indem Sie über die Schaltfläche \"Verwalten\" Erinnerungen hinzufügen.", "You cannot upload an empty file.": "Sie können keine leere Datei hochladen.", - "You do not have permission to upload files": "Sie haben keine Berechtigung, Dateien hochzuladen", "You do not have permission to upload files.": "Sie haben keine Berechtigung zum Hochladen von Dateien.", "You have no archived conversations.": "Du hast keine archivierten Chats.", "You have shared this chat": "Sie haben diesen Chat geteilt", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index a8d1ec019..d4b740730 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Allow Delete Chats", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "such assistant", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Enter model doge tag (e.g. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Enter Number of Steps (e.g. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Enter URL (e.g. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Enter Your Dogemail", "Enter Your Full Name": "Enter Your Full Wow", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Enter Your Barkword", "Enter Your Role": "", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Failed to read clipboard borks", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "", "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.": "", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "New Barkword", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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": "Saving chat logs in browser storage not support anymore. Pls download and delete your chat logs by click button below. Much easy re-import to backend through", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Search very search", "Search a model": "", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Write a summary in 50 words that summarizes [topic or keyword]. Much summarize.", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "", "You": "", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index fde031da3..9f008ec4d 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Επιτρέπεται η διαγραφή συνομιλίας", "Allow Chat Deletion": "Επιτρέπεται η Διαγραφή Συνομιλίας", "Allow Chat Edit": "Επιτρέπεται η Επεξεργασία Συνομιλίας", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Επιτρέπεται η Αποστολή Αρχείων", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Επιτρέπονται μη τοπικές φωνές", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Καταπληκτικό", "an assistant": "ένας βοηθός", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Εισάγετε το Github Raw URL", @@ -431,6 +438,7 @@ "Enter Model ID": "Εισάγετε το ID Μοντέλου", "Enter model tag (e.g. {{modelTag}})": "Εισάγετε την ετικέτα μοντέλου (π.χ. {{modelTag}})", "Enter Mojeek Search API Key": "Εισάγετε το Κλειδί API Mojeek Search", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Εισάγετε τον Αριθμό Βημάτων (π.χ. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter 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 your current password": "", "Enter Your Email": "Εισάγετε το Email σας", "Enter Your Full Name": "Εισάγετε το Πλήρες Όνομά σας", "Enter your message": "Εισάγετε το μήνυμά σας", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Εισάγετε τον Κωδικό σας", "Enter Your Role": "Εισάγετε τον Ρόλο σας", @@ -511,10 +523,15 @@ "Export Tools": "Εξαγωγή Εργαλείων", "External": "", "External Models": "Εξωτερικά Μοντέλα", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Αποτυχία προσθήκης αρχείου.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Αποτυχία δημιουργίας Κλειδιού API.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Αποτυχία ανάγνωσης περιεχομένων πρόχειρου", "Failed to save connections": "", "Failed to save models configuration": "Αποτυχία αποθήκευσης ρυθμίσεων μοντέλων", @@ -544,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": "Ακολούθησε τις οδηγίες τέλεια", @@ -565,7 +581,6 @@ "Function Name": "Όνομα Λειτουργίας", "Function updated successfully": "Η λειτουργία ενημερώθηκε με επιτυχία", "Functions": "Λειτουργίες", - "Functions allow arbitrary code execution": "Οι λειτουργίες επιτρέπουν την εκτέλεση αυθαίρετου κώδικα", "Functions allow arbitrary code execution.": "Οι λειτουργίες επιτρέπουν την εκτέλεση αυθαίρετου κώδικα.", "Functions imported successfully": "Οι λειτουργίες εισήχθησαν με επιτυχία", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Η μνήμη διαγράφηκε με επιτυχία", "Memory updated successfully": "Η μνήμη ενημερώθηκε με επιτυχία", "Merge Responses": "Συγχώνευση Απαντήσεων", + "Merged Response": "Συγχωνευμένη απάντηση", "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)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Νέος Κωδικός", "new-channel": "", "No content found": "Δεν βρέθηκε περιεχόμενο", + "No content found in file.": "", "No content to speak": "Δεν υπάρχει περιεχόμενο για ανάγνωση", "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": "", @@ -939,7 +958,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": "Η αποθήκευση των αρχείων συνομιλίας απευθείας στη μνήμη αποθήκευσης του προγράμματος περιήγησής σας δεν υποστηρίζεται πλέον. Παρακαλώ αφιερώστε λίγο χρόνο να κατεβάσετε και να διαγράψετε τα αρχεία συνομιλίας σας κάνοντας κλικ στο κουμπί παρακάτω. Μην ανησυχείτε, μπορείτε εύκολα να επαναφέρετε τα αρχεία συνομιλιών σας στο backend μέσω", - "Scroll to bottom when switching between branches": "Κύλιση προς τα κάτω όταν αλλάζετε μεταξύ κλάδων", + "Scroll On Branch Change": "", "Search": "Αναζήτηση", "Search a model": "Αναζήτηση μοντέλου", "Search Base": "Βάση Αναζήτησης", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "Εχθές", "You": "Εσείς", "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.": "Μπορείτε να προσωποποιήσετε τις αλληλεπιδράσεις σας με τα LLMs προσθέτοντας αναμνήσεις μέσω του κουμπιού 'Διαχείριση' παρακάτω, κάνοντάς τα πιο χρήσιμα και προσαρμοσμένα σε εσάς.", "You cannot upload an empty file.": "Δεν μπορείτε να ανεβάσετε ένα κενό αρχείο.", - "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": "Έχετε μοιραστεί αυτή τη συνομιλία", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index ef83bdf42..b45ba5399 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "", "Enter URL (e.g. http://localhost:11434)": "", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "", "Enter Your Full Name": "", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "", "Enter Your Role": "", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "", "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.": "", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "", "Mirostat Eta": "", @@ -761,11 +780,11 @@ "New Password": "", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "", "Search a model": "", "Search Base": "", @@ -1140,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": "", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "", "You": "", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index ef83bdf42..b45ba5399 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "", "Enter URL (e.g. http://localhost:11434)": "", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "", "Enter Your Full Name": "", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "", "Enter Your Role": "", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "", "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.": "", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "", "Mirostat Eta": "", @@ -761,11 +780,11 @@ "New Password": "", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "", "Search a model": "", "Search Base": "", @@ -1140,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": "", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "", "You": "", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 3e3179031..5024d7222 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,33 @@ "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 Chat Export": "", + "Allow Chat Share": "", + "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?", @@ -76,6 +78,7 @@ "Always": "Siempre", "Always Collapse Code Blocks": "Plegar Siempre los Bloques de Código", "Always Expand Details": "Expandir Siempre Detalles", + "Always Play Notification Sound": "", "Amazing": "Emocionante", "an assistant": "un asistente", "Analyzed": "Analizado", @@ -91,34 +94,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 +129,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 +151,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 +186,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 +203,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 +290,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 +305,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 +331,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 +347,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 +361,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 +393,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 +417,12 @@ "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 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": "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", @@ -431,10 +438,11 @@ "Enter Model ID": "Ingresar ID del Modelo", "Enter model tag (e.g. {{modelTag}})": "Ingresar la etiqueta del modelo (p.ej. {{modelTag}})", "Enter Mojeek Search API Key": "Ingresar Clave API de Mojeek Search", + "Enter New Password": "", "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,31 +460,35 @@ "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", "Enter URL (e.g. http://127.0.0.1:7860/)": "Ingresar URL (p.ej., http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Ingresar URL (p.ej., http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Ingresa tu contraseña actual", "Enter Your Email": "Ingresa tu correo electrónico", "Enter Your Full Name": "Ingresa su nombre completo", "Enter your message": "Ingresa tu mensaje", "Enter your name": "Ingresa tu nombre", + "Enter Your Name": "", "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 +500,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", @@ -511,10 +523,15 @@ "Export Tools": "Exportar Herramientas", "External": "Externo", "External Models": "Modelos Externos", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Fallo al añadir el archivo.", "Failed to connect to {{URL}} OpenAPI tool server": "Fallo al conectar al servidor de herramientas {{URL}}", "Failed to create API Key.": "Fallo al crear la Clave API.", "Failed to fetch models": "Fallo al obtener los modelos", + "Failed to load file content.": "", "Failed to read clipboard contents": "Fallo al leer el contenido del portapapeles", "Failed to save connections": "Fallo al grabar las conexiones", "Failed to save models configuration": "Fallo al guardar la configuración de los modelos", @@ -523,8 +540,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,12 +556,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", - "Folder name cannot be empty": "El nombre de la carpeta no puede estar vacío", + "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 updated successfully": "Nombre de la carpeta actualizado correctamente", "Followed instructions perfectly": "Siguió las instrucciones perfectamente", @@ -565,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memoria borrada correctamente", "Memory updated successfully": "Memoria actualizada correctamente", "Merge Responses": "Fusionar Respuestas", + "Merged Response": "Respuesta combinada", "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.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nueva Contraseña", "new-channel": "nuevo-canal", "No content found": "No se encontró contenido", + "No content found in file.": "", "No content to speak": "No hay contenido para hablar", "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", @@ -777,7 +796,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 +823,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 +843,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 +870,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 +913,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 +921,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", @@ -939,7 +958,7 @@ "Save Tag": "Guardar Etiqueta", "Saved": "Guardado", "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": "Ya no está soportado guardar registros de chat directamente en el almacenamiento del navegador. Por favor, dedica un momento a descargar y eliminar tus registros de chat pulsando en el botón de abajo. No te preocupes, puedes re-importar fácilmente tus registros desde las opciones de configuración", - "Scroll to bottom when switching between branches": "Desplazar hacia abajo cuando se cambia de rama", + "Scroll On Branch Change": "", "Search": "Buscar", "Search a model": "Buscar un Modelo", "Search Base": "Busqueda Base", @@ -1020,7 +1039,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 +1080,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 +1088,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 +1133,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.", @@ -1140,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", @@ -1182,18 +1200,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 +1231,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Escribe un resumen en 50 palabras que resuma [tema o palabra clave].", "Write something...": "Escribe algo...", "Write your model template content here": "Escribe el contenido de la plantilla de tu modelo aquí", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Ayer", "You": "Tu", "You are currently using a trial license. Please contact support to upgrade your license.": "Actualmente estás utilizando una licencia de prueba. Por favor, para actualizar su licencia contacta con soporte.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Solo puedes chatear con un máximo de {{maxCount}} archivo(s) a la vez.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Puedes personalizar tus interacciones con los LLMs añadiendo memorias a través del botón 'Gestionar' debajo, haciendo que te sean más útiles y personalizados.", "You cannot upload an empty file.": "No puedes subir un archivo vacío.", - "You do not have permission to upload files": "No tienes permiso para subir archivos", "You do not have permission to upload files.": "No tienes permiso para subir archivos.", "You have no archived conversations.": "No tienes conversaciones archivadas.", "You have shared this chat": "Has compartido esta conversación", diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json index a6b34f5f4..98815bc91 100644 --- a/src/lib/i18n/locales/et-EE/translation.json +++ b/src/lib/i18n/locales/et-EE/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Luba vestluse kustutamine", "Allow Chat Deletion": "Luba vestluse kustutamine", "Allow Chat Edit": "Luba vestluse muutmine", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Luba failide üleslaadimine", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Luba mitte-lokaalsed hääled", @@ -76,6 +78,7 @@ "Always": "Alati", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Suurepärane", "an assistant": "assistent", "Analyzed": "Analüüsitud", @@ -414,6 +417,10 @@ "Enter Document Intelligence Key": "Sisestage dokumendi intelligentsuse võti", "Enter domains separated by commas (e.g., example.com,site.org)": "Sisestage domeenid komadega eraldatult (nt example.com,site.org)", "Enter Exa API Key": "Sisestage Exa API võti", + "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 Github Raw URL": "Sisestage Github toorURL", @@ -431,6 +438,7 @@ "Enter Model ID": "Sisestage mudeli ID", "Enter model tag (e.g. {{modelTag}})": "Sisestage mudeli silt (nt {{modelTag}})", "Enter Mojeek Search API Key": "Sisestage Mojeek Search API võti", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Sisestage sammude arv (nt 50)", "Enter Perplexity API Key": "Sisestage Perplexity API võti", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Sisestage URL (nt http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Sisestage URL (nt http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Sisestage oma praegune parool", "Enter Your Email": "Sisestage oma e-post", "Enter Your Full Name": "Sisestage oma täisnimi", "Enter your message": "Sisestage oma sõnum", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "Sisestage oma uus parool", "Enter Your Password": "Sisestage oma parool", "Enter Your Role": "Sisestage oma roll", @@ -511,10 +523,15 @@ "Export Tools": "Ekspordi tööriistad", "External": "", "External Models": "Välised mudelid", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Faili lisamine ebaõnnestus.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "API võtme loomine ebaõnnestus.", "Failed to fetch models": "Mudelite toomine ebaõnnestus", + "Failed to load file content.": "", "Failed to read clipboard contents": "Lõikelaua sisu lugemine ebaõnnestus", "Failed to save connections": "", "Failed to save models configuration": "Mudelite konfiguratsiooni salvestamine ebaõnnestus", @@ -544,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", @@ -565,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Mälu edukalt kustutatud", "Memory updated successfully": "Mälu edukalt uuendatud", "Merge Responses": "Ühenda vastused", + "Merged Response": "Kombineeritud vastus", "Message rating should be enabled to use this feature": "Selle funktsiooni kasutamiseks peaks sõnumite hindamine olema lubatud", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Teie saadetud sõnumeid pärast lingi loomist ei jagata. Kasutajad, kellel on URL, saavad vaadata jagatud vestlust.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Uus parool", "new-channel": "uus-kanal", "No content found": "Sisu ei leitud", + "No content found in file.": "", "No content to speak": "Pole mida rääkida", "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", @@ -939,7 +958,7 @@ "Save Tag": "Salvesta silt", "Saved": "Salvestatud", "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": "Vestluslogi salvestamine otse teie brauseri mällu pole enam toetatud. Palun võtke hetk, et alla laadida ja kustutada oma vestluslogi, klõpsates allpool olevat nuppu. Ärge muretsege, saate hõlpsasti oma vestluslogi tagarakendusse uuesti importida, kasutades", - "Scroll to bottom when switching between branches": "Keri alla harus liikumisel", + "Scroll On Branch Change": "", "Search": "Otsing", "Search a model": "Otsi mudelit", "Search Base": "Otsingu baas", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Kirjutage 50-sõnaline kokkuvõte, mis võtab kokku [teema või märksõna].", "Write something...": "Kirjutage midagi...", "Write your model template content here": "Kirjutage oma mudeli malli sisu siia", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Eile", "You": "Sina", "You are currently using a trial license. Please contact support to upgrade your license.": "Kasutate praegu proovilitsentsi. Palun võtke ühendust toega, et oma litsentsi uuendada.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Saate korraga vestelda maksimaalselt {{maxCount}} faili(ga).", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Saate isikupärastada oma suhtlust LLM-idega, lisades mälestusi alumise 'Halda' nupu kaudu, muutes need kasulikumaks ja teile kohandatumaks.", "You cannot upload an empty file.": "Te ei saa üles laadida tühja faili.", - "You do not have permission to upload files": "Teil pole õigust faile üles laadida", "You do not have permission to upload files.": "Teil pole õigust faile üles laadida.", "You have no archived conversations.": "Teil pole arhiveeritud vestlusi.", "You have shared this chat": "Olete seda vestlust jaganud", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index 53a8b3e6a..4ff344591 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Baimendu Txata Ezabatzea", "Allow Chat Deletion": "Baimendu Txata Ezabatzea", "Allow Chat Edit": "Baimendu Txata Editatzea", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Baimendu Fitxategiak Igotzea", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Baimendu urruneko ahotsak", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Harrigarria", "an assistant": "laguntzaile bat", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Sartu Github Raw URLa", @@ -431,6 +438,7 @@ "Enter Model ID": "Sartu Eredu IDa", "Enter model tag (e.g. {{modelTag}})": "Sartu eredu etiketa (adib. {{modelTag}})", "Enter Mojeek Search API Key": "Sartu Mojeek Bilaketa API Gakoa", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Sartu Urrats Kopurua (adib. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Sartu URLa (adib. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Sartu URLa (adib. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Sartu Zure Posta Elektronikoa", "Enter Your Full Name": "Sartu Zure Izen-abizenak", "Enter your message": "Sartu zure mezua", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Sartu Zure Pasahitza", "Enter Your Role": "Sartu Zure Rola", @@ -511,10 +523,15 @@ "Export Tools": "Esportatu Tresnak", "External": "", "External Models": "Kanpoko Ereduak", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Huts egin du fitxategia gehitzean.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Huts egin du API Gakoa sortzean.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Huts egin du arbelaren edukia irakurtzean", "Failed to save connections": "", "Failed to save models configuration": "Huts egin du ereduen konfigurazioa gordetzean", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memoria ongi ezabatu da", "Memory updated successfully": "Memoria ongi eguneratu da", "Merge Responses": "Batu erantzunak", + "Merged Response": "Erantzun bateratua", "Message rating should be enabled to use this feature": "Mezuen balorazioa gaitu behar da funtzionalitate hau erabiltzeko", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Esteka sortu ondoren bidaltzen dituzun mezuak ez dira partekatuko. URLa duten erabiltzaileek partekatutako txata ikusi ahal izango dute.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Pasahitz berria", "new-channel": "", "No content found": "Ez da edukirik aurkitu", + "No content found in file.": "", "No content to speak": "Ez dago hitz egiteko edukirik", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Gorde etiketa", "Saved": "Gordeta", "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": "Txat erregistroak zuzenean zure nabigatzailearen biltegian gordetzea ez da jadanik onartzen. Mesedez, hartu une bat zure txat erregistroak deskargatu eta ezabatzeko beheko botoia sakatuz. Ez kezkatu, zure txat erregistroak erraz inportatu ditzakezu berriro backendera honen bidez", - "Scroll to bottom when switching between branches": "Joan behera adarren artean aldatzean", + "Scroll On Branch Change": "", "Search": "Bilatu", "Search a model": "Bilatu modelo bat", "Search Base": "Bilaketa oinarria", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Idatzi 50 hitzeko laburpen bat [gaia edo gako-hitza] laburbiltzen duena.", "Write something...": "Idatzi zerbait...", "Write your model template content here": "Idatzi hemen zure modelo txantiloi edukia", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Atzo", "You": "Zu", "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.": "Gehienez {{maxCount}} fitxategirekin txateatu dezakezu aldi berean.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "LLMekin dituzun interakzioak pertsonalizatu ditzakezu memoriak gehituz beheko 'Kudeatu' botoiaren bidez, lagungarriagoak eta zuretzat egokituagoak eginez.", "You cannot upload an empty file.": "Ezin duzu fitxategi huts bat kargatu.", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "Ez duzu fitxategiak kargatzeko baimenik.", "You have no archived conversations.": "Ez duzu artxibatutako elkarrizketarik.", "You have shared this chat": "Txat hau partekatu duzu", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 2badcedbf..7b54bb826 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -1,172 +1,175 @@ { - "-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`)": "", + "(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)": "(آخرین)", - "(Ollama)": "", + "(Ollama)": "(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": "", - "A new version (v{{LATEST_VERSION}}) is now available.": "", + "*Prompt node ID(s) are required for image generation": "*شناسه(های) گره پرامپت برای تولید تصویر مورد نیاز است", + "A new version (v{{LATEST_VERSION}}) is now available.": "نسخه جدید (v{{LATEST_VERSION}}) در دسترس است.", "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": "", - "Access": "", - "Access Control": "", - "Accessible to all users": "", + "Accept autocomplete generation / Jump to prompt variable": "پذیرش تکمیل خودکار / پرش به متغیر پرامپت", + "Access": "دسترسی", + "Access Control": "کنترل دسترسی", + "Accessible to all users": "قابل دسترسی برای همه کاربران", "Account": "حساب کاربری", "Account Activation Pending": "فعال\u200cسازی حساب در حال انتظار", "Accurate information": "اطلاعات دقیق", "Actions": "کنش\u200cها", - "Activate": "", - "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "", + "Activate": "فعال کردن", + "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "این دستور را با تایپ \"/{{COMMAND}}\" در ورودی چت فعال کنید.", "Active Users": "کاربران فعال", "Add": "اضافه کردن", - "Add a model ID": "", + "Add a model ID": "افزودن شناسه مدل", "Add a short description about what this model does": "افزودن توضیحات کوتاه در مورد انچه که این مدل انجام می دهد", "Add a tag": "افزودن یک برچسب", "Add Arena Model": "افزودن مدل Arena", - "Add Connection": "", + "Add Connection": "افزودن اتصال", "Add Content": "افزودن محتوا", "Add content here": "محتوا را اینجا اضافه کنید", "Add custom prompt": "افزودن یک درخواست سفارشی", "Add Files": "افزودن فایل\u200cها", - "Add Group": "", + "Add Group": "افزودن گروه", "Add Memory": "افزودن حافظه", "Add Model": "افزودن مدل", - "Add Reaction": "", + "Add Reaction": "افزودن واکنش", "Add Tag": "افزودن برچسب", "Add Tags": "افزودن برچسب\u200cها", "Add text content": "افزودن محتوای متنی", "Add User": "افزودن کاربر", - "Add User Group": "", + "Add User Group": "افزودن گروه کاربری", "Adjusting these settings will apply changes universally to all users.": "با تنظیم این تنظیمات، تغییرات به طور کلی برای همه کاربران اعمال می\u200cشود.", "admin": "مدیر", "Admin": "مدیر", "Admin Panel": "پنل مدیریت", "Admin Settings": "تنظیمات مدیریت", - "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "", + "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "مدیران همیشه به تمام ابزارها دسترسی دارند؛ کاربران نیاز به ابزارهای اختصاص داده شده برای هر مدل در فضای کاری دارند.", "Advanced Parameters": "پارامترهای پیشرفته", "Advanced Params": "پارام\u200cهای پیشرفته", - "All": "", + "All": "همه", "All Documents": "همهٔ سند\u200cها", - "All models deleted successfully": "", - "Allow Call": "", - "Allow Chat Controls": "", - "Allow Chat Delete": "", + "All models deleted successfully": "همه مدل\u200cها با موفقیت حذف شدند", + "Allow Call": "اجازه تماس", + "Allow Chat Controls": "اجازه کنترل\u200cهای گفتگو", + "Allow Chat Delete": "اجازه حذف گفتگو", "Allow Chat Deletion": "اجازهٔ حذف گفتگو", - "Allow Chat Edit": "", - "Allow File Upload": "", - "Allow Multiple Models in Chat": "", - "Allow non-local voices": "", - "Allow Speech to Text": "", + "Allow Chat Edit": "اجازه ویرایش گفتگو", + "Allow Chat Export": "", + "Allow Chat Share": "", + "Allow File Upload": "اجازه بارگذاری فایل", + "Allow Multiple Models in Chat": "اجازه استفاده از چند مدل در گفتگو", + "Allow non-local voices": "اجازه صداهای غیر محلی", + "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": "", + "Allow Voice Interruption in Call": "اجازه قطع صدا در تماس", + "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": "", - "Amazing": "", + "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 نشان\u200cدهنده حداقل احتمال برای در نظر گرفتن یک توکن نسبت به احتمال محتمل\u200cترین توکن است. به عنوان مثال، با p=0.05 و محتمل\u200cترین توکن با احتمال 0.9، لاگیت\u200cهای با مقدار کمتر از 0.045 فیلتر می\u200cشوند.", + "Always": "همیشه", + "Always Collapse Code Blocks": "همیشه بلوک\u200cهای کد را جمع کن", + "Always Expand Details": "همیشه جزئیات را گسترش بده", + "Always Play Notification Sound": "", + "Amazing": "شگفت\u200cانگیز", "an assistant": "یک دستیار", - "Analyzed": "", - "Analyzing...": "", + "Analyzed": "تحلیل شده", + "Analyzing...": "در حال تحلیل...", "and": "و", "and {{COUNT}} more": "و {{COUNT}} مورد دیگر", "and create a new shared link.": "و یک پیوند اشتراک\u200cگذاری جدید ایجاد کنید.", - "Android": "", + "Android": "اندروید", "API Base URL": "نشانی پایهٔ API", "API Key": "کلید API", "API Key created.": "کلید API ساخته شد.", - "API Key Endpoint Restrictions": "", + "API Key Endpoint Restrictions": "محدودیت\u200cهای نقطه پایانی کلید API", "API keys": "کلیدهای API", - "Application DN": "", - "Application DN Password": "", - "applies to all users with the \"user\" role": "", + "Application DN": "DN برنامه", + "Application DN Password": "رمز عبور DN برنامه", + "applies to all users with the \"user\" role": "برای همه کاربران با نقش \"کاربر\" اعمال می\u200cشود", "April": "آوریل", "Archive": "بایگانی", "Archive All Chats": "بایگانی همه گفتگوها", "Archived Chats": "گفتگوهای بایگانی\u200cشده", - "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?": "", + "archived-chat-export": "خروجی-گفتگوی-بایگانی-شده", + "Are you sure you want to clear all memories? This action cannot be undone.": "آیا مطمئن هستید که می\u200cخواهید تمام حافظه\u200cها را پاک کنید؟ این عمل قابل بازگشت نیست.", + "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?": "مطمئنید؟", - "Arena Models": "", - "Artifacts": "", - "Ask": "", + "Arena Models": "مدل\u200cهای آرنا", + "Artifacts": "مصنوعات", + "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": "آگوست", - "Auth": "", - "Authenticate": "", - "Authentication": "", - "Auto": "", + "Auth": "احراز هویت", + "Authenticate": "احراز هویت", + "Authentication": "احراز هویت", + "Auto": "خودکار", "Auto-Copy Response to Clipboard": "کپی خودکار پاسخ به کلیپ بورد", "Auto-playback response": "پخش خودکار پاسخ", - "Autocomplete Generation": "", - "Autocomplete Generation Input Max Length": "", - "Automatic1111": "", - "AUTOMATIC1111 Api Auth String": "", + "Autocomplete Generation": "تولید تکمیل خودکار", + "Autocomplete Generation Input Max Length": "حداکثر طول ورودی تولید تکمیل خودکار", + "Automatic1111": "اتوماتیک1111", + "AUTOMATIC1111 Api Auth String": "رشته احراز هویت API اتوماتیک1111", "AUTOMATIC1111 Base URL": "پایه URL AUTOMATIC1111 ", "AUTOMATIC1111 Base URL is required.": "به URL پایه AUTOMATIC1111 مورد نیاز است.", "Available list": "فهرست دردسترس", - "Available Tools": "", + "Available Tools": "ابزارهای موجود", "available!": "در دسترس!", - "Awful": "", + "Awful": "وحشتناک", "Azure AI Speech": "سخنگوی هوش\u200cمصنوعی Azure", "Azure Region": "منطقهٔ Azure", "Back": "بازگشت", "Bad Response": "پاسخ خوب نیست", "Banners": "بنر", "Base Model (From)": "مدل پایه (از)", - "Batch Size (num_batch)": "", + "Batch Size (num_batch)": "اندازه دسته (num_batch)", "before": "قبل", "Being lazy": "حالت سازنده", - "Beta": "", - "Bing Search V7 Endpoint": "", - "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)": "", + "Beta": "بتا", + "Bing Search V7 Endpoint": "نقطه پایانی جستجوی Bing V7", + "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فرض: هیچ)", "Brave Search API Key": "کلید API جستجوی شجاع", - "By {{name}}": "", - "Bypass Embedding and Retrieval": "", - "Calendar": "", - "Call": "", - "Call feature is not supported when using Web STT engine": "", + "By {{name}}": "توسط {{name}}", + "Bypass Embedding and Retrieval": "دور زدن جاسازی و بازیابی", + "Calendar": "تقویم", + "Call": "تماس", + "Call feature is not supported when using Web STT engine": "ویژگی تماس هنگام استفاده از موتور Web STT پشتیبانی نمی\u200cشود", "Camera": "دوربین", "Cancel": "لغو", "Capabilities": "قابلیت", - "Capture": "", - "Certificate Path": "", + "Capture": "ضبط", + "Certificate Path": "مسیر گواهینامه", "Change Password": "تغییر رمز عبور", - "Channel Name": "", - "Channels": "", - "Character": "", - "Character limit for autocomplete generation input": "", - "Chart new frontiers": "", + "Channel Name": "نام کانال", + "Channels": "کانال\u200cها", + "Character": "شخصیت", + "Character limit for autocomplete generation input": "محدودیت کاراکتر برای ورودی تولید تکمیل خودکار", + "Chart new frontiers": "ترسیم مرزهای جدید", "Chat": "گفتگو", "Chat Background Image": "تصویر پس\u200cزمینهٔ گفتگو", "Chat Bubble UI": "رابط کاربری حبابی گفتگو", "Chat Controls": "کنترل\u200cهای گفتگو", "Chat direction": "جهت\u200cگفتگو", "Chat Overview": "نمای کلی گفتگو", - "Chat Permissions": "", + "Chat Permissions": "مجوزهای گفتگو", "Chat Tags Auto-Generation": "تولید خودکار برچسب\u200cهای گفتگو", "Chats": "گفتگو\u200cها", "Check Again": "بررسی دوباره", @@ -175,72 +178,72 @@ "Choose a model before saving...": "قبل از ذخیره یک مدل را انتخاب کنید...", "Chunk Overlap": "همپوشانی تکه", "Chunk Size": "اندازه تکه", - "Ciphers": "", + "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 download user import template file.": "برای دانلود فایل قالب واردات کاربر اینجا کلیک کنید.", + "Click here to learn more about faster-whisper and see the available models.": "برای یادگیری بیشتر درباره faster-whisper و دیدن مدل\u200cهای موجود اینجا کلیک کنید.", + "Click here to see available models.": "برای دیدن مدل\u200cهای موجود اینجا کلیک کنید.", "Click here to select": "برای انتخاب اینجا کلیک کنید", "Click here to select a csv file.": "برای انتخاب یک فایل csv اینجا را کلیک کنید.", - "Click here to select a py file.": "", - "Click here to upload a workflow.json file.": "", + "Click here to select a py file.": "برای انتخاب یک فایل py اینجا کلیک کنید.", + "Click here to upload a workflow.json file.": "برای آپلود فایل workflow.json اینجا کلیک کنید.", "click here.": "اینجا کلیک کنید.", "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.": "", + "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "دسترسی نوشتن در کلیپ\u200cبورد رد شد. لطفاً تنظیمات مرورگر خود را برای اعطای دسترسی لازم بررسی کنید.", "Clone": "کلون", - "Clone Chat": "", - "Clone of {{TITLE}}": "", + "Clone Chat": "کلون گفتگو", + "Clone of {{TITLE}}": "کلون {{TITLE}}", "Close": "بسته", - "Code execution": "", - "Code Execution": "", - "Code Execution Engine": "", - "Code Execution Timeout": "", - "Code formatted successfully": "", - "Code Interpreter": "", - "Code Interpreter Engine": "", - "Code Interpreter Prompt Template": "", - "Collapse": "", + "Code execution": "اجرای کد", + "Code Execution": "اجرای کد", + "Code Execution Engine": "موتور اجرای کد", + "Code Execution Timeout": "مهلت اجرای کد", + "Code formatted successfully": "کد با موفقیت قالب\u200cبندی شد", + "Code Interpreter": "مفسر کد", + "Code Interpreter Engine": "موتور مفسر کد", + "Code Interpreter Prompt Template": "قالب پرامپت مفسر کد", + "Collapse": "جمع کردن", "Collection": "مجموعه", - "Color": "", + "Color": "رنگ", "ComfyUI": "کومیوآی", - "ComfyUI API Key": "", + "ComfyUI API Key": "کلید API کومیوآی", "ComfyUI Base URL": "URL پایه کومیوآی", "ComfyUI Base URL is required.": "URL پایه کومیوآی الزامی است.", - "ComfyUI Workflow": "", - "ComfyUI Workflow Nodes": "", + "ComfyUI Workflow": "گردش کار کومیوآی", + "ComfyUI Workflow Nodes": "گره\u200cهای گردش کار کومیوآی", "Command": "دستور", - "Completions": "", + "Completions": "تکمیل\u200cها", "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": "", + "Confirm your action": "عملیات خود را تایید کنید", + "Confirm your new password": "رمز عبور جدید خود را تایید کنید", + "Connect to your own OpenAI compatible API endpoints.": "به نقاط پایانی API سازگار با OpenAI خود متصل شوید.", + "Connect to your own OpenAPI compatible external tool servers.": "به سرورهای ابزار خارجی سازگار با OpenAPI خود متصل شوید.", + "Connection failed": "اتصال ناموفق بود", + "Connection successful": "اتصال موفقیت\u200cآمیز بود", "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.": "تلاش برای استدلال در مدل\u200cهای استدلالی را محدود می\u200cکند. فقط برای مدل\u200cهای استدلالی از ارائه\u200cدهندگان خاصی که از تلاش استدلالی پشتیبانی می\u200cکنند قابل اجراست.", "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.": "", - "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.": "", + "Continue with Email": "با ایمیل ادامه دهید", + "Continue with LDAP": "با LDAP ادامه دهید", + "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "کنترل نحوه تقسیم متن پیام برای درخواست\u200cهای TTS. 'علامت\u200cگذاری' به جملات تقسیم می\u200cکند، 'پاراگراف\u200cها' به پاراگراف\u200cها تقسیم می\u200cکند و 'هیچ\u200cکدام' پیام را به عنوان یک رشته واحد نگه می\u200cدارد.", + "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.": "کنترل تکرار توالی\u200cهای توکن در متن تولید شده. مقدار بالاتر (مثلاً 1.5) تکرارها را شدیدتر جریمه می\u200cکند، در حالی که مقدار پایین\u200cتر (مثلاً 1.1) ملایم\u200cتر خواهد بود. در 1، غیرفعال است.", "Controls": "کنترل\u200cها", - "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.": "تعادل بین انسجام و تنوع خروجی را کنترل می\u200cکند. مقدار پایین\u200cتر منجر به متن متمرکزتر و منسجم\u200cتر می\u200cشود.", "Copied": "کپی شد", "Copied shared chat URL to clipboard!": "URL چت به کلیپ بورد کپی شد!", "Copied to clipboard": "به بریده\u200cدان کپی\u200cشد", @@ -249,282 +252,296 @@ "Copy last code block": "کپی آخرین بلوک کد", "Copy last response": "کپی آخرین پاسخ", "Copy Link": "کپی لینک", - "Copy to clipboard": "", + "Copy to clipboard": "کپی به کلیپ\u200cبورد", "Copying to clipboard was successful!": "کپی کردن در کلیپ بورد با موفقیت انجام شد!", - "CORS must be properly configured by the provider to allow requests from Open WebUI.": "", - "Create": "", - "Create a knowledge base": "", + "CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS باید توسط ارائه\u200cدهنده به درستی پیکربندی شود تا درخواست\u200cها از Open WebUI مجاز باشند.", + "Create": "ایجاد", + "Create a knowledge base": "ایجاد یک پایگاه دانش", "Create a model": "ایجاد یک مدل", "Create Account": "ساخت حساب کاربری", - "Create Admin Account": "", - "Create Channel": "", - "Create Group": "", - "Create Knowledge": "", + "Create Admin Account": "ایجاد حساب مدیر", + "Create Channel": "ایجاد کانال", + "Create Group": "ایجاد گروه", + "Create Knowledge": "ایجاد دانش", "Create new key": "ساخت کلید جدید", - "Create new secret key": "ساخت کلید gehez جدید", + "Create new secret key": "ساخت کلید مخفی جدید", "Created at": "ایجاد شده در", "Created At": "ایجاد شده در", "Created by": "ایجاد شده توسط", "CSV Import": "درون\u200cریزی CSV", - "Ctrl+Enter to Send": "", + "Ctrl+Enter to Send": "Ctrl+Enter برای ارسال", "Current Model": "مدل فعلی", "Current Password": "رمز عبور فعلی", "Custom": "دلخواه", - "Danger Zone": "", + "Danger Zone": "منطقه خطر", "Dark": "تیره", "Database": "پایگاه داده", "December": "دسامبر", "Default": "پیشفرض", - "Default (Open AI)": "", + "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 Model": "مدل پیشفرض", "Default model updated": "مدل پیشفرض به\u200cروزرسانی شد", - "Default Models": "", - "Default permissions": "", - "Default permissions updated successfully": "", + "Default Models": "مدل\u200cهای پیش\u200cفرض", + "Default permissions": "مجوزهای پیش\u200cفرض", + "Default permissions updated successfully": "مجوزهای پیش\u200cفرض با موفقیت به\u200cروز شدند", "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 389 or 636 if TLS is enabled": "پیش\u200cفرض به 389 یا 636 اگر TLS فعال باشد", + "Default to ALL": "پیش\u200cفرض به همه", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "پیش\u200cفرض به بازیابی قطعه\u200cای برای استخراج محتوای متمرکز و مرتبط، این برای اکثر موارد توصیه می\u200cشود.", "Default User Role": "نقش کاربر پیش فرض", "Delete": "حذف", "Delete a model": "حذف یک مدل", "Delete All Chats": "حذف همه گفتگوها", - "Delete All Models": "", + "Delete All Models": "حذف همه مدل\u200cها", "Delete chat": "حذف گپ", "Delete Chat": "حذف گپ", - "Delete chat?": "", - "Delete folder?": "", - "Delete function?": "", - "Delete Message": "", - "Delete message?": "", - "Delete prompt?": "", + "Delete chat?": "گفتگو حذف شود؟", + "Delete folder?": "پوشه حذف شود؟", + "Delete function?": "تابع حذف شود؟", + "Delete Message": "حذف پیام", + "Delete message?": "پیام حذف شود؟", + "Delete prompt?": "پرامپت حذف شود؟", "delete this link": "حذف این لینک", - "Delete tool?": "", + "Delete tool?": "ابزار حذف شود؟", "Delete User": "حذف کاربر", "Deleted {{deleteModelTag}}": "{{deleteModelTag}} پاک شد", "Deleted {{name}}": "حذف شده {{name}}", - "Deleted User": "", - "Describe your knowledge base and objectives": "", + "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 Tool Servers": "", - "Disabled": "", - "Discover a function": "", + "Direct": "مستقیم", + "Direct Connections": "اتصالات مستقیم", + "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "اتصالات مستقیم به کاربران اجازه می\u200cدهد به نقاط پایانی API سازگار با OpenAI خود متصل شوند.", + "Direct Connections settings updated": "تنظیمات اتصالات مستقیم به\u200cروزرسانی شد", + "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, download, and explore custom functions": "", + "Discover a tool": "کشف یک ابزار", + "Discover how to use Open WebUI and seek support from the community.": "نحوه استفاده از Open WebUI را کشف کنید و از انجمن پشتیبانی بگیرید.", + "Discover wonders": "کشف شگفتی\u200cها", + "Discover, download, and explore custom functions": "کشف، دانلود و کاوش توابع سفارشی", "Discover, download, and explore custom prompts": "پرامپت\u200cهای سفارشی را کشف، دانلود و کاوش کنید", - "Discover, download, and explore custom tools": "", + "Discover, download, and explore custom tools": "کشف، دانلود و کاوش ابزارهای سفارشی", "Discover, download, and explore model presets": "پیش تنظیمات مدل را کشف، دانلود و کاوش کنید", - "Dismissible": "", - "Display": "", - "Display Emoji in Call": "", + "Dismissible": "قابل رد کردن", + "Display": "نمایش", + "Display Emoji in Call": "نمایش اموجی در تماس", "Display the username instead of You in the Chat": "نمایش نام کاربری به جای «شما» در چت", - "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.": "", + "Displays citations in the response": "نمایش استنادها در پاسخ", + "Dive into knowledge": "غوطه\u200cور شدن در دانش", + "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.": "آدرس سرور داکلینگ مورد نیاز است.", "Document": "سند", - "Document Intelligence": "", - "Document Intelligence endpoint and key required.": "", - "Documentation": "", + "Document Intelligence": "هوش اسناد", + "Document Intelligence endpoint and key required.": "نقطه پایانی و کلید هوش اسناد مورد نیاز است.", + "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 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": "", + "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": "", - "Draw": "", + "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'.": "به طور مثال '30s','10m'. واحد\u200cهای زمانی معتبر 's', 'm', 'h' هستند.", - "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 Memory": "", + "Edit Arena Model": "ویرایش مدل آرنا", + "Edit Channel": "ویرایش کانال", + "Edit Connection": "ویرایش اتصال", + "Edit Default Permissions": "ویرایش مجوزهای پیش\u200cفرض", + "Edit Memory": "ویرایش حافظه", "Edit User": "ویرایش کاربر", - "Edit User Group": "", - "ElevenLabs": "", + "Edit User Group": "ویرایش گروه کاربری", + "ElevenLabs": "الون\u200cلبز", "Email": "ایمیل", - "Embark on adventures": "", - "Embedding": "", - "Embedding Batch Size": "", + "Embark on adventures": "شروع ماجراجویی\u200cها", + "Embedding": "پیدائش", + "Embedding Batch Size": "اندازه دسته پیدائش", "Embedding Model": "مدل پیدائش", "Embedding Model Engine": "محرک مدل پیدائش", "Embedding model set to \"{{embedding_model}}\"": "مدل پیدائش را به \"{{embedding_model}}\" تنظیم کنید", - "Enable API Key": "", - "Enable autocomplete generation for chat messages": "", - "Enable Code Execution": "", - "Enable Code Interpreter": "", + "Enable API Key": "فعال\u200cسازی کلید API", + "Enable autocomplete generation for chat messages": "فعال\u200cسازی تولید تکمیل خودکار برای پیام\u200cهای چت", + "Enable Code Execution": "فعال\u200cسازی اجرای کد", + "Enable Code Interpreter": "فعال\u200cسازی مفسر کد", "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 Message Rating": "", - "Enable Mirostat sampling for controlling perplexity.": "", + "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.": "فعال\u200cسازی قفل حافظه (mlock) برای جلوگیری از تعویض داده\u200cهای مدل از RAM. این گزینه مجموعه صفحات کاری مدل را در RAM قفل می\u200cکند و اطمینان می\u200cدهد که به دیسک منتقل نمی\u200cشوند. این می\u200cتواند با جلوگیری از خطاهای صفحه و تضمین دسترسی سریع به داده\u200cها، عملکرد را حفظ کند.", + "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.": "فعال\u200cسازی نگاشت حافظه (mmap) برای بارگیری داده\u200cهای مدل. این گزینه به سیستم اجازه می\u200cدهد از فضای دیسک به عنوان گسترش RAM استفاده کند با در نظر گرفتن فایل\u200cهای دیسک مانند اینکه در RAM هستند. این می\u200cتواند با اجازه دادن به دسترسی سریع\u200cتر به داده\u200cها، عملکرد مدل را بهبود بخشد. با این حال، ممکن است با همه سیستم\u200cها به درستی کار نکند و می\u200cتواند مقدار قابل توجهی از فضای دیسک را مصرف کند.", + "Enable Message Rating": "فعال\u200cسازی امتیازدهی پیام", + "Enable Mirostat sampling for controlling perplexity.": "فعال\u200cسازی نمونه\u200cبرداری میروستات برای کنترل سردرگمی", "Enable New Sign Ups": "فعال کردن ثبت نام\u200cهای جدید", - "Enabled": "", - "Enforce Temporary Chat": "", + "Enabled": "فعال شده", + "Enforce Temporary Chat": "اجبار چت موقت", "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": "برای ذخیره سازی اطلاعات خود، یک توضیح کوتاه درباره خود را وارد کنید", - "Enter api auth string (e.g. username:password)": "", - "Enter Application DN": "", - "Enter Application DN Password": "", - "Enter Bing Search V7 Endpoint": "", - "Enter Bing Search V7 Subscription Key": "", - "Enter Bocha Search API Key": "", + "Enter api auth string (e.g. username:password)": "رشته احراز هویت api را وارد کنید (مثلا username:password)", + "Enter Application DN": "DN برنامه را وارد کنید", + "Enter Application DN Password": "رمز عبور DN برنامه را وارد کنید", + "Enter Bing Search V7 Endpoint": "نقطه پایانی جستجوی Bing V7 را وارد کنید", + "Enter Bing Search V7 Subscription Key": "کلید اشتراک جستجوی Bing V7 را وارد کنید", + "Enter Bocha Search API Key": "کلید API جستجوی Bocha را وارد کنید", "Enter Brave Search API Key": "کلید API جستجوی شجاع را وارد کنید", - "Enter certificate path": "", - "Enter CFG Scale (e.g. 7.0)": "", + "Enter certificate path": "مسیر گواهینامه را وارد کنید", + "Enter CFG Scale (e.g. 7.0)": "مقیاس CFG را وارد کنید (مثال: 7.0)", "Enter Chunk Overlap": "مقدار Chunk Overlap را وارد کنید", "Enter Chunk Size": "مقدار Chunk Size را وارد کنید", - "Enter comma-seperated \"token:bias_value\" pairs (example: 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 Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", - "Enter Github Raw URL": "ادرس Github Raw را وارد کنید", + "Enter comma-seperated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "جفت\u200cهای \"توکن:مقدار_بایاس\" را با کاما جدا شده وارد کنید (مثال: 5432:100, 413:-100)", + "Enter description": "توضیحات را وارد کنید", + "Enter Docling Server URL": "آدرس سرور Docling را وارد کنید", + "Enter Document Intelligence Endpoint": "نقطه پایانی هوش سند را وارد کنید", + "Enter Document Intelligence Key": "کلید هوش سند را وارد کنید", + "Enter domains separated by commas (e.g., example.com,site.org)": "دامنه\u200cها را با کاما جدا کنید (مثال: example.com,site.org)", + "Enter Exa API Key": "کلید API اکسا را وارد کنید", + "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": "آدرس پایه API فایرکراول را وارد کنید", + "Enter Firecrawl API Key": "کلید API فایرکراول را وارد کنید", + "Enter Github Raw URL": "آدرس Github Raw را وارد کنید", "Enter Google PSE API Key": "کلید API گوگل PSE را وارد کنید", "Enter Google PSE Engine Id": "شناسه موتور PSE گوگل را وارد کنید", "Enter Image Size (e.g. 512x512)": "اندازه تصویر را وارد کنید (مثال: 512x512)", - "Enter Jina API Key": "", - "Enter Jupyter Password": "", - "Enter Jupyter Token": "", - "Enter Jupyter URL": "", - "Enter Kagi Search API Key": "", - "Enter Key Behavior": "", + "Enter Jina API Key": "کلید API جینا را وارد کنید", + "Enter Jupyter Password": "رمز عبور ژوپیتر را وارد کنید", + "Enter Jupyter Token": "توکن ژوپیتر را وارد کنید", + "Enter Jupyter URL": "آدرس ژوپیتر را وارد کنید", + "Enter Kagi Search API Key": "کلید API جستجوی کاگی را وارد کنید", + "Enter Key Behavior": "رفتار کلید را وارد کنید", "Enter language codes": "کد زبان را وارد کنید", - "Enter Mistral API Key": "", - "Enter Model ID": "", + "Enter Mistral API Key": "کلید API میسترال را وارد کنید", + "Enter Model ID": "شناسه مدل را وارد کنید", "Enter model tag (e.g. {{modelTag}})": "تگ مدل را وارد کنید (مثلا {{modelTag}})", - "Enter Mojeek Search API Key": "", - "Enter Number of Steps (e.g. 50)": "تعداد گام ها را وارد کنید (مثال: 50)", - "Enter Perplexity API Key": "", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", - "Enter proxy URL (e.g. https://user:password@host:port)": "", - "Enter reasoning effort": "", - "Enter Sampler (e.g. Euler a)": "", - "Enter Scheduler (e.g. Karras)": "", + "Enter Mojeek Search API Key": "کلید API جستجوی موجیک را وارد کنید", + "Enter New Password": "", + "Enter Number of Steps (e.g. 50)": "تعداد گام\u200cها را وارد کنید (مثال: 50)", + "Enter Perplexity API Key": "کلید API پرپلکسیتی را وارد کنید", + "Enter Playwright Timeout": "مهلت پلی\u200cرایت را وارد کنید", + "Enter Playwright WebSocket URL": "آدرس وب\u200cسوکت پلی\u200cرایت را وارد کنید", + "Enter proxy URL (e.g. https://user:password@host:port)": "آدرس پراکسی را وارد کنید (مثال: https://user:password@host:port)", + "Enter reasoning effort": "تلاش استدلال را وارد کنید", + "Enter Sampler (e.g. Euler a)": "نمونه\u200cگیر را وارد کنید (مثال: Euler a)", + "Enter Scheduler (e.g. Karras)": "زمان\u200cبند را وارد کنید (مثال: Karras)", "Enter Score": "امتیاز را وارد کنید", - "Enter SearchApi API Key": "", - "Enter SearchApi Engine": "", + "Enter SearchApi API Key": "کلید API جستجو را وارد کنید", + "Enter SearchApi Engine": "موتور جستجو را وارد کنید", "Enter Searxng Query URL": "نشانی وب پرسوجوی Searxng را وارد کنید", - "Enter Seed": "", - "Enter SerpApi API Key": "", - "Enter SerpApi Engine": "", - "Enter Serper API Key": "کلید API Serper را وارد کنید", - "Enter Serply API Key": "", - "Enter Serpstack API Key": "کلید API Serpstack را وارد کنید", - "Enter server host": "", - "Enter server label": "", - "Enter server port": "", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", + "Enter Seed": "مقدار بذر را وارد کنید", + "Enter SerpApi API Key": "کلید API سرپ را وارد کنید", + "Enter SerpApi Engine": "موتور سرپ را وارد کنید", + "Enter Serper API Key": "کلید API سرپر را وارد کنید", + "Enter Serply API Key": "کلید API سرپلی را وارد کنید", + "Enter Serpstack API Key": "کلید API سرپ\u200cاستک را وارد کنید", + "Enter server host": "میزبان سرور را وارد کنید", + "Enter server label": "برچسب سرور را وارد کنید", + "Enter server port": "پورت سرور را وارد کنید", + "Enter Sougou Search API sID": "شناسه API جستجوی سوگو را وارد کنید", + "Enter Sougou Search API SK": "کلید SK جستجوی سوگو را وارد کنید", "Enter stop sequence": "توالی توقف را وارد کنید", - "Enter system prompt": "", - "Enter system prompt here": "", - "Enter Tavily API Key": "", - "Enter Tavily Extract Depth": "", - "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "", - "Enter Tika Server URL": "", - "Enter timeout in seconds": "", - "Enter to Send": "", + "Enter system prompt": "پرامپت سیستم را وارد کنید", + "Enter system prompt here": "پرامپت سیستم را اینجا وارد کنید", + "Enter Tavily API Key": "کلید API تاویلی را وارد کنید", + "Enter Tavily Extract Depth": "عمق استخراج تاویلی را وارد کنید", + "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "آدرس عمومی رابط کاربری وب خود را وارد کنید. این آدرس برای تولید پیوندها در اعلان\u200cها استفاده خواهد شد.", + "Enter Tika Server URL": "آدرس سرور تیکا را وارد کنید", + "Enter timeout in seconds": "مهلت زمانی را به ثانیه وارد کنید", + "Enter to Send": "برای ارسال اینتر را بزنید", "Enter Top K": "مقدار Top K را وارد کنید", - "Enter Top K Reranker": "", + "Enter Top K Reranker": "مقدار Top K بازچینش\u200cگر را وارد کنید", "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": "", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", + "Enter your current password": "رمز عبور فعلی خود را وارد کنید", "Enter Your Email": "ایمیل خود را وارد کنید", "Enter Your Full Name": "نام کامل خود را وارد کنید", - "Enter your message": "", - "Enter your name": "", - "Enter your new password": "", + "Enter your message": "پیام خود را وارد کنید", + "Enter your name": "نام خود را وارد کنید", + "Enter Your Name": "", + "Enter your new password": "رمز عبور جدید خود را وارد کنید", "Enter Your Password": "رمز عبور خود را وارد کنید", "Enter Your Role": "نقش خود را وارد کنید", - "Enter Your Username": "", - "Enter your webhook URL": "", + "Enter Your Username": "نام کاربری خود را وارد کنید", + "Enter your webhook URL": "آدرس وب\u200cهوک خود را وارد کنید", "Error": "خطا", - "ERROR": "", - "Error accessing Google Drive: {{error}}": "", - "Error uploading file: {{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.": "", - "Exclude": "", - "Execute code for analysis": "", - "Executing **{{NAME}}**...": "", - "Expand": "", + "ERROR": "خطا", + "Error accessing Google Drive: {{error}}": "خطا در دسترسی به گوگل درایو: {{error}}", + "Error uploading file: {{error}}": "خطا در بارگذاری فایل: {{error}}", + "Evaluations": "ارزیابی\u200cها", + "Exa API Key": "کلید 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.": "تعداد جایگاه\u200cهای مجاز در مجوز شما تمام شده است. لطفاً برای افزایش تعداد جایگاه\u200cها با پشتیبانی تماس بگیرید.", + "Exclude": "مستثنی کردن", + "Execute code for analysis": "اجرای کد برای تحلیل", + "Executing **{{NAME}}**...": "در حال اجرای **{{NAME}}**...", + "Expand": "گسترش", "Experimental": "آزمایشی", - "Explain": "", - "Explain this section to me in more detail": "", - "Explore the cosmos": "", - "Export": "برون\u200cریزی", - "Export All Archived Chats": "", - "Export All Chats (All Users)": "برون\u200cریزی همه گفتگو\u200cها (همه کاربران)", - "Export chat (.json)": "برون\u200cریزی گفتگو (json)", - "Export Chats": "برون\u200cریزی گفتگوها", + "Explain": "توضیح", + "Explain this section to me in more detail": "این بخش را با جزئیات بیشتر برای من توضیح دهید", + "Explore the cosmos": "کاوش کیهان", + "Export": "خروجی گرفتن", + "Export All Archived Chats": "خروجی گرفتن تمام گفتگوهای بایگانی شده", + "Export All Chats (All Users)": "خروجی گرفتن همه گفتگو\u200cها (همه کاربران)", + "Export chat (.json)": "خروجی گرفتن گفتگو (json)", + "Export Chats": "خروجی گرفتن گفتگوها", "Export Config to JSON File": "برون\u200cریزی پیکربندی به پروندهٔ JSON", "Export Functions": "برون\u200cریزی توابع", "Export Models": "برون\u200cریزی مدل\u200cها", - "Export Presets": "", + "Export Presets": "برون\u200cریزی پیش\u200cتنظیم\u200cها", "Export Prompts": "برون\u200cریزی پرامپت\u200cها", - "Export to CSV": "", + "Export to CSV": "برون\u200cریزی به CSV", "Export Tools": "برون\u200cریزی ابزارها", - "External": "", + "External": "خارجی", "External Models": "مدل\u200cهای بیرونی", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "خطا در افزودن پرونده", - "Failed to connect to {{URL}} OpenAPI tool server": "", + "Failed to connect to {{URL}} OpenAPI tool server": "خطا در اتصال به سرور ابزار OpenAPI {{URL}}", "Failed to create API Key.": "ایجاد کلید API با خطا مواجه شد.", - "Failed to fetch models": "", + "Failed to fetch models": "خطا در دریافت مدل\u200cها", + "Failed to load file content.": "", "Failed to read clipboard contents": "خواندن محتوای کلیپ بورد ناموفق بود", - "Failed to save connections": "", - "Failed to save models configuration": "", + "Failed to save connections": "خطا در ذخیره\u200cسازی اتصالات", + "Failed to save models configuration": "خطا در ذخیره\u200cسازی پیکربندی مدل\u200cها", "Failed to update settings": "خطا در به\u200cروزرسانی تنظیمات", "Failed to upload file.": "خطا در بارگذاری پرونده", - "Features": "", - "Features Permissions": "", + "Features": "ویژگی\u200cها", + "Features Permissions": "مجوزهای ویژگی\u200cها", "February": "فوریه", "Feedback History": "تاریخچهٔ بازخورد", - "Feedbacks": "", + "Feedbacks": "بازخوردها", "Feel free to add specific details": "اگر به دلخواه، معلومات خاصی اضافه کنید", "File": "پرونده", "File added successfully.": "پرونده با موفقیت افزوده شد.", @@ -533,405 +550,407 @@ "File not found.": "پرونده یافت نشد.", "File removed successfully.": "پرونده با موفقیت حذف شد.", "File size should not exceed {{maxSize}} MB.": "حجم پرونده نبایستی از {{maxSize}} MB بیشتر باشد.", - "File uploaded successfully": "", + "File uploaded successfully": "پرونده با موفقیت بارگذاری شد", "Files": "پرونده\u200cها", - "Filter is now globally disabled": "", - "Filter is now globally enabled": "", - "Filters": "", + "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.": "فانگ سرفیس شناسایی شد: نمی توان از نمایه شما به عنوان آواتار استفاده کرد. پیش فرض به عکس پروفایل پیش فرض برگشت داده شد.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", + "Firecrawl API Base URL": "آدرس پایه API فایرکراول", + "Firecrawl API Key": "کلید API فایرکراول", "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": "", + "Folder deleted successfully": "پوشه با موفقیت حذف شد", + "Folder name cannot be empty.": "نام پوشه نمی\u200cتواند خالی باشد.", + "Folder name updated successfully": "نام پوشه با موفقیت به\u200cروز شد", "Followed instructions perfectly": "دستورالعمل ها را کاملا دنبال کرد", - "Forge new paths": "", - "Form": "", - "Format your variables using brackets like this:": "", - "Forwards system user session credentials to authenticate": "", + "Forge new paths": "مسیرهای جدید بسازید", + "Form": "فرم", + "Format your variables using brackets like this:": "متغیرهای خود را با استفاده از براکت به این شکل قالب\u200cبندی کنید:", + "Forwards system user session credentials to authenticate": "اعتبارنامه\u200cهای نشست کاربر سیستم را برای احراز هویت ارسال می\u200cکند", "Frequency Penalty": "مجازات فرکانس", - "Full Context Mode": "", - "Function": "", - "Function Calling": "", - "Function created successfully": "", - "Function deleted successfully": "", - "Function Description": "", - "Function ID": "", - "Function is now globally disabled": "", - "Function is now globally enabled": "", - "Function Name": "", - "Function updated successfully": "", - "Functions": "", - "Functions allow arbitrary code execution": "", - "Functions allow arbitrary code execution.": "", + "Full Context Mode": "حالت متن کامل", + "Function": "تابع", + "Function Calling": "فراخوانی تابع", + "Function created successfully": "تابع با موفقیت ایجاد شد", + "Function deleted successfully": "تابع با موفقیت حذف شد", + "Function Description": "توضیحات تابع", + "Function ID": "شناسه تابع", + "Function is now globally disabled": "تابع به صورت سراسری غیرفعال شد", + "Function is now globally enabled": "تابع به صورت سراسری فعال شد", + "Function Name": "نام تابع", + "Function updated successfully": "تابع با موفقیت به\u200cروز شد", + "Functions": "توابع", + "Functions allow arbitrary code execution.": "توابع اجازه اجرای کد دلخواه را می\u200cدهند.", "Functions imported successfully": "درون\u200cریزی توابع با موفقیت انجام شد", - "Gemini": "", - "Gemini API Config": "", - "Gemini API Key is required.": "", + "Gemini": "جمینی", + "Gemini API Config": "پیکربندی API جمینی", + "Gemini API Key is required.": "کلید API جمینی مورد نیاز است.", "General": "عمومی", - "Generate an image": "", - "Generate Image": "", - "Generate prompt pair": "", + "Generate an image": "تولید یک تصویر", + "Generate Image": "تولید تصویر", + "Generate prompt pair": "تولید جفت پرامپت", "Generating search query": "در حال تولید پرسوجوی جستجو", - "Get started": "", - "Get started with {{WEBUI_NAME}}": "", - "Global": "", + "Get started": "شروع کنید", + "Get started with {{WEBUI_NAME}}": "شروع کار با {{WEBUI_NAME}}", + "Global": "سراسری", "Good Response": "پاسخ خوب", - "Google Drive": "", + "Google Drive": "گوگل درایو", "Google PSE API Key": "گوگل PSE API کلید", "Google PSE Engine Id": "شناسه موتور PSE گوگل", - "Group created successfully": "", - "Group deleted successfully": "", - "Group Description": "", - "Group Name": "", - "Group updated successfully": "", - "Groups": "", - "Haptic Feedback": "", + "Group created successfully": "گروه با موفقیت ایجاد شد", + "Group deleted successfully": "گروه با موفقیت حذف شد", + "Group Description": "توضیحات گروه", + "Group Name": "نام گروه", + "Group updated successfully": "گروه با موفقیت به\u200cروز شد", + "Groups": "گروه\u200cها", + "Haptic Feedback": "بازخورد لمسی", "has no conversations.": "ندارد.", "Hello, {{name}}": "سلام، {{name}}", "Help": "کمک", - "Help us create the best community leaderboard by sharing your feedback history!": "", - "Hex Color": "", - "Hex Color - Leave empty for default color": "", + "Help us create the best community leaderboard by sharing your feedback history!": "با به اشتراک گذاشتن تاریخچه بازخورد خود به ما در ایجاد بهترین تابلوی امتیازات جامعه کمک کنید!", + "Hex Color": "رنگ هگز", + "Hex Color - Leave empty for default color": "رنگ هگز - برای رنگ پیش\u200cفرض خالی بگذارید", "Hide": "پنهان\u200cسازی", - "Hide Model": "", - "Home": "", - "Host": "", + "Hide Model": "پنهان کردن مدل", + "Home": "خانه", + "Host": "میزبان", "How can I help you today?": "امروز چطور می توانم کمک تان کنم؟", - "How would you rate this response?": "", + "How would you rate this response?": "این پاسخ را چگونه ارزیابی می\u200cکنید؟", "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": "", - "iframe Sandbox Allow Forms": "", - "iframe Sandbox Allow Same Origin": "", - "Ignite curiosity": "", - "Image": "", - "Image Compression": "", - "Image Generation": "", + "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.": "من تأیید می\u200cکنم که پیامدهای اقدام خود را خوانده و درک کرده\u200cام. از خطرات مرتبط با اجرای کد دلخواه آگاه هستم و اعتبار منبع را تأیید کرده\u200cام.", + "ID": "شناسه", + "iframe Sandbox Allow Forms": "اجازه فرم\u200cها در سندباکس iframe", + "iframe Sandbox Allow Same Origin": "اجازه منشأ یکسان در سندباکس iframe", + "Ignite curiosity": "کنجکاوی را برانگیزید", + "Image": "تصویر", + "Image Compression": "فشرده\u200cسازی تصویر", + "Image Generation": "تولید تصویر", "Image Generation (Experimental)": "تولید تصویر (آزمایشی)", "Image Generation Engine": "موتور تولید تصویر", - "Image Max Compression Size": "", - "Image Prompt Generation": "", - "Image Prompt Generation Prompt": "", + "Image Max Compression Size": "حداکثر اندازه فشرده\u200cسازی تصویر", + "Image Prompt Generation": "تولید پرامپت تصویر", + "Image Prompt Generation Prompt": "پرامپت تولید پرامپت تصویر", "Image Settings": "تنظیمات تصویر", "Images": "تصاویر", "Import Chats": "درون\u200cریزی گفتگوها", "Import Config from JSON File": "درون\u200cریزی از پروندهٔ JSON", "Import Functions": "درون\u200cریزی توابع", "Import Models": "درون\u200cریزی مدل\u200cها", - "Import Presets": "", + "Import Presets": "درون\u200cریزی پیش\u200cتنظیم\u200cها", "Import Prompts": "درون\u200cریزی پرامپت\u200cها", "Import Tools": "درون\u200cریزی ابزارها", "Include": "شامل", - "Include `--api-auth` flag when running stable-diffusion-webui": "", + "Include `--api-auth` flag when running stable-diffusion-webui": "هنگام اجرای stable-diffusion-webui پرچم `--api-auth` را اضافه کنید", "Include `--api` flag when running stable-diffusion-webui": "فلگ `--api` را هنکام اجرای stable-diffusion-webui استفاده کنید.", - "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "", + "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.": "تأثیر می\u200cگذارد که الگوریتم چقدر سریع به بازخورد متن تولید شده پاسخ می\u200cدهد. نرخ یادگیری پایین\u200cتر منجر به تنظیمات کندتر می\u200cشود، در حالی که نرخ یادگیری بالاتر الگوریتم را پاسخگوتر می\u200cکند.", "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.": "کل محتوا را به عنوان زمینه برای پردازش جامع تزریق کنید، این برای پرس\u200cوجوهای پیچیده توصیه می\u200cشود.", "Input commands": "ورودی دستورات", "Install from Github URL": "نصب از ادرس Github", - "Instant Auto-Send After Voice Transcription": "", - "Integration": "", + "Instant Auto-Send After Voice Transcription": "ارسال خودکار فوری پس از رونویسی صوتی", + "Integration": "یکپارچه\u200cسازی", "Interface": "رابط", - "Invalid file format.": "", - "Invalid JSON schema": "", + "Invalid file format.": "قالب فایل نامعتبر است.", + "Invalid JSON schema": "طرح JSON نامعتبر", "Invalid Tag": "تگ نامعتبر", - "is typing...": "", + "is typing...": "در حال تایپ...", "January": "ژانویه", - "Jina API Key": "", + "Jina API Key": "کلید API جینا", "join our Discord for help.": "برای کمک به دیسکورد ما بپیوندید.", "JSON": "JSON", "JSON Preview": "پیش نمایش JSON", "July": "ژوئن", "June": "جولای", - "Jupyter Auth": "", - "Jupyter URL": "", + "Jupyter Auth": "احراز هویت ژوپیتر", + "Jupyter URL": "آدرس ژوپیتر", "JWT Expiration": "JWT انقضای", "JWT Token": "JWT توکن", - "Kagi Search API Key": "", + "Kagi Search API Key": "کلید API جستجوی کاگی", "Keep Alive": "Keep Alive", - "Key": "", + "Key": "کلید", "Keyboard shortcuts": "میانبرهای صفحه کلید", - "Knowledge": "", - "Knowledge Access": "", - "Knowledge created successfully.": "", - "Knowledge deleted successfully.": "", - "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", - "Knowledge updated successfully": "", - "Kokoro.js (Browser)": "", - "Kokoro.js Dtype": "", - "Label": "", - "Landing Page Mode": "", + "Knowledge": "دانش", + "Knowledge Access": "دسترسی به دانش", + "Knowledge created successfully.": "دانش با موفقیت ایجاد شد.", + "Knowledge deleted successfully.": "دانش با موفقیت حذف شد.", + "Knowledge Public Sharing": "اشتراک\u200cگذاری عمومی دانش", + "Knowledge reset successfully.": "دانش با موفقیت بازنشانی شد.", + "Knowledge updated successfully": "دانش با موفقیت به\u200cروز شد", + "Kokoro.js (Browser)": "Kokoro.js (مرورگر)", + "Kokoro.js Dtype": "نوع داده Kokoro.js", + "Label": "برچسب", + "Landing Page Mode": "حالت صفحه فرود", "Language": "زبان", - "Language Locales": "", + "Language Locales": "محلی\u200cسازی زبان", "Last Active": "آخرین فعال", - "Last Modified": "", - "Last reply": "", - "LDAP": "", - "LDAP server updated": "", - "Leaderboard": "", - "Learn more about OpenAPI tool servers.": "", - "Leave empty for unlimited": "", - "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "", - "Leave empty to include all models from \"{{url}}/models\" endpoint": "", - "Leave empty to include all models or select specific models": "", - "Leave empty to use the default prompt, or enter a custom prompt": "", - "Leave model field empty to use the default model.": "", - "License": "", + "Last Modified": "آخرین تغییر", + "Last reply": "آخرین پاسخ", + "LDAP": "LDAP", + "LDAP server updated": "سرور LDAP به\u200cروز شد", + "Leaderboard": "تابلوی امتیازات", + "Learn more about OpenAPI tool servers.": "درباره سرورهای ابزار OpenAPI بیشتر بدانید.", + "Leave empty for unlimited": "برای نامحدود خالی بگذارید", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "برای شامل شدن همه مدل\u200cها از نقطه پایانی \"{{url}}/api/tags\" خالی بگذارید", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "برای شامل شدن همه مدل\u200cها از نقطه پایانی \"{{url}}/models\" خالی بگذارید", + "Leave empty to include all models or select specific models": "برای شامل شدن همه مدل\u200cها خالی بگذارید یا مدل\u200cهای خاص را انتخاب کنید", + "Leave empty to use the default prompt, or enter a custom prompt": "برای استفاده از پرامپت پیش\u200cفرض خالی بگذارید، یا یک پرامپت سفارشی وارد کنید", + "Leave model field empty to use the default model.": "برای استفاده از مدل پیش\u200cفرض، فیلد مدل را خالی بگذارید.", + "License": "مجوز", "Light": "روشن", - "Listening...": "", - "Llama.cpp": "", + "Listening...": "در حال گوش دادن...", + "Llama.cpp": "Llama.cpp", "LLMs can make mistakes. Verify important information.": "مدل\u200cهای زبانی بزرگ می\u200cتوانند اشتباه کنند. اطلاعات مهم را راستی\u200cآزمایی کنید.", - "Loader": "", - "Loading Kokoro.js...": "", - "Local": "", - "Local Models": "", - "Location access not allowed": "", - "Logit Bias": "", - "Lost": "", + "Loader": "بارگذار", + "Loading Kokoro.js...": "در حال بارگذاری Kokoro.js...", + "Local": "محلی", + "Local Models": "مدل\u200cهای محلی", + "Location access not allowed": "دسترسی به موقعیت مکانی مجاز نیست", + "Logit Bias": "بایاس لاجیت", + "Lost": "گم شده", "LTR": "LTR", "Made by Open WebUI Community": "ساخته شده توسط OpenWebUI Community", "Make sure to enclose them with": "مطمئن شوید که آنها را با این محصور کنید:", - "Make sure to export a workflow.json file as API format from ComfyUI.": "", - "Manage": "", - "Manage Direct Connections": "", - "Manage Models": "", - "Manage Ollama": "", - "Manage Ollama API Connections": "", - "Manage OpenAI API Connections": "", + "Make sure to export a workflow.json file as API format from ComfyUI.": "مطمئن شوید که یک فایل workflow.json را به عنوان قالب API از ComfyUI صادر کنید.", + "Manage": "مدیریت", + "Manage Direct Connections": "مدیریت اتصالات مستقیم", + "Manage Models": "مدیریت مدل\u200cها", + "Manage Ollama": "مدیریت ollama", + "Manage Ollama API Connections": "مدیریت اتصالات API ollama", + "Manage OpenAI API Connections": "مدیریت اتصالات API اوپن\u200cای\u200cآی", "Manage Pipelines": "مدیریت خطوط لوله", - "Manage Tool Servers": "", + "Manage Tool Servers": "مدیریت سرورهای ابزار", "March": "مارچ", "Max Tokens (num_predict)": "توکنهای بیشینه (num_predict)", - "Max Upload Count": "", - "Max Upload Size": "", + "Max Upload Count": "حداکثر تعداد آپلود", + "Max Upload Size": "حداکثر اندازه آپلود", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "حداکثر 3 مدل را می توان به طور همزمان دانلود کرد. لطفاً بعداً دوباره امتحان کنید.", "May": "ماهی", "Memories accessible by LLMs will be shown here.": "حافظه های دسترسی به LLMs در اینجا نمایش داده می شوند.", "Memory": "حافظه", - "Memory added successfully": "", - "Memory cleared successfully": "", - "Memory deleted successfully": "", - "Memory updated successfully": "", - "Merge Responses": "", - "Message rating should be enabled to use this feature": "", + "Memory added successfully": "حافظه با موفقیت اضافه شد", + "Memory cleared successfully": "حافظه با موفقیت پاک شد", + "Memory deleted successfully": "حافظه با موفقیت حذف شد", + "Memory updated successfully": "حافظه با موفقیت به\u200cروز شد", + "Merge Responses": "ادغام پاسخ\u200cها", + "Merged Response": "پاسخ ادغام شده", + "Message rating should be enabled to use this feature": "برای استفاده از این ویژگی باید امتیازدهی پیام\u200cها فعال باشد", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "پیام های شما بعد از ایجاد لینک شما به اشتراک نمی گردد. کاربران با لینک URL می توانند چت اشتراک را مشاهده کنند.", - "Min P": "", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", + "Min P": "حداقل P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", "Mirostat Tau": "Mirostat Tau", - "Mistral OCR": "", - "Mistral OCR API Key required.": "", - "Model": "", + "Mistral OCR": "تشخیص متن میسترال", + "Mistral OCR API Key required.": "کلید 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 accepts image inputs": "", - "Model created successfully!": "", + "Model {{name}} is now hidden": "مدل {{name}} اکنون مخفی است", + "Model {{name}} is now visible": "مدل {{name}} اکنون قابل مشاهده است", + "Model accepts image inputs": "مدل ورودی تصویر را می\u200cپذیرد", + "Model created successfully!": "مدل با موفقیت ایجاد شد!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "مسیر فایل سیستم مدل یافت شد. برای بروزرسانی نیاز است نام کوتاه مدل وجود داشته باشد.", - "Model Filtering": "", + "Model Filtering": "فیلتر کردن مدل", "Model ID": "شناسه مدل", - "Model IDs": "", - "Model Name": "", + "Model IDs": "شناسه\u200cهای مدل", + "Model Name": "نام مدل", "Model not selected": "مدل انتخاب نشده", "Model Params": "مدل پارامز", - "Model Permissions": "", - "Model updated successfully": "", + "Model Permissions": "مجوزهای مدل", + "Model updated successfully": "مدل با موفقیت به\u200cروز شد", "Modelfile Content": "محتویات فایل مدل", "Models": "مدل\u200cها", - "Models Access": "", - "Models configuration saved successfully": "", - "Models Public Sharing": "", - "Mojeek Search API Key": "", - "more": "", + "Models Access": "دسترسی به مدل\u200cها", + "Models configuration saved successfully": "پیکربندی مدل\u200cها با موفقیت ذخیره شد", + "Models Public Sharing": "اشتراک\u200cگذاری عمومی مدل\u200cها", + "Mojeek Search API Key": "کلید API جستجوی موجیک", + "more": "بیشتر", "More": "بیشتر", "Name": "نام", - "Name your knowledge base": "", - "Native": "", + "Name your knowledge base": "پایگاه دانش خود را نام\u200cگذاری کنید", + "Native": "بومی", "New Chat": "گپ جدید", - "New Folder": "", + "New Folder": "پوشه جدید", "New Password": "رمز عبور جدید", - "new-channel": "", - "No content found": "", - "No content to speak": "", - "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": "", - "No knowledge found": "", - "No memories to clear": "", - "No model IDs": "", - "No models found": "", - "No models selected": "", + "new-channel": "کانال-جدید", + "No content found": "محتوایی یافت نشد", + "No content found in file.": "", + "No content to speak": "محتوایی برای خواندن وجود ندارد", + "No distance available": "فاصله\u200cای در دسترس نیست", + "No feedbacks found": "بازخوردی یافت نشد", + "No file selected": "فایلی انتخاب نشده است", + "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 knowledge found": "دانشی یافت نشد", + "No memories to clear": "حافظه\u200cای برای پاک کردن وجود ندارد", + "No model IDs": "شناسه مدلی وجود ندارد", + "No models found": "مدلی یافت نشد", + "No models selected": "مدلی انتخاب نشده است", "No results found": "نتیجه\u200cای یافت نشد", "No search query generated": "پرسوجوی جستجویی ایجاد نشده است", "No source available": "منبعی در دسترس نیست", - "No users were found.": "", - "No valves to update": "", + "No users were found.": "کاربری یافت نشد.", + "No valves to update": "شیری برای به\u200cروزرسانی وجود ندارد", "None": "هیچ کدام", "Not factually correct": "اشتباهی فکری نیست", - "Not helpful": "", + "Not helpful": "مفید نیست", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "توجه: اگر حداقل نمره را تعیین کنید، جستجو تنها اسنادی را با نمره بیشتر یا برابر با حداقل نمره باز می گرداند.", - "Notes": "", - "Notification Sound": "", - "Notification Webhook": "", + "Notes": "یادداشت\u200cها", + "Notification Sound": "صدای اعلان", + "Notification Webhook": "وب\u200cهوک اعلان", "Notifications": "اعلان", "November": "نوامبر", - "num_gpu (Ollama)": "", - "num_thread (Ollama)": "num_thread (اولاما)", - "OAuth ID": "", + "num_gpu (Ollama)": "تعداد GPU (ollama)", + "num_thread (Ollama)": "num_thread (ollama)", + "OAuth ID": "شناسه OAuth", "October": "اکتبر", "Off": "خاموش", "Okay, Let's Go!": "باشه، بزن بریم!", "OLED Dark": "OLED تیره", "Ollama": "Ollama", "Ollama API": "Ollama API", - "Ollama API settings updated": "", - "Ollama Version": "نسخه اولاما", + "Ollama API settings updated": "تنظیمات API ollama به\u200cروز شد", + "Ollama Version": "نسخه ollama", "On": "روشن", - "OneDrive": "", - "Only alphanumeric characters and hyphens are allowed": "", + "OneDrive": "وان\u200cدرایو", + "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 select users and groups with permission can access": "", + "Only collections can be edited, create a new knowledge base to edit/add documents.": "فقط مجموعه\u200cها قابل ویرایش هستند، برای ویرایش/افزودن اسناد یک پایگاه دانش جدید ایجاد کنید.", + "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.": "", - "Oops! There was an error in the previous response.": "", + "Oops! There are files still uploading. Please wait for the upload to complete.": "اوه! هنوز فایل\u200cهایی در حال آپلود هستند. لطفاً منتظر تکمیل آپلود بمانید.", + "Oops! There was an error in the previous response.": "اوه! در پاسخ قبلی خطایی رخ داد.", "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "اوه! شما از یک روش پشتیبانی نشده (فقط frontend) استفاده می کنید. لطفاً WebUI را از بکند اجرا کنید.", - "Open file": "", - "Open in full screen": "", + "Open file": "باز کردن فایل", + "Open in full screen": "باز کردن در تمام صفحه", "Open new chat": "باز کردن گپ جدید", - "Open WebUI can use tools provided by any OpenAPI server.": "", - "Open WebUI uses faster-whisper internally.": "", - "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "", - "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "", + "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI می\u200cتواند از ابزارهای ارائه شده توسط هر سرور OpenAPI استفاده کند.", + "Open WebUI uses faster-whisper internally.": "Open WebUI به صورت داخلی از faster-whisper استفاده می\u200cکند.", + "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI از SpeechT5 و جاسازی\u200cهای گوینده CMU Arctic استفاده می\u200cکند.", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "نسخه Open WebUI (v{{OPEN_WEBUI_VERSION}}) پایین\u200cتر از نسخه مورد نیاز (v{{REQUIRED_VERSION}}) است", "OpenAI": "OpenAI", "OpenAI API": "OpenAI API", - "OpenAI API Config": "OpenAI API Config", + "OpenAI API Config": "OpenAI API تنظیمات", "OpenAI API Key is required.": "مقدار کلید OpenAI API مورد نیاز است.", - "OpenAI API settings updated": "", + "OpenAI API settings updated": "تنظیمات API اوپن\u200cای\u200cآی به\u200cروز شد", "OpenAI URL/Key required.": "URL/Key OpenAI مورد نیاز است.", - "openapi.json Path": "", + "openapi.json Path": "مسیر openapi.json", "or": "یا", - "Organize your users": "", + "Organize your users": "کاربران خود را سازماندهی کنید", "Other": "دیگر", "OUTPUT": "خروجی", "Output format": "قالب خروجی", "Overview": "نمای کلی", "page": "صفحه", "Password": "رمز عبور", - "Paste Large Text as File": "", + "Paste Large Text as File": "چسباندن متن بزرگ به عنوان فایل", "PDF document (.pdf)": "PDF سند (.pdf)", "PDF Extract Images (OCR)": "استخراج تصاویر از PDF (OCR)", "pending": "در انتظار", - "Permission denied when accessing media devices": "", - "Permission denied when accessing microphone": "", + "Permission denied when accessing media devices": "دسترسی به دستگاه\u200cهای رسانه رد شد", + "Permission denied when accessing microphone": "دسترسی به میکروفون رد شد", "Permission denied when accessing microphone: {{error}}": "هنگام دسترسی به میکروفون، اجازه داده نشد: {{error}}", - "Permissions": "", - "Perplexity API Key": "", + "Permissions": "مجوزها", + "Perplexity API Key": "کلید API پرپلکسیتی", "Personalization": "شخصی سازی", - "Pin": "", - "Pinned": "", - "Pioneer insights": "", - "Pipeline deleted successfully": "", - "Pipeline downloaded successfully": "", + "Pin": "پین کردن", + "Pinned": "پین شده", + "Pioneer insights": "بینش\u200cهای پیشگام", + "Pipeline deleted successfully": "خط لوله با موفقیت حذف شد", + "Pipeline downloaded successfully": "خط لوله با موفقیت دانلود شد", "Pipelines": "خط لوله", - "Pipelines Not Detected": "", + "Pipelines Not Detected": "خطوط لوله شناسایی نشدند", "Pipelines Valves": "شیرالات خطوط لوله", "Plain text (.txt)": "متن ساده (.txt)", "Playground": "زمین بازی", - "Playwright Timeout (ms)": "", - "Playwright WebSocket URL": "", - "Please carefully review the following warnings:": "", - "Please do not close the settings page while loading the model.": "", - "Please enter a prompt": "", - "Please enter a valid path": "", - "Please enter a valid URL": "", - "Please fill in all fields.": "", - "Please select a model first.": "", - "Please select a model.": "", - "Please select a reason": "", - "Port": "", + "Playwright Timeout (ms)": "مهلت زمانی پلی\u200cرایت (میلی\u200cثانیه)", + "Playwright WebSocket URL": "آدرس وب\u200cسوکت پلی\u200cرایت", + "Please carefully review the following warnings:": "لطفاً هشدارهای زیر را با دقت بررسی کنید:", + "Please do not close the settings page while loading the model.": "لطفاً در حین بارگیری مدل، صفحه تنظیمات را نبندید.", + "Please enter a prompt": "لطفاً یک پرامپت وارد کنید", + "Please enter a valid path": "لطفاً یک مسیر معتبر وارد کنید", + "Please enter a valid URL": "لطفاً یک URL معتبر وارد کنید", + "Please fill in all fields.": "لطفاً همه فیلدها را پر کنید.", + "Please select a model first.": "لطفاً ابتدا یک مدل انتخاب کنید.", + "Please select a model.": "لطفاً یک مدل انتخاب کنید.", + "Please select a reason": "لطفاً یک دلیل انتخاب کنید", + "Port": "پورت", "Positive attitude": "نظرات مثبت", - "Prefix ID": "", - "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", - "Presence Penalty": "", + "Prefix ID": "شناسه پیشوند", + "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "شناسه پیشوند برای جلوگیری از تداخل با سایر اتصالات با افزودن پیشوند به شناسه\u200cهای مدل استفاده می\u200cشود - برای غیرفعال کردن خالی بگذارید", + "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 created successfully": "پرامپت با موفقیت ایجاد شد", "Prompt suggestions": "پیشنهادات پرامپت", - "Prompt updated successfully": "", + "Prompt updated successfully": "پرامپت با موفقیت به\u200cروز شد", "Prompts": "پرامپت\u200cها", - "Prompts Access": "", - "Prompts Public Sharing": "", - "Public": "", + "Prompts Access": "دسترسی پرامپت\u200cها", + "Prompts Public Sharing": "اشتراک\u200cگذاری عمومی پرامپت\u200cها", + "Public": "عمومی", "Pull \"{{searchValue}}\" from Ollama.com": "بازگرداندن \"{{searchValue}}\" از Ollama.com", "Pull a model from Ollama.com": "دریافت یک مدل از Ollama.com", - "Query Generation Prompt": "", + "Query Generation Prompt": "پرامپت تولید کوئری", "RAG Template": "RAG الگوی", - "Rating": "", - "Re-rank models by topic similarity": "", - "Read": "", + "Rating": "امتیازدهی", + "Re-rank models by topic similarity": "رتبه\u200cبندی مجدد مدل\u200cها براساس شباهت موضوعی", + "Read": "خواندن", "Read Aloud": "خواندن به صورت صوتی", - "Reasoning Effort": "", + "Reasoning Effort": "تلاش استدلال", "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.": "", - "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "", - "References from": "", + "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تر خواهد بود.", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "به خود به عنوان \"کاربر\" اشاره کنید (مثلاً، \"کاربر در حال یادگیری اسپانیایی است\")", + "References from": "مراجع از", "Refused when it shouldn't have": "رد شده زمانی که باید نباشد", "Regenerate": "ری\u200cسازی", - "Reindex": "", - "Reindex Knowledge Base Vectors": "", + "Reindex": "فهرست\u200cبندی مجدد", + "Reindex Knowledge Base Vectors": "فهرست\u200cبندی مجدد بردارهای پایگاه دانش", "Release Notes": "یادداشت\u200cهای انتشار", "Relevance": "ارتباط", - "Relevance Threshold": "", + "Relevance Threshold": "آستانه ارتباط", "Remove": "حذف", "Remove Model": "حذف مدل", "Rename": "تغییر نام", - "Reorder Models": "", - "Repeat Last N": "Repeat Last N", - "Repeat Penalty (Ollama)": "", - "Reply in Thread": "", + "Reorder Models": "ترتیب مجدد مدل\u200cها", + "Repeat Last N": "تکرار آخرین N", + "Repeat Penalty (Ollama)": "جریمه تکرار (ollama)", + "Reply in Thread": "پاسخ در رشته", "Request Mode": "حالت درخواست", "Reranking Model": "مدل ری\u200cشناسی مجدد غیرفعال است", "Reranking model disabled": "مدل ری\u200cشناسی مجدد غیرفعال است", "Reranking model set to \"{{reranking_model}}\"": "مدل ری\u200cشناسی مجدد به \"{{reranking_model}}\" تنظیم شده است", - "Reset": "", - "Reset All Models": "", - "Reset Upload Directory": "", - "Reset Vector Storage/Knowledge": "", - "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": "", + "Reset": "بازنشانی", + "Reset All Models": "بازنشانی همه مدل\u200cها", + "Reset Upload Directory": "بازنشانی پوشه آپلود", + "Reset Vector Storage/Knowledge": "بازنشانی ذخیره\u200cسازی برداری/دانش", + "Reset view": "بازنشانی نما", + "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "اعلان\u200cهای پاسخ نمی\u200cتوانند فعال شوند زیرا مجوزهای وب\u200cسایت رد شده\u200cاند. لطفاً تنظیمات مرورگر خود را برای اعطای دسترسی لازم بررسی کنید.", + "Response splitting": "تقسیم پاسخ", "Result": "نتیجه", - "Retrieval": "", - "Retrieval Query Generation": "", - "Rich Text Input for Chat": "", - "RK": "", + "Retrieval": "بازیابی", + "Retrieval Query Generation": "تولید کوئری بازیابی", + "Rich Text Input for Chat": "ورودی متن غنی برای چت", + "RK": "RK", "Role": "نقش", "Rosé Pine": "Rosé Pine", "Rosé Pine Dawn": "Rosé Pine Dawn", "RTL": "RTL", "Run": "اجرا", - "Running": "", + "Running": "در حال اجرا", "Save": "ذخیره", "Save & Create": "ذخیره و ایجاد", "Save & Update": "ذخیره و به\u200cروزرسانی", @@ -939,108 +958,108 @@ "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": "ذخیره گزارش\u200cهای چت مستقیماً در حافظه مرورگر شما دیگر پشتیبانی نمی\u200cشود. لطفاً با کلیک بر روی دکمه زیر، چند لحظه برای دانلود و حذف گزارش های چت خود وقت بگذارید. نگران نباشید، شما به راحتی می توانید گزارش های چت خود را از طریق بکند دوباره وارد کنید", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "جستجو", "Search a model": "جستجوی یک مدل", - "Search Base": "", + "Search Base": "پایه جستجو", "Search Chats": "جستجو گفتگوها", "Search Collection": "جستجوی مجموعه\u200cها", - "Search Filters": "", + "Search Filters": "فیلترهای جستجو", "search for tags": "جستجو برای برچسب\u200cها", "Search Functions": "جستجوی توابع", "Search Knowledge": "جستجوی دانش", "Search Models": "جستجوی مدل\u200cها", - "Search options": "", + "Search options": "گزینه\u200cهای جستجو", "Search Prompts": "جستجوی پرامپت\u200cها", "Search Result Count": "تعداد نتایج جستجو", - "Search the internet": "", + "Search the internet": "جستجوی اینترنت", "Search Tools": "ابزارهای جستجو", - "SearchApi API Key": "", - "SearchApi Engine": "", - "Searched {{count}} sites": "", + "SearchApi API Key": "کلید API SearchApi", + "SearchApi Engine": "موتور SearchApi", + "Searched {{count}} sites": "جستجوی {{count}} سایت", "Searching \"{{searchQuery}}\"": "جستجوی «{{searchQuery}}»", "Searching Knowledge for \"{{searchQuery}}\"": "جستجوی دانش برای «{{searchQuery}}»", "Searxng Query URL": "نشانی وب جستجوی Searxng", "See readme.md for instructions": "برای مشاهده دستورالعمل\u200cها به readme.md مراجعه کنید", "See what's new": "ببینید موارد جدید چه بوده", - "Seed": "", + "Seed": "هسته", "Select a base model": "انتخاب یک مدل پایه", "Select a engine": "انتخاب یک موتور", "Select a function": "انتخاب یک تابع", - "Select a group": "", + "Select a group": "انتخاب یک گروه", "Select a model": "انتخاب یک مدل", "Select a pipeline": "انتخاب یک خط لوله", "Select a pipeline 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": "تنها یک مدل را برای صدا زدن انتخاب کنید", "Selected model(s) do not support image inputs": "مدل) های (انتخاب شده ورودیهای تصویر را پشتیبانی نمیکند", - "Semantic distance to query": "", + "Semantic distance to query": "فاصله معنایی تا پرس و جو", "Send": "ارسال", "Send a Message": "ارسال یک پیام", "Send message": "ارسال پیام", - "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "", + "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "ارسال `stream_options: { include_usage: true }` در درخواست.\nارائه دهندگان پشتیبانی شده در صورت تنظیم، اطلاعات استفاده از توکن را در پاسخ برمی گردانند.", "September": "سپتامبر", - "SerpApi API Key": "", - "SerpApi Engine": "", + "SerpApi API Key": "کلید API سرپ\u200cای\u200cپی\u200cآی", + "SerpApi Engine": "موتور سرپ\u200cای\u200cپی\u200cآی", "Serper API Key": "کلید API Serper", - "Serply API Key": "", + "Serply API Key": "کلید API سرپلی", "Serpstack API Key": "کلید API Serpstack", "Server connection verified": "اتصال سرور تأیید شد", "Set as default": "تنظیم به عنوان پیشفرض", - "Set CFG Scale": "", + "Set CFG Scale": "تنظیم مقیاس CFG", "Set Default Model": "تنظیم مدل پیش فرض", - "Set embedding model": "", + "Set embedding model": "تنظیم مدل جاسازی", "Set embedding model (e.g. {{model}})": "تنظیم مدل پیچشی (برای مثال {{model}})", "Set Image Size": "تنظیم اندازه تصویر", "Set reranking model (e.g. {{model}})": "تنظیم مدل ری\u200cراینگ (برای مثال {{model}})", - "Set Sampler": "", - "Set Scheduler": "", + "Set Sampler": "تنظیم نمونه\u200cگیر", + "Set Scheduler": "تنظیم زمان\u200cبند", "Set Steps": "تنظیم گام\u200cها", "Set Task Model": "تنظیم مدل تکلیف", - "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.": "", - "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.": "", + "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.": "تعداد لایه\u200cهایی را که به GPU منتقل می\u200cشوند تنظیم کنید. افزایش این مقدار می\u200cتواند عملکرد مدل\u200cهایی که برای شتاب\u200cدهی GPU بهینه\u200cسازی شده\u200cاند را به طور قابل توجهی بهبود بخشد اما ممکن است مصرف برق و منابع GPU را نیز افزایش دهد.", + "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.": "تعداد نخ\u200cهای کارگر مورد استفاده برای محاسبات را تنظیم کنید. این گزینه کنترل می\u200cکند که چند نخ برای پردازش همزمان درخواست\u200cهای ورودی استفاده می\u200cشود. افزایش این مقدار می\u200cتواند عملکرد را در بارهای کاری با همزمانی بالا بهبود بخشد اما ممکن است منابع CPU بیشتری مصرف کند.", "Set Voice": "تنظیم صدا", - "Set whisper model": "", - "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 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.": "", + "Set whisper model": "تنظیم مدل ویسپر", + "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.": "یک بایاس ثابت در برابر توکن\u200cهایی که حداقل یک بار ظاهر شده\u200cاند تنظیم می\u200cکند. مقدار بالاتر (مثلاً 1.5) تکرارها را شدیدتر جریمه می\u200cکند، در حالی که مقدار پایین\u200cتر (مثلاً 0.9) آسان\u200cگیرتر خواهد بود. در 0، غیرفعال می\u200cشود.", + "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.": "یک بایاس مقیاس\u200cپذیر در برابر توکن\u200cها برای جریمه کردن تکرارها، بر اساس تعداد دفعات ظاهر شدن آنها تنظیم می\u200cکند. مقدار بالاتر (مثلاً 1.5) تکرارها را شدیدتر جریمه می\u200cکند، در حالی که مقدار پایین\u200cتر (مثلاً 0.9) آسان\u200cگیرتر خواهد بود. در 0، غیرفعال می\u200cشود.", + "Sets how far back for the model to look back to prevent repetition.": "تنظیم می\u200cکند که مدل چقدر به عقب نگاه کند تا از تکرار جلوگیری شود.", + "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.": "عدد تصادفی اولیه را برای تولید تنظیم می\u200cکند. تنظیم این به یک عدد خاص باعث می\u200cشود مدل برای پرامپت یکسان، متن یکسانی تولید کند.", + "Sets the size of the context window used to generate the next token.": "اندازه پنجره متن مورد استفاده برای تولید توکن بعدی را تنظیم می\u200cکند.", + "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.": "توالی\u200cهای توقف مورد استفاده را تنظیم می\u200cکند. وقتی این الگو مشاهده شود، LLM تولید متن را متوقف کرده و برمی\u200cگردد. الگوهای توقف متعدد می\u200cتوانند با مشخص کردن پارامترهای توقف جداگانه متعدد در فایل مدل تنظیم شوند.", "Settings": "تنظیمات", "Settings saved successfully!": "تنظیمات با موفقیت ذخیره شد!", "Share": "اشتراک\u200cگذاری", "Share Chat": "اشتراک\u200cگذاری چت", "Share to Open WebUI Community": "اشتراک گذاری با OpenWebUI Community", - "Sharing Permissions": "", + "Sharing Permissions": "مجوزهای اشتراک\u200cگذاری", "Show": "نمایش", - "Show \"What's New\" modal on login": "", - "Show Admin Details in Account Pending Overlay": "", - "Show Model": "", + "Show \"What's New\" modal on login": "نمایش مودال \"موارد جدید\" هنگام ورود", + "Show Admin Details in Account Pending Overlay": "نمایش جزئیات مدیر در پوشش حساب در انتظار", + "Show Model": "نمایش مدل", "Show shortcuts": "نمایش میانبرها", - "Show your support!": "", + "Show your support!": "حمایت خود را نشان دهید!", "Showcased creativity": "ایده\u200cآفرینی", "Sign in": "ورود", - "Sign in to {{WEBUI_NAME}}": "", - "Sign in to {{WEBUI_NAME}} with LDAP": "", + "Sign in to {{WEBUI_NAME}}": "ورود به {{WEBUI_NAME}}", + "Sign in to {{WEBUI_NAME}} with LDAP": "ورود به {{WEBUI_NAME}} با LDAP", "Sign Out": "خروج", "Sign up": "ثبت نام", - "Sign up to {{WEBUI_NAME}}": "", - "Signing in to {{WEBUI_NAME}}": "", - "sk-1234": "", - "Sougou Search API sID": "", - "Sougou Search API SK": "", + "Sign up to {{WEBUI_NAME}}": "ثبت نام در {{WEBUI_NAME}}", + "Signing in to {{WEBUI_NAME}}": "در حال ورود به {{WEBUI_NAME}}", + "sk-1234": "sk-1234", + "Sougou Search API sID": "شناسه API جستجوی سوگو", + "Sougou Search API SK": "کلید SK API جستجوی سوگو", "Source": "منبع", - "Speech Playback Speed": "", + "Speech Playback Speed": "سرعت پخش گفتار", "Speech recognition error: {{error}}": "خطای تشخیص گفتار: {{error}}", "Speech-to-Text Engine": "موتور گفتار به متن", "Stop": "توقف", "Stop Sequence": "توقف توالی", - "Stream Chat Response": "", + "Stream Chat Response": "پاسخ چت جریانی", "STT Model": "مدل تبدیل صدا به متن", "STT Settings": "تنظیمات تبدیل صدا به متن", "Subtitle (e.g. about the Roman Empire)": "زیرنویس (برای مثال: درباره رمانی)", @@ -1051,216 +1070,217 @@ "Support this plugin:": "حمایت از این افزونه", "Sync directory": "هم\u200cگام\u200cسازی پوشه", "System": "سیستم", - "System Instructions": "", + "System Instructions": "دستورالعمل\u200cهای سیستم", "System Prompt": "پرامپت سیستم", - "Tags": "", - "Tags Generation": "", - "Tags Generation Prompt": "", - "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "", - "Talk to model": "", - "Tap to interrupt": "", - "Tasks": "", - "Tavily API Key": "", - "Tavily Extract Depth": "", + "Tags": "برچسب\u200cها", + "Tags Generation": "تولید برچسب\u200cها", + "Tags Generation Prompt": "پرامپت تولید برچسب\u200cها", + "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.": "نمونه\u200cبرداری دنباله آزاد برای کاهش تأثیر توکن\u200cهای کم احتمال\u200cتر از خروجی استفاده می\u200cشود. مقدار بالاتر (مثلاً 2.0) تأثیر را بیشتر کاهش می\u200cدهد، در حالی که مقدار 1.0 این تنظیم را غیرفعال می\u200cکند.", + "Talk to model": "گفتگو با مدل", + "Tap to interrupt": "برای وقفه ضربه بزنید", + "Tasks": "وظایف", + "Tavily API Key": "کلید API تاویلی", + "Tavily Extract Depth": "عمق استخراج تاویلی", "Tell us more:": "بیشتر بگویید:", "Temperature": "دما", "Template": "الگو", - "Temporary Chat": "", - "Text Splitter": "", + "Temporary Chat": "چت موقت", + "Text Splitter": "تقسیم\u200cکننده متن", "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 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.": "", - "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 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.": "", - "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "", - "The score should be a value between 0.0 (0%) and 1.0 (100%).": "امتیاز باید یک مقدار بین 0.0 (0%) و 1.0 (100%) باشد.", - "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "", + "The Application Account DN you bind with for search": "DN حساب برنامه که برای جستجو به آن متصل می\u200cشوید", + "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.": "اندازه دسته تعیین می\u200cکند که چند درخواست متنی همزمان پردازش می\u200cشوند. اندازه دسته بزرگتر می\u200cتواند عملکرد و سرعت مدل را افزایش دهد، اما به حافظه بیشتری نیاز دارد.", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "توسعه\u200cدهندگان این افزونه داوطلبان مشتاق از جامعه هستند. اگر این افزونه را مفید می\u200cدانید، لطفاً در توسعه آن مشارکت کنید.", + "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "تابلوی امتیازات ارزیابی بر اساس سیستم رتبه\u200cبندی Elo است و در زمان واقعی به\u200cروز می\u200cشود.", + "The LDAP attribute that maps to the mail that users use to sign in.": "ویژگی LDAP که به ایمیلی که کاربران برای ورود استفاده می\u200cکنند نگاشت می\u200cشود.", + "The LDAP attribute that maps to the username that users use to sign in.": "ویژگی LDAP که به نام کاربری که کاربران برای ورود استفاده می\u200cکنند نگاشت می\u200cشود.", + "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "تابلوی امتیازات در حال حاضر در نسخه بتا است و ممکن است محاسبات رتبه\u200cبندی را با بهبود الگوریتم تنظیم کنیم.", + "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "حداکثر اندازه فایل به مگابایت. اگر اندازه فایل از این حد بیشتر باشد، فایل آپلود نخواهد شد.", + "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "حداکثر تعداد فایل\u200cهایی که می\u200cتوانند همزمان در چت استفاده شوند. اگر تعداد فایل\u200cها از این حد بیشتر باشد، فایل\u200cها آپلود نخواهند شد.", + "The score should be a value between 0.0 (0%) and 1.0 (100%).": "امتیاز باید مقداری بین 0.0 (0%) و 1.0 (100%) باشد.", + "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "دمای مدل. افزایش دما باعث می\u200cشود مدل خلاقانه\u200cتر پاسخ دهد.", "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.": "", + "Thinking...": "در حال فکر کردن...", + "This action cannot be undone. Do you wish to continue?": "این عمل قابل بازگشت نیست. آیا می\u200cخواهید ادامه دهید؟", + "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.": "", - "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 will delete all existing files in the collection and replace them with newly uploaded files.": "", - "This response was generated by \"{{model}}\"": "", - "This will delete": "", - "This will delete {{NAME}} and all its contents.": "", - "This will delete all models including custom models": "", - "This will delete all models including custom models and cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "این اطمینان می\u200cدهد که مکالمات ارزشمند شما به طور امن در پایگاه داده پشتیبان ذخیره می\u200cشوند. متشکریم!", + "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.": "این گزینه کنترل می\u200cکند که هنگام تازه\u200cسازی متن، چند توکن حفظ شوند. برای مثال، اگر روی 2 تنظیم شود، 2 توکن آخر متن مکالمه حفظ خواهند شد. حفظ متن می\u200cتواند به حفظ پیوستگی مکالمه کمک کند، اما ممکن است توانایی پاسخ به موضوعات جدید را کاهش دهد.", + "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.": "این گزینه حداکثر تعداد توکن\u200cهایی را که مدل می\u200cتواند در پاسخ خود تولید کند تنظیم می\u200cکند. افزایش این محدودیت به مدل اجازه می\u200cدهد پاسخ\u200cهای طولانی\u200cتری ارائه دهد، اما ممکن است احتمال تولید محتوای بی\u200cفایده یا نامربوط را نیز افزایش دهد.", + "This option will delete all existing files in the collection and replace them with newly uploaded files.": "این گزینه تمام فایل\u200cهای موجود در مجموعه را حذف کرده و با فایل\u200cهای جدید آپلود شده جایگزین می\u200cکند.", + "This response was generated by \"{{model}}\"": "این پاسخ توسط \"{{model}}\" تولید شده است", + "This will delete": "این حذف خواهد شد", + "This will delete {{NAME}} and all its contents.": "این {{NAME}} و تمام محتویات آن را حذف خواهد کرد.", + "This will delete all models including custom models": "این همه مدل\u200cها از جمله مدل\u200cهای سفارشی را حذف خواهد کرد", + "This will delete all models including custom models and cannot be undone.": "این همه مدل\u200cها از جمله مدل\u200cهای سفارشی را حذف خواهد کرد و قابل بازگشت نیست.", + "This will reset the knowledge base and sync all files. Do you wish to continue?": "این پایگاه دانش را بازنشانی کرده و همه فایل\u200cها را همگام\u200cسازی خواهد کرد. آیا می\u200cخواهید ادامه دهید؟", "Thorough explanation": "توضیح کامل", - "Thought for {{DURATION}}": "", - "Thought for {{DURATION}} seconds": "", - "Tika": "", - "Tika Server URL required.": "", - "Tiktoken": "", + "Thought for {{DURATION}}": "فکر کردن برای {{DURATION}}", + "Thought for {{DURATION}} seconds": "فکر کردن برای {{DURATION}} ثانیه", + "Tika": "تیکا", + "Tika Server URL required.": "آدرس سرور تیکا مورد نیاز است.", + "Tiktoken": "تیک توکن", "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "با فشردن کلید Tab در ورودی چت پس از هر بار تعویض، چندین متغیر را به صورت متوالی به روزرسانی کنید.", "Title": "عنوان", "Title (e.g. Tell me a fun fact)": "عنوان (برای مثال: به من بگوید چیزی که دوست دارید)", "Title Auto-Generation": "تولید خودکار عنوان", "Title cannot be an empty string.": "عنوان نمی تواند یک رشته خالی باشد.", - "Title Generation": "", + "Title Generation": "تولید عنوان", "Title Generation Prompt": "پرامپت تولید عنوان", - "TLS": "", + "TLS": "TLS", "To access the available model names for downloading,": "برای دسترسی به نام مدل های موجود برای دانلود،", "To access the GGUF models available for downloading,": "برای دسترسی به مدل\u200cهای GGUF موجود برای دانلود،", - "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "", - "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "", - "To learn more about available endpoints, visit our documentation.": "", - "To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "", - "To select actions here, add them to the \"Functions\" workspace first.": "", - "To select filters here, add them to the \"Functions\" workspace first.": "", - "To select toolkits here, add them to the \"Tools\" workspace first.": "", - "Toast notifications for new updates": "", + "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "برای دسترسی به رابط کاربری وب، لطفاً با مدیر تماس بگیرید. مدیران می\u200cتوانند وضعیت کاربران را از پنل مدیریت مدیریت کنند.", + "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "برای اتصال پایگاه دانش در اینجا، ابتدا آنها را به فضای کاری \"دانش\" اضافه کنید.", + "To learn more about available endpoints, visit our documentation.": "برای کسب اطلاعات بیشتر در مورد نقاط پایانی موجود، به مستندات ما مراجعه کنید.", + "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.": "برای حفظ حریم خصوصی شما، فقط امتیازات، شناسه\u200cهای مدل، برچسب\u200cها و متادیتا از بازخورد شما به اشتراک گذاشته می\u200cشود - گفتگوهای شما خصوصی باقی می\u200cماند و شامل نمی\u200cشود.", + "To select actions here, add them to the \"Functions\" workspace first.": "برای انتخاب عملیات در اینجا، ابتدا آنها را به فضای کاری \"توابع\" اضافه کنید.", + "To select filters here, add them to the \"Functions\" workspace first.": "برای انتخاب فیلترها در اینجا، ابتدا آنها را به فضای کاری \"توابع\" اضافه کنید.", + "To select toolkits here, add them to the \"Tools\" workspace first.": "برای انتخاب ابزارها در اینجا، ابتدا آنها را به فضای کاری \"ابزارها\" اضافه کنید.", + "Toast notifications for new updates": "اعلان\u200cهای پاپ\u200cآپ برای به\u200cروزرسانی\u200cهای جدید", "Today": "امروز", "Toggle settings": "نمایش/عدم نمایش تنظیمات", "Toggle sidebar": "نمایش/عدم نمایش نوار کناری", - "Token": "", - "Tokens To Keep On Context Refresh (num_keep)": "", - "Too verbose": "", - "Tool created successfully": "", - "Tool deleted successfully": "", - "Tool Description": "", - "Tool ID": "", - "Tool imported successfully": "", - "Tool Name": "", - "Tool Servers": "", - "Tool updated successfully": "", - "Tools": "", - "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": "", + "Token": "توکن", + "Tokens To Keep On Context Refresh (num_keep)": "تعداد توکن\u200cها برای نگهداری در بازخوانی متن (num_keep)", + "Too verbose": "خیلی طولانی", + "Tool created successfully": "ابزار با موفقیت ایجاد شد", + "Tool deleted successfully": "ابزار با موفقیت حذف شد", + "Tool Description": "توضیحات ابزار", + "Tool ID": "شناسه ابزار", + "Tool imported successfully": "ابزار با موفقیت وارد شد", + "Tool Name": "نام ابزار", + "Tool Servers": "سرورهای ابزار", + "Tool updated successfully": "ابزار با موفقیت به\u200cروزرسانی شد", + "Tools": "ابزارها", + "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 Public Sharing": "اشتراک\u200cگذاری عمومی ابزارها", "Top K": "Top K", - "Top K Reranker": "", + "Top K Reranker": "رتبه\u200cبندی مجدد Top K", "Top P": "Top P", - "Transformers": "", - "Trouble accessing Ollama?": "در دسترسی به اولاما مشکل دارید؟", - "Trust Proxy Environment": "", - "TTS Model": "", + "Transformers": "ترنسفورمرها", + "Trouble accessing Ollama?": "در دسترسی به ollama مشکل دارید؟", + "Trust Proxy Environment": "اعتماد به محیط پراکسی", + "TTS Model": "مدل TTS", "TTS Settings": "تنظیمات TTS", - "TTS Voice": "", + "TTS Voice": "صدای TTS", "Type": "نوع", "Type Hugging Face Resolve (Download) URL": "مقدار URL دانلود (Resolve) Hugging Face را وارد کنید", - "Uh-oh! There was an issue with the response.": "", - "UI": "", - "Unarchive All": "", - "Unarchive All Archived Chats": "", - "Unarchive Chat": "", - "Unlock mysteries": "", - "Unpin": "", - "Unravel secrets": "", - "Untagged": "", + "Uh-oh! There was an issue with the response.": "اوه! مشکلی در پاسخ وجود داشت.", + "UI": "رابط کاربری", + "Unarchive All": "خارج کردن همه از آرشیو", + "Unarchive All Archived Chats": "خارج کردن همه چت\u200cهای آرشیو شده از آرشیو", + "Unarchive Chat": "خارج کردن چت از آرشیو", + "Unlock mysteries": "رمزگشایی از اسرار", + "Unpin": "برداشتن پین", + "Unravel secrets": "کشف رازها", + "Untagged": "بدون برچسب", "Update": "به\u200cروزرسانی", "Update and Copy Link": "به روزرسانی و کپی لینک", - "Update for the latest features and improvements.": "", + "Update for the latest features and improvements.": "برای آخرین ویژگی\u200cها و بهبودها به\u200cروزرسانی کنید.", "Update password": "به روزرسانی رمزعبور", "Updated": "بارگذاری شد", "Updated at": "بارگذاری در", "Updated At": "بارگذاری در", - "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.": "برای قابلیت\u200cهای پیشرفته، از جمله تم و برندسازی سفارشی و پشتیبانی اختصاصی، به طرح دارای مجوز ارتقا دهید.", "Upload": "بارگذاری", "Upload a GGUF model": "آپلود یک مدل GGUF", - "Upload directory": "", - "Upload files": "", + "Upload directory": "پوشه آپلود", + "Upload files": "آپلود فایل\u200cها", "Upload Files": "بارگذاری پروندهها", - "Upload Pipeline": "", + "Upload Pipeline": "خط تولید آپلود", "Upload Progress": "پیشرفت آپلود", - "URL": "", + "URL": "آدرس اینترنتی", "URL Mode": "حالت URL", - "Use '#' in the prompt input to load and include your knowledge.": "", + "Use '#' in the prompt input to load and include your knowledge.": "از '#' در ورودی پرامپت برای بارگیری و شامل کردن دانش خود استفاده کنید.", "Use Gravatar": "استفاده از گراواتار", - "Use groups to group your users and assign permissions.": "", + "Use groups to group your users and assign permissions.": "از گروه\u200cها برای گروه\u200cبندی کاربران و تخصیص مجوزها استفاده کنید.", "Use Initials": "استفاده از سرواژه", - "Use no proxy to fetch page contents.": "", - "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "", - "use_mlock (Ollama)": "use_mlock (اولاما)", - "use_mmap (Ollama)": "use_mmap (اولاما)", + "Use no proxy to fetch page contents.": "از هیچ پراکسی برای دریافت محتوای صفحه استفاده نکنید.", + "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "از پراکسی تعیین شده توسط متغیرهای محیطی http_proxy و https_proxy برای دریافت محتوای صفحه استفاده کنید.", + "use_mlock (Ollama)": "use_mlock (ollama)", + "use_mmap (Ollama)": "use_mmap (ollama)", "user": "کاربر", "User": "کاربر", "User location successfully retrieved.": "موقعیت مکانی کاربر با موفقیت دریافت شد.", - "User Webhooks": "", - "Username": "", + "User Webhooks": "وب\u200cهوک\u200cهای کاربر", + "Username": "نام کاربری", "Users": "کاربران", "Using the default arena model with all models. Click the plus button to add custom models.": "در حال استفاده از مدل آرنا با همهٔ مدل\u200cهای دیگر به طور پیش\u200cفرض. برای افزودن مدل\u200cهای سفارشی، روی دکمه به\u200cعلاوه کلیک کنید.", "Utilize": "استفاده کنید", "Valid time units:": "واحدهای زمانی معتبر:", - "Valves": "", - "Valves updated": "", - "Valves updated successfully": "", + "Valves": "شیرها", + "Valves updated": "شیرها به\u200cروزرسانی شدند", + "Valves updated successfully": "شیرها با موفقیت به\u200cروزرسانی شدند", "variable": "متغیر", "variable to have them replaced with clipboard content.": "متغیر برای جایگزینی آنها با محتوای بریده\u200cدان.", - "Verify Connection": "", - "Verify SSL Certificate": "", + "Verify Connection": "تأیید اتصال", + "Verify SSL Certificate": "تأیید گواهی SSL", "Version": "نسخه", "Version {{selectedVersion}} of {{totalVersions}}": "نسخهٔ {{selectedVersion}} از {{totalVersions}}", - "View Replies": "", - "View Result from **{{NAME}}**": "", - "Visibility": "", + "View Replies": "مشاهده پاسخ\u200cها", + "View Result from **{{NAME}}**": "مشاهده نتیجه از **{{NAME}}**", + "Visibility": "قابلیت مشاهده", "Voice": "صوت", "Voice Input": "ورودی صوتی", "Warning": "هشدار", "Warning:": "هشدار", - "Warning: Enabling this will allow users to upload arbitrary code on the server.": "", + "Warning: Enabling this will allow users to upload arbitrary code on the server.": "هشدار: فعال کردن این گزینه به کاربران اجازه می\u200cدهد کد دلخواه را روی سرور آپلود کنند.", "Warning: If you update or change your embedding model, you will need to re-import all 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.": "هشدار: اجرای ژوپیتر امکان اجرای کد دلخواه را فراهم می\u200cکند که خطرات امنیتی جدی به همراه دارد - با احتیاط زیاد ادامه دهید.", "Web": "وب", - "Web API": "", - "Web Loader Engine": "", + "Web API": "API وب", + "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": "نشانی وب\u200cهوک", "WebUI Settings": "تنظیمات WebUI", - "WebUI URL": "", - "WebUI will make requests to \"{{url}}\"": "", - "WebUI will make requests to \"{{url}}/api/chat\"": "", - "WebUI will make requests to \"{{url}}/chat/completions\"": "", - "What are you trying to achieve?": "", - "What are you working on?": "", - "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": "", - "Whisper (Local)": "", - "Why?": "", + "WebUI URL": "آدرس WebUI", + "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?": "روی چه چیزی کار می\u200cکنید؟", + "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.": "وقتی فعال باشد، مدل به هر پیام گفتگو در زمان واقعی پاسخ می\u200cدهد و به محض ارسال پیام توسط کاربر، پاسخی تولید می\u200cکند. این حالت برای برنامه\u200cهای گفتگوی زنده مفید است، اما ممکن است در سخت\u200cافزارهای کندتر بر عملکرد تأثیر بگذارد.", + "wherever you are": "هر جا که هستید", + "Whisper (Local)": "ویسپر (محلی)", + "Why?": "چرا؟", "Widescreen Mode": "حالت صفحهٔ عریض", - "Won": "", - "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "", + "Won": "برنده شد", + "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "با top-k همکاری می\u200cکند. مقدار بالاتر (مثلاً 0.95) منجر به متن متنوع\u200cتر می\u200cشود، در حالی که مقدار پایین\u200cتر (مثلاً 0.5) متن متمرکزتر و محافظه\u200cکارانه\u200cتری تولید می\u200cکند.", "Workspace": "محیط کار", - "Workspace Permissions": "", - "Write": "", + "Workspace Permissions": "مجوزهای محیط کار", + "Write": "نوشتن", "Write a prompt suggestion (e.g. Who are you?)": "یک پیشنهاد پرامپت بنویسید (مثلاً شما کی هستید؟)", "Write a summary in 50 words that summarizes [topic or keyword].": "خلاصه ای در 50 کلمه بنویسید که [موضوع یا کلمه کلیدی] را خلاصه کند.", - "Write something...": "", - "Write your model template content here": "", + "Write something...": "چیزی بنویسید...", + "Write your model template content here": "محتوای قالب مدل خود را اینجا بنویسید", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "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.": "شما در حال حاضر از نسخه آزمایشی استفاده می\u200cکنید. لطفاً برای ارتقای مجوز خود با پشتیبانی تماس بگیرید.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "شما در هر زمان نهایتا می\u200cتوانید با {{maxCount}} پرونده گفتگو کنید.", - "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", - "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", - "You do not have permission to upload files.": "", + "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "شما می\u200cتوانید تعاملات خود با LLM\u200cها را با افزودن خاطرات از طریق دکمه 'مدیریت' در زیر شخصی\u200cسازی کنید تا آنها مفیدتر و متناسب\u200cتر با شما شوند.", + "You cannot upload an empty file.": "نمی\u200cتوانید فایل خالی آپلود کنید.", + "You do not have permission to upload files.": "شما اجازه آپلود فایل ندارید.", "You have no archived conversations.": "شما هیچ گفتگوی ذخیره شده ندارید.", "You have shared this chat": "شما این گفتگو را به اشتراک گذاشته اید", "You're a helpful assistant.": "تو یک دستیار سودمند هستی.", "You're now logged in.": "شما اکنون وارد شده\u200cاید.", - "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.": "", + "Your account status is currently pending activation.": "وضعیت حساب شما در حال حاضر در انتظار فعال\u200cسازی است.", + "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.": "تمام مشارکت شما مستقیماً به توسعه\u200cدهنده افزونه می\u200cرسد؛ Open WebUI هیچ درصدی دریافت نمی\u200cکند. با این حال، پلتفرم تأمین مالی انتخاب شده ممکن است کارمزد خود را داشته باشد.", "Youtube": "یوتیوب", - "Youtube Language": "", - "Youtube Proxy URL": "" + "Youtube Language": "زبان یوتیوب", + "Youtube Proxy URL": "آدرس پراکسی یوتیوب" } diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index e1022e938..9c8a4bbce 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -57,17 +57,19 @@ "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 Chat Export": "", + "Allow Chat Share": "", "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", @@ -76,6 +78,7 @@ "Always": "Aina", "Always Collapse Code Blocks": "Pienennä aina koodilohkot", "Always Expand Details": "Laajenna aina tiedot", + "Always Play Notification Sound": "", "Amazing": "Hämmästyttävä", "an assistant": "avustaja", "Analyzed": "Analysoitu", @@ -83,7 +86,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 +119,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 +160,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 +227,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 +248,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 +311,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 +367,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 +410,19 @@ "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 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": "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", @@ -431,10 +438,11 @@ "Enter Model ID": "Kirjoita mallitunnus", "Enter model tag (e.g. {{modelTag}})": "Kirjoita mallitagi (esim. {{modelTag}})", "Enter Mojeek Search API Key": "Kirjoita Mojeek Search API -avain", + "Enter New Password": "", "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)", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "Kirjoita Top K uudelleen sijoittaja", "Enter URL (e.g. http://127.0.0.1:7860/)": "Kirjoita verkko-osoite (esim. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Kirjoita verkko-osoite (esim. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Kirjoita nykyinen salasanasi", "Enter Your Email": "Kirjoita sähköpostiosoitteesi", "Enter Your Full Name": "Kirjoita koko nimesi", "Enter your message": "Kirjoita viestisi", "Enter your name": "Kirjoita nimesi tähän", + "Enter Your Name": "", "Enter your new password": "Kirjoita uusi salasanasi", "Enter Your Password": "Kirjoita salasanasi", "Enter Your Role": "Kirjoita roolisi", @@ -511,12 +523,17 @@ "Export Tools": "Vie työkalut", "External": "Ulkoiset", "External Models": "Ulkoiset mallit", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Tiedoston lisääminen epäonnistui.", "Failed to connect to {{URL}} OpenAPI tool server": "Yhdistäminen {{URL}} OpenAPI työkalu palvelimeen epäonnistui", "Failed to create API Key.": "API-avaimen luonti epäonnistui.", "Failed to fetch models": "Mallien hakeminen epäonnistui", + "Failed to load file content.": "", "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,12 +556,11 @@ "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", - "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", @@ -565,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", @@ -605,8 +620,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 +682,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Muisti poistettu onnistuneesti", "Memory updated successfully": "Muisti päivitetty onnistuneesti", "Merge Responses": "Yhdistä vastaukset", + "Merged Response": "Yhdistetty vastaus", "Message rating should be enabled to use this feature": "Tämän toiminnon käyttämiseksi viestiarviointi on otettava käyttöön", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Linkin luomisen jälkeen lähettämäsi viestit eivät ole jaettuja. Käyttäjät, joilla on verkko-osoite, voivat tarkastella jaettua keskustelua.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Uusi salasana", "new-channel": "uusi-kanava", "No content found": "Sisältöä ei löytynyt", + "No content found in file.": "", "No content to speak": "Ei puhuttavaa sisältöä", "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": "", @@ -812,7 +831,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 +870,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 +904,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 +917,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", @@ -939,7 +958,7 @@ "Save Tag": "Tallenna tagi", "Saved": "Tallennettu", "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": "Keskustelulokien tallentaminen suoraan selaimen tallennustilaan ei ole enää tuettu. Lataa ja poista keskustelulokit napsauttamalla alla olevaa painiketta. Älä huoli, voit helposti tuoda keskustelulokit takaisin backendiin", - "Scroll to bottom when switching between branches": "Vierittää alaspäin vaihdettaessa haarojen välillä", + "Scroll On Branch Change": "", "Search": "Haku", "Search a model": "Hae mallia", "Search Base": "Hakupohja", @@ -1085,7 +1104,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.", @@ -1140,11 +1159,10 @@ "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", - "Top K Reranker": "", + "Top K Reranker": "Top K uudelleen sijoittaja", "Top P": "Top P", "Transformers": "Muunnokset", "Trouble accessing Ollama?": "Ongelmia Ollama-yhteydessä?", @@ -1170,7 +1188,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 +1202,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 +1221,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 +1236,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Kirjoita 50 sanan yhteenveto, joka tiivistää [aihe tai avainsana].", "Write something...": "Kirjoita jotain...", "Write your model template content here": "Kirjoita mallisi mallinnesisältö tähän", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "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.", - "You do not have permission to upload files": "Sinulla ei ole lupaa ladata tiedostoja", "You do not have permission to upload files.": "Sinulla ei ole lupaa ladata tiedostoja.", "You have no archived conversations.": "Sinulla ei ole arkistoituja keskusteluja.", "You have shared this chat": "Olet jakanut tämän keskustelun", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 5c9cb4cff..ae026de44 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Autoriser la suppression de l'historique de chat", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Autoriser les voix non locales", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "un assistant", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Entrez l'URL brute de GitHub", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Entrez l'étiquette du modèle (par ex. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Entrez le nombre de pas (par ex. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K 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 Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Entrez votre adresse e-mail", "Enter Your Full Name": "Entrez votre nom complet", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Entrez votre mot de passe", "Enter Your Role": "Entrez votre rôle", @@ -511,10 +523,15 @@ "Export Tools": "Outils d'exportation", "External": "", "External Models": "Modèles externes", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "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": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "La mémoire a été supprimée avec succès", "Memory updated successfully": "La mémoire a été mise à jour avec succès", "Merge Responses": "", + "Merged Response": "Réponse fusionnée", "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.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir le chat partagé.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nouveau mot de passe", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "Rien à signaler", "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": "", @@ -939,7 +958,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": "La sauvegarde des journaux de discussion directement dans le stockage de votre navigateur n'est plus prise en charge. Veuillez prendre un instant pour télécharger et supprimer vos journaux de discussion en cliquant sur le bouton ci-dessous. Pas de soucis, vous pouvez facilement les réimporter depuis le backend via l'interface ci-dessous", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Recherche", "Search a model": "Rechercher un modèle", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Hier", "You": "Vous", "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.": "", "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 souvenirs via le bouton 'Gérer' ci-dessous, ce qui les rendra plus utiles et adaptés à vos besoins.", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "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.", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 3a35327cc..21f4161b1 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -62,6 +62,8 @@ "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 Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Autoriser le téléchargement de fichiers", "Allow Multiple Models in Chat": "Autoriser plusieurs modèles dans le chat", "Allow non-local voices": "Autoriser les voix non locales", @@ -73,9 +75,10 @@ "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": "Toujours", - "Always Collapse Code Blocks": "Toujours réduire les blocs de code", - "Always Expand Details": "Toujours afficher les détails", + "Always": "", + "Always Collapse Code Blocks": "", + "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Incroyable", "an assistant": "un assistant", "Analyzed": "Analysé", @@ -413,9 +416,13 @@ "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": "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 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 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", @@ -431,6 +438,7 @@ "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 New Password": "", "Enter Number of Steps (e.g. 50)": "Entrez le nombre d'étapes (par ex. 50)", "Enter Perplexity API Key": "Entrez la clé pour l'API de Perplixity", "Enter Playwright Timeout": "Entrez le délai d'expiration Playwright", @@ -467,6 +475,9 @@ "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 Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "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", @@ -511,10 +522,15 @@ "Export Tools": "Exporter des outils", "External": "Externe", "External Models": "Modèles externes", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "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 load file content.": "", "Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers", "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", @@ -544,7 +560,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", @@ -565,7 +580,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": "Gemini", @@ -718,8 +732,12 @@ "Memory deleted successfully": "Le souvenir a été supprimé avec succès", "Memory updated successfully": "Le souvenir a été mis à jour avec succès", "Merge Responses": "Fusionner les réponses", + "Merged Response": "Réponse fusionnée", "Message rating should be enabled to use this feature": "L'évaluation des messages doit être activée pour pouvoir utiliser cette fonctionnalité", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir la conversation partagée.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "P min", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +779,11 @@ "New Password": "Nouveau mot de passe", "new-channel": "nouveau-canal", "No content found": "Aucun contenu trouvé", + "No content found in file.": "", "No content to speak": "Rien à signaler", "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é", @@ -939,7 +957,7 @@ "Save Tag": "Enregistrer le tag", "Saved": "Enregistré", "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": "La sauvegarde des journaux de conversation directement dans le stockage de votre navigateur n'est plus prise en charge. Veuillez prendre un instant pour télécharger et supprimer vos journaux de conversation en cliquant sur le bouton ci-dessous. Ne vous inquiétez pas, vous pouvez facilement réimporter vos journaux de conversation dans le backend via", - "Scroll to bottom when switching between branches": "Défiler vers le bas lors du passage d'une branche à l'autre", + "Scroll On Branch Change": "", "Search": "Recherche", "Search a model": "Rechercher un modèle", "Search Base": "Base de recherche", @@ -1140,7 +1158,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": "Partage public des outils", "Top K": "Top K", @@ -1246,6 +1263,9 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].", "Write something...": "Écrivez quelque chose...", "Write your model template content here": "Écrivez ici le contenu de votre modèle", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Hier", "You": "Vous", "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.", @@ -1253,7 +1273,6 @@ "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.": "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.", "You're a helpful assistant.": "Vous êtes un assistant efficace.", diff --git a/src/lib/i18n/locales/gl-ES/translation.json b/src/lib/i18n/locales/gl-ES/translation.json index 2ffb07a4a..7fa24712c 100644 --- a/src/lib/i18n/locales/gl-ES/translation.json +++ b/src/lib/i18n/locales/gl-ES/translation.json @@ -665,6 +665,7 @@ "Memory deleted successfully": "Memoria borrada correctamente", "Memory updated successfully": "Memoria actualizada correctamente", "Merge Responses": "Fusionar Respuestas", + "Merged Response": "Resposta combinada", "Message rating should be enabled to use this feature": "a calificación de mensaxes debe estar habilitada para usar esta función", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Os mensaxes que envíe despois de xerar su enlace no compartiránse. os usuarios co enlace podrán ver o chat compartido.", "Min P": "Min P", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index 4b23fd46a..afc4d4607 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "אפשר מחיקת צ'אט", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "עוזר", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "הזן כתובת URL של Github Raw", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "הזן תג מודל (למשל {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "הזן מספר שלבים (למשל 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter 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 your current password": "", "Enter Your Email": "הזן את דוא\"ל שלך", "Enter Your Full Name": "הזן את שמך המלא", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "הזן את הסיסמה שלך", "Enter Your Role": "הזן את התפקיד שלך", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "יצירת מפתח API נכשלה.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "קריאת תוכן הלוח נכשלה", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "עקב אחר ההוראות במושלמות", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "תגובה ממוזגת", "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.": "הודעות שתשלח לאחר יצירת הקישור לא ישותפו. משתמשים עם כתובת האתר יוכלו לצפות בצ'אט המשותף.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "סיסמה חדשה", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "חפש", "Search a model": "חפש מודל", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "אתמול", "You": "אתה", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "שיתפת את השיחה הזו", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 5efe1d461..49eee6921 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "चैट हटाने की अनुमति दें", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "एक सहायक", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Github Raw URL दर्ज करें", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Model tag दर्ज करें (उदा. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "चरणों की संख्या दर्ज करें (उदा. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "यूआरएल दर्ज करें (उदा. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "यूआरएल दर्ज करें (उदा. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "अपना ईमेल दर्ज करें", "Enter Your Full Name": "अपना पूरा नाम भरें", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "अपना पासवर्ड भरें", "Enter Your Role": "अपनी भूमिका दर्ज करें", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "एपीआई कुंजी बनाने में विफल.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "क्लिपबोर्ड सामग्री पढ़ने में विफल", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "निर्देशों का पूर्णतः पालन किया", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "मिली-जुली प्रतिक्रिया", "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.": "अपना लिंक बनाने के बाद आपके द्वारा भेजे गए संदेश साझा नहीं किए जाएंगे। यूआरएल वाले यूजर्स शेयर की गई चैट देख पाएंगे।", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "मिरोस्टा", "Mirostat Eta": "मिरोस्टा ईटा", @@ -761,11 +780,11 @@ "New Password": "नया पासवर्ड", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "खोजें", "Search a model": "एक मॉडल खोजें", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "कल", "You": "आप", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "आपने इस चैट को शेयर किया है", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index 3ce092c71..75dc92458 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Dopusti brisanje razgovora", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Dopusti nelokalne glasove", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "asistent", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Unesite Github sirovi URL", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Unesite oznaku modela (npr. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Unesite broj koraka (npr. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Unesite URL (npr. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Unesite URL (npr. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Unesite svoj email", "Enter Your Full Name": "Unesite svoje puno ime", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Unesite svoju lozinku", "Enter Your Role": "Unesite svoju ulogu", @@ -511,10 +523,15 @@ "Export Tools": "Izvoz alata", "External": "", "External Models": "Vanjski modeli", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Neuspješno stvaranje API ključa.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Neuspješno čitanje sadržaja međuspremnika", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "Spojeni odgovor", "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.": "Poruke koje pošaljete nakon stvaranja veze neće se dijeliti. Korisnici s URL-om moći će vidjeti zajednički chat.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nova lozinka", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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": "Spremanje zapisnika razgovora izravno u pohranu vašeg preglednika više nije podržano. Molimo vas da odvojite trenutak za preuzimanje i brisanje zapisnika razgovora klikom na gumb ispod. Ne brinite, možete lako ponovno uvesti zapisnike razgovora u backend putem", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Pretraga", "Search a model": "Pretraži model", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Napišite sažetak u 50 riječi koji sažima [temu ili ključnu riječ].", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Jučer", "You": "Vi", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Možete personalizirati svoje interakcije s LLM-ima dodavanjem uspomena putem gumba 'Upravljanje' u nastavku, čineći ih korisnijima i prilagođenijima vama.", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Nemate arhiviranih razgovora.", "You have shared this chat": "Podijelili ste ovaj razgovor", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index d4daf78f2..ac8661d6c 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Csevegés törlésének engedélyezése", "Allow Chat Deletion": "Beszélgetések törlésének engedélyezése", "Allow Chat Edit": "Csevegés szerkesztésének engedélyezése", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Fájlfeltöltés engedélyezése", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Nem helyi hangok engedélyezése", @@ -76,6 +78,7 @@ "Always": "Mindig", "Always Collapse Code Blocks": "Kódblokkok mindig összecsukása", "Always Expand Details": "Részletek mindig kibontása", + "Always Play Notification Sound": "", "Amazing": "Csodálatos", "an assistant": "egy asszisztens", "Analyzed": "Elemezve", @@ -414,6 +417,10 @@ "Enter Document Intelligence Key": "Add meg a dokumentum intelligencia kulcsot", "Enter domains separated by commas (e.g., example.com,site.org)": "Add meg a domaineket vesszővel elválasztva (pl. example.com,site.org)", "Enter Exa API Key": "Add meg az Exa API kulcsot", + "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 Github Raw URL": "Add meg a Github Raw URL-t", @@ -431,6 +438,7 @@ "Enter Model ID": "Add meg a modell azonosítót", "Enter model tag (e.g. {{modelTag}})": "Add meg a modell címkét (pl. {{modelTag}})", "Enter Mojeek Search API Key": "Add meg a Mojeek Search API kulcsot", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Add meg a lépések számát (pl. 50)", "Enter Perplexity API Key": "Add meg a Perplexity API kulcsot", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "Add meg a Top K újrarangsorolót", "Enter URL (e.g. http://127.0.0.1:7860/)": "Add meg az URL-t (pl. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Add meg az URL-t (pl. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Add meg a jelenlegi jelszavad", "Enter Your Email": "Add meg az email címed", "Enter Your Full Name": "Add meg a teljes neved", "Enter your message": "Írd be az üzeneted", "Enter your name": "Add meg a neved", + "Enter Your Name": "", "Enter your new password": "Add meg az új jelszavad", "Enter Your Password": "Add meg a jelszavad", "Enter Your Role": "Add meg a szereped", @@ -511,10 +523,15 @@ "Export Tools": "Eszközök exportálása", "External": "Külső", "External Models": "Külső modellek", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Nem sikerült hozzáadni a fájlt.", "Failed to connect to {{URL}} OpenAPI tool server": "Nem sikerült csatlakozni a {{URL}} OpenAPI eszköszerverhez", "Failed to create API Key.": "Nem sikerült létrehozni az API kulcsot.", "Failed to fetch models": "Nem sikerült lekérni a modelleket", + "Failed to load file content.": "", "Failed to read clipboard contents": "Nem sikerült olvasni a vágólap tartalmát", "Failed to save connections": "Nem sikerült menteni a kapcsolatokat", "Failed to save models configuration": "Nem sikerült menteni a modellek konfigurációját", @@ -544,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", @@ -565,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memória sikeresen törölve", "Memory updated successfully": "Memória sikeresen frissítve", "Merge Responses": "Válaszok egyesítése", + "Merged Response": "Összevont válasz", "Message rating should be enabled to use this feature": "Az üzenetértékelésnek engedélyezve kell lennie ehhez a funkcióhoz", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "A link létrehozása után küldött üzenetei nem lesznek megosztva. A URL-lel rendelkező felhasználók megtekinthetik a megosztott beszélgetést.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Új jelszó", "new-channel": "új csatorna", "No content found": "Nem található tartalom", + "No content found in file.": "", "No content to speak": "Nincs felolvasható tartalom", "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", @@ -939,7 +958,7 @@ "Save Tag": "Címke mentése", "Saved": "Mentve", "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": "A csevegési naplók közvetlen mentése a böngésző tárolójába már nem támogatott. Kérjük, szánjon egy percet a csevegési naplók letöltésére és törlésére az alábbi gomb megnyomásával. Ne aggódjon, könnyen újra importálhatja a csevegési naplókat a backend-be", - "Scroll to bottom when switching between branches": "Görgetés az aljára ágak közötti váltáskor", + "Scroll On Branch Change": "", "Search": "Keresés", "Search a model": "Modell keresése", "Search Base": "Keresési alap", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Írjon egy 50 szavas összefoglalót a [téma vagy kulcsszó]-ról.", "Write something...": "Írjon valamit...", "Write your model template content here": "Írja ide a modell sablon tartalmát", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Tegnap", "You": "Ön", "You are currently using a trial license. Please contact support to upgrade your license.": "Jelenleg próbaverziós licencet használ. Kérjük, lépjen kapcsolatba a támogatással a licenc frissítéséhez.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Egyszerre maximum {{maxCount}} fájllal tud csevegni.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Az LLM-ekkel való interakcióit személyre szabhatja emlékek hozzáadásával a lenti 'Kezelés' gomb segítségével, így azok még hasznosabbak és személyre szabottabbak lesznek.", "You cannot upload an empty file.": "Nem tölthet fel üres fájlt.", - "You do not have permission to upload files": "Nincs jogosultsága fájlok feltöltésére", "You do not have permission to upload files.": "Nincs jogosultsága fájlok feltöltésére.", "You have no archived conversations.": "Nincsenek archivált beszélgetései.", "You have shared this chat": "Megosztotta ezt a beszélgetést", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index c8c6eb482..6be73d5b2 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Izinkan Penghapusan Obrolan", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Izinkan suara non-lokal", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "asisten", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Masukkan URL Mentah Github", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (misalnya {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Masukkan Jumlah Langkah (mis. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Masukkan URL (mis. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Masukkan URL (mis. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Masukkan Email Anda", "Enter Your Full Name": "Masukkan Nama Lengkap Anda", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Masukkan Kata Sandi Anda", "Enter Your Role": "Masukkan Peran Anda", @@ -511,10 +523,15 @@ "Export Tools": "Alat Ekspor", "External": "", "External Models": "Model Eksternal", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Gagal membuat API Key.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Gagal membaca konten papan klip", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memori berhasil dihapus", "Memory updated successfully": "Memori berhasil diperbarui", "Merge Responses": "", + "Merged Response": "Tanggapan yang Digabungkan", "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.": "Pesan yang Anda kirim setelah membuat tautan tidak akan dibagikan. Pengguna yang memiliki URL tersebut akan dapat melihat obrolan yang dibagikan.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Kata Sandi Baru", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "Tidak ada konten untuk dibicarakan", "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": "", @@ -939,7 +958,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": "Menyimpan log obrolan secara langsung ke penyimpanan browser Anda tidak lagi didukung. Mohon luangkan waktu sejenak untuk mengunduh dan menghapus log obrolan Anda dengan mengeklik tombol di bawah ini. Jangan khawatir, Anda dapat dengan mudah mengimpor kembali log obrolan Anda ke backend melalui", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Cari", "Search a model": "Mencari model", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Tulis ringkasan dalam 50 kata yang merangkum [topik atau kata kunci].", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Kemarin", "You": "Anda", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Anda dapat mempersonalisasi interaksi Anda dengan LLM dengan menambahkan kenangan melalui tombol 'Kelola' di bawah ini, sehingga lebih bermanfaat dan disesuaikan untuk Anda.", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Anda tidak memiliki percakapan yang diarsipkan.", "You have shared this chat": "Anda telah membagikan obrolan ini", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 516c68a10..6952a4bf8 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,31 @@ "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 Chat Export": "", + "Allow Chat Share": "", "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í", + "Always Play Notification Sound": "", "Amazing": "Iontach", "an assistant": "cúntóir", "Analyzed": "Anailísithe", @@ -83,7 +86,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 +107,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 +116,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 +129,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 +145,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 +208,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 +226,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 +243,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 +269,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 +289,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 +311,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 +337,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 +359,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 +386,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 +410,19 @@ "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 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": "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 +432,17 @@ "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 New Password": "", "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 +460,30 @@ "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 Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "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 Name": "", "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 +500,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 +521,19 @@ "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", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "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 load file content.": "", "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,19 +556,18 @@ "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", - "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", "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", @@ -565,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", @@ -573,7 +588,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 +612,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 +620,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 +643,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 +660,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 +674,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 +682,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 +706,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 +719,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", @@ -718,22 +733,26 @@ "Memory deleted successfully": "Cuimhne scriosta go rathúil", "Memory updated successfully": "Cuimhne nuashonraithe", "Merge Responses": "Cumaisc Freagraí", + "Merged Response": "Freagra Cumaiscthe", "Message rating should be enabled to use this feature": "Ba cheart rátáil teachtaireachta a chumasú chun an ghné seo a úsáid", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Ní roinnfear teachtaireachtaí a sheolann tú tar éis do nasc a chruthú. Beidh úsáideoirí leis an URL in ann féachaint ar an gcomhrá roinnte.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "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 +768,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", @@ -761,11 +780,11 @@ "New Password": "Pasfhocal Nua", "new-channel": "nua-chainéil", "No content found": "Níor aimsíodh aon ábhar", + "No content found in file.": "", "No content to speak": "Níl aon ábhar le labhairt", "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", @@ -812,7 +831,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 +841,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 +858,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 +870,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 +888,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 +912,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", @@ -939,7 +958,7 @@ "Save Tag": "Sábháil Clib", "Saved": "Shábháil", "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": "Ní thacaítear le logaí comhrá a shábháil go díreach chuig stóráil do bhrabhsálaí Tóg nóiméad chun do logaí comhrá a íoslódáil agus a scriosadh trí chliceáil an cnaipe thíos. Ná bíodh imní ort, is féidir leat do logaí comhrá a athiompórtáil go héasca chuig an gcúltaca trí", - "Scroll to bottom when switching between branches": "Scrollaigh go bun agus tú ag athrú idir brainsí", + "Scroll On Branch Change": "", "Search": "Cuardaigh", "Search a model": "Cuardaigh múnla", "Search Base": "Bonn Cuardaigh", @@ -1005,22 +1024,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 +1051,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 +1072,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 +1080,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 +1091,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 +1100,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 +1122,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,17 +1153,16 @@ "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í", "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": "", + "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 +1202,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 +1220,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 +1236,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 +1244,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 +1256,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Scríobh achoimre i 50 focal a dhéanann achoimre ar [ábhar nó eochairfhocal].", "Write something...": "Scríobh rud...", "Write your model template content here": "Scríobh do mhúnla ábhar teimpléad anseo", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "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.", - "You do not have permission to upload files": "Níl cead agat comhaid a uaslódáil", "You do not have permission to upload files.": "Níl cead agat comhaid a uaslódáil.", "You have no archived conversations.": "Níl aon chomhráite cartlainne agat.", "You have shared this chat": "Tá an comhrá seo roinnte agat", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index f4e849275..75cab5392 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Consenti l'eliminazione della chat", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "un assistente", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Immettere l'URL grezzo di Github", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Inserisci il tag del modello (ad esempio {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Inserisci il numero di passaggi (ad esempio 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Inserisci URL (ad esempio http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Inserisci URL (ad esempio http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Inserisci la tua email", "Enter Your Full Name": "Inserisci il tuo nome completo", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Inserisci la tua password", "Enter Your Role": "Inserisci il tuo ruolo", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Impossibile creare la chiave API.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Impossibile leggere il contenuto degli appunti", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "Risposta Unita", "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.": "I messaggi inviati dopo la creazione del link non verranno condivisi. Gli utenti con l'URL saranno in grado di visualizzare la chat condivisa.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nuova password", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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": "Il salvataggio dei registri della chat direttamente nell'archivio del browser non è più supportato. Si prega di dedicare un momento per scaricare ed eliminare i registri della chat facendo clic sul pulsante in basso. Non preoccuparti, puoi facilmente reimportare i registri della chat nel backend tramite", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Cerca", "Search a model": "Cerca un modello", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Scrivi un riassunto in 50 parole che riassume [argomento o parola chiave].", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Ieri", "You": "Tu", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Non hai conversazioni archiviate.", "You have shared this chat": "Hai condiviso questa chat", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index def6a3979..473dd5231 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "チャットの削除を許可", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "ローカル以外のボイスを許可", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "アシスタント", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Github Raw URLを入力", @@ -431,6 +438,7 @@ "Enter Model ID": "モデルIDを入力してください。", "Enter model tag (e.g. {{modelTag}})": "モデルタグを入力してください (例: {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "ステップ数を入力してください (例: 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter 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 your current password": "", "Enter Your Email": "メールアドレスを入力してください", "Enter Your Full Name": "フルネームを入力してください", "Enter your message": "メッセージを入力してください", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "パスワードを入力してください", "Enter Your Role": "ロールを入力してください", @@ -511,10 +523,15 @@ "Export Tools": "ツールのエクスポート", "External": "", "External Models": "外部モデル", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "APIキーの作成に失敗しました。", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "クリップボードの内容を読み取れませんでした", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "完全に指示に従った", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "メモリを削除しました。", "Memory updated successfully": "メモリアップデート成功", "Merge Responses": "", + "Merged Response": "統合された応答", "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)": "", "Min P": "", "Mirostat": "ミロスタット", "Mirostat Eta": "ミロスタット Eta", @@ -761,11 +780,11 @@ "New Password": "新しいパスワード", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "ブランチの切り替え時にボタンをスクロールする", + "Scroll On Branch Change": "", "Search": "検索", "Search a model": "モデルを検索", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "昨日", "You": "あなた", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "このチャットを共有しました", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index a1d6f2f30..d929dc0c7 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "ჩატის წაშლის დაშვება", "Allow Chat Deletion": "ჩატის წაშლის დაშვება", "Allow Chat Edit": "ჩატის ჩასწორების დაშვება", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "ფაილის ატვირთვის დაშვება", "Allow Multiple Models in Chat": "", "Allow non-local voices": "არალოკალური ხმების დაშვება", @@ -76,6 +78,7 @@ "Always": "ყოველთვის", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "გადასარევია", "an assistant": "დამხმარე", "Analyzed": "გაანაზლიებულია", @@ -414,6 +417,10 @@ "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 Github Raw URL": "შეიყვანეთ Github Raw URL", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "შეიყვანეთ მოდელის ჭდე (მაგ: {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "შეიყვანეთ ნაბიჯების რაოდენობა (მაგ. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "შეიყვანეთ ბმული (მაგ: http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "შეიყვანეთ ბმული (მაგ: http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "შეიყვანეთ თქვენი მიმდინარე პაროლი", "Enter Your Email": "შეიყვანეთ თქვენი ელფოსტა", "Enter Your Full Name": "შეიყვანეთ თქვენი სრული სახელი", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "შეიყვანეთ თქვენი ახალი პაროლი", "Enter Your Password": "შეიყვანეთ თქვენი პაროლი", "Enter Your Role": "შეიყვანეთ თქვენი როლი", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "ფაილის დამატების შეცდომა.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "API-ის გასაღების შექმნა ჩავარდა.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "ბუფერის შემცველობის წაკითხვა ჩავარდა", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "ინსტრუქციების ზუსტად მიჰყევით", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "ფუნქციები", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "მარჩბივი", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "პასუხების შერწყმა", + "Merged Response": "შერწყმული პასუხი", "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)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "ახალი პაროლი", "new-channel": "new-channel", "No content found": "შემცველობა აღმოჩენილი არაა", + "No content found in file.": "", "No content to speak": "წარმოსათქმელი შემცველობის გარეშე", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "ძებნა", "Search a model": "მოდელის ძებნა", "Search Base": "ბაზის ძებნა", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "გუშინ", "You": "თქვენ", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "თქვენ გააზიარეთ ეს ჩატი", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index f59326035..42435e30d 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,24 +62,27 @@ "Allow Chat Delete": "채팅 삭제 허용", "Allow Chat Deletion": "채팅 삭제 허용", "Allow Chat Edit": "채팅 수정 허용", + "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": "", + "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.": "새로운 공유 링크를 생성합니다.", @@ -96,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?": "정말 보관된 모든 채팅을 보관 해제하시겠습니까?", @@ -107,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": "자동완성 생성", @@ -126,9 +129,9 @@ "AUTOMATIC1111 Base URL": "AUTOMATIC1111 기본 URL", "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 기본 URL 설정이 필요합니다.", "Available list": "가능한 목록", - "Available Tools": "", + "Available Tools": "사용 가능한 도구", "available!": "사용 가능!", - "Awful": "끔찍함", + "Awful": "형편없음", "Azure AI Speech": "Azure AI 음성", "Azure Region": "Azure 지역", "Back": "뒤로가기", @@ -138,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", @@ -178,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 파일을 선택하려면 여기를 클릭하세요.", @@ -194,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 워크플로", @@ -217,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": "모델 생성", @@ -266,11 +269,11 @@ "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월", @@ -285,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": "모델 삭제", @@ -297,8 +300,8 @@ "Delete chat?": "채팅을 삭제하겠습니까?", "Delete folder?": "폴더를 삭제하시겠습니까?", "Delete function?": "함수를 삭제하시겠습니까?", - "Delete Message": "", - "Delete message?": "", + "Delete Message": "메시지 삭제", + "Delete message?": "메시지를 삭제하시겠습니까?", "Delete prompt?": "프롬프트를 삭제하시겠습니까?", "delete this link": "이 링크를 삭제합니다.", "Delete tool?": "도구를 삭제하시겠습니까?", @@ -308,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": "사용자 정의 도구 검색, 다운로드 및 탐색", @@ -330,148 +333,157 @@ "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 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 New Password": "", "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 Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "현재 비밀번호를 입력해 주세요", "Enter Your Email": "이메일 입력", "Enter Your Full Name": "이름 입력", "Enter your message": "메세지 입력", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "새로운 비밀번호를 입력해 주세요", "Enter Your Password": "비밀번호 입력", "Enter Your Role": "역할 입력", @@ -479,23 +491,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": "", @@ -507,20 +519,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": "외부 웹 로더 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 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": "피드백 기록", @@ -533,51 +550,49 @@ "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": "성공적으로 폴터가 생성되었습니다", - "Folder name cannot be empty": "폴더 이름을 작성해주세요", "Folder name cannot be empty.": "폴더 이름을 작성해주세요", "Folder name updated successfully": "성공적으로 폴더 이름이 저장되었습니다", "Followed instructions perfectly": "명령을 완벽히 수행함", "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": "", @@ -597,13 +612,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": "", @@ -614,8 +629,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": "채팅 가져오기", @@ -634,12 +649,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에 가입하세요.", @@ -647,8 +662,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 키", @@ -670,27 +685,27 @@ "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 include all models or select specific models": "", "Leave empty to use the default prompt, or enter a custom prompt": "기본 프롬프트를 사용하기 위해 빈칸으로 남겨두거나, 커스텀 프롬프트를 입력하세요", - "Leave model field empty to use the default model.": "", - "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", @@ -698,13 +713,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": "업로드 최대 수", @@ -718,26 +733,30 @@ "Memory deleted successfully": "성공적으로 메모리가 삭제되었습니다", "Memory updated successfully": "성공적으로 메모리가 업데이트되었습니다", "Merge Responses": "응답들 결합하기", + "Merged Response": "결합된 응답", "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 (개인용)", + "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": "모델 이름", @@ -748,30 +767,30 @@ "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 to speak": "음성 출력할 내용을 찾을 수 없음", "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": "", + "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": "결과 없음", @@ -812,7 +831,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}})보다 낮습니다", @@ -822,7 +841,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": "기타", @@ -839,7 +858,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": "고정됨", @@ -851,16 +870,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": "긍정적인 자세", @@ -869,11 +888,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": "프롬프트 제안", @@ -881,16 +900,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.": "", @@ -898,18 +917,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 모델 비활성화", @@ -918,12 +937,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": "역할", @@ -939,10 +958,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 to bottom when switching between branches": "브랜치 간 전환시 밑으로 스크롤 하세요", + "Scroll On Branch Change": "브랜치 변경 시 스크롤", "Search": "검색", "Search a model": "모델 검색", - "Search Base": "", + "Search Base": "검색 기반", "Search Chats": "채팅 검색", "Search Collection": "컬렉션 검색", "Search Filters": "필터 검색", @@ -953,11 +972,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", @@ -972,8 +991,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": "음성 기능을 위해서는 모델을 하나만 선택해야 합니다.", @@ -984,8 +1003,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 키", @@ -1059,7 +1078,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:": "더 알려주세요:", @@ -1070,13 +1089,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.": "하나의 채팅에서는 사용가능한 최대 파일 수가 있습니다. 만약 파일 수가 한도를 초과할 시, 파일은 업로드되지 않습니다.", @@ -1085,7 +1104,7 @@ "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 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.": "이것은 실험적 기능으로, 예상대로 작동하지 않을 수 있으며 언제든지 변경될 수 있습니다.", @@ -1100,7 +1119,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)", @@ -1134,34 +1153,33 @@ "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 have a function calling system that allows arbitrary code execution": "도구에 임의 코드 실행을 허용하는 함수가 포함되어 있습니다", + "Tools Function Calling Prompt": "도구 함수 호출 프롬프트", "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": "링크 업데이트 및 복사", @@ -1191,8 +1209,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": "활용", @@ -1206,8 +1224,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": "음성 입력", @@ -1218,22 +1236,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": "와이드스크린 모드", @@ -1246,14 +1264,16 @@ "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": "", "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": "이 채팅을 공유했습니다.", "You're a helpful assistant.": "당신은 유용한 어시스턴트입니다.", @@ -1261,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 Proxy URL": "" + "Youtube Language": "Youtube 언어", + "Youtube Proxy URL": "Youtube 프록시 URL" } diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 32abbcc14..0fa6b7549 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Leisti pokalbių ištrynimą", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Leisti nelokalius balsus", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "assistentas", "Analyzed": "", @@ -234,7 +237,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.": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Įveskite GitHub Raw nuorodą", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Įveskite modelio žymą (pvz. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Įveskite žingsnių kiekį (pvz. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Įveskite nuorodą (pvz. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Įveskite nuorododą (pvz. http://localhost:11434", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Įveskite el. pašto adresą", "Enter Your Full Name": "Įveskite vardą bei pavardę", "Enter your message": "Įveskite žinutę", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Įveskite slaptažodį", "Enter Your Role": "Įveskite savo rolę", @@ -511,10 +523,15 @@ "Export Tools": "Eksportuoti įrankius", "External": "", "External Models": "Išoriniai modeliai", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Nepavyko sukurti API rakto", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Nepavyko perskaityti kopijuoklės", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Atmintis ištrinta sėkmingai", "Memory updated successfully": "Atmintis atnaujinta sėkmingai", "Merge Responses": "", + "Merged Response": "Sujungtas atsakymas", "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.": "Žinutės, kurias siunčiate po nuorodos sukūrimo nebus matomos nuorodos turėtojams. Naudotojai su nuoroda matys žinutes iki nuorodos sukūrimo.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Mažiausias p", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Naujas slaptažodis", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "Nėra turinio kalbėjimui", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Išsaugoti žymą", "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": "Pokalbių saugojimas naršyklėje nebegalimas.", - "Scroll to bottom when switching between branches": "Slikite link apačios norėdami pakeisti šakas", + "Scroll On Branch Change": "", "Search": "Ieškoti", "Search a model": "Ieškoti modelio", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Parašyk santrumpą trumpesnę nei 50 žodžių šiam tekstui: [tekstas]", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Vakar", "You": "Jūs", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Galite pagerinti modelių darbą suteikdami jiems atminties funkcionalumą.", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Jūs neturite archyvuotų pokalbių", "You have shared this chat": "Pasidalinote šiuo pokalbiu", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index f07dda042..07f4d38d3 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Benarkan Penghapusan Perbualan", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Benarkan suara bukan tempatan ", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "seorang pembantu", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Masukkan URL 'Github Raw'", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (cth {{ modelTag }})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Masukkan Bilangan Langkah (cth 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Masukkan URL (cth http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Masukkan URL (cth http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Masukkan E-mel Anda", "Enter Your Full Name": "Masukkan Nama Penuh Anda", "Enter your message": "Masukkan mesej anda", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Masukkan Kata Laluan Anda", "Enter Your Role": "Masukkan Peranan Anda", @@ -511,10 +523,15 @@ "Export Tools": "Eksport Alat", "External": "", "External Models": "Model Luaran", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Gagal mencipta kekunci API", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Gagal membaca konten papan klip", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memori berjaya dihapuskan", "Memory updated successfully": "Memori berjaya dikemaskini", "Merge Responses": "", + "Merged Response": "Respons Digabungkan", "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.": "Mesej yang anda hantar selepas membuat pautan anda tidak akan dikongsi. Pengguna dengan URL akan dapat melihat perbualan yang dikongsi.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "P Minimum", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Kata Laluan Baru", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "Tiada kandungan untuk bercakap", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Simpan 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": "Penyimpanan log perbualan terus ke storan pelayan web anda tidak lagi disokong. Sila luangkan sedikit masa untuk memuat turun dan memadam log perbualan anda dengan mengklik butang di bawah. Jangan risau, anda boleh mengimport semula log perbualan anda dengan mudah melalui 'backend'", - "Scroll to bottom when switching between branches": "Skrol ke bawah apabila bertukar antara cawangan", + "Scroll On Branch Change": "", "Search": "Carian", "Search a model": "Cari Model", "Search Base": "", @@ -1140,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'", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Tulis ringkasan dalam 50 patah perkataan yang meringkaskan [topik atau kata kunci].", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Semalam", "You": "Anda", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Anda boleh memperibadikan interaksi anda dengan LLM dengan menambahkan memori melalui butang 'Urus' di bawah, menjadikannya lebih membantu dan disesuaikan dengan anda.", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Anda tidak mempunyai perbualan yang diarkibkan", "You have shared this chat": "Anda telah berkongsi perbualan ini", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index cb35dc38a..9777cf17c 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Tillat sletting av chatter", "Allow Chat Deletion": "Tillat sletting av chatter", "Allow Chat Edit": "Tillat redigering av chatter", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Tillatt opplasting av filer", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Tillat ikke-lokale stemmer", @@ -76,6 +78,7 @@ "Always": "Alltid", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Flott", "an assistant": "en assistent", "Analyzed": "Analysert", @@ -414,6 +417,10 @@ "Enter Document Intelligence Key": "Angi nøkkel for Intelligens i dokumenter", "Enter domains separated by commas (e.g., example.com,site.org)": "Angi domener atskilt med komma (f.eks. eksempel.com, side.org)", "Enter Exa API Key": "Angi API-nøkkel for Exa", + "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 Github Raw URL": "Angi Github Raw-URL", @@ -431,6 +438,7 @@ "Enter Model ID": "Angi modellens ID", "Enter model tag (e.g. {{modelTag}})": "Angi modellens etikett (f.eks. {{modelTag}})", "Enter Mojeek Search API Key": "Angi API-nøkkel for Mojeek-søk", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Angi antall steg (f.eks. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Angi URL (f.eks. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Angi URL (f.eks. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Angi det gjeldende passordet ditt", "Enter Your Email": "Skriv inn e-postadressen din", "Enter Your Full Name": "Skriv inn det fulle navnet ditt", "Enter your message": "Skriv inn din melding", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "Angi ditt nye passord", "Enter Your Password": "Skriv inn passordet ditt", "Enter Your Role": "Skriv inn rollen din", @@ -511,10 +523,15 @@ "Export Tools": "Eksporter verktøy", "External": "", "External Models": "Eksterne modeller", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Kan ikke legge til filen.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Kan ikke opprette en API-nøkkel.", "Failed to fetch models": "Kan ikke hente modeller", + "Failed to load file content.": "", "Failed to read clipboard contents": "Kan ikke lese utklippstavlens innhold", "Failed to save connections": "", "Failed to save models configuration": "Kan ikke lagre konfigurasjonen av modeller", @@ -544,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", @@ -565,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Minne slettet", "Memory updated successfully": "Minne oppdatert", "Merge Responses": "Flette svar", + "Merged Response": "Sammenslått svar", "Message rating should be enabled to use this feature": "Vurdering av meldinger må være aktivert for å ta i bruk denne funksjonen", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Meldinger du sender etter at du har opprettet lenken, blir ikke delt. Brukere med URL-en vil kunne se den delte chatten.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nytt passord", "new-channel": "ny-kanal", "No content found": "Finner ikke noe innhold", + "No content found in file.": "", "No content to speak": "Mangler innhold for tale", "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", @@ -939,7 +958,7 @@ "Save Tag": "Lagre etikett", "Saved": "Lagret", "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": "Lagring av chattelogger direkte til nettleserens lagringsområde støttes ikke lenger. Ta et øyeblikk til å laste ned og slette chatteloggende dine ved å klikke på knappen nedenfor. Ikke bekymre deg, du kan enkelt importere chatteloggene dine til backend på nytt via", - "Scroll to bottom when switching between branches": "Bla til bunnen når du bytter mellom grener", + "Scroll On Branch Change": "", "Search": "Søk", "Search a model": "Søk etter en modell", "Search Base": "Søke etter base", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Skriv inn et sammendrag på 50 ord som oppsummerer [emne eller nøkkelord].", "Write something...": "Skriv inn noe...", "Write your model template content here": "Skriv inn modellens malinnhold her", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "I går", "You": "Du", "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.": "Du kan bare chatte med maksimalt {{maxCount}} fil(er) om gangen.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Du kan tilpasse interaksjonene dine med språkmodeller ved å legge til minner gjennom Administrer-knappen nedenfor, slik at de blir mer til nyttige og tilpasset deg.", "You cannot upload an empty file.": "Du kan ikke laste opp en tom fil.", - "You do not have permission to upload files": "Du har ikke tillatelse til å laste opp filer", "You do not have permission to upload files.": "Du har ikke tillatelse til å laste opp filer.", "You have no archived conversations.": "Du har ingen arkiverte samtaler.", "You have shared this chat": "Du har delt denne chatten", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 913aca768..f7fedabbd 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Chatverwijdering toestaan", "Allow Chat Deletion": "Chatverwijdering toestaan", "Allow Chat Edit": "Chatwijziging toestaan", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Bestandenupload toestaan", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Niet-lokale stemmen toestaan", @@ -76,6 +78,7 @@ "Always": "Altijd", "Always Collapse Code Blocks": "Codeblokken altijd inklappen", "Always Expand Details": "Details altijd uitklappen", + "Always Play Notification Sound": "", "Amazing": "Geweldig", "an assistant": "een assistent", "Analyzed": "Geanalyseerd", @@ -414,6 +417,10 @@ "Enter Document Intelligence Key": "Voer Document Intelligence sleutel in", "Enter domains separated by commas (e.g., example.com,site.org)": "Voer domeinen in gescheiden met komma's (bijv., voorbeeld.com,site.org)", "Enter Exa API Key": "Voer Exa API-sleutel in", + "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 Github Raw URL": "Voer de Github Raw-URL in", @@ -431,6 +438,7 @@ "Enter Model ID": "Voer model-ID in", "Enter model tag (e.g. {{modelTag}})": "Voeg model-tag toe (Bijv. {{modelTag}})", "Enter Mojeek Search API Key": "Voer Mojeek Search API-sleutel in", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Voeg aantal stappen toe (Bijv. 50)", "Enter Perplexity API Key": "Voer Perplexity API-sleutel in", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "Voer Tok K reranker in", "Enter URL (e.g. http://127.0.0.1:7860/)": "Voer URL in (Bijv. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Voer URL in (Bijv. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Voer je huidige wachtwoord in", "Enter Your Email": "Voer je Email in", "Enter Your Full Name": "Voer je Volledige Naam in", "Enter your message": "Voer je bericht in", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "Voer je nieuwe wachtwoord in", "Enter Your Password": "Voer je wachtwoord in", "Enter Your Role": "Voer je rol in", @@ -511,10 +523,15 @@ "Export Tools": "Exporteer gereedschappen", "External": "Extern", "External Models": "Externe modules", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Het is niet gelukt om het bestand toe te voegen.", "Failed to connect to {{URL}} OpenAPI tool server": "Kan geen verbinding maken met {{URL}} OpenAPI gereedschapserver", "Failed to create API Key.": "Kan API Key niet aanmaken.", "Failed to fetch models": "Kan modellen niet ophalen", + "Failed to load file content.": "", "Failed to read clipboard contents": "Kan klembord inhoud niet lezen", "Failed to save connections": "", "Failed to save models configuration": "Het is niet gelukt om de modelconfiguratie op te slaan", @@ -544,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", @@ -565,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Geheugen succesvol verwijderd", "Memory updated successfully": "Geheugen succesvol bijgewerkt", "Merge Responses": "Voeg antwoorden samen", + "Merged Response": "Samengevoegd antwoord", "Message rating should be enabled to use this feature": "Berichtbeoordeling moet ingeschakeld zijn om deze functie te gebruiken", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Berichten die je verzendt nadat je jouw link hebt gemaakt, worden niet gedeeld. Gebruikers met de URL kunnen de gedeelde chat bekijken.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nieuw Wachtwoord", "new-channel": "nieuw-kanaal", "No content found": "Geen content gevonden", + "No content found in file.": "", "No content to speak": "Geen inhoud om over te spreken", "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", @@ -939,7 +958,7 @@ "Save Tag": "Bewaar Tag", "Saved": "Opgeslagen", "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": "Chat logs direct opslaan in de opslag van je browser wordt niet langer ondersteund. Neem even de tijd om je chat logs te downloaden en te verwijderen door op de knop hieronder te klikken. Maak je geen zorgen, je kunt je chat logs eenvoudig opnieuw importeren naar de backend via", - "Scroll to bottom when switching between branches": "Scroll naar onderen bij het wisselen tussen takken", + "Scroll On Branch Change": "", "Search": "Zoeken", "Search a model": "Zoek een model", "Search Base": "Zoeken naar basis", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Schrijf een samenvatting in 50 woorden die [onderwerp of trefwoord] samenvat.", "Write something...": "Schrijf iets...", "Write your model template content here": "Schrijf je modelsjablooninhoud hier", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Gisteren", "You": "Jij", "You are currently using a trial license. Please contact support to upgrade your license.": "Je gebruikt momenteel een proeflicentie. Neem contact op met de ondersteuning om je licentie te upgraden.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Je kunt slechts met maximaal {{maxCount}} bestand(en) tegelijk chatten", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Je kunt je interacties met LLM's personaliseren door herinneringen toe te voegen via de 'Beheer'-knop hieronder, waardoor ze nuttiger en voor jou op maat gemaakt worden.", "You cannot upload an empty file.": "Je kunt een leeg bestand niet uploaden.", - "You do not have permission to upload files": "Je hebt geen toestemming om bestanden up te loaden", "You do not have permission to upload files.": "Je hebt geen toestemming om bestanden up te loaden", "You have no archived conversations.": "Je hebt geen gearchiveerde gesprekken.", "You have shared this chat": "Je hebt dit gesprek gedeeld", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index 01b0717d7..587e4d3b9 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "ਗੱਲਬਾਤ ਮਿਟਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "ਇੱਕ ਸਹਾਇਕ", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Github ਕੱਚਾ URL ਦਾਖਲ ਕਰੋ", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "ਮਾਡਲ ਟੈਗ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "ਕਦਮਾਂ ਦੀ ਗਿਣਤੀ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter 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 your current password": "", "Enter Your Email": "ਆਪਣੀ ਈਮੇਲ ਦਰਜ ਕਰੋ", "Enter Your Full Name": "ਆਪਣਾ ਪੂਰਾ ਨਾਮ ਦਰਜ ਕਰੋ", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "ਆਪਣਾ ਪਾਸਵਰਡ ਦਰਜ ਕਰੋ", "Enter Your Role": "ਆਪਣੀ ਭੂਮਿਕਾ ਦਰਜ ਕਰੋ", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "API ਕੁੰਜੀ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ।", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "ਕਲਿੱਪਬੋਰਡ ਸਮੱਗਰੀ ਪੜ੍ਹਣ ਵਿੱਚ ਅਸਫਲ", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "ਹਦਾਇਤਾਂ ਨੂੰ ਬਿਲਕੁਲ ਫਾਲੋ ਕੀਤਾ", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "ਮਿਲਾਇਆ ਗਿਆ ਜਵਾਬ", "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)": "", "Min P": "", "Mirostat": "ਮਿਰੋਸਟੈਟ", "Mirostat Eta": "ਮਿਰੋਸਟੈਟ ਈਟਾ", @@ -761,11 +780,11 @@ "New Password": "ਨਵਾਂ ਪਾਸਵਰਡ", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "ਖੋਜ", "Search a model": "ਇੱਕ ਮਾਡਲ ਖੋਜੋ", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "ਕੱਲ੍ਹ", "You": "ਤੁਸੀਂ", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "ਤੁਸੀਂ ਇਹ ਗੱਲਬਾਤ ਸਾਂਝੀ ਕੀਤੀ ਹੈ", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index ab15e12c6..73d396b1e 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": "", @@ -62,6 +62,8 @@ "Allow Chat Delete": "Zezwól na usunięcie czatu", "Allow Chat Deletion": "Zezwól na usuwanie czatu", "Allow Chat Edit": "Zezwól na edycję czatu", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Pozwól na przesyłanie plików", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Pozwól na głosy spoza lokalnej społeczności", @@ -74,8 +76,9 @@ "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", + "Always Play Notification Sound": "", "Amazing": "Niesamowite", "an assistant": "asystent", "Analyzed": "Przeanalizowane", @@ -147,8 +150,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 +196,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 +248,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 +286,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 +319,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", @@ -414,6 +417,10 @@ "Enter Document Intelligence Key": "", "Enter domains separated by commas (e.g., example.com,site.org)": "Wprowadź domeny oddzielone przecinkami (np. example.com, site.org)", "Enter Exa API Key": "Wprowadź klucz 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 Firecrawl API Base URL": "", "Enter Firecrawl API Key": "", "Enter Github Raw URL": "Wprowadź surowy adres URL usługi GitHub", @@ -425,12 +432,13 @@ "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", "Enter model tag (e.g. {{modelTag}})": "Wprowadź znacznik modelu (np. {{modelTag}})", "Enter Mojeek Search API Key": "Wprowadź klucz API Mojeek Search", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Podaj liczbę kroków (np. 50)", "Enter Perplexity API Key": "Klucz API Perplexity", "Enter Playwright Timeout": "", @@ -455,7 +463,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": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Podaj adres URL (np. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Wprowadź adres URL (np. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Wprowadź swoje aktualne hasło", "Enter Your Email": "Podaj swój adres e-mail", "Enter Your Full Name": "Podaj swoje pełne imię i nazwisko", "Enter your message": "Wprowadź swój komunikat", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "Wprowadź nowe hasło", "Enter Your Password": "Wprowadź swoje hasło", "Enter Your Role": "Podaj swoją rolę", @@ -511,10 +523,15 @@ "Export Tools": "Eksportuj narzędzia", "External": "", "External Models": "Modele lokalne", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Nie udało się dodać pliku.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Nie udało się wygenerować klucza API.", "Failed to fetch models": "Nie udało się pobrać modeli", + "Failed to load file content.": "", "Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka", "Failed to save connections": "", "Failed to save models configuration": "Nie udało się zapisać konfiguracji modelu", @@ -544,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", @@ -565,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", @@ -624,7 +639,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.", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Pamięć została usunięta pomyślnie", "Memory updated successfully": "Pamięć zaktualizowana pomyślnie", "Merge Responses": "Scalaj odpowiedzi ", + "Merged Response": "Połączona odpowiedź", "Message rating should be enabled to use this feature": "Ocena wiadomości powinna być włączona, aby korzystać z tej funkcji.", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Wiadomości wysyłane po utworzeniu linku nie będą udostępniane. Użytkownicy z adresem URL będą mogli wyświetlić udostępnioną rozmowę.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nowe hasło", "new-channel": "nowy-kanał", "No content found": "Nie znaleziono żadnej zawartości.", + "No content found in file.": "", "No content to speak": "Brak treści do omówienia", "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", @@ -792,14 +811,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 +874,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 +893,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 +913,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", @@ -939,7 +958,7 @@ "Save Tag": "Zapisz tag", "Saved": "Zapisano", "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": "Zapisywanie dzienników czatu bezpośrednio w pamięci przeglądarki nie jest już obsługiwane. Prosimy o pobranie i usunięcie dzienników czatu, klikając przycisk poniżej. Nie przejmuj się, możesz łatwo ponownie zaimportować dzienniki czatu do backendu przez", - "Scroll to bottom when switching between branches": "Przewiń do dołu podczas przełączania gałęzi", + "Scroll On Branch Change": "", "Search": "Szukaj", "Search a model": "Wyszukaj model", "Search Base": "Użytkownicy - Baza wyszukiwania", @@ -948,18 +967,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 +1017,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 +1057,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 +1127,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", @@ -1140,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", @@ -1202,8 +1220,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Napisz krótkie podsumowanie w maksymalnie 50 słowach, które streszcza [temat lub słowo kluczowe].", "Write something...": "Napisz coś...", "Write your model template content here": "Napisz tutaj zawartość szablonu modelu", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Wczoraj", "You": "Ty", "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.": "Możesz rozmawiać jednocześnie maksymalnie z {{maxCount}} plikiem(i).", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Możesz spersonalizować swoje interakcje z LLM, dodając wspomnienia za pomocą przycisku 'Zarządzaj' poniżej, dzięki czemu będą one bardziej pomocne i dostosowane do Ciebie.", "You cannot upload an empty file.": "Nie możesz przesłać pustego pliku.", - "You do not have permission to upload files": "Nie masz uprawnień do przesyłania plików.", "You do not have permission to upload files.": "Nie masz uprawnień do przesyłania plików.", "You have no archived conversations.": "Nie posiadasz zarchiwizowanych konwersacji.", "You have shared this chat": "Udostępniłeś tę rozmowę", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index f6965a60d..bf823bdb2 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Permitir Exclusão de Chats", "Allow Chat Deletion": "Permitir Exclusão de Chats", "Allow Chat Edit": "Permitir Edição de Chats", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Permitir Envio de arquivos", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Permitir vozes não locais", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Incrível", "an assistant": "um assistente", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Digite a URL bruta do Github", @@ -431,6 +438,7 @@ "Enter Model ID": "Digite o ID do modelo", "Enter model tag (e.g. {{modelTag}})": "Digite a tag do modelo (por exemplo, {{modelTag}})", "Enter Mojeek Search API Key": "Digite a Chave API do Mojeek Search", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Digite o Número de Passos (por exemplo, 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Digite a URL (por exemplo, http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Digite a URL (por exemplo, http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Digite Seu Email", "Enter Your Full Name": "Digite Seu Nome Completo", "Enter your message": "Digite sua mensagem", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Digite Sua Senha", "Enter Your Role": "Digite Sua Função", @@ -511,10 +523,15 @@ "Export Tools": "Exportar Ferramentas", "External": "", "External Models": "Modelos Externos", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Falha ao adicionar arquivo.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Falha ao criar a Chave API.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memória excluída com sucesso", "Memory updated successfully": "Memória atualizada com sucesso", "Merge Responses": "Mesclar respostas", + "Merged Response": "Resposta Mesclada", "Message rating should be enabled to use this feature": "Mensagem de avaliação deve estar habilitada para usar esta função", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mensagens enviadas após criar seu link não serão compartilhadas. Usuários com o URL poderão visualizar o chat compartilhado.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nova Senha", "new-channel": "", "No content found": "Nenhum conteúdo encontrado", + "No content found in file.": "", "No content to speak": "Sem conteúdo para falar", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Salvar Tag", "Saved": "Armazenado", "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": "Salvar registros de chat diretamente no armazenamento do seu navegador não é mais suportado. Por favor, reserve um momento para baixar e excluir seus registros de chat clicando no botão abaixo. Não se preocupe, você pode facilmente reimportar seus registros de chat para o backend através de", - "Scroll to bottom when switching between branches": "Rolar para baixo quando se troca entre modelos", + "Scroll On Branch Change": "", "Search": "Pesquisar", "Search a model": "Pesquisar um modelo", "Search Base": "Pesquisar base", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].", "Write something...": "Escreva algo...", "Write your model template content here": "Escreva o conteúdo do template do modelo aqui.", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Ontem", "You": "Você", "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.": "Você só pode conversar com no máximo {{maxCount}} arquivo(s) de cada vez.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Você pode personalizar suas interações com LLMs adicionando memórias através do botão 'Gerenciar' abaixo, tornando-as mais úteis e adaptadas a você.", "You cannot upload an empty file.": "Você não pode carregar um arquivo vazio.", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "Você não tem permissão para fazer upload de arquivos.", "You have no archived conversations.": "Você não tem conversas arquivadas.", "You have shared this chat": "Você compartilhou este chat", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 4376f96df..aecfa3dd6 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "Permitir Exclusão de Conversa", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Permitir vozes não locais", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "um assistente", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Escreva o URL cru do Github", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Escreva a tag do modelo (por exemplo, {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Escreva o Número de Etapas (por exemplo, 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Escreva o URL (por exemplo, http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Escreva o URL (por exemplo, http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Escreva o seu E-mail", "Enter Your Full Name": "Escreva o seu Nome Completo", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Escreva a sua Senha", "Enter Your Role": "Escreva a sua Função", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "Modelos Externos", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Falha ao criar a Chave da API.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "Resposta Fundida", "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.": "Mensagens que você enviar após criar o seu link não serão partilhadas. Os utilizadores com o URL poderão visualizar a conversa partilhada.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nova Senha", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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": "Guardar o registo das conversas diretamente no armazenamento do seu navegador já não é suportado. Reserve um momento para descarregar e eliminar os seus registos de conversas clicando no botão abaixo. Não se preocupe, você pode facilmente reimportar os seus registos de conversas para o backend através de", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Pesquisar", "Search a model": "Pesquisar um modelo", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Ontem", "You": "Você", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Você pode personalizar as suas interações com LLMs adicionando memórias através do botão ‘Gerir’ abaixo, tornando-as mais úteis e personalizadas para você.", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Você não tem conversas arquivadas.", "You have shared this chat": "Você partilhou esta conversa", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 593a822a0..81ffb3509 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Permite ștergerea chat-ului", "Allow Chat Deletion": "Permite ștergerea conversațiilor", "Allow Chat Edit": "Permite editarea chat-ului", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Permite încărcarea fișierelor", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Permite voci non-locale", @@ -76,6 +78,7 @@ "Always": "Întotdeauna", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Uimitor", "an assistant": "un asistent", "Analyzed": "Analizat", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Introduceți URL-ul Raw de pe Github", @@ -431,6 +438,7 @@ "Enter Model ID": "Introdu codul modelului", "Enter model tag (e.g. {{modelTag}})": "Introduceți eticheta modelului (de ex. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Introduceți Numărul de Pași (de ex. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Introduceți URL-ul (de ex. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Introduceți URL-ul (de ex. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Introduceți Email-ul Dvs.", "Enter Your Full Name": "Introduceți Numele Dvs. Complet", "Enter your message": "Introduceți mesajul dvs.", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Introduceți Parola Dvs.", "Enter Your Role": "Introduceți Rolul Dvs.", @@ -511,10 +523,15 @@ "Export Tools": "Exportă Instrumentele", "External": "", "External Models": "Modele Externe", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Eșec la adăugarea fișierului.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Crearea cheii API a eșuat.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Citirea conținutului clipboard-ului a eșuat", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memoria a fost ștearsă cu succes", "Memory updated successfully": "Memoria a fost actualizată cu succes", "Merge Responses": "Combină răspunsurile", + "Merged Response": "Răspuns Combinat", "Message rating should be enabled to use this feature": "Evaluarea mesajelor ar trebui să fie activată pentru a utiliza această funcționalitate.", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mesajele pe care le trimiteți după crearea link-ului dvs. nu vor fi partajate. Utilizatorii cu URL-ul vor putea vizualiza conversația partajată.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Parolă Nouă", "new-channel": "", "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", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Salvează Eticheta", "Saved": "Salvat", "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": "Salvarea jurnalelor de conversație direct în stocarea browserului dvs. nu mai este suportată. Vă rugăm să luați un moment pentru a descărca și a șterge jurnalele de conversație făcând clic pe butonul de mai jos. Nu vă faceți griji, puteți reimporta ușor jurnalele de conversație în backend prin", - "Scroll to bottom when switching between branches": "Derulați până jos când comutați între ramuri.", + "Scroll On Branch Change": "", "Search": "Caută", "Search a model": "Caută un model", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Scrieți un rezumat în 50 de cuvinte care rezumă [subiect sau cuvânt cheie].", "Write something...": "Scrie ceva...", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Ieri", "You": "Tu", "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.": "Puteți discuta cu un număr maxim de {{maxCount}} fișier(e) simultan.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Puteți personaliza interacțiunile dvs. cu LLM-urile adăugând amintiri prin butonul 'Gestionează' de mai jos, făcându-le mai utile și adaptate la dvs.", "You cannot upload an empty file.": "Nu poți încărca un fișier gol.", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Nu aveți conversații arhivate.", "You have shared this chat": "Ați partajat această conversație", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index a691ad2c1..111a0e14d 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Разрешить удаление чата", "Allow Chat Deletion": "Разрешить удаление чата", "Allow Chat Edit": "Разрешить редактирование чата", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Разрешить загрузку файлов", "Allow Multiple Models in Chat": "Разрешить использование нескольких моделей в чате", "Allow non-local voices": "Разрешить не локальные голоса", @@ -76,6 +78,7 @@ "Always": "Всегда", "Always Collapse Code Blocks": "Всегда сворачивать блоки кода", "Always Expand Details": "Всегда разворачивать детали", + "Always Play Notification Sound": "", "Amazing": "Удивительно", "an assistant": "ассистент", "Analyzed": "Проанализировано", @@ -414,6 +417,10 @@ "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 Firecrawl API Base URL": "Введите базовый URL-адрес Firecrawl API", "Enter Firecrawl API Key": "Введите ключ API для Firecrawl", "Enter Github Raw URL": "Введите необработанный URL-адрес Github", @@ -431,6 +438,7 @@ "Enter Model ID": "Введите ID модели", "Enter model tag (e.g. {{modelTag}})": "Введите тег модели (например, {{modelTag}})", "Enter Mojeek Search API Key": "Введите ключ API поиска Mojeek", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Введите количество шагов (например, 50)", "Enter Perplexity API Key": "Введите ключ API Perplexity", "Enter Playwright Timeout": "Введите таймаут для Playwright", @@ -467,11 +475,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 your current password": "Введите ваш текущий пароль", "Enter Your Email": "Введите вашу электронную почту", "Enter Your Full Name": "Введите ваше полное имя", "Enter your message": "Введите ваше сообщение", "Enter your name": "Введите ваше имя", + "Enter Your Name": "", "Enter your new password": "Введите свой новый пароль", "Enter Your Password": "Введите ваш пароль", "Enter Your Role": "Введите вашу роль", @@ -511,10 +523,15 @@ "Export Tools": "Экспортировать инструменты", "External": "Внешнее", "External Models": "Внешние модели", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search 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 read clipboard contents": "Не удалось прочитать содержимое буфера обмена", "Failed to save connections": "Не удалось сохранить подключения", "Failed to save models configuration": "Не удалось сохранить конфигурацию моделей", @@ -544,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": "Идеально соответствует инструкциям", @@ -565,7 +581,6 @@ "Function Name": "Имя Функции", "Function updated successfully": "Функция успешно обновлена", "Functions": "Функции", - "Functions allow arbitrary code execution": "Функции позволяют выполнять произвольный код", "Functions allow arbitrary code execution.": "Функции позволяют выполнять произвольный код.", "Functions imported successfully": "Функции успешно импортированы", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Воспоминание успешно удалено", "Memory updated successfully": "Воспоминание успешно обновлено", "Merge Responses": "Объединить ответы", + "Merged Response": "Объединенный ответ", "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)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Новый пароль", "new-channel": "", "No content found": "Контент не найден", + "No content found in file.": "", "No content to speak": "Нечего говорить", "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": "Механизм логического вывода с поддержкой управления не найден", @@ -939,7 +958,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 to bottom when switching between branches": "Прокручивать вниз при переключении веток", + "Scroll On Branch Change": "", "Search": "Поиск", "Search a model": "Поиск по моделям", "Search Base": "Поиск в базе", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "Вчера", "You": "Вы", "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.": "Вы можете персонализировать свое взаимодействие с LLMs, добавив воспоминания с помощью кнопки \"Управлять\" ниже, что сделает их более полезными и адаптированными для вас.", "You cannot upload an empty file.": "Вы не можете загрузить пустой файл.", - "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": "Вы поделились этим чатом", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index b0b7d62c9..f96d27f65 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Povoliť odstránenie chatu", "Allow Chat Deletion": "Povoliť odstránenie chatu", "Allow Chat Edit": "Povoliť úpravu chatu", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Povoliť nahrávanie súborov", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Povoliť ne-lokálne hlasy", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "asistent", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Zadajte URL adresu Github Raw", @@ -431,6 +438,7 @@ "Enter Model ID": "Zadajte ID modelu", "Enter model tag (e.g. {{modelTag}})": "Zadajte označenie modelu (napr. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Zadajte počet krokov (napr. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Zadajte URL (napr. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Zadajte URL (napr. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Zadajte svoj email", "Enter Your Full Name": "Zadajte svoje celé meno", "Enter your message": "Zadajte svoju správu", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Zadajte svoje heslo", "Enter Your Role": "Zadajte svoju rolu", @@ -511,10 +523,15 @@ "Export Tools": "Exportné nástroje", "External": "", "External Models": "Externé modely", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Nepodarilo sa pridať súbor.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Nepodarilo sa vytvoriť API kľúč.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Nepodarilo sa prečítať obsah schránky", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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.", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Pamäť bola úspešne vymazaná", "Memory updated successfully": "Pamäť úspešne aktualizovaná", "Merge Responses": "Zlúčiť odpovede", + "Merged Response": "Zlúčená odpoveď", "Message rating should be enabled to use this feature": "Hodnotenie správ musí byť povolené, aby bolo možné túto funkciu používať.", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Správy, ktoré odošlete po vytvorení odkazu, nebudú zdieľané. Používatelia s URL budú môcť zobraziť zdieľaný chat.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nové heslo", "new-channel": "", "No content found": "Nebol nájdený žiadny obsah.", + "No content found in file.": "", "No content to speak": "Žiadny obsah na diskusiu.", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Uložiť štítok", "Saved": "Uložené", "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": "Ukladanie záznamov chatu priamo do úložiska vášho prehliadača už nie je podporované. Venujte prosím chvíľu stiahnutiu a vymazaniu svojich záznamov chatu kliknutím na tlačidlo nižšie. Nemajte obavy, môžete ľahko znovu importovať svoje záznamy chatu na backend prostredníctvom", - "Scroll to bottom when switching between branches": "Prejsť na koniec pri prepínaní medzi vetvami.", + "Scroll On Branch Change": "", "Search": "Vyhľadávanie", "Search a model": "Vyhľadať model", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Napíšte zhrnutie na 50 slov, ktoré zhrňuje [tému alebo kľúčové slovo].", "Write something...": "Napíšte niečo...", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Včera", "You": "Vy", "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.": "Môžete komunikovať len s maximálne {{maxCount}} súbor(ami) naraz.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Môžete personalizovať svoje interakcie s LLM pridaním spomienok prostredníctvom tlačidla 'Spravovať' nižšie, čo ich urobí pre vás užitočnejšími a lepšie prispôsobenými.", "You cannot upload an empty file.": "Nemôžete nahrať prázdny súbor.", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Nemáte žiadne archivované konverzácie.", "You have shared this chat": "Zdieľali ste tento chat.", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index c9ed9afe5..c91e1692e 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Дозволи брисање ћаскања", "Allow Chat Deletion": "Дозволи брисање ћаскања", "Allow Chat Edit": "Дозволи измену ћаскања", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Дозволи отпремање датотека", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Дозволи нелокалне гласове", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Невероватно", "an assistant": "помоћник", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Унесите Гитхуб Раw УРЛ адресу", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Унесите ознаку модела (нпр. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Унесите број корака (нпр. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Унесите адресу (нпр. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Унесите адресу (нпр. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Унесите вашу е-пошту", "Enter Your Full Name": "Унесите ваше име и презиме", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Унесите вашу лозинку", "Enter Your Role": "Унесите вашу улогу", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Неуспешно стварање API кључа.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Неуспешно читање садржаја оставе", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "Упутства су савршено праћена", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "Функције", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Сећање успешно обрисано", "Memory updated successfully": "Сећање успешно измењено", "Merge Responses": "Спој одговоре", + "Merged Response": "Спојени одговор", "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)": "", "Min P": "", "Mirostat": "Миростат", "Mirostat Eta": "Миростат Ета", @@ -761,11 +780,11 @@ "New Password": "Нова лозинка", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "Иди на дно странице приликом промене гране", + "Scroll On Branch Change": "", "Search": "Претражи", "Search a model": "Претражи модел", "Search Base": "Претражи базу", @@ -1140,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": "Топ К", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "Јуче", "You": "Ти", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Можете учинити разговор са ВЈМ-овима приснијим додавањем сећања користећи „Управљај“ думе испод и тиме их учинити приснијим и кориснијим.", "You cannot upload an empty file.": "", - "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": "Поделили сте ово ћаскање", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index fe9c07420..8f85e76ed 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Tillåt radering av chatt", "Allow Chat Deletion": "Tillåt chattborttagning", "Allow Chat Edit": "Tillåt redigering av chatt", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Tillåt filuppladdning", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Tillåt icke-lokala röster", @@ -76,6 +78,7 @@ "Always": "Alltid", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Fantastiskt", "an assistant": "en assistent", "Analyzed": "Analyserad", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Ange Github Raw URL", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "Ange modelltagg (t.ex. {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Ange antal steg (t.ex. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "Ange URL (t.ex. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Ange URL (t.ex. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "Ange din e-post", "Enter Your Full Name": "Ange ditt fullständiga namn", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "Ange ditt lösenord", "Enter Your Role": "Ange din roll", @@ -511,10 +523,15 @@ "Export Tools": "Exportera verktyg", "External": "", "External Models": "Externa modeller", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "Misslyckades med att skapa API-nyckel.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Misslyckades med att läsa urklippsinnehåll", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "Sammanslaget svar", "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.": "Meddelanden du skickar efter att ha skapat din länk kommer inte att delas. Användare med URL:en kommer att kunna se delad chatt.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Nytt lösenord", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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": "Att spara chatloggar direkt till din webbläsares lagring stöds inte längre. Ta en stund och ladda ner och radera dina chattloggar genom att klicka på knappen nedan. Oroa dig inte, du kan enkelt importera dina chattloggar till backend genom", - "Scroll to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "Sök", "Search a model": "Sök efter en modell", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Skriv en sammanfattning på 50 ord som sammanfattar [ämne eller nyckelord].", "Write something...": "Skriv någonting...", "Write your model template content here": "Skriv din models innehåll här", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Igår", "You": "Dig", "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.": "Du kan endast chatta med maximalt {{maxCount}} fil(er) på samma gång", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Du kan anpassa dina interaktioner med stora språkmodeller genom att lägga till minnen via knappen 'Hantera' nedan, så att de blir mer användbara och skräddarsydda för dig.", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "Du har inga arkiverade samtal.", "You have shared this chat": "Du har delat denna chatt", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index ca20fc7dc..638d9eca3 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -32,12 +32,12 @@ "Add a short description about what this model does": "เพิ่มคำอธิบายสั้นๆ เกี่ยวกับสิ่งที่โมเดลนี้ทำ", "Add a tag": "เพิ่มแท็ก", "Add Arena Model": "", - "Add Connection": "", - "Add Content": "", - "Add content here": "", + "Add Connection": "เพิ่มการเชื่อมต่อ", + "Add Content": "เพิ่มเนื้อหา", + "Add content here": "เพิ่มเนื้อหาตรงนี้", "Add custom prompt": "เพิ่มพรอมต์ที่กำหนดเอง", "Add Files": "เพิ่มไฟล์", - "Add Group": "", + "Add Group": "เพิ่มกลุ่ม", "Add Memory": "เพิ่มความจำ", "Add Model": "เพิ่มโมเดล", "Add Reaction": "", @@ -57,17 +57,19 @@ "All": "", "All Documents": "เอกสารทั้งหมด", "All models deleted successfully": "", - "Allow Call": "", - "Allow Chat Controls": "", - "Allow Chat Delete": "", + "Allow Call": "อนุญาตการโทร", + "Allow Chat Controls": "อนุญาตการควบคุมแชท", + "Allow Chat Delete": "อนุญาตการลบแชท", "Allow Chat Deletion": "อนุญาตการลบการสนทนา", - "Allow Chat Edit": "", - "Allow File Upload": "", + "Allow Chat Edit": "อนุญาตการแก้ไขแชท", + "Allow Chat Export": "อนุญาตการส่งออกแชท", + "Allow Chat Share": "อนุญาตการแชร์แชท", + "Allow File Upload": "อนุญาตการนำเข้าไฟล์", "Allow Multiple Models in Chat": "", "Allow non-local voices": "อนุญาตเสียงที่ไม่ใช่ท้องถิ่น", - "Allow Speech to Text": "", - "Allow Temporary Chat": "", - "Allow Text to Speech": "", + "Allow Speech to Text": "อนุญาตแปลงเสียงเป็นตัวอักษร", + "Allow Temporary Chat": "อนุญาตการแชทชั่วคราว", + "Allow Text to Speech": "อนุญาตแปลงตัวอักษรเป็นตัวเสียง", "Allow User Location": "อนุญาตตำแหน่งผู้ใช้", "Allow Voice Interruption in Call": "อนุญาตการแทรกเสียงในสาย", "Allowed Endpoints": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "ผู้ช่วย", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "ใส่ URL ดิบของ Github", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "ใส่แท็กโมเดล (เช่น {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "ใส่จำนวนขั้นตอน (เช่น 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,21 +475,25 @@ "Enter 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 your current password": "", "Enter Your Email": "ใส่อีเมลของคุณ", "Enter Your Full Name": "ใส่ชื่อเต็มของคุณ", "Enter your message": "ใส่ข้อความของคุณ", - "Enter your name": "", - "Enter your new password": "", + "Enter your name": "กรอกชื่อของคุณ", + "Enter Your Name": "", + "Enter your new password": "กรอกรหัสผ่านใหม่ของคุณ", "Enter Your Password": "ใส่รหัสผ่านของคุณ", "Enter Your Role": "ใส่บทบาทของคุณ", - "Enter Your Username": "", + "Enter Your Username": "กรอกชื่อบัญชีผู้ใช้ของคุณ", "Enter your webhook URL": "", "Error": "ข้อผิดพลาด", "ERROR": "", "Error accessing Google Drive: {{error}}": "", "Error uploading file: {{error}}": "", - "Evaluations": "", + "Evaluations": "การประเมิน", "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", "Example: ALL": "", @@ -492,9 +504,9 @@ "Exclude": "", "Execute code for analysis": "", "Executing **{{NAME}}**...": "", - "Expand": "", + "Expand": "ขยาย", "Experimental": "การทดลอง", - "Explain": "", + "Explain": "อธิบาย", "Explain this section to me in more detail": "", "Explore the cosmos": "", "Export": "ส่งออก", @@ -511,10 +523,15 @@ "Export Tools": "ส่งออกเครื่องมือ", "External": "", "External Models": "โมเดลภายนอก", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "สร้างคีย์ API ล้มเหลว", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "อ่านเนื้อหาคลิปบอร์ดล้มเหลว", "Failed to save connections": "", "Failed to save models configuration": "", @@ -523,8 +540,8 @@ "Features": "", "Features Permissions": "", "February": "กุมภาพันธ์", - "Feedback History": "", - "Feedbacks": "", + "Feedback History": "ประวัติการการตอบรับ", + "Feedbacks": "การตอบรับ", "Feel free to add specific details": "สามารถเพิ่มรายละเอียดเฉพาะได้", "File": "ไฟล์", "File added successfully.": "", @@ -544,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": "ปฏิบัติตามคำแนะนำอย่างสมบูรณ์แบบ", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "อัปเดตฟังก์ชันสำเร็จ", "Functions": "ฟังก์ชัน", - "Functions allow arbitrary code execution": "ฟังก์ชันอนุญาตการเรียกใช้โค้ดโดยพลการ", "Functions allow arbitrary code execution.": "ฟังก์ชันอนุญาตการเรียกใช้โค้ดโดยพลการ", "Functions imported successfully": "นำเข้าฟังก์ชันสำเร็จ", "Gemini": "", @@ -586,9 +601,9 @@ "Group created successfully": "", "Group deleted successfully": "", "Group Description": "", - "Group Name": "", + "Group Name": "ชื่อกลุ่ม", "Group updated successfully": "", - "Groups": "", + "Groups": "กลุ่ม", "Haptic Feedback": "", "has no conversations.": "ไม่มีการสนทนา", "Hello, {{name}}": "สวัสดี, {{name}}", @@ -656,9 +671,9 @@ "Key": "", "Keyboard shortcuts": "ทางลัดแป้นพิมพ์", "Knowledge": "ความรู้", - "Knowledge Access": "", - "Knowledge created successfully.": "", - "Knowledge deleted successfully.": "", + "Knowledge Access": "การเข้าถึงความรู้", + "Knowledge created successfully.": "สร้างความรู้สำเร็จ", + "Knowledge deleted successfully.": "ลบความรู้สำเร็จ", "Knowledge Public Sharing": "", "Knowledge reset successfully.": "", "Knowledge updated successfully": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "ลบโมเดลสำเร็จ", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "การตอบกลับที่รวมกัน", "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)": "", "Min P": "", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "รหัสผ่านใหม่", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "ไม่มีเนื้อหาที่จะพูด", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "ค้นหา", "Search a model": "ค้นหาโมเดล", "Search Base": "", @@ -1140,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", @@ -1194,7 +1212,7 @@ "User Webhooks": "", "Username": "", "Users": "ผู้ใช้", - "Using the default arena model with all models. Click the plus button to add custom models.": "", + "Using the default arena model with all models. Click the plus button to add custom models.": "ใช้โมเดล Arena กับโมเดลทั้งหมด คลิกปุ่มบวกเพื่อเพิ่มโมเดลที่กำหนดเอง", "Utilize": "ใช้", "Valid time units:": "หน่วยเวลาใช้ได้:", "Valves": "วาล์ว", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "เมื่อวาน", "You": "คุณ", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "คุณสามารถปรับแต่งการโต้ตอบของคุณกับ LLMs โดยเพิ่มความทรงจำผ่านปุ่ม 'จัดการ' ด้านล่าง ทำให้มันมีประโยชน์และเหมาะกับคุณมากขึ้น", "You cannot upload an empty file.": "", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "", "You have no archived conversations.": "คุณไม่มีการสนทนาที่เก็บถาวร", "You have shared this chat": "คุณได้แชร์แชทนี้แล้ว", diff --git a/src/lib/i18n/locales/tk-TM/translation.json b/src/lib/i18n/locales/tk-TM/translation.json index c065f8789..93a73c070 100644 --- a/src/lib/i18n/locales/tk-TM/translation.json +++ b/src/lib/i18n/locales/tk-TM/translation.json @@ -712,5 +712,6 @@ "Your username": "Ulanyjy adyňyz", "You're offline.": "Offline.", "You've reached your token limit for the day.": "Günüňize token çägiňize ýetdiňiz.", + "Merged Response": "Birleşdirilen jogap", "ZIP Code": "Poçta Kody" } diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index ef83bdf42..6f5d4ce19 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "", @@ -431,6 +438,7 @@ "Enter Model ID": "", "Enter model tag (e.g. {{modelTag}})": "", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "", "Enter URL (e.g. http://localhost:11434)": "", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "", "Enter Your Full Name": "", "Enter your message": "", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "", "Enter Your Role": "", @@ -511,10 +523,15 @@ "Export Tools": "", "External": "", "External Models": "", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "", "Functions": "", - "Functions allow arbitrary code execution": "", "Functions allow arbitrary code execution.": "", "Functions imported successfully": "", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "", "Memory updated successfully": "", "Merge Responses": "", + "Merged Response": "Birleşdirilen jogap", "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.": "", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "", "Mirostat": "", "Mirostat Eta": "", @@ -761,11 +780,11 @@ "New Password": "", "new-channel": "", "No content found": "", + "No content found in file.": "", "No content to speak": "", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "", + "Scroll On Branch Change": "", "Search": "", "Search a model": "", "Search Base": "", @@ -1140,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": "", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "", "Write something...": "", "Write your model template content here": "", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "", "You": "", "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.": "", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", "You cannot upload an empty file.": "", - "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": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index cccf6fe4f..7fb9df64d 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Sohbet Silmeye İzin Ver", "Allow Chat Deletion": "Sohbet Silmeye İzin Ver", "Allow Chat Edit": "Sohbet Silmeye İzin Ver", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Dosya Yüklemeye İzin Ver", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Yerel olmayan seslere izin verin", @@ -76,6 +78,7 @@ "Always": "Daima", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "Harika", "an assistant": "bir asistan", "Analyzed": "Analiz edildi", @@ -414,6 +417,10 @@ "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 Github Raw URL": "Github Raw URL'sini girin", @@ -431,6 +438,7 @@ "Enter Model ID": "Model ID'sini Girin", "Enter model tag (e.g. {{modelTag}})": "Model etiketini girin (örn. {{modelTag}})", "Enter Mojeek Search API Key": "Mojeek Search API Anahtarını Girin", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Adım Sayısını Girin (örn. 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "URL'yi Girin (örn. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "URL'yi Girin (e.g. http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Mevcut parolanızı girin", "Enter Your Email": "E-postanızı Girin", "Enter Your Full Name": "Tam Adınızı Girin", "Enter your message": "Mesajınızı girin", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "Yeni parolanızı girin", "Enter Your Password": "Parolanızı Girin", "Enter Your Role": "Rolünüzü Girin", @@ -511,10 +523,15 @@ "Export Tools": "Araçları Dışa Aktar", "External": "", "External Models": "Modelleri Dışa Aktar", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Dosya eklenemedi.", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "API Anahtarı oluşturulamadı.", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "Pano içeriği okunamadı", "Failed to save connections": "", "Failed to save models configuration": "Modeller yapılandırması kaydedilemedi", @@ -544,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", @@ -565,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": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Bellek başarıyla silindi", "Memory updated successfully": "Bellek başarıyla güncellendi", "Merge Responses": "Yanıtları Birleştir", + "Merged Response": "Birleştirilmiş Yanıt", "Message rating should be enabled to use this feature": "Bu özelliği kullanmak için mesaj derecelendirmesi etkinleştirilmelidir", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Bağlantınızı oluşturduktan sonra gönderdiğiniz mesajlar paylaşılmayacaktır. URL'ye sahip kullanıcılar paylaşılan sohbeti görüntüleyebilecektir.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Yeni Parola", "new-channel": "yeni-kanal", "No content found": "İçerik bulunamadı", + "No content found in file.": "", "No content to speak": "Konuşacak içerik yok", "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": "", @@ -939,7 +958,7 @@ "Save Tag": "Etiketi Kaydet", "Saved": "Kaydedildi", "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": "Sohbet kayıtlarının doğrudan tarayıcınızın depolama alanına kaydedilmesi artık desteklenmemektedir. Lütfen aşağıdaki butona tıklayarak sohbet kayıtlarınızı indirmek ve silmek için bir dakikanızı ayırın. Endişelenmeyin, sohbet günlüklerinizi arkayüze kolayca yeniden aktarabilirsiniz:", - "Scroll to bottom when switching between branches": "Dallar arasında geçiş yaparken en alta kaydır", + "Scroll On Branch Change": "", "Search": "Ara", "Search a model": "Bir model ara", "Search Base": "Temel Ara", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "[Konuyu veya anahtar kelimeyi] özetleyen 50 kelimelik bir özet yazın.", "Write something...": "Bir şeyler yazın...", "Write your model template content here": "Model şablon içeriğinizi buraya yazın", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Dün", "You": "Sen", "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.": "Aynı anda en fazla {{maxCount}} dosya ile sohbet edebilirsiniz.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Aşağıdaki 'Yönet' düğmesi aracılığıyla bellekler ekleyerek LLM'lerle etkileşimlerinizi kişiselleştirebilir, onları daha yararlı ve size özel hale getirebilirsiniz.", "You cannot upload an empty file.": "Boş bir dosya yükleyemezsiniz.", - "You do not have permission to upload files": "", "You do not have permission to upload files.": "Dosya yüklemek için izniniz yok.", "You have no archived conversations.": "Arşivlenmiş sohbetleriniz yok.", "You have shared this chat": "Bu sohbeti paylaştınız", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index 5b2f95312..f6b786cfd 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Дозволити видалення чату", "Allow Chat Deletion": "Дозволити видалення чату", "Allow Chat Edit": "Дозволити редагування чату", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Дозволити завантаження файлів", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Дозволити не локальні голоси", @@ -76,6 +78,7 @@ "Always": "Завжди", "Always Collapse Code Blocks": "Завжди згортати блоки коду", "Always Expand Details": "Завжди розгортати деталі", + "Always Play Notification Sound": "", "Amazing": "Чудово", "an assistant": "асистента", "Analyzed": "Проаналізовано", @@ -414,6 +417,10 @@ "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 Firecrawl API Base URL": "", "Enter Firecrawl API Key": "", "Enter Github Raw URL": "Введіть Raw URL-адресу Github", @@ -431,6 +438,7 @@ "Enter Model ID": "Введіть ID моделі", "Enter model tag (e.g. {{modelTag}})": "Введіть тег моделі (напр., {{modelTag}})", "Enter Mojeek Search API Key": "Введіть API ключ для пошуку Mojeek", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Введіть кількість кроків (напр., 50)", "Enter Perplexity API Key": "Введіть ключ API для Perplexity", "Enter Playwright Timeout": "", @@ -467,11 +475,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 your current password": "Введіть ваш поточний пароль", "Enter Your Email": "Введіть вашу ел. пошту", "Enter Your Full Name": "Введіть ваше ім'я", "Enter your message": "Введіть повідомлення ", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "Введіть ваш новий пароль", "Enter Your Password": "Введіть ваш пароль", "Enter Your Role": "Введіть вашу роль", @@ -511,10 +523,15 @@ "Export Tools": "Експорт інструментів", "External": "Зовнішній", "External Models": "Зовнішні моделі", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Не вдалося додати файл.", "Failed to connect to {{URL}} OpenAPI tool server": "Не вдалося підключитися до серверу інструментів OpenAPI {{URL}}", "Failed to create API Key.": "Не вдалося створити API ключ.", "Failed to fetch models": "Не вдалося отримати моделі", + "Failed to load file content.": "", "Failed to read clipboard contents": "Не вдалося прочитати вміст буфера обміну", "Failed to save connections": "", "Failed to save models configuration": "Не вдалося зберегти конфігурацію моделей", @@ -544,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": "Бездоганно дотримувався інструкцій", @@ -565,7 +581,6 @@ "Function Name": "Назва функції", "Function updated successfully": "Функцію успішно оновлено", "Functions": "Функції", - "Functions allow arbitrary code execution": "Функції дозволяють виконання довільного коду", "Functions allow arbitrary code execution.": "Функції дозволяють виконання довільного коду.", "Functions imported successfully": "Функції успішно імпортовано", "Gemini": "Gemini", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Пам'ять успішно видалено", "Memory updated successfully": "Пам'ять успішно оновлено", "Merge Responses": "Об'єднати відповіді", + "Merged Response": "Об'єднана відповідь", "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)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Новий пароль", "new-channel": "новий-канал", "No content found": "Контент не знайдено.", + "No content found in file.": "", "No content to speak": "Нема чого говорити", "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": "Не знайдено двигуна висновків з підтримкою керування", @@ -939,7 +958,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 to bottom when switching between branches": "Перемотувати до кінця при перемиканні між гілками", + "Scroll On Branch Change": "", "Search": "Пошук", "Search a model": "Шукати модель", "Search Base": "База пошуку", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "Вчора", "You": "Ви", "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.": "Ви можете налаштувати ваші взаємодії з мовними моделями, додавши спогади через кнопку 'Керувати' внизу, що зробить їх більш корисними та персоналізованими для вас.", "You cannot upload an empty file.": "Ви не можете завантажити порожній файл.", - "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": "Ви поділилися цим чатом", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index 6110aa820..03e78f317 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "", "Allow Chat Deletion": "چیٹ کو حذف کرنے کی اجازت دیں", "Allow Chat Edit": "", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "", "Allow Multiple Models in Chat": "", "Allow non-local voices": "غیر مقامی آوازوں کی اجازت دیں", @@ -76,6 +78,7 @@ "Always": "", "Always Collapse Code Blocks": "", "Always Expand Details": "", + "Always Play Notification Sound": "", "Amazing": "", "an assistant": "معاون", "Analyzed": "", @@ -414,6 +417,10 @@ "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 Github Raw URL": "گیٹ ہب را یو آر ایل درج کریں", @@ -431,6 +438,7 @@ "Enter Model ID": "ماڈل آئی ڈی درج کریں", "Enter model tag (e.g. {{modelTag}})": "ماڈل ٹیگ داخل کریں (مثال کے طور پر {{modelTag}})", "Enter Mojeek Search API Key": "", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "درج کریں مراحل کی تعداد (جیسے 50)", "Enter Perplexity API Key": "", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "", "Enter URL (e.g. http://127.0.0.1:7860/)": "یو آر ایل درج کریں (جیسے کہ http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "یو آر ایل درج کریں (مثلاً http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "", "Enter Your Email": "اپنا ای میل درج کریں", "Enter Your Full Name": "اپنا مکمل نام درج کریں", "Enter your message": "اپنا پیغام درج کریں", "Enter your name": "", + "Enter Your Name": "", "Enter your new password": "", "Enter Your Password": "اپنا پاس ورڈ درج کریں", "Enter Your Role": "اپنا کردار درج کریں", @@ -511,10 +523,15 @@ "Export Tools": "ایکسپورٹ ٹولز", "External": "", "External Models": "بیرونی ماڈلز", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "فائل شامل کرنے میں ناکام", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to create API Key.": "API کلید بنانے میں ناکام", "Failed to fetch models": "", + "Failed to load file content.": "", "Failed to read clipboard contents": "کلپ بورڈ مواد کو پڑھنے میں ناکام", "Failed to save connections": "", "Failed to save models configuration": "", @@ -544,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": "ہدایتوں کی مکمل پیروی کی گئی", @@ -565,7 +581,6 @@ "Function Name": "", "Function updated successfully": "فنکشن کو کامیابی سے اپ ڈیٹ کر دیا گیا", "Functions": "افعال", - "Functions allow arbitrary code execution": "فنکشنز کوڈ کے بلاواسطہ نفاذ کی اجازت دیتے ہیں", "Functions allow arbitrary code execution.": "افعال صوابدیدی کوڈ کے اجرا کی اجازت دیتے ہیں", "Functions imported successfully": "فنکشنز کامیابی سے درآمد ہو گئے ہیں", "Gemini": "", @@ -718,8 +733,12 @@ "Memory deleted successfully": "میموری کامیابی سے حذف ہوگئی", "Memory updated successfully": "حافظہ کامیابی سے اپ ڈیٹ کر دیا گیا", "Merge Responses": "جوابات کو یکجا کریں", + "Merged Response": "مرکب جواب", "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.": "آپ کے لنک بنانے کے بعد بھیجے گئے پیغامات شیئر نہیں کیے جائیں گے یو آر ایل والے صارفین شیئر کیا گیا چیٹ دیکھ سکیں گے", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "کم سے کم P", "Mirostat": "میروسٹیٹ", "Mirostat Eta": "میروسٹیٹ ایٹا", @@ -761,11 +780,11 @@ "New Password": "نیا پاس ورڈ", "new-channel": "", "No content found": "کوئی مواد نہیں ملا", + "No content found in file.": "", "No content to speak": "بولنے کے لیے کوئی مواد نہیں", "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": "", @@ -939,7 +958,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 to bottom when switching between branches": "شاخیں تبدیل کرتے وقت نیچے تک سکرول کریں", + "Scroll On Branch Change": "", "Search": "تلاش کریں", "Search a model": "ماڈل تلاش کریں", "Search Base": "", @@ -1140,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", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "کل", "You": "آپ", "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.": "آپ نیچے موجود 'Manage' بٹن کے ذریعے LLMs کے ساتھ اپنی بات چیت کو یادداشتیں شامل کرکے ذاتی بنا سکتے ہیں، جو انہیں آپ کے لیے زیادہ مددگار اور آپ کے متعلق بنائے گی", "You cannot upload an empty file.": "آپ خالی فائل اپلوڈ نہیں کر سکتے", - "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": "آپ نے یہ چیٹ شیئر کی ہے", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 464c374f8..8ff968405 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -62,6 +62,8 @@ "Allow Chat Delete": "Cho phép Xóa Chat", "Allow Chat Deletion": "Cho phép Xóa nội dung chat", "Allow Chat Edit": "Cho phép Chỉnh sửa Chat", + "Allow Chat Export": "", + "Allow Chat Share": "", "Allow File Upload": "Cho phép Tải tệp lên", "Allow Multiple Models in Chat": "", "Allow non-local voices": "Cho phép giọng nói không bản xứ", @@ -76,6 +78,7 @@ "Always": "Luôn luôn", "Always Collapse Code Blocks": "Luôn Thu gọn Khối mã", "Always Expand Details": "Luôn Mở rộng Chi tiết", + "Always Play Notification Sound": "", "Amazing": "Tuyệt vời", "an assistant": "trợ lý", "Analyzed": "Đã phân tích", @@ -414,6 +417,10 @@ "Enter Document Intelligence Key": "Nhập Khóa Trí tuệ Tài liệu", "Enter domains separated by commas (e.g., example.com,site.org)": "Nhập các tên miền được phân tách bằng dấu phẩy (ví dụ: example.com,site.org)", "Enter Exa API Key": "Nhập Khóa 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 Firecrawl API Base URL": "", "Enter Firecrawl API Key": "", "Enter Github Raw URL": "Nhập URL cho Github Raw", @@ -431,6 +438,7 @@ "Enter Model ID": "Nhập ID Mô hình", "Enter model tag (e.g. {{modelTag}})": "Nhập thẻ mô hình (vd: {{modelTag}})", "Enter Mojeek Search API Key": "Nhập Khóa API Mojeek Search", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "Nhập số Steps (vd: 50)", "Enter Perplexity API Key": "Nhập Khóa API Perplexity", "Enter Playwright Timeout": "", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "Nhập Top K Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "Nhập URL (vd: http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Nhập URL (vd: http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "Nhập mật khẩu hiện tại của bạn", "Enter Your Email": "Nhập Email của bạn", "Enter Your Full Name": "Nhập Họ và Tên của bạn", "Enter your message": "Nhập tin nhắn của bạn", "Enter your name": "Nhập tên của bạn", + "Enter Your Name": "", "Enter your new password": "Nhập mật khẩu mới của bạn", "Enter Your Password": "Nhập Mật khẩu của bạn", "Enter Your Role": "Nhập vai trò của bạn", @@ -511,10 +523,15 @@ "Export Tools": "Tải Tools về máy", "External": "Bên ngoài", "External Models": "Các model ngoài", + "External Web Loader API Key": "", + "External Web Loader URL": "", + "External Web Search API Key": "", + "External Web Search URL": "", "Failed to add file.": "Không thể thêm tệp.", "Failed to connect to {{URL}} OpenAPI tool server": "Không thể kết nối đến máy chủ công cụ OpenAPI {{URL}}", "Failed to create API Key.": "Lỗi khởi tạo API Key", "Failed to fetch models": "Không thể lấy danh sách mô hình", + "Failed to load file content.": "", "Failed to read clipboard contents": "Không thể đọc nội dung clipboard", "Failed to save connections": "Không thể lưu các kết nối", "Failed to save models configuration": "Không thể lưu cấu hình mô hình", @@ -544,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", @@ -565,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", @@ -718,8 +733,12 @@ "Memory deleted successfully": "Memory đã bị loại bỏ", "Memory updated successfully": "Memory đã cập nhật thành công", "Merge Responses": "Hợp nhất các phản hồi", + "Merged Response": "Phản hồi Hợp nhất", "Message rating should be enabled to use this feature": "Cần bật tính năng đánh giá tin nhắn để sử dụng tính năng này", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Tin nhắn bạn gửi sau khi tạo liên kết sẽ không được chia sẻ. Người dùng có URL sẽ có thể xem cuộc trò chuyện được chia sẻ.", + "Microsoft OneDrive": "", + "Microsoft OneDrive (personal)": "", + "Microsoft OneDrive (work/school)": "", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "Mật khẩu mới", "new-channel": "kênh-mới", "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", "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ý", @@ -939,7 +958,7 @@ "Save Tag": "Lưu Thẻ", "Saved": "Đã lưu", "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": "Không còn hỗ trợ lưu trữ lịch sử chat trực tiếp vào bộ nhớ trình duyệt của bạn. Vui lòng dành thời gian để tải xuống và xóa lịch sử chat của bạn bằng cách nhấp vào nút bên dưới. Đừng lo lắng, bạn có thể dễ dàng nhập lại lịch sử chat của mình vào backend thông qua", - "Scroll to bottom when switching between branches": "Cuộn xuống dưới cùng khi chuyển đổi giữa các nhánh", + "Scroll On Branch Change": "", "Search": "Tìm kiếm", "Search a model": "Tìm model", "Search Base": "Cơ sở Tìm kiếm", @@ -1140,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", @@ -1246,13 +1264,15 @@ "Write a summary in 50 words that summarizes [topic or keyword].": "Viết một tóm tắt trong vòng 50 từ cho [chủ đề hoặc từ khóa].", "Write something...": "Viết gì đó...", "Write your model template content here": "Viết nội dung mẫu mô hình của bạn tại đây", + "Yacy Instance URL": "", + "Yacy Password": "", + "Yacy Username": "", "Yesterday": "Hôm qua", "You": "Bạn", "You are currently using a trial license. Please contact support to upgrade your license.": "Bạn hiện đang sử dụng giấy phép dùng thử. Vui lòng liên hệ bộ phận hỗ trợ để nâng cấp giấy phép của bạn.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Bạn chỉ có thể trò chuyện với tối đa {{maxCount}} tệp cùng một lúc.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Bạn có thể cá nhân hóa các tương tác của mình với LLM bằng cách thêm bộ nhớ thông qua nút 'Quản lý' bên dưới, làm cho chúng hữu ích hơn và phù hợp với bạn hơn.", "You cannot upload an empty file.": "Bạn không thể tải lên một tệp trống.", - "You do not have permission to upload files": "Bạn không có quyền tải lên tệp", "You do not have permission to upload files.": "Bạn không có quyền tải lên tệp.", "You have no archived conversations.": "Bạn chưa lưu trữ một nội dung chat nào", "You have shared this chat": "Bạn vừa chia sẻ chat này", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index f775849a4..1681b2dcc 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -57,25 +57,28 @@ "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 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": "允许的 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": "保持", "Always Collapse Code Blocks": "始终折叠代码块", "Always Expand Details": "始终展开详细信息", + "Always Play Notification Sound": "始终播放通知声音", "Amazing": "很棒", "an assistant": "一个助手", "Analyzed": "已分析", @@ -83,7 +86,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 +248,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 +311,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 +367,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": "编辑频道", @@ -414,6 +417,10 @@ "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": "输入外部 Web Loader API 密钥", + "Enter External Web Loader URL": "输入外部 Web Loader URL", + "Enter External Web Search API Key": "输入外部 Web Search API 密钥", + "Enter External Web Search URL": "输入外部 Web Search URL", "Enter Firecrawl API Base URL": "输入 Firecrawl API 请求地址", "Enter Firecrawl API Key": "输入 Firecrawl API 密钥", "Enter Github Raw URL": "输入 Github Raw 地址", @@ -431,6 +438,7 @@ "Enter Model ID": "输入模型 ID", "Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如:{{modelTag}})", "Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "输入步骤数 (Steps) (例如:50)", "Enter Perplexity API Key": "输入 Perplexity API 密钥", "Enter Playwright Timeout": "输入 Playwright 超时时间", @@ -452,8 +460,8 @@ "Enter server host": "输入服务器主机名 ", "Enter server label": "输入服务器标签", "Enter server port": "输入服务器端口", - "Enter Sougou Search API sID": "输入搜狗搜索 API 的 Secret ID", - "Enter Sougou Search API SK": "输入搜狗搜索 API 的 Secret Key", + "Enter Sougou Search API sID": "输入搜狗搜索 API Secret ID", + "Enter Sougou Search API SK": "输入搜狗搜索 API Secret 密钥", "Enter stop sequence": "输入停止序列 (Stop Sequence)", "Enter system prompt": "输入系统提示词 (Prompt)", "Enter system prompt here": "在这里输入系统提示词 (Prompt)", @@ -467,11 +475,15 @@ "Enter Top K Reranker": "输入 Top K Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "输入地址 (例如:http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "输入地址 (例如:http://localhost:11434)", + "Enter Yacy Password": "", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", + "Enter Yacy Username": "", "Enter your current password": "输入当前密码", "Enter Your Email": "输入您的电子邮箱", "Enter Your Full Name": "输入您的名称", "Enter your message": "输入您的消息", "Enter your name": "输入您的名称", + "Enter Your Name": "", "Enter your new password": "输入新的密码", "Enter Your Password": "输入您的密码", "Enter Your Role": "输入您的权限组", @@ -511,10 +523,15 @@ "Export Tools": "导出工具", "External": "外部", "External Models": "外部模型", + "External Web Loader API Key": "外部 Web Loader API 密钥", + "External Web Loader URL": "外部 Web Loader API URL", + "External Web Search API Key": "外部 Web Search API 密钥", + "External Web Search URL": "外部 Web Search API URL", "Failed to add file.": "添加文件失败。", "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 read clipboard contents": "无法读取剪贴板内容", "Failed to save connections": "无法保存连接", "Failed to save models configuration": "无法保存模型配置", @@ -544,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": "完全按照指示执行", @@ -565,7 +581,6 @@ "Function Name": "函数名称", "Function updated successfully": "函数更新成功", "Functions": "函数", - "Functions allow arbitrary code execution": "注意:函数有权执行任意代码", "Functions allow arbitrary code execution.": "注意:函数有权执行任意代码。", "Functions imported successfully": "函数导入成功", "Gemini": "Gemini", @@ -605,8 +620,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 +682,7 @@ "Label": "标签", "Landing Page Mode": "默认主页样式", "Language": "语言", - "Language Locales": "", + "Language Locales": "语言环境", "Last Active": "最后在线时间", "Last Modified": "最后修改时间", "Last reply": "最后回复", @@ -718,8 +733,12 @@ "Memory deleted successfully": "记忆删除成功", "Memory updated successfully": "记忆更新成功", "Merge Responses": "合并回复", + "Merged Response": "合并的回复", "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", + "Microsoft OneDrive (personal)": "Microsoft OneDrive(个人账户)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive(工作或学校账户)", "Min P": "Min P", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -761,11 +780,11 @@ "New Password": "新密码", "new-channel": "新频道", "No content found": "未发现内容", + "No content found in file.": "文件中未找到内容", "No content to speak": "没有内容可朗读", "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": "未找到支持管理的推理引擎", @@ -902,7 +921,7 @@ "Reindex Knowledge Base Vectors": "重建知识库向量", "Release Notes": "更新日志", "Relevance": "相关性", - "Relevance Threshold": "", + "Relevance Threshold": "相关性阈值", "Remove": "移除", "Remove Model": "移除模型", "Rename": "重命名", @@ -939,7 +958,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 to bottom when switching between branches": "在分支间切换时滚动到底部", + "Scroll On Branch Change": "切换对话分支时滚动", "Search": "搜索", "Search a model": "搜索模型", "Search Base": "搜索库", @@ -1032,8 +1051,8 @@ "Sign up to {{WEBUI_NAME}}": "注册 {{WEBUI_NAME}}", "Signing in to {{WEBUI_NAME}}": "正在登录 {{WEBUI_NAME}}", "sk-1234": "sk-1234", - "Sougou Search API sID": "搜狗搜索 API 的 Secret ID", - "Sougou Search API SK": "搜狗搜索 API 的 Secret Key", + "Sougou Search API sID": "搜狗搜索 API Secret ID", + "Sougou Search API SK": "搜狗搜索 API Secret 密钥", "Source": "来源", "Speech Playback Speed": "语音播放速度", "Speech recognition error: {{error}}": "语音识别错误:{{error}}", @@ -1140,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", @@ -1203,7 +1221,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": "查看回复", @@ -1246,13 +1264,15 @@ "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": "", "Yesterday": "昨天", "You": "你", "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.": "通过点击下方的“管理”按钮,你可以添加记忆,以个性化大语言模型的互动,使其更有用,更符合你的需求。", "You cannot upload an empty file.": "请勿上传空文件。", - "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": "此对话已经分享过", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 4eb153550..b07c1cab7 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -1,8 +1,8 @@ { "-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 username_password`)", - "(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)", + "(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)": "(最新版)", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", @@ -12,14 +12,14 @@ "{{user}}'s Chats": "{{user}} 的對話", "{{webUIName}} Backend Required": "需要 {{webUIName}} 後端", "*Prompt node ID(s) are required for image generation": "* 圖片生成需要提示詞節點 ID", - "A new version (v{{LATEST_VERSION}}) is now available.": "新版本 (v{{LATEST_VERSION}}) 現已釋出。", + "A new version (v{{LATEST_VERSION}}) is now available.": "新版本 (v{{LATEST_VERSION}}) 已釋出。", "A task model is used when performing tasks such as generating titles for chats and web search queries": "執行產生對話標題和網頁搜尋查詢等任務時會使用任務模型", - "a user": "一位使用者", + "a user": "使用者", "About": "關於", "Accept autocomplete generation / Jump to prompt variable": "接受自動完成生成/跳轉至提示變數", "Access": "存取", "Access Control": "存取控制", - "Accessible to all users": "所有使用者可存取", + "Accessible to all users": "所有使用者皆可存取", "Account": "帳號", "Account Activation Pending": "帳號待啟用", "Accurate information": "準確資訊", @@ -31,7 +31,7 @@ "Add a model ID": "新增模型 ID", "Add a short description about what this model does": "新增這個模型的簡短描述", "Add a tag": "新增標籤", - "Add Arena Model": "新增競技模型", + "Add Arena Model": "新增競技場模型", "Add Connection": "新增連線", "Add Content": "新增內容", "Add content here": "在此新增內容", @@ -57,17 +57,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 File Upload": "允許上傳檔案", "Allow Multiple Models in Chat": "允許在聊天中使用多個模型", "Allow non-local voices": "允許非本機語音", - "Allow Speech to Text": "", - "Allow Temporary Chat": "允許暫時對話", - "Allow Text to Speech": "", + "Allow Speech to Text": "允許語音轉文字", + "Allow Temporary Chat": "允許臨時對話", + "Allow Text to Speech": "允許文字轉語音", "Allow User Location": "允許使用者位置", "Allow Voice Interruption in Call": "允許在通話中打斷語音", "Allowed Endpoints": "允許的端點", @@ -76,8 +78,9 @@ "Always": "總是", "Always Collapse Code Blocks": "總是摺疊程式碼區塊", "Always Expand Details": "總是展開詳細資訊", + "Always Play Notification Sound": "總是播放通知音效", "Amazing": "很棒", - "an assistant": "一位助手", + "an assistant": "助理", "Analyzed": "分析完畢", "Analyzing...": "分析中……", "and": "和", @@ -102,11 +105,11 @@ "Are you sure you want to delete this message?": "您確定要刪除此訊息嗎?", "Are you sure you want to unarchive all archived chats?": "您確定要解除封存所有封存的對話記錄嗎?", "Are you sure?": "您確定嗎?", - "Arena Models": "競技模型", + "Arena Models": "競技場模型", "Artifacts": "成品", "Ask": "提問", "Ask a question": "提出問題", - "Assistant": "助手", + "Assistant": "助理", "Attach file from knowledge": "從知識庫附加檔案", "Attention to detail": "注重細節", "Attribute for Mail": "使用者郵箱屬性", @@ -120,7 +123,7 @@ "Auto-Copy Response to Clipboard": "自動將回應複製到剪貼簿", "Auto-playback response": "自動播放回應", "Autocomplete Generation": "自動完成生成", - "Autocomplete Generation Input Max Length": "自動完成產生輸入最大長度", + "Autocomplete Generation Input Max Length": "自動完成輸入最大長度", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 API 驗證字串", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 基礎 URL", @@ -142,7 +145,7 @@ "Bing Search V7 Endpoint": "Bing 搜尋 V7 端點", "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)", + "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "針對受限的回應,增強或懲罰特定 tokens。偏差值將限制在 -100 到 100 (含)。 (預設:none)", "Brave Search API Key": "Brave 搜尋 API 金鑰", "By {{name}}": "由 {{name}} 製作", "Bypass Embedding and Retrieval": "繞過嵌入與檢索", @@ -158,16 +161,16 @@ "Channel Name": "頻道名稱", "Channels": "頻道", "Character": "角色", - "Character limit for autocomplete generation input": "自動完成產生輸入的字元限制", + "Character limit for autocomplete generation input": "自動完成生成輸入的字元限制", "Chart new frontiers": "探索新領域", "Chat": "對話", "Chat Background Image": "對話背景圖片", "Chat Bubble UI": "對話氣泡介面", - "Chat Controls": "對話控制項", + "Chat Controls": "對話控制選項", "Chat direction": "對話方向", "Chat Overview": "對話概覽", "Chat Permissions": "對話權限", - "Chat Tags Auto-Generation": "對話標籤自動生成", + "Chat Tags Auto-Generation": "自動產生對話標籤", "Chats": "對話", "Check Again": "再次檢查", "Check for updates": "檢查更新", @@ -215,7 +218,7 @@ "ComfyUI Workflow": "ComfyUI 工作流程", "ComfyUI Workflow Nodes": "ComfyUI 工作流程節點", "Command": "命令", - "Completions": "補全", + "Completions": "自動完成", "Concurrent Requests": "平行請求", "Configure": "設定", "Confirm": "確認", @@ -238,14 +241,14 @@ "Continue with Email": "使用 Email 繼續", "Continue with LDAP": "使用 LDAP 繼續", "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "控制文字轉語音(TTS)請求中如何分割訊息文字。「標點符號」分割為句子,「段落」分割為段落,「無」則保持訊息為單一字串。", - "Control 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.": "控制生成文字中 token 序列的重複程度。較高的值(例如 1.5)會更強烈地懲罰重複,而較低的值(例如 1.1)會更寬容。設為 1 時,此功能將停用。", - "Controls": "控制項", + "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.": "控制生成文字中 token 序列的重複程度。較高的值(例如: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.": "控制輸出結果的連貫性與多樣性之間的平衡。數值越低會產生更集中且連貫的文字。", "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": "複製連結", @@ -308,7 +311,7 @@ "Deleted User": "刪除使用者?", "Describe your knowledge base and objectives": "描述您的知識庫和目標", "Description": "描述", - "Detect Artifacts Automatically": "自動檢測 Artifacts", + "Detect Artifacts Automatically": "自動偵測 Artifacts", "Didn't fully follow instructions": "未完全遵循指示", "Direct": "直接", "Direct Connections": "直接連線", @@ -357,16 +360,16 @@ "Drop any files here to add to the conversation": "拖拽任意檔案到此處以新增至對話", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如:'30s'、'10m'。有效的時間單位為 's'、'm'、'h'。", "e.g. \"json\" or a JSON schema": "範例:\"json\" 或一個 JSON schema", - "e.g. 60": "例如 60", - "e.g. A filter to remove profanity from text": "例如:從文字中移除髒話的篩選器", + "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(留空以自動檢測)", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "例如:en-US, ja-JP(留空以自動偵測)", "Edit": "編輯", - "Edit Arena Model": "編輯競技模型", + "Edit Arena Model": "編輯競技場模型", "Edit Channel": "編輯頻道", "Edit Connection": "編輯連線", "Edit Default Permissions": "編輯預設權限", @@ -382,7 +385,7 @@ "Embedding Model Engine": "嵌入模型引擎", "Embedding model set to \"{{embedding_model}}\"": "嵌入模型已設定為 \"{{embedding_model}}\"", "Enable API Key": "啟用 API 金鑰", - "Enable autocomplete generation for chat messages": "啟用聊天訊息的自動完成生成", + "Enable autocomplete generation for chat messages": "啟用聊天訊息的自動完成", "Enable Code Execution": "啟用程式碼執行", "Enable Code Interpreter": "啟用程式碼直譯器", "Enable Community Sharing": "啟用社群分享", @@ -392,7 +395,7 @@ "Enable Mirostat sampling for controlling perplexity.": "啟用 Mirostat 取樣以控制 perplexity。", "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": "輸入有關您的詳細資訊,讓您的大型語言模型可以回想起來", @@ -414,12 +417,16 @@ "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 Firecrawl API Base URL": "輸入 Firecrawl API Base 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": "輸入 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 Image Size (e.g. 512x512)": "輸入圖片尺寸(例如:512x512)", "Enter Jina API Key": "輸入 Jina API 金鑰", "Enter Jupyter Password": "輸入 Jupyter 密碼", "Enter Jupyter Token": "輸入 Jupyter Token", @@ -431,6 +438,7 @@ "Enter Model ID": "輸入模型 ID", "Enter model tag (e.g. {{modelTag}})": "輸入模型標籤(例如:{{modelTag}})", "Enter Mojeek Search API Key": "輸入 Mojeek 搜尋 API 金鑰", + "Enter New Password": "", "Enter Number of Steps (e.g. 50)": "輸入步驟數(例如:50)", "Enter Perplexity API Key": "輸入 Perplexity API 金鑰", "Enter Playwright Timeout": "輸入 Playwright 逾時時間(毫秒)", @@ -452,8 +460,8 @@ "Enter server host": "輸入伺服器主機", "Enter server label": "輸入伺服器標籤", "Enter server port": "輸入伺服器連接埠", - "Enter Sougou Search API sID": "輸入 搜狗搜索 API sID", - "Enter Sougou Search API SK": "輸入 搜狗搜索 API SK", + "Enter Sougou Search API sID": "輸入 搜狗搜尋 API sID", + "Enter Sougou Search API SK": "輸入 搜狗搜尋 API SK", "Enter stop sequence": "輸入停止序列", "Enter system prompt": "輸入系統提示詞", "Enter system prompt here": "在此輸入系統提示詞", @@ -467,11 +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 your current password": "輸入您的目前密碼", "Enter Your Email": "輸入您的電子郵件", "Enter Your Full Name": "輸入您的全名", "Enter your message": "輸入您的訊息", "Enter your name": "輸入你的名稱", + "Enter Your Name": "", "Enter your new password": "輸入您的新密碼", "Enter Your Password": "輸入您的密碼", "Enter Your Role": "輸入您的角色", @@ -511,10 +523,15 @@ "Export Tools": "匯出工具", "External": "外部", "External Models": "外部模型", + "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": "無法連線至 {{URL}} OpenAPI 工具伺服器", "Failed to create API Key.": "建立 API 金鑰失敗。", "Failed to fetch models": "取得模型失敗", + "Failed to load file content.": "載入檔案內容失敗。", "Failed to read clipboard contents": "讀取剪貼簿內容失敗", "Failed to save connections": "儲存連線失敗", "Failed to save models configuration": "儲存模型設定失敗", @@ -539,12 +556,11 @@ "Filter is now globally enabled": "篩選器現在已全域啟用", "Filters": "篩選器", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "偵測到指紋偽造:無法使用姓名縮寫作為大頭貼。將預設為預設個人檔案圖片。", - "Firecrawl API Base URL": "Firecrawl API Base URL", + "Firecrawl API Base URL": "Firecrawl API 基礎 URL", "Firecrawl API Key": "Firecrawl API 金鑰", "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": "完全遵循指示", @@ -565,7 +581,6 @@ "Function Name": "函式名稱", "Function updated successfully": "成功更新函式", "Functions": "函式", - "Functions allow arbitrary code execution": "函式允許執行任意程式碼", "Functions allow arbitrary code execution.": "函式允許執行任意程式碼。", "Functions imported successfully": "成功匯入函式", "Gemini": "Gemini", @@ -628,7 +643,7 @@ "Include": "包含", "Include `--api-auth` flag when running stable-diffusion-webui": "執行 stable-diffusion-webui 時包含 `--api-auth` 參數", "Include `--api` flag when running stable-diffusion-webui": "執行 stable-diffusion-webui 時包含 `--api` 參數", - "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.": "影響演算法對生成文字回饋的反應速度。較低的學習率會導致調整速度較慢,而較高的學習率會使演算法反應更靈敏。", "Info": "資訊", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "將完整內容注入為上下文以進行全面處理,建議用於複雜查詢。", "Input commands": "輸入命令", @@ -659,16 +674,16 @@ "Knowledge Access": "知識存取", "Knowledge created successfully.": "知識建立成功。", "Knowledge deleted successfully.": "知識刪除成功。", - "Knowledge Public Sharing": "知識庫公開分享", + "Knowledge Public Sharing": "知識公開分享", "Knowledge reset successfully.": "知識重設成功。", "Knowledge updated successfully": "知識更新成功", - "Kokoro.js (Browser)": "Kokoro.js (Browser)", + "Kokoro.js (Browser)": "Kokoro.js (瀏覽器)", "Kokoro.js Dtype": "Kokoro.js Dtype", "Label": "標籤", "Landing Page Mode": "首頁模式", "Language": "語言", "Language Locales": "語言區域設定", - "Last Active": "上次活動時間", + "Last Active": "最近活動時間", "Last Modified": "上次修改時間", "Last reply": "上次回覆", "LDAP": "LDAP", @@ -685,16 +700,16 @@ "Light": "淺色", "Listening...": "正在聆聽...", "Llama.cpp": "Llama.cpp", - "LLMs can make mistakes. Verify important information.": "大型語言模型可能會出錯。請驗證重要資訊。", - "Loader": "載入器", + "LLMs can make mistakes. Verify important information.": "大型語言模型可能會犯錯。請自行驗證重要資訊。", + "Loader": "載入工具", "Loading Kokoro.js...": "Kokoro.js 載入中……", "Local": "本機", "Local Models": "本機模型", "Location access not allowed": "位置存取未獲允許", - "Logit Bias": "Logit 偏置", + "Logit Bias": "Logit 偏差", "Lost": "已遺失", "LTR": "從左到右", - "Made by Open WebUI Community": "由 OpenWebUI 社群製作", + "Made by Open WebUI Community": "由 Open WebUI 社群製作", "Make sure to enclose them with": "請務必將它們放在", "Make sure to export a workflow.json file as API format from ComfyUI.": "請確保從 ComfyUI 匯出 workflow.json 檔案為 API 格式。", "Manage": "管理", @@ -718,8 +733,12 @@ "Memory deleted successfully": "成功刪除記憶", "Memory updated successfully": "成功更新記憶", "Merge Responses": "合併回應", + "Merged Response": "整合回應結果", "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.": "建立連結後傳送的訊息不會被分享。擁有網址的使用者可檢視分享的對話內容。", + "Microsoft OneDrive": "Microsoft OneDrive", + "Microsoft OneDrive (personal)": "Microsoft OneDrive(個人版)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive(公司版/學校版)", "Min P": "最小 P 值", "Mirostat": "Mirostat", "Mirostat Eta": "Mirostat Eta", @@ -732,8 +751,8 @@ "Model {{modelId}} not found": "找不到模型 {{modelId}}", "Model {{modelName}} is not vision capable": "模型 {{modelName}} 不具備視覺能力", "Model {{name}} is now {{status}}": "模型 {{name}} 現在狀態為 {{status}}", - "Model {{name}} is now hidden": "模型 {{name}} 現已隱藏", - "Model {{name}} is now visible": "模型 {{name}} 現已可見", + "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.": "偵測到模型檔案系統路徑。更新需要模型簡稱,因此無法繼續。", @@ -761,11 +780,11 @@ "New Password": "新密碼", "new-channel": "new-channel", "No content found": "找不到內容", + "No content found in file.": "檔案中找不到內容。", "No content to speak": "無可朗讀的內容", "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": "找不到支援管理功能的推理引擎", @@ -873,7 +892,7 @@ "Profile Image": "個人檔案圖片", "Prompt": "提示詞", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "提示詞(例如:告訴我關於羅馬帝國的一些趣事)", - "Prompt Autocompletion": "提示詞自動補全", + "Prompt Autocompletion": "提示詞自動完成", "Prompt Content": "提示詞內容", "Prompt created successfully": "提示詞建立成功", "Prompt suggestions": "提示詞建議", @@ -892,8 +911,8 @@ "Read Aloud": "大聲朗讀", "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.": "降低產生無意義內容的機率。較高的值(例如 100)會產生更多樣化的答案,而較低的值(例如 10)會更保守。", + "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)會更保守。", "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "以「使用者」稱呼自己(例如:「使用者正在學習西班牙文」)", "References from": "引用來源", "Refused when it shouldn't have": "不應拒絕時拒絕了", @@ -939,7 +958,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 to bottom when switching between branches": "切換分支時捲動到底端", + "Scroll On Branch Change": "切換分支時自動捲動", "Search": "搜尋", "Search a model": "搜尋模型", "Search Base": "搜尋基礎", @@ -995,7 +1014,7 @@ "Set Default Model": "設定預設模型", "Set embedding model": "設定嵌入模型", "Set embedding model (e.g. {{model}})": "設定嵌入模型(例如:{{model}})", - "Set Image Size": "設定圖片大小", + "Set Image Size": "設定圖片尺寸", "Set reranking model (e.g. {{model}})": "設定重新排序模型(例如:{{model}})", "Set Sampler": "設定取樣器", "Set Scheduler": "設定排程器", @@ -1005,9 +1024,9 @@ "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.": "設定用於計算的工作執行緒數量。此選項控制使用多少執行緒來同時處理傳入的請求。增加此值可以在高併發工作負載下提升效能,但也可能消耗更多 CPU 資源。", "Set Voice": "設定語音", "Set whisper model": "設定 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.": "對至少出現過一次的 token 設定統一的偏差值。較高的值(例如 1.5)會更強烈地懲罰重複,而較低的值(例如 0.9)會更寬容。設為 0 時,此功能將停用。", - "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.": "根據 token 出現的次數,設定一個縮放偏差值來懲罰重複。較高的值(例如 1.5)會更強烈地懲罰重複,而較低的值(例如 0.9)會更寬容。設為 0 時,此功能將停用。", - "Sets how far back for the model to look back to prevent repetition.": "設定模型回溯多遠以防止重複。", + "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.": "對至少出現過一次的 token 設定統一的偏差值。較高的值(例如:1.5)會更強烈地懲罰重複,而較低的值(例如:0.9)會更寬容。設為 0 時,此功能將停用。", + "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.": "根據 token 出現的次數,設定一個縮放偏差值來懲罰重複。較高的值(例如:1.5)會更強烈地懲罰重複,而較低的值(例如:0.9)會更寬容。設為 0 時,此功能將停用。", + "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.": "設定用於生成下一個 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.": "設定要使用的停止序列。當遇到此模式時,大型語言模型將停止生成文字並返回。可以在模型檔案中指定多個單獨的停止參數來設定多個停止模式。", @@ -1015,7 +1034,7 @@ "Settings saved successfully!": "設定已成功儲存!", "Share": "分享", "Share Chat": "分享對話", - "Share to Open WebUI Community": "分享到 OpenWebUI 社群", + "Share to Open WebUI Community": "分享到 Open WebUI 社群", "Sharing Permissions": "分享權限設定", "Show": "顯示", "Show \"What's New\" modal on login": "登入時顯示「新功能」對話框", @@ -1032,8 +1051,8 @@ "Sign up to {{WEBUI_NAME}}": "註冊 {{WEBUI_NAME}}", "Signing in to {{WEBUI_NAME}}": "正在登入 {{WEBUI_NAME}}", "sk-1234": "sk-1234", - "Sougou Search API sID": "搜狗搜索 API sID", - "Sougou Search API SK": "搜狗搜索 API SK", + "Sougou Search API sID": "搜狗搜尋 API sID", + "Sougou Search API SK": "搜狗搜尋 API SK", "Source": "來源", "Speech Playback Speed": "語音播放速度", "Speech recognition error: {{error}}": "語音辨識錯誤:{{error}}", @@ -1056,7 +1075,7 @@ "Tags": "標籤", "Tags Generation": "標籤生成", "Tags Generation Prompt": "標籤生成提示詞", - "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "尾部自由取樣用於減少輸出結果中較低機率 token 的影響。較高的值(例如 2.0)會減少更多影響,而值為 1.0 時會停用此設定。", + "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.": "尾部自由取樣用於減少輸出結果中較低機率 token 的影響。較高的值(例如:2.0)會減少更多影響,而值為 1.0 時會停用此設定。", "Talk to model": "與模型對話", "Tap to interrupt": "點選以中斷", "Tasks": "任務", @@ -1140,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", @@ -1194,7 +1212,7 @@ "User Webhooks": "使用者 Webhooks", "Username": "使用者名稱", "Users": "使用者", - "Using the default arena model with all models. Click the plus button to add custom models.": "正在使用預設競技模型與所有模型。點選加號按鈕以新增自訂模型。", + "Using the default arena model with all models. Click the plus button to add custom models.": "正在使用預設競技場模型與所有模型。點選加號按鈕以新增自訂模型。", "Utilize": "使用", "Valid time units:": "有效的時間單位:", "Valves": "閥門", @@ -1208,7 +1226,7 @@ "Version {{selectedVersion}} of {{totalVersions}}": "第 {{selectedVersion}} 版,共 {{totalVersions}} 版", "View Replies": "檢視回覆", "View Result from **{{NAME}}**": "檢視來自 **{{NAME}}** 的結果", - "Visibility": "可見性", + "Visibility": "可見度", "Voice": "語音", "Voice Input": "語音輸入", "Warning": "警告", @@ -1226,7 +1244,7 @@ "Webhook URL": "Webhook URL", "WebUI Settings": "WebUI 設定", "WebUI URL": "WebUI URL", - "WebUI will make requests to \"{{url}}\"": "WebUI 將向 \"{{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?": "您正在試圖完成什麼?", @@ -1238,7 +1256,7 @@ "Why?": "為什麼?", "Widescreen Mode": "寬螢幕模式", "Won": "獲勝", - "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "與 top-k 一起使用。較高的值(例如 0.95)將產生更多樣化的文字,而較低的值(例如 0.5)將生成更集中和保守的文字。", + "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.": "與 top-k 一起使用。較高的值(例如:0.95)將產生更多樣化的文字,而較低的值(例如:0.5)將產生更集中和保守的文字。", "Workspace": "工作區", "Workspace Permissions": "工作區權限", "Write": "寫入", @@ -1246,21 +1264,23 @@ "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": "", "Yesterday": "昨天", "You": "您", "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.": "您可以透過下方的「管理」按鈕新增記憶,將您與大型語言模型的互動個人化,讓它們更有幫助並更符合您的需求。", "You cannot upload an empty file.": "您無法上傳空檔案", - "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": "您已分享此對話", - "You're a helpful assistant.": "您是一位樂於助人的助手。", + "You're a helpful assistant.": "您是一位樂於助人的助理。", "You're now logged in.": "您已登入。", "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", "Youtube Language": "YouTube 語言", - "Youtube Proxy URL": "YouTube 代理網址" + "Youtube Proxy URL": "YouTube 代理伺服器網址" } diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 022a901c1..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) => `` } ]; @@ -1243,58 +1242,80 @@ export const convertOpenApiToToolPayload = (openApiSpec) => { for (const [path, methods] of Object.entries(openApiSpec.paths)) { for (const [method, operation] of Object.entries(methods)) { - const tool = { - type: 'function', - name: operation.operationId, - description: operation.description || operation.summary || 'No description available.', - parameters: { - type: 'object', - properties: {}, - required: [] - } - }; - - // Extract path and query parameters - if (operation.parameters) { - operation.parameters.forEach((param) => { - tool.parameters.properties[param.name] = { - type: param.schema.type, - description: param.schema.description || '' - }; - - if (param.required) { - tool.parameters.required.push(param.name); + if (operation?.operationId) { + const tool = { + type: 'function', + name: operation.operationId, + description: operation.description || operation.summary || 'No description available.', + parameters: { + type: 'object', + properties: {}, + required: [] } - }); - } + }; - // Extract and recursively resolve requestBody if available - if (operation.requestBody) { - const content = operation.requestBody.content; - if (content && content['application/json']) { - const requestSchema = content['application/json'].schema; - const resolvedRequestSchema = resolveSchema(requestSchema, openApiSpec.components); - - if (resolvedRequestSchema.properties) { - tool.parameters.properties = { - ...tool.parameters.properties, - ...resolvedRequestSchema.properties + // 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: description }; - if (resolvedRequestSchema.required) { - tool.parameters.required = [ - ...new Set([...tool.parameters.required, ...resolvedRequestSchema.required]) - ]; + if (param.required) { + tool.parameters.required.push(param.name); + } + }); + } + + // Extract and recursively resolve requestBody if available + if (operation.requestBody) { + const content = operation.requestBody.content; + if (content && content['application/json']) { + const requestSchema = content['application/json'].schema; + const resolvedRequestSchema = resolveSchema(requestSchema, openApiSpec.components); + + if (resolvedRequestSchema.properties) { + tool.parameters.properties = { + ...tool.parameters.properties, + ...resolvedRequestSchema.properties + }; + + if (resolvedRequestSchema.required) { + tool.parameters.required = [ + ...new Set([...tool.parameters.required, ...resolvedRequestSchema.required]) + ]; + } + } else if (resolvedRequestSchema.type === 'array') { + tool.parameters = resolvedRequestSchema; // special case when root schema is an array } - } else if (resolvedRequestSchema.type === 'array') { - tool.parameters = resolvedRequestSchema; // special case when root schema is an array } } - } - toolPayload.push(tool); + toolPayload.push(tool); + } } } 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() + ); +}; diff --git a/src/lib/utils/onedrive-file-picker.ts b/src/lib/utils/onedrive-file-picker.ts index 60d2bb13c..180840524 100644 --- a/src/lib/utils/onedrive-file-picker.ts +++ b/src/lib/utils/onedrive-file-picker.ts @@ -2,70 +2,133 @@ 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 sharepointUrl: string = ''; + private msalInstance: PublicClientApplication | null = null; + private currentAuthorityType: 'personal' | 'organizations' = 'personal'; -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'); - } - const config = await response.json(); - CLIENT_ID = config.onedrive?.client_id; - if (!CLIENT_ID) { - throw new Error('OneDrive client ID not configured'); - } -} - -let msalInstance: PublicClientApplication | null = null; - -// Initialize MSAL authentication -async function initializeMsal() { - try { - if (!CLIENT_ID) { - await getCredentials(); + public static getInstance(): OneDriveConfig { + if (!OneDriveConfig.instance) { + OneDriveConfig.instance = new OneDriveConfig(); } + return OneDriveConfig.instance; + } - const msalParams = { - auth: { - authority: 'https://login.microsoftonline.com/consumers', - clientId: CLIENT_ID - } + public async initialize(authorityType?: 'personal' | 'organizations'): Promise { + if (authorityType && this.currentAuthorityType !== authorityType) { + this.currentAuthorityType = authorityType; + this.msalInstance = null; + } + await this.getCredentials(); + } + + public async ensureInitialized(authorityType?: 'personal' | 'organizations'): Promise { + await this.initialize(authorityType); + } + + private async getCredentials(): Promise { + const headers: HeadersInit = { + 'Content-Type': 'application/json' }; - if (!msalInstance) { - msalInstance = new PublicClientApplication(msalParams); - if (msalInstance.initialize) { - await msalInstance.initialize(); + const response = await fetch('/api/config', { + headers, + credentials: 'include' + }); + + 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'); + } + + this.clientId = newClientId; + this.sharepointUrl = newSharepointUrl; + } + + public async getMsalInstance( + authorityType?: 'personal' | 'organizations' + ): Promise { + await this.ensureInitialized(authorityType); + + if (!this.msalInstance) { + const authorityEndpoint = + this.currentAuthorityType === '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.currentAuthorityType; + } + + public getSharepointUrl(): string { + return this.sharepointUrl; + } + + public getBaseUrl(): string { + if (this.currentAuthorityType === '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, + authorityType?: 'personal' | 'organizations' +): Promise { + const config = OneDriveConfig.getInstance(); + await config.ensureInitialized(authorityType); + const currentAuthorityType = config.getAuthorityType(); + + const scopes = + currentAuthorityType === 'organizations' + ? [`${resource || config.getBaseUrl()}/.default`] + : ['OneDrive.ReadWrite']; + + const authParams: PopupRequest = { scopes }; + let accessToken = ''; + + try { + const msalInstance = await config.getMsalInstance(authorityType); const resp = await msalInstance.acquireTokenSilent(authParams); accessToken = resp.accessToken; } catch (err) { - if (!msalInstance) { - throw new Error('MSAL not initialized'); - } - + const msalInstance = await config.getMsalInstance(authorityType); try { const resp = await msalInstance.loginPopup(authParams); msalInstance.setActiveAccount(resp.account); @@ -88,60 +151,128 @@ async function getToken(): Promise { return accessToken; } -const baseUrl = 'https://onedrive.live.com/picker'; -const params = { - sdk: '8.0', +interface PickerParams { + 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; + }; +} + +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(); + + const params: PickerParams = { + sdk: '8.0', + entry: { + oneDrive: {} + }, + 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: any): Promise { - const accessToken = await getToken(); +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.'); } + + // 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.'); + throw new Error(`Failed to fetch file information: ${response.status} ${response.statusText}`); } + 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.'); + + 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: ${downloadResponse.status} ${downloadResponse.statusText}` + ); + } + return await downloadResponse.blob(); } // 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'); } + + // Initialize OneDrive config with the specified authority type + const config = OneDriveConfig.getInstance(); + await config.initialize(authorityType); + 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 +297,10 @@ 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 = + config.getAuthorityType() === 'organizations' ? command.resource : undefined; + const newToken = await getToken(resource, authorityType); if (newToken) { channelPort?.postMessage({ type: 'result', @@ -178,9 +312,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; @@ -227,7 +364,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')); } @@ -240,7 +377,13 @@ export async function openOneDrivePicker(): Promise { const queryString = new URLSearchParams({ filePicker: JSON.stringify(params) }); - const url = `${baseUrl}?${queryString.toString()}`; + + let url = ''; + if (config.getAuthorityType() === 'organizations') { + url = baseUrl + `/_layouts/15/FilePicker.aspx?${queryString}`; + } else { + url = baseUrl + `?${queryString}`; + } const form = pickerWindow.document.createElement('form'); form.setAttribute('action', url); @@ -268,15 +411,17 @@ export async function openOneDrivePicker(): Promise { } // Pick and download file from OneDrive -export async function pickAndDownloadFile(): Promise<{ blob: Blob; name: string } | null> { - const pickerResult = await openOneDrivePicker(); +export async function pickAndDownloadFile( + authorityType?: 'personal' | 'organizations' +): Promise<{ blob: Blob; name: string } | null> { + const pickerResult = await openOneDrivePicker(authorityType); if (!pickerResult || !pickerResult.items || pickerResult.items.length === 0) { return null; } const selectedFile = pickerResult.items[0]; - const blob = await downloadOneDriveFile(selectedFile); + const blob = await downloadOneDriveFile(selectedFile, authorityType); return { blob, name: selectedFile.name }; } diff --git a/src/lib/utils/websocket.ts b/src/lib/utils/websocket.ts new file mode 100644 index 000000000..41fc21b50 --- /dev/null +++ b/src/lib/utils/websocket.ts @@ -0,0 +1,56 @@ +import { io } from 'socket.io-client'; + +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 } + }); + + await socket.set(_socket); + + _socket.on('connect_error', (err) => { + console.log('connect_error', err); + }); + + _socket.on('connect', () => { + console.log('connected', _socket.id); + }); + + _socket.on('reconnect_attempt', (attempt) => { + console.log('reconnect_attempt', attempt); + }); + + _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('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']); + }); +}; diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index fd9a33111..104f92e27 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -251,77 +251,79 @@
{/if} -
-
- {#if !['user', 'admin'].includes($user?.role)} - - {:else if localDBChats.length > 0} -
-
-
-
-
- Important Update
Action Required for Chat Log Storage -
+{#if $user} +
+
+ {#if !['user', 'admin'].includes($user?.role)} + + {:else if localDBChats.length > 0} +
+
+
+
+
+ Important Update
Action Required for Chat Log Storage +
-
- {$i18n.t( - "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" - )} - {$i18n.t('Settings')} > {$i18n.t('Chats')} > {$i18n.t('Import Chats')}. {$i18n.t( - 'This ensures that your valuable conversations are securely saved to your backend database. Thank you!' - )} -
+
+ {$i18n.t( + "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" + )} + {$i18n.t('Settings')} > {$i18n.t('Chats')} > {$i18n.t('Import Chats')}. {$i18n.t( + 'This ensures that your valuable conversations are securely saved to your backend database. Thank you!' + )} +
-
- + localDBChats = []; + }} + > + Download & Delete + - + +
-
- {/if} + {/if} - + - {#if loaded} - - {:else} -
- -
- {/if} + {#if loaded} + + {:else} +
+ +
+ {/if} +
-
+{/if}