Merge pull request #21443 from open-webui/dev

0.8.2
This commit is contained in:
Tim Baek
2026-02-16 01:37:13 -06:00
committed by GitHub
96 changed files with 1351 additions and 423 deletions
+23
View File
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.8.2] - 2026-02-16
### Added
- 🧠 **Skill content handling.** User-selected skills now have their full content injected into the chat, while model-attached skills only display name and description in the available skills list. This allows users to override skill behavior while model-attached skills remain flexible. [Commit](https://github.com/open-webui/open-webui/commit/393c0071dc612c5ac982fb37dfc0288cb9911439)
- ⚙️ **Chat toggles now control built-in tools.** Users can now disable web search, image generation, and code execution on a per-conversation basis, even when those tools are enabled as builtin tools on the model. [#20641](https://github.com/open-webui/open-webui/issues/20641), [#21318](https://github.com/open-webui/open-webui/discussions/21318), [Commit](https://github.com/open-webui/open-webui/commit/c46ef3b63bcc1e2e9adbdd18fab82c4bbe33ff6c), [Commit](https://github.com/open-webui/open-webui/commit/f1a1e64d2e9ad953b2bc2a9543e9a308b7c669c8)
- 🖼️ **Image preview in file modal.** Images uploaded to chats can now be previewed directly in the file management modal, making it easier to identify and manage image files. [#21413](https://github.com/open-webui/open-webui/issues/21413), [Commit](https://github.com/open-webui/open-webui/commit/e1b3e7252c1896c04d498547908f0fce111434e1)
- 🏷️ **Batch tag operations.** Tag creation, deletion, and orphan cleanup for chats now use batch database queries instead of per-tag loops, significantly reducing database round trips when updating, archiving, or deleting chats with multiple tags. [Commit](https://github.com/open-webui/open-webui/commit/c748c3ede)
- 💨 **Faster group list loading.** Group lists and search results now load with a single database query that joins member counts, replacing the previous pattern of fetching groups first and then counting members in a separate batch query. [Commit](https://github.com/open-webui/open-webui/commit/33308022f)
- 🔐 **Skills sharing permissions.** Administrators can now control skills sharing and public sharing permissions per-group, matching the existing capabilities for tools, knowledge, and prompts. [Commit](https://github.com/open-webui/open-webui/commit/88401e91c)
- ⚡ **Long content truncation in preview modals.** Citation and file content modals now truncate markdown-rendered content at 10,000 characters with a "Show all" expansion button, preventing UI jank when previewing very large documents.
- 🌐 **Translation updates.** Translations for Spanish and German were enhanced and expanded.
### Fixed
- 🔐 **OAuth session error handling.** Corrupted OAuth sessions are now gracefully handled and automatically cleaned up instead of causing errors. [Commit](https://github.com/open-webui/open-webui/commit/7e224e4a536b07ec008613f06592e34050e7067c)
- 🐛 **Task model selector validation.** The task model selector in admin settings now correctly accepts models based on the new access grants system instead of rejecting all models with an incorrect error. [Commit](https://github.com/open-webui/open-webui/commit/9a2595f0706d0c9d809ae7746001cf799f98db1d)
- 🔗 **Tool call message preservation.** Models no longer hallucinate tool outputs in multi-turn conversations because tool call history is now properly preserved instead of being merged into assistant messages. [#21098](https://github.com/open-webui/open-webui/discussions/21098), [#20600](https://github.com/open-webui/open-webui/issues/20600), [Commit](https://github.com/open-webui/open-webui/commit/f2aca781c87244cffc130aa2722e700c19a81d66)
- 🔧 **Tool server startup initialization.** External tool servers configured via the "TOOL_SERVER_CONNECTIONS" environment variable now initialize automatically on startup, eliminating the need to manually visit the Admin Panel and save for tools to become available. This enables proper GitOps and containerized deployments. [#18140](https://github.com/open-webui/open-webui/issues/18140), [#20914](https://github.com/open-webui/open-webui/pull/20914), [Commit](https://github.com/open-webui/open-webui/commit/f20cc6d7e6da493eb75ca1618f5cbd068fa57684)
- ♻️ **Resource handle cleanup.** File handles are now properly closed during audio transcription and pipeline uploads, preventing resource leaks that could cause system instability over time. [#21411](https://github.com/open-webui/open-webui/issues/21411)
- ⌨️ **Strikethrough shortcut conflict fix.** Pressing Ctrl+Shift+S to toggle the sidebar no longer causes text to become struck through in the chat input, by disabling the TipTap Strike extension's default keyboard shortcut when rich text mode is off. [Commit](https://github.com/open-webui/open-webui/commit/38ae91ae2)
- 🔧 **Tool call finish_reason fix.** API responses now correctly set finish_reason to "tool_calls" instead of "stop" when tool calls are present, fixing an issue where external API clients (such as OpenCode) would halt prematurely after tool execution when routing Ollama models through the Open WebUI API. [#20896](https://github.com/open-webui/open-webui/issues/20896)
## [0.8.1] - 2026-02-14
### Added
+14
View File
@@ -1385,6 +1385,18 @@ USER_PERMISSIONS_WORKSPACE_TOOLS_ALLOW_PUBLIC_SHARING = (
== "true"
)
USER_PERMISSIONS_WORKSPACE_SKILLS_ALLOW_SHARING = (
os.environ.get("USER_PERMISSIONS_WORKSPACE_SKILLS_ALLOW_SHARING", "False").lower()
== "true"
)
USER_PERMISSIONS_WORKSPACE_SKILLS_ALLOW_PUBLIC_SHARING = (
os.environ.get(
"USER_PERMISSIONS_WORKSPACE_SKILLS_ALLOW_PUBLIC_SHARING", "False"
).lower()
== "true"
)
USER_PERMISSIONS_NOTES_ALLOW_SHARING = (
os.environ.get("USER_PERMISSIONS_NOTES_ALLOW_SHARING", "False").lower() == "true"
@@ -1543,6 +1555,8 @@ DEFAULT_USER_PERMISSIONS = {
"public_prompts": USER_PERMISSIONS_WORKSPACE_PROMPTS_ALLOW_PUBLIC_SHARING,
"tools": USER_PERMISSIONS_WORKSPACE_TOOLS_ALLOW_SHARING,
"public_tools": USER_PERMISSIONS_WORKSPACE_TOOLS_ALLOW_PUBLIC_SHARING,
"skills": USER_PERMISSIONS_WORKSPACE_SKILLS_ALLOW_SHARING,
"public_skills": USER_PERMISSIONS_WORKSPACE_SKILLS_ALLOW_PUBLIC_SHARING,
"notes": USER_PERMISSIONS_NOTES_ALLOW_SHARING,
"public_notes": USER_PERMISSIONS_NOTES_ALLOW_PUBLIC_SHARING,
},
+27
View File
@@ -64,6 +64,7 @@ from open_webui.socket.main import (
MODELS,
app as socket_app,
periodic_usage_pool_cleanup,
periodic_session_pool_cleanup,
get_event_emitter,
get_models_in_use,
)
@@ -517,6 +518,7 @@ from open_webui.utils.middleware import (
process_chat_payload,
process_chat_response,
)
from open_webui.utils.tools import set_tool_servers
from open_webui.utils.auth import (
get_license_data,
@@ -634,6 +636,7 @@ async def lifespan(app: FastAPI):
limiter.total_tokens = THREAD_POOL_SIZE
asyncio.create_task(periodic_usage_pool_cleanup())
asyncio.create_task(periodic_session_pool_cleanup())
if app.state.config.ENABLE_BASE_MODELS_CACHE:
await get_all_models(
@@ -656,6 +659,30 @@ async def lifespan(app: FastAPI):
None,
)
# Pre-fetch tool server specs so the first request doesn't pay the latency cost
if len(app.state.config.TOOL_SERVER_CONNECTIONS) > 0:
log.info("Initializing tool servers...")
try:
mock_request = Request(
{
"type": "http",
"asgi.version": "3.0",
"asgi.spec_version": "2.0",
"method": "GET",
"path": "/internal",
"query_string": b"",
"headers": Headers({}).raw,
"client": ("127.0.0.1", 12345),
"server": ("127.0.0.1", 80),
"scheme": "http",
"app": app,
}
)
await set_tool_servers(mock_request)
log.info(f"Initialized {len(app.state.TOOL_SERVERS)} tool server(s)")
except Exception as e:
log.warning(f"Failed to initialize tool servers at startup: {e}")
yield
if hasattr(app.state, "redis_task_command_listener"):
+49 -33
View File
@@ -431,22 +431,29 @@ class ChatTable:
def update_chat_tags_by_id(
self, id: str, tags: list[str], user
) -> Optional[ChatModel]:
chat = self.get_chat_by_id(id)
if chat is None:
return None
with get_db_context() as db:
chat = db.get(Chat, id)
if chat is None:
return None
self.delete_all_tags_by_id_and_user_id(id, user.id)
old_tags = chat.meta.get("tags", [])
new_tags = [t for t in tags if t.replace(" ", "_").lower() != "none"]
new_tag_ids = [t.replace(" ", "_").lower() for t in new_tags]
for tag in chat.meta.get("tags", []):
if self.count_chats_by_tag_name_and_user_id(tag, user.id) == 0:
Tags.delete_tag_by_name_and_user_id(tag, user.id)
# Single meta update
chat.meta = {**chat.meta, "tags": new_tag_ids}
db.commit()
db.refresh(chat)
for tag_name in tags:
if tag_name.lower() == "none":
continue
# Batch-create any missing tag rows
Tags.ensure_tags_exist(new_tags, user.id, db=db)
self.add_chat_tag_by_id_and_user_id_and_tag_name(id, user.id, tag_name)
return self.get_chat_by_id(id)
# Clean up orphaned old tags in one query
removed = set(old_tags) - set(new_tag_ids)
if removed:
self.delete_orphan_tags_for_user(list(removed), user.id, db=db)
return ChatModel.model_validate(chat)
def get_chat_title_by_id(self, id: str) -> Optional[str]:
chat = self.get_chat_by_id(id)
@@ -1267,8 +1274,8 @@ class ChatTable:
) -> list[TagModel]:
with get_db_context(db) as db:
chat = db.get(Chat, id)
tags = chat.meta.get("tags", [])
return [Tags.get_tag_by_name_and_user_id(tag, user_id) for tag in tags]
tag_ids = chat.meta.get("tags", [])
return Tags.get_tags_by_ids_and_user_id(tag_ids, user_id, db=db)
def get_chat_list_by_user_id_and_tag_name(
self,
@@ -1309,20 +1316,16 @@ class ChatTable:
def add_chat_tag_by_id_and_user_id_and_tag_name(
self, id: str, user_id: str, tag_name: str, db: Optional[Session] = None
) -> Optional[ChatModel]:
tag = Tags.get_tag_by_name_and_user_id(tag_name, user_id)
if tag is None:
tag = Tags.insert_new_tag(tag_name, user_id)
tag_id = tag_name.replace(" ", "_").lower()
Tags.ensure_tags_exist([tag_name], user_id, db=db)
try:
with get_db_context(db) as db:
chat = db.get(Chat, id)
tag_id = tag.id
if tag_id not in chat.meta.get("tags", []):
chat.meta = {
**chat.meta,
"tags": list(set(chat.meta.get("tags", []) + [tag_id])),
}
db.commit()
db.refresh(chat)
return ChatModel.model_validate(chat)
@@ -1332,40 +1335,53 @@ class ChatTable:
def count_chats_by_tag_name_and_user_id(
self, tag_name: str, user_id: str, db: Optional[Session] = None
) -> int:
with get_db_context(db) as db: # Assuming `get_db()` returns a session object
with get_db_context(db) as db:
query = db.query(Chat).filter_by(user_id=user_id, archived=False)
# Normalize the tag_name for consistency
tag_id = tag_name.replace(" ", "_").lower()
if db.bind.dialect.name == "sqlite":
# SQLite JSON1 support for querying the tags inside the `meta` JSON field
query = query.filter(
text(
f"EXISTS (SELECT 1 FROM json_each(Chat.meta, '$.tags') WHERE json_each.value = :tag_id)"
"EXISTS (SELECT 1 FROM json_each(Chat.meta, '$.tags') WHERE json_each.value = :tag_id)"
)
).params(tag_id=tag_id)
elif db.bind.dialect.name == "postgresql":
# PostgreSQL JSONB support for querying the tags inside the `meta` JSON field
query = query.filter(
text(
"EXISTS (SELECT 1 FROM json_array_elements_text(Chat.meta->'tags') elem WHERE elem = :tag_id)"
)
).params(tag_id=tag_id)
else:
raise NotImplementedError(
f"Unsupported dialect: {db.bind.dialect.name}"
)
# Get the count of matching records
count = query.count()
return query.count()
# Debugging output for inspection
log.info(f"Count of chats for tag '{tag_name}': {count}")
def delete_orphan_tags_for_user(
self,
tag_ids: list[str],
user_id: str,
threshold: int = 0,
db: Optional[Session] = None,
) -> None:
"""Delete tag rows from *tag_ids* that appear in at most *threshold*
non-archived chats for *user_id*. One query to find orphans, one to
delete them.
return count
Use threshold=0 after a tag is already removed from a chat's meta.
Use threshold=1 when the chat itself is about to be deleted (the
referencing chat still exists at query time).
"""
if not tag_ids:
return
with get_db_context(db) as db:
orphans = []
for tag_id in tag_ids:
count = self.count_chats_by_tag_name_and_user_id(tag_id, user_id, db=db)
if count <= threshold:
orphans.append(tag_id)
Tags.delete_tags_by_ids_and_user_id(orphans, user_id, db=db)
def count_chats_by_folder_id_and_user_id(
self, folder_id: str, user_id: str, db: Optional[Session] = None
+38 -25
View File
@@ -164,7 +164,10 @@ class GroupTable:
def get_groups(self, filter, db: Optional[Session] = None) -> list[GroupResponse]:
with get_db_context(db) as db:
query = db.query(Group)
member_count = func.count(GroupMember.user_id).label("member_count")
query = db.query(Group, member_count).outerjoin(
GroupMember, GroupMember.group_id == Group.id
)
if filter:
if "query" in filter:
@@ -179,9 +182,6 @@ class GroupTable:
json_share_lower = func.lower(json_share_str)
if share_value:
# Groups open to anyone: data is null, config.share is null, or share is true
# Use case-insensitive string comparison to handle variations like "True", "TRUE"
# Handle potential JSON boolean to string casting issues by checking for both string 'true' and boolean equivalence if possible,
anyone_can_share = or_(
Group.data.is_(None),
json_share_str.is_(None),
@@ -190,7 +190,6 @@ class GroupTable:
)
if member_id:
# Also include member-only groups where user is a member
member_groups_select = select(GroupMember.group_id).where(
GroupMember.user_id == member_id
)
@@ -211,21 +210,24 @@ class GroupTable:
else:
# Only apply member_id filter when share filter is NOT present
if "member_id" in filter:
query = query.join(
GroupMember, GroupMember.group_id == Group.id
).filter(GroupMember.user_id == filter["member_id"])
query = query.filter(
Group.id.in_(
select(GroupMember.group_id).where(
GroupMember.user_id == filter["member_id"]
)
)
)
results = query.group_by(Group.id).order_by(Group.updated_at.desc()).all()
groups = query.order_by(Group.updated_at.desc()).all()
group_ids = [group.id for group in groups]
member_counts = self.get_group_member_counts_by_ids(group_ids, db=db)
return [
GroupResponse.model_validate(
{
**GroupModel.model_validate(group).model_dump(),
"member_count": member_counts.get(group.id, 0),
"member_count": count or 0,
}
)
for group in groups
for group, count in results
]
def search_groups(
@@ -242,31 +244,42 @@ class GroupTable:
if "query" in filter:
query = query.filter(Group.name.ilike(f"%{filter['query']}%"))
if "member_id" in filter:
query = query.join(
GroupMember, GroupMember.group_id == Group.id
).filter(GroupMember.user_id == filter["member_id"])
query = query.filter(
Group.id.in_(
select(GroupMember.group_id).where(
GroupMember.user_id == filter["member_id"]
)
)
)
if "share" in filter:
# 'share' is stored in data JSON, support both sqlite and postgres
share_value = filter["share"]
print("Filtering by share:", share_value)
query = query.filter(
Group.data.op("->>")("share") == str(share_value)
)
total = query.count()
query = query.order_by(Group.updated_at.desc())
groups = query.offset(skip).limit(limit).all()
group_ids = [group.id for group in groups]
member_counts = self.get_group_member_counts_by_ids(group_ids, db=db)
member_count = func.count(GroupMember.user_id).label("member_count")
results = (
query.add_columns(member_count)
.outerjoin(GroupMember, GroupMember.group_id == Group.id)
.group_by(Group.id)
.order_by(Group.updated_at.desc())
.offset(skip)
.limit(limit)
.all()
)
return {
"items": [
GroupResponse.model_validate(
**GroupModel.model_validate(group).model_dump(),
member_count=member_counts.get(group.id, 0),
{
**GroupModel.model_validate(group).model_dump(),
"member_count": count or 0,
}
)
for group in groups
for group, count in results
],
"total": total,
}
+10 -3
View File
@@ -102,7 +102,7 @@ class OAuthSessionTable:
decrypted = self.fernet.decrypt(token.encode()).decode()
return json.loads(decrypted)
except Exception as e:
log.error(f"Error decrypting tokens: {e}")
log.error(f"Error decrypting tokens: {type(e).__name__}: {e}")
raise
def create_session(
@@ -209,8 +209,15 @@ class OAuthSessionTable:
results = []
for session in sessions:
session.token = self._decrypt_token(session.token)
results.append(OAuthSessionModel.model_validate(session))
try:
session.token = self._decrypt_token(session.token)
results.append(OAuthSessionModel.model_validate(session))
except Exception as e:
log.warning(
f"Skipping OAuth session {session.id} due to decryption failure, deleting corrupted session: {type(e).__name__}: {e}"
)
db.query(OAuthSession).filter_by(id=session.id).delete()
db.commit()
return results
+40
View File
@@ -115,5 +115,45 @@ class TagTable:
log.error(f"delete_tag: {e}")
return False
def delete_tags_by_ids_and_user_id(
self, ids: list[str], user_id: str, db: Optional[Session] = None
) -> bool:
"""Delete all tags whose id is in *ids* for the given user, in one query."""
if not ids:
return True
try:
with get_db_context(db) as db:
db.query(Tag).filter(Tag.id.in_(ids), Tag.user_id == user_id).delete(
synchronize_session=False
)
db.commit()
return True
except Exception as e:
log.error(f"delete_tags_by_ids: {e}")
return False
def ensure_tags_exist(
self, names: list[str], user_id: str, db: Optional[Session] = None
) -> None:
"""Create tag rows for any *names* that don't already exist for *user_id*."""
if not names:
return
ids = [n.replace(" ", "_").lower() for n in names]
with get_db_context(db) as db:
existing = {
t.id
for t in db.query(Tag.id)
.filter(Tag.id.in_(ids), Tag.user_id == user_id)
.all()
}
new_tags = [
Tag(id=tag_id, name=name, user_id=user_id)
for tag_id, name in zip(ids, names)
if tag_id not in existing
]
if new_tags:
db.add_all(new_tags)
db.commit()
Tags = TagTable()
+8 -7
View File
@@ -639,13 +639,14 @@ def transcription_handler(request, file_path, metadata, user=None):
if user and ENABLE_FORWARD_USER_INFO_HEADERS:
headers = include_user_info_headers(headers, user)
r = requests.post(
url=f"{request.app.state.config.STT_OPENAI_API_BASE_URL}/audio/transcriptions",
headers=headers,
files={"file": (filename, open(file_path, "rb"))},
data=payload,
timeout=AIOHTTP_CLIENT_TIMEOUT,
)
with open(file_path, "rb") as audio_file:
r = requests.post(
url=f"{request.app.state.config.STT_OPENAI_API_BASE_URL}/audio/transcriptions",
headers=headers,
files={"file": (filename, audio_file)},
data=payload,
timeout=AIOHTTP_CLIENT_TIMEOUT,
)
if r.status_code == 200:
# Successful transcription
+13 -23
View File
@@ -1131,9 +1131,9 @@ async def delete_chat_by_id(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
for tag in chat.meta.get("tags", []):
if Chats.count_chats_by_tag_name_and_user_id(tag, user.id, db=db) == 1:
Tags.delete_tag_by_name_and_user_id(tag, user.id, db=db)
Chats.delete_orphan_tags_for_user(
chat.meta.get("tags", []), user.id, threshold=1, db=db
)
result = Chats.delete_chat_by_id(id, db=db)
@@ -1153,9 +1153,9 @@ async def delete_chat_by_id(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
for tag in chat.meta.get("tags", []):
if Chats.count_chats_by_tag_name_and_user_id(tag, user.id, db=db) == 1:
Tags.delete_tag_by_name_and_user_id(tag, user.id, db=db)
Chats.delete_orphan_tags_for_user(
chat.meta.get("tags", []), user.id, threshold=1, db=db
)
result = Chats.delete_chat_by_id_and_user_id(id, user.id, db=db)
return result
@@ -1317,21 +1317,13 @@ async def archive_chat_by_id(
if chat:
chat = Chats.toggle_chat_archive_by_id(id, db=db)
# Delete tags if chat is archived
tag_ids = chat.meta.get("tags", [])
if chat.archived:
for tag_id in chat.meta.get("tags", []):
if (
Chats.count_chats_by_tag_name_and_user_id(tag_id, user.id, db=db)
== 0
):
log.debug(f"deleting tag: {tag_id}")
Tags.delete_tag_by_name_and_user_id(tag_id, user.id, db=db)
# Archived chats are excluded from count — clean up orphans
Chats.delete_orphan_tags_for_user(tag_ids, user.id, db=db)
else:
for tag_id in chat.meta.get("tags", []):
tag = Tags.get_tag_by_name_and_user_id(tag_id, user.id, db=db)
if tag is None:
log.debug(f"inserting tag: {tag_id}")
tag = Tags.insert_new_tag(tag_id, user.id, db=db)
# Unarchived — ensure tag rows exist
Tags.ensure_tags_exist(tag_ids, user.id, db=db)
return ChatResponse(**chat.model_dump())
else:
@@ -1537,11 +1529,9 @@ async def delete_all_tags_by_id(
):
chat = Chats.get_chat_by_id_and_user_id(id, user.id, db=db)
if chat:
old_tags = chat.meta.get("tags", [])
Chats.delete_all_tags_by_id_and_user_id(id, user.id, db=db)
for tag in chat.meta.get("tags", []):
if Chats.count_chats_by_tag_name_and_user_id(tag, user.id, db=db) == 0:
Tags.delete_tag_by_name_and_user_id(tag, user.id, db=db)
Chats.delete_orphan_tags_for_user(old_tags, user.id, db=db)
return True
else:
+16 -15
View File
@@ -228,22 +228,23 @@ async def upload_pipeline(
headers = {"Authorization": f"Bearer {key}"}
async with aiohttp.ClientSession(trust_env=True) as session:
form_data = aiohttp.FormData()
form_data.add_field(
"file",
open(file_path, "rb"),
filename=filename,
content_type="application/octet-stream",
)
with open(file_path, "rb") as f:
form_data = aiohttp.FormData()
form_data.add_field(
"file",
f,
filename=filename,
content_type="application/octet-stream",
)
async with session.post(
f"{url}/pipelines/upload",
headers=headers,
data=form_data,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
) as response:
response.raise_for_status()
data = await response.json()
async with session.post(
f"{url}/pipelines/upload",
headers=headers,
data=form_data,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
) as response:
response.raise_for_status()
data = await response.json()
return {**data}
except Exception as e:
+3 -1
View File
@@ -107,7 +107,9 @@ async def get_tools(
# MCP Tool Servers
for server in request.app.state.config.TOOL_SERVER_CONNECTIONS:
if server.get("type", "openapi") == "mcp":
if server.get("type", "openapi") == "mcp" and server.get("config", {}).get(
"enable"
):
server_id = server.get("info", {}).get("id")
auth_type = server.get("auth_type", "none")
+2
View File
@@ -190,6 +190,8 @@ class SharingPermissions(BaseModel):
public_prompts: bool = False
tools: bool = False
public_tools: bool = True
skills: bool = False
public_skills: bool = False
notes: bool = False
public_notes: bool = True
+74 -18
View File
@@ -99,6 +99,7 @@ else:
# Timeout duration in seconds
TIMEOUT_DURATION = 3
SESSION_POOL_TIMEOUT = 120 # seconds without heartbeat before session is reaped
# Dictionary to maintain the user pool
@@ -147,6 +148,17 @@ if WEBSOCKET_MANAGER == "redis":
aquire_func = clean_up_lock.aquire_lock
renew_func = clean_up_lock.renew_lock
release_func = clean_up_lock.release_lock
session_cleanup_lock = RedisLock(
redis_url=WEBSOCKET_REDIS_URL,
lock_name=f"{REDIS_KEY_PREFIX}:session_cleanup_lock",
timeout_secs=WEBSOCKET_REDIS_LOCK_TIMEOUT,
redis_sentinels=redis_sentinels,
redis_cluster=WEBSOCKET_REDIS_CLUSTER,
)
session_aquire_func = session_cleanup_lock.aquire_lock
session_renew_func = session_cleanup_lock.renew_lock
session_release_func = session_cleanup_lock.release_lock
else:
MODELS = {}
@@ -154,6 +166,7 @@ else:
USAGE_POOL = {}
aquire_func = release_func = renew_func = lambda: True
session_aquire_func = session_release_func = session_renew_func = lambda: True
YDOC_MANAGER = YdocManager(
@@ -162,6 +175,31 @@ YDOC_MANAGER = YdocManager(
)
async def periodic_session_pool_cleanup():
"""Reap orphaned SESSION_POOL entries that missed heartbeats (e.g. crashed instance)."""
if not session_aquire_func():
log.debug("Session cleanup lock held by another node. Skipping.")
return
try:
while True:
if not session_renew_func():
log.error("Unable to renew session cleanup lock. Exiting.")
return
now = int(time.time())
for sid in list(SESSION_POOL.keys()):
entry = SESSION_POOL.get(sid)
if entry and now - entry.get("last_seen_at", 0) > SESSION_POOL_TIMEOUT:
log.warning(
f"Reaping orphaned session {sid} (user {entry.get('id')})"
)
del SESSION_POOL[sid]
await asyncio.sleep(SESSION_POOL_TIMEOUT)
finally:
session_release_func()
async def periodic_usage_pool_cleanup():
max_retries = 2
retry_delay = random.uniform(
@@ -313,15 +351,18 @@ async def connect(sid, environ, auth):
user = Users.get_user_by_id(data["id"])
if user:
SESSION_POOL[sid] = user.model_dump(
exclude=[
"profile_image_url",
"profile_banner_image_url",
"date_of_birth",
"bio",
"gender",
]
)
SESSION_POOL[sid] = {
**user.model_dump(
exclude=[
"profile_image_url",
"profile_banner_image_url",
"date_of_birth",
"bio",
"gender",
]
),
"last_seen_at": int(time.time()),
}
await sio.enter_room(sid, f"user:{user.id}")
@@ -340,15 +381,18 @@ async def user_join(sid, data):
if not user:
return
SESSION_POOL[sid] = user.model_dump(
exclude=[
"profile_image_url",
"profile_banner_image_url",
"date_of_birth",
"bio",
"gender",
]
)
SESSION_POOL[sid] = {
**user.model_dump(
exclude=[
"profile_image_url",
"profile_banner_image_url",
"date_of_birth",
"bio",
"gender",
]
),
"last_seen_at": int(time.time()),
}
await sio.enter_room(sid, f"user:{user.id}")
@@ -366,6 +410,7 @@ async def user_join(sid, data):
async def heartbeat(sid, data):
user = SESSION_POOL.get(sid)
if user:
SESSION_POOL[sid] = {**user, "last_seen_at": int(time.time())}
Users.update_last_active_by_id(user["id"])
@@ -709,6 +754,17 @@ async def disconnect(sid):
if sid in SESSION_POOL:
user = SESSION_POOL[sid]
del SESSION_POOL[sid]
# Clean up USAGE_POOL entries for this session
for model_id in list(USAGE_POOL.keys()):
connections = USAGE_POOL.get(model_id)
if connections and sid in connections:
del connections[sid]
if not connections:
del USAGE_POOL[model_id]
else:
USAGE_POOL[model_id] = connections
await YDOC_MANAGER.remove_user_from_all_documents(sid)
else:
pass
+34
View File
@@ -118,6 +118,8 @@ class RedisDict:
class YdocManager:
COMPACTION_THRESHOLD = 500
def __init__(
self,
redis=None,
@@ -133,10 +135,42 @@ class YdocManager:
if self._redis:
redis_key = f"{self._redis_key_prefix}:{document_id}:updates"
await self._redis.rpush(redis_key, json.dumps(list(update)))
list_len = await self._redis.llen(redis_key)
if list_len >= self.COMPACTION_THRESHOLD:
await self._compact_updates_redis(document_id)
else:
if document_id not in self._updates:
self._updates[document_id] = []
self._updates[document_id].append(update)
if len(self._updates[document_id]) >= self.COMPACTION_THRESHOLD:
self._compact_updates_memory(document_id)
async def _compact_updates_redis(self, document_id: str):
"""Rolling compaction: squash oldest half into one snapshot."""
redis_key = f"{self._redis_key_prefix}:{document_id}:updates"
all_updates = await self._redis.lrange(redis_key, 0, -1)
if len(all_updates) <= 1:
return
mid = len(all_updates) // 2
ydoc = Y.Doc()
for raw in all_updates[:mid]:
ydoc.apply_update(bytes(json.loads(raw)))
snapshot = json.dumps(list(ydoc.get_update()))
pipe = self._redis.pipeline()
pipe.delete(redis_key)
pipe.rpush(redis_key, snapshot, *all_updates[mid:])
await pipe.execute()
def _compact_updates_memory(self, document_id: str):
"""Rolling compaction: squash oldest half into one snapshot."""
updates = self._updates.get(document_id, [])
if len(updates) <= 1:
return
mid = len(updates) // 2
ydoc = Y.Doc()
for update in updates[:mid]:
ydoc.apply_update(bytes(update))
self._updates[document_id] = [ydoc.get_update()] + updates[mid:]
async def get_updates(self, document_id: str) -> List[bytes]:
document_id = document_id.replace(":", "_")
+68 -19
View File
@@ -1918,6 +1918,25 @@ async def convert_url_images_to_base64(form_data):
return form_data
def load_messages_from_db(chat_id: str, message_id: str) -> Optional[list[dict]]:
"""
Load the message chain from DB up to message_id,
keeping only LLM-relevant fields (role, content, output).
"""
messages_map = Chats.get_messages_map_by_chat_id(chat_id)
if not messages_map:
return None
db_messages = get_message_list(messages_map, message_id)
if not db_messages:
return None
return [
{k: v for k, v in msg.items() if k in ("role", "content", "output")}
for msg in db_messages
]
def process_messages_with_output(messages: list[dict]) -> list[dict]:
"""
Process messages with OR-aligned output items for LLM consumption.
@@ -1950,6 +1969,19 @@ async def process_chat_payload(request, form_data, user, metadata, model):
form_data = apply_params_to_form_data(form_data, model)
log.debug(f"form_data: {form_data}")
# Load messages from DB when available — DB preserves structured 'output' items
# which the frontend strips, causing tool calls to be merged into content.
chat_id = metadata.get("chat_id")
parent_message_id = metadata.get("parent_message_id")
if chat_id and parent_message_id and not chat_id.startswith("local:"):
db_messages = load_messages_from_db(chat_id, parent_message_id)
if db_messages:
system_message = get_system_message(form_data.get("messages", []))
form_data["messages"] = (
[system_message, *db_messages] if system_message else db_messages
)
# Process messages with OR-aligned output items for clean LLM messages
form_data["messages"] = process_messages_with_output(form_data.get("messages", []))
@@ -2124,23 +2156,27 @@ async def process_chat_payload(request, form_data, user, metadata, model):
)
if "code_interpreter" in features and features["code_interpreter"]:
form_data["messages"] = add_or_update_user_message(
(
request.app.state.config.CODE_INTERPRETER_PROMPT_TEMPLATE
if request.app.state.config.CODE_INTERPRETER_PROMPT_TEMPLATE != ""
else DEFAULT_CODE_INTERPRETER_PROMPT
),
form_data["messages"],
)
# Skip XML-tag prompt injection when native FC is enabled —
# execute_code will be injected as a builtin tool instead
if metadata.get("params", {}).get("function_calling") != "native":
form_data["messages"] = add_or_update_user_message(
(
request.app.state.config.CODE_INTERPRETER_PROMPT_TEMPLATE
if request.app.state.config.CODE_INTERPRETER_PROMPT_TEMPLATE
!= ""
else DEFAULT_CODE_INTERPRETER_PROMPT
),
form_data["messages"],
)
tool_ids = form_data.pop("tool_ids", None)
files = form_data.pop("files", None)
# Skills: inject manifest only — model uses view_skill tool to load full content on-demand
user_skill_ids = form_data.pop("skill_ids", None) or []
model_skill_ids = model.get("info", {}).get("meta", {}).get("skillIds", [])
# Skills
user_skill_ids = set(form_data.pop("skill_ids", None) or [])
model_skill_ids = set(model.get("info", {}).get("meta", {}).get("skillIds", []))
all_skill_ids = list(set(user_skill_ids + model_skill_ids))
all_skill_ids = user_skill_ids | model_skill_ids
available_skills = []
if all_skill_ids:
from open_webui.models.skills import Skills as SkillsModel
@@ -2156,13 +2192,24 @@ async def process_chat_payload(request, form_data, user, metadata, model):
and s.is_active
]
if available_skills:
manifest = "<available_skills>\n"
for skill in available_skills:
manifest += f"<skill>\n<name>{skill.name}</name>\n<description>{skill.description or ''}</description>\n</skill>\n"
manifest += "</available_skills>"
skill_descriptions = ""
for skill in available_skills:
if skill.id in user_skill_ids:
# User-selected: inject full content
form_data["messages"] = add_or_update_system_message(
f'<skill name="{skill.name}">\n{skill.content}\n</skill>',
form_data["messages"],
append=True,
)
else:
# Model-attached: name+description only
skill_descriptions += f"<skill>\n<name>{skill.name}</name>\n<description>{skill.description or ''}</description>\n</skill>\n"
if skill_descriptions:
form_data["messages"] = add_or_update_system_message(
manifest, form_data["messages"], append=True
f"<available_skills>\n{skill_descriptions}</available_skills>",
form_data["messages"],
append=True,
)
prompt = get_last_user_message(form_data["messages"])
@@ -2399,7 +2446,9 @@ async def process_chat_payload(request, form_data, user, metadata, model):
{
**extra_params,
"__event_emitter__": event_emitter,
"__skill_ids__": [s.id for s in available_skills],
"__skill_ids__": [
s.id for s in available_skills if s.id not in user_skill_ids
],
},
features,
model,
+1 -1
View File
@@ -447,7 +447,7 @@ def openai_chat_completion_message_template(
**({"tool_calls": tool_calls} if tool_calls else {}),
}
template["choices"][0]["finish_reason"] = "stop"
template["choices"][0]["finish_reason"] = "tool_calls" if tool_calls else "stop"
if usage:
template["usage"] = usage
+21 -7
View File
@@ -286,9 +286,23 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
}
]
def get_function_module_by_id(function_id):
function_module, _, _ = get_function_module_from_cache(request, function_id)
return function_module
# Batch-prefetch all needed function records to avoid N+1 queries
all_function_ids = set()
for model in models:
all_function_ids.update(model.get("action_ids", []))
all_function_ids.update(model.get("filter_ids", []))
all_function_ids.update(global_action_ids)
all_function_ids.update(global_filter_ids)
functions_by_id = {
f.id: f for f in Functions.get_functions_by_ids(list(all_function_ids))
}
# Pre-warm the function module cache once per unique function ID.
# This ensures each function's DB freshness check runs exactly once,
# not once per (model × function) pair.
for function_id in all_function_ids:
get_function_module_from_cache(request, function_id)
for model in models:
action_ids = [
@@ -304,22 +318,22 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
model["actions"] = []
for action_id in action_ids:
action_function = Functions.get_function_by_id(action_id)
action_function = functions_by_id.get(action_id)
if action_function is None:
raise Exception(f"Action not found: {action_id}")
function_module = get_function_module_by_id(action_id)
function_module = request.app.state.FUNCTIONS.get(action_id)
model["actions"].extend(
get_action_items_from_module(action_function, function_module)
)
model["filters"] = []
for filter_id in filter_ids:
filter_function = Functions.get_function_by_id(filter_id)
filter_function = functions_by_id.get(filter_id)
if filter_function is None:
raise Exception(f"Filter not found: {filter_id}")
function_module = get_function_module_by_id(filter_id)
function_module = request.app.state.FUNCTIONS.get(filter_id)
if getattr(function_module, "toggle", None):
model["filters"].extend(
+3
View File
@@ -166,6 +166,9 @@ async def convert_streaming_response_ollama_to_openai(ollama_streaming_response)
model, message_content, reasoning_content, openai_tool_calls, usage
)
if done and openai_tool_calls:
data["choices"][0]["finish_reason"] = "tool_calls"
line = f"data: {json.dumps(data)}\n\n"
yield line
+4
View File
@@ -471,6 +471,7 @@ def get_builtin_tools(
is_builtin_tool_enabled("web_search")
and getattr(request.app.state.config, "ENABLE_WEB_SEARCH", False)
and get_model_capability("web_search")
and features.get("web_search")
):
builtin_functions.extend([search_web, fetch_url])
@@ -479,12 +480,14 @@ def get_builtin_tools(
is_builtin_tool_enabled("image_generation")
and getattr(request.app.state.config, "ENABLE_IMAGE_GENERATION", False)
and get_model_capability("image_generation")
and features.get("image_generation")
):
builtin_functions.append(generate_image)
if (
is_builtin_tool_enabled("image_generation")
and getattr(request.app.state.config, "ENABLE_IMAGE_EDIT", False)
and get_model_capability("image_generation")
and features.get("image_generation")
):
builtin_functions.append(edit_image)
@@ -493,6 +496,7 @@ def get_builtin_tools(
is_builtin_tool_enabled("code_interpreter")
and getattr(request.app.state.config, "ENABLE_CODE_INTERPRETER", True)
and get_model_capability("code_interpreter")
and features.get("code_interpreter")
):
builtin_functions.append(execute_code)
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "open-webui",
"version": "0.8.1",
"version": "0.8.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "open-webui",
"version": "0.8.1",
"version": "0.8.2",
"dependencies": {
"@azure/msal-browser": "^4.5.0",
"@codemirror/lang-javascript": "^6.2.2",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "open-webui",
"version": "0.8.1",
"version": "0.8.2",
"private": true,
"scripts": {
"dev": "npm run pyodide:fetch && vite dev --host",
+6 -2
View File
@@ -250,8 +250,12 @@
const submitHandler = async () => {
loading = true;
// remove trailing slash from url
url = url.replace(/\/$/, '');
// remove trailing slash from url for non-MCP connections
// MCP servers may require a trailing slash; stripping it can cause
// 301 redirects that lose auth headers (see #21179)
if (type !== 'mcp') {
url = url.replace(/\/$/, '');
}
if (id.includes(':') || id.includes('|')) {
toast.error($i18n.t('ID cannot contain ":" or "|" characters'));
loading = false;
@@ -152,7 +152,15 @@
if (taskConfig.TASK_MODEL) {
const model = models.find((m) => m.id === taskConfig.TASK_MODEL);
if (model) {
if (model?.access_control !== null) {
if (
model?.access_grants &&
!model.access_grants.some(
(g) =>
g.principal_type === 'user' &&
g.principal_id === '*' &&
g.permission === 'read'
)
) {
toast.error(
$i18n.t(
'This model is not publicly available. Please select another model.'
@@ -187,7 +195,15 @@
if (taskConfig.TASK_MODEL_EXTERNAL) {
const model = models.find((m) => m.id === taskConfig.TASK_MODEL_EXTERNAL);
if (model) {
if (model?.access_control !== null) {
if (
model?.access_grants &&
!model.access_grants.some(
(g) =>
g.principal_type === 'user' &&
g.principal_id === '*' &&
g.permission === 'read'
)
) {
toast.error(
$i18n.t(
'This model is not publicly available. Please select another model.'
@@ -160,7 +160,7 @@
name: model.name,
base_model_id: null,
params: {},
access_control: {},
access_grants: [],
...model
}).catch((error) => {
return null;
@@ -188,7 +188,7 @@
base_model_id: null,
meta: {},
params: {},
access_control: {},
access_grants: [],
is_active: model.is_active
}).catch((error) => {
return null;
@@ -324,6 +324,40 @@
</div>
{/if}
<div class="flex flex-col w-full">
<div class="flex w-full justify-between my-1">
<div class=" self-center text-xs font-medium">
{$i18n.t('Skills Sharing')}
</div>
<Switch bind:state={permissions.sharing.skills} />
</div>
{#if defaultPermissions?.sharing?.skills && !permissions.sharing.skills}
<div>
<div class="text-xs text-gray-500">
{$i18n.t('This is a default user permission and will remain enabled.')}
</div>
</div>
{/if}
</div>
{#if permissions.sharing.skills}
<div class="flex flex-col w-full">
<div class="flex w-full justify-between my-1">
<div class=" self-center text-xs font-medium">
{$i18n.t('Skills Public Sharing')}
</div>
<Switch bind:state={permissions.sharing.public_skills} />
</div>
{#if defaultPermissions?.sharing?.public_skills && !permissions.sharing.public_skills}
<div>
<div class="text-xs text-gray-500">
{$i18n.t('This is a default user permission and will remain enabled.')}
</div>
</div>
{/if}
</div>
{/if}
<div class="flex flex-col w-full">
<div class="flex w-full justify-between my-1">
<div class=" self-center text-xs font-medium">
@@ -2,6 +2,7 @@
import { getContext, onMount, tick } from 'svelte';
import Modal from '$lib/components/common/Modal.svelte';
import Tooltip from '$lib/components/common/Tooltip.svelte';
import Markdown from '$lib/components/chat/Messages/Markdown.svelte';
import { WEBUI_API_BASE_URL } from '$lib/constants';
import { settings } from '$lib/stores';
@@ -10,6 +11,9 @@
const i18n = getContext('i18n');
const CONTENT_PREVIEW_LIMIT = 10000;
let expandedDocs: Set<number> = new Set();
export let show = false;
export let citation;
export let showPercentage = false;
@@ -35,6 +39,7 @@
}
$: if (citation) {
expandedDocs = new Set();
mergedDocuments = citation.document?.map((c, i) => {
return {
source: citation.source,
@@ -216,9 +221,36 @@
title={$i18n.t('Content')}
></iframe>
{:else}
<pre class="text-sm dark:text-gray-400 whitespace-pre-line">{document.document
.trim()
.replace(/\n\n+/g, '\n\n')}</pre>
{@const rawContent = document.document.trim().replace(/\n\n+/g, '\n\n')}
{@const isTruncated =
($settings?.renderMarkdownInPreviews ?? true) &&
rawContent.length > CONTENT_PREVIEW_LIMIT &&
!expandedDocs.has(documentIdx)}
{#if $settings?.renderMarkdownInPreviews ?? true}
<div class="text-sm prose dark:prose-invert max-w-full">
<Markdown
content={isTruncated
? rawContent.slice(0, CONTENT_PREVIEW_LIMIT)
: rawContent}
id="citation-{documentIdx}"
/>
</div>
{#if isTruncated}
<button
class="mt-1 text-xs text-gray-500 hover:text-gray-700 dark:hover:text-gray-300 transition"
on:click={() => {
expandedDocs.add(documentIdx);
expandedDocs = expandedDocs;
}}
>
{$i18n.t('Show all ({{COUNT}} characters)', {
COUNT: rawContent.length.toLocaleString()
})}
</button>
{/if}
{:else}
<pre class="text-sm dark:text-gray-400 whitespace-pre-line">{rawContent}</pre>
{/if}
{/if}
</div>
</div>
@@ -417,13 +417,13 @@
<div>
<div
class="relative {className} flex flex-col rounded-3xl border border-gray-100/30 dark:border-gray-850/30 my-0.5"
class="relative {className} flex flex-col rounded-2xl border border-gray-100/30 dark:border-gray-850/30 my-0.5"
dir="ltr"
>
{#if ['mermaid', 'vega', 'vega-lite'].includes(lang)}
{#if renderHTML}
<SvgPanZoom
className=" rounded-3xl max-h-fit overflow-hidden"
className=" rounded-2xl max-h-fit overflow-hidden"
svg={renderHTML}
content={_token.text}
/>
@@ -441,13 +441,13 @@
{/if}
{:else}
<div
class="absolute left-0 right-0 py-2.5 pr-3 text-text-300 pl-4.5 text-xs font-medium dark:text-white"
class="absolute left-0 right-0 py-1.5 pr-3 text-text-300 pl-4.5 text-xs font-medium dark:text-white"
>
{lang}
</div>
<div
class="sticky {stickyButtonsClassName} left-0 right-0 py-2 pr-3 flex items-center justify-end w-full z-10 text-xs text-black dark:text-white"
class="sticky {stickyButtonsClassName} left-0 right-0 py-1.5 pr-3 flex items-center justify-end w-full z-10 text-xs text-black dark:text-white"
>
<div class="flex items-center gap-0.5">
<button
@@ -514,13 +514,13 @@
</div>
<div
class="language-{lang} rounded-t-3xl -mt-9 {editorClassName
class="language-{lang} rounded-t-2xl -mt-8 {editorClassName
? editorClassName
: executing || stdout || stderr || result
? ''
: 'rounded-b-3xl'} overflow-hidden"
: 'rounded-b-2xl'} overflow-hidden"
>
<div class=" pt-8 bg-white dark:bg-black"></div>
<div class=" pt-6.5 bg-white dark:bg-black"></div>
{#if !collapsed}
{#if edit}
@@ -550,7 +550,7 @@
{/if}
{:else}
<div
class="bg-white dark:bg-black dark:text-white rounded-b-3xl! pt-0.5 pb-3 px-4 flex flex-col gap-2 text-xs"
class="bg-white dark:bg-black dark:text-white rounded-b-2xl! pt-0.5 pb-2 px-4 flex flex-col gap-2 text-xs"
>
<span class="text-gray-500 italic">
{$i18n.t('{{COUNT}} hidden lines', {
@@ -569,7 +569,7 @@
{#if executing || stdout || stderr || result || files}
<div
class="bg-gray-50 dark:bg-black dark:text-white rounded-b-3xl! py-4 px-4 flex flex-col gap-2"
class="bg-gray-50 dark:bg-black dark:text-white rounded-b-2xl! py-4 px-4 flex flex-col gap-2"
>
{#if executing}
<div class=" ">
@@ -18,6 +18,7 @@
import TextToken from './MarkdownInlineTokens/TextToken.svelte';
import CodespanToken from './MarkdownInlineTokens/CodespanToken.svelte';
import MentionToken from './MarkdownInlineTokens/MentionToken.svelte';
import NoteLinkToken from './MarkdownInlineTokens/NoteLinkToken.svelte';
import SourceToken from './SourceToken.svelte';
export let id: string;
@@ -26,6 +27,24 @@
export let sourceIds = [];
export let onSourceClick: Function = () => {};
/**
* Check if a URL is a same-origin note link and return the note ID if so.
*/
const getNoteIdFromHref = (href: string): string | null => {
try {
const url = new URL(href, window.location.origin);
if (url.origin === window.location.origin) {
const match = url.pathname.match(/^\/notes\/([^/]+)$/);
if (match) {
return match[1];
}
}
} catch {
// Invalid URL
}
return null;
};
/**
* Handle link clicks - intercept same-origin app URLs for in-app navigation
*/
@@ -54,7 +73,10 @@
{:else if token.type === 'html'}
<HtmlToken {id} {token} {onSourceClick} />
{:else if token.type === 'link'}
{#if token.tokens}
{@const noteId = getNoteIdFromHref(token.href)}
{#if noteId}
<NoteLinkToken {noteId} href={token.href} />
{:else if token.tokens}
<a
href={token.href}
target="_blank"
@@ -0,0 +1,73 @@
<script lang="ts">
import { onMount, getContext } from 'svelte';
import { goto } from '$app/navigation';
import { getNoteById } from '$lib/apis/notes';
import { getUserInfoById } from '$lib/apis/users';
import { capitalizeFirstLetter } from '$lib/utils';
const i18n = getContext('i18n');
export let noteId: string;
export let href: string;
let title = '';
let author = '';
let loading = true;
onMount(async () => {
try {
const note = await getNoteById(localStorage.token, noteId);
if (note) {
title = note.title || $i18n.t('Untitled');
if (note.user_id) {
try {
const userInfo = await getUserInfoById(localStorage.token, note.user_id);
if (userInfo) {
author = capitalizeFirstLetter(userInfo.name ?? userInfo.email ?? '');
}
} catch {
// user lookup failed, skip author
}
}
}
} catch {
title = $i18n.t('Note');
} finally {
loading = false;
}
});
</script>
<!-- svelte-ignore a11y-click-events-have-key-events -->
<!-- svelte-ignore a11y-no-static-element-interactions -->
<button
class="relative group py-2 px-3 w-60 flex flex-col bg-white dark:bg-gray-850 border border-gray-50/30 dark:border-gray-800/30 rounded-xl text-left cursor-pointer"
type="button"
on:click|preventDefault|stopPropagation={() => {
try {
const url = new URL(href, window.location.origin);
goto(url.pathname);
} catch {
// fallback
}
}}
>
<div class="flex flex-col justify-center w-full min-w-0">
<div class="dark:text-gray-100 text-sm flex justify-between items-center gap-2">
<div class="font-medium line-clamp-1 flex-1 min-w-0">
{#if loading}
<span class="text-gray-400">...</span>
{:else}
{title}
{/if}
</div>
<div class="text-gray-500 text-xs shrink-0">{$i18n.t('Note')}</div>
</div>
{#if author}
<div class="text-gray-500 text-xs line-clamp-1 mt-0.5">
{$i18n.t('By {{name}}', { name: author })}
</div>
{/if}
</div>
</button>
@@ -365,8 +365,13 @@
await tick();
const messagesContainer = document.getElementById('messages-container');
const savedScrollTop = messagesContainer?.scrollTop;
editTextAreaElement.style.height = '';
editTextAreaElement.style.height = `${editTextAreaElement.scrollHeight}px`;
if (messagesContainer) messagesContainer.scrollTop = savedScrollTop;
};
const editMessageConfirmHandler = async () => {
@@ -697,8 +702,13 @@
class=" bg-transparent outline-hidden w-full resize-none"
bind:value={editedContent}
on:input={(e) => {
const messagesContainer = document.getElementById('messages-container');
const savedScrollTop = messagesContainer?.scrollTop;
e.target.style.height = '';
e.target.style.height = `${e.target.scrollHeight}px`;
if (messagesContainer) messagesContainer.scrollTop = savedScrollTop;
}}
on:keydown={(e) => {
if (e.key === 'Escape') {
@@ -50,6 +50,7 @@
let editedFiles = [];
let messageEditTextAreaElement: HTMLTextAreaElement;
let editScrollContainer: HTMLDivElement;
let message = JSON.parse(JSON.stringify(history.messages[messageId]));
$: if (history.messages) {
@@ -73,10 +74,14 @@
await tick();
if (messageEditTextAreaElement) {
const messagesContainer = document.getElementById('messages-container');
const savedScrollTop = messagesContainer?.scrollTop;
messageEditTextAreaElement.style.height = '';
messageEditTextAreaElement.style.height = `${messageEditTextAreaElement.scrollHeight}px`;
messageEditTextAreaElement?.focus();
if (messagesContainer) messagesContainer.scrollTop = savedScrollTop;
messageEditTextAreaElement?.focus({ preventScroll: true });
}
};
@@ -283,15 +288,22 @@
</div>
{/if}
<div class="max-h-96 overflow-auto">
<div class="max-h-96 overflow-auto" bind:this={editScrollContainer}>
<textarea
id="message-edit-{message.id}"
bind:this={messageEditTextAreaElement}
class=" bg-transparent outline-hidden w-full resize-none"
bind:value={editedContent}
on:input={(e) => {
const messagesContainer = document.getElementById('messages-container');
const savedScrollTop = messagesContainer?.scrollTop;
const savedInnerScroll = editScrollContainer?.scrollTop;
e.target.style.height = '';
e.target.style.height = `${e.target.scrollHeight}px`;
if (messagesContainer) messagesContainer.scrollTop = savedScrollTop;
if (editScrollContainer) editScrollContainer.scrollTop = savedInnerScroll;
}}
on:keydown={(e) => {
if (e.key === 'Escape') {
@@ -70,6 +70,7 @@
let chatFadeStreamingText = true;
let collapseCodeBlocks = false;
let expandDetails = false;
let renderMarkdownInPreviews = true;
let showChatTitleInTab = true;
let showFloatingActionButtons = true;
@@ -232,6 +233,7 @@
collapseCodeBlocks = $settings?.collapseCodeBlocks ?? false;
expandDetails = $settings?.expandDetails ?? false;
renderMarkdownInPreviews = $settings?.renderMarkdownInPreviews ?? true;
landingPageMode = $settings?.landingPageMode ?? '';
chatBubble = $settings?.chatBubble ?? true;
@@ -964,6 +966,25 @@
</div>
</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
<div id="render-markdown-in-previews-label" class=" self-center text-xs">
{$i18n.t('Render Markdown in Previews')}
</div>
<div class="flex items-center gap-2 p-1">
<Switch
ariaLabelledbyId="render-markdown-in-previews-label"
tooltip={true}
bind:state={renderMarkdownInPreviews}
on:change={() => {
saveSettings({ renderMarkdownInPreviews });
}}
/>
</div>
</div>
</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
<div id="keep-followup-prompts-label" class=" self-center text-xs">
+90 -7
View File
@@ -6,6 +6,7 @@
import { formatFileSize, getLineCount } from '$lib/utils';
import { WEBUI_API_BASE_URL } from '$lib/constants';
import { settings } from '$lib/stores';
import { getKnowledgeById } from '$lib/apis/knowledge';
import { getFileById, getFileContentById } from '$lib/apis/files';
@@ -14,6 +15,9 @@
const i18n = getContext('i18n');
const CONTENT_PREVIEW_LIMIT = 10000;
let expandedContent = false;
import Modal from './Modal.svelte';
import XMark from '../icons/XMark.svelte';
import Switch from './Switch.svelte';
@@ -30,6 +34,7 @@
let isPDF = false;
let isAudio = false;
let isImage = false;
let isExcel = false;
let selectedTab = '';
@@ -79,6 +84,18 @@
(item?.name && item?.name.toLowerCase().endsWith('.m4a')) ||
(item?.name && item?.name.toLowerCase().endsWith('.webm'));
$: isImage =
(item?.meta?.content_type ?? '').startsWith('image/') ||
(item?.name &&
(item.name.toLowerCase().endsWith('.png') ||
item.name.toLowerCase().endsWith('.jpg') ||
item.name.toLowerCase().endsWith('.jpeg') ||
item.name.toLowerCase().endsWith('.gif') ||
item.name.toLowerCase().endsWith('.webp') ||
item.name.toLowerCase().endsWith('.svg') ||
item.name.toLowerCase().endsWith('.bmp') ||
item.name.toLowerCase().endsWith('.ico')));
$: isExcel =
item?.meta?.content_type === 'application/vnd.ms-excel' ||
item?.meta?.content_type ===
@@ -134,6 +151,7 @@
const loadContent = async () => {
selectedTab = '';
expandedContent = false;
if (item?.type === 'collection') {
loading = true;
@@ -341,15 +359,80 @@
</div>
{/if}
{#if selectedTab === ''}
{#if isImage}
<div class="w-full max-h-[70vh] overflow-auto">
<img
src={`${WEBUI_API_BASE_URL}/files/${item.id}/content`}
alt={item?.name ?? 'Image'}
class="w-full object-contain rounded-lg"
loading="lazy"
/>
</div>
{:else if selectedTab === ''}
{#if item?.file?.data}
<div class="max-h-96 overflow-scroll scrollbar-hidden text-xs whitespace-pre-wrap">
{(item?.file?.data?.content ?? '').trim() || 'No content'}
</div>
{@const rawContent = (item?.file?.data?.content ?? '').trim() || 'No content'}
{@const isTruncated =
($settings?.renderMarkdownInPreviews ?? true) &&
rawContent.length > CONTENT_PREVIEW_LIMIT &&
!expandedContent}
{#if $settings?.renderMarkdownInPreviews ?? true}
<div
class="max-h-96 overflow-scroll scrollbar-hidden text-sm prose dark:prose-invert max-w-full"
>
<Markdown
content={isTruncated ? rawContent.slice(0, CONTENT_PREVIEW_LIMIT) : rawContent}
id="file-preview"
/>
</div>
{#if isTruncated}
<button
class="mt-1 text-xs text-gray-500 hover:text-gray-700 dark:hover:text-gray-300 transition"
on:click={() => {
expandedContent = true;
}}
>
{$i18n.t('Show all ({{COUNT}} characters)', {
COUNT: rawContent.length.toLocaleString()
})}
</button>
{/if}
{:else}
<div class="max-h-96 overflow-scroll scrollbar-hidden text-xs whitespace-pre-wrap">
{rawContent}
</div>
{/if}
{:else if item?.content}
<div class="max-h-96 overflow-scroll scrollbar-hidden text-xs whitespace-pre-wrap">
{(item?.content ?? '').trim() || 'No content'}
</div>
{@const rawContent = (item?.content ?? '').trim() || 'No content'}
{@const isTruncated =
($settings?.renderMarkdownInPreviews ?? true) &&
rawContent.length > CONTENT_PREVIEW_LIMIT &&
!expandedContent}
{#if $settings?.renderMarkdownInPreviews ?? true}
<div
class="max-h-96 overflow-scroll scrollbar-hidden text-sm prose dark:prose-invert max-w-full"
>
<Markdown
content={isTruncated ? rawContent.slice(0, CONTENT_PREVIEW_LIMIT) : rawContent}
id="file-preview-content"
/>
</div>
{#if isTruncated}
<button
class="mt-1 text-xs text-gray-500 hover:text-gray-700 dark:hover:text-gray-300 transition"
on:click={() => {
expandedContent = true;
}}
>
{$i18n.t('Show all ({{COUNT}} characters)', {
COUNT: rawContent.length.toLocaleString()
})}
</button>
{/if}
{:else}
<div class="max-h-96 overflow-scroll scrollbar-hidden text-xs whitespace-pre-wrap">
{rawContent}
</div>
{/if}
{/if}
{:else if selectedTab === 'preview'}
{#if isAudio}
@@ -691,7 +691,12 @@
element: element,
extensions: [
StarterKit.configure({
link: link
link: link,
// When rich text is off, disable Strike from StarterKit so we can
// re-add it below without its Mod-Shift-s shortcut (which conflicts
// with the Toggle Sidebar shortcut). When rich text is on, the user
// can undo strikethrough via the toolbar, so the shortcut is fine.
...(richText ? {} : { strike: false })
}),
...(dragHandle ? [ListItemDragHandle] : []),
Placeholder.configure({ placeholder: () => _placeholder, showOnlyWhenEditable: false }),
@@ -12,6 +12,8 @@
import ChevronDown from '../icons/ChevronDown.svelte';
import Spinner from './Spinner.svelte';
import Markdown from '../chat/Messages/Markdown.svelte';
import WrenchSolid from '../icons/WrenchSolid.svelte';
import CheckCircle from '../icons/CheckCircle.svelte';
import Image from './Image.svelte';
import FullHeightIframe from './FullHeightIframe.svelte';
@@ -45,20 +47,16 @@
function formatJSONString(str: string) {
try {
const parsed = parseJSONString(str);
// If parsed is an object/array, then it's valid JSON
if (typeof parsed === 'object') {
return JSON.stringify(parsed, null, 2);
} else {
// It's a primitive value like a number, boolean, etc.
return `${JSON.stringify(String(parsed))}`;
}
} catch (e) {
// Not valid JSON, return as-is
return str;
}
}
// Decode and parse attributes
$: args = decode(attributes?.arguments ?? '');
$: result = decode(attributes?.result ?? '');
$: files = parseJSONString(decode(attributes?.files ?? ''));
@@ -72,11 +70,8 @@
<!-- Embed Mode: Show iframes without collapsible behavior -->
<div class="py-1 w-full cursor-pointer">
<div class="w-full text-xs text-gray-500">
<div class="">
{attributes.name}
</div>
{attributes.name}
</div>
{#each embeds as embed, idx}
<div class="my-2" id={`${componentId}-tool-call-embed-${idx}`}>
<FullHeightIframe
@@ -91,24 +86,31 @@
{/each}
</div>
{:else}
<!-- Standard collapsible tool call display -->
<!-- Tool call display -->
<!-- svelte-ignore a11y-no-static-element-interactions -->
<div
class="{buttonClassName} cursor-pointer"
on:pointerup={() => {
open = !open;
}}
>
<div
class="w-full font-medium flex items-center justify-between gap-2 {isExecuting
? 'shimmer'
: ''}"
>
<div class="w-full font-medium flex items-center gap-1.5 {isExecuting ? 'shimmer' : ''}">
<!-- Status icon -->
{#if isExecuting}
<div>
<Spinner className="size-4" />
</div>
{:else if isDone}
<div class="text-emerald-500 dark:text-emerald-400">
<CheckCircle className="size-4" strokeWidth="2" />
</div>
{:else}
<div class="text-gray-400 dark:text-gray-500">
<WrenchSolid className="size-3.5" />
</div>
{/if}
<!-- Label -->
<div class="">
{#if isDone}
<Markdown
@@ -127,6 +129,7 @@
{/if}
</div>
<!-- Chevron -->
<div class="flex self-center translate-y-[1px]">
{#if open}
<ChevronUp strokeWidth="3.5" className="size-3.5" />
@@ -139,22 +142,41 @@
{#if open}
<div transition:slide={{ duration: 300, easing: quintOut, axis: 'y' }}>
{#if isDone}
<Markdown
id={`${componentId}-tool-call-result`}
content={`> \`\`\`json
> ${formatJSONString(args)}
> ${formatJSONString(result)}
> \`\`\``}
/>
{:else}
<Markdown
id={`${componentId}-tool-call-args`}
content={`> \`\`\`json
> ${formatJSONString(args)}
> \`\`\``}
/>
{/if}
<div class="border border-gray-50 dark:border-gray-850/30 rounded-2xl my-1.5 p-3 space-y-3">
<!-- Input -->
{#if args}
<div>
<div
class="text-[10px] uppercase tracking-wider font-semibold text-gray-400 dark:text-gray-500 mb-1.5 px-1"
>
{$i18n.t('Input')}
</div>
<div class="tool-call-body w-full max-w-none!">
<Markdown
id={`${componentId}-tool-call-args`}
content={`\`\`\`json\n${formatJSONString(args)}\n\`\`\``}
/>
</div>
</div>
{/if}
<!-- Output -->
{#if isDone && result}
<div>
<div
class="text-[10px] uppercase tracking-wider font-semibold text-gray-400 dark:text-gray-500 mb-1.5 px-1"
>
{$i18n.t('Output')}
</div>
<div class="w-full max-w-none!">
<Markdown
id={`${componentId}-tool-call-result`}
content={`\`\`\`json\n${formatJSONString(result)}\n\`\`\``}
/>
</div>
</div>
{/if}
</div>
</div>
{/if}
{/if}
+2
View File
@@ -21,6 +21,8 @@ export const DEFAULT_PERMISSIONS = {
public_prompts: false,
tools: false,
public_tools: false,
skills: false,
public_skills: false,
notes: false,
public_notes: false
},
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "آخر",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "حذف الموديل",
"Rename": "إعادة تسمية",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1642,6 +1644,7 @@
"Show": "عرض",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1669,6 +1672,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
+5
View File
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "تنظيم المستخدمين الخاصين بك",
"Other": "آخر",
"Output": "",
"OUTPUT": "الإخراج",
"Output format": "تنسيق الإخراج",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "حذف الموديل",
"Rename": "إعادة تسمية",
"Render Markdown in Previews": "",
"Reorder Models": "إعادة ترتيب النماذج",
"Reply": "",
"Reply in Thread": "الرد داخل سلسلة الرسائل",
@@ -1642,6 +1644,7 @@
"Show": "عرض",
"Show \"What's New\" modal on login": "عرض نافذة \"ما الجديد\" عند تسجيل الدخول",
"Show Admin Details in Account Pending Overlay": "عرض تفاصيل المشرف في نافذة \"الحساب قيد الانتظار\"",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1669,6 +1672,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Организирайте вашите потребители",
"Other": "Друго",
"Output": "",
"OUTPUT": "ИЗХОД",
"Output format": "Изходен формат",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Изтриване на модела",
"Rename": "Преименуване",
"Render Markdown in Previews": "",
"Reorder Models": "Преорганизиране на моделите",
"Reply": "",
"Reply in Thread": "Отговори в тред",
@@ -1638,6 +1640,7 @@
"Show": "Покажи",
"Show \"What's New\" modal on login": "Покажи модалния прозорец \"Какво е ново\" при вписване",
"Show Admin Details in Account Pending Overlay": "Покажи детайлите на администратора в наслагването на изчакващ акаунт",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "অন্যান্য",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "মডেল রিমুভ করুন",
"Rename": "রেনেম",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "দেখান",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "ཁྱེད་ཀྱི་བེད་སྤྱོད་མཁན་སྒྲིག་འཛུགས།",
"Other": "གཞན།",
"Output": "",
"OUTPUT": "ཐོན་འབྲས།",
"Output format": "ཐོན་འབྲས་ཀྱི་བཀོད་པ།",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "དཔེ་དབྱིབས་འདོར་བ།",
"Rename": "མིང་བསྐྱར་འདོགས།",
"Render Markdown in Previews": "",
"Reorder Models": "དཔེ་དབྱིབས་བསྐྱར་སྒྲིག",
"Reply": "",
"Reply in Thread": "བརྗོད་གཞིའི་ནང་ལན་འདེབས།",
@@ -1637,6 +1639,7 @@
"Show": "སྟོན་པ།",
"Show \"What's New\" modal on login": "ནང་འཛུལ་སྐབས་ \"གསར་པ་ཅི་ཡོད\" modal སྟོན་པ།",
"Show Admin Details in Account Pending Overlay": "རྩིས་ཁྲ་སྒུག་བཞིན་པའི་གཏོགས་ངོས་སུ་དོ་དམ་པའི་ཞིབ་ཕྲ་སྟོན་པ།",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Ostalo",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Ukloni model",
"Rename": "Preimenuj",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1639,6 +1641,7 @@
"Show": "Pokaži",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "Llista ordenada",
"Organize your users": "Organitza els teus usuaris",
"Other": "Altres",
"Output": "",
"OUTPUT": "SORTIDA",
"Output format": "Format de sortida",
"Output Format": "Format de sortida",
@@ -1478,6 +1479,7 @@
"Remove image": "Eliminar imatge",
"Remove Model": "Eliminar el model",
"Rename": "Canviar el nom",
"Render Markdown in Previews": "",
"Reorder Models": "Reordenar els models",
"Reply": "Respondre",
"Reply in Thread": "Respondre al fil",
@@ -1639,6 +1641,7 @@
"Show": "Mostrar",
"Show \"What's New\" modal on login": "Veure 'Què hi ha de nou' a l'entrada",
"Show Admin Details in Account Pending Overlay": "Mostrar els detalls de l'administrador a la superposició del compte pendent",
"Show all ({{COUNT}} characters)": "",
"Show Files": "Mostra els arxius",
"Show Formatting Toolbar": "Mostrar la barra de format",
"Show image preview": "Mostrar la previsualització de la imatge",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "Habilitat actualitzada correctament",
"Skills": "Habilitats",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Ometre la memòria cau",
"Skip the cache and re-run the inference. Defaults to False.": "Omet la memòria cai i torna a executar la inferència. Per defecte és Fals.",
"Something went wrong :/": "Quelcom no ha anat bé",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "",
"Rename": "",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "Pagpakita",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "Číslovaný seznam",
"Organize your users": "Uspořádejte své uživatele",
"Other": "Jiné",
"Output": "",
"OUTPUT": "VÝSTUP",
"Output format": "Formát výstupu",
"Output Format": "Formát výstupu",
@@ -1478,6 +1479,7 @@
"Remove image": "Odebrat obrázek",
"Remove Model": "Odebrat model",
"Rename": "Přejmenovat",
"Render Markdown in Previews": "",
"Reorder Models": "Změnit pořadí modelů",
"Reply": "",
"Reply in Thread": "Odpovědět ve vlákně",
@@ -1640,6 +1642,7 @@
"Show": "Zobrazit",
"Show \"What's New\" modal on login": "Zobrazit okno \"Co je nového\" při přihlášení",
"Show Admin Details in Account Pending Overlay": "Zobrazit podrobnosti administrátora v překryvné vrstvě čekajícího účtu",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "Zobrazit panel nástrojů pro formátování",
"Show image preview": "Zobrazit náhled obrázku",
@@ -1667,6 +1670,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Přeskočit mezipaměť",
"Skip the cache and re-run the inference. Defaults to False.": "Přeskočit mezipaměť a znovu spustit inferenci. Výchozí hodnota je False.",
"Something went wrong :/": "Něco se pokazilo :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "Nummereret liste",
"Organize your users": "Organiser dine brugere",
"Other": "Andet",
"Output": "",
"OUTPUT": "OUTPUT",
"Output format": "Outputformat",
"Output Format": "Output format",
@@ -1478,6 +1479,7 @@
"Remove image": "Fjern billede",
"Remove Model": "Fjern model",
"Rename": "Omdøb",
"Render Markdown in Previews": "",
"Reorder Models": "Omarranger modeller",
"Reply": "Svar",
"Reply in Thread": "Svar i tråd",
@@ -1638,6 +1640,7 @@
"Show": "Vis",
"Show \"What's New\" modal on login": "Vis \"Hvad er nyt\" modal ved login",
"Show Admin Details in Account Pending Overlay": "Vis administratordetaljer i overlay for ventende konto",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "Vis formateringsværktøjslinjen",
"Show image preview": "Vis billedforhåndsvisning",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Spring cache over",
"Skip the cache and re-run the inference. Defaults to False.": "Spring cachen over og kør inferensen igen. Standard er falsk.",
"Something went wrong :/": "Noget gik galt :/",
+10 -5
View File
@@ -273,7 +273,7 @@
"Chat Permissions": "Chat-Berechtigungen",
"Chat Tags Auto-Generation": "Automatische Chat-Tag-Generierung",
"Chat unshared successfully.": "Chat-Freigabe erfolgreich aufgehoben",
"chats": "",
"chats": "Chats",
"Chats": "Chats",
"Check Again": "Erneut prüfen",
"Check for updates": "Nach Updates suchen",
@@ -1342,6 +1342,7 @@
"Ordered List": "Nummerierte Liste",
"Organize your users": "Organisieren Sie Ihre Benutzer",
"Other": "Andere",
"Output": "",
"OUTPUT": "AUSGABE",
"Output format": "Ausgabeformat",
"Output Format": "Ausgabeformat",
@@ -1478,6 +1479,7 @@
"Remove image": "Bild entfernen",
"Remove Model": "Modell entfernen",
"Rename": "Umbenennen",
"Render Markdown in Previews": "",
"Reorder Models": "Modelle neu anordnen",
"Reply": "Antworten",
"Reply in Thread": "Im Thread antworten",
@@ -1638,6 +1640,7 @@
"Show": "Anzeigen",
"Show \"What's New\" modal on login": "\"Was gibt's Neues\"-Fenster beim Anmelden anzeigen",
"Show Admin Details in Account Pending Overlay": "Admin-Details im 'Konto ausstehend'-Overlay anzeigen",
"Show all ({{COUNT}} characters)": "",
"Show Files": "Dateien anzeigen",
"Show Formatting Toolbar": "Formatierungsleiste anzeigen",
"Show image preview": "Bildvorschau anzeigen",
@@ -1654,7 +1657,7 @@
"Sign up to {{WEBUI_NAME}}": "Bei {{WEBUI_NAME}} registrieren",
"Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "Verbessert die Genauigkeit erheblich, indem ein LLM zur Optimierung von Tabellen, Formularen, mathematischen Formeln und Layout-Erkennung genutzt wird. Erhöht die Latenz. Standardmäßig deaktiviert.",
"Signing in to {{WEBUI_NAME}}": "Anmeldung bei {{WEBUI_NAME}}...",
"Single": "",
"Single": "Einzeln",
"Sink List": "Sink-Liste",
"sk-1234": "sk-1234",
"Skill created successfully": "Skill erfolgreich erstellt",
@@ -1664,7 +1667,9 @@
"Skill Name": "Skill Name",
"Skill updated successfully": "Skill erfolgreich aktualisiert",
"Skills": "Skills",
"Skills Access": "",
"Skills Access": "Skills Zugang",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Cache überspringen",
"Skip the cache and re-run the inference. Defaults to False.": "Cache überspringen und die Inferenz erneut ausführen. Standardmäßig deaktiviert.",
"Something went wrong :/": "Etwas ist schiefgelaufen :/",
@@ -1818,7 +1823,7 @@
"Toggle whether current connection is active.": "Umschalten, ob die aktuelle Verbindung aktiv ist.",
"Token": "Token",
"Token counts are estimates and may not reflect actual API usage": "Token-Anzahlen sind Schätzwerte und entsprechen möglicherweise nicht der tatsächlichen API-Nutzung.",
"tokens": "",
"tokens": "Token",
"Tokens": "Token",
"Too verbose": "Zu ausführlich",
"Tool created successfully": "Werkzeug erfolgreich erstellt",
@@ -1892,7 +1897,7 @@
"URL is required": "URL ist erforderlich",
"URL Mode": "URL-Modus",
"Usage": "Nutzung",
"Use": "",
"Use": "Nutze",
"Use '#' in the prompt input to load and include your knowledge.": "Verwenden Sie '#' in der Prompt-Eingabe, um Ihr Wissen zu laden und einzubeziehen.",
"Use /v1/chat/completions endpoint instead of /v1/audio/transcriptions for potentially better accuracy.": "Verwenden Sie den Endpunkt /v1/chat/completions statt /v1/audio/transcriptions für potenziell bessere Genauigkeit.",
"Use Chat Completions API": "Chat Completions API verwenden",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "",
"Rename": "",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "Show much show",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Οργανώστε τους χρήστες σας",
"Other": "Άλλο",
"Output": "",
"OUTPUT": "ΕΞΟΔΟΣ",
"Output format": "Μορφή εξόδου",
"Output Format": "Μορφή Εξόδου",
@@ -1478,6 +1479,7 @@
"Remove image": "Αφαίρεση εικόνας",
"Remove Model": "Αφαίρεση Μοντέλου",
"Rename": "Μετονομασία",
"Render Markdown in Previews": "",
"Reorder Models": "Επαναταξινόμηση Μοντέλων",
"Reply": "Απάντηση",
"Reply in Thread": "Απάντηση στο Νήμα Συζήτησης",
@@ -1638,6 +1640,7 @@
"Show": "Εμφάνιση",
"Show \"What's New\" modal on login": "Εμφάνιση του παράθυρου \"Τι νέο υπάρχει\" κατά την είσοδο",
"Show Admin Details in Account Pending Overlay": "Εμφάνιση Λεπτομερειών Διαχειριστή στο Υπέρθεση Εκκρεμής Λογαριασμού",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Organise your users",
"Other": "",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "",
"Rename": "",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "",
"Rename": "",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
+135 -130
View File
@@ -35,7 +35,7 @@
"Accept Autocomplete Generation\nJump to Prompt Variable": "Aceptar Generar Autocompletado\nIr a la Configuración de este Indicador",
"Access": "Acceso",
"Access Control": "Control de Acceso",
"Access List": "",
"Access List": "Lista de Acceso",
"Accessible to all users": "Accesible para todos los usuarios",
"Account": "Cuenta",
"Account Activation Pending": "Activación de cuenta Pendiente",
@@ -53,8 +53,8 @@
"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 a tag...": "",
"Add Access": "",
"Add a tag...": "Añadir una etiqueta...",
"Add Access": "Añador Acceso",
"Add Arena Model": "Añadir modelo a la Arena",
"Add Connection": "Añadir Conexión",
"Add Content": "Añadir Contenido",
@@ -63,13 +63,13 @@
"Add Custom Prompt": "Añadir Indicador Personalizado",
"Add Details": "Añadir Detalles",
"Add Files": "Añadir Archivos",
"Add Image": "",
"Add Image": "Añadir Imagen",
"Add Member": "Añadir Miembro",
"Add Members": "Añadir Miembros",
"Add Memory": "Añadir Memoria",
"Add Model": "Añadir Modelo",
"Add Reaction": "Añadir Reacción",
"Add tag": "",
"Add tag": "Añadir Etiqueta",
"Add Tag": "Añadir etiqueta",
"Add text content": "Añade contenido de texto",
"Add User": "Añadir Usuario",
@@ -94,7 +94,7 @@
"All": "Todos",
"All chats have been unarchived.": "Todos los chats han sido desarchivados",
"All models deleted successfully": "Todos los modelos borrados correctamente",
"All Users": "",
"All Users": "Todos los Usuarios",
"Allow Call": "Permitir Llamada",
"Allow Chat Controls": "Permitir Controles del Chat",
"Allow Chat Delete": "Permitir Borrar Chat",
@@ -145,7 +145,7 @@
"API Keys": "Claves AI",
"API Mode": "Modo de API",
"API Timeout": "API Timeout",
"API Type": "",
"API Type": "Tipo de API",
"API Version": "Versión API",
"API Version is required": "La Versión API es requerida",
"Application DN": "Aplicacion DN",
@@ -153,18 +153,18 @@
"applies to all users with the \"user\" role": "se aplica a todos los usuarios con el rol \"user\" ",
"April": "Abril",
"Archive": "Archivar",
"Archive All": "",
"Archive All": "Arcbhivar Todos",
"Archive All Chats": "Archivar Todos los Chats",
"Archived Chats": "Chats archivados",
"archived-chat-export": "exportar chats archivados",
"Are you sure you want to archive all chats? This action cannot be undone.": "",
"Are you sure you want to clear all memories? This action cannot be undone.": "¿Segur@ de que quieres borrar todas las memorias? (¡esta acción NO se puede deshacer!)",
"Are you sure you want to delete \"{{NAME}}\"?": "¿Segur@ de que quieres eliminar \"{{NAME}}\"?",
"Are you sure you want to delete all chats? This action cannot be undone.": "",
"Are you sure you want to delete this channel?": "¿Segur@ de que quieres eliminar este canal?",
"Are you sure you want to delete this message?": "¿Segur@ de que quieres eliminar este mensaje? ",
"Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "",
"Are you sure you want to unarchive all archived chats?": "¿Segur@ de que quieres desarchivar todos los chats archivados?",
"Are you sure you want to archive all chats? This action cannot be undone.": "¿Seguro que quieres archivar todos los chats? Esta acción no se puede deshacer.",
"Are you sure you want to clear all memories? This action cannot be undone.": "¿Seguro de que quieres borrar todas las memorias? (¡esta acción NO se puede deshacer!)",
"Are you sure you want to delete \"{{NAME}}\"?": "¿Seguro de que quieres eliminar \"{{NAME}}\"?",
"Are you sure you want to delete all chats? This action cannot be undone.": "¿Seguro que quieres borrar todos los chats? 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 delete this version? Child versions will be relinked to this version's parent.": "¿Seguro que desea eliminar esta versión? Las versiones secundarias se vincularán a la versión principal de esta.",
"Are you sure you want to unarchive all archived chats?": "¿Seguro de que quieres desarchivar todos los chats archivados?",
"Arena Models": "Arena de Modelos",
"Artifacts": "Artefactos",
"Asc": "Asc",
@@ -224,7 +224,7 @@
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Impulsando o penalizando tokens específicos para respuestas restringidas. Los valores de sesgo se limitarán entre -100 y 100 (inclusive). (Por defecto: ninguno)",
"Brave": "Brave",
"Brave Search API Key": "Clave API de Brave Search",
"Browse and query knowledge bases": "",
"Browse and query knowledge bases": "Explorar y consultar bases de conocimiento",
"Builtin Tools": "Herramientas Integradas",
"Bullet List": "Lista de Viñetas",
"Button ID": "ID del Botón",
@@ -241,7 +241,7 @@
"Camera": "Cámara",
"Cancel": "Cancelar",
"Cannot create an empty note.": "No se puede crear una nota vacía.",
"Cannot delete the production version": "",
"Cannot delete the production version": "No se puede borrar la versión de producción",
"Capabilities": "Capacidades",
"Capture": "Captura",
"Capture Audio": "Capturar Audio",
@@ -261,19 +261,19 @@
"Chat": "Chat",
"Chat Background Image": "Imágen de Fondo del Chat",
"Chat Bubble UI": "Interfaz del Chat en Burbuja",
"Chat Completions": "",
"Chat Completions": "Completación del Chat",
"Chat Controls": "Controles del Chat",
"Chat Conversation": "Conversación del Chat",
"Chat direction": "Dirección del Chat",
"Chat exported successfully": "",
"Chat History": "",
"Chat exported successfully": "Chat exportado correctmente",
"Chat History": "Historial del Chat",
"Chat ID": "ID del Chat",
"Chat moved successfully": "Chat movido correctamente",
"Chat Overview": "Vista General del Chat",
"Chat Permissions": "Permisos del Chat",
"Chat Tags Auto-Generation": "AutoGeneración de Etiquetas de Chat",
"Chat unshared successfully.": "",
"chats": "",
"Chat unshared successfully.": "Chat descompartido correctamente",
"chats": "chats",
"Chats": "Chats",
"Check Again": "Verifica de nuevo",
"Check for updates": "Buscar actualizaciones",
@@ -302,7 +302,7 @@
"Click here to upload a workflow.json file.": "Pulsa aquí para subir un archivo 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 usuario para cambiar su rol.",
"Click to copy ID": "",
"Click to copy ID": "Pulsa para copiar ID",
"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",
@@ -338,11 +338,11 @@
"ComfyUI Workflow": "Flujo de Trabajo de ComfyUI",
"ComfyUI Workflow Nodes": "Nodos del Flujo de Trabajo de ComfyUI",
"Comma separated Node Ids (e.g. 1 or 1,2)": "IDs de Nodo separados por comas (ej. 1 o 1,2)",
"command": "",
"command": "comando",
"Command": "Comando",
"Comment": "Comentario",
"Commit Message": "",
"Community Reviews": "",
"Commit Message": "Corregir Mensaje",
"Community Reviews": "Revisiones de la Comunidad",
"Completions": "Cumplimientos",
"Compress Images in Channels": "Comprimir Imágenes en Canales",
"Concurrent Requests": "Número de Solicitudes Concurrentes",
@@ -385,8 +385,8 @@
"Copy Last Response": "Copiar la última Respuesta",
"Copy link": "Copiar Enlace",
"Copy Link": "Copiar enlace",
"Copy Prompt": "",
"Copy Share Link": "",
"Copy Prompt": "Copiar Indicador",
"Copy Share Link": "Copiar Enlace Compartido",
"Copy to clipboard": "Copia a portapapeles",
"Copy URL": "Copiar URL",
"Copying to clipboard was successful!": "¡La copia al portapapeles se ha realizado correctamente!",
@@ -453,13 +453,13 @@
"Default User Role": "Rol predeterminado de los nuevos usuarios",
"Delete": "Borrar",
"Delete a model": "Borrar un modelo",
"Delete All": "",
"Delete All": "Borrar Todo",
"Delete All Chats": "Borrar todos los chats",
"Delete all contents inside this folder": "Borrar todo el contenido de esta carpeta",
"Delete All Models": "Borrar todos los modelos",
"Delete Chat": "Borrar Chat",
"Delete chat?": "¿Borrar el chat?",
"Delete File": "",
"Delete File": "Borrar Fichero",
"Delete folder?": "¿Borrar carpeta?",
"Delete function?": "Borrar la función?",
"Delete Message": "Borrar mensaje",
@@ -467,20 +467,20 @@
"Delete Model": "Borrar Modelo",
"Delete note?": "¿Borrar nota?",
"Delete prompt?": "¿Borrar el indicador?",
"Delete skill?": "",
"Delete skill?": "¿Borrar habilidades?",
"delete this link": "Borrar este enlace",
"Delete tool?": "¿Borrar la herramienta?",
"Delete User": "Borrar Usuario",
"Delete Version": "",
"Delete Version": "Borrar Versión",
"Deleted": "Borrado",
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} Borrado",
"Deleted {{name}}": "{{nombre}} Borrado",
"Deleted User": "Usuario Borrado",
"Deployment names are required for Azure OpenAI": "Azure OpenAI requiere nombres de implementación",
"Desc": "Desc",
"Describe the edit...": "",
"Describe the image...": "",
"Describe what changed...": "",
"Describe the edit...": "Describe la edición...",
"Describe the image...": "Describe la Imagen...",
"Describe what changed...": "Describe lo cambiado...",
"Describe your knowledge base and objectives": "Describe tu Base de Conocimientos y sus objetivos",
"Description": "Descripción",
"Detect Artifacts Automatically": "Detectar Artefactos Automáticamente",
@@ -492,7 +492,7 @@
"Direct Message": "Mensaje Directo",
"Direct Tool Servers": "Servidores de Herramientas Directos",
"Directory selection was cancelled": "La selección de directorio ha sido cancelada",
"Disable All": "",
"Disable All": "Deshabilitar Todo",
"Disable Code Interpreter": "Deshabilitar Interprete de Código",
"Disable Image Extraction": "Deshabilitar Extracción de Imágenes",
"Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "Desabilita la extracción de imágenes del pdf. Si está habilitado Usar LLM las imágenes se capturan automáticamente. Por defecto el valor es Falso (las imágenes se extraen).",
@@ -552,15 +552,15 @@
"e.g. A filter to remove profanity from text": "p.ej. Un filtro para eliminar malas palabras del texto",
"e.g. about the Roman Empire": "p.ej. sobre el imperio romano",
"e.g. alloy, echo, shimmer": "p.ej. aleación, eco, brillo",
"e.g. Code Review Guidelines": "",
"e.g. code-review-guidelines": "",
"e.g. Code Review Guidelines": "p.ej. Directrices de Revisión de Código",
"e.g. code-review-guidelines": "p.ej. directrices-revisión-código",
"e.g. en": "p.ej. es",
"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. pdf, docx, txt": "p.ej. pdf, docx, txt ...",
"e.g. Step-by-step instructions for code reviews": "",
"e.g. Step-by-step instructions for code reviews": "p.ej. Unstruciones paso a paso para revisión de código",
"e.g. Tell me a fun fact": "p.ej. Dime algo divertido",
"e.g. Tell me a fun fact about the Roman Empire": "p.ej. Dime algo divertido sobre el imperio romano",
"e.g. Tools for performing various operations": "p.ej. Herramientas para realizar diversas operaciones",
@@ -577,7 +577,7 @@
"Edit Image": "Editar Imagen",
"Edit Last Message": "Editar Último Mensaje",
"Edit Memory": "Editar Memoria",
"Edit Prompt": "",
"Edit Prompt": "Editar Indicador",
"Edit User": "Editar Usuario",
"Edit User Group": "Editar Grupo de Usuarios",
"Edit workflow.json content": "Editar el contenido de workflow.json",
@@ -592,15 +592,15 @@
"Embedding Batch Size": "Tamaño del Lote de Incrustación",
"Embedding Model": "Modelo de Incrustación",
"Embedding Model Engine": "Motor del Modelo de Incrustación",
"Enable All": "",
"Enable API Keys": "Activar Claves API",
"Enable All": "Habilitar Todo",
"Enable API Keys": "Habilitar Claves API",
"Enable autocomplete generation for chat messages": "Habilitar generación de autocompletado para mensajes de chat",
"Enable Code Execution": "Habilitar Ejecución de Código",
"Enable Code Interpreter": "Habilitar Interprete de Código",
"Enable Community Sharing": "Habilitar Compartir con la Comunidad",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Habilitar bloqueo de memoria (mlock) para prevenir que los datos del modelo se intercambien fuera de la RAM. Esta opción bloquea el conjunto de páginas de trabajo del modelo en RAM, asegurando que no se intercambiarán fuera a disco. Esto puede ayudar a mantener el rendimiento evitando fallos de página y asegurando un acceso rápido a los datos.",
"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 Queue": "",
"Enable Message Queue": "Habilitar Cola de Mensajes",
"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 Nuevos Usuarios",
@@ -699,7 +699,7 @@
"Enter server host": "Ingresar host del servidor",
"Enter server label": "Ingresar etiqueta del servidor",
"Enter server port": "Ingresar puerto del servidor",
"Enter skill instructions in markdown...": "",
"Enter skill instructions in markdown...": "Ingresar instrucciones de la habilidad en markdown...",
"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",
@@ -722,8 +722,8 @@
"Enter Yacy Password": "Ingresar Contraseña de Yacy",
"Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Ingresar URL de Yacy (p.ej. http://yacy.ejemplo.com:8090)",
"Enter Yacy Username": "Ingresar Nombre de Usuario de Yacy",
"Enter Yandex Web Search API Key": "",
"Enter Yandex Web Search URL": "",
"Enter Yandex Web Search API Key": "Ingresar API de la Busqueda Web de Yandex",
"Enter Yandex Web Search URL": "Ingresar URL de la Busqueda Wev de Yandex",
"Enter your code here...": "Introduce tu código aquí...",
"Enter your current password": "Ingresa tu contraseña actual",
"Enter Your Email": "Ingresa tu correo electrónico",
@@ -757,7 +757,7 @@
"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 de usuarios en tu licencia. Por favor, contacta con soporte para aumentar el número de accesos.",
"Exclude": "Excluir",
"Execute code": "",
"Execute code": "Ejecuar código",
"Execute code for analysis": "Ejecutar código para análisis",
"Executing **{{NAME}}**...": "Ejecutando **{{NAME}}**...",
"Expand": "Expandir",
@@ -792,7 +792,7 @@
"Failed to copy link": "Fallo al copiar enlace",
"Failed to create API Key.": "Fallo al crear la Clave API.",
"Failed to delete note": "Fallo al eliminar nota",
"Failed to download image": "",
"Failed to download image": "Fallo al descargar imagen",
"Failed to extract content from the file: {{error}}": "Fallo al extraer el contenido del archivo: {{error}}",
"Failed to extract content from the file.": "Fallo al extraer el contenido del archivo.",
"Failed to fetch models": "Fallo al obtener los modelos",
@@ -810,7 +810,7 @@
"Failed to save connections": "Fallo al guardar las conexiones",
"Failed to save conversation": "Fallo al guardar la conversación",
"Failed to save models configuration": "Fallo al guardar la configuración de los modelos",
"Failed to unshare chat.": "",
"Failed to unshare chat.": "Fallo al descompartir chat.",
"Failed to update settings": "Fallo al actualizar los ajustes",
"Failed to update status": "Fallo al actualizar el estado",
"Failed to upload file.": "Fallo al subir el archivo.",
@@ -818,7 +818,7 @@
"Features Permissions": "Permisos de las Características",
"February": "Febrero",
"Feedback": "Opinión",
"Feedback Activity": "",
"Feedback Activity": "Actividad de las Opiniones",
"Feedback deleted successfully": "Opinión eliminada correctamente",
"Feedback Details": "Detalle de la Opinión",
"Feedback History": "Historia de la Opiniones",
@@ -828,7 +828,7 @@
"File added successfully.": "Archivo añadido correctamente.",
"File content updated successfully.": "Contenido del archivo actualizado correctamente.",
"File Context": "Contexto del Archivo",
"File deleted successfully.": "",
"File deleted successfully.": "Archivo borrado correctamente.",
"File Mode": "Modo de Archivo",
"File not found.": "Archivo no encontrado.",
"File removed successfully.": "Archivo eliminado correctamente.",
@@ -836,7 +836,7 @@
"File Upload": "Subir Archivo",
"File uploaded successfully": "Archivo subido correctamente",
"File uploaded!": "¡Archivo subido!",
"Filename": "",
"Filename": "Nombre del Archivo",
"Files": "Archivos",
"Filter": "Filtro",
"Filter is now globally disabled": "El filtro ahora está desactivado globalmente",
@@ -862,7 +862,7 @@
"Follow Up Generation Prompt": "Seguimiento de la Generación del Indicador",
"Follow-Up Auto-Generation": "Seguimiento Auto-Generación",
"Followed instructions perfectly": "Siguió las instrucciones perfectamente",
"for placeholders": "",
"for placeholders": "para marcadores de posición",
"Force OCR": "Forzar OCR",
"Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "Forzar OCR en todas las páginas del PDF. Puede empeorar el resultado en PDFs que ya tengan una buena capa de texto. El valor predeterminado es desactivado (no forzar)",
"Forge new paths": "Forjar nuevos caminos",
@@ -897,13 +897,13 @@
"General": "General",
"Generate": "Generar",
"Generate an image": "Generar una imagen",
"Generate and edit images": "",
"Generate and edit images": "Generar y editar imágenes",
"Generate Message Pair": "Generar Par de Mensajes",
"Generated Image": "Imagen Generada",
"Generated images will appear here": "",
"Generated images will appear here": "Las imágenes generdas aparecerán aquí",
"Generating search query": "Generando consulta de búsqueda",
"Generating...": "Generando",
"Get current time and perform date/time calculations": "",
"Get current time and perform date/time calculations": "Obtener la hora actual y realizar cálculos de fecha y hora",
"Get information on {{name}} in the UI": "Obtener información sobre {{name}} en la IU",
"Get started": "Empezar",
"Get started with {{WEBUI_NAME}}": "Empezar con {{WEBUI_NAME}}",
@@ -934,16 +934,16 @@
"Height": "Altura",
"Hello, {{name}}": "Hola, {{name}}",
"Help": "Ayuda",
"Help the community discover great models": "",
"Help the community discover great models": "Ayuda a la comunidad a descubrir grandes modelos",
"Hex Color": "Color Hex",
"Hex Color - Leave empty for default color": "Color Hex - Deja vacío para el color predeterminado",
"Hidden": "",
"Hidden": "Oculto",
"Hide": "Esconder",
"Hide from Sidebar": "Ocultar Panel Lateral",
"Hide Model": "Ocultar Modelo",
"High": "Alto",
"High Contrast Mode": "Modo Alto Contraste",
"History": "",
"History": "Historial",
"Home": "Inicio",
"Host": "Host",
"How can I help you today?": "¿Cómo puedo ayudarte hoy?",
@@ -955,7 +955,7 @@
"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.": "Aseguro que he leído y entiendo las implicaciones de mi acción. Soy consciente de los riesgos asociados con la ejecución de código arbitrario y he verificado la confiabilidad de la fuente.",
"ID": "ID",
"ID cannot contain \":\" or \"|\" characters": "ID no puede contener los caracteres \":\" o \"|\"",
"ID copied to clipboard": "",
"ID copied to clipboard": "ID copiado al portapapeles",
"iframe Sandbox Allow Forms": "iframe Sandbox Allow Forms",
"iframe Sandbox Allow Same Origin": "iframe Sandbox Allow Same Origin",
"Ignite curiosity": "Encender la curiosidad",
@@ -984,7 +984,7 @@
"Import successful": "Importación realizada correctamente",
"Import Tools": "Importar Herramientas",
"Important Update": "Actualización importante",
"Inactive": "",
"Inactive": "Inactivo",
"Include": "Incluir",
"Include `--api-auth` flag when running stable-diffusion-webui": "Incluir el señalizador `--api-auth` al ejecutar stable-diffusion-webui",
"Include `--api` flag when running stable-diffusion-webui": "Incluir el señalizador `--api` al ejecutar stable-diffusion-webui",
@@ -1066,15 +1066,15 @@
"Learn More": "Saber Más",
"Learn more about OpenAPI tool servers.": "Saber más sobre los servidores de herramientas OpenAPI",
"Learn more about Voxtral transcription.": "Saber más sobre la transcripción con Voxtral",
"Leave a public review for {{modelName}}": "",
"Leave empty for no compression": "Lejar vacío para no compresión",
"Leave a public review for {{modelName}}": "Dejar revisión pública de {{modelName}}",
"Leave empty for no compression": "Dejar vacío para no compresión",
"Leave empty for unlimited": "Dejar vacío para ilimitado",
"Leave empty to include all models from \"{{url}}\" endpoint": "Dejar vacío para incluir todos los modelos desde el endpoint \"{{url}}\"",
"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Dejar vacío para incluir todos los modelos desde el endpoint \"{{url}}/api/tags\"",
"Leave empty to include all models from \"{{url}}/models\" endpoint": "Dejar vacío para incluir todos los modelos desde el endpoint \"{{url}}/models\"",
"Leave empty to include all models or select specific models": "Dejar vacío para incluir todos los modelos o Seleccionar modelos específicos",
"Leave empty to use first admin user": "Dejar vacío para utilizar el primer usuario administrador",
"Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "",
"Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "Déjelo vacío para usar la configuración predeterminada o ingresa un json válido (consulta https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)",
"Leave empty to use the default model (voxtral-mini-latest).": "Dejar vacío para usar el modo predeterminado (voxtral-mini-latest).",
"Leave empty to use the default prompt, or enter a custom prompt": "Dejar vacío para usar el indicador predeterminado, o Ingresar un indicador personalizado",
"Leave model field empty to use the default model.": "Dejar vacío el campo modelo para usar el modelo predeterminado.",
@@ -1086,7 +1086,7 @@
"Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limitar consultas de búsqueda simultáneas. 0 = ilimitado (predeterminado). Establécerlo en 1 para ejecución secuencial (recomendado para API con límites de velocidad estrictos, como la versión gratuita de Brave).",
"List": "Lista",
"Listening...": "Escuchando...",
"Live": "",
"Live": "En Directo",
"Llama.cpp": "Llama.cpp",
"LLMs can make mistakes. Verify important information.": "Los LLMs pueden cometer errores. Verifica la información importante.",
"Loader": "Cargador",
@@ -1105,7 +1105,7 @@
"Male": "Hombre",
"Manage": "Gestionar",
"Manage Direct Connections": "Gestionar Conexiones Directas",
"Manage Files": "",
"Manage Files": "Gestionar Archivos",
"Manage Models": "Gestionar Modelos",
"Manage Ollama": "Gestionar Ollama",
"Manage Ollama API Connections": "Gestionar Conexiones API de Ollama",
@@ -1128,7 +1128,7 @@
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "El soporte de MCP es experimental y su especificación cambia con frecuencia, lo que puede generar incompatibilidades. El equipo de Open WebUI mantiene directamente la compatibilidad con la especificación OpenAPI, lo que la convierte en la opción más fiable para la compatibilidad.",
"Medium": "Medio",
"Member removed successfully": "Miembro removido correctamente",
"members": "",
"members": "miembros",
"Members": "Miembros",
"Members added successfully": "Miembros añadidos correctamente",
"Memories": "Memorias",
@@ -1142,10 +1142,10 @@
"Merged Response": "Respuesta combinada",
"Message": "Mensaje",
"Message counts and response timestamps": "Recuento de mensajes y marcas de tiempo de la respuesta",
"Message counts are based on assistant responses.": "",
"Message counts are based on assistant responses.": "El recuento de mensajes está basado en las respuestas del asistente",
"Message rating should be enabled to use this feature": "Para usar esta función debe estar habilitada la calificación de mensajes",
"messages": "",
"Messages": "",
"messages": "mensajes",
"Messages": "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. Los usuarios con la URL del enlace podrán ver el chat compartido.",
"Microsoft OneDrive": "Microsoft OneDrive",
"Microsoft OneDrive (personal)": "Microsoft OneDrive (personal)",
@@ -1178,14 +1178,14 @@
"Model name already exists, please choose a different one": "Ese nombre de modelo ya existe, por favor elige otro diferente",
"Model Name is required.": "El Nombre de Modelo es requerido",
"Model names and usage frequency": "Nombres de modelos y frecuencia de uso",
"Model not found": "",
"Model not found": "Modelo no encontrado",
"Model not selected": "Modelo no seleccionado",
"Model Params": "Paráms Modelo",
"Model Permissions": "Permisos Modelo",
"Model responses or outputs": "Respuestas del modelo o salidas",
"Model unloaded successfully": "Modelo descargado correctamente",
"Model updated successfully": "Modelo actualizado correctamente",
"Model Usage": "",
"Model Usage": "Uso del Modelo",
"Model(s) do not support file upload": "Modelo/s no soportan subida de archivos",
"Modelfile Content": "Contenido del Modelfile",
"Models": "Modelos",
@@ -1198,7 +1198,7 @@
"Mojeek Search API Key": "Clave API de Mojeek Search",
"More": "Más",
"More Concise": "Más Conciso",
"More options": "",
"More options": "Más Opciones",
"More Options": "Más Opciones",
"Move": "Mover",
"Name": "Nombre",
@@ -1215,13 +1215,13 @@
"New Note": "Nueva Nota",
"New Password": "Nueva Contraseña",
"New Prompt": "Nuevo Indicador",
"New Skill": "",
"New Skill": "Nueva Habilidad",
"New Temporary Chat": "Nuevo Chat Temporal",
"New Tool": "Nueva Herramienta",
"New Webhook": "Nuevo Webhook",
"new-channel": "nuevo-canal",
"Next message": "Siguiente mensaje",
"No access grants. Private to you.": "",
"No access grants. Private to you.": "Sin acceso concedido. Privado para tí.",
"No activity data": "Sin datos de actividad",
"No authentication": "Sin Autentificación",
"No chats found": "No se encontró ningún chat",
@@ -1231,16 +1231,16 @@
"No content found": "No se encontró contenido",
"No content to speak": "No hay contenido para hablar",
"No conversation to save": "No hay conversación para guardar",
"No data": "",
"No data found": "",
"No data": "Sin datos",
"No data found": "No se encontró ningún dato",
"No distance available": "No hay distancia disponible",
"No expiration can pose security risks.": "No expiración puede poner la seguridad en riesgo.",
"No feedback found": "No se encontró ninguna opinión",
"No file selected": "No se seleccionó archivo",
"No files found": "",
"No files found": "No se encontraron archivos",
"No files in this knowledge base.": "Ningún archivo en esta base de conocimiento.",
"No functions found": "No se encontraron funciones",
"No history available": "",
"No history available": "No hay historial disponible",
"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",
"No knowledge bases found.": "No se encontraron bases de conocimiento",
@@ -1257,7 +1257,7 @@
"No results": "No se encontraron resultados",
"No results found": "No se encontraron resultados",
"No search query generated": "No se generó ninguna consulta de búsqueda",
"No skills found": "",
"No skills found": "No se encontraron habilidades",
"No source available": "No hay fuente disponible",
"No sources found": "No se han encontrado fuentes",
"No suggestion prompts": "Sin prompts sugeridos",
@@ -1316,7 +1316,7 @@
"Open modal to configure connection": "Abrir modal para configurar la conexión",
"Open Modal To Manage Floating Quick Actions": "Abrir Modal para Gestionar Acciones Rápidas Flotantes",
"Open Modal To Manage Image Compression": "Abrir Modal para Gestionar Compresión de Imagen",
"Open Model Selector": "",
"Open Model Selector": "Avrir Selector de Modelos",
"Open Settings": "Abrir Configuración",
"Open Sidebar": "Abrir Barra Lateral",
"Open User Profile Menu": "Abrir Menu de Perfiles de Usuario",
@@ -1336,19 +1336,20 @@
"OpenAPI": "OpenAPI",
"OpenAPI Spec": "Especif. OpenAPI",
"openapi.json URL or Path": "URL o Ruta a openapi.json",
"optional": "",
"optional": "opcional",
"Optional": "Opcional",
"or": "o",
"Ordered List": "Lista Ordenada",
"Organize your users": "Organiza tus usuarios",
"Other": "Otro",
"Output": "",
"OUTPUT": "SALIDA",
"Output format": "Formato de salida",
"Output Format": "Formato de Salida",
"Overview": "Vista General",
"page": "página",
"Page": "",
"Page mode creates one document per page. Single mode combines all pages into one document for better chunking across page boundaries.": "",
"Page": "Página",
"Page mode creates one document per page. Single mode combines all pages into one document for better chunking across page boundaries.": "El modo Página crea un documento por página. El modo Individual combina todas las páginas en un solo documento para una mejor segmentación entre páginas.",
"Paginate": "Paginar",
"Parameters": "Parámetros",
"Parent message not found": "Mensaje padre no encontrado",
@@ -1358,7 +1359,7 @@
"Paste Large Text as File": "Pegar el Texto Largo como Archivo",
"PDF document (.pdf)": "Documento PDF (.pdf)",
"PDF Extract Images (OCR)": "Extraer imágenes del PDF (OCR)",
"PDF Loader Mode": "",
"PDF Loader Mode": "Modo de Carga del PDF",
"pending": "pendiente",
"Pending": "Pendiente",
"Pending User Overlay Content": "Contenido de la SobreCapa Usuario Pendiente",
@@ -1418,13 +1419,13 @@
"Previous message": "Mensaje anterior",
"Private": "Privado",
"Private conversation between selected users": "Conversación privada entre l@s usuari@s seleccionados",
"Production version updated": "",
"Production version updated": "Versión de Producción actualizada",
"Profile": "Perfil",
"Prompt": "Indicador",
"Prompt Autocompletion": "Autocompletado del Indicador",
"Prompt Content": "Contenido del Indicador",
"Prompt created successfully": "Indicador creado exitosamente",
"Prompt Name": "",
"Prompt Name": "Nombre del Indicador",
"Prompt updated successfully": "Indicador actualizado correctamente",
"Prompts": "Indicadores",
"Prompts Access": "Acceso a Indicadores",
@@ -1478,6 +1479,7 @@
"Remove image": "Eliminar imagen",
"Remove Model": "Eliminar Modelo",
"Rename": "Renombrar",
"Render Markdown in Previews": "",
"Reorder Models": "Reordenar Modelos",
"Reply": "Responder",
"Reply in Thread": "Responder en Hilo",
@@ -1496,7 +1498,7 @@
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Las notificaciones de respuesta no pueden activarse ya que los permisos del sitio web han sido denegados. Por favor, comprueba la configuración de tu navegador para otorgar el permiso necesario.",
"Response splitting": "Particionado de Respuesta",
"Response Watermark": "Marca de Agua en Respuesta",
"Responses": "",
"Responses": "Respuestas",
"Result": "Resultado",
"RESULT": "Resultado",
"Retrieval": "Recuperación",
@@ -1524,13 +1526,13 @@
"Search": "Buscar",
"Search a model": "Buscar un Modelo",
"Search all emojis": "Buscar todos los emojis",
"Search and manage user memories": "",
"Search and view user chat history": "",
"Search and manage user memories": "Buscar y gestionar memorias del usuario",
"Search and view user chat history": "Buscr y ver historial de los chat del usuario",
"Search Base": "Busqueda Base",
"Search channels and channel messages": "",
"Search channels and channel messages": "Buscar canales y mensajes del canal",
"Search Chats": "Buscar Chats",
"Search Collection": "Buscar Colección",
"Search Files": "",
"Search Files": "Buscar archivos",
"Search Filters": "Buscar Filtros",
"search for archived chats": "buscar chats archivados",
"search for folders": "buscar carpetas",
@@ -1545,11 +1547,11 @@
"Search options": "Opciones de Búsqueda",
"Search Prompts": "Buscar Indicadores",
"Search Result Count": "Número de resultados de la búsqueda",
"Search Skills": "",
"Search Skills": "Buscar Habilidades",
"Search the internet": "Buscar en internet",
"Search the web and fetch URLs": "",
"Search the web and fetch URLs": "Buscar en la web y obtener URLs",
"Search Tools": "Buscar Herramientas",
"Search, view, and manage user notes": "",
"Search, view, and manage user notes": "Buscar, ver y gestionar notas del usuario",
"SearchApi API Key": "Clave API de SearchApi",
"SearchApi Engine": "Motor SearchApi",
"Searched {{count}} sites": "{{count}} sitios buscados",
@@ -1584,7 +1586,7 @@
"Select an embedding model engine": "Seleccionar un motor de modelos de incrustación",
"Select an engine": "Seleccionar un motor",
"Select an Ollama instance": "Seleccionar una instancia de Ollama",
"Select an option": "",
"Select an option": "Seleccionar una opción",
"Select an output format": "Seleccionar un formato de salida",
"Select dtype": "Seleccionar dtype",
"Select Engine": "Seleccionar Motor",
@@ -1598,7 +1600,7 @@
"Send": "Enviar",
"Send a Message": "Enviar un Mensaje",
"Send message": "Enviar Mensaje",
"Send now": "",
"Send now": "Enviar ahora",
"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Envia en la solicitud de transmisión la opción: `{ include_usage: true }`.\nSi se activa, los proveedores que soporten esta función devolverán en la respuesta información de uso de los token.",
"September": "Septiembre",
"SerpApi API Key": "Clave API de SerpApi",
@@ -1609,7 +1611,7 @@
"Server connection verified": "Conexión al servidor verificada",
"Session": "Sesión",
"Set as default": "Establecer como Predeterminado",
"Set as Production": "",
"Set as Production": "Establecer como Producción",
"Set embedding model": "Establecer Modelo de Incrustación",
"Set embedding model (e.g. {{model}})": "Establecer Modelo para Incrustación (p.ej. {{model}})",
"Set reranking model (e.g. {{model}})": "Establecer Modelo para Reclasificación (p.ej. {{model}})",
@@ -1630,15 +1632,16 @@
"Settings saved successfully!": "¡Ajustes guardados correctamente!",
"Share": "Compartir",
"Share Chat": "Compartir Chat",
"Share link copied to clipboard.": "",
"Share link copied to clipboard.": "Enlace Compartido copiado al portapapeles",
"Share to Open WebUI Community": "Compartir con la Comunidad Open-WebUI",
"Share your background and interests": "Compartir tus antecedentes e intereses",
"Shared Chats": "",
"Shared Chats": "Chats Compartidos",
"Shared with you": "Compartido contigo",
"Sharing Permissions": "Permisos al Compartir",
"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 all ({{COUNT}} characters)": "",
"Show Files": "Mostrar Archivos",
"Show Formatting Toolbar": "Mostrar barra de herramientas de Formateo",
"Show image preview": "Mostrar previsualización de imagen",
@@ -1646,7 +1649,7 @@
"Show Shortcuts": "Mostrar Atajos de Teclado",
"Show your support!": "¡Muestra tu apoyo!",
"Showcased creativity": "Creatividad exhibida",
"Showing all messages (user + assistant) per user.": "",
"Showing all messages (user + assistant) per user.": "Mostrando todos los mensajes (usuario y asistente) del usuario.",
"Sign in": "Iniciar Sesión",
"Sign in to {{WEBUI_NAME}}": "Iniciar Sesión en {{WEBUI_NAME}}",
"Sign in to {{WEBUI_NAME}} with LDAP": "Iniciar Sesión en {{WEBUI_NAME}} con LDAP",
@@ -1655,17 +1658,19 @@
"Sign up to {{WEBUI_NAME}}": "Crear una Cuenta en {{WEBUI_NAME}}",
"Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "Mejora significativamente la precisión al usar un LLM para optimizar tablas, formularios, cálculos en línea y la detección de diseño. Aumentará la latencia. El valor predeterminado es Falso.",
"Signing in to {{WEBUI_NAME}}": "Iniciando Sesión en {{WEBUI_NAME}}",
"Single": "",
"Single": "Individual",
"Sink List": "Plegar Lista",
"sk-1234": "sk-1234",
"Skill created successfully": "",
"Skill deleted successfully": "",
"Skill Description": "",
"Skill ID": "",
"Skill Name": "",
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skill created successfully": "Habilidad creada correctamente",
"Skill deleted successfully": "Habilidad borrada correctamente",
"Skill Description": "Descripción de la Habilidad",
"Skill ID": "ID de la Habilidad",
"Skill Name": "Nombre de la Habilidad",
"Skill updated successfully": "Habilidad actualiada correctamente",
"Skills": "Habilidades",
"Skills Access": "Acceso a Habilidades",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Evitar Caché",
"Skip the cache and re-run the inference. Defaults to False.": "Evitar caché y reiniciar la interfaz. Valor predeterminado Falso",
"Something went wrong :/": "Algo ha ido mal :/",
@@ -1772,7 +1777,7 @@
"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Este canal fue creado el {{createdAt}}. Este es el comienzo del canal {{channelName}}.",
"This chat won't appear in history and your messages will not be saved.": "Este chat no aparecerá en el historial y los mensajes no se guardarán.",
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Esto garantiza que sus valiosas conversaciones se guardan de forma segura en tu base de datos del servidor trasero (backend). ¡Gracias!",
"This feature is currently experimental and may not work as expected.": "",
"This feature is currently experimental and may not work as expected.": "Acualmente esta característica es experimental y puede no funcionar como se espera.",
"This feature is experimental and may be modified or discontinued without notice.": "Esta característica es experimental y podría ser modificada o discontinuada sin previo aviso.",
"This is a default user permission and will remain enabled.": "Este es un permiso predeterminado y se mantentrá activo ",
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Esta es una característica experimental, por lo que puede no funcionar como se esperaba y está sujeta a cambios en cualquier momento.",
@@ -1793,11 +1798,11 @@
"Thought for {{DURATION}} seconds": "Pensando durante {{DURATION}} segundos",
"Thought for less than a second": "Pensando durante menos de un segundo",
"Thread": "Hilo",
"Thumbs up/down ratings from users on model responses": "",
"Thumbs up/down ratings from users on model responses": "Calificación (pulgares arriba/abajo) de los usuarios en las respuestas del modelo",
"Tika": "Tika",
"Tika Server URL required.": "URL del Servidor Tika necesaria",
"Tiktoken": "Tiktoken",
"Time & Calculation": "",
"Time & Calculation": "Tiempo y Cálculo",
"Timeout": "TimeOut",
"Title": "Título",
"Title Auto-Generation": "AutoGeneración de Títulos",
@@ -1810,7 +1815,7 @@
"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 select skills here, add them to the \"Skills\" workspace first.": "",
"To select skills here, add them to the \"Skills\" workspace first.": "Para seleccionar habilidades aquí, primero añadelas a \"Habilidades\" en el áreas de trabajo.",
"To select toolkits here, add them to the \"Tools\" workspace first.": "Para seleccionar herramientas aquí, primero añadelas a \"Herramientas\" en el área de trabajo.",
"Toast notifications for new updates": "Notificaciones emergentes para nuevas actualizaciones",
"Today": "Hoy",
@@ -1818,9 +1823,9 @@
"Toggle Sidebar": "Des/Plegar la Barra Lateral",
"Toggle whether current connection is active.": "Alternar si la conexión actual está activa",
"Token": "Token",
"Token counts are estimates and may not reflect actual API usage": "",
"tokens": "",
"Tokens": "",
"Token counts are estimates and may not reflect actual API usage": "El recuento de tokens es estimado y puede diferir del uso real de la API",
"tokens": "tokens",
"Tokens": "Tokens",
"Too verbose": "Demasiado detallado",
"Tool created successfully": "Herramienta creada correctamente",
"Tool deleted successfully": "Herramienta eliminada correctamente",
@@ -1864,7 +1869,7 @@
"Unlock mysteries": "Desbloquear misterios",
"Unpin": "Desfijar",
"Unravel secrets": "Desentrañar secretos",
"Unshare Chat": "",
"Unshare Chat": "Descompartir Chat",
"Unsupported file type.": "Tipo de archivo no soportado",
"Untagged": "Sin Etiqueta",
"Untitled": "Sin Título",
@@ -1893,7 +1898,7 @@
"URL is required": "La URL es requerida",
"URL Mode": "Modo URL",
"Usage": "Uso",
"Use": "",
"Use": "Usar",
"Use '#' in the prompt input to load and include your knowledge.": "Utilizar '#' en el indicador para cargar e incluir tu conocimiento.",
"Use /v1/chat/completions endpoint instead of /v1/audio/transcriptions for potentially better accuracy.": "Usar el endpoint /v1/chat/completions en vez de /v1/audio/transcriptions para una (posible) mayor precisión.",
"Use Chat Completions API": "Usar Chat Completions",
@@ -1903,7 +1908,7 @@
"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",
"user": "usuario",
"User": "Usuario",
"User Activity": "",
"User Activity": "Actividad del Usuario",
"User Groups": "Grupos de Usuarios",
"User location successfully retrieved.": "Ubicación de usuario obtenida correctamente.",
"User menu": "Menu de Usuario",
@@ -1928,11 +1933,11 @@
"Verify SSL Certificate": "Verificar Certificado SSL",
"Version": "Versión",
"Version {{selectedVersion}} of {{totalVersions}}": "Versión {{selectedVersion}} de {{totalVersions}}",
"Version deleted": "",
"Version deleted": "Versión eliminada",
"View Replies": "Ver Respuestas",
"View Result from **{{NAME}}**": "Ver Resultado desde **{{NAME}}**",
"Visibility": "Visibilidad",
"Visible": "",
"Visible": "Visible",
"Visible to all users": "Visible para todos los usuarios",
"Vision": "Visión",
"Voice": "Voz",
@@ -1988,9 +1993,9 @@
"Yacy Username": "Usuario de Yacy",
"Yahoo": "Yahoo",
"Yandex": "Yandex",
"Yandex Web Search API Key": "",
"Yandex Web Search config": "",
"Yandex Web Search URL": "",
"Yandex Web Search API Key": "Clave API de la Búsqueda Web de Yandex",
"Yandex Web Search config": "Confoguración de la Búsqueda Web de Yantex",
"Yandex Web Search URL": "URL de la Búsqueda Web de Yandex",
"Yesterday": "Ayer",
"Yesterday at {{LOCALIZED_TIME}}": "Ayer a las {{LOCALIZED_TIME}}",
"You": "Tu",
@@ -2000,15 +2005,15 @@
"You cannot upload an empty file.": "No puedes subir un archivo vacío.",
"You do not have permission to edit this model": "No tienes permiso para editar este modelo",
"You do not have permission to edit this prompt.": "No tienes permiso para editar este indicador",
"You do not have permission to edit this skill.": "",
"You do not have permission to edit this tool": "",
"You do not have permission to make this public": "",
"You do not have permission to edit this skill.": "No tienes permiso para editar esta habilidad",
"You do not have permission to edit this tool": "No tienes permiso para editar esta herramienta",
"You do not have permission to make this public": "No tienes permiso para hacer público esto",
"You do not have permission to send messages in this channel.": "No tienes permiso para enviar mensajes en este canal",
"You do not have permission to send messages in this thread.": "No tienes permiso para enviar mensajes en este hilo",
"You do not have permission to upload files to this knowledge base.": "No tienes permiso para subir archivos a esta base de conocimiento.",
"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 no shared conversations.": "",
"You have no shared conversations.": "No tienes conversaciones compartidas",
"You have shared this chat": "Has compartido esta conversación",
"You're a helpful assistant.": "Eres un asistente atento, amable y servicial.",
"You're now logged in.": "Has iniciado sesión.",
@@ -1342,6 +1342,7 @@
"Ordered List": "Ordered List",
"Organize your users": "Korraldage oma kasutajad",
"Other": "Muu",
"Output": "",
"OUTPUT": "VÄLJUND",
"Output format": "Väljundformaat",
"Output Format": "Output Format",
@@ -1478,6 +1479,7 @@
"Remove image": "Eemalda pilt",
"Remove Model": "Eemalda mudel",
"Rename": "Nimeta ümber",
"Render Markdown in Previews": "",
"Reorder Models": "Muuda mudelite järjekorda",
"Reply": "Reply",
"Reply in Thread": "Vasta lõimes",
@@ -1638,6 +1640,7 @@
"Show": "Näita",
"Show \"What's New\" modal on login": "Näita \"Mis on uut\" modaalakent sisselogimisel",
"Show Admin Details in Account Pending Overlay": "Näita administraatori üksikasju konto ootel kattekihil",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "Kuva Formatting Toolbar",
"Show image preview": "Kuva pilt preview",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Skip Vahemälu",
"Skip the cache and re-run the inference. Defaults to False.": "Skip the vahemälu ja re-run the inference. Defaults kuni False.",
"Something went wrong :/": "Something went wrong :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Antolatu zure erabiltzaileak",
"Other": "Bestelakoa",
"Output": "",
"OUTPUT": "IRTEERA",
"Output format": "Irteera formatua",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Kendu modeloa",
"Rename": "Berrizendatu",
"Render Markdown in Previews": "",
"Reorder Models": "Berrantolatu modeloak",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "Erakutsi",
"Show \"What's New\" modal on login": "Erakutsi \"Berritasunak\" modala saioa hastean",
"Show Admin Details in Account Pending Overlay": "Erakutsi administratzaile xehetasunak kontu zain geruzan",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "لیست شماره\u200cگذاری شده",
"Organize your users": "کاربران خود را سازماندهی کنید",
"Other": "دیگر",
"Output": "",
"OUTPUT": "خروجی",
"Output format": "قالب خروجی",
"Output Format": "قالب خروجی",
@@ -1478,6 +1479,7 @@
"Remove image": "حذف تصویر",
"Remove Model": "حذف مدل",
"Rename": "تغییر نام",
"Render Markdown in Previews": "",
"Reorder Models": "ترتیب مجدد مدل\u200cها",
"Reply": "پاسخ",
"Reply in Thread": "پاسخ در رشته",
@@ -1638,6 +1640,7 @@
"Show": "نمایش",
"Show \"What's New\" modal on login": "نمایش مودال \"موارد جدید\" هنگام ورود",
"Show Admin Details in Account Pending Overlay": "نمایش جزئیات مدیر در پوشش حساب در انتظار",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "نمایش نوار ابزار قالب\u200cبندی",
"Show image preview": "نمایش پیش\u200cنمایش تصویر",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "رد کردن کش",
"Skip the cache and re-run the inference. Defaults to False.": "کش را رد کرده و استنتاج را مجدداً اجرا کنید. پیش\u200cفرض: False.",
"Something went wrong :/": "مشکلی پیش آمد :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "Järjestetty lista",
"Organize your users": "Järjestä käyttäjäsi",
"Other": "Muu",
"Output": "",
"OUTPUT": "TULOSTE",
"Output format": "Tulosteen muoto",
"Output Format": "Tulosteen muoto",
@@ -1478,6 +1479,7 @@
"Remove image": "Poista kuva",
"Remove Model": "Poista malli",
"Rename": "Nimeä uudelleen",
"Render Markdown in Previews": "",
"Reorder Models": "Uudelleenjärjestä malleja",
"Reply": "Vastaa",
"Reply in Thread": "Vastaa ketjussa",
@@ -1638,6 +1640,7 @@
"Show": "Näytä",
"Show \"What's New\" modal on login": "Näytä \"Mitä uutta\" -modaali kirjautumisen yhteydessä",
"Show Admin Details in Account Pending Overlay": "Näytä ylläpitäjän tiedot odottavan tilin päällä",
"Show all ({{COUNT}} characters)": "",
"Show Files": "Näytä tiedostot",
"Show Formatting Toolbar": "Näytä muotoilupalkki",
"Show image preview": "Näytä kuvan esikatselu",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Ohita välimuisti",
"Skip the cache and re-run the inference. Defaults to False.": "Ohita välimuisti ja suorita päätelmä uudelleen. Oletusarvo ei käytössä.",
"Something went wrong :/": "Jokin meni pieleen :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Organisez vos utilisateurs",
"Other": "Autre",
"Output": "",
"OUTPUT": "SORTIE",
"Output format": "Format de sortie",
"Output Format": "Format de sortie",
@@ -1478,6 +1479,7 @@
"Remove image": "Retirer l'image",
"Remove Model": "Retirer le modèle",
"Rename": "Renommer",
"Render Markdown in Previews": "",
"Reorder Models": "Réorganiser les modèles",
"Reply": "",
"Reply in Thread": "Répondre dans le fil de discussion",
@@ -1639,6 +1641,7 @@
"Show": "Afficher",
"Show \"What's New\" modal on login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion",
"Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "Afficher l'aperçu de l'image",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Ne pas utiliser le cache",
"Skip the cache and re-run the inference. Defaults to False.": "Ne pas utiliser le cache et re executer l'inférence. Par defaut à False",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "Liste ordonnéee",
"Organize your users": "Organisez vos utilisateurs",
"Other": "Autre",
"Output": "",
"OUTPUT": "SORTIE",
"Output format": "Format de sortie",
"Output Format": "Format de sortie",
@@ -1478,6 +1479,7 @@
"Remove image": "Retirer l'image",
"Remove Model": "Retirer le modèle",
"Rename": "Renommer",
"Render Markdown in Previews": "",
"Reorder Models": "Réorganiser les modèles",
"Reply": "",
"Reply in Thread": "Répondre dans le fil de discussion",
@@ -1639,6 +1641,7 @@
"Show": "Afficher",
"Show \"What's New\" modal on login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion",
"Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "Afficher la barre d'outils de formatage",
"Show image preview": "Afficher l'aperçu de l'image",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Ne pas utiliser le cache",
"Skip the cache and re-run the inference. Defaults to False.": "Ne pas utiliser le cache et re executer l'inférence. Par defaut à False",
"Something went wrong :/": "Quelque chose s'est mal passé :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Organiza os teus usuarios",
"Other": "Outro",
"Output": "",
"OUTPUT": "SAIDA",
"Output format": "Formato de saida",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Eliminar modelo",
"Rename": "Renombrar",
"Render Markdown in Previews": "",
"Reorder Models": "Reordenar modelos",
"Reply": "",
"Reply in Thread": "Responder no hilo",
@@ -1638,6 +1640,7 @@
"Show": "Mostrar",
"Show \"What's New\" modal on login": "Mostrar modal \"Qué hay de novo\" al iniciar sesión",
"Show Admin Details in Account Pending Overlay": "Mostrar detalles de administración na capa de espera da conta",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "אחר",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "הסר מודל",
"Rename": "שנה שם",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1639,6 +1641,7 @@
"Show": "הצג",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "अन्य",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "मोडेल हटाएँ",
"Rename": "नाम बदलें",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "दिखाओ",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Ostalo",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Ukloni model",
"Rename": "Preimenuj",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1639,6 +1641,7 @@
"Show": "Pokaži",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Szervezd meg a felhasználóidat",
"Other": "Egyéb",
"Output": "",
"OUTPUT": "KIMENET",
"Output format": "Kimeneti formátum",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Modell eltávolítása",
"Rename": "Átnevezés",
"Render Markdown in Previews": "",
"Reorder Models": "Modellek átrendezése",
"Reply": "",
"Reply in Thread": "Válasz szálban",
@@ -1638,6 +1640,7 @@
"Show": "Mutat",
"Show \"What's New\" modal on login": "\"Mi újság\" modal megjelenítése bejelentkezéskor",
"Show Admin Details in Account Pending Overlay": "Admin részletek megjelenítése a függő fiók átfedésben",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Lainnya",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Hapus Model",
"Rename": "Ganti nama",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1637,6 +1639,7 @@
"Show": "Tampilkan",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "Tampilkan Detail Admin di Hamparan Akun Tertunda",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "Liosta Ordaithe",
"Organize your users": "Eagraigh do chuid úsáideoirí",
"Other": "Eile",
"Output": "",
"OUTPUT": "ASCHUR",
"Output format": "Formáid aschuir",
"Output Format": "Formáid Aschuir",
@@ -1478,6 +1479,7 @@
"Remove image": "Bain íomhá",
"Remove Model": "Bain an tSamhail",
"Rename": "Athainmnigh",
"Render Markdown in Previews": "",
"Reorder Models": "Athordú na Samhlacha",
"Reply": "Freagra",
"Reply in Thread": "Freagra i Snáithe",
@@ -1638,6 +1640,7 @@
"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 all ({{COUNT}} characters)": "",
"Show Files": "Taispeáin Comhaid",
"Show Formatting Toolbar": "Taispeáin Barra Uirlisí Formáidithe",
"Show image preview": "Taispeáin réamhamharc íomhá",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Seachain an Taisce",
"Skip the cache and re-run the inference. Defaults to False.": "Seachain an taisce agus athrith an tátal. Réamhshocrú Bréagach.",
"Something went wrong :/": "Chuaigh rud éigin mícheart :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Organizza i tuoi utenti",
"Other": "Altro",
"Output": "",
"OUTPUT": "OUTPUT",
"Output format": "Formato di output",
"Output Format": "Formato output",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Rimuovi Modello",
"Rename": "Rinomina",
"Render Markdown in Previews": "",
"Reorder Models": "Riordina Modelli",
"Reply": "",
"Reply in Thread": "Rispondi nel thread",
@@ -1639,6 +1641,7 @@
"Show": "Mostra",
"Show \"What's New\" modal on login": "Mostra il modulo \"Novità\" al login",
"Show Admin Details in Account Pending Overlay": "Mostra i dettagli dell'amministratore nella sovrapposizione dell'account in attesa",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Salta cache",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "順序つきリスト",
"Organize your users": "ユーザーを整理する",
"Other": "その他",
"Output": "",
"OUTPUT": "出力",
"Output format": "出力形式",
"Output Format": "出力形式",
@@ -1478,6 +1479,7 @@
"Remove image": "画像を削除",
"Remove Model": "モデルを削除",
"Rename": "名前を変更",
"Render Markdown in Previews": "",
"Reorder Models": "モデルを並べ替え",
"Reply": "",
"Reply in Thread": "スレッドで返信",
@@ -1637,6 +1639,7 @@
"Show": "表示",
"Show \"What's New\" modal on login": "ログイン時に更新内容モーダルを表示",
"Show Admin Details in Account Pending Overlay": "アカウント保留中の管理者詳細を表示",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "フォーマットツールバーを表示",
"Show image preview": "画像のプレビューを表示",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "キャッシュをスキップする",
"Skip the cache and re-run the inference. Defaults to False.": "キャッシュをスキップし、推論を再実行します。デフォルトでは無効。",
"Something went wrong :/": "何らかの問題が発生しました",
@@ -1342,6 +1342,7 @@
"Ordered List": "დალაგებული სია",
"Organize your users": "დააორგანიზეთ თქვენი მომხმარებლები",
"Other": "სხვა",
"Output": "",
"OUTPUT": "გამოტანა",
"Output format": "გამოტანის ფორმატი",
"Output Format": "გამოტანის ფორმატი",
@@ -1478,6 +1479,7 @@
"Remove image": "სურათის წაშლა",
"Remove Model": "მოდელის წაშლა",
"Rename": "სახელის გადარქმევა",
"Render Markdown in Previews": "",
"Reorder Models": "მოდელების გადალაგება",
"Reply": "პასუხი",
"Reply in Thread": "ნაკადში პასუხი",
@@ -1638,6 +1640,7 @@
"Show": "ჩვენება",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "დაფორმატების პანელის ჩვენება",
"Show image preview": "გამოსახულების გადახედვის ჩვენება",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "კეშის გამოტოვება",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "რაღაც ცუდადაა :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "Tabdart n usmizwer",
"Organize your users": "Sefrek iseqdacen-ik·im",
"Other": "Wayeḍ",
"Output": "",
"OUTPUT": "TUFFƔA",
"Output format": "Amasal n tuffɣa",
"Output Format": "Amasal n tuffɣa",
@@ -1478,6 +1479,7 @@
"Remove image": "Kkes tugna",
"Remove Model": "Kkes tamudemt",
"Rename": "Snifel isem",
"Render Markdown in Previews": "",
"Reorder Models": "Ales n umizwer n tmudmiwin",
"Reply": "Tiririt",
"Reply in Thread": "Err deg udiwenni",
@@ -1638,6 +1640,7 @@
"Show": "Sken-d",
"Show \"What's New\" modal on login": "Sken-d \"D acu i d askar amaynut\" deg uɣmis",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "Skan amsal n ufeggag n yifecka",
"Show image preview": "Sken taskant n tugna",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Ur sseqdac ara tuffirt",
"Skip the cache and re-run the inference. Defaults to False.": "Seqcer aṭaksi-nni, tɛawdeḍ-as assefreg. Imezwura ɣer False.",
"Something went wrong :/": "Yella wayen ur neddi ara :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "번호 목록",
"Organize your users": "사용자 관리",
"Other": "기타",
"Output": "",
"OUTPUT": "출력",
"Output format": "출력 형식",
"Output Format": "출력 형식",
@@ -1478,6 +1479,7 @@
"Remove image": "이미지 삭제",
"Remove Model": "모델 삭제",
"Rename": "이름 변경",
"Render Markdown in Previews": "",
"Reorder Models": "모델 재정렬",
"Reply": "답장",
"Reply in Thread": "스레드로 답장하기",
@@ -1637,6 +1639,7 @@
"Show": "보기",
"Show \"What's New\" modal on login": "로그인시 \"새로운 기능\" 모달 보기",
"Show Admin Details in Account Pending Overlay": "사용자용 계정 보류 설명창에, 관리자 상세 정보 노출",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "서식 툴바 표시",
"Show image preview": "이미지 미리보기",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "캐시 무시",
"Skip the cache and re-run the inference. Defaults to False.": "캐시를 무시하고 추론을 다시 실행합니다. 기본값은 False입니다.",
"Something went wrong :/": "무언가 잘못 되었습니다 :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Kita",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Pašalinti modelį",
"Rename": "Pervadinti",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1640,6 +1642,7 @@
"Show": "Rodyti",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "Rodyti administratoriaus duomenis laukiant paskyros patvirtinimo",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1667,6 +1670,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "Numurēts saraksts",
"Organize your users": "Organizējiet savus lietotājus",
"Other": "Cits",
"Output": "",
"OUTPUT": "IZVADE",
"Output format": "Izvades formāts",
"Output Format": "Izvades formāts",
@@ -1478,6 +1479,7 @@
"Remove image": "Noņemt attēlu",
"Remove Model": "Noņemt modeli",
"Rename": "Pārdēvēt",
"Render Markdown in Previews": "",
"Reorder Models": "Pārkārtot modeļus",
"Reply": "Atbildēt",
"Reply in Thread": "Atbildēt pavedienā",
@@ -1639,6 +1641,7 @@
"Show": "Rādīt",
"Show \"What's New\" modal on login": "Rādīt \"Kas jauns\" logu pie pieteikšanās",
"Show Admin Details in Account Pending Overlay": "Rādīt administratora detaļas konta gaidīšanas pārklājumā",
"Show all ({{COUNT}} characters)": "",
"Show Files": "Rādīt failus",
"Show Formatting Toolbar": "Rādīt formatēšanas rīkjoslu",
"Show image preview": "Rādīt attēla priekšskatījumu",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Izlaist kešatmiņu",
"Skip the cache and re-run the inference. Defaults to False.": "Izlaist kešatmiņu un atkārtoti palaist secinājumu. Noklusējums ir False.",
"Something went wrong :/": "Kaut kas nogāja greizi :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Lain-lain",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Hapuskan Model",
"Rename": "Namakan Semula",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1637,6 +1639,7 @@
"Show": "Tunjukkan",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "Tunjukkan Butiran Pentadbir dalam Akaun Menunggu Tindanan",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Organisere brukerne dine",
"Other": "Annet",
"Output": "",
"OUTPUT": "UTDATA",
"Output format": "Format på utdata",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Fjern modell",
"Rename": "Gi nytt navn",
"Render Markdown in Previews": "",
"Reorder Models": "Sorter modeller på nytt",
"Reply": "",
"Reply in Thread": "Svar i tråd",
@@ -1638,6 +1640,7 @@
"Show": "Vis",
"Show \"What's New\" modal on login": "Vis \"Hva er nytt\"-modal ved innlogging",
"Show Admin Details in Account Pending Overlay": "Vis administratordetaljer i ventende kontovisning",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Orden je gebruikers",
"Other": "Andere",
"Output": "",
"OUTPUT": "UITVOER",
"Output format": "Uitvoerformaat",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Verwijder model",
"Rename": "Hernoemen",
"Render Markdown in Previews": "",
"Reorder Models": "Herschik modellen",
"Reply": "",
"Reply in Thread": "Antwoord in draad",
@@ -1638,6 +1640,7 @@
"Show": "Toon",
"Show \"What's New\" modal on login": "Toon \"Wat is nieuw\" bij inloggen",
"Show Admin Details in Account Pending Overlay": "Admin-details weergeven in overlay in afwachting van account",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "ਹੋਰ",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "ਮਾਡਲ ਹਟਾਓ",
"Rename": "ਨਾਮ ਬਦਲੋ",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "ਦਿਖਾਓ",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "Lista numerowana",
"Organize your users": "Organizuj użytkowników",
"Other": "Inne",
"Output": "",
"OUTPUT": "WYNIK",
"Output format": "Format wyjściowy",
"Output Format": "Format wyjściowy",
@@ -1478,6 +1479,7 @@
"Remove image": "Usuń obraz",
"Remove Model": "Usuń model",
"Rename": "Zmień nazwę",
"Render Markdown in Previews": "",
"Reorder Models": "Zmień kolejność modeli",
"Reply": "Odpowiedz",
"Reply in Thread": "Odpowiedz w wątku",
@@ -1640,6 +1642,7 @@
"Show": "Pokaż",
"Show \"What's New\" modal on login": "Pokaż okno \"Co nowego\" przy logowaniu",
"Show Admin Details in Account Pending Overlay": "Pokaż dane admina na ekranie oczekiwania",
"Show all ({{COUNT}} characters)": "",
"Show Files": "Pokaż pliki",
"Show Formatting Toolbar": "Pokaż pasek formatowania",
"Show image preview": "Pokaż podgląd obrazu",
@@ -1667,6 +1670,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Pomiń Cache",
"Skip the cache and re-run the inference. Defaults to False.": "Pomiń pamięć podręczną i uruchom wnioskowanie ponownie. Domyślnie Fałsz.",
"Something went wrong :/": "Coś poszło nie tak :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "Lista ordenada",
"Organize your users": "Organizar seus usuários",
"Other": "Outro",
"Output": "",
"OUTPUT": "SAÍDA",
"Output format": "Formato de saída",
"Output Format": "Formato de Saída",
@@ -1478,6 +1479,7 @@
"Remove image": "Remover imagem",
"Remove Model": "Remover Modelo",
"Rename": "Renomear",
"Render Markdown in Previews": "",
"Reorder Models": "Reordenar modelos",
"Reply": "Responder",
"Reply in Thread": "Responder no tópico",
@@ -1639,6 +1641,7 @@
"Show": "Mostrar",
"Show \"What's New\" modal on login": "Mostrar \"O que há de Novo\" no login",
"Show Admin Details in Account Pending Overlay": "Mostrar Detalhes do Administrador na Sobreposição de Conta Pendentes",
"Show all ({{COUNT}} characters)": "",
"Show Files": "Mostrar arquivos",
"Show Formatting Toolbar": "Mostrar barra de ferramentas de formatação",
"Show image preview": "Mostrar pré-visualização da imagem",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "Habilidade atualizada com sucesso",
"Skills": "Habilidades",
"Skills Access": "Acesso a habilidades",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Pular cache",
"Skip the cache and re-run the inference. Defaults to False.": "Ignore o cache e execute a inferência novamente. O padrão é Falso.",
"Something went wrong :/": "Algo deu errado :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Outro",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Remover Modelo",
"Rename": "Renomear",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1639,6 +1641,7 @@
"Show": "Mostrar",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "Mostrar Detalhes do Administrador na sobreposição de Conta Pendente",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Altele",
"Output": "",
"OUTPUT": "Output rezultatat",
"Output format": "Formatul de ieșire",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Înlătură Modelul",
"Rename": "Redenumește",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1639,6 +1641,7 @@
"Show": "Afișează",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "Afișează Detaliile Administratorului în Suprapunerea Contului În Așteptare",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
+79 -74
View File
@@ -12,30 +12,30 @@
"{{COUNT}} Available Tools": "{{COUNT}} доступных инструментов",
"{{COUNT}} characters": "{{COUNT}} символов",
"{{COUNT}} extracted lines": "{{COUNT}} извлеченных строк",
"{{COUNT}} files": "",
"{{COUNT}} files": "{{COUNT}} файлов",
"{{COUNT}} hidden lines": "{{COUNT}} скрытых строк",
"{{COUNT}} Replies": "{{COUNT}} Ответов",
"{{COUNT}} Rows": "",
"{{COUNT}} Rows": "{{COUNT}} Строк",
"{{COUNT}} Sources": "{{COUNT}} Источников",
"{{COUNT}} words": "{{COUNT}} слов",
"{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "{{LOCALIZED_DATE}} в {{LOCALIZED_TIME}}",
"{{model}} download has been canceled": "{{model}} загрузка была отменена",
"{{NAMES}} reacted with {{REACTION}}": "",
"{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} поставили {{REACTION}}",
"{{user}}'s Chats": "Чаты {{user}}'а",
"{{webUIName}} Backend Required": "Необходимо подключение к серверу {{webUIName}}",
"*Prompt node ID(s) are required for image generation": "ID узлов промптов обязательны для генерации изображения",
"1 Source": "1 Источник",
"A collaboration channel where people join as members": "",
"A discussion channel where access is controlled by groups and permissions": "",
"A collaboration channel where people join as members": "Коллаборационный канал, где люди присоединяются как участники",
"A discussion channel where access is controlled by groups and permissions": "Обсуждение канала, где доступ контролируется группами и разрешениями",
"A new version (v{{LATEST_VERSION}}) is now available.": "Новая версия (v{{LATEST_VERSION}}) теперь доступна.",
"A private conversation between you and selected users": "",
"A private conversation between you and selected users": "Приватный чат между вами и выбранными пользователями",
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач используется при выполнении таких задач, как генерация заголовков для чатов и поисковых запросов в Интернете",
"a user": "пользователь",
"About": "О программе",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Доступ к автозаполнению\nПерейти к переменной запроса",
"Access": "Доступ",
"Access Control": "Контроль доступа",
"Access List": "",
"Access List": "Список доступов",
"Accessible to all users": "Доступно всем пользователям",
"Account": "Учетная запись",
"Account Activation Pending": "Ожидание активации учетной записи",
@@ -48,53 +48,53 @@
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Активируйте эту команду, набрав \"/{{COMMAND}}\" для ввода в чате.",
"Active": "Активен",
"Active Users": "Активные пользователи",
"Activity": "",
"Activity": "Активность",
"Add": "Добавить",
"Add a model ID": "Добавить ID модели",
"Add a short description about what this model does": "Добавьте краткое описание того, что делает эта модель",
"Add a tag": "Добавьте тег",
"Add a tag...": "",
"Add Access": "",
"Add a tag...": "Добавить тег...",
"Add Access": "Добавить доступ",
"Add Arena Model": "Добавить модель арены",
"Add Connection": "Добавить соединение",
"Add Content": "Добавить контент",
"Add content here": "Добавить контент сюда",
"Add Custom Parameter": "Добавить пользовательский параметр",
"Add Custom Prompt": "",
"Add Custom Prompt": "Добавить пользовательский запрос",
"Add Details": "Добавить детали",
"Add Files": "Добавить файлы",
"Add Image": "",
"Add Member": "",
"Add Members": "",
"Add Image": "Добавить изображение",
"Add Member": "Добавить участника",
"Add Members": "Добавить участников",
"Add Memory": "Добавить воспоминание",
"Add Model": "Добавить модель",
"Add Reaction": "Добавить реакцию",
"Add tag": "",
"Add tag": "Добавить тег",
"Add Tag": "Добавить тег",
"Add text content": "Добавить текстовый контент",
"Add User": "Добавить пользователя",
"Add User Group": "Добавить группу пользователей",
"Add webpage": "",
"Add webpage": "Добавить веб-страницу",
"Additional Config": "Дополнительные настройки",
"Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Дополнительные настройки для marker. Это должна быть строка JSON с ключами и значениями. Например, '{\"key\": \"value\"}'. Поддерживаемые ключи включают: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level",
"Additional Parameters": "",
"Additional Parameters": "Дополнительные параметры",
"Adds filenames, titles, sections, and snippets into the BM25 text to improve lexical recall.": "",
"Adjusting these settings will apply changes universally to all users.": "Изменения в этих настройках будут применены для всех пользователей.",
"admin": "админ",
"Admin": "Админ",
"Admin Contact Email": "",
"Admin Contact Email": "Адрес электронной почты администратора",
"Admin Panel": "Панель администратора",
"Admin Settings": "Настройки администратора",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Администраторы всегда имеют доступ ко всем инструментам; пользователям нужны инструменты, назначенные для каждой модели в рабочем пространстве.",
"Advanced Parameters": "Расширенные параметры",
"Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "",
"Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "Дополнительные параметры для анализа MinerU (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)",
"Advanced Params": "Расширенные параметры",
"After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "",
"After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "После обновления или изменения модели встраивания необходимо пересоздать базу знаний для применения изменений. Вы можете это сделать, используя кнопку \"Пересоздать\" ниже.",
"AI": "AI",
"All": "Все",
"All chats have been unarchived.": "",
"All chats have been unarchived.": "Все чаты были разархивированы.",
"All models deleted successfully": "Все модели успешно удалены",
"All Users": "",
"All Users": "Все пользователи",
"Allow Call": "Разрешить звонки",
"Allow Chat Controls": "Разрешить управление чатом",
"Allow Chat Delete": "Разрешить удаление чата",
@@ -135,17 +135,17 @@
"and {{COUNT}} more": "и еще {{COUNT}}",
"and create a new shared link.": "и создайте новую общую ссылку.",
"Android": "Android",
"Anyone": "",
"Anyone": "Кому угодно",
"API Base URL": "Базовый адрес API",
"API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "Базовый URL API для сервиса Datalab Marker. По умолчанию: https://www.datalab.to/api/v1/marker",
"API Key": "Ключ API",
"API Key created.": "Ключ API создан.",
"API Key Endpoint Restrictions": "Ограничения на энд-поинт API",
"API keys": "Ключи API",
"API Keys": "",
"API Keys": "Ключи API",
"API Mode": "",
"API Timeout": "",
"API Type": "",
"API Type": "тип API",
"API Version": "Версия API",
"API Version is required": "Обязательна версия API",
"Application DN": "DN приложения",
@@ -153,21 +153,21 @@
"applies to all users with the \"user\" role": "применяется ко всем пользователям с ролью «пользователь»",
"April": "Апрель",
"Archive": "Архив",
"Archive All": "",
"Archive All": "Архивировать все",
"Archive All Chats": "Архивировать все чаты",
"Archived Chats": "Архив чатов",
"archived-chat-export": "экспорт-архивного-чата",
"Are you sure you want to archive all chats? This action cannot be undone.": "",
"Are you sure you want to clear all memories? This action cannot be undone.": "Вы уверены, что хотите удалить все воспоминания? Это действие невозможно отменить.",
"Are you sure you want to delete \"{{NAME}}\"?": "",
"Are you sure you want to delete all chats? This action cannot be undone.": "",
"Are you sure you want to delete \"{{NAME}}\"?": "Вы уверены, что хотите удалить \"{{NAME}}\"?",
"Are you sure you want to delete all chats? 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 delete this version? Child versions will be relinked to this version's parent.": "",
"Are you sure you want to unarchive all archived chats?": "Вы уверены, что хотите разархивировать все заархивированные чаты?",
"Arena Models": "Арена моделей",
"Artifacts": "Артефакты",
"Asc": "",
"Asc": "По возрастанию",
"Ask": "Спросить",
"Ask a question": "Задать вопрос",
"Assistant": "Ассистент",
@@ -185,7 +185,7 @@
"Authenticate": "Аутентификация",
"Authentication": "Аутентификация",
"Auto": "Автоматически",
"Auto (Random)": "",
"Auto (Random)": "Автоматически (случайно)",
"Auto-Copy Response to Clipboard": "Автоматическое копирование ответа в буфер обмена",
"Auto-playback response": "Автоматическое воспроизведение ответа",
"Autocomplete Generation": "Генерация автозаполнения",
@@ -224,13 +224,13 @@
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Увеличение или отмена определенных токенов за ограниченные ответы. Значения смещения будут находиться в диапазоне от -100 до 100 (включительно). (По умолчанию: ничего)",
"Brave": "",
"Brave Search API Key": "Ключ API поиска Brave",
"Browse and query knowledge bases": "",
"Builtin Tools": "",
"Browse and query knowledge bases": "Обзор и запрос баз знаний",
"Builtin Tools": "Встроенные инструменты",
"Bullet List": "Маркированный список",
"Button ID": "ID кнопки",
"Button Label": "Подпись кнопки",
"Button Prompt": "Промпт кнопки",
"by {{name}}": "",
"by {{name}}": "от {{name}}",
"By {{name}}": "От {{name}}",
"Bypass Embedding and Retrieval": "Обход встраивания и извлечения данных",
"Bypass Web Loader": "Обход веб-загрузчика",
@@ -240,8 +240,8 @@
"Call feature is not supported when using Web STT engine": "Функция вызова не поддерживается при использовании Web STT (распознавание речи) движка",
"Camera": "Камера",
"Cancel": "Отменить",
"Cannot create an empty note.": "",
"Cannot delete the production version": "",
"Cannot create an empty note.": "Нельзя создать пустую заметку.",
"Cannot delete the production version": "Нельзя удалить версию в производстве.",
"Capabilities": "Возможности",
"Capture": "Захват",
"Capture Audio": "Захват аудио",
@@ -251,8 +251,8 @@
"Channel deleted successfully": "Канал успешно удалён",
"Channel Name": "Название канала",
"Channel name cannot be empty.": "Название канала не может быть пустым.",
"Channel name must be less than 128 characters": "",
"Channel Type": "",
"Channel name must be less than 128 characters": "Канал не может содержать более 128 символов",
"Channel Type": "Тип канала",
"Channel updated successfully": "Канал успешно обновлён",
"Channels": "Каналы",
"Character": "Символ",
@@ -265,15 +265,15 @@
"Chat Controls": "Управление чатом",
"Chat Conversation": "Обсуждение в чате",
"Chat direction": "Направление чата",
"Chat exported successfully": "",
"Chat History": "",
"Chat exported successfully": "Чат успешно экспортирован",
"Chat History": "История чата",
"Chat ID": "ID чата",
"Chat moved successfully": "Чат успешно перемещён",
"Chat Overview": "Обзор чата",
"Chat Permissions": "Разрешения для чата",
"Chat Tags Auto-Generation": "Автогенерация тегов чата",
"Chat unshared successfully.": "",
"chats": "",
"Chat unshared successfully.": "Чат успешно разделяется",
"chats": "чаты",
"Chats": "Чаты",
"Check Again": "Перепроверьте ещё раз",
"Check for updates": "Проверить обновления",
@@ -282,13 +282,13 @@
"Chunk Min Size Target": "",
"Chunk Overlap": "Перекрытие фрагментов",
"Chunk Size": "Размер фрагмента",
"Chunks smaller than this threshold will be merged with neighboring chunks when possible. Set to 0 to disable merging.": "",
"Chunks smaller than this threshold will be merged with neighboring chunks when possible. Set to 0 to disable merging.": "Чанки меньшего размера будут объединены с соседними чанками при возможности. Установите 0 для отключения объединения.",
"Ciphers": "Шифры",
"Citation": "Цитирование",
"Citations": "Цитаты",
"Clear memory": "Очистить воспоминания",
"Clear Memory": "Очистить память",
"Clear status": "",
"Clear status": "Очистить статус",
"click here": "кликните сюда",
"Click here for filter guides.": "Нажмите здесь, чтобы просмотреть руководства по фильтрам.",
"Click here for help.": "Нажмите здесь для получения помощи.",
@@ -302,7 +302,7 @@
"Click here to upload a workflow.json file.": "Нажмите здесь, чтобы загрузить файл workflow.json.",
"click here.": "нажмите здесь.",
"Click on the user role button to change a user's role.": "Нажмите кнопку роли пользователя, чтобы изменить роль пользователя.",
"Click to copy ID": "",
"Click to copy ID": "Нажмите, чтобы скопировать ID",
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "В разрешении на запись в буфер обмена отказано. Пожалуйста, проверьте настройки своего браузера, чтобы предоставить необходимый доступ.",
"Clone": "Клонировать",
"Clone Chat": "Клонировать чат",
@@ -311,7 +311,7 @@
"Close Banner": "Закрыть баннер",
"Close Configure Connection Modal": "Закрыть модальное окно настройки соединения",
"Close modal": "Закрыть окно",
"Close Modal": "",
"Close Modal": "Закрыть модальное окно",
"Close settings modal": "Закрыть окно настроек",
"Close Sidebar": "Закрыть боковую панель",
"cloud": "",
@@ -329,7 +329,7 @@
"Collaboration channel where people join as members": "",
"Collapse": "Свернуть",
"Collection": "Коллекция",
"Collections": "",
"Collections": "Коллекции",
"Color": "Цвет",
"ComfyUI": "ComfyUI",
"ComfyUI API Key": "ComfyUI ключ API",
@@ -338,10 +338,10 @@
"ComfyUI Workflow": "Рабочий процесс ComfyUI",
"ComfyUI Workflow Nodes": "Узлы рабочего процесса ComfyUI",
"Comma separated Node Ids (e.g. 1 or 1,2)": "ID узлов через запятую (напр., 1 или 1,2)",
"command": "",
"command": "команда",
"Command": "Команда",
"Comment": "Комментарий",
"Commit Message": "",
"Commit Message": "Добавить сообщение",
"Community Reviews": "",
"Completions": "Завершения",
"Compress Images in Channels": "Сжимать изображения в каналах",
@@ -365,7 +365,7 @@
"Contact Admin for WebUI Access": "Обратитесь к администратору для получения доступа к WebUI",
"Content": "Содержание",
"Content Extraction Engine": "Механизм извлечения контента",
"Content lengths (character counts only)": "",
"Content lengths (character counts only)": "Длина контента (только количество символов)",
"Continue Response": "Продолжить ответ",
"Continue with {{provider}}": "Продолжить с {{provider}}",
"Continue with Email": "Продолжить с Email",
@@ -381,38 +381,38 @@
"Copied to clipboard": "Скопировано в буфер обмена",
"Copy": "Копировать",
"Copy Formatted Text": "Копировать форматированный текст",
"Copy Last Code Block": "",
"Copy Last Response": "",
"Copy Last Code Block": "Копировать последний блок кода",
"Copy Last Response": "Копировать последний ответ",
"Copy link": "Скопировать ссылку",
"Copy Link": "Копировать ссылку",
"Copy Prompt": "",
"Copy Share Link": "",
"Copy Prompt": "Копировать запрос",
"Copy Share Link": "Копировать ссылку для обмена",
"Copy to clipboard": "Скопировать в буфер обмена",
"Copy URL": "",
"Copy URL": "Копировать ссылку",
"Copying to clipboard was successful!": "Копирование в буфер обмена прошло успешно!",
"CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS должен быть должным образом настроен провайдером, чтобы разрешать запросы из Open WebUI.",
"Create": "Создать",
"Create a knowledge base": "Создайте базу знаний",
"Create a model": "Создание модели",
"Create a new note": "",
"Create a new note": "Создать новую заметку",
"Create Account": "Создать аккаунт",
"Create Admin Account": "Создать аккаунт Администратора",
"Create Channel": "Создать канал",
"Create Folder": "Создать папку",
"Create Group": "Создать группу",
"Create Image": "",
"Create Image": "Создать изображение",
"Create Knowledge": "Создать знание",
"Create Model": "",
"Create Model": "Создать модель",
"Create new key": "Создать новый ключ",
"Create new secret key": "Создать новый секретный ключ",
"Create note": "",
"Create note": "Создать заметку",
"Create Note": "Создать заметку",
"Create your first note by clicking on the plus button below.": "Создайте свою первую заметку, нажав на кнопку плюс ниже.",
"Created at": "Создан(а)",
"Created At": "Создано",
"Created by": "Создано",
"Created by you": "",
"Created on {{date}}": "",
"Created by you": "Создано вами",
"Created on {{date}}": "Создано {{date}}",
"CSV Import": "Импорт CSV",
"Ctrl+Enter to Send": "Ctrl+Enter чтобы отправить",
"Current Model": "Текущая модель",
@@ -438,14 +438,14 @@
"Default description enabled": "Описание по умолчанию включено",
"Default Features": "Функции по умолчанию",
"Default Filters": "Фильтры по умолчанию",
"Default Group": "",
"Default Group": "Дефолтная группа",
"Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "Режим по умолчанию работает с более широким спектром моделей, вызывая инструменты один раз перед выполнением. Режим Нативно использует встроенные в модель возможности вызова инструментов, но требует, чтобы модель изначально поддерживала эту функцию.",
"Default Model": "Модель по умолчанию",
"Default model updated": "Модель по умолчанию обновлена",
"Default Models": "Модели по умолчанию",
"Default permissions": "Разрешения по умолчанию",
"Default permissions updated successfully": "Разрешения по умолчанию успешно обновлены.",
"Default Pinned Models": "",
"Default Pinned Models": "Дефолтные закрепленные модели",
"Default Prompt Suggestions": "Предложения промптов по умолчанию",
"Default to 389 or 636 if TLS is enabled": "По умолчанию 389 или 636, если TLS включен.",
"Default to ALL": "По умолчанию ВСЕ",
@@ -453,34 +453,34 @@
"Default User Role": "Роль пользователя по умолчанию",
"Delete": "Удалить",
"Delete a model": "Удалить модель",
"Delete All": "",
"Delete All": "Удалить ВСЕ",
"Delete All Chats": "Удалить ВСЕ Чаты",
"Delete all contents inside this folder": "",
"Delete all contents inside this folder": "Удалить все содержимое внутри этой папки",
"Delete All Models": "Удалить ВСЕ Модели",
"Delete Chat": "Удалить Чат",
"Delete chat?": "Удалить чат?",
"Delete File": "",
"Delete File": "Удалить файл",
"Delete folder?": "Удалить папку?",
"Delete function?": "Удалить функцию?",
"Delete Message": "Удалить сообщение",
"Delete message?": "Удалить сообщение?",
"Delete Model": "",
"Delete Model": "Удалить модель",
"Delete note?": "Удалить заметку?",
"Delete prompt?": "Удалить промпт?",
"Delete skill?": "",
"Delete skill?": "Удалить навык?",
"delete this link": "удалить эту ссылку",
"Delete tool?": "Удалить этот инструмент?",
"Delete User": "Удалить Пользователя",
"Delete Version": "",
"Deleted": "",
"Delete Version": "Удалить версию",
"Deleted": "Удалено",
"Deleted {{deleteModelTag}}": "Удалено {{deleteModelTag}}",
"Deleted {{name}}": "Удалено {{name}}",
"Deleted User": "Удалённый пользователь",
"Deployment names are required for Azure OpenAI": "Для Azure OpenAI требуются названия развертываний",
"Desc": "",
"Describe the edit...": "",
"Describe the image...": "",
"Describe what changed...": "",
"Desc": "Описание",
"Describe the edit...": "Опишите изменения...",
"Describe the image...": "Опишите изображение...",
"Describe what changed...": "Опишите изменения...",
"Describe your knowledge base and objectives": "Опишите свою базу знаний и цели",
"Description": "Описание",
"Detect Artifacts Automatically": "Автоматическое обнаружение артефактов",
@@ -1342,6 +1342,7 @@
"Ordered List": "Нумерованный список",
"Organize your users": "Организуйте своих пользователей",
"Other": "Прочее",
"Output": "",
"OUTPUT": "ВЫВОД",
"Output format": "Формат вывода",
"Output Format": "Формат Вывода",
@@ -1478,6 +1479,7 @@
"Remove image": "Удалить изображение",
"Remove Model": "Удалить модель",
"Rename": "Переименовать",
"Render Markdown in Previews": "",
"Reorder Models": "Изменение порядка моделей",
"Reply": "",
"Reply in Thread": "Ответить в обсуждении",
@@ -1640,6 +1642,7 @@
"Show": "Показать",
"Show \"What's New\" modal on login": "Показывать окно «Что нового» при входе в систему",
"Show Admin Details in Account Pending Overlay": "Показывать данные администратора в оверлее ожидающей учетной записи",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "Показать панель форматирования",
"Show image preview": "Показать предварительный просмотр изображения",
@@ -1667,6 +1670,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Пропустить кэширование",
"Skip the cache and re-run the inference. Defaults to False.": "Пропустить кэширование и перезапустить вывод. По умолчанию установлено значение Выкл.",
"Something went wrong :/": "Что-то пошло не так :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Iné",
"Output": "",
"OUTPUT": "VÝSTUP",
"Output format": "Formát výstupu",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Odstrániť model",
"Rename": "Premenovať",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1640,6 +1642,7 @@
"Show": "Zobraziť",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "Zobraziť podrobnosti administrátora v prekryvnom okne s čakajúcim účtom",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1667,6 +1670,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Организујте ваше кориснике",
"Other": "Остало",
"Output": "",
"OUTPUT": "ИЗЛАЗ",
"Output format": "Формат излаза",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Уклони модел",
"Rename": "Преименуј",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1639,6 +1641,7 @@
"Show": "Прикажи",
"Show \"What's New\" modal on login": "Прикажи \"Погледај шта је ново\" прозорче при пријави",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1666,6 +1669,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "Numrerad lista",
"Organize your users": "Organisera dina användare",
"Other": "Andra",
"Output": "",
"OUTPUT": "UTDATA",
"Output format": "Utdataformat",
"Output Format": "Utdataformat",
@@ -1478,6 +1479,7 @@
"Remove image": "Ta bort bild",
"Remove Model": "Ta bort modell",
"Rename": "Byt namn",
"Render Markdown in Previews": "",
"Reorder Models": "Omordna modeller",
"Reply": "Svara",
"Reply in Thread": "Svara i tråd",
@@ -1638,6 +1640,7 @@
"Show": "Visa",
"Show \"What's New\" modal on login": "Visa \"Vad är nytt\"-modalen vid inloggning",
"Show Admin Details in Account Pending Overlay": "Visa administratörsinformation till väntande konton",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "Visa verktygsfält för textformatering",
"Show image preview": "Visa förhandsvisning av bild",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Hoppa över cache",
"Skip the cache and re-run the inference. Defaults to False.": "Hoppa över cacheminnet och kör inferensen igen. Standardvärdet är False.",
"Something went wrong :/": "Något gick fel :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "รายการมีลำดับ",
"Organize your users": "จัดการผู้ใช้ของคุณ",
"Other": "อื่น ๆ",
"Output": "",
"OUTPUT": "เอาต์พุต",
"Output format": "รูปแบบผลลัพธ์",
"Output Format": "รูปแบบผลลัพธ์",
@@ -1478,6 +1479,7 @@
"Remove image": "ลบรูปภาพ",
"Remove Model": "ลบโมเดล",
"Rename": "เปลี่ยนชื่อ",
"Render Markdown in Previews": "",
"Reorder Models": "จัดลำดับโมเดลใหม่",
"Reply": "ตอบกลับ",
"Reply in Thread": "ตอบกลับในเธรด",
@@ -1637,6 +1639,7 @@
"Show": "แสดง",
"Show \"What's New\" modal on login": "แสดงหน้าต่าง \"มีอะไรใหม่\" เมื่อเข้าสู่ระบบ",
"Show Admin Details in Account Pending Overlay": "แสดงรายละเอียดผู้ดูแลระบบในหน้าต่างซ้อนรอการอนุมัติบัญชี",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "แสดงแถบเครื่องมือการจัดรูปแบบ",
"Show image preview": "แสดงตัวอย่างรูปภาพ",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "ข้ามแคช",
"Skip the cache and re-run the inference. Defaults to False.": "ข้ามแคชและรันการอนุมานใหม่อีกครั้ง ค่าเริ่มต้นคือ False",
"Something went wrong :/": "มีบางอย่างผิดพลาด :/",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "Başga",
"Output": "",
"OUTPUT": "",
"Output format": "",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Modeli Aýyr",
"Rename": "Adyny Üýtget",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "Görkez",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Kullanıcılarınızı düzenleyin",
"Other": "Diğer",
"Output": "",
"OUTPUT": "ÇIKTI",
"Output format": "Çıktı formatı",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Modeli Kaldır",
"Rename": "Yeniden Adlandır",
"Render Markdown in Previews": "",
"Reorder Models": "Modelleri Yeniden Sırala",
"Reply": "",
"Reply in Thread": "Konuya Yanıtla",
@@ -1638,6 +1640,7 @@
"Show": "Göster",
"Show \"What's New\" modal on login": "Girişte \"Yenilikler\" modalını göster",
"Show Admin Details in Account Pending Overlay": "Yönetici Ayrıntılarını Hesap Bekliyor Ekranında Göster",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "ئىشلەتكۈچىلەرنى تەشكىللەڭ",
"Other": "باشقا",
"Output": "",
"OUTPUT": "چىقىرىش",
"Output format": "چىقىرىش قېلىپى",
"Output Format": "چىقىرىش فورماتى",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "مودېل چىقىرىۋېتىش",
"Rename": "ئات ئۆزگەرتىش",
"Render Markdown in Previews": "",
"Reorder Models": "مودېللارنى قايتا تەرتىپلەش",
"Reply": "",
"Reply in Thread": "تارماقتا ئىنكاس قايتۇرۇش",
@@ -1638,6 +1640,7 @@
"Show": "كۆرسىتىش",
"Show \"What's New\" modal on login": "كىرىشتە \"يېڭىلىق\" مودىلىنى كۆرسىتىش",
"Show Admin Details in Account Pending Overlay": "ھېسابات كۈتۈۋاتقان قاپلىماسىدا باشقۇرغۇچى تەپسىلاتىنى كۆرسىتىش",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "غەملەكتىن ئۆتۈپ كېتىش",
"Skip the cache and re-run the inference. Defaults to False.": "غەملەكتىن ئۆتۈپ، يەكۈننى قايتا ئىجرا قىلىش. كۆڭۈلدىكىچە چەكلەنگەن",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Організуйте своїх користувачів",
"Other": "Інше",
"Output": "",
"OUTPUT": "ВИХІД",
"Output format": "Формат відповіді",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Видалити модель",
"Rename": "Переназвати",
"Render Markdown in Previews": "",
"Reorder Models": "Переставити моделі",
"Reply": "",
"Reply in Thread": "Відповісти в потоці",
@@ -1640,6 +1642,7 @@
"Show": "Показати",
"Show \"What's New\" modal on login": "Показати модальне вікно \"Що нового\" під час входу",
"Show Admin Details in Account Pending Overlay": "Відобразити дані адміна у вікні очікування облікового запису",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1667,6 +1670,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "",
"Other": "دیگر",
"Output": "",
"OUTPUT": "آؤٹ پٹ",
"Output format": "آؤٹ پٹ فارمیٹ",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "ماڈل ہٹائیں",
"Rename": "تبدیل نام کریں",
"Render Markdown in Previews": "",
"Reorder Models": "",
"Reply": "",
"Reply in Thread": "",
@@ -1638,6 +1640,7 @@
"Show": "دکھائیں",
"Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "اکاؤنٹ پینڈنگ اوورلے میں ایڈمن کی تفصیلات دکھائیں",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Фойдаланувчиларингизни тартибга солинг",
"Other": "Бошқа",
"Output": "",
"OUTPUT": "Чиқиш",
"Output format": "Чиқиш формати",
"Output Format": "Чиқиш формати",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Моделни олиб ташлаш",
"Rename": "Номини ўзгартириш",
"Render Markdown in Previews": "",
"Reorder Models": "Моделларни қайта тартиблаш",
"Reply": "",
"Reply in Thread": "Мавзуда жавоб беринг",
@@ -1638,6 +1640,7 @@
"Show": "Кўрсатиш",
"Show \"What's New\" modal on login": "Киришда \"Янги нарсалар\" модалини кўрсатинг",
"Show Admin Details in Account Pending Overlay": "Ҳисоб кутилаётган қатламда администратор маълумотларини кўрсатиш",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Кешни ўтказиб юбориш",
"Skip the cache and re-run the inference. Defaults to False.": "Кешни ўтказиб юборинг ва хулосани қайта ишга туширинг. Бирламчи параметрлар Фалсе.",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Foydalanuvchilaringizni tartibga soling",
"Other": "Boshqa",
"Output": "",
"OUTPUT": "Chiqish",
"Output format": "Chiqish formati",
"Output Format": "Chiqish formati",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Modelni olib tashlash",
"Rename": "Nomini o'zgartirish",
"Render Markdown in Previews": "",
"Reorder Models": "Modellarni qayta tartiblash",
"Reply": "",
"Reply in Thread": "Mavzuda javob bering",
@@ -1638,6 +1640,7 @@
"Show": "Ko'rsatish",
"Show \"What's New\" modal on login": "Kirishda \"Yangi narsalar\" modalini ko'rsating",
"Show Admin Details in Account Pending Overlay": "Hisob kutilayotgan qatlamda administrator malumotlarini korsatish",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1665,6 +1668,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "Keshni o'tkazib yuborish",
"Skip the cache and re-run the inference. Defaults to False.": "Keshni o'tkazib yuboring va xulosani qayta ishga tushiring. Birlamchi parametrlar False.",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "",
"Organize your users": "Tổ chức người dùng của bạn",
"Other": "Khác",
"Output": "",
"OUTPUT": "ĐẦU RA",
"Output format": "Định dạng đầu ra",
"Output Format": "",
@@ -1478,6 +1479,7 @@
"Remove image": "",
"Remove Model": "Xóa model",
"Rename": "Đổi tên",
"Render Markdown in Previews": "",
"Reorder Models": "Sắp xếp lại Mô hình",
"Reply": "",
"Reply in Thread": "Trả lời trong Luồng",
@@ -1637,6 +1639,7 @@
"Show": "Hiển thị",
"Show \"What's New\" modal on login": "Hiển thị cửa sổ \"Có gì mới\" khi đăng nhập",
"Show Admin Details in Account Pending Overlay": "Hiển thị thông tin của Quản trị viên trên màn hình hiển thị Tài khoản đang chờ xử lý",
"Show all ({{COUNT}} characters)": "",
"Show Files": "",
"Show Formatting Toolbar": "",
"Show image preview": "",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "",
"Skip the cache and re-run the inference. Defaults to False.": "",
"Something went wrong :/": "",
@@ -1342,6 +1342,7 @@
"Ordered List": "有序列表",
"Organize your users": "组织用户",
"Other": "其他",
"Output": "",
"OUTPUT": "输出",
"Output format": "输出格式",
"Output Format": "输出格式",
@@ -1478,6 +1479,7 @@
"Remove image": "移除图像",
"Remove Model": "移除模型",
"Rename": "重命名",
"Render Markdown in Previews": "",
"Reorder Models": "重新排序模型",
"Reply": "回复",
"Reply in Thread": "回复主题",
@@ -1637,6 +1639,7 @@
"Show": "显示",
"Show \"What's New\" modal on login": "版本更新后首次登录时显示“新功能介绍”弹窗",
"Show Admin Details in Account Pending Overlay": "在待激活用户的界面中显示管理员邮箱等详细信息",
"Show all ({{COUNT}} characters)": "",
"Show Files": "显示文件",
"Show Formatting Toolbar": "显示文本格式工具栏",
"Show image preview": "显示图像预览",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "技能更新成功",
"Skills": "技能",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "跳过缓存",
"Skip the cache and re-run the inference. Defaults to False.": "跳过缓存并重新执行推理。默认为关闭",
"Something went wrong :/": "发生错误",
@@ -1342,6 +1342,7 @@
"Ordered List": "有序清單",
"Organize your users": "組織您的使用者",
"Other": "其他",
"Output": "",
"OUTPUT": "輸出",
"Output format": "輸出格式",
"Output Format": "輸出格式",
@@ -1478,6 +1479,7 @@
"Remove image": "移除圖片",
"Remove Model": "移除模型",
"Rename": "重新命名",
"Render Markdown in Previews": "",
"Reorder Models": "重新排序模型",
"Reply": "回覆",
"Reply in Thread": "在討論串中回覆",
@@ -1637,6 +1639,7 @@
"Show": "顯示",
"Show \"What's New\" modal on login": "登入時顯示「新功能」對話框",
"Show Admin Details in Account Pending Overlay": "在帳號待審覆蓋層中顯示管理員詳細資訊",
"Show all ({{COUNT}} characters)": "",
"Show Files": "顯示檔案",
"Show Formatting Toolbar": "顯示文字格式工具列",
"Show image preview": "顯示圖片預覽",
@@ -1664,6 +1667,8 @@
"Skill updated successfully": "",
"Skills": "",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
"Skip Cache": "略過快取",
"Skip the cache and re-run the inference. Defaults to False.": "略過快取並重新執行推理。預設為 False。",
"Something went wrong :/": "發生錯誤 :/",
+1
View File
@@ -205,6 +205,7 @@ type Settings = {
splitLargeDeltas?: boolean;
chatDirection?: 'LTR' | 'RTL' | 'auto';
ctrlEnterToSend?: boolean;
renderMarkdownInPreviews?: boolean;
system?: string;
seed?: number;