mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 12:25:20 +00:00
commit
8a620cab44
117 changed files with 4199 additions and 4245 deletions
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
|
|
@ -3,10 +3,10 @@ updates:
|
||||||
- package-ecosystem: pip
|
- package-ecosystem: pip
|
||||||
directory: '/backend'
|
directory: '/backend'
|
||||||
schedule:
|
schedule:
|
||||||
interval: weekly
|
interval: monthly
|
||||||
target-branch: 'dev'
|
target-branch: 'dev'
|
||||||
- package-ecosystem: 'github-actions'
|
- package-ecosystem: 'github-actions'
|
||||||
directory: '/'
|
directory: '/'
|
||||||
schedule:
|
schedule:
|
||||||
# Check for updates to GitHub Actions every week
|
# Check for updates to GitHub Actions every week
|
||||||
interval: 'weekly'
|
interval: monthly
|
||||||
|
|
|
||||||
31
CHANGELOG.md
31
CHANGELOG.md
|
|
@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [0.3.14] - 2024-08-21
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **🛠️ Custom ComfyUI Workflow**: Deprecating several older environment variables, this enhancement introduces a new, customizable workflow for a more tailored user experience.
|
||||||
|
- **🔀 Merge Responses in Many Model Chat**: Enhances the dialogue by merging responses from multiple models into a single, coherent reply, improving the interaction quality in many model chats.
|
||||||
|
- **✅ Multiple Instances of Same Model in Chats**: Enhanced many model chat to support adding multiple instances of the same model.
|
||||||
|
- **🔧 Quick Actions in Model Workspace**: Enhanced Shift key quick actions for hiding/unhiding and deleting models, facilitating a smoother workflow.
|
||||||
|
- **🗨️ Markdown Rendering in User Messages**: User messages are now rendered in Markdown, enhancing readability and interaction.
|
||||||
|
- **💬 Temporary Chat Feature**: Introduced a temporary chat feature, deprecating the old chat history setting to enhance user interaction flexibility.
|
||||||
|
- **🖋️ User Message Editing**: Enhanced the user chat editing feature to allow saving changes without sending, providing more flexibility in message management.
|
||||||
|
- **🛡️ Security Enhancements**: Various security improvements implemented across the platform to ensure safer user experiences.
|
||||||
|
- **🌍 Updated Translations**: Enhanced translations for Chinese, Ukrainian, and Bahasa Malaysia, improving localization and user comprehension.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **📑 Mermaid Rendering Issue**: Addressed issues with Mermaid chart rendering to ensure clean and clear visual data representation.
|
||||||
|
- **🎭 PWA Icon Maskability**: Fixed the Progressive Web App icon to be maskable, ensuring proper display on various device home screens.
|
||||||
|
- **🔀 Cloned Model Chat Freezing Issue**: Fixed a bug where cloning many model chats would cause freezing, enhancing stability and responsiveness.
|
||||||
|
- **🔍 Generic Error Handling and Refinements**: Various minor fixes and refinements to address previously untracked issues, ensuring smoother operations.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- **🖼️ Image Generation Refactor**: Overhauled image generation processes for improved efficiency and quality.
|
||||||
|
- **🔨 Refactor Tool and Function Calling**: Refactored tool and function calling mechanisms for improved clarity and maintainability.
|
||||||
|
- **🌐 Backend Library Updates**: Updated critical backend libraries including SQLAlchemy, uvicorn[standard], faster-whisper, bcrypt, and boto3 for enhanced performance and security.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- **🚫 Deprecated ComfyUI Environment Variables**: Removed several outdated environment variables related to ComfyUI settings, simplifying configuration management.
|
||||||
|
|
||||||
## [0.3.13] - 2024-08-14
|
## [0.3.13] - 2024-08-14
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
import os
|
import hashlib
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
|
import uuid
|
||||||
|
from functools import lru_cache
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import requests
|
||||||
from fastapi import (
|
from fastapi import (
|
||||||
FastAPI,
|
FastAPI,
|
||||||
Request,
|
Request,
|
||||||
|
|
@ -8,34 +15,14 @@ from fastapi import (
|
||||||
status,
|
status,
|
||||||
UploadFile,
|
UploadFile,
|
||||||
File,
|
File,
|
||||||
Form,
|
|
||||||
)
|
)
|
||||||
from fastapi.responses import StreamingResponse, JSONResponse, FileResponse
|
|
||||||
|
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
from fastapi.responses import FileResponse
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
import uuid
|
|
||||||
import requests
|
|
||||||
import hashlib
|
|
||||||
from pathlib import Path
|
|
||||||
import json
|
|
||||||
|
|
||||||
from constants import ERROR_MESSAGES
|
|
||||||
from utils.utils import (
|
|
||||||
decode_token,
|
|
||||||
get_current_user,
|
|
||||||
get_verified_user,
|
|
||||||
get_admin_user,
|
|
||||||
)
|
|
||||||
from utils.misc import calculate_sha256
|
|
||||||
|
|
||||||
|
|
||||||
from config import (
|
from config import (
|
||||||
SRC_LOG_LEVELS,
|
SRC_LOG_LEVELS,
|
||||||
CACHE_DIR,
|
CACHE_DIR,
|
||||||
UPLOAD_DIR,
|
|
||||||
WHISPER_MODEL,
|
WHISPER_MODEL,
|
||||||
WHISPER_MODEL_DIR,
|
WHISPER_MODEL_DIR,
|
||||||
WHISPER_MODEL_AUTO_UPDATE,
|
WHISPER_MODEL_AUTO_UPDATE,
|
||||||
|
|
@ -51,6 +38,13 @@ from config import (
|
||||||
AUDIO_TTS_MODEL,
|
AUDIO_TTS_MODEL,
|
||||||
AUDIO_TTS_VOICE,
|
AUDIO_TTS_VOICE,
|
||||||
AppConfig,
|
AppConfig,
|
||||||
|
CORS_ALLOW_ORIGIN,
|
||||||
|
)
|
||||||
|
from constants import ERROR_MESSAGES
|
||||||
|
from utils.utils import (
|
||||||
|
get_current_user,
|
||||||
|
get_verified_user,
|
||||||
|
get_admin_user,
|
||||||
)
|
)
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
@ -59,7 +53,7 @@ log.setLevel(SRC_LOG_LEVELS["AUDIO"])
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["*"],
|
allow_origins=CORS_ALLOW_ORIGIN,
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
|
@ -261,6 +255,13 @@ async def speech(request: Request, user=Depends(get_verified_user)):
|
||||||
raise HTTPException(status_code=400, detail="Invalid JSON payload")
|
raise HTTPException(status_code=400, detail="Invalid JSON payload")
|
||||||
|
|
||||||
voice_id = payload.get("voice", "")
|
voice_id = payload.get("voice", "")
|
||||||
|
|
||||||
|
if voice_id not in get_available_voices():
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=400,
|
||||||
|
detail="Invalid voice id",
|
||||||
|
)
|
||||||
|
|
||||||
url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
|
url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
|
|
@ -466,39 +467,58 @@ async def get_models(user=Depends(get_verified_user)):
|
||||||
return {"models": get_available_models()}
|
return {"models": get_available_models()}
|
||||||
|
|
||||||
|
|
||||||
def get_available_voices() -> list[dict]:
|
def get_available_voices() -> dict:
|
||||||
|
"""Returns {voice_id: voice_name} dict"""
|
||||||
|
ret = {}
|
||||||
if app.state.config.TTS_ENGINE == "openai":
|
if app.state.config.TTS_ENGINE == "openai":
|
||||||
return [
|
ret = {
|
||||||
{"name": "alloy", "id": "alloy"},
|
"alloy": "alloy",
|
||||||
{"name": "echo", "id": "echo"},
|
"echo": "echo",
|
||||||
{"name": "fable", "id": "fable"},
|
"fable": "fable",
|
||||||
{"name": "onyx", "id": "onyx"},
|
"onyx": "onyx",
|
||||||
{"name": "nova", "id": "nova"},
|
"nova": "nova",
|
||||||
{"name": "shimmer", "id": "shimmer"},
|
"shimmer": "shimmer",
|
||||||
]
|
}
|
||||||
elif app.state.config.TTS_ENGINE == "elevenlabs":
|
elif app.state.config.TTS_ENGINE == "elevenlabs":
|
||||||
|
try:
|
||||||
|
ret = get_elevenlabs_voices()
|
||||||
|
except Exception as e:
|
||||||
|
# Avoided @lru_cache with exception
|
||||||
|
pass
|
||||||
|
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache
|
||||||
|
def get_elevenlabs_voices() -> dict:
|
||||||
|
"""
|
||||||
|
Note, set the following in your .env file to use Elevenlabs:
|
||||||
|
AUDIO_TTS_ENGINE=elevenlabs
|
||||||
|
AUDIO_TTS_API_KEY=sk_... # Your Elevenlabs API key
|
||||||
|
AUDIO_TTS_VOICE=EXAVITQu4vr4xnSDxMaL # From https://api.elevenlabs.io/v1/voices
|
||||||
|
AUDIO_TTS_MODEL=eleven_multilingual_v2
|
||||||
|
"""
|
||||||
headers = {
|
headers = {
|
||||||
"xi-api-key": app.state.config.TTS_API_KEY,
|
"xi-api-key": app.state.config.TTS_API_KEY,
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(
|
# TODO: Add retries
|
||||||
"https://api.elevenlabs.io/v1/voices", headers=headers
|
response = requests.get("https://api.elevenlabs.io/v1/voices", headers=headers)
|
||||||
)
|
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
voices_data = response.json()
|
voices_data = response.json()
|
||||||
|
|
||||||
voices = []
|
voices = {}
|
||||||
for voice in voices_data.get("voices", []):
|
for voice in voices_data.get("voices", []):
|
||||||
voices.append({"name": voice["name"], "id": voice["voice_id"]})
|
voices[voice["voice_id"]] = voice["name"]
|
||||||
return voices
|
|
||||||
except requests.RequestException as e:
|
except requests.RequestException as e:
|
||||||
|
# Avoid @lru_cache with exception
|
||||||
log.error(f"Error fetching voices: {str(e)}")
|
log.error(f"Error fetching voices: {str(e)}")
|
||||||
|
raise RuntimeError(f"Error fetching voices: {str(e)}")
|
||||||
|
|
||||||
return []
|
return voices
|
||||||
|
|
||||||
|
|
||||||
@app.get("/voices")
|
@app.get("/voices")
|
||||||
async def get_voices(user=Depends(get_verified_user)):
|
async def get_voices(user=Depends(get_verified_user)):
|
||||||
return {"voices": get_available_voices()}
|
return {"voices": [{"id": k, "name": v} for k, v in get_available_voices().items()]}
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,10 @@
|
||||||
import re
|
|
||||||
import requests
|
|
||||||
import base64
|
|
||||||
from fastapi import (
|
from fastapi import (
|
||||||
FastAPI,
|
FastAPI,
|
||||||
Request,
|
Request,
|
||||||
Depends,
|
Depends,
|
||||||
HTTPException,
|
HTTPException,
|
||||||
status,
|
|
||||||
UploadFile,
|
|
||||||
File,
|
|
||||||
Form,
|
|
||||||
)
|
)
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
|
||||||
from constants import ERROR_MESSAGES
|
|
||||||
from utils.utils import (
|
|
||||||
get_verified_user,
|
|
||||||
get_admin_user,
|
|
||||||
)
|
|
||||||
|
|
||||||
from apps.images.utils.comfyui import ImageGenerationPayload, comfyui_generate_image
|
|
||||||
from utils.misc import calculate_sha256
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
@ -29,7 +13,21 @@ import uuid
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from utils.utils import (
|
||||||
|
get_verified_user,
|
||||||
|
get_admin_user,
|
||||||
|
)
|
||||||
|
|
||||||
|
from apps.images.utils.comfyui import (
|
||||||
|
ComfyUIWorkflow,
|
||||||
|
ComfyUIGenerateImageForm,
|
||||||
|
comfyui_generate_image,
|
||||||
|
)
|
||||||
|
|
||||||
|
from constants import ERROR_MESSAGES
|
||||||
from config import (
|
from config import (
|
||||||
SRC_LOG_LEVELS,
|
SRC_LOG_LEVELS,
|
||||||
CACHE_DIR,
|
CACHE_DIR,
|
||||||
|
|
@ -38,18 +36,14 @@ from config import (
|
||||||
AUTOMATIC1111_BASE_URL,
|
AUTOMATIC1111_BASE_URL,
|
||||||
AUTOMATIC1111_API_AUTH,
|
AUTOMATIC1111_API_AUTH,
|
||||||
COMFYUI_BASE_URL,
|
COMFYUI_BASE_URL,
|
||||||
COMFYUI_CFG_SCALE,
|
COMFYUI_WORKFLOW,
|
||||||
COMFYUI_SAMPLER,
|
COMFYUI_WORKFLOW_NODES,
|
||||||
COMFYUI_SCHEDULER,
|
|
||||||
COMFYUI_SD3,
|
|
||||||
COMFYUI_FLUX,
|
|
||||||
COMFYUI_FLUX_WEIGHT_DTYPE,
|
|
||||||
COMFYUI_FLUX_FP8_CLIP,
|
|
||||||
IMAGES_OPENAI_API_BASE_URL,
|
IMAGES_OPENAI_API_BASE_URL,
|
||||||
IMAGES_OPENAI_API_KEY,
|
IMAGES_OPENAI_API_KEY,
|
||||||
IMAGE_GENERATION_MODEL,
|
IMAGE_GENERATION_MODEL,
|
||||||
IMAGE_SIZE,
|
IMAGE_SIZE,
|
||||||
IMAGE_STEPS,
|
IMAGE_STEPS,
|
||||||
|
CORS_ALLOW_ORIGIN,
|
||||||
AppConfig,
|
AppConfig,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -62,7 +56,7 @@ IMAGE_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["*"],
|
allow_origins=CORS_ALLOW_ORIGIN,
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
|
@ -81,16 +75,94 @@ app.state.config.MODEL = IMAGE_GENERATION_MODEL
|
||||||
app.state.config.AUTOMATIC1111_BASE_URL = AUTOMATIC1111_BASE_URL
|
app.state.config.AUTOMATIC1111_BASE_URL = AUTOMATIC1111_BASE_URL
|
||||||
app.state.config.AUTOMATIC1111_API_AUTH = AUTOMATIC1111_API_AUTH
|
app.state.config.AUTOMATIC1111_API_AUTH = AUTOMATIC1111_API_AUTH
|
||||||
app.state.config.COMFYUI_BASE_URL = COMFYUI_BASE_URL
|
app.state.config.COMFYUI_BASE_URL = COMFYUI_BASE_URL
|
||||||
|
app.state.config.COMFYUI_WORKFLOW = COMFYUI_WORKFLOW
|
||||||
|
app.state.config.COMFYUI_WORKFLOW_NODES = COMFYUI_WORKFLOW_NODES
|
||||||
|
|
||||||
app.state.config.IMAGE_SIZE = IMAGE_SIZE
|
app.state.config.IMAGE_SIZE = IMAGE_SIZE
|
||||||
app.state.config.IMAGE_STEPS = IMAGE_STEPS
|
app.state.config.IMAGE_STEPS = IMAGE_STEPS
|
||||||
app.state.config.COMFYUI_CFG_SCALE = COMFYUI_CFG_SCALE
|
|
||||||
app.state.config.COMFYUI_SAMPLER = COMFYUI_SAMPLER
|
|
||||||
app.state.config.COMFYUI_SCHEDULER = COMFYUI_SCHEDULER
|
@app.get("/config")
|
||||||
app.state.config.COMFYUI_SD3 = COMFYUI_SD3
|
async def get_config(request: Request, user=Depends(get_admin_user)):
|
||||||
app.state.config.COMFYUI_FLUX = COMFYUI_FLUX
|
return {
|
||||||
app.state.config.COMFYUI_FLUX_WEIGHT_DTYPE = COMFYUI_FLUX_WEIGHT_DTYPE
|
"enabled": app.state.config.ENABLED,
|
||||||
app.state.config.COMFYUI_FLUX_FP8_CLIP = COMFYUI_FLUX_FP8_CLIP
|
"engine": app.state.config.ENGINE,
|
||||||
|
"openai": {
|
||||||
|
"OPENAI_API_BASE_URL": app.state.config.OPENAI_API_BASE_URL,
|
||||||
|
"OPENAI_API_KEY": app.state.config.OPENAI_API_KEY,
|
||||||
|
},
|
||||||
|
"automatic1111": {
|
||||||
|
"AUTOMATIC1111_BASE_URL": app.state.config.AUTOMATIC1111_BASE_URL,
|
||||||
|
"AUTOMATIC1111_API_AUTH": app.state.config.AUTOMATIC1111_API_AUTH,
|
||||||
|
},
|
||||||
|
"comfyui": {
|
||||||
|
"COMFYUI_BASE_URL": app.state.config.COMFYUI_BASE_URL,
|
||||||
|
"COMFYUI_WORKFLOW": app.state.config.COMFYUI_WORKFLOW,
|
||||||
|
"COMFYUI_WORKFLOW_NODES": app.state.config.COMFYUI_WORKFLOW_NODES,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class OpenAIConfigForm(BaseModel):
|
||||||
|
OPENAI_API_BASE_URL: str
|
||||||
|
OPENAI_API_KEY: str
|
||||||
|
|
||||||
|
|
||||||
|
class Automatic1111ConfigForm(BaseModel):
|
||||||
|
AUTOMATIC1111_BASE_URL: str
|
||||||
|
AUTOMATIC1111_API_AUTH: str
|
||||||
|
|
||||||
|
|
||||||
|
class ComfyUIConfigForm(BaseModel):
|
||||||
|
COMFYUI_BASE_URL: str
|
||||||
|
COMFYUI_WORKFLOW: str
|
||||||
|
COMFYUI_WORKFLOW_NODES: list[dict]
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigForm(BaseModel):
|
||||||
|
enabled: bool
|
||||||
|
engine: str
|
||||||
|
openai: OpenAIConfigForm
|
||||||
|
automatic1111: Automatic1111ConfigForm
|
||||||
|
comfyui: ComfyUIConfigForm
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/config/update")
|
||||||
|
async def update_config(form_data: ConfigForm, user=Depends(get_admin_user)):
|
||||||
|
app.state.config.ENGINE = form_data.engine
|
||||||
|
app.state.config.ENABLED = form_data.enabled
|
||||||
|
|
||||||
|
app.state.config.OPENAI_API_BASE_URL = form_data.openai.OPENAI_API_BASE_URL
|
||||||
|
app.state.config.OPENAI_API_KEY = form_data.openai.OPENAI_API_KEY
|
||||||
|
|
||||||
|
app.state.config.AUTOMATIC1111_BASE_URL = (
|
||||||
|
form_data.automatic1111.AUTOMATIC1111_BASE_URL
|
||||||
|
)
|
||||||
|
app.state.config.AUTOMATIC1111_API_AUTH = (
|
||||||
|
form_data.automatic1111.AUTOMATIC1111_API_AUTH
|
||||||
|
)
|
||||||
|
|
||||||
|
app.state.config.COMFYUI_BASE_URL = form_data.comfyui.COMFYUI_BASE_URL
|
||||||
|
app.state.config.COMFYUI_WORKFLOW = form_data.comfyui.COMFYUI_WORKFLOW
|
||||||
|
app.state.config.COMFYUI_WORKFLOW_NODES = form_data.comfyui.COMFYUI_WORKFLOW_NODES
|
||||||
|
|
||||||
|
return {
|
||||||
|
"enabled": app.state.config.ENABLED,
|
||||||
|
"engine": app.state.config.ENGINE,
|
||||||
|
"openai": {
|
||||||
|
"OPENAI_API_BASE_URL": app.state.config.OPENAI_API_BASE_URL,
|
||||||
|
"OPENAI_API_KEY": app.state.config.OPENAI_API_KEY,
|
||||||
|
},
|
||||||
|
"automatic1111": {
|
||||||
|
"AUTOMATIC1111_BASE_URL": app.state.config.AUTOMATIC1111_BASE_URL,
|
||||||
|
"AUTOMATIC1111_API_AUTH": app.state.config.AUTOMATIC1111_API_AUTH,
|
||||||
|
},
|
||||||
|
"comfyui": {
|
||||||
|
"COMFYUI_BASE_URL": app.state.config.COMFYUI_BASE_URL,
|
||||||
|
"COMFYUI_WORKFLOW": app.state.config.COMFYUI_WORKFLOW,
|
||||||
|
"COMFYUI_WORKFLOW_NODES": app.state.config.COMFYUI_WORKFLOW_NODES,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_automatic1111_api_auth():
|
def get_automatic1111_api_auth():
|
||||||
|
|
@ -103,166 +175,110 @@ def get_automatic1111_api_auth():
|
||||||
return f"Basic {auth1111_base64_encoded_string}"
|
return f"Basic {auth1111_base64_encoded_string}"
|
||||||
|
|
||||||
|
|
||||||
@app.get("/config")
|
@app.get("/config/url/verify")
|
||||||
async def get_config(request: Request, user=Depends(get_admin_user)):
|
async def verify_url(user=Depends(get_admin_user)):
|
||||||
return {
|
if app.state.config.ENGINE == "automatic1111":
|
||||||
"engine": app.state.config.ENGINE,
|
|
||||||
"enabled": app.state.config.ENABLED,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigUpdateForm(BaseModel):
|
|
||||||
engine: str
|
|
||||||
enabled: bool
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/config/update")
|
|
||||||
async def update_config(form_data: ConfigUpdateForm, user=Depends(get_admin_user)):
|
|
||||||
app.state.config.ENGINE = form_data.engine
|
|
||||||
app.state.config.ENABLED = form_data.enabled
|
|
||||||
return {
|
|
||||||
"engine": app.state.config.ENGINE,
|
|
||||||
"enabled": app.state.config.ENABLED,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class EngineUrlUpdateForm(BaseModel):
|
|
||||||
AUTOMATIC1111_BASE_URL: Optional[str] = None
|
|
||||||
AUTOMATIC1111_API_AUTH: Optional[str] = None
|
|
||||||
COMFYUI_BASE_URL: Optional[str] = None
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/url")
|
|
||||||
async def get_engine_url(user=Depends(get_admin_user)):
|
|
||||||
return {
|
|
||||||
"AUTOMATIC1111_BASE_URL": app.state.config.AUTOMATIC1111_BASE_URL,
|
|
||||||
"AUTOMATIC1111_API_AUTH": app.state.config.AUTOMATIC1111_API_AUTH,
|
|
||||||
"COMFYUI_BASE_URL": app.state.config.COMFYUI_BASE_URL,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/url/update")
|
|
||||||
async def update_engine_url(
|
|
||||||
form_data: EngineUrlUpdateForm, user=Depends(get_admin_user)
|
|
||||||
):
|
|
||||||
if form_data.AUTOMATIC1111_BASE_URL is None:
|
|
||||||
app.state.config.AUTOMATIC1111_BASE_URL = AUTOMATIC1111_BASE_URL
|
|
||||||
else:
|
|
||||||
url = form_data.AUTOMATIC1111_BASE_URL.strip("/")
|
|
||||||
try:
|
try:
|
||||||
r = requests.head(url)
|
r = requests.get(
|
||||||
|
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
|
||||||
|
headers={"authorization": get_automatic1111_api_auth()},
|
||||||
|
)
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
app.state.config.AUTOMATIC1111_BASE_URL = url
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
app.state.config.ENABLED = False
|
||||||
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.INVALID_URL)
|
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.INVALID_URL)
|
||||||
|
elif app.state.config.ENGINE == "comfyui":
|
||||||
if form_data.COMFYUI_BASE_URL is None:
|
|
||||||
app.state.config.COMFYUI_BASE_URL = COMFYUI_BASE_URL
|
|
||||||
else:
|
|
||||||
url = form_data.COMFYUI_BASE_URL.strip("/")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
r = requests.head(url)
|
r = requests.get(url=f"{app.state.config.COMFYUI_BASE_URL}/object_info")
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
app.state.config.COMFYUI_BASE_URL = url
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
app.state.config.ENABLED = False
|
||||||
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.INVALID_URL)
|
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.INVALID_URL)
|
||||||
|
|
||||||
if form_data.AUTOMATIC1111_API_AUTH is None:
|
|
||||||
app.state.config.AUTOMATIC1111_API_AUTH = AUTOMATIC1111_API_AUTH
|
|
||||||
else:
|
else:
|
||||||
app.state.config.AUTOMATIC1111_API_AUTH = form_data.AUTOMATIC1111_API_AUTH
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def set_image_model(model: str):
|
||||||
|
app.state.config.MODEL = model
|
||||||
|
if app.state.config.ENGINE in ["", "automatic1111"]:
|
||||||
|
api_auth = get_automatic1111_api_auth()
|
||||||
|
r = requests.get(
|
||||||
|
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
|
||||||
|
headers={"authorization": api_auth},
|
||||||
|
)
|
||||||
|
options = r.json()
|
||||||
|
if model != options["sd_model_checkpoint"]:
|
||||||
|
options["sd_model_checkpoint"] = model
|
||||||
|
r = requests.post(
|
||||||
|
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
|
||||||
|
json=options,
|
||||||
|
headers={"authorization": api_auth},
|
||||||
|
)
|
||||||
|
return app.state.config.MODEL
|
||||||
|
|
||||||
|
|
||||||
|
def get_image_model():
|
||||||
|
if app.state.config.ENGINE == "openai":
|
||||||
|
return app.state.config.MODEL if app.state.config.MODEL else "dall-e-2"
|
||||||
|
elif app.state.config.ENGINE == "comfyui":
|
||||||
|
return app.state.config.MODEL if app.state.config.MODEL else ""
|
||||||
|
elif app.state.config.ENGINE == "automatic1111" or app.state.config.ENGINE == "":
|
||||||
|
try:
|
||||||
|
r = requests.get(
|
||||||
|
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
|
||||||
|
headers={"authorization": get_automatic1111_api_auth()},
|
||||||
|
)
|
||||||
|
options = r.json()
|
||||||
|
return options["sd_model_checkpoint"]
|
||||||
|
except Exception as e:
|
||||||
|
app.state.config.ENABLED = False
|
||||||
|
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.DEFAULT(e))
|
||||||
|
|
||||||
|
|
||||||
|
class ImageConfigForm(BaseModel):
|
||||||
|
MODEL: str
|
||||||
|
IMAGE_SIZE: str
|
||||||
|
IMAGE_STEPS: int
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/image/config")
|
||||||
|
async def get_image_config(user=Depends(get_admin_user)):
|
||||||
return {
|
return {
|
||||||
"AUTOMATIC1111_BASE_URL": app.state.config.AUTOMATIC1111_BASE_URL,
|
"MODEL": app.state.config.MODEL,
|
||||||
"AUTOMATIC1111_API_AUTH": app.state.config.AUTOMATIC1111_API_AUTH,
|
|
||||||
"COMFYUI_BASE_URL": app.state.config.COMFYUI_BASE_URL,
|
|
||||||
"status": True,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class OpenAIConfigUpdateForm(BaseModel):
|
|
||||||
url: str
|
|
||||||
key: str
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/openai/config")
|
|
||||||
async def get_openai_config(user=Depends(get_admin_user)):
|
|
||||||
return {
|
|
||||||
"OPENAI_API_BASE_URL": app.state.config.OPENAI_API_BASE_URL,
|
|
||||||
"OPENAI_API_KEY": app.state.config.OPENAI_API_KEY,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/openai/config/update")
|
|
||||||
async def update_openai_config(
|
|
||||||
form_data: OpenAIConfigUpdateForm, user=Depends(get_admin_user)
|
|
||||||
):
|
|
||||||
if form_data.key == "":
|
|
||||||
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.API_KEY_NOT_FOUND)
|
|
||||||
|
|
||||||
app.state.config.OPENAI_API_BASE_URL = form_data.url
|
|
||||||
app.state.config.OPENAI_API_KEY = form_data.key
|
|
||||||
|
|
||||||
return {
|
|
||||||
"status": True,
|
|
||||||
"OPENAI_API_BASE_URL": app.state.config.OPENAI_API_BASE_URL,
|
|
||||||
"OPENAI_API_KEY": app.state.config.OPENAI_API_KEY,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class ImageSizeUpdateForm(BaseModel):
|
|
||||||
size: str
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/size")
|
|
||||||
async def get_image_size(user=Depends(get_admin_user)):
|
|
||||||
return {"IMAGE_SIZE": app.state.config.IMAGE_SIZE}
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/size/update")
|
|
||||||
async def update_image_size(
|
|
||||||
form_data: ImageSizeUpdateForm, user=Depends(get_admin_user)
|
|
||||||
):
|
|
||||||
pattern = r"^\d+x\d+$" # Regular expression pattern
|
|
||||||
if re.match(pattern, form_data.size):
|
|
||||||
app.state.config.IMAGE_SIZE = form_data.size
|
|
||||||
return {
|
|
||||||
"IMAGE_SIZE": app.state.config.IMAGE_SIZE,
|
"IMAGE_SIZE": app.state.config.IMAGE_SIZE,
|
||||||
"status": True,
|
"IMAGE_STEPS": app.state.config.IMAGE_STEPS,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/image/config/update")
|
||||||
|
async def update_image_config(form_data: ImageConfigForm, user=Depends(get_admin_user)):
|
||||||
|
app.state.config.MODEL = form_data.MODEL
|
||||||
|
|
||||||
|
pattern = r"^\d+x\d+$"
|
||||||
|
if re.match(pattern, form_data.IMAGE_SIZE):
|
||||||
|
app.state.config.IMAGE_SIZE = form_data.IMAGE_SIZE
|
||||||
else:
|
else:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=400,
|
status_code=400,
|
||||||
detail=ERROR_MESSAGES.INCORRECT_FORMAT(" (e.g., 512x512)."),
|
detail=ERROR_MESSAGES.INCORRECT_FORMAT(" (e.g., 512x512)."),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if form_data.IMAGE_STEPS >= 0:
|
||||||
class ImageStepsUpdateForm(BaseModel):
|
app.state.config.IMAGE_STEPS = form_data.IMAGE_STEPS
|
||||||
steps: int
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/steps")
|
|
||||||
async def get_image_size(user=Depends(get_admin_user)):
|
|
||||||
return {"IMAGE_STEPS": app.state.config.IMAGE_STEPS}
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/steps/update")
|
|
||||||
async def update_image_size(
|
|
||||||
form_data: ImageStepsUpdateForm, user=Depends(get_admin_user)
|
|
||||||
):
|
|
||||||
if form_data.steps >= 0:
|
|
||||||
app.state.config.IMAGE_STEPS = form_data.steps
|
|
||||||
return {
|
|
||||||
"IMAGE_STEPS": app.state.config.IMAGE_STEPS,
|
|
||||||
"status": True,
|
|
||||||
}
|
|
||||||
else:
|
else:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=400,
|
status_code=400,
|
||||||
detail=ERROR_MESSAGES.INCORRECT_FORMAT(" (e.g., 50)."),
|
detail=ERROR_MESSAGES.INCORRECT_FORMAT(" (e.g., 50)."),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"MODEL": app.state.config.MODEL,
|
||||||
|
"IMAGE_SIZE": app.state.config.IMAGE_SIZE,
|
||||||
|
"IMAGE_STEPS": app.state.config.IMAGE_STEPS,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.get("/models")
|
@app.get("/models")
|
||||||
def get_models(user=Depends(get_verified_user)):
|
def get_models(user=Depends(get_verified_user)):
|
||||||
|
|
@ -273,18 +289,50 @@ def get_models(user=Depends(get_verified_user)):
|
||||||
{"id": "dall-e-3", "name": "DALL·E 3"},
|
{"id": "dall-e-3", "name": "DALL·E 3"},
|
||||||
]
|
]
|
||||||
elif app.state.config.ENGINE == "comfyui":
|
elif app.state.config.ENGINE == "comfyui":
|
||||||
|
# TODO - get models from comfyui
|
||||||
r = requests.get(url=f"{app.state.config.COMFYUI_BASE_URL}/object_info")
|
r = requests.get(url=f"{app.state.config.COMFYUI_BASE_URL}/object_info")
|
||||||
info = r.json()
|
info = r.json()
|
||||||
|
|
||||||
|
workflow = json.loads(app.state.config.COMFYUI_WORKFLOW)
|
||||||
|
model_node_id = None
|
||||||
|
|
||||||
|
for node in app.state.config.COMFYUI_WORKFLOW_NODES:
|
||||||
|
if node["type"] == "model":
|
||||||
|
model_node_id = node["node_ids"][0]
|
||||||
|
break
|
||||||
|
|
||||||
|
if model_node_id:
|
||||||
|
model_list_key = None
|
||||||
|
|
||||||
|
print(workflow[model_node_id]["class_type"])
|
||||||
|
for key in info[workflow[model_node_id]["class_type"]]["input"][
|
||||||
|
"required"
|
||||||
|
]:
|
||||||
|
if "_name" in key:
|
||||||
|
model_list_key = key
|
||||||
|
break
|
||||||
|
|
||||||
|
if model_list_key:
|
||||||
return list(
|
return list(
|
||||||
map(
|
map(
|
||||||
lambda model: {"id": model, "name": model},
|
lambda model: {"id": model, "name": model},
|
||||||
info["CheckpointLoaderSimple"]["input"]["required"]["ckpt_name"][0],
|
info[workflow[model_node_id]["class_type"]]["input"][
|
||||||
|
"required"
|
||||||
|
][model_list_key][0],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
return list(
|
||||||
|
map(
|
||||||
|
lambda model: {"id": model, "name": model},
|
||||||
|
info["CheckpointLoaderSimple"]["input"]["required"][
|
||||||
|
"ckpt_name"
|
||||||
|
][0],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
elif (
|
||||||
|
app.state.config.ENGINE == "automatic1111" or app.state.config.ENGINE == ""
|
||||||
|
):
|
||||||
r = requests.get(
|
r = requests.get(
|
||||||
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/sd-models",
|
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/sd-models",
|
||||||
headers={"authorization": get_automatic1111_api_auth()},
|
headers={"authorization": get_automatic1111_api_auth()},
|
||||||
|
|
@ -301,69 +349,11 @@ def get_models(user=Depends(get_verified_user)):
|
||||||
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.DEFAULT(e))
|
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.DEFAULT(e))
|
||||||
|
|
||||||
|
|
||||||
@app.get("/models/default")
|
|
||||||
async def get_default_model(user=Depends(get_admin_user)):
|
|
||||||
try:
|
|
||||||
if app.state.config.ENGINE == "openai":
|
|
||||||
return {
|
|
||||||
"model": (
|
|
||||||
app.state.config.MODEL if app.state.config.MODEL else "dall-e-2"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
elif app.state.config.ENGINE == "comfyui":
|
|
||||||
return {"model": (app.state.config.MODEL if app.state.config.MODEL else "")}
|
|
||||||
else:
|
|
||||||
r = requests.get(
|
|
||||||
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
|
|
||||||
headers={"authorization": get_automatic1111_api_auth()},
|
|
||||||
)
|
|
||||||
options = r.json()
|
|
||||||
return {"model": options["sd_model_checkpoint"]}
|
|
||||||
except Exception as e:
|
|
||||||
app.state.config.ENABLED = False
|
|
||||||
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.DEFAULT(e))
|
|
||||||
|
|
||||||
|
|
||||||
class UpdateModelForm(BaseModel):
|
|
||||||
model: str
|
|
||||||
|
|
||||||
|
|
||||||
def set_model_handler(model: str):
|
|
||||||
if app.state.config.ENGINE in ["openai", "comfyui"]:
|
|
||||||
app.state.config.MODEL = model
|
|
||||||
return app.state.config.MODEL
|
|
||||||
else:
|
|
||||||
api_auth = get_automatic1111_api_auth()
|
|
||||||
r = requests.get(
|
|
||||||
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
|
|
||||||
headers={"authorization": api_auth},
|
|
||||||
)
|
|
||||||
options = r.json()
|
|
||||||
|
|
||||||
if model != options["sd_model_checkpoint"]:
|
|
||||||
options["sd_model_checkpoint"] = model
|
|
||||||
r = requests.post(
|
|
||||||
url=f"{app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
|
|
||||||
json=options,
|
|
||||||
headers={"authorization": api_auth},
|
|
||||||
)
|
|
||||||
|
|
||||||
return options
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/models/default/update")
|
|
||||||
def update_default_model(
|
|
||||||
form_data: UpdateModelForm,
|
|
||||||
user=Depends(get_verified_user),
|
|
||||||
):
|
|
||||||
return set_model_handler(form_data.model)
|
|
||||||
|
|
||||||
|
|
||||||
class GenerateImageForm(BaseModel):
|
class GenerateImageForm(BaseModel):
|
||||||
model: Optional[str] = None
|
model: Optional[str] = None
|
||||||
prompt: str
|
prompt: str
|
||||||
n: int = 1
|
|
||||||
size: Optional[str] = None
|
size: Optional[str] = None
|
||||||
|
n: int = 1
|
||||||
negative_prompt: Optional[str] = None
|
negative_prompt: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -479,7 +469,6 @@ async def image_generations(
|
||||||
return images
|
return images
|
||||||
|
|
||||||
elif app.state.config.ENGINE == "comfyui":
|
elif app.state.config.ENGINE == "comfyui":
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"prompt": form_data.prompt,
|
"prompt": form_data.prompt,
|
||||||
"width": width,
|
"width": width,
|
||||||
|
|
@ -493,32 +482,20 @@ async def image_generations(
|
||||||
if form_data.negative_prompt is not None:
|
if form_data.negative_prompt is not None:
|
||||||
data["negative_prompt"] = form_data.negative_prompt
|
data["negative_prompt"] = form_data.negative_prompt
|
||||||
|
|
||||||
if app.state.config.COMFYUI_CFG_SCALE:
|
form_data = ComfyUIGenerateImageForm(
|
||||||
data["cfg_scale"] = app.state.config.COMFYUI_CFG_SCALE
|
**{
|
||||||
|
"workflow": ComfyUIWorkflow(
|
||||||
if app.state.config.COMFYUI_SAMPLER is not None:
|
**{
|
||||||
data["sampler"] = app.state.config.COMFYUI_SAMPLER
|
"workflow": app.state.config.COMFYUI_WORKFLOW,
|
||||||
|
"nodes": app.state.config.COMFYUI_WORKFLOW_NODES,
|
||||||
if app.state.config.COMFYUI_SCHEDULER is not None:
|
}
|
||||||
data["scheduler"] = app.state.config.COMFYUI_SCHEDULER
|
),
|
||||||
|
**data,
|
||||||
if app.state.config.COMFYUI_SD3 is not None:
|
}
|
||||||
data["sd3"] = app.state.config.COMFYUI_SD3
|
)
|
||||||
|
|
||||||
if app.state.config.COMFYUI_FLUX is not None:
|
|
||||||
data["flux"] = app.state.config.COMFYUI_FLUX
|
|
||||||
|
|
||||||
if app.state.config.COMFYUI_FLUX_WEIGHT_DTYPE is not None:
|
|
||||||
data["flux_weight_dtype"] = app.state.config.COMFYUI_FLUX_WEIGHT_DTYPE
|
|
||||||
|
|
||||||
if app.state.config.COMFYUI_FLUX_FP8_CLIP is not None:
|
|
||||||
data["flux_fp8_clip"] = app.state.config.COMFYUI_FLUX_FP8_CLIP
|
|
||||||
|
|
||||||
data = ImageGenerationPayload(**data)
|
|
||||||
|
|
||||||
res = await comfyui_generate_image(
|
res = await comfyui_generate_image(
|
||||||
app.state.config.MODEL,
|
app.state.config.MODEL,
|
||||||
data,
|
form_data,
|
||||||
user.id,
|
user.id,
|
||||||
app.state.config.COMFYUI_BASE_URL,
|
app.state.config.COMFYUI_BASE_URL,
|
||||||
)
|
)
|
||||||
|
|
@ -532,13 +509,15 @@ async def image_generations(
|
||||||
file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
|
file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
|
||||||
|
|
||||||
with open(file_body_path, "w") as f:
|
with open(file_body_path, "w") as f:
|
||||||
json.dump(data.model_dump(exclude_none=True), f)
|
json.dump(form_data.model_dump(exclude_none=True), f)
|
||||||
|
|
||||||
log.debug(f"images: {images}")
|
log.debug(f"images: {images}")
|
||||||
return images
|
return images
|
||||||
else:
|
elif (
|
||||||
|
app.state.config.ENGINE == "automatic1111" or app.state.config.ENGINE == ""
|
||||||
|
):
|
||||||
if form_data.model:
|
if form_data.model:
|
||||||
set_model_handler(form_data.model)
|
set_image_model(form_data.model)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"prompt": form_data.prompt,
|
"prompt": form_data.prompt,
|
||||||
|
|
@ -560,7 +539,6 @@ async def image_generations(
|
||||||
)
|
)
|
||||||
|
|
||||||
res = r.json()
|
res = r.json()
|
||||||
|
|
||||||
log.debug(f"res: {res}")
|
log.debug(f"res: {res}")
|
||||||
|
|
||||||
images = []
|
images = []
|
||||||
|
|
@ -577,7 +555,6 @@ async def image_generations(
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error = e
|
error = e
|
||||||
|
|
||||||
if r != None:
|
if r != None:
|
||||||
data = r.json()
|
data = r.json()
|
||||||
if "error" in data:
|
if "error" in data:
|
||||||
|
|
|
||||||
|
|
@ -15,245 +15,6 @@ from pydantic import BaseModel
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
COMFYUI_DEFAULT_PROMPT = """
|
|
||||||
{
|
|
||||||
"3": {
|
|
||||||
"inputs": {
|
|
||||||
"seed": 0,
|
|
||||||
"steps": 20,
|
|
||||||
"cfg": 8,
|
|
||||||
"sampler_name": "euler",
|
|
||||||
"scheduler": "normal",
|
|
||||||
"denoise": 1,
|
|
||||||
"model": [
|
|
||||||
"4",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"positive": [
|
|
||||||
"6",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"negative": [
|
|
||||||
"7",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"latent_image": [
|
|
||||||
"5",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "KSampler",
|
|
||||||
"_meta": {
|
|
||||||
"title": "KSampler"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"4": {
|
|
||||||
"inputs": {
|
|
||||||
"ckpt_name": "model.safetensors"
|
|
||||||
},
|
|
||||||
"class_type": "CheckpointLoaderSimple",
|
|
||||||
"_meta": {
|
|
||||||
"title": "Load Checkpoint"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"5": {
|
|
||||||
"inputs": {
|
|
||||||
"width": 512,
|
|
||||||
"height": 512,
|
|
||||||
"batch_size": 1
|
|
||||||
},
|
|
||||||
"class_type": "EmptyLatentImage",
|
|
||||||
"_meta": {
|
|
||||||
"title": "Empty Latent Image"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"inputs": {
|
|
||||||
"text": "Prompt",
|
|
||||||
"clip": [
|
|
||||||
"4",
|
|
||||||
1
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "CLIPTextEncode",
|
|
||||||
"_meta": {
|
|
||||||
"title": "CLIP Text Encode (Prompt)"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"7": {
|
|
||||||
"inputs": {
|
|
||||||
"text": "Negative Prompt",
|
|
||||||
"clip": [
|
|
||||||
"4",
|
|
||||||
1
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "CLIPTextEncode",
|
|
||||||
"_meta": {
|
|
||||||
"title": "CLIP Text Encode (Prompt)"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"inputs": {
|
|
||||||
"samples": [
|
|
||||||
"3",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"vae": [
|
|
||||||
"4",
|
|
||||||
2
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "VAEDecode",
|
|
||||||
"_meta": {
|
|
||||||
"title": "VAE Decode"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"inputs": {
|
|
||||||
"filename_prefix": "ComfyUI",
|
|
||||||
"images": [
|
|
||||||
"8",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "SaveImage",
|
|
||||||
"_meta": {
|
|
||||||
"title": "Save Image"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
FLUX_DEFAULT_PROMPT = """
|
|
||||||
{
|
|
||||||
"5": {
|
|
||||||
"inputs": {
|
|
||||||
"width": 1024,
|
|
||||||
"height": 1024,
|
|
||||||
"batch_size": 1
|
|
||||||
},
|
|
||||||
"class_type": "EmptyLatentImage"
|
|
||||||
},
|
|
||||||
"6": {
|
|
||||||
"inputs": {
|
|
||||||
"text": "Input Text Here",
|
|
||||||
"clip": [
|
|
||||||
"11",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "CLIPTextEncode"
|
|
||||||
},
|
|
||||||
"8": {
|
|
||||||
"inputs": {
|
|
||||||
"samples": [
|
|
||||||
"13",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"vae": [
|
|
||||||
"10",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "VAEDecode"
|
|
||||||
},
|
|
||||||
"9": {
|
|
||||||
"inputs": {
|
|
||||||
"filename_prefix": "ComfyUI",
|
|
||||||
"images": [
|
|
||||||
"8",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "SaveImage"
|
|
||||||
},
|
|
||||||
"10": {
|
|
||||||
"inputs": {
|
|
||||||
"vae_name": "ae.safetensors"
|
|
||||||
},
|
|
||||||
"class_type": "VAELoader"
|
|
||||||
},
|
|
||||||
"11": {
|
|
||||||
"inputs": {
|
|
||||||
"clip_name1": "clip_l.safetensors",
|
|
||||||
"clip_name2": "t5xxl_fp16.safetensors",
|
|
||||||
"type": "flux"
|
|
||||||
},
|
|
||||||
"class_type": "DualCLIPLoader"
|
|
||||||
},
|
|
||||||
"12": {
|
|
||||||
"inputs": {
|
|
||||||
"unet_name": "flux1-dev.safetensors",
|
|
||||||
"weight_dtype": "default"
|
|
||||||
},
|
|
||||||
"class_type": "UNETLoader"
|
|
||||||
},
|
|
||||||
"13": {
|
|
||||||
"inputs": {
|
|
||||||
"noise": [
|
|
||||||
"25",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"guider": [
|
|
||||||
"22",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"sampler": [
|
|
||||||
"16",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"sigmas": [
|
|
||||||
"17",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"latent_image": [
|
|
||||||
"5",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "SamplerCustomAdvanced"
|
|
||||||
},
|
|
||||||
"16": {
|
|
||||||
"inputs": {
|
|
||||||
"sampler_name": "euler"
|
|
||||||
},
|
|
||||||
"class_type": "KSamplerSelect"
|
|
||||||
},
|
|
||||||
"17": {
|
|
||||||
"inputs": {
|
|
||||||
"scheduler": "simple",
|
|
||||||
"steps": 20,
|
|
||||||
"denoise": 1,
|
|
||||||
"model": [
|
|
||||||
"12",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "BasicScheduler"
|
|
||||||
},
|
|
||||||
"22": {
|
|
||||||
"inputs": {
|
|
||||||
"model": [
|
|
||||||
"12",
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"conditioning": [
|
|
||||||
"6",
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"class_type": "BasicGuider"
|
|
||||||
},
|
|
||||||
"25": {
|
|
||||||
"inputs": {
|
|
||||||
"noise_seed": 778937779713005
|
|
||||||
},
|
|
||||||
"class_type": "RandomNoise"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def queue_prompt(prompt, client_id, base_url):
|
def queue_prompt(prompt, client_id, base_url):
|
||||||
log.info("queue_prompt")
|
log.info("queue_prompt")
|
||||||
|
|
@ -311,82 +72,71 @@ def get_images(ws, prompt, client_id, base_url):
|
||||||
return {"data": output_images}
|
return {"data": output_images}
|
||||||
|
|
||||||
|
|
||||||
class ImageGenerationPayload(BaseModel):
|
class ComfyUINodeInput(BaseModel):
|
||||||
|
type: Optional[str] = None
|
||||||
|
node_ids: list[str] = []
|
||||||
|
key: Optional[str] = "text"
|
||||||
|
value: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
class ComfyUIWorkflow(BaseModel):
|
||||||
|
workflow: str
|
||||||
|
nodes: list[ComfyUINodeInput]
|
||||||
|
|
||||||
|
|
||||||
|
class ComfyUIGenerateImageForm(BaseModel):
|
||||||
|
workflow: ComfyUIWorkflow
|
||||||
|
|
||||||
prompt: str
|
prompt: str
|
||||||
negative_prompt: Optional[str] = ""
|
negative_prompt: Optional[str] = None
|
||||||
steps: Optional[int] = None
|
|
||||||
seed: Optional[int] = None
|
|
||||||
width: int
|
width: int
|
||||||
height: int
|
height: int
|
||||||
n: int = 1
|
n: int = 1
|
||||||
cfg_scale: Optional[float] = None
|
|
||||||
sampler: Optional[str] = None
|
steps: Optional[int] = None
|
||||||
scheduler: Optional[str] = None
|
seed: Optional[int] = None
|
||||||
sd3: Optional[bool] = None
|
|
||||||
flux: Optional[bool] = None
|
|
||||||
flux_weight_dtype: Optional[str] = None
|
|
||||||
flux_fp8_clip: Optional[bool] = None
|
|
||||||
|
|
||||||
|
|
||||||
async def comfyui_generate_image(
|
async def comfyui_generate_image(
|
||||||
model: str, payload: ImageGenerationPayload, client_id, base_url
|
model: str, payload: ComfyUIGenerateImageForm, client_id, base_url
|
||||||
):
|
):
|
||||||
ws_url = base_url.replace("http://", "ws://").replace("https://", "wss://")
|
ws_url = base_url.replace("http://", "ws://").replace("https://", "wss://")
|
||||||
|
workflow = json.loads(payload.workflow.workflow)
|
||||||
|
|
||||||
comfyui_prompt = json.loads(COMFYUI_DEFAULT_PROMPT)
|
for node in payload.workflow.nodes:
|
||||||
|
if node.type:
|
||||||
if payload.cfg_scale:
|
if node.type == "model":
|
||||||
comfyui_prompt["3"]["inputs"]["cfg"] = payload.cfg_scale
|
for node_id in node.node_ids:
|
||||||
|
workflow[node_id]["inputs"][node.key] = model
|
||||||
if payload.sampler:
|
elif node.type == "prompt":
|
||||||
comfyui_prompt["3"]["inputs"]["sampler"] = payload.sampler
|
for node_id in node.node_ids:
|
||||||
|
workflow[node_id]["inputs"]["text"] = payload.prompt
|
||||||
if payload.scheduler:
|
elif node.type == "negative_prompt":
|
||||||
comfyui_prompt["3"]["inputs"]["scheduler"] = payload.scheduler
|
for node_id in node.node_ids:
|
||||||
|
workflow[node_id]["inputs"]["text"] = payload.negative_prompt
|
||||||
if payload.sd3:
|
elif node.type == "width":
|
||||||
comfyui_prompt["5"]["class_type"] = "EmptySD3LatentImage"
|
for node_id in node.node_ids:
|
||||||
|
workflow[node_id]["inputs"]["width"] = payload.width
|
||||||
if payload.steps:
|
elif node.type == "height":
|
||||||
comfyui_prompt["3"]["inputs"]["steps"] = payload.steps
|
for node_id in node.node_ids:
|
||||||
|
workflow[node_id]["inputs"]["height"] = payload.height
|
||||||
comfyui_prompt["4"]["inputs"]["ckpt_name"] = model
|
elif node.type == "n":
|
||||||
comfyui_prompt["7"]["inputs"]["text"] = payload.negative_prompt
|
for node_id in node.node_ids:
|
||||||
comfyui_prompt["3"]["inputs"]["seed"] = (
|
workflow[node_id]["inputs"]["batch_size"] = payload.n
|
||||||
payload.seed if payload.seed else random.randint(0, 18446744073709551614)
|
elif node.type == "steps":
|
||||||
|
for node_id in node.node_ids:
|
||||||
|
workflow[node_id]["inputs"]["steps"] = payload.steps
|
||||||
|
elif node.type == "seed":
|
||||||
|
seed = (
|
||||||
|
payload.seed
|
||||||
|
if payload.seed
|
||||||
|
else random.randint(0, 18446744073709551614)
|
||||||
)
|
)
|
||||||
|
for node_id in node.node_ids:
|
||||||
# as Flux uses a completely different workflow, we must treat it specially
|
workflow[node.node_id]["inputs"]["seed"] = seed
|
||||||
if payload.flux:
|
else:
|
||||||
comfyui_prompt = json.loads(FLUX_DEFAULT_PROMPT)
|
for node_id in node.node_ids:
|
||||||
comfyui_prompt["12"]["inputs"]["unet_name"] = model
|
workflow[node_id]["inputs"][node.key] = node.value
|
||||||
comfyui_prompt["25"]["inputs"]["noise_seed"] = (
|
|
||||||
payload.seed if payload.seed else random.randint(0, 18446744073709551614)
|
|
||||||
)
|
|
||||||
|
|
||||||
if payload.sampler:
|
|
||||||
comfyui_prompt["16"]["inputs"]["sampler_name"] = payload.sampler
|
|
||||||
|
|
||||||
if payload.steps:
|
|
||||||
comfyui_prompt["17"]["inputs"]["steps"] = payload.steps
|
|
||||||
|
|
||||||
if payload.scheduler:
|
|
||||||
comfyui_prompt["17"]["inputs"]["scheduler"] = payload.scheduler
|
|
||||||
|
|
||||||
if payload.flux_weight_dtype:
|
|
||||||
comfyui_prompt["12"]["inputs"]["weight_dtype"] = payload.flux_weight_dtype
|
|
||||||
|
|
||||||
if payload.flux_fp8_clip:
|
|
||||||
comfyui_prompt["11"]["inputs"][
|
|
||||||
"clip_name2"
|
|
||||||
] = "t5xxl_fp8_e4m3fn.safetensors"
|
|
||||||
|
|
||||||
comfyui_prompt["5"]["inputs"]["batch_size"] = payload.n
|
|
||||||
comfyui_prompt["5"]["inputs"]["width"] = payload.width
|
|
||||||
comfyui_prompt["5"]["inputs"]["height"] = payload.height
|
|
||||||
|
|
||||||
# set the text prompt for our positive CLIPTextEncode
|
|
||||||
comfyui_prompt["6"]["inputs"]["text"] = payload.prompt
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ws = websocket.WebSocket()
|
ws = websocket.WebSocket()
|
||||||
|
|
@ -397,9 +147,7 @@ async def comfyui_generate_image(
|
||||||
return None
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
images = await asyncio.to_thread(
|
images = await asyncio.to_thread(get_images, ws, workflow, client_id, base_url)
|
||||||
get_images, ws, comfyui_prompt, client_id, base_url
|
|
||||||
)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.exception(f"Error while receiving images: {e}")
|
log.exception(f"Error while receiving images: {e}")
|
||||||
images = None
|
images = None
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ from config import (
|
||||||
MODEL_FILTER_LIST,
|
MODEL_FILTER_LIST,
|
||||||
UPLOAD_DIR,
|
UPLOAD_DIR,
|
||||||
AppConfig,
|
AppConfig,
|
||||||
|
CORS_ALLOW_ORIGIN,
|
||||||
)
|
)
|
||||||
from utils.misc import (
|
from utils.misc import (
|
||||||
calculate_sha256,
|
calculate_sha256,
|
||||||
|
|
@ -55,7 +56,7 @@ log.setLevel(SRC_LOG_LEVELS["OLLAMA"])
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["*"],
|
allow_origins=CORS_ALLOW_ORIGIN,
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
|
@ -147,13 +148,17 @@ async def cleanup_response(
|
||||||
await session.close()
|
await session.close()
|
||||||
|
|
||||||
|
|
||||||
async def post_streaming_url(url: str, payload: str, stream: bool = True):
|
async def post_streaming_url(url: str, payload: Union[str, bytes], stream: bool = True):
|
||||||
r = None
|
r = None
|
||||||
try:
|
try:
|
||||||
session = aiohttp.ClientSession(
|
session = aiohttp.ClientSession(
|
||||||
trust_env=True, timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT)
|
trust_env=True, timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT)
|
||||||
)
|
)
|
||||||
r = await session.post(url, data=payload)
|
r = await session.post(
|
||||||
|
url,
|
||||||
|
data=payload,
|
||||||
|
headers={"Content-Type": "application/json"},
|
||||||
|
)
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
|
|
||||||
if stream:
|
if stream:
|
||||||
|
|
@ -422,6 +427,7 @@ async def copy_model(
|
||||||
r = requests.request(
|
r = requests.request(
|
||||||
method="POST",
|
method="POST",
|
||||||
url=f"{url}/api/copy",
|
url=f"{url}/api/copy",
|
||||||
|
headers={"Content-Type": "application/json"},
|
||||||
data=form_data.model_dump_json(exclude_none=True).encode(),
|
data=form_data.model_dump_json(exclude_none=True).encode(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -470,6 +476,7 @@ async def delete_model(
|
||||||
r = requests.request(
|
r = requests.request(
|
||||||
method="DELETE",
|
method="DELETE",
|
||||||
url=f"{url}/api/delete",
|
url=f"{url}/api/delete",
|
||||||
|
headers={"Content-Type": "application/json"},
|
||||||
data=form_data.model_dump_json(exclude_none=True).encode(),
|
data=form_data.model_dump_json(exclude_none=True).encode(),
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
|
|
@ -510,6 +517,7 @@ async def show_model_info(form_data: ModelNameForm, user=Depends(get_verified_us
|
||||||
r = requests.request(
|
r = requests.request(
|
||||||
method="POST",
|
method="POST",
|
||||||
url=f"{url}/api/show",
|
url=f"{url}/api/show",
|
||||||
|
headers={"Content-Type": "application/json"},
|
||||||
data=form_data.model_dump_json(exclude_none=True).encode(),
|
data=form_data.model_dump_json(exclude_none=True).encode(),
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
|
|
@ -567,6 +575,7 @@ async def generate_embeddings(
|
||||||
r = requests.request(
|
r = requests.request(
|
||||||
method="POST",
|
method="POST",
|
||||||
url=f"{url}/api/embeddings",
|
url=f"{url}/api/embeddings",
|
||||||
|
headers={"Content-Type": "application/json"},
|
||||||
data=form_data.model_dump_json(exclude_none=True).encode(),
|
data=form_data.model_dump_json(exclude_none=True).encode(),
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
|
|
@ -616,6 +625,7 @@ def generate_ollama_embeddings(
|
||||||
r = requests.request(
|
r = requests.request(
|
||||||
method="POST",
|
method="POST",
|
||||||
url=f"{url}/api/embeddings",
|
url=f"{url}/api/embeddings",
|
||||||
|
headers={"Content-Type": "application/json"},
|
||||||
data=form_data.model_dump_json(exclude_none=True).encode(),
|
data=form_data.model_dump_json(exclude_none=True).encode(),
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
|
|
@ -721,11 +731,8 @@ async def generate_chat_completion(
|
||||||
url_idx: Optional[int] = None,
|
url_idx: Optional[int] = None,
|
||||||
user=Depends(get_verified_user),
|
user=Depends(get_verified_user),
|
||||||
):
|
):
|
||||||
log.debug(f"{form_data.model_dump_json(exclude_none=True).encode()}=")
|
payload = {**form_data.model_dump(exclude_none=True)}
|
||||||
|
log.debug(f"{payload = }")
|
||||||
payload = {
|
|
||||||
**form_data.model_dump(exclude_none=True, exclude=["metadata"]),
|
|
||||||
}
|
|
||||||
if "metadata" in payload:
|
if "metadata" in payload:
|
||||||
del payload["metadata"]
|
del payload["metadata"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ from config import (
|
||||||
ENABLE_MODEL_FILTER,
|
ENABLE_MODEL_FILTER,
|
||||||
MODEL_FILTER_LIST,
|
MODEL_FILTER_LIST,
|
||||||
AppConfig,
|
AppConfig,
|
||||||
|
CORS_ALLOW_ORIGIN,
|
||||||
)
|
)
|
||||||
from typing import Optional, Literal, overload
|
from typing import Optional, Literal, overload
|
||||||
|
|
||||||
|
|
@ -45,7 +46,7 @@ log.setLevel(SRC_LOG_LEVELS["OPENAI"])
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=["*"],
|
allow_origins=CORS_ALLOW_ORIGIN,
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,7 @@ from config import (
|
||||||
RAG_WEB_SEARCH_RESULT_COUNT,
|
RAG_WEB_SEARCH_RESULT_COUNT,
|
||||||
RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
|
||||||
RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
||||||
|
CORS_ALLOW_ORIGIN,
|
||||||
)
|
)
|
||||||
|
|
||||||
from constants import ERROR_MESSAGES
|
from constants import ERROR_MESSAGES
|
||||||
|
|
@ -240,12 +241,9 @@ app.state.EMBEDDING_FUNCTION = get_embedding_function(
|
||||||
app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
app.state.config.RAG_EMBEDDING_OPENAI_BATCH_SIZE,
|
||||||
)
|
)
|
||||||
|
|
||||||
origins = ["*"]
|
|
||||||
|
|
||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=origins,
|
allow_origins=CORS_ALLOW_ORIGIN,
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ from utils.misc import (
|
||||||
apply_model_system_prompt_to_body,
|
apply_model_system_prompt_to_body,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from utils.tools import get_tools
|
||||||
|
|
||||||
from config import (
|
from config import (
|
||||||
SHOW_ADMIN_DETAILS,
|
SHOW_ADMIN_DETAILS,
|
||||||
|
|
@ -43,10 +44,12 @@ from config import (
|
||||||
JWT_EXPIRES_IN,
|
JWT_EXPIRES_IN,
|
||||||
WEBUI_BANNERS,
|
WEBUI_BANNERS,
|
||||||
ENABLE_COMMUNITY_SHARING,
|
ENABLE_COMMUNITY_SHARING,
|
||||||
|
ENABLE_MESSAGE_RATING,
|
||||||
AppConfig,
|
AppConfig,
|
||||||
OAUTH_USERNAME_CLAIM,
|
OAUTH_USERNAME_CLAIM,
|
||||||
OAUTH_PICTURE_CLAIM,
|
OAUTH_PICTURE_CLAIM,
|
||||||
OAUTH_EMAIL_CLAIM,
|
OAUTH_EMAIL_CLAIM,
|
||||||
|
CORS_ALLOW_ORIGIN,
|
||||||
)
|
)
|
||||||
|
|
||||||
from apps.socket.main import get_event_call, get_event_emitter
|
from apps.socket.main import get_event_call, get_event_emitter
|
||||||
|
|
@ -59,8 +62,6 @@ from pydantic import BaseModel
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
origins = ["*"]
|
|
||||||
|
|
||||||
app.state.config = AppConfig()
|
app.state.config = AppConfig()
|
||||||
|
|
||||||
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
|
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
|
||||||
|
|
@ -82,6 +83,7 @@ app.state.config.WEBHOOK_URL = WEBHOOK_URL
|
||||||
app.state.config.BANNERS = WEBUI_BANNERS
|
app.state.config.BANNERS = WEBUI_BANNERS
|
||||||
|
|
||||||
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
|
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
|
||||||
|
app.state.config.ENABLE_MESSAGE_RATING = ENABLE_MESSAGE_RATING
|
||||||
|
|
||||||
app.state.config.OAUTH_USERNAME_CLAIM = OAUTH_USERNAME_CLAIM
|
app.state.config.OAUTH_USERNAME_CLAIM = OAUTH_USERNAME_CLAIM
|
||||||
app.state.config.OAUTH_PICTURE_CLAIM = OAUTH_PICTURE_CLAIM
|
app.state.config.OAUTH_PICTURE_CLAIM = OAUTH_PICTURE_CLAIM
|
||||||
|
|
@ -93,7 +95,7 @@ app.state.FUNCTIONS = {}
|
||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=origins,
|
allow_origins=CORS_ALLOW_ORIGIN,
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
|
|
@ -274,7 +276,9 @@ def get_function_params(function_module, form_data, user, extra_params={}):
|
||||||
async def generate_function_chat_completion(form_data, user):
|
async def generate_function_chat_completion(form_data, user):
|
||||||
model_id = form_data.get("model")
|
model_id = form_data.get("model")
|
||||||
model_info = Models.get_model_by_id(model_id)
|
model_info = Models.get_model_by_id(model_id)
|
||||||
metadata = form_data.pop("metadata", None)
|
metadata = form_data.pop("metadata", {})
|
||||||
|
files = metadata.get("files", [])
|
||||||
|
tool_ids = metadata.get("tool_ids", [])
|
||||||
|
|
||||||
__event_emitter__ = None
|
__event_emitter__ = None
|
||||||
__event_call__ = None
|
__event_call__ = None
|
||||||
|
|
@ -286,6 +290,20 @@ async def generate_function_chat_completion(form_data, user):
|
||||||
__event_call__ = get_event_call(metadata)
|
__event_call__ = get_event_call(metadata)
|
||||||
__task__ = metadata.get("task", None)
|
__task__ = metadata.get("task", None)
|
||||||
|
|
||||||
|
extra_params = {
|
||||||
|
"__event_emitter__": __event_emitter__,
|
||||||
|
"__event_call__": __event_call__,
|
||||||
|
"__task__": __task__,
|
||||||
|
}
|
||||||
|
tools_params = {
|
||||||
|
**extra_params,
|
||||||
|
"__model__": app.state.MODELS[form_data["model"]],
|
||||||
|
"__messages__": form_data["messages"],
|
||||||
|
"__files__": files,
|
||||||
|
}
|
||||||
|
configured_tools = get_tools(app, tool_ids, user, tools_params)
|
||||||
|
|
||||||
|
extra_params["__tools__"] = configured_tools
|
||||||
if model_info:
|
if model_info:
|
||||||
if model_info.base_model_id:
|
if model_info.base_model_id:
|
||||||
form_data["model"] = model_info.base_model_id
|
form_data["model"] = model_info.base_model_id
|
||||||
|
|
@ -298,16 +316,7 @@ async def generate_function_chat_completion(form_data, user):
|
||||||
function_module = get_function_module(pipe_id)
|
function_module = get_function_module(pipe_id)
|
||||||
|
|
||||||
pipe = function_module.pipe
|
pipe = function_module.pipe
|
||||||
params = get_function_params(
|
params = get_function_params(function_module, form_data, user, extra_params)
|
||||||
function_module,
|
|
||||||
form_data,
|
|
||||||
user,
|
|
||||||
{
|
|
||||||
"__event_emitter__": __event_emitter__,
|
|
||||||
"__event_call__": __event_call__,
|
|
||||||
"__task__": __task__,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
if form_data["stream"]:
|
if form_data["stream"]:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
from pydantic import BaseModel, ConfigDict, parse_obj_as
|
from pydantic import BaseModel, ConfigDict
|
||||||
from typing import Union, Optional
|
from typing import Optional
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from sqlalchemy import String, Column, BigInteger, Text
|
from sqlalchemy import String, Column, BigInteger, Text
|
||||||
|
|
||||||
from utils.misc import get_gravatar_url
|
from apps.webui.internal.db import Base, JSONField, get_db
|
||||||
|
|
||||||
from apps.webui.internal.db import Base, JSONField, Session, get_db
|
|
||||||
from apps.webui.models.chats import Chats
|
from apps.webui.models.chats import Chats
|
||||||
|
|
||||||
####################
|
####################
|
||||||
|
|
@ -78,7 +76,6 @@ class UserUpdateForm(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class UsersTable:
|
class UsersTable:
|
||||||
|
|
||||||
def insert_new_user(
|
def insert_new_user(
|
||||||
self,
|
self,
|
||||||
id: str,
|
id: str,
|
||||||
|
|
@ -122,7 +119,6 @@ class UsersTable:
|
||||||
def get_user_by_api_key(self, api_key: str) -> Optional[UserModel]:
|
def get_user_by_api_key(self, api_key: str) -> Optional[UserModel]:
|
||||||
try:
|
try:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
|
|
||||||
user = db.query(User).filter_by(api_key=api_key).first()
|
user = db.query(User).filter_by(api_key=api_key).first()
|
||||||
return UserModel.model_validate(user)
|
return UserModel.model_validate(user)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
@ -131,7 +127,6 @@ class UsersTable:
|
||||||
def get_user_by_email(self, email: str) -> Optional[UserModel]:
|
def get_user_by_email(self, email: str) -> Optional[UserModel]:
|
||||||
try:
|
try:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
|
|
||||||
user = db.query(User).filter_by(email=email).first()
|
user = db.query(User).filter_by(email=email).first()
|
||||||
return UserModel.model_validate(user)
|
return UserModel.model_validate(user)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
@ -140,7 +135,6 @@ class UsersTable:
|
||||||
def get_user_by_oauth_sub(self, sub: str) -> Optional[UserModel]:
|
def get_user_by_oauth_sub(self, sub: str) -> Optional[UserModel]:
|
||||||
try:
|
try:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
|
|
||||||
user = db.query(User).filter_by(oauth_sub=sub).first()
|
user = db.query(User).filter_by(oauth_sub=sub).first()
|
||||||
return UserModel.model_validate(user)
|
return UserModel.model_validate(user)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
@ -195,7 +189,6 @@ class UsersTable:
|
||||||
def update_user_last_active_by_id(self, id: str) -> Optional[UserModel]:
|
def update_user_last_active_by_id(self, id: str) -> Optional[UserModel]:
|
||||||
try:
|
try:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
|
|
||||||
db.query(User).filter_by(id=id).update(
|
db.query(User).filter_by(id=id).update(
|
||||||
{"last_active_at": int(time.time())}
|
{"last_active_at": int(time.time())}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -352,6 +352,7 @@ async def get_admin_config(request: Request, user=Depends(get_admin_user)):
|
||||||
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
|
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
|
||||||
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
|
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
|
||||||
"ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING,
|
"ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING,
|
||||||
|
"ENABLE_MESSAGE_RATING": request.app.state.config.ENABLE_MESSAGE_RATING,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -361,6 +362,7 @@ class AdminConfig(BaseModel):
|
||||||
DEFAULT_USER_ROLE: str
|
DEFAULT_USER_ROLE: str
|
||||||
JWT_EXPIRES_IN: str
|
JWT_EXPIRES_IN: str
|
||||||
ENABLE_COMMUNITY_SHARING: bool
|
ENABLE_COMMUNITY_SHARING: bool
|
||||||
|
ENABLE_MESSAGE_RATING: bool
|
||||||
|
|
||||||
|
|
||||||
@router.post("/admin/config")
|
@router.post("/admin/config")
|
||||||
|
|
@ -382,6 +384,7 @@ async def update_admin_config(
|
||||||
request.app.state.config.ENABLE_COMMUNITY_SHARING = (
|
request.app.state.config.ENABLE_COMMUNITY_SHARING = (
|
||||||
form_data.ENABLE_COMMUNITY_SHARING
|
form_data.ENABLE_COMMUNITY_SHARING
|
||||||
)
|
)
|
||||||
|
request.app.state.config.ENABLE_MESSAGE_RATING = form_data.ENABLE_MESSAGE_RATING
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"SHOW_ADMIN_DETAILS": request.app.state.config.SHOW_ADMIN_DETAILS,
|
"SHOW_ADMIN_DETAILS": request.app.state.config.SHOW_ADMIN_DETAILS,
|
||||||
|
|
@ -389,6 +392,7 @@ async def update_admin_config(
|
||||||
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
|
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
|
||||||
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
|
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
|
||||||
"ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING,
|
"ENABLE_COMMUNITY_SHARING": request.app.state.config.ENABLE_COMMUNITY_SHARING,
|
||||||
|
"ENABLE_MESSAGE_RATING": request.app.state.config.ENABLE_MESSAGE_RATING,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,9 +85,10 @@ async def download_chat_as_pdf(
|
||||||
pdf.add_font("NotoSans", "i", f"{FONTS_DIR}/NotoSans-Italic.ttf")
|
pdf.add_font("NotoSans", "i", f"{FONTS_DIR}/NotoSans-Italic.ttf")
|
||||||
pdf.add_font("NotoSansKR", "", f"{FONTS_DIR}/NotoSansKR-Regular.ttf")
|
pdf.add_font("NotoSansKR", "", f"{FONTS_DIR}/NotoSansKR-Regular.ttf")
|
||||||
pdf.add_font("NotoSansJP", "", f"{FONTS_DIR}/NotoSansJP-Regular.ttf")
|
pdf.add_font("NotoSansJP", "", f"{FONTS_DIR}/NotoSansJP-Regular.ttf")
|
||||||
|
pdf.add_font("NotoSansSC", "", f"{FONTS_DIR}/NotoSansSC-Regular.ttf")
|
||||||
|
|
||||||
pdf.set_font("NotoSans", size=12)
|
pdf.set_font("NotoSans", size=12)
|
||||||
pdf.set_fallback_fonts(["NotoSansKR", "NotoSansJP"])
|
pdf.set_fallback_fonts(["NotoSansKR", "NotoSansJP", "NotoSansSC"])
|
||||||
|
|
||||||
pdf.set_auto_page_break(auto=True, margin=15)
|
pdf.set_auto_page_break(auto=True, margin=15)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ import sys
|
||||||
import logging
|
import logging
|
||||||
import importlib.metadata
|
import importlib.metadata
|
||||||
import pkgutil
|
import pkgutil
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
import chromadb
|
import chromadb
|
||||||
from chromadb import Settings
|
from chromadb import Settings
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
|
|
@ -174,7 +176,6 @@ for version in soup.find_all("h2"):
|
||||||
|
|
||||||
CHANGELOG = changelog_json
|
CHANGELOG = changelog_json
|
||||||
|
|
||||||
|
|
||||||
####################################
|
####################################
|
||||||
# SAFE_MODE
|
# SAFE_MODE
|
||||||
####################################
|
####################################
|
||||||
|
|
@ -806,10 +807,24 @@ USER_PERMISSIONS_CHAT_DELETION = (
|
||||||
os.environ.get("USER_PERMISSIONS_CHAT_DELETION", "True").lower() == "true"
|
os.environ.get("USER_PERMISSIONS_CHAT_DELETION", "True").lower() == "true"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
USER_PERMISSIONS_CHAT_EDITING = (
|
||||||
|
os.environ.get("USER_PERMISSIONS_CHAT_EDITING", "True").lower() == "true"
|
||||||
|
)
|
||||||
|
|
||||||
|
USER_PERMISSIONS_CHAT_TEMPORARY = (
|
||||||
|
os.environ.get("USER_PERMISSIONS_CHAT_TEMPORARY", "True").lower() == "true"
|
||||||
|
)
|
||||||
|
|
||||||
USER_PERMISSIONS = PersistentConfig(
|
USER_PERMISSIONS = PersistentConfig(
|
||||||
"USER_PERMISSIONS",
|
"USER_PERMISSIONS",
|
||||||
"ui.user_permissions",
|
"ui.user_permissions",
|
||||||
{"chat": {"deletion": USER_PERMISSIONS_CHAT_DELETION}},
|
{
|
||||||
|
"chat": {
|
||||||
|
"deletion": USER_PERMISSIONS_CHAT_DELETION,
|
||||||
|
"editing": USER_PERMISSIONS_CHAT_EDITING,
|
||||||
|
"temporary": USER_PERMISSIONS_CHAT_TEMPORARY,
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
ENABLE_MODEL_FILTER = PersistentConfig(
|
ENABLE_MODEL_FILTER = PersistentConfig(
|
||||||
|
|
@ -840,6 +855,47 @@ ENABLE_COMMUNITY_SHARING = PersistentConfig(
|
||||||
os.environ.get("ENABLE_COMMUNITY_SHARING", "True").lower() == "true",
|
os.environ.get("ENABLE_COMMUNITY_SHARING", "True").lower() == "true",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ENABLE_MESSAGE_RATING = PersistentConfig(
|
||||||
|
"ENABLE_MESSAGE_RATING",
|
||||||
|
"ui.enable_message_rating",
|
||||||
|
os.environ.get("ENABLE_MESSAGE_RATING", "True").lower() == "true",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def validate_cors_origins(origins):
|
||||||
|
for origin in origins:
|
||||||
|
if origin != "*":
|
||||||
|
validate_cors_origin(origin)
|
||||||
|
|
||||||
|
|
||||||
|
def validate_cors_origin(origin):
|
||||||
|
parsed_url = urlparse(origin)
|
||||||
|
|
||||||
|
# Check if the scheme is either http or https
|
||||||
|
if parsed_url.scheme not in ["http", "https"]:
|
||||||
|
raise ValueError(
|
||||||
|
f"Invalid scheme in CORS_ALLOW_ORIGIN: '{origin}'. Only 'http' and 'https' are allowed."
|
||||||
|
)
|
||||||
|
|
||||||
|
# Ensure that the netloc (domain + port) is present, indicating it's a valid URL
|
||||||
|
if not parsed_url.netloc:
|
||||||
|
raise ValueError(f"Invalid URL structure in CORS_ALLOW_ORIGIN: '{origin}'.")
|
||||||
|
|
||||||
|
|
||||||
|
# For production, you should only need one host as
|
||||||
|
# fastapi serves the svelte-kit built frontend and backend from the same host and port.
|
||||||
|
# To test CORS_ALLOW_ORIGIN locally, you can set something like
|
||||||
|
# CORS_ALLOW_ORIGIN=http://localhost:5173;http://localhost:8080
|
||||||
|
# in your .env file depending on your frontend port, 5173 in this case.
|
||||||
|
CORS_ALLOW_ORIGIN = os.environ.get("CORS_ALLOW_ORIGIN", "*").split(";")
|
||||||
|
|
||||||
|
if "*" in CORS_ALLOW_ORIGIN:
|
||||||
|
log.warning(
|
||||||
|
"\n\nWARNING: CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS.\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
validate_cors_origins(CORS_ALLOW_ORIGIN)
|
||||||
|
|
||||||
|
|
||||||
class BannerModel(BaseModel):
|
class BannerModel(BaseModel):
|
||||||
id: str
|
id: str
|
||||||
|
|
@ -895,10 +951,7 @@ TITLE_GENERATION_PROMPT_TEMPLATE = PersistentConfig(
|
||||||
"task.title.prompt_template",
|
"task.title.prompt_template",
|
||||||
os.environ.get(
|
os.environ.get(
|
||||||
"TITLE_GENERATION_PROMPT_TEMPLATE",
|
"TITLE_GENERATION_PROMPT_TEMPLATE",
|
||||||
"""Here is the query:
|
"""Create a concise, 3-5 word title with an emoji as a title for the prompt in the given language. Suitable Emojis for the summary can be used to enhance understanding but avoid quotation marks or special formatting. RESPOND ONLY WITH THE TITLE TEXT.
|
||||||
{{prompt:middletruncate:8000}}
|
|
||||||
|
|
||||||
Create a concise, 3-5 word phrase with an emoji as a title for the previous query. Suitable Emojis for the summary can be used to enhance understanding but avoid quotation marks or special formatting. RESPOND ONLY WITH THE TITLE TEXT.
|
|
||||||
|
|
||||||
Examples of titles:
|
Examples of titles:
|
||||||
📉 Stock Market Trends
|
📉 Stock Market Trends
|
||||||
|
|
@ -906,7 +959,9 @@ Examples of titles:
|
||||||
Evolution of Music Streaming
|
Evolution of Music Streaming
|
||||||
Remote Work Productivity Tips
|
Remote Work Productivity Tips
|
||||||
Artificial Intelligence in Healthcare
|
Artificial Intelligence in Healthcare
|
||||||
🎮 Video Game Development Insights""",
|
🎮 Video Game Development Insights
|
||||||
|
|
||||||
|
Prompt: {{prompt:middletruncate:8000}}""",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -939,8 +994,7 @@ TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE = PersistentConfig(
|
||||||
"task.tools.prompt_template",
|
"task.tools.prompt_template",
|
||||||
os.environ.get(
|
os.environ.get(
|
||||||
"TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE",
|
"TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE",
|
||||||
"""Tools: {{TOOLS}}
|
"""Available Tools: {{TOOLS}}\nReturn an empty string if no tools match the query. If a function tool matches, construct and return a JSON object in the format {\"name\": \"functionName\", \"parameters\": {\"requiredFunctionParamKey\": \"requiredFunctionParamValue\"}} using the appropriate tool and its parameters. Only return the object and limit the response to the JSON object without additional text.""",
|
||||||
If a function tool doesn't match the query, return an empty string. Else, pick a function tool, fill in the parameters from the function tool's schema, and return it in the format { "name": \"functionName\", "parameters": { "key": "value" } }. Only pick a function if the user asks. Only return the object. Do not return any other text.""",
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -1056,7 +1110,7 @@ RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE = (
|
||||||
RAG_EMBEDDING_OPENAI_BATCH_SIZE = PersistentConfig(
|
RAG_EMBEDDING_OPENAI_BATCH_SIZE = PersistentConfig(
|
||||||
"RAG_EMBEDDING_OPENAI_BATCH_SIZE",
|
"RAG_EMBEDDING_OPENAI_BATCH_SIZE",
|
||||||
"rag.embedding_openai_batch_size",
|
"rag.embedding_openai_batch_size",
|
||||||
os.environ.get("RAG_EMBEDDING_OPENAI_BATCH_SIZE", 1),
|
int(os.environ.get("RAG_EMBEDDING_OPENAI_BATCH_SIZE", "1")),
|
||||||
)
|
)
|
||||||
|
|
||||||
RAG_RERANKING_MODEL = PersistentConfig(
|
RAG_RERANKING_MODEL = PersistentConfig(
|
||||||
|
|
@ -1288,46 +1342,127 @@ COMFYUI_BASE_URL = PersistentConfig(
|
||||||
os.getenv("COMFYUI_BASE_URL", ""),
|
os.getenv("COMFYUI_BASE_URL", ""),
|
||||||
)
|
)
|
||||||
|
|
||||||
COMFYUI_CFG_SCALE = PersistentConfig(
|
COMFYUI_DEFAULT_WORKFLOW = """
|
||||||
"COMFYUI_CFG_SCALE",
|
{
|
||||||
"image_generation.comfyui.cfg_scale",
|
"3": {
|
||||||
os.getenv("COMFYUI_CFG_SCALE", ""),
|
"inputs": {
|
||||||
|
"seed": 0,
|
||||||
|
"steps": 20,
|
||||||
|
"cfg": 8,
|
||||||
|
"sampler_name": "euler",
|
||||||
|
"scheduler": "normal",
|
||||||
|
"denoise": 1,
|
||||||
|
"model": [
|
||||||
|
"4",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"positive": [
|
||||||
|
"6",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"negative": [
|
||||||
|
"7",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"latent_image": [
|
||||||
|
"5",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "KSampler",
|
||||||
|
"_meta": {
|
||||||
|
"title": "KSampler"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"inputs": {
|
||||||
|
"ckpt_name": "model.safetensors"
|
||||||
|
},
|
||||||
|
"class_type": "CheckpointLoaderSimple",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Load Checkpoint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"inputs": {
|
||||||
|
"width": 512,
|
||||||
|
"height": 512,
|
||||||
|
"batch_size": 1
|
||||||
|
},
|
||||||
|
"class_type": "EmptyLatentImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Empty Latent Image"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "Prompt",
|
||||||
|
"clip": [
|
||||||
|
"4",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"inputs": {
|
||||||
|
"text": "",
|
||||||
|
"clip": [
|
||||||
|
"4",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "CLIPTextEncode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "CLIP Text Encode (Prompt)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"inputs": {
|
||||||
|
"samples": [
|
||||||
|
"3",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"vae": [
|
||||||
|
"4",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "VAEDecode",
|
||||||
|
"_meta": {
|
||||||
|
"title": "VAE Decode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"inputs": {
|
||||||
|
"filename_prefix": "ComfyUI",
|
||||||
|
"images": [
|
||||||
|
"8",
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"class_type": "SaveImage",
|
||||||
|
"_meta": {
|
||||||
|
"title": "Save Image"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
COMFYUI_WORKFLOW = PersistentConfig(
|
||||||
|
"COMFYUI_WORKFLOW",
|
||||||
|
"image_generation.comfyui.workflow",
|
||||||
|
os.getenv("COMFYUI_WORKFLOW", COMFYUI_DEFAULT_WORKFLOW),
|
||||||
)
|
)
|
||||||
|
|
||||||
COMFYUI_SAMPLER = PersistentConfig(
|
COMFYUI_WORKFLOW_NODES = PersistentConfig(
|
||||||
"COMFYUI_SAMPLER",
|
"COMFYUI_WORKFLOW",
|
||||||
"image_generation.comfyui.sampler",
|
"image_generation.comfyui.nodes",
|
||||||
os.getenv("COMFYUI_SAMPLER", ""),
|
[],
|
||||||
)
|
|
||||||
|
|
||||||
COMFYUI_SCHEDULER = PersistentConfig(
|
|
||||||
"COMFYUI_SCHEDULER",
|
|
||||||
"image_generation.comfyui.scheduler",
|
|
||||||
os.getenv("COMFYUI_SCHEDULER", ""),
|
|
||||||
)
|
|
||||||
|
|
||||||
COMFYUI_SD3 = PersistentConfig(
|
|
||||||
"COMFYUI_SD3",
|
|
||||||
"image_generation.comfyui.sd3",
|
|
||||||
os.environ.get("COMFYUI_SD3", "").lower() == "true",
|
|
||||||
)
|
|
||||||
|
|
||||||
COMFYUI_FLUX = PersistentConfig(
|
|
||||||
"COMFYUI_FLUX",
|
|
||||||
"image_generation.comfyui.flux",
|
|
||||||
os.environ.get("COMFYUI_FLUX", "").lower() == "true",
|
|
||||||
)
|
|
||||||
|
|
||||||
COMFYUI_FLUX_WEIGHT_DTYPE = PersistentConfig(
|
|
||||||
"COMFYUI_FLUX_WEIGHT_DTYPE",
|
|
||||||
"image_generation.comfyui.flux_weight_dtype",
|
|
||||||
os.getenv("COMFYUI_FLUX_WEIGHT_DTYPE", ""),
|
|
||||||
)
|
|
||||||
|
|
||||||
COMFYUI_FLUX_FP8_CLIP = PersistentConfig(
|
|
||||||
"COMFYUI_FLUX_FP8_CLIP",
|
|
||||||
"image_generation.comfyui.flux_fp8_clip",
|
|
||||||
os.environ.get("COMFYUI_FLUX_FP8_CLIP", "").lower() == "true",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
IMAGES_OPENAI_API_BASE_URL = PersistentConfig(
|
IMAGES_OPENAI_API_BASE_URL = PersistentConfig(
|
||||||
|
|
@ -1410,13 +1545,13 @@ AUDIO_TTS_ENGINE = PersistentConfig(
|
||||||
AUDIO_TTS_MODEL = PersistentConfig(
|
AUDIO_TTS_MODEL = PersistentConfig(
|
||||||
"AUDIO_TTS_MODEL",
|
"AUDIO_TTS_MODEL",
|
||||||
"audio.tts.model",
|
"audio.tts.model",
|
||||||
os.getenv("AUDIO_TTS_MODEL", "tts-1"),
|
os.getenv("AUDIO_TTS_MODEL", "tts-1"), # OpenAI default model
|
||||||
)
|
)
|
||||||
|
|
||||||
AUDIO_TTS_VOICE = PersistentConfig(
|
AUDIO_TTS_VOICE = PersistentConfig(
|
||||||
"AUDIO_TTS_VOICE",
|
"AUDIO_TTS_VOICE",
|
||||||
"audio.tts.voice",
|
"audio.tts.voice",
|
||||||
os.getenv("AUDIO_TTS_VOICE", "alloy"),
|
os.getenv("AUDIO_TTS_VOICE", "alloy"), # OpenAI default voice
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,3 +100,4 @@ class TASKS(str, Enum):
|
||||||
EMOJI_GENERATION = "emoji_generation"
|
EMOJI_GENERATION = "emoji_generation"
|
||||||
QUERY_GENERATION = "query_generation"
|
QUERY_GENERATION = "query_generation"
|
||||||
FUNCTION_CALLING = "function_calling"
|
FUNCTION_CALLING = "function_calling"
|
||||||
|
MOA_RESPONSE_GENERATION = "moa_response_generation"
|
||||||
|
|
|
||||||
694
backend/main.py
694
backend/main.py
File diff suppressed because it is too large
Load diff
|
|
@ -1,5 +1,5 @@
|
||||||
fastapi==0.111.0
|
fastapi==0.111.0
|
||||||
uvicorn[standard]==0.22.0
|
uvicorn[standard]==0.30.6
|
||||||
pydantic==2.8.2
|
pydantic==2.8.2
|
||||||
python-multipart==0.0.9
|
python-multipart==0.0.9
|
||||||
|
|
||||||
|
|
@ -13,17 +13,17 @@ passlib[bcrypt]==1.7.4
|
||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
aiohttp==3.10.2
|
aiohttp==3.10.2
|
||||||
|
|
||||||
sqlalchemy==2.0.31
|
sqlalchemy==2.0.32
|
||||||
alembic==1.13.2
|
alembic==1.13.2
|
||||||
peewee==3.17.6
|
peewee==3.17.6
|
||||||
peewee-migrate==1.12.2
|
peewee-migrate==1.12.2
|
||||||
psycopg2-binary==2.9.9
|
psycopg2-binary==2.9.9
|
||||||
PyMySQL==1.1.1
|
PyMySQL==1.1.1
|
||||||
bcrypt==4.1.3
|
bcrypt==4.2.0
|
||||||
|
|
||||||
pymongo
|
pymongo
|
||||||
redis
|
redis
|
||||||
boto3==1.34.153
|
boto3==1.35.0
|
||||||
|
|
||||||
argon2-cffi==23.1.0
|
argon2-cffi==23.1.0
|
||||||
APScheduler==3.10.4
|
APScheduler==3.10.4
|
||||||
|
|
@ -44,7 +44,7 @@ sentence-transformers==3.0.1
|
||||||
pypdf==4.3.1
|
pypdf==4.3.1
|
||||||
docx2txt==0.8
|
docx2txt==0.8
|
||||||
python-pptx==1.0.0
|
python-pptx==1.0.0
|
||||||
unstructured==0.15.0
|
unstructured==0.15.5
|
||||||
Markdown==3.6
|
Markdown==3.6
|
||||||
pypandoc==1.13
|
pypandoc==1.13
|
||||||
pandas==2.2.2
|
pandas==2.2.2
|
||||||
|
|
@ -60,7 +60,7 @@ rapidocr-onnxruntime==1.3.24
|
||||||
fpdf2==2.7.9
|
fpdf2==2.7.9
|
||||||
rank-bm25==0.2.2
|
rank-bm25==0.2.2
|
||||||
|
|
||||||
faster-whisper==1.0.2
|
faster-whisper==1.0.3
|
||||||
|
|
||||||
PyJWT[crypto]==2.9.0
|
PyJWT[crypto]==2.9.0
|
||||||
authlib==1.3.1
|
authlib==1.3.1
|
||||||
|
|
|
||||||
BIN
backend/static/fonts/NotoSansSC-Regular.ttf
Normal file
BIN
backend/static/fonts/NotoSansSC-Regular.ttf
Normal file
Binary file not shown.
104
backend/utils/schemas.py
Normal file
104
backend/utils/schemas.py
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
from pydantic import BaseModel, Field, create_model
|
||||||
|
from typing import Any, Optional, Type
|
||||||
|
|
||||||
|
|
||||||
|
def json_schema_to_model(tool_dict: dict[str, Any]) -> Type[BaseModel]:
|
||||||
|
"""
|
||||||
|
Converts a JSON schema to a Pydantic BaseModel class.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
json_schema: The JSON schema to convert.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A Pydantic BaseModel class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Extract the model name from the schema title.
|
||||||
|
model_name = tool_dict["name"]
|
||||||
|
schema = tool_dict["parameters"]
|
||||||
|
|
||||||
|
# Extract the field definitions from the schema properties.
|
||||||
|
field_definitions = {
|
||||||
|
name: json_schema_to_pydantic_field(name, prop, schema.get("required", []))
|
||||||
|
for name, prop in schema.get("properties", {}).items()
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create the BaseModel class using create_model().
|
||||||
|
return create_model(model_name, **field_definitions)
|
||||||
|
|
||||||
|
|
||||||
|
def json_schema_to_pydantic_field(
|
||||||
|
name: str, json_schema: dict[str, Any], required: list[str]
|
||||||
|
) -> Any:
|
||||||
|
"""
|
||||||
|
Converts a JSON schema property to a Pydantic field definition.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: The field name.
|
||||||
|
json_schema: The JSON schema property.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A Pydantic field definition.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Get the field type.
|
||||||
|
type_ = json_schema_to_pydantic_type(json_schema)
|
||||||
|
|
||||||
|
# Get the field description.
|
||||||
|
description = json_schema.get("description")
|
||||||
|
|
||||||
|
# Get the field examples.
|
||||||
|
examples = json_schema.get("examples")
|
||||||
|
|
||||||
|
# Create a Field object with the type, description, and examples.
|
||||||
|
# The 'required' flag will be set later when creating the model.
|
||||||
|
return (
|
||||||
|
type_,
|
||||||
|
Field(
|
||||||
|
description=description,
|
||||||
|
examples=examples,
|
||||||
|
default=... if name in required else None,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def json_schema_to_pydantic_type(json_schema: dict[str, Any]) -> Any:
|
||||||
|
"""
|
||||||
|
Converts a JSON schema type to a Pydantic type.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
json_schema: The JSON schema to convert.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
A Pydantic type.
|
||||||
|
"""
|
||||||
|
|
||||||
|
type_ = json_schema.get("type")
|
||||||
|
|
||||||
|
if type_ == "string" or type_ == "str":
|
||||||
|
return str
|
||||||
|
elif type_ == "integer" or type_ == "int":
|
||||||
|
return int
|
||||||
|
elif type_ == "number" or type_ == "float":
|
||||||
|
return float
|
||||||
|
elif type_ == "boolean" or type_ == "bool":
|
||||||
|
return bool
|
||||||
|
elif type_ == "array":
|
||||||
|
items_schema = json_schema.get("items")
|
||||||
|
if items_schema:
|
||||||
|
item_type = json_schema_to_pydantic_type(items_schema)
|
||||||
|
return list[item_type]
|
||||||
|
else:
|
||||||
|
return list
|
||||||
|
elif type_ == "object":
|
||||||
|
# Handle nested models.
|
||||||
|
properties = json_schema.get("properties")
|
||||||
|
if properties:
|
||||||
|
nested_model = json_schema_to_model(json_schema)
|
||||||
|
return nested_model
|
||||||
|
else:
|
||||||
|
return dict
|
||||||
|
elif type_ == "null":
|
||||||
|
return Optional[Any] # Use Optional[Any] for nullable fields
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Unsupported JSON schema type: {type_}")
|
||||||
|
|
@ -121,6 +121,43 @@ def search_query_generation_template(
|
||||||
return template
|
return template
|
||||||
|
|
||||||
|
|
||||||
|
def moa_response_generation_template(
|
||||||
|
template: str, prompt: str, responses: list[str]
|
||||||
|
) -> str:
|
||||||
|
def replacement_function(match):
|
||||||
|
full_match = match.group(0)
|
||||||
|
start_length = match.group(1)
|
||||||
|
end_length = match.group(2)
|
||||||
|
middle_length = match.group(3)
|
||||||
|
|
||||||
|
if full_match == "{{prompt}}":
|
||||||
|
return prompt
|
||||||
|
elif start_length is not None:
|
||||||
|
return prompt[: int(start_length)]
|
||||||
|
elif end_length is not None:
|
||||||
|
return prompt[-int(end_length) :]
|
||||||
|
elif middle_length is not None:
|
||||||
|
middle_length = int(middle_length)
|
||||||
|
if len(prompt) <= middle_length:
|
||||||
|
return prompt
|
||||||
|
start = prompt[: math.ceil(middle_length / 2)]
|
||||||
|
end = prompt[-math.floor(middle_length / 2) :]
|
||||||
|
return f"{start}...{end}"
|
||||||
|
return ""
|
||||||
|
|
||||||
|
template = re.sub(
|
||||||
|
r"{{prompt}}|{{prompt:start:(\d+)}}|{{prompt:end:(\d+)}}|{{prompt:middletruncate:(\d+)}}",
|
||||||
|
replacement_function,
|
||||||
|
template,
|
||||||
|
)
|
||||||
|
|
||||||
|
responses = [f'"""{response}"""' for response in responses]
|
||||||
|
responses = "\n\n".join(responses)
|
||||||
|
|
||||||
|
template = template.replace("{{responses}}", responses)
|
||||||
|
return template
|
||||||
|
|
||||||
|
|
||||||
def tools_function_calling_generation_template(template: str, tools_specs: str) -> str:
|
def tools_function_calling_generation_template(template: str, tools_specs: str) -> str:
|
||||||
template = template.replace("{{TOOLS}}", tools_specs)
|
template = template.replace("{{TOOLS}}", tools_specs)
|
||||||
return template
|
return template
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,90 @@
|
||||||
import inspect
|
import inspect
|
||||||
from typing import get_type_hints
|
import logging
|
||||||
|
from typing import Awaitable, Callable, get_type_hints
|
||||||
|
|
||||||
|
from apps.webui.models.tools import Tools
|
||||||
|
from apps.webui.models.users import UserModel
|
||||||
|
from apps.webui.utils import load_toolkit_module_by_id
|
||||||
|
|
||||||
|
from utils.schemas import json_schema_to_model
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def apply_extra_params_to_tool_function(
|
||||||
|
function: Callable, extra_params: dict
|
||||||
|
) -> Callable[..., Awaitable]:
|
||||||
|
sig = inspect.signature(function)
|
||||||
|
extra_params = {
|
||||||
|
key: value for key, value in extra_params.items() if key in sig.parameters
|
||||||
|
}
|
||||||
|
is_coroutine = inspect.iscoroutinefunction(function)
|
||||||
|
|
||||||
|
async def new_function(**kwargs):
|
||||||
|
extra_kwargs = kwargs | extra_params
|
||||||
|
if is_coroutine:
|
||||||
|
return await function(**extra_kwargs)
|
||||||
|
return function(**extra_kwargs)
|
||||||
|
|
||||||
|
return new_function
|
||||||
|
|
||||||
|
|
||||||
|
# Mutation on extra_params
|
||||||
|
def get_tools(
|
||||||
|
webui_app, tool_ids: list[str], user: UserModel, extra_params: dict
|
||||||
|
) -> dict[str, dict]:
|
||||||
|
tools = {}
|
||||||
|
for tool_id in tool_ids:
|
||||||
|
toolkit = Tools.get_tool_by_id(tool_id)
|
||||||
|
if toolkit is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
module = webui_app.state.TOOLS.get(tool_id, None)
|
||||||
|
if module is None:
|
||||||
|
module, _ = load_toolkit_module_by_id(tool_id)
|
||||||
|
webui_app.state.TOOLS[tool_id] = module
|
||||||
|
|
||||||
|
extra_params["__id__"] = tool_id
|
||||||
|
if hasattr(module, "valves") and hasattr(module, "Valves"):
|
||||||
|
valves = Tools.get_tool_valves_by_id(tool_id) or {}
|
||||||
|
module.valves = module.Valves(**valves)
|
||||||
|
|
||||||
|
if hasattr(module, "UserValves"):
|
||||||
|
extra_params["__user__"]["valves"] = module.UserValves( # type: ignore
|
||||||
|
**Tools.get_user_valves_by_id_and_user_id(tool_id, user.id)
|
||||||
|
)
|
||||||
|
|
||||||
|
for spec in toolkit.specs:
|
||||||
|
# TODO: Fix hack for OpenAI API
|
||||||
|
for val in spec.get("parameters", {}).get("properties", {}).values():
|
||||||
|
if val["type"] == "str":
|
||||||
|
val["type"] = "string"
|
||||||
|
function_name = spec["name"]
|
||||||
|
|
||||||
|
# convert to function that takes only model params and inserts custom params
|
||||||
|
original_func = getattr(module, function_name)
|
||||||
|
callable = apply_extra_params_to_tool_function(original_func, extra_params)
|
||||||
|
if hasattr(original_func, "__doc__"):
|
||||||
|
callable.__doc__ = original_func.__doc__
|
||||||
|
|
||||||
|
# TODO: This needs to be a pydantic model
|
||||||
|
tool_dict = {
|
||||||
|
"toolkit_id": tool_id,
|
||||||
|
"callable": callable,
|
||||||
|
"spec": spec,
|
||||||
|
"pydantic_model": json_schema_to_model(spec),
|
||||||
|
"file_handler": hasattr(module, "file_handler") and module.file_handler,
|
||||||
|
"citation": hasattr(module, "citation") and module.citation,
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODO: if collision, prepend toolkit name
|
||||||
|
if function_name in tools:
|
||||||
|
log.warning(f"Tool {function_name} already exists in another toolkit!")
|
||||||
|
log.warning(f"Collision between {toolkit} and {tool_id}.")
|
||||||
|
log.warning(f"Discarding {toolkit}.{function_name}")
|
||||||
|
else:
|
||||||
|
tools[function_name] = tool_dict
|
||||||
|
return tools
|
||||||
|
|
||||||
|
|
||||||
def doc_to_dict(docstring):
|
def doc_to_dict(docstring):
|
||||||
|
|
|
||||||
29
package-lock.json
generated
29
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.13",
|
"version": "0.3.14",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.13",
|
"version": "0.3.14",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/lang-javascript": "^6.2.2",
|
"@codemirror/lang-javascript": "^6.2.2",
|
||||||
"@codemirror/lang-python": "^6.1.6",
|
"@codemirror/lang-python": "^6.1.6",
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
"codemirror": "^6.0.1",
|
"codemirror": "^6.0.1",
|
||||||
"crc-32": "^1.2.2",
|
"crc-32": "^1.2.2",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
|
"dompurify": "^3.1.6",
|
||||||
"eventsource-parser": "^1.1.2",
|
"eventsource-parser": "^1.1.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"fuse.js": "^7.0.0",
|
"fuse.js": "^7.0.0",
|
||||||
|
|
@ -29,7 +30,6 @@
|
||||||
"js-sha256": "^0.10.1",
|
"js-sha256": "^0.10.1",
|
||||||
"katex": "^0.16.9",
|
"katex": "^0.16.9",
|
||||||
"marked": "^9.1.0",
|
"marked": "^9.1.0",
|
||||||
"marked-katex-extension": "^5.1.1",
|
|
||||||
"mermaid": "^10.9.1",
|
"mermaid": "^10.9.1",
|
||||||
"pyodide": "^0.26.1",
|
"pyodide": "^0.26.1",
|
||||||
"socket.io-client": "^4.2.0",
|
"socket.io-client": "^4.2.0",
|
||||||
|
|
@ -1545,11 +1545,6 @@
|
||||||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/katex": {
|
|
||||||
"version": "0.16.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
|
|
||||||
"integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="
|
|
||||||
},
|
|
||||||
"node_modules/@types/mdast": {
|
"node_modules/@types/mdast": {
|
||||||
"version": "3.0.15",
|
"version": "3.0.15",
|
||||||
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
|
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
|
||||||
|
|
@ -3918,9 +3913,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/dompurify": {
|
"node_modules/dompurify": {
|
||||||
"version": "3.1.5",
|
"version": "3.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
|
||||||
"integrity": "sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA=="
|
"integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ=="
|
||||||
},
|
},
|
||||||
"node_modules/domutils": {
|
"node_modules/domutils": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
|
|
@ -6042,18 +6037,6 @@
|
||||||
"node": ">= 16"
|
"node": ">= 16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/marked-katex-extension": {
|
|
||||||
"version": "5.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/marked-katex-extension/-/marked-katex-extension-5.1.1.tgz",
|
|
||||||
"integrity": "sha512-piquiCyZpZ1aiocoJlJkRXr+hkk5UI4xw9GhRZiIAAgvX5rhzUDSJ0seup1JcsgueC8MLNDuqe5cRcAzkFE42Q==",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/katex": "^0.16.7"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"katex": ">=0.16 <0.17",
|
|
||||||
"marked": ">=4 <15"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/matcher-collection": {
|
"node_modules/matcher-collection": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.13",
|
"version": "0.3.14",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run pyodide:fetch && vite dev --host",
|
"dev": "npm run pyodide:fetch && vite dev --host",
|
||||||
|
|
@ -59,6 +59,7 @@
|
||||||
"codemirror": "^6.0.1",
|
"codemirror": "^6.0.1",
|
||||||
"crc-32": "^1.2.2",
|
"crc-32": "^1.2.2",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
|
"dompurify": "^3.1.6",
|
||||||
"eventsource-parser": "^1.1.2",
|
"eventsource-parser": "^1.1.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"fuse.js": "^7.0.0",
|
"fuse.js": "^7.0.0",
|
||||||
|
|
@ -70,7 +71,6 @@
|
||||||
"js-sha256": "^0.10.1",
|
"js-sha256": "^0.10.1",
|
||||||
"katex": "^0.16.9",
|
"katex": "^0.16.9",
|
||||||
"marked": "^9.1.0",
|
"marked": "^9.1.0",
|
||||||
"marked-katex-extension": "^5.1.1",
|
|
||||||
"mermaid": "^10.9.1",
|
"mermaid": "^10.9.1",
|
||||||
"pyodide": "^0.26.1",
|
"pyodide": "^0.26.1",
|
||||||
"socket.io-client": "^4.2.0",
|
"socket.io-client": "^4.2.0",
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ authors = [
|
||||||
license = { file = "LICENSE" }
|
license = { file = "LICENSE" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastapi==0.111.0",
|
"fastapi==0.111.0",
|
||||||
"uvicorn[standard]==0.22.0",
|
"uvicorn[standard]==0.30.6",
|
||||||
"pydantic==2.8.2",
|
"pydantic==2.8.2",
|
||||||
"python-multipart==0.0.9",
|
"python-multipart==0.0.9",
|
||||||
|
|
||||||
|
|
@ -21,17 +21,17 @@ dependencies = [
|
||||||
"requests==2.32.3",
|
"requests==2.32.3",
|
||||||
"aiohttp==3.10.2",
|
"aiohttp==3.10.2",
|
||||||
|
|
||||||
"sqlalchemy==2.0.31",
|
"sqlalchemy==2.0.32",
|
||||||
"alembic==1.13.2",
|
"alembic==1.13.2",
|
||||||
"peewee==3.17.6",
|
"peewee==3.17.6",
|
||||||
"peewee-migrate==1.12.2",
|
"peewee-migrate==1.12.2",
|
||||||
"psycopg2-binary==2.9.9",
|
"psycopg2-binary==2.9.9",
|
||||||
"PyMySQL==1.1.1",
|
"PyMySQL==1.1.1",
|
||||||
"bcrypt==4.1.3",
|
"bcrypt==4.2.0",
|
||||||
|
|
||||||
"pymongo",
|
"pymongo",
|
||||||
"redis",
|
"redis",
|
||||||
"boto3==1.34.153",
|
"boto3==1.35.0",
|
||||||
|
|
||||||
"argon2-cffi==23.1.0",
|
"argon2-cffi==23.1.0",
|
||||||
"APScheduler==3.10.4",
|
"APScheduler==3.10.4",
|
||||||
|
|
@ -51,7 +51,7 @@ dependencies = [
|
||||||
"pypdf==4.3.1",
|
"pypdf==4.3.1",
|
||||||
"docx2txt==0.8",
|
"docx2txt==0.8",
|
||||||
"python-pptx==1.0.0",
|
"python-pptx==1.0.0",
|
||||||
"unstructured==0.15.0",
|
"unstructured==0.15.5",
|
||||||
"Markdown==3.6",
|
"Markdown==3.6",
|
||||||
"pypandoc==1.13",
|
"pypandoc==1.13",
|
||||||
"pandas==2.2.2",
|
"pandas==2.2.2",
|
||||||
|
|
@ -67,7 +67,7 @@ dependencies = [
|
||||||
"fpdf2==2.7.9",
|
"fpdf2==2.7.9",
|
||||||
"rank-bm25==0.2.2",
|
"rank-bm25==0.2.2",
|
||||||
|
|
||||||
"faster-whisper==1.0.2",
|
"faster-whisper==1.0.3",
|
||||||
|
|
||||||
"PyJWT[crypto]==2.9.0",
|
"PyJWT[crypto]==2.9.0",
|
||||||
"authlib==1.3.1",
|
"authlib==1.3.1",
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ backoff==2.2.1
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via posthog
|
# via posthog
|
||||||
# via unstructured
|
# via unstructured
|
||||||
bcrypt==4.1.3
|
bcrypt==4.2.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via passlib
|
# via passlib
|
||||||
|
|
@ -63,9 +63,9 @@ black==24.8.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
blinker==1.8.2
|
blinker==1.8.2
|
||||||
# via flask
|
# via flask
|
||||||
boto3==1.34.153
|
boto3==1.35.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
botocore==1.34.155
|
botocore==1.35.2
|
||||||
# via boto3
|
# via boto3
|
||||||
# via s3transfer
|
# via s3transfer
|
||||||
build==1.2.1
|
build==1.2.1
|
||||||
|
|
@ -156,7 +156,7 @@ fastapi==0.111.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
fastapi-cli==0.0.4
|
fastapi-cli==0.0.4
|
||||||
# via fastapi
|
# via fastapi
|
||||||
faster-whisper==1.0.2
|
faster-whisper==1.0.3
|
||||||
# via open-webui
|
# via open-webui
|
||||||
filelock==3.14.0
|
filelock==3.14.0
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
|
|
@ -632,7 +632,7 @@ sniffio==1.3.1
|
||||||
# via openai
|
# via openai
|
||||||
soupsieve==2.5
|
soupsieve==2.5
|
||||||
# via beautifulsoup4
|
# via beautifulsoup4
|
||||||
sqlalchemy==2.0.31
|
sqlalchemy==2.0.32
|
||||||
# via alembic
|
# via alembic
|
||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
|
|
@ -703,7 +703,7 @@ tzlocal==5.2
|
||||||
# via extract-msg
|
# via extract-msg
|
||||||
ujson==5.10.0
|
ujson==5.10.0
|
||||||
# via fastapi
|
# via fastapi
|
||||||
unstructured==0.15.0
|
unstructured==0.15.5
|
||||||
# via open-webui
|
# via open-webui
|
||||||
unstructured-client==0.22.0
|
unstructured-client==0.22.0
|
||||||
# via unstructured
|
# via unstructured
|
||||||
|
|
@ -715,7 +715,7 @@ urllib3==2.2.1
|
||||||
# via kubernetes
|
# via kubernetes
|
||||||
# via requests
|
# via requests
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
uvicorn==0.22.0
|
uvicorn==0.30.6
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via open-webui
|
# via open-webui
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ backoff==2.2.1
|
||||||
# via langfuse
|
# via langfuse
|
||||||
# via posthog
|
# via posthog
|
||||||
# via unstructured
|
# via unstructured
|
||||||
bcrypt==4.1.3
|
bcrypt==4.2.0
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via open-webui
|
# via open-webui
|
||||||
# via passlib
|
# via passlib
|
||||||
|
|
@ -63,9 +63,9 @@ black==24.8.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
blinker==1.8.2
|
blinker==1.8.2
|
||||||
# via flask
|
# via flask
|
||||||
boto3==1.34.153
|
boto3==1.35.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
botocore==1.34.155
|
botocore==1.35.2
|
||||||
# via boto3
|
# via boto3
|
||||||
# via s3transfer
|
# via s3transfer
|
||||||
build==1.2.1
|
build==1.2.1
|
||||||
|
|
@ -156,7 +156,7 @@ fastapi==0.111.0
|
||||||
# via open-webui
|
# via open-webui
|
||||||
fastapi-cli==0.0.4
|
fastapi-cli==0.0.4
|
||||||
# via fastapi
|
# via fastapi
|
||||||
faster-whisper==1.0.2
|
faster-whisper==1.0.3
|
||||||
# via open-webui
|
# via open-webui
|
||||||
filelock==3.14.0
|
filelock==3.14.0
|
||||||
# via huggingface-hub
|
# via huggingface-hub
|
||||||
|
|
@ -632,7 +632,7 @@ sniffio==1.3.1
|
||||||
# via openai
|
# via openai
|
||||||
soupsieve==2.5
|
soupsieve==2.5
|
||||||
# via beautifulsoup4
|
# via beautifulsoup4
|
||||||
sqlalchemy==2.0.31
|
sqlalchemy==2.0.32
|
||||||
# via alembic
|
# via alembic
|
||||||
# via langchain
|
# via langchain
|
||||||
# via langchain-community
|
# via langchain-community
|
||||||
|
|
@ -703,7 +703,7 @@ tzlocal==5.2
|
||||||
# via extract-msg
|
# via extract-msg
|
||||||
ujson==5.10.0
|
ujson==5.10.0
|
||||||
# via fastapi
|
# via fastapi
|
||||||
unstructured==0.15.0
|
unstructured==0.15.5
|
||||||
# via open-webui
|
# via open-webui
|
||||||
unstructured-client==0.22.0
|
unstructured-client==0.22.0
|
||||||
# via unstructured
|
# via unstructured
|
||||||
|
|
@ -715,7 +715,7 @@ urllib3==2.2.1
|
||||||
# via kubernetes
|
# via kubernetes
|
||||||
# via requests
|
# via requests
|
||||||
# via unstructured-client
|
# via unstructured-client
|
||||||
uvicorn==0.22.0
|
uvicorn==0.30.6
|
||||||
# via chromadb
|
# via chromadb
|
||||||
# via fastapi
|
# via fastapi
|
||||||
# via open-webui
|
# via open-webui
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,10 @@ math {
|
||||||
@apply rounded-lg;
|
@apply rounded-lg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.markdown-prose {
|
||||||
|
@apply prose dark:prose-invert prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
|
||||||
|
}
|
||||||
|
|
||||||
.markdown a {
|
.markdown a {
|
||||||
@apply underline;
|
@apply underline;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { IMAGES_API_BASE_URL } from '$lib/constants';
|
import { IMAGES_API_BASE_URL } from '$lib/constants';
|
||||||
|
|
||||||
export const getImageGenerationConfig = async (token: string = '') => {
|
export const getConfig = async (token: string = '') => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/config`, {
|
const res = await fetch(`${IMAGES_API_BASE_URL}/config`, {
|
||||||
|
|
@ -32,11 +32,7 @@ export const getImageGenerationConfig = async (token: string = '') => {
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateImageGenerationConfig = async (
|
export const updateConfig = async (token: string = '', config: object) => {
|
||||||
token: string = '',
|
|
||||||
engine: string,
|
|
||||||
enabled: boolean
|
|
||||||
) => {
|
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/config/update`, {
|
const res = await fetch(`${IMAGES_API_BASE_URL}/config/update`, {
|
||||||
|
|
@ -47,8 +43,7 @@ export const updateImageGenerationConfig = async (
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
...(token && { authorization: `Bearer ${token}` })
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
engine,
|
...config
|
||||||
enabled
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.then(async (res) => {
|
.then(async (res) => {
|
||||||
|
|
@ -72,10 +67,10 @@ export const updateImageGenerationConfig = async (
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getOpenAIConfig = async (token: string = '') => {
|
export const verifyConfigUrl = async (token: string = '') => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/openai/config`, {
|
const res = await fetch(`${IMAGES_API_BASE_URL}/config/url/verify`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
|
|
@ -104,46 +99,10 @@ export const getOpenAIConfig = async (token: string = '') => {
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateOpenAIConfig = async (token: string = '', url: string, key: string) => {
|
export const getImageGenerationConfig = async (token: string = '') => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/openai/config/update`, {
|
const res = await fetch(`${IMAGES_API_BASE_URL}/image/config`, {
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
url: url,
|
|
||||||
key: key
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
if ('detail' in err) {
|
|
||||||
error = err.detail;
|
|
||||||
} else {
|
|
||||||
error = 'Server connection failed';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getImageGenerationEngineUrls = async (token: string = '') => {
|
|
||||||
let error = null;
|
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/url`, {
|
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
|
|
@ -172,19 +131,17 @@ export const getImageGenerationEngineUrls = async (token: string = '') => {
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateImageGenerationEngineUrls = async (token: string = '', urls: object = {}) => {
|
export const updateImageGenerationConfig = async (token: string = '', config: object) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/url/update`, {
|
const res = await fetch(`${IMAGES_API_BASE_URL}/image/config/update`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
...(token && { authorization: `Bearer ${token}` })
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({ ...config })
|
||||||
...urls
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
.then(async (res) => {
|
.then(async (res) => {
|
||||||
if (!res.ok) throw await res.json();
|
if (!res.ok) throw await res.json();
|
||||||
|
|
@ -207,138 +164,6 @@ export const updateImageGenerationEngineUrls = async (token: string = '', urls:
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getImageSize = async (token: string = '') => {
|
|
||||||
let error = null;
|
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/size`, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
if ('detail' in err) {
|
|
||||||
error = err.detail;
|
|
||||||
} else {
|
|
||||||
error = 'Server connection failed';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.IMAGE_SIZE;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const updateImageSize = async (token: string = '', size: string) => {
|
|
||||||
let error = null;
|
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/size/update`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
size: size
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
if ('detail' in err) {
|
|
||||||
error = err.detail;
|
|
||||||
} else {
|
|
||||||
error = 'Server connection failed';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.IMAGE_SIZE;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getImageSteps = async (token: string = '') => {
|
|
||||||
let error = null;
|
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/steps`, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
if ('detail' in err) {
|
|
||||||
error = err.detail;
|
|
||||||
} else {
|
|
||||||
error = 'Server connection failed';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.IMAGE_STEPS;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const updateImageSteps = async (token: string = '', steps: number) => {
|
|
||||||
let error = null;
|
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/steps/update`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
|
||||||
},
|
|
||||||
body: JSON.stringify({ steps })
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
if ('detail' in err) {
|
|
||||||
error = err.detail;
|
|
||||||
} else {
|
|
||||||
error = 'Server connection failed';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.IMAGE_STEPS;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getImageGenerationModels = async (token: string = '') => {
|
export const getImageGenerationModels = async (token: string = '') => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
|
|
@ -371,73 +196,6 @@ export const getImageGenerationModels = async (token: string = '') => {
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getDefaultImageGenerationModel = async (token: string = '') => {
|
|
||||||
let error = null;
|
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/models/default`, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
if ('detail' in err) {
|
|
||||||
error = err.detail;
|
|
||||||
} else {
|
|
||||||
error = 'Server connection failed';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.model;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const updateDefaultImageGenerationModel = async (token: string = '', model: string) => {
|
|
||||||
let error = null;
|
|
||||||
|
|
||||||
const res = await fetch(`${IMAGES_API_BASE_URL}/models/default/update`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
...(token && { authorization: `Bearer ${token}` })
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
model: model
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err);
|
|
||||||
if ('detail' in err) {
|
|
||||||
error = err.detail;
|
|
||||||
} else {
|
|
||||||
error = 'Server connection failed';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.model;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const imageGenerations = async (token: string = '', prompt: string) => {
|
export const imageGenerations = async (token: string = '', prompt: string) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -333,6 +333,42 @@ export const generateSearchQuery = async (
|
||||||
return res?.choices[0]?.message?.content.replace(/["']/g, '') ?? prompt;
|
return res?.choices[0]?.message?.content.replace(/["']/g, '') ?? prompt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const generateMoACompletion = async (
|
||||||
|
token: string = '',
|
||||||
|
model: string,
|
||||||
|
prompt: string,
|
||||||
|
responses: string[]
|
||||||
|
) => {
|
||||||
|
const controller = new AbortController();
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_BASE_URL}/api/task/moa/completions`, {
|
||||||
|
signal: controller.signal,
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${token}`
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
model: model,
|
||||||
|
prompt: prompt,
|
||||||
|
responses: responses,
|
||||||
|
stream: true
|
||||||
|
})
|
||||||
|
}).catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
error = err;
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [res, controller];
|
||||||
|
};
|
||||||
|
|
||||||
export const getPipelinesList = async (token: string = '') => {
|
export const getPipelinesList = async (token: string = '') => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
|
|
@ -629,6 +665,7 @@ export const getBackendConfig = async () => {
|
||||||
|
|
||||||
const res = await fetch(`${WEBUI_BASE_URL}/api/config`, {
|
const res = await fetch(`${WEBUI_BASE_URL}/api/config`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
|
credentials: 'include',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
}
|
}
|
||||||
|
|
@ -913,6 +950,7 @@ export interface ModelConfig {
|
||||||
export interface ModelMeta {
|
export interface ModelMeta {
|
||||||
description?: string;
|
description?: string;
|
||||||
capabilities?: object;
|
capabilities?: object;
|
||||||
|
profile_image_url?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelParams {}
|
export interface ModelParams {}
|
||||||
|
|
|
||||||
|
|
@ -396,7 +396,7 @@ export const deleteModel = async (token: string, tagName: string, urlIdx: string
|
||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const pullModel = async (token: string, tagName: string, urlIdx: string | null = null) => {
|
export const pullModel = async (token: string, tagName: string, urlIdx: number | null = null) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
const controller = new AbortController();
|
const controller = new AbortController();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -336,8 +336,11 @@
|
||||||
<div class="flex-1 mt-3 lg:mt-0 overflow-y-scroll">
|
<div class="flex-1 mt-3 lg:mt-0 overflow-y-scroll">
|
||||||
{#if selectedTab === 'general'}
|
{#if selectedTab === 'general'}
|
||||||
<General
|
<General
|
||||||
saveHandler={() => {
|
saveHandler={async () => {
|
||||||
toast.success($i18n.t('Settings saved successfully!'));
|
toast.success($i18n.t('Settings saved successfully!'));
|
||||||
|
|
||||||
|
await tick();
|
||||||
|
await config.set(await getBackendConfig());
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{:else if selectedTab === 'users'}
|
{:else if selectedTab === 'users'}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,10 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import {
|
import { getBackendConfig, getWebhookUrl, updateWebhookUrl } from '$lib/apis';
|
||||||
getCommunitySharingEnabledStatus,
|
import { getAdminConfig, updateAdminConfig } from '$lib/apis/auths';
|
||||||
getWebhookUrl,
|
|
||||||
toggleCommunitySharingEnabledStatus,
|
|
||||||
updateWebhookUrl
|
|
||||||
} from '$lib/apis';
|
|
||||||
import {
|
|
||||||
getAdminConfig,
|
|
||||||
getDefaultUserRole,
|
|
||||||
getJWTExpiresDuration,
|
|
||||||
getSignUpEnabledStatus,
|
|
||||||
toggleSignUpEnabledStatus,
|
|
||||||
updateAdminConfig,
|
|
||||||
updateDefaultUserRole,
|
|
||||||
updateJWTExpiresDuration
|
|
||||||
} from '$lib/apis/auths';
|
|
||||||
import Switch from '$lib/components/common/Switch.svelte';
|
import Switch from '$lib/components/common/Switch.svelte';
|
||||||
|
import { config } from '$lib/stores';
|
||||||
import { onMount, getContext } from 'svelte';
|
import { onMount, getContext } from 'svelte';
|
||||||
|
import { toast } from 'svelte-sonner';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
|
@ -30,7 +18,7 @@
|
||||||
const res = await updateAdminConfig(localStorage.token, adminConfig);
|
const res = await updateAdminConfig(localStorage.token, adminConfig);
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
toast.success(i18n.t('Settings updated successfully'));
|
saveHandler();
|
||||||
} else {
|
} else {
|
||||||
toast.error(i18n.t('Failed to update settings'));
|
toast.error(i18n.t('Failed to update settings'));
|
||||||
}
|
}
|
||||||
|
|
@ -51,9 +39,8 @@
|
||||||
|
|
||||||
<form
|
<form
|
||||||
class="flex flex-col h-full justify-between space-y-3 text-sm"
|
class="flex flex-col h-full justify-between space-y-3 text-sm"
|
||||||
on:submit|preventDefault={() => {
|
on:submit|preventDefault={async () => {
|
||||||
updateHandler();
|
updateHandler();
|
||||||
saveHandler();
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div class=" space-y-3 overflow-y-scroll scrollbar-hidden h-full">
|
<div class=" space-y-3 overflow-y-scroll scrollbar-hidden h-full">
|
||||||
|
|
@ -98,6 +85,12 @@
|
||||||
<Switch bind:state={adminConfig.ENABLE_COMMUNITY_SHARING} />
|
<Switch bind:state={adminConfig.ENABLE_COMMUNITY_SHARING} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="my-3 flex w-full items-center justify-between pr-2">
|
||||||
|
<div class=" self-center text-xs font-medium">{$i18n.t('Enable Message Rating')}</div>
|
||||||
|
|
||||||
|
<Switch bind:state={adminConfig.ENABLE_MESSAGE_RATING} />
|
||||||
|
</div>
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850 my-2" />
|
<hr class=" dark:border-gray-850 my-2" />
|
||||||
|
|
||||||
<div class=" w-full justify-between">
|
<div class=" w-full justify-between">
|
||||||
|
|
|
||||||
|
|
@ -2,152 +2,172 @@
|
||||||
import { toast } from 'svelte-sonner';
|
import { toast } from 'svelte-sonner';
|
||||||
|
|
||||||
import { createEventDispatcher, onMount, getContext } from 'svelte';
|
import { createEventDispatcher, onMount, getContext } from 'svelte';
|
||||||
import { config, user } from '$lib/stores';
|
import { config as backendConfig, user } from '$lib/stores';
|
||||||
|
|
||||||
|
import { getBackendConfig } from '$lib/apis';
|
||||||
import {
|
import {
|
||||||
getImageGenerationModels,
|
getImageGenerationModels,
|
||||||
getDefaultImageGenerationModel,
|
|
||||||
updateDefaultImageGenerationModel,
|
|
||||||
getImageSize,
|
|
||||||
getImageGenerationConfig,
|
getImageGenerationConfig,
|
||||||
updateImageGenerationConfig,
|
updateImageGenerationConfig,
|
||||||
getImageGenerationEngineUrls,
|
getConfig,
|
||||||
updateImageGenerationEngineUrls,
|
updateConfig,
|
||||||
updateImageSize,
|
verifyConfigUrl
|
||||||
getImageSteps,
|
|
||||||
updateImageSteps,
|
|
||||||
getOpenAIConfig,
|
|
||||||
updateOpenAIConfig
|
|
||||||
} from '$lib/apis/images';
|
} from '$lib/apis/images';
|
||||||
import { getBackendConfig } from '$lib/apis';
|
|
||||||
import SensitiveInput from '$lib/components/common/SensitiveInput.svelte';
|
import SensitiveInput from '$lib/components/common/SensitiveInput.svelte';
|
||||||
|
import Switch from '$lib/components/common/Switch.svelte';
|
||||||
|
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
let loading = false;
|
let loading = false;
|
||||||
|
|
||||||
let imageGenerationEngine = '';
|
let config = null;
|
||||||
let enableImageGeneration = false;
|
let imageGenerationConfig = null;
|
||||||
|
|
||||||
let AUTOMATIC1111_BASE_URL = '';
|
|
||||||
let AUTOMATIC1111_API_AUTH = '';
|
|
||||||
let COMFYUI_BASE_URL = '';
|
|
||||||
|
|
||||||
let OPENAI_API_BASE_URL = '';
|
|
||||||
let OPENAI_API_KEY = '';
|
|
||||||
|
|
||||||
let selectedModel = '';
|
|
||||||
let models = null;
|
let models = null;
|
||||||
|
|
||||||
let imageSize = '';
|
let workflowNodes = [
|
||||||
let steps = 50;
|
{
|
||||||
|
type: 'prompt',
|
||||||
|
key: 'text',
|
||||||
|
node_ids: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'model',
|
||||||
|
key: 'ckpt_name',
|
||||||
|
node_ids: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'width',
|
||||||
|
key: 'width',
|
||||||
|
node_ids: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'height',
|
||||||
|
key: 'height',
|
||||||
|
node_ids: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'steps',
|
||||||
|
key: 'steps',
|
||||||
|
node_ids: ''
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
const getModels = async () => {
|
const getModels = async () => {
|
||||||
models = await getImageGenerationModels(localStorage.token).catch((error) => {
|
models = await getImageGenerationModels(localStorage.token).catch((error) => {
|
||||||
toast.error(error);
|
toast.error(error);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
selectedModel = await getDefaultImageGenerationModel(localStorage.token).catch((error) => {
|
|
||||||
return '';
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateUrlHandler = async () => {
|
const updateConfigHandler = async () => {
|
||||||
if (imageGenerationEngine === 'comfyui') {
|
const res = await updateConfig(localStorage.token, config).catch((error) => {
|
||||||
const res = await updateImageGenerationEngineUrls(localStorage.token, {
|
|
||||||
COMFYUI_BASE_URL: COMFYUI_BASE_URL
|
|
||||||
}).catch((error) => {
|
|
||||||
toast.error(error);
|
|
||||||
|
|
||||||
console.log(error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res) {
|
|
||||||
COMFYUI_BASE_URL = res.COMFYUI_BASE_URL;
|
|
||||||
|
|
||||||
await getModels();
|
|
||||||
|
|
||||||
if (models) {
|
|
||||||
toast.success($i18n.t('Server connection verified'));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
({ COMFYUI_BASE_URL } = await getImageGenerationEngineUrls(localStorage.token));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const res = await updateImageGenerationEngineUrls(localStorage.token, {
|
|
||||||
AUTOMATIC1111_BASE_URL: AUTOMATIC1111_BASE_URL,
|
|
||||||
AUTOMATIC1111_API_AUTH: AUTOMATIC1111_API_AUTH
|
|
||||||
}).catch((error) => {
|
|
||||||
toast.error(error);
|
toast.error(error);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
AUTOMATIC1111_BASE_URL = res.AUTOMATIC1111_BASE_URL;
|
config = res;
|
||||||
AUTOMATIC1111_API_AUTH = res.AUTOMATIC1111_API_AUTH;
|
|
||||||
|
|
||||||
await getModels();
|
|
||||||
|
|
||||||
if (models) {
|
|
||||||
toast.success($i18n.t('Server connection verified'));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
({ AUTOMATIC1111_BASE_URL, AUTOMATIC1111_API_AUTH } = await getImageGenerationEngineUrls(
|
|
||||||
localStorage.token
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const updateImageGeneration = async () => {
|
|
||||||
const res = await updateImageGenerationConfig(
|
|
||||||
localStorage.token,
|
|
||||||
imageGenerationEngine,
|
|
||||||
enableImageGeneration
|
|
||||||
).catch((error) => {
|
|
||||||
toast.error(error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res) {
|
|
||||||
imageGenerationEngine = res.engine;
|
|
||||||
enableImageGeneration = res.enabled;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enableImageGeneration) {
|
if (config.enabled) {
|
||||||
config.set(await getBackendConfig(localStorage.token));
|
backendConfig.set(await getBackendConfig());
|
||||||
getModels();
|
getModels();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const validateJSON = (json) => {
|
||||||
|
try {
|
||||||
|
const obj = JSON.parse(json);
|
||||||
|
|
||||||
|
if (obj && typeof obj === 'object') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
const saveHandler = async () => {
|
||||||
|
loading = true;
|
||||||
|
|
||||||
|
if (config?.comfyui?.COMFYUI_WORKFLOW) {
|
||||||
|
if (!validateJSON(config.comfyui.COMFYUI_WORKFLOW)) {
|
||||||
|
toast.error('Invalid JSON format for ComfyUI Workflow.');
|
||||||
|
loading = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config?.comfyui?.COMFYUI_WORKFLOW) {
|
||||||
|
config.comfyui.COMFYUI_WORKFLOW_NODES = workflowNodes.map((node) => {
|
||||||
|
return {
|
||||||
|
type: node.type,
|
||||||
|
key: node.key,
|
||||||
|
node_ids: node.node_ids.split(',').map((id) => id.trim())
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
await updateConfig(localStorage.token, config).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
loading = false;
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
await updateImageGenerationConfig(localStorage.token, imageGenerationConfig).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
loading = false;
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
getModels();
|
||||||
|
dispatch('save');
|
||||||
|
loading = false;
|
||||||
|
};
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
if ($user.role === 'admin') {
|
if ($user.role === 'admin') {
|
||||||
const res = await getImageGenerationConfig(localStorage.token).catch((error) => {
|
const res = await getConfig(localStorage.token).catch((error) => {
|
||||||
toast.error(error);
|
toast.error(error);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
imageGenerationEngine = res.engine;
|
config = res;
|
||||||
enableImageGeneration = res.enabled;
|
|
||||||
}
|
}
|
||||||
const URLS = await getImageGenerationEngineUrls(localStorage.token);
|
|
||||||
|
|
||||||
AUTOMATIC1111_BASE_URL = URLS.AUTOMATIC1111_BASE_URL;
|
if (config.enabled) {
|
||||||
AUTOMATIC1111_API_AUTH = URLS.AUTOMATIC1111_API_AUTH;
|
|
||||||
COMFYUI_BASE_URL = URLS.COMFYUI_BASE_URL;
|
|
||||||
|
|
||||||
const config = await getOpenAIConfig(localStorage.token);
|
|
||||||
|
|
||||||
OPENAI_API_KEY = config.OPENAI_API_KEY;
|
|
||||||
OPENAI_API_BASE_URL = config.OPENAI_API_BASE_URL;
|
|
||||||
|
|
||||||
imageSize = await getImageSize(localStorage.token);
|
|
||||||
steps = await getImageSteps(localStorage.token);
|
|
||||||
|
|
||||||
if (enableImageGeneration) {
|
|
||||||
getModels();
|
getModels();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.comfyui.COMFYUI_WORKFLOW) {
|
||||||
|
config.comfyui.COMFYUI_WORKFLOW = JSON.stringify(
|
||||||
|
JSON.parse(config.comfyui.COMFYUI_WORKFLOW),
|
||||||
|
null,
|
||||||
|
2
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((config?.comfyui?.COMFYUI_WORKFLOW_NODES ?? []).length >= 5) {
|
||||||
|
workflowNodes = config.comfyui.COMFYUI_WORKFLOW_NODES.map((node) => {
|
||||||
|
return {
|
||||||
|
type: node.type,
|
||||||
|
key: node.key,
|
||||||
|
node_ids: node.node_ids.join(',')
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const imageConfigRes = await getImageGenerationConfig(localStorage.token).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (imageConfigRes) {
|
||||||
|
imageGenerationConfig = imageConfigRes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -155,101 +175,97 @@
|
||||||
<form
|
<form
|
||||||
class="flex flex-col h-full justify-between space-y-3 text-sm"
|
class="flex flex-col h-full justify-between space-y-3 text-sm"
|
||||||
on:submit|preventDefault={async () => {
|
on:submit|preventDefault={async () => {
|
||||||
loading = true;
|
saveHandler();
|
||||||
|
|
||||||
if (imageGenerationEngine === 'openai') {
|
|
||||||
await updateOpenAIConfig(localStorage.token, OPENAI_API_BASE_URL, OPENAI_API_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
await updateDefaultImageGenerationModel(localStorage.token, selectedModel);
|
|
||||||
|
|
||||||
await updateImageSize(localStorage.token, imageSize).catch((error) => {
|
|
||||||
toast.error(error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
await updateImageSteps(localStorage.token, steps).catch((error) => {
|
|
||||||
toast.error(error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
dispatch('save');
|
|
||||||
loading = false;
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div class=" space-y-3 overflow-y-scroll scrollbar-hidden">
|
<div class=" space-y-3 overflow-y-scroll scrollbar-hidden pr-2">
|
||||||
|
{#if config && imageGenerationConfig}
|
||||||
<div>
|
<div>
|
||||||
<div class=" mb-1 text-sm font-medium">{$i18n.t('Image Settings')}</div>
|
<div class=" mb-1 text-sm font-medium">{$i18n.t('Image Settings')}</div>
|
||||||
|
|
||||||
<div class=" py-0.5 flex w-full justify-between">
|
|
||||||
<div class=" self-center text-xs font-medium">{$i18n.t('Image Generation Engine')}</div>
|
|
||||||
<div class="flex items-center relative">
|
|
||||||
<select
|
|
||||||
class="w-fit pr-8 rounded px-2 p-1 text-xs bg-transparent outline-none text-right"
|
|
||||||
bind:value={imageGenerationEngine}
|
|
||||||
placeholder={$i18n.t('Select a mode')}
|
|
||||||
on:change={async () => {
|
|
||||||
await updateImageGeneration();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<option value="">{$i18n.t('Default (Automatic1111)')}</option>
|
|
||||||
<option value="comfyui">{$i18n.t('ComfyUI')}</option>
|
|
||||||
<option value="openai">{$i18n.t('Open AI (Dall-E)')}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class=" py-0.5 flex w-full justify-between">
|
<div class=" py-0.5 flex w-full justify-between">
|
||||||
<div class=" self-center text-xs font-medium">
|
<div class=" self-center text-xs font-medium">
|
||||||
{$i18n.t('Image Generation (Experimental)')}
|
{$i18n.t('Image Generation (Experimental)')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<div class="px-1">
|
||||||
class="p-1 px-3 text-xs flex rounded transition"
|
<Switch
|
||||||
on:click={() => {
|
bind:state={config.enabled}
|
||||||
if (imageGenerationEngine === '' && AUTOMATIC1111_BASE_URL === '') {
|
on:change={(e) => {
|
||||||
|
const enabled = e.detail;
|
||||||
|
|
||||||
|
if (enabled) {
|
||||||
|
if (
|
||||||
|
config.engine === 'automatic1111' &&
|
||||||
|
config.automatic1111.AUTOMATIC1111_BASE_URL === ''
|
||||||
|
) {
|
||||||
toast.error($i18n.t('AUTOMATIC1111 Base URL is required.'));
|
toast.error($i18n.t('AUTOMATIC1111 Base URL is required.'));
|
||||||
enableImageGeneration = false;
|
config.enabled = false;
|
||||||
} else if (imageGenerationEngine === 'comfyui' && COMFYUI_BASE_URL === '') {
|
} else if (
|
||||||
|
config.engine === 'comfyui' &&
|
||||||
|
config.comfyui.COMFYUI_BASE_URL === ''
|
||||||
|
) {
|
||||||
toast.error($i18n.t('ComfyUI Base URL is required.'));
|
toast.error($i18n.t('ComfyUI Base URL is required.'));
|
||||||
enableImageGeneration = false;
|
config.enabled = false;
|
||||||
} else if (imageGenerationEngine === 'openai' && OPENAI_API_KEY === '') {
|
} else if (config.engine === 'openai' && config.openai.OPENAI_API_KEY === '') {
|
||||||
toast.error($i18n.t('OpenAI API Key is required.'));
|
toast.error($i18n.t('OpenAI API Key is required.'));
|
||||||
enableImageGeneration = false;
|
config.enabled = false;
|
||||||
} else {
|
}
|
||||||
enableImageGeneration = !enableImageGeneration;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updateImageGeneration();
|
updateConfigHandler();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" py-0.5 flex w-full justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">{$i18n.t('Image Generation Engine')}</div>
|
||||||
|
<div class="flex items-center relative">
|
||||||
|
<select
|
||||||
|
class="w-fit pr-8 rounded px-2 p-1 text-xs bg-transparent outline-none text-right"
|
||||||
|
bind:value={config.engine}
|
||||||
|
placeholder={$i18n.t('Select Engine')}
|
||||||
|
on:change={async () => {
|
||||||
|
updateConfigHandler();
|
||||||
}}
|
}}
|
||||||
type="button"
|
|
||||||
>
|
>
|
||||||
{#if enableImageGeneration === true}
|
<option value="openai">{$i18n.t('Default (Open AI)')}</option>
|
||||||
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
<option value="comfyui">{$i18n.t('ComfyUI')}</option>
|
||||||
{:else}
|
<option value="automatic1111">{$i18n.t('Automatic1111')}</option>
|
||||||
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
</select>
|
||||||
{/if}
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr class=" dark:border-gray-850" />
|
<hr class=" dark:border-gray-850" />
|
||||||
|
|
||||||
{#if imageGenerationEngine === ''}
|
<div class="flex flex-col gap-2">
|
||||||
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('AUTOMATIC1111 Base URL')}</div>
|
{#if (config?.engine ?? 'automatic1111') === 'automatic1111'}
|
||||||
|
<div>
|
||||||
|
<div class=" mb-2 text-sm font-medium">{$i18n.t('AUTOMATIC1111 Base URL')}</div>
|
||||||
<div class="flex w-full">
|
<div class="flex w-full">
|
||||||
<div class="flex-1 mr-2">
|
<div class="flex-1 mr-2">
|
||||||
<input
|
<input
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
placeholder={$i18n.t('Enter URL (e.g. http://127.0.0.1:7860/)')}
|
placeholder={$i18n.t('Enter URL (e.g. http://127.0.0.1:7860/)')}
|
||||||
bind:value={AUTOMATIC1111_BASE_URL}
|
bind:value={config.automatic1111.AUTOMATIC1111_BASE_URL}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="px-2.5 bg-gray-50 hover:bg-gray-100 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-100 rounded-lg transition"
|
class="px-2.5 bg-gray-50 hover:bg-gray-100 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-100 rounded-lg transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={async () => {
|
||||||
updateUrlHandler();
|
await updateConfigHandler();
|
||||||
|
const res = await verifyConfigUrl(localStorage.token).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
toast.success($i18n.t('Server connection verified'));
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -277,11 +293,15 @@
|
||||||
{$i18n.t('(e.g. `sh webui.sh --api`)')}
|
{$i18n.t('(e.g. `sh webui.sh --api`)')}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('AUTOMATIC1111 Api Auth String')}</div>
|
<div>
|
||||||
|
<div class=" mb-2 text-sm font-medium">
|
||||||
|
{$i18n.t('AUTOMATIC1111 Api Auth String')}
|
||||||
|
</div>
|
||||||
<SensitiveInput
|
<SensitiveInput
|
||||||
placeholder={$i18n.t('Enter api auth string (e.g. username:password)')}
|
placeholder={$i18n.t('Enter api auth string (e.g. username:password)')}
|
||||||
bind:value={AUTOMATIC1111_API_AUTH}
|
bind:value={config.automatic1111.AUTOMATIC1111_API_AUTH}
|
||||||
required={false}
|
required={false}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -292,24 +312,36 @@
|
||||||
href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/13993"
|
href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/13993"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
>
|
>
|
||||||
{$i18n.t('(e.g. `sh webui.sh --api --api-auth username_password`)').replace('_', ':')}
|
{$i18n
|
||||||
|
.t('(e.g. `sh webui.sh --api --api-auth username_password`)')
|
||||||
|
.replace('_', ':')}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{:else if imageGenerationEngine === 'comfyui'}
|
</div>
|
||||||
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('ComfyUI Base URL')}</div>
|
{:else if config?.engine === 'comfyui'}
|
||||||
|
<div class="">
|
||||||
|
<div class=" mb-2 text-sm font-medium">{$i18n.t('ComfyUI Base URL')}</div>
|
||||||
<div class="flex w-full">
|
<div class="flex w-full">
|
||||||
<div class="flex-1 mr-2">
|
<div class="flex-1 mr-2">
|
||||||
<input
|
<input
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
placeholder={$i18n.t('Enter URL (e.g. http://127.0.0.1:7860/)')}
|
placeholder={$i18n.t('Enter URL (e.g. http://127.0.0.1:7860/)')}
|
||||||
bind:value={COMFYUI_BASE_URL}
|
bind:value={config.comfyui.COMFYUI_BASE_URL}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="px-2.5 bg-gray-50 hover:bg-gray-100 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-100 rounded-lg transition"
|
class="px-2.5 bg-gray-50 hover:bg-gray-100 text-gray-800 dark:bg-gray-850 dark:hover:bg-gray-800 dark:text-gray-100 rounded-lg transition"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={async () => {
|
||||||
updateUrlHandler();
|
await updateConfigHandler();
|
||||||
|
const res = await verifyConfigUrl(localStorage.token).catch((error) => {
|
||||||
|
toast.error(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
toast.success($i18n.t('Server connection verified'));
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -326,7 +358,101 @@
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{:else if imageGenerationEngine === 'openai'}
|
</div>
|
||||||
|
|
||||||
|
<div class="">
|
||||||
|
<div class=" mb-2 text-sm font-medium">{$i18n.t('ComfyUI Workflow')}</div>
|
||||||
|
|
||||||
|
{#if config.comfyui.COMFYUI_WORKFLOW}
|
||||||
|
<textarea
|
||||||
|
class="w-full rounded-lg mb-1 py-2 px-4 text-xs bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none disabled:text-gray-600 resize-none"
|
||||||
|
rows="10"
|
||||||
|
bind:value={config.comfyui.COMFYUI_WORKFLOW}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div class="flex w-full">
|
||||||
|
<div class="flex-1">
|
||||||
|
<input
|
||||||
|
id="upload-comfyui-workflow-input"
|
||||||
|
hidden
|
||||||
|
type="file"
|
||||||
|
accept=".json"
|
||||||
|
on:change={(e) => {
|
||||||
|
const file = e.target.files[0];
|
||||||
|
const reader = new FileReader();
|
||||||
|
|
||||||
|
reader.onload = (e) => {
|
||||||
|
config.comfyui.COMFYUI_WORKFLOW = e.target.result;
|
||||||
|
e.target.value = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
reader.readAsText(file);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="w-full text-sm font-medium py-2 bg-transparent hover:bg-gray-100 border border-dashed dark:border-gray-800 dark:hover:bg-gray-850 text-center rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
document.getElementById('upload-comfyui-workflow-input')?.click();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{$i18n.t('Click here to upload a workflow.json file.')}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-2 text-xs text-gray-400 dark:text-gray-500">
|
||||||
|
{$i18n.t('Make sure to export a workflow.json file as API format from ComfyUI.')}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if config.comfyui.COMFYUI_WORKFLOW}
|
||||||
|
<div class="">
|
||||||
|
<div class=" mb-2 text-sm font-medium">{$i18n.t('ComfyUI Workflow Nodes')}</div>
|
||||||
|
|
||||||
|
<div class="text-xs flex flex-col gap-1.5">
|
||||||
|
{#each workflowNodes as node}
|
||||||
|
<div class="flex w-full items-center border dark:border-gray-850 rounded-lg">
|
||||||
|
<div class="flex-shrink-0">
|
||||||
|
<div
|
||||||
|
class=" capitalize line-clamp-1 font-medium px-3 py-1 w-20 text-center rounded-l-lg bg-green-500/10 text-green-700 dark:text-green-200"
|
||||||
|
>
|
||||||
|
{node.type}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<Tooltip content="Input Key (e.g. text, unet_name, steps)">
|
||||||
|
<input
|
||||||
|
class="py-1 px-3 w-24 text-xs text-center bg-transparent outline-none border-r dark:border-gray-850"
|
||||||
|
placeholder="Key"
|
||||||
|
bind:value={node.key}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<Tooltip
|
||||||
|
content="Comma separated Node Ids (e.g. 1 or 1,2)"
|
||||||
|
placement="top-start"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
class="w-full py-1 px-4 rounded-r-lg text-xs bg-transparent outline-none"
|
||||||
|
placeholder="Node Ids"
|
||||||
|
bind:value={node.node_ids}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{:else if config?.engine === 'openai'}
|
||||||
<div>
|
<div>
|
||||||
<div class=" mb-1.5 text-sm font-medium">{$i18n.t('OpenAI API Config')}</div>
|
<div class=" mb-1.5 text-sm font-medium">{$i18n.t('OpenAI API Config')}</div>
|
||||||
|
|
||||||
|
|
@ -334,30 +460,35 @@
|
||||||
<input
|
<input
|
||||||
class="flex-1 w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
class="flex-1 w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
placeholder={$i18n.t('API Base URL')}
|
placeholder={$i18n.t('API Base URL')}
|
||||||
bind:value={OPENAI_API_BASE_URL}
|
bind:value={config.openai.OPENAI_API_BASE_URL}
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<SensitiveInput placeholder={$i18n.t('API Key')} bind:value={OPENAI_API_KEY} />
|
<SensitiveInput
|
||||||
|
placeholder={$i18n.t('API Key')}
|
||||||
|
bind:value={config.openai.OPENAI_API_KEY}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
{#if enableImageGeneration}
|
{#if config?.enabled}
|
||||||
<hr class=" dark:border-gray-850" />
|
<hr class=" dark:border-gray-850" />
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Default Model')}</div>
|
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Default Model')}</div>
|
||||||
<div class="flex w-full">
|
<div class="flex w-full">
|
||||||
<div class="flex-1 mr-2">
|
<div class="flex-1 mr-2">
|
||||||
{#if imageGenerationEngine === 'openai' && !OPENAI_API_BASE_URL.includes('https://api.openai.com')}
|
|
||||||
<div class="flex w-full">
|
<div class="flex w-full">
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
|
<Tooltip content={$i18n.t('Enter Model ID')} placement="top-start">
|
||||||
<input
|
<input
|
||||||
list="model-list"
|
list="model-list"
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
bind:value={selectedModel}
|
bind:value={imageGenerationConfig.MODEL}
|
||||||
placeholder="Select a model"
|
placeholder="Select a model"
|
||||||
|
required
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<datalist id="model-list">
|
<datalist id="model-list">
|
||||||
|
|
@ -365,24 +496,9 @@
|
||||||
<option value={model.id}>{model.name}</option>
|
<option value={model.id}>{model.name}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</datalist>
|
</datalist>
|
||||||
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
|
||||||
<select
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
bind:value={selectedModel}
|
|
||||||
placeholder={$i18n.t('Select a model')}
|
|
||||||
required
|
|
||||||
>
|
|
||||||
{#if !selectedModel}
|
|
||||||
<option value="" disabled selected>{$i18n.t('Select a model')}</option>
|
|
||||||
{/if}
|
|
||||||
{#each models ?? [] as model}
|
|
||||||
<option value={model.id} class="bg-gray-100 dark:bg-gray-700">{model.name}</option
|
|
||||||
>
|
|
||||||
{/each}
|
|
||||||
</select>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -391,11 +507,14 @@
|
||||||
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Image Size')}</div>
|
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Image Size')}</div>
|
||||||
<div class="flex w-full">
|
<div class="flex w-full">
|
||||||
<div class="flex-1 mr-2">
|
<div class="flex-1 mr-2">
|
||||||
|
<Tooltip content={$i18n.t('Enter Image Size (e.g. 512x512)')} placement="top-start">
|
||||||
<input
|
<input
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
placeholder={$i18n.t('Enter Image Size (e.g. 512x512)')}
|
placeholder={$i18n.t('Enter Image Size (e.g. 512x512)')}
|
||||||
bind:value={imageSize}
|
bind:value={imageGenerationConfig.IMAGE_SIZE}
|
||||||
|
required
|
||||||
/>
|
/>
|
||||||
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -404,15 +523,19 @@
|
||||||
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Steps')}</div>
|
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Steps')}</div>
|
||||||
<div class="flex w-full">
|
<div class="flex w-full">
|
||||||
<div class="flex-1 mr-2">
|
<div class="flex-1 mr-2">
|
||||||
|
<Tooltip content={$i18n.t('Enter Number of Steps (e.g. 50)')} placement="top-start">
|
||||||
<input
|
<input
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
placeholder={$i18n.t('Enter Number of Steps (e.g. 50)')}
|
placeholder={$i18n.t('Enter Number of Steps (e.g. 50)')}
|
||||||
bind:value={steps}
|
bind:value={imageGenerationConfig.IMAGE_STEPS}
|
||||||
|
required
|
||||||
/>
|
/>
|
||||||
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex justify-end pt-3 text-sm font-medium">
|
<div class="flex justify-end pt-3 text-sm font-medium">
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
let ollamaEnabled = null;
|
let ollamaEnabled = null;
|
||||||
|
|
||||||
let OLLAMA_URLS = [];
|
let OLLAMA_URLS = [];
|
||||||
let selectedOllamaUrlIdx: string | null = null;
|
let selectedOllamaUrlIdx: number | null = null;
|
||||||
|
|
||||||
let updateModelId = null;
|
let updateModelId = null;
|
||||||
let updateProgress = null;
|
let updateProgress = null;
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,9 @@
|
||||||
let whitelistModels = [''];
|
let whitelistModels = [''];
|
||||||
let permissions = {
|
let permissions = {
|
||||||
chat: {
|
chat: {
|
||||||
deletion: true
|
deletion: true,
|
||||||
|
edit: true,
|
||||||
|
temporary: true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -92,6 +94,88 @@
|
||||||
{/if}
|
{/if}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class=" flex w-full justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">{$i18n.t('Allow Chat Editing')}</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
|
on:click={() => {
|
||||||
|
permissions.chat.editing = !(permissions?.chat?.editing ?? true);
|
||||||
|
}}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
{#if permissions?.chat?.editing ?? true}
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M11.5 1A3.5 3.5 0 0 0 8 4.5V7H2.5A1.5 1.5 0 0 0 1 8.5v5A1.5 1.5 0 0 0 2.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 9.5 7V4.5a2 2 0 1 1 4 0v1.75a.75.75 0 0 0 1.5 0V4.5A3.5 3.5 0 0 0 11.5 1Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('Allow')}</span>
|
||||||
|
{:else}
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M8 1a3.5 3.5 0 0 0-3.5 3.5V7A1.5 1.5 0 0 0 3 8.5v5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 11.5 7V4.5A3.5 3.5 0 0 0 8 1Zm2 6V4.5a2 2 0 1 0-4 0V7h4Z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<span class="ml-2 self-center">{$i18n.t("Don't Allow")}</span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" flex w-full justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">{$i18n.t('Allow Temporary Chat')}</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="p-1 px-3 text-xs flex rounded transition"
|
||||||
|
on:click={() => {
|
||||||
|
permissions.chat.temporary = !(permissions?.chat?.temporary ?? true);
|
||||||
|
}}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
{#if permissions?.chat?.temporary ?? true}
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M11.5 1A3.5 3.5 0 0 0 8 4.5V7H2.5A1.5 1.5 0 0 0 1 8.5v5A1.5 1.5 0 0 0 2.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 9.5 7V4.5a2 2 0 1 1 4 0v1.75a.75.75 0 0 0 1.5 0V4.5A3.5 3.5 0 0 0 11.5 1Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<span class="ml-2 self-center">{$i18n.t('Allow')}</span>
|
||||||
|
{:else}
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
fill="currentColor"
|
||||||
|
class="w-4 h-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M8 1a3.5 3.5 0 0 0-3.5 3.5V7A1.5 1.5 0 0 0 3 8.5v5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 11.5 7V4.5A3.5 3.5 0 0 0 8 1Zm2 6V4.5a2 2 0 1 0-4 0V7h4Z"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<span class="ml-2 self-center">{$i18n.t("Don't Allow")}</span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850 my-2" />
|
<hr class=" dark:border-gray-850 my-2" />
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,8 @@
|
||||||
socket,
|
socket,
|
||||||
showCallOverlay,
|
showCallOverlay,
|
||||||
tools,
|
tools,
|
||||||
currentChatPage
|
currentChatPage,
|
||||||
|
temporaryChatEnabled
|
||||||
} from '$lib/stores';
|
} from '$lib/stores';
|
||||||
import {
|
import {
|
||||||
convertMessagesToHistory,
|
convertMessagesToHistory,
|
||||||
|
|
@ -53,7 +54,13 @@
|
||||||
import { createOpenAITextStream } from '$lib/apis/streaming';
|
import { createOpenAITextStream } from '$lib/apis/streaming';
|
||||||
import { queryMemory } from '$lib/apis/memories';
|
import { queryMemory } from '$lib/apis/memories';
|
||||||
import { getAndUpdateUserLocation, getUserSettings } from '$lib/apis/users';
|
import { getAndUpdateUserLocation, getUserSettings } from '$lib/apis/users';
|
||||||
import { chatCompleted, generateTitle, generateSearchQuery, chatAction } from '$lib/apis';
|
import {
|
||||||
|
chatCompleted,
|
||||||
|
generateTitle,
|
||||||
|
generateSearchQuery,
|
||||||
|
chatAction,
|
||||||
|
generateMoACompletion
|
||||||
|
} from '$lib/apis';
|
||||||
|
|
||||||
import Banner from '../common/Banner.svelte';
|
import Banner from '../common/Banner.svelte';
|
||||||
import MessageInput from '$lib/components/chat/MessageInput.svelte';
|
import MessageInput from '$lib/components/chat/MessageInput.svelte';
|
||||||
|
|
@ -166,6 +173,14 @@
|
||||||
message.content += data.content;
|
message.content += data.content;
|
||||||
} else if (type === 'replace') {
|
} else if (type === 'replace') {
|
||||||
message.content = data.content;
|
message.content = data.content;
|
||||||
|
} else if (type === 'action') {
|
||||||
|
if (data.action === 'continue') {
|
||||||
|
const continueButton = document.getElementById('continue-response-button');
|
||||||
|
|
||||||
|
if (continueButton) {
|
||||||
|
continueButton.click();
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (type === 'confirmation') {
|
} else if (type === 'confirmation') {
|
||||||
eventCallback = cb;
|
eventCallback = cb;
|
||||||
|
|
||||||
|
|
@ -238,7 +253,7 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (!($settings.saveChatHistory ?? true)) {
|
if ($temporaryChatEnabled) {
|
||||||
await goto('/');
|
await goto('/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -414,7 +429,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($chatId == chatId) {
|
if ($chatId == chatId) {
|
||||||
if ($settings.saveChatHistory ?? true) {
|
if (!$temporaryChatEnabled) {
|
||||||
chat = await updateChatById(localStorage.token, chatId, {
|
chat = await updateChatById(localStorage.token, chatId, {
|
||||||
models: selectedModels,
|
models: selectedModels,
|
||||||
messages: messages,
|
messages: messages,
|
||||||
|
|
@ -429,7 +444,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const chatActionHandler = async (chatId, actionId, modelId, responseMessageId) => {
|
const chatActionHandler = async (chatId, actionId, modelId, responseMessageId, event = null) => {
|
||||||
const res = await chatAction(localStorage.token, actionId, {
|
const res = await chatAction(localStorage.token, actionId, {
|
||||||
model: modelId,
|
model: modelId,
|
||||||
messages: messages.map((m) => ({
|
messages: messages.map((m) => ({
|
||||||
|
|
@ -439,6 +454,7 @@
|
||||||
info: m.info ? m.info : undefined,
|
info: m.info ? m.info : undefined,
|
||||||
timestamp: m.timestamp
|
timestamp: m.timestamp
|
||||||
})),
|
})),
|
||||||
|
...(event ? { event: event } : {}),
|
||||||
chat_id: chatId,
|
chat_id: chatId,
|
||||||
session_id: $socket?.id,
|
session_id: $socket?.id,
|
||||||
id: responseMessageId
|
id: responseMessageId
|
||||||
|
|
@ -462,7 +478,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($chatId == chatId) {
|
if ($chatId == chatId) {
|
||||||
if ($settings.saveChatHistory ?? true) {
|
if (!$temporaryChatEnabled) {
|
||||||
chat = await updateChatById(localStorage.token, chatId, {
|
chat = await updateChatById(localStorage.token, chatId, {
|
||||||
models: selectedModels,
|
models: selectedModels,
|
||||||
messages: messages,
|
messages: messages,
|
||||||
|
|
@ -552,7 +568,7 @@
|
||||||
content: userPrompt,
|
content: userPrompt,
|
||||||
files: _files.length > 0 ? _files : undefined,
|
files: _files.length > 0 ? _files : undefined,
|
||||||
timestamp: Math.floor(Date.now() / 1000), // Unix epoch
|
timestamp: Math.floor(Date.now() / 1000), // Unix epoch
|
||||||
models: selectedModels.filter((m, mIdx) => selectedModels.indexOf(m) === mIdx)
|
models: selectedModels
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add message to history and Set currentId to messageId
|
// Add message to history and Set currentId to messageId
|
||||||
|
|
@ -572,7 +588,11 @@
|
||||||
return _responses;
|
return _responses;
|
||||||
};
|
};
|
||||||
|
|
||||||
const sendPrompt = async (prompt, parentId, { modelId = null, newChat = false } = {}) => {
|
const sendPrompt = async (
|
||||||
|
prompt,
|
||||||
|
parentId,
|
||||||
|
{ modelId = null, modelIdx = null, newChat = false } = {}
|
||||||
|
) => {
|
||||||
let _responses = [];
|
let _responses = [];
|
||||||
|
|
||||||
// If modelId is provided, use it, else use selected model
|
// If modelId is provided, use it, else use selected model
|
||||||
|
|
@ -584,7 +604,7 @@
|
||||||
|
|
||||||
// Create response messages for each selected model
|
// Create response messages for each selected model
|
||||||
const responseMessageIds = {};
|
const responseMessageIds = {};
|
||||||
for (const modelId of selectedModelIds) {
|
for (const [_modelIdx, modelId] of selectedModelIds.entries()) {
|
||||||
const model = $models.filter((m) => m.id === modelId).at(0);
|
const model = $models.filter((m) => m.id === modelId).at(0);
|
||||||
|
|
||||||
if (model) {
|
if (model) {
|
||||||
|
|
@ -597,6 +617,7 @@
|
||||||
content: '',
|
content: '',
|
||||||
model: model.id,
|
model: model.id,
|
||||||
modelName: model.name ?? model.id,
|
modelName: model.name ?? model.id,
|
||||||
|
modelIdx: modelIdx ? modelIdx : _modelIdx,
|
||||||
userContext: null,
|
userContext: null,
|
||||||
timestamp: Math.floor(Date.now() / 1000) // Unix epoch
|
timestamp: Math.floor(Date.now() / 1000) // Unix epoch
|
||||||
};
|
};
|
||||||
|
|
@ -613,14 +634,14 @@
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
responseMessageIds[modelId] = responseMessageId;
|
responseMessageIds[`${modelId}-${modelIdx ? modelIdx : _modelIdx}`] = responseMessageId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await tick();
|
await tick();
|
||||||
|
|
||||||
// Create new chat if only one message in messages
|
// Create new chat if only one message in messages
|
||||||
if (newChat && messages.length == 2) {
|
if (newChat && messages.length == 2) {
|
||||||
if ($settings.saveChatHistory ?? true) {
|
if (!$temporaryChatEnabled) {
|
||||||
chat = await createNewChat(localStorage.token, {
|
chat = await createNewChat(localStorage.token, {
|
||||||
id: $chatId,
|
id: $chatId,
|
||||||
title: $i18n.t('New Chat'),
|
title: $i18n.t('New Chat'),
|
||||||
|
|
@ -645,7 +666,7 @@
|
||||||
const _chatId = JSON.parse(JSON.stringify($chatId));
|
const _chatId = JSON.parse(JSON.stringify($chatId));
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
selectedModelIds.map(async (modelId) => {
|
selectedModelIds.map(async (modelId, _modelIdx) => {
|
||||||
console.log('modelId', modelId);
|
console.log('modelId', modelId);
|
||||||
const model = $models.filter((m) => m.id === modelId).at(0);
|
const model = $models.filter((m) => m.id === modelId).at(0);
|
||||||
|
|
||||||
|
|
@ -663,7 +684,8 @@
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let responseMessageId = responseMessageIds[modelId];
|
let responseMessageId =
|
||||||
|
responseMessageIds[`${modelId}-${modelIdx ? modelIdx : _modelIdx}`];
|
||||||
let responseMessage = history.messages[responseMessageId];
|
let responseMessage = history.messages[responseMessageId];
|
||||||
|
|
||||||
let userContext = null;
|
let userContext = null;
|
||||||
|
|
@ -953,20 +975,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($chatId == _chatId) {
|
await saveChatHandler(_chatId);
|
||||||
if ($settings.saveChatHistory ?? true) {
|
|
||||||
chat = await updateChatById(localStorage.token, _chatId, {
|
|
||||||
messages: messages,
|
|
||||||
history: history,
|
|
||||||
models: selectedModels,
|
|
||||||
params: params,
|
|
||||||
files: chatFiles
|
|
||||||
});
|
|
||||||
|
|
||||||
currentChatPage.set(1);
|
|
||||||
await chats.set(await getChatList(localStorage.token, $currentChatPage));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (res !== null) {
|
if (res !== null) {
|
||||||
const error = await res.json();
|
const error = await res.json();
|
||||||
|
|
@ -1227,7 +1236,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($chatId == _chatId) {
|
if ($chatId == _chatId) {
|
||||||
if ($settings.saveChatHistory ?? true) {
|
if (!$temporaryChatEnabled) {
|
||||||
chat = await updateChatById(localStorage.token, _chatId, {
|
chat = await updateChatById(localStorage.token, _chatId, {
|
||||||
models: selectedModels,
|
models: selectedModels,
|
||||||
messages: messages,
|
messages: messages,
|
||||||
|
|
@ -1340,7 +1349,10 @@
|
||||||
} else {
|
} else {
|
||||||
// If there are multiple models selected, use the model of the response message for regeneration
|
// If there are multiple models selected, use the model of the response message for regeneration
|
||||||
// e.g. many model chat
|
// e.g. many model chat
|
||||||
await sendPrompt(userPrompt, userMessage.id, { modelId: message.model });
|
await sendPrompt(userPrompt, userMessage.id, {
|
||||||
|
modelId: message.model,
|
||||||
|
modelIdx: message.modelIdx
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -1400,7 +1412,7 @@
|
||||||
title = _title;
|
title = _title;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($settings.saveChatHistory ?? true) {
|
if (!$temporaryChatEnabled) {
|
||||||
chat = await updateChatById(localStorage.token, _chatId, { title: _title });
|
chat = await updateChatById(localStorage.token, _chatId, { title: _title });
|
||||||
|
|
||||||
currentChatPage.set(1);
|
currentChatPage.set(1);
|
||||||
|
|
@ -1492,6 +1504,69 @@
|
||||||
return [];
|
return [];
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const saveChatHandler = async (_chatId) => {
|
||||||
|
if ($chatId == _chatId) {
|
||||||
|
if (!$temporaryChatEnabled) {
|
||||||
|
chat = await updateChatById(localStorage.token, _chatId, {
|
||||||
|
messages: messages,
|
||||||
|
history: history,
|
||||||
|
models: selectedModels,
|
||||||
|
params: params,
|
||||||
|
files: chatFiles
|
||||||
|
});
|
||||||
|
|
||||||
|
currentChatPage.set(1);
|
||||||
|
await chats.set(await getChatList(localStorage.token, $currentChatPage));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const mergeResponses = async (messageId, responses, _chatId) => {
|
||||||
|
console.log('mergeResponses', messageId, responses);
|
||||||
|
const message = history.messages[messageId];
|
||||||
|
const mergedResponse = {
|
||||||
|
status: true,
|
||||||
|
content: ''
|
||||||
|
};
|
||||||
|
message.merged = mergedResponse;
|
||||||
|
messages = messages;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const [res, controller] = await generateMoACompletion(
|
||||||
|
localStorage.token,
|
||||||
|
message.model,
|
||||||
|
history.messages[message.parentId].content,
|
||||||
|
responses
|
||||||
|
);
|
||||||
|
|
||||||
|
if (res && res.ok && res.body) {
|
||||||
|
const textStream = await createOpenAITextStream(res.body, $settings.splitLargeChunks);
|
||||||
|
for await (const update of textStream) {
|
||||||
|
const { value, done, citations, error, usage } = update;
|
||||||
|
if (error || done) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mergedResponse.content == '' && value == '\n') {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
mergedResponse.content += value;
|
||||||
|
messages = messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (autoScroll) {
|
||||||
|
scrollToBottom();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await saveChatHandler(_chatId);
|
||||||
|
} else {
|
||||||
|
console.error(res);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|
@ -1618,6 +1693,7 @@
|
||||||
{sendPrompt}
|
{sendPrompt}
|
||||||
{continueGeneration}
|
{continueGeneration}
|
||||||
{regenerateResponse}
|
{regenerateResponse}
|
||||||
|
{mergeResponses}
|
||||||
{chatActionHandler}
|
{chatActionHandler}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,12 @@
|
||||||
|
|
||||||
import { toast } from 'svelte-sonner';
|
import { toast } from 'svelte-sonner';
|
||||||
import { getChatList, updateChatById } from '$lib/apis/chats';
|
import { getChatList, updateChatById } from '$lib/apis/chats';
|
||||||
|
import { copyToClipboard, findWordIndices } from '$lib/utils';
|
||||||
|
|
||||||
import UserMessage from './Messages/UserMessage.svelte';
|
import UserMessage from './Messages/UserMessage.svelte';
|
||||||
import ResponseMessage from './Messages/ResponseMessage.svelte';
|
import ResponseMessage from './Messages/ResponseMessage.svelte';
|
||||||
import Placeholder from './Messages/Placeholder.svelte';
|
import Placeholder from './Messages/Placeholder.svelte';
|
||||||
import Spinner from '../common/Spinner.svelte';
|
import MultiResponseMessages from './Messages/MultiResponseMessages.svelte';
|
||||||
import { imageGenerations } from '$lib/apis/images';
|
|
||||||
import { copyToClipboard, findWordIndices } from '$lib/utils';
|
|
||||||
import CompareMessages from './Messages/CompareMessages.svelte';
|
|
||||||
import { stringify } from 'postcss';
|
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
|
@ -22,6 +19,7 @@
|
||||||
export let sendPrompt: Function;
|
export let sendPrompt: Function;
|
||||||
export let continueGeneration: Function;
|
export let continueGeneration: Function;
|
||||||
export let regenerateResponse: Function;
|
export let regenerateResponse: Function;
|
||||||
|
export let mergeResponses: Function;
|
||||||
export let chatActionHandler: Function;
|
export let chatActionHandler: Function;
|
||||||
|
|
||||||
export let user = $_user;
|
export let user = $_user;
|
||||||
|
|
@ -53,7 +51,8 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const confirmEditMessage = async (messageId, content) => {
|
const confirmEditMessage = async (messageId, content, submit = true) => {
|
||||||
|
if (submit) {
|
||||||
let userPrompt = content;
|
let userPrompt = content;
|
||||||
let userMessageId = uuidv4();
|
let userMessageId = uuidv4();
|
||||||
|
|
||||||
|
|
@ -64,7 +63,7 @@
|
||||||
role: 'user',
|
role: 'user',
|
||||||
content: userPrompt,
|
content: userPrompt,
|
||||||
...(history.messages[messageId].files && { files: history.messages[messageId].files }),
|
...(history.messages[messageId].files && { files: history.messages[messageId].files }),
|
||||||
models: selectedModels.filter((m, mIdx) => selectedModels.indexOf(m) === mIdx)
|
models: selectedModels
|
||||||
};
|
};
|
||||||
|
|
||||||
let messageParentId = history.messages[messageId].parentId;
|
let messageParentId = history.messages[messageId].parentId;
|
||||||
|
|
@ -81,6 +80,14 @@
|
||||||
|
|
||||||
await tick();
|
await tick();
|
||||||
await sendPrompt(userPrompt, userMessageId);
|
await sendPrompt(userPrompt, userMessageId);
|
||||||
|
} else {
|
||||||
|
history.messages[messageId].content = content;
|
||||||
|
await tick();
|
||||||
|
await updateChatById(localStorage.token, chatId, {
|
||||||
|
messages: messages,
|
||||||
|
history: history
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateChatMessages = async () => {
|
const updateChatMessages = async () => {
|
||||||
|
|
@ -326,7 +333,7 @@
|
||||||
{showNextMessage}
|
{showNextMessage}
|
||||||
copyToClipboard={copyToClipboardWithToast}
|
copyToClipboard={copyToClipboardWithToast}
|
||||||
/>
|
/>
|
||||||
{:else if $mobile || (history.messages[message.parentId]?.models?.length ?? 1) === 1}
|
{:else if (history.messages[message.parentId]?.models?.length ?? 1) === 1}
|
||||||
{#key message.id && history.currentId}
|
{#key message.id && history.currentId}
|
||||||
<ResponseMessage
|
<ResponseMessage
|
||||||
{message}
|
{message}
|
||||||
|
|
@ -342,7 +349,13 @@
|
||||||
{continueGeneration}
|
{continueGeneration}
|
||||||
{regenerateResponse}
|
{regenerateResponse}
|
||||||
on:action={async (e) => {
|
on:action={async (e) => {
|
||||||
|
console.log('action', e);
|
||||||
|
if (typeof e.detail === 'string') {
|
||||||
await chatActionHandler(chatId, e.detail, message.model, message.id);
|
await chatActionHandler(chatId, e.detail, message.model, message.id);
|
||||||
|
} else {
|
||||||
|
const { id, event } = e.detail;
|
||||||
|
await chatActionHandler(chatId, id, message.model, message.id, event);
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
on:save={async (e) => {
|
on:save={async (e) => {
|
||||||
console.log('save', e);
|
console.log('save', e);
|
||||||
|
|
@ -358,8 +371,9 @@
|
||||||
{/key}
|
{/key}
|
||||||
{:else}
|
{:else}
|
||||||
{#key message.parentId}
|
{#key message.parentId}
|
||||||
<CompareMessages
|
<MultiResponseMessages
|
||||||
bind:history
|
bind:history
|
||||||
|
isLastMessage={messageIdx + 1 === messages.length}
|
||||||
{messages}
|
{messages}
|
||||||
{readOnly}
|
{readOnly}
|
||||||
{chatId}
|
{chatId}
|
||||||
|
|
@ -370,6 +384,7 @@
|
||||||
{rateMessage}
|
{rateMessage}
|
||||||
copyToClipboard={copyToClipboardWithToast}
|
copyToClipboard={copyToClipboardWithToast}
|
||||||
{continueGeneration}
|
{continueGeneration}
|
||||||
|
{mergeResponses}
|
||||||
{regenerateResponse}
|
{regenerateResponse}
|
||||||
on:change={async () => {
|
on:change={async () => {
|
||||||
await updateChatById(localStorage.token, chatId, {
|
await updateChatById(localStorage.token, chatId, {
|
||||||
|
|
|
||||||
56
src/lib/components/chat/Messages/Citations.svelte
Normal file
56
src/lib/components/chat/Messages/Citations.svelte
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import CitationsModal from './CitationsModal.svelte';
|
||||||
|
|
||||||
|
export let citations = [];
|
||||||
|
|
||||||
|
let showCitationModal = false;
|
||||||
|
let selectedCitation = null;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<CitationsModal bind:show={showCitationModal} citation={selectedCitation} />
|
||||||
|
|
||||||
|
<div class="mt-1 mb-2 w-full flex gap-1 items-center flex-wrap">
|
||||||
|
{#each citations.reduce((acc, citation) => {
|
||||||
|
citation.document.forEach((document, index) => {
|
||||||
|
const metadata = citation.metadata?.[index];
|
||||||
|
const id = metadata?.source ?? 'N/A';
|
||||||
|
let source = citation?.source;
|
||||||
|
|
||||||
|
if (metadata?.name) {
|
||||||
|
source = { ...source, name: metadata.name };
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if ID looks like a URL
|
||||||
|
if (id.startsWith('http://') || id.startsWith('https://')) {
|
||||||
|
source = { name: id };
|
||||||
|
}
|
||||||
|
|
||||||
|
const existingSource = acc.find((item) => item.id === id);
|
||||||
|
|
||||||
|
if (existingSource) {
|
||||||
|
existingSource.document.push(document);
|
||||||
|
existingSource.metadata.push(metadata);
|
||||||
|
} else {
|
||||||
|
acc.push( { id: id, source: source, document: [document], metadata: metadata ? [metadata] : [] } );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return acc;
|
||||||
|
}, []) as citation, idx}
|
||||||
|
<div class="flex gap-1 text-xs font-semibold">
|
||||||
|
<button
|
||||||
|
class="flex dark:text-gray-300 py-1 px-1 bg-gray-50 hover:bg-gray-100 dark:bg-gray-850 dark:hover:bg-gray-800 transition rounded-xl"
|
||||||
|
on:click={() => {
|
||||||
|
showCitationModal = true;
|
||||||
|
selectedCitation = citation;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class="bg-white dark:bg-gray-700 rounded-full size-4">
|
||||||
|
{idx + 1}
|
||||||
|
</div>
|
||||||
|
<div class="flex-1 mx-2 line-clamp-1">
|
||||||
|
{citation.source.name}
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
import { loadPyodide } from 'pyodide';
|
import { loadPyodide } from 'pyodide';
|
||||||
import mermaid from 'mermaid';
|
import mermaid from 'mermaid';
|
||||||
|
|
||||||
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
import { getContext, getAllContexts, onMount } from 'svelte';
|
import { getContext, getAllContexts, onMount } from 'svelte';
|
||||||
import { copyToClipboard } from '$lib/utils';
|
import { copyToClipboard } from '$lib/utils';
|
||||||
|
|
||||||
|
|
@ -213,15 +215,19 @@ __builtins__.input = input`);
|
||||||
|
|
||||||
let debounceTimeout;
|
let debounceTimeout;
|
||||||
|
|
||||||
$: if (code) {
|
const drawMermaidDiagram = async () => {
|
||||||
if (lang === 'mermaid' && (token?.raw ?? '').endsWith('```')) {
|
|
||||||
(async () => {
|
|
||||||
try {
|
try {
|
||||||
const { svg } = await mermaid.render(`mermaid-${id}`, code);
|
const { svg } = await mermaid.render(`mermaid-${uuidv4()}`, code);
|
||||||
mermaidHtml = svg;
|
mermaidHtml = svg;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error:', error);
|
console.log('Error:', error);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$: if (token.raw) {
|
||||||
|
if (lang === 'mermaid' && (token?.raw ?? '').slice(-4).includes('```')) {
|
||||||
|
(async () => {
|
||||||
|
await drawMermaidDiagram();
|
||||||
})();
|
})();
|
||||||
} else {
|
} else {
|
||||||
// Function to perform the code highlighting
|
// Function to perform the code highlighting
|
||||||
|
|
@ -237,15 +243,18 @@ __builtins__.input = input`);
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
await mermaid.initialize({ startOnLoad: true });
|
if (document.documentElement.classList.contains('dark')) {
|
||||||
|
mermaid.initialize({
|
||||||
if (lang === 'mermaid' && (token?.raw ?? '').endsWith('```')) {
|
startOnLoad: true,
|
||||||
try {
|
theme: 'dark',
|
||||||
const { svg } = await mermaid.render(`mermaid-${id}`, code);
|
securityLevel: 'loose'
|
||||||
mermaidHtml = svg;
|
});
|
||||||
} catch (error) {
|
} else {
|
||||||
console.error('Error:', error);
|
mermaid.initialize({
|
||||||
}
|
startOnLoad: true,
|
||||||
|
theme: 'default',
|
||||||
|
securityLevel: 'loose'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -253,15 +262,15 @@ __builtins__.input = input`);
|
||||||
<div class="my-2" dir="ltr">
|
<div class="my-2" dir="ltr">
|
||||||
{#if lang === 'mermaid'}
|
{#if lang === 'mermaid'}
|
||||||
{#if mermaidHtml}
|
{#if mermaidHtml}
|
||||||
{@html mermaidHtml}
|
{@html `${mermaidHtml}`}
|
||||||
{:else}
|
{:else}
|
||||||
<pre class=" mermaid-{id}">{code}</pre>
|
<pre class="mermaid">{code}</pre>
|
||||||
{/if}
|
{/if}
|
||||||
{:else}
|
{:else}
|
||||||
<div
|
<div
|
||||||
class="flex justify-between bg-[#202123] text-white text-xs px-4 pt-1 pb-0.5 rounded-t-lg overflow-x-auto"
|
class="flex justify-between bg-[#202123] text-white text-xs px-4 pt-1 pb-0.5 rounded-t-lg overflow-x-auto"
|
||||||
>
|
>
|
||||||
<div class="p-1">{@html lang}</div>
|
<div class="p-1">{lang}</div>
|
||||||
|
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
{#if lang.toLowerCase() === 'python' || lang.toLowerCase() === 'py' || (lang === '' && checkPythonCode(code))}
|
{#if lang.toLowerCase() === 'python' || lang.toLowerCase() === 'py' || (lang === '' && checkPythonCode(code))}
|
||||||
|
|
|
||||||
|
|
@ -1,167 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { createEventDispatcher } from 'svelte';
|
|
||||||
|
|
||||||
import { updateChatById } from '$lib/apis/chats';
|
|
||||||
import { onMount, tick } from 'svelte';
|
|
||||||
import ResponseMessage from './ResponseMessage.svelte';
|
|
||||||
|
|
||||||
export let chatId;
|
|
||||||
|
|
||||||
export let history;
|
|
||||||
export let messages = [];
|
|
||||||
export let messageIdx;
|
|
||||||
|
|
||||||
export let parentMessage;
|
|
||||||
|
|
||||||
export let readOnly = false;
|
|
||||||
|
|
||||||
export let updateChatMessages: Function;
|
|
||||||
export let confirmEditResponseMessage: Function;
|
|
||||||
export let rateMessage: Function;
|
|
||||||
|
|
||||||
export let copyToClipboard: Function;
|
|
||||||
export let continueGeneration: Function;
|
|
||||||
export let regenerateResponse: Function;
|
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
|
||||||
|
|
||||||
let currentMessageId;
|
|
||||||
|
|
||||||
let groupedMessagesIdx = {};
|
|
||||||
let groupedMessages = {};
|
|
||||||
|
|
||||||
$: groupedMessages = parentMessage?.models.reduce((a, model) => {
|
|
||||||
const modelMessages = parentMessage?.childrenIds
|
|
||||||
.map((id) => history.messages[id])
|
|
||||||
.filter((m) => m.model === model);
|
|
||||||
|
|
||||||
return {
|
|
||||||
...a,
|
|
||||||
[model]: { messages: modelMessages }
|
|
||||||
};
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
const showPreviousMessage = (model) => {
|
|
||||||
groupedMessagesIdx[model] = Math.max(0, groupedMessagesIdx[model] - 1);
|
|
||||||
let messageId = groupedMessages[model].messages[groupedMessagesIdx[model]].id;
|
|
||||||
|
|
||||||
console.log(messageId);
|
|
||||||
let messageChildrenIds = history.messages[messageId].childrenIds;
|
|
||||||
|
|
||||||
while (messageChildrenIds.length !== 0) {
|
|
||||||
messageId = messageChildrenIds.at(-1);
|
|
||||||
messageChildrenIds = history.messages[messageId].childrenIds;
|
|
||||||
}
|
|
||||||
|
|
||||||
history.currentId = messageId;
|
|
||||||
|
|
||||||
dispatch('change');
|
|
||||||
};
|
|
||||||
|
|
||||||
const showNextMessage = (model) => {
|
|
||||||
groupedMessagesIdx[model] = Math.min(
|
|
||||||
groupedMessages[model].messages.length - 1,
|
|
||||||
groupedMessagesIdx[model] + 1
|
|
||||||
);
|
|
||||||
|
|
||||||
let messageId = groupedMessages[model].messages[groupedMessagesIdx[model]].id;
|
|
||||||
console.log(messageId);
|
|
||||||
|
|
||||||
let messageChildrenIds = history.messages[messageId].childrenIds;
|
|
||||||
|
|
||||||
while (messageChildrenIds.length !== 0) {
|
|
||||||
messageId = messageChildrenIds.at(-1);
|
|
||||||
messageChildrenIds = history.messages[messageId].childrenIds;
|
|
||||||
}
|
|
||||||
|
|
||||||
history.currentId = messageId;
|
|
||||||
|
|
||||||
dispatch('change');
|
|
||||||
};
|
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
await tick();
|
|
||||||
currentMessageId = messages[messageIdx].id;
|
|
||||||
|
|
||||||
for (const model of parentMessage?.models) {
|
|
||||||
const idx = groupedMessages[model].messages.findIndex((m) => m.id === currentMessageId);
|
|
||||||
|
|
||||||
if (idx !== -1) {
|
|
||||||
groupedMessagesIdx[model] = idx;
|
|
||||||
} else {
|
|
||||||
groupedMessagesIdx[model] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="flex snap-x snap-mandatory overflow-x-auto scrollbar-hidden"
|
|
||||||
id="responses-container-{parentMessage.id}"
|
|
||||||
>
|
|
||||||
{#key currentMessageId}
|
|
||||||
{#each Object.keys(groupedMessages) as model}
|
|
||||||
{#if groupedMessagesIdx[model] !== undefined && groupedMessages[model].messages.length > 0}
|
|
||||||
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
||||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
||||||
{@const message = groupedMessages[model].messages[groupedMessagesIdx[model]]}
|
|
||||||
|
|
||||||
<div
|
|
||||||
class=" snap-center min-w-80 w-full max-w-full m-1 border {history.messages[
|
|
||||||
currentMessageId
|
|
||||||
].model === model
|
|
||||||
? 'border-gray-100 dark:border-gray-800 border-[1.5px]'
|
|
||||||
: 'border-gray-50 dark:border-gray-850 '} transition p-5 rounded-3xl"
|
|
||||||
on:click={() => {
|
|
||||||
if (currentMessageId != message.id) {
|
|
||||||
currentMessageId = message.id;
|
|
||||||
let messageId = message.id;
|
|
||||||
console.log(messageId);
|
|
||||||
//
|
|
||||||
let messageChildrenIds = history.messages[messageId].childrenIds;
|
|
||||||
while (messageChildrenIds.length !== 0) {
|
|
||||||
messageId = messageChildrenIds.at(-1);
|
|
||||||
messageChildrenIds = history.messages[messageId].childrenIds;
|
|
||||||
}
|
|
||||||
history.currentId = messageId;
|
|
||||||
dispatch('change');
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{#key history.currentId}
|
|
||||||
<ResponseMessage
|
|
||||||
message={groupedMessages[model].messages[groupedMessagesIdx[model]]}
|
|
||||||
siblings={groupedMessages[model].messages.map((m) => m.id)}
|
|
||||||
isLastMessage={true}
|
|
||||||
{updateChatMessages}
|
|
||||||
{confirmEditResponseMessage}
|
|
||||||
showPreviousMessage={() => showPreviousMessage(model)}
|
|
||||||
showNextMessage={() => showNextMessage(model)}
|
|
||||||
{readOnly}
|
|
||||||
{rateMessage}
|
|
||||||
{copyToClipboard}
|
|
||||||
{continueGeneration}
|
|
||||||
regenerateResponse={async (message) => {
|
|
||||||
regenerateResponse(message);
|
|
||||||
await tick();
|
|
||||||
groupedMessagesIdx[model] = groupedMessages[model].messages.length - 1;
|
|
||||||
}}
|
|
||||||
on:save={async (e) => {
|
|
||||||
console.log('save', e);
|
|
||||||
|
|
||||||
const message = e.detail;
|
|
||||||
history.messages[message.id] = message;
|
|
||||||
await updateChatById(localStorage.token, chatId, {
|
|
||||||
messages: messages,
|
|
||||||
history: history
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{/key}
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{/each}
|
|
||||||
{/key}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
26
src/lib/components/chat/Messages/Error.svelte
Normal file
26
src/lib/components/chat/Messages/Error.svelte
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<script lang="ts">
|
||||||
|
export let content = '';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="flex mt-2 mb-4 space-x-2 border px-4 py-3 border-red-800 bg-red-800/30 font-medium rounded-lg"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke="currentColor"
|
||||||
|
class="w-5 h-5 self-center"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<div class=" self-center">
|
||||||
|
{content}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import Image from '$lib/components/common/Image.svelte';
|
|
||||||
import CodeBlock from './CodeBlock.svelte';
|
|
||||||
|
|
||||||
/* The html content of the tag */
|
|
||||||
export let html; //: string;
|
|
||||||
let parsedHTML = [html];
|
|
||||||
|
|
||||||
export let images;
|
|
||||||
export let codes;
|
|
||||||
|
|
||||||
// all images are in {{IMAGE_0}}, {{IMAGE_1}}.... format
|
|
||||||
// all codes are in {{CODE_0}}, {{CODE_1}}.... format
|
|
||||||
|
|
||||||
const rules = [];
|
|
||||||
rules.forEach((rule) => {
|
|
||||||
parsedHTML = parsedHTML.map((substr) => substr.split(rule.regex)).flat();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#each parsedHTML as part}
|
|
||||||
{@const match = rules.find((rule) => rule.regex.test(part))}
|
|
||||||
{#if match}
|
|
||||||
<svelte:component this={match.component} {...match.props}>
|
|
||||||
{@html part}
|
|
||||||
</svelte:component>
|
|
||||||
{:else}
|
|
||||||
{@html part}
|
|
||||||
{/if}
|
|
||||||
{/each}
|
|
||||||
32
src/lib/components/chat/Messages/Markdown.svelte
Normal file
32
src/lib/components/chat/Messages/Markdown.svelte
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
<script>
|
||||||
|
import { marked } from 'marked';
|
||||||
|
import markedKatex from '$lib/utils/marked/katex-extension';
|
||||||
|
import { replaceTokens, processResponseContent } from '$lib/utils';
|
||||||
|
import { user } from '$lib/stores';
|
||||||
|
|
||||||
|
import MarkdownTokens from './Markdown/MarkdownTokens.svelte';
|
||||||
|
|
||||||
|
export let id;
|
||||||
|
export let content;
|
||||||
|
export let model = null;
|
||||||
|
|
||||||
|
let tokens = [];
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
throwOnError: false
|
||||||
|
};
|
||||||
|
|
||||||
|
marked.use(markedKatex(options));
|
||||||
|
|
||||||
|
$: (async () => {
|
||||||
|
if (content) {
|
||||||
|
tokens = marked.lexer(
|
||||||
|
replaceTokens(processResponseContent(content), model?.name, $user?.name)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#key id}
|
||||||
|
<MarkdownTokens {tokens} {id} />
|
||||||
|
{/key}
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import DOMPurify from 'dompurify';
|
||||||
import type { Token } from 'marked';
|
import type { Token } from 'marked';
|
||||||
import { revertSanitizedResponseContent, unescapeHtml } from '$lib/utils';
|
import { revertSanitizedResponseContent, unescapeHtml } from '$lib/utils';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import Image from '$lib/components/common/Image.svelte';
|
import Image from '$lib/components/common/Image.svelte';
|
||||||
|
|
||||||
import KatexRenderer from './KatexRenderer.svelte';
|
import KatexRenderer from './KatexRenderer.svelte';
|
||||||
|
import { WEBUI_BASE_URL } from '$lib/constants';
|
||||||
|
|
||||||
export let id: string;
|
export let id: string;
|
||||||
export let tokens: Token[];
|
export let tokens: Token[];
|
||||||
|
|
@ -14,7 +16,14 @@
|
||||||
{#if token.type === 'escape'}
|
{#if token.type === 'escape'}
|
||||||
{unescapeHtml(token.text)}
|
{unescapeHtml(token.text)}
|
||||||
{:else if token.type === 'html'}
|
{:else if token.type === 'html'}
|
||||||
{@html token.text}
|
{@const html = DOMPurify.sanitize(token.text)}
|
||||||
|
{#if html && html.includes('<video')}
|
||||||
|
{@html html}
|
||||||
|
{:else if token.text.includes(`<iframe src="${WEBUI_BASE_URL}/api/v1/files/`)}
|
||||||
|
{@html `${token.text}`}
|
||||||
|
{:else}
|
||||||
|
{token.text}
|
||||||
|
{/if}
|
||||||
{:else if token.type === 'link'}
|
{:else if token.type === 'link'}
|
||||||
<a href={token.href} target="_blank" rel="nofollow" title={token.title}>{token.text}</a>
|
<a href={token.href} target="_blank" rel="nofollow" title={token.title}>{token.text}</a>
|
||||||
{:else if token.type === 'image'}
|
{:else if token.type === 'image'}
|
||||||
|
|
@ -28,7 +37,7 @@
|
||||||
<svelte:self id={`${id}-em`} tokens={token.tokens} />
|
<svelte:self id={`${id}-em`} tokens={token.tokens} />
|
||||||
</em>
|
</em>
|
||||||
{:else if token.type === 'codespan'}
|
{:else if token.type === 'codespan'}
|
||||||
<code class="codespan">{revertSanitizedResponseContent(token.raw)}</code>
|
<code class="codespan">{unescapeHtml(token.text)}</code>
|
||||||
{:else if token.type === 'br'}
|
{:else if token.type === 'br'}
|
||||||
<br />
|
<br />
|
||||||
{:else if token.type === 'del'}
|
{:else if token.type === 'del'}
|
||||||
|
|
@ -39,6 +48,14 @@
|
||||||
{#if token.text}
|
{#if token.text}
|
||||||
<KatexRenderer content={revertSanitizedResponseContent(token.text)} displayMode={false} />
|
<KatexRenderer content={revertSanitizedResponseContent(token.text)} displayMode={false} />
|
||||||
{/if}
|
{/if}
|
||||||
|
{:else if token.type === 'iframe'}
|
||||||
|
<iframe
|
||||||
|
src="{WEBUI_BASE_URL}/api/v1/files/{token.fileId}/content"
|
||||||
|
title={token.fileId}
|
||||||
|
width="100%"
|
||||||
|
frameborder="0"
|
||||||
|
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';"
|
||||||
|
></iframe>
|
||||||
{:else if token.type === 'text'}
|
{:else if token.type === 'text'}
|
||||||
{token.raw}
|
{token.raw}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import DOMPurify from 'dompurify';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import type { Token } from 'marked';
|
import { marked, type Token } from 'marked';
|
||||||
import { revertSanitizedResponseContent, unescapeHtml } from '$lib/utils';
|
import { revertSanitizedResponseContent, unescapeHtml } from '$lib/utils';
|
||||||
|
|
||||||
import CodeBlock from '$lib/components/chat/Messages/CodeBlock.svelte';
|
import CodeBlock from '$lib/components/chat/Messages/CodeBlock.svelte';
|
||||||
import MarkdownInlineTokens from '$lib/components/chat/Messages/MarkdownInlineTokens.svelte';
|
import MarkdownInlineTokens from '$lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte';
|
||||||
import KatexRenderer from './KatexRenderer.svelte';
|
import KatexRenderer from './KatexRenderer.svelte';
|
||||||
|
import { WEBUI_BASE_URL } from '$lib/constants';
|
||||||
|
|
||||||
export let id: string;
|
export let id: string;
|
||||||
export let tokens: Token[];
|
export let tokens: Token[];
|
||||||
|
|
@ -91,7 +93,22 @@
|
||||||
</ul>
|
</ul>
|
||||||
{/if}
|
{/if}
|
||||||
{:else if token.type === 'html'}
|
{:else if token.type === 'html'}
|
||||||
{@html token.text}
|
{@const html = DOMPurify.sanitize(token.text)}
|
||||||
|
{#if html && html.includes('<video')}
|
||||||
|
{@html html}
|
||||||
|
{:else if token.text.includes(`<iframe src="${WEBUI_BASE_URL}/api/v1/files/`)}
|
||||||
|
{@html `${token.text}`}
|
||||||
|
{:else}
|
||||||
|
{token.text}
|
||||||
|
{/if}
|
||||||
|
{:else if token.type === 'iframe'}
|
||||||
|
<iframe
|
||||||
|
src="{WEBUI_BASE_URL}/api/v1/files/{token.fileId}/content"
|
||||||
|
title={token.fileId}
|
||||||
|
width="100%"
|
||||||
|
frameborder="0"
|
||||||
|
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';"
|
||||||
|
></iframe>
|
||||||
{:else if token.type === 'paragraph'}
|
{:else if token.type === 'paragraph'}
|
||||||
<p>
|
<p>
|
||||||
<MarkdownInlineTokens id={`${id}-${tokenIdx}-p`} tokens={token.tokens ?? []} />
|
<MarkdownInlineTokens id={`${id}-${tokenIdx}-p`} tokens={token.tokens ?? []} />
|
||||||
261
src/lib/components/chat/Messages/MultiResponseMessages.svelte
Normal file
261
src/lib/components/chat/Messages/MultiResponseMessages.svelte
Normal file
|
|
@ -0,0 +1,261 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
import { onMount, tick, getContext } from 'svelte';
|
||||||
|
import { createEventDispatcher } from 'svelte';
|
||||||
|
|
||||||
|
import { mobile, settings } from '$lib/stores';
|
||||||
|
|
||||||
|
import { generateMoACompletion } from '$lib/apis';
|
||||||
|
import { updateChatById } from '$lib/apis/chats';
|
||||||
|
import { createOpenAITextStream } from '$lib/apis/streaming';
|
||||||
|
|
||||||
|
import ResponseMessage from './ResponseMessage.svelte';
|
||||||
|
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
||||||
|
import Merge from '$lib/components/icons/Merge.svelte';
|
||||||
|
|
||||||
|
import Markdown from './Markdown.svelte';
|
||||||
|
import Name from './Name.svelte';
|
||||||
|
import Skeleton from './Skeleton.svelte';
|
||||||
|
|
||||||
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
export let chatId;
|
||||||
|
|
||||||
|
export let history;
|
||||||
|
export let messages = [];
|
||||||
|
export let messageIdx;
|
||||||
|
|
||||||
|
export let parentMessage;
|
||||||
|
export let isLastMessage;
|
||||||
|
|
||||||
|
export let readOnly = false;
|
||||||
|
|
||||||
|
export let updateChatMessages: Function;
|
||||||
|
export let confirmEditResponseMessage: Function;
|
||||||
|
export let rateMessage: Function;
|
||||||
|
|
||||||
|
export let copyToClipboard: Function;
|
||||||
|
export let continueGeneration: Function;
|
||||||
|
export let mergeResponses: Function;
|
||||||
|
export let regenerateResponse: Function;
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
let currentMessageId;
|
||||||
|
let groupedMessages = {};
|
||||||
|
let groupedMessagesIdx = {};
|
||||||
|
|
||||||
|
$: if (parentMessage) {
|
||||||
|
initHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
const showPreviousMessage = (modelIdx) => {
|
||||||
|
groupedMessagesIdx[modelIdx] = Math.max(0, groupedMessagesIdx[modelIdx] - 1);
|
||||||
|
let messageId = groupedMessages[modelIdx].messages[groupedMessagesIdx[modelIdx]].id;
|
||||||
|
|
||||||
|
console.log(messageId);
|
||||||
|
let messageChildrenIds = history.messages[messageId].childrenIds;
|
||||||
|
|
||||||
|
while (messageChildrenIds.length !== 0) {
|
||||||
|
messageId = messageChildrenIds.at(-1);
|
||||||
|
messageChildrenIds = history.messages[messageId].childrenIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
history.currentId = messageId;
|
||||||
|
dispatch('change');
|
||||||
|
};
|
||||||
|
|
||||||
|
const showNextMessage = (modelIdx) => {
|
||||||
|
groupedMessagesIdx[modelIdx] = Math.min(
|
||||||
|
groupedMessages[modelIdx].messages.length - 1,
|
||||||
|
groupedMessagesIdx[modelIdx] + 1
|
||||||
|
);
|
||||||
|
|
||||||
|
let messageId = groupedMessages[modelIdx].messages[groupedMessagesIdx[modelIdx]].id;
|
||||||
|
console.log(messageId);
|
||||||
|
|
||||||
|
let messageChildrenIds = history.messages[messageId].childrenIds;
|
||||||
|
|
||||||
|
while (messageChildrenIds.length !== 0) {
|
||||||
|
messageId = messageChildrenIds.at(-1);
|
||||||
|
messageChildrenIds = history.messages[messageId].childrenIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
history.currentId = messageId;
|
||||||
|
dispatch('change');
|
||||||
|
};
|
||||||
|
|
||||||
|
const initHandler = async () => {
|
||||||
|
await tick();
|
||||||
|
currentMessageId = messages[messageIdx].id;
|
||||||
|
|
||||||
|
groupedMessages = parentMessage?.models.reduce((a, model, modelIdx) => {
|
||||||
|
// Find all messages that are children of the parent message and have the same model
|
||||||
|
const modelMessages = parentMessage?.childrenIds
|
||||||
|
.map((id) => history.messages[id])
|
||||||
|
.filter((m) => m.modelIdx === modelIdx);
|
||||||
|
|
||||||
|
return {
|
||||||
|
...a,
|
||||||
|
[modelIdx]: { messages: modelMessages }
|
||||||
|
};
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
groupedMessagesIdx = parentMessage?.models.reduce((a, model, modelIdx) => {
|
||||||
|
const idx = groupedMessages[modelIdx].messages.findIndex((m) => m.id === currentMessageId);
|
||||||
|
if (idx !== -1) {
|
||||||
|
return {
|
||||||
|
...a,
|
||||||
|
[modelIdx]: idx
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
...a,
|
||||||
|
[modelIdx]: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}, {});
|
||||||
|
};
|
||||||
|
|
||||||
|
const mergeResponsesHandler = async () => {
|
||||||
|
const responses = Object.keys(groupedMessages).map((modelIdx) => {
|
||||||
|
const { messages } = groupedMessages[modelIdx];
|
||||||
|
return messages[groupedMessagesIdx[modelIdx]].content;
|
||||||
|
});
|
||||||
|
mergeResponses(currentMessageId, responses, chatId);
|
||||||
|
};
|
||||||
|
|
||||||
|
onMount(async () => {
|
||||||
|
initHandler();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
class="flex snap-x snap-mandatory overflow-x-auto scrollbar-hidden"
|
||||||
|
id="responses-container-{chatId}-{parentMessage.id}"
|
||||||
|
>
|
||||||
|
{#key currentMessageId}
|
||||||
|
{#each Object.keys(groupedMessages) as modelIdx}
|
||||||
|
{#if groupedMessagesIdx[modelIdx] !== undefined && groupedMessages[modelIdx].messages.length > 0}
|
||||||
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
||||||
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||||
|
{@const message = groupedMessages[modelIdx].messages[groupedMessagesIdx[modelIdx]]}
|
||||||
|
|
||||||
|
<div
|
||||||
|
class=" snap-center w-full max-w-full m-1 border {history.messages[currentMessageId]
|
||||||
|
?.modelIdx == modelIdx
|
||||||
|
? `border-gray-100 dark:border-gray-800 border-[1.5px] ${
|
||||||
|
$mobile ? 'min-w-full' : 'min-w-[32rem]'
|
||||||
|
}`
|
||||||
|
: `border-gray-50 dark:border-gray-850 border-dashed ${
|
||||||
|
$mobile ? 'min-w-full' : 'min-w-80'
|
||||||
|
}`} transition-all p-5 rounded-2xl"
|
||||||
|
on:click={() => {
|
||||||
|
if (currentMessageId != message.id) {
|
||||||
|
currentMessageId = message.id;
|
||||||
|
let messageId = message.id;
|
||||||
|
console.log(messageId);
|
||||||
|
//
|
||||||
|
let messageChildrenIds = history.messages[messageId].childrenIds;
|
||||||
|
while (messageChildrenIds.length !== 0) {
|
||||||
|
messageId = messageChildrenIds.at(-1);
|
||||||
|
messageChildrenIds = history.messages[messageId].childrenIds;
|
||||||
|
}
|
||||||
|
history.currentId = messageId;
|
||||||
|
dispatch('change');
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{#key history.currentId}
|
||||||
|
{#if message}
|
||||||
|
<ResponseMessage
|
||||||
|
{message}
|
||||||
|
siblings={groupedMessages[modelIdx].messages.map((m) => m.id)}
|
||||||
|
isLastMessage={true}
|
||||||
|
{updateChatMessages}
|
||||||
|
{confirmEditResponseMessage}
|
||||||
|
showPreviousMessage={() => showPreviousMessage(modelIdx)}
|
||||||
|
showNextMessage={() => showNextMessage(modelIdx)}
|
||||||
|
{readOnly}
|
||||||
|
{rateMessage}
|
||||||
|
{copyToClipboard}
|
||||||
|
{continueGeneration}
|
||||||
|
regenerateResponse={async (message) => {
|
||||||
|
regenerateResponse(message);
|
||||||
|
await tick();
|
||||||
|
groupedMessagesIdx[modelIdx] = groupedMessages[modelIdx].messages.length - 1;
|
||||||
|
}}
|
||||||
|
on:save={async (e) => {
|
||||||
|
console.log('save', e);
|
||||||
|
|
||||||
|
const message = e.detail;
|
||||||
|
history.messages[message.id] = message;
|
||||||
|
await updateChatById(localStorage.token, chatId, {
|
||||||
|
messages: messages,
|
||||||
|
history: history
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
|
{/key}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/each}
|
||||||
|
{/key}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if !readOnly && isLastMessage}
|
||||||
|
{#if !Object.keys(groupedMessages).find((modelIdx) => {
|
||||||
|
const { messages } = groupedMessages[modelIdx];
|
||||||
|
return !messages[groupedMessagesIdx[modelIdx]].done;
|
||||||
|
})}
|
||||||
|
<div class="flex justify-end">
|
||||||
|
<div class="w-full">
|
||||||
|
{#if history.messages[currentMessageId]?.merged?.status}
|
||||||
|
{@const message = history.messages[currentMessageId]?.merged}
|
||||||
|
|
||||||
|
<div class="w-full rounded-xl pl-5 pr-2 py-2">
|
||||||
|
<Name>
|
||||||
|
Merged Response
|
||||||
|
|
||||||
|
{#if message.timestamp}
|
||||||
|
<span
|
||||||
|
class=" self-center invisible group-hover:visible text-gray-400 text-xs font-medium uppercase ml-0.5 -mt-0.5"
|
||||||
|
>
|
||||||
|
{dayjs(message.timestamp * 1000).format($i18n.t('h:mm a'))}
|
||||||
|
</span>
|
||||||
|
{/if}
|
||||||
|
</Name>
|
||||||
|
|
||||||
|
<div class="mt-1 markdown-prose w-full min-w-full">
|
||||||
|
{#if (message?.content ?? '') === ''}
|
||||||
|
<Skeleton />
|
||||||
|
{:else}
|
||||||
|
<Markdown id={`merged`} content={message.content ?? ''} />
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" flex-shrink-0 text-gray-600 dark:text-gray-500 mt-1">
|
||||||
|
<Tooltip content={$i18n.t('Merge Responses')} placement="bottom">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
id="merge-response-button"
|
||||||
|
class="{true
|
||||||
|
? 'visible'
|
||||||
|
: 'invisible group-hover:visible'} p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg dark:hover:text-white hover:text-black transition regenerate-response-button"
|
||||||
|
on:click={() => {
|
||||||
|
mergeResponsesHandler();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Merge className=" size-5 " />
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
import { WEBUI_BASE_URL } from '$lib/constants';
|
import { WEBUI_BASE_URL } from '$lib/constants';
|
||||||
import { marked } from 'marked';
|
import { marked } from 'marked';
|
||||||
|
|
||||||
import { config, user, models as _models } from '$lib/stores';
|
import { config, user, models as _models, temporaryChatEnabled } from '$lib/stores';
|
||||||
import { onMount, getContext } from 'svelte';
|
import { onMount, getContext } from 'svelte';
|
||||||
|
|
||||||
import { blur, fade } from 'svelte/transition';
|
import { blur, fade } from 'svelte/transition';
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
import Suggestions from '../MessageInput/Suggestions.svelte';
|
import Suggestions from '../MessageInput/Suggestions.svelte';
|
||||||
import { sanitizeResponseContent } from '$lib/utils';
|
import { sanitizeResponseContent } from '$lib/utils';
|
||||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
||||||
|
import EyeSlash from '$lib/components/icons/EyeSlash.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
|
@ -64,6 +65,18 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{#if $temporaryChatEnabled}
|
||||||
|
<Tooltip
|
||||||
|
content="This chat won't appear in history and your messages will not be saved."
|
||||||
|
className="w-fit"
|
||||||
|
placement="top-start"
|
||||||
|
>
|
||||||
|
<div class="flex items-center gap-2 text-gray-500 font-medium text-lg my-2 w-fit">
|
||||||
|
<EyeSlash strokeWidth="2.5" className="size-5" /> Temporary Chat
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class=" mt-2 mb-4 text-3xl text-gray-800 dark:text-gray-100 font-semibold text-left flex items-center gap-4 font-primary"
|
class=" mt-2 mb-4 text-3xl text-gray-800 dark:text-gray-100 font-semibold text-left flex items-center gap-4 font-primary"
|
||||||
>
|
>
|
||||||
|
|
@ -113,7 +126,8 @@
|
||||||
<div class=" w-full font-primary" in:fade={{ duration: 200, delay: 300 }}>
|
<div class=" w-full font-primary" in:fade={{ duration: 200, delay: 300 }}>
|
||||||
<Suggestions
|
<Suggestions
|
||||||
suggestionPrompts={models[selectedModelIdx]?.info?.meta?.suggestion_prompts ??
|
suggestionPrompts={models[selectedModelIdx]?.info?.meta?.suggestion_prompts ??
|
||||||
$config.default_prompt_suggestions}
|
$config?.default_prompt_suggestions ??
|
||||||
|
[]}
|
||||||
{submitPrompt}
|
{submitPrompt}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,10 @@
|
||||||
message.annotation.reason = selectedReason;
|
message.annotation.reason = selectedReason;
|
||||||
message.annotation.comment = comment;
|
message.annotation.comment = comment;
|
||||||
|
|
||||||
dispatch('submit');
|
dispatch('submit', {
|
||||||
|
reason: selectedReason,
|
||||||
|
comment: comment
|
||||||
|
});
|
||||||
|
|
||||||
toast.success($i18n.t('Thanks for your feedback!'));
|
toast.success($i18n.t('Thanks for your feedback!'));
|
||||||
show = false;
|
show = false;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { toast } from 'svelte-sonner';
|
import { toast } from 'svelte-sonner';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { marked } from 'marked';
|
|
||||||
|
|
||||||
import { fade } from 'svelte/transition';
|
import { fade } from 'svelte/transition';
|
||||||
import { createEventDispatcher } from 'svelte';
|
import { createEventDispatcher } from 'svelte';
|
||||||
|
|
@ -18,8 +17,7 @@
|
||||||
approximateToHumanReadable,
|
approximateToHumanReadable,
|
||||||
extractSentences,
|
extractSentences,
|
||||||
replaceTokens,
|
replaceTokens,
|
||||||
revertSanitizedResponseContent,
|
processResponseContent
|
||||||
sanitizeResponseContent
|
|
||||||
} from '$lib/utils';
|
} from '$lib/utils';
|
||||||
import { WEBUI_BASE_URL } from '$lib/constants';
|
import { WEBUI_BASE_URL } from '$lib/constants';
|
||||||
|
|
||||||
|
|
@ -34,7 +32,9 @@
|
||||||
import Spinner from '$lib/components/common/Spinner.svelte';
|
import Spinner from '$lib/components/common/Spinner.svelte';
|
||||||
import WebSearchResults from './ResponseMessage/WebSearchResults.svelte';
|
import WebSearchResults from './ResponseMessage/WebSearchResults.svelte';
|
||||||
import Sparkles from '$lib/components/icons/Sparkles.svelte';
|
import Sparkles from '$lib/components/icons/Sparkles.svelte';
|
||||||
import MarkdownTokens from './MarkdownTokens.svelte';
|
import Markdown from './Markdown.svelte';
|
||||||
|
import Error from './Error.svelte';
|
||||||
|
import Citations from './Citations.svelte';
|
||||||
|
|
||||||
export let message;
|
export let message;
|
||||||
export let siblings;
|
export let siblings;
|
||||||
|
|
@ -59,7 +59,6 @@
|
||||||
let edit = false;
|
let edit = false;
|
||||||
let editedContent = '';
|
let editedContent = '';
|
||||||
let editTextAreaElement: HTMLTextAreaElement;
|
let editTextAreaElement: HTMLTextAreaElement;
|
||||||
let tooltipInstance = null;
|
|
||||||
|
|
||||||
let sentencesAudio = {};
|
let sentencesAudio = {};
|
||||||
let speaking = null;
|
let speaking = null;
|
||||||
|
|
@ -69,29 +68,6 @@
|
||||||
let generatingImage = false;
|
let generatingImage = false;
|
||||||
|
|
||||||
let showRateComment = false;
|
let showRateComment = false;
|
||||||
let showCitationModal = false;
|
|
||||||
|
|
||||||
let selectedCitation = null;
|
|
||||||
|
|
||||||
let tokens;
|
|
||||||
|
|
||||||
import 'katex/dist/katex.min.css';
|
|
||||||
|
|
||||||
import markedKatex from '$lib/utils/katex-extension';
|
|
||||||
|
|
||||||
const options = {
|
|
||||||
throwOnError: false
|
|
||||||
};
|
|
||||||
|
|
||||||
marked.use(markedKatex(options));
|
|
||||||
|
|
||||||
$: (async () => {
|
|
||||||
if (message?.content) {
|
|
||||||
tokens = marked.lexer(
|
|
||||||
replaceTokens(sanitizeResponseContent(message?.content), model?.name, $user?.name)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
const playAudio = (idx) => {
|
const playAudio = (idx) => {
|
||||||
return new Promise((res) => {
|
return new Promise((res) => {
|
||||||
|
|
@ -284,8 +260,6 @@
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<CitationsModal bind:show={showCitationModal} citation={selectedCitation} />
|
|
||||||
|
|
||||||
{#key message.id}
|
{#key message.id}
|
||||||
<div
|
<div
|
||||||
class=" flex w-full message-{message.id}"
|
class=" flex w-full message-{message.id}"
|
||||||
|
|
@ -303,7 +277,7 @@
|
||||||
|
|
||||||
{#if message.timestamp}
|
{#if message.timestamp}
|
||||||
<span
|
<span
|
||||||
class=" self-center invisible group-hover:visible text-gray-400 text-xs font-medium uppercase"
|
class=" self-center invisible group-hover:visible text-gray-400 text-xs font-medium uppercase ml-0.5 -mt-0.5"
|
||||||
>
|
>
|
||||||
{dayjs(message.timestamp * 1000).format($i18n.t('h:mm a'))}
|
{dayjs(message.timestamp * 1000).format($i18n.t('h:mm a'))}
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -323,9 +297,7 @@
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div
|
<div class="chat-{message.role} w-full min-w-full markdown-prose">
|
||||||
class="prose chat-{message.role} w-full max-w-full dark:prose-invert prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line"
|
|
||||||
>
|
|
||||||
<div>
|
<div>
|
||||||
{#if (message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]).length > 0}
|
{#if (message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]).length > 0}
|
||||||
{@const status = (
|
{@const status = (
|
||||||
|
|
@ -410,82 +382,15 @@
|
||||||
{:else if message.content && message.error !== true}
|
{:else if message.content && message.error !== true}
|
||||||
<!-- always show message contents even if there's an error -->
|
<!-- always show message contents even if there's an error -->
|
||||||
<!-- unless message.error === true which is legacy error handling, where the error message is stored in message.content -->
|
<!-- unless message.error === true which is legacy error handling, where the error message is stored in message.content -->
|
||||||
{#key message.id}
|
<Markdown id={message.id} content={message.content} {model} />
|
||||||
<MarkdownTokens id={message.id} {tokens} />
|
|
||||||
{/key}
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if message.error}
|
{#if message.error}
|
||||||
<div
|
<Error content={message?.error?.content ?? message.content} />
|
||||||
class="flex mt-2 mb-4 space-x-2 border px-4 py-3 border-red-800 bg-red-800/30 font-medium rounded-lg"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke-width="1.5"
|
|
||||||
stroke="currentColor"
|
|
||||||
class="w-5 h-5 self-center"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
|
|
||||||
<div class=" self-center">
|
|
||||||
{message?.error?.content ?? message.content}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if message.citations}
|
{#if message.citations}
|
||||||
<div class="mt-1 mb-2 w-full flex gap-1 items-center flex-wrap">
|
<Citations citations={message.citations} />
|
||||||
{#each message.citations.reduce((acc, citation) => {
|
|
||||||
citation.document.forEach((document, index) => {
|
|
||||||
const metadata = citation.metadata?.[index];
|
|
||||||
const id = metadata?.source ?? 'N/A';
|
|
||||||
let source = citation?.source;
|
|
||||||
|
|
||||||
if (metadata?.name) {
|
|
||||||
source = { ...source, name: metadata.name };
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if ID looks like a URL
|
|
||||||
if (id.startsWith('http://') || id.startsWith('https://')) {
|
|
||||||
source = { name: id };
|
|
||||||
}
|
|
||||||
|
|
||||||
const existingSource = acc.find((item) => item.id === id);
|
|
||||||
|
|
||||||
if (existingSource) {
|
|
||||||
existingSource.document.push(document);
|
|
||||||
existingSource.metadata.push(metadata);
|
|
||||||
} else {
|
|
||||||
acc.push( { id: id, source: source, document: [document], metadata: metadata ? [metadata] : [] } );
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return acc;
|
|
||||||
}, []) as citation, idx}
|
|
||||||
<div class="flex gap-1 text-xs font-semibold">
|
|
||||||
<button
|
|
||||||
class="flex dark:text-gray-300 py-1 px-1 bg-gray-50 hover:bg-gray-100 dark:bg-gray-850 dark:hover:bg-gray-800 transition rounded-xl"
|
|
||||||
on:click={() => {
|
|
||||||
showCitationModal = true;
|
|
||||||
selectedCitation = citation;
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class="bg-white dark:bg-gray-700 rounded-full size-4">
|
|
||||||
{idx + 1}
|
|
||||||
</div>
|
|
||||||
<div class="flex-1 mx-2 line-clamp-1">
|
|
||||||
{citation.source.name}
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
@ -495,7 +400,7 @@
|
||||||
{#if !edit}
|
{#if !edit}
|
||||||
{#if message.done || siblings.length > 1}
|
{#if message.done || siblings.length > 1}
|
||||||
<div
|
<div
|
||||||
class=" flex justify-start overflow-x-auto buttons text-gray-600 dark:text-gray-500"
|
class=" flex justify-start overflow-x-auto buttons text-gray-600 dark:text-gray-500 mt-0.5"
|
||||||
>
|
>
|
||||||
{#if siblings.length > 1}
|
{#if siblings.length > 1}
|
||||||
<div class="flex self-center min-w-fit" dir="ltr">
|
<div class="flex self-center min-w-fit" dir="ltr">
|
||||||
|
|
@ -553,6 +458,7 @@
|
||||||
|
|
||||||
{#if message.done}
|
{#if message.done}
|
||||||
{#if !readOnly}
|
{#if !readOnly}
|
||||||
|
{#if $user.role === 'user' ? ($config?.permissions?.chat?.editing ?? true) : true}
|
||||||
<Tooltip content={$i18n.t('Edit')} placement="bottom">
|
<Tooltip content={$i18n.t('Edit')} placement="bottom">
|
||||||
<button
|
<button
|
||||||
class="{isLastMessage
|
class="{isLastMessage
|
||||||
|
|
@ -579,6 +485,7 @@
|
||||||
</button>
|
</button>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
{/if}
|
{/if}
|
||||||
|
{/if}
|
||||||
|
|
||||||
<Tooltip content={$i18n.t('Copy')} placement="bottom">
|
<Tooltip content={$i18n.t('Copy')} placement="bottom">
|
||||||
<button
|
<button
|
||||||
|
|
@ -814,6 +721,7 @@
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if !readOnly}
|
{#if !readOnly}
|
||||||
|
{#if $config?.features.enable_message_rating ?? true}
|
||||||
<Tooltip content={$i18n.t('Good Response')} placement="bottom">
|
<Tooltip content={$i18n.t('Good Response')} placement="bottom">
|
||||||
<button
|
<button
|
||||||
class="{isLastMessage
|
class="{isLastMessage
|
||||||
|
|
@ -822,10 +730,24 @@
|
||||||
?.annotation?.rating ?? null) === 1
|
?.annotation?.rating ?? null) === 1
|
||||||
? 'bg-gray-100 dark:bg-gray-800'
|
? 'bg-gray-100 dark:bg-gray-800'
|
||||||
: ''} dark:hover:text-white hover:text-black transition"
|
: ''} dark:hover:text-white hover:text-black transition"
|
||||||
on:click={() => {
|
on:click={async () => {
|
||||||
rateMessage(message.id, 1);
|
await rateMessage(message.id, 1);
|
||||||
showRateComment = true;
|
|
||||||
|
|
||||||
|
(model?.actions ?? [])
|
||||||
|
.filter((action) => action?.__webui__ ?? false)
|
||||||
|
.forEach((action) => {
|
||||||
|
dispatch('action', {
|
||||||
|
id: action.id,
|
||||||
|
event: {
|
||||||
|
id: 'good-response',
|
||||||
|
data: {
|
||||||
|
messageId: message.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
showRateComment = true;
|
||||||
window.setTimeout(() => {
|
window.setTimeout(() => {
|
||||||
document
|
document
|
||||||
.getElementById(`message-feedback-${message.id}`)
|
.getElementById(`message-feedback-${message.id}`)
|
||||||
|
|
@ -857,8 +779,23 @@
|
||||||
?.annotation?.rating ?? null) === -1
|
?.annotation?.rating ?? null) === -1
|
||||||
? 'bg-gray-100 dark:bg-gray-800'
|
? 'bg-gray-100 dark:bg-gray-800'
|
||||||
: ''} dark:hover:text-white hover:text-black transition"
|
: ''} dark:hover:text-white hover:text-black transition"
|
||||||
on:click={() => {
|
on:click={async () => {
|
||||||
rateMessage(message.id, -1);
|
await rateMessage(message.id, -1);
|
||||||
|
|
||||||
|
(model?.actions ?? [])
|
||||||
|
.filter((action) => action?.__webui__ ?? false)
|
||||||
|
.forEach((action) => {
|
||||||
|
dispatch('action', {
|
||||||
|
id: action.id,
|
||||||
|
event: {
|
||||||
|
id: 'bad-response',
|
||||||
|
data: {
|
||||||
|
messageId: message.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
showRateComment = true;
|
showRateComment = true;
|
||||||
window.setTimeout(() => {
|
window.setTimeout(() => {
|
||||||
document
|
document
|
||||||
|
|
@ -882,16 +819,32 @@
|
||||||
>
|
>
|
||||||
</button>
|
</button>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
{/if}
|
||||||
|
|
||||||
{#if isLastMessage}
|
{#if isLastMessage}
|
||||||
<Tooltip content={$i18n.t('Continue Response')} placement="bottom">
|
<Tooltip content={$i18n.t('Continue Response')} placement="bottom">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
id="continue-response-button"
|
||||||
class="{isLastMessage
|
class="{isLastMessage
|
||||||
? 'visible'
|
? 'visible'
|
||||||
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg dark:hover:text-white hover:text-black transition regenerate-response-button"
|
: 'invisible group-hover:visible'} p-1.5 hover:bg-black/5 dark:hover:bg-white/5 rounded-lg dark:hover:text-white hover:text-black transition regenerate-response-button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
continueGeneration();
|
continueGeneration();
|
||||||
|
|
||||||
|
(model?.actions ?? [])
|
||||||
|
.filter((action) => action?.__webui__ ?? false)
|
||||||
|
.forEach((action) => {
|
||||||
|
dispatch('action', {
|
||||||
|
id: action.id,
|
||||||
|
event: {
|
||||||
|
id: 'continue-response',
|
||||||
|
data: {
|
||||||
|
messageId: message.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -925,6 +878,20 @@
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
showRateComment = false;
|
showRateComment = false;
|
||||||
regenerateResponse(message);
|
regenerateResponse(message);
|
||||||
|
|
||||||
|
(model?.actions ?? [])
|
||||||
|
.filter((action) => action?.__webui__ ?? false)
|
||||||
|
.forEach((action) => {
|
||||||
|
dispatch('action', {
|
||||||
|
id: action.id,
|
||||||
|
event: {
|
||||||
|
id: 'regenerate-response',
|
||||||
|
data: {
|
||||||
|
messageId: message.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
|
@ -944,7 +911,7 @@
|
||||||
</button>
|
</button>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
|
||||||
{#each model?.actions ?? [] as action}
|
{#each (model?.actions ?? []).filter((action) => !(action?.__webui__ ?? false)) as action}
|
||||||
<Tooltip content={action.name} placement="bottom">
|
<Tooltip content={action.name} placement="bottom">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|
@ -981,8 +948,24 @@
|
||||||
messageId={message.id}
|
messageId={message.id}
|
||||||
bind:show={showRateComment}
|
bind:show={showRateComment}
|
||||||
bind:message
|
bind:message
|
||||||
on:submit={() => {
|
on:submit={(e) => {
|
||||||
updateChatMessages();
|
updateChatMessages();
|
||||||
|
|
||||||
|
(model?.actions ?? [])
|
||||||
|
.filter((action) => action?.__webui__ ?? false)
|
||||||
|
.forEach((action) => {
|
||||||
|
dispatch('action', {
|
||||||
|
id: action.id,
|
||||||
|
event: {
|
||||||
|
id: 'rate-comment',
|
||||||
|
data: {
|
||||||
|
messageId: message.id,
|
||||||
|
comment: e.detail.comment,
|
||||||
|
reason: e.detail.reason
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,10 @@
|
||||||
import { user as _user } from '$lib/stores';
|
import { user as _user } from '$lib/stores';
|
||||||
import { getFileContentById } from '$lib/apis/files';
|
import { getFileContentById } from '$lib/apis/files';
|
||||||
import FileItem from '$lib/components/common/FileItem.svelte';
|
import FileItem from '$lib/components/common/FileItem.svelte';
|
||||||
|
import { marked } from 'marked';
|
||||||
|
import { processResponseContent, replaceTokens } from '$lib/utils';
|
||||||
|
import MarkdownTokens from './Markdown/MarkdownTokens.svelte';
|
||||||
|
import Markdown from './Markdown.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
|
@ -41,8 +45,8 @@
|
||||||
messageEditTextAreaElement?.focus();
|
messageEditTextAreaElement?.focus();
|
||||||
};
|
};
|
||||||
|
|
||||||
const editMessageConfirmHandler = async () => {
|
const editMessageConfirmHandler = async (submit = true) => {
|
||||||
confirmEditMessage(message.id, editedContent);
|
confirmEditMessage(message.id, editedContent, submit);
|
||||||
|
|
||||||
edit = false;
|
edit = false;
|
||||||
editedContent = '';
|
editedContent = '';
|
||||||
|
|
@ -81,7 +85,7 @@
|
||||||
|
|
||||||
{#if message.timestamp}
|
{#if message.timestamp}
|
||||||
<span
|
<span
|
||||||
class=" invisible group-hover:visible text-gray-400 text-xs font-medium uppercase"
|
class=" invisible group-hover:visible text-gray-400 text-xs font-medium uppercase ml-0.5 -mt-0.5"
|
||||||
>
|
>
|
||||||
{dayjs(message.timestamp * 1000).format($i18n.t('h:mm a'))}
|
{dayjs(message.timestamp * 1000).format($i18n.t('h:mm a'))}
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -90,9 +94,7 @@
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div
|
<div class="chat-{message.role} w-full min-w-full markdown-prose">
|
||||||
class="prose chat-{message.role} w-full max-w-full flex flex-col justify-end dark:prose-invert prose-headings:my-0 prose-p:my-0 prose-p:-mb-4 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-img:my-0 prose-ul:-my-4 prose-ol:-my-4 prose-li:-my-3 prose-ul:-mb-6 prose-ol:-mb-6 prose-li:-mb-4 whitespace-pre-line"
|
|
||||||
>
|
|
||||||
{#if message.files}
|
{#if message.files}
|
||||||
<div class="mt-2.5 mb-1 w-full flex flex-col justify-end overflow-x-auto gap-1 flex-wrap">
|
<div class="mt-2.5 mb-1 w-full flex flex-col justify-end overflow-x-auto gap-1 flex-wrap">
|
||||||
{#each message.files as file}
|
{#each message.files as file}
|
||||||
|
|
@ -133,12 +135,25 @@
|
||||||
const isEnterPressed = e.key === 'Enter';
|
const isEnterPressed = e.key === 'Enter';
|
||||||
|
|
||||||
if (isCmdOrCtrlPressed && isEnterPressed) {
|
if (isCmdOrCtrlPressed && isEnterPressed) {
|
||||||
document.getElementById('save-edit-message-button')?.click();
|
document.getElementById('confirm-edit-message-button')?.click();
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class=" mt-2 mb-1 flex justify-end space-x-1.5 text-sm font-medium">
|
<div class=" mt-2 mb-1 flex justify-between text-sm font-medium">
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
id="save-edit-message-button"
|
||||||
|
class=" px-4 py-2 bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 border dark:border-gray-700 text-gray-700 dark:text-gray-200 transition rounded-3xl"
|
||||||
|
on:click={() => {
|
||||||
|
editMessageConfirmHandler(false);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{$i18n.t('Save')}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex space-x-1.5">
|
||||||
<button
|
<button
|
||||||
id="close-edit-message-button"
|
id="close-edit-message-button"
|
||||||
class="px-4 py-2 bg-white dark:bg-gray-900 hover:bg-gray-100 text-gray-800 dark:text-gray-100 transition rounded-3xl"
|
class="px-4 py-2 bg-white dark:bg-gray-900 hover:bg-gray-100 text-gray-800 dark:text-gray-100 transition rounded-3xl"
|
||||||
|
|
@ -150,7 +165,7 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
id="save-edit-message-button"
|
id="confirm-edit-message-button"
|
||||||
class=" px-4 py-2 bg-gray-900 dark:bg-white hover:bg-gray-850 text-gray-100 dark:text-gray-800 transition rounded-3xl"
|
class=" px-4 py-2 bg-gray-900 dark:bg-white hover:bg-gray-850 text-gray-100 dark:text-gray-800 transition rounded-3xl"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
editMessageConfirmHandler();
|
editMessageConfirmHandler();
|
||||||
|
|
@ -160,17 +175,20 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<div class="flex {($settings?.chatBubble ?? true) ? 'justify-end' : ''} mb-2">
|
<div class="flex {($settings?.chatBubble ?? true) ? 'justify-end pb-1' : 'w-full'}">
|
||||||
<div
|
<div
|
||||||
class="rounded-3xl {($settings?.chatBubble ?? true)
|
class="rounded-3xl {($settings?.chatBubble ?? true)
|
||||||
? `max-w-[90%] px-5 py-2 bg-gray-50 dark:bg-gray-850 ${
|
? `max-w-[90%] px-5 py-2 bg-gray-50 dark:bg-gray-850 ${
|
||||||
message.files ? 'rounded-tr-lg' : ''
|
message.files ? 'rounded-tr-lg' : ''
|
||||||
}`
|
}`
|
||||||
: ''} "
|
: ' w-full'}"
|
||||||
>
|
>
|
||||||
<pre id="user-message">{message.content}</pre>
|
{#if message.content}
|
||||||
|
<Markdown id={message.id} content={message.content} />
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { models, showSettings, settings, user, mobile } from '$lib/stores';
|
import { models, showSettings, settings, user, mobile, config } from '$lib/stores';
|
||||||
import { onMount, tick, getContext } from 'svelte';
|
import { onMount, tick, getContext } from 'svelte';
|
||||||
import { toast } from 'svelte-sonner';
|
import { toast } from 'svelte-sonner';
|
||||||
import Selector from './ModelSelector/Selector.svelte';
|
import Selector from './ModelSelector/Selector.svelte';
|
||||||
|
|
@ -46,6 +46,9 @@
|
||||||
label: model.name,
|
label: model.name,
|
||||||
model: model
|
model: model
|
||||||
}))}
|
}))}
|
||||||
|
showTemporaryChatControl={$user.role === 'user'
|
||||||
|
? ($config?.permissions?.chat?.temporary ?? true)
|
||||||
|
: true}
|
||||||
bind:value={selectedModel}
|
bind:value={selectedModel}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,15 @@
|
||||||
|
|
||||||
import { deleteModel, getOllamaVersion, pullModel } from '$lib/apis/ollama';
|
import { deleteModel, getOllamaVersion, pullModel } from '$lib/apis/ollama';
|
||||||
|
|
||||||
import { user, MODEL_DOWNLOAD_POOL, models, mobile } from '$lib/stores';
|
import { user, MODEL_DOWNLOAD_POOL, models, mobile, temporaryChatEnabled } from '$lib/stores';
|
||||||
import { toast } from 'svelte-sonner';
|
import { toast } from 'svelte-sonner';
|
||||||
import { capitalizeFirstLetter, sanitizeResponseContent, splitStream } from '$lib/utils';
|
import { capitalizeFirstLetter, sanitizeResponseContent, splitStream } from '$lib/utils';
|
||||||
import { getModels } from '$lib/apis';
|
import { getModels } from '$lib/apis';
|
||||||
|
|
||||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
||||||
|
import Switch from '$lib/components/common/Switch.svelte';
|
||||||
|
import ChatBubbleOval from '$lib/components/icons/ChatBubbleOval.svelte';
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
|
@ -27,12 +30,15 @@
|
||||||
export let searchEnabled = true;
|
export let searchEnabled = true;
|
||||||
export let searchPlaceholder = $i18n.t('Search a model');
|
export let searchPlaceholder = $i18n.t('Search a model');
|
||||||
|
|
||||||
|
export let showTemporaryChatControl = false;
|
||||||
|
|
||||||
export let items: {
|
export let items: {
|
||||||
label: string;
|
label: string;
|
||||||
value: string;
|
value: string;
|
||||||
|
model: Model;
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
} = [];
|
}[] = [];
|
||||||
|
|
||||||
export let className = 'w-[32rem]';
|
export let className = 'w-[32rem]';
|
||||||
|
|
||||||
|
|
@ -59,7 +65,8 @@
|
||||||
return _item;
|
return _item;
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
keys: ['value', 'label', 'tags', 'desc', 'modelName']
|
keys: ['value', 'tags', 'modelName'],
|
||||||
|
threshold: 0.3
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -513,6 +520,35 @@
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{#if showTemporaryChatControl}
|
||||||
|
<hr class="border-gray-100 dark:border-gray-800" />
|
||||||
|
|
||||||
|
<div class="flex items-center mx-2 my-2">
|
||||||
|
<button
|
||||||
|
class="flex justify-between w-full font-medium line-clamp-1 select-none items-center rounded-button py-2 px-3 text-sm text-gray-700 dark:text-gray-100 outline-none transition-all duration-75 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-lg cursor-pointer data-[highlighted]:bg-muted"
|
||||||
|
on:click={async () => {
|
||||||
|
temporaryChatEnabled.set(!$temporaryChatEnabled);
|
||||||
|
await goto('/');
|
||||||
|
const newChatButton = document.getElementById('new-chat-button');
|
||||||
|
setTimeout(() => {
|
||||||
|
newChatButton?.click();
|
||||||
|
}, 0);
|
||||||
|
show = false;
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div class="flex gap-2.5 items-center">
|
||||||
|
<ChatBubbleOval className="size-4" strokeWidth="2.5" />
|
||||||
|
|
||||||
|
{$i18n.t(`Temporary Chat`)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<Switch state={$temporaryChatEnabled} />
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<div class="hidden w-[42rem]" />
|
<div class="hidden w-[42rem]" />
|
||||||
<div class="hidden w-[32rem]" />
|
<div class="hidden w-[32rem]" />
|
||||||
</slot>
|
</slot>
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
export let saveSettings: Function;
|
export let saveSettings: Function;
|
||||||
|
|
||||||
// Chats
|
// Chats
|
||||||
let saveChatHistory = true;
|
|
||||||
let importFiles;
|
let importFiles;
|
||||||
|
|
||||||
let showArchiveConfirm = false;
|
let showArchiveConfirm = false;
|
||||||
|
|
@ -95,82 +95,10 @@
|
||||||
await chats.set(await getChatList(localStorage.token, $currentChatPage));
|
await chats.set(await getChatList(localStorage.token, $currentChatPage));
|
||||||
scrollPaginationEnabled.set(true);
|
scrollPaginationEnabled.set(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleSaveChatHistory = async () => {
|
|
||||||
saveChatHistory = !saveChatHistory;
|
|
||||||
console.log(saveChatHistory);
|
|
||||||
|
|
||||||
if (saveChatHistory === false) {
|
|
||||||
await goto('/');
|
|
||||||
}
|
|
||||||
saveSettings({ saveChatHistory: saveChatHistory });
|
|
||||||
};
|
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
saveChatHistory = $settings.saveChatHistory ?? true;
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex flex-col h-full justify-between space-y-3 text-sm max-h-[22rem]">
|
<div class="flex flex-col h-full justify-between space-y-3 text-sm max-h-[22rem]">
|
||||||
<div class=" space-y-2">
|
<div class=" space-y-2">
|
||||||
<div
|
|
||||||
class="flex flex-col justify-between rounded-md items-center py-2 px-3.5 w-full transition"
|
|
||||||
>
|
|
||||||
<div class="flex w-full justify-between">
|
|
||||||
<div class=" self-center text-sm font-medium">{$i18n.t('Chat History')}</div>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="p-1 px-3 text-xs flex rounded transition"
|
|
||||||
type="button"
|
|
||||||
on:click={() => {
|
|
||||||
toggleSaveChatHistory();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{#if saveChatHistory === true}
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-4 h-4"
|
|
||||||
>
|
|
||||||
<path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" />
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M1.38 8.28a.87.87 0 0 1 0-.566 7.003 7.003 0 0 1 13.238.006.87.87 0 0 1 0 .566A7.003 7.003 0 0 1 1.379 8.28ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
|
|
||||||
clip-rule="evenodd"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
|
|
||||||
<span class="ml-2 self-center"> {$i18n.t('On')} </span>
|
|
||||||
{:else}
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-4 h-4"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M3.28 2.22a.75.75 0 0 0-1.06 1.06l10.5 10.5a.75.75 0 1 0 1.06-1.06l-1.322-1.323a7.012 7.012 0 0 0 2.16-3.11.87.87 0 0 0 0-.567A7.003 7.003 0 0 0 4.82 3.76l-1.54-1.54Zm3.196 3.195 1.135 1.136A1.502 1.502 0 0 1 9.45 8.389l1.136 1.135a3 3 0 0 0-4.109-4.109Z"
|
|
||||||
clip-rule="evenodd"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="m7.812 10.994 1.816 1.816A7.003 7.003 0 0 1 1.38 8.28a.87.87 0 0 1 0-.566 6.985 6.985 0 0 1 1.113-2.039l2.513 2.513a3 3 0 0 0 2.806 2.806Z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
||||||
{/if}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="text-xs text-left w-full font-medium mt-0.5">
|
|
||||||
{$i18n.t('This setting does not sync across browsers or devices.')}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850" />
|
|
||||||
|
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<input
|
<input
|
||||||
id="chat-import-input"
|
id="chat-import-input"
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
let themes = ['dark', 'light', 'rose-pine dark', 'rose-pine-dawn light', 'oled-dark'];
|
let themes = ['dark', 'light', 'rose-pine dark', 'rose-pine-dawn light', 'oled-dark'];
|
||||||
let selectedTheme = 'system';
|
let selectedTheme = 'system';
|
||||||
|
|
||||||
let languages = [];
|
let languages: Awaited<ReturnType<typeof getLanguages>> = [];
|
||||||
let lang = $i18n.language;
|
let lang = $i18n.language;
|
||||||
let notificationEnabled = false;
|
let notificationEnabled = false;
|
||||||
let system = '';
|
let system = '';
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
let requestFormat = '';
|
let requestFormat = '';
|
||||||
let keepAlive = null;
|
let keepAlive: string | null = null;
|
||||||
|
|
||||||
let params = {
|
let params = {
|
||||||
// Advanced
|
// Advanced
|
||||||
|
|
@ -59,7 +59,8 @@
|
||||||
num_ctx: null,
|
num_ctx: null,
|
||||||
num_batch: null,
|
num_batch: null,
|
||||||
num_keep: null,
|
num_keep: null,
|
||||||
max_tokens: null
|
max_tokens: null,
|
||||||
|
num_gpu: null
|
||||||
};
|
};
|
||||||
|
|
||||||
const toggleRequestFormat = async () => {
|
const toggleRequestFormat = async () => {
|
||||||
|
|
@ -321,7 +322,8 @@
|
||||||
max_tokens: params.max_tokens !== null ? params.max_tokens : undefined,
|
max_tokens: params.max_tokens !== null ? params.max_tokens : undefined,
|
||||||
use_mmap: params.use_mmap !== null ? params.use_mmap : undefined,
|
use_mmap: params.use_mmap !== null ? params.use_mmap : undefined,
|
||||||
use_mlock: params.use_mlock !== null ? params.use_mlock : undefined,
|
use_mlock: params.use_mlock !== null ? params.use_mlock : undefined,
|
||||||
num_thread: params.num_thread !== null ? params.num_thread : undefined
|
num_thread: params.num_thread !== null ? params.num_thread : undefined,
|
||||||
|
num_gpu: params.num_gpu !== null ? params.num_gpu : undefined
|
||||||
},
|
},
|
||||||
keepAlive: keepAlive ? (isNaN(keepAlive) ? keepAlive : parseInt(keepAlive)) : undefined
|
keepAlive: keepAlive ? (isNaN(keepAlive) ? keepAlive : parseInt(keepAlive)) : undefined
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
let ollamaEnabled = null;
|
let ollamaEnabled = null;
|
||||||
|
|
||||||
let OLLAMA_URLS = [];
|
let OLLAMA_URLS = [];
|
||||||
let selectedOllamaUrlIdx: string | null = null;
|
let selectedOllamaUrlIdx: number | null = null;
|
||||||
|
|
||||||
let updateModelId = null;
|
let updateModelId = null;
|
||||||
let updateProgress = null;
|
let updateProgress = null;
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
class="tabs flex flex-row overflow-x-auto space-x-1 md:space-x-0 md:space-y-1 md:flex-col flex-1 md:flex-none md:w-40 dark:text-gray-200 text-xs text-left mb-3 md:mb-0"
|
class="tabs flex flex-row overflow-x-auto space-x-1 md:space-x-0 md:space-y-1 md:flex-col flex-1 md:flex-none md:w-40 dark:text-gray-200 text-xs text-left mb-3 md:mb-0"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'general'
|
'general'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
@ -120,7 +120,7 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'interface'
|
'interface'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
@ -146,7 +146,7 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'personalization'
|
'personalization'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
@ -161,7 +161,7 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'audio'
|
'audio'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
@ -188,7 +188,7 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'chats'
|
'chats'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
@ -214,7 +214,7 @@
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'account'
|
'account'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
@ -241,7 +241,7 @@
|
||||||
|
|
||||||
{#if $user.role === 'admin'}
|
{#if $user.role === 'admin'}
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'admin'
|
'admin'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
@ -269,7 +269,7 @@
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-left transition {selectedTab ===
|
||||||
'about'
|
'about'
|
||||||
? 'bg-gray-200 dark:bg-gray-800'
|
? 'bg-gray-200 dark:bg-gray-800'
|
||||||
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
: ' hover:bg-gray-100 dark:hover:bg-gray-850'}"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
export let src = '';
|
export let src = '';
|
||||||
export let alt = '';
|
export let alt = '';
|
||||||
|
|
||||||
export let className = '';
|
export let className = ' w-full';
|
||||||
|
|
||||||
let _src = '';
|
let _src = '';
|
||||||
$: _src = src.startsWith('/') ? `${WEBUI_BASE_URL}${src}` : src;
|
$: _src = src.startsWith('/') ? `${WEBUI_BASE_URL}${src}` : src;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onMount } from 'svelte';
|
import { onDestroy, onMount } from 'svelte';
|
||||||
import { fade } from 'svelte/transition';
|
import { fade } from 'svelte/transition';
|
||||||
|
|
||||||
import { flyAndScale } from '$lib/utils/transitions';
|
import { flyAndScale } from '$lib/utils/transitions';
|
||||||
|
|
@ -47,6 +47,13 @@
|
||||||
document.body.removeChild(modalElement);
|
document.body.removeChild(modalElement);
|
||||||
document.body.style.overflow = 'unset';
|
document.body.style.overflow = 'unset';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
show = false;
|
||||||
|
if (modalElement) {
|
||||||
|
document.body.removeChild(modalElement);
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if show}
|
{#if show}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<input
|
<input
|
||||||
bind:value={tagName}
|
bind:value={tagName}
|
||||||
class=" px-2 cursor-pointer self-center text-xs h-fit bg-transparent outline-none line-clamp-1 w-[5.5rem]"
|
class=" px-2 cursor-pointer self-center text-xs h-fit bg-transparent outline-none line-clamp-1 w-[6.5rem]"
|
||||||
placeholder={$i18n.t('Add a tag')}
|
placeholder={$i18n.t('Add a tag')}
|
||||||
list="tagOptions"
|
list="tagOptions"
|
||||||
on:keydown={(event) => {
|
on:keydown={(event) => {
|
||||||
|
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { getDocs } from '$lib/apis/documents';
|
|
||||||
import {
|
|
||||||
getRAGConfig,
|
|
||||||
updateRAGConfig,
|
|
||||||
getQuerySettings,
|
|
||||||
scanDocs,
|
|
||||||
updateQuerySettings,
|
|
||||||
resetVectorDB,
|
|
||||||
getEmbeddingConfig,
|
|
||||||
updateEmbeddingConfig,
|
|
||||||
getRerankingConfig,
|
|
||||||
updateRerankingConfig
|
|
||||||
} from '$lib/apis/rag';
|
|
||||||
|
|
||||||
import { documents, models } from '$lib/stores';
|
|
||||||
import { onMount, getContext } from 'svelte';
|
|
||||||
import { toast } from 'svelte-sonner';
|
|
||||||
|
|
||||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
|
||||||
|
|
||||||
export let saveHandler: Function;
|
|
||||||
|
|
||||||
let scanDirLoading = false;
|
|
||||||
let updateEmbeddingModelLoading = false;
|
|
||||||
let updateRerankingModelLoading = false;
|
|
||||||
|
|
||||||
let showResetConfirm = false;
|
|
||||||
|
|
||||||
let chunkSize = 0;
|
|
||||||
let chunkOverlap = 0;
|
|
||||||
let pdfExtractImages = true;
|
|
||||||
|
|
||||||
const submitHandler = async () => {
|
|
||||||
const res = await updateRAGConfig(localStorage.token, {
|
|
||||||
pdf_extract_images: pdfExtractImages,
|
|
||||||
chunk: {
|
|
||||||
chunk_overlap: chunkOverlap,
|
|
||||||
chunk_size: chunkSize
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
const res = await getRAGConfig(localStorage.token);
|
|
||||||
|
|
||||||
if (res) {
|
|
||||||
pdfExtractImages = res.pdf_extract_images;
|
|
||||||
|
|
||||||
chunkSize = res.chunk.chunk_size;
|
|
||||||
chunkOverlap = res.chunk.chunk_overlap;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<form
|
|
||||||
class="flex flex-col h-full justify-between space-y-3 text-sm"
|
|
||||||
on:submit|preventDefault={() => {
|
|
||||||
submitHandler();
|
|
||||||
saveHandler();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class=" space-y-3 pr-1.5 overflow-y-scroll h-full max-h-[22rem]">
|
|
||||||
<div class=" ">
|
|
||||||
<div class=" text-sm font-medium">{$i18n.t('Chunk Params')}</div>
|
|
||||||
|
|
||||||
<div class=" flex">
|
|
||||||
<div class=" flex w-full justify-between">
|
|
||||||
<div class="self-center text-xs font-medium min-w-fit">{$i18n.t('Chunk Size')}</div>
|
|
||||||
|
|
||||||
<div class="self-center p-3">
|
|
||||||
<input
|
|
||||||
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="number"
|
|
||||||
placeholder={$i18n.t('Enter Chunk Size')}
|
|
||||||
bind:value={chunkSize}
|
|
||||||
autocomplete="off"
|
|
||||||
min="0"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class=" self-center text-xs font-medium min-w-fit">
|
|
||||||
{$i18n.t('Chunk Overlap')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="self-center p-3">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="number"
|
|
||||||
placeholder={$i18n.t('Enter Chunk Overlap')}
|
|
||||||
bind:value={chunkOverlap}
|
|
||||||
autocomplete="off"
|
|
||||||
min="0"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="pr-2">
|
|
||||||
<div class="flex justify-between items-center text-xs">
|
|
||||||
<div class=" text-xs font-medium">{$i18n.t('PDF Extract Images (OCR)')}</div>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class=" text-xs font-medium text-gray-500"
|
|
||||||
type="button"
|
|
||||||
on:click={() => {
|
|
||||||
pdfExtractImages = !pdfExtractImages;
|
|
||||||
}}>{pdfExtractImages ? $i18n.t('On') : $i18n.t('Off')}</button
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex justify-end pt-3 text-sm font-medium">
|
|
||||||
<button
|
|
||||||
class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
{$i18n.t('Save')}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { getDocs } from '$lib/apis/documents';
|
|
||||||
import {
|
|
||||||
getRAGConfig,
|
|
||||||
updateRAGConfig,
|
|
||||||
getQuerySettings,
|
|
||||||
scanDocs,
|
|
||||||
updateQuerySettings,
|
|
||||||
resetVectorDB,
|
|
||||||
getEmbeddingConfig,
|
|
||||||
updateEmbeddingConfig,
|
|
||||||
getRerankingConfig,
|
|
||||||
updateRerankingConfig
|
|
||||||
} from '$lib/apis/rag';
|
|
||||||
|
|
||||||
import { documents, models } from '$lib/stores';
|
|
||||||
import { onMount, getContext } from 'svelte';
|
|
||||||
import { toast } from 'svelte-sonner';
|
|
||||||
|
|
||||||
import Tooltip from '$lib/components/common/Tooltip.svelte';
|
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
|
||||||
|
|
||||||
export let saveHandler: Function;
|
|
||||||
|
|
||||||
let querySettings = {
|
|
||||||
template: '',
|
|
||||||
r: 0.0,
|
|
||||||
k: 4,
|
|
||||||
hybrid: false
|
|
||||||
};
|
|
||||||
|
|
||||||
const submitHandler = async () => {
|
|
||||||
querySettings = await updateQuerySettings(localStorage.token, querySettings);
|
|
||||||
};
|
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
querySettings = await getQuerySettings(localStorage.token);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<form
|
|
||||||
class="flex flex-col h-full justify-between space-y-3 text-sm"
|
|
||||||
on:submit|preventDefault={() => {
|
|
||||||
submitHandler();
|
|
||||||
saveHandler();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class=" space-y-3 pr-1.5 overflow-y-scroll max-h-[25rem]">
|
|
||||||
<div class=" ">
|
|
||||||
<div class=" text-sm font-medium">{$i18n.t('Query Params')}</div>
|
|
||||||
|
|
||||||
<div class=" flex">
|
|
||||||
<div class=" flex w-full justify-between">
|
|
||||||
<div class="self-center text-xs font-medium min-w-fit">{$i18n.t('Top K')}</div>
|
|
||||||
|
|
||||||
<div class="self-center p-3">
|
|
||||||
<input
|
|
||||||
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="number"
|
|
||||||
placeholder={$i18n.t('Enter Top K')}
|
|
||||||
bind:value={querySettings.k}
|
|
||||||
autocomplete="off"
|
|
||||||
min="0"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{#if querySettings.hybrid === true}
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class=" self-center text-xs font-medium min-w-fit">
|
|
||||||
{$i18n.t('Minimum Score')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="self-center p-3">
|
|
||||||
<input
|
|
||||||
class=" w-full rounded-lg py-1.5 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="number"
|
|
||||||
step="0.01"
|
|
||||||
placeholder={$i18n.t('Enter Score')}
|
|
||||||
bind:value={querySettings.r}
|
|
||||||
autocomplete="off"
|
|
||||||
min="0.0"
|
|
||||||
title={$i18n.t('The score should be a value between 0.0 (0%) and 1.0 (100%).')}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{#if querySettings.hybrid === true}
|
|
||||||
<div class="mt-2 mb-1 text-xs text-gray-400 dark:text-gray-500">
|
|
||||||
{$i18n.t(
|
|
||||||
'Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.'
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850 my-3" />
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('RAG Template')}</div>
|
|
||||||
<textarea
|
|
||||||
bind:value={querySettings.template}
|
|
||||||
class="w-full rounded-lg px-4 py-3 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none resize-none"
|
|
||||||
rows="4"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex justify-end pt-3 text-sm font-medium">
|
|
||||||
<button
|
|
||||||
class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
{$i18n.t('Save')}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
@ -1,285 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { getRAGConfig, updateRAGConfig } from '$lib/apis/rag';
|
|
||||||
import Switch from '$lib/components/common/Switch.svelte';
|
|
||||||
|
|
||||||
import { documents, models } from '$lib/stores';
|
|
||||||
import { onMount, getContext } from 'svelte';
|
|
||||||
import { toast } from 'svelte-sonner';
|
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
|
||||||
|
|
||||||
export let saveHandler: Function;
|
|
||||||
|
|
||||||
let webConfig = null;
|
|
||||||
let webSearchEngines = ['searxng', 'google_pse', 'brave', 'serpstack', 'serper', 'serply'];
|
|
||||||
|
|
||||||
let youtubeLanguage = 'en';
|
|
||||||
let youtubeTranslation = null;
|
|
||||||
|
|
||||||
const submitHandler = async () => {
|
|
||||||
const res = await updateRAGConfig(localStorage.token, {
|
|
||||||
web: webConfig,
|
|
||||||
youtube: {
|
|
||||||
language: youtubeLanguage.split(',').map((lang) => lang.trim()),
|
|
||||||
translation: youtubeTranslation
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
const res = await getRAGConfig(localStorage.token);
|
|
||||||
|
|
||||||
if (res) {
|
|
||||||
webConfig = res.web;
|
|
||||||
|
|
||||||
youtubeLanguage = res.youtube.language.join(',');
|
|
||||||
youtubeTranslation = res.youtube.translation;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<form
|
|
||||||
class="flex flex-col h-full justify-between space-y-3 text-sm"
|
|
||||||
on:submit|preventDefault={async () => {
|
|
||||||
await submitHandler();
|
|
||||||
saveHandler();
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class=" space-y-3 pr-1.5 overflow-y-scroll h-full max-h-[22rem]">
|
|
||||||
{#if webConfig}
|
|
||||||
<div>
|
|
||||||
<div class=" mb-1 text-sm font-medium">
|
|
||||||
{$i18n.t('Web Search')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class=" py-0.5 flex w-full justify-between">
|
|
||||||
<div class=" self-center text-xs font-medium">
|
|
||||||
{$i18n.t('Enable Web Search')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Switch bind:state={webConfig.search.enabled} />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class=" py-0.5 flex w-full justify-between">
|
|
||||||
<div class=" self-center text-xs font-medium">{$i18n.t('Web Search Engine')}</div>
|
|
||||||
<div class="flex items-center relative">
|
|
||||||
<select
|
|
||||||
class="dark:bg-gray-900 w-fit pr-8 rounded px-2 p-1 text-xs bg-transparent outline-none text-right"
|
|
||||||
bind:value={webConfig.search.engine}
|
|
||||||
placeholder={$i18n.t('Select a engine')}
|
|
||||||
required
|
|
||||||
>
|
|
||||||
<option disabled selected value="">{$i18n.t('Select a engine')}</option>
|
|
||||||
{#each webSearchEngines as engine}
|
|
||||||
<option value={engine}>{engine}</option>
|
|
||||||
{/each}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{#if webConfig.search.engine !== ''}
|
|
||||||
<div class="mt-1.5">
|
|
||||||
{#if webConfig.search.engine === 'searxng'}
|
|
||||||
<div>
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Searxng Query URL')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class="flex-1">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="text"
|
|
||||||
placeholder={$i18n.t('Enter Searxng Query URL')}
|
|
||||||
bind:value={webConfig.search.searxng_query_url}
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{:else if webConfig.search.engine === 'google_pse'}
|
|
||||||
<div>
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Google PSE API Key')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class="flex-1">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="text"
|
|
||||||
placeholder={$i18n.t('Enter Google PSE API Key')}
|
|
||||||
bind:value={webConfig.search.google_pse_api_key}
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mt-1.5">
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Google PSE Engine Id')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class="flex-1">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="text"
|
|
||||||
placeholder={$i18n.t('Enter Google PSE Engine Id')}
|
|
||||||
bind:value={webConfig.search.google_pse_engine_id}
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{:else if webConfig.search.engine === 'brave'}
|
|
||||||
<div>
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Brave Search API Key')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class="flex-1">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="text"
|
|
||||||
placeholder={$i18n.t('Enter Brave Search API Key')}
|
|
||||||
bind:value={webConfig.search.brave_search_api_key}
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{:else if webConfig.search.engine === 'serpstack'}
|
|
||||||
<div>
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Serpstack API Key')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class="flex-1">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="text"
|
|
||||||
placeholder={$i18n.t('Enter Serpstack API Key')}
|
|
||||||
bind:value={webConfig.search.serpstack_api_key}
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{:else if webConfig.search.engine === 'serper'}
|
|
||||||
<div>
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Serper API Key')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex w-full">
|
|
||||||
<div class="flex-1">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="text"
|
|
||||||
placeholder={$i18n.t('Enter Serper API Key')}
|
|
||||||
bind:value={webConfig.search.serper_api_key}
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
{#if webConfig.search.enabled}
|
|
||||||
<div class="mt-2 flex gap-2 mb-1">
|
|
||||||
<div class="w-full">
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Search Result Count')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
placeholder={$i18n.t('Search Result Count')}
|
|
||||||
bind:value={webConfig.search.result_count}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="w-full">
|
|
||||||
<div class=" self-center text-xs font-medium mb-1">
|
|
||||||
{$i18n.t('Concurrent Requests')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
placeholder={$i18n.t('Concurrent Requests')}
|
|
||||||
bind:value={webConfig.search.concurrent_requests}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850 my-2" />
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class=" mb-1 text-sm font-medium">
|
|
||||||
{$i18n.t('Web Loader Settings')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class=" py-0.5 flex w-full justify-between">
|
|
||||||
<div class=" self-center text-xs font-medium">
|
|
||||||
{$i18n.t('Bypass SSL verification for Websites')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="p-1 px-3 text-xs flex rounded transition"
|
|
||||||
on:click={() => {
|
|
||||||
webConfig.ssl_verification = !webConfig.ssl_verification;
|
|
||||||
submitHandler();
|
|
||||||
}}
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
{#if webConfig.ssl_verification === true}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('On')}</span>
|
|
||||||
{:else}
|
|
||||||
<span class="ml-2 self-center">{$i18n.t('Off')}</span>
|
|
||||||
{/if}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class=" mt-2 mb-1 text-sm font-medium">
|
|
||||||
{$i18n.t('Youtube Loader Settings')}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div class=" py-0.5 flex w-full justify-between">
|
|
||||||
<div class=" w-20 text-xs font-medium self-center">{$i18n.t('Language')}</div>
|
|
||||||
<div class=" flex-1 self-center">
|
|
||||||
<input
|
|
||||||
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
|
||||||
type="text"
|
|
||||||
placeholder={$i18n.t('Enter language codes')}
|
|
||||||
bind:value={youtubeLanguage}
|
|
||||||
autocomplete="off"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
<div class="flex justify-end pt-3 text-sm font-medium">
|
|
||||||
<button
|
|
||||||
class=" px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
{$i18n.t('Save')}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
@ -1,187 +0,0 @@
|
||||||
<script>
|
|
||||||
import { getContext, tick } from 'svelte';
|
|
||||||
import Modal from '../common/Modal.svelte';
|
|
||||||
import General from './Settings/General.svelte';
|
|
||||||
import ChunkParams from './Settings/ChunkParams.svelte';
|
|
||||||
import QueryParams from './Settings/QueryParams.svelte';
|
|
||||||
import WebParams from './Settings/WebParams.svelte';
|
|
||||||
import { toast } from 'svelte-sonner';
|
|
||||||
import { config } from '$lib/stores';
|
|
||||||
import { getBackendConfig } from '$lib/apis';
|
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
|
||||||
|
|
||||||
export let show = false;
|
|
||||||
|
|
||||||
let selectedTab = 'general';
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<Modal bind:show>
|
|
||||||
<div>
|
|
||||||
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4">
|
|
||||||
<div class=" text-lg font-medium self-center">{$i18n.t('Document Settings')}</div>
|
|
||||||
<button
|
|
||||||
class="self-center"
|
|
||||||
on:click={() => {
|
|
||||||
show = false;
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-5 h-5"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex flex-col md:flex-row w-full p-4 md:space-x-4">
|
|
||||||
<div
|
|
||||||
class="tabs flex flex-row overflow-x-auto space-x-1 md:space-x-0 md:space-y-1 md:flex-col flex-1 md:flex-none md:w-40 dark:text-gray-200 text-xs text-left mb-3 md:mb-0"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
|
||||||
'general'
|
|
||||||
? 'bg-gray-200 dark:bg-gray-700'
|
|
||||||
: ' hover:bg-gray-300 dark:hover:bg-gray-800'}"
|
|
||||||
on:click={() => {
|
|
||||||
selectedTab = 'general';
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class=" self-center mr-2">
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-4 h-4"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M6.955 1.45A.5.5 0 0 1 7.452 1h1.096a.5.5 0 0 1 .497.45l.17 1.699c.484.12.94.312 1.356.562l1.321-1.081a.5.5 0 0 1 .67.033l.774.775a.5.5 0 0 1 .034.67l-1.08 1.32c.25.417.44.873.561 1.357l1.699.17a.5.5 0 0 1 .45.497v1.096a.5.5 0 0 1-.45.497l-1.699.17c-.12.484-.312.94-.562 1.356l1.082 1.322a.5.5 0 0 1-.034.67l-.774.774a.5.5 0 0 1-.67.033l-1.322-1.08c-.416.25-.872.44-1.356.561l-.17 1.699a.5.5 0 0 1-.497.45H7.452a.5.5 0 0 1-.497-.45l-.17-1.699a4.973 4.973 0 0 1-1.356-.562L4.108 13.37a.5.5 0 0 1-.67-.033l-.774-.775a.5.5 0 0 1-.034-.67l1.08-1.32a4.971 4.971 0 0 1-.561-1.357l-1.699-.17A.5.5 0 0 1 1 8.548V7.452a.5.5 0 0 1 .45-.497l1.699-.17c.12-.484.312-.94.562-1.356L2.629 4.107a.5.5 0 0 1 .034-.67l.774-.774a.5.5 0 0 1 .67-.033L5.43 3.71a4.97 4.97 0 0 1 1.356-.561l.17-1.699ZM6 8c0 .538.212 1.026.558 1.385l.057.057a2 2 0 0 0 2.828-2.828l-.058-.056A2 2 0 0 0 6 8Z"
|
|
||||||
clip-rule="evenodd"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
<div class=" self-center">{$i18n.t('General')}</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
|
||||||
'chunk'
|
|
||||||
? 'bg-gray-200 dark:bg-gray-700'
|
|
||||||
: ' hover:bg-gray-300 dark:hover:bg-gray-800'}"
|
|
||||||
on:click={() => {
|
|
||||||
selectedTab = 'chunk';
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class=" self-center mr-2">
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-4 h-4"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M5.625 1.5H9a3.75 3.75 0 0 1 3.75 3.75v1.875c0 1.036.84 1.875 1.875 1.875H16.5a3.75 3.75 0 0 1 3.75 3.75v7.875c0 1.035-.84 1.875-1.875 1.875H5.625a1.875 1.875 0 0 1-1.875-1.875V3.375c0-1.036.84-1.875 1.875-1.875ZM12.75 12a.75.75 0 0 0-1.5 0v2.25H9a.75.75 0 0 0 0 1.5h2.25V18a.75.75 0 0 0 1.5 0v-2.25H15a.75.75 0 0 0 0-1.5h-2.25V12Z"
|
|
||||||
clip-rule="evenodd"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M14.25 5.25a5.23 5.23 0 0 0-1.279-3.434 9.768 9.768 0 0 1 6.963 6.963A5.23 5.23 0 0 0 16.5 7.5h-1.875a.375.375 0 0 1-.375-.375V5.25Z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
<div class=" self-center">{$i18n.t('Chunk Params')}</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
|
||||||
'query'
|
|
||||||
? 'bg-gray-200 dark:bg-gray-700'
|
|
||||||
: ' hover:bg-gray-300 dark:hover:bg-gray-800'}"
|
|
||||||
on:click={() => {
|
|
||||||
selectedTab = 'query';
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class=" self-center mr-2">
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-4 h-4"
|
|
||||||
>
|
|
||||||
<path d="M11.625 16.5a1.875 1.875 0 1 0 0-3.75 1.875 1.875 0 0 0 0 3.75Z" />
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M5.625 1.5H9a3.75 3.75 0 0 1 3.75 3.75v1.875c0 1.036.84 1.875 1.875 1.875H16.5a3.75 3.75 0 0 1 3.75 3.75v7.875c0 1.035-.84 1.875-1.875 1.875H5.625a1.875 1.875 0 0 1-1.875-1.875V3.375c0-1.036.84-1.875 1.875-1.875Zm6 16.5c.66 0 1.277-.19 1.797-.518l1.048 1.048a.75.75 0 0 0 1.06-1.06l-1.047-1.048A3.375 3.375 0 1 0 11.625 18Z"
|
|
||||||
clip-rule="evenodd"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M14.25 5.25a5.23 5.23 0 0 0-1.279-3.434 9.768 9.768 0 0 1 6.963 6.963A5.23 5.23 0 0 0 16.5 7.5h-1.875a.375.375 0 0 1-.375-.375V5.25Z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
<div class=" self-center">{$i18n.t('Query Params')}</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
|
||||||
class="px-2.5 py-2.5 min-w-fit rounded-lg flex-1 md:flex-none flex text-right transition {selectedTab ===
|
|
||||||
'web'
|
|
||||||
? 'bg-gray-200 dark:bg-gray-700'
|
|
||||||
: ' hover:bg-gray-300 dark:hover:bg-gray-800'}"
|
|
||||||
on:click={() => {
|
|
||||||
selectedTab = 'web';
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div class=" self-center mr-2">
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-4 h-4"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M21.721 12.752a9.711 9.711 0 0 0-.945-5.003 12.754 12.754 0 0 1-4.339 2.708 18.991 18.991 0 0 1-.214 4.772 17.165 17.165 0 0 0 5.498-2.477ZM14.634 15.55a17.324 17.324 0 0 0 .332-4.647c-.952.227-1.945.347-2.966.347-1.021 0-2.014-.12-2.966-.347a17.515 17.515 0 0 0 .332 4.647 17.385 17.385 0 0 0 5.268 0ZM9.772 17.119a18.963 18.963 0 0 0 4.456 0A17.182 17.182 0 0 1 12 21.724a17.18 17.18 0 0 1-2.228-4.605ZM7.777 15.23a18.87 18.87 0 0 1-.214-4.774 12.753 12.753 0 0 1-4.34-2.708 9.711 9.711 0 0 0-.944 5.004 17.165 17.165 0 0 0 5.498 2.477ZM21.356 14.752a9.765 9.765 0 0 1-7.478 6.817 18.64 18.64 0 0 0 1.988-4.718 18.627 18.627 0 0 0 5.49-2.098ZM2.644 14.752c1.682.971 3.53 1.688 5.49 2.099a18.64 18.64 0 0 0 1.988 4.718 9.765 9.765 0 0 1-7.478-6.816ZM13.878 2.43a9.755 9.755 0 0 1 6.116 3.986 11.267 11.267 0 0 1-3.746 2.504 18.63 18.63 0 0 0-2.37-6.49ZM12 2.276a17.152 17.152 0 0 1 2.805 7.121c-.897.23-1.837.353-2.805.353-.968 0-1.908-.122-2.805-.353A17.151 17.151 0 0 1 12 2.276ZM10.122 2.43a18.629 18.629 0 0 0-2.37 6.49 11.266 11.266 0 0 1-3.746-2.504 9.754 9.754 0 0 1 6.116-3.985Z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
<div class=" self-center">{$i18n.t('Web Params')}</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="flex-1 md:min-h-[380px]">
|
|
||||||
{#if selectedTab === 'general'}
|
|
||||||
<General
|
|
||||||
saveHandler={() => {
|
|
||||||
toast.success($i18n.t('Settings saved successfully!'));
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{:else if selectedTab === 'chunk'}
|
|
||||||
<ChunkParams
|
|
||||||
saveHandler={() => {
|
|
||||||
toast.success($i18n.t('Settings saved successfully!'));
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{:else if selectedTab === 'query'}
|
|
||||||
<QueryParams
|
|
||||||
saveHandler={() => {
|
|
||||||
toast.success($i18n.t('Settings saved successfully!'));
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{:else if selectedTab === 'web'}
|
|
||||||
<WebParams
|
|
||||||
saveHandler={async () => {
|
|
||||||
toast.success($i18n.t('Settings saved successfully!'));
|
|
||||||
|
|
||||||
await tick();
|
|
||||||
await config.set(await getBackendConfig());
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Modal>
|
|
||||||
19
src/lib/components/icons/ChatBubbleOval.svelte
Normal file
19
src/lib/components/icons/ChatBubbleOval.svelte
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
<script lang="ts">
|
||||||
|
export let className = 'size-4';
|
||||||
|
export let strokeWidth = '1.5';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width={strokeWidth}
|
||||||
|
stroke="currentColor"
|
||||||
|
class={className}
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
19
src/lib/components/icons/EyeSlash.svelte
Normal file
19
src/lib/components/icons/EyeSlash.svelte
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
<script lang="ts">
|
||||||
|
export let className = 'w-4 h-4';
|
||||||
|
export let strokeWidth = '1.5';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width={strokeWidth}
|
||||||
|
stroke="currentColor"
|
||||||
|
class={className}
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
19
src/lib/components/icons/Merge.svelte
Normal file
19
src/lib/components/icons/Merge.svelte
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
<script lang="ts">
|
||||||
|
export let className = 'w-4 h-4';
|
||||||
|
export let strokeWidth = '1.5';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width={strokeWidth}
|
||||||
|
stroke="currentColor"
|
||||||
|
class={className}
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M8 8v8m0-8a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm6-2a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm0 0h-1a5 5 0 0 1-5-5v-.5"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
|
@ -13,7 +13,8 @@
|
||||||
showArchivedChats,
|
showArchivedChats,
|
||||||
pinnedChats,
|
pinnedChats,
|
||||||
scrollPaginationEnabled,
|
scrollPaginationEnabled,
|
||||||
currentChatPage
|
currentChatPage,
|
||||||
|
temporaryChatEnabled
|
||||||
} from '$lib/stores';
|
} from '$lib/stores';
|
||||||
import { onMount, getContext, tick } from 'svelte';
|
import { onMount, getContext, tick } from 'svelte';
|
||||||
|
|
||||||
|
|
@ -380,47 +381,10 @@
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div class="relative flex flex-col flex-1 overflow-y-auto">
|
<div class="relative flex flex-col flex-1 overflow-y-auto">
|
||||||
{#if !($settings.saveChatHistory ?? true)}
|
{#if $temporaryChatEnabled}
|
||||||
<div class="absolute z-40 w-full h-full bg-gray-50/90 dark:bg-black/90 flex justify-center">
|
<div
|
||||||
<div class=" text-left px-5 py-2">
|
class="absolute z-40 w-full h-full bg-gray-50/90 dark:bg-black/90 flex justify-center"
|
||||||
<div class=" font-medium">{$i18n.t('Chat History is off for this browser.')}</div>
|
></div>
|
||||||
<div class="text-xs mt-2">
|
|
||||||
{$i18n.t(
|
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices."
|
|
||||||
)}
|
|
||||||
<span class=" font-semibold"
|
|
||||||
>{$i18n.t('This setting does not sync across browsers or devices.')}</span
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mt-3">
|
|
||||||
<button
|
|
||||||
class="flex justify-center items-center space-x-1.5 px-3 py-2.5 rounded-lg text-xs bg-gray-100 hover:bg-gray-200 transition text-gray-800 font-medium w-full"
|
|
||||||
type="button"
|
|
||||||
on:click={() => {
|
|
||||||
saveSettings({
|
|
||||||
saveChatHistory: true
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
fill="currentColor"
|
|
||||||
class="w-3 h-3"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M8 1a.75.75 0 0 1 .75.75v6.5a.75.75 0 0 1-1.5 0v-6.5A.75.75 0 0 1 8 1ZM4.11 3.05a.75.75 0 0 1 0 1.06 5.5 5.5 0 1 0 7.78 0 .75.75 0 0 1 1.06-1.06 7 7 0 1 1-9.9 0 .75.75 0 0 1 1.06 0Z"
|
|
||||||
clip-rule="evenodd"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
|
|
||||||
<div>{$i18n.t('Enable Chat History')}</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div class="px-2 mt-0.5 mb-2 flex justify-center space-x-2">
|
<div class="px-2 mt-0.5 mb-2 flex justify-center space-x-2">
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,12 @@
|
||||||
import ManifestModal from './common/ManifestModal.svelte';
|
import ManifestModal from './common/ManifestModal.svelte';
|
||||||
import Heart from '../icons/Heart.svelte';
|
import Heart from '../icons/Heart.svelte';
|
||||||
import DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
|
import DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
|
||||||
|
import GarbageBin from '../icons/GarbageBin.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
let shiftKey = false;
|
||||||
|
|
||||||
let functionsImportInputElement: HTMLInputElement;
|
let functionsImportInputElement: HTMLInputElement;
|
||||||
let importFiles;
|
let importFiles;
|
||||||
|
|
||||||
|
|
@ -135,6 +138,34 @@
|
||||||
models.set(await getModels(localStorage.token));
|
models.set(await getModels(localStorage.token));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
const onKeyDown = (event) => {
|
||||||
|
if (event.key === 'Shift') {
|
||||||
|
shiftKey = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onKeyUp = (event) => {
|
||||||
|
if (event.key === 'Shift') {
|
||||||
|
shiftKey = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onBlur = () => {
|
||||||
|
shiftKey = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener('keydown', onKeyDown);
|
||||||
|
window.addEventListener('keyup', onKeyUp);
|
||||||
|
window.addEventListener('blur', onBlur);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener('keydown', onKeyDown);
|
||||||
|
window.removeEventListener('keyup', onKeyUp);
|
||||||
|
window.removeEventListener('blur', onBlur);
|
||||||
|
};
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|
@ -234,6 +265,19 @@
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<div class="flex flex-row gap-0.5 self-center">
|
<div class="flex flex-row gap-0.5 self-center">
|
||||||
|
{#if shiftKey}
|
||||||
|
<Tooltip content={$i18n.t('Delete')}>
|
||||||
|
<button
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
deleteHandler(func);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<GarbageBin />
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
{:else}
|
||||||
{#if func?.meta?.manifest?.funding_url ?? false}
|
{#if func?.meta?.manifest?.funding_url ?? false}
|
||||||
<Tooltip content={$i18n.t('Support')}>
|
<Tooltip content={$i18n.t('Support')}>
|
||||||
<button
|
<button
|
||||||
|
|
@ -312,6 +356,7 @@
|
||||||
<EllipsisHorizontal className="size-5" />
|
<EllipsisHorizontal className="size-5" />
|
||||||
</button>
|
</button>
|
||||||
</FunctionMenu>
|
</FunctionMenu>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<div class=" self-center mx-1">
|
<div class=" self-center mx-1">
|
||||||
<Tooltip content={func.is_active ? $i18n.t('Enabled') : $i18n.t('Disabled')}>
|
<Tooltip content={func.is_active ? $i18n.t('Enabled') : $i18n.t('Disabled')}>
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
<div slot="content">
|
<div slot="content">
|
||||||
<DropdownMenu.Content
|
<DropdownMenu.Content
|
||||||
class="w-full max-w-[160px] rounded-xl px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow"
|
class="w-full max-w-[180px] rounded-xl px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-850 dark:text-white shadow"
|
||||||
sideOffset={-2}
|
sideOffset={-2}
|
||||||
side="bottom"
|
side="bottom"
|
||||||
align="start"
|
align="start"
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,13 @@
|
||||||
import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte';
|
import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte';
|
||||||
import ModelMenu from './Models/ModelMenu.svelte';
|
import ModelMenu from './Models/ModelMenu.svelte';
|
||||||
import ModelDeleteConfirmDialog from '../common/ConfirmDialog.svelte';
|
import ModelDeleteConfirmDialog from '../common/ConfirmDialog.svelte';
|
||||||
|
import Tooltip from '../common/Tooltip.svelte';
|
||||||
|
import GarbageBin from '../icons/GarbageBin.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
let shiftKey = false;
|
||||||
|
|
||||||
let showModelDeleteConfirm = false;
|
let showModelDeleteConfirm = false;
|
||||||
|
|
||||||
let localModelfiles = [];
|
let localModelfiles = [];
|
||||||
|
|
@ -194,6 +198,32 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const onKeyDown = (event) => {
|
||||||
|
if (event.key === 'Shift') {
|
||||||
|
shiftKey = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onKeyUp = (event) => {
|
||||||
|
if (event.key === 'Shift') {
|
||||||
|
shiftKey = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onBlur = () => {
|
||||||
|
shiftKey = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener('keydown', onKeyDown);
|
||||||
|
window.addEventListener('keyup', onKeyUp);
|
||||||
|
window.addEventListener('blur', onBlur);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener('keydown', onKeyDown);
|
||||||
|
window.removeEventListener('keyup', onKeyUp);
|
||||||
|
window.removeEventListener('blur', onBlur);
|
||||||
|
};
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -314,6 +344,70 @@
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<div class="flex flex-row gap-0.5 self-center">
|
<div class="flex flex-row gap-0.5 self-center">
|
||||||
|
{#if shiftKey}
|
||||||
|
<Tooltip
|
||||||
|
content={(model?.info?.meta?.hidden ?? false)
|
||||||
|
? $i18n.t('Show Model')
|
||||||
|
: $i18n.t('Hide Model')}
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
hideModelHandler(model);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{#if model?.info?.meta?.hidden ?? false}
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke="currentColor"
|
||||||
|
class="size-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
{:else}
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke="currentColor"
|
||||||
|
class="size-4"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
|
||||||
|
<Tooltip content={$i18n.t('Delete')}>
|
||||||
|
<button
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
deleteModelHandler(model);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<GarbageBin />
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
{:else}
|
||||||
<a
|
<a
|
||||||
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
type="button"
|
type="button"
|
||||||
|
|
@ -362,6 +456,7 @@
|
||||||
<EllipsisHorizontal className="size-5" />
|
<EllipsisHorizontal className="size-5" />
|
||||||
</button>
|
</button>
|
||||||
</ModelMenu>
|
</ModelMenu>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,12 @@
|
||||||
import ManifestModal from './common/ManifestModal.svelte';
|
import ManifestModal from './common/ManifestModal.svelte';
|
||||||
import Heart from '../icons/Heart.svelte';
|
import Heart from '../icons/Heart.svelte';
|
||||||
import DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
|
import DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
|
||||||
|
import GarbageBin from '../icons/GarbageBin.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
let shiftKey = false;
|
||||||
|
|
||||||
let toolsImportInputElement: HTMLInputElement;
|
let toolsImportInputElement: HTMLInputElement;
|
||||||
let importFiles;
|
let importFiles;
|
||||||
|
|
||||||
|
|
@ -107,6 +110,34 @@
|
||||||
tools.set(await getTools(localStorage.token));
|
tools.set(await getTools(localStorage.token));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
const onKeyDown = (event) => {
|
||||||
|
if (event.key === 'Shift') {
|
||||||
|
shiftKey = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onKeyUp = (event) => {
|
||||||
|
if (event.key === 'Shift') {
|
||||||
|
shiftKey = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onBlur = () => {
|
||||||
|
shiftKey = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener('keydown', onKeyDown);
|
||||||
|
window.addEventListener('keyup', onKeyUp);
|
||||||
|
window.addEventListener('blur', onBlur);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener('keydown', onKeyDown);
|
||||||
|
window.removeEventListener('keyup', onKeyUp);
|
||||||
|
window.removeEventListener('blur', onBlur);
|
||||||
|
};
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|
@ -206,6 +237,19 @@
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<div class="flex flex-row gap-0.5 self-center">
|
<div class="flex flex-row gap-0.5 self-center">
|
||||||
|
{#if shiftKey}
|
||||||
|
<Tooltip content={$i18n.t('Delete')}>
|
||||||
|
<button
|
||||||
|
class="self-center w-fit text-sm px-2 py-2 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
|
||||||
|
type="button"
|
||||||
|
on:click={() => {
|
||||||
|
deleteHandler(tool);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<GarbageBin />
|
||||||
|
</button>
|
||||||
|
</Tooltip>
|
||||||
|
{:else}
|
||||||
{#if tool?.meta?.manifest?.funding_url ?? false}
|
{#if tool?.meta?.manifest?.funding_url ?? false}
|
||||||
<Tooltip content="Support">
|
<Tooltip content="Support">
|
||||||
<button
|
<button
|
||||||
|
|
@ -278,6 +322,7 @@
|
||||||
<EllipsisHorizontal className="size-5" />
|
<EllipsisHorizontal className="size-5" />
|
||||||
</button>
|
</button>
|
||||||
</ToolMenu>
|
</ToolMenu>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "جميع المستخدمين",
|
"All Users": "جميع المستخدمين",
|
||||||
"Allow": "يسمح",
|
"Allow": "يسمح",
|
||||||
"Allow Chat Deletion": "يستطيع حذف المحادثات",
|
"Allow Chat Deletion": "يستطيع حذف المحادثات",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "الأحرف الأبجدية الرقمية والواصلات",
|
"alphanumeric characters and hyphens": "الأحرف الأبجدية الرقمية والواصلات",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "أغسطس",
|
"August": "أغسطس",
|
||||||
"Auto-playback response": "استجابة التشغيل التلقائي",
|
"Auto-playback response": "استجابة التشغيل التلقائي",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 الرابط الرئيسي",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 الرابط الرئيسي",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 الرابط مطلوب",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 الرابط مطلوب",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "UI الدردشة",
|
"Chat Bubble UI": "UI الدردشة",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "اتجاه المحادثة",
|
"Chat direction": "اتجاه المحادثة",
|
||||||
"Chat History": "تاريخ المحادثة",
|
|
||||||
"Chat History is off for this browser.": "سجل الدردشة معطل لهذا المتصفح",
|
|
||||||
"Chats": "المحادثات",
|
"Chats": "المحادثات",
|
||||||
"Check Again": "تحقق مرة اخرى",
|
"Check Again": "تحقق مرة اخرى",
|
||||||
"Check for updates": "تحقق من التحديثات",
|
"Check for updates": "تحقق من التحديثات",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "أضغط هنا للاختيار ملف csv",
|
"Click here to select a csv file.": "أضغط هنا للاختيار ملف csv",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "انقر هنا لاختيار المستندات",
|
"Click here to select documents.": "انقر هنا لاختيار المستندات",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "أضغط هنا",
|
"click here.": "أضغط هنا",
|
||||||
"Click on the user role button to change a user's role.": "أضغط على أسم الصلاحيات لتغيرها للمستخدم",
|
"Click on the user role button to change a user's role.": "أضغط على أسم الصلاحيات لتغيرها للمستخدم",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI الرابط الافتراضي",
|
"ComfyUI Base URL": "ComfyUI الرابط الافتراضي",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI الرابط مطلوب",
|
"ComfyUI Base URL is required.": "ComfyUI الرابط مطلوب",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "الأوامر",
|
"Command": "الأوامر",
|
||||||
"Concurrent Requests": "الطلبات المتزامنة",
|
"Concurrent Requests": "الطلبات المتزامنة",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "قاعدة البيانات",
|
"Database": "قاعدة البيانات",
|
||||||
"December": "ديسمبر",
|
"December": "ديسمبر",
|
||||||
"Default": "الإفتراضي",
|
"Default": "الإفتراضي",
|
||||||
"Default (Automatic1111)": "(Automatic1111) الإفتراضي",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "(SentenceTransformers) الإفتراضي",
|
"Default (SentenceTransformers)": "(SentenceTransformers) الإفتراضي",
|
||||||
"Default Model": "النموذج الافتراضي",
|
"Default Model": "النموذج الافتراضي",
|
||||||
"Default model updated": "الإفتراضي تحديث الموديل",
|
"Default model updated": "الإفتراضي تحديث الموديل",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "المستند",
|
"Document": "المستند",
|
||||||
"Document Settings": "أعدادات المستند",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "مستندات",
|
"Documents": "مستندات",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "لا يجري أي اتصالات خارجية، وتظل بياناتك آمنة على الخادم المستضاف محليًا.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "لا يجري أي اتصالات خارجية، وتظل بياناتك آمنة على الخادم المستضاف محليًا.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "نموذج التضمين",
|
"Embedding Model": "نموذج التضمين",
|
||||||
"Embedding Model Engine": "تضمين محرك النموذج",
|
"Embedding Model Engine": "تضمين محرك النموذج",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "تم تعيين نموذج التضمين على \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "تم تعيين نموذج التضمين على \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "تمكين سجل الدردشة",
|
|
||||||
"Enable Community Sharing": "تمكين مشاركة المجتمع",
|
"Enable Community Sharing": "تمكين مشاركة المجتمع",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة",
|
"Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة",
|
||||||
"Enable Web Search": "تمكين بحث الويب",
|
"Enable Web Search": "تمكين بحث الويب",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "أدخل معرف محرك PSE من Google",
|
"Enter Google PSE Engine Id": "أدخل معرف محرك PSE من Google",
|
||||||
"Enter Image Size (e.g. 512x512)": "(e.g. 512x512) أدخل حجم الصورة ",
|
"Enter Image Size (e.g. 512x512)": "(e.g. 512x512) أدخل حجم الصورة ",
|
||||||
"Enter language codes": "أدخل كود اللغة",
|
"Enter language codes": "أدخل كود اللغة",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "(e.g. {{modelTag}}) أدخل الموديل تاق",
|
"Enter model tag (e.g. {{modelTag}})": "(e.g. {{modelTag}}) أدخل الموديل تاق",
|
||||||
"Enter Number of Steps (e.g. 50)": "(e.g. 50) أدخل عدد الخطوات",
|
"Enter Number of Steps (e.g. 50)": "(e.g. 50) أدخل عدد الخطوات",
|
||||||
"Enter Score": "أدخل النتيجة",
|
"Enter Score": "أدخل النتيجة",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "من جهة اليسار إلى اليمين",
|
"LTR": "من جهة اليسار إلى اليمين",
|
||||||
"Made by OpenWebUI Community": "OpenWebUI تم إنشاؤه بواسطة مجتمع ",
|
"Made by OpenWebUI Community": "OpenWebUI تم إنشاؤه بواسطة مجتمع ",
|
||||||
"Make sure to enclose them with": "تأكد من إرفاقها",
|
"Make sure to enclose them with": "تأكد من إرفاقها",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "إدارة النماذج",
|
"Manage Models": "إدارة النماذج",
|
||||||
"Manage Ollama Models": "Ollama إدارة موديلات ",
|
"Manage Ollama Models": "Ollama إدارة موديلات ",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "لن تتم مشاركة الرسائل التي ترسلها بعد إنشاء الرابط الخاص بك. سيتمكن المستخدمون الذين لديهم عنوان URL من عرض الدردشة المشتركة",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "لن تتم مشاركة الرسائل التي ترسلها بعد إنشاء الرابط الخاص بك. سيتمكن المستخدمون الذين لديهم عنوان URL من عرض الدردشة المشتركة",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "الحد الأدنى من النقاط",
|
"Minimum Score": "الحد الأدنى من النقاط",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "خطاء! يبدو أن عنوان URL غير صالح. يرجى التحقق مرة أخرى والمحاولة مرة أخرى.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "خطاء! يبدو أن عنوان URL غير صالح. يرجى التحقق مرة أخرى والمحاولة مرة أخرى.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "خطاء! أنت تستخدم طريقة غير مدعومة (الواجهة الأمامية فقط). يرجى تقديم واجهة WebUI من الواجهة الخلفية.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "خطاء! أنت تستخدم طريقة غير مدعومة (الواجهة الأمامية فقط). يرجى تقديم واجهة WebUI من الواجهة الخلفية.",
|
||||||
"Open AI (Dall-E)": "AI (Dall-E) فتح",
|
|
||||||
"Open new chat": "فتح محادثة جديده",
|
"Open new chat": "فتح محادثة جديده",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -540,13 +545,13 @@
|
||||||
"Select a base model": "حدد نموذجا أساسيا",
|
"Select a base model": "حدد نموذجا أساسيا",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "أختار موديل",
|
|
||||||
"Select a model": "أختار الموديل",
|
"Select a model": "أختار الموديل",
|
||||||
"Select a pipeline": "حدد مسارا",
|
"Select a pipeline": "حدد مسارا",
|
||||||
"Select a pipeline url": "حدد عنوان URL لخط الأنابيب",
|
"Select a pipeline url": "حدد عنوان URL لخط الأنابيب",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "أختار سيرفر ",
|
"Select an Ollama instance": "أختار سيرفر ",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": " أختار موديل",
|
"Select model": " أختار موديل",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور",
|
"Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور",
|
||||||
|
|
@ -568,7 +573,6 @@
|
||||||
"Set Voice": "ضبط الصوت",
|
"Set Voice": "ضبط الصوت",
|
||||||
"Settings": "الاعدادات",
|
"Settings": "الاعدادات",
|
||||||
"Settings saved successfully!": "تم حفظ الاعدادات بنجاح",
|
"Settings saved successfully!": "تم حفظ الاعدادات بنجاح",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "كشاركة",
|
"Share": "كشاركة",
|
||||||
"Share Chat": "مشاركة الدردشة",
|
"Share Chat": "مشاركة الدردشة",
|
||||||
"Share to OpenWebUI Community": "OpenWebUI شارك في مجتمع",
|
"Share to OpenWebUI Community": "OpenWebUI شارك في مجتمع",
|
||||||
|
|
@ -604,6 +608,7 @@
|
||||||
"Tell us more:": "أخبرنا المزيد:",
|
"Tell us more:": "أخبرنا المزيد:",
|
||||||
"Temperature": "درجة حرارة",
|
"Temperature": "درجة حرارة",
|
||||||
"Template": "نموذج",
|
"Template": "نموذج",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "اكتمال النص",
|
"Text Completion": "اكتمال النص",
|
||||||
"Text-to-Speech Engine": "محرك تحويل النص إلى كلام",
|
"Text-to-Speech Engine": "محرك تحويل النص إلى كلام",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -615,7 +620,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "وهذا يضمن حفظ محادثاتك القيمة بشكل آمن في قاعدة بياناتك الخلفية. شكرًا لك!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "وهذا يضمن حفظ محادثاتك القيمة بشكل آمن في قاعدة بياناتك الخلفية. شكرًا لك!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "لا تتم مزامنة هذا الإعداد عبر المتصفحات أو الأجهزة.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "شرح شامل",
|
"Thorough explanation": "شرح شامل",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -696,14 +700,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "Web تحميل اعدادات",
|
"Web Loader Settings": "Web تحميل اعدادات",
|
||||||
"Web Params": "Web تحميل اعدادات",
|
|
||||||
"Web Search": "بحث الويب",
|
"Web Search": "بحث الويب",
|
||||||
"Web Search Engine": "محرك بحث الويب",
|
"Web Search Engine": "محرك بحث الويب",
|
||||||
"Webhook URL": "Webhook الرابط",
|
"Webhook URL": "Webhook الرابط",
|
||||||
"WebUI Settings": "WebUI اعدادات",
|
"WebUI Settings": "WebUI اعدادات",
|
||||||
"WebUI will make requests to": "سوف يقوم WebUI بتقديم طلبات ل",
|
"WebUI will make requests to": "سوف يقوم WebUI بتقديم طلبات ل",
|
||||||
"What’s New in": "ما هو الجديد",
|
"What’s New in": "ما هو الجديد",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "عند إيقاف تشغيل السجل، لن تظهر الدردشات الجديدة على هذا المتصفح في سجلك على أي من أجهزتك.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "مساحة العمل",
|
"Workspace": "مساحة العمل",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Всички Потребители",
|
"All Users": "Всички Потребители",
|
||||||
"Allow": "Позволи",
|
"Allow": "Позволи",
|
||||||
"Allow Chat Deletion": "Позволи Изтриване на Чат",
|
"Allow Chat Deletion": "Позволи Изтриване на Чат",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "алфанумерични знаци и тире",
|
"alphanumeric characters and hyphens": "алфанумерични знаци и тире",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "Август",
|
"August": "Август",
|
||||||
"Auto-playback response": "Аувтоматично възпроизвеждане на Отговора",
|
"Auto-playback response": "Аувтоматично възпроизвеждане на Отговора",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Базов URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Базов URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Базов URL е задължителен.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Базов URL е задължителен.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "UI за чат бублон",
|
"Chat Bubble UI": "UI за чат бублон",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Направление на чата",
|
"Chat direction": "Направление на чата",
|
||||||
"Chat History": "Чат История",
|
|
||||||
"Chat History is off for this browser.": "Чат История е изключен за този браузър.",
|
|
||||||
"Chats": "Чатове",
|
"Chats": "Чатове",
|
||||||
"Check Again": "Проверете Още Веднъж",
|
"Check Again": "Проверете Още Веднъж",
|
||||||
"Check for updates": "Проверка за актуализации",
|
"Check for updates": "Проверка за актуализации",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Натиснете тук, за да изберете csv файл.",
|
"Click here to select a csv file.": "Натиснете тук, за да изберете csv файл.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Натиснете тук, за да изберете документи.",
|
"Click here to select documents.": "Натиснете тук, за да изберете документи.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "натиснете тук.",
|
"click here.": "натиснете тук.",
|
||||||
"Click on the user role button to change a user's role.": "Натиснете върху бутона за промяна на ролята на потребителя.",
|
"Click on the user role button to change a user's role.": "Натиснете върху бутона за промяна на ролята на потребителя.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI Base URL",
|
"ComfyUI Base URL": "ComfyUI Base URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI Base URL е задължително.",
|
"ComfyUI Base URL is required.": "ComfyUI Base URL е задължително.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Команда",
|
"Command": "Команда",
|
||||||
"Concurrent Requests": "Едновременни искания",
|
"Concurrent Requests": "Едновременни искания",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "База данни",
|
"Database": "База данни",
|
||||||
"December": "Декември",
|
"December": "Декември",
|
||||||
"Default": "По подразбиране",
|
"Default": "По подразбиране",
|
||||||
"Default (Automatic1111)": "По подразбиране (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "По подразбиране (SentenceTransformers)",
|
"Default (SentenceTransformers)": "По подразбиране (SentenceTransformers)",
|
||||||
"Default Model": "Модел по подразбиране",
|
"Default Model": "Модел по подразбиране",
|
||||||
"Default model updated": "Моделът по подразбиране е обновен",
|
"Default model updated": "Моделът по подразбиране е обновен",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Документ",
|
"Document": "Документ",
|
||||||
"Document Settings": "Документ Настройки",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "Документи",
|
"Documents": "Документи",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "няма външни връзки, и вашите данни остават сигурни на локално назначен сървър.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "няма външни връзки, и вашите данни остават сигурни на локално назначен сървър.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Модел за вграждане",
|
"Embedding Model": "Модел за вграждане",
|
||||||
"Embedding Model Engine": "Модел за вграждане",
|
"Embedding Model Engine": "Модел за вграждане",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Модел за вграждане е настроен на \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Модел за вграждане е настроен на \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Вклюване на Чат История",
|
|
||||||
"Enable Community Sharing": "Разрешаване на споделяне в общност",
|
"Enable Community Sharing": "Разрешаване на споделяне в общност",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Вклюване на Нови Потребители",
|
"Enable New Sign Ups": "Вклюване на Нови Потребители",
|
||||||
"Enable Web Search": "Разрешаване на търсене в уеб",
|
"Enable Web Search": "Разрешаване на търсене в уеб",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Въведете идентификатор на двигателя на Google PSE",
|
"Enter Google PSE Engine Id": "Въведете идентификатор на двигателя на Google PSE",
|
||||||
"Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)",
|
||||||
"Enter language codes": "Въведете кодове на езика",
|
"Enter language codes": "Въведете кодове на езика",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Въведете таг на модел (напр. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Въведете таг на модел (напр. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Въведете брой стъпки (напр. 50)",
|
"Enter Number of Steps (e.g. 50)": "Въведете брой стъпки (напр. 50)",
|
||||||
"Enter Score": "Въведете оценка",
|
"Enter Score": "Въведете оценка",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Направено от OpenWebUI общността",
|
"Made by OpenWebUI Community": "Направено от OpenWebUI общността",
|
||||||
"Make sure to enclose them with": "Уверете се, че са заключени с",
|
"Make sure to enclose them with": "Уверете се, че са заключени с",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "Управление на Моделите",
|
"Manage Models": "Управление на Моделите",
|
||||||
"Manage Ollama Models": "Управление на Ollama Моделите",
|
"Manage Ollama Models": "Управление на Ollama Моделите",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Съобщенията, които изпращате след създаването на връзката, няма да бъдат споделяни. Потребителите с URL адреса ще могат да видят споделения чат.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Съобщенията, които изпращате след създаването на връзката, няма да бъдат споделяни. Потребителите с URL адреса ще могат да видят споделения чат.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Минимална оценка",
|
"Minimum Score": "Минимална оценка",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Изглежда URL адресът е невалиден. Моля, проверете отново и опитайте пак.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Изглежда URL адресът е невалиден. Моля, проверете отново и опитайте пак.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Използвате неподдържан метод (само фронтенд). Моля, сервирайте WebUI от бекенда.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Използвате неподдържан метод (само фронтенд). Моля, сервирайте WebUI от бекенда.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Отвори нов чат",
|
"Open new chat": "Отвори нов чат",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "Изберете базов модел",
|
"Select a base model": "Изберете базов модел",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Изберете режим",
|
|
||||||
"Select a model": "Изберете модел",
|
"Select a model": "Изберете модел",
|
||||||
"Select a pipeline": "Изберете тръбопровод",
|
"Select a pipeline": "Изберете тръбопровод",
|
||||||
"Select a pipeline url": "Избор на URL адрес на канал",
|
"Select a pipeline url": "Избор на URL адрес на канал",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Изберете Ollama инстанция",
|
"Select an Ollama instance": "Изберете Ollama инстанция",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Изберете модел",
|
"Select model": "Изберете модел",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Избраният(те) модел(и) не поддържа въвеждане на изображения",
|
"Selected model(s) do not support image inputs": "Избраният(те) модел(и) не поддържа въвеждане на изображения",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Задай Глас",
|
"Set Voice": "Задай Глас",
|
||||||
"Settings": "Настройки",
|
"Settings": "Настройки",
|
||||||
"Settings saved successfully!": "Настройките са запазени успешно!",
|
"Settings saved successfully!": "Настройките са запазени успешно!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "Подели",
|
"Share": "Подели",
|
||||||
"Share Chat": "Подели Чат",
|
"Share Chat": "Подели Чат",
|
||||||
"Share to OpenWebUI Community": "Споделите с OpenWebUI Общността",
|
"Share to OpenWebUI Community": "Споделите с OpenWebUI Общността",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "Повече информация:",
|
"Tell us more:": "Повече информация:",
|
||||||
"Temperature": "Температура",
|
"Temperature": "Температура",
|
||||||
"Template": "Шаблон",
|
"Template": "Шаблон",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Text Completion",
|
"Text Completion": "Text Completion",
|
||||||
"Text-to-Speech Engine": "Text-to-Speech Engine",
|
"Text-to-Speech Engine": "Text-to-Speech Engine",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Това гарантира, че ценните ви разговори се запазват сигурно във вашата бекенд база данни. Благодарим ви!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Това гарантира, че ценните ви разговори се запазват сигурно във вашата бекенд база данни. Благодарим ви!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "Тази настройка не се синхронизира между браузъри или устройства.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "Това е подробно описание.",
|
"Thorough explanation": "Това е подробно описание.",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "Уеб",
|
"Web": "Уеб",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "Настройки за зареждане на уеб",
|
"Web Loader Settings": "Настройки за зареждане на уеб",
|
||||||
"Web Params": "Параметри за уеб",
|
|
||||||
"Web Search": "Търсене в уеб",
|
"Web Search": "Търсене в уеб",
|
||||||
"Web Search Engine": "Уеб търсачка",
|
"Web Search Engine": "Уеб търсачка",
|
||||||
"Webhook URL": "Уебхук URL",
|
"Webhook URL": "Уебхук URL",
|
||||||
"WebUI Settings": "WebUI Настройки",
|
"WebUI Settings": "WebUI Настройки",
|
||||||
"WebUI will make requests to": "WebUI ще направи заявки към",
|
"WebUI will make requests to": "WebUI ще направи заявки към",
|
||||||
"What’s New in": "Какво е новото в",
|
"What’s New in": "Какво е новото в",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Когато историята е изключена, нови чатове в този браузър ще не се показват в историята на никои от вашия профил.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "Работно пространство",
|
"Workspace": "Работно пространство",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "সব ইউজার",
|
"All Users": "সব ইউজার",
|
||||||
"Allow": "অনুমোদন",
|
"Allow": "অনুমোদন",
|
||||||
"Allow Chat Deletion": "চ্যাট ডিলিট করতে দিন",
|
"Allow Chat Deletion": "চ্যাট ডিলিট করতে দিন",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "ইংরেজি অক্ষর, সংখ্যা এবং হাইফেন",
|
"alphanumeric characters and hyphens": "ইংরেজি অক্ষর, সংখ্যা এবং হাইফেন",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "আগস্ট",
|
"August": "আগস্ট",
|
||||||
"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
|
"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 বেজ ইউআরএল",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 বেজ ইউআরএল",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 বেজ ইউআরএল আবশ্যক",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 বেজ ইউআরএল আবশ্যক",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "চ্যাট বাবল UI",
|
"Chat Bubble UI": "চ্যাট বাবল UI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "চ্যাট দিকনির্দেশ",
|
"Chat direction": "চ্যাট দিকনির্দেশ",
|
||||||
"Chat History": "চ্যাট হিস্টোরি",
|
|
||||||
"Chat History is off for this browser.": "এই ব্রাউজারের জন্য চ্যাট হিস্টোরি বন্ধ আছে",
|
|
||||||
"Chats": "চ্যাটসমূহ",
|
"Chats": "চ্যাটসমূহ",
|
||||||
"Check Again": "আবার চেক করুন",
|
"Check Again": "আবার চেক করুন",
|
||||||
"Check for updates": "নতুন আপডেট আছে কিনা চেক করুন",
|
"Check for updates": "নতুন আপডেট আছে কিনা চেক করুন",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "একটি csv ফাইল নির্বাচন করার জন্য এখানে ক্লিক করুন",
|
"Click here to select a csv file.": "একটি csv ফাইল নির্বাচন করার জন্য এখানে ক্লিক করুন",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "ডকুমেন্টগুলো নির্বাচন করার জন্য এখানে ক্লিক করুন",
|
"Click here to select documents.": "ডকুমেন্টগুলো নির্বাচন করার জন্য এখানে ক্লিক করুন",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "এখানে ক্লিক করুন",
|
"click here.": "এখানে ক্লিক করুন",
|
||||||
"Click on the user role button to change a user's role.": "ইউজারের পদবি পরিবর্তন করার জন্য ইউজারের পদবি বাটনে ক্লিক করুন",
|
"Click on the user role button to change a user's role.": "ইউজারের পদবি পরিবর্তন করার জন্য ইউজারের পদবি বাটনে ক্লিক করুন",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI Base URL",
|
"ComfyUI Base URL": "ComfyUI Base URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI Base URL আবশ্যক।",
|
"ComfyUI Base URL is required.": "ComfyUI Base URL আবশ্যক।",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "কমান্ড",
|
"Command": "কমান্ড",
|
||||||
"Concurrent Requests": "সমকালীন অনুরোধ",
|
"Concurrent Requests": "সমকালীন অনুরোধ",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "ডেটাবেজ",
|
"Database": "ডেটাবেজ",
|
||||||
"December": "ডেসেম্বর",
|
"December": "ডেসেম্বর",
|
||||||
"Default": "ডিফল্ট",
|
"Default": "ডিফল্ট",
|
||||||
"Default (Automatic1111)": "ডিফল্ট (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "ডিফল্ট (SentenceTransformers)",
|
"Default (SentenceTransformers)": "ডিফল্ট (SentenceTransformers)",
|
||||||
"Default Model": "ডিফল্ট মডেল",
|
"Default Model": "ডিফল্ট মডেল",
|
||||||
"Default model updated": "ডিফল্ট মডেল আপডেট হয়েছে",
|
"Default model updated": "ডিফল্ট মডেল আপডেট হয়েছে",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "ডকুমেন্ট",
|
"Document": "ডকুমেন্ট",
|
||||||
"Document Settings": "ডকুমেন্ট সেটিংসমূহ",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "ডকুমেন্টসমূহ",
|
"Documents": "ডকুমেন্টসমূহ",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "কোন এক্সটার্নাল কানেকশন তৈরি করে না, এবং আপনার ডেটা আর লোকালি হোস্টেড সার্ভারেই নিরাপদে থাকে।",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "কোন এক্সটার্নাল কানেকশন তৈরি করে না, এবং আপনার ডেটা আর লোকালি হোস্টেড সার্ভারেই নিরাপদে থাকে।",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "ইমেজ ইমেবডিং মডেল",
|
"Embedding Model": "ইমেজ ইমেবডিং মডেল",
|
||||||
"Embedding Model Engine": "ইমেজ ইমেবডিং মডেল ইঞ্জিন",
|
"Embedding Model Engine": "ইমেজ ইমেবডিং মডেল ইঞ্জিন",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "ইমেজ ইমেবডিং মডেল সেট করা হয়েছে - \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "ইমেজ ইমেবডিং মডেল সেট করা হয়েছে - \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "চ্যাট হিস্টোরি চালু করুন",
|
|
||||||
"Enable Community Sharing": "সম্প্রদায় শেয়ারকরণ সক্ষম করুন",
|
"Enable Community Sharing": "সম্প্রদায় শেয়ারকরণ সক্ষম করুন",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "নতুন সাইনআপ চালু করুন",
|
"Enable New Sign Ups": "নতুন সাইনআপ চালু করুন",
|
||||||
"Enable Web Search": "ওয়েব অনুসন্ধান সক্ষম করুন",
|
"Enable Web Search": "ওয়েব অনুসন্ধান সক্ষম করুন",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "গুগল পিএসই ইঞ্জিন আইডি লিখুন",
|
"Enter Google PSE Engine Id": "গুগল পিএসই ইঞ্জিন আইডি লিখুন",
|
||||||
"Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)",
|
"Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)",
|
||||||
"Enter language codes": "ল্যাঙ্গুয়েজ কোড লিখুন",
|
"Enter language codes": "ল্যাঙ্গুয়েজ কোড লিখুন",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "মডেল ট্যাগ লিখুন (e.g. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "মডেল ট্যাগ লিখুন (e.g. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "ধাপের সংখ্যা দিন (যেমন: 50)",
|
"Enter Number of Steps (e.g. 50)": "ধাপের সংখ্যা দিন (যেমন: 50)",
|
||||||
"Enter Score": "স্কোর দিন",
|
"Enter Score": "স্কোর দিন",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "OpenWebUI কমিউনিটিকর্তৃক নির্মিত",
|
"Made by OpenWebUI Community": "OpenWebUI কমিউনিটিকর্তৃক নির্মিত",
|
||||||
"Make sure to enclose them with": "এটা দিয়ে বন্ধনী দিতে ভুলবেন না",
|
"Make sure to enclose them with": "এটা দিয়ে বন্ধনী দিতে ভুলবেন না",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "মডেলসমূহ ব্যবস্থাপনা করুন",
|
"Manage Models": "মডেলসমূহ ব্যবস্থাপনা করুন",
|
||||||
"Manage Ollama Models": "Ollama মডেলসূহ ব্যবস্থাপনা করুন",
|
"Manage Ollama Models": "Ollama মডেলসূহ ব্যবস্থাপনা করুন",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "আপনার লিঙ্ক তৈরি করার পরে আপনার পাঠানো বার্তাগুলি শেয়ার করা হবে না। ইউআরএল ব্যবহারকারীরা শেয়ার করা চ্যাট দেখতে পারবেন।",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "আপনার লিঙ্ক তৈরি করার পরে আপনার পাঠানো বার্তাগুলি শেয়ার করা হবে না। ইউআরএল ব্যবহারকারীরা শেয়ার করা চ্যাট দেখতে পারবেন।",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Minimum Score",
|
"Minimum Score": "Minimum Score",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "ওহ, মনে হচ্ছে ইউআরএলটা ইনভ্যালিড। দয়া করে আর চেক করে চেষ্টা করুন।",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "ওহ, মনে হচ্ছে ইউআরএলটা ইনভ্যালিড। দয়া করে আর চেক করে চেষ্টা করুন।",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "আপনি একটা আনসাপোর্টেড পদ্ধতি (শুধু ফ্রন্টএন্ড) ব্যবহার করছেন। দয়া করে WebUI ব্যাকএন্ড থেকে চালনা করুন।",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "আপনি একটা আনসাপোর্টেড পদ্ধতি (শুধু ফ্রন্টএন্ড) ব্যবহার করছেন। দয়া করে WebUI ব্যাকএন্ড থেকে চালনা করুন।",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "নতুন চ্যাট খুলুন",
|
"Open new chat": "নতুন চ্যাট খুলুন",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "একটি বেস মডেল নির্বাচন করুন",
|
"Select a base model": "একটি বেস মডেল নির্বাচন করুন",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "একটি মডেল নির্বাচন করুন",
|
|
||||||
"Select a model": "একটি মডেল নির্বাচন করুন",
|
"Select a model": "একটি মডেল নির্বাচন করুন",
|
||||||
"Select a pipeline": "একটি পাইপলাইন নির্বাচন করুন",
|
"Select a pipeline": "একটি পাইপলাইন নির্বাচন করুন",
|
||||||
"Select a pipeline url": "একটি পাইপলাইন URL নির্বাচন করুন",
|
"Select a pipeline url": "একটি পাইপলাইন URL নির্বাচন করুন",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
|
"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "মডেল নির্বাচন করুন",
|
"Select model": "মডেল নির্বাচন করুন",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "নির্বাচিত মডেল(গুলি) চিত্র ইনপুট সমর্থন করে না",
|
"Selected model(s) do not support image inputs": "নির্বাচিত মডেল(গুলি) চিত্র ইনপুট সমর্থন করে না",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "কন্ঠস্বর নির্ধারণ করুন",
|
"Set Voice": "কন্ঠস্বর নির্ধারণ করুন",
|
||||||
"Settings": "সেটিংসমূহ",
|
"Settings": "সেটিংসমূহ",
|
||||||
"Settings saved successfully!": "সেটিংগুলো সফলভাবে সংরক্ষিত হয়েছে",
|
"Settings saved successfully!": "সেটিংগুলো সফলভাবে সংরক্ষিত হয়েছে",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "শেয়ার করুন",
|
"Share": "শেয়ার করুন",
|
||||||
"Share Chat": "চ্যাট শেয়ার করুন",
|
"Share Chat": "চ্যাট শেয়ার করুন",
|
||||||
"Share to OpenWebUI Community": "OpenWebUI কমিউনিটিতে শেয়ার করুন",
|
"Share to OpenWebUI Community": "OpenWebUI কমিউনিটিতে শেয়ার করুন",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "আরও বলুন:",
|
"Tell us more:": "আরও বলুন:",
|
||||||
"Temperature": "তাপমাত্রা",
|
"Temperature": "তাপমাত্রা",
|
||||||
"Template": "টেম্পলেট",
|
"Template": "টেম্পলেট",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "লেখা সম্পন্নকরণ",
|
"Text Completion": "লেখা সম্পন্নকরণ",
|
||||||
"Text-to-Speech Engine": "টেক্সট-টু-স্পিচ ইঞ্জিন",
|
"Text-to-Speech Engine": "টেক্সট-টু-স্পিচ ইঞ্জিন",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "এটা নিশ্চিত করে যে, আপনার গুরুত্বপূর্ণ আলোচনা নিরাপদে আপনার ব্যাকএন্ড ডেটাবেজে সংরক্ষিত আছে। ধন্যবাদ!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "এটা নিশ্চিত করে যে, আপনার গুরুত্বপূর্ণ আলোচনা নিরাপদে আপনার ব্যাকএন্ড ডেটাবেজে সংরক্ষিত আছে। ধন্যবাদ!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "এই সেটিং অন্যন্য ব্রাউজার বা ডিভাইসের সাথে সিঙ্ক্রোনাইজ নয় না।",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "পুঙ্খানুপুঙ্খ ব্যাখ্যা",
|
"Thorough explanation": "পুঙ্খানুপুঙ্খ ব্যাখ্যা",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "ওয়েব",
|
"Web": "ওয়েব",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "ওয়েব লোডার সেটিংস",
|
"Web Loader Settings": "ওয়েব লোডার সেটিংস",
|
||||||
"Web Params": "ওয়েব প্যারামিটারসমূহ",
|
|
||||||
"Web Search": "ওয়েব অনুসন্ধান",
|
"Web Search": "ওয়েব অনুসন্ধান",
|
||||||
"Web Search Engine": "ওয়েব সার্চ ইঞ্জিন",
|
"Web Search Engine": "ওয়েব সার্চ ইঞ্জিন",
|
||||||
"Webhook URL": "ওয়েবহুক URL",
|
"Webhook URL": "ওয়েবহুক URL",
|
||||||
"WebUI Settings": "WebUI সেটিংসমূহ",
|
"WebUI Settings": "WebUI সেটিংসমূহ",
|
||||||
"WebUI will make requests to": "WebUI যেখানে রিকোয়েস্ট পাঠাবে",
|
"WebUI will make requests to": "WebUI যেখানে রিকোয়েস্ট পাঠাবে",
|
||||||
"What’s New in": "এতে নতুন কী",
|
"What’s New in": "এতে নতুন কী",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "যদি হিস্টোরি বন্ধ থাকে তাহলে এই ব্রাউজারের নতুন চ্যাটগুলো আপনার কোন ডিভাইসের হিস্টোরিতেই দেখা যাবে না।",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "ওয়ার্কস্পেস",
|
"Workspace": "ওয়ার্কস্পেস",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Tots els usuaris",
|
"All Users": "Tots els usuaris",
|
||||||
"Allow": "Permetre",
|
"Allow": "Permetre",
|
||||||
"Allow Chat Deletion": "Permetre la supressió del xat",
|
"Allow Chat Deletion": "Permetre la supressió del xat",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Permetre veus no locals",
|
"Allow non-local voices": "Permetre veus no locals",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Permetre la ubicació de l'usuari",
|
"Allow User Location": "Permetre la ubicació de l'usuari",
|
||||||
"Allow Voice Interruption in Call": "Permetre la interrupció de la veu en una trucada",
|
"Allow Voice Interruption in Call": "Permetre la interrupció de la veu en una trucada",
|
||||||
"alphanumeric characters and hyphens": "caràcters alfanumèrics i guions",
|
"alphanumeric characters and hyphens": "caràcters alfanumèrics i guions",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Les preferències d'àudio s'han actualitzat correctament",
|
"Audio settings updated successfully": "Les preferències d'àudio s'han actualitzat correctament",
|
||||||
"August": "Agost",
|
"August": "Agost",
|
||||||
"Auto-playback response": "Reproduir la resposta automàticament",
|
"Auto-playback response": "Reproduir la resposta automàticament",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "Cadena d'autenticació de l'API d'AUTOMATIC1111",
|
"AUTOMATIC1111 Api Auth String": "Cadena d'autenticació de l'API d'AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL": "URL Base d'AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL Base d'AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "Es requereix l'URL Base d'AUTOMATIC1111.",
|
"AUTOMATIC1111 Base URL is required.": "Es requereix l'URL Base d'AUTOMATIC1111.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Chat Bubble UI",
|
"Chat Bubble UI": "Chat Bubble UI",
|
||||||
"Chat Controls": "Controls de xat",
|
"Chat Controls": "Controls de xat",
|
||||||
"Chat direction": "Direcció del xat",
|
"Chat direction": "Direcció del xat",
|
||||||
"Chat History": "Històric del xat",
|
|
||||||
"Chat History is off for this browser.": "L'historic del xat està desactivat per a aquest navegador.",
|
|
||||||
"Chats": "Xats",
|
"Chats": "Xats",
|
||||||
"Check Again": "Comprovar-ho de nou",
|
"Check Again": "Comprovar-ho de nou",
|
||||||
"Check for updates": "Comprovar si hi ha actualitzacions",
|
"Check for updates": "Comprovar si hi ha actualitzacions",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Clica aquí per seleccionar un fitxer csv.",
|
"Click here to select a csv file.": "Clica aquí per seleccionar un fitxer csv.",
|
||||||
"Click here to select a py file.": "Clica aquí per seleccionar un fitxer py.",
|
"Click here to select a py file.": "Clica aquí per seleccionar un fitxer py.",
|
||||||
"Click here to select documents.": "Clica aquí per seleccionar documents.",
|
"Click here to select documents.": "Clica aquí per seleccionar documents.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "clica aquí.",
|
"click here.": "clica aquí.",
|
||||||
"Click on the user role button to change a user's role.": "Clica sobre el botó de rol d'usuari per canviar el rol d'un usuari.",
|
"Click on the user role button to change a user's role.": "Clica sobre el botó de rol d'usuari per canviar el rol d'un usuari.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permís d'escriptura al porta-retalls denegat. Comprova els ajustos de navegador per donar l'accés necessari.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permís d'escriptura al porta-retalls denegat. Comprova els ajustos de navegador per donar l'accés necessari.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL base de ComfyUI",
|
"ComfyUI Base URL": "URL base de ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "L'URL base de ComfyUI és obligatòria.",
|
"ComfyUI Base URL is required.": "L'URL base de ComfyUI és obligatòria.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Comanda",
|
"Command": "Comanda",
|
||||||
"Concurrent Requests": "Peticions simultànies",
|
"Concurrent Requests": "Peticions simultànies",
|
||||||
"Confirm": "Confirmar",
|
"Confirm": "Confirmar",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Base de dades",
|
"Database": "Base de dades",
|
||||||
"December": "Desembre",
|
"December": "Desembre",
|
||||||
"Default": "Per defecte",
|
"Default": "Per defecte",
|
||||||
"Default (Automatic1111)": "Per defecte (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Per defecte (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Per defecte (SentenceTransformers)",
|
||||||
"Default Model": "Model per defecte",
|
"Default Model": "Model per defecte",
|
||||||
"Default model updated": "Model per defecte actualitzat",
|
"Default model updated": "Model per defecte actualitzat",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "No instal·lis funcions de fonts en què no confiïs plenament.",
|
"Do not install functions from sources you do not fully trust.": "No instal·lis funcions de fonts en què no confiïs plenament.",
|
||||||
"Do not install tools from sources you do not fully trust.": "No instal·lis eines de fonts en què no confiïs plenament.",
|
"Do not install tools from sources you do not fully trust.": "No instal·lis eines de fonts en què no confiïs plenament.",
|
||||||
"Document": "Document",
|
"Document": "Document",
|
||||||
"Document Settings": "Preferències de documents",
|
|
||||||
"Documentation": "Documentació",
|
"Documentation": "Documentació",
|
||||||
"Documents": "Documents",
|
"Documents": "Documents",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "no realitza connexions externes, i les teves dades romanen segures al teu servidor allotjat localment.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "no realitza connexions externes, i les teves dades romanen segures al teu servidor allotjat localment.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Model d'incrustació",
|
"Embedding Model": "Model d'incrustació",
|
||||||
"Embedding Model Engine": "Motor de model d'incrustació",
|
"Embedding Model Engine": "Motor de model d'incrustació",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Activar l'historial de xats",
|
|
||||||
"Enable Community Sharing": "Activar l'ús compartit amb la comunitat",
|
"Enable Community Sharing": "Activar l'ús compartit amb la comunitat",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Permetre nous registres",
|
"Enable New Sign Ups": "Permetre nous registres",
|
||||||
"Enable Web Search": "Activar la cerca web",
|
"Enable Web Search": "Activar la cerca web",
|
||||||
"Enabled": "Habilitat",
|
"Enabled": "Habilitat",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Introdueix l'identificador del motor PSE de Google",
|
"Enter Google PSE Engine Id": "Introdueix l'identificador del motor PSE de Google",
|
||||||
"Enter Image Size (e.g. 512x512)": "Introdueix la mida de la imatge (p. ex. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Introdueix la mida de la imatge (p. ex. 512x512)",
|
||||||
"Enter language codes": "Introdueix els codis de llenguatge",
|
"Enter language codes": "Introdueix els codis de llenguatge",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Introdueix el nombre de passos (p. ex. 50)",
|
"Enter Number of Steps (e.g. 50)": "Introdueix el nombre de passos (p. ex. 50)",
|
||||||
"Enter Score": "Introdueix la puntuació",
|
"Enter Score": "Introdueix la puntuació",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Creat per la Comunitat OpenWebUI",
|
"Made by OpenWebUI Community": "Creat per la Comunitat OpenWebUI",
|
||||||
"Make sure to enclose them with": "Assegura't d'envoltar-los amb",
|
"Make sure to enclose them with": "Assegura't d'envoltar-los amb",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Gestionar",
|
"Manage": "Gestionar",
|
||||||
"Manage Models": "Gestionar els models",
|
"Manage Models": "Gestionar els models",
|
||||||
"Manage Ollama Models": "Gestionar els models Ollama",
|
"Manage Ollama Models": "Gestionar els models Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Memòria eliminada correctament",
|
"Memory cleared successfully": "Memòria eliminada correctament",
|
||||||
"Memory deleted successfully": "Memòria eliminada correctament",
|
"Memory deleted successfully": "Memòria eliminada correctament",
|
||||||
"Memory updated successfully": "Memòria actualitzada correctament",
|
"Memory updated successfully": "Memòria actualitzada correctament",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Els missatges enviats després de crear el teu enllaç no es compartiran. Els usuaris amb l'URL podran veure el xat compartit.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Els missatges enviats després de crear el teu enllaç no es compartiran. Els usuaris amb l'URL podran veure el xat compartit.",
|
||||||
"Min P": "Min P",
|
"Min P": "Min P",
|
||||||
"Minimum Score": "Puntuació mínima",
|
"Minimum Score": "Puntuació mínima",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ui! Sembla que l'URL no és vàlida. Si us plau, revisa-la i torna-ho a provar.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ui! Sembla que l'URL no és vàlida. Si us plau, revisa-la i torna-ho a provar.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Ui! Hi ha hagut un error en la resposta anterior. Torna a provar-ho o contacta amb un administrador",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Ui! Hi ha hagut un error en la resposta anterior. Torna a provar-ho o contacta amb un administrador",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ui! Estàs utilitzant un mètode no suportat (només frontend). Si us plau, serveix la WebUI des del backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ui! Estàs utilitzant un mètode no suportat (només frontend). Si us plau, serveix la WebUI des del backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Obre un xat nou",
|
"Open new chat": "Obre un xat nou",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La versió d'Open WebUI (v{{OPEN_WEBUI_VERSION}}) és inferior a la versió requerida (v{{REQUIRED_VERSION}})",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La versió d'Open WebUI (v{{OPEN_WEBUI_VERSION}}) és inferior a la versió requerida (v{{REQUIRED_VERSION}})",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "Seleccionar un model base",
|
"Select a base model": "Seleccionar un model base",
|
||||||
"Select a engine": "Seleccionar un motor",
|
"Select a engine": "Seleccionar un motor",
|
||||||
"Select a function": "Seleccionar una funció",
|
"Select a function": "Seleccionar una funció",
|
||||||
"Select a mode": "Seleccionar un mode",
|
|
||||||
"Select a model": "Seleccionar un model",
|
"Select a model": "Seleccionar un model",
|
||||||
"Select a pipeline": "Seleccionar una Pipeline",
|
"Select a pipeline": "Seleccionar una Pipeline",
|
||||||
"Select a pipeline url": "Seleccionar l'URL d'una Pipeline",
|
"Select a pipeline url": "Seleccionar l'URL d'una Pipeline",
|
||||||
"Select a tool": "Seleccionar una eina",
|
"Select a tool": "Seleccionar una eina",
|
||||||
"Select an Ollama instance": "Seleccionar una instància d'Ollama",
|
"Select an Ollama instance": "Seleccionar una instància d'Ollama",
|
||||||
"Select Documents": "Seleccionar documents",
|
"Select Documents": "Seleccionar documents",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Seleccionar un model",
|
"Select model": "Seleccionar un model",
|
||||||
"Select only one model to call": "Seleccionar només un model per trucar",
|
"Select only one model to call": "Seleccionar només un model per trucar",
|
||||||
"Selected model(s) do not support image inputs": "El(s) model(s) seleccionats no admeten l'entrada d'imatges",
|
"Selected model(s) do not support image inputs": "El(s) model(s) seleccionats no admeten l'entrada d'imatges",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "Establir la veu",
|
"Set Voice": "Establir la veu",
|
||||||
"Settings": "Preferències",
|
"Settings": "Preferències",
|
||||||
"Settings saved successfully!": "Les preferències s'han desat correctament",
|
"Settings saved successfully!": "Les preferències s'han desat correctament",
|
||||||
"Settings updated successfully": "Les preferències s'han actualitzat correctament",
|
|
||||||
"Share": "Compartir",
|
"Share": "Compartir",
|
||||||
"Share Chat": "Compartir el xat",
|
"Share Chat": "Compartir el xat",
|
||||||
"Share to OpenWebUI Community": "Compartir amb la comunitat OpenWebUI",
|
"Share to OpenWebUI Community": "Compartir amb la comunitat OpenWebUI",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "Dona'ns més informació:",
|
"Tell us more:": "Dona'ns més informació:",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Plantilla",
|
"Template": "Plantilla",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Completament de text",
|
"Text Completion": "Completament de text",
|
||||||
"Text-to-Speech Engine": "Motor de text a veu",
|
"Text-to-Speech Engine": "Motor de text a veu",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Aquesta acció no es pot desfer. Vols continuar?",
|
"This action cannot be undone. Do you wish to continue?": "Aquesta acció no es pot desfer. Vols continuar?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Això assegura que les teves converses valuoses queden desades de manera segura a la teva base de dades. Gràcies!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Això assegura que les teves converses valuoses queden desades de manera segura a la teva base de dades. Gràcies!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Aquesta és una funció experimental, és possible que no funcioni com s'espera i està subjecta a canvis en qualsevol moment.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Aquesta és una funció experimental, és possible que no funcioni com s'espera i està subjecta a canvis en qualsevol moment.",
|
||||||
"This setting does not sync across browsers or devices.": "Aquesta preferència no es sincronitza entre navegadors ni dispositius.",
|
|
||||||
"This will delete": "Això eliminarà",
|
"This will delete": "Això eliminarà",
|
||||||
"Thorough explanation": "Explicació en detall",
|
"Thorough explanation": "Explicació en detall",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "Web API",
|
"Web API": "Web API",
|
||||||
"Web Loader Settings": "Preferències del carregador web",
|
"Web Loader Settings": "Preferències del carregador web",
|
||||||
"Web Params": "Paràmetres web",
|
|
||||||
"Web Search": "Cerca la web",
|
"Web Search": "Cerca la web",
|
||||||
"Web Search Engine": "Motor de cerca de la web",
|
"Web Search Engine": "Motor de cerca de la web",
|
||||||
"Webhook URL": "URL del webhook",
|
"Webhook URL": "URL del webhook",
|
||||||
"WebUI Settings": "Preferències de WebUI",
|
"WebUI Settings": "Preferències de WebUI",
|
||||||
"WebUI will make requests to": "WebUI farà peticions a",
|
"WebUI will make requests to": "WebUI farà peticions a",
|
||||||
"What’s New in": "Què hi ha de nou a",
|
"What’s New in": "Què hi ha de nou a",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quan l'historial està desactivat, els nous xats en aquest navegador no apareixeran en el teu historial en cap dels teus dispositius.",
|
|
||||||
"Whisper (Local)": "Whisper (local)",
|
"Whisper (Local)": "Whisper (local)",
|
||||||
"Widescreen Mode": "Mode de pantalla ampla",
|
"Widescreen Mode": "Mode de pantalla ampla",
|
||||||
"Workspace": "Espai de treball",
|
"Workspace": "Espai de treball",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Ang tanan nga mga tiggamit",
|
"All Users": "Ang tanan nga mga tiggamit",
|
||||||
"Allow": "Sa pagtugot",
|
"Allow": "Sa pagtugot",
|
||||||
"Allow Chat Deletion": "Tugoti nga mapapas ang mga chat",
|
"Allow Chat Deletion": "Tugoti nga mapapas ang mga chat",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "alphanumeric nga mga karakter ug hyphen",
|
"alphanumeric characters and hyphens": "alphanumeric nga mga karakter ug hyphen",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "",
|
"August": "",
|
||||||
"Auto-playback response": "Autoplay nga tubag",
|
"Auto-playback response": "Autoplay nga tubag",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "Base URL AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "Base URL AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "Ang AUTOMATIC1111 base URL gikinahanglan.",
|
"AUTOMATIC1111 Base URL is required.": "Ang AUTOMATIC1111 base URL gikinahanglan.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "",
|
"Chat Bubble UI": "",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "",
|
"Chat direction": "",
|
||||||
"Chat History": "Kasaysayan sa chat",
|
|
||||||
"Chat History is off for this browser.": "Ang kasaysayan sa chat gi-disable alang niini nga browser.",
|
|
||||||
"Chats": "Mga panaghisgot",
|
"Chats": "Mga panaghisgot",
|
||||||
"Check Again": "Susiha pag-usab",
|
"Check Again": "Susiha pag-usab",
|
||||||
"Check for updates": "Susiha ang mga update",
|
"Check for updates": "Susiha ang mga update",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "",
|
"Click here to select a csv file.": "",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Pag-klik dinhi aron mapili ang mga dokumento.",
|
"Click here to select documents.": "Pag-klik dinhi aron mapili ang mga dokumento.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "I-klik dinhi.",
|
"click here.": "I-klik dinhi.",
|
||||||
"Click on the user role button to change a user's role.": "I-klik ang User Role button aron usbon ang role sa user.",
|
"Click on the user role button to change a user's role.": "I-klik ang User Role button aron usbon ang role sa user.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "",
|
"ComfyUI": "",
|
||||||
"ComfyUI Base URL": "",
|
"ComfyUI Base URL": "",
|
||||||
"ComfyUI Base URL is required.": "",
|
"ComfyUI Base URL is required.": "",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Pag-order",
|
"Command": "Pag-order",
|
||||||
"Concurrent Requests": "",
|
"Concurrent Requests": "",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Database",
|
"Database": "Database",
|
||||||
"December": "",
|
"December": "",
|
||||||
"Default": "Pinaagi sa default",
|
"Default": "Pinaagi sa default",
|
||||||
"Default (Automatic1111)": "Default (Awtomatiko1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "",
|
"Default (SentenceTransformers)": "",
|
||||||
"Default Model": "",
|
"Default Model": "",
|
||||||
"Default model updated": "Gi-update nga default template",
|
"Default model updated": "Gi-update nga default template",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Dokumento",
|
"Document": "Dokumento",
|
||||||
"Document Settings": "Mga Setting sa Dokumento",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "Mga dokumento",
|
"Documents": "Mga dokumento",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "wala maghimo ug eksternal nga koneksyon, ug ang imong data nagpabiling luwas sa imong lokal nga host server.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "wala maghimo ug eksternal nga koneksyon, ug ang imong data nagpabiling luwas sa imong lokal nga host server.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "",
|
"Embedding Model": "",
|
||||||
"Embedding Model Engine": "",
|
"Embedding Model Engine": "",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "",
|
"Embedding model set to \"{{embedding_model}}\"": "",
|
||||||
"Enable Chat History": "I-enable ang kasaysayan sa chat",
|
|
||||||
"Enable Community Sharing": "",
|
"Enable Community Sharing": "",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "I-enable ang bag-ong mga rehistro",
|
"Enable New Sign Ups": "I-enable ang bag-ong mga rehistro",
|
||||||
"Enable Web Search": "",
|
"Enable Web Search": "",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "",
|
"Enter Google PSE Engine Id": "",
|
||||||
"Enter Image Size (e.g. 512x512)": "Pagsulod sa gidak-on sa hulagway (pananglitan 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Pagsulod sa gidak-on sa hulagway (pananglitan 512x512)",
|
||||||
"Enter language codes": "",
|
"Enter language codes": "",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Pagsulod sa template tag (e.g. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Pagsulod sa template tag (e.g. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Pagsulod sa gidaghanon sa mga lakang (e.g. 50)",
|
"Enter Number of Steps (e.g. 50)": "Pagsulod sa gidaghanon sa mga lakang (e.g. 50)",
|
||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "",
|
"LTR": "",
|
||||||
"Made by OpenWebUI Community": "Gihimo sa komunidad sa OpenWebUI",
|
"Made by OpenWebUI Community": "Gihimo sa komunidad sa OpenWebUI",
|
||||||
"Make sure to enclose them with": "Siguruha nga palibutan sila",
|
"Make sure to enclose them with": "Siguruha nga palibutan sila",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "Pagdumala sa mga templates",
|
"Manage Models": "Pagdumala sa mga templates",
|
||||||
"Manage Ollama Models": "Pagdumala sa mga modelo sa Ollama",
|
"Manage Ollama Models": "Pagdumala sa mga modelo sa Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "",
|
"Minimum Score": "",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! ",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! ",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! ",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! ",
|
||||||
"Open AI (Dall-E)": "Buksan ang AI (Dall-E)",
|
|
||||||
"Open new chat": "Ablihi ang bag-ong diskusyon",
|
"Open new chat": "Ablihi ang bag-ong diskusyon",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "",
|
"OpenAI": "",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "",
|
"Select a base model": "",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Pagpili og mode",
|
|
||||||
"Select a model": "Pagpili og modelo",
|
"Select a model": "Pagpili og modelo",
|
||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Pagpili usa ka pananglitan sa Ollama",
|
"Select an Ollama instance": "Pagpili usa ka pananglitan sa Ollama",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Pagpili og modelo",
|
"Select model": "Pagpili og modelo",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Ibutang ang tingog",
|
"Set Voice": "Ibutang ang tingog",
|
||||||
"Settings": "Mga setting",
|
"Settings": "Mga setting",
|
||||||
"Settings saved successfully!": "Malampuson nga na-save ang mga setting!",
|
"Settings saved successfully!": "Malampuson nga na-save ang mga setting!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "",
|
"Share": "",
|
||||||
"Share Chat": "",
|
"Share Chat": "",
|
||||||
"Share to OpenWebUI Community": "Ipakigbahin sa komunidad sa OpenWebUI",
|
"Share to OpenWebUI Community": "Ipakigbahin sa komunidad sa OpenWebUI",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "",
|
"Tell us more:": "",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Modelo",
|
"Template": "Modelo",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Pagkompleto sa teksto",
|
"Text Completion": "Pagkompleto sa teksto",
|
||||||
"Text-to-Speech Engine": "Text-to-speech nga makina",
|
"Text-to-Speech Engine": "Text-to-speech nga makina",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Kini nagsiguro nga ang imong bililhon nga mga panag-istoryahanay luwas nga natipig sa imong backend database. ",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Kini nagsiguro nga ang imong bililhon nga mga panag-istoryahanay luwas nga natipig sa imong backend database. ",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "Kini nga setting wala mag-sync tali sa mga browser o device.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "",
|
"Thorough explanation": "",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "",
|
"Web Loader Settings": "",
|
||||||
"Web Params": "",
|
|
||||||
"Web Search": "",
|
"Web Search": "",
|
||||||
"Web Search Engine": "",
|
"Web Search Engine": "",
|
||||||
"Webhook URL": "",
|
"Webhook URL": "",
|
||||||
"WebUI Settings": "Mga Setting sa WebUI",
|
"WebUI Settings": "Mga Setting sa WebUI",
|
||||||
"WebUI will make requests to": "Ang WebUI maghimo mga hangyo sa",
|
"WebUI will make requests to": "Ang WebUI maghimo mga hangyo sa",
|
||||||
"What’s New in": "Unsay bag-o sa",
|
"What’s New in": "Unsay bag-o sa",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kung ang kasaysayan gipalong, ang mga bag-ong chat sa kini nga browser dili makita sa imong kasaysayan sa bisan unsang mga aparato.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "",
|
"Workspace": "",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Alle Benutzer",
|
"All Users": "Alle Benutzer",
|
||||||
"Allow": "Erlauben",
|
"Allow": "Erlauben",
|
||||||
"Allow Chat Deletion": "Unterhaltungen löschen erlauben",
|
"Allow Chat Deletion": "Unterhaltungen löschen erlauben",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Nicht-lokale Stimmen erlauben",
|
"Allow non-local voices": "Nicht-lokale Stimmen erlauben",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Standort freigeben",
|
"Allow User Location": "Standort freigeben",
|
||||||
"Allow Voice Interruption in Call": "Unterbrechung durch Stimme im Anruf zulassen",
|
"Allow Voice Interruption in Call": "Unterbrechung durch Stimme im Anruf zulassen",
|
||||||
"alphanumeric characters and hyphens": "alphanumerische Zeichen und Bindestriche",
|
"alphanumeric characters and hyphens": "alphanumerische Zeichen und Bindestriche",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Audioeinstellungen erfolgreich aktualisiert",
|
"Audio settings updated successfully": "Audioeinstellungen erfolgreich aktualisiert",
|
||||||
"August": "August",
|
"August": "August",
|
||||||
"Auto-playback response": "Antwort automatisch abspielen",
|
"Auto-playback response": "Antwort automatisch abspielen",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111-API-Authentifizierungszeichenfolge",
|
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111-API-Authentifizierungszeichenfolge",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111-Basis-URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111-Basis-URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111-Basis-URL ist erforderlich.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111-Basis-URL ist erforderlich.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Chat Bubble UI",
|
"Chat Bubble UI": "Chat Bubble UI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Textrichtung",
|
"Chat direction": "Textrichtung",
|
||||||
"Chat History": "Unterhaltungsverlauf",
|
|
||||||
"Chat History is off for this browser.": "Unterhaltungsverlauf ist in diesem Browser deaktiviert.",
|
|
||||||
"Chats": "Unterhaltungen",
|
"Chats": "Unterhaltungen",
|
||||||
"Check Again": "Erneut überprüfen",
|
"Check Again": "Erneut überprüfen",
|
||||||
"Check for updates": "Nach Updates suchen",
|
"Check for updates": "Nach Updates suchen",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Klicken Sie zum Auswählen einer CSV-Datei hier.",
|
"Click here to select a csv file.": "Klicken Sie zum Auswählen einer CSV-Datei hier.",
|
||||||
"Click here to select a py file.": "Klicken Sie zum Auswählen einer py-Datei hier.",
|
"Click here to select a py file.": "Klicken Sie zum Auswählen einer py-Datei hier.",
|
||||||
"Click here to select documents.": "Klicken Sie zum Auswählen von Dokumenten hier",
|
"Click here to select documents.": "Klicken Sie zum Auswählen von Dokumenten hier",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "hier klicken.",
|
"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 on the user role button to change a user's role.": "Klicken Sie auf die Benutzerrolle, um sie zu ändern.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Schreibberechtigung für die Zwischenablage verweigert. Bitte überprüfen Sie Ihre Browsereinstellungen, um den erforderlichen Zugriff zu erlauben.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Schreibberechtigung für die Zwischenablage verweigert. Bitte überprüfen Sie Ihre Browsereinstellungen, um den erforderlichen Zugriff zu erlauben.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI-Basis-URL",
|
"ComfyUI Base URL": "ComfyUI-Basis-URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI-Basis-URL wird benötigt.",
|
"ComfyUI Base URL is required.": "ComfyUI-Basis-URL wird benötigt.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Befehl",
|
"Command": "Befehl",
|
||||||
"Concurrent Requests": "Anzahl gleichzeitiger Anfragen",
|
"Concurrent Requests": "Anzahl gleichzeitiger Anfragen",
|
||||||
"Confirm": "Bestätigen",
|
"Confirm": "Bestätigen",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Datenbank",
|
"Database": "Datenbank",
|
||||||
"December": "Dezember",
|
"December": "Dezember",
|
||||||
"Default": "Standard",
|
"Default": "Standard",
|
||||||
"Default (Automatic1111)": "Standard (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
|
||||||
"Default Model": "Standardmodell",
|
"Default Model": "Standardmodell",
|
||||||
"Default model updated": "Standardmodell aktualisiert",
|
"Default model updated": "Standardmodell aktualisiert",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Dokument",
|
"Document": "Dokument",
|
||||||
"Document Settings": "Dokumenteinstellungen",
|
|
||||||
"Documentation": "Dokumentation",
|
"Documentation": "Dokumentation",
|
||||||
"Documents": "Dokumente",
|
"Documents": "Dokumente",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "stellt keine externen Verbindungen her, und Ihre Daten bleiben sicher auf Ihrem lokal gehosteten Server.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "stellt keine externen Verbindungen her, und Ihre Daten bleiben sicher auf Ihrem lokal gehosteten Server.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Embedding-Modell",
|
"Embedding Model": "Embedding-Modell",
|
||||||
"Embedding Model Engine": "Embedding-Modell-Engine",
|
"Embedding Model Engine": "Embedding-Modell-Engine",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Embedding-Modell auf \"{{embedding_model}}\" gesetzt",
|
"Embedding model set to \"{{embedding_model}}\"": "Embedding-Modell auf \"{{embedding_model}}\" gesetzt",
|
||||||
"Enable Chat History": "Unterhaltungshistorie aktivieren",
|
|
||||||
"Enable Community Sharing": "Community-Freigabe aktivieren",
|
"Enable Community Sharing": "Community-Freigabe aktivieren",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Registrierung erlauben",
|
"Enable New Sign Ups": "Registrierung erlauben",
|
||||||
"Enable Web Search": "Websuche aktivieren",
|
"Enable Web Search": "Websuche aktivieren",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Geben Sie die Google PSE-Engine-ID ein",
|
"Enter Google PSE Engine Id": "Geben Sie die Google PSE-Engine-ID ein",
|
||||||
"Enter Image Size (e.g. 512x512)": "Geben Sie die Bildgröße ein (z. B. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Geben Sie die Bildgröße ein (z. B. 512x512)",
|
||||||
"Enter language codes": "Geben Sie die Sprachcodes ein",
|
"Enter language codes": "Geben Sie die Sprachcodes ein",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Gebn Sie den Model-Tag ein",
|
"Enter model tag (e.g. {{modelTag}})": "Gebn Sie den Model-Tag ein",
|
||||||
"Enter Number of Steps (e.g. 50)": "Geben Sie die Anzahl an Schritten ein (z. B. 50)",
|
"Enter Number of Steps (e.g. 50)": "Geben Sie die Anzahl an Schritten ein (z. B. 50)",
|
||||||
"Enter Score": "Punktzahl eingeben",
|
"Enter Score": "Punktzahl eingeben",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Von der OpenWebUI-Community",
|
"Made by OpenWebUI Community": "Von der OpenWebUI-Community",
|
||||||
"Make sure to enclose them with": "Umschließe Variablen mit",
|
"Make sure to enclose them with": "Umschließe Variablen mit",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Verwalten",
|
"Manage": "Verwalten",
|
||||||
"Manage Models": "Modelle verwalten",
|
"Manage Models": "Modelle verwalten",
|
||||||
"Manage Ollama Models": "Ollama-Modelle verwalten",
|
"Manage Ollama Models": "Ollama-Modelle verwalten",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Erinnerung erfolgreich gelöscht",
|
"Memory cleared successfully": "Erinnerung erfolgreich gelöscht",
|
||||||
"Memory deleted successfully": "Erinnerung erfolgreich gelöscht",
|
"Memory deleted successfully": "Erinnerung erfolgreich gelöscht",
|
||||||
"Memory updated successfully": "Erinnerung erfolgreich aktualisiert",
|
"Memory updated successfully": "Erinnerung erfolgreich aktualisiert",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Nachrichten, die Sie nach der Erstellung Ihres Links senden, werden nicht geteilt. Nutzer mit der URL können die freigegebene Unterhaltung einsehen.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Nachrichten, die Sie nach der Erstellung Ihres Links senden, werden nicht geteilt. Nutzer mit der URL können die freigegebene Unterhaltung einsehen.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Mindestpunktzahl",
|
"Minimum Score": "Mindestpunktzahl",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppla! Es scheint, dass die URL ungültig ist. Bitte überprüfen Sie diese und versuchen Sie es erneut.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppla! Es scheint, dass die URL ungültig ist. Bitte überprüfen Sie diese und versuchen Sie es erneut.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Hoppla! Es gab einen Fehler in der vorherigen Antwort. Bitte versuchen Sie es erneut oder kontaktieren Sie den Administrator.",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Hoppla! Es gab einen Fehler in der vorherigen Antwort. Bitte versuchen Sie es erneut oder kontaktieren Sie den Administrator.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppla! Sie verwenden eine nicht unterstützte Methode (nur Frontend). Bitte stellen Sie die WebUI vom Backend bereit.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppla! Sie verwenden eine nicht unterstützte Methode (nur Frontend). Bitte stellen Sie die WebUI vom Backend bereit.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Neuen Chat öffnen",
|
"Open new chat": "Neuen Chat öffnen",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Die installierte Open-WebUI-Version (v{{OPEN_WEBUI_VERSION}}) ist niedriger als die erforderliche Version (v{{REQUIRED_VERSION}})",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Die installierte Open-WebUI-Version (v{{OPEN_WEBUI_VERSION}}) ist niedriger als die erforderliche Version (v{{REQUIRED_VERSION}})",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "Wählen Sie ein Basismodell",
|
"Select a base model": "Wählen Sie ein Basismodell",
|
||||||
"Select a engine": "Wählen Sie eine Engine",
|
"Select a engine": "Wählen Sie eine Engine",
|
||||||
"Select a function": "Wählen Sie eine Funktion",
|
"Select a function": "Wählen Sie eine Funktion",
|
||||||
"Select a mode": "Wählen Sie einen Modus",
|
|
||||||
"Select a model": "Wählen Sie ein Modell",
|
"Select a model": "Wählen Sie ein Modell",
|
||||||
"Select a pipeline": "Wählen Sie eine Pipeline",
|
"Select a pipeline": "Wählen Sie eine Pipeline",
|
||||||
"Select a pipeline url": "Wählen Sie eine Pipeline-URL",
|
"Select a pipeline url": "Wählen Sie eine Pipeline-URL",
|
||||||
"Select a tool": "Wählen Sie ein Werkzeug",
|
"Select a tool": "Wählen Sie ein Werkzeug",
|
||||||
"Select an Ollama instance": "Wählen Sie eine Ollama-Instanz",
|
"Select an Ollama instance": "Wählen Sie eine Ollama-Instanz",
|
||||||
"Select Documents": "Dokumente auswählen",
|
"Select Documents": "Dokumente auswählen",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Modell auswählen",
|
"Select model": "Modell auswählen",
|
||||||
"Select only one model to call": "Wählen Sie nur ein Modell zum Anrufen aus",
|
"Select only one model to call": "Wählen Sie nur ein Modell zum Anrufen aus",
|
||||||
"Selected model(s) do not support image inputs": "Ihre ausgewählten Modelle unterstützen keine Bildeingaben",
|
"Selected model(s) do not support image inputs": "Ihre ausgewählten Modelle unterstützen keine Bildeingaben",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Stimme festlegen",
|
"Set Voice": "Stimme festlegen",
|
||||||
"Settings": "Einstellungen",
|
"Settings": "Einstellungen",
|
||||||
"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!",
|
"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!",
|
||||||
"Settings updated successfully": "Einstellungen erfolgreich aktualisiert",
|
|
||||||
"Share": "Teilen",
|
"Share": "Teilen",
|
||||||
"Share Chat": "Unterhaltung teilen",
|
"Share Chat": "Unterhaltung teilen",
|
||||||
"Share to OpenWebUI Community": "Mit OpenWebUI Community teilen",
|
"Share to OpenWebUI Community": "Mit OpenWebUI Community teilen",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "Erzähl uns mehr",
|
"Tell us more:": "Erzähl uns mehr",
|
||||||
"Temperature": "Temperatur",
|
"Temperature": "Temperatur",
|
||||||
"Template": "Vorlage",
|
"Template": "Vorlage",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Textvervollständigung",
|
"Text Completion": "Textvervollständigung",
|
||||||
"Text-to-Speech Engine": "Text-zu-Sprache-Engine",
|
"Text-to-Speech Engine": "Text-zu-Sprache-Engine",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Diese Aktion kann nicht rückgängig gemacht werden. Möchten Sie fortfahren?",
|
"This action cannot be undone. Do you wish to continue?": "Diese Aktion kann nicht rückgängig gemacht werden. Möchten Sie fortfahren?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dies stellt sicher, dass Ihre wertvollen Unterhaltungen sicher in Ihrer Backend-Datenbank gespeichert werden. Vielen Dank!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dies stellt sicher, dass Ihre wertvollen Unterhaltungen sicher in Ihrer Backend-Datenbank gespeichert werden. Vielen Dank!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Dies ist eine experimentelle Funktion, sie funktioniert möglicherweise nicht wie erwartet und kann jederzeit geändert werden.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Dies ist eine experimentelle Funktion, sie funktioniert möglicherweise nicht wie erwartet und kann jederzeit geändert werden.",
|
||||||
"This setting does not sync across browsers or devices.": "Diese Einstellung wird nicht zwischen Browsern oder Geräten synchronisiert.",
|
|
||||||
"This will delete": "Dies löscht",
|
"This will delete": "Dies löscht",
|
||||||
"Thorough explanation": "Ausführliche Erklärung",
|
"Thorough explanation": "Ausführliche Erklärung",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "Web-API",
|
"Web API": "Web-API",
|
||||||
"Web Loader Settings": "Web Loader Einstellungen",
|
"Web Loader Settings": "Web Loader Einstellungen",
|
||||||
"Web Params": "Web Parameter",
|
|
||||||
"Web Search": "Websuche",
|
"Web Search": "Websuche",
|
||||||
"Web Search Engine": "Suchmaschine",
|
"Web Search Engine": "Suchmaschine",
|
||||||
"Webhook URL": "Webhook URL",
|
"Webhook URL": "Webhook URL",
|
||||||
"WebUI Settings": "WebUI-Einstellungen",
|
"WebUI Settings": "WebUI-Einstellungen",
|
||||||
"WebUI will make requests to": "WebUI sendet Anfragen an:",
|
"WebUI will make requests to": "WebUI sendet Anfragen an:",
|
||||||
"What’s New in": "Neuigkeiten von",
|
"What’s New in": "Neuigkeiten von",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Wenn der Verlauf deaktiviert ist, werden neue Unterhaltungen in diesem Browser nicht im Verlauf Ihrer anderen Geräte erscheinen.",
|
|
||||||
"Whisper (Local)": "Whisper (lokal)",
|
"Whisper (Local)": "Whisper (lokal)",
|
||||||
"Widescreen Mode": "Breitbildmodus",
|
"Widescreen Mode": "Breitbildmodus",
|
||||||
"Workspace": "Arbeitsbereich",
|
"Workspace": "Arbeitsbereich",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "All Users",
|
"All Users": "All Users",
|
||||||
"Allow": "Allow",
|
"Allow": "Allow",
|
||||||
"Allow Chat Deletion": "Allow Delete Chats",
|
"Allow Chat Deletion": "Allow Delete Chats",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "so alpha, many hyphen",
|
"alphanumeric characters and hyphens": "so alpha, many hyphen",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "",
|
"August": "",
|
||||||
"Auto-playback response": "Auto-playback response",
|
"Auto-playback response": "Auto-playback response",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Base URL is required.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Base URL is required.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "",
|
"Chat Bubble UI": "",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "",
|
"Chat direction": "",
|
||||||
"Chat History": "Chat History",
|
|
||||||
"Chat History is off for this browser.": "Chat History off for this browser. Such sadness.",
|
|
||||||
"Chats": "Chats",
|
"Chats": "Chats",
|
||||||
"Check Again": "Check Again",
|
"Check Again": "Check Again",
|
||||||
"Check for updates": "Check for updates",
|
"Check for updates": "Check for updates",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "",
|
"Click here to select a csv file.": "",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Click to select documents",
|
"Click here to select documents.": "Click to select documents",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "click here. Such click.",
|
"click here.": "click here. Such click.",
|
||||||
"Click on the user role button to change a user's role.": "Click user role button to change role.",
|
"Click on the user role button to change a user's role.": "Click user role button to change role.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "",
|
"ComfyUI": "",
|
||||||
"ComfyUI Base URL": "",
|
"ComfyUI Base URL": "",
|
||||||
"ComfyUI Base URL is required.": "",
|
"ComfyUI Base URL is required.": "",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Command",
|
"Command": "Command",
|
||||||
"Concurrent Requests": "",
|
"Concurrent Requests": "",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Database",
|
"Database": "Database",
|
||||||
"December": "",
|
"December": "",
|
||||||
"Default": "Default",
|
"Default": "Default",
|
||||||
"Default (Automatic1111)": "Default (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "",
|
"Default (SentenceTransformers)": "",
|
||||||
"Default Model": "",
|
"Default Model": "",
|
||||||
"Default model updated": "Default model much updated",
|
"Default model updated": "Default model much updated",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Document",
|
"Document": "Document",
|
||||||
"Document Settings": "Document Settings",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "Documents",
|
"Documents": "Documents",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "does not connect external, data stays safe locally.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "does not connect external, data stays safe locally.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "",
|
"Embedding Model": "",
|
||||||
"Embedding Model Engine": "",
|
"Embedding Model Engine": "",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "",
|
"Embedding model set to \"{{embedding_model}}\"": "",
|
||||||
"Enable Chat History": "Activate Chat Story",
|
|
||||||
"Enable Community Sharing": "",
|
"Enable Community Sharing": "",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Enable New Bark Ups",
|
"Enable New Sign Ups": "Enable New Bark Ups",
|
||||||
"Enable Web Search": "",
|
"Enable Web Search": "",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "",
|
"Enter Google PSE Engine Id": "",
|
||||||
"Enter Image Size (e.g. 512x512)": "Enter Size of Wow (e.g. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Enter Size of Wow (e.g. 512x512)",
|
||||||
"Enter language codes": "",
|
"Enter language codes": "",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Enter model doge tag (e.g. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Enter model doge tag (e.g. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Enter Number of Steps (e.g. 50)",
|
"Enter Number of Steps (e.g. 50)": "Enter Number of Steps (e.g. 50)",
|
||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "",
|
"LTR": "",
|
||||||
"Made by OpenWebUI Community": "Made by OpenWebUI Community",
|
"Made by OpenWebUI Community": "Made by OpenWebUI Community",
|
||||||
"Make sure to enclose them with": "Make sure to enclose them with",
|
"Make sure to enclose them with": "Make sure to enclose them with",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "Manage Wowdels",
|
"Manage Models": "Manage Wowdels",
|
||||||
"Manage Ollama Models": "Manage Ollama Wowdels",
|
"Manage Ollama Models": "Manage Ollama Wowdels",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "",
|
"Minimum Score": "",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Looks like the URL is invalid. Please double-check and try again.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Looks like the URL is invalid. Please double-check and try again.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Open new bark",
|
"Open new chat": "Open new bark",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "",
|
"OpenAI": "",
|
||||||
|
|
@ -538,13 +543,13 @@
|
||||||
"Select a base model": "",
|
"Select a base model": "",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Select a mode very choose",
|
|
||||||
"Select a model": "Select a model much choice",
|
"Select a model": "Select a model much choice",
|
||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Select an Ollama instance very choose",
|
"Select an Ollama instance": "Select an Ollama instance very choose",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Select model much choice",
|
"Select model": "Select model much choice",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
|
|
@ -566,7 +571,6 @@
|
||||||
"Set Voice": "Set Voice so speak",
|
"Set Voice": "Set Voice so speak",
|
||||||
"Settings": "Settings much settings",
|
"Settings": "Settings much settings",
|
||||||
"Settings saved successfully!": "Settings saved successfully! Very success!",
|
"Settings saved successfully!": "Settings saved successfully! Very success!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "",
|
"Share": "",
|
||||||
"Share Chat": "",
|
"Share Chat": "",
|
||||||
"Share to OpenWebUI Community": "Share to OpenWebUI Community much community",
|
"Share to OpenWebUI Community": "Share to OpenWebUI Community much community",
|
||||||
|
|
@ -602,6 +606,7 @@
|
||||||
"Tell us more:": "",
|
"Tell us more:": "",
|
||||||
"Temperature": "Temperature very temp",
|
"Temperature": "Temperature very temp",
|
||||||
"Template": "Template much template",
|
"Template": "Template much template",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Text Completion much complete",
|
"Text Completion": "Text Completion much complete",
|
||||||
"Text-to-Speech Engine": "Text-to-Speech Engine much speak",
|
"Text-to-Speech Engine": "Text-to-Speech Engine much speak",
|
||||||
"Tfs Z": "Tfs Z much Z",
|
"Tfs Z": "Tfs Z much Z",
|
||||||
|
|
@ -613,7 +618,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "This ensures that your valuable conversations are securely saved to your backend database. Thank you! Much secure!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "This ensures that your valuable conversations are securely saved to your backend database. Thank you! Much secure!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "This setting does not sync across browsers or devices. Very not sync.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "",
|
"Thorough explanation": "",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -694,14 +698,12 @@
|
||||||
"Web": "Web very web",
|
"Web": "Web very web",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "",
|
"Web Loader Settings": "",
|
||||||
"Web Params": "",
|
|
||||||
"Web Search": "",
|
"Web Search": "",
|
||||||
"Web Search Engine": "",
|
"Web Search Engine": "",
|
||||||
"Webhook URL": "",
|
"Webhook URL": "",
|
||||||
"WebUI Settings": "WebUI Settings much settings",
|
"WebUI Settings": "WebUI Settings much settings",
|
||||||
"WebUI will make requests to": "WebUI will make requests to much request",
|
"WebUI will make requests to": "WebUI will make requests to much request",
|
||||||
"What’s New in": "What’s New in much new",
|
"What’s New in": "What’s New in much new",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "When history is turned off, new chats on this browser won't appear in your history on any of your devices. Much history.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "",
|
"Workspace": "",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "",
|
"All Users": "",
|
||||||
"Allow": "",
|
"Allow": "",
|
||||||
"Allow Chat Deletion": "",
|
"Allow Chat Deletion": "",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "",
|
"alphanumeric characters and hyphens": "",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "",
|
"August": "",
|
||||||
"Auto-playback response": "",
|
"Auto-playback response": "",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "",
|
"AUTOMATIC1111 Base URL": "",
|
||||||
"AUTOMATIC1111 Base URL is required.": "",
|
"AUTOMATIC1111 Base URL is required.": "",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "",
|
"Chat Bubble UI": "",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "",
|
"Chat direction": "",
|
||||||
"Chat History": "",
|
|
||||||
"Chat History is off for this browser.": "",
|
|
||||||
"Chats": "",
|
"Chats": "",
|
||||||
"Check Again": "",
|
"Check Again": "",
|
||||||
"Check for updates": "",
|
"Check for updates": "",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "",
|
"Click here to select a csv file.": "",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "",
|
"Click here to select documents.": "",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "",
|
"click here.": "",
|
||||||
"Click on the user role button to change a user's role.": "",
|
"Click on the user role button to change a user's role.": "",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "",
|
"ComfyUI": "",
|
||||||
"ComfyUI Base URL": "",
|
"ComfyUI Base URL": "",
|
||||||
"ComfyUI Base URL is required.": "",
|
"ComfyUI Base URL is required.": "",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "",
|
"Command": "",
|
||||||
"Concurrent Requests": "",
|
"Concurrent Requests": "",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "",
|
"Database": "",
|
||||||
"December": "",
|
"December": "",
|
||||||
"Default": "",
|
"Default": "",
|
||||||
"Default (Automatic1111)": "",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "",
|
"Default (SentenceTransformers)": "",
|
||||||
"Default Model": "",
|
"Default Model": "",
|
||||||
"Default model updated": "",
|
"Default model updated": "",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "",
|
"Document": "",
|
||||||
"Document Settings": "",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "",
|
"Documents": "",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "",
|
"Embedding Model": "",
|
||||||
"Embedding Model Engine": "",
|
"Embedding Model Engine": "",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "",
|
"Embedding model set to \"{{embedding_model}}\"": "",
|
||||||
"Enable Chat History": "",
|
|
||||||
"Enable Community Sharing": "",
|
"Enable Community Sharing": "",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "",
|
"Enable New Sign Ups": "",
|
||||||
"Enable Web Search": "",
|
"Enable Web Search": "",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "",
|
"Enter Google PSE Engine Id": "",
|
||||||
"Enter Image Size (e.g. 512x512)": "",
|
"Enter Image Size (e.g. 512x512)": "",
|
||||||
"Enter language codes": "",
|
"Enter language codes": "",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "",
|
"Enter model tag (e.g. {{modelTag}})": "",
|
||||||
"Enter Number of Steps (e.g. 50)": "",
|
"Enter Number of Steps (e.g. 50)": "",
|
||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "",
|
"LTR": "",
|
||||||
"Made by OpenWebUI Community": "",
|
"Made by OpenWebUI Community": "",
|
||||||
"Make sure to enclose them with": "",
|
"Make sure to enclose them with": "",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "",
|
"Manage Models": "",
|
||||||
"Manage Ollama Models": "",
|
"Manage Ollama Models": "",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "",
|
"Minimum Score": "",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "",
|
||||||
"Open AI (Dall-E)": "",
|
|
||||||
"Open new chat": "",
|
"Open new chat": "",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "",
|
"OpenAI": "",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "",
|
"Select a base model": "",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "",
|
|
||||||
"Select a model": "",
|
"Select a model": "",
|
||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "",
|
"Select an Ollama instance": "",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "",
|
"Select model": "",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "",
|
"Set Voice": "",
|
||||||
"Settings": "",
|
"Settings": "",
|
||||||
"Settings saved successfully!": "",
|
"Settings saved successfully!": "",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "",
|
"Share": "",
|
||||||
"Share Chat": "",
|
"Share Chat": "",
|
||||||
"Share to OpenWebUI Community": "",
|
"Share to OpenWebUI Community": "",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "",
|
"Tell us more:": "",
|
||||||
"Temperature": "",
|
"Temperature": "",
|
||||||
"Template": "",
|
"Template": "",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "",
|
"Text Completion": "",
|
||||||
"Text-to-Speech Engine": "",
|
"Text-to-Speech Engine": "",
|
||||||
"Tfs Z": "",
|
"Tfs Z": "",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "",
|
"Thorough explanation": "",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "",
|
"Web": "",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "",
|
"Web Loader Settings": "",
|
||||||
"Web Params": "",
|
|
||||||
"Web Search": "",
|
"Web Search": "",
|
||||||
"Web Search Engine": "",
|
"Web Search Engine": "",
|
||||||
"Webhook URL": "",
|
"Webhook URL": "",
|
||||||
"WebUI Settings": "",
|
"WebUI Settings": "",
|
||||||
"WebUI will make requests to": "",
|
"WebUI will make requests to": "",
|
||||||
"What’s New in": "",
|
"What’s New in": "",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "",
|
"Workspace": "",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "",
|
"All Users": "",
|
||||||
"Allow": "",
|
"Allow": "",
|
||||||
"Allow Chat Deletion": "",
|
"Allow Chat Deletion": "",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "",
|
"alphanumeric characters and hyphens": "",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "",
|
"August": "",
|
||||||
"Auto-playback response": "",
|
"Auto-playback response": "",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "",
|
"AUTOMATIC1111 Base URL": "",
|
||||||
"AUTOMATIC1111 Base URL is required.": "",
|
"AUTOMATIC1111 Base URL is required.": "",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "",
|
"Chat Bubble UI": "",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "",
|
"Chat direction": "",
|
||||||
"Chat History": "",
|
|
||||||
"Chat History is off for this browser.": "",
|
|
||||||
"Chats": "",
|
"Chats": "",
|
||||||
"Check Again": "",
|
"Check Again": "",
|
||||||
"Check for updates": "",
|
"Check for updates": "",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "",
|
"Click here to select a csv file.": "",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "",
|
"Click here to select documents.": "",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "",
|
"click here.": "",
|
||||||
"Click on the user role button to change a user's role.": "",
|
"Click on the user role button to change a user's role.": "",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "",
|
"ComfyUI": "",
|
||||||
"ComfyUI Base URL": "",
|
"ComfyUI Base URL": "",
|
||||||
"ComfyUI Base URL is required.": "",
|
"ComfyUI Base URL is required.": "",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "",
|
"Command": "",
|
||||||
"Concurrent Requests": "",
|
"Concurrent Requests": "",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "",
|
"Database": "",
|
||||||
"December": "",
|
"December": "",
|
||||||
"Default": "",
|
"Default": "",
|
||||||
"Default (Automatic1111)": "",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "",
|
"Default (SentenceTransformers)": "",
|
||||||
"Default Model": "",
|
"Default Model": "",
|
||||||
"Default model updated": "",
|
"Default model updated": "",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "",
|
"Document": "",
|
||||||
"Document Settings": "",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "",
|
"Documents": "",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "",
|
"Embedding Model": "",
|
||||||
"Embedding Model Engine": "",
|
"Embedding Model Engine": "",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "",
|
"Embedding model set to \"{{embedding_model}}\"": "",
|
||||||
"Enable Chat History": "",
|
|
||||||
"Enable Community Sharing": "",
|
"Enable Community Sharing": "",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "",
|
"Enable New Sign Ups": "",
|
||||||
"Enable Web Search": "",
|
"Enable Web Search": "",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "",
|
"Enter Google PSE Engine Id": "",
|
||||||
"Enter Image Size (e.g. 512x512)": "",
|
"Enter Image Size (e.g. 512x512)": "",
|
||||||
"Enter language codes": "",
|
"Enter language codes": "",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "",
|
"Enter model tag (e.g. {{modelTag}})": "",
|
||||||
"Enter Number of Steps (e.g. 50)": "",
|
"Enter Number of Steps (e.g. 50)": "",
|
||||||
"Enter Score": "",
|
"Enter Score": "",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "",
|
"LTR": "",
|
||||||
"Made by OpenWebUI Community": "",
|
"Made by OpenWebUI Community": "",
|
||||||
"Make sure to enclose them with": "",
|
"Make sure to enclose them with": "",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "",
|
"Manage Models": "",
|
||||||
"Manage Ollama Models": "",
|
"Manage Ollama Models": "",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "",
|
"Minimum Score": "",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "",
|
||||||
"Open AI (Dall-E)": "",
|
|
||||||
"Open new chat": "",
|
"Open new chat": "",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "",
|
"OpenAI": "",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "",
|
"Select a base model": "",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "",
|
|
||||||
"Select a model": "",
|
"Select a model": "",
|
||||||
"Select a pipeline": "",
|
"Select a pipeline": "",
|
||||||
"Select a pipeline url": "",
|
"Select a pipeline url": "",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "",
|
"Select an Ollama instance": "",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "",
|
"Select model": "",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "",
|
"Selected model(s) do not support image inputs": "",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "",
|
"Set Voice": "",
|
||||||
"Settings": "",
|
"Settings": "",
|
||||||
"Settings saved successfully!": "",
|
"Settings saved successfully!": "",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "",
|
"Share": "",
|
||||||
"Share Chat": "",
|
"Share Chat": "",
|
||||||
"Share to OpenWebUI Community": "",
|
"Share to OpenWebUI Community": "",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "",
|
"Tell us more:": "",
|
||||||
"Temperature": "",
|
"Temperature": "",
|
||||||
"Template": "",
|
"Template": "",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "",
|
"Text Completion": "",
|
||||||
"Text-to-Speech Engine": "",
|
"Text-to-Speech Engine": "",
|
||||||
"Tfs Z": "",
|
"Tfs Z": "",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "",
|
"Thorough explanation": "",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "",
|
"Web": "",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "",
|
"Web Loader Settings": "",
|
||||||
"Web Params": "",
|
|
||||||
"Web Search": "",
|
"Web Search": "",
|
||||||
"Web Search Engine": "",
|
"Web Search Engine": "",
|
||||||
"Webhook URL": "",
|
"Webhook URL": "",
|
||||||
"WebUI Settings": "",
|
"WebUI Settings": "",
|
||||||
"WebUI will make requests to": "",
|
"WebUI will make requests to": "",
|
||||||
"What’s New in": "",
|
"What’s New in": "",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "",
|
"Workspace": "",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Todos los Usuarios",
|
"All Users": "Todos los Usuarios",
|
||||||
"Allow": "Permitir",
|
"Allow": "Permitir",
|
||||||
"Allow Chat Deletion": "Permitir Borrar Chats",
|
"Allow Chat Deletion": "Permitir Borrar Chats",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Permitir voces no locales",
|
"Allow non-local voices": "Permitir voces no locales",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Permitir Ubicación del Usuario",
|
"Allow User Location": "Permitir Ubicación del Usuario",
|
||||||
"Allow Voice Interruption in Call": "Permitir interrupción de voz en llamada",
|
"Allow Voice Interruption in Call": "Permitir interrupción de voz en llamada",
|
||||||
"alphanumeric characters and hyphens": "caracteres alfanuméricos y guiones",
|
"alphanumeric characters and hyphens": "caracteres alfanuméricos y guiones",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Opciones de audio actualizadas correctamente",
|
"Audio settings updated successfully": "Opciones de audio actualizadas correctamente",
|
||||||
"August": "Agosto",
|
"August": "Agosto",
|
||||||
"Auto-playback response": "Respuesta de reproducción automática",
|
"Auto-playback response": "Respuesta de reproducción automática",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "Dirección URL de AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "Dirección URL de AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "La dirección URL de AUTOMATIC1111 es requerida.",
|
"AUTOMATIC1111 Base URL is required.": "La dirección URL de AUTOMATIC1111 es requerida.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Burbuja de chat UI",
|
"Chat Bubble UI": "Burbuja de chat UI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Dirección del Chat",
|
"Chat direction": "Dirección del Chat",
|
||||||
"Chat History": "Historial del Chat",
|
|
||||||
"Chat History is off for this browser.": "El Historial del Chat está apagado para este navegador.",
|
|
||||||
"Chats": "Chats",
|
"Chats": "Chats",
|
||||||
"Check Again": "Verifica de nuevo",
|
"Check Again": "Verifica de nuevo",
|
||||||
"Check for updates": "Verificar actualizaciones",
|
"Check for updates": "Verificar actualizaciones",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Presiona aquí para seleccionar un archivo csv.",
|
"Click here to select a csv file.": "Presiona aquí para seleccionar un archivo csv.",
|
||||||
"Click here to select a py file.": "Presiona aquí para seleccionar un archivo py.",
|
"Click here to select a py file.": "Presiona aquí para seleccionar un archivo py.",
|
||||||
"Click here to select documents.": "Presiona aquí para seleccionar documentos",
|
"Click here to select documents.": "Presiona aquí para seleccionar documentos",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "Presiona aquí.",
|
"click here.": "Presiona aquí.",
|
||||||
"Click on the user role button to change a user's role.": "Presiona en el botón de roles del usuario para cambiar su rol.",
|
"Click on the user role button to change a user's role.": "Presiona en el botón de roles del usuario para cambiar su rol.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permisos de escritura del portapapeles denegados. Por favor, comprueba las configuraciones de tu navegador para otorgar el acceso necesario.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permisos de escritura del portapapeles denegados. Por favor, comprueba las configuraciones de tu navegador para otorgar el acceso necesario.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI Base URL",
|
"ComfyUI Base URL": "ComfyUI Base URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI Base URL es requerido.",
|
"ComfyUI Base URL is required.": "ComfyUI Base URL es requerido.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Comando",
|
"Command": "Comando",
|
||||||
"Concurrent Requests": "Solicitudes simultáneas",
|
"Concurrent Requests": "Solicitudes simultáneas",
|
||||||
"Confirm": "Confirmar",
|
"Confirm": "Confirmar",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Base de datos",
|
"Database": "Base de datos",
|
||||||
"December": "Diciembre",
|
"December": "Diciembre",
|
||||||
"Default": "Por defecto",
|
"Default": "Por defecto",
|
||||||
"Default (Automatic1111)": "Por defecto (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Por defecto (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Por defecto (SentenceTransformers)",
|
||||||
"Default Model": "Modelo predeterminado",
|
"Default Model": "Modelo predeterminado",
|
||||||
"Default model updated": "El modelo por defecto ha sido actualizado",
|
"Default model updated": "El modelo por defecto ha sido actualizado",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Documento",
|
"Document": "Documento",
|
||||||
"Document Settings": "Configuración del Documento",
|
|
||||||
"Documentation": "Documentación",
|
"Documentation": "Documentación",
|
||||||
"Documents": "Documentos",
|
"Documents": "Documentos",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "no realiza ninguna conexión externa y sus datos permanecen seguros en su servidor alojado localmente.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "no realiza ninguna conexión externa y sus datos permanecen seguros en su servidor alojado localmente.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Modelo de Embedding",
|
"Embedding Model": "Modelo de Embedding",
|
||||||
"Embedding Model Engine": "Motor de Modelo de Embedding",
|
"Embedding Model Engine": "Motor de Modelo de Embedding",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding configurado a \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding configurado a \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Activa el Historial de Chat",
|
|
||||||
"Enable Community Sharing": "Habilitar el uso compartido de la comunidad",
|
"Enable Community Sharing": "Habilitar el uso compartido de la comunidad",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Habilitar Nuevos Registros",
|
"Enable New Sign Ups": "Habilitar Nuevos Registros",
|
||||||
"Enable Web Search": "Habilitar la búsqueda web",
|
"Enable Web Search": "Habilitar la búsqueda web",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Introduzca el ID del motor PSE de Google",
|
"Enter Google PSE Engine Id": "Introduzca el ID del motor PSE de Google",
|
||||||
"Enter Image Size (e.g. 512x512)": "Ingrese el tamaño de la imagen (p.ej. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Ingrese el tamaño de la imagen (p.ej. 512x512)",
|
||||||
"Enter language codes": "Ingrese códigos de idioma",
|
"Enter language codes": "Ingrese códigos de idioma",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Ingrese la etiqueta del modelo (p.ej. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Ingrese la etiqueta del modelo (p.ej. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Ingrese el número de pasos (p.ej., 50)",
|
"Enter Number of Steps (e.g. 50)": "Ingrese el número de pasos (p.ej., 50)",
|
||||||
"Enter Score": "Ingrese la puntuación",
|
"Enter Score": "Ingrese la puntuación",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Hecho por la comunidad de OpenWebUI",
|
"Made by OpenWebUI Community": "Hecho por la comunidad de OpenWebUI",
|
||||||
"Make sure to enclose them with": "Asegúrese de adjuntarlos con",
|
"Make sure to enclose them with": "Asegúrese de adjuntarlos con",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Gestionar",
|
"Manage": "Gestionar",
|
||||||
"Manage Models": "Administrar Modelos",
|
"Manage Models": "Administrar Modelos",
|
||||||
"Manage Ollama Models": "Administrar Modelos Ollama",
|
"Manage Ollama Models": "Administrar Modelos Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Memoria liberada correctamente",
|
"Memory cleared successfully": "Memoria liberada correctamente",
|
||||||
"Memory deleted successfully": "Memoria borrada correctamente",
|
"Memory deleted successfully": "Memoria borrada correctamente",
|
||||||
"Memory updated successfully": "Memoria actualizada correctamente",
|
"Memory updated successfully": "Memoria actualizada correctamente",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Los mensajes que envíe después de crear su enlace no se compartirán. Los usuarios con el enlace podrán ver el chat compartido.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Los mensajes que envíe después de crear su enlace no se compartirán. Los usuarios con el enlace podrán ver el chat compartido.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Puntuación mínima",
|
"Minimum Score": "Puntuación mínima",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "¡Ups! Parece que la URL no es válida. Vuelva a verificar e inténtelo nuevamente.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "¡Ups! Parece que la URL no es válida. Vuelva a verificar e inténtelo nuevamente.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "¡Oops! Hubo un error en la respuesta anterior. Intente de nuevo o póngase en contacto con el administrador.",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "¡Oops! Hubo un error en la respuesta anterior. Intente de nuevo o póngase en contacto con el administrador.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "¡Ups! Estás utilizando un método no compatible (solo frontend). Por favor ejecute la WebUI desde el backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "¡Ups! Estás utilizando un método no compatible (solo frontend). Por favor ejecute la WebUI desde el backend.",
|
||||||
"Open AI (Dall-E)": "Abrir AI (Dall-E)",
|
|
||||||
"Open new chat": "Abrir nuevo chat",
|
"Open new chat": "Abrir nuevo chat",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "Seleccionar un modelo base",
|
"Select a base model": "Seleccionar un modelo base",
|
||||||
"Select a engine": "Busca un motor",
|
"Select a engine": "Busca un motor",
|
||||||
"Select a function": "Busca una función",
|
"Select a function": "Busca una función",
|
||||||
"Select a mode": "Selecciona un modo",
|
|
||||||
"Select a model": "Selecciona un modelo",
|
"Select a model": "Selecciona un modelo",
|
||||||
"Select a pipeline": "Selección de una Pipeline",
|
"Select a pipeline": "Selección de una Pipeline",
|
||||||
"Select a pipeline url": "Selección de una dirección URL de Pipeline",
|
"Select a pipeline url": "Selección de una dirección URL de Pipeline",
|
||||||
"Select a tool": "Busca una herramienta",
|
"Select a tool": "Busca una herramienta",
|
||||||
"Select an Ollama instance": "Seleccione una instancia de Ollama",
|
"Select an Ollama instance": "Seleccione una instancia de Ollama",
|
||||||
"Select Documents": "Seleccionar Documentos",
|
"Select Documents": "Seleccionar Documentos",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Selecciona un modelo",
|
"Select model": "Selecciona un modelo",
|
||||||
"Select only one model to call": "Selecciona sólo un modelo para llamar",
|
"Select only one model to call": "Selecciona sólo un modelo para llamar",
|
||||||
"Selected model(s) do not support image inputs": "Los modelos seleccionados no admiten entradas de imagen",
|
"Selected model(s) do not support image inputs": "Los modelos seleccionados no admiten entradas de imagen",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "Establecer la voz",
|
"Set Voice": "Establecer la voz",
|
||||||
"Settings": "Configuración",
|
"Settings": "Configuración",
|
||||||
"Settings saved successfully!": "¡Configuración guardada con éxito!",
|
"Settings saved successfully!": "¡Configuración guardada con éxito!",
|
||||||
"Settings updated successfully": "¡Configuración actualizada con éxito!",
|
|
||||||
"Share": "Compartir",
|
"Share": "Compartir",
|
||||||
"Share Chat": "Compartir Chat",
|
"Share Chat": "Compartir Chat",
|
||||||
"Share to OpenWebUI Community": "Compartir con la comunidad OpenWebUI",
|
"Share to OpenWebUI Community": "Compartir con la comunidad OpenWebUI",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "Dinos más:",
|
"Tell us more:": "Dinos más:",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Plantilla",
|
"Template": "Plantilla",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Finalización de texto",
|
"Text Completion": "Finalización de texto",
|
||||||
"Text-to-Speech Engine": "Motor de texto a voz",
|
"Text-to-Speech Engine": "Motor de texto a voz",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Esta acción no se puede deshacer. ¿Desea continuar?",
|
"This action cannot be undone. Do you wish to continue?": "Esta acción no se puede deshacer. ¿Desea continuar?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Esto garantiza que sus valiosas conversaciones se guarden de forma segura en su base de datos en el backend. ¡Gracias!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Esto garantiza que sus valiosas conversaciones se guarden de forma segura en su base de datos en el backend. ¡Gracias!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Esta es una característica experimental que puede no funcionar como se esperaba y está sujeto a cambios en cualquier momento.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Esta es una característica experimental que puede no funcionar como se esperaba y está sujeto a cambios en cualquier momento.",
|
||||||
"This setting does not sync across browsers or devices.": "Esta configuración no se sincroniza entre navegadores o dispositivos.",
|
|
||||||
"This will delete": "Esto eliminará",
|
"This will delete": "Esto eliminará",
|
||||||
"Thorough explanation": "Explicación exhaustiva",
|
"Thorough explanation": "Explicación exhaustiva",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "API Web",
|
"Web API": "API Web",
|
||||||
"Web Loader Settings": "Web Loader Settings",
|
"Web Loader Settings": "Web Loader Settings",
|
||||||
"Web Params": "Web Params",
|
|
||||||
"Web Search": "Búsqueda en la Web",
|
"Web Search": "Búsqueda en la Web",
|
||||||
"Web Search Engine": "Motor de búsqueda web",
|
"Web Search Engine": "Motor de búsqueda web",
|
||||||
"Webhook URL": "Webhook URL",
|
"Webhook URL": "Webhook URL",
|
||||||
"WebUI Settings": "Configuración del WebUI",
|
"WebUI Settings": "Configuración del WebUI",
|
||||||
"WebUI will make requests to": "WebUI realizará solicitudes a",
|
"WebUI will make requests to": "WebUI realizará solicitudes a",
|
||||||
"What’s New in": "Novedades en",
|
"What’s New in": "Novedades en",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Cuando el historial está desactivado, los nuevos chats en este navegador no aparecerán en el historial de ninguno de sus dispositivos..",
|
|
||||||
"Whisper (Local)": "Whisper (Local)",
|
"Whisper (Local)": "Whisper (Local)",
|
||||||
"Widescreen Mode": "Modo de pantalla ancha",
|
"Widescreen Mode": "Modo de pantalla ancha",
|
||||||
"Workspace": "Espacio de trabajo",
|
"Workspace": "Espacio de trabajo",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "همه کاربران",
|
"All Users": "همه کاربران",
|
||||||
"Allow": "اجازه دادن",
|
"Allow": "اجازه دادن",
|
||||||
"Allow Chat Deletion": "اجازه حذف گپ",
|
"Allow Chat Deletion": "اجازه حذف گپ",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "حروف الفبایی و خط فاصله",
|
"alphanumeric characters and hyphens": "حروف الفبایی و خط فاصله",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "آگوست",
|
"August": "آگوست",
|
||||||
"Auto-playback response": "پخش خودکار پاسخ ",
|
"Auto-playback response": "پخش خودکار پاسخ ",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "پایه URL AUTOMATIC1111 ",
|
"AUTOMATIC1111 Base URL": "پایه URL AUTOMATIC1111 ",
|
||||||
"AUTOMATIC1111 Base URL is required.": "به URL پایه AUTOMATIC1111 مورد نیاز است.",
|
"AUTOMATIC1111 Base URL is required.": "به URL پایه AUTOMATIC1111 مورد نیاز است.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "UI\u200cی\u200c گفتگو\u200c",
|
"Chat Bubble UI": "UI\u200cی\u200c گفتگو\u200c",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "جهت\u200cگفتگو",
|
"Chat direction": "جهت\u200cگفتگو",
|
||||||
"Chat History": "تاریخچه\u200cی گفتگو",
|
|
||||||
"Chat History is off for this browser.": "سابقه گپ برای این مرورگر خاموش است.",
|
|
||||||
"Chats": "گپ\u200cها",
|
"Chats": "گپ\u200cها",
|
||||||
"Check Again": "چک مجدد",
|
"Check Again": "چک مجدد",
|
||||||
"Check for updates": "بررسی به\u200cروزرسانی",
|
"Check for updates": "بررسی به\u200cروزرسانی",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "برای انتخاب یک فایل csv اینجا را کلیک کنید.",
|
"Click here to select a csv file.": "برای انتخاب یک فایل csv اینجا را کلیک کنید.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "برای انتخاب اسناد اینجا را کلیک کنید.",
|
"Click here to select documents.": "برای انتخاب اسناد اینجا را کلیک کنید.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "اینجا کلیک کنید.",
|
"click here.": "اینجا کلیک کنید.",
|
||||||
"Click on the user role button to change a user's role.": "برای تغییر نقش کاربر، روی دکمه نقش کاربر کلیک کنید.",
|
"Click on the user role button to change a user's role.": "برای تغییر نقش کاربر، روی دکمه نقش کاربر کلیک کنید.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "کومیوآی",
|
"ComfyUI": "کومیوآی",
|
||||||
"ComfyUI Base URL": "URL پایه کومیوآی",
|
"ComfyUI Base URL": "URL پایه کومیوآی",
|
||||||
"ComfyUI Base URL is required.": "URL پایه کومیوآی الزامی است.",
|
"ComfyUI Base URL is required.": "URL پایه کومیوآی الزامی است.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "دستور",
|
"Command": "دستور",
|
||||||
"Concurrent Requests": "درخواست های همزمان",
|
"Concurrent Requests": "درخواست های همزمان",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "پایگاه داده",
|
"Database": "پایگاه داده",
|
||||||
"December": "دسامبر",
|
"December": "دسامبر",
|
||||||
"Default": "پیشفرض",
|
"Default": "پیشفرض",
|
||||||
"Default (Automatic1111)": "پیشفرض (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "پیشفرض (SentenceTransformers)",
|
"Default (SentenceTransformers)": "پیشفرض (SentenceTransformers)",
|
||||||
"Default Model": "مدل پیشفرض",
|
"Default Model": "مدل پیشفرض",
|
||||||
"Default model updated": "مدل پیشفرض به\u200cروزرسانی شد",
|
"Default model updated": "مدل پیشفرض به\u200cروزرسانی شد",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "سند",
|
"Document": "سند",
|
||||||
"Document Settings": "تنظیمات سند",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "اسناد",
|
"Documents": "اسناد",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "هیچ اتصال خارجی ایجاد نمی کند و داده های شما به طور ایمن در سرور میزبان محلی شما باقی می ماند.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "هیچ اتصال خارجی ایجاد نمی کند و داده های شما به طور ایمن در سرور میزبان محلی شما باقی می ماند.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "مدل پیدائش",
|
"Embedding Model": "مدل پیدائش",
|
||||||
"Embedding Model Engine": "محرک مدل پیدائش",
|
"Embedding Model Engine": "محرک مدل پیدائش",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "مدل پیدائش را به \"{{embedding_model}}\" تنظیم کنید",
|
"Embedding model set to \"{{embedding_model}}\"": "مدل پیدائش را به \"{{embedding_model}}\" تنظیم کنید",
|
||||||
"Enable Chat History": "تاریخچه چت را فعال کنید",
|
|
||||||
"Enable Community Sharing": "فعالسازی اشتراک انجمن",
|
"Enable Community Sharing": "فعالسازی اشتراک انجمن",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "فعال کردن ثبت نام\u200cهای جدید",
|
"Enable New Sign Ups": "فعال کردن ثبت نام\u200cهای جدید",
|
||||||
"Enable Web Search": "فعالسازی جستجوی وب",
|
"Enable Web Search": "فعالسازی جستجوی وب",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "شناسه موتور PSE گوگل را وارد کنید",
|
"Enter Google PSE Engine Id": "شناسه موتور PSE گوگل را وارد کنید",
|
||||||
"Enter Image Size (e.g. 512x512)": "اندازه تصویر را وارد کنید (مثال: 512x512)",
|
"Enter Image Size (e.g. 512x512)": "اندازه تصویر را وارد کنید (مثال: 512x512)",
|
||||||
"Enter language codes": "کد زبان را وارد کنید",
|
"Enter language codes": "کد زبان را وارد کنید",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "تگ مدل را وارد کنید (مثلا {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "تگ مدل را وارد کنید (مثلا {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "تعداد گام ها را وارد کنید (مثال: 50)",
|
"Enter Number of Steps (e.g. 50)": "تعداد گام ها را وارد کنید (مثال: 50)",
|
||||||
"Enter Score": "امتیاز را وارد کنید",
|
"Enter Score": "امتیاز را وارد کنید",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "ساخته شده توسط OpenWebUI Community",
|
"Made by OpenWebUI Community": "ساخته شده توسط OpenWebUI Community",
|
||||||
"Make sure to enclose them with": "مطمئن شوید که آنها را با این محصور کنید:",
|
"Make sure to enclose them with": "مطمئن شوید که آنها را با این محصور کنید:",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "مدیریت مدل\u200cها",
|
"Manage Models": "مدیریت مدل\u200cها",
|
||||||
"Manage Ollama Models": "مدیریت مدل\u200cهای اولاما",
|
"Manage Ollama Models": "مدیریت مدل\u200cهای اولاما",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "پیام های شما بعد از ایجاد لینک شما به اشتراک نمی گردد. کاربران با لینک URL می توانند چت اشتراک را مشاهده کنند.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "پیام های شما بعد از ایجاد لینک شما به اشتراک نمی گردد. کاربران با لینک URL می توانند چت اشتراک را مشاهده کنند.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "نماد کمینه",
|
"Minimum Score": "نماد کمینه",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "اوه! به نظر می رسد URL نامعتبر است. لطفاً دوباره بررسی کنید و دوباره امتحان کنید.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "اوه! به نظر می رسد URL نامعتبر است. لطفاً دوباره بررسی کنید و دوباره امتحان کنید.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "اوه! شما از یک روش پشتیبانی نشده (فقط frontend) استفاده می کنید. لطفاً WebUI را از بکند اجرا کنید.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "اوه! شما از یک روش پشتیبانی نشده (فقط frontend) استفاده می کنید. لطفاً WebUI را از بکند اجرا کنید.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "باز کردن گپ جدید",
|
"Open new chat": "باز کردن گپ جدید",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "انتخاب یک مدل پایه",
|
"Select a base model": "انتخاب یک مدل پایه",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "یک حالت انتخاب کنید",
|
|
||||||
"Select a model": "انتخاب یک مدل",
|
"Select a model": "انتخاب یک مدل",
|
||||||
"Select a pipeline": "انتخاب یک خط لوله",
|
"Select a pipeline": "انتخاب یک خط لوله",
|
||||||
"Select a pipeline url": "یک ادرس خط لوله را انتخاب کنید",
|
"Select a pipeline url": "یک ادرس خط لوله را انتخاب کنید",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "انتخاب یک نمونه از اولاما",
|
"Select an Ollama instance": "انتخاب یک نمونه از اولاما",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "انتخاب یک مدل",
|
"Select model": "انتخاب یک مدل",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "مدل) های (انتخاب شده ورودیهای تصویر را پشتیبانی نمیکند",
|
"Selected model(s) do not support image inputs": "مدل) های (انتخاب شده ورودیهای تصویر را پشتیبانی نمیکند",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "تنظیم صدا",
|
"Set Voice": "تنظیم صدا",
|
||||||
"Settings": "تنظیمات",
|
"Settings": "تنظیمات",
|
||||||
"Settings saved successfully!": "تنظیمات با موفقیت ذخیره شد!",
|
"Settings saved successfully!": "تنظیمات با موفقیت ذخیره شد!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "اشتراک\u200cگذاری",
|
"Share": "اشتراک\u200cگذاری",
|
||||||
"Share Chat": "اشتراک\u200cگذاری چت",
|
"Share Chat": "اشتراک\u200cگذاری چت",
|
||||||
"Share to OpenWebUI Community": "اشتراک گذاری با OpenWebUI Community",
|
"Share to OpenWebUI Community": "اشتراک گذاری با OpenWebUI Community",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "بیشتر بگویید:",
|
"Tell us more:": "بیشتر بگویید:",
|
||||||
"Temperature": "دما",
|
"Temperature": "دما",
|
||||||
"Template": "الگو",
|
"Template": "الگو",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "تکمیل متن",
|
"Text Completion": "تکمیل متن",
|
||||||
"Text-to-Speech Engine": "موتور تبدیل متن به گفتار",
|
"Text-to-Speech Engine": "موتور تبدیل متن به گفتار",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "این تضمین می کند که مکالمات ارزشمند شما به طور ایمن در پایگاه داده بکند ذخیره می شود. تشکر!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "این تضمین می کند که مکالمات ارزشمند شما به طور ایمن در پایگاه داده بکند ذخیره می شود. تشکر!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "این تنظیم در مرورگرها یا دستگاه\u200cها همگام\u200cسازی نمی\u200cشود.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "توضیح کامل",
|
"Thorough explanation": "توضیح کامل",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "وب",
|
"Web": "وب",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "تنظیمات لودر وب",
|
"Web Loader Settings": "تنظیمات لودر وب",
|
||||||
"Web Params": "پارامترهای وب",
|
|
||||||
"Web Search": "جستجوی وب",
|
"Web Search": "جستجوی وب",
|
||||||
"Web Search Engine": "موتور جستجوی وب",
|
"Web Search Engine": "موتور جستجوی وب",
|
||||||
"Webhook URL": "URL وبهوک",
|
"Webhook URL": "URL وبهوک",
|
||||||
"WebUI Settings": "تنظیمات WebUI",
|
"WebUI Settings": "تنظیمات WebUI",
|
||||||
"WebUI will make requests to": "WebUI درخواست\u200cها را ارسال خواهد کرد به",
|
"WebUI will make requests to": "WebUI درخواست\u200cها را ارسال خواهد کرد به",
|
||||||
"What’s New in": "موارد جدید در",
|
"What’s New in": "موارد جدید در",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "وقتی سابقه خاموش است، چت\u200cهای جدید در این مرورگر در سابقه شما در هیچ یک از دستگاه\u200cهایتان ظاهر نمی\u200cشوند.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "محیط کار",
|
"Workspace": "محیط کار",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Kaikki käyttäjät",
|
"All Users": "Kaikki käyttäjät",
|
||||||
"Allow": "Salli",
|
"Allow": "Salli",
|
||||||
"Allow Chat Deletion": "Salli keskustelujen poisto",
|
"Allow Chat Deletion": "Salli keskustelujen poisto",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "kirjaimia, numeroita ja väliviivoja",
|
"alphanumeric characters and hyphens": "kirjaimia, numeroita ja väliviivoja",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "elokuu",
|
"August": "elokuu",
|
||||||
"Auto-playback response": "Soita vastaus automaattisesti",
|
"Auto-playback response": "Soita vastaus automaattisesti",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111-perus-URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111-perus-URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111-perus-URL vaaditaan.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111-perus-URL vaaditaan.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Keskustelu-pallojen käyttöliittymä",
|
"Chat Bubble UI": "Keskustelu-pallojen käyttöliittymä",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Keskustelun suunta",
|
"Chat direction": "Keskustelun suunta",
|
||||||
"Chat History": "Keskusteluhistoria",
|
|
||||||
"Chat History is off for this browser.": "Keskusteluhistoria on pois päältä tällä selaimella.",
|
|
||||||
"Chats": "Keskustelut",
|
"Chats": "Keskustelut",
|
||||||
"Check Again": "Tarkista uudelleen",
|
"Check Again": "Tarkista uudelleen",
|
||||||
"Check for updates": "Tarkista päivitykset",
|
"Check for updates": "Tarkista päivitykset",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Klikkaa tästä valitaksesi CSV-tiedosto.",
|
"Click here to select a csv file.": "Klikkaa tästä valitaksesi CSV-tiedosto.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Klikkaa tästä valitaksesi asiakirjoja.",
|
"Click here to select documents.": "Klikkaa tästä valitaksesi asiakirjoja.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "klikkaa tästä.",
|
"click here.": "klikkaa tästä.",
|
||||||
"Click on the user role button to change a user's role.": "Klikkaa käyttäjän roolipainiketta vaihtaaksesi käyttäjän roolia.",
|
"Click on the user role button to change a user's role.": "Klikkaa käyttäjän roolipainiketta vaihtaaksesi käyttäjän roolia.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI-perus-URL",
|
"ComfyUI Base URL": "ComfyUI-perus-URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI-perus-URL vaaditaan.",
|
"ComfyUI Base URL is required.": "ComfyUI-perus-URL vaaditaan.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Komento",
|
"Command": "Komento",
|
||||||
"Concurrent Requests": "Samanaikaiset pyynnöt",
|
"Concurrent Requests": "Samanaikaiset pyynnöt",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Tietokanta",
|
"Database": "Tietokanta",
|
||||||
"December": "joulukuu",
|
"December": "joulukuu",
|
||||||
"Default": "Oletus",
|
"Default": "Oletus",
|
||||||
"Default (Automatic1111)": "Oletus (AUTOMATIC1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Oletus (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Oletus (SentenceTransformers)",
|
||||||
"Default Model": "Oletusmalli",
|
"Default Model": "Oletusmalli",
|
||||||
"Default model updated": "Oletusmalli päivitetty",
|
"Default model updated": "Oletusmalli päivitetty",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Asiakirja",
|
"Document": "Asiakirja",
|
||||||
"Document Settings": "Asiakirja-asetukset",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "Asiakirjat",
|
"Documents": "Asiakirjat",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "ei tee ulkoisia yhteyksiä, ja tietosi pysyvät turvallisesti paikallisesti isännöidyllä palvelimellasi.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "ei tee ulkoisia yhteyksiä, ja tietosi pysyvät turvallisesti paikallisesti isännöidyllä palvelimellasi.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Upotusmalli",
|
"Embedding Model": "Upotusmalli",
|
||||||
"Embedding Model Engine": "Upotusmallin moottori",
|
"Embedding Model Engine": "Upotusmallin moottori",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "\"{{embedding_model}}\" valittu upotusmalliksi",
|
"Embedding model set to \"{{embedding_model}}\"": "\"{{embedding_model}}\" valittu upotusmalliksi",
|
||||||
"Enable Chat History": "Ota keskusteluhistoria käyttöön",
|
|
||||||
"Enable Community Sharing": "Ota yhteisön jakaminen käyttöön",
|
"Enable Community Sharing": "Ota yhteisön jakaminen käyttöön",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Salli uudet rekisteröitymiset",
|
"Enable New Sign Ups": "Salli uudet rekisteröitymiset",
|
||||||
"Enable Web Search": "Ota verkkohaku käyttöön",
|
"Enable Web Search": "Ota verkkohaku käyttöön",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Anna Google PSE -moottorin tunnus",
|
"Enter Google PSE Engine Id": "Anna Google PSE -moottorin tunnus",
|
||||||
"Enter Image Size (e.g. 512x512)": "Syötä kuvan koko (esim. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Syötä kuvan koko (esim. 512x512)",
|
||||||
"Enter language codes": "Syötä kielikoodit",
|
"Enter language codes": "Syötä kielikoodit",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Syötä mallitagi (esim. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Syötä mallitagi (esim. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Syötä askelien määrä (esim. 50)",
|
"Enter Number of Steps (e.g. 50)": "Syötä askelien määrä (esim. 50)",
|
||||||
"Enter Score": "Syötä pisteet",
|
"Enter Score": "Syötä pisteet",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Tehnyt OpenWebUI-yhteisö",
|
"Made by OpenWebUI Community": "Tehnyt OpenWebUI-yhteisö",
|
||||||
"Make sure to enclose them with": "Varmista, että suljet ne",
|
"Make sure to enclose them with": "Varmista, että suljet ne",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "Hallitse malleja",
|
"Manage Models": "Hallitse malleja",
|
||||||
"Manage Ollama Models": "Hallitse Ollama-malleja",
|
"Manage Ollama Models": "Hallitse Ollama-malleja",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Linkin luomisen jälkeen lähettämiäsi viestejä ei jaeta. Käyttäjät, joilla on URL-osoite, voivat tarkastella jaettua keskustelua.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Linkin luomisen jälkeen lähettämiäsi viestejä ei jaeta. Käyttäjät, joilla on URL-osoite, voivat tarkastella jaettua keskustelua.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Vähimmäispisteet",
|
"Minimum Score": "Vähimmäispisteet",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hups! Näyttää siltä, että URL on virheellinen. Tarkista se ja yritä uudelleen.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hups! Näyttää siltä, että URL on virheellinen. Tarkista se ja yritä uudelleen.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hupsista! Käytät ei-tuettua menetelmää. WebUI pitää palvella backendista.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hupsista! Käytät ei-tuettua menetelmää. WebUI pitää palvella backendista.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Avaa uusi keskustelu",
|
"Open new chat": "Avaa uusi keskustelu",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "Valitse perusmalli",
|
"Select a base model": "Valitse perusmalli",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Valitse tila",
|
|
||||||
"Select a model": "Valitse malli",
|
"Select a model": "Valitse malli",
|
||||||
"Select a pipeline": "Valitse putki",
|
"Select a pipeline": "Valitse putki",
|
||||||
"Select a pipeline url": "Valitse putken URL-osoite",
|
"Select a pipeline url": "Valitse putken URL-osoite",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Valitse Ollama-instanssi",
|
"Select an Ollama instance": "Valitse Ollama-instanssi",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Valitse malli",
|
"Select model": "Valitse malli",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasyötteitä",
|
"Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasyötteitä",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Aseta puheääni",
|
"Set Voice": "Aseta puheääni",
|
||||||
"Settings": "Asetukset",
|
"Settings": "Asetukset",
|
||||||
"Settings saved successfully!": "Asetukset tallennettu onnistuneesti!",
|
"Settings saved successfully!": "Asetukset tallennettu onnistuneesti!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "Jaa",
|
"Share": "Jaa",
|
||||||
"Share Chat": "Jaa keskustelu",
|
"Share Chat": "Jaa keskustelu",
|
||||||
"Share to OpenWebUI Community": "Jaa OpenWebUI-yhteisöön",
|
"Share to OpenWebUI Community": "Jaa OpenWebUI-yhteisöön",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "Kerro lisää:",
|
"Tell us more:": "Kerro lisää:",
|
||||||
"Temperature": "Lämpötila",
|
"Temperature": "Lämpötila",
|
||||||
"Template": "Malline",
|
"Template": "Malline",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Tekstin täydennys",
|
"Text Completion": "Tekstin täydennys",
|
||||||
"Text-to-Speech Engine": "Puhemoottori",
|
"Text-to-Speech Engine": "Puhemoottori",
|
||||||
"Tfs Z": "TFS Z",
|
"Tfs Z": "TFS Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tämä varmistaa, että arvokkaat keskustelusi tallennetaan turvallisesti backend-tietokantaasi. Kiitos!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tämä varmistaa, että arvokkaat keskustelusi tallennetaan turvallisesti backend-tietokantaasi. Kiitos!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "Tämä asetus ei synkronoidu selainten tai laitteiden välillä.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "Perusteellinen selitys",
|
"Thorough explanation": "Perusteellinen selitys",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "Web Loader asetukset",
|
"Web Loader Settings": "Web Loader asetukset",
|
||||||
"Web Params": "Web-parametrit",
|
|
||||||
"Web Search": "Web-haku",
|
"Web Search": "Web-haku",
|
||||||
"Web Search Engine": "Web-hakukone",
|
"Web Search Engine": "Web-hakukone",
|
||||||
"Webhook URL": "Webhook-URL",
|
"Webhook URL": "Webhook-URL",
|
||||||
"WebUI Settings": "WebUI-asetukset",
|
"WebUI Settings": "WebUI-asetukset",
|
||||||
"WebUI will make requests to": "WebUI tekee pyyntöjä",
|
"WebUI will make requests to": "WebUI tekee pyyntöjä",
|
||||||
"What’s New in": "Mitä uutta",
|
"What’s New in": "Mitä uutta",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kun historia on pois päältä, uudet keskustelut tässä selaimessa eivät näy historiassasi millään laitteellasi.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "Työtilat",
|
"Workspace": "Työtilat",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Tous les Utilisateurs",
|
"All Users": "Tous les Utilisateurs",
|
||||||
"Allow": "Autoriser",
|
"Allow": "Autoriser",
|
||||||
"Allow Chat Deletion": "Autoriser la suppression de l'historique de chat",
|
"Allow Chat Deletion": "Autoriser la suppression de l'historique de chat",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Autoriser les voix non locales",
|
"Allow non-local voices": "Autoriser les voix non locales",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Autoriser l'emplacement de l'utilisateur",
|
"Allow User Location": "Autoriser l'emplacement de l'utilisateur",
|
||||||
"Allow Voice Interruption in Call": "Autoriser l'interruption vocale pendant un appel",
|
"Allow Voice Interruption in Call": "Autoriser l'interruption vocale pendant un appel",
|
||||||
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Les paramètres audio ont été mis à jour avec succès",
|
"Audio settings updated successfully": "Les paramètres audio ont été mis à jour avec succès",
|
||||||
"August": "Août",
|
"August": "Août",
|
||||||
"Auto-playback response": "Réponse de lecture automatique",
|
"Auto-playback response": "Réponse de lecture automatique",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Chaîne d'authentification de l'API",
|
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Chaîne d'authentification de l'API",
|
||||||
"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.",
|
"AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Bulles de discussion",
|
"Chat Bubble UI": "Bulles de discussion",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Direction du chat",
|
"Chat direction": "Direction du chat",
|
||||||
"Chat History": "Historique de discussion",
|
|
||||||
"Chat History is off for this browser.": "L'historique de chat est désactivé pour ce navigateur",
|
|
||||||
"Chats": "Conversations",
|
"Chats": "Conversations",
|
||||||
"Check Again": "Vérifiez à nouveau.",
|
"Check Again": "Vérifiez à nouveau.",
|
||||||
"Check for updates": "Vérifier les mises à jour disponibles",
|
"Check for updates": "Vérifier les mises à jour disponibles",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Cliquez ici pour sélectionner un fichier CSV.",
|
"Click here to select a csv file.": "Cliquez ici pour sélectionner un fichier CSV.",
|
||||||
"Click here to select a py file.": "Cliquez ici pour sélectionner un fichier .py.",
|
"Click here to select a py file.": "Cliquez ici pour sélectionner un fichier .py.",
|
||||||
"Click here to select documents.": "Cliquez ici pour sélectionner les documents.",
|
"Click here to select documents.": "Cliquez ici pour sélectionner les documents.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "cliquez ici.",
|
"click here.": "cliquez ici.",
|
||||||
"Click on the user role button to change a user's role.": "Cliquez sur le bouton de rôle d'utilisateur pour modifier le rôle d'un utilisateur.",
|
"Click on the user role button to change a user's role.": "Cliquez sur le bouton de rôle d'utilisateur pour modifier le rôle d'un utilisateur.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL de base ComfyUI",
|
"ComfyUI Base URL": "URL de base ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "L'URL de base ComfyUI est requise.",
|
"ComfyUI Base URL is required.": "L'URL de base ComfyUI est requise.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Commande",
|
"Command": "Commande",
|
||||||
"Concurrent Requests": "Demandes concurrentes",
|
"Concurrent Requests": "Demandes concurrentes",
|
||||||
"Confirm": "Confirmer",
|
"Confirm": "Confirmer",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Base de données",
|
"Database": "Base de données",
|
||||||
"December": "Décembre",
|
"December": "Décembre",
|
||||||
"Default": "Par défaut",
|
"Default": "Par défaut",
|
||||||
"Default (Automatic1111)": "Par défaut (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Par défaut (Sentence Transformers)",
|
"Default (SentenceTransformers)": "Par défaut (Sentence Transformers)",
|
||||||
"Default Model": "Modèle standard",
|
"Default Model": "Modèle standard",
|
||||||
"Default model updated": "Modèle par défaut mis à jour",
|
"Default model updated": "Modèle par défaut mis à jour",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Document",
|
"Document": "Document",
|
||||||
"Document Settings": "Paramètres du document",
|
|
||||||
"Documentation": "Documentation",
|
"Documentation": "Documentation",
|
||||||
"Documents": "Documents",
|
"Documents": "Documents",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne fait aucune connexion externe et garde vos données en sécurité sur votre serveur local.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne fait aucune connexion externe et garde vos données en sécurité sur votre serveur local.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Modèle d'embedding",
|
"Embedding Model": "Modèle d'embedding",
|
||||||
"Embedding Model Engine": "Moteur de modèle d'encodage",
|
"Embedding Model Engine": "Moteur de modèle d'encodage",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Modèle d'encodage défini sur « {{embedding_model}} »",
|
"Embedding model set to \"{{embedding_model}}\"": "Modèle d'encodage défini sur « {{embedding_model}} »",
|
||||||
"Enable Chat History": "Activer l'historique de conversation",
|
|
||||||
"Enable Community Sharing": "Activer le partage communautaire",
|
"Enable Community Sharing": "Activer le partage communautaire",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Activer les nouvelles inscriptions",
|
"Enable New Sign Ups": "Activer les nouvelles inscriptions",
|
||||||
"Enable Web Search": "Activer la recherche sur le Web",
|
"Enable Web Search": "Activer la recherche sur le Web",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE",
|
"Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE",
|
||||||
"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
|
||||||
"Enter language codes": "Entrez les codes de langue",
|
"Enter language codes": "Entrez les codes de langue",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Entrez l'étiquette du modèle (par ex. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Entrez l'étiquette du modèle (par ex. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Entrez le nombre de pas (par ex. 50)",
|
"Enter Number of Steps (e.g. 50)": "Entrez le nombre de pas (par ex. 50)",
|
||||||
"Enter Score": "Entrez votre score",
|
"Enter Score": "Entrez votre score",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Réalisé par la communauté OpenWebUI",
|
"Made by OpenWebUI Community": "Réalisé par la communauté OpenWebUI",
|
||||||
"Make sure to enclose them with": "Assurez-vous de les inclure dans",
|
"Make sure to enclose them with": "Assurez-vous de les inclure dans",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Gérer",
|
"Manage": "Gérer",
|
||||||
"Manage Models": "Gérer les Modèles",
|
"Manage Models": "Gérer les Modèles",
|
||||||
"Manage Ollama Models": "Gérer les modèles Ollama",
|
"Manage Ollama Models": "Gérer les modèles Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "La mémoire a été effacée avec succès",
|
"Memory cleared successfully": "La mémoire a été effacée avec succès",
|
||||||
"Memory deleted successfully": "La mémoire a été supprimée avec succès",
|
"Memory deleted successfully": "La mémoire a été supprimée avec succès",
|
||||||
"Memory updated successfully": "La mémoire a été mise à jour avec succès",
|
"Memory updated successfully": "La mémoire a été mise à jour avec succès",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir le chat partagé.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir le chat partagé.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Score minimal",
|
"Minimum Score": "Score minimal",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Oops ! Il y a eu une erreur dans la réponse précédente. Veuillez réessayer ou contacter l'administrateur.",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Oops ! Il y a eu une erreur dans la réponse précédente. Veuillez réessayer ou contacter l'administrateur.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups\u00a0! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups\u00a0! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Ouvrir une nouvelle discussion",
|
"Open new chat": "Ouvrir une nouvelle discussion",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "Sélectionnez un modèle de base",
|
"Select a base model": "Sélectionnez un modèle de base",
|
||||||
"Select a engine": "Sélectionnez un moteur",
|
"Select a engine": "Sélectionnez un moteur",
|
||||||
"Select a function": "Sélectionnez une fonction",
|
"Select a function": "Sélectionnez une fonction",
|
||||||
"Select a mode": "Choisissez un mode",
|
|
||||||
"Select a model": "Sélectionnez un modèle",
|
"Select a model": "Sélectionnez un modèle",
|
||||||
"Select a pipeline": "Sélectionnez un pipeline",
|
"Select a pipeline": "Sélectionnez un pipeline",
|
||||||
"Select a pipeline url": "Sélectionnez l'URL du pipeline",
|
"Select a pipeline url": "Sélectionnez l'URL du pipeline",
|
||||||
"Select a tool": "Sélectionnez un outil",
|
"Select a tool": "Sélectionnez un outil",
|
||||||
"Select an Ollama instance": "Sélectionnez une instance Ollama",
|
"Select an Ollama instance": "Sélectionnez une instance Ollama",
|
||||||
"Select Documents": "Sélectionnez des documents",
|
"Select Documents": "Sélectionnez des documents",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Sélectionnez un modèle",
|
"Select model": "Sélectionnez un modèle",
|
||||||
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
|
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
|
||||||
"Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images",
|
"Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "Définir la voix",
|
"Set Voice": "Définir la voix",
|
||||||
"Settings": "Paramètres",
|
"Settings": "Paramètres",
|
||||||
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
||||||
"Settings updated successfully": "Les paramètres ont été mis à jour avec succès",
|
|
||||||
"Share": "Partager",
|
"Share": "Partager",
|
||||||
"Share Chat": "Partage de conversation",
|
"Share Chat": "Partage de conversation",
|
||||||
"Share to OpenWebUI Community": "Partager avec la communauté OpenWebUI",
|
"Share to OpenWebUI Community": "Partager avec la communauté OpenWebUI",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "Dites-nous en plus à ce sujet : ",
|
"Tell us more:": "Dites-nous en plus à ce sujet : ",
|
||||||
"Temperature": "Température",
|
"Temperature": "Température",
|
||||||
"Template": "Template",
|
"Template": "Template",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Complétion de texte",
|
"Text Completion": "Complétion de texte",
|
||||||
"Text-to-Speech Engine": "Moteur de synthèse vocale",
|
"Text-to-Speech Engine": "Moteur de synthèse vocale",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Cette action ne peut pas être annulée. Souhaitez-vous continuer ?",
|
"This action cannot be undone. Do you wish to continue?": "Cette action ne peut pas être annulée. Souhaitez-vous continuer ?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Cela garantit que vos conversations précieuses soient sauvegardées en toute sécurité dans votre base de données backend. Merci !",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Cela garantit que vos conversations précieuses soient sauvegardées en toute sécurité dans votre base de données backend. Merci !",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.",
|
||||||
"This setting does not sync across browsers or devices.": "Ce paramètre ne se synchronise pas entre les navigateurs ou les appareils.",
|
|
||||||
"This will delete": "Cela supprimera",
|
"This will delete": "Cela supprimera",
|
||||||
"Thorough explanation": "Explication approfondie",
|
"Thorough explanation": "Explication approfondie",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "API Web",
|
"Web API": "API Web",
|
||||||
"Web Loader Settings": "Paramètres du chargeur web",
|
"Web Loader Settings": "Paramètres du chargeur web",
|
||||||
"Web Params": "Paramètres Web",
|
|
||||||
"Web Search": "Recherche Web",
|
"Web Search": "Recherche Web",
|
||||||
"Web Search Engine": "Moteur de recherche Web",
|
"Web Search Engine": "Moteur de recherche Web",
|
||||||
"Webhook URL": "URL du webhook",
|
"Webhook URL": "URL du webhook",
|
||||||
"WebUI Settings": "Paramètres de WebUI",
|
"WebUI Settings": "Paramètres de WebUI",
|
||||||
"WebUI will make requests to": "WebUI effectuera des requêtes vers",
|
"WebUI will make requests to": "WebUI effectuera des requêtes vers",
|
||||||
"What’s New in": "Quoi de neuf",
|
"What’s New in": "Quoi de neuf",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Lorsque l'historique est désactivé, les nouvelles conversations sur ce navigateur ne seront pas enregistrés dans votre historique sur aucun de vos appareils.",
|
|
||||||
"Whisper (Local)": "Whisper (local)",
|
"Whisper (Local)": "Whisper (local)",
|
||||||
"Widescreen Mode": "Mode Grand Écran",
|
"Widescreen Mode": "Mode Grand Écran",
|
||||||
"Workspace": "Espace de travail",
|
"Workspace": "Espace de travail",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Tous les Utilisateurs",
|
"All Users": "Tous les Utilisateurs",
|
||||||
"Allow": "Autoriser",
|
"Allow": "Autoriser",
|
||||||
"Allow Chat Deletion": "Autoriser la suppression de l'historique de chat",
|
"Allow Chat Deletion": "Autoriser la suppression de l'historique de chat",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Autoriser les voix non locales",
|
"Allow non-local voices": "Autoriser les voix non locales",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Autoriser l'emplacement de l'utilisateur",
|
"Allow User Location": "Autoriser l'emplacement de l'utilisateur",
|
||||||
"Allow Voice Interruption in Call": "Autoriser l'interruption vocale pendant un appel",
|
"Allow Voice Interruption in Call": "Autoriser l'interruption vocale pendant un appel",
|
||||||
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Les paramètres audio ont été mis à jour avec succès",
|
"Audio settings updated successfully": "Les paramètres audio ont été mis à jour avec succès",
|
||||||
"August": "Août",
|
"August": "Août",
|
||||||
"Auto-playback response": "Réponse de lecture automatique",
|
"Auto-playback response": "Réponse de lecture automatique",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Chaîne d'authentification de l'API",
|
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Chaîne d'authentification de l'API",
|
||||||
"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.",
|
"AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Bulles de discussion",
|
"Chat Bubble UI": "Bulles de discussion",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Direction du chat",
|
"Chat direction": "Direction du chat",
|
||||||
"Chat History": "Historique de discussion",
|
|
||||||
"Chat History is off for this browser.": "L'historique de chat est désactivé pour ce navigateur",
|
|
||||||
"Chats": "Conversations",
|
"Chats": "Conversations",
|
||||||
"Check Again": "Vérifiez à nouveau.",
|
"Check Again": "Vérifiez à nouveau.",
|
||||||
"Check for updates": "Vérifier les mises à jour disponibles",
|
"Check for updates": "Vérifier les mises à jour disponibles",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Cliquez ici pour sélectionner un fichier CSV.",
|
"Click here to select a csv file.": "Cliquez ici pour sélectionner un fichier CSV.",
|
||||||
"Click here to select a py file.": "Cliquez ici pour sélectionner un fichier .py.",
|
"Click here to select a py file.": "Cliquez ici pour sélectionner un fichier .py.",
|
||||||
"Click here to select documents.": "Cliquez ici pour sélectionner les documents.",
|
"Click here to select documents.": "Cliquez ici pour sélectionner les documents.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "cliquez ici.",
|
"click here.": "cliquez ici.",
|
||||||
"Click on the user role button to change a user's role.": "Cliquez sur le bouton de rôle d'utilisateur pour modifier le rôle d'un utilisateur.",
|
"Click on the user role button to change a user's role.": "Cliquez sur le bouton de rôle d'utilisateur pour modifier le rôle d'un utilisateur.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL de base ComfyUI",
|
"ComfyUI Base URL": "URL de base ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "L'URL de base ComfyUI est requise.",
|
"ComfyUI Base URL is required.": "L'URL de base ComfyUI est requise.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Commande",
|
"Command": "Commande",
|
||||||
"Concurrent Requests": "Demandes concurrentes",
|
"Concurrent Requests": "Demandes concurrentes",
|
||||||
"Confirm": "Confirmer",
|
"Confirm": "Confirmer",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Base de données",
|
"Database": "Base de données",
|
||||||
"December": "Décembre",
|
"December": "Décembre",
|
||||||
"Default": "Par défaut",
|
"Default": "Par défaut",
|
||||||
"Default (Automatic1111)": "Par défaut (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Par défaut (Sentence Transformers)",
|
"Default (SentenceTransformers)": "Par défaut (Sentence Transformers)",
|
||||||
"Default Model": "Modèle standard",
|
"Default Model": "Modèle standard",
|
||||||
"Default model updated": "Modèle par défaut mis à jour",
|
"Default model updated": "Modèle par défaut mis à jour",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Document",
|
"Document": "Document",
|
||||||
"Document Settings": "Paramètres du document",
|
|
||||||
"Documentation": "Documentation",
|
"Documentation": "Documentation",
|
||||||
"Documents": "Documents",
|
"Documents": "Documents",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne fait aucune connexion externe et garde vos données en sécurité sur votre serveur local.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne fait aucune connexion externe et garde vos données en sécurité sur votre serveur local.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Modèle d'embedding",
|
"Embedding Model": "Modèle d'embedding",
|
||||||
"Embedding Model Engine": "Moteur de modèle d'encodage",
|
"Embedding Model Engine": "Moteur de modèle d'encodage",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Modèle d'encodage défini sur « {{embedding_model}} »",
|
"Embedding model set to \"{{embedding_model}}\"": "Modèle d'encodage défini sur « {{embedding_model}} »",
|
||||||
"Enable Chat History": "Activer l'historique de conversation",
|
|
||||||
"Enable Community Sharing": "Activer le partage communautaire",
|
"Enable Community Sharing": "Activer le partage communautaire",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Activer les nouvelles inscriptions",
|
"Enable New Sign Ups": "Activer les nouvelles inscriptions",
|
||||||
"Enable Web Search": "Activer la recherche web",
|
"Enable Web Search": "Activer la recherche web",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE",
|
"Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE",
|
||||||
"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
|
||||||
"Enter language codes": "Entrez les codes de langue",
|
"Enter language codes": "Entrez les codes de langue",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Entrez l'étiquette du modèle (par ex. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Entrez l'étiquette du modèle (par ex. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Entrez le nombre de pas (par ex. 50)",
|
"Enter Number of Steps (e.g. 50)": "Entrez le nombre de pas (par ex. 50)",
|
||||||
"Enter Score": "Entrez votre score",
|
"Enter Score": "Entrez votre score",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Réalisé par la communauté OpenWebUI",
|
"Made by OpenWebUI Community": "Réalisé par la communauté OpenWebUI",
|
||||||
"Make sure to enclose them with": "Assurez-vous de les inclure dans",
|
"Make sure to enclose them with": "Assurez-vous de les inclure dans",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Gérer",
|
"Manage": "Gérer",
|
||||||
"Manage Models": "Gérer les Modèles",
|
"Manage Models": "Gérer les Modèles",
|
||||||
"Manage Ollama Models": "Gérer les modèles Ollama",
|
"Manage Ollama Models": "Gérer les modèles Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "La mémoire a été effacée avec succès",
|
"Memory cleared successfully": "La mémoire a été effacée avec succès",
|
||||||
"Memory deleted successfully": "La mémoire a été supprimée avec succès",
|
"Memory deleted successfully": "La mémoire a été supprimée avec succès",
|
||||||
"Memory updated successfully": "La mémoire a été mise à jour avec succès",
|
"Memory updated successfully": "La mémoire a été mise à jour avec succès",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir le chat partagé.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir le chat partagé.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Score minimal",
|
"Minimum Score": "Score minimal",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Oops ! Il y a eu une erreur dans la réponse précédente. Veuillez réessayer ou contacter l'administrateur.",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Oops ! Il y a eu une erreur dans la réponse précédente. Veuillez réessayer ou contacter l'administrateur.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups\u00a0! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups\u00a0! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Ouvrir une nouvelle discussion",
|
"Open new chat": "Ouvrir une nouvelle discussion",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La version Open WebUI (v{{OPEN_WEBUI_VERSION}}) est inférieure à la version requise (v{{REQUIRED_VERSION}})",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La version Open WebUI (v{{OPEN_WEBUI_VERSION}}) est inférieure à la version requise (v{{REQUIRED_VERSION}})",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "Sélectionnez un modèle de base",
|
"Select a base model": "Sélectionnez un modèle de base",
|
||||||
"Select a engine": "Sélectionnez un moteur",
|
"Select a engine": "Sélectionnez un moteur",
|
||||||
"Select a function": "Sélectionnez une fonction",
|
"Select a function": "Sélectionnez une fonction",
|
||||||
"Select a mode": "Choisissez un mode",
|
|
||||||
"Select a model": "Sélectionnez un modèle",
|
"Select a model": "Sélectionnez un modèle",
|
||||||
"Select a pipeline": "Sélectionnez un pipeline",
|
"Select a pipeline": "Sélectionnez un pipeline",
|
||||||
"Select a pipeline url": "Sélectionnez l'URL du pipeline",
|
"Select a pipeline url": "Sélectionnez l'URL du pipeline",
|
||||||
"Select a tool": "Sélectionnez un outil",
|
"Select a tool": "Sélectionnez un outil",
|
||||||
"Select an Ollama instance": "Sélectionnez une instance Ollama",
|
"Select an Ollama instance": "Sélectionnez une instance Ollama",
|
||||||
"Select Documents": "Sélectionnez des documents",
|
"Select Documents": "Sélectionnez des documents",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Sélectionnez un modèle",
|
"Select model": "Sélectionnez un modèle",
|
||||||
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
|
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
|
||||||
"Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images",
|
"Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "Définir la voix",
|
"Set Voice": "Définir la voix",
|
||||||
"Settings": "Paramètres",
|
"Settings": "Paramètres",
|
||||||
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
||||||
"Settings updated successfully": "Les paramètres ont été mis à jour avec succès",
|
|
||||||
"Share": "Partager",
|
"Share": "Partager",
|
||||||
"Share Chat": "Partage de conversation",
|
"Share Chat": "Partage de conversation",
|
||||||
"Share to OpenWebUI Community": "Partager avec la communauté OpenWebUI",
|
"Share to OpenWebUI Community": "Partager avec la communauté OpenWebUI",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "Dites-nous en plus à ce sujet : ",
|
"Tell us more:": "Dites-nous en plus à ce sujet : ",
|
||||||
"Temperature": "Température",
|
"Temperature": "Température",
|
||||||
"Template": "Template",
|
"Template": "Template",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Complétion de texte",
|
"Text Completion": "Complétion de texte",
|
||||||
"Text-to-Speech Engine": "Moteur de synthèse vocale",
|
"Text-to-Speech Engine": "Moteur de synthèse vocale",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Cette action ne peut pas être annulée. Souhaitez-vous continuer ?",
|
"This action cannot be undone. Do you wish to continue?": "Cette action ne peut pas être annulée. Souhaitez-vous continuer ?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Cela garantit que vos conversations précieuses soient sauvegardées en toute sécurité dans votre base de données backend. Merci !",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Cela garantit que vos conversations précieuses soient sauvegardées en toute sécurité dans votre base de données backend. Merci !",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.",
|
||||||
"This setting does not sync across browsers or devices.": "Ce paramètre ne se synchronise pas entre les navigateurs ou les appareils.",
|
|
||||||
"This will delete": "Cela supprimera",
|
"This will delete": "Cela supprimera",
|
||||||
"Thorough explanation": "Explication approfondie",
|
"Thorough explanation": "Explication approfondie",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "API Web",
|
"Web API": "API Web",
|
||||||
"Web Loader Settings": "Paramètres du chargeur web",
|
"Web Loader Settings": "Paramètres du chargeur web",
|
||||||
"Web Params": "Paramètres Web",
|
|
||||||
"Web Search": "Recherche Web",
|
"Web Search": "Recherche Web",
|
||||||
"Web Search Engine": "Moteur de recherche Web",
|
"Web Search Engine": "Moteur de recherche Web",
|
||||||
"Webhook URL": "URL du webhook",
|
"Webhook URL": "URL du webhook",
|
||||||
"WebUI Settings": "Paramètres de WebUI",
|
"WebUI Settings": "Paramètres de WebUI",
|
||||||
"WebUI will make requests to": "WebUI effectuera des requêtes vers",
|
"WebUI will make requests to": "WebUI effectuera des requêtes vers",
|
||||||
"What’s New in": "Quoi de neuf",
|
"What’s New in": "Quoi de neuf",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Lorsque l'historique est désactivé, les nouvelles conversations sur ce navigateur ne seront pas enregistrés dans votre historique sur aucun de vos appareils.",
|
|
||||||
"Whisper (Local)": "Whisper (local)",
|
"Whisper (Local)": "Whisper (local)",
|
||||||
"Widescreen Mode": "Mode Grand Écran",
|
"Widescreen Mode": "Mode Grand Écran",
|
||||||
"Workspace": "Espace de travail",
|
"Workspace": "Espace de travail",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "כל המשתמשים",
|
"All Users": "כל המשתמשים",
|
||||||
"Allow": "אפשר",
|
"Allow": "אפשר",
|
||||||
"Allow Chat Deletion": "אפשר מחיקת צ'אט",
|
"Allow Chat Deletion": "אפשר מחיקת צ'אט",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "תווים אלפאנומריים ומקפים",
|
"alphanumeric characters and hyphens": "תווים אלפאנומריים ומקפים",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "אוגוסט",
|
"August": "אוגוסט",
|
||||||
"Auto-playback response": "תגובת השמעה אוטומטית",
|
"Auto-playback response": "תגובת השמעה אוטומטית",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "כתובת URL בסיסית של AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "כתובת URL בסיסית של AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "נדרשת כתובת URL בסיסית של AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL is required.": "נדרשת כתובת URL בסיסית של AUTOMATIC1111",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "UI של תיבת הדיבור",
|
"Chat Bubble UI": "UI של תיבת הדיבור",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "כיוון צ'אט",
|
"Chat direction": "כיוון צ'אט",
|
||||||
"Chat History": "היסטוריית צ'אט",
|
|
||||||
"Chat History is off for this browser.": "היסטוריית הצ'אט כבויה לדפדפן זה.",
|
|
||||||
"Chats": "צ'אטים",
|
"Chats": "צ'אטים",
|
||||||
"Check Again": "בדוק שוב",
|
"Check Again": "בדוק שוב",
|
||||||
"Check for updates": "בדוק עדכונים",
|
"Check for updates": "בדוק עדכונים",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "לחץ כאן לבחירת קובץ csv.",
|
"Click here to select a csv file.": "לחץ כאן לבחירת קובץ csv.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "לחץ כאן לבחירת מסמכים.",
|
"Click here to select documents.": "לחץ כאן לבחירת מסמכים.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "לחץ כאן.",
|
"click here.": "לחץ כאן.",
|
||||||
"Click on the user role button to change a user's role.": "לחץ על כפתור תפקיד המשתמש כדי לשנות את תפקיד המשתמש.",
|
"Click on the user role button to change a user's role.": "לחץ על כפתור תפקיד המשתמש כדי לשנות את תפקיד המשתמש.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "כתובת URL בסיסית של ComfyUI",
|
"ComfyUI Base URL": "כתובת URL בסיסית של ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "נדרשת כתובת URL בסיסית של ComfyUI",
|
"ComfyUI Base URL is required.": "נדרשת כתובת URL בסיסית של ComfyUI",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "פקודה",
|
"Command": "פקודה",
|
||||||
"Concurrent Requests": "בקשות בו-זמניות",
|
"Concurrent Requests": "בקשות בו-זמניות",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "מסד נתונים",
|
"Database": "מסד נתונים",
|
||||||
"December": "דצמבר",
|
"December": "דצמבר",
|
||||||
"Default": "ברירת מחדל",
|
"Default": "ברירת מחדל",
|
||||||
"Default (Automatic1111)": "ברירת מחדל (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "ברירת מחדל (SentenceTransformers)",
|
"Default (SentenceTransformers)": "ברירת מחדל (SentenceTransformers)",
|
||||||
"Default Model": "מודל ברירת מחדל",
|
"Default Model": "מודל ברירת מחדל",
|
||||||
"Default model updated": "המודל המוגדר כברירת מחדל עודכן",
|
"Default model updated": "המודל המוגדר כברירת מחדל עודכן",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "מסמך",
|
"Document": "מסמך",
|
||||||
"Document Settings": "הגדרות מסמך",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "מסמכים",
|
"Documents": "מסמכים",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "לא מבצע חיבורים חיצוניים, והנתונים שלך נשמרים באופן מאובטח בשרת המקומי שלך.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "לא מבצע חיבורים חיצוניים, והנתונים שלך נשמרים באופן מאובטח בשרת המקומי שלך.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "מודל הטמעה",
|
"Embedding Model": "מודל הטמעה",
|
||||||
"Embedding Model Engine": "מנוע מודל הטמעה",
|
"Embedding Model Engine": "מנוע מודל הטמעה",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "מודל ההטמעה הוגדר ל-\"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "מודל ההטמעה הוגדר ל-\"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "הפעל היסטוריית צ'אט",
|
|
||||||
"Enable Community Sharing": "הפיכת שיתוף קהילה לזמין",
|
"Enable Community Sharing": "הפיכת שיתוף קהילה לזמין",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "אפשר הרשמות חדשות",
|
"Enable New Sign Ups": "אפשר הרשמות חדשות",
|
||||||
"Enable Web Search": "הפיכת חיפוש באינטרנט לזמין",
|
"Enable Web Search": "הפיכת חיפוש באינטרנט לזמין",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "הזן את מזהה מנוע PSE של Google",
|
"Enter Google PSE Engine Id": "הזן את מזהה מנוע PSE של Google",
|
||||||
"Enter Image Size (e.g. 512x512)": "הזן גודל תמונה (למשל 512x512)",
|
"Enter Image Size (e.g. 512x512)": "הזן גודל תמונה (למשל 512x512)",
|
||||||
"Enter language codes": "הזן קודי שפה",
|
"Enter language codes": "הזן קודי שפה",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "הזן תג מודל (למשל {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "הזן תג מודל (למשל {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "הזן מספר שלבים (למשל 50)",
|
"Enter Number of Steps (e.g. 50)": "הזן מספר שלבים (למשל 50)",
|
||||||
"Enter Score": "הזן ציון",
|
"Enter Score": "הזן ציון",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "נוצר על ידי קהילת OpenWebUI",
|
"Made by OpenWebUI Community": "נוצר על ידי קהילת OpenWebUI",
|
||||||
"Make sure to enclose them with": "ודא להקיף אותם עם",
|
"Make sure to enclose them with": "ודא להקיף אותם עם",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "נהל מודלים",
|
"Manage Models": "נהל מודלים",
|
||||||
"Manage Ollama Models": "נהל מודלים של Ollama",
|
"Manage Ollama Models": "נהל מודלים של Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "הודעות שתשלח לאחר יצירת הקישור לא ישותפו. משתמשים עם כתובת האתר יוכלו לצפות בצ'אט המשותף.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "הודעות שתשלח לאחר יצירת הקישור לא ישותפו. משתמשים עם כתובת האתר יוכלו לצפות בצ'אט המשותף.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "ציון מינימלי",
|
"Minimum Score": "ציון מינימלי",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "אופס! נראה שהכתובת URL אינה תקינה. אנא בדוק שוב ונסה שנית.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "אופס! נראה שהכתובת URL אינה תקינה. אנא בדוק שוב ונסה שנית.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "אופס! אתה משתמש בשיטה לא נתמכת (רק חזית). אנא שרת את ממשק המשתמש האינטרנטי מהשרת האחורי.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "אופס! אתה משתמש בשיטה לא נתמכת (רק חזית). אנא שרת את ממשק המשתמש האינטרנטי מהשרת האחורי.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "פתח צ'אט חדש",
|
"Open new chat": "פתח צ'אט חדש",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "בחירת מודל בסיס",
|
"Select a base model": "בחירת מודל בסיס",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "בחר מצב",
|
|
||||||
"Select a model": "בחר מודל",
|
"Select a model": "בחר מודל",
|
||||||
"Select a pipeline": "בחר קו צינור",
|
"Select a pipeline": "בחר קו צינור",
|
||||||
"Select a pipeline url": "בחר כתובת URL של קו צינור",
|
"Select a pipeline url": "בחר כתובת URL של קו צינור",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "בחר מופע של Ollama",
|
"Select an Ollama instance": "בחר מופע של Ollama",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "בחר מודל",
|
"Select model": "בחר מודל",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "דגמים נבחרים אינם תומכים בקלט תמונה",
|
"Selected model(s) do not support image inputs": "דגמים נבחרים אינם תומכים בקלט תמונה",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "הגדר קול",
|
"Set Voice": "הגדר קול",
|
||||||
"Settings": "הגדרות",
|
"Settings": "הגדרות",
|
||||||
"Settings saved successfully!": "ההגדרות נשמרו בהצלחה!",
|
"Settings saved successfully!": "ההגדרות נשמרו בהצלחה!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "שתף",
|
"Share": "שתף",
|
||||||
"Share Chat": "שתף צ'אט",
|
"Share Chat": "שתף צ'אט",
|
||||||
"Share to OpenWebUI Community": "שתף לקהילת OpenWebUI",
|
"Share to OpenWebUI Community": "שתף לקהילת OpenWebUI",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "תרשמו יותר:",
|
"Tell us more:": "תרשמו יותר:",
|
||||||
"Temperature": "טמפרטורה",
|
"Temperature": "טמפרטורה",
|
||||||
"Template": "תבנית",
|
"Template": "תבנית",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "תחילת טקסט",
|
"Text Completion": "תחילת טקסט",
|
||||||
"Text-to-Speech Engine": "מנוע טקסט לדיבור",
|
"Text-to-Speech Engine": "מנוע טקסט לדיבור",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "פעולה זו מבטיחה שהשיחות בעלות הערך שלך יישמרו באופן מאובטח במסד הנתונים העורפי שלך. תודה!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "פעולה זו מבטיחה שהשיחות בעלות הערך שלך יישמרו באופן מאובטח במסד הנתונים העורפי שלך. תודה!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "הגדרה זו אינה מסתנכרנת בין דפדפנים או מכשירים.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "תיאור מפורט",
|
"Thorough explanation": "תיאור מפורט",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "רשת",
|
"Web": "רשת",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "הגדרות טעינת אתר",
|
"Web Loader Settings": "הגדרות טעינת אתר",
|
||||||
"Web Params": "פרמטרים Web",
|
|
||||||
"Web Search": "חיפוש באינטרנט",
|
"Web Search": "חיפוש באינטרנט",
|
||||||
"Web Search Engine": "מנוע חיפוש באינטרנט",
|
"Web Search Engine": "מנוע חיפוש באינטרנט",
|
||||||
"Webhook URL": "URL Webhook",
|
"Webhook URL": "URL Webhook",
|
||||||
"WebUI Settings": "הגדרות WebUI",
|
"WebUI Settings": "הגדרות WebUI",
|
||||||
"WebUI will make requests to": "WebUI יבקש לבקש",
|
"WebUI will make requests to": "WebUI יבקש לבקש",
|
||||||
"What’s New in": "מה חדש ב",
|
"What’s New in": "מה חדש ב",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "כאשר ההיסטוריה מושבתת, צ'אטים חדשים בדפדפן זה לא יופיעו בהיסטוריה שלך באף אחד מהמכשירים שלך.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "סביבה",
|
"Workspace": "סביבה",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "सभी उपयोगकर्ता",
|
"All Users": "सभी उपयोगकर्ता",
|
||||||
"Allow": "अनुमति दें",
|
"Allow": "अनुमति दें",
|
||||||
"Allow Chat Deletion": "चैट हटाने की अनुमति दें",
|
"Allow Chat Deletion": "चैट हटाने की अनुमति दें",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "अल्फ़ान्यूमेरिक वर्ण और हाइफ़न",
|
"alphanumeric characters and hyphens": "अल्फ़ान्यूमेरिक वर्ण और हाइफ़न",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "अगस्त",
|
"August": "अगस्त",
|
||||||
"Auto-playback response": "ऑटो-प्लेबैक प्रतिक्रिया",
|
"Auto-playback response": "ऑटो-प्लेबैक प्रतिक्रिया",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 बेस यूआरएल",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 बेस यूआरएल",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 का बेस यूआरएल आवश्यक है।",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 का बेस यूआरएल आवश्यक है।",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "चैट बॉली",
|
"Chat Bubble UI": "चैट बॉली",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "चैट दिशा",
|
"Chat direction": "चैट दिशा",
|
||||||
"Chat History": "चैट का इतिहास",
|
|
||||||
"Chat History is off for this browser.": "इस ब्राउज़र के लिए चैट इतिहास बंद है।",
|
|
||||||
"Chats": "सभी चैट",
|
"Chats": "सभी चैट",
|
||||||
"Check Again": "फिर से जाँचो",
|
"Check Again": "फिर से जाँचो",
|
||||||
"Check for updates": "अपडेट के लिए जाँच",
|
"Check for updates": "अपडेट के लिए जाँच",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "सीएसवी फ़ाइल का चयन करने के लिए यहां क्लिक करें।",
|
"Click here to select a csv file.": "सीएसवी फ़ाइल का चयन करने के लिए यहां क्लिक करें।",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "दस्तावेज़ चुनने के लिए यहां क्लिक करें।",
|
"Click here to select documents.": "दस्तावेज़ चुनने के लिए यहां क्लिक करें।",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "यहाँ क्लिक करें।",
|
"click here.": "यहाँ क्लिक करें।",
|
||||||
"Click on the user role button to change a user's role.": "उपयोगकर्ता की भूमिका बदलने के लिए उपयोगकर्ता भूमिका बटन पर क्लिक करें।",
|
"Click on the user role button to change a user's role.": "उपयोगकर्ता की भूमिका बदलने के लिए उपयोगकर्ता भूमिका बटन पर क्लिक करें।",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI बेस यूआरएल",
|
"ComfyUI Base URL": "ComfyUI बेस यूआरएल",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI का बेस यूआरएल आवश्यक है",
|
"ComfyUI Base URL is required.": "ComfyUI का बेस यूआरएल आवश्यक है",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "कमांड",
|
"Command": "कमांड",
|
||||||
"Concurrent Requests": "समवर्ती अनुरोध",
|
"Concurrent Requests": "समवर्ती अनुरोध",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "डेटाबेस",
|
"Database": "डेटाबेस",
|
||||||
"December": "डिसेंबर",
|
"December": "डिसेंबर",
|
||||||
"Default": "डिफ़ॉल्ट",
|
"Default": "डिफ़ॉल्ट",
|
||||||
"Default (Automatic1111)": "डिफ़ॉल्ट (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "डिफ़ॉल्ट (SentenceTransformers)",
|
"Default (SentenceTransformers)": "डिफ़ॉल्ट (SentenceTransformers)",
|
||||||
"Default Model": "डिफ़ॉल्ट मॉडल",
|
"Default Model": "डिफ़ॉल्ट मॉडल",
|
||||||
"Default model updated": "डिफ़ॉल्ट मॉडल अपडेट किया गया",
|
"Default model updated": "डिफ़ॉल्ट मॉडल अपडेट किया गया",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "दस्तावेज़",
|
"Document": "दस्तावेज़",
|
||||||
"Document Settings": "दस्तावेज़ सेटिंग्स",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "दस्तावेज़",
|
"Documents": "दस्तावेज़",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "कोई बाहरी कनेक्शन नहीं बनाता है, और आपका डेटा आपके स्थानीय रूप से होस्ट किए गए सर्वर पर सुरक्षित रूप से रहता है।",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "कोई बाहरी कनेक्शन नहीं बनाता है, और आपका डेटा आपके स्थानीय रूप से होस्ट किए गए सर्वर पर सुरक्षित रूप से रहता है।",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "मॉडेल अनुकूलन",
|
"Embedding Model": "मॉडेल अनुकूलन",
|
||||||
"Embedding Model Engine": "एंबेडिंग मॉडल इंजन",
|
"Embedding Model Engine": "एंबेडिंग मॉडल इंजन",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "एम्बेडिंग मॉडल को \"{{embedding_model}}\" पर सेट किया गया",
|
"Embedding model set to \"{{embedding_model}}\"": "एम्बेडिंग मॉडल को \"{{embedding_model}}\" पर सेट किया गया",
|
||||||
"Enable Chat History": "चैट इतिहास सक्रिय करें",
|
|
||||||
"Enable Community Sharing": "समुदाय साझाकरण सक्षम करें",
|
"Enable Community Sharing": "समुदाय साझाकरण सक्षम करें",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "नए साइन अप सक्रिय करें",
|
"Enable New Sign Ups": "नए साइन अप सक्रिय करें",
|
||||||
"Enable Web Search": "वेब खोज सक्षम करें",
|
"Enable Web Search": "वेब खोज सक्षम करें",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Google PSE इंजन आईडी दर्ज करें",
|
"Enter Google PSE Engine Id": "Google PSE इंजन आईडी दर्ज करें",
|
||||||
"Enter Image Size (e.g. 512x512)": "छवि का आकार दर्ज करें (उदा. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "छवि का आकार दर्ज करें (उदा. 512x512)",
|
||||||
"Enter language codes": "भाषा कोड दर्ज करें",
|
"Enter language codes": "भाषा कोड दर्ज करें",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Model tag दर्ज करें (उदा. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Model tag दर्ज करें (उदा. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "चरणों की संख्या दर्ज करें (उदा. 50)",
|
"Enter Number of Steps (e.g. 50)": "चरणों की संख्या दर्ज करें (उदा. 50)",
|
||||||
"Enter Score": "स्कोर दर्ज करें",
|
"Enter Score": "स्कोर दर्ज करें",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "OpenWebUI समुदाय द्वारा निर्मित",
|
"Made by OpenWebUI Community": "OpenWebUI समुदाय द्वारा निर्मित",
|
||||||
"Make sure to enclose them with": "उन्हें संलग्न करना सुनिश्चित करें",
|
"Make sure to enclose them with": "उन्हें संलग्न करना सुनिश्चित करें",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "मॉडल प्रबंधित करें",
|
"Manage Models": "मॉडल प्रबंधित करें",
|
||||||
"Manage Ollama Models": "Ollama मॉडल प्रबंधित करें",
|
"Manage Ollama Models": "Ollama मॉडल प्रबंधित करें",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "अपना लिंक बनाने के बाद आपके द्वारा भेजे गए संदेश साझा नहीं किए जाएंगे। यूआरएल वाले यूजर्स शेयर की गई चैट देख पाएंगे।",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "अपना लिंक बनाने के बाद आपके द्वारा भेजे गए संदेश साझा नहीं किए जाएंगे। यूआरएल वाले यूजर्स शेयर की गई चैट देख पाएंगे।",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "न्यूनतम स्कोर",
|
"Minimum Score": "न्यूनतम स्कोर",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "उफ़! ऐसा लगता है कि यूआरएल अमान्य है. कृपया दोबारा जांचें और पुनः प्रयास करें।",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "उफ़! ऐसा लगता है कि यूआरएल अमान्य है. कृपया दोबारा जांचें और पुनः प्रयास करें।",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "उफ़! आप एक असमर्थित विधि (केवल फ्रंटएंड) का उपयोग कर रहे हैं। कृपया बैकएंड से WebUI सर्वे करें।",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "उफ़! आप एक असमर्थित विधि (केवल फ्रंटएंड) का उपयोग कर रहे हैं। कृपया बैकएंड से WebUI सर्वे करें।",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "नई चैट खोलें",
|
"Open new chat": "नई चैट खोलें",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "एक आधार मॉडल का चयन करें",
|
"Select a base model": "एक आधार मॉडल का चयन करें",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "एक मोड चुनें",
|
|
||||||
"Select a model": "एक मॉडल चुनें",
|
"Select a model": "एक मॉडल चुनें",
|
||||||
"Select a pipeline": "एक पाइपलाइन का चयन करें",
|
"Select a pipeline": "एक पाइपलाइन का चयन करें",
|
||||||
"Select a pipeline url": "एक पाइपलाइन url चुनें",
|
"Select a pipeline url": "एक पाइपलाइन url चुनें",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "एक Ollama Instance चुनें",
|
"Select an Ollama instance": "एक Ollama Instance चुनें",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "मॉडल चुनें",
|
"Select model": "मॉडल चुनें",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "चयनित मॉडल छवि इनपुट का समर्थन नहीं करते हैं",
|
"Selected model(s) do not support image inputs": "चयनित मॉडल छवि इनपुट का समर्थन नहीं करते हैं",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "आवाज सेट करें",
|
"Set Voice": "आवाज सेट करें",
|
||||||
"Settings": "सेटिंग्स",
|
"Settings": "सेटिंग्स",
|
||||||
"Settings saved successfully!": "सेटिंग्स सफलतापूर्वक सहेजी गईं!",
|
"Settings saved successfully!": "सेटिंग्स सफलतापूर्वक सहेजी गईं!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "साझा करें",
|
"Share": "साझा करें",
|
||||||
"Share Chat": "चैट साझा करें",
|
"Share Chat": "चैट साझा करें",
|
||||||
"Share to OpenWebUI Community": "OpenWebUI समुदाय में साझा करें",
|
"Share to OpenWebUI Community": "OpenWebUI समुदाय में साझा करें",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "हमें और अधिक बताएँ:",
|
"Tell us more:": "हमें और अधिक बताएँ:",
|
||||||
"Temperature": "टेंपेरेचर",
|
"Temperature": "टेंपेरेचर",
|
||||||
"Template": "टेम्पलेट",
|
"Template": "टेम्पलेट",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "पाठ समापन",
|
"Text Completion": "पाठ समापन",
|
||||||
"Text-to-Speech Engine": "टेक्स्ट-टू-स्पीच इंजन",
|
"Text-to-Speech Engine": "टेक्स्ट-टू-स्पीच इंजन",
|
||||||
"Tfs Z": "टफ्स Z",
|
"Tfs Z": "टफ्स Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "यह सुनिश्चित करता है कि आपकी मूल्यवान बातचीत आपके बैकएंड डेटाबेस में सुरक्षित रूप से सहेजी गई है। धन्यवाद!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "यह सुनिश्चित करता है कि आपकी मूल्यवान बातचीत आपके बैकएंड डेटाबेस में सुरक्षित रूप से सहेजी गई है। धन्यवाद!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "यह सेटिंग सभी ब्राउज़रों या डिवाइसों में समन्वयित नहीं होती है",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "विस्तृत व्याख्या",
|
"Thorough explanation": "विस्तृत व्याख्या",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "वेब",
|
"Web": "वेब",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "वेब लोडर सेटिंग्स",
|
"Web Loader Settings": "वेब लोडर सेटिंग्स",
|
||||||
"Web Params": "वेब पैरामीटर",
|
|
||||||
"Web Search": "वेब खोज",
|
"Web Search": "वेब खोज",
|
||||||
"Web Search Engine": "वेब खोज इंजन",
|
"Web Search Engine": "वेब खोज इंजन",
|
||||||
"Webhook URL": "वेबहुक URL",
|
"Webhook URL": "वेबहुक URL",
|
||||||
"WebUI Settings": "WebUI सेटिंग्स",
|
"WebUI Settings": "WebUI सेटिंग्स",
|
||||||
"WebUI will make requests to": "WebUI अनुरोध करेगा",
|
"WebUI will make requests to": "WebUI अनुरोध करेगा",
|
||||||
"What’s New in": "इसमें नया क्या है",
|
"What’s New in": "इसमें नया क्या है",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "जब इतिहास बंद हो जाता है, तो इस ब्राउज़र पर नई चैट आपके किसी भी डिवाइस पर इतिहास में दिखाई नहीं देंगी।",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "वर्कस्पेस",
|
"Workspace": "वर्कस्पेस",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Svi korisnici",
|
"All Users": "Svi korisnici",
|
||||||
"Allow": "Dopusti",
|
"Allow": "Dopusti",
|
||||||
"Allow Chat Deletion": "Dopusti brisanje razgovora",
|
"Allow Chat Deletion": "Dopusti brisanje razgovora",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Dopusti nelokalne glasove",
|
"Allow non-local voices": "Dopusti nelokalne glasove",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "alfanumerički znakovi i crtice",
|
"alphanumeric characters and hyphens": "alfanumerički znakovi i crtice",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "Kolovoz",
|
"August": "Kolovoz",
|
||||||
"Auto-playback response": "Automatska reprodukcija odgovora",
|
"Auto-playback response": "Automatska reprodukcija odgovora",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 osnovni URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 osnovni URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "Potreban je AUTOMATIC1111 osnovni URL.",
|
"AUTOMATIC1111 Base URL is required.": "Potreban je AUTOMATIC1111 osnovni URL.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Razgovor - Bubble UI",
|
"Chat Bubble UI": "Razgovor - Bubble UI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Razgovor - smijer",
|
"Chat direction": "Razgovor - smijer",
|
||||||
"Chat History": "Povijest razgovora",
|
|
||||||
"Chat History is off for this browser.": "Povijest razgovora je isključena za ovaj preglednik.",
|
|
||||||
"Chats": "Razgovori",
|
"Chats": "Razgovori",
|
||||||
"Check Again": "Provjeri ponovo",
|
"Check Again": "Provjeri ponovo",
|
||||||
"Check for updates": "Provjeri za ažuriranja",
|
"Check for updates": "Provjeri za ažuriranja",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Kliknite ovdje da odaberete csv datoteku.",
|
"Click here to select a csv file.": "Kliknite ovdje da odaberete csv datoteku.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Kliknite ovdje da odaberete dokumente.",
|
"Click here to select documents.": "Kliknite ovdje da odaberete dokumente.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "kliknite ovdje.",
|
"click here.": "kliknite ovdje.",
|
||||||
"Click on the user role button to change a user's role.": "Kliknite na gumb uloge korisnika za promjenu uloge korisnika.",
|
"Click on the user role button to change a user's role.": "Kliknite na gumb uloge korisnika za promjenu uloge korisnika.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI osnovni URL",
|
"ComfyUI Base URL": "ComfyUI osnovni URL",
|
||||||
"ComfyUI Base URL is required.": "Potreban je ComfyUI osnovni URL.",
|
"ComfyUI Base URL is required.": "Potreban je ComfyUI osnovni URL.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Naredba",
|
"Command": "Naredba",
|
||||||
"Concurrent Requests": "Istodobni zahtjevi",
|
"Concurrent Requests": "Istodobni zahtjevi",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Baza podataka",
|
"Database": "Baza podataka",
|
||||||
"December": "Prosinac",
|
"December": "Prosinac",
|
||||||
"Default": "Zadano",
|
"Default": "Zadano",
|
||||||
"Default (Automatic1111)": "Zadano (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Zadano (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Zadano (SentenceTransformers)",
|
||||||
"Default Model": "Zadani model",
|
"Default Model": "Zadani model",
|
||||||
"Default model updated": "Zadani model ažuriran",
|
"Default model updated": "Zadani model ažuriran",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Dokument",
|
"Document": "Dokument",
|
||||||
"Document Settings": "Postavke dokumenta",
|
|
||||||
"Documentation": "Dokumentacija",
|
"Documentation": "Dokumentacija",
|
||||||
"Documents": "Dokumenti",
|
"Documents": "Dokumenti",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne uspostavlja vanjske veze, a vaši podaci ostaju sigurno na vašem lokalno hostiranom poslužitelju.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "ne uspostavlja vanjske veze, a vaši podaci ostaju sigurno na vašem lokalno hostiranom poslužitelju.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Embedding model",
|
"Embedding Model": "Embedding model",
|
||||||
"Embedding Model Engine": "Embedding model pogon",
|
"Embedding Model Engine": "Embedding model pogon",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Embedding model postavljen na \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Embedding model postavljen na \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Omogući povijest razgovora",
|
|
||||||
"Enable Community Sharing": "Omogući zajedničko korištenje zajednice",
|
"Enable Community Sharing": "Omogući zajedničko korištenje zajednice",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Omogući nove prijave",
|
"Enable New Sign Ups": "Omogući nove prijave",
|
||||||
"Enable Web Search": "Omogući pretraživanje weba",
|
"Enable Web Search": "Omogući pretraživanje weba",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Unesite ID Google PSE motora",
|
"Enter Google PSE Engine Id": "Unesite ID Google PSE motora",
|
||||||
"Enter Image Size (e.g. 512x512)": "Unesite veličinu slike (npr. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Unesite veličinu slike (npr. 512x512)",
|
||||||
"Enter language codes": "Unesite kodove jezika",
|
"Enter language codes": "Unesite kodove jezika",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Unesite oznaku modela (npr. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Unesite oznaku modela (npr. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Unesite broj koraka (npr. 50)",
|
"Enter Number of Steps (e.g. 50)": "Unesite broj koraka (npr. 50)",
|
||||||
"Enter Score": "Unesite ocjenu",
|
"Enter Score": "Unesite ocjenu",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Izradio OpenWebUI Community",
|
"Made by OpenWebUI Community": "Izradio OpenWebUI Community",
|
||||||
"Make sure to enclose them with": "Provjerite da ih zatvorite s",
|
"Make sure to enclose them with": "Provjerite da ih zatvorite s",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Upravljaj",
|
"Manage": "Upravljaj",
|
||||||
"Manage Models": "Upravljanje modelima",
|
"Manage Models": "Upravljanje modelima",
|
||||||
"Manage Ollama Models": "Upravljanje Ollama modelima",
|
"Manage Ollama Models": "Upravljanje Ollama modelima",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Poruke koje pošaljete nakon stvaranja veze neće se dijeliti. Korisnici s URL-om moći će vidjeti zajednički chat.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Poruke koje pošaljete nakon stvaranja veze neće se dijeliti. Korisnici s URL-om moći će vidjeti zajednički chat.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Minimalna ocjena",
|
"Minimum Score": "Minimalna ocjena",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Izgleda da je URL nevažeći. Molimo provjerite ponovno i pokušajte ponovo.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Izgleda da je URL nevažeći. Molimo provjerite ponovno i pokušajte ponovo.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Koristite nepodržanu metodu (samo frontend). Molimo poslužite WebUI s backend-a.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Koristite nepodržanu metodu (samo frontend). Molimo poslužite WebUI s backend-a.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Otvorite novi razgovor",
|
"Open new chat": "Otvorite novi razgovor",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "Odabir osnovnog modela",
|
"Select a base model": "Odabir osnovnog modela",
|
||||||
"Select a engine": "Odaberite pogon",
|
"Select a engine": "Odaberite pogon",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Odaberite način",
|
|
||||||
"Select a model": "Odaberite model",
|
"Select a model": "Odaberite model",
|
||||||
"Select a pipeline": "Odabir kanala",
|
"Select a pipeline": "Odabir kanala",
|
||||||
"Select a pipeline url": "Odabir URL-a kanala",
|
"Select a pipeline url": "Odabir URL-a kanala",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Odaberite Ollama instancu",
|
"Select an Ollama instance": "Odaberite Ollama instancu",
|
||||||
"Select Documents": "Odaberite dokumente",
|
"Select Documents": "Odaberite dokumente",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Odaberite model",
|
"Select model": "Odaberite model",
|
||||||
"Select only one model to call": "Odaberite samo jedan model za poziv",
|
"Select only one model to call": "Odaberite samo jedan model za poziv",
|
||||||
"Selected model(s) do not support image inputs": "Odabrani modeli ne podržavaju unose slika",
|
"Selected model(s) do not support image inputs": "Odabrani modeli ne podržavaju unose slika",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "Postavi glas",
|
"Set Voice": "Postavi glas",
|
||||||
"Settings": "Postavke",
|
"Settings": "Postavke",
|
||||||
"Settings saved successfully!": "Postavke su uspješno spremljene!",
|
"Settings saved successfully!": "Postavke su uspješno spremljene!",
|
||||||
"Settings updated successfully": "Postavke uspješno ažurirane",
|
|
||||||
"Share": "Podijeli",
|
"Share": "Podijeli",
|
||||||
"Share Chat": "Podijeli razgovor",
|
"Share Chat": "Podijeli razgovor",
|
||||||
"Share to OpenWebUI Community": "Podijeli u OpenWebUI zajednici",
|
"Share to OpenWebUI Community": "Podijeli u OpenWebUI zajednici",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "Recite nam više:",
|
"Tell us more:": "Recite nam više:",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Predložak",
|
"Template": "Predložak",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Dovršavanje teksta",
|
"Text Completion": "Dovršavanje teksta",
|
||||||
"Text-to-Speech Engine": "Stroj za pretvorbu teksta u govor",
|
"Text-to-Speech Engine": "Stroj za pretvorbu teksta u govor",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ovo osigurava da su vaši vrijedni razgovori sigurno spremljeni u bazu podataka. Hvala vam!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ovo osigurava da su vaši vrijedni razgovori sigurno spremljeni u bazu podataka. Hvala vam!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ovo je eksperimentalna značajka, možda neće funkcionirati prema očekivanjima i podložna je promjenama u bilo kojem trenutku.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ovo je eksperimentalna značajka, možda neće funkcionirati prema očekivanjima i podložna je promjenama u bilo kojem trenutku.",
|
||||||
"This setting does not sync across browsers or devices.": "Ova postavka se ne sinkronizira između preglednika ili uređaja.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "Detaljno objašnjenje",
|
"Thorough explanation": "Detaljno objašnjenje",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "Web API",
|
"Web API": "Web API",
|
||||||
"Web Loader Settings": "Postavke web učitavanja",
|
"Web Loader Settings": "Postavke web učitavanja",
|
||||||
"Web Params": "Web parametri",
|
|
||||||
"Web Search": "Internet pretraga",
|
"Web Search": "Internet pretraga",
|
||||||
"Web Search Engine": "Web tražilica",
|
"Web Search Engine": "Web tražilica",
|
||||||
"Webhook URL": "URL webkuke",
|
"Webhook URL": "URL webkuke",
|
||||||
"WebUI Settings": "WebUI postavke",
|
"WebUI Settings": "WebUI postavke",
|
||||||
"WebUI will make requests to": "WebUI će slati zahtjeve na",
|
"WebUI will make requests to": "WebUI će slati zahtjeve na",
|
||||||
"What’s New in": "Što je novo u",
|
"What’s New in": "Što je novo u",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kada je povijest isključena, novi razgovori na ovom pregledniku neće se pojaviti u vašoj povijesti na bilo kojem od vaših uređaja.",
|
|
||||||
"Whisper (Local)": "Whisper (lokalno)",
|
"Whisper (Local)": "Whisper (lokalno)",
|
||||||
"Widescreen Mode": "Mod širokog zaslona",
|
"Widescreen Mode": "Mod širokog zaslona",
|
||||||
"Workspace": "Radna ploča",
|
"Workspace": "Radna ploča",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Semua Pengguna",
|
"All Users": "Semua Pengguna",
|
||||||
"Allow": "Mengizinkan",
|
"Allow": "Mengizinkan",
|
||||||
"Allow Chat Deletion": "Izinkan Penghapusan Obrolan",
|
"Allow Chat Deletion": "Izinkan Penghapusan Obrolan",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Izinkan suara non-lokal",
|
"Allow non-local voices": "Izinkan suara non-lokal",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Izinkan Lokasi Pengguna",
|
"Allow User Location": "Izinkan Lokasi Pengguna",
|
||||||
"Allow Voice Interruption in Call": "Izinkan Gangguan Suara dalam Panggilan",
|
"Allow Voice Interruption in Call": "Izinkan Gangguan Suara dalam Panggilan",
|
||||||
"alphanumeric characters and hyphens": "karakter alfanumerik dan tanda hubung",
|
"alphanumeric characters and hyphens": "karakter alfanumerik dan tanda hubung",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Pengaturan audio berhasil diperbarui",
|
"Audio settings updated successfully": "Pengaturan audio berhasil diperbarui",
|
||||||
"August": "Agustus",
|
"August": "Agustus",
|
||||||
"Auto-playback response": "Respons pemutaran otomatis",
|
"Auto-playback response": "Respons pemutaran otomatis",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Auth String",
|
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Auth String",
|
||||||
"AUTOMATIC1111 Base URL": "URL Dasar AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL Dasar AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 URL Dasar diperlukan.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 URL Dasar diperlukan.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "UI Gelembung Obrolan",
|
"Chat Bubble UI": "UI Gelembung Obrolan",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Arah obrolan",
|
"Chat direction": "Arah obrolan",
|
||||||
"Chat History": "Riwayat Obrolan",
|
|
||||||
"Chat History is off for this browser.": "Riwayat Obrolan tidak aktif untuk browser ini.",
|
|
||||||
"Chats": "Obrolan",
|
"Chats": "Obrolan",
|
||||||
"Check Again": "Periksa Lagi",
|
"Check Again": "Periksa Lagi",
|
||||||
"Check for updates": "Memeriksa pembaruan",
|
"Check for updates": "Memeriksa pembaruan",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Klik di sini untuk memilih file csv.",
|
"Click here to select a csv file.": "Klik di sini untuk memilih file csv.",
|
||||||
"Click here to select a py file.": "Klik di sini untuk memilih file py.",
|
"Click here to select a py file.": "Klik di sini untuk memilih file py.",
|
||||||
"Click here to select documents.": "Klik di sini untuk memilih dokumen.",
|
"Click here to select documents.": "Klik di sini untuk memilih dokumen.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "Klik di sini.",
|
"click here.": "Klik di sini.",
|
||||||
"Click on the user role button to change a user's role.": "Klik tombol peran pengguna untuk mengubah peran pengguna.",
|
"Click on the user role button to change a user's role.": "Klik tombol peran pengguna untuk mengubah peran pengguna.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Izin menulis papan klip ditolak. Periksa pengaturan peramban Anda untuk memberikan akses yang diperlukan.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Izin menulis papan klip ditolak. Periksa pengaturan peramban Anda untuk memberikan akses yang diperlukan.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL Dasar ComfyUI",
|
"ComfyUI Base URL": "URL Dasar ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "URL Dasar ComfyUI diperlukan.",
|
"ComfyUI Base URL is required.": "URL Dasar ComfyUI diperlukan.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Perintah",
|
"Command": "Perintah",
|
||||||
"Concurrent Requests": "Permintaan Bersamaan",
|
"Concurrent Requests": "Permintaan Bersamaan",
|
||||||
"Confirm": "Konfirmasi",
|
"Confirm": "Konfirmasi",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Basis data",
|
"Database": "Basis data",
|
||||||
"December": "Desember",
|
"December": "Desember",
|
||||||
"Default": "Default",
|
"Default": "Default",
|
||||||
"Default (Automatic1111)": "Default (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Default (Pengubah Kalimat)",
|
"Default (SentenceTransformers)": "Default (Pengubah Kalimat)",
|
||||||
"Default Model": "Model Default",
|
"Default Model": "Model Default",
|
||||||
"Default model updated": "Model default diperbarui",
|
"Default model updated": "Model default diperbarui",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Dokumen",
|
"Document": "Dokumen",
|
||||||
"Document Settings": "Pengaturan Dokumen",
|
|
||||||
"Documentation": "Dokumentasi",
|
"Documentation": "Dokumentasi",
|
||||||
"Documents": "Dokumen",
|
"Documents": "Dokumen",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat koneksi eksternal apa pun, dan data Anda tetap aman di server yang dihosting secara lokal.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat koneksi eksternal apa pun, dan data Anda tetap aman di server yang dihosting secara lokal.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Model Penyematan",
|
"Embedding Model": "Model Penyematan",
|
||||||
"Embedding Model Engine": "Mesin Model Penyematan",
|
"Embedding Model Engine": "Mesin Model Penyematan",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Model penyematan diatur ke \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Model penyematan diatur ke \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Aktifkan Riwayat Obrolan",
|
|
||||||
"Enable Community Sharing": "Aktifkan Berbagi Komunitas",
|
"Enable Community Sharing": "Aktifkan Berbagi Komunitas",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Aktifkan Pendaftaran Baru",
|
"Enable New Sign Ups": "Aktifkan Pendaftaran Baru",
|
||||||
"Enable Web Search": "Aktifkan Pencarian Web",
|
"Enable Web Search": "Aktifkan Pencarian Web",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Masukkan Id Mesin Google PSE",
|
"Enter Google PSE Engine Id": "Masukkan Id Mesin Google PSE",
|
||||||
"Enter Image Size (e.g. 512x512)": "Masukkan Ukuran Gambar (mis. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Masukkan Ukuran Gambar (mis. 512x512)",
|
||||||
"Enter language codes": "Masukkan kode bahasa",
|
"Enter language codes": "Masukkan kode bahasa",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (misalnya {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (misalnya {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Masukkan Jumlah Langkah (mis. 50)",
|
"Enter Number of Steps (e.g. 50)": "Masukkan Jumlah Langkah (mis. 50)",
|
||||||
"Enter Score": "Masukkan Skor",
|
"Enter Score": "Masukkan Skor",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Dibuat oleh Komunitas OpenWebUI",
|
"Made by OpenWebUI Community": "Dibuat oleh Komunitas OpenWebUI",
|
||||||
"Make sure to enclose them with": "Pastikan untuk melampirkannya dengan",
|
"Make sure to enclose them with": "Pastikan untuk melampirkannya dengan",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Mengelola",
|
"Manage": "Mengelola",
|
||||||
"Manage Models": "Kelola Model",
|
"Manage Models": "Kelola Model",
|
||||||
"Manage Ollama Models": "Mengelola Model Ollama",
|
"Manage Ollama Models": "Mengelola Model Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Memori berhasil dihapus",
|
"Memory cleared successfully": "Memori berhasil dihapus",
|
||||||
"Memory deleted successfully": "Memori berhasil dihapus",
|
"Memory deleted successfully": "Memori berhasil dihapus",
|
||||||
"Memory updated successfully": "Memori berhasil diperbarui",
|
"Memory updated successfully": "Memori berhasil diperbarui",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Pesan yang Anda kirim setelah membuat tautan tidak akan dibagikan. Pengguna yang memiliki URL tersebut akan dapat melihat obrolan yang dibagikan.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Pesan yang Anda kirim setelah membuat tautan tidak akan dibagikan. Pengguna yang memiliki URL tersebut akan dapat melihat obrolan yang dibagikan.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Skor Minimum",
|
"Minimum Score": "Skor Minimum",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Sepertinya URL tidak valid. Mohon periksa ulang dan coba lagi.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Sepertinya URL tidak valid. Mohon periksa ulang dan coba lagi.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Ups! Ada kesalahan pada respons sebelumnya. Silakan coba lagi atau hubungi admin.",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Ups! Ada kesalahan pada respons sebelumnya. Silakan coba lagi atau hubungi admin.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Anda menggunakan metode yang tidak didukung (hanya untuk frontend). Silakan sajikan WebUI dari backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Anda menggunakan metode yang tidak didukung (hanya untuk frontend). Silakan sajikan WebUI dari backend.",
|
||||||
"Open AI (Dall-E)": "Buka AI (Dall-E)",
|
|
||||||
"Open new chat": "Buka obrolan baru",
|
"Open new chat": "Buka obrolan baru",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "Pilih model dasar",
|
"Select a base model": "Pilih model dasar",
|
||||||
"Select a engine": "Pilih mesin",
|
"Select a engine": "Pilih mesin",
|
||||||
"Select a function": "Memilih fungsi",
|
"Select a function": "Memilih fungsi",
|
||||||
"Select a mode": "Pilih mode",
|
|
||||||
"Select a model": "Pilih model",
|
"Select a model": "Pilih model",
|
||||||
"Select a pipeline": "Pilih saluran pipa",
|
"Select a pipeline": "Pilih saluran pipa",
|
||||||
"Select a pipeline url": "Pilih url saluran pipa",
|
"Select a pipeline url": "Pilih url saluran pipa",
|
||||||
"Select a tool": "Pilih alat",
|
"Select a tool": "Pilih alat",
|
||||||
"Select an Ollama instance": "Pilih contoh Ollama",
|
"Select an Ollama instance": "Pilih contoh Ollama",
|
||||||
"Select Documents": "Pilih Dokumen",
|
"Select Documents": "Pilih Dokumen",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Pilih model",
|
"Select model": "Pilih model",
|
||||||
"Select only one model to call": "Pilih hanya satu model untuk dipanggil",
|
"Select only one model to call": "Pilih hanya satu model untuk dipanggil",
|
||||||
"Selected model(s) do not support image inputs": "Model yang dipilih tidak mendukung input gambar",
|
"Selected model(s) do not support image inputs": "Model yang dipilih tidak mendukung input gambar",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Mengatur Suara",
|
"Set Voice": "Mengatur Suara",
|
||||||
"Settings": "Pengaturan",
|
"Settings": "Pengaturan",
|
||||||
"Settings saved successfully!": "Pengaturan berhasil disimpan!",
|
"Settings saved successfully!": "Pengaturan berhasil disimpan!",
|
||||||
"Settings updated successfully": "Pengaturan berhasil diperbarui",
|
|
||||||
"Share": "Berbagi",
|
"Share": "Berbagi",
|
||||||
"Share Chat": "Bagikan Obrolan",
|
"Share Chat": "Bagikan Obrolan",
|
||||||
"Share to OpenWebUI Community": "Bagikan ke Komunitas OpenWebUI",
|
"Share to OpenWebUI Community": "Bagikan ke Komunitas OpenWebUI",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "Beri tahu kami lebih lanjut:",
|
"Tell us more:": "Beri tahu kami lebih lanjut:",
|
||||||
"Temperature": "Suhu",
|
"Temperature": "Suhu",
|
||||||
"Template": "Templat",
|
"Template": "Templat",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Penyelesaian Teks",
|
"Text Completion": "Penyelesaian Teks",
|
||||||
"Text-to-Speech Engine": "Mesin Teks-ke-Suara",
|
"Text-to-Speech Engine": "Mesin Teks-ke-Suara",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak dapat dibatalkan. Apakah Anda ingin melanjutkan?",
|
"This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak dapat dibatalkan. Apakah Anda ingin melanjutkan?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ini akan memastikan bahwa percakapan Anda yang berharga disimpan dengan aman ke basis data backend. Terima kasih!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ini akan memastikan bahwa percakapan Anda yang berharga disimpan dengan aman ke basis data backend. Terima kasih!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ini adalah fitur eksperimental, mungkin tidak berfungsi seperti yang diharapkan dan dapat berubah sewaktu-waktu.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ini adalah fitur eksperimental, mungkin tidak berfungsi seperti yang diharapkan dan dapat berubah sewaktu-waktu.",
|
||||||
"This setting does not sync across browsers or devices.": "Pengaturan ini tidak disinkronkan di seluruh browser atau perangkat.",
|
|
||||||
"This will delete": "Ini akan menghapus",
|
"This will delete": "Ini akan menghapus",
|
||||||
"Thorough explanation": "Penjelasan menyeluruh",
|
"Thorough explanation": "Penjelasan menyeluruh",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "API Web",
|
"Web API": "API Web",
|
||||||
"Web Loader Settings": "Pengaturan Pemuat Web",
|
"Web Loader Settings": "Pengaturan Pemuat Web",
|
||||||
"Web Params": "Parameter Web",
|
|
||||||
"Web Search": "Pencarian Web",
|
"Web Search": "Pencarian Web",
|
||||||
"Web Search Engine": "Mesin Pencari Web",
|
"Web Search Engine": "Mesin Pencari Web",
|
||||||
"Webhook URL": "URL pengait web",
|
"Webhook URL": "URL pengait web",
|
||||||
"WebUI Settings": "Pengaturan WebUI",
|
"WebUI Settings": "Pengaturan WebUI",
|
||||||
"WebUI will make requests to": "WebUI akan membuat permintaan ke",
|
"WebUI will make requests to": "WebUI akan membuat permintaan ke",
|
||||||
"What’s New in": "Apa yang Baru di",
|
"What’s New in": "Apa yang Baru di",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Ketika riwayat dimatikan, obrolan baru di browser ini tidak akan muncul di riwayat Anda di perangkat mana pun.",
|
|
||||||
"Whisper (Local)": "Bisikan (Lokal)",
|
"Whisper (Local)": "Bisikan (Lokal)",
|
||||||
"Widescreen Mode": "Mode Layar Lebar",
|
"Widescreen Mode": "Mode Layar Lebar",
|
||||||
"Workspace": "Ruang Kerja",
|
"Workspace": "Ruang Kerja",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Tutti gli utenti",
|
"All Users": "Tutti gli utenti",
|
||||||
"Allow": "Consenti",
|
"Allow": "Consenti",
|
||||||
"Allow Chat Deletion": "Consenti l'eliminazione della chat",
|
"Allow Chat Deletion": "Consenti l'eliminazione della chat",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "caratteri alfanumerici e trattini",
|
"alphanumeric characters and hyphens": "caratteri alfanumerici e trattini",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "Agosto",
|
"August": "Agosto",
|
||||||
"Auto-playback response": "Riproduzione automatica della risposta",
|
"Auto-playback response": "Riproduzione automatica della risposta",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "URL base AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL base AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "L'URL base AUTOMATIC1111 è obbligatorio.",
|
"AUTOMATIC1111 Base URL is required.": "L'URL base AUTOMATIC1111 è obbligatorio.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "UI bolle chat",
|
"Chat Bubble UI": "UI bolle chat",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Direzione chat",
|
"Chat direction": "Direzione chat",
|
||||||
"Chat History": "Cronologia chat",
|
|
||||||
"Chat History is off for this browser.": "La cronologia chat è disattivata per questo browser.",
|
|
||||||
"Chats": "Chat",
|
"Chats": "Chat",
|
||||||
"Check Again": "Controlla di nuovo",
|
"Check Again": "Controlla di nuovo",
|
||||||
"Check for updates": "Controlla aggiornamenti",
|
"Check for updates": "Controlla aggiornamenti",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Clicca qui per selezionare un file csv.",
|
"Click here to select a csv file.": "Clicca qui per selezionare un file csv.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Clicca qui per selezionare i documenti.",
|
"Click here to select documents.": "Clicca qui per selezionare i documenti.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "clicca qui.",
|
"click here.": "clicca qui.",
|
||||||
"Click on the user role button to change a user's role.": "Clicca sul pulsante del ruolo utente per modificare il ruolo di un utente.",
|
"Click on the user role button to change a user's role.": "Clicca sul pulsante del ruolo utente per modificare il ruolo di un utente.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL base ComfyUI",
|
"ComfyUI Base URL": "URL base ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "L'URL base ComfyUI è obbligatorio.",
|
"ComfyUI Base URL is required.": "L'URL base ComfyUI è obbligatorio.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Comando",
|
"Command": "Comando",
|
||||||
"Concurrent Requests": "Richieste simultanee",
|
"Concurrent Requests": "Richieste simultanee",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Database",
|
"Database": "Database",
|
||||||
"December": "Dicembre",
|
"December": "Dicembre",
|
||||||
"Default": "Predefinito",
|
"Default": "Predefinito",
|
||||||
"Default (Automatic1111)": "Predefinito (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Predefinito (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Predefinito (SentenceTransformers)",
|
||||||
"Default Model": "Modello di default",
|
"Default Model": "Modello di default",
|
||||||
"Default model updated": "Modello predefinito aggiornato",
|
"Default model updated": "Modello predefinito aggiornato",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Documento",
|
"Document": "Documento",
|
||||||
"Document Settings": "Impostazioni documento",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "Documenti",
|
"Documents": "Documenti",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "non effettua connessioni esterne e i tuoi dati rimangono al sicuro sul tuo server ospitato localmente.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "non effettua connessioni esterne e i tuoi dati rimangono al sicuro sul tuo server ospitato localmente.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Modello di embedding",
|
"Embedding Model": "Modello di embedding",
|
||||||
"Embedding Model Engine": "Motore del modello di embedding",
|
"Embedding Model Engine": "Motore del modello di embedding",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Modello di embedding impostato su \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Modello di embedding impostato su \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Abilita cronologia chat",
|
|
||||||
"Enable Community Sharing": "Abilita la condivisione della community",
|
"Enable Community Sharing": "Abilita la condivisione della community",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Abilita nuove iscrizioni",
|
"Enable New Sign Ups": "Abilita nuove iscrizioni",
|
||||||
"Enable Web Search": "Abilita ricerca Web",
|
"Enable Web Search": "Abilita ricerca Web",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Inserisci l'ID motore PSE di Google",
|
"Enter Google PSE Engine Id": "Inserisci l'ID motore PSE di Google",
|
||||||
"Enter Image Size (e.g. 512x512)": "Inserisci la dimensione dell'immagine (ad esempio 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Inserisci la dimensione dell'immagine (ad esempio 512x512)",
|
||||||
"Enter language codes": "Inserisci i codici lingua",
|
"Enter language codes": "Inserisci i codici lingua",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Inserisci il tag del modello (ad esempio {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Inserisci il tag del modello (ad esempio {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Inserisci il numero di passaggi (ad esempio 50)",
|
"Enter Number of Steps (e.g. 50)": "Inserisci il numero di passaggi (ad esempio 50)",
|
||||||
"Enter Score": "Inserisci il punteggio",
|
"Enter Score": "Inserisci il punteggio",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Realizzato dalla comunità OpenWebUI",
|
"Made by OpenWebUI Community": "Realizzato dalla comunità OpenWebUI",
|
||||||
"Make sure to enclose them with": "Assicurati di racchiuderli con",
|
"Make sure to enclose them with": "Assicurati di racchiuderli con",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "Gestisci modelli",
|
"Manage Models": "Gestisci modelli",
|
||||||
"Manage Ollama Models": "Gestisci modelli Ollama",
|
"Manage Ollama Models": "Gestisci modelli Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "I messaggi inviati dopo la creazione del link non verranno condivisi. Gli utenti con l'URL saranno in grado di visualizzare la chat condivisa.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "I messaggi inviati dopo la creazione del link non verranno condivisi. Gli utenti con l'URL saranno in grado di visualizzare la chat condivisa.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Punteggio minimo",
|
"Minimum Score": "Punteggio minimo",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ops! Sembra che l'URL non sia valido. Si prega di ricontrollare e riprovare.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ops! Sembra che l'URL non sia valido. Si prega di ricontrollare e riprovare.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ops! Stai utilizzando un metodo non supportato (solo frontend). Si prega di servire la WebUI dal backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ops! Stai utilizzando un metodo non supportato (solo frontend). Si prega di servire la WebUI dal backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Apri nuova chat",
|
"Open new chat": "Apri nuova chat",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "Selezionare un modello di base",
|
"Select a base model": "Selezionare un modello di base",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Seleziona una modalità",
|
|
||||||
"Select a model": "Seleziona un modello",
|
"Select a model": "Seleziona un modello",
|
||||||
"Select a pipeline": "Selezionare una tubazione",
|
"Select a pipeline": "Selezionare una tubazione",
|
||||||
"Select a pipeline url": "Selezionare l'URL di una pipeline",
|
"Select a pipeline url": "Selezionare l'URL di una pipeline",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Seleziona un'istanza Ollama",
|
"Select an Ollama instance": "Seleziona un'istanza Ollama",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Seleziona modello",
|
"Select model": "Seleziona modello",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "I modelli selezionati non supportano l'input di immagini",
|
"Selected model(s) do not support image inputs": "I modelli selezionati non supportano l'input di immagini",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "Imposta voce",
|
"Set Voice": "Imposta voce",
|
||||||
"Settings": "Impostazioni",
|
"Settings": "Impostazioni",
|
||||||
"Settings saved successfully!": "Impostazioni salvate con successo!",
|
"Settings saved successfully!": "Impostazioni salvate con successo!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "Condividi",
|
"Share": "Condividi",
|
||||||
"Share Chat": "Condividi chat",
|
"Share Chat": "Condividi chat",
|
||||||
"Share to OpenWebUI Community": "Condividi con la comunità OpenWebUI",
|
"Share to OpenWebUI Community": "Condividi con la comunità OpenWebUI",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "Raccontaci di più:",
|
"Tell us more:": "Raccontaci di più:",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Modello",
|
"Template": "Modello",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Completamento del testo",
|
"Text Completion": "Completamento del testo",
|
||||||
"Text-to-Speech Engine": "Motore da testo a voce",
|
"Text-to-Speech Engine": "Motore da testo a voce",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ciò garantisce che le tue preziose conversazioni siano salvate in modo sicuro nel tuo database backend. Grazie!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ciò garantisce che le tue preziose conversazioni siano salvate in modo sicuro nel tuo database backend. Grazie!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "Questa impostazione non si sincronizza tra browser o dispositivi.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "Spiegazione dettagliata",
|
"Thorough explanation": "Spiegazione dettagliata",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "Impostazioni del caricatore Web",
|
"Web Loader Settings": "Impostazioni del caricatore Web",
|
||||||
"Web Params": "Parametri Web",
|
|
||||||
"Web Search": "Ricerca sul Web",
|
"Web Search": "Ricerca sul Web",
|
||||||
"Web Search Engine": "Motore di ricerca Web",
|
"Web Search Engine": "Motore di ricerca Web",
|
||||||
"Webhook URL": "URL webhook",
|
"Webhook URL": "URL webhook",
|
||||||
"WebUI Settings": "Impostazioni WebUI",
|
"WebUI Settings": "Impostazioni WebUI",
|
||||||
"WebUI will make requests to": "WebUI effettuerà richieste a",
|
"WebUI will make requests to": "WebUI effettuerà richieste a",
|
||||||
"What’s New in": "Novità in",
|
"What’s New in": "Novità in",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quando la cronologia è disattivata, le nuove chat su questo browser non verranno visualizzate nella cronologia su nessuno dei tuoi dispositivi.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "Area di lavoro",
|
"Workspace": "Area di lavoro",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "すべてのユーザー",
|
"All Users": "すべてのユーザー",
|
||||||
"Allow": "許可",
|
"Allow": "許可",
|
||||||
"Allow Chat Deletion": "チャットの削除を許可",
|
"Allow Chat Deletion": "チャットの削除を許可",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "英数字とハイフン",
|
"alphanumeric characters and hyphens": "英数字とハイフン",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "8月",
|
"August": "8月",
|
||||||
"Auto-playback response": "応答の自動再生",
|
"Auto-playback response": "応答の自動再生",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 ベース URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 ベース URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 ベース URL が必要です。",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 ベース URL が必要です。",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "チャットバブルUI",
|
"Chat Bubble UI": "チャットバブルUI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "チャットの方向",
|
"Chat direction": "チャットの方向",
|
||||||
"Chat History": "チャット履歴",
|
|
||||||
"Chat History is off for this browser.": "このブラウザではチャット履歴が無効になっています。",
|
|
||||||
"Chats": "チャット",
|
"Chats": "チャット",
|
||||||
"Check Again": "再確認",
|
"Check Again": "再確認",
|
||||||
"Check for updates": "アップデートを確認",
|
"Check for updates": "アップデートを確認",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "CSVファイルを選択するにはここをクリックしてください。",
|
"Click here to select a csv file.": "CSVファイルを選択するにはここをクリックしてください。",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "ドキュメントを選択するにはここをクリックしてください。",
|
"Click here to select documents.": "ドキュメントを選択するにはここをクリックしてください。",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "ここをクリックしてください。",
|
"click here.": "ここをクリックしてください。",
|
||||||
"Click on the user role button to change a user's role.": "ユーザーの役割を変更するには、ユーザー役割ボタンをクリックしてください。",
|
"Click on the user role button to change a user's role.": "ユーザーの役割を変更するには、ユーザー役割ボタンをクリックしてください。",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUIベースURL",
|
"ComfyUI Base URL": "ComfyUIベースURL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUIベースURLが必要です。",
|
"ComfyUI Base URL is required.": "ComfyUIベースURLが必要です。",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "コマンド",
|
"Command": "コマンド",
|
||||||
"Concurrent Requests": "コンカレント要求",
|
"Concurrent Requests": "コンカレント要求",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "データベース",
|
"Database": "データベース",
|
||||||
"December": "12月",
|
"December": "12月",
|
||||||
"Default": "デフォルト",
|
"Default": "デフォルト",
|
||||||
"Default (Automatic1111)": "デフォルト (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "デフォルト (SentenceTransformers)",
|
"Default (SentenceTransformers)": "デフォルト (SentenceTransformers)",
|
||||||
"Default Model": "デフォルトモデル",
|
"Default Model": "デフォルトモデル",
|
||||||
"Default model updated": "デフォルトモデルが更新されました",
|
"Default model updated": "デフォルトモデルが更新されました",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "ドキュメント",
|
"Document": "ドキュメント",
|
||||||
"Document Settings": "ドキュメント設定",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "ドキュメント",
|
"Documents": "ドキュメント",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "外部接続を行わず、データはローカルでホストされているサーバー上に安全に保持されます。",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "外部接続を行わず、データはローカルでホストされているサーバー上に安全に保持されます。",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "埋め込みモデル",
|
"Embedding Model": "埋め込みモデル",
|
||||||
"Embedding Model Engine": "埋め込みモデルエンジン",
|
"Embedding Model Engine": "埋め込みモデルエンジン",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "埋め込みモデルを\"{{embedding_model}}\"に設定しました",
|
"Embedding model set to \"{{embedding_model}}\"": "埋め込みモデルを\"{{embedding_model}}\"に設定しました",
|
||||||
"Enable Chat History": "チャット履歴を有効化",
|
|
||||||
"Enable Community Sharing": "コミュニティ共有の有効化",
|
"Enable Community Sharing": "コミュニティ共有の有効化",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "新規登録を有効化",
|
"Enable New Sign Ups": "新規登録を有効化",
|
||||||
"Enable Web Search": "Web 検索を有効にする",
|
"Enable Web Search": "Web 検索を有効にする",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Google PSE エンジン ID を入力します。",
|
"Enter Google PSE Engine Id": "Google PSE エンジン ID を入力します。",
|
||||||
"Enter Image Size (e.g. 512x512)": "画像サイズを入力してください (例: 512x512)",
|
"Enter Image Size (e.g. 512x512)": "画像サイズを入力してください (例: 512x512)",
|
||||||
"Enter language codes": "言語コードを入力してください",
|
"Enter language codes": "言語コードを入力してください",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "モデルタグを入力してください (例: {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "モデルタグを入力してください (例: {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "ステップ数を入力してください (例: 50)",
|
"Enter Number of Steps (e.g. 50)": "ステップ数を入力してください (例: 50)",
|
||||||
"Enter Score": "スコアを入力してください",
|
"Enter Score": "スコアを入力してください",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "OpenWebUI コミュニティによって作成",
|
"Made by OpenWebUI Community": "OpenWebUI コミュニティによって作成",
|
||||||
"Make sure to enclose them with": "必ず次で囲んでください",
|
"Make sure to enclose them with": "必ず次で囲んでください",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "モデルを管理",
|
"Manage Models": "モデルを管理",
|
||||||
"Manage Ollama Models": "Ollama モデルを管理",
|
"Manage Ollama Models": "Ollama モデルを管理",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "リンクを作成した後、送信したメッセージは共有されません。URL を持つユーザーは共有チャットを閲覧できます。",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "リンクを作成した後、送信したメッセージは共有されません。URL を持つユーザーは共有チャットを閲覧できます。",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "最低スコア",
|
"Minimum Score": "最低スコア",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "おっと! URL が無効なようです。もう一度確認してやり直してください。",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "おっと! URL が無効なようです。もう一度確認してやり直してください。",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "おっと! サポートされていない方法 (フロントエンドのみ) を使用しています。バックエンドから WebUI を提供してください。",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "おっと! サポートされていない方法 (フロントエンドのみ) を使用しています。バックエンドから WebUI を提供してください。",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "新しいチャットを開く",
|
"Open new chat": "新しいチャットを開く",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -535,13 +540,13 @@
|
||||||
"Select a base model": "基本モデルの選択",
|
"Select a base model": "基本モデルの選択",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "モードを選択",
|
|
||||||
"Select a model": "モデルを選択",
|
"Select a model": "モデルを選択",
|
||||||
"Select a pipeline": "パイプラインの選択",
|
"Select a pipeline": "パイプラインの選択",
|
||||||
"Select a pipeline url": "パイプラインの URL を選択する",
|
"Select a pipeline url": "パイプラインの URL を選択する",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Ollama インスタンスを選択",
|
"Select an Ollama instance": "Ollama インスタンスを選択",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "モデルを選択",
|
"Select model": "モデルを選択",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "一部のモデルは画像入力をサポートしていません",
|
"Selected model(s) do not support image inputs": "一部のモデルは画像入力をサポートしていません",
|
||||||
|
|
@ -563,7 +568,6 @@
|
||||||
"Set Voice": "音声を設定",
|
"Set Voice": "音声を設定",
|
||||||
"Settings": "設定",
|
"Settings": "設定",
|
||||||
"Settings saved successfully!": "設定が正常に保存されました!",
|
"Settings saved successfully!": "設定が正常に保存されました!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "共有",
|
"Share": "共有",
|
||||||
"Share Chat": "チャットを共有",
|
"Share Chat": "チャットを共有",
|
||||||
"Share to OpenWebUI Community": "OpenWebUI コミュニティに共有",
|
"Share to OpenWebUI Community": "OpenWebUI コミュニティに共有",
|
||||||
|
|
@ -599,6 +603,7 @@
|
||||||
"Tell us more:": "もっと話してください:",
|
"Tell us more:": "もっと話してください:",
|
||||||
"Temperature": "温度",
|
"Temperature": "温度",
|
||||||
"Template": "テンプレート",
|
"Template": "テンプレート",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "テキスト補完",
|
"Text Completion": "テキスト補完",
|
||||||
"Text-to-Speech Engine": "テキスト音声変換エンジン",
|
"Text-to-Speech Engine": "テキスト音声変換エンジン",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -610,7 +615,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "これは、貴重な会話がバックエンドデータベースに安全に保存されることを保証します。ありがとうございます!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "これは、貴重な会話がバックエンドデータベースに安全に保存されることを保証します。ありがとうございます!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "この設定は、ブラウザやデバイス間で同期されません。",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "詳細な説明",
|
"Thorough explanation": "詳細な説明",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -691,14 +695,12 @@
|
||||||
"Web": "ウェブ",
|
"Web": "ウェブ",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "Web 読み込み設定",
|
"Web Loader Settings": "Web 読み込み設定",
|
||||||
"Web Params": "Web パラメータ",
|
|
||||||
"Web Search": "ウェブ検索",
|
"Web Search": "ウェブ検索",
|
||||||
"Web Search Engine": "ウェブ検索エンジン",
|
"Web Search Engine": "ウェブ検索エンジン",
|
||||||
"Webhook URL": "Webhook URL",
|
"Webhook URL": "Webhook URL",
|
||||||
"WebUI Settings": "WebUI 設定",
|
"WebUI Settings": "WebUI 設定",
|
||||||
"WebUI will make requests to": "WebUI は次に対してリクエストを行います",
|
"WebUI will make requests to": "WebUI は次に対してリクエストを行います",
|
||||||
"What’s New in": "新機能",
|
"What’s New in": "新機能",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "履歴が無効になっている場合、このブラウザでの新しいチャットは、どのデバイスの履歴にも表示されません。",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "ワークスペース",
|
"Workspace": "ワークスペース",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "ყველა მომხმარებელი",
|
"All Users": "ყველა მომხმარებელი",
|
||||||
"Allow": "ნების დართვა",
|
"Allow": "ნების დართვა",
|
||||||
"Allow Chat Deletion": "მიმოწერის წაშლის დაშვება",
|
"Allow Chat Deletion": "მიმოწერის წაშლის დაშვება",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "ალფანუმერული სიმბოლოები და დეფისები",
|
"alphanumeric characters and hyphens": "ალფანუმერული სიმბოლოები და დეფისები",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "აგვისტო",
|
"August": "აგვისტო",
|
||||||
"Auto-playback response": "ავტომატური დაკვრის პასუხი",
|
"Auto-playback response": "ავტომატური დაკვრის პასუხი",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 საბაზისო მისამართი",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 საბაზისო მისამართი",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 საბაზისო მისამართი აუცილებელია",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 საბაზისო მისამართი აუცილებელია",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "ჩატის ბულბი",
|
"Chat Bubble UI": "ჩატის ბულბი",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "ჩატის მიმართულება",
|
"Chat direction": "ჩატის მიმართულება",
|
||||||
"Chat History": "მიმოწერის ისტორია",
|
|
||||||
"Chat History is off for this browser.": "მიმოწერის ისტორია ამ ბრაუზერისთვის გათიშულია",
|
|
||||||
"Chats": "მიმოწერები",
|
"Chats": "მიმოწერები",
|
||||||
"Check Again": "თავიდან შემოწმება",
|
"Check Again": "თავიდან შემოწმება",
|
||||||
"Check for updates": "განახლებების ძიება",
|
"Check for updates": "განახლებების ძიება",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "ასარჩევად, დააკლიკე აქ",
|
"Click here to select a csv file.": "ასარჩევად, დააკლიკე აქ",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "დოკუმენტების ასარჩევად, დააკლიკე აქ",
|
"Click here to select documents.": "დოკუმენტების ასარჩევად, დააკლიკე აქ",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "დააკლიკე აქ",
|
"click here.": "დააკლიკე აქ",
|
||||||
"Click on the user role button to change a user's role.": "დააკლიკეთ მომხმარებლის როლის ღილაკს რომ შეცვალოთ მომხმარების როლი",
|
"Click on the user role button to change a user's role.": "დააკლიკეთ მომხმარებლის როლის ღილაკს რომ შეცვალოთ მომხმარების როლი",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI საბაზისო URL",
|
"ComfyUI Base URL": "ComfyUI საბაზისო URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI საბაზისო URL აუცილებელია.",
|
"ComfyUI Base URL is required.": "ComfyUI საბაზისო URL აუცილებელია.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "ბრძანება",
|
"Command": "ბრძანება",
|
||||||
"Concurrent Requests": "თანმხლები მოთხოვნები",
|
"Concurrent Requests": "თანმხლები მოთხოვნები",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "მონაცემთა ბაზა",
|
"Database": "მონაცემთა ბაზა",
|
||||||
"December": "დეკემბერი",
|
"December": "დეკემბერი",
|
||||||
"Default": "დეფოლტი",
|
"Default": "დეფოლტი",
|
||||||
"Default (Automatic1111)": "დეფოლტ (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "დეფოლტ (SentenceTransformers)",
|
"Default (SentenceTransformers)": "დეფოლტ (SentenceTransformers)",
|
||||||
"Default Model": "ნაგულისხმები მოდელი",
|
"Default Model": "ნაგულისხმები მოდელი",
|
||||||
"Default model updated": "დეფოლტ მოდელი განახლებულია",
|
"Default model updated": "დეფოლტ მოდელი განახლებულია",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "დოკუმენტი",
|
"Document": "დოკუმენტი",
|
||||||
"Document Settings": "დოკუმენტის პარამეტრები",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "დოკუმენტები",
|
"Documents": "დოკუმენტები",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "არ ამყარებს გარე კავშირებს და თქვენი მონაცემები უსაფრთხოდ რჩება თქვენს ადგილობრივ სერვერზე.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "არ ამყარებს გარე კავშირებს და თქვენი მონაცემები უსაფრთხოდ რჩება თქვენს ადგილობრივ სერვერზე.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "ჩასმის ძირითადი პროგრამა",
|
"Embedding Model": "ჩასმის ძირითადი პროგრამა",
|
||||||
"Embedding Model Engine": "ჩასმის ძირითადი პროგრამა",
|
"Embedding Model Engine": "ჩასმის ძირითადი პროგრამა",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "ჩასმის ძირითადი პროგრამა ჩართულია \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "ჩასმის ძირითადი პროგრამა ჩართულია \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "მიმოწერის ისტორიის ჩართვა",
|
|
||||||
"Enable Community Sharing": "საზოგადოების გაზიარების ჩართვა",
|
"Enable Community Sharing": "საზოგადოების გაზიარების ჩართვა",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "ახალი რეგისტრაციების ჩართვა",
|
"Enable New Sign Ups": "ახალი რეგისტრაციების ჩართვა",
|
||||||
"Enable Web Search": "ვებ ძიების ჩართვა",
|
"Enable Web Search": "ვებ ძიების ჩართვა",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "შეიყვანეთ Google PSE ძრავის ID",
|
"Enter Google PSE Engine Id": "შეიყვანეთ Google PSE ძრავის ID",
|
||||||
"Enter Image Size (e.g. 512x512)": "შეიყვანეთ სურათის ზომა (მაგ. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "შეიყვანეთ სურათის ზომა (მაგ. 512x512)",
|
||||||
"Enter language codes": "შეიყვანეთ ენის კოდი",
|
"Enter language codes": "შეიყვანეთ ენის კოდი",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "შეიყვანეთ მოდელის ტეგი (მაგ. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "შეიყვანეთ მოდელის ტეგი (მაგ. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "შეიყვანეთ ნაბიჯების რაოდენობა (მაგ. 50)",
|
"Enter Number of Steps (e.g. 50)": "შეიყვანეთ ნაბიჯების რაოდენობა (მაგ. 50)",
|
||||||
"Enter Score": "შეიყვანეთ ქულა",
|
"Enter Score": "შეიყვანეთ ქულა",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "დამზადებულია OpenWebUI საზოგადოების მიერ",
|
"Made by OpenWebUI Community": "დამზადებულია OpenWebUI საზოგადოების მიერ",
|
||||||
"Make sure to enclose them with": "დარწმუნდით, რომ დაურთეთ ისინი",
|
"Make sure to enclose them with": "დარწმუნდით, რომ დაურთეთ ისინი",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "მოდელების მართვა",
|
"Manage Models": "მოდელების მართვა",
|
||||||
"Manage Ollama Models": "Ollama მოდელების მართვა",
|
"Manage Ollama Models": "Ollama მოდელების მართვა",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "შეტყობინებები, რომელსაც თქვენ აგზავნით თქვენი ბმულის შექმნის შემდეგ, არ იქნება გაზიარებული. URL– ის მქონე მომხმარებლებს შეეძლებათ ნახონ საერთო ჩატი.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "შეტყობინებები, რომელსაც თქვენ აგზავნით თქვენი ბმულის შექმნის შემდეგ, არ იქნება გაზიარებული. URL– ის მქონე მომხმარებლებს შეეძლებათ ნახონ საერთო ჩატი.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "მინიმალური ქულა",
|
"Minimum Score": "მინიმალური ქულა",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "უი! როგორც ჩანს, მისამართი არასწორია. გთხოვთ, გადაამოწმოთ და ისევ სცადოთ.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "უი! როგორც ჩანს, მისამართი არასწორია. გთხოვთ, გადაამოწმოთ და ისევ სცადოთ.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "უპს! თქვენ იყენებთ მხარდაუჭერელ მეთოდს (მხოლოდ frontend). გთხოვთ, მოემსახუროთ WebUI-ს ბექენდიდან",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "უპს! თქვენ იყენებთ მხარდაუჭერელ მეთოდს (მხოლოდ frontend). გთხოვთ, მოემსახუროთ WebUI-ს ბექენდიდან",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "ახალი მიმოწერის გახსნა",
|
"Open new chat": "ახალი მიმოწერის გახსნა",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "აირჩიეთ ბაზის მოდელი",
|
"Select a base model": "აირჩიეთ ბაზის მოდელი",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "რეჟიმის არჩევა",
|
|
||||||
"Select a model": "მოდელის არჩევა",
|
"Select a model": "მოდელის არჩევა",
|
||||||
"Select a pipeline": "აირჩიეთ მილსადენი",
|
"Select a pipeline": "აირჩიეთ მილსადენი",
|
||||||
"Select a pipeline url": "აირჩიეთ მილსადენის url",
|
"Select a pipeline url": "აირჩიეთ მილსადენის url",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Ollama ინსტანსის არჩევა",
|
"Select an Ollama instance": "Ollama ინსტანსის არჩევა",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "მოდელის არჩევა",
|
"Select model": "მოდელის არჩევა",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "შერჩეული მოდელი (ებ) ი არ უჭერს მხარს გამოსახულების შეყვანას",
|
"Selected model(s) do not support image inputs": "შერჩეული მოდელი (ებ) ი არ უჭერს მხარს გამოსახულების შეყვანას",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "ხმის დაყენება",
|
"Set Voice": "ხმის დაყენება",
|
||||||
"Settings": "ხელსაწყოები",
|
"Settings": "ხელსაწყოები",
|
||||||
"Settings saved successfully!": "პარამეტრები წარმატებით განახლდა!",
|
"Settings saved successfully!": "პარამეტრები წარმატებით განახლდა!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "გაზიარება",
|
"Share": "გაზიარება",
|
||||||
"Share Chat": "გაზიარება",
|
"Share Chat": "გაზიარება",
|
||||||
"Share to OpenWebUI Community": "გააზიარე OpenWebUI საზოგადოებაში ",
|
"Share to OpenWebUI Community": "გააზიარე OpenWebUI საზოგადოებაში ",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "ჩვენთან დავუკავშირდით",
|
"Tell us more:": "ჩვენთან დავუკავშირდით",
|
||||||
"Temperature": "ტემპერატურა",
|
"Temperature": "ტემპერატურა",
|
||||||
"Template": "შაბლონი",
|
"Template": "შაბლონი",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "ტექსტის დასრულება",
|
"Text Completion": "ტექსტის დასრულება",
|
||||||
"Text-to-Speech Engine": "ტექსტურ-ხმოვანი ძრავი",
|
"Text-to-Speech Engine": "ტექსტურ-ხმოვანი ძრავი",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "ეს უზრუნველყოფს, რომ თქვენი ძვირფასი საუბრები უსაფრთხოდ შეინახება თქვენს backend მონაცემთა ბაზაში. Გმადლობთ!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "ეს უზრუნველყოფს, რომ თქვენი ძვირფასი საუბრები უსაფრთხოდ შეინახება თქვენს backend მონაცემთა ბაზაში. Გმადლობთ!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "ეს პარამეტრი არ სინქრონიზდება ბრაუზერებსა და მოწყობილობებში",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "ვრცლად აღწერა",
|
"Thorough explanation": "ვრცლად აღწერა",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "ვები",
|
"Web": "ვები",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "ვების ჩატარების პარამეტრები",
|
"Web Loader Settings": "ვების ჩატარების პარამეტრები",
|
||||||
"Web Params": "ვების პარამეტრები",
|
|
||||||
"Web Search": "ვებ ძებნა",
|
"Web Search": "ვებ ძებნა",
|
||||||
"Web Search Engine": "ვებ საძიებო სისტემა",
|
"Web Search Engine": "ვებ საძიებო სისტემა",
|
||||||
"Webhook URL": "Webhook URL",
|
"Webhook URL": "Webhook URL",
|
||||||
"WebUI Settings": "WebUI პარამეტრები",
|
"WebUI Settings": "WebUI პარამეტრები",
|
||||||
"WebUI will make requests to": "WebUI გამოგიგზავნით მოთხოვნებს",
|
"WebUI will make requests to": "WebUI გამოგიგზავნით მოთხოვნებს",
|
||||||
"What’s New in": "რა არის ახალი",
|
"What’s New in": "რა არის ახალი",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "როდესაც ისტორია გამორთულია, ახალი ჩეთები ამ ბრაუზერში არ გამოჩნდება თქვენს ისტორიაში არცერთ მოწყობილობაზე.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "ვულერი",
|
"Workspace": "ვულერი",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "모든 사용자",
|
"All Users": "모든 사용자",
|
||||||
"Allow": "허용",
|
"Allow": "허용",
|
||||||
"Allow Chat Deletion": "채팅 삭제 허용",
|
"Allow Chat Deletion": "채팅 삭제 허용",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "외부 음성 허용",
|
"Allow non-local voices": "외부 음성 허용",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "사용자 위치 활용 허용",
|
"Allow User Location": "사용자 위치 활용 허용",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "영문자, 숫자, 하이픈",
|
"alphanumeric characters and hyphens": "영문자, 숫자, 하이픈",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "8월",
|
"August": "8월",
|
||||||
"Auto-playback response": "응답 자동 재생",
|
"Auto-playback response": "응답 자동 재생",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 기본 URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 기본 URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 기본 URL 설정이 필요합니다.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 기본 URL 설정이 필요합니다.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "버블형 채팅 UI",
|
"Chat Bubble UI": "버블형 채팅 UI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "채팅 방향",
|
"Chat direction": "채팅 방향",
|
||||||
"Chat History": "채팅 기록",
|
|
||||||
"Chat History is off for this browser.": "브라우저에서 채팅 기록이 꺼져 있습니다.",
|
|
||||||
"Chats": "채팅",
|
"Chats": "채팅",
|
||||||
"Check Again": "다시 확인",
|
"Check Again": "다시 확인",
|
||||||
"Check for updates": "업데이트 확인",
|
"Check for updates": "업데이트 확인",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "csv 파일을 선택하려면 여기를 클릭하세요.",
|
"Click here to select a csv file.": "csv 파일을 선택하려면 여기를 클릭하세요.",
|
||||||
"Click here to select a py file.": "py 파일을 선택하려면 여기를 클릭하세요.",
|
"Click here to select a py file.": "py 파일을 선택하려면 여기를 클릭하세요.",
|
||||||
"Click here to select documents.": "문서를 선택하려면 여기를 클릭하세요.",
|
"Click here to select documents.": "문서를 선택하려면 여기를 클릭하세요.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "여기를 클릭하세요.",
|
"click here.": "여기를 클릭하세요.",
|
||||||
"Click on the user role button to change a user's role.": "사용자 역할 버튼을 클릭하여 사용자의 역할을 변경하세요.",
|
"Click on the user role button to change a user's role.": "사용자 역할 버튼을 클릭하여 사용자의 역할을 변경하세요.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI 기본 URL",
|
"ComfyUI Base URL": "ComfyUI 기본 URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI 기본 URL이 필요합니다.",
|
"ComfyUI Base URL is required.": "ComfyUI 기본 URL이 필요합니다.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "명령",
|
"Command": "명령",
|
||||||
"Concurrent Requests": "동시 요청 수",
|
"Concurrent Requests": "동시 요청 수",
|
||||||
"Confirm": "확인",
|
"Confirm": "확인",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "데이터베이스",
|
"Database": "데이터베이스",
|
||||||
"December": "12월",
|
"December": "12월",
|
||||||
"Default": "기본값",
|
"Default": "기본값",
|
||||||
"Default (Automatic1111)": "기본값 (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "기본값 (SentenceTransformers)",
|
"Default (SentenceTransformers)": "기본값 (SentenceTransformers)",
|
||||||
"Default Model": "기본 모델",
|
"Default Model": "기본 모델",
|
||||||
"Default model updated": "기본 모델이 업데이트되었습니다.",
|
"Default model updated": "기본 모델이 업데이트되었습니다.",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "문서",
|
"Document": "문서",
|
||||||
"Document Settings": "문서 설정",
|
|
||||||
"Documentation": "문서 조사",
|
"Documentation": "문서 조사",
|
||||||
"Documents": "문서",
|
"Documents": "문서",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "어떠한 외부 연결도 하지 않으며, 데이터는 로컬에서 호스팅되는 서버에 안전하게 유지됩니다.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "어떠한 외부 연결도 하지 않으며, 데이터는 로컬에서 호스팅되는 서버에 안전하게 유지됩니다.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "임베딩 모델",
|
"Embedding Model": "임베딩 모델",
|
||||||
"Embedding Model Engine": "임베딩 모델 엔진",
|
"Embedding Model Engine": "임베딩 모델 엔진",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "임베딩 모델을 \"{{embedding_model}}\"로 설정함",
|
"Embedding model set to \"{{embedding_model}}\"": "임베딩 모델을 \"{{embedding_model}}\"로 설정함",
|
||||||
"Enable Chat History": "채팅 기록 활성화",
|
|
||||||
"Enable Community Sharing": "커뮤니티 공유 활성화",
|
"Enable Community Sharing": "커뮤니티 공유 활성화",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "새 회원가입 활성화",
|
"Enable New Sign Ups": "새 회원가입 활성화",
|
||||||
"Enable Web Search": "웹 검색 활성화",
|
"Enable Web Search": "웹 검색 활성화",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Google PSE 엔진 ID 입력",
|
"Enter Google PSE Engine Id": "Google PSE 엔진 ID 입력",
|
||||||
"Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)",
|
"Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)",
|
||||||
"Enter language codes": "언어 코드 입력",
|
"Enter language codes": "언어 코드 입력",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "모델 태그 입력(예: {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "모델 태그 입력(예: {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "단계 수 입력(예: 50)",
|
"Enter Number of Steps (e.g. 50)": "단계 수 입력(예: 50)",
|
||||||
"Enter Score": "점수 입력",
|
"Enter Score": "점수 입력",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "OpenWebUI 커뮤니티에 의해 개발됨",
|
"Made by OpenWebUI Community": "OpenWebUI 커뮤니티에 의해 개발됨",
|
||||||
"Make sure to enclose them with": "꼭 다음으로 감싸세요:",
|
"Make sure to enclose them with": "꼭 다음으로 감싸세요:",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "관리",
|
"Manage": "관리",
|
||||||
"Manage Models": "모델 관리",
|
"Manage Models": "모델 관리",
|
||||||
"Manage Ollama Models": "Ollama 모델 관리",
|
"Manage Ollama Models": "Ollama 모델 관리",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "링크 생성 후에 보낸 메시지는 공유되지 않습니다. URL이 있는 사용자는 공유된 채팅을 볼 수 있습니다.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "링크 생성 후에 보낸 메시지는 공유되지 않습니다. URL이 있는 사용자는 공유된 채팅을 볼 수 있습니다.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "최소 점수",
|
"Minimum Score": "최소 점수",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "이런! URL이 잘못된 것 같습니다. 다시 한번 확인하고 다시 시도해주세요.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "이런! URL이 잘못된 것 같습니다. 다시 한번 확인하고 다시 시도해주세요.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "이런! 지원되지 않는 방식(프론트엔드만)을 사용하고 계십니다. 백엔드에서 WebUI를 제공해주세요.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "이런! 지원되지 않는 방식(프론트엔드만)을 사용하고 계십니다. 백엔드에서 WebUI를 제공해주세요.",
|
||||||
"Open AI (Dall-E)": "OpenAI(Dall-E)",
|
|
||||||
"Open new chat": "새 채팅 열기",
|
"Open new chat": "새 채팅 열기",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "기본 모델 선택",
|
"Select a base model": "기본 모델 선택",
|
||||||
"Select a engine": "엔진 선택",
|
"Select a engine": "엔진 선택",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "모드 선택",
|
|
||||||
"Select a model": "모델 선택",
|
"Select a model": "모델 선택",
|
||||||
"Select a pipeline": "파이프라인 선택",
|
"Select a pipeline": "파이프라인 선택",
|
||||||
"Select a pipeline url": "파이프라인 URL 선택",
|
"Select a pipeline url": "파이프라인 URL 선택",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Ollama 인스턴스 선택",
|
"Select an Ollama instance": "Ollama 인스턴스 선택",
|
||||||
"Select Documents": "문서 선택",
|
"Select Documents": "문서 선택",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "모델 선택",
|
"Select model": "모델 선택",
|
||||||
"Select only one model to call": "콜을 위해서는 모델을 하나만 선택해야 합니다.",
|
"Select only one model to call": "콜을 위해서는 모델을 하나만 선택해야 합니다.",
|
||||||
"Selected model(s) do not support image inputs": "선택한 모델은 이미지 입력을 지원하지 않습니다.",
|
"Selected model(s) do not support image inputs": "선택한 모델은 이미지 입력을 지원하지 않습니다.",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "음성 설정",
|
"Set Voice": "음성 설정",
|
||||||
"Settings": "설정",
|
"Settings": "설정",
|
||||||
"Settings saved successfully!": "설정이 성공적으로 저장되었습니다!",
|
"Settings saved successfully!": "설정이 성공적으로 저장되었습니다!",
|
||||||
"Settings updated successfully": "설정이 성공적으로 업데이트되었습니다.",
|
|
||||||
"Share": "공유",
|
"Share": "공유",
|
||||||
"Share Chat": "채팅 공유",
|
"Share Chat": "채팅 공유",
|
||||||
"Share to OpenWebUI Community": "OpenWebUI 커뮤니티에 공유",
|
"Share to OpenWebUI Community": "OpenWebUI 커뮤니티에 공유",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "더 알려주세요:",
|
"Tell us more:": "더 알려주세요:",
|
||||||
"Temperature": "온도",
|
"Temperature": "온도",
|
||||||
"Template": "템플릿",
|
"Template": "템플릿",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "텍스트 완성",
|
"Text Completion": "텍스트 완성",
|
||||||
"Text-to-Speech Engine": "텍스트-음성 변환 엔진",
|
"Text-to-Speech Engine": "텍스트-음성 변환 엔진",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "이 액션은 되돌릴 수 없습니다. 계속하시겠습니까?",
|
"This action cannot be undone. Do you wish to continue?": "이 액션은 되돌릴 수 없습니다. 계속하시겠습니까?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "이렇게 하면 소중한 대화 내용이 백엔드 데이터베이스에 안전하게 저장됩니다. 감사합니다!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "이렇게 하면 소중한 대화 내용이 백엔드 데이터베이스에 안전하게 저장됩니다. 감사합니다!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "이것은 실험적 기능으로, 예상대로 작동하지 않을 수 있으며 언제든지 변경될 수 있습니다.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "이것은 실험적 기능으로, 예상대로 작동하지 않을 수 있으며 언제든지 변경될 수 있습니다.",
|
||||||
"This setting does not sync across browsers or devices.": "이 설정은 브라우저 또는 장치 간에 동기화되지 않습니다.",
|
|
||||||
"This will delete": "이것은 다음을 삭제합니다.",
|
"This will delete": "이것은 다음을 삭제합니다.",
|
||||||
"Thorough explanation": "완전한 설명",
|
"Thorough explanation": "완전한 설명",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "웹",
|
"Web": "웹",
|
||||||
"Web API": "웹 API",
|
"Web API": "웹 API",
|
||||||
"Web Loader Settings": "웹 로더 설정",
|
"Web Loader Settings": "웹 로더 설정",
|
||||||
"Web Params": "웹 파라미터",
|
|
||||||
"Web Search": "웹 검색",
|
"Web Search": "웹 검색",
|
||||||
"Web Search Engine": "웹 검색 엔진",
|
"Web Search Engine": "웹 검색 엔진",
|
||||||
"Webhook URL": "웹훅 URL",
|
"Webhook URL": "웹훅 URL",
|
||||||
"WebUI Settings": "WebUI 설정",
|
"WebUI Settings": "WebUI 설정",
|
||||||
"WebUI will make requests to": "WebUI 요청 대상:",
|
"WebUI will make requests to": "WebUI 요청 대상:",
|
||||||
"What’s New in": "새로운 기능:",
|
"What’s New in": "새로운 기능:",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "기록 기능이 꺼져 있으면 이 브라우저의 새 채팅이 다른 장치의 채팅 기록에 나타나지 않습니다.",
|
|
||||||
"Whisper (Local)": "Whisper (로컬)",
|
"Whisper (Local)": "Whisper (로컬)",
|
||||||
"Widescreen Mode": "와이드스크린 모드",
|
"Widescreen Mode": "와이드스크린 모드",
|
||||||
"Workspace": "워크스페이스",
|
"Workspace": "워크스페이스",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Visi naudotojai",
|
"All Users": "Visi naudotojai",
|
||||||
"Allow": "Leisti",
|
"Allow": "Leisti",
|
||||||
"Allow Chat Deletion": "Leisti pokalbių ištrynimą",
|
"Allow Chat Deletion": "Leisti pokalbių ištrynimą",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Leisti nelokalius balsus",
|
"Allow non-local voices": "Leisti nelokalius balsus",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Leisti naudotojo vietos matymą",
|
"Allow User Location": "Leisti naudotojo vietos matymą",
|
||||||
"Allow Voice Interruption in Call": "Leisti pertraukimą skambučio metu",
|
"Allow Voice Interruption in Call": "Leisti pertraukimą skambučio metu",
|
||||||
"alphanumeric characters and hyphens": "skaičiai, raidės ir brūkšneliai",
|
"alphanumeric characters and hyphens": "skaičiai, raidės ir brūkšneliai",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Audio nustatymai sėkmingai išsaugoti",
|
"Audio settings updated successfully": "Audio nustatymai sėkmingai išsaugoti",
|
||||||
"August": "Rugpjūtis",
|
"August": "Rugpjūtis",
|
||||||
"Auto-playback response": "Automatinis atsakymo skaitymas",
|
"Auto-playback response": "Automatinis atsakymo skaitymas",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Auth String",
|
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Auth String",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 bazės nuoroda",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 bazės nuoroda",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 bazės nuoroda reikalinga.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 bazės nuoroda reikalinga.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Pokalbio burbulo sąsaja",
|
"Chat Bubble UI": "Pokalbio burbulo sąsaja",
|
||||||
"Chat Controls": "Pokalbio valdymas",
|
"Chat Controls": "Pokalbio valdymas",
|
||||||
"Chat direction": "Pokalbio linkmė",
|
"Chat direction": "Pokalbio linkmė",
|
||||||
"Chat History": "Pokalbių istorija",
|
|
||||||
"Chat History is off for this browser.": "Šioje naršyklėje pokalbių istorija išjungta.",
|
|
||||||
"Chats": "Pokalbiai",
|
"Chats": "Pokalbiai",
|
||||||
"Check Again": "Patikrinti iš naujo",
|
"Check Again": "Patikrinti iš naujo",
|
||||||
"Check for updates": "Patikrinti atnaujinimus",
|
"Check for updates": "Patikrinti atnaujinimus",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Spauskite čia tam, kad pasirinkti csv failą",
|
"Click here to select a csv file.": "Spauskite čia tam, kad pasirinkti csv failą",
|
||||||
"Click here to select a py file.": "Spauskite čia norėdami pasirinkti py failą",
|
"Click here to select a py file.": "Spauskite čia norėdami pasirinkti py failą",
|
||||||
"Click here to select documents.": "Spauskite čia norėdami pasirinkti dokumentus.",
|
"Click here to select documents.": "Spauskite čia norėdami pasirinkti dokumentus.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "paspauskite čia.",
|
"click here.": "paspauskite čia.",
|
||||||
"Click on the user role button to change a user's role.": "Paspauskite ant naudotojo rolės mygtuko tam, kad pakeisti naudotojo rolę.",
|
"Click on the user role button to change a user's role.": "Paspauskite ant naudotojo rolės mygtuko tam, kad pakeisti naudotojo rolę.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Iškarpinės naudojimas neleidžiamas naršyklės.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Iškarpinės naudojimas neleidžiamas naršyklės.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI bazės nuoroda",
|
"ComfyUI Base URL": "ComfyUI bazės nuoroda",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI bazės nuoroda privaloma",
|
"ComfyUI Base URL is required.": "ComfyUI bazės nuoroda privaloma",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Command",
|
"Command": "Command",
|
||||||
"Concurrent Requests": "Kelios užklausos vienu metu",
|
"Concurrent Requests": "Kelios užklausos vienu metu",
|
||||||
"Confirm": "Patvrtinti",
|
"Confirm": "Patvrtinti",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Duomenų bazė",
|
"Database": "Duomenų bazė",
|
||||||
"December": "Gruodis",
|
"December": "Gruodis",
|
||||||
"Default": "Numatytasis",
|
"Default": "Numatytasis",
|
||||||
"Default (Automatic1111)": "Numatytasis (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Numatytasis (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Numatytasis (SentenceTransformers)",
|
||||||
"Default Model": "Numatytasis modelis",
|
"Default Model": "Numatytasis modelis",
|
||||||
"Default model updated": "Numatytasis modelis atnaujintas",
|
"Default model updated": "Numatytasis modelis atnaujintas",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "Neinstaliuokite funkcijų iš nepatikimų šaltinių",
|
"Do not install functions from sources you do not fully trust.": "Neinstaliuokite funkcijų iš nepatikimų šaltinių",
|
||||||
"Do not install tools from sources you do not fully trust.": "Neinstaliuokite įrankių iš nepatikimų šaltinių",
|
"Do not install tools from sources you do not fully trust.": "Neinstaliuokite įrankių iš nepatikimų šaltinių",
|
||||||
"Document": "Dokumentas",
|
"Document": "Dokumentas",
|
||||||
"Document Settings": "Dokumento nuostatos",
|
|
||||||
"Documentation": "Dokumentacija",
|
"Documentation": "Dokumentacija",
|
||||||
"Documents": "Dokumentai",
|
"Documents": "Dokumentai",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "neturi jokių išorinių ryšių ir duomenys lieka serveryje.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "neturi jokių išorinių ryšių ir duomenys lieka serveryje.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Embedding modelis",
|
"Embedding Model": "Embedding modelis",
|
||||||
"Embedding Model Engine": "Embedding modelio variklis",
|
"Embedding Model Engine": "Embedding modelio variklis",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Embedding modelis nustatytas kaip\"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Embedding modelis nustatytas kaip\"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Aktyvuoti pokalbių istoriją",
|
|
||||||
"Enable Community Sharing": "Leisti dalinimąsi su bendruomene",
|
"Enable Community Sharing": "Leisti dalinimąsi su bendruomene",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Aktyvuoti naujas registracijas",
|
"Enable New Sign Ups": "Aktyvuoti naujas registracijas",
|
||||||
"Enable Web Search": "Leisti paiešką internete",
|
"Enable Web Search": "Leisti paiešką internete",
|
||||||
"Enabled": "Leisti",
|
"Enabled": "Leisti",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Įveskite Google PSE variklio ID",
|
"Enter Google PSE Engine Id": "Įveskite Google PSE variklio ID",
|
||||||
"Enter Image Size (e.g. 512x512)": "Įveskite paveiksliuko dydį (pvz. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Įveskite paveiksliuko dydį (pvz. 512x512)",
|
||||||
"Enter language codes": "Įveskite kalbos kodus",
|
"Enter language codes": "Įveskite kalbos kodus",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Įveskite modelio žymą (pvz. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Įveskite modelio žymą (pvz. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Įveskite žingsnių kiekį (pvz. 50)",
|
"Enter Number of Steps (e.g. 50)": "Įveskite žingsnių kiekį (pvz. 50)",
|
||||||
"Enter Score": "Įveskite rezultatą",
|
"Enter Score": "Įveskite rezultatą",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Sukurta OpenWebUI bendruomenės",
|
"Made by OpenWebUI Community": "Sukurta OpenWebUI bendruomenės",
|
||||||
"Make sure to enclose them with": "Užtikrinktie, kad įtraukiate viduje:",
|
"Make sure to enclose them with": "Užtikrinktie, kad įtraukiate viduje:",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Tvarkyti",
|
"Manage": "Tvarkyti",
|
||||||
"Manage Models": "Tvarkyti modelius",
|
"Manage Models": "Tvarkyti modelius",
|
||||||
"Manage Ollama Models": "Tvarkyti Ollama modelius",
|
"Manage Ollama Models": "Tvarkyti Ollama modelius",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Atmintis ištrinta sėkmingai",
|
"Memory cleared successfully": "Atmintis ištrinta sėkmingai",
|
||||||
"Memory deleted successfully": "Atmintis ištrinta sėkmingai",
|
"Memory deleted successfully": "Atmintis ištrinta sėkmingai",
|
||||||
"Memory updated successfully": "Atmintis atnaujinta sėkmingai",
|
"Memory updated successfully": "Atmintis atnaujinta sėkmingai",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Žinutės, kurias siunčiate po nuorodos sukūrimo nebus matomos nuorodos turėtojams. Naudotojai su nuoroda matys žinutes iki nuorodos sukūrimo.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Žinutės, kurias siunčiate po nuorodos sukūrimo nebus matomos nuorodos turėtojams. Naudotojai su nuoroda matys žinutes iki nuorodos sukūrimo.",
|
||||||
"Min P": "Mažiausias p",
|
"Min P": "Mažiausias p",
|
||||||
"Minimum Score": "Minimalus rezultatas",
|
"Minimum Score": "Minimalus rezultatas",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Regis nuoroda nevalidi. Prašau patikrtinkite ir pabandykite iš naujo.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Regis nuoroda nevalidi. Prašau patikrtinkite ir pabandykite iš naujo.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Įvyko klaida. Pabandykite iš naujo arba susisiekite su administratoriumi.",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Įvyko klaida. Pabandykite iš naujo arba susisiekite su administratoriumi.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Naudojate nepalaikomą (front-end) web ui rėžimą. Prašau serviruokite WebUI iš back-end",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Naudojate nepalaikomą (front-end) web ui rėžimą. Prašau serviruokite WebUI iš back-end",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Atverti naują pokalbį",
|
"Open new chat": "Atverti naują pokalbį",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Tortue Chat versija per sena. Reikalinga (v{{REQUIRED_VERSION}}) versija.",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Tortue Chat versija per sena. Reikalinga (v{{REQUIRED_VERSION}}) versija.",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -538,13 +543,13 @@
|
||||||
"Select a base model": "Pasirinkite bazinį modelį",
|
"Select a base model": "Pasirinkite bazinį modelį",
|
||||||
"Select a engine": "Pasirinkite variklį",
|
"Select a engine": "Pasirinkite variklį",
|
||||||
"Select a function": "Pasirinkite funkciją",
|
"Select a function": "Pasirinkite funkciją",
|
||||||
"Select a mode": "Pasirinkti režimą",
|
|
||||||
"Select a model": "Pasirinkti modelį",
|
"Select a model": "Pasirinkti modelį",
|
||||||
"Select a pipeline": "Pasirinkite procesą",
|
"Select a pipeline": "Pasirinkite procesą",
|
||||||
"Select a pipeline url": "Pasirinkite proceso nuorodą",
|
"Select a pipeline url": "Pasirinkite proceso nuorodą",
|
||||||
"Select a tool": "Pasirinkite įrankį",
|
"Select a tool": "Pasirinkite įrankį",
|
||||||
"Select an Ollama instance": "Pasirinkti Ollama instanciją",
|
"Select an Ollama instance": "Pasirinkti Ollama instanciją",
|
||||||
"Select Documents": "Pasirinkite dokumentus",
|
"Select Documents": "Pasirinkite dokumentus",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Pasirinkti modelį",
|
"Select model": "Pasirinkti modelį",
|
||||||
"Select only one model to call": "Pasirinkite vieną modelį",
|
"Select only one model to call": "Pasirinkite vieną modelį",
|
||||||
"Selected model(s) do not support image inputs": "Pasirinkti modeliai nepalaiko vaizdinių užklausų",
|
"Selected model(s) do not support image inputs": "Pasirinkti modeliai nepalaiko vaizdinių užklausų",
|
||||||
|
|
@ -566,7 +571,6 @@
|
||||||
"Set Voice": "Numatyti balsą",
|
"Set Voice": "Numatyti balsą",
|
||||||
"Settings": "Nustatymai",
|
"Settings": "Nustatymai",
|
||||||
"Settings saved successfully!": "Parametrai sėkmingai išsaugoti!",
|
"Settings saved successfully!": "Parametrai sėkmingai išsaugoti!",
|
||||||
"Settings updated successfully": "Nustatymai atnaujinti sėkmingai",
|
|
||||||
"Share": "Dalintis",
|
"Share": "Dalintis",
|
||||||
"Share Chat": "Dalintis pokalbiu",
|
"Share Chat": "Dalintis pokalbiu",
|
||||||
"Share to OpenWebUI Community": "Dalintis su OpenWebUI bendruomene",
|
"Share to OpenWebUI Community": "Dalintis su OpenWebUI bendruomene",
|
||||||
|
|
@ -602,6 +606,7 @@
|
||||||
"Tell us more:": "Papasakokite daugiau",
|
"Tell us more:": "Papasakokite daugiau",
|
||||||
"Temperature": "Temperatūra",
|
"Temperature": "Temperatūra",
|
||||||
"Template": "Modelis",
|
"Template": "Modelis",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Teksto pildymas",
|
"Text Completion": "Teksto pildymas",
|
||||||
"Text-to-Speech Engine": "Balso sintezės modelis",
|
"Text-to-Speech Engine": "Balso sintezės modelis",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -613,7 +618,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Šis veiksmas negali būti atšauktas. Ar norite tęsti?",
|
"This action cannot be undone. Do you wish to continue?": "Šis veiksmas negali būti atšauktas. Ar norite tęsti?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tai užtikrina, kad Jūsų pokalbiai saugiai saugojami duomenų bazėje. Ačiū!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tai užtikrina, kad Jūsų pokalbiai saugiai saugojami duomenų bazėje. Ačiū!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Tai eksperimentinė funkcija ir gali veikti nevisada.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Tai eksperimentinė funkcija ir gali veikti nevisada.",
|
||||||
"This setting does not sync across browsers or devices.": "Šis parametras nesisinchronizuoja su skirtingomis naršyklėmis ir įrankiais.",
|
|
||||||
"This will delete": "Tai ištrins",
|
"This will delete": "Tai ištrins",
|
||||||
"Thorough explanation": "Platus paaiškinimas",
|
"Thorough explanation": "Platus paaiškinimas",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -694,14 +698,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "Web API",
|
"Web API": "Web API",
|
||||||
"Web Loader Settings": "Web krovimo nustatymai",
|
"Web Loader Settings": "Web krovimo nustatymai",
|
||||||
"Web Params": "Web nustatymai",
|
|
||||||
"Web Search": "Web paieška",
|
"Web Search": "Web paieška",
|
||||||
"Web Search Engine": "Web paieškos variklis",
|
"Web Search Engine": "Web paieškos variklis",
|
||||||
"Webhook URL": "Webhook nuoroda",
|
"Webhook URL": "Webhook nuoroda",
|
||||||
"WebUI Settings": "WebUI parametrai",
|
"WebUI Settings": "WebUI parametrai",
|
||||||
"WebUI will make requests to": "WebUI vykdys užklausas",
|
"WebUI will make requests to": "WebUI vykdys užklausas",
|
||||||
"What’s New in": "Kas naujo",
|
"What’s New in": "Kas naujo",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kai istorija išjungta, pokalbiai neatsiras jūsų istorijoje.",
|
|
||||||
"Whisper (Local)": "Whisper (lokalus)",
|
"Whisper (Local)": "Whisper (lokalus)",
|
||||||
"Widescreen Mode": "Plataus ekrano rėžimas",
|
"Widescreen Mode": "Plataus ekrano rėžimas",
|
||||||
"Workspace": "Nuostatos",
|
"Workspace": "Nuostatos",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Semua Pengguna",
|
"All Users": "Semua Pengguna",
|
||||||
"Allow": "Benarkan",
|
"Allow": "Benarkan",
|
||||||
"Allow Chat Deletion": "Benarkan Penghapusan Perbualan",
|
"Allow Chat Deletion": "Benarkan Penghapusan Perbualan",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Benarkan suara bukan tempatan ",
|
"Allow non-local voices": "Benarkan suara bukan tempatan ",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Benarkan Lokasi Pengguna",
|
"Allow User Location": "Benarkan Lokasi Pengguna",
|
||||||
"Allow Voice Interruption in Call": "Benarkan gangguan suara dalam panggilan",
|
"Allow Voice Interruption in Call": "Benarkan gangguan suara dalam panggilan",
|
||||||
"alphanumeric characters and hyphens": "aksara alfanumerik dan tanda sempang",
|
"alphanumeric characters and hyphens": "aksara alfanumerik dan tanda sempang",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Tetapan audio berjaya dikemas kini",
|
"Audio settings updated successfully": "Tetapan audio berjaya dikemas kini",
|
||||||
"August": "Ogos",
|
"August": "Ogos",
|
||||||
"Auto-playback response": "Main semula respons secara automatik",
|
"Auto-playback response": "Main semula respons secara automatik",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Auth String",
|
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Auth String",
|
||||||
"AUTOMATIC1111 Base URL": "URL Asas AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL Asas AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "URL Asas AUTOMATIC1111 diperlukan.",
|
"AUTOMATIC1111 Base URL is required.": "URL Asas AUTOMATIC1111 diperlukan.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Antaramuka Buih Perbualan",
|
"Chat Bubble UI": "Antaramuka Buih Perbualan",
|
||||||
"Chat Controls": "Kawalan Perbualan",
|
"Chat Controls": "Kawalan Perbualan",
|
||||||
"Chat direction": "Arah Perbualan",
|
"Chat direction": "Arah Perbualan",
|
||||||
"Chat History": "Sejarah Perbualan",
|
|
||||||
"Chat History is off for this browser.": "Sejarah perbualan dimatikan untuk pelayan web ini",
|
|
||||||
"Chats": "Perbualan",
|
"Chats": "Perbualan",
|
||||||
"Check Again": "Semak Kembali",
|
"Check Again": "Semak Kembali",
|
||||||
"Check for updates": "Semak kemas kini",
|
"Check for updates": "Semak kemas kini",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Klik disini untuk memilih fail csv",
|
"Click here to select a csv file.": "Klik disini untuk memilih fail csv",
|
||||||
"Click here to select a py file.": "Klik disini untuk memilih fail py",
|
"Click here to select a py file.": "Klik disini untuk memilih fail py",
|
||||||
"Click here to select documents.": "Klik disini untuk memilih dokumen",
|
"Click here to select documents.": "Klik disini untuk memilih dokumen",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "klik disini.",
|
"click here.": "klik disini.",
|
||||||
"Click on the user role button to change a user's role.": "Klik pada butang peranan pengguna untuk menukar peranan pengguna",
|
"Click on the user role button to change a user's role.": "Klik pada butang peranan pengguna untuk menukar peranan pengguna",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Kebenaran untuk menulis di papan klip ditolak. Sila semak tetapan pelayan web anda untuk memberikan akses yang diperlukan",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Kebenaran untuk menulis di papan klip ditolak. Sila semak tetapan pelayan web anda untuk memberikan akses yang diperlukan",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL asas ComfyUI",
|
"ComfyUI Base URL": "URL asas ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "URL asas ComfyUI diperlukan",
|
"ComfyUI Base URL is required.": "URL asas ComfyUI diperlukan",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Arahan",
|
"Command": "Arahan",
|
||||||
"Concurrent Requests": "Permintaan Serentak",
|
"Concurrent Requests": "Permintaan Serentak",
|
||||||
"Confirm": "Sahkan",
|
"Confirm": "Sahkan",
|
||||||
|
|
@ -134,10 +138,10 @@
|
||||||
"Continue Response": "Teruskan Respons",
|
"Continue Response": "Teruskan Respons",
|
||||||
"Continue with {{provider}}": "Teruskan dengan {{provider}}",
|
"Continue with {{provider}}": "Teruskan dengan {{provider}}",
|
||||||
"Controls": "Kawalan",
|
"Controls": "Kawalan",
|
||||||
"Copied": "",
|
"Copied": "Disalin",
|
||||||
"Copied shared chat URL to clipboard!": "Menyalin URL sembang kongsi ke papan klip",
|
"Copied shared chat URL to clipboard!": "Menyalin URL sembang kongsi ke papan klip",
|
||||||
"Copy": "Salin",
|
"Copy": "Salin",
|
||||||
"Copy Code": "",
|
"Copy Code": "Salin Kod",
|
||||||
"Copy last code block": "Salin Blok Kod Terakhir",
|
"Copy last code block": "Salin Blok Kod Terakhir",
|
||||||
"Copy last response": "Salin Respons Terakhir",
|
"Copy last response": "Salin Respons Terakhir",
|
||||||
"Copy Link": "Salin Pautan",
|
"Copy Link": "Salin Pautan",
|
||||||
|
|
@ -147,7 +151,7 @@
|
||||||
"Create new key": "Cipta kekunci baharu",
|
"Create new key": "Cipta kekunci baharu",
|
||||||
"Create new secret key": "Cipta kekunci rahsia baharu",
|
"Create new secret key": "Cipta kekunci rahsia baharu",
|
||||||
"Created at": "Dicipta di",
|
"Created at": "Dicipta di",
|
||||||
"Created At": "Dicipta Di",
|
"Created At": "Dicipta Pada",
|
||||||
"Created by": "Dicipta oleh",
|
"Created by": "Dicipta oleh",
|
||||||
"CSV Import": "Import CSV",
|
"CSV Import": "Import CSV",
|
||||||
"Current Model": "Model Semasa",
|
"Current Model": "Model Semasa",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Pangkalan Data",
|
"Database": "Pangkalan Data",
|
||||||
"December": "Disember",
|
"December": "Disember",
|
||||||
"Default": "Lalai",
|
"Default": "Lalai",
|
||||||
"Default (Automatic1111)": "Lalai (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Lalai (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Lalai (SentenceTransformers)",
|
||||||
"Default Model": "Model Lalai",
|
"Default Model": "Model Lalai",
|
||||||
"Default model updated": "Model lalai dikemas kini",
|
"Default model updated": "Model lalai dikemas kini",
|
||||||
|
|
@ -193,11 +197,10 @@
|
||||||
"Discover, download, and explore model presets": "Temui, muat turun dan teroka model pratetap",
|
"Discover, download, and explore model presets": "Temui, muat turun dan teroka model pratetap",
|
||||||
"Dismissible": "Diketepikan",
|
"Dismissible": "Diketepikan",
|
||||||
"Display Emoji in Call": "Paparkan Emoji dalam Panggilan",
|
"Display Emoji in Call": "Paparkan Emoji dalam Panggilan",
|
||||||
"Display the username instead of You in the Chat": "aparkan nama pengguna dan bukannya 'Anda' dalam Sembang",
|
"Display the username instead of You in the Chat": "Paparkan nama pengguna dan bukannya 'Anda' dalam Sembang",
|
||||||
"Do not install functions from sources you do not fully trust.": "Jangan pasang fungsi daripada sumber yang anda tidak percayai sepenuhnya.",
|
"Do not install functions from sources you do not fully trust.": "Jangan pasang fungsi daripada sumber yang anda tidak percayai sepenuhnya.",
|
||||||
"Do not install tools from sources you do not fully trust.": "Jangan pasang alat daripada sumber yang anda tidak percaya sepenuhnya.",
|
"Do not install tools from sources you do not fully trust.": "Jangan pasang alat daripada sumber yang anda tidak percaya sepenuhnya.",
|
||||||
"Document": "Dokumen",
|
"Document": "Dokumen",
|
||||||
"Document Settings": "Tetapan Dokumen",
|
|
||||||
"Documentation": "Dokumentasi",
|
"Documentation": "Dokumentasi",
|
||||||
"Documents": "Dokumen",
|
"Documents": "Dokumen",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat sebarang sambungan luaran, dan data anda kekal selamat pada pelayan yang dihoskan ditempat anda",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat sebarang sambungan luaran, dan data anda kekal selamat pada pelayan yang dihoskan ditempat anda",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Model Benamkan",
|
"Embedding Model": "Model Benamkan",
|
||||||
"Embedding Model Engine": "Enjin Model Benamkan",
|
"Embedding Model Engine": "Enjin Model Benamkan",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Model Benamkan ditetapkan kepada \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Model Benamkan ditetapkan kepada \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Benarkan Sejarah Perbualan",
|
"Enable Community Sharing": "Benarkan Perkongsian Komuniti",
|
||||||
"Enable Community Sharing": "Benarkan Perkongsian Komunity",
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Benarkan Pendaftaran Baharu",
|
"Enable New Sign Ups": "Benarkan Pendaftaran Baharu",
|
||||||
"Enable Web Search": "Benarkan Carian Web",
|
"Enable Web Search": "Benarkan Carian Web",
|
||||||
"Enabled": "Dibenarkan",
|
"Enabled": "Dibenarkan",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Masukkan Id Enjin Google PSE",
|
"Enter Google PSE Engine Id": "Masukkan Id Enjin Google PSE",
|
||||||
"Enter Image Size (e.g. 512x512)": "Masukkan Saiz Imej (cth 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Masukkan Saiz Imej (cth 512x512)",
|
||||||
"Enter language codes": "Masukkan kod bahasa",
|
"Enter language codes": "Masukkan kod bahasa",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (cth {{ modelTag }})",
|
"Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (cth {{ modelTag }})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Masukkan Bilangan Langkah (cth 50)",
|
"Enter Number of Steps (e.g. 50)": "Masukkan Bilangan Langkah (cth 50)",
|
||||||
"Enter Score": "Masukkan Skor",
|
"Enter Score": "Masukkan Skor",
|
||||||
|
|
@ -266,7 +270,7 @@
|
||||||
"Export chat (.json)": "Eksport perbualan (.json)",
|
"Export chat (.json)": "Eksport perbualan (.json)",
|
||||||
"Export Chats": "Eksport Perbualan",
|
"Export Chats": "Eksport Perbualan",
|
||||||
"Export Documents Mapping": "Eksport Pemetaan Dokumen",
|
"Export Documents Mapping": "Eksport Pemetaan Dokumen",
|
||||||
"Export Functions": "Eksport 'Fungsi'",
|
"Export Functions": "Eksport Fungsi",
|
||||||
"Export LiteLLM config.yaml": "Eksport LiteLLM config.yaml",
|
"Export LiteLLM config.yaml": "Eksport LiteLLM config.yaml",
|
||||||
"Export Models": "Eksport Model",
|
"Export Models": "Eksport Model",
|
||||||
"Export Prompts": "Eksport Gesaan",
|
"Export Prompts": "Eksport Gesaan",
|
||||||
|
|
@ -339,7 +343,7 @@
|
||||||
"Input commands": "Masukkan Arahan",
|
"Input commands": "Masukkan Arahan",
|
||||||
"Install from Github URL": "Pasang daripada URL Github",
|
"Install from Github URL": "Pasang daripada URL Github",
|
||||||
"Instant Auto-Send After Voice Transcription": "Hantar Secara Automatik Dengan Segera Selepas Transkripsi Suara",
|
"Instant Auto-Send After Voice Transcription": "Hantar Secara Automatik Dengan Segera Selepas Transkripsi Suara",
|
||||||
"Interface": "Ataramuka",
|
"Interface": "Antaramuka",
|
||||||
"Invalid Tag": "Tag tidak sah",
|
"Invalid Tag": "Tag tidak sah",
|
||||||
"January": "Januari",
|
"January": "Januari",
|
||||||
"join our Discord for help.": "sertai Discord kami untuk mendapatkan bantuan.",
|
"join our Discord for help.": "sertai Discord kami untuk mendapatkan bantuan.",
|
||||||
|
|
@ -361,9 +365,10 @@
|
||||||
"LLMs can make mistakes. Verify important information.": "LLM boleh membuat kesilapan. Sahkan maklumat penting",
|
"LLMs can make mistakes. Verify important information.": "LLM boleh membuat kesilapan. Sahkan maklumat penting",
|
||||||
"Local Models": "Model Tempatan",
|
"Local Models": "Model Tempatan",
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Dicipta oleh Komunity OpenWebUI",
|
"Made by OpenWebUI Community": "Dicipta oleh Komuniti OpenWebUI",
|
||||||
"Make sure to enclose them with": "Pastikan untuk melampirkannya dengan",
|
"Make sure to enclose them with": "Pastikan untuk melampirkannya dengan",
|
||||||
"Manage": "Mengurus",
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
|
"Manage": "Urus",
|
||||||
"Manage Models": "Urus Model",
|
"Manage Models": "Urus Model",
|
||||||
"Manage Ollama Models": "Urus Model Ollama",
|
"Manage Ollama Models": "Urus Model Ollama",
|
||||||
"Manage Pipelines": "Urus 'Pipelines'",
|
"Manage Pipelines": "Urus 'Pipelines'",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Memori berjaya dikosongkan",
|
"Memory cleared successfully": "Memori berjaya dikosongkan",
|
||||||
"Memory deleted successfully": "Memori berjaya dihapuskan",
|
"Memory deleted successfully": "Memori berjaya dihapuskan",
|
||||||
"Memory updated successfully": "Memori berjaya dikemaskini",
|
"Memory updated successfully": "Memori berjaya dikemaskini",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mesej yang anda hantar selepas membuat pautan anda tidak akan dikongsi. Pengguna dengan URL akan dapat melihat perbualan yang dikongsi.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mesej yang anda hantar selepas membuat pautan anda tidak akan dikongsi. Pengguna dengan URL akan dapat melihat perbualan yang dikongsi.",
|
||||||
"Min P": "P Minimum",
|
"Min P": "P Minimum",
|
||||||
"Minimum Score": "Skor Minimum",
|
"Minimum Score": "Skor Minimum",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Maaf, didapati URL tidak sah. Sila semak semula dan cuba lagi.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Maaf, didapati URL tidak sah. Sila semak semula dan cuba lagi.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Maaf, terdapat ralat dalam respons sebelumnya. Sila cuba lagi atau hubungi pentadbir",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Maaf, terdapat ralat dalam respons sebelumnya. Sila cuba lagi atau hubungi pentadbir",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Maaf, Anda menggunakan kaedah yang tidak disokong (bahagian 'frontend' sahaja). Sila sediakan WebUI dari 'backend'.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Maaf, Anda menggunakan kaedah yang tidak disokong (bahagian 'frontend' sahaja). Sila sediakan WebUI dari 'backend'.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Buka perbualan baru",
|
"Open new chat": "Buka perbualan baru",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) adalah lebih rendah daripada versi yang diperlukan iaitu (v{{REQUIRED_VERSION}})",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) adalah lebih rendah daripada versi yang diperlukan iaitu (v{{REQUIRED_VERSION}})",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -503,7 +508,7 @@
|
||||||
"Rosé Pine": "Rosé Pine",
|
"Rosé Pine": "Rosé Pine",
|
||||||
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
||||||
"RTL": "RTL",
|
"RTL": "RTL",
|
||||||
"Run": "",
|
"Run": "Jalankan",
|
||||||
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "Jalankan Llama 2, Code Llama dan model lain. Sesuaikan dan buat sendiri.",
|
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "Jalankan Llama 2, Code Llama dan model lain. Sesuaikan dan buat sendiri.",
|
||||||
"Running": "Sedang dijalankan",
|
"Running": "Sedang dijalankan",
|
||||||
"Save": "Simpan",
|
"Save": "Simpan",
|
||||||
|
|
@ -514,7 +519,7 @@
|
||||||
"Scan": "Imbas",
|
"Scan": "Imbas",
|
||||||
"Scan complete!": "Imbasan selesai!",
|
"Scan complete!": "Imbasan selesai!",
|
||||||
"Scan for documents from {{path}}": "Imbas untuk dokumen dari {{path}}",
|
"Scan for documents from {{path}}": "Imbas untuk dokumen dari {{path}}",
|
||||||
"Scroll to bottom when switching between branches": "",
|
"Scroll to bottom when switching between branches": "Skrol ke bawah apabila bertukar antara cawangan",
|
||||||
"Search": "Carian",
|
"Search": "Carian",
|
||||||
"Search a model": "Cari Model",
|
"Search a model": "Cari Model",
|
||||||
"Search Chats": "Cari Perbualan",
|
"Search Chats": "Cari Perbualan",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "Pilih model asas",
|
"Select a base model": "Pilih model asas",
|
||||||
"Select a engine": "Pilih enjin",
|
"Select a engine": "Pilih enjin",
|
||||||
"Select a function": "Pilih fungsi",
|
"Select a function": "Pilih fungsi",
|
||||||
"Select a mode": "Pilih Mod",
|
|
||||||
"Select a model": "Pilih model",
|
"Select a model": "Pilih model",
|
||||||
"Select a pipeline": "Pilih 'pipeline'",
|
"Select a pipeline": "Pilih 'pipeline'",
|
||||||
"Select a pipeline url": "Pilih url 'pipeline'",
|
"Select a pipeline url": "Pilih url 'pipeline'",
|
||||||
"Select a tool": "Pilih alat",
|
"Select a tool": "Pilih alat",
|
||||||
"Select an Ollama instance": "Pilih Ollama contoh",
|
"Select an Ollama instance": "Pilih Ollama contoh",
|
||||||
"Select Documents": "Pilih Dokumen",
|
"Select Documents": "Pilih Dokumen",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Pilih model",
|
"Select model": "Pilih model",
|
||||||
"Select only one model to call": "Pilih hanya satu model untuk dipanggil",
|
"Select only one model to call": "Pilih hanya satu model untuk dipanggil",
|
||||||
"Selected model(s) do not support image inputs": "Model dipilih tidak menyokong input imej",
|
"Selected model(s) do not support image inputs": "Model dipilih tidak menyokong input imej",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Tetapan Suara",
|
"Set Voice": "Tetapan Suara",
|
||||||
"Settings": "Tetapan",
|
"Settings": "Tetapan",
|
||||||
"Settings saved successfully!": "Tetapan berjaya disimpan!",
|
"Settings saved successfully!": "Tetapan berjaya disimpan!",
|
||||||
"Settings updated successfully": "Tetapan berjaya dikemas kini",
|
|
||||||
"Share": "Kongsi",
|
"Share": "Kongsi",
|
||||||
"Share Chat": "Kongsi Perbualan",
|
"Share Chat": "Kongsi Perbualan",
|
||||||
"Share to OpenWebUI Community": "Kongsi kepada Komuniti OpenWebUI",
|
"Share to OpenWebUI Community": "Kongsi kepada Komuniti OpenWebUI",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "Beritahu kami lebih lanjut",
|
"Tell us more:": "Beritahu kami lebih lanjut",
|
||||||
"Temperature": "Suhu",
|
"Temperature": "Suhu",
|
||||||
"Template": "Templat",
|
"Template": "Templat",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Penyiapan Teks",
|
"Text Completion": "Penyiapan Teks",
|
||||||
"Text-to-Speech Engine": "Enjin Teks-ke-Ucapan",
|
"Text-to-Speech Engine": "Enjin Teks-ke-Ucapan",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak boleh diubah semula kepada asal. Adakah anda ingin teruskan",
|
"This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak boleh diubah semula kepada asal. Adakah anda ingin teruskan",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ini akan memastikan bahawa perbualan berharga anda disimpan dengan selamat ke pangkalan data 'backend' anda. Terima kasih!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ini akan memastikan bahawa perbualan berharga anda disimpan dengan selamat ke pangkalan data 'backend' anda. Terima kasih!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "ni adalah ciri percubaan, ia mungkin tidak berfungsi seperti yang diharapkan dan tertakluk kepada perubahan pada bila-bila masa.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "ni adalah ciri percubaan, ia mungkin tidak berfungsi seperti yang diharapkan dan tertakluk kepada perubahan pada bila-bila masa.",
|
||||||
"This setting does not sync across browsers or devices.": "Tetapan ini tidak menyegerak merentas pelayar web atau peranti.",
|
|
||||||
"This will delete": "Ini akan memadam",
|
"This will delete": "Ini akan memadam",
|
||||||
"Thorough explanation": "Penjelasan menyeluruh",
|
"Thorough explanation": "Penjelasan menyeluruh",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -692,17 +696,15 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "API Web",
|
"Web API": "API Web",
|
||||||
"Web Loader Settings": "Tetapan Pemuat Web",
|
"Web Loader Settings": "Tetapan Pemuat Web",
|
||||||
"Web Params": "Parameter Web",
|
|
||||||
"Web Search": "Carian Web",
|
"Web Search": "Carian Web",
|
||||||
"Web Search Engine": "Enjin Carian Web",
|
"Web Search Engine": "Enjin Carian Web",
|
||||||
"Webhook URL": "URL 'Webhook'",
|
"Webhook URL": "URL 'Webhook'",
|
||||||
"WebUI Settings": "Tetapan WebUI",
|
"WebUI Settings": "Tetapan WebUI",
|
||||||
"WebUI will make requests to": "WebUI akan membuat permintaan kepada",
|
"WebUI will make requests to": "WebUI akan membuat permintaan kepada",
|
||||||
"What’s New in": "Apakah yang terbaru dalam",
|
"What’s New in": "Apakah yang terbaru dalam",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Apabila sejarah dimatikan, perbualan baharu pada pelayan web ini tidak akan muncul dalam sejarah pada mana-mana peranti anda.",
|
|
||||||
"Whisper (Local)": "Whisper (Local)",
|
"Whisper (Local)": "Whisper (Local)",
|
||||||
"Widescreen Mode": "Mod Skrin Lebar",
|
"Widescreen Mode": "Mod Skrin Lebar",
|
||||||
"Workspace": "Ruang Kerja",
|
"Workspace": "Ruangan Kerja",
|
||||||
"Write a prompt suggestion (e.g. Who are you?)": "Tulis cadangan gesaan (cth Siapakah anda?)",
|
"Write a prompt suggestion (e.g. Who are you?)": "Tulis cadangan gesaan (cth Siapakah anda?)",
|
||||||
"Write a summary in 50 words that summarizes [topic or keyword].": "Tulis ringkasan dalam 50 patah perkataan yang meringkaskan [topik atau kata kunci].",
|
"Write a summary in 50 words that summarizes [topic or keyword].": "Tulis ringkasan dalam 50 patah perkataan yang meringkaskan [topik atau kata kunci].",
|
||||||
"Yesterday": "Semalam",
|
"Yesterday": "Semalam",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Alle brukere",
|
"All Users": "Alle brukere",
|
||||||
"Allow": "Tillat",
|
"Allow": "Tillat",
|
||||||
"Allow Chat Deletion": "Tillat sletting av chatter",
|
"Allow Chat Deletion": "Tillat sletting av chatter",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Tillat ikke-lokale stemmer",
|
"Allow non-local voices": "Tillat ikke-lokale stemmer",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Aktiver stedstjenester",
|
"Allow User Location": "Aktiver stedstjenester",
|
||||||
"Allow Voice Interruption in Call": "Muliggjør stemmeavbrytelse i samtale",
|
"Allow Voice Interruption in Call": "Muliggjør stemmeavbrytelse i samtale",
|
||||||
"alphanumeric characters and hyphens": "alfanumeriske tegn og bindestreker",
|
"alphanumeric characters and hyphens": "alfanumeriske tegn og bindestreker",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Lydinnstillingene ble oppdatert",
|
"Audio settings updated successfully": "Lydinnstillingene ble oppdatert",
|
||||||
"August": "august",
|
"August": "august",
|
||||||
"Auto-playback response": "Automatisk avspilling av svar",
|
"Auto-playback response": "Automatisk avspilling av svar",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Autentiseringsstreng",
|
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Autentiseringsstreng",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Grunn-URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Grunn-URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Grunn-URL kreves.",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Grunn-URL kreves.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Chat-boble UI",
|
"Chat Bubble UI": "Chat-boble UI",
|
||||||
"Chat Controls": "Chat-kontroller",
|
"Chat Controls": "Chat-kontroller",
|
||||||
"Chat direction": "Chat-retning",
|
"Chat direction": "Chat-retning",
|
||||||
"Chat History": "Chat-historikk",
|
|
||||||
"Chat History is off for this browser.": "Chat-historikk er av for denne nettleseren.",
|
|
||||||
"Chats": "Chatter",
|
"Chats": "Chatter",
|
||||||
"Check Again": "Sjekk igjen",
|
"Check Again": "Sjekk igjen",
|
||||||
"Check for updates": "Sjekk for oppdateringer",
|
"Check for updates": "Sjekk for oppdateringer",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Klikk her for å velge en csv-fil.",
|
"Click here to select a csv file.": "Klikk her for å velge en csv-fil.",
|
||||||
"Click here to select a py file.": "Klikk her for å velge en py-fil.",
|
"Click here to select a py file.": "Klikk her for å velge en py-fil.",
|
||||||
"Click here to select documents.": "Klikk her for å velge dokumenter.",
|
"Click here to select documents.": "Klikk her for å velge dokumenter.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "klikk her.",
|
"click here.": "klikk her.",
|
||||||
"Click on the user role button to change a user's role.": "Klikk på brukerrolle-knappen for å endre en brukers rolle.",
|
"Click on the user role button to change a user's role.": "Klikk på brukerrolle-knappen for å endre en brukers rolle.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Skrivetilgang til utklippstavlen ble avslått. Kontroller nettleserinnstillingene for å gi nødvendig tillatelse.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Skrivetilgang til utklippstavlen ble avslått. Kontroller nettleserinnstillingene for å gi nødvendig tillatelse.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI Grunn-URL",
|
"ComfyUI Base URL": "ComfyUI Grunn-URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI Grunn-URL kreves.",
|
"ComfyUI Base URL is required.": "ComfyUI Grunn-URL kreves.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Kommando",
|
"Command": "Kommando",
|
||||||
"Concurrent Requests": "Samtidige forespørsler",
|
"Concurrent Requests": "Samtidige forespørsler",
|
||||||
"Confirm": "Bekreft",
|
"Confirm": "Bekreft",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Database",
|
"Database": "Database",
|
||||||
"December": "desember",
|
"December": "desember",
|
||||||
"Default": "Standard",
|
"Default": "Standard",
|
||||||
"Default (Automatic1111)": "Standard (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
|
||||||
"Default Model": "Standardmodell",
|
"Default Model": "Standardmodell",
|
||||||
"Default model updated": "Standardmodell oppdatert",
|
"Default model updated": "Standardmodell oppdatert",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "Ikke installer funksjoner fra kilder du ikke fullt ut stoler på.",
|
"Do not install functions from sources you do not fully trust.": "Ikke installer funksjoner fra kilder du ikke fullt ut stoler på.",
|
||||||
"Do not install tools from sources you do not fully trust.": "Ikke installer verktøy fra kilder du ikke fullt ut stoler på.",
|
"Do not install tools from sources you do not fully trust.": "Ikke installer verktøy fra kilder du ikke fullt ut stoler på.",
|
||||||
"Document": "Dokument",
|
"Document": "Dokument",
|
||||||
"Document Settings": "Dokumentinnstillinger",
|
|
||||||
"Documentation": "Dokumentasjon",
|
"Documentation": "Dokumentasjon",
|
||||||
"Documents": "Dokumenter",
|
"Documents": "Dokumenter",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "har ingen tilkobling til eksterne tjenester, og dataene dine blir værende sikkert på din lokale tjener.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "har ingen tilkobling til eksterne tjenester, og dataene dine blir værende sikkert på din lokale tjener.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Embedding-modell",
|
"Embedding Model": "Embedding-modell",
|
||||||
"Embedding Model Engine": "Embedding-modellmotor",
|
"Embedding Model Engine": "Embedding-modellmotor",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Embedding-modell satt til \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Embedding-modell satt til \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Aktiver chat-historikk",
|
|
||||||
"Enable Community Sharing": "Aktiver deling i fellesskap",
|
"Enable Community Sharing": "Aktiver deling i fellesskap",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Aktiver nye registreringer",
|
"Enable New Sign Ups": "Aktiver nye registreringer",
|
||||||
"Enable Web Search": "Aktiver websøk",
|
"Enable Web Search": "Aktiver websøk",
|
||||||
"Enabled": "Aktivert",
|
"Enabled": "Aktivert",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Skriv inn Google PSE Motor-ID",
|
"Enter Google PSE Engine Id": "Skriv inn Google PSE Motor-ID",
|
||||||
"Enter Image Size (e.g. 512x512)": "Skriv inn bildestørrelse (f.eks. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Skriv inn bildestørrelse (f.eks. 512x512)",
|
||||||
"Enter language codes": "Skriv inn språkkoder",
|
"Enter language codes": "Skriv inn språkkoder",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Skriv inn modelltag (f.eks. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Skriv inn modelltag (f.eks. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Skriv inn antall steg (f.eks. 50)",
|
"Enter Number of Steps (e.g. 50)": "Skriv inn antall steg (f.eks. 50)",
|
||||||
"Enter Score": "Skriv inn poengsum",
|
"Enter Score": "Skriv inn poengsum",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Laget av OpenWebUI-fellesskapet",
|
"Made by OpenWebUI Community": "Laget av OpenWebUI-fellesskapet",
|
||||||
"Make sure to enclose them with": "Sørg for å omslutte dem med",
|
"Make sure to enclose them with": "Sørg for å omslutte dem med",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Administrer",
|
"Manage": "Administrer",
|
||||||
"Manage Models": "Administrer modeller",
|
"Manage Models": "Administrer modeller",
|
||||||
"Manage Ollama Models": "Administrer Ollama-modeller",
|
"Manage Ollama Models": "Administrer Ollama-modeller",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Minne tømt",
|
"Memory cleared successfully": "Minne tømt",
|
||||||
"Memory deleted successfully": "Minne slettet",
|
"Memory deleted successfully": "Minne slettet",
|
||||||
"Memory updated successfully": "Minne oppdatert",
|
"Memory updated successfully": "Minne oppdatert",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Meldinger du sender etter at du har opprettet lenken din vil ikke bli delt. Brukere med URL-en vil kunne se den delte chatten.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Meldinger du sender etter at du har opprettet lenken din vil ikke bli delt. Brukere med URL-en vil kunne se den delte chatten.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Minimum poengsum",
|
"Minimum Score": "Minimum poengsum",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Ser ut som URL-en er ugyldig. Vennligst dobbeltsjekk og prøv igjen.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Ser ut som URL-en er ugyldig. Vennligst dobbeltsjekk og prøv igjen.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Oops! Det oppstod en feil i forrige svar. Prøv igjen eller kontakt administrator",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Oops! Det oppstod en feil i forrige svar. Prøv igjen eller kontakt administrator",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Du bruker en ikke-støttet metode (kun frontend). Vennligst server WebUI fra backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Du bruker en ikke-støttet metode (kun frontend). Vennligst server WebUI fra backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Åpne ny chat",
|
"Open new chat": "Åpne ny chat",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI-versjon (v{{OPEN_WEBUI_VERSION}}) er lavere enn nødvendig versjon (v{{REQUIRED_VERSION}})",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI-versjon (v{{OPEN_WEBUI_VERSION}}) er lavere enn nødvendig versjon (v{{REQUIRED_VERSION}})",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "Velg en grunnmodell",
|
"Select a base model": "Velg en grunnmodell",
|
||||||
"Select a engine": "Velg en motor",
|
"Select a engine": "Velg en motor",
|
||||||
"Select a function": "Velg en funksjon",
|
"Select a function": "Velg en funksjon",
|
||||||
"Select a mode": "Velg en modus",
|
|
||||||
"Select a model": "Velg en modell",
|
"Select a model": "Velg en modell",
|
||||||
"Select a pipeline": "Velg en pipeline",
|
"Select a pipeline": "Velg en pipeline",
|
||||||
"Select a pipeline url": "Velg en pipeline-URL",
|
"Select a pipeline url": "Velg en pipeline-URL",
|
||||||
"Select a tool": "Velg et verktøy",
|
"Select a tool": "Velg et verktøy",
|
||||||
"Select an Ollama instance": "Velg en Ollama-instans",
|
"Select an Ollama instance": "Velg en Ollama-instans",
|
||||||
"Select Documents": "Velg dokumenter",
|
"Select Documents": "Velg dokumenter",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Velg modell",
|
"Select model": "Velg modell",
|
||||||
"Select only one model to call": "Velg kun én modell å kalle",
|
"Select only one model to call": "Velg kun én modell å kalle",
|
||||||
"Selected model(s) do not support image inputs": "Valgte modell(er) støtter ikke bildeforslag",
|
"Selected model(s) do not support image inputs": "Valgte modell(er) støtter ikke bildeforslag",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Sett stemme",
|
"Set Voice": "Sett stemme",
|
||||||
"Settings": "Innstillinger",
|
"Settings": "Innstillinger",
|
||||||
"Settings saved successfully!": "Innstillinger lagret!",
|
"Settings saved successfully!": "Innstillinger lagret!",
|
||||||
"Settings updated successfully": "Innstillinger oppdatert",
|
|
||||||
"Share": "Del",
|
"Share": "Del",
|
||||||
"Share Chat": "Del chat",
|
"Share Chat": "Del chat",
|
||||||
"Share to OpenWebUI Community": "Del med OpenWebUI-fellesskapet",
|
"Share to OpenWebUI Community": "Del med OpenWebUI-fellesskapet",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "Fortell oss mer:",
|
"Tell us more:": "Fortell oss mer:",
|
||||||
"Temperature": "Temperatur",
|
"Temperature": "Temperatur",
|
||||||
"Template": "Mal",
|
"Template": "Mal",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Tekstfullføring",
|
"Text Completion": "Tekstfullføring",
|
||||||
"Text-to-Speech Engine": "Tekst-til-tale-motor",
|
"Text-to-Speech Engine": "Tekst-til-tale-motor",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Denne handlingen kan ikke angres. Ønsker du å fortsette?",
|
"This action cannot be undone. Do you wish to continue?": "Denne handlingen kan ikke angres. Ønsker du å fortsette?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dette sikrer at dine verdifulle samtaler er trygt lagret i backend-databasen din. Takk!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dette sikrer at dine verdifulle samtaler er trygt lagret i backend-databasen din. Takk!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Dette er en eksperimentell funksjon, det er mulig den ikke fungerer som forventet og kan endres når som helst.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Dette er en eksperimentell funksjon, det er mulig den ikke fungerer som forventet og kan endres når som helst.",
|
||||||
"This setting does not sync across browsers or devices.": "Denne innstillingen synkroniseres ikke mellom nettlesere eller enheter.",
|
|
||||||
"This will delete": "Dette vil slette",
|
"This will delete": "Dette vil slette",
|
||||||
"Thorough explanation": "Grundig forklaring",
|
"Thorough explanation": "Grundig forklaring",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "Web-API",
|
"Web API": "Web-API",
|
||||||
"Web Loader Settings": "Web-lasterinnstillinger",
|
"Web Loader Settings": "Web-lasterinnstillinger",
|
||||||
"Web Params": "Web-parametere",
|
|
||||||
"Web Search": "Websøk",
|
"Web Search": "Websøk",
|
||||||
"Web Search Engine": "Websøkemotor",
|
"Web Search Engine": "Websøkemotor",
|
||||||
"Webhook URL": "Webhook URL",
|
"Webhook URL": "Webhook URL",
|
||||||
"WebUI Settings": "WebUI innstillinger",
|
"WebUI Settings": "WebUI innstillinger",
|
||||||
"WebUI will make requests to": "WebUI vil gjøre forespørsler til",
|
"WebUI will make requests to": "WebUI vil gjøre forespørsler til",
|
||||||
"What’s New in": "Hva er nytt i",
|
"What’s New in": "Hva er nytt i",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Når historikken er slått av, vil nye chatter på denne nettleseren ikke vises i historikken din på noen av enhetene dine.",
|
|
||||||
"Whisper (Local)": "Whisper (Lokal)",
|
"Whisper (Local)": "Whisper (Lokal)",
|
||||||
"Widescreen Mode": "Bredskjermmodus",
|
"Widescreen Mode": "Bredskjermmodus",
|
||||||
"Workspace": "Arbeidsområde",
|
"Workspace": "Arbeidsområde",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Alle Gebruikers",
|
"All Users": "Alle Gebruikers",
|
||||||
"Allow": "Toestaan",
|
"Allow": "Toestaan",
|
||||||
"Allow Chat Deletion": "Sta Chat Verwijdering toe",
|
"Allow Chat Deletion": "Sta Chat Verwijdering toe",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "alfanumerieke karakters en streepjes",
|
"alphanumeric characters and hyphens": "alfanumerieke karakters en streepjes",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "Augustus",
|
"August": "Augustus",
|
||||||
"Auto-playback response": "Automatisch afspelen van antwoord",
|
"Auto-playback response": "Automatisch afspelen van antwoord",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Basis URL is verplicht",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Basis URL is verplicht",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Chat Bubble UI",
|
"Chat Bubble UI": "Chat Bubble UI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Chat Richting",
|
"Chat direction": "Chat Richting",
|
||||||
"Chat History": "Chat Geschiedenis",
|
|
||||||
"Chat History is off for this browser.": "Chat Geschiedenis is uitgeschakeld voor deze browser.",
|
|
||||||
"Chats": "Chats",
|
"Chats": "Chats",
|
||||||
"Check Again": "Controleer Opnieuw",
|
"Check Again": "Controleer Opnieuw",
|
||||||
"Check for updates": "Controleer op updates",
|
"Check for updates": "Controleer op updates",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Klik hier om een csv file te selecteren.",
|
"Click here to select a csv file.": "Klik hier om een csv file te selecteren.",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Klik hier om documenten te selecteren",
|
"Click here to select documents.": "Klik hier om documenten te selecteren",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "klik hier.",
|
"click here.": "klik hier.",
|
||||||
"Click on the user role button to change a user's role.": "Klik op de gebruikersrol knop om de rol van een gebruiker te wijzigen.",
|
"Click on the user role button to change a user's role.": "Klik op de gebruikersrol knop om de rol van een gebruiker te wijzigen.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "ComfyUI Base URL",
|
"ComfyUI Base URL": "ComfyUI Base URL",
|
||||||
"ComfyUI Base URL is required.": "ComfyUI Base URL is required.",
|
"ComfyUI Base URL is required.": "ComfyUI Base URL is required.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Commando",
|
"Command": "Commando",
|
||||||
"Concurrent Requests": "Gelijktijdige verzoeken",
|
"Concurrent Requests": "Gelijktijdige verzoeken",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Database",
|
"Database": "Database",
|
||||||
"December": "December",
|
"December": "December",
|
||||||
"Default": "Standaard",
|
"Default": "Standaard",
|
||||||
"Default (Automatic1111)": "Standaard (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Standaard (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Standaard (SentenceTransformers)",
|
||||||
"Default Model": "Standaard model",
|
"Default Model": "Standaard model",
|
||||||
"Default model updated": "Standaard model bijgewerkt",
|
"Default model updated": "Standaard model bijgewerkt",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Document",
|
"Document": "Document",
|
||||||
"Document Settings": "Document Instellingen",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "Documenten",
|
"Documents": "Documenten",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "maakt geen externe verbindingen, en je gegevens blijven veilig op je lokaal gehoste server.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "maakt geen externe verbindingen, en je gegevens blijven veilig op je lokaal gehoste server.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Embedding Model",
|
"Embedding Model": "Embedding Model",
|
||||||
"Embedding Model Engine": "Embedding Model Engine",
|
"Embedding Model Engine": "Embedding Model Engine",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Embedding model ingesteld op \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Embedding model ingesteld op \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Schakel Chat Geschiedenis in",
|
|
||||||
"Enable Community Sharing": "Delen via de community inschakelen",
|
"Enable Community Sharing": "Delen via de community inschakelen",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Schakel Nieuwe Registraties in",
|
"Enable New Sign Ups": "Schakel Nieuwe Registraties in",
|
||||||
"Enable Web Search": "Zoeken op het web inschakelen",
|
"Enable Web Search": "Zoeken op het web inschakelen",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Voer Google PSE Engine-ID in",
|
"Enter Google PSE Engine Id": "Voer Google PSE Engine-ID in",
|
||||||
"Enter Image Size (e.g. 512x512)": "Voeg afbeelding formaat toe (Bijv. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Voeg afbeelding formaat toe (Bijv. 512x512)",
|
||||||
"Enter language codes": "Voeg taal codes toe",
|
"Enter language codes": "Voeg taal codes toe",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Voeg model tag toe (Bijv. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Voeg model tag toe (Bijv. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Voeg aantal stappen toe (Bijv. 50)",
|
"Enter Number of Steps (e.g. 50)": "Voeg aantal stappen toe (Bijv. 50)",
|
||||||
"Enter Score": "Voeg score toe",
|
"Enter Score": "Voeg score toe",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Gemaakt door OpenWebUI Community",
|
"Made by OpenWebUI Community": "Gemaakt door OpenWebUI Community",
|
||||||
"Make sure to enclose them with": "Zorg ervoor dat je ze omringt met",
|
"Make sure to enclose them with": "Zorg ervoor dat je ze omringt met",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "Beheer Modellen",
|
"Manage Models": "Beheer Modellen",
|
||||||
"Manage Ollama Models": "Beheer Ollama Modellen",
|
"Manage Ollama Models": "Beheer Ollama Modellen",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Berichten die u verzendt nadat u uw link hebt gemaakt, worden niet gedeeld. Gebruikers met de URL kunnen de gedeelde chat bekijken.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Berichten die u verzendt nadat u uw link hebt gemaakt, worden niet gedeeld. Gebruikers met de URL kunnen de gedeelde chat bekijken.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Minimale Score",
|
"Minimum Score": "Minimale Score",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Het lijkt erop dat de URL ongeldig is. Controleer het nogmaals en probeer opnieuw.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Het lijkt erop dat de URL ongeldig is. Controleer het nogmaals en probeer opnieuw.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Je gebruikt een niet-ondersteunde methode (alleen frontend). Serveer de WebUI vanuit de backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Je gebruikt een niet-ondersteunde methode (alleen frontend). Serveer de WebUI vanuit de backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Open nieuwe chat",
|
"Open new chat": "Open nieuwe chat",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "Selecteer een basismodel",
|
"Select a base model": "Selecteer een basismodel",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Selecteer een modus",
|
|
||||||
"Select a model": "Selecteer een model",
|
"Select a model": "Selecteer een model",
|
||||||
"Select a pipeline": "Selecteer een pijplijn",
|
"Select a pipeline": "Selecteer een pijplijn",
|
||||||
"Select a pipeline url": "Selecteer een pijplijn-URL",
|
"Select a pipeline url": "Selecteer een pijplijn-URL",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Selecteer een Ollama instantie",
|
"Select an Ollama instance": "Selecteer een Ollama instantie",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Selecteer een model",
|
"Select model": "Selecteer een model",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Geselecteerde modellen ondersteunen geen beeldinvoer",
|
"Selected model(s) do not support image inputs": "Geselecteerde modellen ondersteunen geen beeldinvoer",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "Stel Stem in",
|
"Set Voice": "Stel Stem in",
|
||||||
"Settings": "Instellingen",
|
"Settings": "Instellingen",
|
||||||
"Settings saved successfully!": "Instellingen succesvol opgeslagen!",
|
"Settings saved successfully!": "Instellingen succesvol opgeslagen!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "Deel Chat",
|
"Share": "Deel Chat",
|
||||||
"Share Chat": "Deel Chat",
|
"Share Chat": "Deel Chat",
|
||||||
"Share to OpenWebUI Community": "Deel naar OpenWebUI Community",
|
"Share to OpenWebUI Community": "Deel naar OpenWebUI Community",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "Vertel ons meer:",
|
"Tell us more:": "Vertel ons meer:",
|
||||||
"Temperature": "Temperatuur",
|
"Temperature": "Temperatuur",
|
||||||
"Template": "Template",
|
"Template": "Template",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Tekst Aanvulling",
|
"Text Completion": "Tekst Aanvulling",
|
||||||
"Text-to-Speech Engine": "Tekst-naar-Spraak Engine",
|
"Text-to-Speech Engine": "Tekst-naar-Spraak Engine",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dit zorgt ervoor dat je waardevolle gesprekken veilig worden opgeslagen in je backend database. Dank je wel!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dit zorgt ervoor dat je waardevolle gesprekken veilig worden opgeslagen in je backend database. Dank je wel!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "Deze instelling wordt niet gesynchroniseerd tussen browsers of apparaten.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "Gevorderde uitleg",
|
"Thorough explanation": "Gevorderde uitleg",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "Web Loader instellingen",
|
"Web Loader Settings": "Web Loader instellingen",
|
||||||
"Web Params": "Web Params",
|
|
||||||
"Web Search": "Zoeken op het web",
|
"Web Search": "Zoeken op het web",
|
||||||
"Web Search Engine": "Zoekmachine op het web",
|
"Web Search Engine": "Zoekmachine op het web",
|
||||||
"Webhook URL": "Webhook URL",
|
"Webhook URL": "Webhook URL",
|
||||||
"WebUI Settings": "WebUI Instellingen",
|
"WebUI Settings": "WebUI Instellingen",
|
||||||
"WebUI will make requests to": "WebUI zal verzoeken doen naar",
|
"WebUI will make requests to": "WebUI zal verzoeken doen naar",
|
||||||
"What’s New in": "Wat is nieuw in",
|
"What’s New in": "Wat is nieuw in",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Wanneer geschiedenis is uitgeschakeld, zullen nieuwe chats op deze browser niet verschijnen in je geschiedenis op een van je apparaten.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "Werkruimte",
|
"Workspace": "Werkruimte",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "ਸਾਰੇ ਉਪਭੋਗਤਾ",
|
"All Users": "ਸਾਰੇ ਉਪਭੋਗਤਾ",
|
||||||
"Allow": "ਅਨੁਮਤੀ",
|
"Allow": "ਅਨੁਮਤੀ",
|
||||||
"Allow Chat Deletion": "ਗੱਲਬਾਤ ਮਿਟਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ",
|
"Allow Chat Deletion": "ਗੱਲਬਾਤ ਮਿਟਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "ਅਲਫ਼ਾਨਯੂਮੈਰਿਕ ਅੱਖਰ ਅਤੇ ਹਾਈਫਨ",
|
"alphanumeric characters and hyphens": "ਅਲਫ਼ਾਨਯੂਮੈਰਿਕ ਅੱਖਰ ਅਤੇ ਹਾਈਫਨ",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "ਅਗਸਤ",
|
"August": "ਅਗਸਤ",
|
||||||
"Auto-playback response": "ਆਟੋ-ਪਲੇਬੈਕ ਜਵਾਬ",
|
"Auto-playback response": "ਆਟੋ-ਪਲੇਬੈਕ ਜਵਾਬ",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 ਬੇਸ URL",
|
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 ਬੇਸ URL",
|
||||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 ਬੇਸ URL ਦੀ ਲੋੜ ਹੈ।",
|
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 ਬੇਸ URL ਦੀ ਲੋੜ ਹੈ।",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "ਗੱਲਬਾਤ ਬਬਲ UI",
|
"Chat Bubble UI": "ਗੱਲਬਾਤ ਬਬਲ UI",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "ਗੱਲਬਾਤ ਡਿਰੈਕਟਨ",
|
"Chat direction": "ਗੱਲਬਾਤ ਡਿਰੈਕਟਨ",
|
||||||
"Chat History": "ਗੱਲਬਾਤ ਦਾ ਇਤਿਹਾਸ",
|
|
||||||
"Chat History is off for this browser.": "ਇਸ ਬ੍ਰਾਊਜ਼ਰ ਲਈ ਗੱਲਬਾਤ ਦਾ ਇਤਿਹਾਸ ਬੰਦ ਹੈ।",
|
|
||||||
"Chats": "ਗੱਲਾਂ",
|
"Chats": "ਗੱਲਾਂ",
|
||||||
"Check Again": "ਮੁੜ ਜਾਂਚ ਕਰੋ",
|
"Check Again": "ਮੁੜ ਜਾਂਚ ਕਰੋ",
|
||||||
"Check for updates": "ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ",
|
"Check for updates": "ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "CSV ਫਾਈਲ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
|
"Click here to select a csv file.": "CSV ਫਾਈਲ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "ਡਾਕੂਮੈਂਟ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
|
"Click here to select documents.": "ਡਾਕੂਮੈਂਟ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
|
"click here.": "ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
|
||||||
"Click on the user role button to change a user's role.": "ਉਪਭੋਗਤਾ ਦੀ ਭੂਮਿਕਾ ਬਦਲਣ ਲਈ ਉਪਭੋਗਤਾ ਭੂਮਿਕਾ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।",
|
"Click on the user role button to change a user's role.": "ਉਪਭੋਗਤਾ ਦੀ ਭੂਮਿਕਾ ਬਦਲਣ ਲਈ ਉਪਭੋਗਤਾ ਭੂਮਿਕਾ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ਕੰਫੀਯੂਆਈ",
|
"ComfyUI": "ਕੰਫੀਯੂਆਈ",
|
||||||
"ComfyUI Base URL": "ਕੰਫੀਯੂਆਈ ਬੇਸ URL",
|
"ComfyUI Base URL": "ਕੰਫੀਯੂਆਈ ਬੇਸ URL",
|
||||||
"ComfyUI Base URL is required.": "ਕੰਫੀਯੂਆਈ ਬੇਸ URL ਦੀ ਲੋੜ ਹੈ।",
|
"ComfyUI Base URL is required.": "ਕੰਫੀਯੂਆਈ ਬੇਸ URL ਦੀ ਲੋੜ ਹੈ।",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "ਕਮਾਂਡ",
|
"Command": "ਕਮਾਂਡ",
|
||||||
"Concurrent Requests": "ਸਮਕਾਲੀ ਬੇਨਤੀਆਂ",
|
"Concurrent Requests": "ਸਮਕਾਲੀ ਬੇਨਤੀਆਂ",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "ਡਾਟਾਬੇਸ",
|
"Database": "ਡਾਟਾਬੇਸ",
|
||||||
"December": "ਦਸੰਬਰ",
|
"December": "ਦਸੰਬਰ",
|
||||||
"Default": "ਮੂਲ",
|
"Default": "ਮੂਲ",
|
||||||
"Default (Automatic1111)": "ਮੂਲ (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "ਮੂਲ (ਸੈਂਟੈਂਸਟ੍ਰਾਂਸਫਾਰਮਰਸ)",
|
"Default (SentenceTransformers)": "ਮੂਲ (ਸੈਂਟੈਂਸਟ੍ਰਾਂਸਫਾਰਮਰਸ)",
|
||||||
"Default Model": "ਡਿਫਾਲਟ ਮਾਡਲ",
|
"Default Model": "ਡਿਫਾਲਟ ਮਾਡਲ",
|
||||||
"Default model updated": "ਮੂਲ ਮਾਡਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ",
|
"Default model updated": "ਮੂਲ ਮਾਡਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "ਡਾਕੂਮੈਂਟ",
|
"Document": "ਡਾਕੂਮੈਂਟ",
|
||||||
"Document Settings": "ਡਾਕੂਮੈਂਟ ਸੈਟਿੰਗਾਂ",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "ਡਾਕੂਮੈਂਟ",
|
"Documents": "ਡਾਕੂਮੈਂਟ",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "ਕੋਈ ਬਾਹਰੀ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਬਣਾਉਂਦਾ, ਅਤੇ ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ ਸਥਾਨਕ ਸਰਵਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਰਹਿੰਦਾ ਹੈ।",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "ਕੋਈ ਬਾਹਰੀ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਬਣਾਉਂਦਾ, ਅਤੇ ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ ਸਥਾਨਕ ਸਰਵਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਰਹਿੰਦਾ ਹੈ।",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ",
|
"Embedding Model": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ",
|
||||||
"Embedding Model Engine": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਇੰਜਣ",
|
"Embedding Model Engine": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਇੰਜਣ",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਨੂੰ \"{{embedding_model}}\" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ",
|
"Embedding model set to \"{{embedding_model}}\"": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਨੂੰ \"{{embedding_model}}\" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ",
|
||||||
"Enable Chat History": "ਗੱਲਬਾਤ ਦਾ ਇਤਿਹਾਸ ਯੋਗ ਕਰੋ",
|
|
||||||
"Enable Community Sharing": "ਕਮਿਊਨਿਟੀ ਸ਼ੇਅਰਿੰਗ ਨੂੰ ਸਮਰੱਥ ਕਰੋ",
|
"Enable Community Sharing": "ਕਮਿਊਨਿਟੀ ਸ਼ੇਅਰਿੰਗ ਨੂੰ ਸਮਰੱਥ ਕਰੋ",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "ਨਵੇਂ ਸਾਈਨ ਅਪ ਯੋਗ ਕਰੋ",
|
"Enable New Sign Ups": "ਨਵੇਂ ਸਾਈਨ ਅਪ ਯੋਗ ਕਰੋ",
|
||||||
"Enable Web Search": "ਵੈੱਬ ਖੋਜ ਨੂੰ ਸਮਰੱਥ ਕਰੋ",
|
"Enable Web Search": "ਵੈੱਬ ਖੋਜ ਨੂੰ ਸਮਰੱਥ ਕਰੋ",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Google PSE ਇੰਜਣ ID ਦਾਖਲ ਕਰੋ",
|
"Enter Google PSE Engine Id": "Google PSE ਇੰਜਣ ID ਦਾਖਲ ਕਰੋ",
|
||||||
"Enter Image Size (e.g. 512x512)": "ਚਿੱਤਰ ਆਕਾਰ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 512x512)",
|
"Enter Image Size (e.g. 512x512)": "ਚਿੱਤਰ ਆਕਾਰ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 512x512)",
|
||||||
"Enter language codes": "ਭਾਸ਼ਾ ਕੋਡ ਦਰਜ ਕਰੋ",
|
"Enter language codes": "ਭਾਸ਼ਾ ਕੋਡ ਦਰਜ ਕਰੋ",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "ਮਾਡਲ ਟੈਗ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "ਮਾਡਲ ਟੈਗ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "ਕਦਮਾਂ ਦੀ ਗਿਣਤੀ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 50)",
|
"Enter Number of Steps (e.g. 50)": "ਕਦਮਾਂ ਦੀ ਗਿਣਤੀ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 50)",
|
||||||
"Enter Score": "ਸਕੋਰ ਦਰਜ ਕਰੋ",
|
"Enter Score": "ਸਕੋਰ ਦਰਜ ਕਰੋ",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ",
|
"Made by OpenWebUI Community": "ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ",
|
||||||
"Make sure to enclose them with": "ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਉਨ੍ਹਾਂ ਨੂੰ ਘੇਰੋ",
|
"Make sure to enclose them with": "ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਉਨ੍ਹਾਂ ਨੂੰ ਘੇਰੋ",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "ਮਾਡਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ",
|
"Manage Models": "ਮਾਡਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ",
|
||||||
"Manage Ollama Models": "ਓਲਾਮਾ ਮਾਡਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ",
|
"Manage Ollama Models": "ਓਲਾਮਾ ਮਾਡਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "ਤੁਹਾਡਾ ਲਿੰਕ ਬਣਾਉਣ ਤੋਂ ਬਾਅਦ ਤੁਹਾਡੇ ਵੱਲੋਂ ਭੇਜੇ ਗਏ ਸੁਨੇਹੇ ਸਾਂਝੇ ਨਹੀਂ ਕੀਤੇ ਜਾਣਗੇ। URL ਵਾਲੇ ਉਪਭੋਗਤਾ ਸਾਂਝੀ ਚੈਟ ਨੂੰ ਵੇਖ ਸਕਣਗੇ।",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "ਤੁਹਾਡਾ ਲਿੰਕ ਬਣਾਉਣ ਤੋਂ ਬਾਅਦ ਤੁਹਾਡੇ ਵੱਲੋਂ ਭੇਜੇ ਗਏ ਸੁਨੇਹੇ ਸਾਂਝੇ ਨਹੀਂ ਕੀਤੇ ਜਾਣਗੇ। URL ਵਾਲੇ ਉਪਭੋਗਤਾ ਸਾਂਝੀ ਚੈਟ ਨੂੰ ਵੇਖ ਸਕਣਗੇ।",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "ਘੱਟੋ-ਘੱਟ ਸਕੋਰ",
|
"Minimum Score": "ਘੱਟੋ-ਘੱਟ ਸਕੋਰ",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "ਓਹੋ! ਲੱਗਦਾ ਹੈ ਕਿ URL ਗਲਤ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਜਾਂਚ ਕਰੋ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "ਓਹੋ! ਲੱਗਦਾ ਹੈ ਕਿ URL ਗਲਤ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਜਾਂਚ ਕਰੋ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "ਓਹੋ! ਤੁਸੀਂ ਇੱਕ ਅਣਸਮਰਥਿਤ ਢੰਗ ਵਰਤ ਰਹੇ ਹੋ (ਸਿਰਫ਼ ਫਰੰਟਐਂਡ)। ਕਿਰਪਾ ਕਰਕੇ ਵੈਬਯੂਆਈ ਨੂੰ ਬੈਕਐਂਡ ਤੋਂ ਸਰਵ ਕਰੋ।",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "ਓਹੋ! ਤੁਸੀਂ ਇੱਕ ਅਣਸਮਰਥਿਤ ਢੰਗ ਵਰਤ ਰਹੇ ਹੋ (ਸਿਰਫ਼ ਫਰੰਟਐਂਡ)। ਕਿਰਪਾ ਕਰਕੇ ਵੈਬਯੂਆਈ ਨੂੰ ਬੈਕਐਂਡ ਤੋਂ ਸਰਵ ਕਰੋ।",
|
||||||
"Open AI (Dall-E)": "ਓਪਨ ਏਆਈ (ਡਾਲ-ਈ)",
|
|
||||||
"Open new chat": "ਨਵੀਂ ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ",
|
"Open new chat": "ਨਵੀਂ ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "ਓਪਨਏਆਈ",
|
"OpenAI": "ਓਪਨਏਆਈ",
|
||||||
|
|
@ -536,13 +541,13 @@
|
||||||
"Select a base model": "ਆਧਾਰ ਮਾਡਲ ਚੁਣੋ",
|
"Select a base model": "ਆਧਾਰ ਮਾਡਲ ਚੁਣੋ",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "ਇੱਕ ਮੋਡ ਚੁਣੋ",
|
|
||||||
"Select a model": "ਇੱਕ ਮਾਡਲ ਚੁਣੋ",
|
"Select a model": "ਇੱਕ ਮਾਡਲ ਚੁਣੋ",
|
||||||
"Select a pipeline": "ਪਾਈਪਲਾਈਨ ਚੁਣੋ",
|
"Select a pipeline": "ਪਾਈਪਲਾਈਨ ਚੁਣੋ",
|
||||||
"Select a pipeline url": "ਪਾਈਪਲਾਈਨ URL ਚੁਣੋ",
|
"Select a pipeline url": "ਪਾਈਪਲਾਈਨ URL ਚੁਣੋ",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "ਇੱਕ ਓਲਾਮਾ ਇੰਸਟੈਂਸ ਚੁਣੋ",
|
"Select an Ollama instance": "ਇੱਕ ਓਲਾਮਾ ਇੰਸਟੈਂਸ ਚੁਣੋ",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "ਮਾਡਲ ਚੁਣੋ",
|
"Select model": "ਮਾਡਲ ਚੁਣੋ",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "ਚੁਣੇ ਗਏ ਮਾਡਲ(ਆਂ) ਚਿੱਤਰ ਇਨਪੁੱਟਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ",
|
"Selected model(s) do not support image inputs": "ਚੁਣੇ ਗਏ ਮਾਡਲ(ਆਂ) ਚਿੱਤਰ ਇਨਪੁੱਟਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ",
|
||||||
|
|
@ -564,7 +569,6 @@
|
||||||
"Set Voice": "ਆਵਾਜ਼ ਸੈੱਟ ਕਰੋ",
|
"Set Voice": "ਆਵਾਜ਼ ਸੈੱਟ ਕਰੋ",
|
||||||
"Settings": "ਸੈਟਿੰਗਾਂ",
|
"Settings": "ਸੈਟਿੰਗਾਂ",
|
||||||
"Settings saved successfully!": "ਸੈਟਿੰਗਾਂ ਸਫਲਤਾਪੂਰਵਕ ਸੰਭਾਲੀਆਂ ਗਈਆਂ!",
|
"Settings saved successfully!": "ਸੈਟਿੰਗਾਂ ਸਫਲਤਾਪੂਰਵਕ ਸੰਭਾਲੀਆਂ ਗਈਆਂ!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "ਸਾਂਝਾ ਕਰੋ",
|
"Share": "ਸਾਂਝਾ ਕਰੋ",
|
||||||
"Share Chat": "ਗੱਲਬਾਤ ਸਾਂਝੀ ਕਰੋ",
|
"Share Chat": "ਗੱਲਬਾਤ ਸਾਂਝੀ ਕਰੋ",
|
||||||
"Share to OpenWebUI Community": "ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਨਾਲ ਸਾਂਝਾ ਕਰੋ",
|
"Share to OpenWebUI Community": "ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਨਾਲ ਸਾਂਝਾ ਕਰੋ",
|
||||||
|
|
@ -600,6 +604,7 @@
|
||||||
"Tell us more:": "ਸਾਨੂੰ ਹੋਰ ਦੱਸੋ:",
|
"Tell us more:": "ਸਾਨੂੰ ਹੋਰ ਦੱਸੋ:",
|
||||||
"Temperature": "ਤਾਪਮਾਨ",
|
"Temperature": "ਤਾਪਮਾਨ",
|
||||||
"Template": "ਟੈਮਪਲੇਟ",
|
"Template": "ਟੈਮਪਲੇਟ",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "ਪਾਠ ਪੂਰਨਤਾ",
|
"Text Completion": "ਪਾਠ ਪੂਰਨਤਾ",
|
||||||
"Text-to-Speech Engine": "ਪਾਠ-ਤੋਂ-ਬੋਲ ਇੰਜਣ",
|
"Text-to-Speech Engine": "ਪਾਠ-ਤੋਂ-ਬੋਲ ਇੰਜਣ",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -611,7 +616,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਡੀਆਂ ਕੀਮਤੀ ਗੱਲਾਂ ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਡਾਟਾਬੇਸ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਤੌਰ 'ਤੇ ਸੰਭਾਲੀਆਂ ਗਈਆਂ ਹਨ। ਧੰਨਵਾਦ!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਡੀਆਂ ਕੀਮਤੀ ਗੱਲਾਂ ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਡਾਟਾਬੇਸ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਤੌਰ 'ਤੇ ਸੰਭਾਲੀਆਂ ਗਈਆਂ ਹਨ। ਧੰਨਵਾਦ!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "ਇਹ ਸੈਟਿੰਗ ਬ੍ਰਾਊਜ਼ਰ ਜਾਂ ਡਿਵਾਈਸਾਂ ਵਿੱਚ ਸਿੰਕ ਨਹੀਂ ਹੁੰਦੀ।",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "ਵਿਸਥਾਰ ਨਾਲ ਵਿਆਖਿਆ",
|
"Thorough explanation": "ਵਿਸਥਾਰ ਨਾਲ ਵਿਆਖਿਆ",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -692,14 +696,12 @@
|
||||||
"Web": "ਵੈਬ",
|
"Web": "ਵੈਬ",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "ਵੈਬ ਲੋਡਰ ਸੈਟਿੰਗਾਂ",
|
"Web Loader Settings": "ਵੈਬ ਲੋਡਰ ਸੈਟਿੰਗਾਂ",
|
||||||
"Web Params": "ਵੈਬ ਪੈਰਾਮੀਟਰ",
|
|
||||||
"Web Search": "ਵੈੱਬ ਖੋਜ",
|
"Web Search": "ਵੈੱਬ ਖੋਜ",
|
||||||
"Web Search Engine": "ਵੈੱਬ ਖੋਜ ਇੰਜਣ",
|
"Web Search Engine": "ਵੈੱਬ ਖੋਜ ਇੰਜਣ",
|
||||||
"Webhook URL": "ਵੈਬਹੁੱਕ URL",
|
"Webhook URL": "ਵੈਬਹੁੱਕ URL",
|
||||||
"WebUI Settings": "ਵੈਬਯੂਆਈ ਸੈਟਿੰਗਾਂ",
|
"WebUI Settings": "ਵੈਬਯੂਆਈ ਸੈਟਿੰਗਾਂ",
|
||||||
"WebUI will make requests to": "ਵੈਬਯੂਆਈ ਬੇਨਤੀਆਂ ਕਰੇਗਾ",
|
"WebUI will make requests to": "ਵੈਬਯੂਆਈ ਬੇਨਤੀਆਂ ਕਰੇਗਾ",
|
||||||
"What’s New in": "ਨਵਾਂ ਕੀ ਹੈ",
|
"What’s New in": "ਨਵਾਂ ਕੀ ਹੈ",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "ਜਦੋਂ ਇਤਿਹਾਸ ਬੰਦ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਸ ਬ੍ਰਾਊਜ਼ਰ 'ਤੇ ਨਵੀਆਂ ਗੱਲਾਂ ਤੁਹਾਡੇ ਕਿਸੇ ਵੀ ਜੰਤਰ 'ਤੇ ਤੁਹਾਡੇ ਇਤਿਹਾਸ ਵਿੱਚ ਨਹੀਂ ਆਉਣਗੀਆਂ।",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "ਕਾਰਜਸਥਲ",
|
"Workspace": "ਕਾਰਜਸਥਲ",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Wszyscy użytkownicy",
|
"All Users": "Wszyscy użytkownicy",
|
||||||
"Allow": "Pozwól",
|
"Allow": "Pozwól",
|
||||||
"Allow Chat Deletion": "Pozwól na usuwanie czatu",
|
"Allow Chat Deletion": "Pozwól na usuwanie czatu",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "",
|
"Allow non-local voices": "",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "",
|
"Allow User Location": "",
|
||||||
"Allow Voice Interruption in Call": "",
|
"Allow Voice Interruption in Call": "",
|
||||||
"alphanumeric characters and hyphens": "znaki alfanumeryczne i myślniki",
|
"alphanumeric characters and hyphens": "znaki alfanumeryczne i myślniki",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "",
|
"Audio settings updated successfully": "",
|
||||||
"August": "Sierpień",
|
"August": "Sierpień",
|
||||||
"Auto-playback response": "Odtwarzanie automatyczne odpowiedzi",
|
"Auto-playback response": "Odtwarzanie automatyczne odpowiedzi",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "",
|
"AUTOMATIC1111 Api Auth String": "",
|
||||||
"AUTOMATIC1111 Base URL": "Podstawowy adres URL AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "Podstawowy adres URL AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "Podstawowy adres URL AUTOMATIC1111 jest wymagany.",
|
"AUTOMATIC1111 Base URL is required.": "Podstawowy adres URL AUTOMATIC1111 jest wymagany.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Bąbelki czatu",
|
"Chat Bubble UI": "Bąbelki czatu",
|
||||||
"Chat Controls": "",
|
"Chat Controls": "",
|
||||||
"Chat direction": "Kierunek czatu",
|
"Chat direction": "Kierunek czatu",
|
||||||
"Chat History": "Historia czatu",
|
|
||||||
"Chat History is off for this browser.": "Historia czatu jest wyłączona dla tej przeglądarki.",
|
|
||||||
"Chats": "Czaty",
|
"Chats": "Czaty",
|
||||||
"Check Again": "Sprawdź ponownie",
|
"Check Again": "Sprawdź ponownie",
|
||||||
"Check for updates": "Sprawdź aktualizacje",
|
"Check for updates": "Sprawdź aktualizacje",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Kliknij tutaj, żeby wybrać plik CSV",
|
"Click here to select a csv file.": "Kliknij tutaj, żeby wybrać plik CSV",
|
||||||
"Click here to select a py file.": "",
|
"Click here to select a py file.": "",
|
||||||
"Click here to select documents.": "Kliknij tutaj, aby wybrać dokumenty.",
|
"Click here to select documents.": "Kliknij tutaj, aby wybrać dokumenty.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "kliknij tutaj.",
|
"click here.": "kliknij tutaj.",
|
||||||
"Click on the user role button to change a user's role.": "Kliknij przycisk roli użytkownika, aby zmienić rolę użytkownika.",
|
"Click on the user role button to change a user's role.": "Kliknij przycisk roli użytkownika, aby zmienić rolę użytkownika.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "Bazowy URL ComfyUI",
|
"ComfyUI Base URL": "Bazowy URL ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "Bazowy URL ComfyUI jest wymagany.",
|
"ComfyUI Base URL is required.": "Bazowy URL ComfyUI jest wymagany.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Polecenie",
|
"Command": "Polecenie",
|
||||||
"Concurrent Requests": "Równoczesne żądania",
|
"Concurrent Requests": "Równoczesne żądania",
|
||||||
"Confirm": "",
|
"Confirm": "",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Baza danych",
|
"Database": "Baza danych",
|
||||||
"December": "Grudzień",
|
"December": "Grudzień",
|
||||||
"Default": "Domyślny",
|
"Default": "Domyślny",
|
||||||
"Default (Automatic1111)": "Domyślny (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Domyślny (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Domyślny (SentenceTransformers)",
|
||||||
"Default Model": "Model domyślny",
|
"Default Model": "Model domyślny",
|
||||||
"Default model updated": "Domyślny model zaktualizowany",
|
"Default model updated": "Domyślny model zaktualizowany",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "",
|
"Do not install functions from sources you do not fully trust.": "",
|
||||||
"Do not install tools from sources you do not fully trust.": "",
|
"Do not install tools from sources you do not fully trust.": "",
|
||||||
"Document": "Dokument",
|
"Document": "Dokument",
|
||||||
"Document Settings": "Ustawienia dokumentu",
|
|
||||||
"Documentation": "",
|
"Documentation": "",
|
||||||
"Documents": "Dokumenty",
|
"Documents": "Dokumenty",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "nie nawiązuje żadnych zewnętrznych połączeń, a Twoje dane pozostają bezpiecznie na Twoim lokalnie hostowanym serwerze.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "nie nawiązuje żadnych zewnętrznych połączeń, a Twoje dane pozostają bezpiecznie na Twoim lokalnie hostowanym serwerze.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Model osadzania",
|
"Embedding Model": "Model osadzania",
|
||||||
"Embedding Model Engine": "Silnik modelu osadzania",
|
"Embedding Model Engine": "Silnik modelu osadzania",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Model osadzania ustawiono na \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Model osadzania ustawiono na \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Włącz historię czatu",
|
|
||||||
"Enable Community Sharing": "Włączanie udostępniania społecznościowego",
|
"Enable Community Sharing": "Włączanie udostępniania społecznościowego",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Włącz nowe rejestracje",
|
"Enable New Sign Ups": "Włącz nowe rejestracje",
|
||||||
"Enable Web Search": "Włączanie wyszukiwania w Internecie",
|
"Enable Web Search": "Włączanie wyszukiwania w Internecie",
|
||||||
"Enabled": "",
|
"Enabled": "",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Wprowadź identyfikator aparatu Google PSE",
|
"Enter Google PSE Engine Id": "Wprowadź identyfikator aparatu Google PSE",
|
||||||
"Enter Image Size (e.g. 512x512)": "Wprowadź rozmiar obrazu (np. 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Wprowadź rozmiar obrazu (np. 512x512)",
|
||||||
"Enter language codes": "Wprowadź kody języków",
|
"Enter language codes": "Wprowadź kody języków",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Wprowadź tag modelu (np. {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Wprowadź tag modelu (np. {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Wprowadź liczbę kroków (np. 50)",
|
"Enter Number of Steps (e.g. 50)": "Wprowadź liczbę kroków (np. 50)",
|
||||||
"Enter Score": "Wprowadź wynik",
|
"Enter Score": "Wprowadź wynik",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Stworzone przez społeczność OpenWebUI",
|
"Made by OpenWebUI Community": "Stworzone przez społeczność OpenWebUI",
|
||||||
"Make sure to enclose them with": "Upewnij się, że są one zamknięte w",
|
"Make sure to enclose them with": "Upewnij się, że są one zamknięte w",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "",
|
"Manage": "",
|
||||||
"Manage Models": "Zarządzaj modelami",
|
"Manage Models": "Zarządzaj modelami",
|
||||||
"Manage Ollama Models": "Zarządzaj modelami Ollama",
|
"Manage Ollama Models": "Zarządzaj modelami Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "",
|
"Memory cleared successfully": "",
|
||||||
"Memory deleted successfully": "",
|
"Memory deleted successfully": "",
|
||||||
"Memory updated successfully": "",
|
"Memory updated successfully": "",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Wiadomości wysyłane po utworzeniu linku nie będą udostępniane. Użytkownicy z adresem URL będą mogli wyświetlić udostępniony czat.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Wiadomości wysyłane po utworzeniu linku nie będą udostępniane. Użytkownicy z adresem URL będą mogli wyświetlić udostępniony czat.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Minimalny wynik",
|
"Minimum Score": "Minimalny wynik",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Wygląda na to, że URL jest nieprawidłowy. Sprawdź jeszcze raz i spróbuj ponownie.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Wygląda na to, że URL jest nieprawidłowy. Sprawdź jeszcze raz i spróbuj ponownie.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Używasz nieobsługiwanej metody (tylko interfejs front-end). Proszę obsłużyć interfejs WebUI z poziomu backendu.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Używasz nieobsługiwanej metody (tylko interfejs front-end). Proszę obsłużyć interfejs WebUI z poziomu backendu.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Otwórz nowy czat",
|
"Open new chat": "Otwórz nowy czat",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -538,13 +543,13 @@
|
||||||
"Select a base model": "Wybieranie modelu bazowego",
|
"Select a base model": "Wybieranie modelu bazowego",
|
||||||
"Select a engine": "",
|
"Select a engine": "",
|
||||||
"Select a function": "",
|
"Select a function": "",
|
||||||
"Select a mode": "Wybierz tryb",
|
|
||||||
"Select a model": "Wybierz model",
|
"Select a model": "Wybierz model",
|
||||||
"Select a pipeline": "Wybieranie potoku",
|
"Select a pipeline": "Wybieranie potoku",
|
||||||
"Select a pipeline url": "Wybieranie adresu URL potoku",
|
"Select a pipeline url": "Wybieranie adresu URL potoku",
|
||||||
"Select a tool": "",
|
"Select a tool": "",
|
||||||
"Select an Ollama instance": "Wybierz instancję Ollama",
|
"Select an Ollama instance": "Wybierz instancję Ollama",
|
||||||
"Select Documents": "",
|
"Select Documents": "",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Wybierz model",
|
"Select model": "Wybierz model",
|
||||||
"Select only one model to call": "",
|
"Select only one model to call": "",
|
||||||
"Selected model(s) do not support image inputs": "Wybrane modele nie obsługują danych wejściowych obrazu",
|
"Selected model(s) do not support image inputs": "Wybrane modele nie obsługują danych wejściowych obrazu",
|
||||||
|
|
@ -566,7 +571,6 @@
|
||||||
"Set Voice": "Ustaw głos",
|
"Set Voice": "Ustaw głos",
|
||||||
"Settings": "Ustawienia",
|
"Settings": "Ustawienia",
|
||||||
"Settings saved successfully!": "Ustawienia zapisane pomyślnie!",
|
"Settings saved successfully!": "Ustawienia zapisane pomyślnie!",
|
||||||
"Settings updated successfully": "",
|
|
||||||
"Share": "Udostępnij",
|
"Share": "Udostępnij",
|
||||||
"Share Chat": "Udostępnij czat",
|
"Share Chat": "Udostępnij czat",
|
||||||
"Share to OpenWebUI Community": "Dziel się z społecznością OpenWebUI",
|
"Share to OpenWebUI Community": "Dziel się z społecznością OpenWebUI",
|
||||||
|
|
@ -602,6 +606,7 @@
|
||||||
"Tell us more:": "Powiedz nam więcej",
|
"Tell us more:": "Powiedz nam więcej",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Szablon",
|
"Template": "Szablon",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Uzupełnienie tekstu",
|
"Text Completion": "Uzupełnienie tekstu",
|
||||||
"Text-to-Speech Engine": "Silnik tekstu na mowę",
|
"Text-to-Speech Engine": "Silnik tekstu na mowę",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -613,7 +618,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "",
|
"This action cannot be undone. Do you wish to continue?": "",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "To zapewnia, że Twoje cenne rozmowy są bezpiecznie zapisywane w bazie danych backendowej. Dziękujemy!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "To zapewnia, że Twoje cenne rozmowy są bezpiecznie zapisywane w bazie danych backendowej. Dziękujemy!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "",
|
||||||
"This setting does not sync across browsers or devices.": "To ustawienie nie synchronizuje się między przeglądarkami ani urządzeniami.",
|
|
||||||
"This will delete": "",
|
"This will delete": "",
|
||||||
"Thorough explanation": "Dokładne wyjaśnienie",
|
"Thorough explanation": "Dokładne wyjaśnienie",
|
||||||
"Tika": "",
|
"Tika": "",
|
||||||
|
|
@ -694,14 +698,12 @@
|
||||||
"Web": "Sieć",
|
"Web": "Sieć",
|
||||||
"Web API": "",
|
"Web API": "",
|
||||||
"Web Loader Settings": "Ustawienia pobierania z sieci",
|
"Web Loader Settings": "Ustawienia pobierania z sieci",
|
||||||
"Web Params": "Parametry sieci",
|
|
||||||
"Web Search": "Wyszukiwarka w Internecie",
|
"Web Search": "Wyszukiwarka w Internecie",
|
||||||
"Web Search Engine": "Wyszukiwarka internetowa",
|
"Web Search Engine": "Wyszukiwarka internetowa",
|
||||||
"Webhook URL": "URL webhook",
|
"Webhook URL": "URL webhook",
|
||||||
"WebUI Settings": "Ustawienia interfejsu WebUI",
|
"WebUI Settings": "Ustawienia interfejsu WebUI",
|
||||||
"WebUI will make requests to": "Interfejs sieciowy będzie wysyłał żądania do",
|
"WebUI will make requests to": "Interfejs sieciowy będzie wysyłał żądania do",
|
||||||
"What’s New in": "Co nowego w",
|
"What’s New in": "Co nowego w",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kiedy historia jest wyłączona, nowe czaty na tej przeglądarce nie będą widoczne w historii na żadnym z twoich urządzeń.",
|
|
||||||
"Whisper (Local)": "",
|
"Whisper (Local)": "",
|
||||||
"Widescreen Mode": "",
|
"Widescreen Mode": "",
|
||||||
"Workspace": "Obszar roboczy",
|
"Workspace": "Obszar roboczy",
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"All Users": "Todos os Usuários",
|
"All Users": "Todos os Usuários",
|
||||||
"Allow": "Permitir",
|
"Allow": "Permitir",
|
||||||
"Allow Chat Deletion": "Permitir Exclusão de Chats",
|
"Allow Chat Deletion": "Permitir Exclusão de Chats",
|
||||||
|
"Allow Chat Editing": "",
|
||||||
"Allow non-local voices": "Permitir vozes não locais",
|
"Allow non-local voices": "Permitir vozes não locais",
|
||||||
|
"Allow Temporary Chat": "",
|
||||||
"Allow User Location": "Permitir Localização do Usuário",
|
"Allow User Location": "Permitir Localização do Usuário",
|
||||||
"Allow Voice Interruption in Call": "Permitir Interrupção de Voz na Chamada",
|
"Allow Voice Interruption in Call": "Permitir Interrupção de Voz na Chamada",
|
||||||
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
||||||
|
|
@ -68,6 +70,7 @@
|
||||||
"Audio settings updated successfully": "Configurações de áudio atualizadas com sucesso",
|
"Audio settings updated successfully": "Configurações de áudio atualizadas com sucesso",
|
||||||
"August": "Agosto",
|
"August": "Agosto",
|
||||||
"Auto-playback response": "Resposta de reprodução automática",
|
"Auto-playback response": "Resposta de reprodução automática",
|
||||||
|
"Automatic1111": "",
|
||||||
"AUTOMATIC1111 Api Auth String": "String de Autenticação da API AUTOMATIC1111",
|
"AUTOMATIC1111 Api Auth String": "String de Autenticação da API AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL": "URL Base AUTOMATIC1111",
|
"AUTOMATIC1111 Base URL": "URL Base AUTOMATIC1111",
|
||||||
"AUTOMATIC1111 Base URL is required.": "URL Base AUTOMATIC1111 é necessária.",
|
"AUTOMATIC1111 Base URL is required.": "URL Base AUTOMATIC1111 é necessária.",
|
||||||
|
|
@ -92,8 +95,6 @@
|
||||||
"Chat Bubble UI": "Interface de Bolha de Chat",
|
"Chat Bubble UI": "Interface de Bolha de Chat",
|
||||||
"Chat Controls": "Controles de Chat",
|
"Chat Controls": "Controles de Chat",
|
||||||
"Chat direction": "Direção do Chat",
|
"Chat direction": "Direção do Chat",
|
||||||
"Chat History": "Histórico de Chat",
|
|
||||||
"Chat History is off for this browser.": "O Histórico de Chat está desativado para este navegador.",
|
|
||||||
"Chats": "Chats",
|
"Chats": "Chats",
|
||||||
"Check Again": "Verificar Novamente",
|
"Check Again": "Verificar Novamente",
|
||||||
"Check for updates": "Verificar atualizações",
|
"Check for updates": "Verificar atualizações",
|
||||||
|
|
@ -111,6 +112,7 @@
|
||||||
"Click here to select a csv file.": "Clique aqui para enviar um arquivo csv.",
|
"Click here to select a csv file.": "Clique aqui para enviar um arquivo csv.",
|
||||||
"Click here to select a py file.": "Clique aqui para enviar um arquivo py.",
|
"Click here to select a py file.": "Clique aqui para enviar um arquivo py.",
|
||||||
"Click here to select documents.": "Clique aqui para enviar documentos.",
|
"Click here to select documents.": "Clique aqui para enviar documentos.",
|
||||||
|
"Click here to upload a workflow.json file.": "",
|
||||||
"click here.": "clique aqui.",
|
"click here.": "clique aqui.",
|
||||||
"Click on the user role button to change a user's role.": "Clique no botão de função do usuário para alterar a função de um usuário.",
|
"Click on the user role button to change a user's role.": "Clique no botão de função do usuário para alterar a função de um usuário.",
|
||||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permissão de escrita na área de transferência negada. Verifique as configurações do seu navegador para conceder o acesso necessário.",
|
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permissão de escrita na área de transferência negada. Verifique as configurações do seu navegador para conceder o acesso necessário.",
|
||||||
|
|
@ -121,6 +123,8 @@
|
||||||
"ComfyUI": "ComfyUI",
|
"ComfyUI": "ComfyUI",
|
||||||
"ComfyUI Base URL": "URL Base do ComfyUI",
|
"ComfyUI Base URL": "URL Base do ComfyUI",
|
||||||
"ComfyUI Base URL is required.": "URL Base do ComfyUI é necessária.",
|
"ComfyUI Base URL is required.": "URL Base do ComfyUI é necessária.",
|
||||||
|
"ComfyUI Workflow": "",
|
||||||
|
"ComfyUI Workflow Nodes": "",
|
||||||
"Command": "Comando",
|
"Command": "Comando",
|
||||||
"Concurrent Requests": "Solicitações Concomitantes",
|
"Concurrent Requests": "Solicitações Concomitantes",
|
||||||
"Confirm": "Confirmar",
|
"Confirm": "Confirmar",
|
||||||
|
|
@ -159,7 +163,7 @@
|
||||||
"Database": "Banco de Dados",
|
"Database": "Banco de Dados",
|
||||||
"December": "Dezembro",
|
"December": "Dezembro",
|
||||||
"Default": "Padrão",
|
"Default": "Padrão",
|
||||||
"Default (Automatic1111)": "Padrão (Automatic1111)",
|
"Default (Open AI)": "",
|
||||||
"Default (SentenceTransformers)": "Padrão (SentenceTransformers)",
|
"Default (SentenceTransformers)": "Padrão (SentenceTransformers)",
|
||||||
"Default Model": "Modelo Padrão",
|
"Default Model": "Modelo Padrão",
|
||||||
"Default model updated": "Modelo padrão atualizado",
|
"Default model updated": "Modelo padrão atualizado",
|
||||||
|
|
@ -197,7 +201,6 @@
|
||||||
"Do not install functions from sources you do not fully trust.": "Não instale funções de fontes que você não confia totalmente.",
|
"Do not install functions from sources you do not fully trust.": "Não instale funções de fontes que você não confia totalmente.",
|
||||||
"Do not install tools from sources you do not fully trust.": "Não instale ferramentas de fontes que você não confia totalmente.",
|
"Do not install tools from sources you do not fully trust.": "Não instale ferramentas de fontes que você não confia totalmente.",
|
||||||
"Document": "Documento",
|
"Document": "Documento",
|
||||||
"Document Settings": "Configurações de Documento",
|
|
||||||
"Documentation": "Documentação",
|
"Documentation": "Documentação",
|
||||||
"Documents": "Documentos",
|
"Documents": "Documentos",
|
||||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "não faz nenhuma conexão externa, e seus dados permanecem seguros no seu servidor local.",
|
"does not make any external connections, and your data stays securely on your locally hosted server.": "não faz nenhuma conexão externa, e seus dados permanecem seguros no seu servidor local.",
|
||||||
|
|
@ -222,8 +225,8 @@
|
||||||
"Embedding Model": "Modelo de Embedding",
|
"Embedding Model": "Modelo de Embedding",
|
||||||
"Embedding Model Engine": "Motor do Modelo de Embedding",
|
"Embedding Model Engine": "Motor do Modelo de Embedding",
|
||||||
"Embedding model set to \"{{embedding_model}}\"": "Modelo de embedding definido para \"{{embedding_model}}\"",
|
"Embedding model set to \"{{embedding_model}}\"": "Modelo de embedding definido para \"{{embedding_model}}\"",
|
||||||
"Enable Chat History": "Ativar Histórico de Chat",
|
|
||||||
"Enable Community Sharing": "Ativar Compartilhamento Comunitário",
|
"Enable Community Sharing": "Ativar Compartilhamento Comunitário",
|
||||||
|
"Enable Message Rating": "",
|
||||||
"Enable New Sign Ups": "Ativar Novos Cadastros",
|
"Enable New Sign Ups": "Ativar Novos Cadastros",
|
||||||
"Enable Web Search": "Ativar Pesquisa na Web",
|
"Enable Web Search": "Ativar Pesquisa na Web",
|
||||||
"Enabled": "Ativado",
|
"Enabled": "Ativado",
|
||||||
|
|
@ -240,6 +243,7 @@
|
||||||
"Enter Google PSE Engine Id": "Digite o ID do Motor do Google PSE",
|
"Enter Google PSE Engine Id": "Digite o ID do Motor do Google PSE",
|
||||||
"Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)",
|
"Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)",
|
||||||
"Enter language codes": "Digite os códigos de idioma",
|
"Enter language codes": "Digite os códigos de idioma",
|
||||||
|
"Enter Model ID": "",
|
||||||
"Enter model tag (e.g. {{modelTag}})": "Digite a tag do modelo (por exemplo, {{modelTag}})",
|
"Enter model tag (e.g. {{modelTag}})": "Digite a tag do modelo (por exemplo, {{modelTag}})",
|
||||||
"Enter Number of Steps (e.g. 50)": "Digite o Número de Passos (por exemplo, 50)",
|
"Enter Number of Steps (e.g. 50)": "Digite o Número de Passos (por exemplo, 50)",
|
||||||
"Enter Score": "Digite a Pontuação",
|
"Enter Score": "Digite a Pontuação",
|
||||||
|
|
@ -363,6 +367,7 @@
|
||||||
"LTR": "LTR",
|
"LTR": "LTR",
|
||||||
"Made by OpenWebUI Community": "Feito pela Comunidade OpenWebUI",
|
"Made by OpenWebUI Community": "Feito pela Comunidade OpenWebUI",
|
||||||
"Make sure to enclose them with": "Certifique-se de encerrá-los com",
|
"Make sure to enclose them with": "Certifique-se de encerrá-los com",
|
||||||
|
"Make sure to export a workflow.json file as API format from ComfyUI.": "",
|
||||||
"Manage": "Gerenciar",
|
"Manage": "Gerenciar",
|
||||||
"Manage Models": "Gerenciar Modelos",
|
"Manage Models": "Gerenciar Modelos",
|
||||||
"Manage Ollama Models": "Gerenciar Modelos Ollama",
|
"Manage Ollama Models": "Gerenciar Modelos Ollama",
|
||||||
|
|
@ -377,6 +382,7 @@
|
||||||
"Memory cleared successfully": "Memória limpa com sucesso",
|
"Memory cleared successfully": "Memória limpa com sucesso",
|
||||||
"Memory deleted successfully": "Memória excluída com sucesso",
|
"Memory deleted successfully": "Memória excluída com sucesso",
|
||||||
"Memory updated successfully": "Memória atualizada com sucesso",
|
"Memory updated successfully": "Memória atualizada com sucesso",
|
||||||
|
"Merge Responses": "",
|
||||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mensagens enviadas após criar seu link não serão compartilhadas. Usuários com o URL poderão visualizar o chat compartilhado.",
|
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mensagens enviadas após criar seu link não serão compartilhadas. Usuários com o URL poderão visualizar o chat compartilhado.",
|
||||||
"Min P": "",
|
"Min P": "",
|
||||||
"Minimum Score": "Pontuação Mínima",
|
"Minimum Score": "Pontuação Mínima",
|
||||||
|
|
@ -438,7 +444,6 @@
|
||||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ops! Parece que a URL é inválida. Por favor, verifique novamente e tente de novo.",
|
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ops! Parece que a URL é inválida. Por favor, verifique novamente e tente de novo.",
|
||||||
"Oops! There was an error in the previous response. Please try again or contact admin.": "Ops! Houve um erro na resposta anterior. Por favor, tente novamente ou entre em contato com o administrador.",
|
"Oops! There was an error in the previous response. Please try again or contact admin.": "Ops! Houve um erro na resposta anterior. Por favor, tente novamente ou entre em contato com o administrador.",
|
||||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ops! Você está usando um método não suportado (somente frontend). Por favor, sirva a WebUI a partir do backend.",
|
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ops! Você está usando um método não suportado (somente frontend). Por favor, sirva a WebUI a partir do backend.",
|
||||||
"Open AI (Dall-E)": "Open AI (Dall-E)",
|
|
||||||
"Open new chat": "Abrir novo chat",
|
"Open new chat": "Abrir novo chat",
|
||||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "A versão do Open WebUI (v{{OPEN_WEBUI_VERSION}}) é inferior à versão necessária (v{{REQUIRED_VERSION}})",
|
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "A versão do Open WebUI (v{{OPEN_WEBUI_VERSION}}) é inferior à versão necessária (v{{REQUIRED_VERSION}})",
|
||||||
"OpenAI": "OpenAI",
|
"OpenAI": "OpenAI",
|
||||||
|
|
@ -537,13 +542,13 @@
|
||||||
"Select a base model": "Selecione um modelo base",
|
"Select a base model": "Selecione um modelo base",
|
||||||
"Select a engine": "Selecione um motor",
|
"Select a engine": "Selecione um motor",
|
||||||
"Select a function": "Selecione uma função",
|
"Select a function": "Selecione uma função",
|
||||||
"Select a mode": "Selecione um modo",
|
|
||||||
"Select a model": "Selecione um modelo",
|
"Select a model": "Selecione um modelo",
|
||||||
"Select a pipeline": "Selecione um pipeline",
|
"Select a pipeline": "Selecione um pipeline",
|
||||||
"Select a pipeline url": "Selecione uma URL de pipeline",
|
"Select a pipeline url": "Selecione uma URL de pipeline",
|
||||||
"Select a tool": "Selecione uma ferramenta",
|
"Select a tool": "Selecione uma ferramenta",
|
||||||
"Select an Ollama instance": "Selecione uma instância Ollama",
|
"Select an Ollama instance": "Selecione uma instância Ollama",
|
||||||
"Select Documents": "Selecionar Documentos",
|
"Select Documents": "Selecionar Documentos",
|
||||||
|
"Select Engine": "",
|
||||||
"Select model": "Selecionar modelo",
|
"Select model": "Selecionar modelo",
|
||||||
"Select only one model to call": "Selecione apenas um modelo para chamar",
|
"Select only one model to call": "Selecione apenas um modelo para chamar",
|
||||||
"Selected model(s) do not support image inputs": "Modelo(s) selecionado(s) não suportam entradas de imagem",
|
"Selected model(s) do not support image inputs": "Modelo(s) selecionado(s) não suportam entradas de imagem",
|
||||||
|
|
@ -565,7 +570,6 @@
|
||||||
"Set Voice": "Definir Voz",
|
"Set Voice": "Definir Voz",
|
||||||
"Settings": "Configurações",
|
"Settings": "Configurações",
|
||||||
"Settings saved successfully!": "Configurações salvas com sucesso!",
|
"Settings saved successfully!": "Configurações salvas com sucesso!",
|
||||||
"Settings updated successfully": "Configurações atualizadas com sucesso",
|
|
||||||
"Share": "Compartilhar",
|
"Share": "Compartilhar",
|
||||||
"Share Chat": "Compartilhar Chat",
|
"Share Chat": "Compartilhar Chat",
|
||||||
"Share to OpenWebUI Community": "Compartilhar com a Comunidade OpenWebUI",
|
"Share to OpenWebUI Community": "Compartilhar com a Comunidade OpenWebUI",
|
||||||
|
|
@ -601,6 +605,7 @@
|
||||||
"Tell us more:": "Conte-nos mais:",
|
"Tell us more:": "Conte-nos mais:",
|
||||||
"Temperature": "Temperatura",
|
"Temperature": "Temperatura",
|
||||||
"Template": "Modelo",
|
"Template": "Modelo",
|
||||||
|
"Temporary Chat": "",
|
||||||
"Text Completion": "Conclusão de Texto",
|
"Text Completion": "Conclusão de Texto",
|
||||||
"Text-to-Speech Engine": "Motor de Texto para Fala",
|
"Text-to-Speech Engine": "Motor de Texto para Fala",
|
||||||
"Tfs Z": "Tfs Z",
|
"Tfs Z": "Tfs Z",
|
||||||
|
|
@ -612,7 +617,6 @@
|
||||||
"This action cannot be undone. Do you wish to continue?": "Esta ação não pode ser desfeita. Você deseja continuar?",
|
"This action cannot be undone. Do you wish to continue?": "Esta ação não pode ser desfeita. Você deseja continuar?",
|
||||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Isso garante que suas conversas valiosas sejam salvas com segurança no banco de dados do backend. Obrigado!",
|
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Isso garante que suas conversas valiosas sejam salvas com segurança no banco de dados do backend. Obrigado!",
|
||||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Esta é uma funcionalidade experimental, pode não funcionar como esperado e está sujeita a alterações a qualquer momento.",
|
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Esta é uma funcionalidade experimental, pode não funcionar como esperado e está sujeita a alterações a qualquer momento.",
|
||||||
"This setting does not sync across browsers or devices.": "Esta configuração não sincroniza entre navegadores ou dispositivos.",
|
|
||||||
"This will delete": "Isso vai excluir",
|
"This will delete": "Isso vai excluir",
|
||||||
"Thorough explanation": "Explicação detalhada",
|
"Thorough explanation": "Explicação detalhada",
|
||||||
"Tika": "Tika",
|
"Tika": "Tika",
|
||||||
|
|
@ -693,14 +697,12 @@
|
||||||
"Web": "Web",
|
"Web": "Web",
|
||||||
"Web API": "API Web",
|
"Web API": "API Web",
|
||||||
"Web Loader Settings": "Configurações do Carregador Web",
|
"Web Loader Settings": "Configurações do Carregador Web",
|
||||||
"Web Params": "Parâmetros Web",
|
|
||||||
"Web Search": "Pesquisa na Web",
|
"Web Search": "Pesquisa na Web",
|
||||||
"Web Search Engine": "Mecanismo de Busca na Web",
|
"Web Search Engine": "Mecanismo de Busca na Web",
|
||||||
"Webhook URL": "URL do Webhook",
|
"Webhook URL": "URL do Webhook",
|
||||||
"WebUI Settings": "Configurações da WebUI",
|
"WebUI Settings": "Configurações da WebUI",
|
||||||
"WebUI will make requests to": "A WebUI fará solicitações para",
|
"WebUI will make requests to": "A WebUI fará solicitações para",
|
||||||
"What’s New in": "O que há de novo em",
|
"What’s New in": "O que há de novo em",
|
||||||
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quando o histórico está desativado, novos chats neste navegador não aparecerão no seu histórico em nenhum dos seus dispositivos.",
|
|
||||||
"Whisper (Local)": "Whisper (Local)",
|
"Whisper (Local)": "Whisper (Local)",
|
||||||
"Widescreen Mode": "Modo Tela Cheia",
|
"Widescreen Mode": "Modo Tela Cheia",
|
||||||
"Workspace": "Espaço de Trabalho",
|
"Workspace": "Espaço de Trabalho",
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue