mirror of
https://github.com/open-webui/open-webui.git
synced 2026-10-06 02:48:04 +00:00
Merge branch 'dev' into feature-desktop
This commit is contained in:
commit
c510045137
128 changed files with 9367 additions and 639 deletions
|
|
@ -687,7 +687,6 @@ def load_oauth_providers():
|
|||
return client
|
||||
|
||||
OAUTH_PROVIDERS['google'] = {
|
||||
'redirect_uri': GOOGLE_REDIRECT_URI.value,
|
||||
'register': google_oauth_register,
|
||||
}
|
||||
|
||||
|
|
@ -708,7 +707,6 @@ def load_oauth_providers():
|
|||
return client
|
||||
|
||||
OAUTH_PROVIDERS['microsoft'] = {
|
||||
'redirect_uri': MICROSOFT_REDIRECT_URI.value,
|
||||
'picture_url': MICROSOFT_CLIENT_PICTURE_URL.value,
|
||||
'register': microsoft_oauth_register,
|
||||
}
|
||||
|
|
@ -733,7 +731,6 @@ def load_oauth_providers():
|
|||
return client
|
||||
|
||||
OAUTH_PROVIDERS['github'] = {
|
||||
'redirect_uri': GITHUB_CLIENT_REDIRECT_URI.value,
|
||||
'register': github_oauth_register,
|
||||
'sub_claim': 'id',
|
||||
}
|
||||
|
|
@ -775,7 +772,6 @@ def load_oauth_providers():
|
|||
|
||||
OAUTH_PROVIDERS['oidc'] = {
|
||||
'name': OAUTH_PROVIDER_NAME.value,
|
||||
'redirect_uri': OPENID_REDIRECT_URI.value,
|
||||
'register': oidc_oauth_register,
|
||||
}
|
||||
|
||||
|
|
@ -1226,10 +1222,16 @@ DEFAULT_MODEL_METADATA = PersistentConfig(
|
|||
{},
|
||||
)
|
||||
|
||||
try:
|
||||
default_model_params = json.loads(os.environ.get('DEFAULT_MODEL_PARAMS', '{}'))
|
||||
except Exception as e:
|
||||
log.exception(f'Error loading DEFAULT_MODEL_PARAMS: {e}')
|
||||
default_model_params = {}
|
||||
|
||||
DEFAULT_MODEL_PARAMS = PersistentConfig(
|
||||
'DEFAULT_MODEL_PARAMS',
|
||||
'models.default_params',
|
||||
{},
|
||||
default_model_params,
|
||||
)
|
||||
|
||||
DEFAULT_USER_ROLE = PersistentConfig(
|
||||
|
|
@ -1435,6 +1437,10 @@ USER_PERMISSIONS_FEATURES_API_KEYS = os.environ.get('USER_PERMISSIONS_FEATURES_A
|
|||
|
||||
USER_PERMISSIONS_FEATURES_MEMORIES = os.environ.get('USER_PERMISSIONS_FEATURES_MEMORIES', 'True').lower() == 'true'
|
||||
|
||||
USER_PERMISSIONS_FEATURES_AUTOMATIONS = (
|
||||
os.environ.get('USER_PERMISSIONS_FEATURES_AUTOMATIONS', 'False').lower() == 'true'
|
||||
)
|
||||
|
||||
|
||||
USER_PERMISSIONS_SETTINGS_INTERFACE = os.environ.get('USER_PERMISSIONS_SETTINGS_INTERFACE', 'True').lower() == 'true'
|
||||
|
||||
|
|
@ -1504,6 +1510,7 @@ DEFAULT_USER_PERMISSIONS = {
|
|||
'image_generation': USER_PERMISSIONS_FEATURES_IMAGE_GENERATION,
|
||||
'code_interpreter': USER_PERMISSIONS_FEATURES_CODE_INTERPRETER,
|
||||
'memories': USER_PERMISSIONS_FEATURES_MEMORIES,
|
||||
'automations': USER_PERMISSIONS_FEATURES_AUTOMATIONS,
|
||||
},
|
||||
'settings': {
|
||||
'interface': USER_PERMISSIONS_SETTINGS_INTERFACE,
|
||||
|
|
@ -3102,7 +3109,7 @@ WEB_SEARCH_CONCURRENT_REQUESTS = PersistentConfig(
|
|||
|
||||
WEB_FETCH_MAX_CONTENT_LENGTH = PersistentConfig(
|
||||
'WEB_FETCH_MAX_CONTENT_LENGTH',
|
||||
'rag.web.search.fetch_url_max_content_length',
|
||||
'rag.web.fetch.max_content_length',
|
||||
(int(os.environ.get('WEB_FETCH_MAX_CONTENT_LENGTH')) if os.environ.get('WEB_FETCH_MAX_CONTENT_LENGTH') else None),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ from open_webui.routers import (
|
|||
utils,
|
||||
scim,
|
||||
terminals,
|
||||
automations,
|
||||
)
|
||||
|
||||
from open_webui.routers.retrieval import (
|
||||
|
|
@ -651,6 +652,10 @@ async def lifespan(app: FastAPI):
|
|||
asyncio.create_task(periodic_usage_pool_cleanup())
|
||||
asyncio.create_task(periodic_session_pool_cleanup())
|
||||
|
||||
from open_webui.utils.automations import automation_worker_loop
|
||||
|
||||
asyncio.create_task(automation_worker_loop(app))
|
||||
|
||||
if app.state.config.ENABLE_BASE_MODELS_CACHE:
|
||||
try:
|
||||
await get_all_models(
|
||||
|
|
@ -1528,6 +1533,7 @@ if ENABLE_ADMIN_ANALYTICS:
|
|||
app.include_router(analytics.router, prefix='/api/v1/analytics', tags=['analytics'])
|
||||
app.include_router(utils.router, prefix='/api/v1/utils', tags=['utils'])
|
||||
app.include_router(terminals.router, prefix='/api/v1/terminals', tags=['terminals'])
|
||||
app.include_router(automations.router, prefix='/api/v1/automations', tags=['automations'])
|
||||
|
||||
# SCIM 2.0 API for identity management
|
||||
if ENABLE_SCIM:
|
||||
|
|
@ -1847,13 +1853,28 @@ async def chat_completion(
|
|||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
# Clean up MCP clients. Shield the entire block from
|
||||
# CancelledError so disconnect() can finish even when the
|
||||
# task is being stopped. Each client is isolated so one
|
||||
# failure doesn't skip the rest.
|
||||
try:
|
||||
if mcp_clients := metadata.get('mcp_clients'):
|
||||
for client in reversed(mcp_clients.values()):
|
||||
await client.disconnect()
|
||||
|
||||
async def _cleanup_mcp():
|
||||
for client in reversed(list(mcp_clients.values())):
|
||||
try:
|
||||
await client.disconnect()
|
||||
except Exception as e:
|
||||
log.debug(f'Error disconnecting MCP client: {e}')
|
||||
|
||||
await asyncio.wait_for(
|
||||
asyncio.shield(_cleanup_mcp()),
|
||||
timeout=10.0,
|
||||
)
|
||||
except asyncio.TimeoutError:
|
||||
log.warning('MCP client cleanup timed out after 10 s')
|
||||
except Exception as e:
|
||||
log.debug(f'Error cleaning up: {e}')
|
||||
pass
|
||||
log.debug(f'Error cleaning up MCP clients: {e}')
|
||||
# Emit chat:active=false when task completes
|
||||
try:
|
||||
if metadata.get('chat_id'):
|
||||
|
|
@ -1883,6 +1904,10 @@ async def chat_completion(
|
|||
generate_chat_completions = chat_completion
|
||||
generate_chat_completion = chat_completion
|
||||
|
||||
# Expose as app.state so internal callers (e.g. automations) can
|
||||
# use the full pipeline without importing from main.py (avoids circular deps).
|
||||
app.state.CHAT_COMPLETION_HANDLER = chat_completion
|
||||
|
||||
|
||||
##################################
|
||||
#
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
"""add last_read_at to chat
|
||||
|
||||
Revision ID: b7c8d9e0f1a2
|
||||
Revises: d4e5f6a7b8c9
|
||||
Create Date: 2026-04-01 04:00:00.000000
|
||||
|
||||
"""
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'b7c8d9e0f1a2'
|
||||
down_revision = 'd4e5f6a7b8c9'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('chat', sa.Column('last_read_at', sa.BigInteger(), nullable=True))
|
||||
# Set existing chats to be marked as read
|
||||
op.execute('UPDATE chat SET last_read_at = updated_at')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_column('chat', 'last_read_at')
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
"""add automation tables
|
||||
|
||||
Revision ID: d4e5f6a7b8c9
|
||||
Revises: f1e2d3c4b5a6
|
||||
Create Date: 2026-03-30
|
||||
"""
|
||||
|
||||
from typing import Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision: str = 'd4e5f6a7b8c9'
|
||||
down_revision: Union[str, None] = 'a3dd5bedd151'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.create_table(
|
||||
'automation',
|
||||
sa.Column('id', sa.Text(), primary_key=True),
|
||||
sa.Column('user_id', sa.Text(), nullable=False),
|
||||
sa.Column('name', sa.Text(), nullable=False),
|
||||
sa.Column('data', sa.JSON(), nullable=False),
|
||||
sa.Column('meta', sa.JSON(), nullable=True),
|
||||
sa.Column(
|
||||
'is_active',
|
||||
sa.Boolean(),
|
||||
nullable=False,
|
||||
server_default=sa.text('1'),
|
||||
),
|
||||
sa.Column('last_run_at', sa.BigInteger(), nullable=True),
|
||||
sa.Column('next_run_at', sa.BigInteger(), nullable=True),
|
||||
sa.Column('created_at', sa.BigInteger(), nullable=False),
|
||||
sa.Column('updated_at', sa.BigInteger(), nullable=False),
|
||||
)
|
||||
op.create_index('ix_automation_next_run', 'automation', ['next_run_at'])
|
||||
|
||||
op.create_table(
|
||||
'automation_run',
|
||||
sa.Column('id', sa.Text(), primary_key=True),
|
||||
sa.Column('automation_id', sa.Text(), nullable=False),
|
||||
sa.Column('chat_id', sa.Text(), nullable=True),
|
||||
sa.Column('status', sa.Text(), nullable=False),
|
||||
sa.Column('error', sa.Text(), nullable=True),
|
||||
sa.Column('created_at', sa.BigInteger(), nullable=False),
|
||||
)
|
||||
op.create_index(
|
||||
'ix_automation_run_automation_id',
|
||||
'automation_run',
|
||||
['automation_id'],
|
||||
)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_index('ix_automation_run_automation_id')
|
||||
op.drop_table('automation_run')
|
||||
op.drop_index('ix_automation_next_run')
|
||||
op.drop_table('automation')
|
||||
337
backend/open_webui/models/automations.py
Normal file
337
backend/open_webui/models/automations.py
Normal file
|
|
@ -0,0 +1,337 @@
|
|||
import time
|
||||
import logging
|
||||
from typing import Optional
|
||||
from uuid import uuid4
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from sqlalchemy import Column, Text, JSON, Boolean, BigInteger, Index, select, or_, func, cast, String
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from open_webui.internal.db import Base, get_db, get_db_context
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
####################
|
||||
# Automation DB Schema
|
||||
####################
|
||||
|
||||
|
||||
class Automation(Base):
|
||||
__tablename__ = 'automation'
|
||||
|
||||
id = Column(Text, primary_key=True)
|
||||
user_id = Column(Text, nullable=False)
|
||||
name = Column(Text, nullable=False)
|
||||
data = Column(JSON, nullable=False) # {prompt, model_id, rrule}
|
||||
meta = Column(JSON, nullable=True)
|
||||
is_active = Column(Boolean, nullable=False, default=True)
|
||||
last_run_at = Column(BigInteger, nullable=True)
|
||||
next_run_at = Column(BigInteger, nullable=True)
|
||||
|
||||
created_at = Column(BigInteger, nullable=False)
|
||||
updated_at = Column(BigInteger, nullable=False)
|
||||
|
||||
__table_args__ = (Index('ix_automation_next_run', 'next_run_at'),)
|
||||
|
||||
|
||||
class AutomationRun(Base):
|
||||
__tablename__ = 'automation_run'
|
||||
|
||||
id = Column(Text, primary_key=True)
|
||||
automation_id = Column(Text, nullable=False)
|
||||
chat_id = Column(Text, nullable=True)
|
||||
status = Column(Text, nullable=False) # success | error
|
||||
error = Column(Text, nullable=True)
|
||||
created_at = Column(BigInteger, nullable=False)
|
||||
|
||||
__table_args__ = (Index('ix_automation_run_automation_id', 'automation_id'),)
|
||||
|
||||
|
||||
####################
|
||||
# Pydantic Models
|
||||
####################
|
||||
|
||||
|
||||
class AutomationTerminalConfig(BaseModel):
|
||||
server_id: str
|
||||
cwd: Optional[str] = None
|
||||
|
||||
|
||||
class AutomationData(BaseModel):
|
||||
prompt: str
|
||||
model_id: str
|
||||
rrule: str
|
||||
terminal: Optional[AutomationTerminalConfig] = None
|
||||
|
||||
|
||||
class AutomationModel(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: str
|
||||
user_id: str
|
||||
name: str
|
||||
data: dict
|
||||
meta: Optional[dict] = None
|
||||
is_active: bool
|
||||
last_run_at: Optional[int] = None
|
||||
next_run_at: Optional[int] = None
|
||||
|
||||
created_at: int
|
||||
updated_at: int
|
||||
|
||||
|
||||
class AutomationRunModel(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: str
|
||||
automation_id: str
|
||||
chat_id: Optional[str] = None
|
||||
status: str
|
||||
error: Optional[str] = None
|
||||
created_at: int
|
||||
|
||||
|
||||
class AutomationForm(BaseModel):
|
||||
name: str
|
||||
data: AutomationData
|
||||
meta: Optional[dict] = None
|
||||
is_active: Optional[bool] = True
|
||||
|
||||
|
||||
class AutomationResponse(AutomationModel):
|
||||
last_run: Optional[AutomationRunModel] = None
|
||||
next_runs: Optional[list[int]] = None
|
||||
|
||||
|
||||
class AutomationListResponse(BaseModel):
|
||||
items: list[AutomationModel]
|
||||
total: int
|
||||
|
||||
|
||||
####################
|
||||
# AutomationTable
|
||||
####################
|
||||
|
||||
|
||||
class AutomationTable:
|
||||
def insert(
|
||||
self,
|
||||
user_id: str,
|
||||
form: AutomationForm,
|
||||
next_run_at: int,
|
||||
db: Optional[Session] = None,
|
||||
) -> AutomationModel:
|
||||
with get_db_context(db) as db:
|
||||
now = int(time.time_ns())
|
||||
row = Automation(
|
||||
id=str(uuid4()),
|
||||
user_id=user_id,
|
||||
name=form.name,
|
||||
data=form.data.model_dump(),
|
||||
meta=form.meta,
|
||||
is_active=form.is_active,
|
||||
next_run_at=next_run_at,
|
||||
created_at=now,
|
||||
updated_at=now,
|
||||
)
|
||||
db.add(row)
|
||||
db.commit()
|
||||
db.refresh(row)
|
||||
return AutomationModel.model_validate(row)
|
||||
|
||||
def get_by_id(self, id: str, db: Optional[Session] = None) -> Optional[AutomationModel]:
|
||||
with get_db_context(db) as db:
|
||||
row = db.get(Automation, id)
|
||||
return AutomationModel.model_validate(row) if row else None
|
||||
|
||||
def search_automations(
|
||||
self,
|
||||
user_id: str,
|
||||
query: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
skip: int = 0,
|
||||
limit: int = 30,
|
||||
db: Optional[Session] = None,
|
||||
) -> 'AutomationListResponse':
|
||||
with get_db_context(db) as db:
|
||||
q = db.query(Automation).filter_by(user_id=user_id)
|
||||
|
||||
if query:
|
||||
search = f'%{query}%'
|
||||
# Search in name and prompt inside JSON data
|
||||
q = q.filter(
|
||||
or_(
|
||||
Automation.name.ilike(search),
|
||||
cast(Automation.data, String).ilike(search),
|
||||
)
|
||||
)
|
||||
|
||||
if status == 'active':
|
||||
q = q.filter(Automation.is_active == True)
|
||||
elif status == 'paused':
|
||||
q = q.filter(Automation.is_active == False)
|
||||
|
||||
q = q.order_by(Automation.created_at.desc())
|
||||
|
||||
total = q.count()
|
||||
|
||||
if skip:
|
||||
q = q.offset(skip)
|
||||
if limit:
|
||||
q = q.limit(limit)
|
||||
|
||||
rows = q.all()
|
||||
return AutomationListResponse(
|
||||
items=[AutomationModel.model_validate(r) for r in rows],
|
||||
total=total,
|
||||
)
|
||||
|
||||
def update_by_id(
|
||||
self,
|
||||
id: str,
|
||||
form: AutomationForm,
|
||||
next_run_at: int,
|
||||
db: Optional[Session] = None,
|
||||
) -> Optional[AutomationModel]:
|
||||
with get_db_context(db) as db:
|
||||
row = db.get(Automation, id)
|
||||
if not row:
|
||||
return None
|
||||
row.name = form.name
|
||||
row.data = form.data.model_dump()
|
||||
row.meta = form.meta
|
||||
if form.is_active is not None:
|
||||
row.is_active = form.is_active
|
||||
row.next_run_at = next_run_at
|
||||
row.updated_at = int(time.time_ns())
|
||||
db.commit()
|
||||
db.refresh(row)
|
||||
return AutomationModel.model_validate(row)
|
||||
|
||||
def toggle(
|
||||
self,
|
||||
id: str,
|
||||
next_run_at: Optional[int],
|
||||
db: Optional[Session] = None,
|
||||
) -> Optional[AutomationModel]:
|
||||
with get_db_context(db) as db:
|
||||
row = db.get(Automation, id)
|
||||
if not row:
|
||||
return None
|
||||
row.is_active = not row.is_active
|
||||
row.next_run_at = next_run_at if row.is_active else None
|
||||
row.updated_at = int(time.time_ns())
|
||||
db.commit()
|
||||
db.refresh(row)
|
||||
return AutomationModel.model_validate(row)
|
||||
|
||||
def delete(self, id: str, db: Optional[Session] = None) -> bool:
|
||||
with get_db_context(db) as db:
|
||||
row = db.get(Automation, id)
|
||||
if not row:
|
||||
return False
|
||||
db.delete(row)
|
||||
db.commit()
|
||||
return True
|
||||
|
||||
def claim_due(self, now_ns: int, limit: int = 10, db: Optional[Session] = None) -> list[AutomationModel]:
|
||||
"""
|
||||
Atomically claim due automations for execution.
|
||||
|
||||
Advances next_run_at immediately so the row can never be
|
||||
double-claimed. On PostgreSQL, uses FOR UPDATE SKIP LOCKED
|
||||
for zero-contention distributed work claiming.
|
||||
"""
|
||||
with get_db_context(db) as db:
|
||||
stmt = (
|
||||
select(Automation)
|
||||
.where(
|
||||
Automation.is_active == True,
|
||||
Automation.next_run_at <= now_ns,
|
||||
)
|
||||
.order_by(Automation.next_run_at)
|
||||
.limit(limit)
|
||||
)
|
||||
|
||||
if db.bind.dialect.name == 'postgresql':
|
||||
stmt = stmt.with_for_update(skip_locked=True)
|
||||
|
||||
rows = db.execute(stmt).scalars().all()
|
||||
|
||||
from open_webui.utils.automations import next_run_ns
|
||||
|
||||
for row in rows:
|
||||
row.last_run_at = now_ns
|
||||
row.next_run_at = next_run_ns(row.data.get('rrule', ''))
|
||||
|
||||
db.commit()
|
||||
|
||||
return [AutomationModel.model_validate(r) for r in rows]
|
||||
|
||||
|
||||
####################
|
||||
# AutomationRunTable
|
||||
####################
|
||||
|
||||
|
||||
class AutomationRunTable:
|
||||
def insert(
|
||||
self,
|
||||
automation_id: str,
|
||||
status: str,
|
||||
chat_id: Optional[str] = None,
|
||||
error: Optional[str] = None,
|
||||
db: Optional[Session] = None,
|
||||
) -> AutomationRunModel:
|
||||
with get_db_context(db) as db:
|
||||
row = AutomationRun(
|
||||
id=str(uuid4()),
|
||||
automation_id=automation_id,
|
||||
chat_id=chat_id,
|
||||
status=status,
|
||||
error=error,
|
||||
created_at=int(time.time_ns()),
|
||||
)
|
||||
db.add(row)
|
||||
db.commit()
|
||||
db.refresh(row)
|
||||
return AutomationRunModel.model_validate(row)
|
||||
|
||||
def get_latest(self, automation_id: str, db: Optional[Session] = None) -> Optional[AutomationRunModel]:
|
||||
with get_db_context(db) as db:
|
||||
row = (
|
||||
db.query(AutomationRun)
|
||||
.filter_by(automation_id=automation_id)
|
||||
.order_by(AutomationRun.created_at.desc())
|
||||
.first()
|
||||
)
|
||||
return AutomationRunModel.model_validate(row) if row else None
|
||||
|
||||
def get_by_automation(
|
||||
self,
|
||||
automation_id: str,
|
||||
skip: int = 0,
|
||||
limit: int = 50,
|
||||
db: Optional[Session] = None,
|
||||
) -> list[AutomationRunModel]:
|
||||
with get_db_context(db) as db:
|
||||
rows = (
|
||||
db.query(AutomationRun)
|
||||
.filter_by(automation_id=automation_id)
|
||||
.order_by(AutomationRun.created_at.desc())
|
||||
.offset(skip)
|
||||
.limit(limit)
|
||||
.all()
|
||||
)
|
||||
return [AutomationRunModel.model_validate(r) for r in rows]
|
||||
|
||||
def delete_by_automation(self, automation_id: str, db: Optional[Session] = None) -> int:
|
||||
with get_db_context(db) as db:
|
||||
count = db.query(AutomationRun).filter_by(automation_id=automation_id).delete()
|
||||
db.commit()
|
||||
return count
|
||||
|
||||
|
||||
Automations = AutomationTable()
|
||||
AutomationRuns = AutomationRunTable()
|
||||
|
|
@ -169,7 +169,10 @@ class ChatMessageTable:
|
|||
info = data.get('info', {})
|
||||
usage = info.get('usage') if info else None
|
||||
if usage:
|
||||
existing.usage = usage
|
||||
# Deep-merge: preserve existing keys not present in new data
|
||||
# This prevents background tasks (follow-ups, title, tags)
|
||||
# from accidentally clearing the primary response's token counts
|
||||
existing.usage = {**(existing.usage or {}), **usage}
|
||||
existing.updated_at = now
|
||||
db.commit()
|
||||
db.refresh(existing)
|
||||
|
|
|
|||
|
|
@ -57,6 +57,8 @@ class Chat(Base):
|
|||
tasks = Column(JSON, nullable=True)
|
||||
summary = Column(Text, nullable=True)
|
||||
|
||||
last_read_at = Column(BigInteger, nullable=True)
|
||||
|
||||
__table_args__ = (
|
||||
# Performance indexes for common queries
|
||||
# WHERE folder_id = ...
|
||||
|
|
@ -93,6 +95,8 @@ class ChatModel(BaseModel):
|
|||
tasks: Optional[list] = None
|
||||
summary: Optional[str] = None
|
||||
|
||||
last_read_at: Optional[int] = None
|
||||
|
||||
|
||||
class ChatFile(Base):
|
||||
__tablename__ = 'chat_file'
|
||||
|
|
@ -176,6 +180,7 @@ class ChatTitleIdResponse(BaseModel):
|
|||
title: str
|
||||
updated_at: int
|
||||
created_at: int
|
||||
last_read_at: Optional[int] = None
|
||||
|
||||
|
||||
class SharedChatResponse(BaseModel):
|
||||
|
|
@ -397,16 +402,34 @@ class ChatTable:
|
|||
except Exception:
|
||||
return None
|
||||
|
||||
def update_chat_last_read_at_by_id(self, id: str, user_id: str, db: Optional[Session] = None) -> bool:
|
||||
try:
|
||||
with get_db_context(db) as db:
|
||||
chat = db.get(Chat, id)
|
||||
if chat and chat.user_id == user_id:
|
||||
chat.last_read_at = int(time.time())
|
||||
db.commit()
|
||||
return True
|
||||
return False
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def update_chat_title_by_id(self, id: str, title: str) -> Optional[ChatModel]:
|
||||
chat = self.get_chat_by_id(id)
|
||||
if chat is None:
|
||||
try:
|
||||
with get_db_context() as db:
|
||||
chat_item = db.get(Chat, id)
|
||||
if chat_item is None:
|
||||
return None
|
||||
clean_title = self._clean_null_bytes(title)
|
||||
chat_item.title = clean_title
|
||||
chat_item.chat = {**(chat_item.chat or {}), 'title': clean_title}
|
||||
chat_item.updated_at = int(time.time())
|
||||
db.commit()
|
||||
db.refresh(chat_item)
|
||||
return ChatModel.model_validate(chat_item)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
chat = chat.chat
|
||||
chat['title'] = title
|
||||
|
||||
return self.update_chat_by_id(id, chat)
|
||||
|
||||
def update_chat_tags_by_id(self, id: str, tags: list[str], user) -> Optional[ChatModel]:
|
||||
with get_db_context() as db:
|
||||
chat = db.get(Chat, id)
|
||||
|
|
@ -779,7 +802,7 @@ class ChatTable:
|
|||
skip: int = 0,
|
||||
limit: int = 50,
|
||||
db: Optional[Session] = None,
|
||||
) -> list[ChatModel]:
|
||||
) -> list[ChatTitleIdResponse]:
|
||||
with get_db_context(db) as db:
|
||||
query = db.query(Chat).filter_by(user_id=user_id)
|
||||
if not include_archived:
|
||||
|
|
@ -803,13 +826,28 @@ class ChatTable:
|
|||
else:
|
||||
query = query.order_by(Chat.updated_at.desc(), Chat.id)
|
||||
|
||||
query = query.with_entities(
|
||||
Chat.id, Chat.title, Chat.updated_at, Chat.created_at, Chat.last_read_at
|
||||
)
|
||||
|
||||
if skip:
|
||||
query = query.offset(skip)
|
||||
if limit:
|
||||
query = query.limit(limit)
|
||||
|
||||
all_chats = query.all()
|
||||
return [ChatModel.model_validate(chat) for chat in all_chats]
|
||||
return [
|
||||
ChatTitleIdResponse.model_validate(
|
||||
{
|
||||
'id': chat[0],
|
||||
'title': chat[1],
|
||||
'updated_at': chat[2],
|
||||
'created_at': chat[3],
|
||||
'last_read_at': chat[4],
|
||||
}
|
||||
)
|
||||
for chat in all_chats
|
||||
]
|
||||
|
||||
def get_chat_title_id_list_by_user_id(
|
||||
self,
|
||||
|
|
@ -834,7 +872,7 @@ class ChatTable:
|
|||
query = query.filter_by(archived=False)
|
||||
|
||||
query = query.order_by(Chat.updated_at.desc(), Chat.id).with_entities(
|
||||
Chat.id, Chat.title, Chat.updated_at, Chat.created_at
|
||||
Chat.id, Chat.title, Chat.updated_at, Chat.created_at, Chat.last_read_at
|
||||
)
|
||||
|
||||
if skip:
|
||||
|
|
@ -852,6 +890,7 @@ class ChatTable:
|
|||
'title': chat[1],
|
||||
'updated_at': chat[2],
|
||||
'created_at': chat[3],
|
||||
'last_read_at': chat[4],
|
||||
}
|
||||
)
|
||||
for chat in all_chats
|
||||
|
|
@ -995,7 +1034,7 @@ class ChatTable:
|
|||
db.query(Chat)
|
||||
.filter_by(user_id=user_id, pinned=True, archived=False)
|
||||
.order_by(Chat.updated_at.desc())
|
||||
.with_entities(Chat.id, Chat.title, Chat.updated_at, Chat.created_at)
|
||||
.with_entities(Chat.id, Chat.title, Chat.updated_at, Chat.created_at, Chat.last_read_at)
|
||||
)
|
||||
return [
|
||||
ChatTitleIdResponse.model_validate(
|
||||
|
|
@ -1004,6 +1043,7 @@ class ChatTable:
|
|||
'title': chat[1],
|
||||
'updated_at': chat[2],
|
||||
'created_at': chat[3],
|
||||
'last_read_at': chat[4],
|
||||
}
|
||||
)
|
||||
for chat in all_chats
|
||||
|
|
@ -1214,7 +1254,7 @@ class ChatTable:
|
|||
skip: int = 0,
|
||||
limit: int = 60,
|
||||
db: Optional[Session] = None,
|
||||
) -> list[ChatModel]:
|
||||
) -> list[ChatTitleIdResponse]:
|
||||
with get_db_context(db) as db:
|
||||
query = db.query(Chat).filter_by(folder_id=folder_id, user_id=user_id)
|
||||
query = query.filter(or_(Chat.pinned == False, Chat.pinned == None))
|
||||
|
|
@ -1222,13 +1262,28 @@ class ChatTable:
|
|||
|
||||
query = query.order_by(Chat.updated_at.desc(), Chat.id)
|
||||
|
||||
query = query.with_entities(
|
||||
Chat.id, Chat.title, Chat.updated_at, Chat.created_at, Chat.last_read_at
|
||||
)
|
||||
|
||||
if skip:
|
||||
query = query.offset(skip)
|
||||
if limit:
|
||||
query = query.limit(limit)
|
||||
|
||||
all_chats = query.all()
|
||||
return [ChatModel.model_validate(chat) for chat in all_chats]
|
||||
return [
|
||||
ChatTitleIdResponse.model_validate(
|
||||
{
|
||||
'id': chat[0],
|
||||
'title': chat[1],
|
||||
'updated_at': chat[2],
|
||||
'created_at': chat[3],
|
||||
'last_read_at': chat[4],
|
||||
}
|
||||
)
|
||||
for chat in all_chats
|
||||
]
|
||||
|
||||
def get_chats_by_folder_ids_and_user_id(
|
||||
self, folder_ids: list[str], user_id: str, db: Optional[Session] = None
|
||||
|
|
@ -1271,7 +1326,7 @@ class ChatTable:
|
|||
skip: int = 0,
|
||||
limit: int = 50,
|
||||
db: Optional[Session] = None,
|
||||
) -> list[ChatModel]:
|
||||
) -> list[ChatTitleIdResponse]:
|
||||
with get_db_context(db) as db:
|
||||
query = db.query(Chat).filter_by(user_id=user_id)
|
||||
tag_id = tag_name.replace(' ', '_').lower()
|
||||
|
|
@ -1290,9 +1345,30 @@ class ChatTable:
|
|||
else:
|
||||
raise NotImplementedError(f'Unsupported dialect: {db.bind.dialect.name}')
|
||||
|
||||
query = query.order_by(Chat.updated_at.desc(), Chat.id)
|
||||
|
||||
query = query.with_entities(
|
||||
Chat.id, Chat.title, Chat.updated_at, Chat.created_at, Chat.last_read_at
|
||||
)
|
||||
|
||||
if skip:
|
||||
query = query.offset(skip)
|
||||
if limit:
|
||||
query = query.limit(limit)
|
||||
|
||||
all_chats = query.all()
|
||||
log.debug(f'all_chats: {all_chats}')
|
||||
return [ChatModel.model_validate(chat) for chat in all_chats]
|
||||
return [
|
||||
ChatTitleIdResponse.model_validate(
|
||||
{
|
||||
'id': chat[0],
|
||||
'title': chat[1],
|
||||
'updated_at': chat[2],
|
||||
'created_at': chat[3],
|
||||
'last_read_at': chat[4],
|
||||
}
|
||||
)
|
||||
for chat in all_chats
|
||||
]
|
||||
|
||||
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
|
||||
|
|
|
|||
272
backend/open_webui/routers/automations.py
Normal file
272
backend/open_webui/routers/automations.py
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
import asyncio
|
||||
import logging
|
||||
|
||||
from typing import Optional
|
||||
from fastapi import APIRouter, Depends, HTTPException, Request, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from open_webui.models.automations import (
|
||||
Automations,
|
||||
AutomationRuns,
|
||||
AutomationForm,
|
||||
AutomationModel,
|
||||
AutomationResponse,
|
||||
AutomationRunModel,
|
||||
AutomationListResponse,
|
||||
)
|
||||
from open_webui.utils.automations import (
|
||||
validate_rrule,
|
||||
next_run_ns,
|
||||
next_n_runs_ns,
|
||||
execute_automation,
|
||||
)
|
||||
from open_webui.utils.auth import get_verified_user, get_admin_user
|
||||
from open_webui.utils.access_control import has_permission
|
||||
from open_webui.internal.db import get_session
|
||||
from open_webui.constants import ERROR_MESSAGES
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
PAGE_ITEM_COUNT = 30
|
||||
|
||||
|
||||
############################
|
||||
# Helpers
|
||||
############################
|
||||
|
||||
|
||||
def check_automations_permission(request, user):
|
||||
if user.role != 'admin' and not has_permission(
|
||||
user.id, 'features.automations', request.app.state.config.USER_PERMISSIONS
|
||||
):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail=ERROR_MESSAGES.UNAUTHORIZED,
|
||||
)
|
||||
|
||||
|
||||
def check_automation_access(automation, user):
|
||||
if not automation:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=ERROR_MESSAGES.NOT_FOUND,
|
||||
)
|
||||
if user.role != 'admin' and user.id != automation.user_id:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail=ERROR_MESSAGES.UNAUTHORIZED,
|
||||
)
|
||||
|
||||
|
||||
def enrich_automation(automation: AutomationModel, db: Session, tz: str = None) -> AutomationResponse:
|
||||
last_run = AutomationRuns.get_latest(automation.id, db=db)
|
||||
return AutomationResponse(
|
||||
**automation.model_dump(),
|
||||
last_run=last_run,
|
||||
next_runs=next_n_runs_ns(automation.data['rrule'], tz=tz),
|
||||
)
|
||||
|
||||
|
||||
############################
|
||||
# GetAutomationItems (paginated)
|
||||
############################
|
||||
|
||||
|
||||
@router.get('/list')
|
||||
async def get_automation_items(
|
||||
request: Request,
|
||||
query: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
page: Optional[int] = 1,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
limit = PAGE_ITEM_COUNT
|
||||
page = max(1, page)
|
||||
skip = (page - 1) * limit
|
||||
|
||||
result = Automations.search_automations(
|
||||
user_id=user.id,
|
||||
query=query,
|
||||
status=status,
|
||||
skip=skip,
|
||||
limit=limit,
|
||||
db=db,
|
||||
)
|
||||
|
||||
return {
|
||||
'items': [enrich_automation(item, db, tz=user.timezone) for item in result.items],
|
||||
'total': result.total,
|
||||
}
|
||||
|
||||
|
||||
############################
|
||||
# CreateNewAutomation
|
||||
############################
|
||||
|
||||
|
||||
@router.post('/create', response_model=AutomationResponse)
|
||||
async def create_new_automation(
|
||||
request: Request,
|
||||
form_data: AutomationForm,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
try:
|
||||
validate_rrule(form_data.data.rrule)
|
||||
except ValueError as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail=str(e),
|
||||
)
|
||||
|
||||
# Validate terminal server exists if linked
|
||||
if form_data.data.terminal and form_data.data.terminal.server_id:
|
||||
connections = request.app.state.config.TERMINAL_SERVER_CONNECTIONS or []
|
||||
if not any(c.get('id') == form_data.data.terminal.server_id for c in connections):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail='Terminal server not found',
|
||||
)
|
||||
|
||||
tz = user.timezone
|
||||
automation = Automations.insert(user.id, form_data, next_run_ns(form_data.data.rrule, tz=tz), db=db)
|
||||
return enrich_automation(automation, db, tz=tz)
|
||||
|
||||
|
||||
############################
|
||||
# GetAutomationById
|
||||
############################
|
||||
|
||||
|
||||
@router.get('/{id}', response_model=AutomationResponse)
|
||||
async def get_automation_by_id(
|
||||
request: Request,
|
||||
id: str,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
automation = Automations.get_by_id(id, db=db)
|
||||
check_automation_access(automation, user)
|
||||
return enrich_automation(automation, db, tz=user.timezone)
|
||||
|
||||
|
||||
############################
|
||||
# UpdateAutomationById
|
||||
############################
|
||||
|
||||
|
||||
@router.post('/{id}/update', response_model=AutomationResponse)
|
||||
async def update_automation_by_id(
|
||||
request: Request,
|
||||
id: str,
|
||||
form_data: AutomationForm,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
automation = Automations.get_by_id(id, db=db)
|
||||
check_automation_access(automation, user)
|
||||
|
||||
try:
|
||||
validate_rrule(form_data.data.rrule)
|
||||
except ValueError as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail=str(e),
|
||||
)
|
||||
|
||||
# Validate terminal server exists if linked
|
||||
if form_data.data.terminal and form_data.data.terminal.server_id:
|
||||
connections = request.app.state.config.TERMINAL_SERVER_CONNECTIONS or []
|
||||
if not any(c.get('id') == form_data.data.terminal.server_id for c in connections):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail='Terminal server not found',
|
||||
)
|
||||
|
||||
tz = user.timezone
|
||||
updated = Automations.update_by_id(id, form_data, next_run_ns(form_data.data.rrule, tz=tz), db=db)
|
||||
return enrich_automation(updated, db, tz=tz)
|
||||
|
||||
|
||||
############################
|
||||
# ToggleAutomationById
|
||||
############################
|
||||
|
||||
|
||||
@router.post('/{id}/toggle', response_model=AutomationResponse)
|
||||
async def toggle_automation_by_id(
|
||||
request: Request,
|
||||
id: str,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
automation = Automations.get_by_id(id, db=db)
|
||||
check_automation_access(automation, user)
|
||||
toggled = Automations.toggle(id, next_run_ns(automation.data['rrule'], tz=user.timezone), db=db)
|
||||
return enrich_automation(toggled, db, tz=user.timezone)
|
||||
|
||||
|
||||
############################
|
||||
# RunAutomationById
|
||||
############################
|
||||
|
||||
|
||||
@router.post('/{id}/run')
|
||||
async def run_automation_by_id(
|
||||
request: Request,
|
||||
id: str,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
automation = Automations.get_by_id(id, db=db)
|
||||
check_automation_access(automation, user)
|
||||
asyncio.create_task(execute_automation(request.app, automation))
|
||||
return enrich_automation(automation, db, tz=user.timezone)
|
||||
|
||||
|
||||
############################
|
||||
# DeleteAutomationById
|
||||
############################
|
||||
|
||||
|
||||
@router.delete('/{id}/delete')
|
||||
async def delete_automation_by_id(
|
||||
request: Request,
|
||||
id: str,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
automation = Automations.get_by_id(id, db=db)
|
||||
check_automation_access(automation, user)
|
||||
AutomationRuns.delete_by_automation(id, db=db)
|
||||
return Automations.delete(id, db=db)
|
||||
|
||||
|
||||
############################
|
||||
# GetAutomationRuns
|
||||
############################
|
||||
|
||||
|
||||
@router.get('/{id}/runs', response_model=list[AutomationRunModel])
|
||||
async def get_automation_runs(
|
||||
request: Request,
|
||||
id: str,
|
||||
skip: int = 0,
|
||||
limit: int = 50,
|
||||
user=Depends(get_verified_user),
|
||||
db: Session = Depends(get_session),
|
||||
):
|
||||
check_automations_permission(request, user)
|
||||
automation = Automations.get_by_id(id, db=db)
|
||||
check_automation_access(automation, user)
|
||||
return AutomationRuns.get_by_automation(id, skip=skip, limit=limit, db=db)
|
||||
|
|
@ -643,9 +643,10 @@ async def get_chat_list_by_folder_id(
|
|||
limit = 10
|
||||
skip = (page - 1) * limit
|
||||
|
||||
chats = Chats.get_chats_by_folder_id_and_user_id(folder_id, user.id, skip=skip, limit=limit, db=db)
|
||||
return [
|
||||
{'title': chat.title, 'id': chat.id, 'updated_at': chat.updated_at}
|
||||
for chat in Chats.get_chats_by_folder_id_and_user_id(folder_id, user.id, skip=skip, limit=limit, db=db)
|
||||
{'title': chat.title, 'id': chat.id, 'updated_at': chat.updated_at, 'last_read_at': chat.last_read_at}
|
||||
for chat in chats
|
||||
]
|
||||
|
||||
except Exception as e:
|
||||
|
|
|
|||
|
|
@ -579,9 +579,9 @@ class WebConfig(BaseModel):
|
|||
WEB_SEARCH_TRUST_ENV: Optional[bool] = None
|
||||
WEB_SEARCH_RESULT_COUNT: Optional[int] = None
|
||||
WEB_SEARCH_CONCURRENT_REQUESTS: Optional[int] = None
|
||||
WEB_SEARCH_DOMAIN_FILTER_LIST: Optional[List[str]] = []
|
||||
WEB_FETCH_MAX_CONTENT_LENGTH: Optional[int] = None
|
||||
WEB_LOADER_CONCURRENT_REQUESTS: Optional[int] = None
|
||||
WEB_SEARCH_DOMAIN_FILTER_LIST: Optional[List[str]] = []
|
||||
BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL: Optional[bool] = None
|
||||
BYPASS_WEB_SEARCH_WEB_LOADER: Optional[bool] = None
|
||||
OLLAMA_CLOUD_WEB_SEARCH_API_KEY: Optional[str] = None
|
||||
|
|
@ -1174,7 +1174,7 @@ async def update_rag_config(request: Request, form_data: ConfigForm, user=Depend
|
|||
'WEB_SEARCH_TRUST_ENV': request.app.state.config.WEB_SEARCH_TRUST_ENV,
|
||||
'WEB_SEARCH_RESULT_COUNT': request.app.state.config.WEB_SEARCH_RESULT_COUNT,
|
||||
'WEB_SEARCH_CONCURRENT_REQUESTS': request.app.state.config.WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||
'FETCH_URL_MAX_CONTENT_LENGTH': request.app.state.config.FETCH_URL_MAX_CONTENT_LENGTH,
|
||||
'WEB_FETCH_MAX_CONTENT_LENGTH': request.app.state.config.WEB_FETCH_MAX_CONTENT_LENGTH,
|
||||
'WEB_LOADER_CONCURRENT_REQUESTS': request.app.state.config.WEB_LOADER_CONCURRENT_REQUESTS,
|
||||
'WEB_SEARCH_DOMAIN_FILTER_LIST': request.app.state.config.WEB_SEARCH_DOMAIN_FILTER_LIST,
|
||||
'BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL': request.app.state.config.BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL,
|
||||
|
|
@ -2580,6 +2580,7 @@ async def process_files_batch(
|
|||
request: Request,
|
||||
form_data: BatchProcessFilesForm,
|
||||
user=Depends(get_verified_user),
|
||||
db=None,
|
||||
) -> BatchProcessFilesResponse:
|
||||
"""
|
||||
Process a batch of files and save them to the vector database.
|
||||
|
|
@ -2602,7 +2603,7 @@ async def process_files_batch(
|
|||
for file in form_data.files:
|
||||
try:
|
||||
# Ownership check: verify the requesting user owns the file or is an admin
|
||||
db_file = Files.get_file_by_id(file.id)
|
||||
db_file = Files.get_file_by_id(file.id, db=db)
|
||||
if not db_file:
|
||||
file_errors.append(
|
||||
BatchProcessFilesResult(
|
||||
|
|
@ -2664,7 +2665,7 @@ async def process_files_batch(
|
|||
|
||||
# Update all files with collection name
|
||||
for file_update, file_result in zip(file_updates, file_results):
|
||||
Files.update_file_by_id(id=file_result.file_id, form_data=file_update)
|
||||
Files.update_file_by_id(id=file_result.file_id, form_data=file_update, db=db)
|
||||
file_result.status = 'completed'
|
||||
|
||||
except Exception as e:
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ async def get_tools(
|
|||
auth_type = server.get('auth_type', 'none')
|
||||
|
||||
session_token = None
|
||||
if auth_type == 'oauth_2.1':
|
||||
if auth_type in ('oauth_2.1', 'oauth_2.1_static'):
|
||||
splits = server_id.split(':')
|
||||
server_id = splits[-1] if len(splits) > 1 else server_id
|
||||
|
||||
|
|
@ -148,7 +148,7 @@ async def get_tools(
|
|||
{
|
||||
'authenticated': session_token is not None,
|
||||
}
|
||||
if auth_type == 'oauth_2.1'
|
||||
if auth_type in ('oauth_2.1', 'oauth_2.1_static')
|
||||
else {}
|
||||
),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ class FeaturesPermissions(BaseModel):
|
|||
image_generation: bool = True
|
||||
code_interpreter: bool = True
|
||||
memories: bool = True
|
||||
automations: bool = False
|
||||
|
||||
|
||||
class SettingsPermissions(BaseModel):
|
||||
|
|
|
|||
|
|
@ -491,6 +491,19 @@ async def channel_events(sid, data):
|
|||
Channels.update_member_last_read_at(data['channel_id'], user['id'])
|
||||
|
||||
|
||||
@sio.on('events:chat')
|
||||
async def chat_events(sid, data):
|
||||
user = SESSION_POOL.get(sid)
|
||||
if not user:
|
||||
return
|
||||
|
||||
event_data = data.get('data', {})
|
||||
event_type = event_data.get('type')
|
||||
|
||||
if event_type == 'last_read_at':
|
||||
await asyncio.to_thread(Chats.update_chat_last_read_at_by_id, data['chat_id'], user['id'])
|
||||
|
||||
|
||||
def normalize_document_id(document_id: str) -> str:
|
||||
"""Canonicalize document IDs to prevent auth bypass via prefix variants.
|
||||
|
||||
|
|
@ -601,10 +614,10 @@ async def document_save_handler(document_id, data, user):
|
|||
user_id=user.get('id'),
|
||||
resource_type='note',
|
||||
resource_id=note.id,
|
||||
permission='read',
|
||||
permission='write',
|
||||
)
|
||||
):
|
||||
log.error(f'User {user.get("id")} does not have access to note {note_id}')
|
||||
log.error(f'User {user.get("id")} does not have write access to note {note_id}')
|
||||
return
|
||||
|
||||
Notes.update_note_by_id(note_id, NoteUpdateForm(data=data))
|
||||
|
|
|
|||
|
|
@ -2339,9 +2339,9 @@ VALID_TASK_STATUSES = {'pending', 'in_progress', 'completed', 'cancelled'}
|
|||
|
||||
|
||||
class TaskItem(BaseModel):
|
||||
id: Optional[str] = Field(None, description="Unique identifier for the task. Auto-generated if omitted.")
|
||||
content: Optional[str] = Field(None, description="Task description. Aliases: title, name, description.")
|
||||
status: Literal['pending', 'in_progress', 'completed', 'cancelled'] = Field('pending', description="Task status.")
|
||||
id: Optional[str] = Field(None, description='Unique identifier for the task. Auto-generated if omitted.')
|
||||
content: Optional[str] = Field(None, description='Task description. Aliases: title, name, description.')
|
||||
status: Literal['pending', 'in_progress', 'completed', 'cancelled'] = Field('pending', description='Task status.')
|
||||
|
||||
|
||||
async def tasks(
|
||||
|
|
|
|||
408
backend/open_webui/utils/automations.py
Normal file
408
backend/open_webui/utils/automations.py
Normal file
|
|
@ -0,0 +1,408 @@
|
|||
"""
|
||||
Automation utilities.
|
||||
|
||||
RRULE helpers, worker loop, and execution logic.
|
||||
Follows the utils/<feature>.py pattern (cf. utils/channels.py, utils/task.py).
|
||||
|
||||
Environment:
|
||||
AUTOMATION_POLL_INTERVAL – seconds between polls (default: 10)
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
import os
|
||||
import random
|
||||
import time
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
from uuid import uuid4
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from dateutil.rrule import rrulestr
|
||||
from fastapi import Request
|
||||
from starlette.datastructures import Headers
|
||||
|
||||
from open_webui.models.automations import Automations, AutomationRuns, AutomationModel
|
||||
from open_webui.models.chats import ChatForm, Chats
|
||||
from open_webui.models.users import Users
|
||||
from open_webui.utils.task import prompt_template
|
||||
from open_webui.internal.db import get_db
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
AUTOMATION_POLL_INTERVAL = int(os.getenv('AUTOMATION_POLL_INTERVAL', '10'))
|
||||
|
||||
|
||||
####################
|
||||
# RRULE Helpers
|
||||
####################
|
||||
|
||||
|
||||
def _parse_rule(s: str):
|
||||
"""Parse RRULE with clock-aligned DTSTART for sub-daily frequencies.
|
||||
|
||||
MINUTELY/HOURLY rules use a fixed epoch DTSTART (2000-01-01 00:00)
|
||||
so intervals snap to clock boundaries (e.g. every 5min = :00, :05, :10).
|
||||
"""
|
||||
raw = s.replace('RRULE:', '')
|
||||
parts = dict(p.split('=', 1) for p in raw.split(';') if '=' in p)
|
||||
freq = parts.get('FREQ', '')
|
||||
|
||||
if freq in ('MINUTELY', 'HOURLY'):
|
||||
epoch = datetime(2000, 1, 1, 0, 0, 0)
|
||||
return rrulestr(s, dtstart=epoch, ignoretz=True)
|
||||
return rrulestr(s, ignoretz=True)
|
||||
|
||||
|
||||
def validate_rrule(s: str) -> None:
|
||||
"""Raise ValueError if the RRULE is malformed or exhausted."""
|
||||
try:
|
||||
rule = _parse_rule(s)
|
||||
except Exception as e:
|
||||
raise ValueError(f'Invalid RRULE: {e}')
|
||||
if rule.after(datetime.now()) is None:
|
||||
raise ValueError('RRULE has no future occurrences')
|
||||
|
||||
|
||||
def next_run_ns(s: str, tz: str = None) -> Optional[int]:
|
||||
"""Next occurrence as epoch nanoseconds, respecting user timezone."""
|
||||
now = datetime.now(ZoneInfo(tz)) if tz else datetime.now()
|
||||
dt = _parse_rule(s).after(now.replace(tzinfo=None))
|
||||
if dt is None:
|
||||
return None
|
||||
if tz:
|
||||
dt = dt.replace(tzinfo=ZoneInfo(tz))
|
||||
return int(dt.timestamp() * 1_000_000_000)
|
||||
|
||||
|
||||
def next_n_runs_ns(s: str, n: int = 5, tz: str = None) -> list[int]:
|
||||
"""Compute next N occurrences for UI preview."""
|
||||
rule = _parse_rule(s)
|
||||
result = []
|
||||
dt = datetime.now()
|
||||
for _ in range(n):
|
||||
dt = rule.after(dt)
|
||||
if not dt:
|
||||
break
|
||||
if tz:
|
||||
dt_tz = dt.replace(tzinfo=ZoneInfo(tz))
|
||||
result.append(int(dt_tz.timestamp() * 1_000_000_000))
|
||||
else:
|
||||
result.append(int(dt.timestamp() * 1_000_000_000))
|
||||
return result
|
||||
|
||||
|
||||
############################
|
||||
# Worker Loop
|
||||
############################
|
||||
|
||||
|
||||
async def automation_worker_loop(app) -> None:
|
||||
"""Poll for due automations, claim, fire-and-forget execute.
|
||||
|
||||
Runs on every instance. Poll interval is configurable via
|
||||
AUTOMATION_POLL_INTERVAL env var (default: 10 seconds).
|
||||
"""
|
||||
log.info(f'Automation worker started (poll interval: {AUTOMATION_POLL_INTERVAL}s)')
|
||||
while True:
|
||||
try:
|
||||
with get_db() as db:
|
||||
batch = Automations.claim_due(int(time.time_ns()), limit=10, db=db)
|
||||
if batch:
|
||||
log.info(f'Claimed {len(batch)} due automation(s)')
|
||||
for automation in batch:
|
||||
asyncio.create_task(execute_automation(app, automation))
|
||||
except Exception:
|
||||
log.exception('Automation worker error')
|
||||
|
||||
# Jitter to spread load across instances
|
||||
await asyncio.sleep(AUTOMATION_POLL_INTERVAL + random.uniform(0, 2))
|
||||
|
||||
|
||||
##########################
|
||||
# Execute
|
||||
####################
|
||||
|
||||
|
||||
def _build_request(app) -> Request:
|
||||
"""Build a minimal ASGI Request for chat_completion.
|
||||
|
||||
Mirrors the mock-request pattern used in main.py lifespan
|
||||
(model pre-fetch, tool server init) for consistency.
|
||||
"""
|
||||
scope = {
|
||||
'type': 'http',
|
||||
'asgi': {'version': '3.0', 'spec_version': '2.0'},
|
||||
'method': 'POST',
|
||||
'path': '/api/v1/automations/internal',
|
||||
'query_string': b'',
|
||||
'headers': Headers({}).raw,
|
||||
'client': ('127.0.0.1', 0),
|
||||
'server': ('127.0.0.1', 80),
|
||||
'scheme': 'http',
|
||||
'app': app,
|
||||
}
|
||||
request = Request(scope)
|
||||
# Ensure request.state is initialized with required attributes
|
||||
request.state.token = None
|
||||
request.state.enable_api_keys = False
|
||||
return request
|
||||
|
||||
|
||||
def _resolve_model_tool_ids(app, model_id: str) -> list[str]:
|
||||
"""Read model-attached tool_ids from model config.
|
||||
|
||||
The frontend does this in Chat.svelte (model.info.meta.toolIds).
|
||||
The backend never auto-resolves them, so we must do it explicitly.
|
||||
"""
|
||||
models = getattr(app.state, 'MODELS', {})
|
||||
model = models.get(model_id, {})
|
||||
tool_ids = model.get('info', {}).get('meta', {}).get('toolIds', [])
|
||||
return list(tool_ids) if tool_ids else []
|
||||
|
||||
|
||||
def _resolve_model_features(app, model_id: str) -> dict:
|
||||
"""Read model default features from model config.
|
||||
|
||||
The frontend does this in Chat.svelte (model.info.meta.defaultFeatureIds
|
||||
+ model.info.meta.capabilities). Enables features like web_search,
|
||||
code_interpreter, image_generation when the model has them as defaults
|
||||
AND the capability is enabled AND the admin has enabled the feature.
|
||||
"""
|
||||
models = getattr(app.state, 'MODELS', {})
|
||||
model = models.get(model_id, {})
|
||||
meta = model.get('info', {}).get('meta', {})
|
||||
|
||||
default_feature_ids = meta.get('defaultFeatureIds', [])
|
||||
if not default_feature_ids:
|
||||
return {}
|
||||
|
||||
capabilities = meta.get('capabilities', {})
|
||||
config = app.state.config
|
||||
features = {}
|
||||
|
||||
# code_interpreter is excluded: it requires the frontend event emitter
|
||||
# and does not work in headless backend execution.
|
||||
feature_checks = {
|
||||
'web_search': getattr(config, 'ENABLE_WEB_SEARCH', False),
|
||||
'image_generation': getattr(config, 'ENABLE_IMAGE_GENERATION', False),
|
||||
}
|
||||
|
||||
for feature_id in default_feature_ids:
|
||||
if feature_id in feature_checks:
|
||||
# Feature must be: in defaultFeatureIds + capability enabled + admin enabled
|
||||
if capabilities.get(feature_id) and feature_checks[feature_id]:
|
||||
features[feature_id] = True
|
||||
|
||||
return features
|
||||
|
||||
|
||||
def _resolve_model_filter_ids(app, model_id: str) -> list[str]:
|
||||
"""Read model default filter_ids from model config."""
|
||||
models = getattr(app.state, 'MODELS', {})
|
||||
model = models.get(model_id, {})
|
||||
filter_ids = model.get('info', {}).get('meta', {}).get('defaultFilterIds', [])
|
||||
return list(filter_ids) if filter_ids else []
|
||||
|
||||
|
||||
async def _set_terminal_cwd(app, server_id: str, user, cwd: str, chat_id: str) -> None:
|
||||
"""Set the working directory on a terminal server via the proxy.
|
||||
|
||||
Routes through the open-webui terminal proxy endpoint so that
|
||||
auth headers, orchestrator policy routing, and X-User-Id are
|
||||
handled correctly — same path the frontend uses.
|
||||
"""
|
||||
import aiohttp
|
||||
|
||||
connections = getattr(getattr(app, 'state', None), 'config', None)
|
||||
if connections is None:
|
||||
return
|
||||
connections = getattr(connections, 'TERMINAL_SERVER_CONNECTIONS', None) or []
|
||||
connection = next((c for c in connections if c.get('id') == server_id), None)
|
||||
if connection is None:
|
||||
log.warning(f'Terminal server {server_id} not found for CWD set')
|
||||
return
|
||||
|
||||
base_url = (connection.get('url') or '').rstrip('/')
|
||||
if not base_url:
|
||||
return
|
||||
|
||||
# Build target URL — route through orchestrator policy if configured
|
||||
policy_id = connection.get('policy_id')
|
||||
if connection.get('server_type') == 'orchestrator' and policy_id:
|
||||
target_url = f'{base_url}/p/{policy_id}/files/cwd'
|
||||
else:
|
||||
target_url = f'{base_url}/files/cwd'
|
||||
|
||||
headers = {'Content-Type': 'application/json', 'X-User-Id': user.id}
|
||||
if chat_id:
|
||||
headers['X-Session-Id'] = chat_id
|
||||
|
||||
auth_type = connection.get('auth_type', 'bearer')
|
||||
if auth_type == 'bearer':
|
||||
headers['Authorization'] = f'Bearer {connection.get("key", "")}'
|
||||
|
||||
try:
|
||||
async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=10)) as session:
|
||||
async with session.post(
|
||||
target_url,
|
||||
json={'path': cwd},
|
||||
headers=headers,
|
||||
) as resp:
|
||||
if resp.status != 200:
|
||||
body = await resp.text()
|
||||
log.warning(f'Failed to set terminal CWD to {cwd}: HTTP {resp.status} — {body[:200]}')
|
||||
except Exception as e:
|
||||
log.warning(f'Failed to set terminal CWD: {e}')
|
||||
|
||||
|
||||
async def execute_automation(app, automation: AutomationModel) -> None:
|
||||
"""Execute an automation through the full chat completion pipeline.
|
||||
|
||||
Creates a real chat, then calls chat_completion exactly like the frontend:
|
||||
session_id + chat_id + message_id → async task → pipeline handles everything
|
||||
(filters, model params, knowledge/RAG, tools, DB saves, webhooks).
|
||||
"""
|
||||
try:
|
||||
user = Users.get_user_by_id(automation.user_id)
|
||||
if not user:
|
||||
_record_run(automation.id, 'error', error='User not found')
|
||||
return
|
||||
|
||||
prompt = prompt_template(automation.data['prompt'], user)
|
||||
model_id = automation.data['model_id']
|
||||
terminal_config = automation.data.get('terminal')
|
||||
|
||||
# Generate proper UUIDs for messages (same as frontend)
|
||||
user_msg_id = str(uuid4())
|
||||
assistant_msg_id = str(uuid4())
|
||||
|
||||
# Create the chat with user message (same structure as frontend)
|
||||
chat = Chats.insert_new_chat(
|
||||
automation.user_id,
|
||||
ChatForm(
|
||||
chat={
|
||||
'title': automation.name,
|
||||
'models': [model_id],
|
||||
'history': {
|
||||
'currentId': assistant_msg_id,
|
||||
'messages': {
|
||||
user_msg_id: {
|
||||
'id': user_msg_id,
|
||||
'parentId': None,
|
||||
'role': 'user',
|
||||
'content': prompt,
|
||||
'childrenIds': [assistant_msg_id],
|
||||
'timestamp': int(time.time()),
|
||||
'models': [model_id],
|
||||
},
|
||||
assistant_msg_id: {
|
||||
'id': assistant_msg_id,
|
||||
'parentId': user_msg_id,
|
||||
'role': 'assistant',
|
||||
'content': '',
|
||||
'done': False,
|
||||
'model': model_id,
|
||||
'childrenIds': [],
|
||||
'timestamp': int(time.time()),
|
||||
},
|
||||
},
|
||||
},
|
||||
'messages': [
|
||||
{'role': 'user', 'content': prompt},
|
||||
],
|
||||
'meta': {'automation_id': automation.id},
|
||||
}
|
||||
),
|
||||
)
|
||||
|
||||
if not chat:
|
||||
_record_run(automation.id, 'error', error='Failed to create chat')
|
||||
return
|
||||
|
||||
# Notify frontend to refresh chat list
|
||||
from open_webui.socket.main import sio
|
||||
|
||||
await sio.emit(
|
||||
'events',
|
||||
{
|
||||
'chat_id': chat.id,
|
||||
'message_id': user_msg_id,
|
||||
'data': {'type': 'chat:list'},
|
||||
},
|
||||
room=f'user:{automation.user_id}',
|
||||
)
|
||||
|
||||
# Resolve model defaults (frontend does this, backend doesn't)
|
||||
tool_ids = _resolve_model_tool_ids(app, model_id)
|
||||
features = _resolve_model_features(app, model_id)
|
||||
filter_ids = _resolve_model_filter_ids(app, model_id)
|
||||
|
||||
# If a terminal is linked, set the CWD before building the payload
|
||||
terminal_id = None
|
||||
if terminal_config and terminal_config.get('server_id'):
|
||||
terminal_id = terminal_config['server_id']
|
||||
cwd = terminal_config.get('cwd')
|
||||
if cwd:
|
||||
await _set_terminal_cwd(app, terminal_id, user, cwd, chat.id)
|
||||
|
||||
# Build the same payload the frontend sends to /api/chat/completions
|
||||
form_data = {
|
||||
'model': model_id,
|
||||
'messages': [{'role': 'user', 'content': prompt}],
|
||||
'stream': True,
|
||||
'chat_id': chat.id,
|
||||
'id': assistant_msg_id,
|
||||
'parent_id': user_msg_id,
|
||||
'session_id': f'automation:{automation.id}',
|
||||
'background_tasks': {},
|
||||
}
|
||||
if tool_ids:
|
||||
form_data['tool_ids'] = tool_ids
|
||||
if features:
|
||||
form_data['features'] = features
|
||||
if filter_ids:
|
||||
form_data['filter_ids'] = filter_ids
|
||||
if terminal_id:
|
||||
form_data['terminal_id'] = terminal_id
|
||||
|
||||
# Call the full chat completion pipeline (same as POST /api/chat/completions).
|
||||
# The handler reference is stored on app.state to avoid circular imports.
|
||||
request = _build_request(app)
|
||||
await app.state.CHAT_COMPLETION_HANDLER(request, form_data, user=user)
|
||||
|
||||
# Notify user
|
||||
from open_webui.socket.main import sio
|
||||
|
||||
await sio.emit(
|
||||
'automation:result',
|
||||
{
|
||||
'automation_id': automation.id,
|
||||
'name': automation.name,
|
||||
'chat_id': chat.id,
|
||||
'status': 'success',
|
||||
},
|
||||
room=f'user:{automation.user_id}',
|
||||
)
|
||||
|
||||
_record_run(automation.id, 'success', chat_id=chat.id)
|
||||
|
||||
except Exception as e:
|
||||
log.exception(f'Automation {automation.id} failed')
|
||||
_record_run(automation.id, 'error', error=str(e)[:4000])
|
||||
|
||||
|
||||
####################
|
||||
# Internals
|
||||
####################
|
||||
|
||||
|
||||
def _record_run(
|
||||
automation_id: str,
|
||||
status: str,
|
||||
chat_id: str = None,
|
||||
error: str = None,
|
||||
):
|
||||
"""Insert a run record into automation_run."""
|
||||
with get_db() as db:
|
||||
AutomationRuns.insert(automation_id, status, chat_id=chat_id, error=error, db=db)
|
||||
|
|
@ -316,6 +316,10 @@ async def chat_completed(request: Request, form_data: dict, user: Any):
|
|||
models = request.app.state.MODELS
|
||||
|
||||
data = form_data
|
||||
|
||||
if not data.get('id'):
|
||||
raise Exception('Missing message id')
|
||||
|
||||
model_id = data['model']
|
||||
if model_id not in models:
|
||||
raise Exception('Model not found')
|
||||
|
|
@ -327,6 +331,9 @@ async def chat_completed(request: Request, form_data: dict, user: Any):
|
|||
except Exception as e:
|
||||
raise Exception(f'Error: {e}')
|
||||
|
||||
if not data.get('id'):
|
||||
raise Exception('Missing message id')
|
||||
|
||||
metadata = {
|
||||
'chat_id': data['chat_id'],
|
||||
'message_id': data['id'],
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
import asyncio
|
||||
import logging
|
||||
from typing import Optional
|
||||
from contextlib import AsyncExitStack
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
import anyio
|
||||
|
||||
from mcp import ClientSession
|
||||
|
|
@ -56,7 +59,9 @@ class MCPClient:
|
|||
self._streams_context = streamablehttp_client(
|
||||
url,
|
||||
headers=headers,
|
||||
httpx_client_factory=create_httpx_client if AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL else create_insecure_httpx_client,
|
||||
httpx_client_factory=create_httpx_client
|
||||
if AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL
|
||||
else create_insecure_httpx_client,
|
||||
)
|
||||
|
||||
transport = await exit_stack.enter_async_context(self._streams_context)
|
||||
|
|
@ -134,8 +139,39 @@ class MCPClient:
|
|||
return result_dict
|
||||
|
||||
async def disconnect(self):
|
||||
# Clean up and close the session
|
||||
await self.exit_stack.aclose()
|
||||
"""Clean up and close the session.
|
||||
|
||||
This method is idempotent — calling it multiple times or on a
|
||||
client that was never connected is safe. It shields the close
|
||||
operation from CancelledError and adds a timeout so a hung MCP
|
||||
server cannot block the event loop indefinitely.
|
||||
"""
|
||||
exit_stack = self.exit_stack
|
||||
if exit_stack is None:
|
||||
return
|
||||
|
||||
# Prevent double-close from concurrent callers
|
||||
self.exit_stack = None
|
||||
self.session = None
|
||||
|
||||
try:
|
||||
await asyncio.wait_for(
|
||||
asyncio.shield(exit_stack.aclose()),
|
||||
timeout=5.0,
|
||||
)
|
||||
except asyncio.TimeoutError:
|
||||
log.warning('MCPClient.disconnect() timed out after 5 s')
|
||||
except RuntimeError as exc:
|
||||
# The MCP SDK's streamable_http transport uses anyio task
|
||||
# groups and async generators internally. When we close
|
||||
# a session that was interrupted mid-flight these can
|
||||
# raise RuntimeError ("aclose(): asynchronous generator is
|
||||
# already running" or "Attempted to exit cancel scope in a
|
||||
# different task"). Swallowing the error here prevents the
|
||||
# orphaned coroutines from spinning at 100 % CPU.
|
||||
log.debug('MCPClient.disconnect() suppressed RuntimeError: %s', exc)
|
||||
except Exception as exc:
|
||||
log.debug('MCPClient.disconnect() error: %s', exc)
|
||||
|
||||
async def __aenter__(self):
|
||||
await self.exit_stack.__aenter__()
|
||||
|
|
|
|||
|
|
@ -2539,11 +2539,16 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||
)
|
||||
else:
|
||||
# Native FC: tool docstring can't be dynamic, so inject
|
||||
# filesystem context into messages for pyodide engine
|
||||
# filesystem context into the system message for pyodide
|
||||
# engine. Appending to the system prompt (instead of the
|
||||
# user message) keeps it in the stable cached prefix so
|
||||
# providers with prefix caching don't re-bill the full
|
||||
# conversation on every turn.
|
||||
if engine != 'jupyter':
|
||||
form_data['messages'] = add_or_update_user_message(
|
||||
form_data['messages'] = add_or_update_system_message(
|
||||
CODE_INTERPRETER_PYODIDE_PROMPT,
|
||||
form_data['messages'],
|
||||
append=True,
|
||||
)
|
||||
|
||||
tool_ids = form_data.pop('tool_ids', None)
|
||||
|
|
@ -2678,7 +2683,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||
oauth_token = extra_params.get('__oauth_token__', None)
|
||||
if oauth_token:
|
||||
headers['Authorization'] = f'Bearer {oauth_token.get("access_token", "")}'
|
||||
elif auth_type == 'oauth_2.1':
|
||||
elif auth_type in ('oauth_2.1', 'oauth_2.1_static'):
|
||||
try:
|
||||
splits = server_id.split(':')
|
||||
server_id = splits[-1] if len(splits) > 1 else server_id
|
||||
|
|
@ -2960,16 +2965,18 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||
def get_event_emitter_and_caller(metadata):
|
||||
event_emitter = None
|
||||
event_caller = None
|
||||
if (
|
||||
'session_id' in metadata
|
||||
and metadata['session_id']
|
||||
and 'chat_id' in metadata
|
||||
and metadata['chat_id']
|
||||
and 'message_id' in metadata
|
||||
and metadata['message_id']
|
||||
):
|
||||
|
||||
# event_emitter only needs user_id + chat_id + message_id.
|
||||
# It broadcasts to user:{user_id} room AND persists to DB,
|
||||
# so it works for backend-initiated calls (automations, API).
|
||||
if metadata.get('chat_id') and metadata.get('message_id'):
|
||||
event_emitter = get_event_emitter(metadata)
|
||||
|
||||
# event_caller needs session_id — it calls back to a specific
|
||||
# websocket session (used by direct tools, pyodide code interpreter).
|
||||
if metadata.get('session_id') and metadata.get('chat_id') and metadata.get('message_id'):
|
||||
event_caller = get_event_call(metadata)
|
||||
|
||||
return event_emitter, event_caller
|
||||
|
||||
|
||||
|
|
@ -3416,7 +3423,9 @@ async def streaming_chat_response_handler(response, ctx):
|
|||
]
|
||||
|
||||
# Standard streaming response handler
|
||||
if event_emitter and event_caller:
|
||||
# event_caller is optional — only needed for direct (client-side) tools
|
||||
# and pyodide code interpreter. Server-side tools work without it.
|
||||
if event_emitter:
|
||||
task_id = str(uuid4()) # Create a unique task ID.
|
||||
model_id = form_data.get('model', '')
|
||||
|
||||
|
|
@ -3844,10 +3853,10 @@ async def streaming_chat_response_handler(response, ctx):
|
|||
if error:
|
||||
try:
|
||||
Chats.upsert_message_to_chat_by_id_and_message_id(
|
||||
metadata["chat_id"],
|
||||
metadata["message_id"],
|
||||
metadata['chat_id'],
|
||||
metadata['message_id'],
|
||||
{
|
||||
"error": {"content": error},
|
||||
'error': {'content': error},
|
||||
},
|
||||
)
|
||||
except Exception:
|
||||
|
|
@ -4838,6 +4847,7 @@ async def streaming_chat_response_handler(response, ctx):
|
|||
'content': serialize_output(output),
|
||||
'output': output,
|
||||
'title': title,
|
||||
**({'usage': usage} if usage else {}),
|
||||
}
|
||||
|
||||
if not ENABLE_REALTIME_CHAT_SAVE:
|
||||
|
|
|
|||
|
|
@ -961,18 +961,15 @@ def stream_chunks_handler(stream: aiohttp.StreamReader):
|
|||
skip_mode = False
|
||||
yield line
|
||||
else:
|
||||
yield b'data: {}'
|
||||
yield b'\n'
|
||||
yield b'data: {}\n'
|
||||
else:
|
||||
# Normal mode: check if line exceeds limit
|
||||
if len(line) > max_buffer_size:
|
||||
skip_mode = True
|
||||
yield b'data: {}'
|
||||
yield b'\n'
|
||||
yield b'data: {}\n'
|
||||
log.info(f'Skip mode triggered, line size: {len(line)}')
|
||||
else:
|
||||
yield line
|
||||
yield b'\n'
|
||||
yield line + b'\n'
|
||||
|
||||
# Save the last incomplete fragment
|
||||
buffer = lines[-1]
|
||||
|
|
@ -986,7 +983,6 @@ def stream_chunks_handler(stream: aiohttp.StreamReader):
|
|||
|
||||
# Process remaining buffer data
|
||||
if buffer and not skip_mode:
|
||||
yield buffer
|
||||
yield b'\n'
|
||||
yield buffer + b'\n'
|
||||
|
||||
return yield_safe_stream_chunks()
|
||||
|
|
|
|||
|
|
@ -1354,12 +1354,13 @@ class OAuthManager:
|
|||
if provider not in OAUTH_PROVIDERS:
|
||||
raise HTTPException(404)
|
||||
# If the provider has a custom redirect URL, use that, otherwise automatically generate one
|
||||
redirect_uri = OAUTH_PROVIDERS[provider].get('redirect_uri') or request.url_for(
|
||||
'oauth_login_callback', provider=provider
|
||||
)
|
||||
client = self.get_client(provider)
|
||||
if client is None:
|
||||
raise HTTPException(404)
|
||||
redirect_uri = (
|
||||
(client.server_metadata or {}).get('redirect_uri')
|
||||
or request.url_for('oauth_login_callback', provider=provider)
|
||||
)
|
||||
|
||||
kwargs = {}
|
||||
if auth_manager_config.OAUTH_AUDIENCE:
|
||||
|
|
@ -1683,7 +1684,7 @@ class OAuthManager:
|
|||
httponly=True,
|
||||
samesite=WEBUI_AUTH_COOKIE_SAME_SITE,
|
||||
secure=WEBUI_AUTH_COOKIE_SECURE,
|
||||
**({'max_age': cookie_max_age, 'expires': cookie_expires} if cookie_max_age is not None else {}),
|
||||
**({'max_age': cookie_max_age} if cookie_max_age is not None else {}),
|
||||
)
|
||||
|
||||
log.info(f'Stored OAuth session server-side for user {user.id}, provider {provider}')
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ def get_task_model_id(default_model_id: str, task_model: str, task_model_externa
|
|||
# Set the task model
|
||||
task_model_id = default_model_id
|
||||
# Check if the user has a custom task model and use that model
|
||||
if models[task_model_id].get('connection_type') == 'local':
|
||||
if models.get(task_model_id, {}).get('connection_type') == 'local':
|
||||
if task_model and task_model in models:
|
||||
task_model_id = task_model
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@ _ALLOWED_STATIC_PATHS = (
|
|||
'/static/favicon.png',
|
||||
)
|
||||
|
||||
# External URL prefixes that are explicitly trusted for profile images
|
||||
_ALLOWED_URL_PREFIXES = (
|
||||
'https://www.gravatar.com/avatar/',
|
||||
)
|
||||
|
||||
|
||||
def validate_profile_image_url(url: str) -> str:
|
||||
"""
|
||||
|
|
@ -15,6 +20,7 @@ def validate_profile_image_url(url: str) -> str:
|
|||
- Empty string (falls back to default avatar)
|
||||
- data:image/* URIs (base64-encoded uploads from the frontend)
|
||||
- Known static asset paths (/user.png, /static/favicon.png)
|
||||
- Trusted external URLs (e.g. Gravatar)
|
||||
|
||||
Returns the url unchanged if valid, raises ValueError otherwise.
|
||||
"""
|
||||
|
|
@ -33,4 +39,7 @@ def validate_profile_image_url(url: str) -> str:
|
|||
if url in _ALLOWED_STATIC_PATHS:
|
||||
return url
|
||||
|
||||
if any(url.startswith(prefix) for prefix in _ALLOWED_URL_PREFIXES):
|
||||
return url
|
||||
|
||||
raise ValueError('Invalid profile image URL: only data URIs and default avatars are allowed.')
|
||||
|
|
|
|||
13
src/app.css
13
src/app.css
|
|
@ -243,6 +243,19 @@ select {
|
|||
animation: smoothFadeIn 0.2s forwards;
|
||||
}
|
||||
|
||||
@keyframes fade-in-token {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.fade-in-token {
|
||||
animation: fade-in-token 100ms ease-out;
|
||||
}
|
||||
|
||||
.katex-mathml {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -413,6 +413,9 @@ export const updateUserProfile = async (token: string, profile: object) => {
|
|||
.catch((err) => {
|
||||
console.error(err);
|
||||
error = err.detail;
|
||||
if (Array.isArray(error)) {
|
||||
error = error.map((e: { msg?: string }) => e.msg).join("; ");
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
||||
|
|
|
|||
300
src/lib/apis/automations/index.ts
Normal file
300
src/lib/apis/automations/index.ts
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
import { WEBUI_API_BASE_URL } from '$lib/constants';
|
||||
|
||||
export type AutomationTerminalConfig = {
|
||||
server_id: string;
|
||||
cwd?: string;
|
||||
};
|
||||
|
||||
export type AutomationData = {
|
||||
prompt: string;
|
||||
model_id: string;
|
||||
rrule: string;
|
||||
terminal?: AutomationTerminalConfig;
|
||||
};
|
||||
|
||||
export type AutomationForm = {
|
||||
name: string;
|
||||
data: AutomationData;
|
||||
meta?: {
|
||||
system_prompt?: string;
|
||||
temperature?: number;
|
||||
max_tokens?: number;
|
||||
webhook?: string;
|
||||
};
|
||||
is_active?: boolean;
|
||||
};
|
||||
|
||||
export type AutomationRunModel = {
|
||||
id: string;
|
||||
automation_id: string;
|
||||
chat_id: string | null;
|
||||
status: string;
|
||||
error: string | null;
|
||||
created_at: number;
|
||||
};
|
||||
|
||||
export type AutomationResponse = {
|
||||
id: string;
|
||||
user_id: string;
|
||||
name: string;
|
||||
data: AutomationData;
|
||||
meta: Record<string, any> | null;
|
||||
is_active: boolean;
|
||||
last_run_at: number | null;
|
||||
next_run_at: number | null;
|
||||
|
||||
created_at: number;
|
||||
updated_at: number;
|
||||
last_run: AutomationRunModel | null;
|
||||
next_runs: number[] | null;
|
||||
};
|
||||
|
||||
export const getAutomationItems = async (
|
||||
token: string,
|
||||
query: string | null,
|
||||
status: string | null,
|
||||
page: number
|
||||
): Promise<{ items: AutomationResponse[]; total: number }> => {
|
||||
let error = null;
|
||||
|
||||
const searchParams = new URLSearchParams();
|
||||
if (query) {
|
||||
searchParams.append('query', query);
|
||||
}
|
||||
if (status && status !== 'all') {
|
||||
searchParams.append('status', status);
|
||||
}
|
||||
if (page) {
|
||||
searchParams.append('page', page.toString());
|
||||
}
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/automations/list?${searchParams.toString()}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
}
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const createAutomation = async (token: string, form: AutomationForm) => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/automations/create`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
},
|
||||
body: JSON.stringify(form)
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const getAutomationById = async (token: string, id: string) => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/automations/${id}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
}
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const updateAutomationById = async (token: string, id: string, form: AutomationForm) => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/automations/${id}/update`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
},
|
||||
body: JSON.stringify(form)
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const toggleAutomationById = async (token: string, id: string) => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/automations/${id}/toggle`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
}
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const runAutomationById = async (token: string, id: string) => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/automations/${id}/run`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
}
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const deleteAutomationById = async (token: string, id: string) => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/automations/${id}/delete`, {
|
||||
method: 'DELETE',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
}
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const getAutomationRuns = async (
|
||||
token: string,
|
||||
id: string,
|
||||
skip: number = 0,
|
||||
limit: number = 50
|
||||
) => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(
|
||||
`${WEBUI_API_BASE_URL}/automations/${id}/runs?skip=${skip}&limit=${limit}`,
|
||||
{
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
}
|
||||
}
|
||||
)
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
|
@ -161,9 +161,12 @@ export const getModels = async (
|
|||
|
||||
type ChatCompletedForm = {
|
||||
model: string;
|
||||
messages: string[];
|
||||
messages: Record<string, unknown>[];
|
||||
chat_id: string;
|
||||
session_id: string;
|
||||
session_id: string | undefined;
|
||||
id: string;
|
||||
filter_ids?: string[];
|
||||
model_item?: unknown;
|
||||
};
|
||||
|
||||
export const chatCompleted = async (token: string, body: ChatCompletedForm) => {
|
||||
|
|
@ -558,13 +561,24 @@ export const executeToolServer = async (
|
|||
responseHeaders[key] = value;
|
||||
});
|
||||
|
||||
const text = await res.text();
|
||||
let responseData;
|
||||
const contentType = res.headers.get('Content-Type')?.split(';')[0]?.trim() ?? '';
|
||||
|
||||
try {
|
||||
responseData = JSON.parse(text);
|
||||
responseData = await res.clone().json();
|
||||
} catch {
|
||||
responseData = text;
|
||||
if (contentType.startsWith('text/') || !contentType) {
|
||||
responseData = await res.text();
|
||||
} else {
|
||||
const buf = await res.arrayBuffer();
|
||||
const bytes = new Uint8Array(buf);
|
||||
let binary = '';
|
||||
for (let i = 0; i < bytes.length; i++) {
|
||||
binary += String.fromCharCode(bytes[i]);
|
||||
}
|
||||
const b64 = btoa(binary);
|
||||
responseData = `data:${contentType};base64,${b64}`;
|
||||
}
|
||||
}
|
||||
return [responseData, responseHeaders];
|
||||
} catch (err: any) {
|
||||
|
|
|
|||
|
|
@ -46,7 +46,11 @@ export const getTerminalConfig = async (
|
|||
return res.json().catch(() => null);
|
||||
};
|
||||
|
||||
export const getCwd = async (baseUrl: string, apiKey: string, sessionId?: string): Promise<string | null> => {
|
||||
export const getCwd = async (
|
||||
baseUrl: string,
|
||||
apiKey: string,
|
||||
sessionId?: string
|
||||
): Promise<string | null> => {
|
||||
const url = `${baseUrl.replace(/\/$/, '')}/files/cwd`;
|
||||
const headers: Record<string, string> = { Authorization: `Bearer ${apiKey}` };
|
||||
if (sessionId) headers['X-Session-Id'] = sessionId;
|
||||
|
|
|
|||
|
|
@ -16,10 +16,14 @@ export const getGravatarUrl = async (token: string, email: string) => {
|
|||
})
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
error = err;
|
||||
error = err.detail ?? err;
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
|
|
|
|||
195
src/lib/components/AutomationModal.svelte
Normal file
195
src/lib/components/AutomationModal.svelte
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
<script lang="ts">
|
||||
import { createEventDispatcher, getContext } from 'svelte';
|
||||
import { toast } from 'svelte-sonner';
|
||||
|
||||
import Modal from '$lib/components/common/Modal.svelte';
|
||||
import XMark from '$lib/components/icons/XMark.svelte';
|
||||
import Spinner from '$lib/components/common/Spinner.svelte';
|
||||
|
||||
import ScheduleDropdown from '$lib/components/automations/ScheduleDropdown.svelte';
|
||||
import ModelDropdown from '$lib/components/automations/ModelDropdown.svelte';
|
||||
import TerminalDropdown from '$lib/components/automations/TerminalDropdown.svelte';
|
||||
|
||||
import {
|
||||
createAutomation,
|
||||
updateAutomationById,
|
||||
type AutomationForm,
|
||||
type AutomationResponse
|
||||
} from '$lib/apis/automations';
|
||||
import { getTerminalServers, type TerminalServer } from '$lib/apis/terminal/index';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
export let show = false;
|
||||
export let automation: AutomationResponse | null = null;
|
||||
|
||||
let name = '';
|
||||
let prompt = '';
|
||||
let model_id = '';
|
||||
let is_active = true;
|
||||
|
||||
let loading = false;
|
||||
|
||||
// Terminal state
|
||||
let terminalServers: TerminalServer[] = [];
|
||||
let terminalServerId = '';
|
||||
let terminalCwd = '';
|
||||
|
||||
// Schedule dropdown ref
|
||||
let scheduleDropdown: ScheduleDropdown;
|
||||
|
||||
const submitHandler = async () => {
|
||||
if (!name.trim() || !prompt.trim() || !model_id.trim()) {
|
||||
toast.error($i18n.t('Name, prompt, and model are required'));
|
||||
return;
|
||||
}
|
||||
if (scheduleDropdown?.frequency === 'ONCE') {
|
||||
const scheduled = new Date(`${scheduleDropdown.onceDate}T${scheduleDropdown.onceTime}`);
|
||||
if (scheduled <= new Date()) {
|
||||
toast.error($i18n.t('Scheduled time must be in the future'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
loading = true;
|
||||
try {
|
||||
const form: AutomationForm = {
|
||||
name: name.trim(),
|
||||
data: {
|
||||
prompt: prompt.trim(),
|
||||
model_id: model_id.trim(),
|
||||
rrule: scheduleDropdown.buildRrule(),
|
||||
...(terminalServerId
|
||||
? {
|
||||
terminal: {
|
||||
server_id: terminalServerId,
|
||||
...(terminalCwd.trim() ? { cwd: terminalCwd.trim() } : {})
|
||||
}
|
||||
}
|
||||
: {})
|
||||
},
|
||||
is_active
|
||||
};
|
||||
|
||||
if (automation) {
|
||||
await updateAutomationById(localStorage.token, automation.id, form);
|
||||
toast.success($i18n.t('Automation updated'));
|
||||
show = false;
|
||||
dispatch('save', { id: automation.id });
|
||||
} else {
|
||||
const created = await createAutomation(localStorage.token, form);
|
||||
toast.success($i18n.t('Automation created'));
|
||||
show = false;
|
||||
dispatch('save', { id: created?.id });
|
||||
}
|
||||
} catch (e: any) {
|
||||
toast.error(e?.detail ?? `${e}` ?? 'Failed to save');
|
||||
} finally {
|
||||
loading = false;
|
||||
}
|
||||
};
|
||||
|
||||
const init = async () => {
|
||||
// Load terminal servers
|
||||
try {
|
||||
terminalServers = await getTerminalServers(localStorage.token);
|
||||
} catch {
|
||||
terminalServers = [];
|
||||
}
|
||||
|
||||
if (automation) {
|
||||
name = automation.name;
|
||||
prompt = automation.data.prompt;
|
||||
model_id = automation.data.model_id;
|
||||
is_active = automation.is_active;
|
||||
terminalServerId = automation.data.terminal?.server_id || '';
|
||||
terminalCwd = automation.data.terminal?.cwd || '';
|
||||
if (scheduleDropdown) {
|
||||
scheduleDropdown.parseRrule(automation.data.rrule);
|
||||
}
|
||||
} else {
|
||||
name = '';
|
||||
prompt = '';
|
||||
model_id = '';
|
||||
is_active = true;
|
||||
terminalServerId = '';
|
||||
terminalCwd = '';
|
||||
}
|
||||
};
|
||||
|
||||
$: if (show) {
|
||||
init();
|
||||
}
|
||||
</script>
|
||||
|
||||
<Modal size="md" bind:show>
|
||||
<div>
|
||||
<!-- Header -->
|
||||
<div class="flex justify-between dark:text-gray-100 px-5 pt-4 pb-2">
|
||||
<input
|
||||
class="w-full text-lg font-medium bg-transparent outline-hidden font-primary placeholder:text-gray-300 dark:placeholder:text-gray-700"
|
||||
type="text"
|
||||
bind:value={name}
|
||||
placeholder={$i18n.t('Automation title')}
|
||||
/>
|
||||
<button
|
||||
class="self-center shrink-0 ml-2"
|
||||
aria-label={$i18n.t('Close')}
|
||||
on:click={() => (show = false)}
|
||||
>
|
||||
<XMark className="size-5" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Prompt -->
|
||||
<div class="px-5 pb-2">
|
||||
<div class="mb-1 text-xs text-gray-500">{$i18n.t('Instructions')}</div>
|
||||
<textarea
|
||||
class="w-full text-sm bg-transparent outline-hidden placeholder:text-gray-300 dark:placeholder:text-gray-700 resize-none min-h-[12rem]"
|
||||
bind:value={prompt}
|
||||
rows={8}
|
||||
placeholder={$i18n.t('Enter prompt here.')}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Bottom toolbar -->
|
||||
<div class="flex items-center justify-between px-4 pb-3.5 pt-1 gap-2">
|
||||
<div class="flex items-center gap-0.5 flex-wrap flex-1 min-w-0">
|
||||
<ScheduleDropdown bind:this={scheduleDropdown} side="top" align="start" />
|
||||
|
||||
<ModelDropdown bind:model_id side="top" align="start" />
|
||||
|
||||
<TerminalDropdown
|
||||
{terminalServers}
|
||||
bind:terminalServerId
|
||||
bind:terminalCwd
|
||||
side="top"
|
||||
align="start"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2 shrink-0">
|
||||
<button
|
||||
class="px-3 py-1 text-xs text-gray-500 hover:text-gray-700 dark:hover:text-gray-200 transition"
|
||||
type="button"
|
||||
on:click={() => (show = false)}
|
||||
>
|
||||
{$i18n.t('Cancel')}
|
||||
</button>
|
||||
<button
|
||||
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full flex items-center gap-2 {loading
|
||||
? 'cursor-not-allowed'
|
||||
: ''}"
|
||||
on:click={submitHandler}
|
||||
type="button"
|
||||
disabled={loading}
|
||||
>
|
||||
{automation ? $i18n.t('Save') : $i18n.t('Create')}
|
||||
{#if loading}
|
||||
<span class="shrink-0"><Spinner /></span>
|
||||
{/if}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
|
|
@ -291,7 +291,7 @@
|
|||
class="tabs mx-[16px] lg:mx-0 lg:px-[16px] flex flex-row overflow-x-auto gap-2.5 max-w-full lg:gap-1 lg:flex-col lg:flex-none lg:w-50 dark:text-gray-200 text-sm font-medium text-left scrollbar-none"
|
||||
>
|
||||
<div
|
||||
class="hidden md:flex w-full rounded-full px-2.5 gap-2 bg-gray-100/80 dark:bg-gray-850/80 backdrop-blur-2xl my-1 -mx-1 mt-1.5"
|
||||
class="hidden lg:flex w-full rounded-full px-2.5 gap-2 bg-gray-100/80 dark:bg-gray-850/80 backdrop-blur-2xl my-1 -mx-1 mt-1.5"
|
||||
id="settings-search"
|
||||
>
|
||||
<div class="self-center rounded-l-xl bg-transparent">
|
||||
|
|
|
|||
|
|
@ -894,6 +894,28 @@
|
|||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col w-full">
|
||||
<Tooltip
|
||||
className="flex w-full justify-between my-1"
|
||||
content={$i18n.t(
|
||||
'Warning: Enabling this will allow users to run scheduled prompts automatically.'
|
||||
)}
|
||||
placement="top-start"
|
||||
>
|
||||
<div class=" self-center text-xs font-medium">
|
||||
{$i18n.t('Automations')}
|
||||
</div>
|
||||
<Switch bind:state={permissions.features.automations} />
|
||||
</Tooltip>
|
||||
{#if defaultPermissions?.features?.automations && !permissions.features.automations}
|
||||
<div>
|
||||
<div class="text-xs text-gray-500">
|
||||
{$i18n.t('This is a default user permission and will remain enabled.')}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class=" border-gray-100/30 dark:border-gray-850/30" />
|
||||
|
|
|
|||
498
src/lib/components/automations/AutomationEditor.svelte
Normal file
498
src/lib/components/automations/AutomationEditor.svelte
Normal file
|
|
@ -0,0 +1,498 @@
|
|||
<script lang="ts">
|
||||
import { onMount, getContext } from 'svelte';
|
||||
import { toast } from 'svelte-sonner';
|
||||
import { goto } from '$app/navigation';
|
||||
|
||||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
import localizedFormat from 'dayjs/plugin/localizedFormat';
|
||||
|
||||
import { WEBUI_NAME, showSidebar } from '$lib/stores';
|
||||
|
||||
import {
|
||||
updateAutomationById,
|
||||
toggleAutomationById,
|
||||
runAutomationById,
|
||||
deleteAutomationById,
|
||||
getAutomationRuns,
|
||||
type AutomationForm,
|
||||
type AutomationResponse,
|
||||
type AutomationRunModel
|
||||
} from '$lib/apis/automations';
|
||||
import { getTerminalServers, type TerminalServer } from '$lib/apis/terminal/index';
|
||||
|
||||
import Spinner from '$lib/components/common/Spinner.svelte';
|
||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
||||
import DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
|
||||
import GarbageBin from '$lib/components/icons/GarbageBin.svelte';
|
||||
import ChevronLeft from '$lib/components/icons/ChevronLeft.svelte';
|
||||
|
||||
import ScheduleDropdown from '$lib/components/automations/ScheduleDropdown.svelte';
|
||||
import ModelDropdown from '$lib/components/automations/ModelDropdown.svelte';
|
||||
import TerminalDropdown from '$lib/components/automations/TerminalDropdown.svelte';
|
||||
|
||||
dayjs.extend(relativeTime);
|
||||
dayjs.extend(localizedFormat);
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let automation: AutomationResponse;
|
||||
|
||||
let name = '';
|
||||
let prompt = '';
|
||||
let model_id = '';
|
||||
let is_active = true;
|
||||
|
||||
let terminalServers: TerminalServer[] = [];
|
||||
let terminalServerId = '';
|
||||
let terminalCwd = '';
|
||||
|
||||
let loading = false;
|
||||
let saving = false;
|
||||
let showDeleteConfirm = false;
|
||||
|
||||
let runs: AutomationRunModel[] = [];
|
||||
let runsLoading = false;
|
||||
let hasMoreRuns = true;
|
||||
let runsPage = 0;
|
||||
let isDirty = false;
|
||||
|
||||
let scheduleDropdown: ScheduleDropdown;
|
||||
|
||||
const formatRunTime = (ts: number): string => {
|
||||
const now = Date.now();
|
||||
const diff = now - ts / 1_000_000;
|
||||
|
||||
const seconds = Math.floor(diff / 1000);
|
||||
const minutes = Math.floor(seconds / 60);
|
||||
const hours = Math.floor(minutes / 60);
|
||||
const days = Math.floor(hours / 24);
|
||||
const weeks = Math.floor(days / 7);
|
||||
const years = Math.floor(days / 365);
|
||||
|
||||
if (years > 0) return $i18n.t('{{COUNT}}y', { COUNT: years, context: 'time_ago' });
|
||||
if (weeks > 0) return $i18n.t('{{COUNT}}w', { COUNT: weeks, context: 'time_ago' });
|
||||
if (days > 0) return $i18n.t('{{COUNT}}d', { COUNT: days, context: 'time_ago' });
|
||||
if (hours > 0) return $i18n.t('{{COUNT}}h', { COUNT: hours, context: 'time_ago' });
|
||||
if (minutes > 0) return $i18n.t('{{COUNT}}m', { COUNT: minutes, context: 'time_ago' });
|
||||
return $i18n.t('1m', { context: 'time_ago' });
|
||||
};
|
||||
|
||||
const formatNextRun = (ts: number | null): string => {
|
||||
if (!ts) return $i18n.t('Not scheduled');
|
||||
const d = dayjs(ts / 1_000_000);
|
||||
if (d.isSame(dayjs(), 'day')) return `${$i18n.t('Today at')} ${d.format('LT')}`;
|
||||
return d.format('L LT');
|
||||
};
|
||||
|
||||
const saveHandler = async () => {
|
||||
if (!name.trim() || !prompt.trim() || !model_id.trim()) {
|
||||
toast.error($i18n.t('Name, prompt, and model are required'));
|
||||
return;
|
||||
}
|
||||
saving = true;
|
||||
try {
|
||||
const form: AutomationForm = {
|
||||
name: name.trim(),
|
||||
data: {
|
||||
prompt: prompt.trim(),
|
||||
model_id: model_id.trim(),
|
||||
rrule: scheduleDropdown.buildRrule(),
|
||||
...(terminalServerId
|
||||
? {
|
||||
terminal: {
|
||||
server_id: terminalServerId,
|
||||
...(terminalCwd.trim() ? { cwd: terminalCwd.trim() } : {})
|
||||
}
|
||||
}
|
||||
: {})
|
||||
},
|
||||
is_active
|
||||
};
|
||||
const updated = await updateAutomationById(localStorage.token, automation.id, form);
|
||||
if (updated) {
|
||||
automation = updated;
|
||||
isDirty = false;
|
||||
toast.success($i18n.t('Automation updated'));
|
||||
}
|
||||
} catch (e: any) {
|
||||
toast.error(e?.detail ?? `${e}` ?? 'Failed to save');
|
||||
} finally {
|
||||
saving = false;
|
||||
}
|
||||
};
|
||||
|
||||
const toggleHandler = async () => {
|
||||
const res = await toggleAutomationById(localStorage.token, automation.id).catch((err) => {
|
||||
toast.error(`${err}`);
|
||||
return null;
|
||||
});
|
||||
if (res) {
|
||||
is_active = res.is_active;
|
||||
automation = res;
|
||||
}
|
||||
};
|
||||
|
||||
const runNowHandler = async () => {
|
||||
loading = true;
|
||||
const res = await runAutomationById(localStorage.token, automation.id).catch((err) => {
|
||||
toast.error(`${err}`);
|
||||
return null;
|
||||
});
|
||||
if (res) {
|
||||
toast.success($i18n.t('Automation triggered'));
|
||||
setTimeout(() => loadRuns(false), 2000);
|
||||
}
|
||||
loading = false;
|
||||
};
|
||||
|
||||
const deleteHandler = async () => {
|
||||
const res = await deleteAutomationById(localStorage.token, automation.id).catch((err) => {
|
||||
toast.error(`${err}`);
|
||||
return null;
|
||||
});
|
||||
if (res) {
|
||||
toast.success($i18n.t(`Deleted {{name}}`, { name: automation.name }));
|
||||
goto('/automations');
|
||||
}
|
||||
};
|
||||
|
||||
const loadRuns = async (loadMore = false) => {
|
||||
if (runsLoading || (!hasMoreRuns && loadMore)) return;
|
||||
|
||||
runsLoading = true;
|
||||
|
||||
if (!loadMore) {
|
||||
runsPage = 0;
|
||||
hasMoreRuns = true;
|
||||
}
|
||||
|
||||
try {
|
||||
const fetchedRuns =
|
||||
(await getAutomationRuns(localStorage.token, automation.id, runsPage * 50, 50)) ?? [];
|
||||
if (loadMore) {
|
||||
runs = [...runs, ...fetchedRuns];
|
||||
} else {
|
||||
runs = fetchedRuns;
|
||||
}
|
||||
|
||||
if (fetchedRuns.length < 50) {
|
||||
hasMoreRuns = false;
|
||||
}
|
||||
runsPage++;
|
||||
} catch {
|
||||
if (!loadMore) runs = [];
|
||||
}
|
||||
runsLoading = false;
|
||||
};
|
||||
|
||||
const markDirty = () => {
|
||||
isDirty = true;
|
||||
};
|
||||
|
||||
const onScroll = (e: Event) => {
|
||||
const target = e.target as HTMLElement;
|
||||
if (target.scrollTop + target.clientHeight >= target.scrollHeight - 50) {
|
||||
if (!runsLoading && hasMoreRuns) {
|
||||
loadRuns(true);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
onMount(async () => {
|
||||
name = automation.name;
|
||||
prompt = automation.data.prompt;
|
||||
model_id = automation.data.model_id;
|
||||
is_active = automation.is_active;
|
||||
terminalServerId = automation.data.terminal?.server_id || '';
|
||||
terminalCwd = automation.data.terminal?.cwd || '';
|
||||
|
||||
if (scheduleDropdown) {
|
||||
scheduleDropdown.parseRrule(automation.data.rrule);
|
||||
}
|
||||
|
||||
try {
|
||||
terminalServers = await getTerminalServers(localStorage.token);
|
||||
} catch {
|
||||
terminalServers = [];
|
||||
}
|
||||
await loadRuns();
|
||||
});
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>{name || $i18n.t('Automation')} • {$WEBUI_NAME}</title>
|
||||
</svelte:head>
|
||||
|
||||
<DeleteConfirmDialog
|
||||
bind:show={showDeleteConfirm}
|
||||
title={$i18n.t('Delete automation?')}
|
||||
on:confirm={deleteHandler}
|
||||
>
|
||||
<div class="text-sm text-gray-500 truncate">
|
||||
{$i18n.t('This will delete')} <span class="">{automation.name}</span>.
|
||||
</div>
|
||||
</DeleteConfirmDialog>
|
||||
|
||||
<div
|
||||
class="flex flex-col w-full h-screen max-h-[100dvh] transition-width duration-200 ease-in-out {$showSidebar
|
||||
? 'md:max-w-[calc(100%-var(--sidebar-width))]'
|
||||
: ''} max-w-full"
|
||||
>
|
||||
<div class="flex-1 max-h-full flex flex-col pt-3 pb-1 px-3 md:px-[18px]">
|
||||
<!-- Header Segment (Shrink-0 so it doesn't compress) -->
|
||||
<div class="flex items-start justify-between gap-4 shrink-0 mb-0.5">
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="flex items-center gap-1.5 mb-1.5">
|
||||
<Tooltip content={$i18n.t('Back')}>
|
||||
<button
|
||||
class="text-sm p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg transition"
|
||||
aria-label={$i18n.t('Back')}
|
||||
on:click={() => goto('/automations')}
|
||||
type="button"
|
||||
>
|
||||
<ChevronLeft strokeWidth="2.5" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
<input
|
||||
class="text-2xl w-full bg-transparent outline-hidden"
|
||||
placeholder={$i18n.t('Automation Name')}
|
||||
bind:value={name}
|
||||
on:input={markDirty}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2 shrink-0">
|
||||
<Tooltip content={$i18n.t('Delete')}>
|
||||
<button
|
||||
class="p-2 rounded-full bg-transparent hover:bg-gray-50 dark:hover:bg-gray-850 text-gray-500 hover:text-black dark:hover:text-white transition"
|
||||
on:click={() => (showDeleteConfirm = true)}
|
||||
type="button"
|
||||
>
|
||||
<GarbageBin />
|
||||
</button>
|
||||
</Tooltip>
|
||||
|
||||
{#if isDirty}
|
||||
<button
|
||||
class="px-4 py-1.5 text-sm bg-black text-white dark:bg-white dark:text-black rounded-full hover:opacity-90 transition flex items-center gap-1.5"
|
||||
on:click={saveHandler}
|
||||
disabled={saving}
|
||||
type="button"
|
||||
>
|
||||
{$i18n.t('Save')}
|
||||
{#if saving}
|
||||
<Spinner className="size-3" />
|
||||
{/if}
|
||||
</button>
|
||||
{/if}
|
||||
|
||||
<button
|
||||
class="px-4 py-1.5 text-sm border border-gray-200 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-850 transition rounded-full flex items-center gap-1.5"
|
||||
on:click={runNowHandler}
|
||||
type="button"
|
||||
disabled={loading}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="size-3.5"
|
||||
>
|
||||
<path
|
||||
d="M6.3 2.84A1.5 1.5 0 0 0 4 4.11v11.78a1.5 1.5 0 0 0 2.3 1.27l9.344-5.891a1.5 1.5 0 0 0 0-2.538L6.3 2.841Z"
|
||||
/>
|
||||
</svg>
|
||||
<div class="hidden md:block">{$i18n.t('Run now')}</div>
|
||||
{#if loading}
|
||||
<Spinner className="size-3" />
|
||||
{/if}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Content Segment: Independent Scrolling Columns based on PromptEditor -->
|
||||
<div class="flex flex-col md:flex-row gap-4 flex-1 overflow-hidden pb-2 px-1">
|
||||
<!-- Main Input Column -->
|
||||
<div class="flex-1 flex flex-col min-h-0 overflow-hidden">
|
||||
<div class="flex items-center justify-between mb-2 shrink-0 px-1">
|
||||
<div class="text-gray-500 text-xs">{$i18n.t('Instructions')}</div>
|
||||
</div>
|
||||
<div class="relative flex-1 min-h-0">
|
||||
<div
|
||||
class="bg-gray-50 dark:bg-gray-900 rounded-2xl p-4 border border-gray-100/50 dark:border-gray-850/50 h-full"
|
||||
>
|
||||
<textarea
|
||||
class="w-full h-full text-sm bg-transparent outline-hidden resize-none placeholder:text-gray-300 dark:placeholder:text-gray-700"
|
||||
bind:value={prompt}
|
||||
on:input={markDirty}
|
||||
placeholder={$i18n.t('Enter the prompt instructions for this automation...')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Sidebar Configuration Column -->
|
||||
<div class="hidden md:flex w-full md:w-80 shrink-0 overflow-y-auto px-1 flex-col gap-5">
|
||||
<div>
|
||||
<div class="text-gray-500 text-xs mb-3">{$i18n.t('Configuration')}</div>
|
||||
<div class="space-y-1">
|
||||
<!-- Schedule -->
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-600 dark:text-gray-400">{$i18n.t('Repeats')}</span>
|
||||
<ScheduleDropdown
|
||||
bind:this={scheduleDropdown}
|
||||
side="bottom"
|
||||
align="end"
|
||||
onChange={markDirty}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Model -->
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-600 dark:text-gray-400">{$i18n.t('Model')}</span>
|
||||
<ModelDropdown bind:model_id side="bottom" align="end" onChange={markDirty} />
|
||||
</div>
|
||||
|
||||
<!-- Terminal -->
|
||||
{#if terminalServers.length > 0}
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-600 dark:text-gray-400">{$i18n.t('Terminal')}</span>
|
||||
<TerminalDropdown
|
||||
{terminalServers}
|
||||
bind:terminalServerId
|
||||
bind:terminalCwd
|
||||
side="bottom"
|
||||
align="end"
|
||||
onChange={markDirty}
|
||||
/>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Status section -->
|
||||
<div>
|
||||
<div class="text-gray-500 text-xs mb-3">{$i18n.t('Status')}</div>
|
||||
<div class="space-y-2.5">
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-600 dark:text-gray-400">{$i18n.t('State')}</span>
|
||||
<div
|
||||
class="flex items-center gap-1.5 px-2.5 py-1 rounded-xl text-xs transition {is_active
|
||||
? 'text-emerald-700 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-500/10'
|
||||
: 'text-gray-600 dark:text-gray-400 bg-gray-100 dark:bg-gray-800'}"
|
||||
>
|
||||
<span
|
||||
class="inline-block size-1.5 rounded-full {is_active
|
||||
? 'bg-emerald-500'
|
||||
: 'bg-gray-400'}"
|
||||
></span>
|
||||
<span>{is_active ? $i18n.t('Active') : $i18n.t('Paused')}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-600 dark:text-gray-400">{$i18n.t('Next run')}</span>
|
||||
<span class=" text-gray-700 dark:text-gray-300"
|
||||
>{formatNextRun(automation.next_runs?.[0] ?? automation.next_run_at)}</span
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-between text-xs">
|
||||
<span class="text-gray-600 dark:text-gray-400">{$i18n.t('Last ran')}</span>
|
||||
<span class=" text-gray-700 dark:text-gray-300"
|
||||
>{automation.last_run_at
|
||||
? formatNextRun(automation.last_run_at)
|
||||
: $i18n.t('Never')}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-1 flex flex-col min-h-0">
|
||||
<div class="text-gray-500 text-xs mb-2 shrink-0">
|
||||
{$i18n.t('Execution Logs')}
|
||||
</div>
|
||||
<div class="flex-1 overflow-y-auto scrollbar-hidden w-full" on:scroll={onScroll}>
|
||||
{#if runsLoading && runs.length === 0}
|
||||
<div class="flex justify-center py-4">
|
||||
<Spinner className="size-4" />
|
||||
</div>
|
||||
{:else if runs.length === 0}
|
||||
<div class="text-xs text-gray-400 py-4 tabular-nums">
|
||||
{$i18n.t('No execution logs available yet')}
|
||||
</div>
|
||||
{:else}
|
||||
<div class="space-y-0.5 w-full">
|
||||
{#each runs as run (run.id)}
|
||||
<button
|
||||
class="w-full text-left flex items-center gap-2.5 px-2.5 py-2 rounded-xl hover:bg-gray-100/80 dark:hover:bg-gray-850/80 transition-colors {run.chat_id
|
||||
? 'cursor-pointer'
|
||||
: 'cursor-default'}"
|
||||
on:click={() => {
|
||||
if (run.chat_id) goto(`/c/${run.chat_id}`);
|
||||
}}
|
||||
type="button"
|
||||
>
|
||||
<div class="shrink-0 flex items-center justify-center">
|
||||
{#if run.status === 'success'}
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="size-3 text-emerald-500"
|
||||
><path
|
||||
fill-rule="evenodd"
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z"
|
||||
clip-rule="evenodd"
|
||||
/></svg
|
||||
>
|
||||
{:else if run.status === 'error'}
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="size-3 text-red-500"
|
||||
><path
|
||||
fill-rule="evenodd"
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z"
|
||||
clip-rule="evenodd"
|
||||
/></svg
|
||||
>
|
||||
{:else}
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="size-3 text-blue-500"
|
||||
><path
|
||||
d="M10 18a8 8 0 100-16 8 8 0 000 16zm.75-13a.75.75 0 00-1.5 0v5c0 .414.336.75.75.75h4a.75.75 0 000-1.5h-3.25V5z"
|
||||
/></svg
|
||||
>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="text-xs text-gray-800 dark:text-gray-200 truncate">
|
||||
{automation.name}
|
||||
</div>
|
||||
</div>
|
||||
<span class="shrink-0 text-[10px] text-gray-500 font-mono"
|
||||
>{formatRunTime(run.created_at)}</span
|
||||
>
|
||||
</button>
|
||||
{/each}
|
||||
|
||||
{#if runsLoading && runs.length > 0}
|
||||
<div class="flex justify-center py-4">
|
||||
<Spinner className="size-4" />
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
101
src/lib/components/automations/AutomationMenu.svelte
Normal file
101
src/lib/components/automations/AutomationMenu.svelte
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
<script lang="ts">
|
||||
import { getContext } from 'svelte';
|
||||
|
||||
import Dropdown from '$lib/components/common/Dropdown.svelte';
|
||||
import GarbageBin from '$lib/components/icons/GarbageBin.svelte';
|
||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let editHandler: Function;
|
||||
export let runHandler: Function = () => {};
|
||||
export let deleteHandler: Function;
|
||||
export let onClose: Function = () => {};
|
||||
|
||||
let show = false;
|
||||
</script>
|
||||
|
||||
<Dropdown
|
||||
bind:show
|
||||
onOpenChange={(state) => {
|
||||
if (state === false) {
|
||||
onClose();
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Tooltip content={$i18n.t('More')}>
|
||||
<slot />
|
||||
</Tooltip>
|
||||
|
||||
<div slot="content">
|
||||
<div
|
||||
class="min-w-[170px] rounded-2xl px-1 py-1 border border-gray-100 dark:border-gray-800 z-50 bg-white dark:bg-gray-850 dark:text-white shadow-lg"
|
||||
>
|
||||
<button
|
||||
class="select-none flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl w-full"
|
||||
draggable="false"
|
||||
on:click={() => {
|
||||
editHandler();
|
||||
show = false;
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="w-4 h-4"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
<div class="flex items-center">{$i18n.t('Edit')}</div>
|
||||
</button>
|
||||
|
||||
<button
|
||||
class="select-none flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl w-full"
|
||||
draggable="false"
|
||||
on:click={() => {
|
||||
runHandler();
|
||||
show = false;
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="w-4 h-4"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 010 1.972l-11.54 6.347a1.125 1.125 0 01-1.667-.986V5.653z"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
<div class="flex items-center">{$i18n.t('Run Now')}</div>
|
||||
</button>
|
||||
|
||||
<hr class="border-gray-50 dark:border-gray-850/30 my-1" />
|
||||
|
||||
<button
|
||||
class="select-none flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl w-full"
|
||||
draggable="false"
|
||||
on:click={() => {
|
||||
deleteHandler();
|
||||
show = false;
|
||||
}}
|
||||
>
|
||||
<GarbageBin />
|
||||
<div class="flex items-center">{$i18n.t('Delete')}</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</Dropdown>
|
||||
124
src/lib/components/automations/ModelDropdown.svelte
Normal file
124
src/lib/components/automations/ModelDropdown.svelte
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
<script lang="ts">
|
||||
import { getContext } from 'svelte';
|
||||
|
||||
import { models } from '$lib/stores';
|
||||
import { WEBUI_API_BASE_URL } from '$lib/constants';
|
||||
|
||||
import Dropdown from '$lib/components/common/Dropdown.svelte';
|
||||
import Search from '$lib/components/icons/Search.svelte';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let model_id = '';
|
||||
|
||||
export let side: 'top' | 'bottom' = 'top';
|
||||
export let align: 'start' | 'end' = 'start';
|
||||
|
||||
/** Optional callback when selection changes */
|
||||
export let onChange: () => void = () => {};
|
||||
|
||||
let showDropdown = false;
|
||||
let modelSearch = '';
|
||||
|
||||
$: modelLabel = model_id
|
||||
? $models.find((m) => m.id === model_id)?.name || model_id
|
||||
: $i18n.t('Select model');
|
||||
|
||||
$: filteredModels = modelSearch
|
||||
? $models.filter(
|
||||
(m) =>
|
||||
m.name.toLowerCase().includes(modelSearch.toLowerCase()) ||
|
||||
m.id.toLowerCase().includes(modelSearch.toLowerCase())
|
||||
)
|
||||
: $models;
|
||||
</script>
|
||||
|
||||
<Dropdown bind:show={showDropdown} {side} {align}>
|
||||
<button
|
||||
type="button"
|
||||
class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-2xl text-xs transition
|
||||
text-gray-600 dark:text-gray-400 hover:bg-black/5 dark:hover:bg-white/5"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="size-3.5 shrink-0"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 0 0-2.455 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"
|
||||
/>
|
||||
</svg>
|
||||
<span class="whitespace-nowrap max-w-32 truncate">{modelLabel}</span>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="2"
|
||||
stroke="currentColor"
|
||||
class="size-2.5"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5" />
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<div
|
||||
slot="content"
|
||||
class="rounded-2xl shadow-lg border border-gray-200 dark:border-gray-800 flex flex-col bg-white dark:bg-gray-850 w-72 p-1"
|
||||
>
|
||||
<div class="flex items-center gap-2 px-2.5 py-1.5">
|
||||
<Search className="size-3.5" strokeWidth="2.5" />
|
||||
<input
|
||||
bind:value={modelSearch}
|
||||
class="w-full text-sm bg-transparent outline-hidden"
|
||||
placeholder={$i18n.t('Search a model')}
|
||||
autocomplete="off"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="overflow-y-auto scrollbar-thin max-h-60">
|
||||
<div class="px-2 text-xs text-gray-500 py-1">
|
||||
{$i18n.t('Models')}
|
||||
</div>
|
||||
|
||||
{#each filteredModels as model (model.id)}
|
||||
<button
|
||||
class="px-2.5 py-1.5 rounded-xl w-full text-left text-sm {model_id === model.id
|
||||
? 'bg-gray-50 dark:bg-gray-800'
|
||||
: ''}"
|
||||
type="button"
|
||||
on:click={() => {
|
||||
model_id = model.id;
|
||||
showDropdown = false;
|
||||
modelSearch = '';
|
||||
onChange();
|
||||
}}
|
||||
>
|
||||
<div class="flex text-black dark:text-gray-100 line-clamp-1">
|
||||
<img
|
||||
src={`${WEBUI_API_BASE_URL}/models/model/profile/image?id=${encodeURIComponent(model.id)}`}
|
||||
alt={model?.name ?? model.id}
|
||||
class="rounded-full size-5 items-center mr-2"
|
||||
loading="lazy"
|
||||
on:error={(e) => {
|
||||
e.currentTarget.src = '/favicon.png';
|
||||
}}
|
||||
/>
|
||||
<div class="truncate">
|
||||
{model.name}
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
{:else}
|
||||
<div class="block px-3 py-2 text-sm text-gray-700 dark:text-gray-100">
|
||||
{$i18n.t('No results found')}
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
</Dropdown>
|
||||
304
src/lib/components/automations/ScheduleDropdown.svelte
Normal file
304
src/lib/components/automations/ScheduleDropdown.svelte
Normal file
|
|
@ -0,0 +1,304 @@
|
|||
<script lang="ts">
|
||||
import { getContext } from 'svelte';
|
||||
|
||||
import Dropdown from '$lib/components/common/Dropdown.svelte';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let frequency = 'DAILY';
|
||||
export let interval = 1;
|
||||
export let hour = 9;
|
||||
export let minute = 0;
|
||||
export let selectedDays: string[] = [];
|
||||
export let monthDay = 1;
|
||||
export let onceDate = '';
|
||||
export let onceTime = '09:00';
|
||||
export let customRrule = '';
|
||||
|
||||
export let side: 'top' | 'bottom' = 'top';
|
||||
export let align: 'start' | 'end' = 'start';
|
||||
|
||||
/** Optional callback when any value changes */
|
||||
export let onChange: () => void = () => {};
|
||||
|
||||
let showDropdown = false;
|
||||
|
||||
const FREQUENCIES = [
|
||||
{ key: 'ONCE', label: 'Once' },
|
||||
{ key: 'HOURLY', label: 'Hourly' },
|
||||
{ key: 'DAILY', label: 'Daily' },
|
||||
{ key: 'WEEKLY', label: 'Weekly' },
|
||||
{ key: 'MONTHLY', label: 'Monthly' },
|
||||
{ key: 'CUSTOM', label: 'Custom' }
|
||||
];
|
||||
|
||||
const DAYS = [
|
||||
{ key: 'MO', label: 'Mo' },
|
||||
{ key: 'TU', label: 'Tu' },
|
||||
{ key: 'WE', label: 'We' },
|
||||
{ key: 'TH', label: 'Th' },
|
||||
{ key: 'FR', label: 'Fr' },
|
||||
{ key: 'SA', label: 'Sa' },
|
||||
{ key: 'SU', label: 'Su' }
|
||||
];
|
||||
|
||||
let lastVisualFrequency = 'DAILY';
|
||||
let prevFrequency = 'DAILY';
|
||||
|
||||
$: if (frequency !== 'CUSTOM') {
|
||||
lastVisualFrequency = frequency;
|
||||
}
|
||||
|
||||
$: if (frequency === 'ONCE' && !onceDate) {
|
||||
const soon = new Date(Date.now() + 5 * 60_000);
|
||||
onceDate = soon.toISOString().split('T')[0];
|
||||
onceTime = `${String(soon.getHours()).padStart(2, '0')}:${String(soon.getMinutes()).padStart(2, '0')}`;
|
||||
}
|
||||
|
||||
$: {
|
||||
if (frequency === 'CUSTOM' && prevFrequency !== 'CUSTOM') {
|
||||
customRrule = buildVisualRrule();
|
||||
}
|
||||
prevFrequency = frequency;
|
||||
}
|
||||
|
||||
const buildVisualRrule = (): string => {
|
||||
if (lastVisualFrequency === 'ONCE') {
|
||||
const dt = onceDate.replace(/-/g, '') + 'T' + onceTime.replace(/:/g, '') + '00';
|
||||
return `DTSTART:${dt}\nRRULE:FREQ=DAILY;COUNT=1`;
|
||||
}
|
||||
let parts = [`FREQ=${lastVisualFrequency}`];
|
||||
if (interval > 1) parts.push(`INTERVAL=${interval}`);
|
||||
if (lastVisualFrequency === 'WEEKLY' && selectedDays.length) {
|
||||
parts.push(`BYDAY=${selectedDays.join(',')}`);
|
||||
}
|
||||
if (lastVisualFrequency === 'MONTHLY') {
|
||||
parts.push(`BYMONTHDAY=${monthDay}`);
|
||||
}
|
||||
if (['DAILY', 'WEEKLY', 'MONTHLY'].includes(lastVisualFrequency)) {
|
||||
parts.push(`BYHOUR=${hour}`);
|
||||
}
|
||||
parts.push(`BYMINUTE=${minute}`);
|
||||
return `RRULE:${parts.join(';')}`;
|
||||
};
|
||||
|
||||
export const buildRrule = (): string => {
|
||||
if (frequency === 'CUSTOM') return customRrule;
|
||||
if (frequency === 'ONCE') {
|
||||
const dt = onceDate.replace(/-/g, '') + 'T' + onceTime.replace(/:/g, '') + '00';
|
||||
return `DTSTART:${dt}\nRRULE:FREQ=DAILY;COUNT=1`;
|
||||
}
|
||||
let parts = [`FREQ=${frequency}`];
|
||||
if (interval > 1) parts.push(`INTERVAL=${interval}`);
|
||||
if (frequency === 'WEEKLY' && selectedDays.length) {
|
||||
parts.push(`BYDAY=${selectedDays.join(',')}`);
|
||||
}
|
||||
if (frequency === 'MONTHLY') {
|
||||
parts.push(`BYMONTHDAY=${monthDay}`);
|
||||
}
|
||||
if (['DAILY', 'WEEKLY', 'MONTHLY'].includes(frequency)) {
|
||||
parts.push(`BYHOUR=${hour}`);
|
||||
}
|
||||
parts.push(`BYMINUTE=${minute}`);
|
||||
return `RRULE:${parts.join(';')}`;
|
||||
};
|
||||
|
||||
export const parseRrule = (s: string) => {
|
||||
// Detect ONCE (COUNT=1 with DTSTART)
|
||||
if (s.includes('COUNT=1')) {
|
||||
frequency = 'ONCE';
|
||||
const match = s.match(/DTSTART:(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})/);
|
||||
if (match) {
|
||||
onceDate = `${match[1]}-${match[2]}-${match[3]}`;
|
||||
onceTime = `${match[4]}:${match[5]}`;
|
||||
}
|
||||
return;
|
||||
}
|
||||
const parts: Record<string, string> = {};
|
||||
s.replace('RRULE:', '')
|
||||
.split(';')
|
||||
.forEach((p) => {
|
||||
const [k, v] = p.split('=');
|
||||
if (k && v) parts[k] = v;
|
||||
});
|
||||
const freq = parts.FREQ || 'DAILY';
|
||||
if (!['HOURLY', 'DAILY', 'WEEKLY', 'MONTHLY'].includes(freq)) {
|
||||
frequency = 'CUSTOM';
|
||||
customRrule = s;
|
||||
return;
|
||||
}
|
||||
frequency = freq;
|
||||
interval = parseInt(parts.INTERVAL || '1');
|
||||
hour = parseInt(parts.BYHOUR || '9');
|
||||
minute = parseInt(parts.BYMINUTE || '0');
|
||||
selectedDays = parts.BYDAY ? parts.BYDAY.split(',') : [];
|
||||
monthDay = parseInt(parts.BYMONTHDAY || '1');
|
||||
};
|
||||
|
||||
export const getScheduleLabel = (): string => {
|
||||
if (frequency === 'ONCE') return 'Once';
|
||||
if (frequency === 'HOURLY') return 'Hourly';
|
||||
if (frequency === 'DAILY') return 'Daily';
|
||||
if (frequency === 'WEEKLY') return 'Weekly';
|
||||
if (frequency === 'MONTHLY') return 'Monthly';
|
||||
if (frequency === 'CUSTOM') return 'Custom';
|
||||
return 'Schedule';
|
||||
};
|
||||
|
||||
$: scheduleLabel = (() => {
|
||||
if (frequency === 'ONCE') return 'Once';
|
||||
if (frequency === 'HOURLY') return 'Hourly';
|
||||
if (frequency === 'DAILY') return 'Daily';
|
||||
if (frequency === 'WEEKLY') return 'Weekly';
|
||||
if (frequency === 'MONTHLY') return 'Monthly';
|
||||
if (frequency === 'CUSTOM') return 'Custom';
|
||||
return 'Schedule';
|
||||
})();
|
||||
</script>
|
||||
|
||||
<Dropdown bind:show={showDropdown} {side} {align}>
|
||||
<button
|
||||
type="button"
|
||||
class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-2xl text-xs transition
|
||||
text-gray-600 dark:text-gray-400 hover:bg-black/5 dark:hover:bg-white/5"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="size-3.5"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
|
||||
/>
|
||||
</svg>
|
||||
<span class="whitespace-nowrap">{scheduleLabel}</span>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="2"
|
||||
stroke="currentColor"
|
||||
class="size-2.5"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5" />
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<div
|
||||
slot="content"
|
||||
class="rounded-2xl shadow-lg border border-gray-200 dark:border-gray-800 flex flex-col bg-white dark:bg-gray-850 w-48 p-1"
|
||||
>
|
||||
<div class="px-2 text-xs text-gray-500 py-1">
|
||||
{$i18n.t('Schedule')}
|
||||
</div>
|
||||
|
||||
<div class="px-1.5 mt-0.5 mb-2">
|
||||
<select
|
||||
class="w-full bg-transparent rounded-xl text-xs py-1.5 px-1.5 outline-hidden"
|
||||
bind:value={frequency}
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
on:change={onChange}
|
||||
>
|
||||
{#each FREQUENCIES as f}
|
||||
<option value={f.key}>{f.label}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{#if frequency === 'CUSTOM'}
|
||||
<div class="px-2 pb-2">
|
||||
<input
|
||||
type="text"
|
||||
bind:value={customRrule}
|
||||
placeholder="RRULE:FREQ=DAILY;BYHOUR=9;BYMINUTE=0"
|
||||
class="w-full bg-transparent outline-hidden text-xs placeholder:text-gray-400 dark:placeholder:text-gray-600"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
on:input={onChange}
|
||||
/>
|
||||
</div>
|
||||
{:else if frequency !== 'HOURLY'}
|
||||
<div class="flex gap-2 flex-wrap items-center px-3 pb-2 text-xs">
|
||||
{#if frequency === 'ONCE'}
|
||||
<div class="flex items-center gap-1.5">
|
||||
<input
|
||||
type="date"
|
||||
bind:value={onceDate}
|
||||
min={new Date().toISOString().split('T')[0]}
|
||||
class="bg-transparent outline-hidden text-xs dark:color-scheme-dark"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
on:input={onChange}
|
||||
/>
|
||||
</div>
|
||||
<div class="flex items-center gap-1.5">
|
||||
<input
|
||||
type="time"
|
||||
bind:value={onceTime}
|
||||
class="bg-transparent outline-hidden text-xs dark:color-scheme-dark"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
on:input={onChange}
|
||||
/>
|
||||
</div>
|
||||
{:else}
|
||||
<div class="flex items-center gap-1.5">
|
||||
<span class="text-xs text-gray-500 mr-0.5">{$i18n.t('Time')}</span>
|
||||
<input
|
||||
type="time"
|
||||
value={`${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`}
|
||||
on:input={(e) => {
|
||||
const [h, m] = e.currentTarget.value.split(':').map(Number);
|
||||
hour = h;
|
||||
minute = m;
|
||||
onChange();
|
||||
}}
|
||||
class="bg-transparent text-center outline-hidden text-xs dark:color-scheme-dark"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
/>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if frequency === 'MONTHLY'}
|
||||
<div class="flex items-center gap-1.5">
|
||||
<span class="text-xs text-gray-500">{$i18n.t('Day')}</span>
|
||||
<input
|
||||
type="number"
|
||||
bind:value={monthDay}
|
||||
min={1}
|
||||
max={31}
|
||||
class="w-8 bg-transparent text-center outline-hidden text-xs"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
on:input={onChange}
|
||||
/>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{#if frequency === 'WEEKLY'}
|
||||
<div class="flex gap-1 px-2 pb-2">
|
||||
{#each DAYS as d}
|
||||
<button
|
||||
type="button"
|
||||
class="flex-1 py-1 text-xs rounded-xl transition {selectedDays.includes(d.key)
|
||||
? 'bg-gray-50 dark:bg-gray-800 text-black dark:text-gray-100'
|
||||
: 'text-gray-400 dark:text-gray-500 hover:text-gray-700 dark:hover:text-gray-200'}"
|
||||
on:click={() => {
|
||||
if (selectedDays.includes(d.key)) {
|
||||
selectedDays = selectedDays.filter((x) => x !== d.key);
|
||||
} else {
|
||||
selectedDays = [...selectedDays, d.key];
|
||||
}
|
||||
onChange();
|
||||
}}
|
||||
>
|
||||
{d.label}
|
||||
</button>
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</Dropdown>
|
||||
118
src/lib/components/automations/TerminalDropdown.svelte
Normal file
118
src/lib/components/automations/TerminalDropdown.svelte
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
<script lang="ts">
|
||||
import { getContext } from 'svelte';
|
||||
|
||||
import type { TerminalServer } from '$lib/apis/terminal/index';
|
||||
|
||||
import Dropdown from '$lib/components/common/Dropdown.svelte';
|
||||
import Cloud from '$lib/components/icons/Cloud.svelte';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let terminalServers: TerminalServer[] = [];
|
||||
export let terminalServerId = '';
|
||||
export let terminalCwd = '';
|
||||
|
||||
export let side: 'top' | 'bottom' = 'top';
|
||||
export let align: 'start' | 'end' = 'start';
|
||||
|
||||
/** Optional callback when selection changes */
|
||||
export let onChange: () => void = () => {};
|
||||
|
||||
let showDropdown = false;
|
||||
|
||||
$: terminalLabel = terminalServerId
|
||||
? terminalServers.find((s) => s.id === terminalServerId)?.name || 'Terminal'
|
||||
: $i18n.t('Terminal');
|
||||
</script>
|
||||
|
||||
{#if terminalServers.length > 0}
|
||||
<Dropdown bind:show={showDropdown} {side} {align}>
|
||||
<button
|
||||
type="button"
|
||||
class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-2xl text-xs transition
|
||||
{terminalServerId ? 'text-black dark:text-gray-100' : 'text-gray-600 dark:text-gray-400'}
|
||||
hover:bg-black/5 dark:hover:bg-white/5"
|
||||
>
|
||||
<Cloud className="size-3.5 shrink-0" strokeWidth="2" />
|
||||
<span class="whitespace-nowrap max-w-32 truncate">{terminalLabel}</span>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="2"
|
||||
stroke="currentColor"
|
||||
class="size-2.5"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5" />
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<div
|
||||
slot="content"
|
||||
class="rounded-2xl shadow-lg border border-gray-200 dark:border-gray-800 flex flex-col bg-white dark:bg-gray-850 min-w-56 max-w-56 p-1"
|
||||
>
|
||||
<div class="px-2 text-xs text-gray-500 py-1">
|
||||
{$i18n.t('Terminal')}
|
||||
</div>
|
||||
|
||||
{#each terminalServers as server (server.id)}
|
||||
<button
|
||||
class="flex w-full justify-between gap-2 items-center px-3 py-1.5 text-sm cursor-pointer rounded-xl {terminalServerId ===
|
||||
server.id
|
||||
? 'bg-gray-50 dark:bg-gray-800/50'
|
||||
: 'hover:bg-gray-50 dark:hover:bg-gray-800/50'}"
|
||||
type="button"
|
||||
on:click={() => {
|
||||
if (terminalServerId === server.id) {
|
||||
terminalServerId = '';
|
||||
terminalCwd = '';
|
||||
} else {
|
||||
terminalServerId = server.id;
|
||||
}
|
||||
showDropdown = false;
|
||||
onChange();
|
||||
}}
|
||||
>
|
||||
<div class="flex flex-1 gap-2 items-center truncate">
|
||||
<Cloud className="size-4 shrink-0" strokeWidth="2" />
|
||||
<span class="truncate">{server.name || server.id}</span>
|
||||
</div>
|
||||
{#if terminalServerId === server.id}
|
||||
<div class="shrink-0 text-emerald-600 dark:text-emerald-400">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="size-4"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
{/if}
|
||||
</button>
|
||||
{/each}
|
||||
|
||||
{#if terminalServerId}
|
||||
<div class="border-t border-gray-100 dark:border-gray-800 mt-1 pt-1">
|
||||
<div class="px-2.5 py-1 text-xs text-gray-500">
|
||||
{$i18n.t('Working Directory')}
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<input
|
||||
type="text"
|
||||
bind:value={terminalCwd}
|
||||
placeholder="/home/user/project"
|
||||
class="w-full bg-transparent outline-hidden text-xs py-1.5 placeholder:text-gray-400 dark:placeholder:text-gray-600"
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
on:input={onChange}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</Dropdown>
|
||||
{/if}
|
||||
|
|
@ -94,7 +94,10 @@
|
|||
const deltaY = touch.clientY - swipeStartY;
|
||||
|
||||
// Determine swipe direction from dead zone
|
||||
if (!swipeLocked && (Math.abs(deltaX) > SWIPE_DEAD_ZONE || Math.abs(deltaY) > SWIPE_DEAD_ZONE)) {
|
||||
if (
|
||||
!swipeLocked &&
|
||||
(Math.abs(deltaX) > SWIPE_DEAD_ZONE || Math.abs(deltaY) > SWIPE_DEAD_ZONE)
|
||||
) {
|
||||
if (Math.abs(deltaY) > Math.abs(deltaX)) {
|
||||
// Vertical scroll — abort swipe tracking
|
||||
isSwiping = false;
|
||||
|
|
@ -111,9 +114,8 @@
|
|||
// Only allow right swipe
|
||||
const clampedX = Math.max(0, deltaX);
|
||||
// Dampen the motion beyond threshold for a rubber-band feel
|
||||
swipeOffsetX = clampedX <= SWIPE_THRESHOLD
|
||||
? clampedX
|
||||
: SWIPE_THRESHOLD + (clampedX - SWIPE_THRESHOLD) * 0.3;
|
||||
swipeOffsetX =
|
||||
clampedX <= SWIPE_THRESHOLD ? clampedX : SWIPE_THRESHOLD + (clampedX - SWIPE_THRESHOLD) * 0.3;
|
||||
swipeOffsetX = Math.min(swipeOffsetX, SWIPE_MAX);
|
||||
};
|
||||
|
||||
|
|
@ -162,9 +164,13 @@
|
|||
{#if swipeOffsetX > 0}
|
||||
<div
|
||||
class="swipe-reply-indicator"
|
||||
style="opacity: {Math.min(swipeOffsetX / SWIPE_THRESHOLD, 1)}; transform: scale({0.5 + Math.min(swipeOffsetX / SWIPE_THRESHOLD, 1) * 0.5});"
|
||||
style="opacity: {Math.min(swipeOffsetX / SWIPE_THRESHOLD, 1)}; transform: scale({0.5 +
|
||||
Math.min(swipeOffsetX / SWIPE_THRESHOLD, 1) * 0.5});"
|
||||
>
|
||||
<div class="swipe-reply-icon" class:swipe-reply-icon--active={swipeOffsetX >= SWIPE_THRESHOLD}>
|
||||
<div
|
||||
class="swipe-reply-icon"
|
||||
class:swipe-reply-icon--active={swipeOffsetX >= SWIPE_THRESHOLD}
|
||||
>
|
||||
<ArrowUpLeftAlt className="size-5" />
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -175,7 +181,9 @@
|
|||
class="flex flex-col justify-between w-full max-w-full mx-auto group hover:bg-gray-300/5 dark:hover:bg-gray-700/5 relative {className
|
||||
? className
|
||||
: `px-5 ${
|
||||
replyToMessage ? 'border-l-4 border-blue-500 bg-blue-100/10 dark:bg-blue-100/5 pl-4' : ''
|
||||
replyToMessage
|
||||
? 'border-l-4 border-blue-500 bg-blue-100/10 dark:bg-blue-100/5 pl-4'
|
||||
: ''
|
||||
} ${
|
||||
(message?.reply_to_message?.meta?.model_id ?? message?.reply_to_message?.user_id) ===
|
||||
$user?.id
|
||||
|
|
@ -184,448 +192,453 @@
|
|||
} ${message?.is_pinned ? 'bg-yellow-100/20 dark:bg-yellow-100/5' : ''}`} {showUserProfile
|
||||
? 'pt-1.5 pb-0.5'
|
||||
: ''}"
|
||||
style="transform: translateX({swipeOffsetX}px); {swipeOffsetX > 0 ? '' : 'transition: transform 0.3s cubic-bezier(0.2, 0.9, 0.3, 1);'}"
|
||||
style="transform: translateX({swipeOffsetX}px); {swipeOffsetX > 0
|
||||
? ''
|
||||
: 'transition: transform 0.3s cubic-bezier(0.2, 0.9, 0.3, 1);'}"
|
||||
>
|
||||
{#if !edit && !disabled}
|
||||
<div
|
||||
class=" absolute {showButtons ? '' : 'invisible group-hover:visible'} right-1 -top-2 z-10"
|
||||
>
|
||||
{#if !edit && !disabled}
|
||||
<div
|
||||
class="flex gap-1 rounded-lg bg-white dark:bg-gray-850 shadow-md p-0.5 border border-gray-100/30 dark:border-gray-850/30"
|
||||
class=" absolute {showButtons ? '' : 'invisible group-hover:visible'} right-1 -top-2 z-10"
|
||||
>
|
||||
{#if onReaction}
|
||||
<EmojiPicker
|
||||
onClose={() => (showButtons = false)}
|
||||
onSubmit={(name) => {
|
||||
showButtons = false;
|
||||
onReaction(name);
|
||||
}}
|
||||
>
|
||||
<Tooltip content={$i18n.t('Add Reaction')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => {
|
||||
showButtons = true;
|
||||
}}
|
||||
>
|
||||
<FaceSmile />
|
||||
</button>
|
||||
</Tooltip>
|
||||
</EmojiPicker>
|
||||
{/if}
|
||||
|
||||
{#if onReply}
|
||||
<Tooltip content={$i18n.t('Reply')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-0.5"
|
||||
on:click={() => {
|
||||
onReply(message);
|
||||
<div
|
||||
class="flex gap-1 rounded-lg bg-white dark:bg-gray-850 shadow-md p-0.5 border border-gray-100/30 dark:border-gray-850/30"
|
||||
>
|
||||
{#if onReaction}
|
||||
<EmojiPicker
|
||||
onClose={() => (showButtons = false)}
|
||||
onSubmit={(name) => {
|
||||
showButtons = false;
|
||||
onReaction(name);
|
||||
}}
|
||||
>
|
||||
<ArrowUpLeftAlt className="size-5" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
<Tooltip content={$i18n.t('Add Reaction')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => {
|
||||
showButtons = true;
|
||||
}}
|
||||
>
|
||||
<FaceSmile />
|
||||
</button>
|
||||
</Tooltip>
|
||||
</EmojiPicker>
|
||||
{/if}
|
||||
|
||||
<Tooltip content={message?.is_pinned ? $i18n.t('Unpin') : $i18n.t('Pin')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => {
|
||||
onPin(message);
|
||||
}}
|
||||
>
|
||||
{#if message?.is_pinned}
|
||||
<PinSlash className="size-4" />
|
||||
{:else}
|
||||
<Pin className="size-4" />
|
||||
{/if}
|
||||
</button>
|
||||
</Tooltip>
|
||||
{#if onReply}
|
||||
<Tooltip content={$i18n.t('Reply')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-0.5"
|
||||
on:click={() => {
|
||||
onReply(message);
|
||||
}}
|
||||
>
|
||||
<ArrowUpLeftAlt className="size-5" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
|
||||
{#if !thread && onThread}
|
||||
<Tooltip content={$i18n.t('Reply in Thread')}>
|
||||
<Tooltip content={message?.is_pinned ? $i18n.t('Unpin') : $i18n.t('Pin')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => {
|
||||
onThread(message.id);
|
||||
onPin(message);
|
||||
}}
|
||||
>
|
||||
<ChatBubbleOvalEllipsis />
|
||||
{#if message?.is_pinned}
|
||||
<PinSlash className="size-4" />
|
||||
{:else}
|
||||
<Pin className="size-4" />
|
||||
{/if}
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
|
||||
{#if message.user_id === $user?.id || $user?.role === 'admin'}
|
||||
{#if onEdit}
|
||||
<Tooltip content={$i18n.t('Edit')}>
|
||||
{#if !thread && onThread}
|
||||
<Tooltip content={$i18n.t('Reply in Thread')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => {
|
||||
edit = true;
|
||||
editedContent = message.content;
|
||||
onThread(message.id);
|
||||
}}
|
||||
>
|
||||
<Pencil />
|
||||
<ChatBubbleOvalEllipsis />
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
|
||||
{#if onDelete}
|
||||
<Tooltip content={$i18n.t('Delete')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => (showDeleteConfirmDialog = true)}
|
||||
>
|
||||
<GarbageBin />
|
||||
</button>
|
||||
</Tooltip>
|
||||
{#if message.user_id === $user?.id || $user?.role === 'admin'}
|
||||
{#if onEdit}
|
||||
<Tooltip content={$i18n.t('Edit')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => {
|
||||
edit = true;
|
||||
editedContent = message.content;
|
||||
}}
|
||||
>
|
||||
<Pencil />
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
|
||||
{#if onDelete}
|
||||
<Tooltip content={$i18n.t('Delete')}>
|
||||
<button
|
||||
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
|
||||
on:click={() => (showDeleteConfirmDialog = true)}
|
||||
>
|
||||
<GarbageBin />
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if message?.is_pinned}
|
||||
<div class="flex {showUserProfile ? 'mb-0.5' : 'mt-0.5'}">
|
||||
<div class="ml-8.5 flex items-center gap-1 px-1 rounded-full text-xs">
|
||||
<Pin className="size-3 text-yellow-500 dark:text-yellow-300" />
|
||||
<span class="text-gray-500">{$i18n.t('Pinned')}</span>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if message?.reply_to_message?.user}
|
||||
<div class="relative text-xs mb-1">
|
||||
<div
|
||||
class="absolute h-3 w-7 left-[18px] top-2 rounded-tl-lg border-t-[1.5px] border-l-[1.5px] border-gray-200 dark:border-gray-700 z-0"
|
||||
></div>
|
||||
|
||||
<button
|
||||
class="ml-12 flex items-center space-x-2 relative z-0"
|
||||
on:click={() => {
|
||||
const messageElement = document.getElementById(
|
||||
`message-${message.reply_to_message.id}`
|
||||
);
|
||||
if (messageElement) {
|
||||
messageElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
messageElement.classList.add('highlight');
|
||||
setTimeout(() => {
|
||||
messageElement.classList.remove('highlight');
|
||||
}, 2000);
|
||||
return;
|
||||
}
|
||||
}}
|
||||
>
|
||||
{#if message?.reply_to_message?.meta?.model_id}
|
||||
<img
|
||||
src={`${WEBUI_API_BASE_URL}/models/model/profile/image?id=${message.reply_to_message.meta.model_id}`}
|
||||
alt={message.reply_to_message.meta.model_name ??
|
||||
message.reply_to_message.meta.model_id}
|
||||
class="size-4 ml-0.5 rounded-full object-cover"
|
||||
on:error={(e) => {
|
||||
e.currentTarget.src = '/favicon.png';
|
||||
}}
|
||||
/>
|
||||
{:else}
|
||||
<img
|
||||
src={message.reply_to_message.user?.role === 'webhook'
|
||||
? `${WEBUI_API_BASE_URL}/channels/webhooks/${message.reply_to_message.user?.id}/profile/image`
|
||||
: `${WEBUI_API_BASE_URL}/users/${message.reply_to_message.user?.id}/profile/image`}
|
||||
alt={message.reply_to_message.user?.name ?? $i18n.t('Unknown User')}
|
||||
class="size-4 ml-0.5 rounded-full object-cover"
|
||||
/>
|
||||
{/if}
|
||||
|
||||
<div class="shrink-0">
|
||||
{message?.reply_to_message.meta?.model_name ??
|
||||
message?.reply_to_message.user?.name ??
|
||||
$i18n.t('Unknown User')}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="italic text-sm text-gray-500 dark:text-gray-400 line-clamp-1 w-full flex-1">
|
||||
<Markdown id={`${message.id}-reply-to`} content={message?.reply_to_message?.content} />
|
||||
{#if message?.is_pinned}
|
||||
<div class="flex {showUserProfile ? 'mb-0.5' : 'mt-0.5'}">
|
||||
<div class="ml-8.5 flex items-center gap-1 px-1 rounded-full text-xs">
|
||||
<Pin className="size-3 text-yellow-500 dark:text-yellow-300" />
|
||||
<span class="text-gray-500">{$i18n.t('Pinned')}</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div
|
||||
class=" flex w-full message-{message.id} "
|
||||
id="message-{message.id}"
|
||||
dir={$settings.chatDirection}
|
||||
>
|
||||
<div class={`shrink-0 mr-1 w-9`}>
|
||||
{#if showUserProfile}
|
||||
{#if message?.meta?.model_id}
|
||||
<img
|
||||
src={`${WEBUI_API_BASE_URL}/models/model/profile/image?id=${message.meta.model_id}`}
|
||||
alt={message.meta.model_name ?? message.meta.model_id}
|
||||
class="size-8 translate-y-1 ml-0.5 object-cover rounded-full"
|
||||
on:error={(e) => {
|
||||
e.currentTarget.src = '/favicon.png';
|
||||
}}
|
||||
/>
|
||||
{:else if message.user?.role === 'webhook'}
|
||||
<ProfileImage
|
||||
src={`${WEBUI_API_BASE_URL}/channels/webhooks/${message.user?.id}/profile/image`}
|
||||
className={'size-8 ml-0.5'}
|
||||
/>
|
||||
{:else}
|
||||
<ProfilePreview user={message.user}>
|
||||
{#if message?.reply_to_message?.user}
|
||||
<div class="relative text-xs mb-1">
|
||||
<div
|
||||
class="absolute h-3 w-7 left-[18px] top-2 rounded-tl-lg border-t-[1.5px] border-l-[1.5px] border-gray-200 dark:border-gray-700 z-0"
|
||||
></div>
|
||||
|
||||
<button
|
||||
class="ml-12 flex items-center space-x-2 relative z-0"
|
||||
on:click={() => {
|
||||
const messageElement = document.getElementById(
|
||||
`message-${message.reply_to_message.id}`
|
||||
);
|
||||
if (messageElement) {
|
||||
messageElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
messageElement.classList.add('highlight');
|
||||
setTimeout(() => {
|
||||
messageElement.classList.remove('highlight');
|
||||
}, 2000);
|
||||
return;
|
||||
}
|
||||
}}
|
||||
>
|
||||
{#if message?.reply_to_message?.meta?.model_id}
|
||||
<img
|
||||
src={`${WEBUI_API_BASE_URL}/models/model/profile/image?id=${message.reply_to_message.meta.model_id}`}
|
||||
alt={message.reply_to_message.meta.model_name ??
|
||||
message.reply_to_message.meta.model_id}
|
||||
class="size-4 ml-0.5 rounded-full object-cover"
|
||||
on:error={(e) => {
|
||||
e.currentTarget.src = '/favicon.png';
|
||||
}}
|
||||
/>
|
||||
{:else}
|
||||
<img
|
||||
src={message.reply_to_message.user?.role === 'webhook'
|
||||
? `${WEBUI_API_BASE_URL}/channels/webhooks/${message.reply_to_message.user?.id}/profile/image`
|
||||
: `${WEBUI_API_BASE_URL}/users/${message.reply_to_message.user?.id}/profile/image`}
|
||||
alt={message.reply_to_message.user?.name ?? $i18n.t('Unknown User')}
|
||||
class="size-4 ml-0.5 rounded-full object-cover"
|
||||
/>
|
||||
{/if}
|
||||
|
||||
<div class="shrink-0">
|
||||
{message?.reply_to_message.meta?.model_name ??
|
||||
message?.reply_to_message.user?.name ??
|
||||
$i18n.t('Unknown User')}
|
||||
</div>
|
||||
|
||||
<div class="italic text-sm text-gray-500 dark:text-gray-400 line-clamp-1 w-full flex-1">
|
||||
<Markdown
|
||||
id={`${message.id}-reply-to`}
|
||||
content={message?.reply_to_message?.content}
|
||||
/>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div
|
||||
class=" flex w-full message-{message.id} "
|
||||
id="message-{message.id}"
|
||||
dir={$settings.chatDirection}
|
||||
>
|
||||
<div class={`shrink-0 mr-1 w-9`}>
|
||||
{#if showUserProfile}
|
||||
{#if message?.meta?.model_id}
|
||||
<img
|
||||
src={`${WEBUI_API_BASE_URL}/models/model/profile/image?id=${message.meta.model_id}`}
|
||||
alt={message.meta.model_name ?? message.meta.model_id}
|
||||
class="size-8 translate-y-1 ml-0.5 object-cover rounded-full"
|
||||
on:error={(e) => {
|
||||
e.currentTarget.src = '/favicon.png';
|
||||
}}
|
||||
/>
|
||||
{:else if message.user?.role === 'webhook'}
|
||||
<ProfileImage
|
||||
src={`${WEBUI_API_BASE_URL}/users/${message.user?.id}/profile/image`}
|
||||
src={`${WEBUI_API_BASE_URL}/channels/webhooks/${message.user?.id}/profile/image`}
|
||||
className={'size-8 ml-0.5'}
|
||||
/>
|
||||
</ProfilePreview>
|
||||
{/if}
|
||||
{:else}
|
||||
<!-- <div class="w-7 h-7 rounded-full bg-transparent" /> -->
|
||||
|
||||
{#if message.created_at}
|
||||
<div
|
||||
class="mt-1.5 flex shrink-0 items-center text-xs self-center invisible group-hover:visible text-gray-500 font-medium first-letter:capitalize"
|
||||
>
|
||||
<Tooltip content={dayjs(message.created_at / 1000000).format('LLLL')}>
|
||||
{dayjs(message.created_at / 1000000).format('HH:mm')}
|
||||
</Tooltip>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="flex-auto w-0 pl-2">
|
||||
{#if showUserProfile}
|
||||
<Name>
|
||||
<div class=" self-end text-base shrink-0 font-medium truncate">
|
||||
{#if message?.meta?.model_id}
|
||||
{message?.meta?.model_name ?? message?.meta?.model_id}
|
||||
{:else}
|
||||
{message?.user?.name}
|
||||
{/if}
|
||||
</div>
|
||||
{:else}
|
||||
<ProfilePreview user={message.user}>
|
||||
<ProfileImage
|
||||
src={`${WEBUI_API_BASE_URL}/users/${message.user?.id}/profile/image`}
|
||||
className={'size-8 ml-0.5'}
|
||||
/>
|
||||
</ProfilePreview>
|
||||
{/if}
|
||||
{:else}
|
||||
<!-- <div class="w-7 h-7 rounded-full bg-transparent" /> -->
|
||||
|
||||
{#if message.created_at}
|
||||
<div
|
||||
class=" self-center text-xs text-gray-400 font-medium first-letter:capitalize ml-0.5 translate-y-[1px]"
|
||||
class="mt-1.5 flex shrink-0 items-center text-xs self-center invisible group-hover:visible text-gray-500 font-medium first-letter:capitalize"
|
||||
>
|
||||
<Tooltip content={dayjs(message.created_at / 1000000).format('LLLL')}>
|
||||
<span class="line-clamp-1">
|
||||
{#if dayjs(message.created_at / 1000000).isToday()}
|
||||
{dayjs(message.created_at / 1000000).format('LT')}
|
||||
{:else}
|
||||
{$i18n.t(formatDate(message.created_at / 1000000), {
|
||||
LOCALIZED_TIME: dayjs(message.created_at / 1000000).format('LT'),
|
||||
LOCALIZED_DATE: dayjs(message.created_at / 1000000).format('L')
|
||||
})}
|
||||
{/if}
|
||||
</span>
|
||||
{dayjs(message.created_at / 1000000).format('HH:mm')}
|
||||
</Tooltip>
|
||||
</div>
|
||||
{/if}
|
||||
</Name>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{#if message?.data === true}
|
||||
<!-- loading indicator -->
|
||||
<div class=" my-2">
|
||||
<Skeleton />
|
||||
</div>
|
||||
{:else if (message?.data?.files ?? []).length > 0}
|
||||
<div
|
||||
class="my-2.5 w-full flex overflow-x-auto gap-2 flex-wrap"
|
||||
dir={$settings?.chatDirection ?? 'auto'}
|
||||
>
|
||||
{#each message?.data?.files as file}
|
||||
{@const fileUrl =
|
||||
file.url.startsWith('data') || file.url.startsWith('http')
|
||||
? file.url
|
||||
: `${WEBUI_API_BASE_URL}/files/${file.url}${file?.content_type ? '/content' : ''}`}
|
||||
<div>
|
||||
{#if file.type === 'image' || (file?.content_type ?? '').startsWith('image/')}
|
||||
<Image src={fileUrl} alt={file.name} imageClassName=" max-h-96 rounded-lg" />
|
||||
{:else if file.type === 'video' || (file?.content_type ?? '').startsWith('video/')}
|
||||
<video src={fileUrl} controls class=" max-h-96 rounded-lg"></video>
|
||||
<div class="flex-auto w-0 pl-2">
|
||||
{#if showUserProfile}
|
||||
<Name>
|
||||
<div class=" self-end text-base shrink-0 font-medium truncate">
|
||||
{#if message?.meta?.model_id}
|
||||
{message?.meta?.model_name ?? message?.meta?.model_id}
|
||||
{:else}
|
||||
<FileItem
|
||||
item={file}
|
||||
url={file.url}
|
||||
name={file.name}
|
||||
type={file.type}
|
||||
size={file?.size}
|
||||
small={true}
|
||||
/>
|
||||
{message?.user?.name}
|
||||
{/if}
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if edit}
|
||||
<div class="py-2">
|
||||
<Textarea
|
||||
className=" bg-transparent outline-hidden w-full resize-none"
|
||||
bind:value={editedContent}
|
||||
onKeydown={(e) => {
|
||||
if (e.key === 'Escape') {
|
||||
document.getElementById('close-edit-message-button')?.click();
|
||||
}
|
||||
|
||||
const isCmdOrCtrlPressed = e.metaKey || e.ctrlKey;
|
||||
const isEnterPressed = e.key === 'Enter';
|
||||
|
||||
if (isCmdOrCtrlPressed && isEnterPressed) {
|
||||
document.getElementById('confirm-edit-message-button')?.click();
|
||||
}
|
||||
}}
|
||||
/>
|
||||
<div class=" mt-2 mb-1 flex justify-end text-sm font-medium">
|
||||
<div class="flex space-x-1.5">
|
||||
<button
|
||||
id="close-edit-message-button"
|
||||
class="px-3.5 py-1.5 bg-white dark:bg-gray-900 hover:bg-gray-100 text-gray-800 dark:text-gray-100 transition rounded-3xl"
|
||||
on:click={() => {
|
||||
edit = false;
|
||||
editedContent = null;
|
||||
}}
|
||||
{#if message.created_at}
|
||||
<div
|
||||
class=" self-center text-xs text-gray-400 font-medium first-letter:capitalize ml-0.5 translate-y-[1px]"
|
||||
>
|
||||
{$i18n.t('Cancel')}
|
||||
</button>
|
||||
|
||||
<button
|
||||
id="confirm-edit-message-button"
|
||||
class="px-3.5 py-1.5 bg-gray-900 dark:bg-white hover:bg-gray-850 text-gray-100 dark:text-gray-800 transition rounded-3xl"
|
||||
on:click={async () => {
|
||||
onEdit(editedContent);
|
||||
edit = false;
|
||||
editedContent = null;
|
||||
}}
|
||||
>
|
||||
{$i18n.t('Save')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{:else}
|
||||
<div class=" min-w-full markdown-prose {pending ? 'opacity-50' : ''}">
|
||||
{#if (message?.content ?? '').trim() === '' && message?.meta?.model_id}
|
||||
<Skeleton />
|
||||
{:else}
|
||||
<Markdown
|
||||
id={message.id}
|
||||
content={message.content}
|
||||
paragraphTag="span"
|
||||
/>{#if message.created_at !== message.updated_at && (message?.meta?.model_id ?? null) === null}<span
|
||||
class="text-gray-500 text-[10px] pl-1 self-center">({$i18n.t('edited')})</span
|
||||
>{/if}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{#if (message?.reactions ?? []).length > 0}
|
||||
<div>
|
||||
<div class="flex items-center flex-wrap gap-y-1.5 gap-1 mt-1 mb-2">
|
||||
{#each message.reactions as reaction}
|
||||
<Tooltip
|
||||
content={$i18n.t('{{NAMES}} reacted with {{REACTION}}', {
|
||||
NAMES: reaction.users
|
||||
.reduce((acc, u, idx) => {
|
||||
const name = u.id === $user?.id ? $i18n.t('You') : u.name;
|
||||
const total = reaction.users.length;
|
||||
|
||||
// First three names always added normally
|
||||
if (idx < 3) {
|
||||
const separator =
|
||||
idx === 0
|
||||
? ''
|
||||
: idx === Math.min(2, total - 1)
|
||||
? ` ${$i18n.t('and')} `
|
||||
: ', ';
|
||||
return `${acc}${separator}${name}`;
|
||||
}
|
||||
|
||||
// More than 4 → "and X others"
|
||||
if (idx === 3 && total > 4) {
|
||||
return (
|
||||
acc +
|
||||
` ${$i18n.t('and {{COUNT}} others', {
|
||||
COUNT: total - 3
|
||||
})}`
|
||||
);
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, '')
|
||||
.trim(),
|
||||
REACTION: `:${reaction.name}:`
|
||||
})}
|
||||
>
|
||||
<button
|
||||
class="flex items-center gap-1.5 transition rounded-xl px-2 py-1 cursor-pointer {reaction.users
|
||||
.map((u) => u.id)
|
||||
.includes($user?.id)
|
||||
? ' bg-blue-300/10 outline outline-blue-500/50 outline-1'
|
||||
: 'bg-gray-300/10 dark:bg-gray-500/10 hover:outline hover:outline-gray-700/30 dark:hover:outline-gray-300/30 hover:outline-1'}"
|
||||
on:click={() => {
|
||||
if (onReaction) {
|
||||
onReaction(reaction.name);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Emoji shortCode={reaction.name} />
|
||||
|
||||
{#if reaction.users.length > 0}
|
||||
<div class="text-xs font-medium text-gray-500 dark:text-gray-400">
|
||||
{reaction.users?.length}
|
||||
</div>
|
||||
<Tooltip content={dayjs(message.created_at / 1000000).format('LLLL')}>
|
||||
<span class="line-clamp-1">
|
||||
{#if dayjs(message.created_at / 1000000).isToday()}
|
||||
{dayjs(message.created_at / 1000000).format('LT')}
|
||||
{:else}
|
||||
{$i18n.t(formatDate(message.created_at / 1000000), {
|
||||
LOCALIZED_TIME: dayjs(message.created_at / 1000000).format('LT'),
|
||||
LOCALIZED_DATE: dayjs(message.created_at / 1000000).format('L')
|
||||
})}
|
||||
{/if}
|
||||
</button>
|
||||
</span>
|
||||
</Tooltip>
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
</Name>
|
||||
{/if}
|
||||
|
||||
{#if onReaction}
|
||||
<EmojiPicker
|
||||
onSubmit={(name) => {
|
||||
onReaction(name);
|
||||
{#if message?.data === true}
|
||||
<!-- loading indicator -->
|
||||
<div class=" my-2">
|
||||
<Skeleton />
|
||||
</div>
|
||||
{:else if (message?.data?.files ?? []).length > 0}
|
||||
<div
|
||||
class="my-2.5 w-full flex overflow-x-auto gap-2 flex-wrap"
|
||||
dir={$settings?.chatDirection ?? 'auto'}
|
||||
>
|
||||
{#each message?.data?.files as file}
|
||||
{@const fileUrl =
|
||||
file.url.startsWith('data') || file.url.startsWith('http')
|
||||
? file.url
|
||||
: `${WEBUI_API_BASE_URL}/files/${file.url}${file?.content_type ? '/content' : ''}`}
|
||||
<div>
|
||||
{#if file.type === 'image' || (file?.content_type ?? '').startsWith('image/')}
|
||||
<Image src={fileUrl} alt={file.name} imageClassName=" max-h-96 rounded-lg" />
|
||||
{:else if file.type === 'video' || (file?.content_type ?? '').startsWith('video/')}
|
||||
<video src={fileUrl} controls class=" max-h-96 rounded-lg"></video>
|
||||
{:else}
|
||||
<FileItem
|
||||
item={file}
|
||||
url={file.url}
|
||||
name={file.name}
|
||||
type={file.type}
|
||||
size={file?.size}
|
||||
small={true}
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if edit}
|
||||
<div class="py-2">
|
||||
<Textarea
|
||||
className=" bg-transparent outline-hidden w-full resize-none"
|
||||
bind:value={editedContent}
|
||||
onKeydown={(e) => {
|
||||
if (e.key === 'Escape') {
|
||||
document.getElementById('close-edit-message-button')?.click();
|
||||
}
|
||||
|
||||
const isCmdOrCtrlPressed = e.metaKey || e.ctrlKey;
|
||||
const isEnterPressed = e.key === 'Enter';
|
||||
|
||||
if (isCmdOrCtrlPressed && isEnterPressed) {
|
||||
document.getElementById('confirm-edit-message-button')?.click();
|
||||
}
|
||||
}}
|
||||
/>
|
||||
<div class=" mt-2 mb-1 flex justify-end text-sm font-medium">
|
||||
<div class="flex space-x-1.5">
|
||||
<button
|
||||
id="close-edit-message-button"
|
||||
class="px-3.5 py-1.5 bg-white dark:bg-gray-900 hover:bg-gray-100 text-gray-800 dark:text-gray-100 transition rounded-3xl"
|
||||
on:click={() => {
|
||||
edit = false;
|
||||
editedContent = null;
|
||||
}}
|
||||
>
|
||||
<Tooltip content={$i18n.t('Add Reaction')}>
|
||||
<div
|
||||
class="flex items-center gap-1.5 bg-gray-500/10 hover:outline hover:outline-gray-700/30 dark:hover:outline-gray-300/30 hover:outline-1 transition rounded-xl px-1 py-1 cursor-pointer text-gray-500 dark:text-gray-400"
|
||||
>
|
||||
<FaceSmile />
|
||||
</div>
|
||||
</Tooltip>
|
||||
</EmojiPicker>
|
||||
{/if}
|
||||
{$i18n.t('Cancel')}
|
||||
</button>
|
||||
|
||||
<button
|
||||
id="confirm-edit-message-button"
|
||||
class="px-3.5 py-1.5 bg-gray-900 dark:bg-white hover:bg-gray-850 text-gray-100 dark:text-gray-800 transition rounded-3xl"
|
||||
on:click={async () => {
|
||||
onEdit(editedContent);
|
||||
edit = false;
|
||||
editedContent = null;
|
||||
}}
|
||||
>
|
||||
{$i18n.t('Save')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if !thread && message.reply_count > 0}
|
||||
<div class="flex items-center gap-1.5 -mt-0.5 mb-1.5">
|
||||
<button
|
||||
class="flex items-center text-xs py-1 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 transition"
|
||||
on:click={() => {
|
||||
onThread(message.id);
|
||||
}}
|
||||
>
|
||||
<span class="font-medium mr-1">
|
||||
{$i18n.t('{{COUNT}} Replies', { COUNT: message.reply_count })}</span
|
||||
><span>
|
||||
{' - '}{$i18n.t('Last reply')}
|
||||
{dayjs.unix(message.latest_reply_at / 1000000000).fromNow()}</span
|
||||
>
|
||||
|
||||
<span class="ml-1">
|
||||
<ChevronRight className="size-2.5" strokeWidth="3" />
|
||||
</span>
|
||||
<!-- {$i18n.t('View Replies')} -->
|
||||
</button>
|
||||
{:else}
|
||||
<div class=" min-w-full markdown-prose {pending ? 'opacity-50' : ''}">
|
||||
{#if (message?.content ?? '').trim() === '' && message?.meta?.model_id}
|
||||
<Skeleton />
|
||||
{:else}
|
||||
<Markdown
|
||||
id={message.id}
|
||||
content={message.content}
|
||||
paragraphTag="span"
|
||||
/>{#if message.created_at !== message.updated_at && (message?.meta?.model_id ?? null) === null}<span
|
||||
class="text-gray-500 text-[10px] pl-1 self-center">({$i18n.t('edited')})</span
|
||||
>{/if}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{#if (message?.reactions ?? []).length > 0}
|
||||
<div>
|
||||
<div class="flex items-center flex-wrap gap-y-1.5 gap-1 mt-1 mb-2">
|
||||
{#each message.reactions as reaction}
|
||||
<Tooltip
|
||||
content={$i18n.t('{{NAMES}} reacted with {{REACTION}}', {
|
||||
NAMES: reaction.users
|
||||
.reduce((acc, u, idx) => {
|
||||
const name = u.id === $user?.id ? $i18n.t('You') : u.name;
|
||||
const total = reaction.users.length;
|
||||
|
||||
// First three names always added normally
|
||||
if (idx < 3) {
|
||||
const separator =
|
||||
idx === 0
|
||||
? ''
|
||||
: idx === Math.min(2, total - 1)
|
||||
? ` ${$i18n.t('and')} `
|
||||
: ', ';
|
||||
return `${acc}${separator}${name}`;
|
||||
}
|
||||
|
||||
// More than 4 → "and X others"
|
||||
if (idx === 3 && total > 4) {
|
||||
return (
|
||||
acc +
|
||||
` ${$i18n.t('and {{COUNT}} others', {
|
||||
COUNT: total - 3
|
||||
})}`
|
||||
);
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, '')
|
||||
.trim(),
|
||||
REACTION: `:${reaction.name}:`
|
||||
})}
|
||||
>
|
||||
<button
|
||||
class="flex items-center gap-1.5 transition rounded-xl px-2 py-1 cursor-pointer {reaction.users
|
||||
.map((u) => u.id)
|
||||
.includes($user?.id)
|
||||
? ' bg-blue-300/10 outline outline-blue-500/50 outline-1'
|
||||
: 'bg-gray-300/10 dark:bg-gray-500/10 hover:outline hover:outline-gray-700/30 dark:hover:outline-gray-300/30 hover:outline-1'}"
|
||||
on:click={() => {
|
||||
if (onReaction) {
|
||||
onReaction(reaction.name);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Emoji shortCode={reaction.name} />
|
||||
|
||||
{#if reaction.users.length > 0}
|
||||
<div class="text-xs font-medium text-gray-500 dark:text-gray-400">
|
||||
{reaction.users?.length}
|
||||
</div>
|
||||
{/if}
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/each}
|
||||
|
||||
{#if onReaction}
|
||||
<EmojiPicker
|
||||
onSubmit={(name) => {
|
||||
onReaction(name);
|
||||
}}
|
||||
>
|
||||
<Tooltip content={$i18n.t('Add Reaction')}>
|
||||
<div
|
||||
class="flex items-center gap-1.5 bg-gray-500/10 hover:outline hover:outline-gray-700/30 dark:hover:outline-gray-300/30 hover:outline-1 transition rounded-xl px-1 py-1 cursor-pointer text-gray-500 dark:text-gray-400"
|
||||
>
|
||||
<FaceSmile />
|
||||
</div>
|
||||
</Tooltip>
|
||||
</EmojiPicker>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if !thread && message.reply_count > 0}
|
||||
<div class="flex items-center gap-1.5 -mt-0.5 mb-1.5">
|
||||
<button
|
||||
class="flex items-center text-xs py-1 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 transition"
|
||||
on:click={() => {
|
||||
onThread(message.id);
|
||||
}}
|
||||
>
|
||||
<span class="font-medium mr-1">
|
||||
{$i18n.t('{{COUNT}} Replies', { COUNT: message.reply_count })}</span
|
||||
><span>
|
||||
{' - '}{$i18n.t('Last reply')}
|
||||
{dayjs.unix(message.latest_reply_at / 1000000000).fromNow()}</span
|
||||
>
|
||||
|
||||
<span class="ml-1">
|
||||
<ChevronRight className="size-2.5" strokeWidth="3" />
|
||||
</span>
|
||||
<!-- {$i18n.t('View Replies')} -->
|
||||
</button>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
|
@ -669,7 +682,9 @@
|
|||
border-radius: 50%;
|
||||
background-color: rgba(128, 128, 128, 0.15);
|
||||
color: rgba(128, 128, 128, 0.8);
|
||||
transition: background-color 0.15s, color 0.15s;
|
||||
transition:
|
||||
background-color 0.15s,
|
||||
color 0.15s;
|
||||
}
|
||||
|
||||
.swipe-reply-icon--active {
|
||||
|
|
|
|||
|
|
@ -201,6 +201,11 @@
|
|||
|
||||
await tick();
|
||||
|
||||
// Mark chat read when initially loading it
|
||||
if (chatIdProp && !$temporaryChatEnabled) {
|
||||
updateLastReadAt(chatIdProp);
|
||||
}
|
||||
|
||||
// Process any queued requests if the chat is idle
|
||||
const lastMessage = history.currentId ? history.messages[history.currentId] : null;
|
||||
const isIdle = !lastMessage || lastMessage.role !== 'assistant' || lastMessage.done;
|
||||
|
|
@ -403,6 +408,13 @@
|
|||
saveChatHandler(_chatId, history);
|
||||
};
|
||||
|
||||
const updateLastReadAt = (id) => {
|
||||
$socket?.emit('events:chat', {
|
||||
chat_id: id,
|
||||
data: { type: 'last_read_at' }
|
||||
});
|
||||
};
|
||||
|
||||
const terminalEventHandler = (type: string, data: any) => {
|
||||
if (type === 'terminal:display_file') {
|
||||
if (!data?.path) return;
|
||||
|
|
@ -801,6 +813,9 @@
|
|||
|
||||
return () => {
|
||||
try {
|
||||
if (chatIdProp && !$temporaryChatEnabled) {
|
||||
updateLastReadAt(chatIdProp);
|
||||
}
|
||||
pageSubscribe();
|
||||
showControlsSubscribe();
|
||||
selectedFolderSubscribe();
|
||||
|
|
@ -1314,8 +1329,8 @@
|
|||
|
||||
if (history.currentId) {
|
||||
for (const message of Object.values(history.messages)) {
|
||||
if (message && message.role === 'assistant' && message.done !== false) {
|
||||
message.done = true;
|
||||
if (message && message.role === 'assistant' && message.id !== history.currentId && message.done !== false) {
|
||||
message.done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1376,6 +1391,11 @@
|
|||
};
|
||||
|
||||
const chatCompletedHandler = async (_chatId, modelId, responseMessageId, messages) => {
|
||||
if (!responseMessageId) {
|
||||
console.error('chatCompleted: missing message id', { chatId: _chatId, modelId, messageCount: messages?.length ?? 0 });
|
||||
return;
|
||||
}
|
||||
|
||||
const res = await chatCompleted(localStorage.token, {
|
||||
model: modelId,
|
||||
messages: messages.map((m) => ({
|
||||
|
|
@ -2668,7 +2688,7 @@
|
|||
const MAX_DRAFT_LENGTH = 5000;
|
||||
let saveDraftTimeout: ReturnType<typeof setTimeout> | null = null;
|
||||
|
||||
const saveDraft = async (draft, chatId = null) => {
|
||||
const saveDraft = async (draft: any, chatId: string | null = null) => {
|
||||
if (saveDraftTimeout) {
|
||||
clearTimeout(saveDraftTimeout);
|
||||
}
|
||||
|
|
@ -2685,7 +2705,7 @@
|
|||
}
|
||||
};
|
||||
|
||||
const clearDraft = async (chatId = null) => {
|
||||
const clearDraft = async (chatId: string | null = null) => {
|
||||
if (saveDraftTimeout) {
|
||||
clearTimeout(saveDraftTimeout);
|
||||
}
|
||||
|
|
@ -2912,7 +2932,7 @@
|
|||
{createMessagePair}
|
||||
{onUpload}
|
||||
messageQueue={$chatRequestQueues[$chatId] ?? []}
|
||||
{chatTasks}
|
||||
{chatTasks}
|
||||
onQueueSendNow={async (id) => {
|
||||
const queue = $chatRequestQueues[$chatId] ?? [];
|
||||
const item = queue.find((m) => m.id === id);
|
||||
|
|
@ -2958,7 +2978,7 @@
|
|||
}
|
||||
}}
|
||||
on:submit={async (e) => {
|
||||
clearDraft();
|
||||
clearDraft($chatId);
|
||||
if (e.detail || files.length > 0) {
|
||||
await tick();
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,10 @@
|
|||
export let history;
|
||||
export let taskIds = null;
|
||||
|
||||
$: isActive = (taskIds && taskIds.length > 0) || (history.currentId && history.messages[history.currentId]?.done != true) || generating;
|
||||
$: isActive =
|
||||
(taskIds && taskIds.length > 0) ||
|
||||
(history.currentId && history.messages[history.currentId]?.done != true) ||
|
||||
generating;
|
||||
|
||||
export let prompt = '';
|
||||
export let files = [];
|
||||
|
|
@ -1859,7 +1862,7 @@
|
|||
</div>
|
||||
|
||||
<div class="self-end flex space-x-1 mr-1 shrink-0 gap-[0.5px]">
|
||||
{#if isActive}
|
||||
{#if isActive && prompt === '' && files.length === 0}
|
||||
<div class=" flex items-center">
|
||||
<Tooltip content={$i18n.t('Stop')}>
|
||||
<button
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@
|
|||
on:click={() => {
|
||||
if (fileUploadEnabled) {
|
||||
uploadFilesHandler();
|
||||
show = false;
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
|
@ -175,6 +176,7 @@
|
|||
cameraInputElement.click();
|
||||
}
|
||||
}
|
||||
show = false;
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
|
@ -197,6 +199,7 @@
|
|||
on:click={() => {
|
||||
if (webUploadEnabled) {
|
||||
showAttachWebpageModal = true;
|
||||
show = false;
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
|
@ -336,6 +339,7 @@
|
|||
type="button"
|
||||
on:click={() => {
|
||||
uploadGoogleDriveHandler();
|
||||
show = false;
|
||||
}}
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87.3 78" class="w-4">
|
||||
|
|
@ -575,6 +579,7 @@
|
|||
type="button"
|
||||
on:click={() => {
|
||||
uploadOneDriveHandler('personal');
|
||||
show = false;
|
||||
}}
|
||||
>
|
||||
<div class="flex flex-col">
|
||||
|
|
@ -589,6 +594,7 @@
|
|||
type="button"
|
||||
on:click={() => {
|
||||
uploadOneDriveHandler('organizations');
|
||||
show = false;
|
||||
}}
|
||||
>
|
||||
<div class="flex flex-col">
|
||||
|
|
|
|||
|
|
@ -22,12 +22,16 @@
|
|||
|
||||
const submitHandler = async () => {
|
||||
// Normalize Windows CRLF (\r\n) to LF (\n) for all string values
|
||||
// Build a new object to avoid mutating the reactive variableValues proxy
|
||||
const result = {};
|
||||
for (const key of Object.keys(variableValues)) {
|
||||
if (typeof variableValues[key] === 'string') {
|
||||
variableValues[key] = variableValues[key].replace(/\r\n/g, '\n');
|
||||
result[key] = variableValues[key].replace(/\r\n/g, '\n');
|
||||
} else {
|
||||
result[key] = variableValues[key];
|
||||
}
|
||||
}
|
||||
onSave(variableValues);
|
||||
onSave(result);
|
||||
show = false;
|
||||
};
|
||||
|
||||
|
|
@ -102,20 +106,17 @@
|
|||
<div class="flex mt-0.5 mb-0.5 space-x-2">
|
||||
<div class=" flex-1">
|
||||
{#if variables[variable]?.type === 'select'}
|
||||
{@const options = variableAttributes?.options ?? []}
|
||||
{@const placeholder = variableAttributes?.placeholder ?? ''}
|
||||
|
||||
<select
|
||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-hidden border border-gray-100/30 dark:border-gray-850/30"
|
||||
bind:value={variableValues[variable]}
|
||||
id="input-variable-{idx}"
|
||||
>
|
||||
{#if placeholder}
|
||||
{#if variables[variable]?.placeholder}
|
||||
<option value="" disabled selected>
|
||||
{placeholder}
|
||||
{variables[variable].placeholder}
|
||||
</option>
|
||||
{/if}
|
||||
{#each options as option}
|
||||
{#each variables[variable]?.options ?? [] as option}
|
||||
<option value={option} selected={option === variableValues[variable]}>
|
||||
{option}
|
||||
</option>
|
||||
|
|
|
|||
|
|
@ -58,6 +58,34 @@
|
|||
return `${minutes}:${formattedSeconds}`;
|
||||
};
|
||||
|
||||
let wakeLock = null;
|
||||
|
||||
const requestWakeLock = async () => {
|
||||
if ('wakeLock' in navigator) {
|
||||
try {
|
||||
wakeLock = await navigator.wakeLock.request('screen');
|
||||
console.log('Wake Lock acquired');
|
||||
|
||||
wakeLock.addEventListener('release', () => {
|
||||
console.log('Wake Lock released');
|
||||
});
|
||||
} catch (err) {
|
||||
console.log('Wake Lock request failed:', err);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const releaseWakeLock = async () => {
|
||||
if (wakeLock) {
|
||||
try {
|
||||
await wakeLock.release();
|
||||
} catch (err) {
|
||||
console.log('Wake Lock release failed:', err);
|
||||
}
|
||||
wakeLock = null;
|
||||
}
|
||||
};
|
||||
|
||||
let stream;
|
||||
let speechRecognition;
|
||||
|
||||
|
|
@ -216,11 +244,13 @@
|
|||
mimeType: mineTypes.find((type) => MediaRecorder.isTypeSupported(type))
|
||||
});
|
||||
|
||||
mediaRecorder.onstart = () => {
|
||||
mediaRecorder.onstart = async () => {
|
||||
console.log('Recording started');
|
||||
loading = false;
|
||||
startDurationCounter();
|
||||
|
||||
await requestWakeLock();
|
||||
|
||||
audioChunks = [];
|
||||
analyseAudio(stream);
|
||||
};
|
||||
|
|
@ -333,6 +363,8 @@
|
|||
speechRecognition.stop();
|
||||
}
|
||||
|
||||
await releaseWakeLock();
|
||||
|
||||
stopDurationCounter();
|
||||
audioChunks = [];
|
||||
visualizerData = Array(VISUALIZER_BUFFER_LENGTH).fill(0);
|
||||
|
|
@ -354,6 +386,8 @@
|
|||
}
|
||||
clearInterval(durationCounter);
|
||||
|
||||
await releaseWakeLock();
|
||||
|
||||
if (stream) {
|
||||
const tracks = stream.getTracks();
|
||||
tracks.forEach((track) => track.stop());
|
||||
|
|
@ -376,8 +410,15 @@
|
|||
}
|
||||
};
|
||||
|
||||
const handleVisibilityChange = async () => {
|
||||
if (recording && document.visibilityState === 'visible') {
|
||||
await requestWakeLock();
|
||||
}
|
||||
};
|
||||
|
||||
onMount(() => {
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
document.addEventListener('visibilitychange', handleVisibilityChange);
|
||||
|
||||
// listen to width changes
|
||||
resizeObserver = new ResizeObserver(() => {
|
||||
|
|
@ -396,6 +437,8 @@
|
|||
|
||||
onDestroy(() => {
|
||||
window.removeEventListener('keydown', handleKeyDown);
|
||||
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
||||
releaseWakeLock();
|
||||
// remove resize observer
|
||||
resizeObserver.disconnect();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
let contentContainerElement;
|
||||
let floatingButtonsElement;
|
||||
|
||||
|
||||
let sourceIds = [];
|
||||
$: getSourceIds(sources);
|
||||
|
||||
|
|
@ -160,7 +161,9 @@
|
|||
<div bind:this={contentContainerElement}>
|
||||
<Markdown
|
||||
{id}
|
||||
{content}
|
||||
content={model?.info?.meta?.capabilities?.citations == false
|
||||
? content.replace(/\s*(\[(?:\d+(?:#[^,\]\s]+)?(?:,\s*\d+(?:#[^,\]\s]+)?)*)\])+/g, '')
|
||||
: content}
|
||||
{model}
|
||||
{save}
|
||||
{preview}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
export let messageDone = true;
|
||||
|
||||
let open = false;
|
||||
let open = $settings?.expandDetails ?? false;
|
||||
|
||||
function parseJSONString(str: string) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<script lang="ts">
|
||||
import { copyToClipboard, unescapeHtml } from '$lib/utils';
|
||||
import { toast } from 'svelte-sonner';
|
||||
import { fade } from 'svelte/transition';
|
||||
|
||||
import { getContext } from 'svelte';
|
||||
|
||||
|
|
@ -13,21 +12,10 @@
|
|||
|
||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||
<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
|
||||
{#if done}
|
||||
<code
|
||||
class="codespan cursor-pointer"
|
||||
on:click={() => {
|
||||
copyToClipboard(unescapeHtml(token.text));
|
||||
toast.success($i18n.t('Copied to clipboard'));
|
||||
}}>{unescapeHtml(token.text)}</code
|
||||
>
|
||||
{:else}
|
||||
<code
|
||||
transition:fade={{ duration: 100 }}
|
||||
class="codespan cursor-pointer"
|
||||
on:click={() => {
|
||||
copyToClipboard(unescapeHtml(token.text));
|
||||
toast.success($i18n.t('Copied to clipboard'));
|
||||
}}>{unescapeHtml(token.text)}</code
|
||||
>
|
||||
{/if}
|
||||
<code
|
||||
class="codespan cursor-pointer {!done ? 'fade-in-token' : ''}"
|
||||
on:click={() => {
|
||||
copyToClipboard(unescapeHtml(token.text));
|
||||
toast.success($i18n.t('Copied to clipboard'));
|
||||
}}>{unescapeHtml(token.text)}</code
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,18 +1,13 @@
|
|||
<script lang="ts">
|
||||
import { fade } from 'svelte/transition';
|
||||
|
||||
export let token;
|
||||
export let done = true;
|
||||
|
||||
let texts = [];
|
||||
$: texts = (token?.raw ?? '').split(' ');
|
||||
</script>
|
||||
|
||||
{#if done}
|
||||
{token?.raw}
|
||||
{:else}
|
||||
{#each texts as text}
|
||||
<span class="" transition:fade={{ duration: 100 }}>
|
||||
{#each (token?.raw ?? '').split(' ') as text}
|
||||
<span class="fade-in-token">
|
||||
{text}{' '}
|
||||
</span>
|
||||
{/each}
|
||||
|
|
|
|||
|
|
@ -381,7 +381,7 @@
|
|||
id={`${id}-${tokenIdx}-${detailIdx}-tc`}
|
||||
attributes={detailToken.attributes}
|
||||
grouped={true}
|
||||
open={false}
|
||||
open={$settings?.expandDetails ?? false}
|
||||
className="w-full space-y-1"
|
||||
/>
|
||||
{:else if textContent.length > 0}
|
||||
|
|
@ -428,7 +428,7 @@
|
|||
<ToolCallDisplay
|
||||
id={`${id}-${tokenIdx}-tc`}
|
||||
attributes={token.attributes}
|
||||
open={false}
|
||||
open={$settings?.expandDetails ?? false}
|
||||
className="w-full space-y-1"
|
||||
/>
|
||||
{:else if textContent.length > 0}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@
|
|||
export let readOnly = false;
|
||||
export let editCodeBlock = true;
|
||||
export let topPadding = false;
|
||||
|
||||
</script>
|
||||
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -393,7 +393,9 @@
|
|||
});
|
||||
|
||||
if (res) {
|
||||
toast.success($i18n.t('Model {{modelName}} deleted successfully', { modelName: model.name ?? model.id }));
|
||||
toast.success(
|
||||
$i18n.t('Model {{modelName}} deleted successfully', { modelName: model.name ?? model.id })
|
||||
);
|
||||
|
||||
// If the deleted model was selected, clear the selection
|
||||
if (value === model.id) {
|
||||
|
|
@ -427,7 +429,9 @@
|
|||
<ConfirmDialog
|
||||
bind:show={showDeleteConfirm}
|
||||
title={$i18n.t('Delete Model')}
|
||||
message={$i18n.t('Are you sure you want to delete **{{modelName}}**?', { modelName: deleteModelTarget?.name ?? deleteModelTarget?.id ?? '' })}
|
||||
message={$i18n.t('Are you sure you want to delete **{{modelName}}**?', {
|
||||
modelName: deleteModelTarget?.name ?? deleteModelTarget?.id ?? ''
|
||||
})}
|
||||
on:confirm={() => {
|
||||
confirmDeleteModel();
|
||||
}}
|
||||
|
|
@ -493,7 +497,7 @@
|
|||
>
|
||||
{#snippet child({ wrapperProps, props, open })}
|
||||
{#if open}
|
||||
<div {...wrapperProps}>
|
||||
<div {...wrapperProps} style="{wrapperProps.style ?? ''}{$mobile ? '; left: 0.5rem !important; width: calc(100vw - 1rem) !important;' : ''}">
|
||||
<div
|
||||
{...props}
|
||||
class="{props.class} z-40 {$mobile
|
||||
|
|
|
|||
|
|
@ -175,7 +175,8 @@
|
|||
bind:this={contentEl}
|
||||
class={contentClass}
|
||||
transition:flyAndScale
|
||||
on:click|stopPropagation
|
||||
on:click={(e) => e.stopPropagation()}
|
||||
on:pointerdown={(e) => e.stopPropagation()}
|
||||
>
|
||||
<slot name="content" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@
|
|||
import PanzoomContainer from './PanzoomContainer.svelte';
|
||||
import Reset from '../icons/Reset.svelte';
|
||||
|
||||
|
||||
export let item;
|
||||
export let show = false;
|
||||
export let edit = false;
|
||||
|
|
|
|||
|
|
@ -161,12 +161,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<PanzoomContainer className="flex h-full max-h-full justify-center items-center z-0">
|
||||
<img
|
||||
{src}
|
||||
{alt}
|
||||
class=" mx-auto h-full object-scale-down select-none"
|
||||
draggable="false"
|
||||
/>
|
||||
<img {src} {alt} class=" mx-auto h-full object-scale-down select-none" draggable="false" />
|
||||
</PanzoomContainer>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@
|
|||
mounted = true;
|
||||
});
|
||||
|
||||
let handleOutsidePointerDown;
|
||||
let handleModalFocusIn;
|
||||
|
||||
$: if (show && modalElement) {
|
||||
document.body.appendChild(modalElement);
|
||||
focusTrap = FocusTrap.createFocusTrap(modalElement, {
|
||||
|
|
@ -66,10 +69,34 @@
|
|||
}
|
||||
});
|
||||
focusTrap.activate();
|
||||
|
||||
// Auto-pause focus trap when interacting with portaled content (e.g. Dropdown)
|
||||
handleOutsidePointerDown = (e) => {
|
||||
if (focusTrap && modalElement && !modalElement.contains(e.target)) {
|
||||
focusTrap.pause();
|
||||
}
|
||||
};
|
||||
handleModalFocusIn = () => {
|
||||
if (focusTrap) {
|
||||
focusTrap.unpause();
|
||||
}
|
||||
};
|
||||
document.addEventListener('pointerdown', handleOutsidePointerDown, true);
|
||||
modalElement.addEventListener('focusin', handleModalFocusIn);
|
||||
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
document.body.style.overflow = 'hidden';
|
||||
} else if (modalElement) {
|
||||
focusTrap.deactivate();
|
||||
if (focusTrap) {
|
||||
focusTrap.deactivate();
|
||||
focusTrap = null;
|
||||
}
|
||||
if (handleOutsidePointerDown) {
|
||||
document.removeEventListener('pointerdown', handleOutsidePointerDown, true);
|
||||
}
|
||||
if (handleModalFocusIn) {
|
||||
modalElement.removeEventListener('focusin', handleModalFocusIn);
|
||||
}
|
||||
window.removeEventListener('keydown', handleKeyDown);
|
||||
document.body.removeChild(modalElement);
|
||||
document.body.style.overflow = 'unset';
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
instance = localInstance;
|
||||
return () => {
|
||||
localInstance.dispose();
|
||||
}
|
||||
};
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,32 @@
|
|||
xmlns="http://www.w3.org/2000/svg"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path d="M20 20L15 15M15 15V19M15 15H19" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M4 20L9 15M9 15V19M9 15H5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M20 4L15 9M15 9V5M15 9H19" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M4 4L9 9M9 9V5M9 9H5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path
|
||||
d="M20 20L15 15M15 15V19M15 15H19"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M4 20L9 15M9 15V19M9 15H5"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M20 4L15 9M15 9V5M15 9H19"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M4 4L9 9M9 9V5M9 9H5"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
|
|
|
|||
|
|
@ -10,8 +10,32 @@
|
|||
xmlns="http://www.w3.org/2000/svg"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path d="M9 9L4 4M4 4V8M4 4H8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M15 9L20 4M20 4V8M20 4H16" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M9 15L4 20M4 20V16M4 20H8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M15 15L20 20M20 20V16M20 20H16" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path
|
||||
d="M9 9L4 4M4 4V8M4 4H8"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M15 9L20 4M20 4V8M20 4H16"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M9 15L4 20M4 20V16M4 20H8"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M15 15L20 20M20 20V16M20 20H16"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
|
|
|
|||
|
|
@ -9,10 +9,46 @@
|
|||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M9 6L20 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M3.80002 5.79999L4.60002 6.59998L6.60001 4.59999" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M3.80002 11.8L4.60002 12.6L6.60001 10.6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M3.80002 17.8L4.60002 18.6L6.60001 16.6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M9 12L20 12" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M9 18L20 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path
|
||||
d="M9 6L20 6"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M3.80002 5.79999L4.60002 6.59998L6.60001 4.59999"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M3.80002 11.8L4.60002 12.6L6.60001 10.6"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M3.80002 17.8L4.60002 18.6L6.60001 16.6"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M9 12L20 12"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M9 18L20 18"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
|
|
|
|||
|
|
@ -536,7 +536,7 @@
|
|||
};
|
||||
});
|
||||
|
||||
// Handler for chat:active events (defined outside onMount for proper cleanup)
|
||||
// Handler for chat events (defined outside onMount for proper cleanup)
|
||||
const chatActiveEventHandler = (event: {
|
||||
chat_id: string;
|
||||
message_id: string;
|
||||
|
|
@ -553,6 +553,8 @@
|
|||
}
|
||||
return newSet;
|
||||
});
|
||||
} else if (event.data?.type === 'chat:list') {
|
||||
initChatList();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -1288,6 +1290,8 @@
|
|||
id={chat.id}
|
||||
title={chat.title}
|
||||
createdAt={chat.created_at}
|
||||
updatedAt={chat.updated_at}
|
||||
lastReadAt={chat.last_read_at}
|
||||
{shiftKey}
|
||||
selected={selectedChatId === chat.id}
|
||||
on:select={() => {
|
||||
|
|
@ -1349,6 +1353,8 @@
|
|||
id={chat.id}
|
||||
title={chat.title}
|
||||
createdAt={chat.created_at}
|
||||
updatedAt={chat.updated_at}
|
||||
lastReadAt={chat.last_read_at}
|
||||
{shiftKey}
|
||||
selected={selectedChatId === chat.id}
|
||||
on:select={() => {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,14 @@
|
|||
<script context="module" lang="ts">
|
||||
/** Shared 1×1 transparent drag preview; avoids one Image per sidebar row */
|
||||
const invisibleDragImage = new Image();
|
||||
invisibleDragImage.src =
|
||||
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import { toast } from 'svelte-sonner';
|
||||
import { goto, invalidate, invalidateAll } from '$app/navigation';
|
||||
import { onMount, getContext, createEventDispatcher, tick, onDestroy } from 'svelte';
|
||||
import { onMount, getContext, createEventDispatcher, tick } from 'svelte';
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
|
@ -50,6 +57,8 @@
|
|||
export let id;
|
||||
export let title;
|
||||
export let createdAt: number | null = null;
|
||||
export let updatedAt: number | null = null;
|
||||
export let lastReadAt: number | null = null;
|
||||
|
||||
export let selected = false;
|
||||
export let shiftKey = false;
|
||||
|
|
@ -79,6 +88,11 @@
|
|||
|
||||
let mouseOver = false;
|
||||
|
||||
$: unread =
|
||||
id !== $chatId &&
|
||||
!$activeChatIds.has(id) &&
|
||||
(lastReadAt === null || (updatedAt !== null && updatedAt > lastReadAt));
|
||||
|
||||
const loadChat = async () => {
|
||||
if (!chat) {
|
||||
draggable = false;
|
||||
|
|
@ -133,7 +147,12 @@
|
|||
}
|
||||
};
|
||||
|
||||
let deleting = false;
|
||||
|
||||
const deleteChatHandler = async (id) => {
|
||||
if (deleting) return;
|
||||
deleting = true;
|
||||
|
||||
const res = await deleteChatById(localStorage.token, id).catch((error) => {
|
||||
toast.error(`${error}`);
|
||||
return null;
|
||||
|
|
@ -150,9 +169,16 @@
|
|||
|
||||
dispatch('change');
|
||||
}
|
||||
|
||||
deleting = false;
|
||||
};
|
||||
|
||||
let archiving = false;
|
||||
|
||||
const archiveChatHandler = async (id) => {
|
||||
if (archiving) return;
|
||||
archiving = true;
|
||||
|
||||
try {
|
||||
await archiveChatById(localStorage.token, id);
|
||||
|
||||
|
|
@ -166,6 +192,8 @@
|
|||
} catch (error) {
|
||||
console.error('Error archiving chat:', error);
|
||||
toast.error($i18n.t('Failed to archive chat.'));
|
||||
} finally {
|
||||
archiving = false;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -203,14 +231,10 @@
|
|||
let x = 0;
|
||||
let y = 0;
|
||||
|
||||
const dragImage = new Image();
|
||||
dragImage.src =
|
||||
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
|
||||
|
||||
const onDragStart = (event) => {
|
||||
event.stopPropagation();
|
||||
|
||||
event.dataTransfer.setDragImage(dragImage, 0, 0);
|
||||
event.dataTransfer.setDragImage(invisibleDragImage, 0, 0);
|
||||
|
||||
// Set the data to be transferred
|
||||
event.dataTransfer.setData(
|
||||
|
|
@ -255,26 +279,20 @@
|
|||
};
|
||||
|
||||
onMount(() => {
|
||||
if (itemElement) {
|
||||
document.addEventListener('click', onClickOutside, true);
|
||||
const el = itemElement;
|
||||
if (!el) return;
|
||||
|
||||
// Event listener for when dragging starts
|
||||
itemElement.addEventListener('dragstart', onDragStart);
|
||||
// Event listener for when dragging occurs (optional)
|
||||
itemElement.addEventListener('drag', onDrag);
|
||||
// Event listener for when dragging ends
|
||||
itemElement.addEventListener('dragend', onDragEndHandler);
|
||||
}
|
||||
});
|
||||
document.addEventListener('click', onClickOutside, true);
|
||||
el.addEventListener('dragstart', onDragStart);
|
||||
el.addEventListener('drag', onDrag);
|
||||
el.addEventListener('dragend', onDragEndHandler);
|
||||
|
||||
onDestroy(() => {
|
||||
if (itemElement) {
|
||||
return () => {
|
||||
document.removeEventListener('click', onClickOutside, true);
|
||||
|
||||
itemElement.removeEventListener('dragstart', onDragStart);
|
||||
itemElement.removeEventListener('drag', onDrag);
|
||||
itemElement.removeEventListener('dragend', onDragEndHandler);
|
||||
}
|
||||
el.removeEventListener('dragstart', onDragStart);
|
||||
el.removeEventListener('drag', onDrag);
|
||||
el.removeEventListener('dragend', onDragEndHandler);
|
||||
};
|
||||
});
|
||||
|
||||
let showDeleteConfirm = false;
|
||||
|
|
@ -435,6 +453,10 @@
|
|||
if ($mobile) {
|
||||
showSidebar.set(false);
|
||||
}
|
||||
|
||||
// Optimistically mark as read in UI when clicked
|
||||
unread = false;
|
||||
lastReadAt = Date.now() / 1000;
|
||||
}}
|
||||
on:dblclick={async (e) => {
|
||||
e.preventDefault();
|
||||
|
|
@ -460,7 +482,17 @@
|
|||
{/if}
|
||||
|
||||
<div class="flex self-center flex-1 w-full min-w-0">
|
||||
<div dir="auto" class="text-left self-center overflow-hidden w-full h-[20px] truncate">
|
||||
{#if unread}
|
||||
<div class="shrink-0 self-center pr-2.5 flex transition-opacity duration-300">
|
||||
<div class="size-1.5 bg-sky-500 rounded-full" />
|
||||
</div>
|
||||
{/if}
|
||||
<div
|
||||
dir="auto"
|
||||
class="text-left self-center overflow-hidden w-full h-[20px] truncate {unread
|
||||
? 'font-medium text-gray-900 dark:text-gray-100'
|
||||
: ''}"
|
||||
>
|
||||
{title}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -516,7 +548,8 @@
|
|||
<div class=" flex items-center self-center space-x-1.5">
|
||||
<Tooltip content={$i18n.t('Archive')} className="flex items-center">
|
||||
<button
|
||||
class=" self-center dark:hover:text-white transition"
|
||||
class=" self-center dark:hover:text-white transition disabled:cursor-not-allowed"
|
||||
disabled={archiving}
|
||||
on:click={() => {
|
||||
archiveChatHandler(id);
|
||||
}}
|
||||
|
|
@ -528,7 +561,8 @@
|
|||
|
||||
<Tooltip content={$i18n.t('Delete')}>
|
||||
<button
|
||||
class=" self-center dark:hover:text-white transition"
|
||||
class=" self-center dark:hover:text-white transition disabled:cursor-not-allowed"
|
||||
disabled={deleting}
|
||||
on:click={() => {
|
||||
deleteChatHandler(id);
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -682,6 +682,8 @@
|
|||
id={chat.id}
|
||||
title={chat.title}
|
||||
createdAt={chat.created_at}
|
||||
updatedAt={chat.updated_at}
|
||||
lastReadAt={chat.last_read_at}
|
||||
{shiftKey}
|
||||
on:change={(e) => {
|
||||
dispatch('change', e.detail);
|
||||
|
|
|
|||
|
|
@ -214,26 +214,41 @@
|
|||
<div class=" self-center truncate">{$i18n.t('Settings')}</div>
|
||||
</button>
|
||||
|
||||
<button
|
||||
class="flex rounded-xl py-1.5 px-3 w-full hover:bg-gray-50 dark:hover:bg-gray-800 transition cursor-pointer select-none"
|
||||
type="button"
|
||||
on:click={async () => {
|
||||
show = false;
|
||||
|
||||
dispatch('show', 'archived-chat');
|
||||
|
||||
if ($mobile) {
|
||||
await tick();
|
||||
|
||||
showSidebar.set(false);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div class=" self-center mr-3">
|
||||
<ArchiveBox className="size-5" strokeWidth="1.5" />
|
||||
</div>
|
||||
<div class=" self-center truncate">{$i18n.t('Archived Chats')}</div>
|
||||
</button>
|
||||
{#if $user?.role === 'admin' || $user?.permissions?.features?.automations}
|
||||
<a
|
||||
href="/automations"
|
||||
draggable="false"
|
||||
class="flex rounded-xl py-1.5 px-3 w-full hover:bg-gray-50 dark:hover:bg-gray-800 transition cursor-pointer select-none"
|
||||
on:click={async (e) => {
|
||||
if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1) return;
|
||||
e.preventDefault();
|
||||
show = false;
|
||||
goto('/automations');
|
||||
if ($mobile) {
|
||||
await tick();
|
||||
showSidebar.set(false);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div class="self-center mr-3">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
class="size-5"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="self-center truncate">{$i18n.t('Automations')}</div>
|
||||
</a>
|
||||
{/if}
|
||||
|
||||
{#if role === 'admin'}
|
||||
<a
|
||||
|
|
@ -258,6 +273,30 @@
|
|||
</div>
|
||||
<div class=" self-center truncate">{$i18n.t('Playground')}</div>
|
||||
</a>
|
||||
{/if}
|
||||
|
||||
<button
|
||||
class="flex rounded-xl py-1.5 px-3 w-full hover:bg-gray-50 dark:hover:bg-gray-800 transition cursor-pointer select-none"
|
||||
type="button"
|
||||
on:click={async () => {
|
||||
show = false;
|
||||
|
||||
dispatch('show', 'archived-chat');
|
||||
|
||||
if ($mobile) {
|
||||
await tick();
|
||||
|
||||
showSidebar.set(false);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div class=" self-center mr-3">
|
||||
<ArchiveBox className="size-5" strokeWidth="1.5" />
|
||||
</div>
|
||||
<div class=" self-center truncate">{$i18n.t('Archived Chats')}</div>
|
||||
</button>
|
||||
|
||||
{#if role === 'admin'}
|
||||
<a
|
||||
href="/admin"
|
||||
draggable="false"
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ export const DEFAULT_PERMISSIONS = {
|
|||
web_search: true,
|
||||
image_generation: true,
|
||||
code_interpreter: true,
|
||||
memories: true
|
||||
memories: true,
|
||||
automations: false
|
||||
},
|
||||
settings: {
|
||||
interface: true
|
||||
|
|
|
|||
|
|
@ -186,6 +186,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -202,6 +203,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -224,6 +226,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 الرابط الرئيسي",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 الرابط مطلوب",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -254,6 +263,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "مفتاح واجهة برمجة تطبيقات البحث الشجاع",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -387,6 +397,7 @@
|
|||
"Concurrent Requests": "الطلبات المتزامنة",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "تأكيد كلمة المرور",
|
||||
|
|
@ -456,6 +467,7 @@
|
|||
"Create new secret key": "عمل سر جديد",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "أنشئت في",
|
||||
"Created At": "أنشئت من",
|
||||
|
|
@ -477,6 +489,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "قاعدة البيانات",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "ديسمبر",
|
||||
|
|
@ -507,6 +520,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "حذف جميع الدردشات",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "حذف المحادثه.",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -651,6 +665,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "نموذج التضمين",
|
||||
"Embedding Model Engine": "تضمين محرك النموذج",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -742,6 +757,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "أدخل النتيجة",
|
||||
|
|
@ -766,6 +782,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -805,6 +822,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -822,6 +840,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "تجريبي",
|
||||
"Explain": "",
|
||||
|
|
@ -1085,6 +1104,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "التثبيت من عنوان URL لجيثب",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "واجهه المستخدم",
|
||||
|
|
@ -1144,6 +1164,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "آخر نشاط",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1250,6 +1271,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "تم تحميل النموذج '{{modelName}}' بنجاح",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "النموذج '{{modelTag}}' موجود بالفعل في قائمة الانتظار للتحميل",
|
||||
"Model {{modelId}} not found": "لم يتم العثور على النموذج {{modelId}}.",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "نموذج {{modelName}} غير قادر على الرؤية",
|
||||
"Model {{name}} is now {{status}}": "نموذج {{name}} هو الآن {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1299,8 +1321,11 @@
|
|||
"Name": "الأسم",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "دردشة جديدة",
|
||||
"New File": "",
|
||||
|
|
@ -1319,9 +1344,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1332,6 +1359,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1378,6 +1406,7 @@
|
|||
"Not factually correct": "ليس صحيحا من حيث الواقع",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ملاحظة: إذا قمت بتعيين الحد الأدنى من النقاط، فلن يؤدي البحث إلا إلى إرجاع المستندات التي لها نقاط أكبر من أو تساوي الحد الأدنى من النقاط.",
|
||||
|
|
@ -1451,6 +1480,7 @@
|
|||
"or": "أو",
|
||||
"Ordered List": "",
|
||||
"Other": "آخر",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1466,6 +1496,7 @@
|
|||
"Password": "الباسورد",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF ملف (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF أستخرج الصور (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1570,6 +1601,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "سجل صوت",
|
||||
"Redirecting you to Open WebUI Community": "OpenWebUI إعادة توجيهك إلى مجتمع ",
|
||||
|
|
@ -1605,6 +1637,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1641,6 +1674,8 @@
|
|||
"RTL": "من اليمين إلى اليسار",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "جارٍ التنفيذ...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1651,12 +1686,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "لم يعد حفظ سجلات الدردشة مباشرة في مساحة تخزين متصفحك مدعومًا. يرجى تخصيص بعض الوقت لتنزيل وحذف سجلات الدردشة الخاصة بك عن طريق النقر على الزر أدناه. لا تقلق، يمكنك بسهولة إعادة استيراد سجلات الدردشة الخاصة بك إلى الواجهة الخلفية من خلاله",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "البحث",
|
||||
"Search a model": "البحث عن موديل",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "البحث في الدردشات",
|
||||
|
|
@ -1726,6 +1764,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1835,6 +1874,7 @@
|
|||
"Start of the channel": "بداية القناة",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1885,8 +1925,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "أخبرنا المزيد:",
|
||||
|
|
@ -1953,6 +1995,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "العنوان",
|
||||
|
|
@ -1970,6 +2013,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "اليوم",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2108,6 +2152,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "تحذير",
|
||||
"Warning:": "تحذير:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Web",
|
||||
|
|
@ -2142,6 +2187,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "مساحة العمل",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -186,6 +186,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -202,6 +203,7 @@
|
|||
"Assistant": "المساعد",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -224,6 +226,13 @@
|
|||
"AUTOMATIC1111 Base URL": "الرابط الأساسي لـ AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "الرابط الأساسي لـ AUTOMATIC1111 مطلوب.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "القائمة المتاحة",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -254,6 +263,7 @@
|
|||
"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 Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -387,6 +397,7 @@
|
|||
"Concurrent Requests": "الطلبات المتزامنة",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "تكوين",
|
||||
"Confirm": "تأكيد",
|
||||
"Confirm Password": "تأكيد كلمة المرور",
|
||||
|
|
@ -456,6 +467,7 @@
|
|||
"Create new secret key": "إنشاء مفتاح سري جديد",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "تم الإنشاء في",
|
||||
"Created At": "تاريخ الإنشاء",
|
||||
|
|
@ -477,6 +489,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "قاعدة البيانات",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "ديسمبر",
|
||||
|
|
@ -507,6 +520,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "حذف جميع الدردشات",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "حذف المحادثه.",
|
||||
"Delete chat?": "هل تريد حذف المحادثة؟",
|
||||
"Delete File": "",
|
||||
|
|
@ -651,6 +665,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "نموذج التضمين",
|
||||
"Embedding Model Engine": "تضمين محرك النموذج",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -742,6 +757,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "أدخل عنوان البروكسي (مثال: https://user:password@host:port)",
|
||||
"Enter reasoning effort": "أدخل مستوى الجهد في الاستدلال",
|
||||
"Enter Score": "أدخل النتيجة",
|
||||
|
|
@ -766,6 +782,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "أدخل مفتاح API لـ Tavily",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "أدخل الرابط العلني لـ WebUI الخاص بك. سيتم استخدام هذا الرابط لإنشاء روابط داخل الإشعارات.",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -805,6 +822,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "حدث خطأ أثناء الوصول إلى Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "حدث خطأ أثناء تحميل الملف: {{error}}",
|
||||
|
|
@ -822,6 +840,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "تنفيذ الكود للتحليل",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "توسيع",
|
||||
"Experimental": "تجريبي",
|
||||
"Explain": "شرح",
|
||||
|
|
@ -1085,6 +1104,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "التثبيت من عنوان URL لجيثب",
|
||||
"Instant Auto-Send After Voice Transcription": "إرسال تلقائي فوري بعد تحويل الصوت إلى نص",
|
||||
"Instructions": "",
|
||||
"Integration": "التكامل",
|
||||
"Integrations": "",
|
||||
"Interface": "واجهه المستخدم",
|
||||
|
|
@ -1144,6 +1164,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "آخر نشاط",
|
||||
"Last Modified": "آخر تعديل",
|
||||
"Last ran": "",
|
||||
"Last reply": "آخر رد",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "تم تحديث خادم LDAP",
|
||||
|
|
@ -1250,6 +1271,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "تم تحميل النموذج '{{modelName}}' بنجاح",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "النموذج '{{modelTag}}' موجود بالفعل في قائمة الانتظار للتحميل",
|
||||
"Model {{modelId}} not found": "لم يتم العثور على النموذج {{modelId}}.",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "نموذج {{modelName}} غير قادر على الرؤية",
|
||||
"Model {{name}} is now {{status}}": "نموذج {{name}} هو الآن {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1299,8 +1321,11 @@
|
|||
"Name": "الأسم",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "قم بتسمية قاعدة معرفتك",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "أصلي",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "دردشة جديدة",
|
||||
"New File": "",
|
||||
|
|
@ -1319,9 +1344,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "قناة جديدة",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1332,6 +1359,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "لا توجد مسافة متاحة",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "لم يتم تحديد ملف",
|
||||
|
|
@ -1378,6 +1406,7 @@
|
|||
"Not factually correct": "ليس صحيحا من حيث الواقع",
|
||||
"Not helpful": "غير مفيد",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ملاحظة: إذا قمت بتعيين الحد الأدنى من النقاط، فلن يؤدي البحث إلا إلى إرجاع المستندات التي لها نقاط أكبر من أو تساوي الحد الأدنى من النقاط.",
|
||||
|
|
@ -1451,6 +1480,7 @@
|
|||
"or": "أو",
|
||||
"Ordered List": "",
|
||||
"Other": "آخر",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "الإخراج",
|
||||
"Output format": "تنسيق الإخراج",
|
||||
|
|
@ -1466,6 +1496,7 @@
|
|||
"Password": "الباسورد",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "الصق نصًا كبيرًا كملف",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF ملف (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF أستخرج الصور (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1570,6 +1601,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "جهد الاستدلال",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "سجل صوت",
|
||||
"Redirecting you to Open WebUI Community": "OpenWebUI إعادة توجيهك إلى مجتمع ",
|
||||
|
|
@ -1605,6 +1637,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "إعادة ترتيب النماذج",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "الرد داخل سلسلة الرسائل",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1641,6 +1674,8 @@
|
|||
"RTL": "من اليمين إلى اليسار",
|
||||
"Run": "تنفيذ",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "جارٍ التنفيذ",
|
||||
"Running...": "جارٍ التنفيذ...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1651,12 +1686,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "تم الحفظ",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "لم يعد حفظ سجلات الدردشة مباشرة في مساحة تخزين متصفحك مدعومًا. يرجى تخصيص بعض الوقت لتنزيل وحذف سجلات الدردشة الخاصة بك عن طريق النقر على الزر أدناه. لا تقلق، يمكنك بسهولة إعادة استيراد سجلات الدردشة الخاصة بك إلى الواجهة الخلفية من خلاله",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "البحث",
|
||||
"Search a model": "البحث عن موديل",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "قاعدة البحث",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "البحث في الدردشات",
|
||||
|
|
@ -1726,6 +1764,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "اختر المعرفة",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "اختر نموذجًا واحدًا فقط للاستدعاء",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1835,6 +1874,7 @@
|
|||
"Start of the channel": "بداية القناة",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1885,8 +1925,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "اضغط للمقاطعة",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "المهام",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "مفتاح API لـ Tavily",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "أخبرنا المزيد:",
|
||||
|
|
@ -1953,6 +1995,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "عنوان خادم Tika مطلوب.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "العنوان",
|
||||
|
|
@ -1970,6 +2013,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "لاختيار الأدوات هنا، أضفها أولاً إلى مساحة العمل \"الأدوات\".",
|
||||
"Toast notifications for new updates": "إشعارات منبثقة للتحديثات الجديدة",
|
||||
"Today": "اليوم",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2108,6 +2152,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "تحذير",
|
||||
"Warning:": "تحذير:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "تحذير: تفعيل هذا الخيار سيسمح للمستخدمين برفع كود عشوائي على الخادم.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "تحذير: تنفيذ كود Jupyter يتيح تنفيذ كود عشوائي مما يشكل مخاطر أمنية جسيمة—تابع بحذر شديد.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2142,6 +2187,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "فاز",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "يعمل جنبًا إلى جنب مع top-k. القيمة الأعلى (مثلاً 0.95) تنتج نصًا أكثر تنوعًا، بينما القيمة الأقل (مثلاً 0.5) تنتج نصًا أكثر تركيزًا وتحفظًا.",
|
||||
"Workspace": "مساحة العمل",
|
||||
"Workspace Permissions": "صلاحيات مساحة العمل",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"Are you sure you want to archive all chats? This action cannot be undone.": "Bütün çatları arxivləşdirmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.",
|
||||
"Are you sure you want to clear all memories? This action cannot be undone.": "Bütün yaddaşı təmizləmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "\"{{NAME}}\" elementini silmək istədiyinizə əminsiniz?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "Bütün çatları silmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.",
|
||||
"Are you sure you want to delete this channel?": "Bu kanalı silmək istədiyinizə əminsiniz?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Köməkçi",
|
||||
"Async Embedding Processing": "Asinxron Yerləşdirmə (Embedding) Emalı",
|
||||
"Attach File From Knowledge": "Bilik bazasından fayl əlavə et",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Bilik əlavə et",
|
||||
"Attach Notes": "Qeydlər əlavə et",
|
||||
"Attach Webpage": "Veb səhifə əlavə et",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Baza URL-i",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Baza URL-i tələb olunur.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Sistem alətlərini yerli funksiya çağırma rejimində avtomatik daxil et (məsələn: vaxt möhürləri, yaddaş, çat tarixçəsi, qeydlər və s.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Mövcud siyahı",
|
||||
"Available models": "Mövcud modellər",
|
||||
"Available Tools": "Mövcud alətlər",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Məhdudlaşdırılmış cavablar üçün müəyyən tokenlərin stimullaşdırılması və ya cəzalandırılması. Meyillilik (bias) dəyərləri -100 ilə 100 arasında (daxil olmaqla) məhdudlaşdırılacaq. (Standart: yoxdur)",
|
||||
"Brave": "Brave",
|
||||
"Brave Search API Key": "Brave Search API Açarı",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Bilik bazalarına baxın və sorğu göndərin",
|
||||
"Builtin Tools": "Daxili Alətlər",
|
||||
"Bullet List": "Markerli Siyahı",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Eyni vaxtda olan sorğular",
|
||||
"Config": "Konfiqurasiya",
|
||||
"Config imported successfully": "Konfiqurasiya uğurla idxal edildi",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfiqurasiya et",
|
||||
"Confirm": "Təsdiqlə",
|
||||
"Confirm Password": "Şifrəni təsdiqlə",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Yeni gizli açar yarat",
|
||||
"Create note": "Qeyd yarat",
|
||||
"Create Note": "Qeyd Yarat",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Aşağıdakı 'plus' düyməsinə klikləyərək ilk qeydinizi yaradın.",
|
||||
"Created at": "Yaradılma vaxtı",
|
||||
"Created At": "Yaradılma Tarixi",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Məlumat idarəetmələri",
|
||||
"Database": "Verilənlər bazası",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "GG/AA/İİİİ",
|
||||
"DDGS Backend": "DDGS Backend",
|
||||
"December": "Dekabr",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "Hamısını sil",
|
||||
"Delete All Chats": "Bütün çatları sil",
|
||||
"Delete all contents inside this folder": "Bu qovluğun daxilindəki bütün məzmunu sil",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Çatı sil",
|
||||
"Delete chat?": "Çat silinsin?",
|
||||
"Delete File": "Faylı sil",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "Eyni vaxtda olan yerləşdirmə sorğuları",
|
||||
"Embedding Model": "Yerləşdirmə modeli",
|
||||
"Embedding Model Engine": "Yerləşdirmə modeli mühərriki",
|
||||
"Emojis": "",
|
||||
"Empty message": "Boş mesaj",
|
||||
"Enable All": "Hamısını aktiv et",
|
||||
"Enable API Keys": "API açarlarını aktiv et",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "Perplexity axtarış API URL-ini daxil edin",
|
||||
"Enter Playwright Timeout": "Playwright vaxt aşımını daxil edin",
|
||||
"Enter Playwright WebSocket URL": "Playwright WebSocket URL-ini daxil edin",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Proksi URL-ini daxil edin (məs. https://istifadəçi:şifrə@host:port)",
|
||||
"Enter reasoning effort": "Mühakimə səyini (reasoning effort) daxil edin",
|
||||
"Enter Score": "Bal daxil edin",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Sistem göstərişini bura daxil edin",
|
||||
"Enter Tavily API Key": "Tavily API açarını daxil edin",
|
||||
"Enter Tavily Extract Depth": "Tavily çıxarış dərinliyini daxil edin",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUI-nizin ictimai URL-ini daxil edin. Bu URL bildirişlərdəki linkləri yaratmaq üçün istifadə olunacaq.",
|
||||
"Enter the URL of the function to import": "İdxal ediləcək funksiyanın URL-ini daxil edin",
|
||||
"Enter the URL to import": "İdxal ediləcək URL-i daxil edin",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "Kataloqa giriş xətası",
|
||||
"Error accessing Google Drive: {{error}}": "Google Drive-a giriş xətası: {{error}}",
|
||||
"Error accessing media devices.": "Media cihazlarına giriş xətası.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Yazılışa başlama xətası.",
|
||||
"Error unloading model: {{error}}": "Modeli yaddaşdan çıxarma xətası: {{error}}",
|
||||
"Error uploading file: {{error}}": "Fayl yükləmə xətası: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "Kodu icra et",
|
||||
"Execute code for analysis": "Analiz üçün kodu icra et",
|
||||
"Executing **{{NAME}}**...": "**{{NAME}}** icra edilir...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Genişləndir",
|
||||
"Experimental": "Eksperimental",
|
||||
"Explain": "İzah et",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Təklif göstərişini girişə daxil et",
|
||||
"Install from Github URL": "Github URL-dən quraşdır",
|
||||
"Instant Auto-Send After Voice Transcription": "Səs yazıldıqdan sonra anında avtomatik göndər",
|
||||
"Instructions": "",
|
||||
"Integration": "İnteqrasiya",
|
||||
"Integrations": "İnteqrasiyalar",
|
||||
"Interface": "İnterfeys",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "Son 90 gün",
|
||||
"Last Active": "Son fəallıq",
|
||||
"Last Modified": "Son dəyişiklik",
|
||||
"Last ran": "",
|
||||
"Last reply": "Son cavab",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP serveri yeniləndi",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' modeli uğurla yükləndi.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "'{{modelTag}}' modeli artıq yükləmə növbəsindədir.",
|
||||
"Model {{modelId}} not found": "{{modelId}} modeli tapılmadı",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "{{modelName}} modeli görüntünü tanıma (vision) qabiliyyətinə malik deyil",
|
||||
"Model {{name}} is now {{status}}": "{{name}} modeli indi {{status}} statusundadır",
|
||||
"Model {{name}} is now hidden": "{{name}} modeli artıq gizlidir",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Ad",
|
||||
"Name and ID are required, please fill them out": "Ad və ID tələb olunur, zəhmət olmasa doldurun",
|
||||
"Name your knowledge base": "Bilik bazanızı adlandırın",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Yerli (Native)",
|
||||
"Never": "",
|
||||
"New": "Yeni",
|
||||
"New Automation": "",
|
||||
"New Button": "Yeni Düymə",
|
||||
"New Chat": "Yeni Çat",
|
||||
"New File": "Yeni Fayl",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "Yeni Webhook",
|
||||
"new-channel": "yeni-kanal",
|
||||
"Next message": "Növbəti mesaj",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "Giriş icazəsi yoxdur. Sizin üçün özəldir.",
|
||||
"No activity data": "Fəaliyyət məlumatı yoxdur",
|
||||
"No authentication": "Autentifikasiya yoxdur",
|
||||
"No automations found": "",
|
||||
"No chats found": "Heç bir çat tapılmadı",
|
||||
"No chats found for this user.": "Bu istifadəçi üçün çat tapılmadı.",
|
||||
"No chats found.": "Çat tapılmadı.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "Məlumat yoxdur",
|
||||
"No data found": "Məlumat tapılmadı",
|
||||
"No distance available": "Məsafə məlumatı yoxdur",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "Müddətin bitməməsi təhlükəsizlik riski yarada bilər.",
|
||||
"No feedback found": "Rəy tapılmadı",
|
||||
"No file selected": "Fayl seçilməyib",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Faktiki olaraq doğru deyil",
|
||||
"Not helpful": "Faydalı deyil",
|
||||
"Not Registered": "Qeydiyyatdan keçməyib",
|
||||
"Not scheduled": "",
|
||||
"Note": "Qeyd",
|
||||
"Note deleted successfully": "Qeyd uğurla silindi",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Qeyd: Əgər minimum bal təyin etsəniz, axtarış yalnız balı həmin minimuma bərabər və ya ondan böyük olan sənədləri qaytaracaq.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "və ya",
|
||||
"Ordered List": "Sıralanmış siyahı",
|
||||
"Other": "Digər",
|
||||
"out of": "",
|
||||
"Output": "Çıxış",
|
||||
"OUTPUT": "ÇIXIŞ",
|
||||
"Output format": "Çıxış formatı",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Şifrə",
|
||||
"Passwords do not match.": "Şifrələr uyğun gəlmir.",
|
||||
"Paste Large Text as File": "Böyük mətni fayl kimi yapışdır",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF sənədi (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF-dən şəkillərin çıxarılması (OCR)",
|
||||
"PDF Loader Mode": "PDF yükləyici rejimi",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "Səbəb",
|
||||
"Reasoning Effort": "Mühakimə səyi",
|
||||
"Reasoning Tags": "Mühakimə etiketləri",
|
||||
"Recently Used": "",
|
||||
"Record": "Yaz (səs)",
|
||||
"Record voice": "Səsi yaz",
|
||||
"Redirecting you to Open WebUI Community": "Open WebUI İcmasına yönləndirilirsiniz",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "Önizləmələrdə Markdown-u emal et",
|
||||
"Reorder Models": "Modelləri yenidən sırala",
|
||||
"Repeats": "",
|
||||
"Reply": "Cavabla",
|
||||
"Reply in Thread": "Mövzu daxilində cavabla",
|
||||
"Reply to thread...": "Mövzuya cavab yaz...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "Sağdan sola (RTL)",
|
||||
"Run": "İcra et",
|
||||
"Run All": "Hamısını icra et",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "İcra edilir",
|
||||
"Running...": "İcra edilir...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Emalı sürətləndirmək üçün yerləşdirmə (embedding) tapşırıqlarını eyni vaxtda icra edir. Əgər sorğu limiti problemi yaranarsa, bunu söndürün.",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Çatı saxla",
|
||||
"Saved": "Yadda saxlanıldı",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Çat tarixçəsinin birbaşa brauzer yaddaşına saxlanılması artıq dəstəklənmir. Zəhmət olmasa, aşağıdakı düyməyə klikləyərək çat jurnalını yükləyin və silin. Narahat olmayın, çat jurnalınızı arxa plana (backend) asanlıqla yenidən idxal edə bilərsiniz:",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Şaxə dəyişdikdə sürüşdür",
|
||||
"Search": "Axtar",
|
||||
"Search a model": "Model axtar",
|
||||
"Search all emojis": "Bütün emojilərdə axtar",
|
||||
"Search and manage user memories": "İstifadəçi yaddaşını axtarın və idarə edin",
|
||||
"Search and view user chat history": "İstifadəçi çat tarixçəsini axtarın və baxın",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Axtarış bazası",
|
||||
"Search channels and channel messages": "Kanalları və kanal mesajlarını axtar",
|
||||
"Search Chats": "Çatları axtar",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "TTS sorğuları üçün mesaj mətninin necə bölünəcəyini seçin",
|
||||
"Select Knowledge": "Bilik seçin",
|
||||
"Select Method": "Üsul seçin",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Çağırmaq üçün yalnız bir model seçin",
|
||||
"Select view": "Görünüşü seçin",
|
||||
"Selected model: {{modelName}}": "Seçilmiş model: {{modelName}}",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Kanalın başlanğıcı",
|
||||
"Start Tag": "Start Tag",
|
||||
"Starting kernel...": "Starting kernel...",
|
||||
"State": "",
|
||||
"Status": "Status",
|
||||
"Status cleared successfully": "Status uğurla təmizləndi",
|
||||
"Status updated successfully": "Status uğurla yeniləndi",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "Modellə danış",
|
||||
"Tap to interrupt": "Durdurmaq üçün toxun",
|
||||
"Task List": "Tapşırıq siyahısı",
|
||||
"Task Management": "",
|
||||
"Task Model": "Tapşırıq modeli",
|
||||
"Tasks": "Tapşırıqlar",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API key",
|
||||
"Tavily Extract Depth": "Tavily çıxarış dərinliyi",
|
||||
"Tell us more:": "Bizə daha çox məlumat verin:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika Server URL-i tələb olunur.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Vaxt və Hesablama",
|
||||
"Timeout": "Vaxt aşımı",
|
||||
"Title": "Başlıq",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Bura alət dəstləri seçmək üçün əvvəlcə onları \"Alətlər\" (Tools) iş sahəsinə əlavə edin.",
|
||||
"Toast notifications for new updates": "Yeni yeniləmələr üçün bildirişlər",
|
||||
"Today": "Bu gün",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Bu gün saat {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "{{COUNT}} mənbəni göstər/gizlə",
|
||||
"Toggle 1 source": "1 mənbəni göstər/gizlə",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "Yüklənmə gözlənilir...",
|
||||
"Warning": "Xəbərdarlıq",
|
||||
"Warning:": "Xəbərdarlıq:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Xəbərdarlıq: Bunun aktiv edilməsi istifadəçilərə serverə ixtiyari kod yükləməyə icazə verəcək.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Xəbərdarlıq: Jupyter icrası ixtiyari kodun işlədilməsinə imkan verir və ciddi təhlükəsizlik riskləri yaradır — son dərəcə ehtiyatlı olun.",
|
||||
"Web": "Veb",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "En",
|
||||
"Wikipedia": "Vikipediya",
|
||||
"Won": "Qazandı",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Top-k ilə birlikdə işləyir. Daha yüksək dəyər (məs. 0.95) daha müxtəlif mətnlərə, daha aşağı dəyər isə (məs. 0.5) daha fokuslanmış və mühafizəkar mətnlərin yaranmasına səbəb olacaq.",
|
||||
"Workspace": "İş sahəsi",
|
||||
"Workspace Permissions": "İş sahəsi icazələri",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Асистент",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Базов URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Базов URL е задължителен.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Наличен списък",
|
||||
"Available models": "",
|
||||
"Available Tools": "Налични инструменти",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "API ключ за Brave Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Едновременни заявки",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Конфигуриране",
|
||||
"Confirm": "Потвърди",
|
||||
"Confirm Password": "Потвърди Парола",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Създаване на нов секретен ключ",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Създадено на",
|
||||
"Created At": "Създадено на",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "База данни",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Декември",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Изтриване на всички чатове",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Изтриване на Чат",
|
||||
"Delete chat?": "Изтриване на чата?",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Модел за вграждане",
|
||||
"Embedding Model Engine": "Двигател на модела за вграждане",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Въведете URL адрес на прокси (напр. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Въведете усилие за разсъждение",
|
||||
"Enter Score": "Въведете оценка",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "Въведете API ключ за Tavily",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Въведете публичния URL адрес на вашия WebUI. Този URL адрес ще бъде използван за генериране на връзки в известията.",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "Грешка при достъп до Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "Грешка при качване на файла: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Изпълнете кода за анализ",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Експериментално",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Инсталиране от URL адреса на Github",
|
||||
"Instant Auto-Send After Voice Transcription": "Незабавно автоматично изпращане след гласова транскрипция",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Интерфейс",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Последни активни",
|
||||
"Last Modified": "Последно модифицирано",
|
||||
"Last ran": "",
|
||||
"Last reply": "Последен отговор",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP сървърът е актуализиран",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Моделът '{{modelName}}' беше успешно свален.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Моделът '{{modelTag}}' е вече в очакване за сваляне.",
|
||||
"Model {{modelId}} not found": "Моделът {{modelId}} не е намерен",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Моделът {{modelName}} не поддържа визуални възможности",
|
||||
"Model {{name}} is now {{status}}": "Моделът {{name}} сега е {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Име",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Именувайте вашата база от знания",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Нативен",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Нов чат",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "нов-канал",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Няма налично разстояние",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Не е избран файл",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Не е фактологически правилно",
|
||||
"Not helpful": "Не е полезно",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Забележка: Ако зададете минимален резултат, търсенето ще върне само документи с резултат, по-голям или равен на минималния резултат.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "или",
|
||||
"Ordered List": "",
|
||||
"Other": "Друго",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "ИЗХОД",
|
||||
"Output format": "Изходен формат",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Парола",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "Поставете голям текст като файл",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF документ (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Извличане на изображения от PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "Усилие за разсъждение",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "Запиши",
|
||||
"Record voice": "Записване на глас",
|
||||
"Redirecting you to Open WebUI Community": "Пренасочване към OpenWebUI общността",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Преорганизиране на моделите",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "Отговори в тред",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Изпълни",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Изпълнява се",
|
||||
"Running...": "Изпълнява се...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "Запазено",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Запазването на чат логове директно в хранилището на вашия браузър вече не се поддържа. Моля, отделете малко време, за да изтеглите и изтриете чат логовете си, като щракнете върху бутона по-долу. Не се притеснявайте, можете лесно да импортирате отново чат логовете си в бекенда чрез",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Търси",
|
||||
"Search a model": "Търси модел",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "База за търсене",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Търсене на чатове",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "Изберете знание",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Изберете само един модел за извикване",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Начало на канала",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Докоснете за прекъсване",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "Задачи",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API Ключ",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Повече информация:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Тика",
|
||||
"Tika Server URL required.": "Изисква се URL адрес на Тика сървъра.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Заглавие",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "За да изберете инструменти тук, първо ги добавете към работното пространство \"Инструменти\".",
|
||||
"Toast notifications for new updates": "Изскачащи известия за нови актуализации",
|
||||
"Today": "Днес",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Предупреждение",
|
||||
"Warning:": "Предупреждение:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Предупреждение: Активирането на това ще позволи на потребителите да качват произволен код на сървъра.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Предупреждение: Изпълнението на Jupyter позволява произволно изпълнение на код, което представлява сериозни рискове за сигурността-продължете с изключително внимание.",
|
||||
"Web": "Уеб",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "Спечелено",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Работно пространство",
|
||||
"Workspace Permissions": "Разрешения за работното пространство",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 বেজ ইউআরএল",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 বেজ ইউআরএল আবশ্যক",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "সাহসী অনুসন্ধান API কী",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "সমকালীন অনুরোধ",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "পাসওয়ার্ড নিশ্চিত করুন",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "একটি নতুন সিক্রেট কী তৈরি করুন",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "নির্মানকাল",
|
||||
"Created At": "নির্মানকাল",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "ডেটাবেজ",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "ডেসেম্বর",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "সব চ্যাট মুছে ফেলুন",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "চ্যাট মুছে ফেলুন",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "ইমেজ ইমেবডিং মডেল",
|
||||
"Embedding Model Engine": "ইমেজ ইমেবডিং মডেল ইঞ্জিন",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "স্কোর দিন",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "পরিক্ষামূলক",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Github URL থেকে ইনস্টল করুন",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "ইন্টারফেস",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "সর্বশেষ সক্রিয়",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' মডেল সফলভাবে ডাউনলোড হয়েছে।",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "{{modelTag}} ডাউনলোডের জন্য আগে থেকেই অপেক্ষমান আছে।",
|
||||
"Model {{modelId}} not found": "{{modelId}} মডেল পাওয়া যায়নি",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "মডেল {{modelName}} দৃষ্টি সক্ষম নয়",
|
||||
"Model {{name}} is now {{status}}": "মডেল {{name}} এখন {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "নাম",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "নতুন চ্যাট",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "তথ্যগত দিক থেকে সঠিক নয়",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "দ্রষ্টব্য: আপনি যদি ন্যূনতম স্কোর সেট করেন তবে অনুসন্ধানটি কেবলমাত্র ন্যূনতম স্কোরের চেয়ে বেশি বা সমান স্কোর সহ নথিগুলি ফেরত দেবে।",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "অথবা",
|
||||
"Ordered List": "",
|
||||
"Other": "অন্যান্য",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "পাসওয়ার্ড",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF ডকুমেন্ট (.pdf)",
|
||||
"PDF Extract Images (OCR)": "পিডিএফ এর ছবি থেকে লেখা বের করুন (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "ভয়েস রেকর্ড করুন",
|
||||
"Redirecting you to Open WebUI Community": "আপনাকে OpenWebUI কমিউনিটিতে পাঠানো হচ্ছে",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "চলমান...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "মাধ্যমে",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "অনুসন্ধান",
|
||||
"Search a model": "মডেল অনুসন্ধান করুন",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "চ্যাট অনুসন্ধান করুন",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "চ্যানেলের শুরু",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "আরও বলুন:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "শিরোনাম",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "আজ",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "সতর্কীকরণ",
|
||||
"Warning:": "সতর্কতা:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "ওয়েব",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "ওয়ার্কস্পেস",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -197,6 +198,7 @@
|
|||
"Assistant": "ལག་རོགས་པ།",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -219,6 +221,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 གཞི་རྩའི་ URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 གཞི་རྩའི་ URL ངེས་པར་དུ་དགོས།",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "ཡོད་པའི་ཐོ་གཞུང་།",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -249,6 +258,7 @@
|
|||
"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": "Brave Search API ལྡེ་མིག",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -382,6 +392,7 @@
|
|||
"Concurrent Requests": "མཉམ་ལས་རེ་ཞུ།",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "སྒྲིག་འགོད།",
|
||||
"Confirm": "གཏན་འཁེལ།",
|
||||
"Confirm Password": "གསང་གྲངས་གཏན་འཁེལ།",
|
||||
|
|
@ -451,6 +462,7 @@
|
|||
"Create new secret key": "གསང་བའི་ལྡེ་མིག་གསར་པ་བཟོ་བ།",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "གསར་བཟོ་བྱེད་དུས།",
|
||||
"Created At": "གསར་བཟོ་བྱེད་དུས།",
|
||||
|
|
@ -472,6 +484,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "གནས་ཚུལ་མཛོད།",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "ཟླ་བ་བཅུ་གཉིས་པ།",
|
||||
|
|
@ -502,6 +515,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "ཁ་བརྡ་ཡོངས་རྫོགས་བསུབ་པ།",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "ཁ་བརྡ་བསུབ་པ།",
|
||||
"Delete chat?": "ཁ་བརྡ་བསུབ་པ།?",
|
||||
"Delete File": "",
|
||||
|
|
@ -646,6 +660,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "ཚུད་འཇུག་དཔེ་དབྱིབས།",
|
||||
"Embedding Model Engine": "ཚུད་འཇུག་དཔེ་དབྱིབས་འཕྲུལ་འཁོར།",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -737,6 +752,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Proxy URL འཇུག་པ། (དཔེར་ན། https://user:password@host:port)",
|
||||
"Enter reasoning effort": "རྒྱུ་མཚན་འདྲེན་པའི་འབད་བརྩོན་འཇུག་པ།",
|
||||
"Enter Score": "སྐར་མ་འཇུག་པ།",
|
||||
|
|
@ -761,6 +777,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "Tavily API ལྡེ་མིག་འཇུག་པ།",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "ཁྱེད་ཀྱི་ WebUI ཡི་སྤྱི་སྤྱོད་ URL འཇུག་པ། URL འདི་བརྡ་ཁྱབ་ནང་སྦྲེལ་ཐག་བཟོ་བར་བེད་སྤྱོད་བྱེད་ངེས།",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -800,6 +817,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "Google Drive འཛུལ་སྤྱོད་སྐབས་ནོར་འཁྲུལ།: {{error}}",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "ཡིག་ཆ་སྤར་སྐབས་ནོར་འཁྲུལ།: {{error}}",
|
||||
|
|
@ -817,6 +835,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "དབྱེ་ཞིབ་ཆེད་དུ་ཀོཌ་ལག་བསྟར་བྱེད་པ།",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "རྒྱ་བསྐྱེད་པ།",
|
||||
"Experimental": "ཚོད་ལྟའི་རང་བཞིན།",
|
||||
"Explain": "འགྲེལ་བཤད།",
|
||||
|
|
@ -1080,6 +1099,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Github URL ནས་སྒྲིག་སྦྱོར་བྱེད་པ།",
|
||||
"Instant Auto-Send After Voice Transcription": "སྐད་ཆ་ཡིག་འབེབས་བྱས་རྗེས་ལམ་སང་རང་འགུལ་གཏོང་བ།",
|
||||
"Instructions": "",
|
||||
"Integration": "མཉམ་འདྲེས།",
|
||||
"Integrations": "",
|
||||
"Interface": "ངོས་འཛིན།",
|
||||
|
|
@ -1139,6 +1159,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "མཐའ་མའི་ལས་བྱེད།",
|
||||
"Last Modified": "མཐའ་མའི་བཟོ་བཅོས།",
|
||||
"Last ran": "",
|
||||
"Last reply": "ལན་མཐའ་མ།",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP སར་བར་གསར་སྒྱུར་བྱས།",
|
||||
|
|
@ -1245,6 +1266,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "དཔེ་དབྱིབས། '{{modelName}}' ལེགས་པར་ཕབ་ལེན་བྱས་ཟིན།",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "དཔེ་དབྱིབས། '{{modelTag}}' ཕབ་ལེན་གྱི་སྒུག་ཐོ་ནང་ཡོད་ཟིན།",
|
||||
"Model {{modelId}} not found": "དཔེ་དབྱིབས། {{modelId}} མ་རྙེད།",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "དཔེ་དབྱིབས། {{modelName}} ལ་མཐོང་ནུས་མེད།",
|
||||
"Model {{name}} is now {{status}}": "དཔེ་དབྱིབས། {{name}} ད་ལྟ་ {{status}} ཡིན།",
|
||||
"Model {{name}} is now hidden": "དཔེ་དབྱིབས། {{name}} ད་ལྟ་སྦས་ཡོད།",
|
||||
|
|
@ -1294,8 +1316,11 @@
|
|||
"Name": "མིང་།",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "ཁྱེད་ཀྱི་ཤེས་བྱའི་རྟེན་གཞི་ལ་མིང་ཐོགས།",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "ས་སྐྱེས།",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "ཁ་བརྡ་གསར་པ།",
|
||||
"New File": "",
|
||||
|
|
@ -1314,9 +1339,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "བགྲོ་གླེང་གསར་པ།",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1327,6 +1354,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "ཐག་རིང་ཚད་མེད།",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "ཡིག་ཆ་གདམ་ག་མ་བྱས།",
|
||||
|
|
@ -1373,6 +1401,7 @@
|
|||
"Not factually correct": "དོན་དངོས་དང་མི་མཐུན།",
|
||||
"Not helpful": "ཕན་ཐོགས་མེད།",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "དོ་སྣང་།: གལ་ཏེ་ཁྱེད་ཀྱིས་སྐར་མ་ཉུང་ཤོས་ཤིག་བཀོད་སྒྲིག་བྱས་ན། འཚོལ་བཤེར་གྱིས་སྐར་མ་ཉུང་ཤོས་དེ་དང་མཉམ་པའམ་དེ་ལས་ཆེ་བའི་ཡིག་ཆ་ཁོ་ན་ཕྱིར་སློག་བྱེད་ངེས།",
|
||||
|
|
@ -1446,6 +1475,7 @@
|
|||
"or": "ཡང་ན།",
|
||||
"Ordered List": "",
|
||||
"Other": "གཞན།",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "ཐོན་འབྲས།",
|
||||
"Output format": "ཐོན་འབྲས་ཀྱི་བཀོད་པ།",
|
||||
|
|
@ -1461,6 +1491,7 @@
|
|||
"Password": "གསང་གྲངས།",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "ཡིག་རྐྱང་ཆེན་པོ་ཡིག་ཆ་ལྟར་སྦྱོར་བ།",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF ཡིག་ཆ། (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF པར་འདོན་སྤེལ། (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1565,6 +1596,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "རྒྱུ་མཚན་འདྲེན་པའི་འབད་བརྩོན།",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "སྐད་སྒྲ་ཕབ་པ།",
|
||||
"Redirecting you to Open WebUI Community": "ཁྱེད་ Open WebUI སྤྱི་ཚོགས་ལ་ཁ་ཕྱོགས་སྒྱུར་བཞིན་པ།",
|
||||
|
|
@ -1600,6 +1632,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "དཔེ་དབྱིབས་བསྐྱར་སྒྲིག",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "བརྗོད་གཞིའི་ནང་ལན་འདེབས།",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1631,6 +1664,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "ལག་བསྟར།",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "ལག་བསྟར་བྱེད་བཞིན་པ།",
|
||||
"Running...": "ལག་བསྟར་བྱེད་བཞིན་པ།...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1641,12 +1676,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "ཉར་ཚགས་བྱས།",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "ཁ་བརྡའི་ཟིན་ཐོ་ཐད་ཀར་ཁྱེད་ཀྱི་བརྡ་འཚོལ་ཆས་ཀྱི་གསོག་ཆས་སུ་ཉར་ཚགས་བྱེད་པར་ད་ནས་བཟུང་རྒྱབ་སྐྱོར་མེད། གཤམ་གྱི་མཐེབ་གནོན་མནན་ནས་ཁྱེད་ཀྱི་ཁ་བརྡའི་ཟིན་ཐོ་ཕབ་ལེན་དང་བསུབ་པར་དུས་ཚོད་ཅུང་ཟད་བླང་རོགས། སེམས་ཁྲལ་མེད། ཁྱེད་ཀྱིས་སྟབས་བདེ་པོར་ཁྱེད་ཀྱི་ཁ་བརྡའི་ཟིན་ཐོ་རྒྱབ་སྣེ་ལ་བསྐྱར་དུ་ནང་འདྲེན་བྱེད་ཐུབ།",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "འཚོལ་བཤེར།",
|
||||
"Search a model": "དཔེ་དབྱིབས་ཤིག་འཚོལ་བ།",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "འཚོལ་བཤེར་གཞི་རྩ།",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "ཁ་བརྡ་འཚོལ་བཤེར།",
|
||||
|
|
@ -1716,6 +1754,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "ཤེས་བྱ་གདམ་པ།",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "འབོད་པར་དཔེ་དབྱིབས་གཅིག་ཁོ་ན་གདམ་པ།",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1825,6 +1864,7 @@
|
|||
"Start of the channel": "རྒྱས་ལམ་འགོ་རིམ་",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1875,8 +1915,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "བར་ཆད་བྱེད་པར་མནན་པ།",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "ལས་འགན།",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API ལྡེ་མིག",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "ང་ཚོ་ལ་མང་ཙམ་ཤོད།:",
|
||||
|
|
@ -1943,6 +1985,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika Server URL དགོས་ངེས།",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "ཁ་བྱང་།",
|
||||
|
|
@ -1960,6 +2003,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "ལག་ཆའི་ཚོགས་སྡེ་འདིར་གདམ་ག་བྱེད་པར། ཐོག་མར་དེ་དག་ \"ལག་ཆའི་\" ལས་ཡུལ་དུ་སྣོན་པ།",
|
||||
"Toast notifications for new updates": "གསར་སྒྱུར་གསར་པའི་ཆེད་དུ་ Toast བརྡ་ཁྱབ།",
|
||||
"Today": "དེ་རིང་།",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2098,6 +2142,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "ཉེན་བརྡ།",
|
||||
"Warning:": "ཉེན་བརྡ།:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "ཉེན་བརྡ།: འདི་སྒུལ་བསྐྱོད་བྱས་ན་བེད་སྤྱོད་མཁན་ཚོས་སར་བར་སྟེང་གང་འདོད་ཀྱི་ཀོཌ་སྤར་བར་གནང་བ་སྤྲོད་ངེས།",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "ཉེན་བརྡ།: Jupyter ལག་བསྟར་གྱིས་གང་འདོད་ཀྱི་ཀོཌ་ལག་བསྟར་སྒུལ་བསྐྱོད་བྱས་ནས། བདེ་འཇགས་ཀྱི་ཉེན་ཁ་ཚབས་ཆེན་བཟོ་གི་ཡོད།—ཧ་ཅང་གཟབ་ནན་གྱིས་སྔོན་སྐྱོད་བྱེད་རོགས།",
|
||||
"Web": "དྲ་བ།",
|
||||
|
|
@ -2132,6 +2177,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "ཐོབ།",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "top-k དང་མཉམ་ལས་བྱེད། རིན་ཐང་མཐོ་བ་ (དཔེར་ན། 0.95) ཡིས་ཡིག་རྐྱང་སྣ་ཚོགས་ཆེ་བ་ཡོང་ངེས། དེ་བཞིན་དུ་རིན་ཐང་དམའ་བ་ (དཔེར་ན། 0.5) ཡིས་ཡིག་རྐྱང་དམིགས་ཚད་དང་སྲུང་འཛིན་ཆེ་བ་བཟོ་ངེས།",
|
||||
"Workspace": "ལས་ཡུལ།",
|
||||
"Workspace Permissions": "ལས་ཡུལ་གྱི་དབང་ཚད།",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "Asistent",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Prikazi znanje",
|
||||
"Attach Notes": "Prikazi zapise",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 osnovni URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "Potreban je AUTOMATIC1111 osnovni URL.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave tražilica - API ključ",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Istodobni zahtjevi",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Promijeni",
|
||||
"Confirm": "Potvrdi",
|
||||
"Confirm Password": "Potvrdite lozinku",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Stvori novi tajni ključ",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Stvoreno",
|
||||
"Created At": "Stvoreno",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Baza podataka",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Decembar",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Izbriši sve razgovore",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Izbriši razgovor",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Embedding model",
|
||||
"Embedding Model Engine": "Embedding model pogon",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "Unesite ocjenu",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Eksperimentalno",
|
||||
"Explain": "",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Instaliraj s Github URL-a",
|
||||
"Instant Auto-Send After Voice Transcription": "Trenutačno automatsko slanje nakon glasovne transkripcije",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Sučelje",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Zadnja aktivnost",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' je uspješno preuzet.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' je već u redu za preuzimanje.",
|
||||
"Model {{modelId}} not found": "Model {{modelId}} nije pronađen",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Model {{modelName}} ne čita vizualne impute",
|
||||
"Model {{name}} is now {{status}}": "Model {{name}} sada je {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Ime",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Novi razgovor",
|
||||
"New File": "",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "Nije činjenično točno",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Napomena: Ako postavite minimalnu ocjenu, pretraga će vratiti samo dokumente s ocjenom većom ili jednakom minimalnoj ocjeni.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "ili",
|
||||
"Ordered List": "",
|
||||
"Other": "Ostalo",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Lozinka",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF dokument (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF izdvajanje slika (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Snimanje glasa",
|
||||
"Redirecting you to Open WebUI Community": "Preusmjeravanje na OpenWebUI zajednicu",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Pokrenuto",
|
||||
"Running...": "Pokrenuto...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Spremanje zapisnika razgovora izravno u pohranu vašeg preglednika više nije podržano. Molimo vas da odvojite trenutak za preuzimanje i brisanje zapisnika razgovora klikom na gumb ispod. Ne brinite, možete lako ponovno uvesti zapisnike razgovora u backend putem",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Pretraga",
|
||||
"Search a model": "Pretraži model",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Pretraži razgovore",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Odaberite samo jedan model za poziv",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Početak kanala",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Recite nam više:",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Naslov",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "Danas",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Upozorenje",
|
||||
"Warning:": "Upozorenje:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Web",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Radna ploča",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"Are you sure you want to archive all chats? This action cannot be undone.": "Estàs segur que vols arxivar tots els xats? Aquesta acció no es pot desfer.",
|
||||
"Are you sure you want to clear all memories? This action cannot be undone.": "Estàs segur que vols netejar totes les memòries? Aquesta acció no es pot desfer.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "Estàs segur que vols eliminar \"{{NAME}}\"?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "Estàs segur que vols suprimir tots els xats? Aquesta acció no es pot desfer.",
|
||||
"Are you sure you want to delete this channel?": "Estàs segur que vols eliminar aquest canal?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "Estàs segur que vols suprimir aquesta connexió? Aquesta acció no es pot desfer.",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "Assistent",
|
||||
"Async Embedding Processing": "Procés d'incrustat asíncron",
|
||||
"Attach File From Knowledge": "Adjuntar arxiu del coneixement",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Adjuntar coneixement",
|
||||
"Attach Notes": "Adjuntar notes",
|
||||
"Attach Webpage": "Adjuntar pàgina web",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "URL Base d'AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "Es requereix la URL Base d'AUTOMATIC1111.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Injecta automàticament les eines del sistema en el mode de crida de funcions natives (per exemple, marques de temps, memòria, historial de xat, notes, etc.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Llista de disponibles",
|
||||
"Available models": "Models disponibles",
|
||||
"Available Tools": "Eines disponibles",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Potenciar o penalitzar tokens específics per a respostes limitades. Els valors de biaix es fixaran entre -100 i 100 (inclosos). (Per defecte: cap)",
|
||||
"Brave": "Brave",
|
||||
"Brave Search API Key": "Clau API de Brave Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Cerca i fes preguntes a una base de coneixement",
|
||||
"Builtin Tools": "Eines integrades",
|
||||
"Bullet List": "Llista indexada",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Peticions simultànies",
|
||||
"Config": "Configuració",
|
||||
"Config imported successfully": "Configuració importada correctament",
|
||||
"Configuration": "",
|
||||
"Configure": "Configurar",
|
||||
"Confirm": "Confirmar",
|
||||
"Confirm Password": "Confirmar la contrasenya",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Crear una nova clau secreta",
|
||||
"Create note": "Crear una nota",
|
||||
"Create Note": "Crea nota",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Crea la teva primera nota prement sobre el botó 'més' inferior",
|
||||
"Created at": "Creat el",
|
||||
"Created At": "Creat el",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "Controls de dades",
|
||||
"Database": "Base de dades",
|
||||
"Datalab Marker API": "API de Datalab Marker",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD/MM/YYYY",
|
||||
"DDGS Backend": "Backend DDGS",
|
||||
"December": "Desembre",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "Eliminar tot",
|
||||
"Delete All Chats": "Eliminar tots els xats",
|
||||
"Delete all contents inside this folder": "Eliminar tot el contingut d'aquesta carpeta",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Eliminar xat",
|
||||
"Delete chat?": "Eliminar el xat?",
|
||||
"Delete File": "Eliminar el fitxer",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "Peticions concurrents d'incrustació",
|
||||
"Embedding Model": "Model d'incrustació",
|
||||
"Embedding Model Engine": "Motor de model d'incrustació",
|
||||
"Emojis": "",
|
||||
"Empty message": "Missatge buit",
|
||||
"Enable All": "Habilitar tot",
|
||||
"Enable API Keys": "Permetre claus API",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "Introduïu l'URL de l'API de cerca de Perplexity",
|
||||
"Enter Playwright Timeout": "Introdueix el temps d'espera de Playwright",
|
||||
"Enter Playwright WebSocket URL": "Introdueix la URL de Playwright WebSocket",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Entra la URL (p. ex. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Introdueix l'esforç de raonament",
|
||||
"Enter Score": "Introdueix la puntuació",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "Entra la indicació de sistema aquí",
|
||||
"Enter Tavily API Key": "Introdueix la clau API de Tavily",
|
||||
"Enter Tavily Extract Depth": "Introdueix la profunditat d'extracció de Tavily",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Entra la URL pública de WebUI. Aquesta URL s'utilitzarà per generar els enllaços en les notificacions.",
|
||||
"Enter the URL of the function to import": "Introdueix la URL de la funció a importar",
|
||||
"Enter the URL to import": "Introdueix la URL a importar",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "Error en accedir al directori",
|
||||
"Error accessing Google Drive: {{error}}": "Error en accedir a Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Error en accedir als dispositius multimèdia",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Error en començar a enregistrar",
|
||||
"Error unloading model: {{error}}": "Error en descarregar el model: {{error}}",
|
||||
"Error uploading file: {{error}}": "Error en pujar l'arxiu: {{error}}",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "Executa el codi",
|
||||
"Execute code for analysis": "Executar el codi per analitzar-lo",
|
||||
"Executing **{{NAME}}**...": "Executant **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Expandir",
|
||||
"Experimental": "Experimental",
|
||||
"Explain": "Explicar",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Insereix un suggeriment per introduir",
|
||||
"Install from Github URL": "Instal·lar des de la URL de Github",
|
||||
"Instant Auto-Send After Voice Transcription": "Enviament automàtic després de la transcripció de veu",
|
||||
"Instructions": "",
|
||||
"Integration": "Integració",
|
||||
"Integrations": "Integracions",
|
||||
"Interface": "Interfície",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "Darrers 90 dies",
|
||||
"Last Active": "Activitat recent",
|
||||
"Last Modified": "Modificació",
|
||||
"Last ran": "",
|
||||
"Last reply": "Darrera resposta",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Servidor LDAP actualitzat",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "El model '{{modelName}}' s'ha descarregat correctament.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "El model '{{modelTag}}' ja està en cua per ser descarregat.",
|
||||
"Model {{modelId}} not found": "No s'ha trobat el model {{modelId}}",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "El model {{modelName}} no és capaç de visió",
|
||||
"Model {{name}} is now {{status}}": "El model {{name}} ara és {{status}}",
|
||||
"Model {{name}} is now hidden": "El model {{name}} està ara amagat",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Nom",
|
||||
"Name and ID are required, please fill them out": "El nom i l'ID són necessaris, emplena'ls, si us plau",
|
||||
"Name your knowledge base": "Anomena la teva base de coneixement",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Natiu",
|
||||
"Never": "",
|
||||
"New": "Nou",
|
||||
"New Automation": "",
|
||||
"New Button": "Botó nou",
|
||||
"New Chat": "Nou xat",
|
||||
"New File": "Nou arxiu",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "Nou webhook",
|
||||
"new-channel": "nou-canal",
|
||||
"Next message": "Missatge següent",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "Sense permisos d'accés. Privat per a tu.",
|
||||
"No activity data": "No hi ha dades d'activitat",
|
||||
"No authentication": "Sense autenticació",
|
||||
"No automations found": "",
|
||||
"No chats found": "No s'han trobat xats",
|
||||
"No chats found for this user.": "No s'han trobat xats per a aquest usuari.",
|
||||
"No chats found.": "No s'ha trobat xats.",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "No hi ha dades",
|
||||
"No data found": "No s'han trobat dades",
|
||||
"No distance available": "No hi ha distància disponible",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "No posar expiració pot suposar problemes de seguretat.",
|
||||
"No feedback found": "No s'ha trobat cap retorn",
|
||||
"No file selected": "No s'ha escollit cap fitxer",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "No és clarament correcte",
|
||||
"Not helpful": "No ajuda",
|
||||
"Not Registered": "No registrat",
|
||||
"Not scheduled": "",
|
||||
"Note": "Nota",
|
||||
"Note deleted successfully": "La nota s'ha eliminat correctament",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si s'estableix una puntuació mínima, la cerca només retornarà documents amb una puntuació major o igual a la puntuació mínima.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "o",
|
||||
"Ordered List": "Llista ordenada",
|
||||
"Other": "Altres",
|
||||
"out of": "",
|
||||
"Output": "Sortida",
|
||||
"OUTPUT": "SORTIDA",
|
||||
"Output format": "Format de sortida",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Contrasenya",
|
||||
"Passwords do not match.": "Les contrasenyes no coincideixen",
|
||||
"Paste Large Text as File": "Enganxa un text llarg com a fitxer",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Document PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Extreu imatges del PDF (OCR)",
|
||||
"PDF Loader Mode": "Mode de càrrega de PDF",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "Raó",
|
||||
"Reasoning Effort": "Esforç de raonament",
|
||||
"Reasoning Tags": "Etiqueta de raonament",
|
||||
"Recently Used": "",
|
||||
"Record": "Enregistrar",
|
||||
"Record voice": "Enregistrar la veu",
|
||||
"Redirecting you to Open WebUI Community": "Redirigint-te a la comunitat OpenWebUI",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "S'ha renombrat a {{name}}",
|
||||
"Render Markdown in Previews": "Compila el Markdown a les previsualitzacions",
|
||||
"Reorder Models": "Reordenar els models",
|
||||
"Repeats": "",
|
||||
"Reply": "Respondre",
|
||||
"Reply in Thread": "Respondre al fil",
|
||||
"Reply to thread...": "Respondra al fil...",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Executar",
|
||||
"Run All": "Executar tot",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "S'està executant",
|
||||
"Running...": "S'està executant...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Executa tasques d'incrustació simultàniament per accelerar el processament. Desactiva-ho si els límits de velocitat es converteixen en un problema.",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "Dear el xat",
|
||||
"Saved": "Desat",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Desar els registres de xat directament a l'emmagatzematge del teu navegador ja no està suportat. Si us plau, descarregr i elimina els registres de xat fent clic al botó de sota. No et preocupis, pots tornar a importar fàcilment els teus registres de xat al backend a través de",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Fer scroll en canviar de branca",
|
||||
"Search": "Cercar",
|
||||
"Search a model": "Cercar un model",
|
||||
"Search all emojis": "Cercar tots els emojis",
|
||||
"Search and manage user memories": "Cerca i gestiona les memòries d'usuari",
|
||||
"Search and view user chat history": "Cerca i mostra l'historial de xats",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Base de cerca",
|
||||
"Search channels and channel messages": "Cerca els canals i els missatges als canals",
|
||||
"Search Chats": "Cercar xats",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "Seleccionar com separar un missatge per a peticions TTS",
|
||||
"Select Knowledge": "Seleccionar coneixement",
|
||||
"Select Method": "Escollir el mètode",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Seleccionar només un model per trucar",
|
||||
"Select view": "Seleccionar una vista",
|
||||
"Selected model: {{modelName}}": "Model seleccionat: {{modelName}}",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Inici del canal",
|
||||
"Start Tag": "Etiqueta d'inici",
|
||||
"Starting kernel...": "Iniciant el kernel...",
|
||||
"State": "",
|
||||
"Status": "Estat",
|
||||
"Status cleared successfully": "S'ha eliminat correctament el teu estat",
|
||||
"Status updated successfully": "S'ha actualitzat correctament el teu estat",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "Parlar amb el model",
|
||||
"Tap to interrupt": "Prem per interrompre",
|
||||
"Task List": "Llista de tasques",
|
||||
"Task Management": "",
|
||||
"Task Model": "Model de tasques",
|
||||
"Tasks": "Tasques",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Clau API de Tavily",
|
||||
"Tavily Extract Depth": "Profunditat d'extracció de Tavily",
|
||||
"Tell us more:": "Dona'ns més informació:",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "La URL del servidor Tika és obligatòria.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Temps i càlculs",
|
||||
"Timeout": "Temps d'espera",
|
||||
"Title": "Títol",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Per seleccionar kits d'eines aquí, afegeix-los primer a l'espai de treball \"Eines\".",
|
||||
"Toast notifications for new updates": "Notificacions Toast de noves actualitzacions",
|
||||
"Today": "Avui",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Avui a les {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "Activa/Desactiva {{COUNT}} fonts",
|
||||
"Toggle 1 source": "Activa/Desactiva 1 font",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "Esperant per pujar...",
|
||||
"Warning": "Avís",
|
||||
"Warning:": "Avís:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Avís: Habilitar això permetrà als usuaris penjar codi arbitrari al servidor.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Avís: l'execució de Jupyter permet l'execució de codi arbitrari, la qual cosa comporta greus riscos de seguretat; procediu amb extrema precaució.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "amplada",
|
||||
"Wikipedia": "Wikipedia",
|
||||
"Won": "Ha guanyat",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Funciona juntament amb top-k. Un valor més alt (p. ex., 0,95) donarà lloc a un text més divers, mentre que un valor més baix (p. ex., 0,5) generarà un text més concentrat i conservador.",
|
||||
"Workspace": "Espai de treball",
|
||||
"Workspace Permissions": "Permisos de l'espai de treball",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "Base URL AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "Ang AUTOMATIC1111 base URL gikinahanglan.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "Kumpirma ang password",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Gihimo ang",
|
||||
"Created At": "",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Database",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "",
|
||||
"Embedding Model Engine": "",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Eksperimento",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Interface",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Ang modelo'{{modelName}}' malampuson nga na-download.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Ang modelo'{{modelTag}}' naa na sa pila para ma-download.",
|
||||
"Model {{modelId}} not found": "Modelo {{modelId}} wala makit-an",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "",
|
||||
"Model {{name}} is now {{status}}": "",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Ngalan",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Bag-ong diskusyon",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "O",
|
||||
"Ordered List": "",
|
||||
"Other": "",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Password",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "",
|
||||
"PDF Extract Images (OCR)": "PDF Image Extraction (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Irekord ang tingog",
|
||||
"Redirecting you to Open WebUI Community": "Gi-redirect ka sa komunidad sa OpenWebUI",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "Nagdagan...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Ang pag-save sa mga chat log direkta sa imong browser storage dili na suportado. ",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Pagpanukiduki",
|
||||
"Search a model": "",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Sinugdan sa channel",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Titulo",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "",
|
||||
"Warning:": "Pahimangno:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -184,6 +184,7 @@
|
|||
"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.": "Opravdu si přejete vymazat všechny vzpomínky? Tuto akci nelze vrátit zpět.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "Opravdu chcete smazat tento kanál?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -200,6 +201,7 @@
|
|||
"Assistant": "Asistent",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Připojit znalosti",
|
||||
"Attach Notes": "Přiojit poznámky",
|
||||
"Attach Webpage": "Připojit web",
|
||||
|
|
@ -222,6 +224,13 @@
|
|||
"AUTOMATIC1111 Base URL": "Základní URL pro AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "Je vyžadována základní URL pro AUTOMATIC1111.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Seznam dostupných",
|
||||
"Available models": "",
|
||||
"Available Tools": "Dostupné nástroje",
|
||||
|
|
@ -252,6 +261,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Zvýhodňování nebo penalizace specifických tokenů pro omezené odpovědi. Hodnoty odchylky budou omezeny v rozmezí -100 až 100 (včetně). (Výchozí: žádné)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Klíč API pro Brave Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "Seznam s odrážkami",
|
||||
|
|
@ -385,6 +395,7 @@
|
|||
"Concurrent Requests": "Souběžné požadavky",
|
||||
"Config": "",
|
||||
"Config imported successfully": "Konfigurace byla úspěšně importována",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfigurovat",
|
||||
"Confirm": "Potvrdit",
|
||||
"Confirm Password": "Potvrdit heslo",
|
||||
|
|
@ -454,6 +465,7 @@
|
|||
"Create new secret key": "Vytvořit nový tajný klíč",
|
||||
"Create note": "",
|
||||
"Create Note": "Vytvořit poznámku",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Vytvořte svou první poznámku kliknutím na tlačítko plus níže.",
|
||||
"Created at": "Vytvořeno",
|
||||
"Created At": "Vytvořeno",
|
||||
|
|
@ -475,6 +487,7 @@
|
|||
"Data Controls": "Správa dat",
|
||||
"Database": "Databáze",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD.MM.RRRR",
|
||||
"DDGS Backend": "",
|
||||
"December": "Prosinec",
|
||||
|
|
@ -505,6 +518,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Smazat všechny konverzace",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Smazat konverzaci",
|
||||
"Delete chat?": "Smazat konverzaci?",
|
||||
"Delete File": "",
|
||||
|
|
@ -649,6 +663,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Model pro vektorizaci",
|
||||
"Embedding Model Engine": "Jádro modelu pro vektorizaci",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -740,6 +755,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "Zadejte časový limit pro Playwright",
|
||||
"Enter Playwright WebSocket URL": "Zadejte WebSocket URL pro Playwright",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Zadejte URL proxy (např. https://uzivatel:heslo@hostitel:port)",
|
||||
"Enter reasoning effort": "Zadejte úsilí pro uvažování",
|
||||
"Enter Score": "Zadejte skóre",
|
||||
|
|
@ -764,6 +780,7 @@
|
|||
"Enter system prompt here": "Zde zadejte systémové instrukce",
|
||||
"Enter Tavily API Key": "Zadejte API klíč pro Tavily",
|
||||
"Enter Tavily Extract Depth": "Zadejte hloubku extrakce pro Tavily",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Zadejte veřejnou URL adresu vašeho WebUI. Tato URL bude použita k generování odkazů v oznámeních.",
|
||||
"Enter the URL of the function to import": "Zadejte URL funkce k importu",
|
||||
"Enter the URL to import": "Zadejte URL pro import",
|
||||
|
|
@ -803,6 +820,7 @@
|
|||
"Error accessing directory": "Chyba při přístupu k adresáři",
|
||||
"Error accessing Google Drive: {{error}}": "Chyba při přístupu ke Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Chyba při přístupu k mediálním zařízením.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Chyba při spuštění nahrávání.",
|
||||
"Error unloading model: {{error}}": "Chyba při uvolňování modelu: {{error}}",
|
||||
"Error uploading file: {{error}}": "Chyba při nahrávání souboru: {{error}}",
|
||||
|
|
@ -820,6 +838,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Spustit kód pro analýzu",
|
||||
"Executing **{{NAME}}**...": "Spouštím **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Rozbalit",
|
||||
"Experimental": "Experimentální",
|
||||
"Explain": "Vysvětlit",
|
||||
|
|
@ -1083,6 +1102,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Instalovat z URL na Githubu",
|
||||
"Instant Auto-Send After Voice Transcription": "Okamžité automatické odeslání po přepisu hlasu",
|
||||
"Instructions": "",
|
||||
"Integration": "Integrace",
|
||||
"Integrations": "Integrace",
|
||||
"Interface": "Rozhraní",
|
||||
|
|
@ -1142,6 +1162,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Naposledy aktivní",
|
||||
"Last Modified": "Poslední úprava",
|
||||
"Last ran": "",
|
||||
"Last reply": "Poslední odpověď",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP server byl aktualizován",
|
||||
|
|
@ -1248,6 +1269,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' byl úspěšně stažen.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' je již ve frontě na stažení.",
|
||||
"Model {{modelId}} not found": "Model {{modelId}} nenalezen",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Model {{modelName}} nemá schopnost zpracování obrazu.",
|
||||
"Model {{name}} is now {{status}}": "Model {{name}} je nyní {{status}}.",
|
||||
"Model {{name}} is now hidden": "Model {{name}} je nyní skrytý",
|
||||
|
|
@ -1297,8 +1319,11 @@
|
|||
"Name": "Jméno",
|
||||
"Name and ID are required, please fill them out": "Jméno a ID jsou povinné, prosím vyplňte je",
|
||||
"Name your knowledge base": "Pojmenujte svou znalostní bázi",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Nativní",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "Nové tlačítko",
|
||||
"New Chat": "Nová konverzace",
|
||||
"New File": "",
|
||||
|
|
@ -1317,9 +1342,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "novy-kanal",
|
||||
"Next message": "Další zpráva",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "Nebyly nalezeny žádné konverzace",
|
||||
"No chats found for this user.": "Pro tohoto uživatele nebyly nalezeny žádné konverzace.",
|
||||
"No chats found.": "Nebyly nalezeny žádné konverzace.",
|
||||
|
|
@ -1330,6 +1357,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Vzdálenost není k dispozici",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Nebyl vybrán žádný soubor",
|
||||
|
|
@ -1376,6 +1404,7 @@
|
|||
"Not factually correct": "Fakticky nesprávné",
|
||||
"Not helpful": "Nepomohlo",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "Poznámka",
|
||||
"Note deleted successfully": "Poznámka byla úspěšně smazána",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Poznámka: Pokud nastavíte minimální skóre, vyhledávání vrátí pouze dokumenty se skóre vyšším nebo rovným minimálnímu skóre.",
|
||||
|
|
@ -1449,6 +1478,7 @@
|
|||
"or": "nebo",
|
||||
"Ordered List": "Číslovaný seznam",
|
||||
"Other": "Jiné",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "VÝSTUP",
|
||||
"Output format": "Formát výstupu",
|
||||
|
|
@ -1464,6 +1494,7 @@
|
|||
"Password": "Heslo",
|
||||
"Passwords do not match.": "Hesla se neshodují.",
|
||||
"Paste Large Text as File": "Vložit velký text jako soubor",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Dokument PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Extrahovat obrázky z PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1568,6 +1599,7 @@
|
|||
"Reason": "Důvod",
|
||||
"Reasoning Effort": "reasoning effort",
|
||||
"Reasoning Tags": "reasoning tags",
|
||||
"Recently Used": "",
|
||||
"Record": "Nahrát",
|
||||
"Record voice": "Nahrát hlas",
|
||||
"Redirecting you to Open WebUI Community": "Přesměrovávám vás do komunity Open WebUI",
|
||||
|
|
@ -1603,6 +1635,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Změnit pořadí modelů",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "Odpovědět ve vlákně",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1637,6 +1670,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Spustit",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Běží",
|
||||
"Running...": "Běží...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1647,12 +1682,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "Uloženo",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Ukládání záznamů konverzací přímo do úložiště vašeho prohlížeče již není podporováno. Věnujte prosím chvíli stažení a smazání svých záznamů konverzací kliknutím na tlačítko níže. Nemějte obavy, své záznamy konverzací můžete snadno znovu importovat do backendu prostřednictvím",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Posouvat při změně větve",
|
||||
"Search": "Hledat",
|
||||
"Search a model": "Hledat model",
|
||||
"Search all emojis": "Hledat všechny emoji",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Základ pro vyhledávání",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Hledat v konverzacích",
|
||||
|
|
@ -1722,6 +1760,7 @@
|
|||
"Select how to split message text for TTS requests": "Vyberte, jak dělit text zprávy pro požadavky TTS",
|
||||
"Select Knowledge": "Vybrat znalosti",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Vyberte pouze jeden model k volání",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1831,6 +1870,7 @@
|
|||
"Start of the channel": "Začátek kanálu",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1881,8 +1921,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Klepnutím přerušíte",
|
||||
"Task List": "Seznam úkolů",
|
||||
"Task Management": "",
|
||||
"Task Model": "Model pro úkoly",
|
||||
"Tasks": "Úkoly",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "API klíč pro Tavily",
|
||||
"Tavily Extract Depth": "Hloubka extrakce Tavily",
|
||||
"Tell us more:": "Řekněte nám více:",
|
||||
|
|
@ -1949,6 +1991,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Je vyžadována URL serveru Tika.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Název",
|
||||
|
|
@ -1966,6 +2009,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Pro výběr sad nástrojů zde je nejprve přidejte do pracovního prostoru \"Nástroje\".",
|
||||
"Toast notifications for new updates": "Vyskakovací oznámení o nových aktualizacích",
|
||||
"Today": "Dnes",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2104,6 +2148,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Varování",
|
||||
"Warning:": "Varování:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Varování: Povolení této volby umožní uživatelům nahrávat na server libovolný kód.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Varování: Spouštění Jupyteru umožňuje provádění libovolného kódu, což představuje vážná bezpečnostní rizika – postupujte s maximální opatrností.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2138,6 +2183,7 @@
|
|||
"Width": "Šířka",
|
||||
"Wikipedia": "",
|
||||
"Won": "Vyhrál",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Funguje společně s top-k. Vyšší hodnota (např. 0,95) povede k rozmanitějšímu textu, zatímco nižší hodnota (např. 0,5) vygeneruje soustředěnější a konzervativnější text.",
|
||||
"Workspace": "Pracovní prostor",
|
||||
"Workspace Permissions": "Oprávnění pracovního prostoru",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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.": "Er du sikker på du vil rydde hele hukommelsen? Dette kan ikke gøres om.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "Er du sikker på at du vil slette \"{{NAME}}\"?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "Er du sikker på du vil slette denne kanal?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Assistent",
|
||||
"Async Embedding Processing": "Asynkron embedding processering",
|
||||
"Attach File From Knowledge": "Vedhæft fil fra viden",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Vedhæft viden",
|
||||
"Attach Notes": "Vedhæft noter",
|
||||
"Attach Webpage": "Vedhæft webside",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 base URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 base URL er påkrævet.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Tilgængelige lister",
|
||||
"Available models": "",
|
||||
"Available Tools": "Tilgængelige værktøj",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Forøg eller reducer specifikke tokens for begrænsede svar. Bias-værdier vil blive begrænset til mellem -100 og 100 (inklusiv). (Standard: ingen)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave Search API nøgle",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "Punktliste",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Concurrent requests",
|
||||
"Config": "",
|
||||
"Config imported successfully": "Konfiguration importeret",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfigurer",
|
||||
"Confirm": "Bekræft",
|
||||
"Confirm Password": "Bekræft password",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Opret en ny hemmelig nøgle",
|
||||
"Create note": "",
|
||||
"Create Note": "Opret note",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Opret din første note ved at klikke på plus knappen nedenfor.",
|
||||
"Created at": "Oprettet",
|
||||
"Created At": "Oprettet",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Datakontrol",
|
||||
"Database": "Database",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD/MM/ÅÅÅÅ",
|
||||
"DDGS Backend": "",
|
||||
"December": "december",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Slet alle chats",
|
||||
"Delete all contents inside this folder": "Slet alt indhold i denne mappe",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Slet chat",
|
||||
"Delete chat?": "Slet chat?",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Embedding Model",
|
||||
"Embedding Model Engine": "Embedding Model engine",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "Aktiver API nøgler",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "Indtast Perplexity Search API URL",
|
||||
"Enter Playwright Timeout": "Indtast Playwright timeout",
|
||||
"Enter Playwright WebSocket URL": "Indtast Playwright WebSocket URL",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Indtast proxy URL (f.eks. https://bruger:adgangskode@host:port)",
|
||||
"Enter reasoning effort": "Indtast ræsonneringsindsats",
|
||||
"Enter Score": "Indtast score",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Indtast systemprompt her",
|
||||
"Enter Tavily API Key": "Indtast Tavily API-nøgle",
|
||||
"Enter Tavily Extract Depth": "Indtast Tavily Extract Depth",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Indtast den offentlige URL til dit WebUI. Denne URL vil blive brugt til at generere links i notifikationerne.",
|
||||
"Enter the URL of the function to import": "Indtast URL'en for funktionen der skal importeres",
|
||||
"Enter the URL to import": "Indtast URL'en der skal importeres",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "Fejl ved adgang til mappe",
|
||||
"Error accessing Google Drive: {{error}}": "Fejl ved adgang til Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Fejl ved adgang til medieenheder.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Fejl ved start af optagelse.",
|
||||
"Error unloading model: {{error}}": "Fejl ved aflæsning af model: {{error}}",
|
||||
"Error uploading file: {{error}}": "Fejl ved upload af fil: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Kør kode til analyse",
|
||||
"Executing **{{NAME}}**...": "Kører **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Udvid",
|
||||
"Experimental": "Eksperimentel",
|
||||
"Explain": "Forklar",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Indsæt prompt foreslag til input",
|
||||
"Install from Github URL": "Installer fra Github URL",
|
||||
"Instant Auto-Send After Voice Transcription": "Øjeblikkelig automatisk afsendelse efter stemmetransskription",
|
||||
"Instructions": "",
|
||||
"Integration": "Integration",
|
||||
"Integrations": "Integrationer",
|
||||
"Interface": "Grænseflade",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Sidst aktiv",
|
||||
"Last Modified": "Sidst ændret",
|
||||
"Last ran": "",
|
||||
"Last reply": "Sidste svar",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP server opdateret",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' er blevet downloadet.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' er allerede i kø til download.",
|
||||
"Model {{modelId}} not found": "Model {{modelId}} ikke fundet",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Model {{modelName}} understøtter ikke billeder",
|
||||
"Model {{name}} is now {{status}}": "Model {{name}} er nu {{status}}",
|
||||
"Model {{name}} is now hidden": "Model {{name}} er nu skjult",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Navn",
|
||||
"Name and ID are required, please fill them out": "Navn og ID er påkrævet, venligst udfyld dem",
|
||||
"Name your knowledge base": "Navngiv din vidensbase",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Indbygget",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "Ny knap",
|
||||
"New Chat": "Ny chat",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "ny-kanal",
|
||||
"Next message": "Næste besked",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "Ingen autentificering",
|
||||
"No automations found": "",
|
||||
"No chats found": "Ingen chats fundet",
|
||||
"No chats found for this user.": "Ingen besked-tråde fundet for denne bruger.",
|
||||
"No chats found.": "Ingen besked-tråde fundet.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Ingen afstand tilgængelig",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "Ingen udløbsdato kan udgøre en sikkerhedsrisiko.",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Ingen fil valgt",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Ikke faktuelt korrekt",
|
||||
"Not helpful": "Ikke hjælpsom",
|
||||
"Not Registered": "Ikke registreret",
|
||||
"Not scheduled": "",
|
||||
"Note": "Note",
|
||||
"Note deleted successfully": "Note slettet",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Bemærk: Hvis du angiver en minimumscore, returnerer søgningen kun dokumenter med en score, der er større end eller lig med minimumscoren.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "eller",
|
||||
"Ordered List": "Nummereret liste",
|
||||
"Other": "Andet",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "OUTPUT",
|
||||
"Output format": "Outputformat",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Adgangskode",
|
||||
"Passwords do not match.": "Passwords stemmer ikke overens.",
|
||||
"Paste Large Text as File": "Indsæt store tekster som fil",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF-dokument (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Udtræk billeder fra PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "Årsag",
|
||||
"Reasoning Effort": "Ræsonnements indsats",
|
||||
"Reasoning Tags": "Ræsonneringstags",
|
||||
"Recently Used": "",
|
||||
"Record": "Optag",
|
||||
"Record voice": "Optag stemme",
|
||||
"Redirecting you to Open WebUI Community": "Omdirigerer dig til OpenWebUI Community",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Omarranger modeller",
|
||||
"Repeats": "",
|
||||
"Reply": "Svar",
|
||||
"Reply in Thread": "Svar i tråd",
|
||||
"Reply to thread...": "Svar på tråd...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Kør",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Kører",
|
||||
"Running...": "Kører...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Kører embedding-opgaver sideløbende for at fremskynde behandlingen. Slå fra hvis hastighedsbegrænsninger bliver et problem.",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Gem chat",
|
||||
"Saved": "Gemt",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Lagring af chatlogs direkte i din browsers lager understøttes ikke længere. Download og slet dine chatlogs ved at klikke på knappen nedenfor. Du kan nemt importere dine chatlogs til backend igennem",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Scroll ved gren ændring",
|
||||
"Search": "Søg",
|
||||
"Search a model": "Søg efter en model",
|
||||
"Search all emojis": "Søg i alle emojis",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Søgebase",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Søg i chats",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "Vælg hvordan beskedtekst skal opdeles til TTS requests",
|
||||
"Select Knowledge": "Vælg viden",
|
||||
"Select Method": "Vælg metode",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Vælg kun én model at kalde",
|
||||
"Select view": "Vælg visning",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Kanalens start",
|
||||
"Start Tag": "Start tag",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "Status",
|
||||
"Status cleared successfully": "Status slettet",
|
||||
"Status updated successfully": "Status opdateret",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "Tal med model",
|
||||
"Tap to interrupt": "Tryk for at afbryde",
|
||||
"Task List": "Opgaveliste",
|
||||
"Task Management": "",
|
||||
"Task Model": "Opgavemodel",
|
||||
"Tasks": "Opgaver",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API-nøgle",
|
||||
"Tavily Extract Depth": "Tavily udtræk dybde",
|
||||
"Tell us more:": "Fortæl os mere:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika-server-URL påkrævet.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Titel",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "For at vælge værktøjssæt her skal du først tilføje dem til \"Værktøjer\"-arbejdsområdet.",
|
||||
"Toast notifications for new updates": "Toast-notifikationer for nye opdateringer",
|
||||
"Today": "I dag",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "I dag {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Advarsel",
|
||||
"Warning:": "Advarsel:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Advarsel: Hvis du aktiverer dette, vil brugerne kunne uploade vilkårlig kode på serveren.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Advarsel: Jupyter-udførelse gør det muligt at udføre vilkårlig kode, hvilket udfordrer alvorlige sikkerhedsrisici - fortsæt med ekstremt omhyggelighed.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "Bredde",
|
||||
"Wikipedia": "",
|
||||
"Won": "Vandt",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Fungerer sammen med top-k. En højere værdi (f.eks. 0,95) vil føre til mere forskelligartet tekst, mens en lavere værdi (f.eks. 0,5) vil generere mere fokuseret og konservativ tekst.",
|
||||
"Workspace": "Arbejdsområde",
|
||||
"Workspace Permissions": "Arbejdsområde rettigheder",
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
"{{COUNT}} members": "{{COUNT}} Mitglieder",
|
||||
"{{COUNT}} Replies": "{{COUNT}} Antworten",
|
||||
"{{COUNT}} Rows": "{{COUNT}} Reihen",
|
||||
"{{count}} selected_one": "",
|
||||
"{{count}} selected_other": "",
|
||||
"{{count}} selected_one": "{{count}} ausgewählt",
|
||||
"{{count}} selected_other": "{{count}} ausgewählt",
|
||||
"{{COUNT}} Sources": "{{COUNT}} Quellen",
|
||||
"{{COUNT}} words": "{{COUNT}} Wörter",
|
||||
"{{COUNT}}d_time_ago": "{{COUNT}} T",
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
"Allow File Upload": "Dateiupload erlauben",
|
||||
"Allow Multiple Models in Chat": "Mehrere Modelle im Chat erlauben",
|
||||
"Allow non-local voices": "Nicht-lokale Stimmen erlauben",
|
||||
"Allow public write access": "",
|
||||
"Allow public write access": "Erlaubte öffentlichen schreibenden Zugang",
|
||||
"Allow Rate Response": "Antwortbewertung erlauben",
|
||||
"Allow Regenerate Response": "Antwort-Neugenerierung erlauben",
|
||||
"Allow Sharing With Users": "Erlaube Teilen mit Nutzern",
|
||||
|
|
@ -182,10 +182,11 @@
|
|||
"Are you sure you want to archive all chats? This action cannot be undone.": "Sind Sie sicher, dass Sie alle Chats archivieren wollen? Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
||||
"Are you sure you want to clear all memories? This action cannot be undone.": "Sind Sie sicher, dass Sie alle Erinnerungen löschen möchten? Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "Sind Sie sicher, dass Sie \"{{NAME}}\" löschen möchten?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "Sind Sie sicher, dass Sie alle Chats löschen wollen? Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
||||
"Are you sure you want to delete this channel?": "Sind Sie sicher, dass Sie diesen Kanal löschen möchten?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this memory? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "Möchten Sie diese Verbindung wirklich löschen? Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
||||
"Are you sure you want to delete this memory? This action cannot be undone.": "Möchten Sie diese Erinnerung wirklich löschen? Dieser Vorgang kann nicht rückgängig gemacht werden.",
|
||||
"Are you sure you want to delete this message?": "Sind Sie sicher, dass Sie diese Nachricht löschen möchten?",
|
||||
"Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Sind Sie sicher, dass Sie diese Version löschen wollen? Child-Versionen werden zu dem Parent dieser Version verlinkt.",
|
||||
"Are you sure you want to delete this?": "Sind Sie sicher, dass Sie das löschen wollen?",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Assistent",
|
||||
"Async Embedding Processing": "Asynchrone Embedding-Verarbeitung",
|
||||
"Attach File From Knowledge": "Datei aus Wissensspeicher anhängen",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Wissen anhängen",
|
||||
"Attach Notes": "Notizen anhängen",
|
||||
"Attach Webpage": "Webseite anhängen",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Basis-URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Basis-URL ist erforderlich.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Automatische Injektion von System-Werkzeugen bei nativen Funktionsaufrufen (z. B. Zeitstempel, Erinnerungen, Chatverlauf, Notizen etc.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Verfügbare Liste",
|
||||
"Available models": "Verfügbare Modelle",
|
||||
"Available Tools": "Verfügbare Werkzeuge",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Bevorzugung oder Benachteiligung spezifischer Token für die Antwortsteuerung. Bias-Werte werden zwischen -100 und 100 (inklusive) begrenzt. (Standard: keine)",
|
||||
"Brave": "Brave",
|
||||
"Brave Search API Key": "Brave Search API-Schlüssel",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Wissensbasen durchsuchen und abfragen",
|
||||
"Builtin Tools": "Eingebaute Werkzeuge",
|
||||
"Bullet List": "Aufzählungsliste",
|
||||
|
|
@ -331,10 +341,10 @@
|
|||
"Click here to upload a workflow.json file.": "Klicken Sie hier, um eine workflow.json hochzuladen.",
|
||||
"click here.": "hier klicken.",
|
||||
"Click on the user role button to change a user's role.": "Klicken Sie auf die Benutzerrolle, um sie zu ändern.",
|
||||
"Click to connect": "",
|
||||
"Click to connect": "Klicke zum Verbinden",
|
||||
"Click to copy ID": "Klicke um ID zu kopieren",
|
||||
"Client ID": "",
|
||||
"Client Secret": "",
|
||||
"Client ID": "Client ID",
|
||||
"Client Secret": "Client Secret",
|
||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Schreibzugriff auf Zwischenablage verweigert. Bitte prüfen Sie Ihre Browsereinstellungen.",
|
||||
"Clone": "Klonen",
|
||||
"Clone Chat": "Chat klonen",
|
||||
|
|
@ -383,10 +393,11 @@
|
|||
"Concurrent Requests": "Gleichzeitige Anfragen",
|
||||
"Config": "Konfiguration",
|
||||
"Config imported successfully": "Konfiguration erfolgreich importiert",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfigurieren",
|
||||
"Confirm": "Bestätigen",
|
||||
"Confirm Password": "Passwort bestätigen",
|
||||
"Confirm Prompt from Embed": "",
|
||||
"Confirm Prompt from Embed": "Bestätige den Prompt, den das Embed senden will",
|
||||
"Confirm your action": "Bitte bestätigen",
|
||||
"Confirm your new password": "Neues Passwort bestätigen",
|
||||
"Confirm Your Password": "Passwort bestätigen",
|
||||
|
|
@ -395,7 +406,7 @@
|
|||
"Connect to Open Terminal instances. All users will have access to file browsing and terminal tools through these servers.": "Verbinde zu Open Terminal Instanzen. AAlle Nutzer werden Zugriff auf die Dateien und Terminal Werkzeige durch diese Server bekommen.",
|
||||
"Connect to your own OpenAI compatible API endpoints.": "Verbinden Sie Ihre eigenen OpenAI-kompatiblen API-Endpunkte.",
|
||||
"Connect to your own OpenAPI compatible external tool servers.": "Verbinden Sie Ihre eigenen OpenAPI-kompatiblen externen Tool-Server.",
|
||||
"Connected ({{type}})": "",
|
||||
"Connected ({{type}})": "Verbunden ({{type}})",
|
||||
"Connection failed": "Verbindung fehlgeschlagen",
|
||||
"Connection successful": "Verbindung erfolgreich",
|
||||
"Connection Type": "Verbindungstyp",
|
||||
|
|
@ -436,7 +447,7 @@
|
|||
"Copying to clipboard was successful!": "Erfolgreich in die Zwischenablage kopiert!",
|
||||
"CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS muss vom Anbieter korrekt konfiguriert sein, um Anfragen von Open WebUI zuzulassen.",
|
||||
"Could not read file.": "Datei konnte nicht gelesen werden.",
|
||||
"CPU": "",
|
||||
"CPU": "CPU",
|
||||
"Create": "Erstellen",
|
||||
"Create a knowledge base": "Wissensspeicher erstellen",
|
||||
"Create a model": "Modell erstellen",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Neuen Geheimschlüssel erstellen",
|
||||
"Create note": "Notiz erstellen",
|
||||
"Create Note": "Notiz erstellen",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Erstellen Sie Ihre erste Notiz durch Klick auf das Plus-Symbol unten.",
|
||||
"Created at": "Erstellt am",
|
||||
"Created At": "Erstellt am",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Datenkontrolle",
|
||||
"Database": "Datenbank",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "TT.MM.JJJJ",
|
||||
"DDGS Backend": "DDGS Backend",
|
||||
"December": "Dezember",
|
||||
|
|
@ -503,12 +516,13 @@
|
|||
"Delete All": "Alle löschen",
|
||||
"Delete All Chats": "Alle Chats löschen",
|
||||
"Delete all contents inside this folder": "Alle Inhalte in diesem Ordner löschen",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Chat löschen",
|
||||
"Delete chat?": "Chat löschen?",
|
||||
"Delete File": "Datei löschen",
|
||||
"Delete folder?": "Ordner löschen?",
|
||||
"Delete function?": "Funktion löschen?",
|
||||
"Delete Memory?": "",
|
||||
"Delete Memory?": "Erinnerung löschen?",
|
||||
"Delete Message": "Nachricht löschen",
|
||||
"Delete message?": "Nachricht löschen?",
|
||||
"Delete Model": "Modell löschen",
|
||||
|
|
@ -522,7 +536,7 @@
|
|||
"Deleted": "Gelöscht",
|
||||
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} gelöscht",
|
||||
"Deleted {{name}}": "{{name}} gelöscht",
|
||||
"Deleted {{ok}} of {{total}} items": "",
|
||||
"Deleted {{ok}} of {{total}} items": "{{ok}} von {{total}} Einträgen gelöscht",
|
||||
"Deleted User": "Gelöschter Benutzer",
|
||||
"Deployment names are required for Azure OpenAI": "Deployment-Namen sind für Azure OpenAI erforderlich",
|
||||
"Desc": "Absteigend",
|
||||
|
|
@ -531,7 +545,7 @@
|
|||
"Describe what changed...": "Beschreibe was sich verändert hat...",
|
||||
"Describe your knowledge base and objectives": "Beschreiben Sie Ihren Wissensspeicher und Ziele",
|
||||
"Description": "Beschreibung",
|
||||
"Deselect": "",
|
||||
"Deselect": "Abwählen",
|
||||
"Detect Artifacts Automatically": "Artefakte automatisch erkennen",
|
||||
"Dictate": "Diktieren",
|
||||
"Didn't fully follow instructions": "Anweisungen nicht vollständig befolgt",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "Gleichzeitige Embedding Anfragen",
|
||||
"Embedding Model": "Embedding-Modell",
|
||||
"Embedding Model Engine": "Embedding-Modell-Engine",
|
||||
"Emojis": "",
|
||||
"Empty message": "Leere Nachricht",
|
||||
"Enable All": "Alle aktivieren",
|
||||
"Enable API Keys": "API-Schlüssel aktivieren",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "Perplexity Search API-URL eingeben",
|
||||
"Enter Playwright Timeout": "Playwright-Timeout eingeben",
|
||||
"Enter Playwright WebSocket URL": "Playwright WebSocket-URL eingeben",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Proxy-URL eingeben (z. B. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Reasoning Effort eingeben",
|
||||
"Enter Score": "Wertung eingeben",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "System-Prompt hier eingeben",
|
||||
"Enter Tavily API Key": "Tavily API-Schlüssel eingeben",
|
||||
"Enter Tavily Extract Depth": "Tavily Extraktionstiefe eingeben",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Öffentliche URL Ihrer WebUI eingeben. Diese wird für Links in Benachrichtigungen verwendet.",
|
||||
"Enter the URL of the function to import": "URL der zu importierenden Funktion eingeben",
|
||||
"Enter the URL to import": "URL zum Importieren eingeben",
|
||||
|
|
@ -794,13 +811,14 @@
|
|||
"Enter Your Username": "Ihren Benutzernamen eingeben",
|
||||
"Enter your webhook URL": "Webhook-URL eingeben",
|
||||
"Entra ID": "Entra ID",
|
||||
"Environment Variables": "",
|
||||
"Ephemeral": "",
|
||||
"Environment Variables": "Umgebungsvariablen",
|
||||
"Ephemeral": "Ephemeral",
|
||||
"Error": "Fehler",
|
||||
"ERROR": "FEHLER",
|
||||
"Error accessing directory": "Fehler beim Zugriff auf das Verzeichnis",
|
||||
"Error accessing Google Drive: {{error}}": "Fehler beim Zugriff auf Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Fehler beim Zugriff auf Mediengeräte.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Fehler beim Starten der Aufnahme.",
|
||||
"Error unloading model: {{error}}": "Fehler beim Entladen des Modells: {{error}}",
|
||||
"Error uploading file: {{error}}": "Fehler beim Hochladen der Datei: {{error}}",
|
||||
|
|
@ -818,12 +836,13 @@
|
|||
"Execute code": "Code ausführen",
|
||||
"Execute code for analysis": "Code zur Analyse ausführen",
|
||||
"Executing **{{NAME}}**...": "Führe **{{NAME}}** aus...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Ausklappen",
|
||||
"Experimental": "Experimentell",
|
||||
"Explain": "Erklären",
|
||||
"Explore the cosmos": "Den Kosmos erkunden",
|
||||
"Explored": "",
|
||||
"Exploring": "",
|
||||
"Explored": "Untersucht: ",
|
||||
"Exploring": "Untersuche",
|
||||
"Export": "Exportieren",
|
||||
"Export All Archived Chats": "Alle archivierten Chats exportieren",
|
||||
"Export All Chats (All Users)": "Alle Chats exportieren (Alle Benutzer)",
|
||||
|
|
@ -874,7 +893,7 @@
|
|||
"Failed to save connections": "Verbindungen konnten nicht gespeichert werden",
|
||||
"Failed to save conversation": "Unterhaltung konnte nicht gespeichert werden",
|
||||
"Failed to save models configuration": "Modellkonfiguration konnte nicht gespeichert werden",
|
||||
"Failed to save policy: {{error}}": "",
|
||||
"Failed to save policy: {{error}}": "Fehler beim Speichern der Policy: {{error}}",
|
||||
"Failed to save terminal servers": "Terminal Server konnten nicht gespeichert werden",
|
||||
"Failed to unshare chat.": "Chat-Freigabe konnte nicht entfernt werden",
|
||||
"Failed to update settings": "Einstellungen konnten nicht aktualisiert werden",
|
||||
|
|
@ -890,7 +909,7 @@
|
|||
"Feedback History": "Feedback-Verlauf",
|
||||
"Feel free to add specific details": "Fügen Sie gerne Details hinzu",
|
||||
"Female": "Weiblich",
|
||||
"Fetch URL Content Length Limit": "",
|
||||
"Fetch URL Content Length Limit": "Max. Inhaltslänge für Fetch URL",
|
||||
"File": "Datei",
|
||||
"File added successfully.": "Datei erfolgreich hinzugefügt.",
|
||||
"File attached to chat": "Datei in Chat hinzugefügt",
|
||||
|
|
@ -945,7 +964,7 @@
|
|||
"Format Lines": "Zeilen formatieren",
|
||||
"Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "Formatiert Zeilen in der Ausgabe (z. B. Mathe, Stile). Standard: False.",
|
||||
"Formatting may be inconsistent from source.": "Formatierung kann von der Quelle abweichen.",
|
||||
"Forward": "",
|
||||
"Forward": "Weiterleiten",
|
||||
"Forwards system user OAuth access token to authenticate": "Leitet OAuth-Zugriffstoken des Systembenutzers zur Authentifizierung weiter",
|
||||
"Forwards system user session credentials to authenticate": "Leitet Sitzungsdaten des Systembenutzers zur Authentifizierung weiter",
|
||||
"Full Context Mode": "Vollkontext-Modus",
|
||||
|
|
@ -1033,7 +1052,7 @@
|
|||
"ID": "ID",
|
||||
"ID cannot contain \":\" or \"|\" characters": "ID darf keine \":\" oder \"|\" Zeichen enthalten",
|
||||
"ID copied to clipboard": "ID in die Zwischenablage kopiert",
|
||||
"Idle Timeout": "",
|
||||
"Idle Timeout": "Inaktivitäts-Timeout",
|
||||
"iframe Sandbox Allow Forms": "iFrame Sandbox: Formulare erlauben",
|
||||
"iframe Sandbox Allow Same Origin": "iFrame Sandbox: Gleichen Ursprung erlauben",
|
||||
"Ignite curiosity": "Neugier wecken",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Vorschlags-Prompt in Eingabe einfügen",
|
||||
"Install from Github URL": "Von GitHub-URL installieren",
|
||||
"Instant Auto-Send After Voice Transcription": "Nach Sprachtranskription sofort senden",
|
||||
"Instructions": "",
|
||||
"Integration": "Integration",
|
||||
"Integrations": "Integrationen",
|
||||
"Interface": "Benutzeroberfläche",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "Letzte 90 Tage",
|
||||
"Last Active": "Zuletzt aktiv",
|
||||
"Last Modified": "Zuletzt geändert",
|
||||
"Last ran": "",
|
||||
"Last reply": "Letzte Antwort",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP-Server aktualisiert",
|
||||
|
|
@ -1204,7 +1225,7 @@
|
|||
"Max Speakers": "Max. Sprecher",
|
||||
"Max Upload Count": "Max. Anzahl Uploads",
|
||||
"Max Upload Size": "Max. Uploadgröße",
|
||||
"Maximum characters to return from fetched URLs. Leave empty for no limit.": "",
|
||||
"Maximum characters to return from fetched URLs. Leave empty for no limit.": "Maximale Zeichenanzahl für Fetch URL-Inhalte. Leer lassen für unbegrenzt.",
|
||||
"Maximum number of files allowed per folder.": "Maximale Anzahl der pro Ordner erlaubten Dateien.",
|
||||
"Maximum number of files per folder is {{max}}.": "Die maximale Anzahl der Dateien pro Ordner ist {{max}}.",
|
||||
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es können maximal 3 Modelle gleichzeitig heruntergeladen werden. Bitte versuchen Sie es später erneut.",
|
||||
|
|
@ -1236,7 +1257,7 @@
|
|||
"Microsoft OneDrive": "Microsoft OneDrive",
|
||||
"Microsoft OneDrive (personal)": "Microsoft OneDrive (persönlich)",
|
||||
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (Arbeit/Schule)",
|
||||
"min": "",
|
||||
"min": "min",
|
||||
"MinerU": "MinerU",
|
||||
"MinerU API Key required for Cloud API mode.": "MinerU-API-Schlüssel für den Cloud-API-Modus erforderlich.",
|
||||
"Mistral OCR": "Mistral OCR",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Modell '{{modelName}}' wurde erfolgreich heruntergeladen.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Modell '{{modelTag}}' befindet sich bereits in der Warteschlange.",
|
||||
"Model {{modelId}} not found": "Modell {{modelId}} nicht gefunden",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Das Modell {{modelName}} unterstützt keine Bilderkennung",
|
||||
"Model {{name}} is now {{status}}": "Modell {{name}} ist jetzt {{status}}",
|
||||
"Model {{name}} is now hidden": "Modell {{name}} ist jetzt ausgeblendet",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Name",
|
||||
"Name and ID are required, please fill them out": "Name und ID sind erforderlich, bitte füllen Sie diese aus",
|
||||
"Name your knowledge base": "Benennen Sie Ihren Wissensspeicher",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Nativ",
|
||||
"Never": "",
|
||||
"New": "Neu",
|
||||
"New Automation": "",
|
||||
"New Button": "Neuer Button",
|
||||
"New Chat": "Neuer Chat",
|
||||
"New File": "Neue Datei",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "Neuer Webhook",
|
||||
"new-channel": "neuer-kanal",
|
||||
"Next message": "Nächste Nachricht",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "Keine Freigaben konfiguriert. Nur für Sie zugänglich.",
|
||||
"No activity data": "Keine Aktivitätsdaten",
|
||||
"No authentication": "Keine Authentifizierung",
|
||||
"No automations found": "",
|
||||
"No chats found": "Keine Chats gefunden",
|
||||
"No chats found for this user.": "Keine Chats für diesen Benutzer gefunden.",
|
||||
"No chats found.": "Keine Chats gefunden.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "Keine Daten",
|
||||
"No data found": "Keine Daten gefunden",
|
||||
"No distance available": "Keine Distanz verfügbar",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "Ein fehlendes Ablaufdatum kann Sicherheitsrisiken bergen.",
|
||||
"No feedback found": "Kein Feedback gefunden",
|
||||
"No file selected": "Keine Datei ausgewählt",
|
||||
|
|
@ -1342,7 +1370,7 @@
|
|||
"No kernel": "Kein Kernel",
|
||||
"No knowledge bases found.": "Keine Wissensspeicher gefunden.",
|
||||
"No knowledge found": "Kein Wissen gefunden",
|
||||
"No limit": "",
|
||||
"No limit": "Kein Limit",
|
||||
"No memories to clear": "Keine Erinnerungen zum Löschen",
|
||||
"No model IDs": "Keine Modell-IDs",
|
||||
"No models available": "Keine Modelle verfügbar",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Inhaltlich nicht korrekt",
|
||||
"Not helpful": "Nicht hilfreich",
|
||||
"Not Registered": "Nicht registriert",
|
||||
"Not scheduled": "",
|
||||
"Note": "Notiz",
|
||||
"Note deleted successfully": "Notiz erfolgreich gelöscht",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Hinweis: Wenn Sie eine Mindestpunktzahl festlegen, liefert die Suche nur Dokumente zurück, deren Punktzahl größer oder gleich diesem Wert ist.",
|
||||
|
|
@ -1386,7 +1415,7 @@
|
|||
"November": "November",
|
||||
"OAuth": "OAuth",
|
||||
"OAuth 2.1": "OAuth 2.1",
|
||||
"OAuth 2.1 (Static)": "",
|
||||
"OAuth 2.1 (Static)": "OAuth 2.1 (Statisch)",
|
||||
"OAuth ID": "OAuth-ID",
|
||||
"October": "Oktober",
|
||||
"Off": "Aus",
|
||||
|
|
@ -1416,7 +1445,7 @@
|
|||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Sie verwenden eine nicht unterstützte Methode (nur Frontend). Bitte stellen Sie die WebUI über das Backend bereit.",
|
||||
"Open file": "Datei öffnen",
|
||||
"Open in full screen": "Im Vollbildmodus öffnen",
|
||||
"Open in new tab": "",
|
||||
"Open in new tab": "In neuem Tab öffnen",
|
||||
"Open link": "Link öffnen",
|
||||
"Open modal to configure connection": "Verbindungskonfiguration öffnen",
|
||||
"Open Modal To Manage Floating Quick Actions": "Verwaltung der Schnellaktionen öffnen",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "oder",
|
||||
"Ordered List": "Nummerierte Liste",
|
||||
"Other": "Andere",
|
||||
"out of": "",
|
||||
"Output": "Ausgabe",
|
||||
"OUTPUT": "AUSGABE",
|
||||
"Output format": "Ausgabeformat",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Passwort",
|
||||
"Passwords do not match.": "Die Passwörter stimmen nicht überein.",
|
||||
"Paste Large Text as File": "Großen Text als Datei einfügen",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF-Dokument (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Bilder aus PDFs extrahieren (OCR)",
|
||||
"PDF Loader Mode": "PDF Loader Modus",
|
||||
|
|
@ -1477,7 +1508,7 @@
|
|||
"Perplexity Model": "Perplexity-Modell",
|
||||
"Perplexity Search API URL": "Perplexity Search API-URL",
|
||||
"Perplexity Search Context Usage": "Perplexity-Suchkontext-Nutzung",
|
||||
"Persistent": "",
|
||||
"Persistent": "Persistent",
|
||||
"Personalization": "Personalisierung",
|
||||
"Pin": "Anheften",
|
||||
"Pinned": "Angeheftet",
|
||||
|
|
@ -1497,7 +1528,7 @@
|
|||
"Playwright Timeout (ms)": "Playwright Timeout (ms)",
|
||||
"Playwright WebSocket URL": "Playwright WebSocket-URL",
|
||||
"Please carefully review the following warnings:": "Bitte lesen Sie die folgenden Warnungen sorgfältig durch:",
|
||||
"Please connect all required integrations before sending a message": "",
|
||||
"Please connect all required integrations before sending a message": "Bitte verbinde alle erforderlichen Integrationen, bevor du eine Nachricht sendest",
|
||||
"Please do not close the settings page while loading the model.": "Bitte schließen Sie die Einstellungsseite nicht, während das Modell lädt.",
|
||||
"Please enter a message or attach a file.": "Bitte geben Sie eine Nachricht ein oder hängen Sie eine Datei an.",
|
||||
"Please enter a prompt": "Bitte geben Sie einen Prompt ein",
|
||||
|
|
@ -1506,7 +1537,7 @@
|
|||
"Please enter a valid path": "Bitte geben Sie einen gültigen Pfad ein",
|
||||
"Please enter a valid URL": "Bitte geben Sie eine gültige URL ein",
|
||||
"Please enter a valid URL.": "Bitte geben Sie eine gültige URL ein.",
|
||||
"Please enter Client ID and Client Secret": "",
|
||||
"Please enter Client ID and Client Secret": "Bitte Client-ID und Client-Secret eingeben",
|
||||
"Please fill in all fields.": "Bitte füllen Sie alle Felder aus.",
|
||||
"Please register the OAuth client": "Bitte registrieren Sie den OAuth-Client",
|
||||
"Please save the connection to persist the OAuth client information and do not change the ID": "Bitte speichern Sie die Verbindung, um die OAuth-Client-Informationen zu sichern, und ändern Sie die ID nicht.",
|
||||
|
|
@ -1516,7 +1547,7 @@
|
|||
"Please select a valid JSON file": "Bitte wählen Sie eine gültige JSON-Datei aus",
|
||||
"Please select at least one user for Direct Message channel.": "Bitte wählen Sie mindestens einen Benutzer für den Direktnachrichten-Kanal aus.",
|
||||
"Please wait until all files are uploaded.": "Bitte warten Sie, bis alle Dateien hochgeladen sind.",
|
||||
"Policy ID": "",
|
||||
"Policy ID": "Policy-ID",
|
||||
"Port": "Port",
|
||||
"Ports": "Ports",
|
||||
"Positive attitude": "Positive Einstellung",
|
||||
|
|
@ -1553,8 +1584,8 @@
|
|||
"Querying": "Frage ab...",
|
||||
"Quick Actions": "Schnellaktionen",
|
||||
"RAG Template": "RAG-Vorlage",
|
||||
"Ran {{COUNT}} analyses": "",
|
||||
"Ran {{COUNT}} analysis": "",
|
||||
"Ran {{COUNT}} analyses": "{{COUNT}} Analyse durchgeführt",
|
||||
"Ran {{COUNT}} analysis": "{{COUNT}} Analysen durchgeführt",
|
||||
"Rate {{rating}} out of 10": "Bewerte {{rating}} von 10",
|
||||
"Rating": "Bewertung",
|
||||
"Re-rank models by topic similarity": "Modelle nach thematischer Ähnlichkeit neu ordnen",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "Nachdenken",
|
||||
"Reasoning Effort": "Reasoning Effort",
|
||||
"Reasoning Tags": "Reasoning Tags",
|
||||
"Recently Used": "",
|
||||
"Record": "Aufnehmen",
|
||||
"Record voice": "Stimme aufnehmen",
|
||||
"Redirecting you to Open WebUI Community": "Sie werden zur Open WebUI Community weitergeleitet",
|
||||
|
|
@ -1598,9 +1630,10 @@
|
|||
"Remove image": "Bild entfernen",
|
||||
"Remove Model": "Modell entfernen",
|
||||
"Rename": "Umbenennen",
|
||||
"Renamed to {{name}}": "",
|
||||
"Renamed to {{name}}": "In {{name}} umbenannt",
|
||||
"Render Markdown in Previews": "Markdown in der Vorschau rendern",
|
||||
"Reorder Models": "Modelle neu anordnen",
|
||||
"Repeats": "",
|
||||
"Reply": "Antworten",
|
||||
"Reply in Thread": "Im Thread antworten",
|
||||
"Reply to thread...": "Im Thread antworten...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Ausführen",
|
||||
"Run All": "Alle starten",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Läuft",
|
||||
"Running...": "Läuft...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Führt Embedding-Aufgaben parallel aus, um die Verarbeitung zu beschleunigen. Deaktivieren Sie dies, falls Rate-Limits oder Ressourcenprobleme auftreten.",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Chat speichern",
|
||||
"Saved": "Gespeichert",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Das direkte Speichern von Chat-Protokollen im Browserspeicher wird nicht mehr unterstützt. Bitte nehmen Sie sich einen Moment Zeit, um Ihre Chat-Protokolle herunterzuladen und zu löschen, indem Sie auf die Schaltfläche unten klicken. Sie können Ihre Chat-Protokolle später problemlos über das Backend wieder importieren.",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Bei Zweigwechsel scrollen",
|
||||
"Search": "Suchen",
|
||||
"Search a model": "Ein Modell suchen",
|
||||
"Search all emojis": "Alle Emojis durchsuchen",
|
||||
"Search and manage user memories": "Suche und manage Benutzer Erinnerungen",
|
||||
"Search and view user chat history": "Suche und sehe die Chat History des Benutzers ein",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Suchbasis",
|
||||
"Search channels and channel messages": "Suche Kanäle und Kanalnachrichten",
|
||||
"Search Chats": "Chats durchsuchen...",
|
||||
|
|
@ -1664,7 +1702,7 @@
|
|||
"Search Groups": "Gruppen durchsuchen",
|
||||
"Search In Models": "In Modellen suchen...",
|
||||
"Search Knowledge": "Wissen durchsuchen",
|
||||
"Search Memories": "",
|
||||
"Search Memories": "Erinnerungen durchsuchen",
|
||||
"Search Models": "Modelle durchsuchen...",
|
||||
"Search Notes": "Notizen durchsuchen...",
|
||||
"Search options": "Suchoptionen",
|
||||
|
|
@ -1706,7 +1744,7 @@
|
|||
"Select a theme": "Wählen Sie ein Design",
|
||||
"Select a tool": "Wählen Sie ein Werkzeug",
|
||||
"Select a voice": "Wählen Sie eine Stimme",
|
||||
"Select All": "",
|
||||
"Select All": "Alle auswählen",
|
||||
"Select an auth method": "Wählen Sie eine Authentifizierungsmethode",
|
||||
"Select an embedding model engine": "Wählen Sie eine Embedding-Modell-Engine",
|
||||
"Select an engine": "Wählen Sie eine Engine",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "Wählen Sie, wie der Nachrichtentext für TTS-Anfragen aufgeteilt werden soll",
|
||||
"Select Knowledge": "Wissensspeicher auswählen",
|
||||
"Select Method": "Methode auswählen",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Wählen Sie nur ein Modell zum Aufrufen aus",
|
||||
"Select view": "Ansicht wählen",
|
||||
"Selected model: {{modelName}}": "Ausgewähltes Modell: {{modelName}}",
|
||||
|
|
@ -1735,7 +1774,7 @@
|
|||
"Serper API Key": "Serper-API-Schlüssel",
|
||||
"Serply API Key": "Serply-API-Schlüssel",
|
||||
"Serpstack API Key": "Serpstack-API-Schlüssel",
|
||||
"Server connection failed": "",
|
||||
"Server connection failed": "Verbindung zum Server fehlgeschlagen",
|
||||
"Server connection verified": "Serververbindung überprüft",
|
||||
"Session": "Sitzung",
|
||||
"Set as default": "Als Standard festlegen",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Beginn des Kanals",
|
||||
"Start Tag": "Start-Tag",
|
||||
"Starting kernel...": "Kernel starten...",
|
||||
"State": "",
|
||||
"Status": "Status",
|
||||
"Status cleared successfully": "Status erfolgreich gelöscht",
|
||||
"Status updated successfully": "Status erfolgreich aktualisiert",
|
||||
|
|
@ -1837,7 +1877,7 @@
|
|||
"Stop Download": "Download stoppen",
|
||||
"Stop Generating": "Generierung stoppen",
|
||||
"Stop Sequence": "Stoppsequenz",
|
||||
"Storage": "",
|
||||
"Storage": "Speicher",
|
||||
"Stream Chat Response": "Chat-Antwort streamen",
|
||||
"Stream Delta Chunk Size": "Stream-Delta-Chunk-Größe",
|
||||
"Streamable HTTP": "Streambares HTTP",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "Mit dem Modell sprechen",
|
||||
"Tap to interrupt": "Zum Unterbrechen tippen",
|
||||
"Task List": "Aufgabenliste",
|
||||
"Task Management": "",
|
||||
"Task Model": "Aufgabenmodell",
|
||||
"Tasks": "Aufgaben",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily-API-Schlüssel",
|
||||
"Tavily Extract Depth": "Tavily Extraktionstiefe",
|
||||
"Tell us more:": "Erzählen Sie uns mehr:",
|
||||
|
|
@ -1936,7 +1978,7 @@
|
|||
"This will delete all models including custom models and cannot be undone.": "Dies löscht alle Modelle, einschließlich benutzerdefinierter Modelle, und kann nicht rückgängig gemacht werden.",
|
||||
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Dadurch wird der Wissensspeicher zurückgesetzt und alle Dateien werden synchronisiert. Möchten Sie fortfahren?",
|
||||
"Thorough explanation": "Ausführliche Erklärung",
|
||||
"Thought": "",
|
||||
"Thought": "Gedanke",
|
||||
"Thought for {{DURATION}}": "Nachgedacht für {{DURATION}}",
|
||||
"Thought for {{DURATION}} seconds": "Nachgedacht für {{DURATION}} Sekunden",
|
||||
"Thought for less than a second": "Für weniger als eine Sekunde nachgedacht",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika-Server-URL erforderlich.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Zeit & Berechnung",
|
||||
"Timeout": "Timeout",
|
||||
"Title": "Titel",
|
||||
|
|
@ -1962,10 +2005,11 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Um Toolkits auszuwählen, fügen Sie sie zuerst dem Arbeitsbereich \"Werkzeuge\" hinzu.",
|
||||
"Toast notifications for new updates": "Toast-Benachrichtigungen für neue Updates",
|
||||
"Today": "Heute",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Heute um {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "{{COUNT}} Quellen umschalten",
|
||||
"Toggle 1 source": "Eine Quelle umschalten",
|
||||
"Toggle details": "",
|
||||
"Toggle details": "Details umschalten",
|
||||
"Toggle Dictation": "Diktieren umschalten",
|
||||
"Toggle Sidebar": "Seitenleiste umschalten",
|
||||
"Toggle status history": "Status Updates umschalten",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "Warte auf Datei upload...",
|
||||
"Warning": "Warnung",
|
||||
"Warning:": "Warnung:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Warnung: Wenn Sie dies aktivieren, können Benutzer beliebigen Code auf den Server hochladen.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Warnung: Die Jupyter-Ausführung ermöglicht beliebige Codeausführung und birgt erhebliche Sicherheitsrisiken – gehen Sie mit äußerster Vorsicht vor.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "Breite",
|
||||
"Wikipedia": "Wikipedia",
|
||||
"Won": "Gewonnen",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Funktioniert zusammen mit Top-K. Ein höherer Wert (z. B. 0.95) führt zu vielfältigerem Text, während ein niedrigerer Wert (z. B. 0.5) fokussierteren und konservativeren Text erzeugt.",
|
||||
"Workspace": "Arbeitsbereich",
|
||||
"Workspace Permissions": "Arbeitsbereichsberechtigungen",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Base URL is required.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "Confirm Password",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Created at",
|
||||
"Created At": "",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Database",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "",
|
||||
"Embedding Model Engine": "",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Much Experiment",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Interface",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' has been successfully downloaded.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' is already in queue for downloading.",
|
||||
"Model {{modelId}} not found": "Model {{modelId}} not found",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "",
|
||||
"Model {{name}} is now {{status}}": "",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Name",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "New Bark",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "or",
|
||||
"Ordered List": "",
|
||||
"Other": "",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Barkword",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "",
|
||||
"PDF Extract Images (OCR)": "PDF Extract Wowmages (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Record Bark",
|
||||
"Redirecting you to Open WebUI Community": "Redirecting you to Open WebUI Community",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "Running... wow",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Saving chat logs in browser storage not support anymore. Pls download and delete your chat logs by click button below. Much easy re-import to backend through",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Search very search",
|
||||
"Search a model": "",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Start of channel",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Title very title",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "",
|
||||
"Warning:": "Much warning:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Web very web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Βοηθός",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Προσθήκη Knowledge",
|
||||
"Attach Notes": "Προσθήκη Σημειώσεων",
|
||||
"Attach Webpage": "Προσθήκη ιστότοπου",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "Βασικό URL AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "Απαιτείται το Βασικό URL AUTOMATIC1111.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Διαθέσιμη λίστα",
|
||||
"Available models": "",
|
||||
"Available Tools": "Διαθέσιμα Εργαλεία",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Κλειδί API Brave Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Ταυτόχρονες Αιτήσεις",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Διαμόρφωση",
|
||||
"Confirm": "Επιβεβαίωση",
|
||||
"Confirm Password": "Επιβεβαίωση Κωδικού",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Δημιουργία νέου μυστικού κλειδιού",
|
||||
"Create note": "",
|
||||
"Create Note": "Δημιουργία Σημείωσης",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Δημιουργήθηκε στις",
|
||||
"Created At": "Δημιουργήθηκε στις",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Έλεγχοι Δεδομένων",
|
||||
"Database": "Βάση Δεδομένων",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "ΗΗ/ΜΜ/ΕΕΕΕ",
|
||||
"DDGS Backend": "",
|
||||
"December": "Δεκέμβριος",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Διαγραφή Όλων των Συνομιλιών",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Διαγραφή Συνομιλίας",
|
||||
"Delete chat?": "Διαγραφή συνομιλίας;",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Μοντέλο Ενσωμάτωσης",
|
||||
"Embedding Model Engine": "Μηχανή Μοντέλου Ενσωμάτωσης",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "Εισάγετε το χρονικό όριο του Playwright",
|
||||
"Enter Playwright WebSocket URL": "Εισάγετε το URL WebSocket του Playwright",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Εισάγετε URL διακομιστή μεσολάβησης (π.χ. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "Εισάγετε το Score",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Εισάγετε την προτροπή συστήματος εδώ",
|
||||
"Enter Tavily API Key": "Εισάγετε το Κλειδί API Tavily",
|
||||
"Enter Tavily Extract Depth": "Εισάγετε το βάθος εξαγωγής του Tavily",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Εισάγετε το δημόσιο URL του WebUI σας. Αυτό το URL θα χρησιμοποιηθεί για να παράξει συνδέσμους στις ειδοποιήσεις.",
|
||||
"Enter the URL of the function to import": "Εισάγετε το URL της συνάρτησης για εισαγωγή",
|
||||
"Enter the URL to import": "Εισάγετε το URL για εισαγωγή",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Εκτελέστε κώδικα για ανάλυση",
|
||||
"Executing **{{NAME}}**...": "Εκτέλεση του **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Επέκταση",
|
||||
"Experimental": "Πειραματικό",
|
||||
"Explain": "Επεξήγηση",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Εγκατάσταση από URL Github",
|
||||
"Instant Auto-Send After Voice Transcription": "Άμεση Αυτόματη Αποστολή μετά τη μεταγραφή φωνής",
|
||||
"Instructions": "",
|
||||
"Integration": "Ενσωμάτωση",
|
||||
"Integrations": "Ενσωματώσεις",
|
||||
"Interface": "Διεπαφή Χρήστη",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Τελευταία Ενεργή",
|
||||
"Last Modified": "Τελευταία Τροποποίηση",
|
||||
"Last ran": "",
|
||||
"Last reply": "Τελευταία απάντηση",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Ο διακομιστής LDAP ενημερώθηκε",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Το μοντέλο '{{modelName}}' κατεβάστηκε με επιτυχία.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Το μοντέλο '{{modelTag}}' βρίσκεται ήδη στην ουρά για λήψη.",
|
||||
"Model {{modelId}} not found": "Το μοντέλο {{modelId}} δεν βρέθηκε",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Το μοντέλο {{modelName}} δεν έχει δυνατότητα όρασης",
|
||||
"Model {{name}} is now {{status}}": "Το μοντέλο {{name}} είναι τώρα {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Όνομα",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Ονομάστε τη βάση γνώσης σας",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Νέα Συνομιλία",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "Επόμενο μήνυμα",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Δεν υπάρχει διαθέσιμη απόσταση",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Δεν έχει επιλεγεί αρχείο",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Δεν είναι γεγονότα",
|
||||
"Not helpful": "Δεν είναι χρήσιμο",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "Σημείωση",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Σημείωση: Αν ορίσετε ένα ελάχιστο score, η αναζήτηση θα επιστρέψει μόνο έγγραφα με score μεγαλύτερο ή ίσο με το ελάχιστο score.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "ή",
|
||||
"Ordered List": "",
|
||||
"Other": "Άλλο",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "ΕΞΟΔΟΣ",
|
||||
"Output format": "Μορφή εξόδου",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Κωδικός",
|
||||
"Passwords do not match.": "Οι κωδικοί δεν ταιριάζουν",
|
||||
"Paste Large Text as File": "Επικόλληση Μεγάλου Κειμένου ως Αρχείο",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Έγγραφο PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Εξαγωγή Εικόνων PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Εγγραφή φωνής",
|
||||
"Redirecting you to Open WebUI Community": "Μετακατεύθυνση στην Κοινότητα OpenWebUI",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Επαναταξινόμηση Μοντέλων",
|
||||
"Repeats": "",
|
||||
"Reply": "Απάντηση",
|
||||
"Reply in Thread": "Απάντηση στο Νήμα Συζήτησης",
|
||||
"Reply to thread...": "Απάντηση στο νήμα συζήτησης...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Εκτέλεση",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Εκτέλεση",
|
||||
"Running...": "Εκτέλεση...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Αποθήκευση Συνομιλίας",
|
||||
"Saved": "Αποθηκευμένο",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Η αποθήκευση των αρχείων συνομιλίας απευθείας στη μνήμη αποθήκευσης του προγράμματος περιήγησής σας δεν υποστηρίζεται πλέον. Παρακαλώ αφιερώστε λίγο χρόνο να κατεβάσετε και να διαγράψετε τα αρχεία συνομιλίας σας κάνοντας κλικ στο κουμπί παρακάτω. Μην ανησυχείτε, μπορείτε εύκολα να επαναφέρετε τα αρχεία συνομιλιών σας στο backend μέσω",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Αναζήτηση",
|
||||
"Search a model": "Αναζήτηση μοντέλου",
|
||||
"Search all emojis": "Αναζήτησε όλα τα emojis",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Βάση Αναζήτησης",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Αναζήτηση Συνομιλιών",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "Επιλέξτε Knowledge",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Επιλέξτε μόνο ένα μοντέλο για κλήση",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Αρχή του καναλιού",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Πατήστε για παύση",
|
||||
"Task List": "Λίστα Εργασιών",
|
||||
"Task Management": "",
|
||||
"Task Model": "Μοντέλο Εργασίας",
|
||||
"Tasks": "Εργασίες",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Κλειδί API Tavily",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Πείτε μας περισσότερα:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "Απαιτείται το URL διακομιστή Tika.",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Τίτλος",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Για να επιλέξετε toolkits εδώ, προσθέστε τα πρώτα στον χώρο εργασίας \"Εργαλεία\".",
|
||||
"Toast notifications for new updates": "Ειδοποιήσεις Toast για νέες ενημερώσεις",
|
||||
"Today": "Σήμερα",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Σήμερα στις {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Προειδοποίηση",
|
||||
"Warning:": "Προειδοποίηση:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Προειδοποίηση: Η ενεργοποίηση αυτού θα επιτρέψει στους χρήστες να ανεβάσουν αυθαίρετο κώδικα στον διακομιστή.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Προειδοποίηση: Η εκτέλεση του Jupyter επιτρέπει την εκτέλεση αυθαίρετου κώδικα, γεγονός που θέτει σοβαρούς κινδύνους ασφαλεία - προχωρήστε με εξαιρετική προσοχή.",
|
||||
"Web": "Διαδίκτυο",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "Πλάτος",
|
||||
"Wikipedia": "",
|
||||
"Won": "Κέρδισε",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Χώρος Εργασίας",
|
||||
"Workspace Permissions": "Δικαιώματα Χώρου Εργασίας",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "",
|
||||
"AUTOMATIC1111 Base URL is required.": "",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Boosting or penalising specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "",
|
||||
"Created At": "",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "",
|
||||
"Embedding Model Engine": "",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "",
|
||||
"Model {{modelId}} not found": "",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "",
|
||||
"Model {{name}} is now {{status}}": "",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "",
|
||||
"Ordered List": "",
|
||||
"Other": "",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "",
|
||||
"PDF Extract Images (OCR)": "",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "",
|
||||
"Redirecting you to Open WebUI Community": "",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "",
|
||||
"Search a model": "",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "",
|
||||
"Warning:": "",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "",
|
||||
"AUTOMATIC1111 Base URL is required.": "",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "",
|
||||
"Created At": "",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "",
|
||||
"Embedding Model Engine": "",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "",
|
||||
"Model {{modelId}} not found": "",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "",
|
||||
"Model {{name}} is now {{status}}": "",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "Next message",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "",
|
||||
"Ordered List": "",
|
||||
"Other": "",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "",
|
||||
"PDF Extract Images (OCR)": "",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "",
|
||||
"Redirecting you to Open WebUI Community": "",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "",
|
||||
"Search a model": "",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "",
|
||||
"Warning:": "",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "Asistente",
|
||||
"Async Embedding Processing": "Procesado Asíncrono al Incrustrar",
|
||||
"Attach File From Knowledge": "Adjuntar Archivo desde Conocimiento",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Adjuntar Conocimiento",
|
||||
"Attach Notes": "Adjuntar Notas",
|
||||
"Attach Webpage": "Adjuntar Página Web",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "URL Base de AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "la URL Base de AUTOMATIC1111 es necesaria.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Inyectar automáticamente herramientas del sistema en el modo de llamada de función nativa (ej.: marcas de tiempo, memoria, historial de chat, notas, etc.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Lista disponible",
|
||||
"Available models": "Modelos disponibles",
|
||||
"Available Tools": "Herramientas Disponibles",
|
||||
|
|
@ -251,6 +260,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",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Explorar y consultar bases de conocimiento",
|
||||
"Builtin Tools": "Herramientas Integradas",
|
||||
"Bullet List": "Lista de Viñetas",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Número de Solicitudes Concurrentes",
|
||||
"Config": "Config",
|
||||
"Config imported successfully": "Configuración importada correctamente",
|
||||
"Configuration": "",
|
||||
"Configure": "Configurar",
|
||||
"Confirm": "Confirmar",
|
||||
"Confirm Password": "Confirma Contraseña",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Crear Nueva Clave Secreta",
|
||||
"Create note": "Crear Nota",
|
||||
"Create Note": "Crear Nota",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Crea tu primera nota pulsando el botón + de abajo",
|
||||
"Created at": "Creado en",
|
||||
"Created At": "Creado En",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "Controles de Datos",
|
||||
"Database": "Base de datos",
|
||||
"Datalab Marker API": "API de Datalab Marker",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD/MM/YYYY",
|
||||
"DDGS Backend": "DDGS Backend",
|
||||
"December": "Diciembre",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"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 automation?": "",
|
||||
"Delete Chat": "Borrar Chat",
|
||||
"Delete chat?": "¿Borrar el chat?",
|
||||
"Delete File": "Borrar Fichero",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "Número de Peticiones Concurrentes en Incrustración",
|
||||
"Embedding Model": "Modelo de Incrustación",
|
||||
"Embedding Model Engine": "Motor del Modelo de Incrustación",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "Habilitar Todo",
|
||||
"Enable API Keys": "Habilitar Claves API",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "Ingresar URL API para la Búsqueda de Perplexity",
|
||||
"Enter Playwright Timeout": "Ingresar límite de tiempo de espera de Playwright",
|
||||
"Enter Playwright WebSocket URL": "Ingresar URL de WebSocket de Playwright",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Ingresar URL del proxy (p.ej. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Ingresar esfuerzo de razonamiento",
|
||||
"Enter Score": "Ingresar Puntuación",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "Ingresa aquí el indicador del sistema",
|
||||
"Enter Tavily API Key": "Ingresar Clave API de Tavily",
|
||||
"Enter Tavily Extract Depth": "Ingresar parámetro de Extract Depth de Taviliy",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Ingresar URL pública de WebUI. Esta URL se usará para generar enlaces en las notificaciones.",
|
||||
"Enter the URL of the function to import": "Ingresar la URL de la función a importar",
|
||||
"Enter the URL to import": "Ingresar la URL a importar",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "Error accediendo al directorio",
|
||||
"Error accessing Google Drive: {{error}}": "Error accediendo a Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Error accediendo a dispositivos de medios.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Error al comenzar la grabación.",
|
||||
"Error unloading model: {{error}}": "Error subiendo el modelo: {{error}}",
|
||||
"Error uploading file: {{error}}": "Error subiendo el archivo: {{error}}",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "Ejecuar código",
|
||||
"Execute code for analysis": "Ejecutar código para análisis",
|
||||
"Executing **{{NAME}}**...": "Ejecutando **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Expandir",
|
||||
"Experimental": "Experimental",
|
||||
"Explain": "Explicar",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Insertar Indicador Sugerido a la Entrada",
|
||||
"Install from Github URL": "Instalar desde la URL de Github",
|
||||
"Instant Auto-Send After Voice Transcription": "AutoEnvio Instantaneo tras la Transcripción de Voz",
|
||||
"Instructions": "",
|
||||
"Integration": "Integración",
|
||||
"Integrations": "Integraciones",
|
||||
"Interface": "Interfaz",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Última Actividad",
|
||||
"Last Modified": "Último Modificación",
|
||||
"Last ran": "",
|
||||
"Last reply": "Última Respuesta",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Servidor LDAP actualizado",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Modelo '{{modelName}}' se ha descargado correctamente.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Modelo '{{modelTag}}' ya está en cola para descargar.",
|
||||
"Model {{modelId}} not found": "Modelo {{modelId}} no encontrado",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Modelo {{modelName}} no esta capacitado para visión",
|
||||
"Model {{name}} is now {{status}}": "Modelo {{name}} está ahora {{status}}",
|
||||
"Model {{name}} is now hidden": "Modelo {{name}} está ahora oculto",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Nombre",
|
||||
"Name and ID are required, please fill them out": "Nombre e ID requeridos, por favor introducelos",
|
||||
"Name your knowledge base": "Nombra tu base de conocimientos",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Nativo",
|
||||
"Never": "",
|
||||
"New": "Nuevo",
|
||||
"New Automation": "",
|
||||
"New Button": "Nuevo Botón",
|
||||
"New Chat": "Nuevo Chat",
|
||||
"New File": "",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "Nuevo Webhook",
|
||||
"new-channel": "nuevo-canal",
|
||||
"Next message": "Siguiente mensaje",
|
||||
"Next run": "",
|
||||
"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 automations found": "",
|
||||
"No chats found": "No se encontró ningún chat",
|
||||
"No chats found for this user.": "No se encontró ningún chat de este usuario",
|
||||
"No chats found.": "No se encontró ningún chat",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "Sin datos",
|
||||
"No data found": "No se encontró ningún dato",
|
||||
"No distance available": "No hay distancia disponible",
|
||||
"No execution logs available yet": "",
|
||||
"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",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "No es correcto en todos los aspectos",
|
||||
"Not helpful": "No aprovechable",
|
||||
"Not Registered": "No Registrado",
|
||||
"Not scheduled": "",
|
||||
"Note": "Nota",
|
||||
"Note deleted successfully": "Nota eliminada correctamente",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si estableces una puntuación mínima, la búsqueda sólo devolverá documentos con una puntuación mayor o igual a la puntuación mínima establecida.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "o",
|
||||
"Ordered List": "Lista Ordenada",
|
||||
"Other": "Otro",
|
||||
"out of": "",
|
||||
"Output": "Salida",
|
||||
"OUTPUT": "SALIDA",
|
||||
"Output format": "Formato de salida",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Contraseña",
|
||||
"Passwords do not match.": "Las contraseñas no coinciden",
|
||||
"Paste Large Text as File": "Pegar el Texto Largo como Archivo",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Documento PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Extraer imágenes del PDF (OCR)",
|
||||
"PDF Loader Mode": "Modo de Carga del PDF",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "Razonamiento",
|
||||
"Reasoning Effort": "Esfuerzo del Razonamiento",
|
||||
"Reasoning Tags": "Etiquetas de Razonamiento",
|
||||
"Recently Used": "",
|
||||
"Record": "Grabar",
|
||||
"Record voice": "Grabar voz",
|
||||
"Redirecting you to Open WebUI Community": "Redireccionando a la Comunidad Open-WebUI",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "Renderizar Markdown en Vista Previa",
|
||||
"Reorder Models": "Reordenar Modelos",
|
||||
"Repeats": "",
|
||||
"Reply": "Responder",
|
||||
"Reply in Thread": "Responder en Hilo",
|
||||
"Reply to thread...": "Responder al hilo...",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Ejecutar",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Ejecutando",
|
||||
"Running...": "Ejecutando...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Ejecuta tareas de incrustración concurrentes para acelerar el procesado. Desactivar si se generan problemas (por limitaciones de los motores de incrustracción en uso)",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "Guardar Chat",
|
||||
"Saved": "Guardado",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Ya no está soportado guardar registros de chat directamente en el almacenamiento del navegador. Por favor, dedica un momento a descargar y eliminar tus registros de chat pulsando en el botón de abajo. No te preocupes, puedes re-importar fácilmente tus registros desde las opciones de configuración",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Desplazamiento al Cambiar Rama",
|
||||
"Search": "Buscar",
|
||||
"Search a model": "Buscar un Modelo",
|
||||
"Search all emojis": "Buscar todos los emojis",
|
||||
"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 Automations": "",
|
||||
"Search Base": "Busqueda Base",
|
||||
"Search channels and channel messages": "Buscar canales y mensajes del canal",
|
||||
"Search Chats": "Buscar Chats",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "Seleccionar como dividir los mensajes de texto para las peticiones TTS",
|
||||
"Select Knowledge": "Seleccionar Conocimiento",
|
||||
"Select Method": "Seleccionar Método",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Seleccionar sólo un modelo a llamar",
|
||||
"Select view": "Seleccionar vista",
|
||||
"Selected model: {{modelName}}": "Modelo seleccinado: {{modelName}}",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Inicio del canal",
|
||||
"Start Tag": "Etiqueta de Inicio",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "Estado",
|
||||
"Status cleared successfully": "Estado limpiado correctamente",
|
||||
"Status updated successfully": "Estado actualizado correctamente",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "Hablar al Modelo",
|
||||
"Tap to interrupt": "Toca para interrumpir",
|
||||
"Task List": "Lista de Tareas",
|
||||
"Task Management": "",
|
||||
"Task Model": "Modelo de Tarea",
|
||||
"Tasks": "Tareas",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Clave API de Tavily",
|
||||
"Tavily Extract Depth": "Parámetro Extract Depth de Taviliy",
|
||||
"Tell us more:": "Dinos algo más:",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "URL del Servidor Tika necesaria",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Tiempo y Cálculo",
|
||||
"Timeout": "TimeOut",
|
||||
"Title": "Título",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"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",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Hoy a las {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "Des/Plegar {{COUNT}} fuentes",
|
||||
"Toggle 1 source": "Des/Plegar 1 fuente",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Aviso",
|
||||
"Warning:": "Aviso:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Aviso: Habilitar esto permitirá a los usuarios subir código arbitrario al servidor.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Aviso: La ejecución Jupyter habilita la ejecución de código arbitrario, planteando graves riesgos de seguridad; Proceder con extrema precaución.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "Ancho",
|
||||
"Wikipedia": "Wikipedia",
|
||||
"Won": "Ganó",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Trabaja conjuntamente con top-k. Un valor más alto (p.ej. 0.95) dará lugar a un texto más diverso, mientras que un valor más bajo (p.ej. 0.5) generará un texto más centrado y conservador.",
|
||||
"Workspace": "Espacio de Trabajo",
|
||||
"Workspace Permissions": "Permisos del Espacio de Trabajo",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"Are you sure you want to archive all chats? This action cannot be undone.": "Kas olete kindel, et soovite arhiveerida kõik vestlused? Seda toimingut ei saa tagasi võtta.",
|
||||
"Are you sure you want to clear all memories? This action cannot be undone.": "Kas olete kindel, et soovite kustutada kõik mälestused? Seda toimingut ei saa tagasi võtta.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "Kas olete kindel, et soovite kustutada \"{{NAME}}\"?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "Kas olete kindel, et soovite kustutada kõik vestlused? Seda toimingut ei saa tagasi võtta.",
|
||||
"Are you sure you want to delete this channel?": "Kas olete kindel, et soovite selle kanali kustutada?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Assistent",
|
||||
"Async Embedding Processing": "Asünkroonne manustamise töötlemine",
|
||||
"Attach File From Knowledge": "Lisa fail teadmistest",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Lisa teadmised",
|
||||
"Attach Notes": "Lisa märkmed",
|
||||
"Attach Webpage": "Lisa veebileht",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 baas-URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 baas-URL on nõutav.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Sisesta automaatselt süsteemitööriistad omases funktsioonide kutsumise režiimis (nt ajatemplid, mälu, vestluse ajalugu, märkmed jne)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Saadaolevate nimekiri",
|
||||
"Available models": "Saadaolevad mudelid",
|
||||
"Available Tools": "Saadaolevad tööriistad",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Konkreetsete tokenite võimendamine või karistamine piiratud vastuste jaoks. Kallutatuse väärtused piiratakse vahemikku -100 kuni 100 (kaasa arvatud). (Vaikimisi: puudub)",
|
||||
"Brave": "Brave",
|
||||
"Brave Search API Key": "Brave Search API võti",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Sirvi ja päri teadmiste baase",
|
||||
"Builtin Tools": "Sisseehitatud tööriistad",
|
||||
"Bullet List": "Täpiline loend",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Samaaegsed päringud",
|
||||
"Config": "Seadistus",
|
||||
"Config imported successfully": "Seadistus edukalt imporditud",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfigureeri",
|
||||
"Confirm": "Kinnita",
|
||||
"Confirm Password": "Kinnita parool",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Loo uus salavõti",
|
||||
"Create note": "Loo märge",
|
||||
"Create Note": "Loo märge",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Loo oma esimene märge, klõpsates all olevat plussnuppu.",
|
||||
"Created at": "Loomise aeg",
|
||||
"Created At": "Loomise aeg",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Andmete juhtimine",
|
||||
"Database": "Andmebaas",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "PP/KK/AAAA",
|
||||
"DDGS Backend": "DDGS taustaserver",
|
||||
"December": "Detsember",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "Kustuta kõik",
|
||||
"Delete All Chats": "Kustuta kõik vestlused",
|
||||
"Delete all contents inside this folder": "Kustuta kogu selle kausta sisu",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Kustuta vestlus",
|
||||
"Delete chat?": "Kustutada vestlus?",
|
||||
"Delete File": "Kustuta fail",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "Manustamise samaaegsed päringud",
|
||||
"Embedding Model": "Manustamise mudel",
|
||||
"Embedding Model Engine": "Manustamise mudeli mootor",
|
||||
"Emojis": "",
|
||||
"Empty message": "Tühi sõnum",
|
||||
"Enable All": "Luba kõik",
|
||||
"Enable API Keys": "Luba API võtmed",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "Sisestage Perplexity Search API URL",
|
||||
"Enter Playwright Timeout": "Sisestage Playwright aegumine",
|
||||
"Enter Playwright WebSocket URL": "Sisestage Playwright WebSocket URL",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Sisestage puhverserveri URL (nt https://kasutaja:parool@host:port)",
|
||||
"Enter reasoning effort": "Sisestage arutluspingutus",
|
||||
"Enter Score": "Sisestage skoor",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Sisestage siia süsteemi sisend",
|
||||
"Enter Tavily API Key": "Sisestage Tavily API võti",
|
||||
"Enter Tavily Extract Depth": "Sisestage Tavily eraldamise sügavus",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Sisestage oma WebUI avalik URL. Seda URL-i kasutatakse teadaannetes linkide genereerimiseks.",
|
||||
"Enter the URL of the function to import": "Sisestage imporditava funktsiooni URL",
|
||||
"Enter the URL to import": "Sisestage imporditav URL",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "Viga kataloogi juurdepääsul",
|
||||
"Error accessing Google Drive: {{error}}": "Viga Google Drive'i juurdepääsul: {{error}}",
|
||||
"Error accessing media devices.": "Viga meediumiseadmete juurdepääsul.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Viga salvestamise alustamisel.",
|
||||
"Error unloading model: {{error}}": "Viga mudeli mahalaadimisel: {{error}}",
|
||||
"Error uploading file: {{error}}": "Viga faili üleslaadimisel: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "Käivita kood",
|
||||
"Execute code for analysis": "Käivita kood analüüsimiseks",
|
||||
"Executing **{{NAME}}**...": "Käivitatakse **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Laienda",
|
||||
"Experimental": "Katsetuslik",
|
||||
"Explain": "Selgita",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Sisesta soovitussisend sisendisse",
|
||||
"Install from Github URL": "Installige Github URL-ilt",
|
||||
"Instant Auto-Send After Voice Transcription": "Kohene automaatne saatmine pärast hääle transkriptsiooni",
|
||||
"Instructions": "",
|
||||
"Integration": "Integratsioon",
|
||||
"Integrations": "Integratsioonid",
|
||||
"Interface": "Kasutajaliides",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "Viimased 90 päeva",
|
||||
"Last Active": "Viimati aktiivne",
|
||||
"Last Modified": "Viimati muudetud",
|
||||
"Last ran": "",
|
||||
"Last reply": "Viimane vastus",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP server uuendatud",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Mudel '{{modelName}}' on edukalt alla laaditud.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Mudel '{{modelTag}}' on juba allalaadimise järjekorras.",
|
||||
"Model {{modelId}} not found": "Mudelit {{modelId}} ei leitud",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Mudel {{modelName}} ei ole võimeline visuaalseid sisendeid töötlema",
|
||||
"Model {{name}} is now {{status}}": "Mudel {{name}} on nüüd {{status}}",
|
||||
"Model {{name}} is now hidden": "Mudel {{name}} on nüüd peidetud",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Nimi",
|
||||
"Name and ID are required, please fill them out": "Nimi ja ID on nõutavad, palun täida need",
|
||||
"Name your knowledge base": "Nimetage oma teadmiste baas",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Omane",
|
||||
"Never": "",
|
||||
"New": "Uus",
|
||||
"New Automation": "",
|
||||
"New Button": "Uus nupp",
|
||||
"New Chat": "Uus vestlus",
|
||||
"New File": "Uus fail",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "Uus webhook",
|
||||
"new-channel": "uus-kanal",
|
||||
"Next message": "Järgmine sõnum",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "Pole juurdepääsuõigusi. Privaatne teile.",
|
||||
"No activity data": "Tegevusandmed puuduvad",
|
||||
"No authentication": "Autentimist pole",
|
||||
"No automations found": "",
|
||||
"No chats found": "Vestlusi ei leitud",
|
||||
"No chats found for this user.": "Sellel kasutajal vestlusi ei leitud.",
|
||||
"No chats found.": "Vestlusi ei leitud.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "Andmed puuduvad",
|
||||
"No data found": "Andmeid ei leitud",
|
||||
"No distance available": "Kaugus pole saadaval",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "Aegumise puudumine võib kujutada turvariske.",
|
||||
"No feedback found": "Tagasisidet ei leitud",
|
||||
"No file selected": "Faili pole valitud",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Faktiliselt ebakorrektne",
|
||||
"Not helpful": "Ei ole kasulik",
|
||||
"Not Registered": "Pole registreeritud",
|
||||
"Not scheduled": "",
|
||||
"Note": "Märge",
|
||||
"Note deleted successfully": "Märge edukalt kustutatud",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Märkus: kui määrate minimaalse skoori, tagastab otsing ainult dokumendid, mille skoor on suurem või võrdne minimaalse skooriga.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "või",
|
||||
"Ordered List": "Nummerdatud loend",
|
||||
"Other": "Muu",
|
||||
"out of": "",
|
||||
"Output": "Väljund",
|
||||
"OUTPUT": "VÄLJUND",
|
||||
"Output format": "Väljundformaat",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Parool",
|
||||
"Passwords do not match.": "Paroolid ei ühti.",
|
||||
"Paste Large Text as File": "Kleebi suur tekst failina",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF dokument (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF-ist piltide väljavõtmine (OCR)",
|
||||
"PDF Loader Mode": "PDF laadija režiim",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "Põhjus",
|
||||
"Reasoning Effort": "Arutluspingutus",
|
||||
"Reasoning Tags": "Arutlussildid",
|
||||
"Recently Used": "",
|
||||
"Record": "Salvesta",
|
||||
"Record voice": "Salvesta hääl",
|
||||
"Redirecting you to Open WebUI Community": "Suunamine Open WebUI kogukonda",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "Renderda Markdown eelvaadetes",
|
||||
"Reorder Models": "Muuda mudelite järjekorda",
|
||||
"Repeats": "",
|
||||
"Reply": "Vasta",
|
||||
"Reply in Thread": "Vasta lõimes",
|
||||
"Reply to thread...": "Vasta lõimele...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Käivita",
|
||||
"Run All": "Käivita kõik",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Töötab",
|
||||
"Running...": "Töötab...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Käitab manustamisülesandeid samaaegselt töötlemise kiirendamiseks. Lülitage välja, kui piirangud muutuvad probleemiks.",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Salvesta vestlus",
|
||||
"Saved": "Salvestatud",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Vestluslogi salvestamine otse teie brauseri mällu pole enam toetatud. Palun võtke hetk, et alla laadida ja kustutada oma vestluslogi, klõpsates allpool olevat nuppu. Ärge muretsege, saate hõlpsasti oma vestluslogi tagarakendusse uuesti importida, kasutades",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Keri haru muutmisel",
|
||||
"Search": "Otsing",
|
||||
"Search a model": "Otsi mudelit",
|
||||
"Search all emojis": "Otsi kõigist emotikonidest",
|
||||
"Search and manage user memories": "Otsi ja halda kasutaja mälestusi",
|
||||
"Search and view user chat history": "Otsi ja vaata kasutaja vestluste ajalugu",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Otsingu baas",
|
||||
"Search channels and channel messages": "Otsi kanaleid ja kanalite sõnumeid",
|
||||
"Search Chats": "Otsi vestlusi",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "Valige, kuidas jagada sõnumiteksti TTS-päringute jaoks",
|
||||
"Select Knowledge": "Valige teadmised",
|
||||
"Select Method": "Valige meetod",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Valige ainult üks mudel kutsumiseks",
|
||||
"Select view": "Vali vaade",
|
||||
"Selected model: {{modelName}}": "Valitud mudel: {{modelName}}",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Kanali algus",
|
||||
"Start Tag": "Algussilt",
|
||||
"Starting kernel...": "Kerneli käivitamine...",
|
||||
"State": "",
|
||||
"Status": "Olek",
|
||||
"Status cleared successfully": "Olek edukalt tühjendatud",
|
||||
"Status updated successfully": "Olek edukalt uuendatud",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "Räägi mudeliga",
|
||||
"Tap to interrupt": "Puuduta katkestamiseks",
|
||||
"Task List": "Ülesannete nimekiri",
|
||||
"Task Management": "",
|
||||
"Task Model": "Ülesannete mudel",
|
||||
"Tasks": "Ülesanded",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API võti",
|
||||
"Tavily Extract Depth": "Tavily eraldamise sügavus",
|
||||
"Tell us more:": "Räägi meile lähemalt:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika serveri URL on nõutav.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Aeg ja arvutamine",
|
||||
"Timeout": "Aegumine",
|
||||
"Title": "Pealkiri",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Tööriistakomplektide siit valimiseks lisage need esmalt \"Tööriistade\" tööalale.",
|
||||
"Toast notifications for new updates": "Hüpikmärguanded uuenduste kohta",
|
||||
"Today": "Täna",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Täna kell {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "Lülita {{COUNT}} allikat",
|
||||
"Toggle 1 source": "Lülita 1 allikas",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "Üleslaadimise ootamine...",
|
||||
"Warning": "Hoiatus",
|
||||
"Warning:": "Hoiatus:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Hoiatus: Selle lubamine võimaldab kasutajatel üles laadida suvalist koodi serverisse.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Hoiatus: Jupyter täitmine võimaldab suvalise koodi käivitamist, mis kujutab endast tõsist turvariski - jätkake äärmise ettevaatusega.",
|
||||
"Web": "Veeb",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "Laius",
|
||||
"Wikipedia": "Vikipeedia",
|
||||
"Won": "Võitis",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Töötab koos top-k-ga. Kõrgem väärtus (nt 0,95) annab tulemuseks mitmekesisema teksti, samas kui madalam väärtus (nt 0,5) genereerib keskendunuma ja konservatiivsema teksti.",
|
||||
"Workspace": "Tööala",
|
||||
"Workspace Permissions": "Tööala õigused",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Laguntzailea",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Oinarri URLa",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Oinarri URLa beharrezkoa da.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Zerrenda erabilgarria",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave Bilaketa API Gakoa",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Eskari Konkurrenteak",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfiguratu",
|
||||
"Confirm": "Berretsi",
|
||||
"Confirm Password": "Berretsi Pasahitza",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Sortu gako sekretu berria",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Sortze data",
|
||||
"Created At": "Sortze Data",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Datu-basea",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Abendua",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Ezabatu Txat Guztiak",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Ezabatu Txata",
|
||||
"Delete chat?": "Ezabatu txata?",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Embedding Eredua",
|
||||
"Embedding Model Engine": "Embedding Eredu Motorea",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "Sartu Puntuazioa",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "Sartu Tavily API Gakoa",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Esperimentala",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Instalatu Github URLtik",
|
||||
"Instant Auto-Send After Voice Transcription": "Bidalketa Automatiko Berehalakoa Ahots Transkripzioaren Ondoren",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Interfazea",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Azken Aktibitatea",
|
||||
"Last Modified": "Azken Aldaketa",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP zerbitzaria eguneratu da",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' modeloa ongi deskargatu da.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "'{{modelTag}}' modeloa dagoeneko deskarga ilaran dago.",
|
||||
"Model {{modelId}} not found": "{{modelId}} modeloa ez da aurkitu",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "{{modelName}} modeloak ez du ikusmen gaitasunik",
|
||||
"Model {{name}} is now {{status}}": "{{name}} modeloa orain {{status}} dago",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Izena",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Izendatu zure ezagutza-basea",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Txat berria",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Ez dago distantziarik eskuragarri",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Ez da fitxategirik hautatu",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Ez da faktikoki zuzena",
|
||||
"Not helpful": "Ez da lagungarria",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Oharra: Gutxieneko puntuazio bat ezartzen baduzu, bilaketak gutxieneko puntuazioa baino handiagoa edo berdina duten dokumentuak soilik itzuliko ditu.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "edo",
|
||||
"Ordered List": "",
|
||||
"Other": "Bestelakoa",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "IRTEERA",
|
||||
"Output format": "Irteera formatua",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Pasahitza",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "Itsatsi testu luzea fitxategi gisa",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF dokumentua (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF irudiak erauzi (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Grabatu ahotsa",
|
||||
"Redirecting you to Open WebUI Community": "OpenWebUI Komunitatera berbideratzen",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Berrantolatu modeloak",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Exekutatu",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Exekutatzen",
|
||||
"Running...": "Exekutatzen...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "Gordeta",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Txat erregistroak zuzenean zure nabigatzailearen biltegian gordetzea ez da jadanik onartzen. Mesedez, hartu une bat zure txat erregistroak deskargatu eta ezabatzeko beheko botoia sakatuz. Ez kezkatu, zure txat erregistroak erraz inportatu ditzakezu berriro backendera honen bidez",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Bilatu",
|
||||
"Search a model": "Bilatu modelo bat",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Bilaketa oinarria",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Bilatu txatak",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "Hautatu ezagutza",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Hautatu modelo bakarra deitzeko",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Kanalaren hasiera",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Ukitu eteteko",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API gakoa",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Kontatu gehiago:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika zerbitzariaren URLa beharrezkoa da.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Izenburua",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Tresna-multzoak hemen hautatzeko, gehitu itzazu lehenik \"Tresnak\" lan-eremura.",
|
||||
"Toast notifications for new updates": "Toast jakinarazpenak eguneraketa berrientzat",
|
||||
"Today": "Gaur",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Abisua",
|
||||
"Warning:": "Abisua:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Abisua: Hau gaitzeak erabiltzaileei zerbitzarian kode arbitrarioa kargatzea ahalbidetuko die.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Weba",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "Irabazi du",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Lan-eremua",
|
||||
"Workspace Permissions": "Lan-eremuaren baimenak",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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.": "آیا مطمئن هستید که می\u200cخواهید تمام حافظه\u200cها را پاک کنید؟ این عمل قابل بازگشت نیست.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "آیا مطمئن هستید که می\u200cخواهید این کانال را حذف کنید؟",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "دستیار",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "پیوست فایل از دانش",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "پیوست دانش",
|
||||
"Attach Notes": "پیوست یادداشت\u200cها",
|
||||
"Attach Webpage": "پیوست صفحه وب",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "پایه URL AUTOMATIC1111 ",
|
||||
"AUTOMATIC1111 Base URL is required.": "به URL پایه AUTOMATIC1111 مورد نیاز است.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "فهرست دردسترس",
|
||||
"Available models": "",
|
||||
"Available Tools": "ابزارهای موجود",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "تقویت یا جریمه توکن\u200cهای خاص برای پاسخ\u200cهای محدود. مقادیر بایاس بین -100 و 100 (شامل) محدود خواهند شد. (پیش\u200cفرض: هیچ)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "کلید API جستجوی شجاع",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "لیست گلوله\u200cای",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "درخواست های همزمان",
|
||||
"Config": "",
|
||||
"Config imported successfully": "پیکربندی با موفقیت وارد شد",
|
||||
"Configuration": "",
|
||||
"Configure": "پیکربندی",
|
||||
"Confirm": "تایید",
|
||||
"Confirm Password": "تایید رمز عبور",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "ساخت کلید مخفی جدید",
|
||||
"Create note": "",
|
||||
"Create Note": "ایجاد یادداشت",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "با کلیک روی دکمه به\u200cعلاوه در زیر، اولین یادداشت خود را ایجاد کنید.",
|
||||
"Created at": "ایجاد شده در",
|
||||
"Created At": "ایجاد شده در",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "کنترل\u200cهای داده",
|
||||
"Database": "پایگاه داده",
|
||||
"Datalab Marker API": "API مارکر دیتا\u200cلب",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "روز/ماه/سال",
|
||||
"DDGS Backend": "",
|
||||
"December": "دسامبر",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "حذف همه گفتگوها",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "حذف گپ",
|
||||
"Delete chat?": "گفتگو حذف شود؟",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "مدل پیدائش",
|
||||
"Embedding Model Engine": "محرک مدل پیدائش",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "مهلت پلی\u200cرایت را وارد کنید",
|
||||
"Enter Playwright WebSocket URL": "آدرس وب\u200cسوکت پلی\u200cرایت را وارد کنید",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "آدرس پراکسی را وارد کنید (مثال: https://user:password@host:port)",
|
||||
"Enter reasoning effort": "تلاش استدلال را وارد کنید",
|
||||
"Enter Score": "امتیاز را وارد کنید",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "پرامپت سیستم را اینجا وارد کنید",
|
||||
"Enter Tavily API Key": "کلید API تاویلی را وارد کنید",
|
||||
"Enter Tavily Extract Depth": "عمق استخراج تاویلی را وارد کنید",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "آدرس عمومی رابط کاربری وب خود را وارد کنید. این آدرس برای تولید پیوندها در اعلان\u200cها استفاده خواهد شد.",
|
||||
"Enter the URL of the function to import": "آدرس URL تابع برای وارد کردن را وارد کنید",
|
||||
"Enter the URL to import": "آدرس URL برای وارد کردن را وارد کنید",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "خطا در دسترسی به دایرکتوری",
|
||||
"Error accessing Google Drive: {{error}}": "خطا در دسترسی به گوگل درایو: {{error}}",
|
||||
"Error accessing media devices.": "خطا در دسترسی به دستگاه\u200cهای رسانه\u200cای.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "خطا در شروع ضبط.",
|
||||
"Error unloading model: {{error}}": "خطا در خارج کردن مدل: {{error}}",
|
||||
"Error uploading file: {{error}}": "خطا در بارگذاری فایل: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "اجرای کد برای تحلیل",
|
||||
"Executing **{{NAME}}**...": "در حال اجرای **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "گسترش",
|
||||
"Experimental": "آزمایشی",
|
||||
"Explain": "توضیح",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "درج پرامپت پیشنهادی در ورودی",
|
||||
"Install from Github URL": "نصب از ادرس Github",
|
||||
"Instant Auto-Send After Voice Transcription": "ارسال خودکار فوری پس از رونویسی صوتی",
|
||||
"Instructions": "",
|
||||
"Integration": "یکپارچه\u200cسازی",
|
||||
"Integrations": "یکپارچه\u200cسازی\u200cها",
|
||||
"Interface": "رابط",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "آخرین فعال",
|
||||
"Last Modified": "آخرین تغییر",
|
||||
"Last ran": "",
|
||||
"Last reply": "آخرین پاسخ",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "سرور LDAP به\u200cروز شد",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "مدل '{{modelName}}' با موفقیت دانلود شد.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "مدل '{{modelTag}}' در حال حاضر در صف برای دانلود است.",
|
||||
"Model {{modelId}} not found": "مدل {{modelId}} یافت نشد",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "مدل {{modelName}} قادر به بینایی نیست",
|
||||
"Model {{name}} is now {{status}}": "مدل {{name}} در حال حاضر {{status}}",
|
||||
"Model {{name}} is now hidden": "مدل {{name}} اکنون مخفی است",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "نام",
|
||||
"Name and ID are required, please fill them out": "نام و شناسه مورد نیاز هستند، لطفاً آنها را پر کنید",
|
||||
"Name your knowledge base": "پایگاه دانش خود را نام\u200cگذاری کنید",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "بومی",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "دکمه جدید",
|
||||
"New Chat": "گپ جدید",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "کانال-جدید",
|
||||
"Next message": "پیام بعدی",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "بدون احراز هویت",
|
||||
"No automations found": "",
|
||||
"No chats found": "هیچ چتی یافت نشد",
|
||||
"No chats found for this user.": "هیچ چتی برای این کاربر یافت نشد.",
|
||||
"No chats found.": "هیچ چتی یافت نشد.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "فاصله\u200cای در دسترس نیست",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "عدم انقضا می\u200cتواند خطرات امنیتی ایجاد کند.",
|
||||
"No feedback found": "",
|
||||
"No file selected": "فایلی انتخاب نشده است",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "اشتباهی فکری نیست",
|
||||
"Not helpful": "مفید نیست",
|
||||
"Not Registered": "ثبت نشده",
|
||||
"Not scheduled": "",
|
||||
"Note": "یادداشت",
|
||||
"Note deleted successfully": "یادداشت با موفقیت حذف شد",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "توجه: اگر حداقل نمره را تعیین کنید، جستجو تنها اسنادی را با نمره بیشتر یا برابر با حداقل نمره باز می گرداند.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "یا",
|
||||
"Ordered List": "لیست شماره\u200cگذاری شده",
|
||||
"Other": "دیگر",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "خروجی",
|
||||
"Output format": "قالب خروجی",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "رمز عبور",
|
||||
"Passwords do not match.": "رمزهای عبور مطابقت ندارند.",
|
||||
"Paste Large Text as File": "چسباندن متن بزرگ به عنوان فایل",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF سند (.pdf)",
|
||||
"PDF Extract Images (OCR)": "استخراج تصاویر از PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "دلیل",
|
||||
"Reasoning Effort": "تلاش استدلال",
|
||||
"Reasoning Tags": "تگ\u200cهای استدلال",
|
||||
"Recently Used": "",
|
||||
"Record": "ضبط",
|
||||
"Record voice": "ضبط صدا",
|
||||
"Redirecting you to Open WebUI Community": "در حال هدایت به OpenWebUI Community",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "ترتیب مجدد مدل\u200cها",
|
||||
"Repeats": "",
|
||||
"Reply": "پاسخ",
|
||||
"Reply in Thread": "پاسخ در رشته",
|
||||
"Reply to thread...": "پاسخ به رشته...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "اجرا",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "در حال اجرا",
|
||||
"Running...": "در حال اجرا...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "ذخیره چت",
|
||||
"Saved": "ذخیره شد",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "ذخیره گزارش\u200cهای چت مستقیماً در حافظه مرورگر شما دیگر پشتیبانی نمی\u200cشود. لطفاً با کلیک بر روی دکمه زیر، چند لحظه برای دانلود و حذف گزارش های چت خود وقت بگذارید. نگران نباشید، شما به راحتی می توانید گزارش های چت خود را از طریق بکند دوباره وارد کنید",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "اسکرول هنگام تغییر شاخه",
|
||||
"Search": "جستجو",
|
||||
"Search a model": "جستجوی یک مدل",
|
||||
"Search all emojis": "جستجوی همه ایموجی\u200cها",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "پایه جستجو",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "جستجو گفتگوها",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "نحوه تقسیم متن پیام برای درخواست\u200cهای TTS را انتخاب کنید",
|
||||
"Select Knowledge": "انتخاب دانش",
|
||||
"Select Method": "انتخاب روش",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "تنها یک مدل را برای صدا زدن انتخاب کنید",
|
||||
"Select view": "انتخاب نما",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "آغاز کانال",
|
||||
"Start Tag": "تگ شروع",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "صحبت با مدل",
|
||||
"Tap to interrupt": "برای وقفه ضربه بزنید",
|
||||
"Task List": "لیست وظایف",
|
||||
"Task Management": "",
|
||||
"Task Model": "مدل وظیفه",
|
||||
"Tasks": "وظایف",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "کلید API تاویلی",
|
||||
"Tavily Extract Depth": "عمق استخراج تاویلی",
|
||||
"Tell us more:": "بیشتر بگویید:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "تیکا",
|
||||
"Tika Server URL required.": "آدرس سرور تیکا مورد نیاز است.",
|
||||
"Tiktoken": "تیک توکن",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "عنوان",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "برای انتخاب ابزارها در اینجا، ابتدا آنها را به فضای کاری \"ابزارها\" اضافه کنید.",
|
||||
"Toast notifications for new updates": "اعلان\u200cهای پاپ\u200cآپ برای به\u200cروزرسانی\u200cهای جدید",
|
||||
"Today": "امروز",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "امروز در {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "هشدار",
|
||||
"Warning:": "هشدار",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "هشدار: فعال کردن این گزینه به کاربران اجازه می\u200cدهد کد دلخواه را روی سرور آپلود کنند.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "هشدار: اجرای ژوپیتر امکان اجرای کد دلخواه را فراهم می\u200cکند که خطرات امنیتی جدی به همراه دارد - با احتیاط زیاد ادامه دهید.",
|
||||
"Web": "وب",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "عرض",
|
||||
"Wikipedia": "",
|
||||
"Won": "برنده شد",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "با top-k همکاری می\u200cکند. مقدار بالاتر (مثلاً 0.95) منجر به متن متنوع\u200cتر می\u200cشود، در حالی که مقدار پایین\u200cتر (مثلاً 0.5) متن متمرکزتر و محافظه\u200cکارانه\u200cتری تولید می\u200cکند.",
|
||||
"Workspace": "محیط کار",
|
||||
"Workspace Permissions": "مجوزهای محیط کار",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"Are you sure you want to archive all chats? This action cannot be undone.": "Haluatko varmasti arkistoida kaikki keskustelut? Tätä toimintoa ei voi peruuttaa.",
|
||||
"Are you sure you want to clear all memories? This action cannot be undone.": "Haluatko varmasti tyhjentää kaikki muistot? Tätä toimintoa ei voi peruuttaa.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "Haluatko varmasti poistaa \"{{NAME}}\"?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "Haluatko varmasti poistaa kaikki keskustelut? Tätä toimintoa ei voi peruuttaa.",
|
||||
"Are you sure you want to delete this channel?": "Haluatko varmasti poistaa tämän kanavan?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "Haluatko varmasti poistaa yhteyden? Tätä toimintoa ei voi peruuttaa.",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Avustaja",
|
||||
"Async Embedding Processing": "Asynkroninen upotus prosessointi",
|
||||
"Attach File From Knowledge": "Liitä tiedosto tietämyksestä",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Liitä tietoa",
|
||||
"Attach Notes": "Liitä muistiinpanoja",
|
||||
"Attach Webpage": "Liitä verkkosivu",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 verkko-osoite",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 verkko-osoite vaaditaan.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Lisää järjestelmätyökaluja automaattisesti natiivissa toimintokutsutilassa (esim. aikaleimat, muisti, keskusteluhistoria, muistiinpanot jne.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Käytettävissä oleva luettelo",
|
||||
"Available models": "Käytettävissä olevat mallit",
|
||||
"Available Tools": "Käytettävissä olevat työkalut",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Tiettyjen tokeneiden tehostaminen tai rankaiseminen rajoitetuista vastauksista. Poikkeaman arvot rajoitetaan välille -100 ja 100 (mukaan lukien). (Oletus: ei mitään)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave Search API -avain",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Selaa ja hae tietokannoista",
|
||||
"Builtin Tools": "Sisäänrakennetut työkalut",
|
||||
"Bullet List": "Luettelo",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Samanaikaiset pyynnöt",
|
||||
"Config": "Määritykset",
|
||||
"Config imported successfully": "Määritysten tuonti onnistui",
|
||||
"Configuration": "",
|
||||
"Configure": "Määritä",
|
||||
"Confirm": "Vahvista",
|
||||
"Confirm Password": "Vahvista salasana",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Luo uusi salainen avain",
|
||||
"Create note": "Luo muistiinpano",
|
||||
"Create Note": "Luo muistiinpano",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Luo ensimmäinen muistiinpanosi painamalla alla olevaa plus painiketta.",
|
||||
"Created at": "Luotu",
|
||||
"Created At": "Luotu",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Datan hallinta",
|
||||
"Database": "Tietokanta",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD/MM/YYYY",
|
||||
"DDGS Backend": "DDGS-taustajärjestelmä",
|
||||
"December": "joulukuu",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "Poista kaikki",
|
||||
"Delete All Chats": "Poista kaikki keskustelut",
|
||||
"Delete all contents inside this folder": "Poista kaikki sisällöt tästä kansiosta",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Poista keskustelu",
|
||||
"Delete chat?": "Haluatko varmasti poistaa tämän keskustelun?",
|
||||
"Delete File": "Poista tiedosto",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "Samanaikaiset upotuspyynnöt",
|
||||
"Embedding Model": "Upotusmalli",
|
||||
"Embedding Model Engine": "Upotusmallin moottori",
|
||||
"Emojis": "",
|
||||
"Empty message": "Tyhjä viesti",
|
||||
"Enable All": "Ota kaikki käyttöön",
|
||||
"Enable API Keys": "Ota API-avaimet käyttöön",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "Aseta Perplexity Search API verkko-osoite",
|
||||
"Enter Playwright Timeout": "Aseta Playwright aikakatkaisu",
|
||||
"Enter Playwright WebSocket URL": "Aseta Playwright WebSocket-aikakatkaisu",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Kirjoita välityspalvelimen verkko-osoite (esim. https://käyttäjä:salasana@host:portti)",
|
||||
"Enter reasoning effort": "Kirjoita päättelyn määrä",
|
||||
"Enter Score": "Kirjoita pistemäärä",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Kirjoita järjestelmäkehote tähän",
|
||||
"Enter Tavily API Key": "Kirjoita Tavily API -avain",
|
||||
"Enter Tavily Extract Depth": "Kirjoita Tavily pominta syvyys",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Kirjoita julkinen WebUI verkko-osoitteesi. Verkko-osoitetta käytetään osoitteiden luontiin ilmoituksissa.",
|
||||
"Enter the URL of the function to import": "Kirjoita tuotavan toiminnon verkko-osoite",
|
||||
"Enter the URL to import": "Kirjoita tuotavan verkko-osoite",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "Virhe hakemistoa avattaessa",
|
||||
"Error accessing Google Drive: {{error}}": "Virhe yhdistäessä Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Virhe medialaitteita käytettäessä.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Virhe nauhoitusta aloittaessa.",
|
||||
"Error unloading model: {{error}}": "Virhe mallia ladattaessa: {{error}}",
|
||||
"Error uploading file: {{error}}": "Virhe ladattaessa tiedostoa: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "Suorita koodi",
|
||||
"Execute code for analysis": "Suorita koodi analysointia varten",
|
||||
"Executing **{{NAME}}**...": "Suoritetaan **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Laajenna",
|
||||
"Experimental": "Kokeellinen",
|
||||
"Explain": "Selitä",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Lisää kehote ehdotus syötteeseen",
|
||||
"Install from Github URL": "Asenna Github-URL:stä",
|
||||
"Instant Auto-Send After Voice Transcription": "Heti automaattinen lähetys äänitunnistuksen jälkeen",
|
||||
"Instructions": "",
|
||||
"Integration": "Integrointi",
|
||||
"Integrations": "Integraatiot",
|
||||
"Interface": "Käyttöliittymä",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "Viimeiset 90 päivää",
|
||||
"Last Active": "Viimeksi aktiivinen",
|
||||
"Last Modified": "Viimeksi muokattu",
|
||||
"Last ran": "",
|
||||
"Last reply": "Viimeksi vastattu",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP-palvelin päivitetty",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Malli '{{modelName}}' ladattiin onnistuneesti.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Malli '{{modelTag}}' on jo jonossa ladattavaksi.",
|
||||
"Model {{modelId}} not found": "Mallia {{modelId}} ei löytynyt",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Malli {{modelName}} ei kykene näkökykyyn",
|
||||
"Model {{name}} is now {{status}}": "Malli {{name}} on nyt {{status}}",
|
||||
"Model {{name}} is now hidden": "Malli {{name}} on nyt piilotettu",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Nimi",
|
||||
"Name and ID are required, please fill them out": "Nimi ja ID vaaditaan, täytä puuttuvat kentät",
|
||||
"Name your knowledge base": "Anna tietokannalle nimi",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Natiivi",
|
||||
"Never": "",
|
||||
"New": "Uusi",
|
||||
"New Automation": "",
|
||||
"New Button": "Uusi painike",
|
||||
"New Chat": "Uusi keskustelu",
|
||||
"New File": "Uusi tiedosto",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "Uusi Webhook",
|
||||
"new-channel": "uusi-kanava",
|
||||
"Next message": "Seuraava viesti",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "Ei käyttöoikeuksia. Yksityinen sinulle.",
|
||||
"No activity data": "Ei aktiivisuustietoja",
|
||||
"No authentication": "Ei todennusta",
|
||||
"No automations found": "",
|
||||
"No chats found": "Keskuteluja ei löytynyt",
|
||||
"No chats found for this user.": "Käyttäjän keskusteluja ei löytynyt.",
|
||||
"No chats found.": "Keskusteluja ei löytynyt",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "Ei dataa",
|
||||
"No data found": "Dataa ei löytynyt",
|
||||
"No distance available": "Etäisyyttä ei saatavilla",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "Vanhenemisen laittamatta jättäminen voi altistaa tietoturvariskeille.",
|
||||
"No feedback found": "Ei palautetta",
|
||||
"No file selected": "Tiedostoa ei ole valittu",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Ei faktuaalisesti oikein",
|
||||
"Not helpful": "Ei hyödyllinen",
|
||||
"Not Registered": "Ei kirjautunut",
|
||||
"Not scheduled": "",
|
||||
"Note": "Muistiinpano",
|
||||
"Note deleted successfully": "Muistiinpano poistettiin onnistuneesti",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Huomautus: Jos asetat vähimmäispistemäärän, haku palauttaa vain sellaiset asiakirjat, joiden pistemäärä on vähintään vähimmäismäärä.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "tai",
|
||||
"Ordered List": "Järjestetty lista",
|
||||
"Other": "Muu",
|
||||
"out of": "",
|
||||
"Output": "Tuloste",
|
||||
"OUTPUT": "TULOSTE",
|
||||
"Output format": "Tulosteen muoto",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Salasana",
|
||||
"Passwords do not match.": "Salasanat eivät täsmää",
|
||||
"Paste Large Text as File": "Liitä suuri teksti tiedostona",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF-asiakirja (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Poimi kuvat PDF:stä (OCR)",
|
||||
"PDF Loader Mode": "PDF latausmoodi",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "Päättely",
|
||||
"Reasoning Effort": "Päättelyn määrä",
|
||||
"Reasoning Tags": "Päättely tagit",
|
||||
"Recently Used": "",
|
||||
"Record": "Nauhoita",
|
||||
"Record voice": "Nauhoita ääntä",
|
||||
"Redirecting you to Open WebUI Community": "Ohjataan sinut OpenWebUI-yhteisöön",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "Nimetty uudelleen {{name}}",
|
||||
"Render Markdown in Previews": "Renderöi Markdown esikatseluissa",
|
||||
"Reorder Models": "Uudelleenjärjestä malleja",
|
||||
"Repeats": "",
|
||||
"Reply": "Vastaa",
|
||||
"Reply in Thread": "Vastaa ketjussa",
|
||||
"Reply to thread...": "Vastaa ketjussa...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Suorita",
|
||||
"Run All": "Suorita kaikki",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Käynnissä",
|
||||
"Running...": "Käynnissä...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Suorittaa upotustehtäviä samanaikaisesti käsittelyn nopeuttamiseksi. Poista käytöstä, jos kutsurajoituksesta tulee ongelma.",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Tallenna keskustelu",
|
||||
"Saved": "Tallennettu",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Keskustelulokien tallentaminen suoraan selaimen tallennustilaan ei ole enää tuettu. Lataa ja poista keskustelulokit napsauttamalla alla olevaa painiketta. Älä huoli, voit helposti tuoda keskustelulokit takaisin backendiin",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Vieritä haaran vaihtoon",
|
||||
"Search": "Haku",
|
||||
"Search a model": "Hae mallia",
|
||||
"Search all emojis": "Hae emojeista",
|
||||
"Search and manage user memories": "Hae ja hallinnoi käyttäjien muistoja",
|
||||
"Search and view user chat history": "Hae ja tarkastele käyttäjän keskusteluhistoriaa",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Hakupohja",
|
||||
"Search channels and channel messages": "Hae kanavia ja kanavaviestejä",
|
||||
"Search Chats": "Hae keskusteluja",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "Valitse, miten viestit jaetaan TTS-pyyntöjä varten",
|
||||
"Select Knowledge": "Valitse tietämys",
|
||||
"Select Method": "Valitse metodi",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Valitse vain yksi malli kutsuttavaksi",
|
||||
"Select view": "Valitse näkymä",
|
||||
"Selected model: {{modelName}}": "Valittu malli: {{modelName}}",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Kanavan alku",
|
||||
"Start Tag": "Aloitus tagi",
|
||||
"Starting kernel...": "Käynnistetään kerneliä...",
|
||||
"State": "",
|
||||
"Status": "Tila",
|
||||
"Status cleared successfully": "Tila poistettu onnistuneesti",
|
||||
"Status updated successfully": "Tila päivitetty onnistuneesti",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "Puhu mallille",
|
||||
"Tap to interrupt": "Napauta keskeyttääksesi",
|
||||
"Task List": "Tehtävälista",
|
||||
"Task Management": "",
|
||||
"Task Model": "Työmalli",
|
||||
"Tasks": "Tehtävät",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API -avain",
|
||||
"Tavily Extract Depth": "Tavily poiminta syvyys",
|
||||
"Tell us more:": "Kerro lisää:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika palvelimen verkko-osoite vaaditaan.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Aika ja laskenta",
|
||||
"Timeout": "Aikakatkaisu",
|
||||
"Title": "Otsikko",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Valitaksesi työkalusettejä tässä, lisää ne ensin \"Työkalut\"-työtilaan.",
|
||||
"Toast notifications for new updates": "Ilmoituspopuppien näyttäminen uusista päivityksistä",
|
||||
"Today": "Tänään",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Tänään {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "Näytä/piilota {{COUNT}} lähdettä",
|
||||
"Toggle 1 source": "Näytä/piilota 1 lähde",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "Odottaa latausta...",
|
||||
"Warning": "Varoitus",
|
||||
"Warning:": "Varoitus:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Varoitus: Tämän käyttöönotto sallii käyttäjien ladata mielivaltaista koodia palvelimelle.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Varoitus: Jupyter käyttö voi mahdollistaa mielivaltaiseen koodin suorittamiseen, mikä voi aiheuttaa tietoturvariskejä - käytä äärimmäisen varoen.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "Leveys",
|
||||
"Wikipedia": "",
|
||||
"Won": "Voitti",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Toimii top-k:n kanssa. Korkeampi arvo (esim. 0.95) johtaa monipuolisempaan tekstiin, kun taas matalampi arvo (esim. 0.5) tuottaa kohdennetumpaa ja konservatiivisempaa teksti.",
|
||||
"Workspace": "Työtila",
|
||||
"Workspace Permissions": "Työtilan käyttöoikeudet",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"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.": "Êtes-vous certain de vouloir supprimer toutes les mémoires ? Cette action est définitive.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "Assistant",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Liste disponible",
|
||||
"Available models": "",
|
||||
"Available Tools": "Outils disponibles",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Renforcer ou pénaliser des éléments spécifiques pour les réponses contraintes. Les valeurs du biais seront comprises entre -100 et 100 (inclus). (Par défaut : aucun)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Clé API Brave Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Demandes concurrentes",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Configurer",
|
||||
"Confirm": "Confirmer",
|
||||
"Confirm Password": "Confirmer le mot de passe",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Créer une nouvelle clé secrète",
|
||||
"Create note": "",
|
||||
"Create Note": "Créer une note",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Créer votre première note en cliquant sur le boutton ci-dessous",
|
||||
"Created at": "Créé le",
|
||||
"Created At": "Créé le",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Base de données",
|
||||
"Datalab Marker API": "API Datalab Marker",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Décembre",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Supprimer toutes les conversations",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Supprimer la Conversation",
|
||||
"Delete chat?": "Supprimer la conversation ?",
|
||||
"Delete File": "",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Modèle d'embedding",
|
||||
"Embedding Model Engine": "Moteur de modèle d'embedding",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "Entrez le délai d'expiration Playwright",
|
||||
"Enter Playwright WebSocket URL": "Entrez l'irl du websocket Playwright",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Entrez l'URL du proxy (par ex. https://use:password@host:port)",
|
||||
"Enter reasoning effort": "Entrez l'effort de raisonnement",
|
||||
"Enter Score": "Entrez votre score",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "Entrez le prompt système ici",
|
||||
"Enter Tavily API Key": "Entrez la clé API Tavily",
|
||||
"Enter Tavily Extract Depth": "Entrez la profondeur d'extraction de Tavily",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Entrez l'URL publique de votre WebUI. Cette URL sera utilisée pour générer des liens dans les notifications.",
|
||||
"Enter the URL of the function to import": "Entrez l'url de la fonction à importer",
|
||||
"Enter the URL to import": "Entrer l'url à importer",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}",
|
||||
"Error accessing media devices.": "Erreur lors de l'accès aux dispositifs medias",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Erreur lors du démarrage de l'enregistrement",
|
||||
"Error unloading model: {{error}}": "Erreur lors du déchargement du modèle : {{error}}",
|
||||
"Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Executer le code pour l'analyse",
|
||||
"Executing **{{NAME}}**...": "Execution **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Développer",
|
||||
"Experimental": "Expérimental",
|
||||
"Explain": "Explique",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Installer depuis une URL GitHub",
|
||||
"Instant Auto-Send After Voice Transcription": "Envoi automatique après la transcription",
|
||||
"Instructions": "",
|
||||
"Integration": "Intégration",
|
||||
"Integrations": "",
|
||||
"Interface": "Interface utilisateur",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Dernière activité",
|
||||
"Last Modified": "Dernière modification",
|
||||
"Last ran": "",
|
||||
"Last reply": "Déernière réponse",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Serveur LDAP mis à jour",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Le modèle '{{modelName}}' a été téléchargé avec succès.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Le modèle '{{modelTag}}' est déjà dans la file d'attente pour le téléchargement.",
|
||||
"Model {{modelId}} not found": "Modèle {{modelId}} introuvable",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Le modèle {{modelName}} n'a pas de capacités visuelles",
|
||||
"Model {{name}} is now {{status}}": "Le modèle {{name}} est désormais {{status}}.",
|
||||
"Model {{name}} is now hidden": "Le modèle {{name}} est maintenant masqué",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Nom d'utilisateur",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Nommez votre base de connaissances",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Natif",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Nouvelle conversation",
|
||||
"New File": "",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "nouveau-canal",
|
||||
"Next message": "Message suivant",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "Pas de conversation trouvée pour cet utilisateur.",
|
||||
"No chats found.": "Pas de conversation trouvée.",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Aucune distance disponible",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Aucun fichier sélectionné",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "Non factuellement correct",
|
||||
"Not helpful": "Pas utile",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "Suppression de la note effective",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Note : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "ou",
|
||||
"Ordered List": "",
|
||||
"Other": "Autre",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "SORTIE",
|
||||
"Output format": "Format de sortie",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Mot de passe",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "Coller un texte volumineux comme fichier",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Document au format PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Extraction d'images PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "Raisonne",
|
||||
"Reasoning Effort": "Effort de raisonnement",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "Enregistrement",
|
||||
"Record voice": "Enregistrer la voix",
|
||||
"Redirecting you to Open WebUI Community": "Redirection vers la communauté OpenWebUI",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Réorganiser les modèles",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "Répondre dans le fil de discussion",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Exécuter",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Exécution",
|
||||
"Running...": "Exécution...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "Enregistré",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "La sauvegarde des journaux de conversation directement dans le stockage de votre navigateur n'est plus prise en charge. Veuillez prendre un instant pour télécharger et supprimer vos journaux de conversation en cliquant sur le bouton ci-dessous. Ne vous inquiétez pas, vous pouvez facilement réimporter vos journaux de conversation dans le backend via",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Défilement lors du changement de branche",
|
||||
"Search": "Recherche",
|
||||
"Search a model": "Rechercher un modèle",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Base de recherche",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Rechercher des conversations",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "Sélectionnez une connaissance",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Début du canal",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Appuyez pour interrompre",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "Modèle pour les tâches",
|
||||
"Tasks": "Tâches",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Clé API Tavily",
|
||||
"Tavily Extract Depth": "Profondeur d'extraction Tavily",
|
||||
"Tell us more:": "Dites-nous en plus à ce sujet : ",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "URL du serveur Tika requise.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Titre",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Pour sélectionner des outils ici, ajoutez-les d'abord à l'espace de travail « Outils ». ",
|
||||
"Toast notifications for new updates": "Notifications toast pour les nouvelles mises à jour",
|
||||
"Today": "Aujourd'hui",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Avertissement",
|
||||
"Warning:": "Avertissement :",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Avertissement : Activer cette option permettra aux utilisateurs de télécharger du code arbitraire sur le serveur.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Avertissement : L'exécution Jupyter permet l'exécution de code arbitraire, ce qui présente des risques de sécurité importants. Procédez avec une extrême prudence.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "Victoires",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Fonctionne avec top-k. Une valeur élevée (par exemple, 0,95) conduira à un texte plus diversifié, tandis qu'une valeur plus faible (par exemple, 0,5) générera un texte plus ciblé et conservateur.",
|
||||
"Workspace": "Espace de travail",
|
||||
"Workspace Permissions": "Autorisations de l'espace de travail",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"Are you sure you want to archive all chats? This action cannot be undone.": "Êtes-vous sûr de vouloir archiver toutes les conversations ? Cette action est irréversible.",
|
||||
"Are you sure you want to clear all memories? This action cannot be undone.": "Êtes-vous certain de vouloir supprimer toutes les mémoires ? Cette action est irréversible.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "Êtes-vous sûr de vouloir supprimer \"{{NAME}}\" ?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer toutes les conversations ? Cette action est irréversible.",
|
||||
"Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "Assistant",
|
||||
"Async Embedding Processing": "Traitement asynchrone des embeddings",
|
||||
"Attach File From Knowledge": "Joindre un fichier depuis les connaissances",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Joindre une connaissance",
|
||||
"Attach Notes": "Joindre une note",
|
||||
"Attach Webpage": "Joindre une page web",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Injecte automatiquement les outils système en mode d'appel de fonctions natif (par ex. horodatage, mémoire, historique des conversations, notes, etc.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Liste disponible",
|
||||
"Available models": "Modèles disponibles",
|
||||
"Available Tools": "Outils disponibles",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Renforcer ou pénaliser des éléments spécifiques pour les réponses contraintes. Les valeurs du biais seront comprises entre -100 et 100 (inclus). (Par défaut : aucun)",
|
||||
"Brave": "Brave",
|
||||
"Brave Search API Key": "Clé API Brave Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Parcourir et interroger les bases de connaissances",
|
||||
"Builtin Tools": "Outils intégrés",
|
||||
"Bullet List": "Liste à puces",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Demandes concurrentes",
|
||||
"Config": "Configuration",
|
||||
"Config imported successfully": "Configuration importée avec succès",
|
||||
"Configuration": "",
|
||||
"Configure": "Configurer",
|
||||
"Confirm": "Confirmer",
|
||||
"Confirm Password": "Confirmer le mot de passe",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Créer une nouvelle clé secrète",
|
||||
"Create note": "Créer une note",
|
||||
"Create Note": "Créer une note",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Créer votre première note en cliquant sur le boutton ci-dessous",
|
||||
"Created at": "Créé le",
|
||||
"Created At": "Créé le",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "Contrôles des données",
|
||||
"Database": "Base de données",
|
||||
"Datalab Marker API": "API Datalab Marker",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD/MM/YYYY",
|
||||
"DDGS Backend": "DDGS Backend",
|
||||
"December": "Décembre",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "Tout supprimer",
|
||||
"Delete All Chats": "Supprimer toutes les conversations",
|
||||
"Delete all contents inside this folder": "Supprimer tout le contenu de ce dossier",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Supprimer la Conversation",
|
||||
"Delete chat?": "Supprimer la conversation ?",
|
||||
"Delete File": "Supprimer le fichier",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "Requêtes d'embedding simultanées",
|
||||
"Embedding Model": "Modèle d'embedding",
|
||||
"Embedding Model Engine": "Moteur de modèle d'embedding",
|
||||
"Emojis": "",
|
||||
"Empty message": "Message vide",
|
||||
"Enable All": "Activer tout",
|
||||
"Enable API Keys": "Autoriser les clés API",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "Entrez l'URL de l'API Perplexity",
|
||||
"Enter Playwright Timeout": "Entrez le délai d'expiration Playwright",
|
||||
"Enter Playwright WebSocket URL": "Entrez l'URL du websocket Playwright",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Entrez l'URL du proxy (par ex. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Entrez l'effort de raisonnement",
|
||||
"Enter Score": "Entrez votre score",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "Entrez le prompt système ici",
|
||||
"Enter Tavily API Key": "Entrez la clé API Tavily",
|
||||
"Enter Tavily Extract Depth": "Entrez la profondeur d'extraction de Tavily",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Entrez l'URL publique de votre WebUI. Cette URL sera utilisée pour générer des liens dans les notifications.",
|
||||
"Enter the URL of the function to import": "Entrez l'URL de la fonction à importer",
|
||||
"Enter the URL to import": "Entrez l'URL à importer",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "Erreur d'accès au répertoire",
|
||||
"Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}",
|
||||
"Error accessing media devices.": "Erreur lors de l'accès aux dispositifs medias",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Erreur lors du démarrage de l'enregistrement",
|
||||
"Error unloading model: {{error}}": "Erreur lors du déchargement du modèle : {{error}}",
|
||||
"Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "Exécuter du code",
|
||||
"Execute code for analysis": "Exécuter le code pour l'analyse",
|
||||
"Executing **{{NAME}}**...": "Exécution de **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Développer",
|
||||
"Experimental": "Expérimental",
|
||||
"Explain": "Explique",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Insérer le prompt suggéré dans la zone de saisie",
|
||||
"Install from Github URL": "Installer depuis une URL GitHub",
|
||||
"Instant Auto-Send After Voice Transcription": "Envoi automatique après la transcription",
|
||||
"Instructions": "",
|
||||
"Integration": "Intégration",
|
||||
"Integrations": "Intégrations",
|
||||
"Interface": "Interface utilisateur",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "90 derniers jours",
|
||||
"Last Active": "Dernière activité",
|
||||
"Last Modified": "Dernière modification",
|
||||
"Last ran": "",
|
||||
"Last reply": "Dernière réponse",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Serveur LDAP mis à jour",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Le modèle '{{modelName}}' a été téléchargé avec succès.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Le modèle '{{modelTag}}' est déjà dans la file d'attente pour le téléchargement.",
|
||||
"Model {{modelId}} not found": "Modèle {{modelId}} introuvable",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Le modèle {{modelName}} n'a pas de fonctionnalité de vision",
|
||||
"Model {{name}} is now {{status}}": "Le modèle {{name}} est désormais {{status}}.",
|
||||
"Model {{name}} is now hidden": "Le modèle {{name}} est maintenant masqué",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Nom d'utilisateur",
|
||||
"Name and ID are required, please fill them out": "Le nom et l'ID sont obligatoires, veuillez les remplir",
|
||||
"Name your knowledge base": "Nommez votre base de connaissances",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Natif",
|
||||
"Never": "",
|
||||
"New": "Nouveaux",
|
||||
"New Automation": "",
|
||||
"New Button": "Nouveau bouton",
|
||||
"New Chat": "Nouvelle conversation",
|
||||
"New File": "Nouveau fichier",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "Nouveau webhook",
|
||||
"new-channel": "nouveau-canal",
|
||||
"Next message": "Message suivant",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "Aucun partage. Visible uniquement par vous.",
|
||||
"No activity data": "Aucune activité",
|
||||
"No authentication": "Aucune authentification",
|
||||
"No automations found": "",
|
||||
"No chats found": "Aucune discussion trouvée",
|
||||
"No chats found for this user.": "Pas de conversation trouvée pour cet utilisateur.",
|
||||
"No chats found.": "Pas de conversation trouvée.",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "Aucune donnée",
|
||||
"No data found": "Aucune donnée trouvée",
|
||||
"No distance available": "Aucune distance disponible",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "L'absence d'expiration peut présenter des risques de sécurité.",
|
||||
"No feedback found": "Aucun avis trouvé",
|
||||
"No file selected": "Aucun fichier sélectionné",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "Non factuellement correct",
|
||||
"Not helpful": "Pas utile",
|
||||
"Not Registered": "Non enregistré",
|
||||
"Not scheduled": "",
|
||||
"Note": "Note",
|
||||
"Note deleted successfully": "Note supprimée avec succès",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Note : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "ou",
|
||||
"Ordered List": "Liste ordonnée",
|
||||
"Other": "Autre",
|
||||
"out of": "",
|
||||
"Output": "Sortie",
|
||||
"OUTPUT": "SORTIE",
|
||||
"Output format": "Format de sortie",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Mot de passe",
|
||||
"Passwords do not match.": "Les mots de passe ne correspondent pas.",
|
||||
"Paste Large Text as File": "Coller un texte volumineux comme fichier",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Document au format PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Extraction d'images PDF (OCR)",
|
||||
"PDF Loader Mode": "Mode de chargement des PDF",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "Raisonne",
|
||||
"Reasoning Effort": "Effort de raisonnement",
|
||||
"Reasoning Tags": "Balises de raisonnement",
|
||||
"Recently Used": "",
|
||||
"Record": "Enregistrement",
|
||||
"Record voice": "Enregistrer la voix",
|
||||
"Redirecting you to Open WebUI Community": "Redirection vers la communauté OpenWebUI",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "Afficher le Markdown dans les aperçus",
|
||||
"Reorder Models": "Réorganiser les modèles",
|
||||
"Repeats": "",
|
||||
"Reply": "Répondre",
|
||||
"Reply in Thread": "Répondre dans le fil de discussion",
|
||||
"Reply to thread...": "Répondre au fil de discussion...",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Exécuter",
|
||||
"Run All": "Tout exécuter",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Exécution",
|
||||
"Running...": "Exécution...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Exécute les tâches d'embedding en parallèle pour accélérer le traitement. Désactivez si les limites de débit posent problème.",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "Enregistrer la conversation",
|
||||
"Saved": "Enregistré",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "La sauvegarde des journaux de conversation directement dans le stockage de votre navigateur n'est plus prise en charge. Veuillez prendre un instant pour télécharger et supprimer vos journaux de conversation en cliquant sur le bouton ci-dessous. Ne vous inquiétez pas, vous pouvez facilement réimporter vos journaux de conversation dans le backend via",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Défilement lors du changement de branche",
|
||||
"Search": "Recherche",
|
||||
"Search a model": "Rechercher un modèle",
|
||||
"Search all emojis": "Rechercher tous les emojis",
|
||||
"Search and manage user memories": "Rechercher et gérer les éléments mémorisés de l'utilisateur",
|
||||
"Search and view user chat history": "Rechercher et afficher l'historique des conversations de l'utilisateur",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Base de recherche",
|
||||
"Search channels and channel messages": "Rechercher des canaux et des messages dans ces canaux",
|
||||
"Search Chats": "Rechercher des conversations",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "Sélectionnez comment diviser le texte du message pour les requêtes TTS",
|
||||
"Select Knowledge": "Sélectionnez une connaissance",
|
||||
"Select Method": "Sélectionner une méthode",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
|
||||
"Select view": "Sélectionner la vue",
|
||||
"Selected model: {{modelName}}": "Modèle sélectionné : {{modelName}}",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Début du canal",
|
||||
"Start Tag": "Balise de départ",
|
||||
"Starting kernel...": "Démarrage du noyau...",
|
||||
"State": "",
|
||||
"Status": "Statut",
|
||||
"Status cleared successfully": "Statut effacé avec succès",
|
||||
"Status updated successfully": "Statut mis à jour avec succès",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "Parler au modèle",
|
||||
"Tap to interrupt": "Appuyez pour interrompre",
|
||||
"Task List": "Liste pour les tâches",
|
||||
"Task Management": "",
|
||||
"Task Model": "Modèle pour les tâches",
|
||||
"Tasks": "Tâches",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Clé API Tavily",
|
||||
"Tavily Extract Depth": "Profondeur d'extraction Tavily",
|
||||
"Tell us more:": "Dites-nous en plus à ce sujet : ",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "URL du serveur Tika requise.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Horodatage",
|
||||
"Timeout": "Délai d'expiration",
|
||||
"Title": "Titre",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Pour sélectionner des outils ici, ajoutez-les d'abord à l'espace de travail « Outils ». ",
|
||||
"Toast notifications for new updates": "Notifications toast pour les nouvelles mises à jour",
|
||||
"Today": "Aujourd'hui",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Aujourd'hui à {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "Afficher/masquer {{COUNT}} sources",
|
||||
"Toggle 1 source": "Afficher/masquer 1 source",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "En attente du téléversement...",
|
||||
"Warning": "Avertissement",
|
||||
"Warning:": "Avertissement :",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Avertissement : Activer cette option permettra aux utilisateurs de télécharger du code arbitraire sur le serveur.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Avertissement : L'exécution Jupyter permet l'exécution de code arbitraire, ce qui présente des risques de sécurité importants. Procédez avec une extrême prudence.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "Largeur",
|
||||
"Wikipedia": "Wikipedia",
|
||||
"Won": "Victoires",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Fonctionne avec top-k. Une valeur élevée (par exemple, 0,95) conduira à un texte plus diversifié, tandis qu'une valeur plus faible (par exemple, 0,5) générera un texte plus ciblé et conservateur.",
|
||||
"Workspace": "Espace de travail",
|
||||
"Workspace Permissions": "Autorisations de l'espace de travail",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "¿Seguro que queres eliminar este canal?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Asistente",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "Dirección URL de AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "A dirección URL de AUTOMATIC1111 e requerida.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Lista dispoñible",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Chave de API da busqueda Brave",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Solicitudes simultáneas",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Configurar",
|
||||
"Confirm": "Confirmar",
|
||||
"Confirm Password": "Confirmar Contrasinal ",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Xerar unha nova chave secreta",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Creado en",
|
||||
"Created At": "Creado en",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Base de datos",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Decembro",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Eliminar todos os chats",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Borrar Chat",
|
||||
"Delete chat?": "Borrar o chat?",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Modelo de Embedding",
|
||||
"Embedding Model Engine": "Motor de Modelo de Embedding",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Ingrese a URL do proxy (p.ej. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Ingrese o esfuerzo de razonamiento",
|
||||
"Enter Score": "Ingrese a puntuación",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "Ingrese a chave API de Tavily",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Ingrese a URL pública da sua WebUI. Esta URL utilizaráse para generar enlaces en as notificacions.",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "Error o acceder a Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "Error o subir o Arquivo: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Ejecutar código para análisis",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "expandir",
|
||||
"Experimental": "Experimental",
|
||||
"Explain": "Explicar",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Instalar desde a URL de Github",
|
||||
"Instant Auto-Send After Voice Transcription": "Auto-Enviar despois da Transcripción de Voz",
|
||||
"Instructions": "",
|
||||
"Integration": "Integración",
|
||||
"Integrations": "",
|
||||
"Interface": "Interfaz",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Última Actividad",
|
||||
"Last Modified": "Modificado por última vez",
|
||||
"Last ran": "",
|
||||
"Last reply": "Última respuesta",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Servidor LDAP actualizado",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "0 modelo '{{modelName}}' se ha descargado correctamente.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "0 modelo '{{modelTag}}' ya está en cola para descargar.",
|
||||
"Model {{modelId}} not found": "0 modelo {{modelId}} no fue encontrado",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "O modelo {{modelName}} no es capaz de ver",
|
||||
"Model {{name}} is now {{status}}": "O modelo {{name}} ahora es {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Nombre",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Nombra a tua base de coñecementos",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Nativo",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Novo Chat",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "novo-canal",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Non ten distancia disponible",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Ningún arquivo fué seleccionado",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "No es correcto en todos os aspectos",
|
||||
"Not helpful": "No útil",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Se estableces unha puntuación mínima, a búsqueda sólo devolverá documentos con unha puntuación mayor o igual a a puntuación mínima.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "ou",
|
||||
"Ordered List": "",
|
||||
"Other": "Outro",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "SAIDA",
|
||||
"Output format": "Formato de saida",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Contrasinal ",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "Pegar texto grande como arquivo",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Documento PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Extraer imaxes de PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "Esfuerzo de razonamiento",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Grabar voz",
|
||||
"Redirecting you to Open WebUI Community": "Redireccionándote a a comunidad OpenWebUI",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Reordenar modelos",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "Responder no hilo",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Executar",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Executando",
|
||||
"Running...": "Executando...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "Gardado",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Xa non se admite gardar registros de chat directamente no almacenamiento da sua navegador. Tómese un momento para descargar y eliminar sus registros de chat haciendo clic no botón a continuación. No te preocupes, puedes volver a importar fácilmente tus registros de chat al backend a través de",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Buscar",
|
||||
"Search a model": "Buscar un modelo",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Base de búsqueda",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Chats de búsqueda",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "Selecciona coñecemento",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Selecciona sólo un modelo para llamar",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Inicio da canle",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Toca para interrumpir",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "Tareas",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "chave API de Tavily",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Dinos mais:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "URL do servidor de Tika",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Título",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Para seleccionar ferramentas aquí, agreguelas al área de trabajo \"Ferramentas\" primeiro.",
|
||||
"Toast notifications for new updates": "Notificacions emergentes para novas actualizacions",
|
||||
"Today": "Hoxe",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Advertencia",
|
||||
"Warning:": "Advertencia:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Advertencia: Habilitar esto permitirá a os usuarios subir código arbitrario no servidor.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Aviso: A execución de Jupyter permite a execución de código arbitrario, o que supón riscos de seguridade graves - procede con extrema precaución.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "Ganado",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Funciona xunto con top-k. Un valor máis alto (por exemplo, 0,95) dará lugar a un texto máis diverso, mentres que un valor máis baixo (por exemplo, 0,5) xerará un texto máis centrado e conservador.",
|
||||
"Workspace": "Espacio de traballo",
|
||||
"Workspace Permissions": "Permisos do espacio de traballo",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "כתובת URL בסיסית של AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "נדרשת כתובת URL בסיסית של AUTOMATIC1111",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "כלים זמינים",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "מפתח API של חיפוש אמיץ",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "בקשות בו-זמניות",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "אשר סיסמה",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "צור מפתח סודי חדש",
|
||||
"Create note": "",
|
||||
"Create Note": "יצירת פתק",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "נוצר ב",
|
||||
"Created At": "נוצר ב",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "מסד נתונים",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "דצמבר",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "מחק את כל הצ'אטים",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "מחק צ'אט",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "מודל הטמעה",
|
||||
"Embedding Model Engine": "מנוע מודל הטמעה",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "הזן ציון",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "ניסיוני",
|
||||
"Explain": "",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "התקן מכתובת URL של Github",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "ממשק",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "פעיל לאחרונה",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "המודל '{{modelName}}' הורד בהצלחה.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "המודל '{{modelTag}}' כבר בתור להורדה.",
|
||||
"Model {{modelId}} not found": "המודל {{modelId}} לא נמצא",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "דגם {{modelName}} אינו בעל יכולת ראייה",
|
||||
"Model {{name}} is now {{status}}": "דגם {{name}} הוא כעת {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "שם",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "צ'אט חדש",
|
||||
"New File": "",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "לא נמצאו צ'אטים ליוזר הזה.",
|
||||
"No chats found.": "לא נמצאו צ'אטים",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "לא נכון מבחינה עובדתית",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "פתק נמחק בהצלחה",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "הערה: אם תקבע ציון מינימלי, החיפוש יחזיר רק מסמכים עם ציון שגבוה או שווה לציון המינימלי.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "או",
|
||||
"Ordered List": "",
|
||||
"Other": "אחר",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "סיסמה",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "מסמך PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "חילוץ תמונות מ-PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "הקלט קול",
|
||||
"Redirecting you to Open WebUI Community": "מפנה אותך לקהילת OpenWebUI",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "פועל...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "שמירת יומני צ'אט ישירות באחסון הדפדפן שלך אינה נתמכת יותר. אנא הקדש רגע להוריד ולמחוק את יומני הצ'אט שלך על ידי לחיצה על הכפתור למטה. אל דאגה, באפשרותך לייבא מחדש בקלות את יומני הצ'אט שלך לשרת האחורי דרך",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "חפש",
|
||||
"Search a model": "חפש מודל",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "חיפוש צ'אטים",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "תחילת הערוץ",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "תרשמו יותר:",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "שם",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "היום",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "אזהרה",
|
||||
"Warning:": "אזהרה:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "רשת",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "סביבה",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 बेस यूआरएल",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 का बेस यूआरएल आवश्यक है।",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave सर्च एपीआई कुंजी",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "समवर्ती अनुरोध",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "पासवर्ड की पुष्टि कीजिये",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "नया क्रिप्टोग्राफिक क्षेत्र बनाएं",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "किस समय बनाया गया",
|
||||
"Created At": "किस समय बनाया गया",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "डेटाबेस",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "डिसेंबर",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "सभी चैट हटाएं",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "चैट हटाएं",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "मॉडेल अनुकूलन",
|
||||
"Embedding Model Engine": "एंबेडिंग मॉडल इंजन",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "स्कोर दर्ज करें",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "प्रयोगात्मक",
|
||||
"Explain": "",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Github URL से इंस्टॉल करें",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "इंटरफेस",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "पिछली बार सक्रिय",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "मॉडल '{{modelName}}' सफलतापूर्वक डाउनलोड हो गया है।",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "मॉडल '{{modelTag}}' पहले से ही डाउनलोड करने के लिए कतार में है।",
|
||||
"Model {{modelId}} not found": "मॉडल {{modelId}} नहीं मिला",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "मॉडल {{modelName}} दृष्टि सक्षम नहीं है",
|
||||
"Model {{name}} is now {{status}}": "मॉडल {{name}} अब {{status}} है",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "नाम",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "नई चैट",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "तथ्यात्मक रूप से सही नहीं है",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ध्यान दें: यदि आप न्यूनतम स्कोर निर्धारित करते हैं, तो खोज केवल न्यूनतम स्कोर से अधिक या उसके बराबर स्कोर वाले दस्तावेज़ वापस लाएगी।",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "या",
|
||||
"Ordered List": "",
|
||||
"Other": "अन्य",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "पासवर्ड",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF दस्तावेज़ (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF छवियाँ निकालें (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "आवाज रिकॉर्ड करना",
|
||||
"Redirecting you to Open WebUI Community": "आपको OpenWebUI समुदाय पर पुनर्निर्देशित किया जा रहा है",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "",
|
||||
"Running...": "चल रहा है...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "चैट लॉग को सीधे आपके ब्राउज़र के स्टोरेज में सहेजना अब समर्थित नहीं है। कृपया नीचे दिए गए बटन पर क्लिक करके डाउनलोड करने और अपने चैट लॉग को हटाने के लिए कुछ समय दें। चिंता न करें, आप आसानी से अपने चैट लॉग को बैकएंड पर पुनः आयात कर सकते हैं",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "खोजें",
|
||||
"Search a model": "एक मॉडल खोजें",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "चैट खोजें",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "चैनल की शुरुआत",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "हमें और अधिक बताएँ:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "शीर्षक",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "आज",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "चेतावनी",
|
||||
"Warning:": "चेतावनी:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "वेब",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "वर्कस्पेस",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 osnovni URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "Potreban je AUTOMATIC1111 osnovni URL.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave tražilica - API ključ",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Istodobni zahtjevi",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "",
|
||||
"Confirm Password": "Potvrdite lozinku",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Stvori novi tajni ključ",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Stvoreno",
|
||||
"Created At": "Stvoreno",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Baza podataka",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Prosinac",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Izbriši sve razgovore",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Izbriši razgovor",
|
||||
"Delete chat?": "",
|
||||
"Delete File": "",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Embedding model",
|
||||
"Embedding Model Engine": "Embedding model pogon",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "Unesite ocjenu",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Eksperimentalno",
|
||||
"Explain": "",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Instaliraj s Github URL-a",
|
||||
"Instant Auto-Send After Voice Transcription": "Trenutačno automatsko slanje nakon glasovne transkripcije",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Sučelje",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Zadnja aktivnost",
|
||||
"Last Modified": "",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' je uspješno preuzet.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' je već u redu za preuzimanje.",
|
||||
"Model {{modelId}} not found": "Model {{modelId}} nije pronađen",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Model {{modelName}} ne čita vizualne impute",
|
||||
"Model {{name}} is now {{status}}": "Model {{name}} sada je {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Ime",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Novi razgovor",
|
||||
"New File": "",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "Nije činjenično točno",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Napomena: Ako postavite minimalnu ocjenu, pretraga će vratiti samo dokumente s ocjenom većom ili jednakom minimalnoj ocjeni.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "ili",
|
||||
"Ordered List": "",
|
||||
"Other": "Ostalo",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Lozinka",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF dokument (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF izdvajanje slika (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Snimanje glasa",
|
||||
"Redirecting you to Open WebUI Community": "Preusmjeravanje na OpenWebUI zajednicu",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Pokrenuto",
|
||||
"Running...": "Pokrenuto...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Spremanje zapisnika razgovora izravno u pohranu vašeg preglednika više nije podržano. Molimo vas da odvojite trenutak za preuzimanje i brisanje zapisnika razgovora klikom na gumb ispod. Ne brinite, možete lako ponovno uvesti zapisnike razgovora u backend putem",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Pretraga",
|
||||
"Search a model": "Pretraži model",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Pretraži razgovore",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Odaberite samo jedan model za poziv",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Početak kanala",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Recite nam više:",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Naslov",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "Danas",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Upozorenje",
|
||||
"Warning:": "Upozorenje:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Web",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Radna ploča",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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.": "Biztosan törölni szeretnéd az összes memóriát? Ez a művelet nem vonható vissza.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "Biztosan törölni szeretnéd ezt a csatornát?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Asszisztens",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 alap URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 alap URL szükséges.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Elérhető lista",
|
||||
"Available models": "",
|
||||
"Available Tools": "Elérhető eszközök",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Specifikus tokenek növelése vagy büntetése korlátozott válaszokhoz. Az elfogultság értékei -100 és 100 között lesznek rögzítve (beleértve). (Alapértelmezett: nincs)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave Search API kulcs",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Párhuzamos kérések",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfigurálás",
|
||||
"Confirm": "Megerősítés",
|
||||
"Confirm Password": "Jelszó megerősítése",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Új titkos kulcs létrehozása",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Létrehozva",
|
||||
"Created At": "Létrehozva",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Adatbázis",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "December",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Minden beszélgetés törlése",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Beszélgetés törlése",
|
||||
"Delete chat?": "Törli a beszélgetést?",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Beágyazási modell",
|
||||
"Embedding Model Engine": "Beágyazási modell motor",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Add meg a proxy URL-t (pl. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Add meg az érvelési erőfeszítést",
|
||||
"Enter Score": "Add meg a pontszámot",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Írd ide a rendszer promptot",
|
||||
"Enter Tavily API Key": "Add meg a Tavily API kulcsot",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Add meg a WebUI nyilvános URL-jét. Ez az URL lesz használva az értesítésekben lévő linkek generálásához.",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "Hiba a Google Drive elérése során: {{error}}",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "Hiba a fájl feltöltése során: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Kód végrehajtása elemzéshez",
|
||||
"Executing **{{NAME}}**...": "**{{NAME}}** végrehajtása...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Kibontás",
|
||||
"Experimental": "Kísérleti",
|
||||
"Explain": "Magyarázat",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Telepítés Github URL-ről",
|
||||
"Instant Auto-Send After Voice Transcription": "Azonnali automatikus küldés hangfelismerés után",
|
||||
"Instructions": "",
|
||||
"Integration": "Integráció",
|
||||
"Integrations": "",
|
||||
"Interface": "Felület",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Utoljára aktív",
|
||||
"Last Modified": "Utoljára módosítva",
|
||||
"Last ran": "",
|
||||
"Last reply": "Utolsó válasz",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP szerver frissítve",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "A '{{modelName}}' modell sikeresen letöltve.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "A '{{modelTag}}' modell már a letöltési sorban van.",
|
||||
"Model {{modelId}} not found": "A {{modelId}} modell nem található",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "A {{modelName}} modell nem képes képfeldolgozásra",
|
||||
"Model {{name}} is now {{status}}": "A {{name}} modell most {{status}} állapotban van",
|
||||
"Model {{name}} is now hidden": "A {{name}} modell most elrejtve",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Név",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Nevezd el a tudásbázisodat",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Natív",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Új beszélgetés",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "új csatorna",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Nincs elérhető távolság",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Nincs kiválasztva fájl",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Tényszerűen nem helyes",
|
||||
"Not helpful": "Nem segítőkész",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Megjegyzés: Ha minimum pontszámot állít be, a keresés csak olyan dokumentumokat ad vissza, amelyek pontszáma nagyobb vagy egyenlő a minimum pontszámmal.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "vagy",
|
||||
"Ordered List": "",
|
||||
"Other": "Egyéb",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "KIMENET",
|
||||
"Output format": "Kimeneti formátum",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Jelszó",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "Nagy szöveg beillesztése fájlként",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF dokumentum (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF képek kinyerése (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "Érvelési erőfeszítés",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Hang rögzítése",
|
||||
"Redirecting you to Open WebUI Community": "Átirányítás az OpenWebUI közösséghez",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Modellek átrendezése",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "Válasz szálban",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Futtatás",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Fut",
|
||||
"Running...": "Fut...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "Mentve",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "A csevegési naplók közvetlen mentése a böngésző tárolójába már nem támogatott. Kérjük, szánjon egy percet a csevegési naplók letöltésére és törlésére az alábbi gomb megnyomásával. Ne aggódjon, könnyen újra importálhatja a csevegési naplókat a backend-be",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Keresés",
|
||||
"Search a model": "Modell keresése",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Keresési alap",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Beszélgetések keresése",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "Tudásbázis kiválasztása",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Csak egy modellt válasszon ki hívásra",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "A csatorna eleje",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Koppintson a megszakításhoz",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "Feladatok",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API kulcs",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Mondjon többet:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika szerver URL szükséges.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Cím",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Az eszközkészletek kiválasztásához először adja hozzá őket a \"Tools\" munkaterülethez.",
|
||||
"Toast notifications for new updates": "Felugró értesítések az új frissítésekről",
|
||||
"Today": "Ma",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Figyelmeztetés",
|
||||
"Warning:": "Figyelmeztetés:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Figyelmeztetés: Ennek engedélyezése lehetővé teszi a felhasználók számára, hogy tetszőleges kódot töltsenek fel a szerverre.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Figyelmeztetés: A Jupyter végrehajtás lehetővé teszi a tetszőleges kód végrehajtását, ami súlyos biztonsági kockázatot jelent – óvatosan folytassa.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "Nyert",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "A top-k-val együtt működik. Magasabb érték (pl. 0,95) változatosabb szöveget eredményez, alacsonyabb érték (pl. 0,5) fókuszáltabb és konzervatívabb szöveget generál.",
|
||||
"Workspace": "Munkaterület",
|
||||
"Workspace Permissions": "Munkaterület engedélyek",
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -197,6 +198,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -219,6 +221,13 @@
|
|||
"AUTOMATIC1111 Base URL": "URL Dasar AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 URL Dasar diperlukan.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -249,6 +258,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Kunci API Pencarian Berani",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -382,6 +392,7 @@
|
|||
"Concurrent Requests": "Permintaan Bersamaan",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "Konfirmasi",
|
||||
"Confirm Password": "Konfirmasi Kata Sandi",
|
||||
|
|
@ -451,6 +462,7 @@
|
|||
"Create new secret key": "Buat kunci rahasia baru",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Dibuat di",
|
||||
"Created At": "Dibuat di",
|
||||
|
|
@ -472,6 +484,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Basis data",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Desember",
|
||||
|
|
@ -502,6 +515,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Menghapus Semua Obrolan",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Menghapus Obrolan",
|
||||
"Delete chat?": "Menghapus obrolan?",
|
||||
"Delete File": "",
|
||||
|
|
@ -646,6 +660,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Model Penyematan",
|
||||
"Embedding Model Engine": "Mesin Model Penyematan",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -737,6 +752,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "Masukkan Skor",
|
||||
|
|
@ -761,6 +777,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "Masukkan Kunci API Tavily",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -800,6 +817,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -817,6 +835,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Percobaan",
|
||||
"Explain": "",
|
||||
|
|
@ -1080,6 +1099,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Instal dari URL Github",
|
||||
"Instant Auto-Send After Voice Transcription": "Kirim Otomatis Instan Setelah Transkripsi Suara",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Antarmuka",
|
||||
|
|
@ -1139,6 +1159,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Terakhir Aktif",
|
||||
"Last Modified": "Terakhir Dimodifikasi",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1245,6 +1266,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' telah berhasil diunduh.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' sudah berada dalam antrean untuk diunduh.",
|
||||
"Model {{modelId}} not found": "Model {{modelId}} tidak ditemukan",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Model {{modelName}} tidak dapat dilihat",
|
||||
"Model {{name}} is now {{status}}": "Model {{name}} sekarang menjadi {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1294,8 +1316,11 @@
|
|||
"Name": "Nama",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Obrolan Baru",
|
||||
"New File": "",
|
||||
|
|
@ -1314,9 +1339,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1327,6 +1354,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Tidak ada file yang dipilih",
|
||||
|
|
@ -1373,6 +1401,7 @@
|
|||
"Not factually correct": "Tidak benar secara faktual",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Catatan: Jika Anda menetapkan skor minimum, pencarian hanya akan mengembalikan dokumen dengan skor yang lebih besar atau sama dengan skor minimum.",
|
||||
|
|
@ -1446,6 +1475,7 @@
|
|||
"or": "atau",
|
||||
"Ordered List": "",
|
||||
"Other": "Lainnya",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1461,6 +1491,7 @@
|
|||
"Password": "Kata sandi",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Dokumen PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Ekstrak Gambar PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1565,6 +1596,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Rekam suara",
|
||||
"Redirecting you to Open WebUI Community": "Mengarahkan Anda ke Komunitas OpenWebUI",
|
||||
|
|
@ -1600,6 +1632,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1631,6 +1664,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Berjalan",
|
||||
"Running...": "Berjalan...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1641,12 +1676,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Menyimpan log obrolan secara langsung ke penyimpanan browser Anda tidak lagi didukung. Mohon luangkan waktu sejenak untuk mengunduh dan menghapus log obrolan Anda dengan mengeklik tombol di bawah ini. Jangan khawatir, Anda dapat dengan mudah mengimpor kembali log obrolan Anda ke backend melalui",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Cari",
|
||||
"Search a model": "Mencari model",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Cari Obrolan",
|
||||
|
|
@ -1716,6 +1754,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Pilih hanya satu model untuk dipanggil",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1825,6 +1864,7 @@
|
|||
"Start of the channel": "Awal saluran",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1875,8 +1915,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Ketuk untuk menyela",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Kunci API Tavily",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Beri tahu kami lebih lanjut:",
|
||||
|
|
@ -1943,6 +1985,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Judul",
|
||||
|
|
@ -1960,6 +2003,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Untuk memilih perangkat di sini, tambahkan ke ruang kerja \"Alat\" terlebih dahulu.",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "Hari ini",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2098,6 +2142,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Peringatan",
|
||||
"Warning:": "Peringatan:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Web",
|
||||
|
|
@ -2132,6 +2177,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Ruang Kerja",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"Are you sure you want to archive all chats? This action cannot be undone.": "An bhfuil tú cinnte gur mian leat na comhráite go léir a chartlannú? Ní féidir an gníomh seo a chealú.",
|
||||
"Are you sure you want to clear all memories? This action cannot be undone.": "An bhfuil tú cinnte gur mhaith leat na cuimhní go léir a ghlanadh? Ní féidir an gníomh seo a chealú.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "An bhfuil tú cinnte gur mian leat \"{{NAME}}\" a scriosadh?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "An bhfuil tú cinnte gur mian leat na comhráite go léir a scriosadh? Ní féidir an gníomh seo a chealú.",
|
||||
"Are you sure you want to delete this channel?": "An bhfuil tú cinnte gur mhaith leat an cainéal seo a scriosadh?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Cúntóir",
|
||||
"Async Embedding Processing": "Próiseáil Leabaithe Asyncrónach",
|
||||
"Attach File From Knowledge": "Ceangail Comhad ó Eolas",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Ceangail Eolas",
|
||||
"Attach Notes": "Ceangail Nótaí",
|
||||
"Attach Webpage": "Ceangail Leathanach Gréasáin",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "UATHOIBRÍOCH1111 Bun URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "Tá URL bonn UATHOIBRÍOCH1111 ag teastáil.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Uirlisí córais a instealladh go huathoibríoch i mód glaonna feidhme dúchais (m.sh., stampaí ama, cuimhne, stair comhrá, nótaí, srl.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Liosta atá ar fáil",
|
||||
"Available models": "Samhlacha atá ar fáil",
|
||||
"Available Tools": "Uirlisí ar Fáil",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Treisiú nó pionós a ghearradh ar chomharthaí sonracha as freagraí srianta. Déanfar luachanna laofachta a chlampáil idir -100 agus 100 (san áireamh). (Réamhshocrú: ceann ar bith)",
|
||||
"Brave": "Brave",
|
||||
"Brave Search API Key": "Eochair API Cuardaigh Brave",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "Brabhsáil agus fiosraigh bunachair eolais",
|
||||
"Builtin Tools": "Uirlisí Tógtha",
|
||||
"Bullet List": "Liosta Urchair",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Iarrataí Comhthéime",
|
||||
"Config": "Cumraíocht",
|
||||
"Config imported successfully": "Cumraíocht allmhairithe go rathúil",
|
||||
"Configuration": "",
|
||||
"Configure": "Cumraigh",
|
||||
"Confirm": "Deimhnigh",
|
||||
"Confirm Password": "Deimhnigh Pasfhocal",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Cruthaigh eochair rúnda nua",
|
||||
"Create note": "Cruthaigh nóta",
|
||||
"Create Note": "Cruthaigh Nóta",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Cruthaigh do chéad nóta trí chliceáil ar an gcnaipe móide thíos.",
|
||||
"Created at": "Cruthaithe ag",
|
||||
"Created At": "Cruthaithe Ag",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Rialuithe Sonraí",
|
||||
"Database": "Bunachar Sonraí",
|
||||
"Datalab Marker API": "API Marcóra Datalab",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD/MM/YYYY",
|
||||
"DDGS Backend": "Cúltaca DDGS",
|
||||
"December": "Nollaig",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "Scrios Gach Rud",
|
||||
"Delete All Chats": "Scrios Gach Comhrá",
|
||||
"Delete all contents inside this folder": "Scrios an t-ábhar go léir atá sa fhillteán seo",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Scrios Comhrá",
|
||||
"Delete chat?": "Scrios comhrá?",
|
||||
"Delete File": "Scrios Comhad",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "Iarratais Chomhuaineacha a Leabú",
|
||||
"Embedding Model": "Samhail Leabháilte",
|
||||
"Embedding Model Engine": "Inneall Samhail Leabaithe",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "Cumasaigh Gach Rud",
|
||||
"Enable API Keys": "Cumasaigh Eochracha API",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "Cuir isteach URL API Cuardaigh na Measctha",
|
||||
"Enter Playwright Timeout": "Iontráil Teorainn Ama na nDrámadóir",
|
||||
"Enter Playwright WebSocket URL": "Cuir isteach URL WebSocket Seinmeora",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Cuir isteach URL seachfhreastalaí (m.sh. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Cuir isteach iarracht réasúnaíochta",
|
||||
"Enter Score": "Iontráil Scór",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Cuir leid córais isteach anseo",
|
||||
"Enter Tavily API Key": "Cuir isteach eochair API Tavily",
|
||||
"Enter Tavily Extract Depth": "Cuir isteach Doimhneacht Sliocht Tavily",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Cuir isteach URL poiblí do WebUI. Bainfear úsáid as an URL seo chun naisc a ghiniúint sna fógraí.",
|
||||
"Enter the URL of the function to import": "Cuir isteach URL na feidhme atá le hallmhairiú",
|
||||
"Enter the URL to import": "Cuir isteach an URL le hallmhairiú",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "Earráid ag rochtain eolaire",
|
||||
"Error accessing Google Drive: {{error}}": "Earráid agus tú ag rochtain Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Earráid ag rochtain gléasanna meán.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Earráid ag tosú taifeadta.",
|
||||
"Error unloading model: {{error}}": "Earráid ag díluchtú samhail: {{error}}",
|
||||
"Error uploading file: {{error}}": "Earráid agus comhad á uaslódáil: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "Cód a fhorghníomhú",
|
||||
"Execute code for analysis": "Íosluchtaigh cód le haghaidh anailíse",
|
||||
"Executing **{{NAME}}**...": "**{{NAME}}** á rith...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Leathnaigh",
|
||||
"Experimental": "Turgnamhach",
|
||||
"Explain": "Mínigh",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Cuir isteach Moladh Leid chun Ionchur",
|
||||
"Install from Github URL": "Suiteáil ó Github URL",
|
||||
"Instant Auto-Send After Voice Transcription": "Seoladh Uathoibríoch Láithreach Tar éis",
|
||||
"Instructions": "",
|
||||
"Integration": "Comhtháthú",
|
||||
"Integrations": "Comhtháthúcháin",
|
||||
"Interface": "Comhéadan",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "90 lá seo caite",
|
||||
"Last Active": "Gníomhach Deiridh",
|
||||
"Last Modified": "Athraithe Deiridh",
|
||||
"Last ran": "",
|
||||
"Last reply": "Freagra deiridh",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Nuashonraíodh freastalaí LDAP",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Rinneadh an tsamhail '{{modelName}}' a íoslódáil go rathúil.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Tá samhail '{{modelTag}}' sa scuaine cheana féin le híoslódáil.",
|
||||
"Model {{modelId}} not found": "Níor aimsíodh an tsamhail {{modelId}}",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Níl samhail {{modelName}} in ann amharc",
|
||||
"Model {{name}} is now {{status}}": "Tá samhail {{name}} {{status}} anois",
|
||||
"Model {{name}} is now hidden": "Tá an tsamhail {{name}} i bhfolach anois",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Ainm",
|
||||
"Name and ID are required, please fill them out": "Tá ainm agus aitheantas ag teastáil, líon isteach iad le do thoil",
|
||||
"Name your knowledge base": "Cuir ainm ar do bhunachar eolais",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Dúchasach",
|
||||
"Never": "",
|
||||
"New": "Nua",
|
||||
"New Automation": "",
|
||||
"New Button": "Cnaipe Nua",
|
||||
"New Chat": "Comhrá Nua",
|
||||
"New File": "Comhad Nua",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "Gréasáin Nua",
|
||||
"new-channel": "nua-chainéil",
|
||||
"Next message": "An chéad teachtaireacht eile",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "Gan aon deontais rochtana. Príobháideach duitse.",
|
||||
"No activity data": "Gan aon sonraí gníomhaíochta",
|
||||
"No authentication": "Gan fíordheimhniú",
|
||||
"No automations found": "",
|
||||
"No chats found": "Ní bhfuarthas aon chomhráite",
|
||||
"No chats found for this user.": "Ní bhfuarthas aon chomhráite don úsáideoir seo.",
|
||||
"No chats found.": "Ní bhfuarthas aon chomhráite.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "Gan aon sonraí",
|
||||
"No data found": "Níor aimsíodh aon sonraí",
|
||||
"No distance available": "Níl achar ar fáil",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "Ní féidir le haon dáta éaga rioscaí slándála a chruthú.",
|
||||
"No feedback found": "Níor aimsíodh aon aiseolas",
|
||||
"No file selected": "Níl aon chomhad roghnaithe",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "Níl sé ceart go fírineach",
|
||||
"Not helpful": "Gan a bheith cabhrach",
|
||||
"Not Registered": "Gan Clárú",
|
||||
"Not scheduled": "",
|
||||
"Note": "Nóta",
|
||||
"Note deleted successfully": "Scriosadh an nóta go rathúil",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nóta: Má shocraíonn tú íosscór, ní thabharfaidh an cuardach ach doiciméid a bhfuil scór níos mó ná nó cothrom leis an scór íosta ar ais.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "nó",
|
||||
"Ordered List": "Liosta Ordaithe",
|
||||
"Other": "Eile",
|
||||
"out of": "",
|
||||
"Output": "Aschur",
|
||||
"OUTPUT": "ASCHUR",
|
||||
"Output format": "Formáid aschuir",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Pasfhocal",
|
||||
"Passwords do not match.": "Ní hionann na pasfhocail.",
|
||||
"Paste Large Text as File": "Greamaigh Téacs Mór mar Chomhad",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Doiciméad PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Íomhánna Sliocht PDF (OCR)",
|
||||
"PDF Loader Mode": "Mód Luchtaithe PDF",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "Cúis",
|
||||
"Reasoning Effort": "Iarracht Réasúnúcháin",
|
||||
"Reasoning Tags": "Clibeanna Réasúnaíochta",
|
||||
"Recently Used": "",
|
||||
"Record": "Taifead",
|
||||
"Record voice": "Taifead guth",
|
||||
"Redirecting you to Open WebUI Community": "Tú a atreorú chuig OpenWebUI Community",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "Rindreáil Markdown i Réamhamhairc",
|
||||
"Reorder Models": "Athordú na Samhlacha",
|
||||
"Repeats": "",
|
||||
"Reply": "Freagra",
|
||||
"Reply in Thread": "Freagra i Snáithe",
|
||||
"Reply to thread...": "Freagra ar an snáithe...",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Rith",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Ag rith",
|
||||
"Running...": "Ag rith...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Ritheann sé tascanna leabaithe ag an am céanna chun luas a chur leis an bpróiseáil. Múch é má bhíonn teorainneacha ráta ina bhfadhb.",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Sábháil Comhrá",
|
||||
"Saved": "Shábháil",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Ní thacaítear le logaí comhrá a shábháil go díreach chuig stóráil do bhrabhsálaí Tóg nóiméad chun do logaí comhrá a íoslódáil agus a scriosadh trí chliceáil an cnaipe thíos. Ná bíodh imní ort, is féidir leat do logaí comhrá a athiompórtáil go héasca chuig an gcúltaca trí",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Scrollaigh ar Athrú Brainse",
|
||||
"Search": "Cuardaigh",
|
||||
"Search a model": "Cuardaigh samhail",
|
||||
"Search all emojis": "Cuardaigh gach emoji",
|
||||
"Search and manage user memories": "Cuardaigh agus bainistigh cuimhní úsáideora",
|
||||
"Search and view user chat history": "Cuardaigh agus féach ar stair comhrá úsáideora",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Bonn Cuardaigh",
|
||||
"Search channels and channel messages": "Cuardaigh bealaí agus teachtaireachtaí bealaí",
|
||||
"Search Chats": "Cuardaigh Comhráite",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "Roghnaigh conas téacs teachtaireachta a roinnt le haghaidh iarratais TTS",
|
||||
"Select Knowledge": "Roghnaigh Eolais",
|
||||
"Select Method": "Roghnaigh Modh",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Roghnaigh samhail amháin le glaoch",
|
||||
"Select view": "Roghnaigh radharc",
|
||||
"Selected model: {{modelName}}": "Samhail roghnaithe: {{modelName}}",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Tús an chainéil",
|
||||
"Start Tag": "Clib Tosaigh",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "Stádas",
|
||||
"Status cleared successfully": "Glanadh an stádais go rathúil",
|
||||
"Status updated successfully": "Nuashonraíodh an stádas go rathúil",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "Labhair leis an tSamhail",
|
||||
"Tap to interrupt": "Tapáil chun cur isteach",
|
||||
"Task List": "Liosta Tascanna",
|
||||
"Task Management": "",
|
||||
"Task Model": "Samhail Thasc",
|
||||
"Tasks": "Tascanna",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Eochair API Tavily",
|
||||
"Tavily Extract Depth": "Doimhneacht Sliocht Tavily",
|
||||
"Tell us more:": "Inis dúinn níos mó:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Teastaíonn URL Freastalaí Tika.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "Am & Ríomh",
|
||||
"Timeout": "Am istigh",
|
||||
"Title": "Teideal",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Chun trealamh uirlisí a roghnú anseo, cuir iad leis an spás oibre \"Uirlisí\" ar dtús.",
|
||||
"Toast notifications for new updates": "Fógraí tósta le haghaidh nuashonruithe nua",
|
||||
"Today": "Inniu",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Inniu ag {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "Athraigh {{COUNT}} foinsí",
|
||||
"Toggle 1 source": "Athraigh foinse amháin",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "Ag fanacht le huaslódáil...",
|
||||
"Warning": "Rabhadh",
|
||||
"Warning:": "Rabhadh:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Rabhadh: Cuirfidh sé seo ar chumas úsáideoirí cód treallach a uaslódáil ar an bhfreastalaí.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Rabhadh: Trí fhorghníomhú Jupyter is féidir cód a fhorghníomhú go treallach, rud a chruthaíonn mór-rioscaí slándála - bí fíorchúramach.",
|
||||
"Web": "Gréasán",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "Leithead",
|
||||
"Wikipedia": "Vicipéid",
|
||||
"Won": "Bhuaigh",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Oibríonn sé le barr-k. Beidh téacs níos éagsúla mar thoradh ar luach níos airde (m.sh., 0.95), agus ginfidh luach níos ísle (m.sh., 0.5) téacs níos dírithe agus níos coimeádaí.",
|
||||
"Workspace": "Spás oibre",
|
||||
"Workspace Permissions": "Ceadanna Spás Oibre",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"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.": "Sei sicuro di voler cancellare tutte le memorie? Questa operazione non può essere annullata.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "Sei sicuro di voler eliminare questo canale?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "Assistente",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "URL base AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "L'URL base AUTOMATIC1111 è obbligatorio.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Elenco disponibile",
|
||||
"Available models": "",
|
||||
"Available Tools": "Strumenti disponibili",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Potenziare o penalizzare token specifici per risposte vincolate. I valori di bias saranno limitati tra -100 e 100 (incluso). (Predefinito: nessuno)",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Chiave API di ricerca Brave",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Richieste simultanee",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "Configura",
|
||||
"Confirm": "Conferma",
|
||||
"Confirm Password": "Conferma password",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Crea nuova chiave segreta",
|
||||
"Create note": "",
|
||||
"Create Note": "Crea nota",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Crea la tua prima nota cliccando sul pulsante + sotto.",
|
||||
"Created at": "Creato il",
|
||||
"Created At": "Creato il",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Database",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Dicembre",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Elimina tutte le chat",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Elimina chat",
|
||||
"Delete chat?": "Elimina chat?",
|
||||
"Delete File": "",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Modello Embedding",
|
||||
"Embedding Model Engine": "Motore Modello di Embedding",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "Inserisci Timeout di Playwright",
|
||||
"Enter Playwright WebSocket URL": "Inserisci l'URL WebSocket di Playwright",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Inserisci l'URL del proxy (ad es. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Inserisci lo sforzo di ragionamento",
|
||||
"Enter Score": "Inserisci Punteggio",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "Inserisci il prompt di sistema qui",
|
||||
"Enter Tavily API Key": "Inserisci Chiave API Tavily",
|
||||
"Enter Tavily Extract Depth": "Inserisci la Profondità di Estrazione Tavily",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Inserisci l'URL pubblico del tuo WebUI. Questo URL verrà utilizzato per generare collegamenti nelle notifiche.",
|
||||
"Enter the URL of the function to import": "Inserisci la URL della funzione di importazione",
|
||||
"Enter the URL to import": "Inserisci la URL della importazione",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "Errore durante l'accesso a Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Errore durante l'accesso ai dispositivi multimediali.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Errore durante l'avvio della registrazione.",
|
||||
"Error unloading model: {{error}}": "Errore durante lo scaricamento della memoria del modello: {{error}}",
|
||||
"Error uploading file: {{error}}": "Errore durante il caricamento del file: {{error}}",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Esegui codice per analisi",
|
||||
"Executing **{{NAME}}**...": "Esecuzione **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Espandi",
|
||||
"Experimental": "Sperimentale",
|
||||
"Explain": "Spiega",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Eseguire l'installazione dall'URL di Github",
|
||||
"Instant Auto-Send After Voice Transcription": "Invio automatico istantaneo dopo la trascrizione vocale",
|
||||
"Instructions": "",
|
||||
"Integration": "Integrazione",
|
||||
"Integrations": "",
|
||||
"Interface": "Interfaccia",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Ultima attività",
|
||||
"Last Modified": "Ultima modifica",
|
||||
"Last ran": "",
|
||||
"Last reply": "Ultima risposta",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Server LDAP aggiornato",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Il modello '{{modelName}}' è stato scaricato con successo.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Il modello '{{modelTag}}' è già in coda per il download.",
|
||||
"Model {{modelId}} not found": "Modello {{modelId}} non trovato",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Il modello {{modelName}} non è in grado di vedere",
|
||||
"Model {{name}} is now {{status}}": "Il modello {{name}} è ora {{status}}",
|
||||
"Model {{name}} is now hidden": "Il modello {{name}} è ora nascosto",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Nome",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Dai un nome alla tua base di conoscenza",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Nativo",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Nuova chat",
|
||||
"New File": "",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "nuovo-canale",
|
||||
"Next message": "Messaggio successivo",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "Nessuna chat trovata per questo utente.",
|
||||
"No chats found.": "Nessuna chat trovata.",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Nessuna distanza disponibile",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Nessun file selezionato",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "Non corretto dal punto di vista fattuale",
|
||||
"Not helpful": "Non utile",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "Nota eliminata con successo",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: se imposti un punteggio minimo, la ricerca restituirà solo i documenti con un punteggio maggiore o uguale al punteggio minimo.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "o",
|
||||
"Ordered List": "",
|
||||
"Other": "Altro",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "OUTPUT",
|
||||
"Output format": "Formato di output",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Password",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "Incolla Molto Testo come File",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Documento PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Estrazione Immagini PDF (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "Sforzo di ragionamento",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "Registra",
|
||||
"Record voice": "Registra voce",
|
||||
"Redirecting you to Open WebUI Community": "Reindirizzamento alla comunità OpenWebUI",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Riordina Modelli",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "Rispondi nel thread",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Esegui",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "In esecuzione",
|
||||
"Running...": "In esecuzione...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "Salvato",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Il salvataggio dei registri della chat direttamente nell'archivio del browser non è più supportato. Si prega di dedicare un momento per scaricare ed eliminare i registri della chat facendo clic sul pulsante in basso. Non preoccuparti, puoi facilmente reimportare i registri della chat nel backend tramite",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Scorri al cambio di branch",
|
||||
"Search": "Cerca",
|
||||
"Search a model": "Cerca un modello",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Cerca base",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Cerca nelle chat",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "Seleziona conoscenza",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Seleziona solo un modello da chiamare",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Inizio del canale",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Tocca per interrompere",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "Modello Task",
|
||||
"Tasks": "Attività",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Chiave API Tavily",
|
||||
"Tavily Extract Depth": "Profondita' di estrazione Tavily",
|
||||
"Tell us more:": "Raccontaci di più:",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "L'URL del server Tika è obbligatorio.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Titolo",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Per selezionare i toolkit qui, aggiungili prima allo spazio di lavoro \"Strumenti\".",
|
||||
"Toast notifications for new updates": "Notifiche toast per nuovi aggiornamenti",
|
||||
"Today": "Oggi",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Attenzione",
|
||||
"Warning:": "Attenzione:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Attenzione: abilitando questo, gli utenti potranno caricare codice arbitrario sul server.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Attenzione: l'esecuzione di Jupyter consente l'esecuzione di codice arbitrario, comportando gravi rischi per la sicurezza: procedere con estrema cautela.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "Vinto",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Lavora insieme a top-k. Un valore più alto (ad esempio, 0,95) porterà a un testo più vario, mentre un valore più basso (ad esempio, 0,5) genererà un testo più focalizzato e conservativo.",
|
||||
"Workspace": "Spazio di lavoro",
|
||||
"Workspace Permissions": "Permessi dello spazio di lavoro",
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -197,6 +198,7 @@
|
|||
"Assistant": "アシスタント",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "ナレッジからファイルを添付",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "ナレッジを追加",
|
||||
"Attach Notes": "ノートを追加",
|
||||
"Attach Webpage": "ウェブページを追加",
|
||||
|
|
@ -219,6 +221,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 ベース URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 ベース URL が必要です。",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "ネイティブの関数呼び出しモードにおいて、システムツール(例: タイムスタンプ、メモリー、チャット履歴、ノートなど)を自動的に注入します",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "利用可能リスト",
|
||||
"Available models": "",
|
||||
"Available Tools": "利用可能ツール",
|
||||
|
|
@ -249,6 +258,7 @@
|
|||
"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": "Brave Search APIキー",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "組み込みツール",
|
||||
"Bullet List": "箇条書きリスト",
|
||||
|
|
@ -382,6 +392,7 @@
|
|||
"Concurrent Requests": "同時リクエスト",
|
||||
"Config": "",
|
||||
"Config imported successfully": "設定のインポートに成功しました",
|
||||
"Configuration": "",
|
||||
"Configure": "設定",
|
||||
"Confirm": "確認",
|
||||
"Confirm Password": "パスワードの確認",
|
||||
|
|
@ -451,6 +462,7 @@
|
|||
"Create new secret key": "新しいシークレットキーを作成",
|
||||
"Create note": "ノートを作成",
|
||||
"Create Note": "ノートを作成",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "プラスボタンをクリックして最初のノートを作成します。",
|
||||
"Created at": "作成日時",
|
||||
"Created At": "作成日時",
|
||||
|
|
@ -472,6 +484,7 @@
|
|||
"Data Controls": "データコントロール",
|
||||
"Database": "データベース",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "YYYY/MM/DD",
|
||||
"DDGS Backend": "",
|
||||
"December": "12月",
|
||||
|
|
@ -502,6 +515,7 @@
|
|||
"Delete All": "すべて削除する",
|
||||
"Delete All Chats": "すべてのチャットを削除",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "チャットを削除",
|
||||
"Delete chat?": "チャットを削除しますか?",
|
||||
"Delete File": "",
|
||||
|
|
@ -646,6 +660,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "埋め込みモデル",
|
||||
"Embedding Model Engine": "埋め込みモデルエンジン",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "API キーを有効にする",
|
||||
|
|
@ -737,6 +752,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "Playwrightタイムアウトを入力",
|
||||
"Enter Playwright WebSocket URL": "Playwright WebSocket URLを入力",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "プロキシURLを入力 (例: https://user:password@host:port)",
|
||||
"Enter reasoning effort": "推論の努力を入力",
|
||||
"Enter Score": "スコアを入力",
|
||||
|
|
@ -761,6 +777,7 @@
|
|||
"Enter system prompt here": "システムプロンプトをここに入力",
|
||||
"Enter Tavily API Key": "Tavily API Keyを入力",
|
||||
"Enter Tavily Extract Depth": "Tavily Extract Depthを入力",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUIの公開URLを入力してください。このURLは通知でリンクを生成するために使用されます。",
|
||||
"Enter the URL of the function to import": "インポートするFunctionのURLを入力",
|
||||
"Enter the URL to import": "インポートするURLを入力",
|
||||
|
|
@ -800,6 +817,7 @@
|
|||
"Error accessing directory": "ディレクトリへのアクセスに失敗しました",
|
||||
"Error accessing Google Drive: {{error}}": "Google Driveへのアクセスに失敗しました: {{error}}",
|
||||
"Error accessing media devices.": "メディアデバイスへのアクセスに失敗しました。",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "録音を開始できませんでした。",
|
||||
"Error unloading model: {{error}}": "モデルのアンロードに失敗しました: {{error}}",
|
||||
"Error uploading file: {{error}}": "ファイルアップロードに失敗しました: {{error}}",
|
||||
|
|
@ -817,6 +835,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "コードの分析に実行",
|
||||
"Executing **{{NAME}}**...": "**{{NAME}}**を実行中...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "展開",
|
||||
"Experimental": "実験的",
|
||||
"Explain": "説明",
|
||||
|
|
@ -1080,6 +1099,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Github URLからインストール",
|
||||
"Instant Auto-Send After Voice Transcription": "音声文字変換後に自動送信",
|
||||
"Instructions": "",
|
||||
"Integration": "連携",
|
||||
"Integrations": "連携",
|
||||
"Interface": "インターフェース",
|
||||
|
|
@ -1139,6 +1159,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "最終アクティブ",
|
||||
"Last Modified": "最終変更",
|
||||
"Last ran": "",
|
||||
"Last reply": "最終応答",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAPサーバーの更新に成功しました",
|
||||
|
|
@ -1245,6 +1266,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "モデル '{{modelName}}' が正常にダウンロードされました。",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "モデル '{{modelTag}}' はすでにダウンロード待機中です。",
|
||||
"Model {{modelId}} not found": "モデル {{modelId}} が見つかりません",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "モデル {{modelName}} は視覚に対応していません",
|
||||
"Model {{name}} is now {{status}}": "モデル {{name}} は {{status}} になりました。",
|
||||
"Model {{name}} is now hidden": "モデル {{name}} は非表示になりました。",
|
||||
|
|
@ -1294,8 +1316,11 @@
|
|||
"Name": "名前",
|
||||
"Name and ID are required, please fill them out": "名前とIDは必須です。項目を入力してください。",
|
||||
"Name your knowledge base": "ナレッジベースに名前を付ける",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "ネイティブ",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "新しいボタン",
|
||||
"New Chat": "新しいチャット",
|
||||
"New File": "",
|
||||
|
|
@ -1314,9 +1339,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "新しいチャンネル",
|
||||
"Next message": "次のメッセージ",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "アクセス権は付与されていません。あなただけが利用できます。",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "チャットが見つかりません。",
|
||||
"No chats found for this user.": "このユーザーのチャットが見つかりません。",
|
||||
"No chats found.": "チャットが見つかりません。",
|
||||
|
|
@ -1327,6 +1354,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "距離が利用できません",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "ファイルが選択されていません",
|
||||
|
|
@ -1373,6 +1401,7 @@
|
|||
"Not factually correct": "事実と異なる",
|
||||
"Not helpful": "役に立たない",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "ノートが正常に削除されました",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:最小スコアを設定した場合、検索は最小スコア以上のスコアを持つドキュメントのみを返します。",
|
||||
|
|
@ -1446,6 +1475,7 @@
|
|||
"or": "または",
|
||||
"Ordered List": "順序つきリスト",
|
||||
"Other": "その他",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "出力",
|
||||
"Output format": "出力形式",
|
||||
|
|
@ -1461,6 +1491,7 @@
|
|||
"Password": "パスワード",
|
||||
"Passwords do not match.": "パスワードが一致しません。",
|
||||
"Paste Large Text as File": "大きなテキストをファイルとして貼り付ける",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF ドキュメント (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF 画像抽出 (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1565,6 +1596,7 @@
|
|||
"Reason": "理由",
|
||||
"Reasoning Effort": "推理の努力",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "録音",
|
||||
"Record voice": "音声を録音",
|
||||
"Redirecting you to Open WebUI Community": "OpenWebUI コミュニティにリダイレクトしています",
|
||||
|
|
@ -1600,6 +1632,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "モデルを並べ替え",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "スレッドで返信",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1631,6 +1664,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "実行",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "実行中",
|
||||
"Running...": "実行中...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1641,12 +1676,15 @@
|
|||
"Save Chat": "チャットを保存",
|
||||
"Saved": "保存しました。",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "チャットログをブラウザのストレージに直接保存する機能はサポートされなくなりました。下のボタンをクリックして、チャットログをダウンロードして削除してください。ご心配なく。チャットログは、次の方法でバックエンドに簡単に再インポートできます。",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "ブランチ変更時にスクロール",
|
||||
"Search": "検索",
|
||||
"Search a model": "モデルを検索",
|
||||
"Search all emojis": "絵文字を検索",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "ベースを検索",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "チャットの検索",
|
||||
|
|
@ -1716,6 +1754,7 @@
|
|||
"Select how to split message text for TTS requests": "TTSリクエストのテキスト分割方法を選択",
|
||||
"Select Knowledge": "ナレッジベースの選択",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "1つのモデルを呼び出すには、1つのモデルを選択してください。",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1825,6 +1864,7 @@
|
|||
"Start of the channel": "チャンネルの開始",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "ステータス",
|
||||
"Status cleared successfully": "正常にステータスをクリアしました",
|
||||
"Status updated successfully": "正常にステータスを更新しました",
|
||||
|
|
@ -1875,8 +1915,10 @@
|
|||
"Talk to Model": "モデルに話しかける",
|
||||
"Tap to interrupt": "タップして中断",
|
||||
"Task List": "タスクリスト",
|
||||
"Task Management": "",
|
||||
"Task Model": "タスクモデル",
|
||||
"Tasks": "タスク",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily APIキー",
|
||||
"Tavily Extract Depth": "Tavily抽出深度",
|
||||
"Tell us more:": "もっと話してください:",
|
||||
|
|
@ -1943,6 +1985,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "Tika Server URLが必要です。",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "タイトル",
|
||||
|
|
@ -1960,6 +2003,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "ここでツールキットを選択するには、まず \"Tools\" ワークスペースに追加してください。",
|
||||
"Toast notifications for new updates": "新しい更新のトースト通知",
|
||||
"Today": "今日",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "今日 {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2098,6 +2142,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "警告",
|
||||
"Warning:": "警告:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "警告: これを有効にすると、ユーザーがサーバー上で任意のコードをアップロードできるようになります。",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "警告: Jupyter 実行は任意のコード実行を可能にし、重大なセキュリティリスクを伴います。極めて慎重に進めてください。",
|
||||
"Web": "ウェブ",
|
||||
|
|
@ -2132,6 +2177,7 @@
|
|||
"Width": "幅",
|
||||
"Wikipedia": "",
|
||||
"Won": "勝ち",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "top-k と併用されます。値が高い(例:0.95)ほど多様なテキストが生成され、低い値(例:0.5)ではより集中した保守的なテキストが生成されます。",
|
||||
"Workspace": "ワークスペース",
|
||||
"Workspace Permissions": "ワークスペースの権限",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "დამხმარე",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "ცოდნის მიმაგრება",
|
||||
"Attach Notes": "შენიშვნების მიმაგრება",
|
||||
"Attach Webpage": "ვებგვერდის მიმაგრება",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 საბაზისო მისამართი",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 საბაზისო მისამართი აუცილებელია.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "ხელმისაწვდომი სია",
|
||||
"Available models": "",
|
||||
"Available Tools": "ხელმისაწვდომი ხელსაწყოები",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave Search API-ის გასაღები",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "დაუნომრავი სია",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "ერთდროული მოთხოვნები",
|
||||
"Config": "",
|
||||
"Config imported successfully": "კონფიგურაცია წარმატებით იქნა შემოტანილი",
|
||||
"Configuration": "",
|
||||
"Configure": "მორგება",
|
||||
"Confirm": "დადასტურება",
|
||||
"Confirm Password": "გაიმეორეთ პაროლი",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "ახალი საიდუმლო გასაღების შექმნა",
|
||||
"Create note": "",
|
||||
"Create Note": "შენიშვნის შექმნა",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "შექმნის დრო",
|
||||
"Created At": "შექმნის დრო",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "მონაცემთა კონტროლი",
|
||||
"Database": "მონაცემთა ბაზა",
|
||||
"Datalab Marker API": "Datalab Marker-ის API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "დდ/თთ/წწწწ",
|
||||
"DDGS Backend": "",
|
||||
"December": "დეკემბერი",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "ყველა ჩატის წაშლა",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "საუბრის წაშლა",
|
||||
"Delete chat?": "წავშალო ჩატი?",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "მოდელის ჩაშენება",
|
||||
"Embedding Model Engine": "ჩაშენებული მოდელის ძრავა",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "შეიყვანეთ პროქსის URL (მაგ: https://user:password@host:port)",
|
||||
"Enter reasoning effort": "შეიყვანეთ მსჯელობის ძალისხმევა",
|
||||
"Enter Score": "შეიყვანეთ ქულა",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "შეიყვანეთ URL შემოსატანად",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "საქაღალდესთან წვდომის შეცდომა",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "ჩაწერის დაწყების შეცდომა.",
|
||||
"Error unloading model: {{error}}": "მოდელის ატვირთვის სეცდომა: {{error}}",
|
||||
"Error uploading file: {{error}}": "ფაილის ატვირთვის შეცდომა: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "ვასრულებ **{{NAME}}**-ს...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "გაფართოება",
|
||||
"Experimental": "ექსპერიმენტული",
|
||||
"Explain": "ახსნა",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "დაყენება Github-ის ბმულიდან",
|
||||
"Instant Auto-Send After Voice Transcription": "",
|
||||
"Instructions": "",
|
||||
"Integration": "ინტეგრაცია",
|
||||
"Integrations": "ინტეგრაციები",
|
||||
"Interface": "ინტერფეისი",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "ბოლოს აქტიური",
|
||||
"Last Modified": "ბოლო ცვლილება",
|
||||
"Last ran": "",
|
||||
"Last reply": "ბოლო პასუხი",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP სერვერი განახლდა",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "მოდელის „{{modelName}}“ გადმოწერა წარმატებით დასრულდა.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "მოდელი „{{modelTag}}“ უკვე გადმოწერის რიგშია.",
|
||||
"Model {{modelId}} not found": "მოდელი {{modelId}} აღმოჩენილი არაა",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Model {{modelName}} is not vision capable",
|
||||
"Model {{name}} is now {{status}}": "Model {{name}} is now {{status}}",
|
||||
"Model {{name}} is now hidden": "მოდელი {{name}} ახლა დამალულია",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "სახელი",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "საკუთარი",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "ახალი ღილაკი",
|
||||
"New Chat": "ახალი მიმოწერა",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "new-channel",
|
||||
"Next message": "შემდეგი შეტყობინება",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "ავთენტიკაციის გარეშე",
|
||||
"No automations found": "",
|
||||
"No chats found": "ჩატების გარეშე",
|
||||
"No chats found for this user.": "ამ მომხმარებლისთვის ჩატები აღმოჩენილი არაა.",
|
||||
"No chats found.": "ჩატების გარეშე.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "მანძილი ხელმისაწვდომი არაა",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "ფაილი არჩეული არაა",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "მთლად სწორი არაა",
|
||||
"Not helpful": "სასარგებლო არაა",
|
||||
"Not Registered": "არაა რეგისტრირებული",
|
||||
"Not scheduled": "",
|
||||
"Note": "შენიშვნა",
|
||||
"Note deleted successfully": "შენიშვნა წარმატებით წაიშალა",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "შენიშვნა: თუ თქვენ დააყენებთ მინიმალურ ქულას, ძებნა დააბრუნებს მხოლოდ დოკუმენტებს მინიმალური ქულის მეტი ან ტოლი ქულით.",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "ან",
|
||||
"Ordered List": "დალაგებული სია",
|
||||
"Other": "სხვა",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "გამოტანა",
|
||||
"Output format": "გამოტანის ფორმატი",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "პაროლი",
|
||||
"Passwords do not match.": "პაროლები არ ემთხვევა.",
|
||||
"Paste Large Text as File": "დიდი ტექსტის ჩასმა ფაილის სახით",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF დოკუმენტი (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF იდან ამოღებული სურათები (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "მიზეზი",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "ჩაწერა",
|
||||
"Record voice": "ხმის ჩაწერა",
|
||||
"Redirecting you to Open WebUI Community": "მიმდინარეობს გადამისამართება OpenWebUI-ის საზოგადოების საიტზე",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "მოდელების გადალაგება",
|
||||
"Repeats": "",
|
||||
"Reply": "პასუხი",
|
||||
"Reply in Thread": "ნაკადში პასუხი",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "გაშვება",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "გაშვებულია",
|
||||
"Running...": "გაშვებულია...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "ჩატის შენახვა",
|
||||
"Saved": "შენახულია",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "ჩეთის ისტორიის შენახვა პირდაპირ თქვენი ბრაუზერის საცავში აღარ არის მხარდაჭერილი. გთხოვთ, დაუთმოთ და წაშალოთ თქვენი ჩატის ჟურნალები ქვემოთ მოცემულ ღილაკზე დაწკაპუნებით. არ ინერვიულოთ, თქვენ შეგიძლიათ მარტივად ხელახლა შემოიტანოთ თქვენი ჩეთის ისტორია ბექენდში",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "ძებნა",
|
||||
"Search a model": "მოდელის ძებნა",
|
||||
"Search all emojis": "ძებნა ყველა ემოჯიში",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "ბაზის ძებნა",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "ძებნა ჩატებში",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "აირჩიეთ ცოდნა",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "",
|
||||
"Select view": "აირჩიეთ ხედი",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "არხის დასაწყისი",
|
||||
"Start Tag": "დაწყების ჭდე",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "დაატყაპუნეთ შესაწყვეტად",
|
||||
"Task List": "ამოცანების სია",
|
||||
"Task Management": "",
|
||||
"Task Model": "დავალების მოდელი",
|
||||
"Tasks": "ამოცანები",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "გვითხარით მეტი:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika-ის სერვერის URL აუცილებელია.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "სათაური",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "დღეს",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "დღეს, {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "გაფრთხილება",
|
||||
"Warning:": "გაფრთხილება:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "ვები",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "სიგანე",
|
||||
"Wikipedia": "",
|
||||
"Won": "ვონი",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "სამუშაო სივრცე",
|
||||
"Workspace Permissions": "სამუშაო სივრცის წვდომები",
|
||||
|
|
|
|||
|
|
@ -182,6 +182,7 @@
|
|||
"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.": "Tetḥeqqeḍ tebɣiḍ ad tekkseḍ akk aktayen? Tigawt-a ur tettwakkes ara.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "Tetḥeqqeḍ tebɣiḍ ad tekkseḍ targa-a?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -198,6 +199,7 @@
|
|||
"Assistant": "Amallal",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Qqen-as tamessunt",
|
||||
"Attach Notes": "Qqen-as tizmilin",
|
||||
"Attach Webpage": "Qqen-as asebter web",
|
||||
|
|
@ -220,6 +222,13 @@
|
|||
"AUTOMATIC1111 Base URL": "URL n taffa i AUTOMATIC1111",
|
||||
"AUTOMATIC1111 Base URL is required.": "L'URL n uzadur {AUTOMATIC1111} yettwasra.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Tabdart i yellan",
|
||||
"Available models": "",
|
||||
"Available Tools": "Ifecka i yellan",
|
||||
|
|
@ -250,6 +259,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Aserkem neɣ angal n yiqenṭaren ulmisen i tririt yettwaḥeṛsen. Azalen ibirusanen ad ttwakecfen gar 100 d 100 (asekcam). Lmut: ala",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Tasarut API n Brave Search",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "Tabdart s tlilac",
|
||||
|
|
@ -383,6 +393,7 @@
|
|||
"Concurrent Requests": "Tuttriwin timiranin",
|
||||
"Config": "",
|
||||
"Config imported successfully": "Tawila tettwakekter-d akken iwata",
|
||||
"Configuration": "",
|
||||
"Configure": "Swel",
|
||||
"Confirm": "Sentem",
|
||||
"Confirm Password": "Sentem awal n uɛeddi",
|
||||
|
|
@ -452,6 +463,7 @@
|
|||
"Create new secret key": "Snulfu-d tasarut tuffirt tamaynut",
|
||||
"Create note": "",
|
||||
"Create Note": "Snulfu-d tazmilt",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Rnu tazmilt-ik⋅im tamezwarut s usiti ɣef tqeffalt ddaw.",
|
||||
"Created at": "Yettwarna di",
|
||||
"Created At": "Yettwarna di",
|
||||
|
|
@ -473,6 +485,7 @@
|
|||
"Data Controls": "Isenqaden n isefka",
|
||||
"Database": "Taffa n isefka",
|
||||
"Datalab Marker API": "API n Datalab Marker",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "JJ/MM/AAAA",
|
||||
"DDGS Backend": "",
|
||||
"December": "Duǧambeṛ",
|
||||
|
|
@ -503,6 +516,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Kkes akk idiwenniyen",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Kkes asqerdec",
|
||||
"Delete chat?": "Tebɣiḍ ad tekkseḍ adiwenni?",
|
||||
"Delete File": "",
|
||||
|
|
@ -647,6 +661,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Tamudemt n ujmak",
|
||||
"Embedding Model Engine": "Amsedday n tmudemt n ujmak",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -738,6 +753,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "Sekcem-d URL n Playwright WebSocket",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Sekcem URL apṛuksi (amedya. https://user:password@host:port)",
|
||||
"Enter reasoning effort": "Sekcem ussis n uẓeɣẓen",
|
||||
"Enter Score": "Sekcem agmuḍ-ik⋅im",
|
||||
|
|
@ -762,6 +778,7 @@
|
|||
"Enter system prompt here": "Sekcem-d aneftaɣ n unagraw da",
|
||||
"Enter Tavily API Key": "Sekcem API Tavilyant Tasarut",
|
||||
"Enter Tavily Extract Depth": "Kcem ɣer Tavilya",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Sekcem tansa URL tazayezt n WebUI-inek. Tansa-a URL ad tettwaseqdec i usuffeɣ n iseɣwan deg ilɣa.",
|
||||
"Enter the URL of the function to import": "Sekcem-d tansa URL n tesɣent akken ad tketreḍ",
|
||||
"Enter the URL to import": "Sekcem tansa URL akken ad tketreḍ",
|
||||
|
|
@ -801,6 +818,7 @@
|
|||
"Error accessing directory": "Tuccḍa deg unekcum ɣer ukaram",
|
||||
"Error accessing Google Drive: {{error}}": "Tuccḍa Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Tuccḍa deg unekcum ɣer yibenkan n yiẓeḍwa.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Tuccḍa deg beddu n usekles.",
|
||||
"Error unloading model: {{error}}": "Tuccḍa deg usali n tmudemt: {{error}}",
|
||||
"Error uploading file: {{error}}": "Tuccḍa deg usali n ufaylu: {{error}}",
|
||||
|
|
@ -818,6 +836,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Selkem tangalt i uslaḍ",
|
||||
"Executing **{{NAME}}**...": "Aselkem n **{{NAME}}**…",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Simɣur",
|
||||
"Experimental": "Armitan",
|
||||
"Explain": "Segzi",
|
||||
|
|
@ -1081,6 +1100,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Sebded seg tansa URL n Github",
|
||||
"Instant Auto-Send After Voice Transcription": "Arfiq awurman ticki Voice Transcription",
|
||||
"Instructions": "",
|
||||
"Integration": "Tamsideft",
|
||||
"Integrations": "Timsidaf",
|
||||
"Interface": "Agrudem",
|
||||
|
|
@ -1140,6 +1160,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Armud aneggaru",
|
||||
"Last Modified": "Asnifel angaru",
|
||||
"Last ran": "",
|
||||
"Last reply": "Tiririt taneggarut",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "Aqeddac LDAP, yettwaleqqem",
|
||||
|
|
@ -1246,6 +1267,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Tettwasider-d tmudemt '{{modelName}}' akken iwata.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Tamudemt '{{modelTag}}' ha-t-an yakan deg tebdart n usader.",
|
||||
"Model {{modelId}} not found": "Tamudemt {{modelId}} ulac-itt",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Mudel Isem}} mačči d tamuɣli izemren ad tili",
|
||||
"Model {{name}} is now {{status}}": "Tamudemt {{name}} tura {{status}}",
|
||||
"Model {{name}} is now hidden": "Tamudemt {{name}} tettwaffer tura",
|
||||
|
|
@ -1295,8 +1317,11 @@
|
|||
"Name": "Isem",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "Mudd isem i taffa-k⋅m n tmussniwin",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Asrew",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "Taqeffalt tamaynut",
|
||||
"New Chat": "Asqerdec amaynut",
|
||||
"New File": "",
|
||||
|
|
@ -1315,9 +1340,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "abadu amaynut",
|
||||
"Next message": "Izen uḍfir",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "Ulac asesteb",
|
||||
"No automations found": "",
|
||||
"No chats found": "Ulac idiwenniyen",
|
||||
"No chats found for this user.": "Ulac adiwenni i useqdac-a.",
|
||||
"No chats found.": "Ulac kra n usqerdec.",
|
||||
|
|
@ -1328,6 +1355,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Ulac ameccaq yettwafen",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Ulac afaylu i yettwafernen",
|
||||
|
|
@ -1374,6 +1402,7 @@
|
|||
"Not factually correct": "",
|
||||
"Not helpful": "Ur infiɛ ara",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "Tazmilt",
|
||||
"Note deleted successfully": "Tazmilt tettwakkes akken iwata",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
|
|
@ -1447,6 +1476,7 @@
|
|||
"or": "neɣ",
|
||||
"Ordered List": "Tabdart n usmizwer",
|
||||
"Other": "Wayeḍ",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "TUFFƔA",
|
||||
"Output format": "Amasal n tuffɣa",
|
||||
|
|
@ -1462,6 +1492,7 @@
|
|||
"Password": "Awal n uɛeddi",
|
||||
"Passwords do not match.": "Awalen n uɛeddi ur mṣadan ara.",
|
||||
"Paste Large Text as File": "Senteḍ aḍris meqqren am ufaylu",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "Isemli PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Tugniwin n ugemmay PDF",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1566,6 +1597,7 @@
|
|||
"Reason": "Ssebba",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "Aklas",
|
||||
"Record voice": "Sekles taɣect",
|
||||
"Redirecting you to Open WebUI Community": "Aseḍfeṛ ar Temɣiwant n Open WebUI",
|
||||
|
|
@ -1601,6 +1633,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Ales n umizwer n tmudmiwin",
|
||||
"Repeats": "",
|
||||
"Reply": "Tiririt",
|
||||
"Reply in Thread": "Err deg udiwenni",
|
||||
"Reply to thread...": "Err i udiwenni…",
|
||||
|
|
@ -1633,6 +1666,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Selkem",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Aselkem",
|
||||
"Running...": "Aselkem...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1643,12 +1678,15 @@
|
|||
"Save Chat": "Sekles asqerdec",
|
||||
"Saved": "Yettwasekles",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Abeddel n Branch",
|
||||
"Search": "Anadi",
|
||||
"Search a model": "Nadi tamudemt",
|
||||
"Search all emojis": "Nadi akk imujiten",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Taffa n unadi",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Nadi idiwenniyen",
|
||||
|
|
@ -1718,6 +1756,7 @@
|
|||
"Select how to split message text for TTS requests": "Fren amek ara tebḍuḍ aḍris n yiznan i usuter n TTS",
|
||||
"Select Knowledge": "Fren tamusni",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Fren yiwet kan n tmudemt i wara d-siwleḍ",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1827,6 +1866,7 @@
|
|||
"Start of the channel": "Tazwara n ubadu",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1877,8 +1917,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Sit i unegzum",
|
||||
"Task List": "Tabdart n temsekra",
|
||||
"Task Management": "",
|
||||
"Task Model": "Tamudemt n temsekra",
|
||||
"Tasks": "Timsekra",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tasarut API n Tavily",
|
||||
"Tavily Extract Depth": "Talqayt n usefruri Tavily",
|
||||
"Tell us more:": "Ini-aɣ-d ugar:",
|
||||
|
|
@ -1945,6 +1987,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tansa URL n Tika Server tettwasra.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Azwel",
|
||||
|
|
@ -1962,6 +2005,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Akken ad tferneḍ ifecka da, rnu-ten, di tazwara, ɣer tallunt n umahil \"Ifecka\".",
|
||||
"Toast notifications for new updates": "Ssurfet ilɣa i yileqman imaynuten",
|
||||
"Today": "Ass-a",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Ass-a, ɣef {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2100,6 +2144,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Ɣur-k",
|
||||
"Warning:": "Alɣu:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Ɣur-k: Asewḥel n waya ad yeǧǧ iseqdacen ad d-salin tangalt tazurant ɣef uqeddac.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Ɣur-k: Asselkem n Jupyter yettaǧǧa asselkem n tengalt tazurant, d tukksa n tmijwin n tɣellist qessiḥen — s leḥder meqqren.",
|
||||
"Web": "Web",
|
||||
|
|
@ -2134,6 +2179,7 @@
|
|||
"Width": "Tehri",
|
||||
"Wikipedia": "",
|
||||
"Won": "Yerbaḥ",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Tamnaḍṭ n umahil",
|
||||
"Workspace Permissions": "Tisirag n temnaḍṭ n umahil",
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -197,6 +198,7 @@
|
|||
"Assistant": "어시스턴트",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "지식 기반에서 파일 첨부",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "지식 기반 첨부",
|
||||
"Attach Notes": "노트 첨부",
|
||||
"Attach Webpage": "웹페이지 첨부",
|
||||
|
|
@ -219,6 +221,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 기본 URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 기본 URL 설정이 필요합니다.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "가능한 목록",
|
||||
"Available models": "",
|
||||
"Available Tools": "사용 가능한 도구",
|
||||
|
|
@ -249,6 +258,7 @@
|
|||
"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": "Brave Search API 키",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "글머리 기호 목록",
|
||||
|
|
@ -382,6 +392,7 @@
|
|||
"Concurrent Requests": "동시 요청 수",
|
||||
"Config": "",
|
||||
"Config imported successfully": "구성을 성공적으로 가져왔습니다",
|
||||
"Configuration": "",
|
||||
"Configure": "구성",
|
||||
"Confirm": "확인",
|
||||
"Confirm Password": "비밀번호 확인",
|
||||
|
|
@ -451,6 +462,7 @@
|
|||
"Create new secret key": "새로운 비밀 키 생성",
|
||||
"Create note": "",
|
||||
"Create Note": "노트 생성",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "아래의 플러스 버튼을 클릭하여 첫 번째 노트를 생성하세요.",
|
||||
"Created at": "생성일",
|
||||
"Created At": "생성일",
|
||||
|
|
@ -472,6 +484,7 @@
|
|||
"Data Controls": "데이터 제어",
|
||||
"Database": "데이터베이스",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "YYYY/MM/DD",
|
||||
"DDGS Backend": "",
|
||||
"December": "12월",
|
||||
|
|
@ -502,6 +515,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "모든 채팅 삭제",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "채팅 삭제",
|
||||
"Delete chat?": "채팅을 삭제하시겠습니까?",
|
||||
"Delete File": "",
|
||||
|
|
@ -646,6 +660,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "임베딩 모델",
|
||||
"Embedding Model Engine": "임베딩 모델 엔진",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -737,6 +752,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "Playwright 시간 초과 입력",
|
||||
"Enter Playwright WebSocket URL": "Playwright WebSocket URL 입력",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "프록시 URL 입력(예: https://user:password@host:port)",
|
||||
"Enter reasoning effort": "추론 난이도",
|
||||
"Enter Score": "점수 입력",
|
||||
|
|
@ -761,6 +777,7 @@
|
|||
"Enter system prompt here": "여기에 시스템 프롬프트 입력",
|
||||
"Enter Tavily API Key": "Tavily API 키 입력",
|
||||
"Enter Tavily Extract Depth": "Tavily 추출 깊이 입력",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUI의 공개 URL을 입력해 주세요. 이 URL은 알림에서 링크를 생성하는 데 사용합니다.",
|
||||
"Enter the URL of the function to import": "가져올 함수의 URL 입력",
|
||||
"Enter the URL to import": "가져올 URL 입력",
|
||||
|
|
@ -800,6 +817,7 @@
|
|||
"Error accessing directory": "디렉토리 액세스 오류",
|
||||
"Error accessing Google Drive: {{error}}": "Google Drive 액세스 오류: {{error}}",
|
||||
"Error accessing media devices.": "미디어 장치 액세스 오류",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "녹화 시작 오류",
|
||||
"Error unloading model: {{error}}": "모델 언로드 오류: {{error}}",
|
||||
"Error uploading file: {{error}}": "파일 업로드 오류: {{error}}",
|
||||
|
|
@ -817,6 +835,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "분석을 위한 코드 실행",
|
||||
"Executing **{{NAME}}**...": "**{{NAME}}** 실행 중...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "확장",
|
||||
"Experimental": "실험적",
|
||||
"Explain": "설명",
|
||||
|
|
@ -1080,6 +1099,7 @@
|
|||
"Insert Suggestion Prompt to Input": "입력할 제안 프롬프트 삽입",
|
||||
"Install from Github URL": "Github URL에서 설치",
|
||||
"Instant Auto-Send After Voice Transcription": "음성 변환 후 즉시 자동 전송",
|
||||
"Instructions": "",
|
||||
"Integration": "통합",
|
||||
"Integrations": "통합",
|
||||
"Interface": "인터페이스",
|
||||
|
|
@ -1139,6 +1159,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "최근 활동",
|
||||
"Last Modified": "마지막 수정",
|
||||
"Last ran": "",
|
||||
"Last reply": "마지막 답글",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "LDAP 서버가 업데이트되었습니다",
|
||||
|
|
@ -1245,6 +1266,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "모델 '{{modelName}}'이/가 성공적으로 다운로드되었습니다.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "모델 '{{modelTag}}'은/는 이미 다운로드 대기열에 있습니다.",
|
||||
"Model {{modelId}} not found": "모델 {{modelId}}을/를 찾을 수 없습니다.",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "모델 {{modelName}}은/는 비전을 사용할 수 없습니다.",
|
||||
"Model {{name}} is now {{status}}": "모델 {{name}}은/는 이제 {{status}} 상태입니다.",
|
||||
"Model {{name}} is now hidden": "모델 {{name}}은/는 이제 숨겨졌습니다.",
|
||||
|
|
@ -1294,8 +1316,11 @@
|
|||
"Name": "이름",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "지식 기반 이름을 지정하세요",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "네이티브",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "새 버튼",
|
||||
"New Chat": "새 채팅",
|
||||
"New File": "",
|
||||
|
|
@ -1314,9 +1339,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "새 채널",
|
||||
"Next message": "다음 메시지",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "채팅을 찾을 수 없습니다",
|
||||
"No chats found for this user.": "이 사용자에 대한 채팅을 찾을 수 없습니다.",
|
||||
"No chats found.": "채팅을 찾을 수 없습니다.",
|
||||
|
|
@ -1327,6 +1354,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "거리 불가능",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "만료 기한이 없으면 보안 위험이 발생할 수 있습니다.",
|
||||
"No feedback found": "",
|
||||
"No file selected": "파일이 선택되지 않았습니다",
|
||||
|
|
@ -1373,6 +1401,7 @@
|
|||
"Not factually correct": "사실상 맞지 않습니다",
|
||||
"Not helpful": "도움이 되지않습니다",
|
||||
"Not Registered": "등록되지 않았습니다",
|
||||
"Not scheduled": "",
|
||||
"Note": "노트",
|
||||
"Note deleted successfully": "노트가 성공적으로 삭제되었습니다",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "참고: 최소 점수를 설정하면, 검색 결과로 최소 점수 이상의 점수를 가진 문서만 반환합니다.",
|
||||
|
|
@ -1446,6 +1475,7 @@
|
|||
"or": "또는",
|
||||
"Ordered List": "번호 목록",
|
||||
"Other": "기타",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "출력",
|
||||
"Output format": "출력 형식",
|
||||
|
|
@ -1461,6 +1491,7 @@
|
|||
"Password": "비밀번호",
|
||||
"Passwords do not match.": "비밀번호가 일치하지 않습니다.",
|
||||
"Paste Large Text as File": "큰 텍스트를 파일로 붙여넣기",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF 문서(.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF 이미지 추출(OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1565,6 +1596,7 @@
|
|||
"Reason": "근거",
|
||||
"Reasoning Effort": "추론 난이도",
|
||||
"Reasoning Tags": "추론 태그",
|
||||
"Recently Used": "",
|
||||
"Record": "녹음",
|
||||
"Record voice": "음성 녹음",
|
||||
"Redirecting you to Open WebUI Community": "OpenWebUI 커뮤니티로 리디렉션 중",
|
||||
|
|
@ -1600,6 +1632,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "모델 재정렬",
|
||||
"Repeats": "",
|
||||
"Reply": "답장",
|
||||
"Reply in Thread": "스레드로 답장하기",
|
||||
"Reply to thread...": "스레드로 답장하기...",
|
||||
|
|
@ -1631,6 +1664,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "실행",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "실행 중",
|
||||
"Running...": "실행 중...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1641,12 +1676,15 @@
|
|||
"Save Chat": "채팅 저장",
|
||||
"Saved": "저장됨",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "브라우저의 저장소에 채팅 로그를 직접 저장하는 것은 더 이상 지원되지 않습니다. 아래 버튼을 클릭하여 채팅 로그를 다운로드하고 삭제하세요. 걱정 마세요. 백엔드를 통해 채팅 로그를 쉽게 다시 가져올 수 있습니다.",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "브랜치 변경 시 스크롤",
|
||||
"Search": "검색",
|
||||
"Search a model": "모델 검색",
|
||||
"Search all emojis": "모든 이모지 검색",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "검색 기반",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "채팅 검색",
|
||||
|
|
@ -1716,6 +1754,7 @@
|
|||
"Select how to split message text for TTS requests": "TTS 요청에 대한 메시지 텍스트 분할 방법 선택",
|
||||
"Select Knowledge": "지식 기반 선택",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "음성 기능을 위해서는 모델을 하나만 선택해야 합니다.",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1825,6 +1864,7 @@
|
|||
"Start of the channel": "채널 시작",
|
||||
"Start Tag": "시작 태그",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "상태",
|
||||
"Status cleared successfully": "상태 초기화에 성공했습니다",
|
||||
"Status updated successfully": "상태 업데이트에 성공했습니다",
|
||||
|
|
@ -1875,8 +1915,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "탭하여 중단",
|
||||
"Task List": "작업 목록",
|
||||
"Task Management": "",
|
||||
"Task Model": "작업 모델",
|
||||
"Tasks": "작업",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API 키",
|
||||
"Tavily Extract Depth": "Tabily 깊이 추출",
|
||||
"Tell us more:": "더 알려주세요:",
|
||||
|
|
@ -1943,6 +1985,7 @@
|
|||
"Tika": "",
|
||||
"Tika Server URL required.": "Tika 서버 URL이 필요합니다.",
|
||||
"Tiktoken": "틱토큰 (Tiktoken)",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "제목",
|
||||
|
|
@ -1960,6 +2003,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "여기서 도구를 선택하려면, \"도구\" 워크스페이스에 먼저 추가하세요.",
|
||||
"Toast notifications for new updates": "새 업데이트 알림",
|
||||
"Today": "오늘",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "오늘 {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2098,6 +2142,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "경고",
|
||||
"Warning:": "주의:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "주의: 이 기능을 활성화하면 사용자가 서버에 임의 코드를 업로드할 수 있습니다.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "경고: Jupyter 실행은 임의의 코드 실행을 가능하게 하여 심각한 보안 위험을 초래합니다. — 매우 신중하게 진행하세요.",
|
||||
"Web": "웹",
|
||||
|
|
@ -2132,6 +2177,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "승리",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "top-k와 함께 작동합니다. 값이 높을수록(예: 0.95) 더 다양한 텍스트가 생성되고, 값이 낮을수록(예: 0.5) 더 집중적이고 보수적인 텍스트가 생성됩니다.",
|
||||
"Workspace": "워크스페이스",
|
||||
"Workspace Permissions": "워크스페이스 권한",
|
||||
|
|
|
|||
|
|
@ -191,6 +191,10 @@
|
|||
"code": "sv-SE",
|
||||
"title": "Swedish (Svenska)"
|
||||
},
|
||||
{
|
||||
"code": "ta-IN",
|
||||
"title": "தமிழ் (இந்தியா)"
|
||||
},
|
||||
{
|
||||
"code": "th-TH",
|
||||
"title": "Thailand (ไทย)"
|
||||
|
|
|
|||
|
|
@ -184,6 +184,7 @@
|
|||
"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 **{{modelName}}**?": "",
|
||||
"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 connection? This action cannot be undone.": "",
|
||||
|
|
@ -200,6 +201,7 @@
|
|||
"Assistant": "",
|
||||
"Async Embedding Processing": "",
|
||||
"Attach File From Knowledge": "",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "",
|
||||
"Attach Notes": "",
|
||||
"Attach Webpage": "",
|
||||
|
|
@ -222,6 +224,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 bazės nuoroda",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 bazės nuoroda reikalinga.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "",
|
||||
"Available models": "",
|
||||
"Available Tools": "",
|
||||
|
|
@ -252,6 +261,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
|
||||
"Brave": "",
|
||||
"Brave Search API Key": "Brave Search API raktas",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "",
|
||||
"Bullet List": "",
|
||||
|
|
@ -385,6 +395,7 @@
|
|||
"Concurrent Requests": "Kelios užklausos vienu metu",
|
||||
"Config": "",
|
||||
"Config imported successfully": "",
|
||||
"Configuration": "",
|
||||
"Configure": "",
|
||||
"Confirm": "Patvrtinti",
|
||||
"Confirm Password": "Patvirtinkite slaptažodį",
|
||||
|
|
@ -454,6 +465,7 @@
|
|||
"Create new secret key": "Sukurti naują slaptą raktą",
|
||||
"Create note": "",
|
||||
"Create Note": "",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "",
|
||||
"Created at": "Sukurta",
|
||||
"Created At": "Sukurta",
|
||||
|
|
@ -475,6 +487,7 @@
|
|||
"Data Controls": "",
|
||||
"Database": "Duomenų bazė",
|
||||
"Datalab Marker API": "",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "",
|
||||
"DDGS Backend": "",
|
||||
"December": "Gruodis",
|
||||
|
|
@ -505,6 +518,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Ištrinti visus pokalbius",
|
||||
"Delete all contents inside this folder": "",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Ištrinti pokalbį",
|
||||
"Delete chat?": "Ištrinti pokalbį?",
|
||||
"Delete File": "",
|
||||
|
|
@ -649,6 +663,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Embedding modelis",
|
||||
"Embedding Model Engine": "Embedding modelio variklis",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "",
|
||||
|
|
@ -740,6 +755,7 @@
|
|||
"Enter Perplexity Search API URL": "",
|
||||
"Enter Playwright Timeout": "",
|
||||
"Enter Playwright WebSocket URL": "",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "",
|
||||
"Enter reasoning effort": "",
|
||||
"Enter Score": "Įveskite rezultatą",
|
||||
|
|
@ -764,6 +780,7 @@
|
|||
"Enter system prompt here": "",
|
||||
"Enter Tavily API Key": "Įveskite Tavily API raktą",
|
||||
"Enter Tavily Extract Depth": "",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
|
||||
"Enter the URL of the function to import": "",
|
||||
"Enter the URL to import": "",
|
||||
|
|
@ -803,6 +820,7 @@
|
|||
"Error accessing directory": "",
|
||||
"Error accessing Google Drive: {{error}}": "",
|
||||
"Error accessing media devices.": "",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "",
|
||||
"Error unloading model: {{error}}": "",
|
||||
"Error uploading file: {{error}}": "",
|
||||
|
|
@ -820,6 +838,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "",
|
||||
"Executing **{{NAME}}**...": "",
|
||||
"Execution Logs": "",
|
||||
"Expand": "",
|
||||
"Experimental": "Eksperimentinis",
|
||||
"Explain": "",
|
||||
|
|
@ -1083,6 +1102,7 @@
|
|||
"Insert Suggestion Prompt to Input": "",
|
||||
"Install from Github URL": "Instaliuoti Github nuorodą",
|
||||
"Instant Auto-Send After Voice Transcription": "Siųsti iškart po balso transkripcijos",
|
||||
"Instructions": "",
|
||||
"Integration": "",
|
||||
"Integrations": "",
|
||||
"Interface": "Sąsaja",
|
||||
|
|
@ -1142,6 +1162,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Paskutinį kartą aktyvus",
|
||||
"Last Modified": "Paskutinis pakeitimas",
|
||||
"Last ran": "",
|
||||
"Last reply": "",
|
||||
"LDAP": "",
|
||||
"LDAP server updated": "",
|
||||
|
|
@ -1248,6 +1269,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' modelis sėkmingai atsisiųstas.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Modelis '{{modelTag}}' jau atsisiuntimų eilėje.",
|
||||
"Model {{modelId}} not found": "Modelis {{modelId}} nerastas",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Modelis {{modelName}} neturi vaizdo gebėjimų",
|
||||
"Model {{name}} is now {{status}}": "Modelis {{name}} dabar {{status}}",
|
||||
"Model {{name}} is now hidden": "",
|
||||
|
|
@ -1297,8 +1319,11 @@
|
|||
"Name": "Pavadinimas",
|
||||
"Name and ID are required, please fill them out": "",
|
||||
"Name your knowledge base": "",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "",
|
||||
"Never": "",
|
||||
"New": "",
|
||||
"New Automation": "",
|
||||
"New Button": "",
|
||||
"New Chat": "Naujas pokalbis",
|
||||
"New File": "",
|
||||
|
|
@ -1317,9 +1342,11 @@
|
|||
"New Webhook": "",
|
||||
"new-channel": "",
|
||||
"Next message": "",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "",
|
||||
"No authentication": "",
|
||||
"No automations found": "",
|
||||
"No chats found": "",
|
||||
"No chats found for this user.": "",
|
||||
"No chats found.": "",
|
||||
|
|
@ -1330,6 +1357,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "",
|
||||
"No feedback found": "",
|
||||
"No file selected": "Nėra pasirinktų dokumentų",
|
||||
|
|
@ -1376,6 +1404,7 @@
|
|||
"Not factually correct": "Faktiškai netikslu",
|
||||
"Not helpful": "",
|
||||
"Not Registered": "",
|
||||
"Not scheduled": "",
|
||||
"Note": "",
|
||||
"Note deleted successfully": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Jei turite minimalų įvertį, paieška gražins tik tą informaciją, kuri viršyje šį įvertį",
|
||||
|
|
@ -1449,6 +1478,7 @@
|
|||
"or": "arba",
|
||||
"Ordered List": "",
|
||||
"Other": "Kita",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
|
|
@ -1464,6 +1494,7 @@
|
|||
"Password": "Slaptažodis",
|
||||
"Passwords do not match.": "",
|
||||
"Paste Large Text as File": "",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF dokumentas (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF paveikslėlių skaitymas (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1568,6 +1599,7 @@
|
|||
"Reason": "",
|
||||
"Reasoning Effort": "",
|
||||
"Reasoning Tags": "",
|
||||
"Recently Used": "",
|
||||
"Record": "",
|
||||
"Record voice": "Įrašyti balsą",
|
||||
"Redirecting you to Open WebUI Community": "Perkeliam Jus į OpenWebUI bendruomenę",
|
||||
|
|
@ -1603,6 +1635,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "",
|
||||
"Repeats": "",
|
||||
"Reply": "",
|
||||
"Reply in Thread": "",
|
||||
"Reply to thread...": "",
|
||||
|
|
@ -1637,6 +1670,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Veikia",
|
||||
"Running...": "Veikia...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "",
|
||||
|
|
@ -1647,12 +1682,15 @@
|
|||
"Save Chat": "",
|
||||
"Saved": "",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Pokalbių saugojimas naršyklėje nebegalimas.",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "",
|
||||
"Search": "Ieškoti",
|
||||
"Search a model": "Ieškoti modelio",
|
||||
"Search all emojis": "",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Ieškoti pokalbiuose",
|
||||
|
|
@ -1722,6 +1760,7 @@
|
|||
"Select how to split message text for TTS requests": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Method": "",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Pasirinkite vieną modelį",
|
||||
"Select view": "",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1831,6 +1870,7 @@
|
|||
"Start of the channel": "Kanalo pradžia",
|
||||
"Start Tag": "",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "",
|
||||
"Status cleared successfully": "",
|
||||
"Status updated successfully": "",
|
||||
|
|
@ -1881,8 +1921,10 @@
|
|||
"Talk to Model": "",
|
||||
"Tap to interrupt": "Paspauskite norėdami pertraukti",
|
||||
"Task List": "",
|
||||
"Task Management": "",
|
||||
"Task Model": "",
|
||||
"Tasks": "",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API raktas",
|
||||
"Tavily Extract Depth": "",
|
||||
"Tell us more:": "Papasakokite daugiau",
|
||||
|
|
@ -1949,6 +1991,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Reiklainga Tika serverio nuorodą",
|
||||
"Tiktoken": "",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "",
|
||||
"Title": "Pavadinimas",
|
||||
|
|
@ -1966,6 +2009,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Norėdami pasirinkti įrankius, pirmiausia pridėkite juos prie įrankių nuostatuose",
|
||||
"Toast notifications for new updates": "",
|
||||
"Today": "Šiandien",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2104,6 +2148,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Perspėjimas",
|
||||
"Warning:": "Perspėjimas",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
|
||||
"Web": "Web",
|
||||
|
|
@ -2138,6 +2183,7 @@
|
|||
"Width": "",
|
||||
"Wikipedia": "",
|
||||
"Won": "",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "",
|
||||
"Workspace": "Nuostatos",
|
||||
"Workspace Permissions": "",
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@
|
|||
"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.": "Vai tiešām vēlaties dzēst visas atmiņas? Šo darbību nevar atsaukt.",
|
||||
"Are you sure you want to delete \"{{NAME}}\"?": "Vai tiešām vēlaties dzēst \"{{NAME}}\"?",
|
||||
"Are you sure you want to delete **{{modelName}}**?": "",
|
||||
"Are you sure you want to delete all chats? This action cannot be undone.": "",
|
||||
"Are you sure you want to delete this channel?": "Vai tiešām vēlaties dzēst šo kanālu?",
|
||||
"Are you sure you want to delete this connection? This action cannot be undone.": "",
|
||||
|
|
@ -199,6 +200,7 @@
|
|||
"Assistant": "Asistents",
|
||||
"Async Embedding Processing": "Asinhronā iegulšanas apstrāde",
|
||||
"Attach File From Knowledge": "Pievienot failu no zināšanām",
|
||||
"Attach Files": "",
|
||||
"Attach Knowledge": "Pievienot zināšanau bāzi",
|
||||
"Attach Notes": "Pievienot piezīmes",
|
||||
"Attach Webpage": "Pievienot tīmekļa lapu",
|
||||
|
|
@ -221,6 +223,13 @@
|
|||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 bāzes URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 bāzes URL ir nepieciešams.",
|
||||
"Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "Automātiski ievietot sistēmas rīkus vietējā funkciju izsaukšanas režīmā (piem., laika zīmogi, atmiņa, tērzēšanas vēsture, piezīmes utt.)",
|
||||
"Automation": "",
|
||||
"Automation created": "",
|
||||
"Automation Name": "",
|
||||
"Automation title": "",
|
||||
"Automation triggered": "",
|
||||
"Automation updated": "",
|
||||
"Automations": "",
|
||||
"Available list": "Pieejamo saraksts",
|
||||
"Available models": "",
|
||||
"Available Tools": "Pieejamie rīki",
|
||||
|
|
@ -251,6 +260,7 @@
|
|||
"Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Konkrētu tokenu pastiprinājums vai sodīšana ierobežotām atbildēm. Novirzes vērtības tiks ierobežotas starp -100 un 100 (ieskaitot). (Noklusējums: nav)",
|
||||
"Brave": "Brave",
|
||||
"Brave Search API Key": "Brave Search API atslēga",
|
||||
"Break down complex requests into trackable steps": "",
|
||||
"Browse and query knowledge bases": "",
|
||||
"Builtin Tools": "Iebūvētie rīki",
|
||||
"Bullet List": "Aizzīmju saraksts",
|
||||
|
|
@ -384,6 +394,7 @@
|
|||
"Concurrent Requests": "Vienlaicīgie pieprasījumi",
|
||||
"Config": "",
|
||||
"Config imported successfully": "Konfigurācija veiksmīgi importēta",
|
||||
"Configuration": "",
|
||||
"Configure": "Konfigurēt",
|
||||
"Confirm": "Apstiprināt",
|
||||
"Confirm Password": "Apstiprināt paroli",
|
||||
|
|
@ -453,6 +464,7 @@
|
|||
"Create new secret key": "Izveidot jaunu slepeno atslēgu",
|
||||
"Create note": "Izveidot piezīmi",
|
||||
"Create Note": "Izveidot piezīmi",
|
||||
"Create scheduled prompts that run automatically on a recurring basis.": "",
|
||||
"Create your first note by clicking on the plus button below.": "Izveidojiet savu pirmo piezīmi, noklikšķinot uz pluszīmes pogas zemāk.",
|
||||
"Created at": "Izveidots",
|
||||
"Created At": "Izveidots",
|
||||
|
|
@ -474,6 +486,7 @@
|
|||
"Data Controls": "Datu vadības",
|
||||
"Database": "Datubāze",
|
||||
"Datalab Marker API": "Datalab Marker API",
|
||||
"Day": "",
|
||||
"DD/MM/YYYY": "DD/MM/GGGG",
|
||||
"DDGS Backend": "DDGS aizmugursistēma",
|
||||
"December": "Decembris",
|
||||
|
|
@ -504,6 +517,7 @@
|
|||
"Delete All": "",
|
||||
"Delete All Chats": "Dzēst visas tērzēšanas",
|
||||
"Delete all contents inside this folder": "Dzēst visu saturu šajā mapē",
|
||||
"Delete automation?": "",
|
||||
"Delete Chat": "Dzēst tērzēšanu",
|
||||
"Delete chat?": "Dzēst tērzēšanu?",
|
||||
"Delete File": "",
|
||||
|
|
@ -648,6 +662,7 @@
|
|||
"Embedding Concurrent Requests": "",
|
||||
"Embedding Model": "Iegulšanas modelis",
|
||||
"Embedding Model Engine": "Iegulšanas modeļa dzinējs",
|
||||
"Emojis": "",
|
||||
"Empty message": "",
|
||||
"Enable All": "",
|
||||
"Enable API Keys": "Iespējot API atslēgas",
|
||||
|
|
@ -739,6 +754,7 @@
|
|||
"Enter Perplexity Search API URL": "Ievadiet Perplexity Search API URL",
|
||||
"Enter Playwright Timeout": "Ievadiet Playwright taimautu",
|
||||
"Enter Playwright WebSocket URL": "Ievadiet Playwright WebSocket URL",
|
||||
"Enter prompt here.": "",
|
||||
"Enter proxy URL (e.g. https://user:password@host:port)": "Ievadiet starpniekservera URL (piem., https://lietotājs:parole@host:ports)",
|
||||
"Enter reasoning effort": "Ievadiet spriedumu pūles",
|
||||
"Enter Score": "Ievadiet rezultātu",
|
||||
|
|
@ -763,6 +779,7 @@
|
|||
"Enter system prompt here": "Ievadiet sistēmas uzvedni šeit",
|
||||
"Enter Tavily API Key": "Ievadiet Tavily API atslēgu",
|
||||
"Enter Tavily Extract Depth": "Ievadiet Tavily ekstrakcijas dziļumu",
|
||||
"Enter the prompt instructions for this automation...": "",
|
||||
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Ievadiet sava WebUI publisko URL. Šis URL tiks izmantots saišu ģenerēšanai paziņojumos.",
|
||||
"Enter the URL of the function to import": "Ievadiet importējamās funkcijas URL",
|
||||
"Enter the URL to import": "Ievadiet importējamo URL",
|
||||
|
|
@ -802,6 +819,7 @@
|
|||
"Error accessing directory": "Kļūda, piekļūstot direktorijai",
|
||||
"Error accessing Google Drive: {{error}}": "Kļūda, piekļūstot Google Drive: {{error}}",
|
||||
"Error accessing media devices.": "Kļūda, piekļūstot multivides ierīcēm.",
|
||||
"Error deleting model: {{error}}": "",
|
||||
"Error starting recording.": "Kļūda, sākot ierakstīšanu.",
|
||||
"Error unloading model: {{error}}": "Kļūda, izlādējot modeli: {{error}}",
|
||||
"Error uploading file: {{error}}": "Kļūda, augšupielādējot failu: {{error}}",
|
||||
|
|
@ -819,6 +837,7 @@
|
|||
"Execute code": "",
|
||||
"Execute code for analysis": "Izpildīt kodu analīzei",
|
||||
"Executing **{{NAME}}**...": "Izpilda **{{NAME}}**...",
|
||||
"Execution Logs": "",
|
||||
"Expand": "Izvērst",
|
||||
"Experimental": "Eksperimentāls",
|
||||
"Explain": "Paskaidrot",
|
||||
|
|
@ -1082,6 +1101,7 @@
|
|||
"Insert Suggestion Prompt to Input": "Ievietot ieteikuma uzvedni ievadē",
|
||||
"Install from Github URL": "Instalēt no Github URL",
|
||||
"Instant Auto-Send After Voice Transcription": "Tūlītēja automātiska nosūtīšana pēc balss transkripcijas",
|
||||
"Instructions": "",
|
||||
"Integration": "Integrācija",
|
||||
"Integrations": "Integrācijas",
|
||||
"Interface": "Saskarne",
|
||||
|
|
@ -1141,6 +1161,7 @@
|
|||
"Last 90 days": "",
|
||||
"Last Active": "Pēdējo reizi aktīvs",
|
||||
"Last Modified": "Pēdējoreiz modificēts",
|
||||
"Last ran": "",
|
||||
"Last reply": "Pēdējā atbilde",
|
||||
"LDAP": "LDAP",
|
||||
"LDAP server updated": "LDAP serveris atjaunināts",
|
||||
|
|
@ -1247,6 +1268,7 @@
|
|||
"Model '{{modelName}}' has been successfully downloaded.": "Modelis '{{modelName}}' ir veiksmīgi lejupielādēts.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Modelis '{{modelTag}}' jau ir lejupielādes rindā.",
|
||||
"Model {{modelId}} not found": "Modelis {{modelId}} nav atrasts",
|
||||
"Model {{modelName}} deleted successfully": "",
|
||||
"Model {{modelName}} is not vision capable": "Modelis {{modelName}} neatbalsta redzi",
|
||||
"Model {{name}} is now {{status}}": "Modelis {{name}} tagad ir {{status}}",
|
||||
"Model {{name}} is now hidden": "Modelis {{name}} tagad ir slēpts",
|
||||
|
|
@ -1296,8 +1318,11 @@
|
|||
"Name": "Nosaukums",
|
||||
"Name and ID are required, please fill them out": "Nosaukums un ID ir nepieciešami, lūdzu, aizpildiet tos",
|
||||
"Name your knowledge base": "Nosauciet savu zināšanu bāzi",
|
||||
"Name, prompt, and model are required": "",
|
||||
"Native": "Vietējais",
|
||||
"Never": "",
|
||||
"New": "Jauns",
|
||||
"New Automation": "",
|
||||
"New Button": "Jauna poga",
|
||||
"New Chat": "Jauna tērzēšana",
|
||||
"New File": "",
|
||||
|
|
@ -1316,9 +1341,11 @@
|
|||
"New Webhook": "Jauns webhook",
|
||||
"new-channel": "jauns-kanāls",
|
||||
"Next message": "Nākamais ziņojums",
|
||||
"Next run": "",
|
||||
"No access grants. Private to you.": "",
|
||||
"No activity data": "Nav aktivitātes datu",
|
||||
"No authentication": "Nav autentifikācijas",
|
||||
"No automations found": "",
|
||||
"No chats found": "Tērzēšanas nav atrastas",
|
||||
"No chats found for this user.": "Šim lietotājam nav atrasta neviena tērzēšana.",
|
||||
"No chats found.": "Tērzēšanas nav atrastas.",
|
||||
|
|
@ -1329,6 +1356,7 @@
|
|||
"No data": "",
|
||||
"No data found": "",
|
||||
"No distance available": "Attālums nav pieejams",
|
||||
"No execution logs available yet": "",
|
||||
"No expiration can pose security risks.": "Bez derīguma termiņa var rasties drošības riski.",
|
||||
"No feedback found": "Atsauksmes nav atrastas",
|
||||
"No file selected": "Fails nav izvēlēts",
|
||||
|
|
@ -1375,6 +1403,7 @@
|
|||
"Not factually correct": "Faktiski nepareizi",
|
||||
"Not helpful": "Nav noderīgs",
|
||||
"Not Registered": "Nav reģistrēts",
|
||||
"Not scheduled": "",
|
||||
"Note": "Piezīme",
|
||||
"Note deleted successfully": "Piezīme veiksmīgi dzēsta",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Piezīme: Ja iestatāt minimālo punktu skaitu, meklēšana atgriezīs tikai dokumentus ar punktu skaitu, kas lielāks vai vienāds ar minimālo punktu skaitu.",
|
||||
|
|
@ -1448,6 +1477,7 @@
|
|||
"or": "vai",
|
||||
"Ordered List": "Numurēts saraksts",
|
||||
"Other": "Cits",
|
||||
"out of": "",
|
||||
"Output": "",
|
||||
"OUTPUT": "IZVADE",
|
||||
"Output format": "Izvades formāts",
|
||||
|
|
@ -1463,6 +1493,7 @@
|
|||
"Password": "Parole",
|
||||
"Passwords do not match.": "Paroles nesakrīt.",
|
||||
"Paste Large Text as File": "Ielīmēt lielu tekstu kā failu",
|
||||
"Paused": "",
|
||||
"PDF document (.pdf)": "PDF dokuments (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF attēlu ekstrakcija (OCR)",
|
||||
"PDF Loader Mode": "",
|
||||
|
|
@ -1567,6 +1598,7 @@
|
|||
"Reason": "Iemesls",
|
||||
"Reasoning Effort": "Spriedumu pūles",
|
||||
"Reasoning Tags": "Spriedumu tagi",
|
||||
"Recently Used": "",
|
||||
"Record": "Ierakstīt",
|
||||
"Record voice": "Ierakstīt balsi",
|
||||
"Redirecting you to Open WebUI Community": "Novirza jūs uz Open WebUI kopienu",
|
||||
|
|
@ -1602,6 +1634,7 @@
|
|||
"Renamed to {{name}}": "",
|
||||
"Render Markdown in Previews": "",
|
||||
"Reorder Models": "Pārkārtot modeļus",
|
||||
"Repeats": "",
|
||||
"Reply": "Atbildēt",
|
||||
"Reply in Thread": "Atbildēt pavedienā",
|
||||
"Reply to thread...": "Atbildēt pavedienā...",
|
||||
|
|
@ -1635,6 +1668,8 @@
|
|||
"RTL": "RTL",
|
||||
"Run": "Palaist",
|
||||
"Run All": "",
|
||||
"Run now": "",
|
||||
"Run Now": "",
|
||||
"Running": "Darbojas",
|
||||
"Running...": "Darbojas...",
|
||||
"Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "Palaiž iegulšanas uzdevumus vienlaicīgi, lai paātrinātu apstrādi. Izslēdziet, ja rodas ātruma ierobežojumu problēmas.",
|
||||
|
|
@ -1645,12 +1680,15 @@
|
|||
"Save Chat": "Saglabāt tērzēšanu",
|
||||
"Saved": "Saglabāts",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Tērzēšanas žurnālu saglabāšana tieši pārlūka krātuvē vairs netiek atbalstīta. Lūdzu, veltiet brīdi, lai lejupielādētu un dzēstu tērzēšanas žurnālus, noklikšķinot uz pogas zemāk. Neuztraucieties, jūs varat viegli atkārtoti importēt tērzēšanas žurnālus aizmugursistēmā caur",
|
||||
"Schedule": "",
|
||||
"Scheduled time must be in the future": "",
|
||||
"Scroll On Branch Change": "Ritināt pie zara maiņas",
|
||||
"Search": "Meklēt",
|
||||
"Search a model": "Meklēt modeli",
|
||||
"Search all emojis": "Meklēt visas emocijzīmes",
|
||||
"Search and manage user memories": "",
|
||||
"Search and view user chat history": "",
|
||||
"Search Automations": "",
|
||||
"Search Base": "Meklēšanas bāze",
|
||||
"Search channels and channel messages": "",
|
||||
"Search Chats": "Meklēt tērzēšanas",
|
||||
|
|
@ -1720,6 +1758,7 @@
|
|||
"Select how to split message text for TTS requests": "Izvēlieties, kā sadalīt ziņojuma tekstu TTS pieprasījumiem",
|
||||
"Select Knowledge": "Izvēlieties zināšanas",
|
||||
"Select Method": "Izvēlieties metodi",
|
||||
"Select model": "",
|
||||
"Select only one model to call": "Izvēlieties tikai vienu modeli izsaukšanai",
|
||||
"Select view": "Izvēlieties skatu",
|
||||
"Selected model: {{modelName}}": "",
|
||||
|
|
@ -1829,6 +1868,7 @@
|
|||
"Start of the channel": "Kanāla sākums",
|
||||
"Start Tag": "Sākuma tags",
|
||||
"Starting kernel...": "",
|
||||
"State": "",
|
||||
"Status": "Statuss",
|
||||
"Status cleared successfully": "Statuss veiksmīgi notīrīts",
|
||||
"Status updated successfully": "Statuss veiksmīgi atjaunināts",
|
||||
|
|
@ -1879,8 +1919,10 @@
|
|||
"Talk to Model": "Runāt ar modeli",
|
||||
"Tap to interrupt": "Pieskarieties, lai pārtrauktu",
|
||||
"Task List": "Uzdevumu saraksts",
|
||||
"Task Management": "",
|
||||
"Task Model": "Uzdevumu modelis",
|
||||
"Tasks": "Uzdevumi",
|
||||
"tasks completed": "",
|
||||
"Tavily API Key": "Tavily API atslēga",
|
||||
"Tavily Extract Depth": "Tavily ekstrakcijas dziļums",
|
||||
"Tell us more:": "Pastāstiet vairāk:",
|
||||
|
|
@ -1947,6 +1989,7 @@
|
|||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Nepieciešams Tika servera URL.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Time": "",
|
||||
"Time & Calculation": "",
|
||||
"Timeout": "Taimauts",
|
||||
"Title": "Virsraksts",
|
||||
|
|
@ -1964,6 +2007,7 @@
|
|||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Lai izvēlētos rīku komplektus šeit, vispirms pievienojiet tos \"Rīku\" darba videi.",
|
||||
"Toast notifications for new updates": "Uznirstošie paziņojumi par jauniem atjauninājumiem",
|
||||
"Today": "Šodien",
|
||||
"Today at": "",
|
||||
"Today at {{LOCALIZED_TIME}}": "Šodien plkst. {{LOCALIZED_TIME}}",
|
||||
"Toggle {{COUNT}} sources": "",
|
||||
"Toggle 1 source": "",
|
||||
|
|
@ -2102,6 +2146,7 @@
|
|||
"Waiting for upload...": "",
|
||||
"Warning": "Brīdinājums",
|
||||
"Warning:": "Brīdinājums:",
|
||||
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
|
||||
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Brīdinājums: Šīs opcijas iespējošana ļaus lietotājiem augšupielādēt patvaļīgu kodu serverī.",
|
||||
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Brīdinājums: Jupyter izpilde ļauj patvaļīgu koda izpildi, radot nopietnus drošības riskus — rīkojieties ar ārkārtēju piesardzību.",
|
||||
"Web": "Tīmeklis",
|
||||
|
|
@ -2136,6 +2181,7 @@
|
|||
"Width": "Platums",
|
||||
"Wikipedia": "Wikipedia",
|
||||
"Won": "Uzvarēja",
|
||||
"Working Directory": "",
|
||||
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Darbojas kopā ar top-k. Augstāka vērtība (piem., 0.95) radīs daudzveidīgāku tekstu, bet zemāka vērtība (piem., 0.5) ģenerēs fokusētāku un konservatīvāku tekstu.",
|
||||
"Workspace": "Darba vide",
|
||||
"Workspace Permissions": "Darba vides atļaujas",
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue