Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1f068f458 | ||
|
|
53e772df2f | ||
|
|
e36acd6217 | ||
|
|
25a37baeec | ||
|
|
dab2308fe2 | ||
|
|
15cfdc69a8 | ||
|
|
032abba88e | ||
|
|
f03629de61 | ||
|
|
badbe4ea06 | ||
|
|
c162e7074e | ||
|
|
f5c74837b1 | ||
|
|
565ea92693 | ||
|
|
d056923479 | ||
|
|
1cd7d83f50 | ||
|
|
f1c123c819 | ||
|
|
f10c729e3d | ||
|
|
488d7f10b3 | ||
|
|
bbc7e2776d | ||
|
|
07c9ace061 | ||
|
|
b6f548035c | ||
|
|
554e181ccb | ||
|
|
0cf8f58efe | ||
|
|
0a7bc50279 | ||
|
|
1cd036e768 | ||
|
|
f2c78ac0fb | ||
|
|
925a903e38 | ||
|
|
47e4250f58 | ||
|
|
21a28e3bf0 | ||
|
|
5d2714bc92 | ||
|
|
076c54c486 | ||
|
|
780591e991 | ||
|
|
50dcad0f73 | ||
|
|
adede5480d | ||
|
|
8b61b39c75 | ||
|
|
58d929fd65 | ||
|
|
04babeb45a | ||
|
|
5c3c00f9fb | ||
|
|
3df1ee9954 | ||
|
|
b0e83ccea0 | ||
|
|
40764d91cf | ||
|
|
37853d6a26 | ||
|
|
0b38584e52 | ||
|
|
af3456511b | ||
|
|
9b030f6ad6 | ||
|
|
ad952b9394 | ||
|
|
a1469cae59 | ||
|
|
bbc98259a5 | ||
|
|
44433929e7 | ||
|
|
b4acf689e3 | ||
|
|
23461332b9 | ||
|
|
46a97e62c7 | ||
|
|
d905bda000 | ||
|
|
144dc0ed2f | ||
|
|
1472f12f5e | ||
|
|
68916f7ec4 | ||
|
|
4282b20495 | ||
|
|
9b12b75df6 | ||
|
|
856c00bc2f |
@@ -8,9 +8,19 @@ assignees: ''
|
||||
|
||||
# Bug Report
|
||||
|
||||
**Important: Before submitting a bug report, please check whether a similar issue or feature request has already been posted in the Issues or Discussions section. It's likely we're already tracking it. In case of uncertainty, initiate a discussion post first. This helps us all to efficiently focus on improving the project.**
|
||||
## Important Notes
|
||||
|
||||
**Let's collaborate respectfully. If you bring negativity, please understand our capacity to engage may be limited. If you're open to learning and communicating constructively, we're more than happy to assist you. Remember, Open WebUI is a volunteer-driven project maintained by a single maintainer, supported by our amazing contributors who also manage full-time jobs. We respect your time; please respect ours. If you have an issue, We highly encourage you to submit a pull request or to fork the project. We actively work to prevent contributor burnout to preserve the quality and continuity of Open WebUI.**
|
||||
- **Before submitting a bug report**: Please check the Issues or Discussions section to see if a similar issue or feature request has already been posted. It's likely we're already tracking it! If you’re unsure, start a discussion post first. This will help us efficiently focus on improving the project.
|
||||
|
||||
- **Collaborate respectfully**: We value a constructive attitude, so please be mindful of your communication. If negativity is part of your approach, our capacity to engage may be limited. We’re here to help if you’re open to learning and communicating positively. Remember, Open WebUI is a volunteer-driven project managed by a single maintainer and supported by contributors who also have full-time jobs. We appreciate your time and ask that you respect ours.
|
||||
|
||||
- **Contributing**: If you encounter an issue, we highly encourage you to submit a pull request or fork the project. We actively work to prevent contributor burnout to maintain the quality and continuity of Open WebUI.
|
||||
|
||||
- **Bug reproducibility**: If a bug cannot be reproduced with a `:main` or `:dev` Docker setup, or a pip install with Python 3.11, it may require additional help from the community. In such cases, we will move it to the "issues" Discussions section due to our limited resources. We encourage the community to assist with these issues. Remember, it’s not that the issue doesn’t exist; we need your help!
|
||||
|
||||
Note: Please remove the notes above when submitting your post. Thank you for your understanding and support!
|
||||
|
||||
---
|
||||
|
||||
## Installation Method
|
||||
|
||||
|
||||
@@ -8,9 +8,19 @@ assignees: ''
|
||||
|
||||
# Feature Request
|
||||
|
||||
**Important: Before submitting a feature request, please check whether a similar issue or feature request has already been posted in the Issues or Discussions section. It's likely we're already tracking it. In case of uncertainty, initiate a discussion post first. This helps us all to efficiently focus on improving the project.**
|
||||
## Important Notes
|
||||
|
||||
**Let's collaborate respectfully. If you bring negativity, please understand our capacity to engage may be limited. If you're open to learning and communicating constructively, we're more than happy to assist you. Remember, Open WebUI is a volunteer-driven project maintained by a single maintainer, supported by our amazing contributors who also manage full-time jobs. We respect your time; please respect ours. If you have an issue, We highly encourage you to submit a pull request or to fork the project. We actively work to prevent contributor burnout to preserve the quality and continuity of Open WebUI.**
|
||||
- **Before submitting a report**: Please check the Issues or Discussions section to see if a similar issue or feature request has already been posted. It's likely we're already tracking it! If you’re unsure, start a discussion post first. This will help us efficiently focus on improving the project.
|
||||
|
||||
- **Collaborate respectfully**: We value a constructive attitude, so please be mindful of your communication. If negativity is part of your approach, our capacity to engage may be limited. We’re here to help if you’re open to learning and communicating positively. Remember, Open WebUI is a volunteer-driven project managed by a single maintainer and supported by contributors who also have full-time jobs. We appreciate your time and ask that you respect ours.
|
||||
|
||||
- **Contributing**: If you encounter an issue, we highly encourage you to submit a pull request or fork the project. We actively work to prevent contributor burnout to maintain the quality and continuity of Open WebUI.
|
||||
|
||||
- **Bug reproducibility**: If a bug cannot be reproduced with a `:main` or `:dev` Docker setup, or a pip install with Python 3.11, it may require additional help from the community. In such cases, we will move it to the "issues" Discussions section due to our limited resources. We encourage the community to assist with these issues. Remember, it’s not that the issue doesn’t exist; we need your help!
|
||||
|
||||
Note: Please remove the notes above when submitting your post. Thank you for your understanding and support!
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
@@ -5,6 +5,40 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.3.35] - 2024-10-26
|
||||
|
||||
### Added
|
||||
|
||||
- **📁 Robust File Handling**: Enhanced file input handling for chat. If the content extraction fails or is empty, users will now receive a clear warning, preventing silent failures and ensuring you always know what's happening with your uploads.
|
||||
- **🌍 New Language Support**: Introduced Hungarian translations and updated French translations, expanding the platform's language accessibility for a more global user base.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **📚 Knowledge Base Loading Issue**: Resolved a critical bug where the Knowledge Base was not loading, ensuring smooth access to your stored documents and improving information retrieval in RAG-enhanced workflows.
|
||||
- **🛠️ Tool Parameters Issue**: Fixed an error where tools were not functioning correctly when required parameters were missing, ensuring reliable tool performance and more efficient task completions.
|
||||
- **🔗 Merged Response Loss in Multi-Model Chats**: Addressed an issue where responses in multi-model chat workflows were being deleted after follow-up queries, improving consistency and ensuring smoother interactions across models.
|
||||
|
||||
## [0.3.34] - 2024-10-26
|
||||
|
||||
### Added
|
||||
|
||||
- **🔧 Feedback Export Enhancements**: Feedback history data can now be exported to JSON, allowing for seamless integration in RLHF processing and further analysis.
|
||||
- **🗂️ Embedding Model Lazy Loading**: Search functionality for leaderboard reranking is now more efficient, as embedding models are lazy-loaded only when needed, optimizing performance.
|
||||
- **🎨 Rich Text Input Toggle**: Users can now switch back to legacy textarea input for chat if they prefer simpler text input, though rich text is still the default until deprecation.
|
||||
- **🛠️ Improved Tool Calling Mechanism**: Enhanced method for parsing and calling tools, improving the reliability and robustness of tool function calls.
|
||||
- **🌐 Globalization Enhancements**: Updates to internationalization (i18n) support, further refining multi-language compatibility and accuracy.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **🖥️ Folder Rename Fix for Firefox**: Addressed a persistent issue where users could not rename folders by pressing enter in Firefox, now ensuring seamless folder management across browsers.
|
||||
- **🔠 Tiktoken Model Text Splitter Issue**: Resolved an issue where the tiktoken text splitter wasn’t working in Docker installations, restoring full functionality for tokenized text editing.
|
||||
- **💼 S3 File Upload Issue**: Fixed a problem affecting S3 file uploads, ensuring smooth operations for those who store files on cloud storage.
|
||||
- **🔒 Strict-Transport-Security Crash**: Resolved a crash when setting the Strict-Transport-Security (HSTS) header, improving stability and security enhancements.
|
||||
- **🚫 OIDC Boolean Access Fix**: Addressed an issue with boolean values not being accessed correctly during OIDC logins, ensuring login reliability.
|
||||
- **⚙️ Rich Text Paste Behavior**: Refined paste behavior in rich text input to make it smoother and more intuitive when pasting various content types.
|
||||
- **🔨 Model Exclusion for Arena Fix**: Corrected the filter function that was not properly excluding models from the arena, improving model management.
|
||||
- **🏷️ "Tags Generation Prompt" Fix**: Addressed an issue preventing custom "tags generation prompts" from registering properly, ensuring custom prompt work seamlessly.
|
||||
|
||||
## [0.3.33] - 2024-10-24
|
||||
|
||||
### Added
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ ENV RAG_EMBEDDING_MODEL="$USE_EMBEDDING_MODEL_DOCKER" \
|
||||
SENTENCE_TRANSFORMERS_HOME="/app/backend/data/cache/embedding/models"
|
||||
|
||||
## Tiktoken model settings ##
|
||||
ENV TIKTOKEN_ENCODING_NAME="$USE_TIKTOKEN_ENCODING_NAME" \
|
||||
ENV TIKTOKEN_ENCODING_NAME="cl100k_base" \
|
||||
TIKTOKEN_CACHE_DIR="/app/backend/data/cache/tiktoken"
|
||||
|
||||
## Hugging Face download cache ##
|
||||
|
||||
@@ -522,7 +522,8 @@ def transcription(
|
||||
else:
|
||||
data = transcribe(file_path)
|
||||
|
||||
return data
|
||||
file_path = file_path.split("/")[-1]
|
||||
return {**data, "filename": file_path}
|
||||
except Exception as e:
|
||||
log.exception(e)
|
||||
raise HTTPException(
|
||||
|
||||
@@ -739,7 +739,7 @@ class GenerateChatCompletionForm(BaseModel):
|
||||
format: Optional[str] = None
|
||||
options: Optional[dict] = None
|
||||
template: Optional[str] = None
|
||||
stream: Optional[bool] = None
|
||||
stream: Optional[bool] = True
|
||||
keep_alive: Optional[Union[int, str]] = None
|
||||
|
||||
|
||||
@@ -761,6 +761,7 @@ async def generate_chat_completion(
|
||||
form_data: GenerateChatCompletionForm,
|
||||
url_idx: Optional[int] = None,
|
||||
user=Depends(get_verified_user),
|
||||
bypass_filter: Optional[bool] = False,
|
||||
):
|
||||
payload = {**form_data.model_dump(exclude_none=True)}
|
||||
log.debug(f"generate_chat_completion() - 1.payload = {payload}")
|
||||
@@ -769,7 +770,7 @@ async def generate_chat_completion(
|
||||
|
||||
model_id = form_data.model
|
||||
|
||||
if app.state.config.ENABLE_MODEL_FILTER:
|
||||
if not bypass_filter and app.state.config.ENABLE_MODEL_FILTER:
|
||||
if user.role == "user" and model_id not in app.state.config.MODEL_FILTER_LIST:
|
||||
raise HTTPException(
|
||||
status_code=403,
|
||||
|
||||
@@ -14,6 +14,7 @@ from typing import Iterator, Optional, Sequence, Union
|
||||
from fastapi import Depends, FastAPI, File, Form, HTTPException, UploadFile, status
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from pydantic import BaseModel
|
||||
import tiktoken
|
||||
|
||||
|
||||
from open_webui.storage.provider import Storage
|
||||
@@ -666,8 +667,13 @@ def save_docs_to_vector_db(
|
||||
add_start_index=True,
|
||||
)
|
||||
elif app.state.config.TEXT_SPLITTER == "token":
|
||||
log.info(
|
||||
f"Using token text splitter: {app.state.config.TIKTOKEN_ENCODING_NAME}"
|
||||
)
|
||||
|
||||
tiktoken.get_encoding(str(app.state.config.TIKTOKEN_ENCODING_NAME))
|
||||
text_splitter = TokenTextSplitter(
|
||||
encoding_name=app.state.config.TIKTOKEN_ENCODING_NAME,
|
||||
encoding_name=str(app.state.config.TIKTOKEN_ENCODING_NAME),
|
||||
chunk_size=app.state.config.CHUNK_SIZE,
|
||||
chunk_overlap=app.state.config.CHUNK_OVERLAP,
|
||||
add_start_index=True,
|
||||
|
||||
@@ -44,8 +44,8 @@ class FileModel(BaseModel):
|
||||
data: Optional[dict] = None
|
||||
meta: Optional[dict] = None
|
||||
|
||||
created_at: int # timestamp in epoch
|
||||
updated_at: int # timestamp in epoch
|
||||
created_at: Optional[int] # timestamp in epoch
|
||||
updated_at: Optional[int] # timestamp in epoch
|
||||
|
||||
|
||||
####################
|
||||
@@ -73,6 +73,8 @@ class FileModelResponse(BaseModel):
|
||||
created_at: int # timestamp in epoch
|
||||
updated_at: int # timestamp in epoch
|
||||
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
|
||||
class FileMetadataResponse(BaseModel):
|
||||
id: str
|
||||
|
||||
@@ -5,6 +5,7 @@ from pydantic import BaseModel
|
||||
from open_webui.apps.webui.models.users import Users, UserModel
|
||||
from open_webui.apps.webui.models.feedbacks import (
|
||||
FeedbackModel,
|
||||
FeedbackResponse,
|
||||
FeedbackForm,
|
||||
Feedbacks,
|
||||
)
|
||||
@@ -55,27 +56,15 @@ async def update_config(
|
||||
}
|
||||
|
||||
|
||||
@router.get("/feedbacks", response_model=list[FeedbackModel])
|
||||
async def get_feedbacks(user=Depends(get_verified_user)):
|
||||
feedbacks = Feedbacks.get_feedbacks_by_user_id(user.id)
|
||||
return feedbacks
|
||||
|
||||
|
||||
@router.delete("/feedbacks", response_model=bool)
|
||||
async def delete_feedbacks(user=Depends(get_verified_user)):
|
||||
success = Feedbacks.delete_feedbacks_by_user_id(user.id)
|
||||
return success
|
||||
|
||||
|
||||
class FeedbackUserModel(FeedbackModel):
|
||||
class FeedbackUserResponse(FeedbackResponse):
|
||||
user: Optional[UserModel] = None
|
||||
|
||||
|
||||
@router.get("/feedbacks/all", response_model=list[FeedbackUserModel])
|
||||
@router.get("/feedbacks/all", response_model=list[FeedbackUserResponse])
|
||||
async def get_all_feedbacks(user=Depends(get_admin_user)):
|
||||
feedbacks = Feedbacks.get_all_feedbacks()
|
||||
return [
|
||||
FeedbackUserModel(
|
||||
FeedbackUserResponse(
|
||||
**feedback.model_dump(), user=Users.get_user_by_id(feedback.user_id)
|
||||
)
|
||||
for feedback in feedbacks
|
||||
@@ -88,6 +77,29 @@ async def delete_all_feedbacks(user=Depends(get_admin_user)):
|
||||
return success
|
||||
|
||||
|
||||
@router.get("/feedbacks/all/export", response_model=list[FeedbackModel])
|
||||
async def get_all_feedbacks(user=Depends(get_admin_user)):
|
||||
feedbacks = Feedbacks.get_all_feedbacks()
|
||||
return [
|
||||
FeedbackModel(
|
||||
**feedback.model_dump(), user=Users.get_user_by_id(feedback.user_id)
|
||||
)
|
||||
for feedback in feedbacks
|
||||
]
|
||||
|
||||
|
||||
@router.get("/feedbacks/user", response_model=list[FeedbackUserResponse])
|
||||
async def get_feedbacks(user=Depends(get_verified_user)):
|
||||
feedbacks = Feedbacks.get_feedbacks_by_user_id(user.id)
|
||||
return feedbacks
|
||||
|
||||
|
||||
@router.delete("/feedbacks", response_model=bool)
|
||||
async def delete_feedbacks(user=Depends(get_verified_user)):
|
||||
success = Feedbacks.delete_feedbacks_by_user_id(user.id)
|
||||
return success
|
||||
|
||||
|
||||
@router.post("/feedback", response_model=FeedbackModel)
|
||||
async def create_feedback(
|
||||
request: Request,
|
||||
|
||||
@@ -38,7 +38,7 @@ router = APIRouter()
|
||||
############################
|
||||
|
||||
|
||||
@router.post("/")
|
||||
@router.post("/", response_model=FileModelResponse)
|
||||
def upload_file(file: UploadFile = File(...), user=Depends(get_verified_user)):
|
||||
log.info(f"file.content_type: {file.content_type}")
|
||||
try:
|
||||
@@ -73,6 +73,12 @@ def upload_file(file: UploadFile = File(...), user=Depends(get_verified_user)):
|
||||
except Exception as e:
|
||||
log.exception(e)
|
||||
log.error(f"Error processing file: {file_item.id}")
|
||||
file_item = FileModelResponse(
|
||||
**{
|
||||
**file_item.model_dump(),
|
||||
"error": str(e.detail) if hasattr(e, "detail") else str(e),
|
||||
}
|
||||
)
|
||||
|
||||
if file_item:
|
||||
return file_item
|
||||
@@ -236,6 +242,37 @@ async def get_file_content_by_id(id: str, user=Depends(get_verified_user)):
|
||||
)
|
||||
|
||||
|
||||
@router.get("/{id}/content/html")
|
||||
async def get_html_file_content_by_id(id: str, user=Depends(get_verified_user)):
|
||||
file = Files.get_file_by_id(id)
|
||||
if file and (file.user_id == user.id or user.role == "admin"):
|
||||
try:
|
||||
file_path = Storage.get_file(file.path)
|
||||
file_path = Path(file_path)
|
||||
|
||||
# Check if the file already exists in the cache
|
||||
if file_path.is_file():
|
||||
print(f"file_path: {file_path}")
|
||||
return FileResponse(file_path)
|
||||
else:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=ERROR_MESSAGES.NOT_FOUND,
|
||||
)
|
||||
except Exception as e:
|
||||
log.exception(e)
|
||||
log.error(f"Error getting file content")
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail=ERROR_MESSAGES.DEFAULT("Error getting file content"),
|
||||
)
|
||||
else:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=ERROR_MESSAGES.NOT_FOUND,
|
||||
)
|
||||
|
||||
|
||||
@router.get("/{id}/content/{file_name}")
|
||||
async def get_file_content_by_id(id: str, user=Depends(get_verified_user)):
|
||||
file = Files.get_file_by_id(id)
|
||||
|
||||
@@ -47,15 +47,43 @@ async def get_knowledge_items(
|
||||
detail=ERROR_MESSAGES.NOT_FOUND,
|
||||
)
|
||||
else:
|
||||
return [
|
||||
KnowledgeResponse(
|
||||
**knowledge.model_dump(),
|
||||
files=Files.get_file_metadatas_by_ids(
|
||||
knowledge.data.get("file_ids", []) if knowledge.data else []
|
||||
),
|
||||
knowledge_bases = []
|
||||
|
||||
for knowledge in Knowledges.get_knowledge_items():
|
||||
|
||||
files = []
|
||||
if knowledge.data:
|
||||
files = Files.get_file_metadatas_by_ids(
|
||||
knowledge.data.get("file_ids", [])
|
||||
)
|
||||
|
||||
# Check if all files exist
|
||||
if len(files) != len(knowledge.data.get("file_ids", [])):
|
||||
missing_files = list(
|
||||
set(knowledge.data.get("file_ids", []))
|
||||
- set([file.id for file in files])
|
||||
)
|
||||
if missing_files:
|
||||
data = knowledge.data or {}
|
||||
file_ids = data.get("file_ids", [])
|
||||
|
||||
for missing_file in missing_files:
|
||||
file_ids.remove(missing_file)
|
||||
|
||||
data["file_ids"] = file_ids
|
||||
Knowledges.update_knowledge_by_id(
|
||||
id=knowledge.id, form_data=KnowledgeUpdateForm(data=data)
|
||||
)
|
||||
|
||||
files = Files.get_file_metadatas_by_ids(file_ids)
|
||||
|
||||
knowledge_bases.append(
|
||||
KnowledgeResponse(
|
||||
**knowledge.model_dump(),
|
||||
files=files,
|
||||
)
|
||||
)
|
||||
for knowledge in Knowledges.get_knowledge_items()
|
||||
]
|
||||
return knowledge_bases
|
||||
|
||||
|
||||
############################
|
||||
|
||||
@@ -439,9 +439,20 @@ async def chat_completion_tools_handler(
|
||||
tool_function_params = result.get("parameters", {})
|
||||
|
||||
try:
|
||||
tool_output = await tools[tool_function_name]["callable"](
|
||||
**tool_function_params
|
||||
required_params = (
|
||||
tools[tool_function_name]
|
||||
.get("spec", {})
|
||||
.get("parameters", {})
|
||||
.get("required", [])
|
||||
)
|
||||
tool_function = tools[tool_function_name]["callable"]
|
||||
tool_function_params = {
|
||||
k: v
|
||||
for k, v in tool_function_params.items()
|
||||
if k in required_params
|
||||
}
|
||||
tool_output = await tool_function(**tool_function_params)
|
||||
|
||||
except Exception as e:
|
||||
tool_output = str(e)
|
||||
|
||||
@@ -1154,7 +1165,9 @@ async def generate_chat_completions(
|
||||
# Using /ollama/api/chat endpoint
|
||||
form_data = convert_payload_openai_to_ollama(form_data)
|
||||
form_data = GenerateChatCompletionForm(**form_data)
|
||||
response = await generate_ollama_chat_completion(form_data=form_data, user=user)
|
||||
response = await generate_ollama_chat_completion(
|
||||
form_data=form_data, user=user, bypass_filter=True
|
||||
)
|
||||
if form_data.stream:
|
||||
response.headers["content-type"] = "text/event-stream"
|
||||
return StreamingResponse(
|
||||
|
||||
@@ -44,14 +44,14 @@ class StorageProvider:
|
||||
)
|
||||
self.bucket_name = S3_BUCKET_NAME
|
||||
|
||||
def _upload_to_s3(self, file: BinaryIO, filename: str) -> Tuple[bytes, str]:
|
||||
def _upload_to_s3(self, file_path: str, filename: str) -> Tuple[bytes, str]:
|
||||
"""Handles uploading of the file to S3 storage."""
|
||||
if not self.s3_client:
|
||||
raise RuntimeError("S3 Client is not initialized.")
|
||||
|
||||
try:
|
||||
self.s3_client.upload_fileobj(file, self.bucket_name, filename)
|
||||
return file.read(), f"s3://{self.bucket_name}/{filename}"
|
||||
self.s3_client.upload_file(file_path, self.bucket_name, filename)
|
||||
return open(file_path, "rb").read(), file_path
|
||||
except ClientError as e:
|
||||
raise RuntimeError(f"Error uploading file to S3: {e}")
|
||||
|
||||
@@ -132,10 +132,11 @@ class StorageProvider:
|
||||
contents = file.read()
|
||||
if not contents:
|
||||
raise ValueError(ERROR_MESSAGES.EMPTY_CONTENT)
|
||||
contents, file_path = self._upload_to_local(contents, filename)
|
||||
|
||||
if self.storage_provider == "s3":
|
||||
return self._upload_to_s3(file, filename)
|
||||
return self._upload_to_local(contents, filename)
|
||||
return self._upload_to_s3(file_path, filename)
|
||||
return contents, file_path
|
||||
|
||||
def get_file(self, file_path: str) -> str:
|
||||
"""Downloads a file either from S3 or the local file system and returns the file path."""
|
||||
|
||||
@@ -162,7 +162,7 @@ class OAuthManager:
|
||||
|
||||
if not user:
|
||||
# If the user does not exist, check if merging is enabled
|
||||
if auth_manager_config.OAUTH_MERGE_ACCOUNTS_BY_EMAIL.value:
|
||||
if auth_manager_config.OAUTH_MERGE_ACCOUNTS_BY_EMAIL:
|
||||
# Check if the user exists by email
|
||||
user = Users.get_user_by_email(email)
|
||||
if user:
|
||||
@@ -176,7 +176,7 @@ class OAuthManager:
|
||||
|
||||
if not user:
|
||||
# If the user does not exist, check if signups are enabled
|
||||
if auth_manager_config.ENABLE_OAUTH_SIGNUP.value:
|
||||
if auth_manager_config.ENABLE_OAUTH_SIGNUP:
|
||||
# Check if an existing user with the same email already exists
|
||||
existing_user = Users.get_user_by_email(
|
||||
user_data.get("email", "").lower()
|
||||
|
||||
@@ -60,7 +60,7 @@ def set_hsts(value: str):
|
||||
pattern = r"^max-age=(\d+)(;includeSubDomains)?(;preload)?$"
|
||||
match = re.match(pattern, value, re.IGNORECASE)
|
||||
if not match:
|
||||
return "max-age=31536000;includeSubDomains"
|
||||
value = "max-age=31536000;includeSubDomains"
|
||||
return {"Strict-Transport-Security": value}
|
||||
|
||||
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "open-webui",
|
||||
"version": "0.3.33",
|
||||
"version": "0.3.35",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "open-webui",
|
||||
"version": "0.3.33",
|
||||
"version": "0.3.35",
|
||||
"dependencies": {
|
||||
"@codemirror/lang-javascript": "^6.2.2",
|
||||
"@codemirror/lang-python": "^6.1.6",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "open-webui",
|
||||
"version": "0.3.33",
|
||||
"version": "0.3.35",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run pyodide:fetch && vite dev --host",
|
||||
|
||||
+1
-1
@@ -189,7 +189,7 @@ input[type='number'] {
|
||||
}
|
||||
|
||||
.ProseMirror {
|
||||
@apply h-full min-h-fit max-h-full;
|
||||
@apply h-full min-h-fit max-h-full whitespace-pre-wrap;
|
||||
}
|
||||
|
||||
.ProseMirror:focus {
|
||||
|
||||
@@ -93,6 +93,37 @@ export const getAllFeedbacks = async (token: string = '') => {
|
||||
return res;
|
||||
};
|
||||
|
||||
export const exportAllFeedbacks = async (token: string = '') => {
|
||||
let error = null;
|
||||
|
||||
const res = await fetch(`${WEBUI_API_BASE_URL}/evaluations/feedbacks/all/export`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
authorization: `Bearer ${token}`
|
||||
}
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw await res.json();
|
||||
return res.json();
|
||||
})
|
||||
.then((json) => {
|
||||
return json;
|
||||
})
|
||||
.catch((err) => {
|
||||
error = err.detail;
|
||||
console.log(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
export const createNewFeedback = async (token: string, feedback: object) => {
|
||||
let error = null;
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script lang="ts">
|
||||
import fileSaver from 'file-saver';
|
||||
const { saveAs } = fileSaver;
|
||||
|
||||
import { onMount, getContext } from 'svelte';
|
||||
import dayjs from 'dayjs';
|
||||
import relativeTime from 'dayjs/plugin/relativeTime';
|
||||
@@ -12,7 +15,7 @@
|
||||
let model = null;
|
||||
|
||||
import { models } from '$lib/stores';
|
||||
import { deleteFeedbackById, getAllFeedbacks } from '$lib/apis/evaluations';
|
||||
import { deleteFeedbackById, exportAllFeedbacks, getAllFeedbacks } from '$lib/apis/evaluations';
|
||||
|
||||
import FeedbackMenu from './Evaluations/FeedbackMenu.svelte';
|
||||
import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte';
|
||||
@@ -23,6 +26,10 @@
|
||||
import Share from '../icons/Share.svelte';
|
||||
import CloudArrowUp from '../icons/CloudArrowUp.svelte';
|
||||
import { toast } from 'svelte-sonner';
|
||||
import Spinner from '../common/Spinner.svelte';
|
||||
import DocumentArrowUpSolid from '../icons/DocumentArrowUpSolid.svelte';
|
||||
import DocumentArrowDown from '../icons/DocumentArrowDown.svelte';
|
||||
import ArrowDownTray from '../icons/ArrowDownTray.svelte';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
@@ -35,6 +42,7 @@
|
||||
let tagEmbeddings = new Map();
|
||||
|
||||
let loaded = false;
|
||||
let loadingLeaderboard = true;
|
||||
let debounceTimer;
|
||||
|
||||
$: paginatedFeedbacks = feedbacks.slice((page - 1) * 10, page * 10);
|
||||
@@ -91,6 +99,8 @@
|
||||
if (a.rating !== '-' && b.rating !== '-') return b.rating - a.rating;
|
||||
return a.name.localeCompare(b.name);
|
||||
});
|
||||
|
||||
loadingLeaderboard = false;
|
||||
};
|
||||
|
||||
function calculateModelStats(
|
||||
@@ -227,6 +237,8 @@
|
||||
};
|
||||
|
||||
const debouncedQueryHandler = async () => {
|
||||
loadingLeaderboard = true;
|
||||
|
||||
if (query.trim() === '') {
|
||||
rankHandler();
|
||||
return;
|
||||
@@ -294,10 +306,21 @@
|
||||
window.addEventListener('message', messageHandler, false);
|
||||
};
|
||||
|
||||
onMount(async () => {
|
||||
feedbacks = await getAllFeedbacks(localStorage.token);
|
||||
loaded = true;
|
||||
const exportHandler = async () => {
|
||||
const _feedbacks = await exportAllFeedbacks(localStorage.token).catch((err) => {
|
||||
toast.error(err);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (_feedbacks) {
|
||||
let blob = new Blob([JSON.stringify(_feedbacks)], {
|
||||
type: 'application/json'
|
||||
});
|
||||
saveAs(blob, `feedback-history-export-${Date.now()}.json`);
|
||||
}
|
||||
};
|
||||
|
||||
const loadEmbeddingModel = async () => {
|
||||
// Check if the tokenizer and model are already loaded and stored in the window object
|
||||
if (!window.tokenizer) {
|
||||
window.tokenizer = await AutoTokenizer.from_pretrained(EMBEDDING_MODEL);
|
||||
@@ -314,6 +337,11 @@
|
||||
// Pre-compute embeddings for all unique tags
|
||||
const allTags = new Set(feedbacks.flatMap((feedback) => feedback.data.tags || []));
|
||||
await getTagEmbeddings(Array.from(allTags));
|
||||
};
|
||||
|
||||
onMount(async () => {
|
||||
feedbacks = await getAllFeedbacks(localStorage.token);
|
||||
loaded = true;
|
||||
|
||||
rankHandler();
|
||||
});
|
||||
@@ -343,6 +371,9 @@
|
||||
class=" w-full text-sm pr-4 py-1 rounded-r-xl outline-none bg-transparent"
|
||||
bind:value={query}
|
||||
placeholder={$i18n.t('Search')}
|
||||
on:focus={() => {
|
||||
loadEmbeddingModel();
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</Tooltip>
|
||||
@@ -352,13 +383,22 @@
|
||||
<div
|
||||
class="scrollbar-hidden relative whitespace-nowrap overflow-x-auto max-w-full rounded pt-0.5"
|
||||
>
|
||||
{#if loadingLeaderboard}
|
||||
<div class=" absolute top-0 bottom-0 left-0 right-0 flex">
|
||||
<div class="m-auto">
|
||||
<Spinner />
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{#if (rankedModels ?? []).length === 0}
|
||||
<div class="text-center text-xs text-gray-500 dark:text-gray-400 py-1">
|
||||
{$i18n.t('No models found')}
|
||||
</div>
|
||||
{:else}
|
||||
<table
|
||||
class="w-full text-sm text-left text-gray-500 dark:text-gray-400 table-auto max-w-full rounded"
|
||||
class="w-full text-sm text-left text-gray-500 dark:text-gray-400 table-auto max-w-full rounded {loadingLeaderboard
|
||||
? 'opacity-20'
|
||||
: ''}"
|
||||
>
|
||||
<thead
|
||||
class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-850 dark:text-gray-400 -translate-y-0.5"
|
||||
@@ -463,6 +503,21 @@
|
||||
|
||||
<span class="text-lg font-medium text-gray-500 dark:text-gray-300">{feedbacks.length}</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<Tooltip content={$i18n.t('Export')}>
|
||||
<button
|
||||
class=" p-2 rounded-xl hover:bg-gray-100 dark:bg-gray-900 dark:hover:bg-gray-850 transition font-medium text-sm flex items-center space-x-1"
|
||||
on:click={() => {
|
||||
exportHandler();
|
||||
}}
|
||||
>
|
||||
<ArrowDownTray className="size-3" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
@@ -606,18 +661,7 @@
|
||||
</div>
|
||||
|
||||
<div class=" self-center">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 16 16"
|
||||
fill="currentColor"
|
||||
class="w-3.5 h-3.5"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M4 2a1.5 1.5 0 0 0-1.5 1.5v9A1.5 1.5 0 0 0 4 14h8a1.5 1.5 0 0 0 1.5-1.5V6.621a1.5 1.5 0 0 0-.44-1.06L9.94 2.439A1.5 1.5 0 0 0 8.878 2H4Zm4 9.5a.75.75 0 0 1-.75-.75V8.06l-.72.72a.75.75 0 0 1-1.06-1.06l2-2a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-.72-.72v2.69a.75.75 0 0 1-.75.75Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
<CloudArrowUp className="size-3" strokeWidth="3" />
|
||||
</div>
|
||||
</button>
|
||||
</Tooltip>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
TASK_MODEL: '',
|
||||
TASK_MODEL_EXTERNAL: '',
|
||||
TITLE_GENERATION_PROMPT_TEMPLATE: '',
|
||||
TAG_GENERATION_PROMPT_TEMPLATE: '',
|
||||
TAGS_GENERATION_PROMPT_TEMPLATE: '',
|
||||
ENABLE_SEARCH_QUERY: true,
|
||||
SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE: ''
|
||||
};
|
||||
@@ -141,7 +141,7 @@
|
||||
placement="top-start"
|
||||
>
|
||||
<Textarea
|
||||
bind:value={taskConfig.TAG_GENERATION_PROMPT_TEMPLATE}
|
||||
bind:value={taskConfig.TAGS_GENERATION_PROMPT_TEMPLATE}
|
||||
placeholder={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
|
||||
/>
|
||||
</Tooltip>
|
||||
|
||||
@@ -1070,7 +1070,7 @@
|
||||
// Prepare the base message object
|
||||
const baseMessage = {
|
||||
role: message.role,
|
||||
content: message.content
|
||||
content: message?.merged?.content ?? message.content
|
||||
};
|
||||
|
||||
// Extract and format image URLs if any exist
|
||||
@@ -1535,10 +1535,7 @@
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text:
|
||||
arr.length - 1 !== idx
|
||||
? message.content
|
||||
: (message?.raContent ?? message.content)
|
||||
text: message?.merged?.content ?? message.content
|
||||
},
|
||||
...message.files
|
||||
.filter((file) => file.type === 'image')
|
||||
@@ -1551,10 +1548,7 @@
|
||||
]
|
||||
}
|
||||
: {
|
||||
content:
|
||||
arr.length - 1 !== idx
|
||||
? message.content
|
||||
: (message?.raContent ?? message.content)
|
||||
content: message?.merged?.content ?? message.content
|
||||
})
|
||||
})),
|
||||
seed: params?.seed ?? $settings?.params?.seed ?? undefined,
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<script lang="ts">
|
||||
import { toast } from 'svelte-sonner';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
|
||||
import { onMount, tick, getContext, createEventDispatcher, onDestroy } from 'svelte';
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
@@ -89,6 +91,7 @@
|
||||
const uploadFileHandler = async (file) => {
|
||||
console.log(file);
|
||||
|
||||
const tempItemId = uuidv4();
|
||||
const fileItem = {
|
||||
type: 'file',
|
||||
file: '',
|
||||
@@ -98,10 +101,16 @@
|
||||
collection_name: '',
|
||||
status: 'uploading',
|
||||
size: file.size,
|
||||
error: ''
|
||||
error: '',
|
||||
itemId: tempItemId
|
||||
};
|
||||
files = [...files, fileItem];
|
||||
|
||||
if (fileItem.size == 0) {
|
||||
toast.error($i18n.t('You cannot upload an empty file.'));
|
||||
return null;
|
||||
}
|
||||
|
||||
files = [...files, fileItem];
|
||||
// Check if the file is an audio file and transcribe/convert it to text file
|
||||
if (['audio/mpeg', 'audio/wav', 'audio/ogg', 'audio/x-m4a'].includes(file['type'])) {
|
||||
const res = await transcribeAudio(localStorage.token, file).catch((error) => {
|
||||
@@ -124,6 +133,10 @@
|
||||
const uploadedFile = await uploadFile(localStorage.token, file);
|
||||
|
||||
if (uploadedFile) {
|
||||
if (uploadedFile.error) {
|
||||
toast.warning(uploadedFile.error);
|
||||
}
|
||||
|
||||
fileItem.status = 'uploaded';
|
||||
fileItem.file = uploadedFile;
|
||||
fileItem.id = uploadedFile.id;
|
||||
@@ -132,11 +145,11 @@
|
||||
|
||||
files = files;
|
||||
} else {
|
||||
files = files.filter((item) => item.status !== null);
|
||||
files = files.filter((item) => item?.itemId !== tempItemId);
|
||||
}
|
||||
} catch (e) {
|
||||
toast.error(e);
|
||||
files = files.filter((item) => item.status !== null);
|
||||
files = files.filter((item) => item?.itemId !== tempItemId);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -361,8 +374,8 @@
|
||||
document.getElementById('chat-input')?.focus();
|
||||
}}
|
||||
on:confirm={async (e) => {
|
||||
const response = e.detail;
|
||||
prompt = `${prompt}${response} `;
|
||||
const { text, filename } = e.detail;
|
||||
prompt = `${prompt}${text} `;
|
||||
|
||||
recording = false;
|
||||
|
||||
@@ -509,54 +522,202 @@
|
||||
</InputMenu>
|
||||
</div>
|
||||
|
||||
<div
|
||||
bind:this={chatInputContainerElement}
|
||||
id="chat-input-container"
|
||||
class="scrollbar-hidden text-left bg-gray-50 dark:bg-gray-850 dark:text-gray-100 outline-none w-full py-2.5 px-1 rounded-xl resize-none h-[48px] overflow-auto"
|
||||
>
|
||||
<RichTextInput
|
||||
bind:this={chatInputElement}
|
||||
{#if $settings?.richTextInput ?? true}
|
||||
<div
|
||||
bind:this={chatInputContainerElement}
|
||||
id="chat-input-container"
|
||||
class="scrollbar-hidden text-left bg-gray-50 dark:bg-gray-850 dark:text-gray-100 outline-none w-full py-2.5 px-1 rounded-xl resize-none h-[48px] overflow-auto"
|
||||
>
|
||||
<RichTextInput
|
||||
bind:this={chatInputElement}
|
||||
id="chat-input"
|
||||
trim={true}
|
||||
placeholder={placeholder ? placeholder : $i18n.t('Send a Message')}
|
||||
bind:value={prompt}
|
||||
shiftEnter={!$mobile ||
|
||||
!(
|
||||
'ontouchstart' in window ||
|
||||
navigator.maxTouchPoints > 0 ||
|
||||
navigator.msMaxTouchPoints > 0
|
||||
)}
|
||||
on:enter={async (e) => {
|
||||
if (prompt !== '') {
|
||||
dispatch('submit', prompt);
|
||||
}
|
||||
}}
|
||||
on:input={async (e) => {
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
}}
|
||||
on:focus={async (e) => {
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
}}
|
||||
on:keypress={(e) => {
|
||||
e = e.detail.event;
|
||||
}}
|
||||
on:keydown={async (e) => {
|
||||
e = e.detail.event;
|
||||
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
|
||||
const isCtrlPressed = e.ctrlKey || e.metaKey; // metaKey is for Cmd key on Mac
|
||||
const commandsContainerElement =
|
||||
document.getElementById('commands-container');
|
||||
|
||||
// Command/Ctrl + Shift + Enter to submit a message pair
|
||||
if (isCtrlPressed && e.key === 'Enter' && e.shiftKey) {
|
||||
e.preventDefault();
|
||||
createMessagePair(prompt);
|
||||
}
|
||||
|
||||
// Check if Ctrl + R is pressed
|
||||
if (prompt === '' && isCtrlPressed && e.key.toLowerCase() === 'r') {
|
||||
e.preventDefault();
|
||||
console.log('regenerate');
|
||||
|
||||
const regenerateButton = [
|
||||
...document.getElementsByClassName('regenerate-response-button')
|
||||
]?.at(-1);
|
||||
|
||||
regenerateButton?.click();
|
||||
}
|
||||
|
||||
if (prompt === '' && e.key == 'ArrowUp') {
|
||||
e.preventDefault();
|
||||
|
||||
const userMessageElement = [
|
||||
...document.getElementsByClassName('user-message')
|
||||
]?.at(-1);
|
||||
|
||||
const editButton = [
|
||||
...document.getElementsByClassName('edit-user-message-button')
|
||||
]?.at(-1);
|
||||
|
||||
console.log(userMessageElement);
|
||||
|
||||
userMessageElement.scrollIntoView({ block: 'center' });
|
||||
editButton?.click();
|
||||
}
|
||||
|
||||
if (commandsContainerElement && e.key === 'ArrowUp') {
|
||||
e.preventDefault();
|
||||
commandsElement.selectUp();
|
||||
|
||||
const commandOptionButton = [
|
||||
...document.getElementsByClassName('selected-command-option-button')
|
||||
]?.at(-1);
|
||||
commandOptionButton.scrollIntoView({ block: 'center' });
|
||||
}
|
||||
|
||||
if (commandsContainerElement && e.key === 'ArrowDown') {
|
||||
e.preventDefault();
|
||||
commandsElement.selectDown();
|
||||
|
||||
const commandOptionButton = [
|
||||
...document.getElementsByClassName('selected-command-option-button')
|
||||
]?.at(-1);
|
||||
commandOptionButton.scrollIntoView({ block: 'center' });
|
||||
}
|
||||
|
||||
if (commandsContainerElement && e.key === 'Enter') {
|
||||
e.preventDefault();
|
||||
|
||||
const commandOptionButton = [
|
||||
...document.getElementsByClassName('selected-command-option-button')
|
||||
]?.at(-1);
|
||||
|
||||
if (e.shiftKey) {
|
||||
prompt = `${prompt}\n`;
|
||||
} else if (commandOptionButton) {
|
||||
commandOptionButton?.click();
|
||||
} else {
|
||||
document.getElementById('send-message-button')?.click();
|
||||
}
|
||||
}
|
||||
|
||||
if (commandsContainerElement && e.key === 'Tab') {
|
||||
e.preventDefault();
|
||||
|
||||
const commandOptionButton = [
|
||||
...document.getElementsByClassName('selected-command-option-button')
|
||||
]?.at(-1);
|
||||
|
||||
commandOptionButton?.click();
|
||||
}
|
||||
|
||||
if (e.key === 'Escape') {
|
||||
console.log('Escape');
|
||||
atSelectedModel = undefined;
|
||||
}
|
||||
}}
|
||||
on:paste={async (e) => {
|
||||
e = e.detail.event;
|
||||
console.log(e);
|
||||
|
||||
const clipboardData = e.clipboardData || window.clipboardData;
|
||||
|
||||
if (clipboardData && clipboardData.items) {
|
||||
for (const item of clipboardData.items) {
|
||||
if (item.type.indexOf('image') !== -1) {
|
||||
const blob = item.getAsFile();
|
||||
const reader = new FileReader();
|
||||
|
||||
reader.onload = function (e) {
|
||||
files = [
|
||||
...files,
|
||||
{
|
||||
type: 'image',
|
||||
url: `${e.target.result}`
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
reader.readAsDataURL(blob);
|
||||
}
|
||||
}
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{:else}
|
||||
<textarea
|
||||
id="chat-input"
|
||||
trim={true}
|
||||
bind:this={chatInputElement}
|
||||
class="scrollbar-hidden bg-gray-50 dark:bg-gray-850 dark:text-gray-100 outline-none w-full py-3 px-1 rounded-xl resize-none h-[48px]"
|
||||
placeholder={placeholder ? placeholder : $i18n.t('Send a Message')}
|
||||
bind:value={prompt}
|
||||
shiftEnter={!$mobile ||
|
||||
!(
|
||||
'ontouchstart' in window ||
|
||||
navigator.maxTouchPoints > 0 ||
|
||||
navigator.msMaxTouchPoints > 0
|
||||
)}
|
||||
on:enter={async (e) => {
|
||||
if (prompt !== '') {
|
||||
dispatch('submit', prompt);
|
||||
}
|
||||
}}
|
||||
on:input={async (e) => {
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
}}
|
||||
on:focus={async (e) => {
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
}}
|
||||
on:keypress={(e) => {
|
||||
e = e.detail.event;
|
||||
if (
|
||||
!$mobile ||
|
||||
!(
|
||||
'ontouchstart' in window ||
|
||||
navigator.maxTouchPoints > 0 ||
|
||||
navigator.msMaxTouchPoints > 0
|
||||
)
|
||||
) {
|
||||
// Prevent Enter key from creating a new line
|
||||
if (e.key === 'Enter' && !e.shiftKey) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
// Submit the prompt when Enter key is pressed
|
||||
if (prompt !== '' && e.key === 'Enter' && !e.shiftKey) {
|
||||
dispatch('submit', prompt);
|
||||
}
|
||||
}
|
||||
}}
|
||||
on:keydown={async (e) => {
|
||||
e = e.detail.event;
|
||||
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
|
||||
const isCtrlPressed = e.ctrlKey || e.metaKey; // metaKey is for Cmd key on Mac
|
||||
const commandsContainerElement =
|
||||
document.getElementById('commands-container');
|
||||
@@ -640,6 +801,26 @@
|
||||
]?.at(-1);
|
||||
|
||||
commandOptionButton?.click();
|
||||
} else if (e.key === 'Tab') {
|
||||
const words = findWordIndices(prompt);
|
||||
|
||||
if (words.length > 0) {
|
||||
const word = words.at(0);
|
||||
const fullPrompt = prompt;
|
||||
|
||||
prompt = prompt.substring(0, word?.endIndex + 1);
|
||||
await tick();
|
||||
|
||||
e.target.scrollTop = e.target.scrollHeight;
|
||||
prompt = fullPrompt;
|
||||
await tick();
|
||||
|
||||
e.preventDefault();
|
||||
e.target.setSelectionRange(word?.startIndex, word.endIndex + 1);
|
||||
}
|
||||
|
||||
e.target.style.height = '';
|
||||
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
|
||||
}
|
||||
|
||||
if (e.key === 'Escape') {
|
||||
@@ -647,10 +828,17 @@
|
||||
atSelectedModel = undefined;
|
||||
}
|
||||
}}
|
||||
rows="1"
|
||||
on:input={async (e) => {
|
||||
e.target.style.height = '';
|
||||
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
|
||||
user = null;
|
||||
}}
|
||||
on:focus={async (e) => {
|
||||
e.target.style.height = '';
|
||||
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
|
||||
}}
|
||||
on:paste={async (e) => {
|
||||
e = e.detail.event;
|
||||
console.log(e);
|
||||
|
||||
const clipboardData = e.clipboardData || window.clipboardData;
|
||||
|
||||
if (clipboardData && clipboardData.items) {
|
||||
@@ -675,7 +863,7 @@
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="self-end mb-2 flex space-x-1 mr-1">
|
||||
{#if !history?.currentId || history.messages[history.currentId]?.done == true}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { prompts } from '$lib/stores';
|
||||
import { prompts, user } from '$lib/stores';
|
||||
import {
|
||||
findWordIndices,
|
||||
getUserPosition,
|
||||
@@ -78,6 +78,12 @@
|
||||
text = text.replaceAll('{{USER_LOCATION}}', String(location));
|
||||
}
|
||||
|
||||
if (command.content.includes('{{USER_NAME}}')) {
|
||||
console.log($user);
|
||||
const name = $user.name || 'User';
|
||||
text = text.replaceAll('{{USER_NAME}}', name);
|
||||
}
|
||||
|
||||
if (command.content.includes('{{USER_LANGUAGE}}')) {
|
||||
const language = localStorage.getItem('locale') || 'en-US';
|
||||
text = text.replaceAll('{{USER_LANGUAGE}}', language);
|
||||
@@ -114,13 +120,16 @@
|
||||
const chatInputElement = document.getElementById('chat-input');
|
||||
|
||||
await tick();
|
||||
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
|
||||
chatInputElement?.focus();
|
||||
await tick();
|
||||
if (chatInputElement) {
|
||||
chatInputElement.focus();
|
||||
chatInputElement.dispatchEvent(new Event('input'));
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { toast } from 'svelte-sonner';
|
||||
import { createEventDispatcher, tick, getContext } from 'svelte';
|
||||
import { createEventDispatcher, tick, getContext, onMount, onDestroy } from 'svelte';
|
||||
import { config, settings } from '$lib/stores';
|
||||
import { blobToFile, calculateSHA256, findWordIndices } from '$lib/utils';
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
let audioChunks = [];
|
||||
|
||||
const MIN_DECIBELS = -45;
|
||||
const VISUALIZER_BUFFER_LENGTH = 300;
|
||||
let VISUALIZER_BUFFER_LENGTH = 300;
|
||||
|
||||
let visualizerData = Array(VISUALIZER_BUFFER_LENGTH).fill(0);
|
||||
|
||||
@@ -142,8 +142,8 @@
|
||||
});
|
||||
|
||||
if (res) {
|
||||
console.log(res.text);
|
||||
dispatch('confirm', res.text);
|
||||
console.log(res);
|
||||
dispatch('confirm', res);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -278,12 +278,40 @@
|
||||
|
||||
stream = null;
|
||||
};
|
||||
|
||||
let resizeObserver;
|
||||
let containerWidth;
|
||||
|
||||
let maxVisibleItems = 300;
|
||||
$: maxVisibleItems = Math.floor(containerWidth / 5); // 2px width + 0.5px gap
|
||||
|
||||
onMount(() => {
|
||||
// listen to width changes
|
||||
resizeObserver = new ResizeObserver(() => {
|
||||
VISUALIZER_BUFFER_LENGTH = Math.floor(window.innerWidth / 4);
|
||||
if (visualizerData.length > VISUALIZER_BUFFER_LENGTH) {
|
||||
visualizerData = visualizerData.slice(visualizerData.length - VISUALIZER_BUFFER_LENGTH);
|
||||
} else {
|
||||
visualizerData = Array(VISUALIZER_BUFFER_LENGTH - visualizerData.length)
|
||||
.fill(0)
|
||||
.concat(visualizerData);
|
||||
}
|
||||
});
|
||||
|
||||
resizeObserver.observe(document.body);
|
||||
});
|
||||
|
||||
onDestroy(() => {
|
||||
// remove resize observer
|
||||
resizeObserver.disconnect();
|
||||
});
|
||||
</script>
|
||||
|
||||
<div
|
||||
bind:clientWidth={containerWidth}
|
||||
class="{loading
|
||||
? ' bg-gray-100/50 dark:bg-gray-850/50'
|
||||
: 'bg-indigo-300/10 dark:bg-indigo-500/10 '} rounded-full flex {className}"
|
||||
: 'bg-indigo-300/10 dark:bg-indigo-500/10 '} rounded-full flex justify-between {className}"
|
||||
>
|
||||
<div class="flex items-center mr-1">
|
||||
<button
|
||||
@@ -318,146 +346,152 @@
|
||||
class="flex flex-1 self-center items-center justify-between ml-2 mx-1 overflow-hidden h-6"
|
||||
dir="rtl"
|
||||
>
|
||||
<div class="flex-1 flex items-center gap-0.5 h-6">
|
||||
<div
|
||||
class="flex items-center gap-0.5 h-6 w-full max-w-full overflow-hidden overflow-x-hidden flex-wrap"
|
||||
>
|
||||
{#each visualizerData.slice().reverse() as rms}
|
||||
<div
|
||||
class="w-[2px]
|
||||
<div class="flex items-center h-full">
|
||||
<div
|
||||
class="w-[2px] flex-shrink-0
|
||||
|
||||
{loading
|
||||
? ' bg-gray-500 dark:bg-gray-400 '
|
||||
: 'bg-indigo-500 dark:bg-indigo-400 '}
|
||||
? ' bg-gray-500 dark:bg-gray-400 '
|
||||
: 'bg-indigo-500 dark:bg-indigo-400 '}
|
||||
|
||||
inline-block h-full"
|
||||
style="height: {Math.min(100, Math.max(14, rms * 100))}%;"
|
||||
/>
|
||||
style="height: {Math.min(100, Math.max(14, rms * 100))}%;"
|
||||
/>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class=" mx-1.5 pr-1 flex justify-center items-center">
|
||||
<div
|
||||
class="text-sm
|
||||
<div class="flex">
|
||||
<div class=" mx-1.5 pr-1 flex justify-center items-center">
|
||||
<div
|
||||
class="text-sm
|
||||
|
||||
|
||||
{loading ? ' text-gray-500 dark:text-gray-400 ' : ' text-indigo-400 '}
|
||||
font-medium flex-1 mx-auto text-center"
|
||||
>
|
||||
{formatSeconds(durationSeconds)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center mr-1">
|
||||
{#if loading}
|
||||
<div class=" text-gray-500 rounded-full cursor-not-allowed">
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="currentColor"
|
||||
><style>
|
||||
.spinner_OSmW {
|
||||
transform-origin: center;
|
||||
animation: spinner_T6mA 0.75s step-end infinite;
|
||||
}
|
||||
@keyframes spinner_T6mA {
|
||||
8.3% {
|
||||
transform: rotate(30deg);
|
||||
}
|
||||
16.6% {
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
25% {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
33.3% {
|
||||
transform: rotate(120deg);
|
||||
}
|
||||
41.6% {
|
||||
transform: rotate(150deg);
|
||||
}
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
58.3% {
|
||||
transform: rotate(210deg);
|
||||
}
|
||||
66.6% {
|
||||
transform: rotate(240deg);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
83.3% {
|
||||
transform: rotate(300deg);
|
||||
}
|
||||
91.6% {
|
||||
transform: rotate(330deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
</style><g class="spinner_OSmW"
|
||||
><rect x="11" y="1" width="2" height="5" opacity=".14" /><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(30 12 12)"
|
||||
opacity=".29"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(60 12 12)"
|
||||
opacity=".43"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(90 12 12)"
|
||||
opacity=".57"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(120 12 12)"
|
||||
opacity=".71"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(150 12 12)"
|
||||
opacity=".86"
|
||||
/><rect x="11" y="1" width="2" height="5" transform="rotate(180 12 12)" /></g
|
||||
></svg
|
||||
>
|
||||
</div>
|
||||
{:else}
|
||||
<button
|
||||
type="button"
|
||||
class="p-1.5 bg-indigo-500 text-white dark:bg-indigo-500 dark:text-blue-950 rounded-full"
|
||||
on:click={async () => {
|
||||
await confirmRecording();
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="2.5"
|
||||
stroke="currentColor"
|
||||
class="size-4"
|
||||
{formatSeconds(durationSeconds)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center">
|
||||
{#if loading}
|
||||
<div class=" text-gray-500 rounded-full cursor-not-allowed">
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="currentColor"
|
||||
><style>
|
||||
.spinner_OSmW {
|
||||
transform-origin: center;
|
||||
animation: spinner_T6mA 0.75s step-end infinite;
|
||||
}
|
||||
@keyframes spinner_T6mA {
|
||||
8.3% {
|
||||
transform: rotate(30deg);
|
||||
}
|
||||
16.6% {
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
25% {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
33.3% {
|
||||
transform: rotate(120deg);
|
||||
}
|
||||
41.6% {
|
||||
transform: rotate(150deg);
|
||||
}
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
58.3% {
|
||||
transform: rotate(210deg);
|
||||
}
|
||||
66.6% {
|
||||
transform: rotate(240deg);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
83.3% {
|
||||
transform: rotate(300deg);
|
||||
}
|
||||
91.6% {
|
||||
transform: rotate(330deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
</style><g class="spinner_OSmW"
|
||||
><rect x="11" y="1" width="2" height="5" opacity=".14" /><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(30 12 12)"
|
||||
opacity=".29"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(60 12 12)"
|
||||
opacity=".43"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(90 12 12)"
|
||||
opacity=".57"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(120 12 12)"
|
||||
opacity=".71"
|
||||
/><rect
|
||||
x="11"
|
||||
y="1"
|
||||
width="2"
|
||||
height="5"
|
||||
transform="rotate(150 12 12)"
|
||||
opacity=".86"
|
||||
/><rect x="11" y="1" width="2" height="5" transform="rotate(180 12 12)" /></g
|
||||
></svg
|
||||
>
|
||||
</div>
|
||||
{:else}
|
||||
<button
|
||||
type="button"
|
||||
class="p-1.5 bg-indigo-500 text-white dark:bg-indigo-500 dark:text-blue-950 rounded-full"
|
||||
on:click={async () => {
|
||||
await confirmRecording();
|
||||
}}
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5" />
|
||||
</svg>
|
||||
</button>
|
||||
{/if}
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="2.5"
|
||||
stroke="currentColor"
|
||||
class="size-4"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5" />
|
||||
</svg>
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
import Markdown from './Markdown.svelte';
|
||||
import Name from './Name.svelte';
|
||||
import Skeleton from './Skeleton.svelte';
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let chatId;
|
||||
@@ -155,7 +154,6 @@
|
||||
await tick();
|
||||
|
||||
const messageElement = document.getElementById(`message-${messageId}`);
|
||||
console.log(messageElement);
|
||||
if (messageElement) {
|
||||
messageElement.scrollIntoView({ block: 'start' });
|
||||
}
|
||||
@@ -237,7 +235,7 @@
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
{#if !readOnly && isLastMessage}
|
||||
{#if !readOnly}
|
||||
{#if !Object.keys(groupedMessageIds).find((modelIdx) => {
|
||||
const { messageIds } = groupedMessageIds[modelIdx];
|
||||
const _messageId = messageIds[groupedMessageIdsIdx[modelIdx]];
|
||||
@@ -272,22 +270,24 @@
|
||||
{/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>
|
||||
{#if isLastMessage}
|
||||
<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>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
@@ -58,13 +58,18 @@
|
||||
await tick();
|
||||
|
||||
const chatInputContainerElement = document.getElementById('chat-input-container');
|
||||
const chatInputElement = document.getElementById('chat-input');
|
||||
|
||||
if (chatInputContainerElement) {
|
||||
chatInputContainerElement.style.height = '';
|
||||
chatInputContainerElement.style.height =
|
||||
Math.min(chatInputContainerElement.scrollHeight, 200) + 'px';
|
||||
}
|
||||
|
||||
const chatInputElement = document.getElementById('chat-input');
|
||||
chatInputElement?.focus();
|
||||
await tick();
|
||||
if (chatInputElement) {
|
||||
chatInputElement.focus();
|
||||
chatInputElement.dispatchEvent(new Event('input'));
|
||||
}
|
||||
|
||||
await tick();
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
// Interface
|
||||
let defaultModelId = '';
|
||||
let showUsername = false;
|
||||
let richTextInput = true;
|
||||
|
||||
let landingPageMode = '';
|
||||
let chatBubble = true;
|
||||
@@ -125,6 +126,11 @@
|
||||
saveSettings({ autoTags });
|
||||
};
|
||||
|
||||
const toggleRichTextInput = async () => {
|
||||
richTextInput = !richTextInput;
|
||||
saveSettings({ richTextInput });
|
||||
};
|
||||
|
||||
const toggleResponseAutoCopy = async () => {
|
||||
const permission = await navigator.clipboard
|
||||
.readText()
|
||||
@@ -172,6 +178,7 @@
|
||||
showEmojiInCall = $settings.showEmojiInCall ?? false;
|
||||
voiceInterruption = $settings.voiceInterruption ?? false;
|
||||
|
||||
richTextInput = $settings.richTextInput ?? true;
|
||||
landingPageMode = $settings.landingPageMode ?? '';
|
||||
chatBubble = $settings.chatBubble ?? true;
|
||||
widescreenMode = $settings.widescreenMode ?? false;
|
||||
@@ -422,6 +429,28 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class=" py-0.5 flex w-full justify-between">
|
||||
<div class=" self-center text-xs">
|
||||
{$i18n.t('Rich Text Input for Chat')}
|
||||
</div>
|
||||
|
||||
<button
|
||||
class="p-1 px-3 text-xs flex rounded transition"
|
||||
on:click={() => {
|
||||
toggleRichTextInput();
|
||||
}}
|
||||
type="button"
|
||||
>
|
||||
{#if richTextInput === 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>
|
||||
<div class=" py-0.5 flex w-full justify-between">
|
||||
<div class=" self-center text-xs">
|
||||
|
||||
@@ -288,6 +288,12 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
// Replace tabs with four spaces
|
||||
function handleTabIndentation(text: string): string {
|
||||
// Replace each tab character with four spaces
|
||||
return text.replace(/\t/g, ' ');
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
const initialDoc = markdownToProseMirrorDoc(value || ''); // Convert the initial content
|
||||
|
||||
@@ -403,6 +409,22 @@
|
||||
},
|
||||
paste: (view, event) => {
|
||||
if (event.clipboardData) {
|
||||
// Extract plain text from clipboard and paste it without formatting
|
||||
const plainText = event.clipboardData.getData('text/plain');
|
||||
if (plainText) {
|
||||
const modifiedText = handleTabIndentation(plainText);
|
||||
console.log(modifiedText);
|
||||
|
||||
// Replace the current selection with the plain text content
|
||||
const tr = view.state.tr.replaceSelectionWith(
|
||||
view.state.schema.text(modifiedText),
|
||||
false
|
||||
);
|
||||
view.dispatch(tr.scrollIntoView());
|
||||
event.preventDefault(); // Prevent the default paste behavior
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if the pasted content contains image files
|
||||
const hasImageFile = Array.from(event.clipboardData.files).some((file) =>
|
||||
file.type.startsWith('image/')
|
||||
|
||||
@@ -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="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12 3 3m0 0 3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
|
||||
/>
|
||||
</svg>
|
||||
@@ -0,0 +1,12 @@
|
||||
<script lang="ts">
|
||||
export let className = 'w-4 h-4';
|
||||
export let strokeWidth = '1.5';
|
||||
</script>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class={className}>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M9 4.5a.75.75 0 0 1 .721.544l.813 2.846a3.75 3.75 0 0 0 2.576 2.576l2.846.813a.75.75 0 0 1 0 1.442l-2.846.813a3.75 3.75 0 0 0-2.576 2.576l-.813 2.846a.75.75 0 0 1-1.442 0l-.813-2.846a3.75 3.75 0 0 0-2.576-2.576l-2.846-.813a.75.75 0 0 1 0-1.442l2.846-.813A3.75 3.75 0 0 0 7.466 7.89l.813-2.846A.75.75 0 0 1 9 4.5ZM18 1.5a.75.75 0 0 1 .728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 0 1 0 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 0 1-1.456 0l-.258-1.036a2.625 2.625 0 0 0-1.91-1.91l-1.036-.258a.75.75 0 0 1 0-1.456l1.036-.258a2.625 2.625 0 0 0 1.91-1.91l.258-1.036A.75.75 0 0 1 18 1.5ZM16.5 15a.75.75 0 0 1 .712.513l.394 1.183c.15.447.5.799.948.948l1.183.395a.75.75 0 0 1 0 1.422l-1.183.395c-.447.15-.799.5-.948.948l-.395 1.183a.75.75 0 0 1-1.422 0l-.395-1.183a1.5 1.5 0 0 0-.948-.948l-1.183-.395a.75.75 0 0 1 0-1.422l1.183-.395c.447-.15.799-.5.948-.948l.395-1.183A.75.75 0 0 1 16.5 15Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
@@ -396,6 +396,7 @@
|
||||
}}
|
||||
on:keydown={(e) => {
|
||||
if (e.key === 'Enter') {
|
||||
nameUpdateHandler();
|
||||
edit = false;
|
||||
}
|
||||
}}
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
<script>
|
||||
import { getContext } from 'svelte';
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
import RichTextInput from '../common/RichTextInput.svelte';
|
||||
import Spinner from '../common/Spinner.svelte';
|
||||
import Sparkles from '../icons/Sparkles.svelte';
|
||||
import SparklesSolid from '../icons/SparklesSolid.svelte';
|
||||
import Mic from '../icons/Mic.svelte';
|
||||
import VoiceRecording from '../chat/MessageInput/VoiceRecording.svelte';
|
||||
import Tooltip from '../common/Tooltip.svelte';
|
||||
import { toast } from 'svelte-sonner';
|
||||
|
||||
let name = '';
|
||||
let content = '';
|
||||
|
||||
let voiceInput = false;
|
||||
let loading = false;
|
||||
</script>
|
||||
|
||||
<div class="relative flex-1 w-full h-full flex justify-center overflow-auto px-5 py-1">
|
||||
{#if loading}
|
||||
<div class=" absolute top-0 bottom-0 left-0 right-0 flex">
|
||||
<div class="m-auto">
|
||||
<Spinner />
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class=" w-full flex flex-col gap-2 {loading ? 'opacity-20' : ''}">
|
||||
<div class="flex-shrink-0 w-full flex justify-between items-center">
|
||||
<div class="w-full">
|
||||
<input
|
||||
class="w-full text-2xl font-medium bg-transparent outline-none"
|
||||
type="text"
|
||||
bind:value={name}
|
||||
placeholder={$i18n.t('Title')}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class=" flex-1 w-full h-full">
|
||||
<RichTextInput
|
||||
className=" input-prose-sm"
|
||||
bind:value={content}
|
||||
placeholder={$i18n.t('Write something...')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="absolute bottom-0 left-0 right-0 p-5 max-w-full flex justify-end">
|
||||
<div class="flex gap-0.5 justify-end w-full">
|
||||
{#if voiceInput}
|
||||
<div class="flex-1 w-full">
|
||||
<VoiceRecording
|
||||
bind:recording={voiceInput}
|
||||
className="p-1 w-full max-w-full"
|
||||
on:cancel={() => {
|
||||
voiceInput = false;
|
||||
}}
|
||||
on:confirm={(e) => {
|
||||
const { text, filename } = e.detail;
|
||||
|
||||
// url is hostname + /cache/audio/transcription/ + filename
|
||||
const url = `${window.location.origin}/cache/audio/transcription/${filename}`;
|
||||
|
||||
// Open in new tab
|
||||
|
||||
if (content.trim() !== '') {
|
||||
content = `${content}\n\n${text}\n\nRecording: ${url}\n\n`;
|
||||
} else {
|
||||
content = `${content}${text}\n\nRecording: ${url}\n\n`;
|
||||
}
|
||||
|
||||
voiceInput = false;
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{:else}
|
||||
<Tooltip content={$i18n.t('Voice Input')}>
|
||||
<button
|
||||
class="cursor-pointer p-2.5 flex rounded-full hover:bg-gray-100 dark:hover:bg-gray-850 transition shadow-xl"
|
||||
type="button"
|
||||
on:click={async () => {
|
||||
try {
|
||||
let stream = await navigator.mediaDevices
|
||||
.getUserMedia({ audio: true })
|
||||
.catch(function (err) {
|
||||
toast.error(
|
||||
$i18n.t(`Permission denied when accessing microphone: {{error}}`, {
|
||||
error: err
|
||||
})
|
||||
);
|
||||
return null;
|
||||
});
|
||||
|
||||
if (stream) {
|
||||
voiceInput = true;
|
||||
const tracks = stream.getTracks();
|
||||
tracks.forEach((track) => track.stop());
|
||||
}
|
||||
stream = null;
|
||||
} catch {
|
||||
toast.error($i18n.t('Permission denied when accessing microphone'));
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Mic className="size-4" />
|
||||
</button>
|
||||
</Tooltip>
|
||||
{/if}
|
||||
|
||||
<!-- <button
|
||||
class="cursor-pointer p-2.5 flex rounded-full hover:bg-gray-100 dark:hover:bg-gray-850 transition shadow-xl"
|
||||
>
|
||||
<SparklesSolid className="size-4" />
|
||||
</button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -85,8 +85,8 @@
|
||||
voiceInput = false;
|
||||
}}
|
||||
on:confirm={(e) => {
|
||||
const response = e.detail;
|
||||
content = `${content}${response} `;
|
||||
const { text, filename } = e.detail;
|
||||
content = `${content}${text} `;
|
||||
|
||||
voiceInput = false;
|
||||
}}
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "ليس صحيحا من حيث الواقع",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ملاحظة: إذا قمت بتعيين الحد الأدنى من النقاط، فلن يؤدي البحث إلا إلى إرجاع المستندات التي لها نقاط أكبر من أو تساوي الحد الأدنى من النقاط.",
|
||||
"Notes": "",
|
||||
"Notifications": "إشعارات",
|
||||
"November": "نوفمبر",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "منصب",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Не е фактологически правилно",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Забележка: Ако зададете минимален резултат, търсенето ще върне само документи с резултат, по-голям или равен на минималния резултат.",
|
||||
"Notes": "",
|
||||
"Notifications": "Десктоп Известия",
|
||||
"November": "Ноември",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Роля",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "তথ্যগত দিক থেকে সঠিক নয়",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "দ্রষ্টব্য: আপনি যদি ন্যূনতম স্কোর সেট করেন তবে অনুসন্ধানটি কেবলমাত্র ন্যূনতম স্কোরের চেয়ে বেশি বা সমান স্কোর সহ নথিগুলি ফেরত দেবে।",
|
||||
"Notes": "",
|
||||
"Notifications": "নোটিফিকেশনসমূহ",
|
||||
"November": "নভেম্বর",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "পদবি",
|
||||
"Rosé Pine": "রোজ পাইন",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "No és clarament correcte",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si s'estableix una puntuació mínima, la cerca només retornarà documents amb una puntuació major o igual a la puntuació mínima.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notificacions",
|
||||
"November": "Novembre",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de resposta no es poden activar perquè els permisos del lloc web han estat rebutjats. Comprova les preferències del navegador per donar l'accés necessari.",
|
||||
"Response splitting": "Divisió de la resposta",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rol",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
"Notes": "",
|
||||
"Notifications": "Mga pahibalo sa desktop",
|
||||
"November": "",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Papel",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Ikke faktuelt korrekt",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Bemærk: Hvis du angiver en minimumscore, returnerer søgningen kun dokumenter med en score, der er større end eller lig med minimumscoren.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notifikationer",
|
||||
"November": "November",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Svarnotifikationer kan ikke aktiveres, da webstedets tilladelser er blevet nægtet. Besøg dine browserindstillinger for at give den nødvendige adgang.",
|
||||
"Response splitting": "Svaropdeling",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rolle",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Nicht sachlich korrekt",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Hinweis: Wenn Sie eine Mindestpunktzahl festlegen, werden in der Suche nur Dokumente mit einer Punktzahl größer oder gleich der Mindestpunktzahl zurückgegeben.",
|
||||
"Notes": "",
|
||||
"Notifications": "Benachrichtigungen",
|
||||
"November": "November",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Benachrichtigungen können nicht aktiviert werden, da die Website-Berechtigungen abgelehnt wurden. Bitte besuchen Sie Ihre Browser-Einstellungen, um den erforderlichen Zugriff zu gewähren.",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rolle",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
"Notes": "",
|
||||
"Notifications": "Notifications",
|
||||
"November": "",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Role",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
"Notes": "",
|
||||
"Notifications": "",
|
||||
"November": "",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "",
|
||||
"Rosé Pine": "",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
"Notes": "",
|
||||
"Notifications": "",
|
||||
"November": "",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "",
|
||||
"Rosé Pine": "",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "No es correcto en todos los aspectos",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Si estableces una puntuación mínima, la búsqueda sólo devolverá documentos con una puntuación mayor o igual a la puntuación mínima.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notificaciones",
|
||||
"November": "Noviembre",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Las notificaciones de respuesta no pueden activarse debido a que los permisos del sitio web han sido denegados. Por favor, visite las configuraciones de su navegador para otorgar el acceso necesario.",
|
||||
"Response splitting": "División de respuestas",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rol",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "اشتباهی فکری نیست",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "توجه: اگر حداقل نمره را تعیین کنید، جستجو تنها اسنادی را با نمره بیشتر یا برابر با حداقل نمره باز می گرداند.",
|
||||
"Notes": "",
|
||||
"Notifications": "اعلان",
|
||||
"November": "نوامبر",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "نقش",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Ei faktisesti oikein",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Huom: Jos asetat vähimmäispisteet, haku palauttaa vain asiakirjat, joiden pisteet ovat suurempia tai yhtä suuria kuin vähimmäispistemäärä.",
|
||||
"Notes": "",
|
||||
"Notifications": "Ilmoitukset",
|
||||
"November": "marraskuu",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rooli",
|
||||
"Rosé Pine": "Rosee-mänty",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Non factuellement correct",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Note : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notifications",
|
||||
"November": "Novembre",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de réponse ne peuvent pas être activées car les autorisations du site web ont été refusées. Veuillez visiter les paramètres de votre navigateur pour accorder l'accès nécessaire.",
|
||||
"Response splitting": "Fractionnement de la réponse",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rôle",
|
||||
"Rosé Pine": "Pin rosé",
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
"(e.g. `sh webui.sh --api --api-auth username_password`)": "(par ex. `sh webui.sh --api --api-auth username_password`)",
|
||||
"(e.g. `sh webui.sh --api`)": "(par exemple `sh webui.sh --api`)",
|
||||
"(latest)": "(dernière version)",
|
||||
"{{ models }}": "{{ modèles }}",
|
||||
"{{ owner }}: You cannot delete a base model": "{{ propriétaire }} : Vous ne pouvez pas supprimer un modèle de base.",
|
||||
"{{ models }}": "{{ models }}",
|
||||
"{{ owner }}: You cannot delete a base model": "{{ owner }} : Vous ne pouvez pas supprimer un modèle de base.",
|
||||
"{{user}}'s Chats": "Conversations de {{user}}",
|
||||
"{{webUIName}} Backend Required": "Backend {{webUIName}} requis",
|
||||
"*Prompt node ID(s) are required for image generation": "*Les ID de noeud du prompt sont nécessaires pour la génération d’images",
|
||||
@@ -20,28 +20,28 @@
|
||||
"Add": "Ajouter",
|
||||
"Add a model id": "Ajouter un identifiant de modèle",
|
||||
"Add a short description about what this model does": "Ajoutez une brève description de ce que fait ce modèle.",
|
||||
"Add a short title for this prompt": "Ajoutez un bref titre pour cette prompt.",
|
||||
"Add a tag": "Ajouter une étiquette",
|
||||
"Add Arena Model": "",
|
||||
"Add a short title for this prompt": "Ajoutez un bref titre pour ce prompt.",
|
||||
"Add a tag": "Ajouter un tag",
|
||||
"Add Arena Model": "Ajouter un modèle d'arène",
|
||||
"Add Content": "Ajouter du contenu",
|
||||
"Add content here": "Ajoutez du contenu ici",
|
||||
"Add custom prompt": "Ajouter une prompt personnalisée",
|
||||
"Add custom prompt": "Ajouter un prompt personnalisé",
|
||||
"Add Files": "Ajouter des fichiers",
|
||||
"Add Memory": "Ajouter de la mémoire",
|
||||
"Add Model": "Ajouter un modèle",
|
||||
"Add Tag": "Ajouter une étiquette",
|
||||
"Add Tags": "Ajouter des étiquettes",
|
||||
"Add text content": "Ajouter du contenu texte",
|
||||
"Add Tag": "Ajouter un tag",
|
||||
"Add Tags": "Ajouter des tags",
|
||||
"Add text content": "Ajouter du contenu textuel",
|
||||
"Add User": "Ajouter un utilisateur",
|
||||
"Adjusting these settings will apply changes universally to all users.": "L'ajustement de ces paramètres appliquera universellement les changements à tous les utilisateurs.",
|
||||
"admin": "administrateur",
|
||||
"Admin": "Administrateur",
|
||||
"Admin Panel": "Panneau d'administration",
|
||||
"Admin Settings": "Paramètres admin.",
|
||||
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Les administrateurs ont accès à tous les outils en tout temps ; il faut attribuer des outils aux utilisateurs par modèle dans l'espace de travail.",
|
||||
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Les administrateurs ont accès à tous les outils en permanence ; les utilisateurs doivent se voir attribuer des outils pour chaque modèle dans l’espace de travail.",
|
||||
"Advanced Parameters": "Paramètres avancés",
|
||||
"Advanced Params": "Paramètres avancés",
|
||||
"All chats": "",
|
||||
"All chats": "Toutes les conversations",
|
||||
"All Documents": "Tous les documents",
|
||||
"Allow Chat Deletion": "Autoriser la suppression de l'historique de chat",
|
||||
"Allow Chat Editing": "Autoriser la modification de l'historique de chat",
|
||||
@@ -53,22 +53,22 @@
|
||||
"Already have an account?": "Avez-vous déjà un compte ?",
|
||||
"an assistant": "un assistant",
|
||||
"and": "et",
|
||||
"and {{COUNT}} more": "",
|
||||
"and {{COUNT}} more": "et {{COUNT}} autres",
|
||||
"and create a new shared link.": "et créer un nouveau lien partagé.",
|
||||
"API Base URL": "URL de base de l'API",
|
||||
"API Key": "Clé d'API",
|
||||
"API Key created.": "Clé d'API générée.",
|
||||
"API keys": "Clés d'API",
|
||||
"April": "Avril",
|
||||
"Archive": "Archivage",
|
||||
"Archive": "Archiver",
|
||||
"Archive All Chats": "Archiver toutes les conversations",
|
||||
"Archived Chats": "Conversations archivées",
|
||||
"are allowed - Activate this command by typing": "sont autorisés - Activer cette commande en tapant",
|
||||
"Are you sure?": "Êtes-vous certain ?",
|
||||
"Arena Models": "",
|
||||
"Arena Models": "Modèles d'arène",
|
||||
"Artifacts": "Artéfacts",
|
||||
"Ask a question": "Posez votre question",
|
||||
"Assistant": "",
|
||||
"Assistant": "Assistant",
|
||||
"Attach file": "Joindre un document",
|
||||
"Attention to detail": "Attention aux détails",
|
||||
"Audio": "Audio",
|
||||
@@ -97,14 +97,14 @@
|
||||
"Cancel": "Annuler",
|
||||
"Capabilities": "Capacités",
|
||||
"Change Password": "Changer le mot de passe",
|
||||
"Character": "",
|
||||
"Character": "Caractère",
|
||||
"Chat": "Chat",
|
||||
"Chat Background Image": "Image d'arrière-plan de la fenêtre de chat",
|
||||
"Chat Bubble UI": "Bulles de chat",
|
||||
"Chat Controls": "Contrôles du chat",
|
||||
"Chat direction": "Direction du chat",
|
||||
"Chat Overview": "Aperçu du chat",
|
||||
"Chat Tags Auto-Generation": "",
|
||||
"Chat Tags Auto-Generation": "Génération automatique des tags",
|
||||
"Chats": "Conversations",
|
||||
"Check Again": "Vérifiez à nouveau.",
|
||||
"Check for updates": "Vérifier les mises à jour disponibles",
|
||||
@@ -114,21 +114,21 @@
|
||||
"Chunk Params": "Paramètres des chunks",
|
||||
"Chunk Size": "Taille des chunks",
|
||||
"Citation": "Citation",
|
||||
"Clear memory": "Libérer la mémoire",
|
||||
"Clear memory": "Effacer la mémoire",
|
||||
"Click here for help.": "Cliquez ici pour obtenir de l'aide.",
|
||||
"Click here to": "Cliquez ici pour",
|
||||
"Click here to download user import template file.": "Cliquez ici pour télécharger le fichier modèle d'importation des utilisateurs.",
|
||||
"Click here to learn more about faster-whisper and see the available models.": "",
|
||||
"Click here to learn more about faster-whisper and see the available models.": "Cliquez ici pour en savoir plus sur faster-whisper et voir les modèles disponibles.",
|
||||
"Click here to select": "Cliquez ici pour sélectionner",
|
||||
"Click here to select a csv file.": "Cliquez ici pour sélectionner un fichier .csv.",
|
||||
"Click here to select a py file.": "Cliquez ici pour sélectionner un fichier .py.",
|
||||
"Click here to upload a workflow.json file.": "Cliquez ici pour télécharger un fichier workflow.json.",
|
||||
"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 son rôle.",
|
||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.",
|
||||
"Clone": "Cloner",
|
||||
"Close": "Fermer",
|
||||
"Code execution": "",
|
||||
"Code execution": "Exécution de code",
|
||||
"Code formatted successfully": "Le code a été formaté avec succès",
|
||||
"Collection": "Collection",
|
||||
"ComfyUI": "ComfyUI",
|
||||
@@ -137,7 +137,7 @@
|
||||
"ComfyUI Workflow": "Flux de travaux de ComfyUI",
|
||||
"ComfyUI Workflow Nodes": "Noeud du flux de travaux de ComfyUI",
|
||||
"Command": "Commande",
|
||||
"Completions": "",
|
||||
"Completions": "Complétions",
|
||||
"Concurrent Requests": "Demandes concurrentes",
|
||||
"Confirm": "Confirmer",
|
||||
"Confirm Password": "Confirmer le mot de passe",
|
||||
@@ -154,18 +154,18 @@
|
||||
"Copied": "Copié",
|
||||
"Copied shared chat URL to clipboard!": "URL du chat copié dans le presse-papiers !",
|
||||
"Copied to clipboard": "Copié dans le presse-papiers",
|
||||
"Copy": "Copie",
|
||||
"Copy": "Copier",
|
||||
"Copy last code block": "Copier le dernier bloc de code",
|
||||
"Copy last response": "Copier la dernière réponse",
|
||||
"Copy Link": "Copier le lien",
|
||||
"Copy to clipboard": "",
|
||||
"Copy to clipboard": "Copier dans le presse-papiers",
|
||||
"Copying to clipboard was successful!": "La copie dans le presse-papiers a réussi !",
|
||||
"Create a model": "Créer un modèle",
|
||||
"Create Account": "Créer un compte",
|
||||
"Create Knowledge": "Créer une connaissance",
|
||||
"Create new key": "Créer une nouvelle clé",
|
||||
"Create new secret key": "Créer une nouvelle clé secrète",
|
||||
"Created at": "Créé à",
|
||||
"Created at": "Créé le",
|
||||
"Created At": "Créé le",
|
||||
"Created by": "Créé par",
|
||||
"CSV Import": "Import CSV",
|
||||
@@ -190,9 +190,9 @@
|
||||
"Delete chat": "Supprimer la conversation",
|
||||
"Delete Chat": "Supprimer la Conversation",
|
||||
"Delete chat?": "Supprimer la conversation ?",
|
||||
"Delete folder?": "",
|
||||
"Delete folder?": "Supprimer le dossier ?",
|
||||
"Delete function?": "Supprimer la fonction ?",
|
||||
"Delete prompt?": "Supprimer la prompt ?",
|
||||
"Delete prompt?": "Supprimer le prompt ?",
|
||||
"delete this link": "supprimer ce lien",
|
||||
"Delete tool?": "Effacer l'outil ?",
|
||||
"Delete User": "Supprimer le compte d'utilisateur",
|
||||
@@ -201,10 +201,10 @@
|
||||
"Description": "Description",
|
||||
"Didn't fully follow instructions": "N'a pas entièrement respecté les instructions",
|
||||
"Disabled": "Désactivé",
|
||||
"Discover a function": "Découvrez une fonction",
|
||||
"Discover a model": "Découvrir un modèle",
|
||||
"Discover a prompt": "Découvrir une suggestion",
|
||||
"Discover a tool": "Découvrez un outil",
|
||||
"Discover a function": "Trouvez une fonction",
|
||||
"Discover a model": "Trouvez un modèle",
|
||||
"Discover a prompt": "Trouvez un prompt",
|
||||
"Discover a tool": "Trouvez un outil",
|
||||
"Discover, download, and explore custom functions": "Découvrez, téléchargez et explorez des fonctions personnalisées",
|
||||
"Discover, download, and explore custom prompts": "Découvrez, téléchargez et explorez des prompts personnalisés",
|
||||
"Discover, download, and explore custom tools": "Découvrez, téléchargez et explorez des outils personnalisés",
|
||||
@@ -217,7 +217,7 @@
|
||||
"Document": "Document",
|
||||
"Documentation": "Documentation",
|
||||
"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.": "n'établit aucune connexion externe et garde vos données en sécurité sur votre serveur local.",
|
||||
"Don't have an account?": "Vous n'avez pas de compte ?",
|
||||
"don't install random functions from sources you don't trust.": "n'installez pas de fonctions aléatoires provenant de sources auxquelles vous ne faites pas confiance.",
|
||||
"don't install random tools from sources you don't trust.": "n'installez pas d'outils aléatoires provenant de sources auxquelles vous ne faites pas confiance.",
|
||||
@@ -226,11 +226,11 @@
|
||||
"Download": "Télécharger",
|
||||
"Download canceled": "Téléchargement annulé",
|
||||
"Download Database": "Télécharger la base de données",
|
||||
"Draw": "",
|
||||
"Draw": "Match nul",
|
||||
"Drop any files here to add to the conversation": "Déposez des fichiers ici pour les ajouter à la conversation",
|
||||
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "par ex. '30s', '10 min'. Les unités de temps valides sont 's', 'm', 'h'.",
|
||||
"Edit": "Modifier",
|
||||
"Edit Arena Model": "",
|
||||
"Edit Arena Model": "Modifier le modèle d'arène",
|
||||
"Edit Memory": "Modifier la mémoire",
|
||||
"Edit User": "Modifier l'utilisateur",
|
||||
"ElevenLabs": "ElevenLabs",
|
||||
@@ -254,14 +254,14 @@
|
||||
"Enter CFG Scale (e.g. 7.0)": "Entrez l'échelle CFG (par ex. 7.0)",
|
||||
"Enter Chunk Overlap": "Entrez le chevauchement des chunks",
|
||||
"Enter Chunk Size": "Entrez la taille des chunks",
|
||||
"Enter description": "",
|
||||
"Enter description": "Entrez la description",
|
||||
"Enter Github Raw URL": "Entrez l'URL brute de GitHub",
|
||||
"Enter Google PSE API Key": "Entrez la clé API Google PSE",
|
||||
"Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE",
|
||||
"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
|
||||
"Enter language codes": "Entrez les codes de langue",
|
||||
"Enter Model ID": "Entrez l'ID du modèle",
|
||||
"Enter model tag (e.g. {{modelTag}})": "Entrez l'étiquette du modèle (par ex. {{modelTag}})",
|
||||
"Enter model tag (e.g. {{modelTag}})": "Entrez le tag du modèle (par ex. {{modelTag}})",
|
||||
"Enter Number of Steps (e.g. 50)": "Entrez le nombre d'étapes (par ex. 50)",
|
||||
"Enter Sampler (e.g. Euler a)": "Entrez le sampler (par ex. Euler a)",
|
||||
"Enter Scheduler (e.g. Karras)": "Entrez le planificateur (par ex. Karras)",
|
||||
@@ -273,7 +273,7 @@
|
||||
"Enter Serply API Key": "Entrez la clé API Serply",
|
||||
"Enter Serpstack API Key": "Entrez la clé API Serpstack",
|
||||
"Enter stop sequence": "Entrez la séquence d'arrêt",
|
||||
"Enter system prompt": "Entrez le prompt du système",
|
||||
"Enter system prompt": "Entrez le prompt système",
|
||||
"Enter Tavily API Key": "Entrez la clé API Tavily",
|
||||
"Enter Tika Server URL": "Entrez l'URL du serveur Tika",
|
||||
"Enter Top K": "Entrez les Top K",
|
||||
@@ -285,28 +285,28 @@
|
||||
"Enter Your Password": "Entrez votre mot de passe",
|
||||
"Enter Your Role": "Entrez votre rôle",
|
||||
"Error": "Erreur",
|
||||
"ERROR": "",
|
||||
"Evaluations": "",
|
||||
"Exclude": "",
|
||||
"ERROR": "ERREUR",
|
||||
"Evaluations": "Évaluations",
|
||||
"Exclude": "Exclure",
|
||||
"Experimental": "Expérimental",
|
||||
"Export": "Exportation",
|
||||
"Export All Chats (All Users)": "Exporter toutes les conversations (pour tous les utilisateurs)",
|
||||
"Export All Chats (All Users)": "Exporter toutes les conversations (de tous les utilisateurs)",
|
||||
"Export chat (.json)": "Exporter la conversation (.json)",
|
||||
"Export Chats": "Exporter les conversations",
|
||||
"Export Config to JSON File": "Exporter la configuration vers un fichier JSON",
|
||||
"Export Functions": "Exportez des fonctions",
|
||||
"Export Functions": "Exporter des fonctions",
|
||||
"Export LiteLLM config.yaml": "Exportez le fichier LiteLLM config.yaml",
|
||||
"Export Models": "Exporter des modèles",
|
||||
"Export Prompts": "Exporter des prompts",
|
||||
"Export Tools": "Outils d'exportation",
|
||||
"Export Tools": "Exporter des outils",
|
||||
"External Models": "Modèles externes",
|
||||
"Failed to add file.": "",
|
||||
"Failed to add file.": "Échec de l'ajout du fichier.",
|
||||
"Failed to create API Key.": "Échec de la création de la clé API.",
|
||||
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
|
||||
"Failed to update settings": "Échec de la mise à jour des paramètres",
|
||||
"Failed to upload file.": "Échec du téléchargement du fichier.",
|
||||
"February": "Février",
|
||||
"Feedback History": "",
|
||||
"Feedback History": "Historique des avis",
|
||||
"Feel free to add specific details": "N'hésitez pas à ajouter des détails spécifiques",
|
||||
"File": "Fichier",
|
||||
"File added successfully.": "Fichier ajouté avec succès.",
|
||||
@@ -320,17 +320,17 @@
|
||||
"Filter is now globally enabled": "Le filtre est désormais activé globalement",
|
||||
"Filters": "Filtres",
|
||||
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Spoofing détecté : impossible d'utiliser les initiales comme avatar. Retour à l'image de profil par défaut.",
|
||||
"Fluidly stream large external response chunks": "Streaming fluide de gros morceaux de réponses externes",
|
||||
"Focus chat input": "Se concentrer sur le chat en entrée",
|
||||
"Folder deleted successfully": "",
|
||||
"Folder name cannot be empty": "",
|
||||
"Folder name cannot be empty.": "",
|
||||
"Folder name updated successfully": "",
|
||||
"Fluidly stream large external response chunks": "Streaming fluide de gros chunks de réponses externes",
|
||||
"Focus chat input": "Mettre le focus sur le champ de chat",
|
||||
"Folder deleted successfully": "Dossier supprimé avec succès",
|
||||
"Folder name cannot be empty": "Le nom du dossier ne peut pas être vide",
|
||||
"Folder name cannot be empty.": "Le nom du dossier ne peut pas être vide.",
|
||||
"Folder name updated successfully": "Le nom du dossier a été mis à jour avec succès",
|
||||
"Followed instructions perfectly": "A parfaitement suivi les instructions",
|
||||
"Form": "Formulaire",
|
||||
"Format your variables using brackets like this:": "",
|
||||
"Format your variables using brackets like this:": "Formatez vos variables en utilisant des parenthèses comme ceci :",
|
||||
"Frequency Penalty": "Pénalité de fréquence",
|
||||
"Function": "",
|
||||
"Function": "Fonction",
|
||||
"Function created successfully": "La fonction a été créée avec succès",
|
||||
"Function deleted successfully": "Fonction supprimée avec succès",
|
||||
"Function Description (e.g. A filter to remove profanity from text)": "Description de la fonction (par ex. Un filtre pour supprimer les grossièretés d'un texte)",
|
||||
@@ -358,41 +358,41 @@
|
||||
"has no conversations.": "n'a aucune conversation.",
|
||||
"Hello, {{name}}": "Bonjour, {{name}}.",
|
||||
"Help": "Aide",
|
||||
"Help us create the best community leaderboard by sharing your feedback history!": "",
|
||||
"Help us create the best community leaderboard by sharing your feedback history!": "Aidez-nous à créer le meilleur classement communautaire en partageant votre historique des avis !",
|
||||
"Hide": "Cacher",
|
||||
"Hide Model": "Masquer le modèle",
|
||||
"How can I help you today?": "Comment puis-je vous être utile aujourd'hui ?",
|
||||
"How can I help you today?": "Comment puis-je vous aider aujourd'hui ?",
|
||||
"Hybrid Search": "Recherche hybride",
|
||||
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Je reconnais avoir lu et compris les implications de mes actions. Je suis conscient des risques associés à l'exécution d'un code arbitraire et j'ai vérifié la fiabilité de la source.",
|
||||
"ID": "",
|
||||
"ID": "ID",
|
||||
"Image Generation (Experimental)": "Génération d'images (expérimental)",
|
||||
"Image Generation Engine": "Moteur de génération d'images",
|
||||
"Image Settings": "Paramètres de génération d'images",
|
||||
"Images": "Images",
|
||||
"Import Chats": "Importer les conversations",
|
||||
"Import Config from JSON File": "Importer la configuration depuis un fichier JSON",
|
||||
"Import Functions": "Import de fonctions",
|
||||
"Import Functions": "Importer des fonctions",
|
||||
"Import Models": "Importer des modèles",
|
||||
"Import Prompts": "Importer des prompts",
|
||||
"Import Tools": "Outils d'importation",
|
||||
"Include": "",
|
||||
"Import Tools": "Importer des outils",
|
||||
"Include": "Inclure",
|
||||
"Include `--api-auth` flag when running stable-diffusion-webui": "Inclure le drapeau `--api-auth` lors de l'exécution de stable-diffusion-webui",
|
||||
"Include `--api` flag when running stable-diffusion-webui": "Inclure le drapeau `--api` lorsque vous exécutez stable-diffusion-webui",
|
||||
"Info": "Info",
|
||||
"Input commands": "Entrez les commandes",
|
||||
"Install from Github URL": "Installer depuis l'URL GitHub",
|
||||
"Input commands": "Commandes d'entrée",
|
||||
"Install from Github URL": "Installer depuis une URL GitHub",
|
||||
"Instant Auto-Send After Voice Transcription": "Envoi automatique après la transcription",
|
||||
"Interface": "Interface utilisateur",
|
||||
"Invalid file format.": "",
|
||||
"Invalid Tag": "Étiquette non valide",
|
||||
"Invalid file format.": "Format de fichier non valide.",
|
||||
"Invalid Tag": "Tag non valide",
|
||||
"January": "Janvier",
|
||||
"join our Discord for help.": "Rejoignez notre Discord pour obtenir de l'aide.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "Aperçu JSON",
|
||||
"July": "Juillet",
|
||||
"June": "Juin",
|
||||
"JWT Expiration": "Expiration du jeton JWT",
|
||||
"JWT Token": "Jeton JWT",
|
||||
"JWT Expiration": "Expiration du token JWT",
|
||||
"JWT Token": "Token JWT",
|
||||
"Keep Alive": "Temps de maintien connecté",
|
||||
"Keyboard shortcuts": "Raccourcis clavier",
|
||||
"Knowledge": "Connaissances",
|
||||
@@ -405,28 +405,28 @@
|
||||
"large language models, locally.": "grand modèle de langage, localement.",
|
||||
"Last Active": "Dernière activité",
|
||||
"Last Modified": "Dernière modification",
|
||||
"Leaderboard": "",
|
||||
"Leaderboard": "Classement",
|
||||
"Leave empty for unlimited": "Laissez vide pour illimité",
|
||||
"Leave empty to include all models or select specific models": "",
|
||||
"Leave empty to include all models or select specific models": "Laissez vide pour inclure tous les modèles ou sélectionnez des modèles spécifiques",
|
||||
"Leave empty to use the default prompt, or enter a custom prompt": "Laissez vide pour utiliser le prompt par défaut, ou entrez un prompt personnalisé",
|
||||
"Light": "Clair",
|
||||
"Listening...": "Écoute en cours...",
|
||||
"LLMs can make mistakes. Verify important information.": "Les LLM peuvent faire des erreurs. Vérifiez les informations importantes.",
|
||||
"Local Models": "Modèles locaux",
|
||||
"Lost": "",
|
||||
"Lost": "Perdu",
|
||||
"LTR": "LTR",
|
||||
"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 export a workflow.json file as API format from ComfyUI.": "Veillez à exporter un fichier workflow.json au format API depuis ComfyUI.",
|
||||
"Manage": "Gérer",
|
||||
"Manage Arena Models": "",
|
||||
"Manage Arena Models": "Gérer les modèles d'arène",
|
||||
"Manage Models": "Gérer les modèles",
|
||||
"Manage Ollama Models": "Gérer les modèles Ollama",
|
||||
"Manage Pipelines": "Gérer les pipelines",
|
||||
"March": "Mars",
|
||||
"Max Tokens (num_predict)": "Tokens maximaux (num_predict)",
|
||||
"Max Upload Count": "Nombre maximal",
|
||||
"Max Upload Size": "Taille maximale",
|
||||
"Max Tokens (num_predict)": "Nb max de tokens (num_predict)",
|
||||
"Max Upload Count": "Nombre maximal de téléversements",
|
||||
"Max Upload Size": "Limite de taille de téléversement",
|
||||
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé en même temps. Veuillez réessayer ultérieurement.",
|
||||
"May": "Mai",
|
||||
"Memories accessible by LLMs will be shown here.": "Les mémoires accessibles par les LLMs seront affichées ici.",
|
||||
@@ -436,7 +436,7 @@
|
||||
"Memory deleted successfully": "La mémoire a été supprimée avec succès",
|
||||
"Memory updated successfully": "La mémoire a été mise à jour avec succès",
|
||||
"Merge Responses": "Fusionner les réponses",
|
||||
"Message rating should be enabled to use this feature": "",
|
||||
"Message rating should be enabled to use this feature": "L'évaluation des messages doit être activée pour utiliser cette fonctionnalité",
|
||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir la conversation partagée.",
|
||||
"Min P": "P min",
|
||||
"Minimum Score": "Score minimal",
|
||||
@@ -446,7 +446,7 @@
|
||||
"MMMM DD, YYYY": "DD MMMM YYYY",
|
||||
"MMMM DD, YYYY HH:mm": "DD MMMM YYYY HH:mm",
|
||||
"MMMM DD, YYYY hh:mm:ss A": "DD MMMM YYYY HH:mm:ss",
|
||||
"Model": "",
|
||||
"Model": "Modèle",
|
||||
"Model '{{modelName}}' has been successfully downloaded.": "Le modèle '{{modelName}}' a été téléchargé avec succès.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "Le modèle '{{modelTag}}' est déjà dans la file d'attente pour le téléchargement.",
|
||||
"Model {{modelId}} not found": "Modèle {{modelId}} introuvable",
|
||||
@@ -457,7 +457,7 @@
|
||||
"Model created successfully!": "Le modèle a été créé avec succès !",
|
||||
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Chemin du système de fichiers de modèle détecté. Le nom court du modèle est requis pour la mise à jour, l'opération ne peut pas être poursuivie.",
|
||||
"Model ID": "ID du modèle",
|
||||
"Model Name": "",
|
||||
"Model Name": "Nom du modèle",
|
||||
"Model not selected": "Modèle non sélectionné",
|
||||
"Model Params": "Paramètres du modèle",
|
||||
"Model updated successfully": "Le modèle a été mis à jour avec succès",
|
||||
@@ -465,31 +465,32 @@
|
||||
"Model(s) Whitelisted": "Modèle(s) Autorisé(s)",
|
||||
"Modelfile Content": "Contenu du Fichier de Modèle",
|
||||
"Models": "Modèles",
|
||||
"more": "",
|
||||
"More": "Plus de",
|
||||
"more": "plus",
|
||||
"More": "Plus",
|
||||
"Move to Top": "Déplacer en haut",
|
||||
"Name": "Nom d'utilisateur",
|
||||
"Name your model": "Nommez votre modèle",
|
||||
"New Chat": "Nouvelle conversation",
|
||||
"New folder": "",
|
||||
"New folder": "Nouveau dossier",
|
||||
"New Password": "Nouveau mot de passe",
|
||||
"No content found": "",
|
||||
"No content found": "Aucun contenu trouvé",
|
||||
"No content to speak": "Rien à signaler",
|
||||
"No distance available": "",
|
||||
"No feedbacks found": "",
|
||||
"No distance available": "Aucune distance disponible",
|
||||
"No feedbacks found": "Aucun avis trouvé",
|
||||
"No file selected": "Aucun fichier sélectionné",
|
||||
"No files found.": "",
|
||||
"No files found.": "Aucun fichier trouvé.",
|
||||
"No HTML, CSS, or JavaScript content found.": "Aucun contenu HTML, CSS ou JavaScript trouvé.",
|
||||
"No knowledge found": "Aucune connaissance trouvée",
|
||||
"No models found": "",
|
||||
"No models found": "Aucun modèle trouvé",
|
||||
"No results found": "Aucun résultat trouvé",
|
||||
"No search query generated": "Aucune requête de recherche générée",
|
||||
"No source available": "Aucune source n'est disponible",
|
||||
"No valves to update": "Aucune vanne à mettre à jour",
|
||||
"None": "Aucun",
|
||||
"Not factually correct": "Non factuellement correct",
|
||||
"Not helpful": "",
|
||||
"Not helpful": "Pas utile",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Note : Si vous définissez un score minimum, seuls les documents ayant un score supérieur ou égal à ce score minimum seront retournés par la recherche.",
|
||||
"Notes": "Notes",
|
||||
"Notifications": "Notifications",
|
||||
"November": "Novembre",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -497,7 +498,7 @@
|
||||
"OAuth ID": "ID OAuth",
|
||||
"October": "Octobre",
|
||||
"Off": "Désactivé",
|
||||
"Okay, Let's Go!": "D'accord, on y va !",
|
||||
"Okay, Let's Go!": "D'accord, allons-y !",
|
||||
"OLED Dark": "Noir OLED",
|
||||
"Ollama": "Ollama",
|
||||
"Ollama API": "API Ollama",
|
||||
@@ -509,13 +510,13 @@
|
||||
"Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.",
|
||||
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissance pour modifier/ajouter des documents.",
|
||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.",
|
||||
"Oops! There are files still uploading. Please wait for the upload to complete.": "",
|
||||
"Oops! There was an error in the previous response.": "",
|
||||
"Oops! There are files still uploading. Please wait for the upload to complete.": "Oups ! Des fichiers sont encore en cours de téléversement. Veuillez patienter jusqu'à la fin du téléversement.",
|
||||
"Oops! There was an error in the previous response.": "Oups ! Il y a eu une erreur dans la réponse précédente.",
|
||||
"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 file": "Ouvrir le fichier",
|
||||
"Open in full screen": "Ouvrir en plein écran",
|
||||
"Open new chat": "Ouvrir une nouvelle conversation",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
"Open WebUI uses faster-whisper internally.": "Open WebUI utilise faster-whisper en interne.",
|
||||
"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 API": "API compatibles OpenAI",
|
||||
@@ -524,12 +525,12 @@
|
||||
"OpenAI URL/Key required.": "URL/Clé OpenAI requise.",
|
||||
"or": "ou",
|
||||
"Other": "Autre",
|
||||
"OUTPUT": "",
|
||||
"OUTPUT": "SORTIE",
|
||||
"Output format": "Format de sortie",
|
||||
"Overview": "Aperçu",
|
||||
"page": "page",
|
||||
"Password": "Mot de passe",
|
||||
"PDF document (.pdf)": "Document au format PDF (.pdf)",
|
||||
"PDF document (.pdf)": "Document au format PDF (.pdf)",
|
||||
"PDF Extract Images (OCR)": "Extraction d'images PDF (OCR)",
|
||||
"pending": "en attente",
|
||||
"Permission denied when accessing media devices": "Accès aux appareils multimédias refusé",
|
||||
@@ -546,7 +547,7 @@
|
||||
"Plain text (.txt)": "Texte simple (.txt)",
|
||||
"Playground": "Playground",
|
||||
"Please carefully review the following warnings:": "Veuillez lire attentivement les avertissements suivants :",
|
||||
"Please enter a prompt": "",
|
||||
"Please enter a prompt": "Veuillez saisir un prompt",
|
||||
"Please fill in all fields.": "Veuillez remplir tous les champs.",
|
||||
"Please select a reason": "Veuillez sélectionner une raison",
|
||||
"Positive attitude": "Attitude positive",
|
||||
@@ -561,17 +562,17 @@
|
||||
"Pull a model from Ollama.com": "Télécharger un modèle depuis Ollama.com",
|
||||
"Query Params": "Paramètres de requête",
|
||||
"RAG Template": "Modèle RAG",
|
||||
"Rating": "",
|
||||
"Re-rank models by topic similarity": "",
|
||||
"Rating": "Note",
|
||||
"Re-rank models by topic similarity": "Reclasser les modèles par similarité de sujet",
|
||||
"Read Aloud": "Lire à haute voix",
|
||||
"Record voice": "Enregistrer la voix",
|
||||
"Redirecting you to OpenWebUI Community": "Redirection vers la communauté OpenWebUI",
|
||||
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Désignez-vous comme « Utilisateur » (par ex. « L'utilisateur apprend l'espagnol »)",
|
||||
"References from": "",
|
||||
"References from": "Références de",
|
||||
"Refused when it shouldn't have": "Refusé alors qu'il n'aurait pas dû l'être",
|
||||
"Regenerate": "Regénérer",
|
||||
"Release Notes": "Notes de publication",
|
||||
"Relevance": "",
|
||||
"Release Notes": "Notes de mise à jour",
|
||||
"Relevance": "Pertinence",
|
||||
"Remove": "Retirer",
|
||||
"Remove Model": "Retirer le modèle",
|
||||
"Rename": "Renommer",
|
||||
@@ -582,12 +583,13 @@
|
||||
"Reranking model set to \"{{reranking_model}}\"": "Modèle de ré-ranking défini sur « {{reranking_model}} »",
|
||||
"Reset": "Réinitialiser",
|
||||
"Reset Upload Directory": "Réinitialiser le répertoire de téléchargement",
|
||||
"Reset Vector Storage/Knowledge": "",
|
||||
"Reset Vector Storage/Knowledge": "Réinitialiser le stockage vectoriel/connaissances",
|
||||
"Response AutoCopy to Clipboard": "Copie automatique de la réponse vers le presse-papiers",
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de réponse ne peuvent pas être activées car les autorisations du site web ont été refusées. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.",
|
||||
"Response splitting": "Fractionnement de la réponse",
|
||||
"Result": "",
|
||||
"RK": "",
|
||||
"Result": "Résultat",
|
||||
"Rich Text Input for Chat": "Saisie de texte enrichi pour le chat",
|
||||
"RK": "Rang",
|
||||
"Role": "Rôle",
|
||||
"Rosé Pine": "Pin rosé",
|
||||
"Rosé Pine Dawn": "Aube de Pin Rosé",
|
||||
@@ -599,7 +601,7 @@
|
||||
"Save & Create": "Enregistrer & Créer",
|
||||
"Save & Update": "Enregistrer & Mettre à jour",
|
||||
"Save As Copy": "Enregistrer comme copie",
|
||||
"Save Tag": "Enregistrer l'étiquette",
|
||||
"Save Tag": "Enregistrer le tag",
|
||||
"Saved": "Enregistré",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "La sauvegarde des journaux de conversation directement dans le stockage de votre navigateur n'est plus prise en charge. Veuillez prendre un instant pour télécharger et supprimer vos journaux de conversation en cliquant sur le bouton ci-dessous. Ne vous inquiétez pas, vous pouvez facilement réimporter vos journaux de conversation dans le backend via",
|
||||
"Scroll to bottom when switching between branches": "Défiler vers le bas lors du passage d'une branche à l'autre",
|
||||
@@ -607,12 +609,12 @@
|
||||
"Search a model": "Rechercher un modèle",
|
||||
"Search Chats": "Rechercher des conversations",
|
||||
"Search Collection": "Rechercher une collection",
|
||||
"search for tags": "",
|
||||
"search for tags": "Rechercher des tags",
|
||||
"Search Functions": "Rechercher des fonctions",
|
||||
"Search Knowledge": "Rechercher des connaissances",
|
||||
"Search Models": "Rechercher des modèles",
|
||||
"Search Prompts": "Rechercher des prompts",
|
||||
"Search Query Generation Prompt": "Génération d'interrogation de recherche",
|
||||
"Search Query Generation Prompt": "Rechercher des prompts de génération de requête",
|
||||
"Search Result Count": "Nombre de résultats de recherche",
|
||||
"Search Tools": "Rechercher des outils",
|
||||
"SearchApi API Key": "Clé API SearchApi",
|
||||
@@ -625,10 +627,10 @@
|
||||
"Searxng Query URL": "URL de recherche Searxng",
|
||||
"See readme.md for instructions": "Voir le fichier readme.md pour les instructions",
|
||||
"See what's new": "Découvrez les nouvelles fonctionnalités",
|
||||
"Seed": "Graine",
|
||||
"Seed": "Seed",
|
||||
"Select a base model": "Sélectionnez un modèle de base",
|
||||
"Select a engine": "Sélectionnez un moteur",
|
||||
"Select a file to view or drag and drop a file to upload": "",
|
||||
"Select a file to view or drag and drop a file to upload": "Sélectionnez un fichier à afficher ou faites glisser et déposez un fichier à téléverser",
|
||||
"Select a function": "Sélectionnez une fonction",
|
||||
"Select a model": "Sélectionnez un modèle",
|
||||
"Select a pipeline": "Sélectionnez un pipeline",
|
||||
@@ -637,14 +639,14 @@
|
||||
"Select an Ollama instance": "Sélectionnez une instance Ollama",
|
||||
"Select Engine": "Sélectionnez le moteur",
|
||||
"Select Knowledge": "Sélectionnez une connaissance",
|
||||
"Select model": "Sélectionnez un modèle",
|
||||
"Select model": "Sélectionner un modèle",
|
||||
"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",
|
||||
"Semantic distance to query": "",
|
||||
"Semantic distance to query": "Distance sémantique à la requête",
|
||||
"Send": "Envoyer",
|
||||
"Send a Message": "Envoyer un message",
|
||||
"Send message": "Envoyer un message",
|
||||
"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
|
||||
"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Envoie `stream_options: { include_usage: true }` dans la requête.\nLes fournisseurs pris en charge renverront des informations sur l'utilisation des tokens dans la réponse lorsque cette option est activée.",
|
||||
"September": "Septembre",
|
||||
"Serper API Key": "Clé API Serper",
|
||||
"Serply API Key": "Clé API Serply",
|
||||
@@ -661,20 +663,20 @@
|
||||
"Set Steps": "Définir le nombre d'étapes",
|
||||
"Set Task Model": "Définir le modèle de tâche",
|
||||
"Set Voice": "Choisir la voix",
|
||||
"Set whisper model": "",
|
||||
"Set whisper model": "Choisir le modèle Whisper",
|
||||
"Settings": "Paramètres",
|
||||
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
||||
"Share": "Partager",
|
||||
"Share Chat": "Partage de conversation",
|
||||
"Share to OpenWebUI Community": "Partager avec la communauté OpenWebUI",
|
||||
"short-summary": "résumé concis",
|
||||
"Show": "Montrer",
|
||||
"Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur dans l'écran du compte en attente",
|
||||
"Show Model": "Montrer le modèle",
|
||||
"Show": "Afficher",
|
||||
"Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente",
|
||||
"Show Model": "Afficher le modèle",
|
||||
"Show shortcuts": "Afficher les raccourcis",
|
||||
"Show your support!": "Montre ton soutien !",
|
||||
"Show your support!": "Montrez votre soutien !",
|
||||
"Showcased creativity": "Créativité mise en avant",
|
||||
"Sign in": "S'identifier",
|
||||
"Sign in": "Connexion",
|
||||
"Sign in to {{WEBUI_NAME}}": "Connectez-vous à {{WEBUI_NAME}}",
|
||||
"Sign Out": "Déconnexion",
|
||||
"Sign up": "Inscrivez-vous",
|
||||
@@ -684,7 +686,7 @@
|
||||
"Speech Playback Speed": "Vitesse de lecture de la parole",
|
||||
"Speech recognition error: {{error}}": "Erreur de reconnaissance vocale\u00a0: {{error}}",
|
||||
"Speech-to-Text Engine": "Moteur de reconnaissance vocale",
|
||||
"Stop": "",
|
||||
"Stop": "Stop",
|
||||
"Stop Sequence": "Séquence d'arrêt",
|
||||
"Stream Chat Response": "Streamer la réponse de la conversation",
|
||||
"STT Model": "Modèle de Speech-to-Text",
|
||||
@@ -692,28 +694,28 @@
|
||||
"Subtitle (e.g. about the Roman Empire)": "Sous-titres (par ex. sur l'Empire romain)",
|
||||
"Success": "Réussite",
|
||||
"Successfully updated.": "Mise à jour réussie.",
|
||||
"Suggested": "Sugéré",
|
||||
"Suggested": "Suggéré",
|
||||
"Support": "Supporter",
|
||||
"Support this plugin:": "Supporter ce module",
|
||||
"Sync directory": "Synchroniser le répertoire",
|
||||
"System": "Système",
|
||||
"System Instructions": "",
|
||||
"System Prompt": "Prompt du système",
|
||||
"Tags": "Étiquettes",
|
||||
"Tags Generation Prompt": "",
|
||||
"System Instructions": "Instructions système",
|
||||
"System Prompt": "Prompt système",
|
||||
"Tags": "Tags",
|
||||
"Tags Generation Prompt": "Prompt de génération de tags",
|
||||
"Tap to interrupt": "Appuyez pour interrompre",
|
||||
"Tavily API Key": "Clé API Tavily",
|
||||
"Tell us more:": "Dites-nous en plus à ce sujet : ",
|
||||
"Temperature": "Température",
|
||||
"Template": "Template",
|
||||
"Temporary Chat": "Chat éphémère",
|
||||
"Text Splitter": "",
|
||||
"Text Splitter": "Text Splitter",
|
||||
"Text-to-Speech Engine": "Moteur de Text-to-Speech",
|
||||
"Tfs Z": "Tfs Z",
|
||||
"Thanks for your feedback!": "Merci pour vos commentaires !",
|
||||
"The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Les développeurs de ce plugin sont des bénévoles passionnés issus de la communauté. Si vous trouvez ce plugin utile, merci de contribuer à son développement.",
|
||||
"The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "",
|
||||
"The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "",
|
||||
"The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Le classement d'évaluation est basé sur le système de notation Elo et est mis à jour en temps réel.",
|
||||
"The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "Le classement est actuellement en version bêta et nous pouvons ajuster les calculs de notation à mesure que nous peaufinons l'algorithme.",
|
||||
"The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "La taille maximale du fichier en Mo. Si la taille du fichier dépasse cette limite, le fichier ne sera pas téléchargé.",
|
||||
"The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "Le nombre maximal de fichiers pouvant être utilisés en même temps dans la conversation. Si le nombre de fichiers dépasse cette limite, les fichiers ne seront pas téléchargés.",
|
||||
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Le score doit être une valeur comprise entre 0,0 (0\u00a0%) et 1,0 (100\u00a0%).",
|
||||
@@ -723,18 +725,18 @@
|
||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Cela garantit que vos conversations précieuses soient sauvegardées en toute sécurité dans votre base de données backend. Merci !",
|
||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.",
|
||||
"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Cette option supprimera tous les fichiers existants dans la collection et les remplacera par les fichiers nouvellement téléchargés.",
|
||||
"This response was generated by \"{{model}}\"": "",
|
||||
"This response was generated by \"{{model}}\"": "Cette réponse a été générée par \"{{model}}\"",
|
||||
"This will delete": "Cela supprimera",
|
||||
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "",
|
||||
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Cela supprimera <strong>{{NAME}}</strong> et <strong>tout son contenu</strong>.",
|
||||
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Cela réinitialisera la base de connaissances et synchronisera tous les fichiers. Souhaitez-vous continuer ?",
|
||||
"Thorough explanation": "Explication approfondie",
|
||||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "URL du serveur Tika requise.",
|
||||
"Tiktoken": "",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Conseil\u00a0: mettez à jour plusieurs emplacements de variables consécutivement en appuyant sur la touche Tab dans l’entrée de chat après chaque remplacement.",
|
||||
"Title": "Titre",
|
||||
"Title (e.g. Tell me a fun fact)": "Titre (par ex. raconte-moi un fait amusant)",
|
||||
"Title Auto-Generation": "Génération automatique de titres",
|
||||
"Title Auto-Generation": "Génération automatique des titres",
|
||||
"Title cannot be an empty string.": "Le titre ne peut pas être une chaîne de caractères vide.",
|
||||
"Title Generation Prompt": "Prompt de génération de titre",
|
||||
"To access the available model names for downloading,": "Pour accéder aux noms des modèles disponibles,",
|
||||
@@ -742,18 +744,18 @@
|
||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pour accéder à l'interface Web, veuillez contacter l'administrateur. Les administrateurs peuvent gérer les statuts des utilisateurs depuis le panneau d'administration.",
|
||||
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Pour attacher une base de connaissances ici, ajoutez-les d'abord à l'espace de travail « Connaissances ».",
|
||||
"to chat input.": "Vers la zone de chat.",
|
||||
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
|
||||
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Pour protéger votre confidentialité, seules les notes, les identifiants de modèle, les tags et les métadonnées de vos commentaires sont partagés. Vos journaux de discussion restent privés et ne sont pas inclus.",
|
||||
"To select actions here, add them to the \"Functions\" workspace first.": "Pour sélectionner des actions ici, ajoutez-les d'abord à l'espace de travail « Fonctions ».",
|
||||
"To select filters here, add them to the \"Functions\" workspace first.": "Pour sélectionner des filtres ici, ajoutez-les d'abord à l'espace de travail « Fonctions ». ",
|
||||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Pour sélectionner des toolkits ici, ajoutez-les d'abord à l'espace de travail « Outils ». ",
|
||||
"Toast notifications for new updates": "",
|
||||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Pour sélectionner des outils ici, ajoutez-les d'abord à l'espace de travail « Outils ». ",
|
||||
"Toast notifications for new updates": "Notifications toast pour les nouvelles mises à jour",
|
||||
"Today": "Aujourd'hui",
|
||||
"Toggle settings": "Basculer les paramètres",
|
||||
"Toggle sidebar": "Basculer la barre latérale",
|
||||
"Token": "",
|
||||
"Tokens To Keep On Context Refresh (num_keep)": "Jeton à conserver lors du rafraîchissement du contexte (num_keep)",
|
||||
"Too verbose": "",
|
||||
"Tool": "",
|
||||
"Toggle settings": "Afficher/masquer les paramètres",
|
||||
"Toggle sidebar": "Afficher/masquer la barre latérale",
|
||||
"Token": "Token",
|
||||
"Tokens To Keep On Context Refresh (num_keep)": "Tokens à conserver lors du rafraîchissement du contexte (num_keep)",
|
||||
"Too verbose": "Trop détaillé",
|
||||
"Tool": "Outil",
|
||||
"Tool created successfully": "L'outil a été créé avec succès",
|
||||
"Tool deleted successfully": "Outil supprimé avec succès",
|
||||
"Tool imported successfully": "Outil importé avec succès",
|
||||
@@ -776,33 +778,33 @@
|
||||
"Uh-oh! There was an issue connecting to {{provider}}.": "Oh non ! Un problème est survenu lors de la connexion à {{provider}}.",
|
||||
"UI": "UI",
|
||||
"Unpin": "Désépingler",
|
||||
"Untagged": "",
|
||||
"Untagged": "Pas de tag",
|
||||
"Update": "Mise à jour",
|
||||
"Update and Copy Link": "Mettre à jour et copier le lien",
|
||||
"Update for the latest features and improvements.": "Mettez à jour pour bénéficier des dernières fonctionnalités et améliorations.",
|
||||
"Update password": "Mettre à jour le mot de passe",
|
||||
"Updated": "",
|
||||
"Updated": "Mis à jour",
|
||||
"Updated at": "Mise à jour le",
|
||||
"Updated At": "",
|
||||
"Upload": "Télécharger",
|
||||
"Updated At": "Mise à jour le",
|
||||
"Upload": "Téléverser",
|
||||
"Upload a GGUF model": "Téléverser un modèle GGUF",
|
||||
"Upload directory": "Répertoire de téléchargement",
|
||||
"Upload files": "Télécharger des fichiers",
|
||||
"Upload Files": "Télécharger des fichiers",
|
||||
"Upload directory": "Téléverser un dossier",
|
||||
"Upload files": "Téléverser des fichiers",
|
||||
"Upload Files": "Téléverser des fichiers",
|
||||
"Upload Pipeline": "Pipeline de téléchargement",
|
||||
"Upload Progress": "Progression de l'envoi",
|
||||
"URL Mode": "Mode d'URL",
|
||||
"Use '#' in the prompt input to load and include your knowledge.": "Utilisez '#' dans la zone de saisie du prompt pour charger et inclure vos connaissances.",
|
||||
"Use Gravatar": "Utilisez Gravatar",
|
||||
"Use Gravatar": "Utiliser Gravatar",
|
||||
"Use Initials": "Utiliser les initiales",
|
||||
"use_mlock (Ollama)": "Utiliser mlock (Ollama)",
|
||||
"use_mmap (Ollama)": "Utiliser mmap (Ollama)",
|
||||
"user": "utilisateur",
|
||||
"User": "",
|
||||
"User": "Utilisateur",
|
||||
"User location successfully retrieved.": "L'emplacement de l'utilisateur a été récupéré avec succès.",
|
||||
"User Permissions": "Permissions utilisateur",
|
||||
"Users": "Utilisateurs",
|
||||
"Using the default arena model with all models. Click the plus button to add custom models.": "",
|
||||
"Using the default arena model with all models. Click the plus button to add custom models.": "Utilisation du modèle d'arène par défaut avec tous les modèles. Cliquez sur le bouton plus pour ajouter des modèles personnalisés.",
|
||||
"Utilize": "Utilisez",
|
||||
"Valid time units:": "Unités de temps valides\u00a0:",
|
||||
"Valves": "Vannes",
|
||||
@@ -813,8 +815,8 @@
|
||||
"Version": "version:",
|
||||
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} de {{totalVersions}}",
|
||||
"Voice": "Voix",
|
||||
"Voice Input": "",
|
||||
"Warning": "Avertissement !",
|
||||
"Voice Input": "Saisie vocale",
|
||||
"Warning": "Avertissement",
|
||||
"Warning:": "Avertissement :",
|
||||
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Avertissement : Si vous mettez à jour ou modifiez votre modèle d'embedding, vous devrez réimporter tous les documents.",
|
||||
"Web": "Web",
|
||||
@@ -825,20 +827,20 @@
|
||||
"Webhook URL": "URL du webhook",
|
||||
"WebUI Settings": "Paramètres de WebUI",
|
||||
"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 dans",
|
||||
"Whisper (Local)": "Whisper (local)",
|
||||
"Widescreen Mode": "Mode grand écran",
|
||||
"Won": "",
|
||||
"Won": "Gagné",
|
||||
"Workspace": "Espace de travail",
|
||||
"Write a prompt suggestion (e.g. Who are you?)": "Écrivez une suggestion de prompt (par exemple : Qui êtes-vous ?)",
|
||||
"Write a summary in 50 words that summarizes [topic or keyword].": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].",
|
||||
"Write something...": "",
|
||||
"Write something...": "Écrivez quelque chose...",
|
||||
"Yesterday": "Hier",
|
||||
"You": "Vous",
|
||||
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Vous ne pouvez discuter qu'avec un maximum de {{maxCount}} fichier(s) à la fois.",
|
||||
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Vous pouvez personnaliser vos interactions avec les LLM en ajoutant des mémoires à l'aide du bouton « Gérer » ci-dessous, ce qui les rendra plus utiles et mieux adaptées à vos besoins.",
|
||||
"You cannot clone a base model": "Vous ne pouvez pas cloner un modèle de base",
|
||||
"You cannot upload an empty file.": "",
|
||||
"You cannot upload an empty file.": "Vous ne pouvez pas envoyer un fichier vide.",
|
||||
"You have no archived conversations.": "Vous n'avez aucune conversation archivée.",
|
||||
"You have shared this chat": "Vous avez partagé cette conversation.",
|
||||
"You're a helpful assistant.": "Vous êtes un assistant efficace.",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "לא נכון מבחינה עובדתית",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "הערה: אם תקבע ציון מינימלי, החיפוש יחזיר רק מסמכים עם ציון שגבוה או שווה לציון המינימלי.",
|
||||
"Notes": "",
|
||||
"Notifications": "התראות",
|
||||
"November": "נובמבר",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "תפקיד",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "तथ्यात्मक रूप से सही नहीं है",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ध्यान दें: यदि आप न्यूनतम स्कोर निर्धारित करते हैं, तो खोज केवल न्यूनतम स्कोर से अधिक या उसके बराबर स्कोर वाले दस्तावेज़ वापस लाएगी।",
|
||||
"Notes": "",
|
||||
"Notifications": "सूचनाएं",
|
||||
"November": "नवंबर",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "भूमिका",
|
||||
"Rosé Pine": "रोसे पिन",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Nije činjenično točno",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Napomena: Ako postavite minimalnu ocjenu, pretraga će vratiti samo dokumente s ocjenom većom ili jednakom minimalnoj ocjeni.",
|
||||
"Notes": "",
|
||||
"Notifications": "Obavijesti",
|
||||
"November": "Studeni",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Uloga",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -0,0 +1,851 @@
|
||||
{
|
||||
"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' vagy '-1' ha nincs lejárat.",
|
||||
"(e.g. `sh webui.sh --api --api-auth username_password`)": "(pl. `sh webui.sh --api --api-auth username_password`)",
|
||||
"(e.g. `sh webui.sh --api`)": "(pl. `sh webui.sh --api`)",
|
||||
"(latest)": "(legújabb)",
|
||||
"{{ models }}": "{{ modellek }}",
|
||||
"{{ owner }}: You cannot delete a base model": "{{ owner }}: Nem törölhetsz alap modellt",
|
||||
"{{user}}'s Chats": "{{user}} beszélgetései",
|
||||
"{{webUIName}} Backend Required": "{{webUIName}} Backend szükséges",
|
||||
"*Prompt node ID(s) are required for image generation": "*Prompt node ID(k) szükségesek a képgeneráláshoz",
|
||||
"A new version (v{{LATEST_VERSION}}) is now available.": "Új verzió (v{{LATEST_VERSION}}) érhető el.",
|
||||
"A task model is used when performing tasks such as generating titles for chats and web search queries": "A feladat modell olyan feladatokhoz használatos, mint a beszélgetések címeinek generálása és webes keresési lekérdezések",
|
||||
"a user": "egy felhasználó",
|
||||
"About": "Névjegy",
|
||||
"Account": "Fiók",
|
||||
"Account Activation Pending": "Fiók aktiválása folyamatban",
|
||||
"Accurate information": "Pontos információ",
|
||||
"Actions": "Műveletek",
|
||||
"Active Users": "Aktív felhasználók",
|
||||
"Add": "Hozzáadás",
|
||||
"Add a model id": "Modell ID hozzáadása",
|
||||
"Add a short description about what this model does": "Adj hozzá egy rövid leírást arról, hogy mit csinál ez a modell",
|
||||
"Add a short title for this prompt": "Adj hozzá egy rövid címet ehhez a prompthoz",
|
||||
"Add a tag": "Címke hozzáadása",
|
||||
"Add Arena Model": "Arena modell hozzáadása",
|
||||
"Add Content": "Tartalom hozzáadása",
|
||||
"Add content here": "Tartalom hozzáadása ide",
|
||||
"Add custom prompt": "Egyéni prompt hozzáadása",
|
||||
"Add Files": "Fájlok hozzáadása",
|
||||
"Add Memory": "Memória hozzáadása",
|
||||
"Add Model": "Modell hozzáadása",
|
||||
"Add Tag": "Címke hozzáadása",
|
||||
"Add Tags": "Címkék hozzáadása",
|
||||
"Add text content": "Szöveges tartalom hozzáadása",
|
||||
"Add User": "Felhasználó hozzáadása",
|
||||
"Adjusting these settings will apply changes universally to all users.": "Ezen beállítások módosítása minden felhasználóra érvényes lesz.",
|
||||
"admin": "admin",
|
||||
"Admin": "Admin",
|
||||
"Admin Panel": "Admin Panel",
|
||||
"Admin Settings": "Admin beállítások",
|
||||
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Az adminok mindig hozzáférnek minden eszközhöz; a felhasználóknak modellenként kell eszközöket hozzárendelni a munkaterületen.",
|
||||
"Advanced Parameters": "Haladó paraméterek",
|
||||
"Advanced Params": "Haladó paraméterek",
|
||||
"All chats": "Minden beszélgetés",
|
||||
"All Documents": "Minden dokumentum",
|
||||
"Allow Chat Deletion": "Beszélgetések törlésének engedélyezése",
|
||||
"Allow Chat Editing": "Beszélgetések szerkesztésének engedélyezése",
|
||||
"Allow non-local voices": "Nem helyi hangok engedélyezése",
|
||||
"Allow Temporary Chat": "Ideiglenes beszélgetés engedélyezése",
|
||||
"Allow User Location": "Felhasználói helyzet engedélyezése",
|
||||
"Allow Voice Interruption in Call": "Hang megszakítás engedélyezése hívás közben",
|
||||
"alphanumeric characters and hyphens": "alfanumerikus karakterek és kötőjelek",
|
||||
"Already have an account?": "Már van fiókod?",
|
||||
"an assistant": "egy asszisztens",
|
||||
"and": "és",
|
||||
"and {{COUNT}} more": "és még {{COUNT}} db",
|
||||
"and create a new shared link.": "és hozz létre egy új megosztott linket.",
|
||||
"API Base URL": "API alap URL",
|
||||
"API Key": "API kulcs",
|
||||
"API Key created.": "API kulcs létrehozva.",
|
||||
"API keys": "API kulcsok",
|
||||
"April": "Április",
|
||||
"Archive": "Archiválás",
|
||||
"Archive All Chats": "Minden beszélgetés archiválása",
|
||||
"Archived Chats": "Archivált beszélgetések",
|
||||
"are allowed - Activate this command by typing": "engedélyezettek - Aktiváld ezt a parancsot a következő beírásával",
|
||||
"Are you sure?": "Biztos vagy benne?",
|
||||
"Arena Models": "Arena modellek",
|
||||
"Artifacts": "Műtermékek",
|
||||
"Ask a question": "Kérdezz valamit",
|
||||
"Assistant": "Asszisztens",
|
||||
"Attach file": "Fájl csatolása",
|
||||
"Attention to detail": "Részletekre való odafigyelés",
|
||||
"Audio": "Hang",
|
||||
"August": "Augusztus",
|
||||
"Auto-playback response": "Automatikus válasz lejátszás",
|
||||
"Automatic1111": "Automatic1111",
|
||||
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api hitelesítési karakterlánc",
|
||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 alap URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 alap URL szükséges.",
|
||||
"Available list": "Elérhető lista",
|
||||
"available!": "elérhető!",
|
||||
"Azure AI Speech": "Azure AI beszéd",
|
||||
"Azure Region": "Azure régió",
|
||||
"Back": "Vissza",
|
||||
"Bad Response": "Rossz válasz",
|
||||
"Banners": "Bannerek",
|
||||
"Base Model (From)": "Alap modell (Forrás)",
|
||||
"Batch Size (num_batch)": "Köteg méret (num_batch)",
|
||||
"before": "előtt",
|
||||
"Being lazy": "Lustaság",
|
||||
"Brave Search API Key": "Brave Search API kulcs",
|
||||
"Bypass SSL verification for Websites": "SSL ellenőrzés kihagyása weboldalakhoz",
|
||||
"Call": "Hívás",
|
||||
"Call feature is not supported when using Web STT engine": "A hívás funkció nem támogatott Web STT motor használatakor",
|
||||
"Camera": "Kamera",
|
||||
"Cancel": "Mégse",
|
||||
"Capabilities": "Képességek",
|
||||
"Change Password": "Jelszó módosítása",
|
||||
"Character": "Karakter",
|
||||
"Chat": "Beszélgetés",
|
||||
"Chat Background Image": "Beszélgetés háttérkép",
|
||||
"Chat Bubble UI": "Beszélgetés buborék felület",
|
||||
"Chat Controls": "Beszélgetés vezérlők",
|
||||
"Chat direction": "Beszélgetés iránya",
|
||||
"Chat Overview": "Beszélgetés áttekintés",
|
||||
"Chat Tags Auto-Generation": "Beszélgetés címkék automatikus generálása",
|
||||
"Chats": "Beszélgetések",
|
||||
"Check Again": "Ellenőrzés újra",
|
||||
"Check for updates": "Frissítések keresése",
|
||||
"Checking for updates...": "Frissítések keresése...",
|
||||
"Choose a model before saving...": "Válassz modellt mentés előtt...",
|
||||
"Chunk Overlap": "Darab átfedés",
|
||||
"Chunk Params": "Darab paraméterek",
|
||||
"Chunk Size": "Darab méret",
|
||||
"Citation": "Idézet",
|
||||
"Clear memory": "Memória törlése",
|
||||
"Click here for help.": "Kattints ide segítségért.",
|
||||
"Click here to": "Kattints ide",
|
||||
"Click here to download user import template file.": "Kattints ide a felhasználó importálási sablon letöltéséhez.",
|
||||
"Click here to learn more about faster-whisper and see the available models.": "Kattints ide, hogy többet tudj meg a faster-whisperről és lásd az elérhető modelleket.",
|
||||
"Click here to select": "Kattints ide a kiválasztáshoz",
|
||||
"Click here to select a csv file.": "Kattints ide egy CSV fájl kiválasztásához.",
|
||||
"Click here to select a py file.": "Kattints ide egy py fájl kiválasztásához.",
|
||||
"Click here to upload a workflow.json file.": "Kattints ide egy workflow.json fájl feltöltéséhez.",
|
||||
"click here.": "kattints ide.",
|
||||
"Click on the user role button to change a user's role.": "Kattints a felhasználói szerep gombra a felhasználó szerepének módosításához.",
|
||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Vágólap írási engedély megtagadva. Kérjük, ellenőrizd a böngésző beállításait a szükséges hozzáférés megadásához.",
|
||||
"Clone": "Klónozás",
|
||||
"Close": "Bezárás",
|
||||
"Code execution": "Kód végrehajtás",
|
||||
"Code formatted successfully": "Kód sikeresen formázva",
|
||||
"Collection": "Gyűjtemény",
|
||||
"ComfyUI": "ComfyUI",
|
||||
"ComfyUI Base URL": "ComfyUI alap URL",
|
||||
"ComfyUI Base URL is required.": "ComfyUI alap URL szükséges.",
|
||||
"ComfyUI Workflow": "ComfyUI munkafolyamat",
|
||||
"ComfyUI Workflow Nodes": "ComfyUI munkafolyamat csomópontok",
|
||||
"Command": "Parancs",
|
||||
"Completions": "Kiegészítések",
|
||||
"Concurrent Requests": "Párhuzamos kérések",
|
||||
"Confirm": "Megerősítés",
|
||||
"Confirm Password": "Jelszó megerősítése",
|
||||
"Confirm your action": "Erősítsd meg a műveletet",
|
||||
"Connections": "Kapcsolatok",
|
||||
"Contact Admin for WebUI Access": "Lépj kapcsolatba az adminnal a WebUI hozzáférésért",
|
||||
"Content": "Tartalom",
|
||||
"Content Extraction": "Tartalom kinyerés",
|
||||
"Context Length": "Kontextus hossz",
|
||||
"Continue Response": "Válasz folytatása",
|
||||
"Continue with {{provider}}": "Folytatás {{provider}} szolgáltatóval",
|
||||
"Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "Szabályozd, hogyan legyen felosztva az üzenet szövege a TTS kérésekhez. A 'Központozás' mondatokra bontja, a 'Bekezdések' bekezdésekre bontja, a 'Nincs' pedig egyetlen szövegként kezeli az üzenetet.",
|
||||
"Controls": "Vezérlők",
|
||||
"Copied": "Másolva",
|
||||
"Copied shared chat URL to clipboard!": "Megosztott beszélgetés URL másolva a vágólapra!",
|
||||
"Copied to clipboard": "Vágólapra másolva",
|
||||
"Copy": "Másolás",
|
||||
"Copy last code block": "Utolsó kódblokk másolása",
|
||||
"Copy last response": "Utolsó válasz másolása",
|
||||
"Copy Link": "Link másolása",
|
||||
"Copy to clipboard": "Másolás a vágólapra",
|
||||
"Copying to clipboard was successful!": "Sikeres másolás a vágólapra!",
|
||||
"Create a model": "Modell létrehozása",
|
||||
"Create Account": "Fiók létrehozása",
|
||||
"Create Knowledge": "Tudás létrehozása",
|
||||
"Create new key": "Új kulcs létrehozása",
|
||||
"Create new secret key": "Új titkos kulcs létrehozása",
|
||||
"Created at": "Létrehozva",
|
||||
"Created At": "Létrehozva",
|
||||
"Created by": "Létrehozta",
|
||||
"CSV Import": "CSV importálás",
|
||||
"Current Model": "Jelenlegi modell",
|
||||
"Current Password": "Jelenlegi jelszó",
|
||||
"Custom": "Egyéni",
|
||||
"Customize models for a specific purpose": "Modellek testreszabása specifikus célra",
|
||||
"Dark": "Sötét",
|
||||
"Dashboard": "Irányítópult",
|
||||
"Database": "Adatbázis",
|
||||
"December": "December",
|
||||
"Default": "Alapértelmezett",
|
||||
"Default (Open AI)": "Alapértelmezett (Open AI)",
|
||||
"Default (SentenceTransformers)": "Alapértelmezett (SentenceTransformers)",
|
||||
"Default Model": "Alapértelmezett modell",
|
||||
"Default model updated": "Alapértelmezett modell frissítve",
|
||||
"Default Prompt Suggestions": "Alapértelmezett prompt javaslatok",
|
||||
"Default User Role": "Alapértelmezett felhasználói szerep",
|
||||
"Delete": "Törlés",
|
||||
"Delete a model": "Modell törlése",
|
||||
"Delete All Chats": "Minden beszélgetés törlése",
|
||||
"Delete chat": "Beszélgetés törlése",
|
||||
"Delete Chat": "Beszélgetés törlése",
|
||||
"Delete chat?": "Törli a beszélgetést?",
|
||||
"Delete folder?": "Törli a mappát?",
|
||||
"Delete function?": "Törli a funkciót?",
|
||||
"Delete prompt?": "Törli a promptot?",
|
||||
"delete this link": "link törlése",
|
||||
"Delete tool?": "Törli az eszközt?",
|
||||
"Delete User": "Felhasználó törlése",
|
||||
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} törölve",
|
||||
"Deleted {{name}}": "{{name}} törölve",
|
||||
"Description": "Leírás",
|
||||
"Didn't fully follow instructions": "Nem követte teljesen az utasításokat",
|
||||
"Disabled": "Letiltva",
|
||||
"Discover a function": "Funkció felfedezése",
|
||||
"Discover a model": "Modell felfedezése",
|
||||
"Discover a prompt": "Prompt felfedezése",
|
||||
"Discover a tool": "Eszköz felfedezése",
|
||||
"Discover, download, and explore custom functions": "Fedezz fel, tölts le és fedezz fel egyéni funkciókat",
|
||||
"Discover, download, and explore custom prompts": "Fedezz fel, tölts le és fedezz fel egyéni promptokat",
|
||||
"Discover, download, and explore custom tools": "Fedezz fel, tölts le és fedezz fel egyéni eszközöket",
|
||||
"Discover, download, and explore model presets": "Fedezz fel, tölts le és fedezz fel modell beállításokat",
|
||||
"Dismissible": "Elutasítható",
|
||||
"Display Emoji in Call": "Emoji megjelenítése hívásban",
|
||||
"Display the username instead of You in the Chat": "Felhasználónév megjelenítése a 'Te' helyett a beszélgetésben",
|
||||
"Do not install functions from sources you do not fully trust.": "Ne telepíts funkciókat olyan forrásokból, amelyekben nem bízol teljesen.",
|
||||
"Do not install tools from sources you do not fully trust.": "Ne telepíts eszközöket olyan forrásokból, amelyekben nem bízol teljesen.",
|
||||
"Document": "Dokumentum",
|
||||
"Documentation": "Dokumentáció",
|
||||
"Documents": "Dokumentumok",
|
||||
"does not make any external connections, and your data stays securely on your locally hosted server.": "nem létesít külső kapcsolatokat, és az adataid biztonságban maradnak a helyileg hosztolt szervereden.",
|
||||
"Don't have an account?": "Nincs még fiókod?",
|
||||
"don't install random functions from sources you don't trust.": "ne telepíts véletlenszerű funkciókat olyan forrásokból, amelyekben nem bízol.",
|
||||
"don't install random tools from sources you don't trust.": "ne telepíts véletlenszerű eszközöket olyan forrásokból, amelyekben nem bízol.",
|
||||
"Don't like the style": "Nem tetszik a stílus",
|
||||
"Done": "Kész",
|
||||
"Download": "Letöltés",
|
||||
"Download canceled": "Letöltés megszakítva",
|
||||
"Download Database": "Adatbázis letöltése",
|
||||
"Draw": "Rajzolás",
|
||||
"Drop any files here to add to the conversation": "Húzz ide fájlokat a beszélgetéshez való hozzáadáshoz",
|
||||
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "pl. '30s','10m'. Érvényes időegységek: 's', 'm', 'h'.",
|
||||
"Edit": "Szerkesztés",
|
||||
"Edit Arena Model": "Arena modell szerkesztése",
|
||||
"Edit Memory": "Memória szerkesztése",
|
||||
"Edit User": "Felhasználó szerkesztése",
|
||||
"ElevenLabs": "ElevenLabs",
|
||||
"Email": "Email",
|
||||
"Embedding Batch Size": "Beágyazási köteg méret",
|
||||
"Embedding Model": "Beágyazási modell",
|
||||
"Embedding Model Engine": "Beágyazási modell motor",
|
||||
"Embedding model set to \"{{embedding_model}}\"": "Beágyazási modell beállítva: \"{{embedding_model}}\"",
|
||||
"Enable Community Sharing": "Közösségi megosztás engedélyezése",
|
||||
"Enable Message Rating": "Üzenet értékelés engedélyezése",
|
||||
"Enable New Sign Ups": "Új regisztrációk engedélyezése",
|
||||
"Enable Web Search": "Webes keresés engedélyezése",
|
||||
"Enable Web Search Query Generation": "Webes keresési lekérdezés generálás engedélyezése",
|
||||
"Enabled": "Engedélyezve",
|
||||
"Engine": "Motor",
|
||||
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Győződj meg róla, hogy a CSV fájl tartalmazza ezt a 4 oszlopot ebben a sorrendben: Név, Email, Jelszó, Szerep.",
|
||||
"Enter {{role}} message here": "Írd ide a {{role}} üzenetet",
|
||||
"Enter a detail about yourself for your LLMs to recall": "Adj meg egy részletet magadról, amit az LLM-ek megjegyezhetnek",
|
||||
"Enter api auth string (e.g. username:password)": "Add meg az API hitelesítési karakterláncot (pl. felhasználónév:jelszó)",
|
||||
"Enter Brave Search API Key": "Add meg a Brave Search API kulcsot",
|
||||
"Enter CFG Scale (e.g. 7.0)": "Add meg a CFG skálát (pl. 7.0)",
|
||||
"Enter Chunk Overlap": "Add meg a darab átfedést",
|
||||
"Enter Chunk Size": "Add meg a darab méretet",
|
||||
"Enter description": "Add meg a leírást",
|
||||
"Enter Github Raw URL": "Add meg a Github Raw URL-t",
|
||||
"Enter Google PSE API Key": "Add meg a Google PSE API kulcsot",
|
||||
"Enter Google PSE Engine Id": "Add meg a Google PSE motor azonosítót",
|
||||
"Enter Image Size (e.g. 512x512)": "Add meg a kép méretet (pl. 512x512)",
|
||||
"Enter language codes": "Add meg a nyelvi kódokat",
|
||||
"Enter Model ID": "Add meg a modell azonosítót",
|
||||
"Enter model tag (e.g. {{modelTag}})": "Add meg a modell címkét (pl. {{modelTag}})",
|
||||
"Enter Number of Steps (e.g. 50)": "Add meg a lépések számát (pl. 50)",
|
||||
"Enter Sampler (e.g. Euler a)": "Add meg a mintavételezőt (pl. Euler a)",
|
||||
"Enter Scheduler (e.g. Karras)": "Add meg az ütemezőt (pl. Karras)",
|
||||
"Enter Score": "Add meg a pontszámot",
|
||||
"Enter SearchApi API Key": "Add meg a SearchApi API kulcsot",
|
||||
"Enter SearchApi Engine": "Add meg a SearchApi motort",
|
||||
"Enter Searxng Query URL": "Add meg a Searxng lekérdezési URL-t",
|
||||
"Enter Serper API Key": "Add meg a Serper API kulcsot",
|
||||
"Enter Serply API Key": "Add meg a Serply API kulcsot",
|
||||
"Enter Serpstack API Key": "Add meg a Serpstack API kulcsot",
|
||||
"Enter stop sequence": "Add meg a leállítási szekvenciát",
|
||||
"Enter system prompt": "Add meg a rendszer promptot",
|
||||
"Enter Tavily API Key": "Add meg a Tavily API kulcsot",
|
||||
"Enter Tika Server URL": "Add meg a Tika szerver URL-t",
|
||||
"Enter Top K": "Add meg a Top K értéket",
|
||||
"Enter URL (e.g. http://127.0.0.1:7860/)": "Add meg az URL-t (pl. http://127.0.0.1:7860/)",
|
||||
"Enter URL (e.g. http://localhost:11434)": "Add meg az URL-t (pl. http://localhost:11434)",
|
||||
"Enter Your Email": "Add meg az email címed",
|
||||
"Enter Your Full Name": "Add meg a teljes neved",
|
||||
"Enter your message": "Írd be az üzeneted",
|
||||
"Enter Your Password": "Add meg a jelszavad",
|
||||
"Enter Your Role": "Add meg a szereped",
|
||||
"Error": "Hiba",
|
||||
"ERROR": "HIBA",
|
||||
"Evaluations": "Értékelések",
|
||||
"Exclude": "Kizárás",
|
||||
"Experimental": "Kísérleti",
|
||||
"Export": "Exportálás",
|
||||
"Export All Chats (All Users)": "Minden beszélgetés exportálása (minden felhasználó)",
|
||||
"Export chat (.json)": "Beszélgetés exportálása (.json)",
|
||||
"Export Chats": "Beszélgetések exportálása",
|
||||
"Export Config to JSON File": "Konfiguráció exportálása JSON fájlba",
|
||||
"Export Functions": "Funkciók exportálása",
|
||||
"Export LiteLLM config.yaml": "LiteLLM config.yaml exportálása",
|
||||
"Export Models": "Modellek exportálása",
|
||||
"Export Prompts": "Promptok exportálása",
|
||||
"Export Tools": "Eszközök exportálása",
|
||||
"External Models": "Külső modellek",
|
||||
"Failed to add file.": "Nem sikerült hozzáadni a fájlt.",
|
||||
"Failed to create API Key.": "Nem sikerült létrehozni az API kulcsot.",
|
||||
"Failed to read clipboard contents": "Nem sikerült olvasni a vágólap tartalmát",
|
||||
"Failed to update settings": "Nem sikerült frissíteni a beállításokat",
|
||||
"Failed to upload file.": "Nem sikerült feltölteni a fájlt.",
|
||||
"February": "Február",
|
||||
"Feedback History": "Visszajelzés előzmények",
|
||||
"Feel free to add specific details": "Nyugodtan adj hozzá specifikus részleteket",
|
||||
"File": "Fájl",
|
||||
"File added successfully.": "Fájl sikeresen hozzáadva.",
|
||||
"File content updated successfully.": "Fájl tartalom sikeresen frissítve.",
|
||||
"File Mode": "Fájl mód",
|
||||
"File not found.": "Fájl nem található.",
|
||||
"File removed successfully.": "Fájl sikeresen eltávolítva.",
|
||||
"File size should not exceed {{maxSize}} MB.": "A fájl mérete nem haladhatja meg a {{maxSize}} MB-ot.",
|
||||
"Files": "Fájlok",
|
||||
"Filter is now globally disabled": "A szűrő globálisan letiltva",
|
||||
"Filter is now globally enabled": "A szűrő globálisan engedélyezve",
|
||||
"Filters": "Szűrők",
|
||||
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Ujjlenyomat hamisítás észlelve: Nem lehet a kezdőbetűket avatárként használni. Alapértelmezett profilkép használata.",
|
||||
"Fluidly stream large external response chunks": "Nagy külső válasz darabok folyamatos streamelése",
|
||||
"Focus chat input": "Chat bevitel fókuszálása",
|
||||
"Folder deleted successfully": "Mappa sikeresen törölve",
|
||||
"Folder name cannot be empty": "A mappa neve nem lehet üres",
|
||||
"Folder name cannot be empty.": "A mappa neve nem lehet üres.",
|
||||
"Folder name updated successfully": "Mappa neve sikeresen frissítve",
|
||||
"Followed instructions perfectly": "Tökéletesen követte az utasításokat",
|
||||
"Form": "Űrlap",
|
||||
"Format your variables using brackets like this:": "Formázd a változóidat zárójelekkel így:",
|
||||
"Frequency Penalty": "Gyakorisági büntetés",
|
||||
"Function": "Funkció",
|
||||
"Function created successfully": "Funkció sikeresen létrehozva",
|
||||
"Function deleted successfully": "Funkció sikeresen törölve",
|
||||
"Function Description (e.g. A filter to remove profanity from text)": "Funkció leírása (pl. Egy szűrő a trágár szavak eltávolításához a szövegből)",
|
||||
"Function ID (e.g. my_filter)": "Funkció azonosító (pl. my_filter)",
|
||||
"Function is now globally disabled": "A funkció globálisan letiltva",
|
||||
"Function is now globally enabled": "A funkció globálisan engedélyezve",
|
||||
"Function Name (e.g. My Filter)": "Funkció neve (pl. Saját szűrő)",
|
||||
"Function updated successfully": "Funkció sikeresen frissítve",
|
||||
"Functions": "Funkciók",
|
||||
"Functions allow arbitrary code execution": "A funkciók tetszőleges kód végrehajtását teszik lehetővé",
|
||||
"Functions allow arbitrary code execution.": "A funkciók tetszőleges kód végrehajtását teszik lehetővé.",
|
||||
"Functions imported successfully": "Funkciók sikeresen importálva",
|
||||
"General": "Általános",
|
||||
"General Settings": "Általános beállítások",
|
||||
"Generate Image": "Kép generálása",
|
||||
"Generating search query": "Keresési lekérdezés generálása",
|
||||
"Generation Info": "Generálási információ",
|
||||
"Get up and running with": "Kezdj el dolgozni a következővel:",
|
||||
"Global": "Globális",
|
||||
"Good Response": "Jó válasz",
|
||||
"Google PSE API Key": "Google PSE API kulcs",
|
||||
"Google PSE Engine Id": "Google PSE motor azonosító",
|
||||
"h:mm a": "h:mm a",
|
||||
"Haptic Feedback": "Tapintási visszajelzés",
|
||||
"has no conversations.": "nincsenek beszélgetései.",
|
||||
"Hello, {{name}}": "Helló, {{name}}",
|
||||
"Help": "Segítség",
|
||||
"Help us create the best community leaderboard by sharing your feedback history!": "Segíts nekünk a legjobb közösségi ranglista létrehozásában a visszajelzési előzményeid megosztásával!",
|
||||
"Hide": "Elrejtés",
|
||||
"Hide Model": "Modell elrejtése",
|
||||
"How can I help you today?": "Hogyan segíthetek ma?",
|
||||
"Hybrid Search": "Hibrid keresés",
|
||||
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Elismerem, hogy elolvastam és megértem a cselekedetem következményeit. Tisztában vagyok a tetszőleges kód végrehajtásával járó kockázatokkal, és ellenőriztem a forrás megbízhatóságát.",
|
||||
"ID": "Azonosító",
|
||||
"Image Generation (Experimental)": "Képgenerálás (kísérleti)",
|
||||
"Image Generation Engine": "Képgenerálási motor",
|
||||
"Image Settings": "Kép beállítások",
|
||||
"Images": "Képek",
|
||||
"Import Chats": "Beszélgetések importálása",
|
||||
"Import Config from JSON File": "Konfiguráció importálása JSON fájlból",
|
||||
"Import Functions": "Funkciók importálása",
|
||||
"Import Models": "Modellek importálása",
|
||||
"Import Prompts": "Promptok importálása",
|
||||
"Import Tools": "Eszközök importálása",
|
||||
"Include": "Tartalmaz",
|
||||
"Include `--api-auth` flag when running stable-diffusion-webui": "Add hozzá a `--api-auth` kapcsolót a stable-diffusion-webui futtatásakor",
|
||||
"Include `--api` flag when running stable-diffusion-webui": "Add hozzá a `--api` kapcsolót a stable-diffusion-webui futtatásakor",
|
||||
"Info": "Információ",
|
||||
"Input commands": "Beviteli parancsok",
|
||||
"Install from Github URL": "Telepítés Github URL-ről",
|
||||
"Instant Auto-Send After Voice Transcription": "Azonnali automatikus küldés hangfelismerés után",
|
||||
"Interface": "Felület",
|
||||
"Invalid file format.": "Érvénytelen fájlformátum.",
|
||||
"Invalid Tag": "Érvénytelen címke",
|
||||
"January": "Január",
|
||||
"join our Discord for help.": "Csatlakozz a Discord szerverünkhöz segítségért.",
|
||||
"JSON": "JSON",
|
||||
"JSON Preview": "JSON előnézet",
|
||||
"July": "Július",
|
||||
"June": "Június",
|
||||
"JWT Expiration": "JWT lejárat",
|
||||
"JWT Token": "JWT token",
|
||||
"Keep Alive": "Kapcsolat fenntartása",
|
||||
"Keyboard shortcuts": "Billentyűparancsok",
|
||||
"Knowledge": "Tudásbázis",
|
||||
"Knowledge created successfully.": "Tudásbázis sikeresen létrehozva.",
|
||||
"Knowledge deleted successfully.": "Tudásbázis sikeresen törölve.",
|
||||
"Knowledge reset successfully.": "Tudásbázis sikeresen visszaállítva.",
|
||||
"Knowledge updated successfully": "Tudásbázis sikeresen frissítve",
|
||||
"Landing Page Mode": "Kezdőlap mód",
|
||||
"Language": "Nyelv",
|
||||
"large language models, locally.": "nagy nyelvi modellek, helyileg.",
|
||||
"Last Active": "Utoljára aktív",
|
||||
"Last Modified": "Utoljára módosítva",
|
||||
"Leaderboard": "Ranglista",
|
||||
"Leave empty for unlimited": "Hagyja üresen a korlátlan használathoz",
|
||||
"Leave empty to include all models or select specific models": "Hagyja üresen az összes modell használatához, vagy válasszon ki konkrét modelleket",
|
||||
"Leave empty to use the default prompt, or enter a custom prompt": "Hagyja üresen az alapértelmezett prompt használatához, vagy adjon meg egyéni promptot",
|
||||
"Light": "Világos",
|
||||
"Listening...": "Hallgatás...",
|
||||
"LLMs can make mistakes. Verify important information.": "Az LLM-ek hibázhatnak. Ellenőrizze a fontos információkat.",
|
||||
"Local Models": "Helyi modellek",
|
||||
"Lost": "Elveszett",
|
||||
"LTR": "LTR",
|
||||
"Made by OpenWebUI Community": "Az OpenWebUI közösség által készítve",
|
||||
"Make sure to enclose them with": "Győződjön meg róla, hogy körülveszi őket",
|
||||
"Make sure to export a workflow.json file as API format from ComfyUI.": "Győződjön meg róla, hogy exportál egy workflow.json fájlt API formátumban a ComfyUI-ból.",
|
||||
"Manage": "Kezelés",
|
||||
"Manage Arena Models": "Arena modellek kezelése",
|
||||
"Manage Models": "Modellek kezelése",
|
||||
"Manage Ollama Models": "Ollama modellek kezelése",
|
||||
"Manage Pipelines": "Folyamatok kezelése",
|
||||
"March": "Március",
|
||||
"Max Tokens (num_predict)": "Maximum tokenek (num_predict)",
|
||||
"Max Upload Count": "Maximum feltöltések száma",
|
||||
"Max Upload Size": "Maximum feltöltési méret",
|
||||
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum 3 modell tölthető le egyszerre. Kérjük, próbálja újra később.",
|
||||
"May": "Május",
|
||||
"Memories accessible by LLMs will be shown here.": "Az LLM-ek által elérhető emlékek itt jelennek meg.",
|
||||
"Memory": "Memória",
|
||||
"Memory added successfully": "Memória sikeresen hozzáadva",
|
||||
"Memory cleared successfully": "Memória sikeresen törölve",
|
||||
"Memory deleted successfully": "Memória sikeresen törölve",
|
||||
"Memory updated successfully": "Memória sikeresen frissítve",
|
||||
"Merge Responses": "Válaszok egyesítése",
|
||||
"Message rating should be enabled to use this feature": "Az üzenetértékelésnek engedélyezve kell lennie ehhez a funkcióhoz",
|
||||
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "A link létrehozása után küldött üzenetei nem lesznek megosztva. A URL-lel rendelkező felhasználók megtekinthetik a megosztott beszélgetést.",
|
||||
"Min P": "Min P",
|
||||
"Minimum Score": "Minimum pontszám",
|
||||
"Mirostat": "Mirostat",
|
||||
"Mirostat Eta": "Mirostat Eta",
|
||||
"Mirostat Tau": "Mirostat Tau",
|
||||
"MMMM DD, YYYY": "YYYY. MMMM DD.",
|
||||
"MMMM DD, YYYY HH:mm": "YYYY. MMMM DD. HH:mm",
|
||||
"MMMM DD, YYYY hh:mm:ss A": "YYYY. MMMM DD. hh:mm:ss A",
|
||||
"Model": "Modell",
|
||||
"Model '{{modelName}}' has been successfully downloaded.": "A '{{modelName}}' modell sikeresen letöltve.",
|
||||
"Model '{{modelTag}}' is already in queue for downloading.": "A '{{modelTag}}' modell már a letöltési sorban van.",
|
||||
"Model {{modelId}} not found": "A {{modelId}} modell nem található",
|
||||
"Model {{modelName}} is not vision capable": "A {{modelName}} modell nem képes képfeldolgozásra",
|
||||
"Model {{name}} is now {{status}}": "A {{name}} modell most {{status}} állapotban van",
|
||||
"Model {{name}} is now at the top": "A {{name}} modell most a lista tetején van",
|
||||
"Model accepts image inputs": "A modell elfogad képbemenetet",
|
||||
"Model created successfully!": "Modell sikeresen létrehozva!",
|
||||
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Modell fájlrendszer útvonal észlelve. A modell rövid neve szükséges a frissítéshez, nem folytatható.",
|
||||
"Model ID": "Modell azonosító",
|
||||
"Model Name": "Modell neve",
|
||||
"Model not selected": "Nincs kiválasztva modell",
|
||||
"Model Params": "Modell paraméterek",
|
||||
"Model updated successfully": "Modell sikeresen frissítve",
|
||||
"Model Whitelisting": "Modell fehérlista",
|
||||
"Model(s) Whitelisted": "Fehérlistázott modell(ek)",
|
||||
"Modelfile Content": "Modellfájl tartalom",
|
||||
"Models": "Modellek",
|
||||
"more": "több",
|
||||
"More": "Több",
|
||||
"Move to Top": "Mozgatás felülre",
|
||||
"Name": "Név",
|
||||
"Name your model": "Nevezze el a modelljét",
|
||||
"New Chat": "Új beszélgetés",
|
||||
"New folder": "Új mappa",
|
||||
"New Password": "Új jelszó",
|
||||
"No content found": "Nem található tartalom",
|
||||
"No content to speak": "Nincs felolvasható tartalom",
|
||||
"No distance available": "Nincs elérhető távolság",
|
||||
"No feedbacks found": "Nem található visszajelzés",
|
||||
"No file selected": "Nincs kiválasztva fájl",
|
||||
"No files found.": "Nem található fájl.",
|
||||
"No HTML, CSS, or JavaScript content found.": "Nem található HTML, CSS vagy JavaScript tartalom.",
|
||||
"No knowledge found": "Nem található tudásbázis",
|
||||
"No models found": "Nem található modell",
|
||||
"No results found": "Nincs találat",
|
||||
"No search query generated": "Nem generálódott keresési lekérdezés",
|
||||
"No source available": "Nincs elérhető forrás",
|
||||
"No valves to update": "Nincs frissítendő szelep",
|
||||
"None": "Nincs",
|
||||
"Not factually correct": "Tényszerűen nem helyes",
|
||||
"Not helpful": "Nem segítőkész",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Megjegyzés: Ha minimum pontszámot állít be, a keresés csak olyan dokumentumokat ad vissza, amelyek pontszáma nagyobb vagy egyenlő a minimum pontszámmal.",
|
||||
"Notes": "Jegyzetek",
|
||||
"Notifications": "Értesítések",
|
||||
"November": "November",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
"num_thread (Ollama)": "num_thread (Ollama)",
|
||||
"OAuth ID": "OAuth azonosító",
|
||||
"October": "Október",
|
||||
"Off": "Ki",
|
||||
"Okay, Let's Go!": "Rendben, kezdjük!",
|
||||
"OLED Dark": "OLED sötét",
|
||||
"Ollama": "Ollama",
|
||||
"Ollama API": "Ollama API",
|
||||
"Ollama API disabled": "Ollama API letiltva",
|
||||
"Ollama API is disabled": "Az Ollama API le van tiltva",
|
||||
"Ollama Version": "Ollama verzió",
|
||||
"On": "Be",
|
||||
"Only": "Csak",
|
||||
"Only alphanumeric characters and hyphens are allowed in the command string.": "Csak alfanumerikus karakterek és kötőjelek engedélyezettek a parancssorban.",
|
||||
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Csak gyűjtemények szerkeszthetők, hozzon létre új tudásbázist dokumentumok szerkesztéséhez/hozzáadásához.",
|
||||
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppá! Úgy tűnik, az URL érvénytelen. Kérjük, ellenőrizze és próbálja újra.",
|
||||
"Oops! There are files still uploading. Please wait for the upload to complete.": "Hoppá! Még vannak feltöltés alatt álló fájlok. Kérjük, várja meg a feltöltés befejezését.",
|
||||
"Oops! There was an error in the previous response.": "Hoppá! Hiba történt az előző válaszban.",
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppá! Nem támogatott módszert használ (csak frontend). Kérjük, szolgálja ki a WebUI-t a backend-ről.",
|
||||
"Open file": "Fájl megnyitása",
|
||||
"Open in full screen": "Megnyitás teljes képernyőn",
|
||||
"Open new chat": "Új beszélgetés megnyitása",
|
||||
"Open WebUI uses faster-whisper internally.": "Az Open WebUI belsőleg a faster-whispert használja.",
|
||||
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Az Open WebUI verzió (v{{OPEN_WEBUI_VERSION}}) alacsonyabb, mint a szükséges verzió (v{{REQUIRED_VERSION}})",
|
||||
"OpenAI": "OpenAI",
|
||||
"OpenAI API": "OpenAI API",
|
||||
"OpenAI API Config": "OpenAI API konfiguráció",
|
||||
"OpenAI API Key is required.": "OpenAI API kulcs szükséges.",
|
||||
"OpenAI URL/Key required.": "OpenAI URL/kulcs szükséges.",
|
||||
"or": "vagy",
|
||||
"Other": "Egyéb",
|
||||
"OUTPUT": "KIMENET",
|
||||
"Output format": "Kimeneti formátum",
|
||||
"Overview": "Áttekintés",
|
||||
"page": "oldal",
|
||||
"Password": "Jelszó",
|
||||
"PDF document (.pdf)": "PDF dokumentum (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF képek kinyerése (OCR)",
|
||||
"pending": "függőben",
|
||||
"Permission denied when accessing media devices": "Hozzáférés megtagadva a médiaeszközökhöz",
|
||||
"Permission denied when accessing microphone": "Hozzáférés megtagadva a mikrofonhoz",
|
||||
"Permission denied when accessing microphone: {{error}}": "Hozzáférés megtagadva a mikrofonhoz: {{error}}",
|
||||
"Personalization": "Személyre szabás",
|
||||
"Pin": "Rögzítés",
|
||||
"Pinned": "Rögzítve",
|
||||
"Pipeline deleted successfully": "Folyamat sikeresen törölve",
|
||||
"Pipeline downloaded successfully": "Folyamat sikeresen letöltve",
|
||||
"Pipelines": "Folyamatok",
|
||||
"Pipelines Not Detected": "Folyamatok nem észlelhetők",
|
||||
"Pipelines Valves": "Folyamat szelepek",
|
||||
"Plain text (.txt)": "Egyszerű szöveg (.txt)",
|
||||
"Playground": "Játszótér",
|
||||
"Please carefully review the following warnings:": "Kérjük, gondosan tekintse át a következő figyelmeztetéseket:",
|
||||
"Please enter a prompt": "Kérjük, adjon meg egy promptot",
|
||||
"Please fill in all fields.": "Kérjük, töltse ki az összes mezőt.",
|
||||
"Please select a reason": "Kérjük, válasszon egy okot",
|
||||
"Positive attitude": "Pozitív hozzáállás",
|
||||
"Previous 30 days": "Előző 30 nap",
|
||||
"Previous 7 days": "Előző 7 nap",
|
||||
"Profile Image": "Profilkép",
|
||||
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (pl. Mondj egy érdekes tényt a Római Birodalomról)",
|
||||
"Prompt Content": "Prompt tartalom",
|
||||
"Prompt suggestions": "Prompt javaslatok",
|
||||
"Prompts": "Promptok",
|
||||
"Pull \"{{searchValue}}\" from Ollama.com": "\"{{searchValue}}\" letöltése az Ollama.com-ról",
|
||||
"Pull a model from Ollama.com": "Modell letöltése az Ollama.com-ról",
|
||||
"Query Params": "Lekérdezési paraméterek",
|
||||
"RAG Template": "RAG sablon",
|
||||
"Rating": "Értékelés",
|
||||
"Re-rank models by topic similarity": "Modellek újrarangsorolása téma hasonlóság alapján",
|
||||
"Read Aloud": "Felolvasás",
|
||||
"Record voice": "Hang rögzítése",
|
||||
"Redirecting you to OpenWebUI Community": "Átirányítás az OpenWebUI közösséghez",
|
||||
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Hivatkozzon magára \"Felhasználó\"-ként (pl. \"A Felhasználó spanyolul tanul\")",
|
||||
"References from": "Hivatkozások innen",
|
||||
"Refused when it shouldn't have": "Elutasítva, amikor nem kellett volna",
|
||||
"Regenerate": "Újragenerálás",
|
||||
"Release Notes": "Kiadási jegyzetek",
|
||||
"Relevance": "Relevancia",
|
||||
"Remove": "Eltávolítás",
|
||||
"Remove Model": "Modell eltávolítása",
|
||||
"Rename": "Átnevezés",
|
||||
"Repeat Last N": "Utolsó N ismétlése",
|
||||
"Request Mode": "Kérési mód",
|
||||
"Reranking Model": "Újrarangsoroló modell",
|
||||
"Reranking model disabled": "Újrarangsoroló modell letiltva",
|
||||
"Reranking model set to \"{{reranking_model}}\"": "Újrarangsoroló modell beállítva erre: \"{{reranking_model}}\"",
|
||||
"Reset": "Visszaállítás",
|
||||
"Reset Upload Directory": "Feltöltési könyvtár visszaállítása",
|
||||
"Reset Vector Storage/Knowledge": "Vektor tárhely/tudásbázis visszaállítása",
|
||||
"Response AutoCopy to Clipboard": "Válasz automatikus másolása a vágólapra",
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "A válasz értesítések nem aktiválhatók, mert a weboldal engedélyei meg lettek tagadva. Kérjük, látogasson el a böngésző beállításaihoz a szükséges hozzáférés megadásához.",
|
||||
"Response splitting": "Válasz felosztás",
|
||||
"Result": "Eredmény",
|
||||
"Rich Text Input for Chat": "Formázott szövegbevitel a chathez",
|
||||
"RK": "RK",
|
||||
"Role": "Szerep",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
"Rosé Pine Dawn": "Rosé Pine Dawn",
|
||||
"RTL": "RTL",
|
||||
"Run": "Futtatás",
|
||||
"Run Llama 2, Code Llama, and other models. Customize and create your own.": "Futtassa a Llama 2-t, Code Llama-t és más modelleket. Testreszabhatja és létrehozhatja sajátjait.",
|
||||
"Running": "Fut",
|
||||
"Save": "Mentés",
|
||||
"Save & Create": "Mentés és létrehozás",
|
||||
"Save & Update": "Mentés és frissítés",
|
||||
"Save As Copy": "Mentés másolatként",
|
||||
"Save Tag": "Címke mentése",
|
||||
"Saved": "Mentve",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "A csevegési naplók közvetlen mentése a böngésző tárolójába már nem támogatott. Kérjük, szánjon egy percet a csevegési naplók letöltésére és törlésére az alábbi gomb megnyomásával. Ne aggódjon, könnyen újra importálhatja a csevegési naplókat a backend-be",
|
||||
"Scroll to bottom when switching between branches": "Görgetés az aljára ágak közötti váltáskor",
|
||||
"Search": "Keresés",
|
||||
"Search a model": "Modell keresése",
|
||||
"Search Chats": "Beszélgetések keresése",
|
||||
"Search Collection": "Gyűjtemény keresése",
|
||||
"search for tags": "címkék keresése",
|
||||
"Search Functions": "Funkciók keresése",
|
||||
"Search Knowledge": "Tudásbázis keresése",
|
||||
"Search Models": "Modellek keresése",
|
||||
"Search Prompts": "Promptok keresése",
|
||||
"Search Query Generation Prompt": "Keresési lekérdezés generálási prompt",
|
||||
"Search Result Count": "Keresési találatok száma",
|
||||
"Search Tools": "Eszközök keresése",
|
||||
"SearchApi API Key": "SearchApi API kulcs",
|
||||
"SearchApi Engine": "SearchApi motor",
|
||||
"Searched {{count}} sites_one": "{{count}} oldal keresve",
|
||||
"Searched {{count}} sites_other": "{{count}} oldal keresve",
|
||||
"Searching \"{{searchQuery}}\"": "Keresés: \"{{searchQuery}}\"",
|
||||
"Searching Knowledge for \"{{searchQuery}}\"": "Tudásbázis keresése: \"{{searchQuery}}\"",
|
||||
"Searxng Query URL": "Searxng lekérdezési URL",
|
||||
"See readme.md for instructions": "Lásd a readme.md fájlt az útmutatásért",
|
||||
"See what's new": "Újdonságok megtekintése",
|
||||
"Seed": "Seed",
|
||||
"Select a base model": "Válasszon egy alapmodellt",
|
||||
"Select a engine": "Válasszon egy motort",
|
||||
"Select a file to view or drag and drop a file to upload": "Válasszon ki egy fájlt megtekintésre vagy húzzon ide egy fájlt feltöltéshez",
|
||||
"Select a function": "Válasszon egy funkciót",
|
||||
"Select a model": "Válasszon egy modellt",
|
||||
"Select a pipeline": "Válasszon egy folyamatot",
|
||||
"Select a pipeline url": "Válasszon egy folyamat URL-t",
|
||||
"Select a tool": "Válasszon egy eszközt",
|
||||
"Select an Ollama instance": "Válasszon egy Ollama példányt",
|
||||
"Select Engine": "Motor kiválasztása",
|
||||
"Select Knowledge": "Tudásbázis kiválasztása",
|
||||
"Select model": "Modell kiválasztása",
|
||||
"Select only one model to call": "Csak egy modellt válasszon ki hívásra",
|
||||
"Selected model(s) do not support image inputs": "A kiválasztott modell(ek) nem támogatják a képbemenetet",
|
||||
"Semantic distance to query": "Szemantikai távolság a lekérdezéshez",
|
||||
"Send": "Küldés",
|
||||
"Send a Message": "Üzenet küldése",
|
||||
"Send message": "Üzenet küldése",
|
||||
"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "A kérésben elküldi a `stream_options: { include_usage: true }` opciót.\nA támogatott szolgáltatók token használati információt küldenek vissza a válaszban, ha be van állítva.",
|
||||
"September": "Szeptember",
|
||||
"Serper API Key": "Serper API kulcs",
|
||||
"Serply API Key": "Serply API kulcs",
|
||||
"Serpstack API Key": "Serpstack API kulcs",
|
||||
"Server connection verified": "Szerverkapcsolat ellenőrizve",
|
||||
"Set as default": "Beállítás alapértelmezettként",
|
||||
"Set CFG Scale": "CFG skála beállítása",
|
||||
"Set Default Model": "Alapértelmezett modell beállítása",
|
||||
"Set embedding model (e.g. {{model}})": "Beágyazási modell beállítása (pl. {{model}})",
|
||||
"Set Image Size": "Képméret beállítása",
|
||||
"Set reranking model (e.g. {{model}})": "Újrarangsoroló modell beállítása (pl. {{model}})",
|
||||
"Set Sampler": "Mintavételező beállítása",
|
||||
"Set Scheduler": "Ütemező beállítása",
|
||||
"Set Steps": "Lépések beállítása",
|
||||
"Set Task Model": "Feladat modell beállítása",
|
||||
"Set Voice": "Hang beállítása",
|
||||
"Set whisper model": "Whisper modell beállítása",
|
||||
"Settings": "Beállítások",
|
||||
"Settings saved successfully!": "Beállítások sikeresen mentve!",
|
||||
"Share": "Megosztás",
|
||||
"Share Chat": "Beszélgetés megosztása",
|
||||
"Share to OpenWebUI Community": "Megosztás az OpenWebUI közösséggel",
|
||||
"short-summary": "rövid-összefoglaló",
|
||||
"Show": "Mutat",
|
||||
"Show Admin Details in Account Pending Overlay": "Admin részletek megjelenítése a függő fiók átfedésben",
|
||||
"Show Model": "Modell megjelenítése",
|
||||
"Show shortcuts": "Gyorsbillentyűk megjelenítése",
|
||||
"Show your support!": "Mutassa meg támogatását!",
|
||||
"Showcased creativity": "Kreativitás bemutatva",
|
||||
"Sign in": "Bejelentkezés",
|
||||
"Sign in to {{WEBUI_NAME}}": "Bejelentkezés ide: {{WEBUI_NAME}}",
|
||||
"Sign Out": "Kijelentkezés",
|
||||
"Sign up": "Regisztráció",
|
||||
"Sign up to {{WEBUI_NAME}}": "Regisztráció ide: {{WEBUI_NAME}}",
|
||||
"Signing in to {{WEBUI_NAME}}": "Bejelentkezés ide: {{WEBUI_NAME}}",
|
||||
"Source": "Forrás",
|
||||
"Speech Playback Speed": "Beszéd lejátszási sebesség",
|
||||
"Speech recognition error: {{error}}": "Beszédfelismerési hiba: {{error}}",
|
||||
"Speech-to-Text Engine": "Beszéd-szöveg motor",
|
||||
"Stop": "Leállítás",
|
||||
"Stop Sequence": "Leállítási szekvencia",
|
||||
"Stream Chat Response": "Chat válasz streamelése",
|
||||
"STT Model": "STT modell",
|
||||
"STT Settings": "STT beállítások",
|
||||
"Subtitle (e.g. about the Roman Empire)": "Alcím (pl. a Római Birodalomról)",
|
||||
"Success": "Siker",
|
||||
"Successfully updated.": "Sikeresen frissítve.",
|
||||
"Suggested": "Javasolt",
|
||||
"Support": "Támogatás",
|
||||
"Support this plugin:": "Támogassa ezt a bővítményt:",
|
||||
"Sync directory": "Könyvtár szinkronizálása",
|
||||
"System": "Rendszer",
|
||||
"System Instructions": "Rendszer utasítások",
|
||||
"System Prompt": "Rendszer prompt",
|
||||
"Tags": "Címkék",
|
||||
"Tags Generation Prompt": "Címke generálási prompt",
|
||||
"Tap to interrupt": "Koppintson a megszakításhoz",
|
||||
"Tavily API Key": "Tavily API kulcs",
|
||||
"Tell us more:": "Mondjon többet:",
|
||||
"Temperature": "Hőmérséklet",
|
||||
"Template": "Sablon",
|
||||
"Temporary Chat": "Ideiglenes chat",
|
||||
"Text Splitter": "Szöveg felosztó",
|
||||
"Text-to-Speech Engine": "Szöveg-beszéd motor",
|
||||
"Tfs Z": "Tfs Z",
|
||||
"Thanks for your feedback!": "Köszönjük a visszajelzést!",
|
||||
"The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "A bővítmény fejlesztői lelkes önkéntesek a közösségből. Ha hasznosnak találja ezt a bővítményt, kérjük, fontolja meg a fejlesztéséhez való hozzájárulást.",
|
||||
"The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Az értékelési ranglista az Elo értékelési rendszeren alapul és valós időben frissül.",
|
||||
"The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "A ranglista jelenleg béta verzióban van, és az algoritmus finomítása során módosíthatjuk az értékelési számításokat.",
|
||||
"The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "A maximális fájlméret MB-ban. Ha a fájlméret meghaladja ezt a limitet, a fájl nem lesz feltöltve.",
|
||||
"The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "A chatben egyszerre használható fájlok maximális száma. Ha a fájlok száma meghaladja ezt a limitet, a fájlok nem lesznek feltöltve.",
|
||||
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "A pontszámnak 0,0 (0%) és 1,0 (100%) közötti értéknek kell lennie.",
|
||||
"Theme": "Téma",
|
||||
"Thinking...": "Gondolkodik...",
|
||||
"This action cannot be undone. Do you wish to continue?": "Ez a művelet nem vonható vissza. Szeretné folytatni?",
|
||||
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Ez biztosítja, hogy értékes beszélgetései biztonságosan mentésre kerüljenek a backend adatbázisban. Köszönjük!",
|
||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ez egy kísérleti funkció, lehet, hogy nem a várt módon működik és bármikor változhat.",
|
||||
"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Ez az opció törli az összes meglévő fájlt a gyűjteményben és lecseréli őket az újonnan feltöltött fájlokkal.",
|
||||
"This response was generated by \"{{model}}\"": "Ezt a választ a \"{{model}}\" generálta",
|
||||
"This will delete": "Ez törölni fogja",
|
||||
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Ez törölni fogja a <strong>{{NAME}}</strong>-t és <strong>minden tartalmát</strong>.",
|
||||
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Ez visszaállítja a tudásbázist és szinkronizálja az összes fájlt. Szeretné folytatni?",
|
||||
"Thorough explanation": "Alapos magyarázat",
|
||||
"Tika": "Tika",
|
||||
"Tika Server URL required.": "Tika szerver URL szükséges.",
|
||||
"Tiktoken": "Tiktoken",
|
||||
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Tipp: Frissítsen több változó helyet egymás után a tab billentyű megnyomásával a chat bevitelben minden helyettesítés után.",
|
||||
"Title": "Cím",
|
||||
"Title (e.g. Tell me a fun fact)": "Cím (pl. Mondj egy érdekes tényt)",
|
||||
"Title Auto-Generation": "Cím automatikus generálása",
|
||||
"Title cannot be an empty string.": "A cím nem lehet üres karakterlánc.",
|
||||
"Title Generation Prompt": "Cím generálási prompt",
|
||||
"To access the available model names for downloading,": "A letölthető modellek nevének eléréséhez,",
|
||||
"To access the GGUF models available for downloading,": "A letölthető GGUF modellek eléréséhez,",
|
||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "A WebUI eléréséhez kérjük, forduljon az adminisztrátorhoz. Az adminisztrátorok az Admin Panelen keresztül kezelhetik a felhasználói státuszokat.",
|
||||
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "A tudásbázis csatolásához először adja hozzá őket a \"Knowledge\" munkaterülethez.",
|
||||
"to chat input.": "a chat beviteli mezőhöz.",
|
||||
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Adatai védelme érdekében a visszajelzésből csak az értékelések, modell azonosítók, címkék és metaadatok kerülnek megosztásra - a chat előzményei privátak maradnak és nem kerülnek megosztásra.",
|
||||
"To select actions here, add them to the \"Functions\" workspace first.": "A műveletek kiválasztásához először adja hozzá őket a \"Functions\" munkaterülethez.",
|
||||
"To select filters here, add them to the \"Functions\" workspace first.": "A szűrők kiválasztásához először adja hozzá őket a \"Functions\" munkaterülethez.",
|
||||
"To select toolkits here, add them to the \"Tools\" workspace first.": "Az eszközkészletek kiválasztásához először adja hozzá őket a \"Tools\" munkaterülethez.",
|
||||
"Toast notifications for new updates": "Felugró értesítések az új frissítésekről",
|
||||
"Today": "Ma",
|
||||
"Toggle settings": "Beállítások be/ki",
|
||||
"Toggle sidebar": "Oldalsáv be/ki",
|
||||
"Token": "Token",
|
||||
"Tokens To Keep On Context Refresh (num_keep)": "Megőrzendő tokenek kontextus frissítéskor (num_keep)",
|
||||
"Too verbose": "Túl bőbeszédű",
|
||||
"Tool": "Eszköz",
|
||||
"Tool created successfully": "Eszköz sikeresen létrehozva",
|
||||
"Tool deleted successfully": "Eszköz sikeresen törölve",
|
||||
"Tool imported successfully": "Eszköz sikeresen importálva",
|
||||
"Tool updated successfully": "Eszköz sikeresen frissítve",
|
||||
"Toolkit Description (e.g. A toolkit for performing various operations)": "Eszközkészlet leírása (pl. Eszközkészlet különböző műveletek végrehajtásához)",
|
||||
"Toolkit ID (e.g. my_toolkit)": "Eszközkészlet azonosító (pl. my_toolkit)",
|
||||
"Toolkit Name (e.g. My ToolKit)": "Eszközkészlet neve (pl. Saját eszközkészlet)",
|
||||
"Tools": "Eszközök",
|
||||
"Tools are a function calling system with arbitrary code execution": "Az eszközök olyan függvényhívó rendszert alkotnak, amely tetszőleges kód végrehajtását teszi lehetővé",
|
||||
"Tools have a function calling system that allows arbitrary code execution": "Az eszközök olyan függvényhívó rendszerrel rendelkeznek, amely lehetővé teszi tetszőleges kód végrehajtását",
|
||||
"Tools have a function calling system that allows arbitrary code execution.": "Az eszközök olyan függvényhívó rendszerrel rendelkeznek, amely lehetővé teszi tetszőleges kód végrehajtását.",
|
||||
"Top K": "Top K",
|
||||
"Top P": "Top P",
|
||||
"Trouble accessing Ollama?": "Problémája van az Ollama elérésével?",
|
||||
"TTS Model": "TTS modell",
|
||||
"TTS Settings": "TTS beállítások",
|
||||
"TTS Voice": "TTS hang",
|
||||
"Type": "Típus",
|
||||
"Type Hugging Face Resolve (Download) URL": "Adja meg a Hugging Face Resolve (Letöltési) URL-t",
|
||||
"Uh-oh! There was an issue connecting to {{provider}}.": "Hoppá! Probléma merült fel a {{provider}} kapcsolódás során.",
|
||||
"UI": "Felhasználói felület",
|
||||
"Unpin": "Rögzítés feloldása",
|
||||
"Untagged": "Címkézetlen",
|
||||
"Update": "Frissítés",
|
||||
"Update and Copy Link": "Frissítés és link másolása",
|
||||
"Update for the latest features and improvements.": "Frissítsen a legújabb funkciókért és fejlesztésekért.",
|
||||
"Update password": "Jelszó frissítése",
|
||||
"Updated": "Frissítve",
|
||||
"Updated at": "Frissítve ekkor",
|
||||
"Updated At": "Frissítve ekkor",
|
||||
"Upload": "Feltöltés",
|
||||
"Upload a GGUF model": "GGUF modell feltöltése",
|
||||
"Upload directory": "Könyvtár feltöltése",
|
||||
"Upload files": "Fájlok feltöltése",
|
||||
"Upload Files": "Fájlok feltöltése",
|
||||
"Upload Pipeline": "Pipeline feltöltése",
|
||||
"Upload Progress": "Feltöltési folyamat",
|
||||
"URL Mode": "URL mód",
|
||||
"Use '#' in the prompt input to load and include your knowledge.": "Használja a '#' karaktert a prompt bevitelénél a tudásbázis betöltéséhez és felhasználásához.",
|
||||
"Use Gravatar": "Gravatar használata",
|
||||
"Use Initials": "Monogram használata",
|
||||
"use_mlock (Ollama)": "use_mlock (Ollama)",
|
||||
"use_mmap (Ollama)": "use_mmap (Ollama)",
|
||||
"user": "felhasználó",
|
||||
"User": "Felhasználó",
|
||||
"User location successfully retrieved.": "Felhasználó helye sikeresen lekérve.",
|
||||
"User Permissions": "Felhasználói jogosultságok",
|
||||
"Users": "Felhasználók",
|
||||
"Using the default arena model with all models. Click the plus button to add custom models.": "Az alapértelmezett aréna modell használata az összes modellel. Kattintson a plusz gombra egyéni modellek hozzáadásához.",
|
||||
"Utilize": "Használat",
|
||||
"Valid time units:": "Érvényes időegységek:",
|
||||
"Valves": "Szelepek",
|
||||
"Valves updated": "Szelepek frissítve",
|
||||
"Valves updated successfully": "Szelepek sikeresen frissítve",
|
||||
"variable": "változó",
|
||||
"variable to have them replaced with clipboard content.": "változó, hogy a vágólap tartalmával helyettesítse őket.",
|
||||
"Version": "Verzió",
|
||||
"Version {{selectedVersion}} of {{totalVersions}}": "{{selectedVersion}}. verzió a {{totalVersions}}-ból",
|
||||
"Voice": "Hang",
|
||||
"Voice Input": "Hangbevitel",
|
||||
"Warning": "Figyelmeztetés",
|
||||
"Warning:": "Figyelmeztetés:",
|
||||
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Figyelmeztetés: Ha frissíti vagy megváltoztatja a beágyazási modellt, minden dokumentumot újra kell importálnia.",
|
||||
"Web": "Web",
|
||||
"Web API": "Web API",
|
||||
"Web Loader Settings": "Web betöltő beállítások",
|
||||
"Web Search": "Webes keresés",
|
||||
"Web Search Engine": "Webes keresőmotor",
|
||||
"Webhook URL": "Webhook URL",
|
||||
"WebUI Settings": "WebUI beállítások",
|
||||
"WebUI will make requests to": "A WebUI kéréseket fog küldeni ide:",
|
||||
"What’s New in": "",
|
||||
"Whisper (Local)": "Whisper (helyi)",
|
||||
"Widescreen Mode": "Szélesvásznú mód",
|
||||
"Won": "Nyert",
|
||||
"Workspace": "Munkaterület",
|
||||
"Write a prompt suggestion (e.g. Who are you?)": "Írjon egy prompt javaslatot (pl. Ki vagy te?)",
|
||||
"Write a summary in 50 words that summarizes [topic or keyword].": "Írjon egy 50 szavas összefoglalót a [téma vagy kulcsszó]-ról.",
|
||||
"Write something...": "Írjon valamit...",
|
||||
"Yesterday": "Tegnap",
|
||||
"You": "Ön",
|
||||
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Egyszerre maximum {{maxCount}} fájllal tud csevegni.",
|
||||
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Az LLM-ekkel való interakcióit személyre szabhatja emlékek hozzáadásával a lenti 'Kezelés' gomb segítségével, így azok még hasznosabbak és személyre szabottabbak lesznek.",
|
||||
"You cannot clone a base model": "Nem lehet klónozni az alapmodellt",
|
||||
"You cannot upload an empty file.": "Nem tölthet fel üres fájlt.",
|
||||
"You have no archived conversations.": "Nincsenek archivált beszélgetései.",
|
||||
"You have shared this chat": "Megosztotta ezt a beszélgetést",
|
||||
"You're a helpful assistant.": "Ön egy segítőkész asszisztens.",
|
||||
"You're now logged in.": "Sikeresen bejelentkezett.",
|
||||
"Your account status is currently pending activation.": "Fiókja jelenleg aktiválásra vár.",
|
||||
"Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "A teljes hozzájárulása közvetlenül a bővítmény fejlesztőjéhez kerül; az Open WebUI nem vesz le százalékot. Azonban a választott támogatási platformnak lehetnek saját díjai.",
|
||||
"Youtube": "YouTube",
|
||||
"Youtube Loader Settings": "YouTube betöltő beállítások"
|
||||
}
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Tidak benar secara faktual",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Catatan: Jika Anda menetapkan skor minimum, pencarian hanya akan mengembalikan dokumen dengan skor yang lebih besar atau sama dengan skor minimum.",
|
||||
"Notes": "",
|
||||
"Notifications": "Pemberitahuan",
|
||||
"November": "November",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notifikasi respons tidak dapat diaktifkan karena izin situs web telah ditolak. Silakan kunjungi pengaturan browser Anda untuk memberikan akses yang diperlukan.",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Peran",
|
||||
"Rosé Pine": "Pinus Rosé",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Níl sé ceart go fírineach",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nóta: Má shocraíonn tú íosscór, ní thabharfaidh an cuardach ach doiciméid a bhfuil scór níos mó ná nó cothrom leis an scór íosta ar ais.",
|
||||
"Notes": "",
|
||||
"Notifications": "Fógraí",
|
||||
"November": "Samhain",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Ní féidir fógraí freagartha a ghníomhachtú toisc gur diúltaíodh ceadanna an tsuímh Ghréasáin. Tabhair cuairt ar do shocruithe brabhsálaí chun an rochtain riachtanach a dheonú.",
|
||||
"Response splitting": "Scoilt freagartha",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Ról",
|
||||
"Rosé Pine": "Pine Rosé",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Non corretto dal punto di vista fattuale",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: se imposti un punteggio minimo, la ricerca restituirà solo i documenti con un punteggio maggiore o uguale al punteggio minimo.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notifiche desktop",
|
||||
"November": "Novembre",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Ruolo",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "実事上正しくない",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:最小スコアを設定した場合、検索は最小スコア以上のスコアを持つドキュメントのみを返します。",
|
||||
"Notes": "",
|
||||
"Notifications": "デスクトップ通知",
|
||||
"November": "11月",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "応答の分割",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "役割",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "არ ვეთანხმები პირდაპირ ვერც ვეთანხმები",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "შენიშვნა: თუ თქვენ დააყენებთ მინიმალურ ქულას, ძებნა დააბრუნებს მხოლოდ დოკუმენტებს მინიმალური ქულის მეტი ან ტოლი ქულით.",
|
||||
"Notes": "",
|
||||
"Notifications": "შეტყობინება",
|
||||
"November": "ნოემბერი",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "როლი",
|
||||
"Rosé Pine": "ვარდისფერი ფიჭვის ხე",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "사실상 맞지 않음",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "참고: 최소 점수를 설정하면, 검색 결과로 최소 점수 이상의 점수를 가진 문서만 반환합니다.",
|
||||
"Notes": "",
|
||||
"Notifications": "알림",
|
||||
"November": "11월",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "역할",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -67,6 +67,10 @@
|
||||
"code": "hr-HR",
|
||||
"title": "Croatian (Hrvatski)"
|
||||
},
|
||||
{
|
||||
"code": "hu-HU",
|
||||
"title": "Hungarian (Magyar)"
|
||||
},
|
||||
{
|
||||
"code": "id-ID",
|
||||
"title": "Indonesian (Bahasa Indonesia)"
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Faktiškai netikslu",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Jei turite minimalų įvertį, paieška gražins tik tą informaciją, kuri viršyje šį įvertį",
|
||||
"Notes": "",
|
||||
"Notifications": "Pranešimai",
|
||||
"November": "lapkritis",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Naršyklė neleidžia siųsti pranešimų",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rolė",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Tidak tepat secara fakta",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Jika anda menetapkan skor minimum, carian hanya akan mengembalikan dokumen dengan skor lebih besar daripada atau sama dengan skor minimum.",
|
||||
"Notes": "",
|
||||
"Notifications": "Pemberitahuan",
|
||||
"November": "November",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Pemberitahuan respons tidak boleh diaktifkan kerana kebenaran tapak web tidak diberi. Sila lawati tetapan pelayar web anda untuk memberikan akses yang diperlukan.",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Peranan",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Uriktig informasjon",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Merk: Hvis du setter en minimums poengsum, vil søket kun returnere dokumenter med en poengsum som er større enn eller lik minimums poengsummen.",
|
||||
"Notes": "",
|
||||
"Notifications": "Varsler",
|
||||
"November": "november",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Respons-varsler kan ikke aktiveres da nettstedsrettighetene er nektet. Vennligst se nettleserinnstillingene dine for å gi nødvendig tilgang.",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rolle",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -15,23 +15,23 @@
|
||||
"Account": "Account",
|
||||
"Account Activation Pending": "",
|
||||
"Accurate information": "Accurate informatie",
|
||||
"Actions": "",
|
||||
"Active Users": "",
|
||||
"Actions": "Acties",
|
||||
"Active Users": "Actieve Gebruikers",
|
||||
"Add": "Toevoegen",
|
||||
"Add a model id": "Een model-id toevoegen",
|
||||
"Add a short description about what this model does": "Voeg een korte beschrijving toe over wat dit model doet",
|
||||
"Add a short title for this prompt": "Voeg een korte titel toe voor deze prompt",
|
||||
"Add a tag": "Voeg een tag toe",
|
||||
"Add Arena Model": "",
|
||||
"Add Content": "",
|
||||
"Add content here": "",
|
||||
"Add Arena Model": "Voeg Arena Model toe",
|
||||
"Add Content": "Voeg Content toe",
|
||||
"Add content here": "Voeg hier content toe",
|
||||
"Add custom prompt": "Voeg een aangepaste prompt toe",
|
||||
"Add Files": "Voege Bestanden toe",
|
||||
"Add Memory": "Voeg Geheugen toe",
|
||||
"Add Model": "Voeg Model toe",
|
||||
"Add Tag": "",
|
||||
"Add Tags": "voeg tags toe",
|
||||
"Add text content": "",
|
||||
"Add Tag": "Voeg Tag toe",
|
||||
"Add Tags": "Voeg Tags toe",
|
||||
"Add text content": "Voeg Text inhoud toe",
|
||||
"Add User": "Voeg Gebruiker toe",
|
||||
"Adjusting these settings will apply changes universally to all users.": "Het aanpassen van deze instellingen zal universeel worden toegepast op alle gebruikers.",
|
||||
"admin": "admin",
|
||||
@@ -41,14 +41,14 @@
|
||||
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "",
|
||||
"Advanced Parameters": "Geavanceerde Parameters",
|
||||
"Advanced Params": "Geavanceerde parameters",
|
||||
"All chats": "",
|
||||
"All chats": "Alle chats",
|
||||
"All Documents": "Alle Documenten",
|
||||
"Allow Chat Deletion": "Sta Chat Verwijdering toe",
|
||||
"Allow Chat Editing": "",
|
||||
"Allow non-local voices": "",
|
||||
"Allow Temporary Chat": "",
|
||||
"Allow User Location": "",
|
||||
"Allow Voice Interruption in Call": "",
|
||||
"Allow Chat Editing": "Chatbewerking toestaan",
|
||||
"Allow non-local voices": "Niet-lokale stemmen toestaan",
|
||||
"Allow Temporary Chat": "Tijdelijke chat toestaan",
|
||||
"Allow User Location": "Gebruikerslocatie toestaan",
|
||||
"Allow Voice Interruption in Call": "Stemonderbreking tijdens gesprek toestaan",
|
||||
"alphanumeric characters and hyphens": "alfanumerieke karakters en streepjes",
|
||||
"Already have an account?": "Heb je al een account?",
|
||||
"an assistant": "een assistent",
|
||||
@@ -65,10 +65,10 @@
|
||||
"Archived Chats": "chatrecord",
|
||||
"are allowed - Activate this command by typing": "zijn toegestaan - Activeer deze commando door te typen",
|
||||
"Are you sure?": "Zeker weten?",
|
||||
"Arena Models": "",
|
||||
"Arena Models": "Arena Modellen",
|
||||
"Artifacts": "",
|
||||
"Ask a question": "",
|
||||
"Assistant": "",
|
||||
"Ask a question": "Stel een vraag",
|
||||
"Assistant": "Assistent",
|
||||
"Attach file": "Voeg een bestand toe",
|
||||
"Attention to detail": "Attention to detail",
|
||||
"Audio": "Audio",
|
||||
@@ -78,10 +78,10 @@
|
||||
"AUTOMATIC1111 Api Auth String": "",
|
||||
"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
|
||||
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Basis URL is verplicht",
|
||||
"Available list": "",
|
||||
"Available list": "Beschikbare lijst",
|
||||
"available!": "beschikbaar!",
|
||||
"Azure AI Speech": "",
|
||||
"Azure Region": "",
|
||||
"Azure Region": "Azure Regio",
|
||||
"Back": "Terug",
|
||||
"Bad Response": "Ongeldig antwoord",
|
||||
"Banners": "Banners",
|
||||
@@ -91,7 +91,7 @@
|
||||
"Being lazy": "Lustig zijn",
|
||||
"Brave Search API Key": "Brave Search API-sleutel",
|
||||
"Bypass SSL verification for Websites": "SSL-verificatie omzeilen voor websites",
|
||||
"Call": "",
|
||||
"Call": "Oproep",
|
||||
"Call feature is not supported when using Web STT engine": "",
|
||||
"Camera": "",
|
||||
"Cancel": "Annuleren",
|
||||
@@ -103,7 +103,7 @@
|
||||
"Chat Bubble UI": "Chat Bubble UI",
|
||||
"Chat Controls": "",
|
||||
"Chat direction": "Chat Richting",
|
||||
"Chat Overview": "",
|
||||
"Chat Overview": "Chat Overzicht",
|
||||
"Chat Tags Auto-Generation": "",
|
||||
"Chats": "Chats",
|
||||
"Check Again": "Controleer Opnieuw",
|
||||
@@ -114,15 +114,15 @@
|
||||
"Chunk Params": "Chunk Params",
|
||||
"Chunk Size": "Chunk Grootte",
|
||||
"Citation": "Citaat",
|
||||
"Clear memory": "",
|
||||
"Clear memory": "Geheugen wissen",
|
||||
"Click here for help.": "Klik hier voor hulp.",
|
||||
"Click here to": "Klik hier om",
|
||||
"Click here to download user import template file.": "",
|
||||
"Click here to learn more about faster-whisper and see the available models.": "",
|
||||
"Click here to download user import template file.": "Klik hier om het sjabloonbestand voor gebruikersimport te downloaden.",
|
||||
"Click here to learn more about faster-whisper and see the available models.": "Klik hier om meer te leren over faster-whisper en de beschikbare modellen te bekijken.",
|
||||
"Click here to select": "Klik hier om 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 upload a workflow.json file.": "",
|
||||
"Click here to select a py file.": "Klik hier om een py-bestand te selecteren.",
|
||||
"Click here to upload a workflow.json file.": "Klik hier om een workflow.json-bestand te uploaden.",
|
||||
"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.",
|
||||
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "",
|
||||
@@ -139,11 +139,11 @@
|
||||
"Command": "Commando",
|
||||
"Completions": "",
|
||||
"Concurrent Requests": "Gelijktijdige verzoeken",
|
||||
"Confirm": "",
|
||||
"Confirm": "Bevestigen",
|
||||
"Confirm Password": "Bevestig Wachtwoord",
|
||||
"Confirm your action": "",
|
||||
"Confirm your action": "Bevestig uw actie",
|
||||
"Connections": "Verbindingen",
|
||||
"Contact Admin for WebUI Access": "",
|
||||
"Contact Admin for WebUI Access": "Neem contact op met de beheerder voor WebUI-toegang",
|
||||
"Content": "Inhoud",
|
||||
"Content Extraction": "",
|
||||
"Context Length": "Context Lengte",
|
||||
@@ -151,23 +151,23 @@
|
||||
"Continue with {{provider}}": "",
|
||||
"Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "",
|
||||
"Controls": "",
|
||||
"Copied": "",
|
||||
"Copied": "Gekopieerd",
|
||||
"Copied shared chat URL to clipboard!": "URL van gedeelde gesprekspagina gekopieerd naar klembord!",
|
||||
"Copied to clipboard": "",
|
||||
"Copied to clipboard": "Gekopieerd naar klembord",
|
||||
"Copy": "Kopieer",
|
||||
"Copy last code block": "Kopieer laatste code blok",
|
||||
"Copy last response": "Kopieer laatste antwoord",
|
||||
"Copy Link": "Kopieer Link",
|
||||
"Copy to clipboard": "",
|
||||
"Copy to clipboard": "Kopier naar klembord",
|
||||
"Copying to clipboard was successful!": "Kopiëren naar klembord was succesvol!",
|
||||
"Create a model": "Een model maken",
|
||||
"Create Account": "Maak Account",
|
||||
"Create Knowledge": "",
|
||||
"Create Knowledge": "Creër kennis",
|
||||
"Create new key": "Maak nieuwe sleutel",
|
||||
"Create new secret key": "Maak nieuwe geheim sleutel",
|
||||
"Created at": "Gemaakt op",
|
||||
"Created At": "Gemaakt op",
|
||||
"Created by": "",
|
||||
"Created by": "Gemaakt door",
|
||||
"CSV Import": "",
|
||||
"Current Model": "Huidig Model",
|
||||
"Current Password": "Huidig Wachtwoord",
|
||||
@@ -189,49 +189,49 @@
|
||||
"Delete All Chats": "Verwijder alle chats",
|
||||
"Delete chat": "Verwijder chat",
|
||||
"Delete Chat": "Verwijder Chat",
|
||||
"Delete chat?": "",
|
||||
"Delete folder?": "",
|
||||
"Delete function?": "",
|
||||
"Delete prompt?": "",
|
||||
"Delete chat?": "Verwijder chat?",
|
||||
"Delete folder?": "Verwijder map?",
|
||||
"Delete function?": "Verwijder functie?",
|
||||
"Delete prompt?": "Verwijder prompt?",
|
||||
"delete this link": "verwijder deze link",
|
||||
"Delete tool?": "",
|
||||
"Delete tool?": "Verwijder tool?",
|
||||
"Delete User": "Verwijder Gebruiker",
|
||||
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} is verwijderd",
|
||||
"Deleted {{name}}": "{{name}} verwijderd",
|
||||
"Description": "Beschrijving",
|
||||
"Didn't fully follow instructions": "Ik heb niet alle instructies volgt",
|
||||
"Disabled": "",
|
||||
"Discover a function": "",
|
||||
"Disabled": "Uitgeschakeld",
|
||||
"Discover a function": "Ontdek een functie",
|
||||
"Discover a model": "Ontdek een model",
|
||||
"Discover a prompt": "Ontdek een prompt",
|
||||
"Discover a tool": "",
|
||||
"Discover a tool": "Ontdek een tool",
|
||||
"Discover, download, and explore custom functions": "",
|
||||
"Discover, download, and explore custom prompts": "Ontdek, download en verken aangepaste prompts",
|
||||
"Discover, download, and explore custom tools": "",
|
||||
"Discover, download, and explore model presets": "Ontdek, download en verken model presets",
|
||||
"Dismissible": "",
|
||||
"Display Emoji in Call": "",
|
||||
"Dismissible": "Afwijsbaar",
|
||||
"Display Emoji in Call": "Emoji weergeven tijdens gesprek",
|
||||
"Display the username instead of You in the Chat": "Toon de gebruikersnaam in plaats van Jij in de Chat",
|
||||
"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 functions from sources you do not fully trust.": "Installeer geen functies vanuit bronnen die je niet volledig vertrouwt",
|
||||
"Do not install tools from sources you do not fully trust.": "Installeer geen tools vanuit bronnen die je niet volledig vertrouwt.",
|
||||
"Document": "Document",
|
||||
"Documentation": "",
|
||||
"Documentation": "Documentatie",
|
||||
"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.",
|
||||
"Don't have an account?": "Heb je geen account?",
|
||||
"don't install random functions from sources you don't trust.": "",
|
||||
"don't install random tools from sources you don't trust.": "",
|
||||
"Don't like the style": "Je vindt het stijl niet?",
|
||||
"Done": "",
|
||||
"Done": "Voltooid",
|
||||
"Download": "Download",
|
||||
"Download canceled": "Download geannuleerd",
|
||||
"Download Database": "Download Database",
|
||||
"Draw": "",
|
||||
"Draw": "Teken",
|
||||
"Drop any files here to add to the conversation": "Sleep bestanden hier om toe te voegen aan het gesprek",
|
||||
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "bijv. '30s', '10m'. Geldige tijdseenheden zijn 's', 'm', 'h'.",
|
||||
"Edit": "Wijzig",
|
||||
"Edit Arena Model": "",
|
||||
"Edit Memory": "",
|
||||
"Edit Arena Model": "Bewerk Arena Model",
|
||||
"Edit Memory": "Bewerk Geheugen",
|
||||
"Edit User": "Wijzig Gebruiker",
|
||||
"ElevenLabs": "",
|
||||
"Email": "Email",
|
||||
@@ -244,7 +244,7 @@
|
||||
"Enable New Sign Ups": "Schakel Nieuwe Registraties in",
|
||||
"Enable Web Search": "Zoeken op het web inschakelen",
|
||||
"Enable Web Search Query Generation": "",
|
||||
"Enabled": "",
|
||||
"Enabled": "Ingeschakeld",
|
||||
"Engine": "",
|
||||
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Zorg ervoor dat uw CSV-bestand de volgende vier kolommen in deze volgorde bevat: Naam, E-mail, Wachtwoord, Rol.",
|
||||
"Enter {{role}} message here": "Voeg {{role}} bericht hier toe",
|
||||
@@ -254,7 +254,7 @@
|
||||
"Enter CFG Scale (e.g. 7.0)": "",
|
||||
"Enter Chunk Overlap": "Voeg Chunk Overlap toe",
|
||||
"Enter Chunk Size": "Voeg Chunk Size toe",
|
||||
"Enter description": "",
|
||||
"Enter description": "Voer beschrijving in",
|
||||
"Enter Github Raw URL": "Voer de Github Raw-URL in",
|
||||
"Enter Google PSE API Key": "Voer de Google PSE API-sleutel in",
|
||||
"Enter Google PSE Engine Id": "Voer Google PSE Engine-ID in",
|
||||
@@ -281,7 +281,7 @@
|
||||
"Enter URL (e.g. http://localhost:11434)": "Zet URL (Bijv. http://localhost:11434)",
|
||||
"Enter Your Email": "Voer je Email in",
|
||||
"Enter Your Full Name": "Voer je Volledige Naam in",
|
||||
"Enter your message": "",
|
||||
"Enter your message": "Voer je bericht in",
|
||||
"Enter Your Password": "Voer je Wachtwoord in",
|
||||
"Enter Your Role": "Voer je Rol in",
|
||||
"Error": "Fout",
|
||||
@@ -300,24 +300,24 @@
|
||||
"Export Prompts": "Exporteer Prompts",
|
||||
"Export Tools": "",
|
||||
"External Models": "",
|
||||
"Failed to add file.": "",
|
||||
"Failed to add file.": "Het is niet gelukt om het bestand toe te voegen.",
|
||||
"Failed to create API Key.": "Kan API Key niet aanmaken.",
|
||||
"Failed to read clipboard contents": "Kan klembord inhoud niet lezen",
|
||||
"Failed to update settings": "",
|
||||
"Failed to upload file.": "",
|
||||
"February": "Februarij",
|
||||
"Failed to update settings": "Instellingen konden niet worden bijgewerkt.",
|
||||
"Failed to upload file.": "Bestand kon niet worden geüpload.",
|
||||
"February": "Februari",
|
||||
"Feedback History": "",
|
||||
"Feel free to add specific details": "Voeg specifieke details toe",
|
||||
"File": "",
|
||||
"File added successfully.": "",
|
||||
"File content updated successfully.": "",
|
||||
"File": "Bestand",
|
||||
"File added successfully.": "Bestand succesvol toegevoegd.",
|
||||
"File content updated successfully.": "Bestandsinhoud succesvol bijgewerkt.",
|
||||
"File Mode": "Bestandsmodus",
|
||||
"File not found.": "Bestand niet gevonden.",
|
||||
"File removed successfully.": "",
|
||||
"File size should not exceed {{maxSize}} MB.": "",
|
||||
"Files": "",
|
||||
"Filter is now globally disabled": "",
|
||||
"Filter is now globally enabled": "",
|
||||
"File removed successfully.": "Bestand succesvol verwijderd.",
|
||||
"File size should not exceed {{maxSize}} MB.": "Bestandsgrootte mag niet groter zijn dan {{maxSize}} MB.",
|
||||
"Files": "Bestanden",
|
||||
"Filter is now globally disabled": "Filter is nu globaal uitgeschakeld",
|
||||
"Filter is now globally enabled": "Filter is nu globaal ingeschakeld",
|
||||
"Filters": "",
|
||||
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Vingerafdruk spoofing gedetecteerd: kan initialen niet gebruiken als avatar. Standaardprofielafbeelding wordt gebruikt.",
|
||||
"Fluidly stream large external response chunks": "Stream vloeiend grote externe responsbrokken",
|
||||
@@ -457,7 +457,7 @@
|
||||
"Model created successfully!": "",
|
||||
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Model filesystem path gedetecteerd. Model shortname is vereist voor update, kan niet doorgaan.",
|
||||
"Model ID": "Model-ID",
|
||||
"Model Name": "",
|
||||
"Model Name": "Model naam",
|
||||
"Model not selected": "Model niet geselecteerd",
|
||||
"Model Params": "Model Params",
|
||||
"Model updated successfully": "",
|
||||
@@ -465,23 +465,23 @@
|
||||
"Model(s) Whitelisted": "Model(len) zijn ge-whitelist",
|
||||
"Modelfile Content": "Modelfile Inhoud",
|
||||
"Models": "Modellen",
|
||||
"more": "",
|
||||
"more": "Meer",
|
||||
"More": "Meer",
|
||||
"Move to Top": "",
|
||||
"Move to Top": "Verplaats naar boven",
|
||||
"Name": "Naam",
|
||||
"Name your model": "Geef uw model een naam",
|
||||
"New Chat": "Nieuwe Chat",
|
||||
"New folder": "",
|
||||
"New folder": "Nieuwe map",
|
||||
"New Password": "Nieuw Wachtwoord",
|
||||
"No content found": "",
|
||||
"No content to speak": "",
|
||||
"No content found": "Geen content gevonden",
|
||||
"No content to speak": "Geen inhoud om over te spreken",
|
||||
"No distance available": "",
|
||||
"No feedbacks found": "",
|
||||
"No file selected": "",
|
||||
"No files found.": "",
|
||||
"No file selected": "Geen bestand geselecteerd",
|
||||
"No files found.": "Geen bestanden gevonden",
|
||||
"No HTML, CSS, or JavaScript content found.": "",
|
||||
"No knowledge found": "",
|
||||
"No models found": "",
|
||||
"No models found": "Geen modellen gevonden",
|
||||
"No results found": "Geen resultaten gevonden",
|
||||
"No search query generated": "Geen zoekopdracht gegenereerd",
|
||||
"No source available": "Geen bron beschikbaar",
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Feitelijk niet juist",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Opmerking: Als u een minimumscore instelt, levert de zoekopdracht alleen documenten op met een score groter dan of gelijk aan de minimumscore.",
|
||||
"Notes": "",
|
||||
"Notifications": "Desktop Notificaties",
|
||||
"November": "November",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -512,7 +513,7 @@
|
||||
"Oops! There are files still uploading. Please wait for the upload to complete.": "",
|
||||
"Oops! There was an error in the previous response.": "",
|
||||
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Je gebruikt een niet-ondersteunde methode (alleen frontend). Serveer de WebUI vanuit de backend.",
|
||||
"Open file": "",
|
||||
"Open file": "Open bestand",
|
||||
"Open in full screen": "",
|
||||
"Open new chat": "Open nieuwe chat",
|
||||
"Open WebUI uses faster-whisper internally.": "",
|
||||
@@ -526,8 +527,8 @@
|
||||
"Other": "Andere",
|
||||
"OUTPUT": "",
|
||||
"Output format": "",
|
||||
"Overview": "",
|
||||
"page": "",
|
||||
"Overview": "Overzicht",
|
||||
"page": "Pagina",
|
||||
"Password": "Wachtwoord",
|
||||
"PDF document (.pdf)": "PDF document (.pdf)",
|
||||
"PDF Extract Images (OCR)": "PDF Extract Afbeeldingen (OCR)",
|
||||
@@ -561,8 +562,8 @@
|
||||
"Pull a model from Ollama.com": "Haal een model van Ollama.com",
|
||||
"Query Params": "Query Params",
|
||||
"RAG Template": "RAG Template",
|
||||
"Rating": "",
|
||||
"Re-rank models by topic similarity": "",
|
||||
"Rating": "Beoordeling",
|
||||
"Re-rank models by topic similarity": "Herordeneer modellen op basis van onderwerpsovereenkomst",
|
||||
"Read Aloud": "Voorlezen",
|
||||
"Record voice": "Neem stem op",
|
||||
"Redirecting you to OpenWebUI Community": "Je wordt doorgestuurd naar OpenWebUI Community",
|
||||
@@ -571,10 +572,10 @@
|
||||
"Refused when it shouldn't have": "Geweigerd terwijl het niet had moeten",
|
||||
"Regenerate": "Regenereren",
|
||||
"Release Notes": "Release Notes",
|
||||
"Relevance": "",
|
||||
"Relevance": "Relevantie",
|
||||
"Remove": "Verwijderen",
|
||||
"Remove Model": "Verwijder Model",
|
||||
"Rename": "Hervatten",
|
||||
"Rename": "Hernoemen",
|
||||
"Repeat Last N": "Herhaal Laatste N",
|
||||
"Request Mode": "Request Modus",
|
||||
"Reranking Model": "Reranking Model",
|
||||
@@ -585,8 +586,9 @@
|
||||
"Reset Vector Storage/Knowledge": "",
|
||||
"Response AutoCopy to Clipboard": "Antwoord Automatisch Kopiëren naar Klembord",
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Response splitting": "Antwoord splitsing",
|
||||
"Result": "Resultaat",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rol",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
@@ -598,9 +600,9 @@
|
||||
"Save": "Opslaan",
|
||||
"Save & Create": "Opslaan & Creëren",
|
||||
"Save & Update": "Opslaan & Bijwerken",
|
||||
"Save As Copy": "",
|
||||
"Save Tag": "",
|
||||
"Saved": "",
|
||||
"Save As Copy": "Bewaar als kopie",
|
||||
"Save Tag": "Bewaar Tag",
|
||||
"Saved": "Opgeslagen",
|
||||
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Chat logs direct opslaan in de opslag van je browser wordt niet langer ondersteund. Neem even de tijd om je chat logs te downloaden en te verwijderen door op de knop hieronder te klikken. Maak je geen zorgen, je kunt je chat logs eenvoudig opnieuw importeren naar de backend via",
|
||||
"Scroll to bottom when switching between branches": "",
|
||||
"Search": "Zoeken",
|
||||
@@ -626,16 +628,16 @@
|
||||
"See what's new": "Zie wat er nieuw is",
|
||||
"Seed": "Seed",
|
||||
"Select a base model": "Selecteer een basismodel",
|
||||
"Select a engine": "",
|
||||
"Select a engine": "Selecteer een engine",
|
||||
"Select a file to view or drag and drop a file to upload": "",
|
||||
"Select a function": "",
|
||||
"Select a function": "Selecteer een functie",
|
||||
"Select a model": "Selecteer een model",
|
||||
"Select a pipeline": "Selecteer een pijplijn",
|
||||
"Select a pipeline url": "Selecteer een pijplijn-URL",
|
||||
"Select a tool": "",
|
||||
"Select a tool": "Selecteer een tool",
|
||||
"Select an Ollama instance": "Selecteer een Ollama instantie",
|
||||
"Select Engine": "",
|
||||
"Select Knowledge": "",
|
||||
"Select Engine": "Selecteer Engine",
|
||||
"Select Knowledge": "Selecteer Kennis",
|
||||
"Select model": "Selecteer een model",
|
||||
"Select only one model to call": "",
|
||||
"Selected model(s) do not support image inputs": "Geselecteerde modellen ondersteunen geen beeldinvoer",
|
||||
@@ -692,20 +694,20 @@
|
||||
"Success": "Succes",
|
||||
"Successfully updated.": "Succesvol bijgewerkt.",
|
||||
"Suggested": "Suggestie",
|
||||
"Support": "",
|
||||
"Support this plugin:": "",
|
||||
"Sync directory": "",
|
||||
"Support": "Ondersteuning",
|
||||
"Support this plugin:": "ondersteun deze plugin",
|
||||
"Sync directory": "Synchroniseer map",
|
||||
"System": "Systeem",
|
||||
"System Instructions": "",
|
||||
"System Instructions": "Systeem instructies",
|
||||
"System Prompt": "Systeem Prompt",
|
||||
"Tags": "Tags",
|
||||
"Tags Generation Prompt": "",
|
||||
"Tap to interrupt": "",
|
||||
"Tags Generation Prompt": "Prompt voor taggeneratie",
|
||||
"Tap to interrupt": "Tik om te onderbreken",
|
||||
"Tavily API Key": "",
|
||||
"Tell us more:": "Vertel ons meer:",
|
||||
"Temperature": "Temperatuur",
|
||||
"Template": "Template",
|
||||
"Temporary Chat": "",
|
||||
"Temporary Chat": "Tijdelijke chat",
|
||||
"Text Splitter": "",
|
||||
"Text-to-Speech Engine": "Tekst-naar-Spraak Engine",
|
||||
"Tfs Z": "Tfs Z",
|
||||
@@ -718,14 +720,14 @@
|
||||
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Het score moet een waarde zijn tussen 0.0 (0%) en 1.0 (100%).",
|
||||
"Theme": "Thema",
|
||||
"Thinking...": "",
|
||||
"This action cannot be undone. Do you wish to continue?": "",
|
||||
"This action cannot be undone. Do you wish to continue?": "Deze actie kan niet ongedaan worden gemaakt. Wilt u doorgaan?",
|
||||
"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 option will delete all existing files in the collection and replace them with newly uploaded files.": "",
|
||||
"This response was generated by \"{{model}}\"": "",
|
||||
"This will delete": "",
|
||||
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "",
|
||||
"This will reset the knowledge base and sync all files. Do you wish to continue?": "",
|
||||
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Dit is een experimentele functie, het kan functioneren zoals verwacht en kan op elk moment veranderen.",
|
||||
"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Deze optie verwijdert alle bestaande bestanden in de collectie en vervangt ze door nieuw geüploade bestanden.",
|
||||
"This response was generated by \"{{model}}\"": "Dit antwoord is gegenereerd door \"{{model}}\"",
|
||||
"This will delete": "Dit zal verwijderen",
|
||||
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Dit zal <strong>{{NAME}}</strong> verwijderen en <strong>al zijn inhoud</strong>.",
|
||||
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Dit zal de kennisdatabase resetten en alle bestanden synchroniseren. Wilt u doorgaan?",
|
||||
"Thorough explanation": "Gevorderde uitleg",
|
||||
"Tika": "",
|
||||
"Tika Server URL required.": "",
|
||||
@@ -738,7 +740,7 @@
|
||||
"Title Generation Prompt": "Titel Generatie Prompt",
|
||||
"To access the available model names for downloading,": "Om de beschikbare modelnamen voor downloaden te openen,",
|
||||
"To access the GGUF models available for downloading,": "Om toegang te krijgen tot de GGUF modellen die beschikbaar zijn voor downloaden,",
|
||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
|
||||
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Om toegang te krijgen tot de WebUI, neem contact op met de administrator. Beheerders kunnen de gebruikersstatussen beheren vanuit het Beheerderspaneel.",
|
||||
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
|
||||
"to chat input.": "naar chat input.",
|
||||
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
|
||||
@@ -785,23 +787,23 @@
|
||||
"Updated At": "",
|
||||
"Upload": "",
|
||||
"Upload a GGUF model": "Upload een GGUF model",
|
||||
"Upload directory": "",
|
||||
"Upload files": "",
|
||||
"Upload directory": "Upload map",
|
||||
"Upload files": "Bestanden uploaden",
|
||||
"Upload Files": "Bestanden uploaden",
|
||||
"Upload Pipeline": "",
|
||||
"Upload Progress": "Upload Voortgang",
|
||||
"URL Mode": "URL Modus",
|
||||
"Use '#' in the prompt input to load and include your knowledge.": "",
|
||||
"Use '#' in the prompt input to load and include your knowledge.": "Gebruik '#' in de promptinvoer om je kennis te laden en op te nemen.",
|
||||
"Use Gravatar": "Gebruik Gravatar",
|
||||
"Use Initials": "Gebruik Initials",
|
||||
"use_mlock (Ollama)": "use_mlock (Ollama)",
|
||||
"use_mmap (Ollama)": "use_mmap (Ollama)",
|
||||
"user": "user",
|
||||
"User": "",
|
||||
"User": "User",
|
||||
"User location successfully retrieved.": "",
|
||||
"User Permissions": "Gebruikers Rechten",
|
||||
"Users": "Gebruikers",
|
||||
"Using the default arena model with all models. Click the plus button to add custom models.": "",
|
||||
"Using the default arena model with all models. Click the plus button to add custom models.": "Het standaard arena-model gebruiken met alle modellen. Klik op de plusknop om aangepaste modellen toe te voegen.",
|
||||
"Utilize": "Utilize",
|
||||
"Valid time units:": "Geldige tijdseenheden:",
|
||||
"Valves": "",
|
||||
@@ -811,10 +813,10 @@
|
||||
"variable to have them replaced with clipboard content.": "variabele om ze te laten vervangen door klembord inhoud.",
|
||||
"Version": "Versie",
|
||||
"Version {{selectedVersion}} of {{totalVersions}}": "",
|
||||
"Voice": "",
|
||||
"Voice Input": "",
|
||||
"Voice": "Stem",
|
||||
"Voice Input": "Steminvoer",
|
||||
"Warning": "Waarschuwing",
|
||||
"Warning:": "",
|
||||
"Warning:": "Waarschuwing",
|
||||
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Warning: Als je de embedding model bijwerkt of wijzigt, moet je alle documenten opnieuw importeren.",
|
||||
"Web": "Web",
|
||||
"Web API": "",
|
||||
@@ -827,17 +829,17 @@
|
||||
"What’s New in": "Wat is nieuw in",
|
||||
"Whisper (Local)": "",
|
||||
"Widescreen Mode": "",
|
||||
"Won": "",
|
||||
"Won": "Gewonnen",
|
||||
"Workspace": "Werkruimte",
|
||||
"Write a prompt suggestion (e.g. Who are you?)": "Schrijf een prompt suggestie (bijv. Wie ben je?)",
|
||||
"Write a summary in 50 words that summarizes [topic or keyword].": "Schrijf een samenvatting in 50 woorden die [onderwerp of trefwoord] samenvat.",
|
||||
"Write something...": "",
|
||||
"Write something...": "Schrijf iets...",
|
||||
"Yesterday": "gisteren",
|
||||
"You": "U",
|
||||
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "",
|
||||
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "",
|
||||
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Je kunt slechts met maximaal {{maxCount}} bestand(en) tegelijk chatten",
|
||||
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Je kunt je interacties met LLM's personaliseren door herinneringen toe te voegen via de 'Beheer'-knop hieronder, waardoor ze nuttiger en op maat gemaakt voor jou worden.",
|
||||
"You cannot clone a base model": "U kunt een basismodel niet klonen",
|
||||
"You cannot upload an empty file.": "",
|
||||
"You cannot upload an empty file.": "Je kunt een leeg bestand niet uploaden.",
|
||||
"You have no archived conversations.": "U heeft geen gearchiveerde gesprekken.",
|
||||
"You have shared this chat": "U heeft dit gesprek gedeeld",
|
||||
"You're a helpful assistant.": "Jij bent een behulpzame assistent.",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "ਤੱਥਕ ਰੂਪ ਵਿੱਚ ਸਹੀ ਨਹੀਂ",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ਨੋਟ: ਜੇ ਤੁਸੀਂ ਘੱਟੋ-ਘੱਟ ਸਕੋਰ ਸੈੱਟ ਕਰਦੇ ਹੋ, ਤਾਂ ਖੋਜ ਸਿਰਫ਼ ਉਹੀ ਡਾਕੂਮੈਂਟ ਵਾਪਸ ਕਰੇਗੀ ਜਿਨ੍ਹਾਂ ਦਾ ਸਕੋਰ ਘੱਟੋ-ਘੱਟ ਸਕੋਰ ਦੇ ਬਰਾਬਰ ਜਾਂ ਵੱਧ ਹੋਵੇ।",
|
||||
"Notes": "",
|
||||
"Notifications": "ਸੂਚਨਾਵਾਂ",
|
||||
"November": "ਨਵੰਬਰ",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "ਭੂਮਿਕਾ",
|
||||
"Rosé Pine": "ਰੋਜ਼ ਪਾਈਨ",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Nie zgodne z faktami",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Uwaga: Jeśli ustawisz minimalny wynik, szukanie zwróci jedynie dokumenty z wynikiem większym lub równym minimalnemu.",
|
||||
"Notes": "",
|
||||
"Notifications": "Powiadomienia",
|
||||
"November": "Listopad",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rola",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Não está factualmente correto",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Se você definir uma pontuação mínima, a pesquisa retornará apenas documentos com pontuação igual ou superior à pontuação mínima.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notificações",
|
||||
"November": "Novembro",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notificações de resposta não podem ser ativadas pois as permissões do site foram negadas. Por favor, visite as configurações do seu navegador para conceder o acesso necessário.",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Função",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Não é correto em termos factuais",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Se você definir uma pontuação mínima, a pesquisa só retornará documentos com uma pontuação maior ou igual à pontuação mínima.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notificações da Área de Trabalho",
|
||||
"November": "Novembro",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Função",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Nu este corect din punct de vedere factual",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Notă: Dacă setați un scor minim, căutarea va returna doar documente cu un scor mai mare sau egal cu scorul minim.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notificări",
|
||||
"November": "Noiembrie",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notificările de răspuns nu pot fi activate deoarece permisiunile site-ului au fost refuzate. Vă rugăm să vizitați setările browserului pentru a acorda accesul necesar.",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rol",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Не соответствует действительности",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Обратите внимание: Если вы установите минимальный балл, поиск будет возвращать только документы с баллом больше или равным минимальному баллу.",
|
||||
"Notes": "",
|
||||
"Notifications": "Уведомления",
|
||||
"November": "Ноябрь",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Уведомления об ответах не могут быть активированы, поскольку доступ к веб-сайту был заблокирован. Пожалуйста, перейдите к настройкам своего браузера, чтобы предоставить необходимый доступ.",
|
||||
"Response splitting": "Разделение ответов",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Роль",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Није чињенично тачно",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Напомена: ако подесите најмањи резултат, претрага ће вратити само документе са резултатом већим или једнаким најмањем резултату.",
|
||||
"Notes": "",
|
||||
"Notifications": "Обавештења",
|
||||
"November": "Новембар",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Улога",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Inte faktiskt korrekt",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Obs: Om du anger en tröskel kommer sökningen endast att returnera dokument med ett betyg som är större än eller lika med tröskeln.",
|
||||
"Notes": "",
|
||||
"Notifications": "Notifikationer",
|
||||
"November": "november",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Roll",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "ไม่ถูกต้องตามข้อเท็จจริง",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "หมายเหตุ: หากคุณตั้งค่าคะแนนขั้นต่ำ การค้นหาจะคืนเอกสารที่มีคะแนนมากกว่าหรือเท่ากับคะแนนขั้นต่ำเท่านั้น",
|
||||
"Notes": "",
|
||||
"Notifications": "การแจ้งเตือน",
|
||||
"November": "พฤศจิกายน",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "ไม่สามารถเปิดการแจ้งเตือนการตอบสนองได้เนื่องจากเว็บไซต์ปฏิเสธ กรุณาเข้าการตั้งค่าเบราว์เซอร์ของคุณเพื่อให้สิทธิ์การเข้าถึงที่จำเป็น",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "บทบาท",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
|
||||
"Notes": "",
|
||||
"Notifications": "",
|
||||
"November": "",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "",
|
||||
"Rosé Pine": "",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Gerçeklere göre doğru değil",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Not: Minimum bir skor belirlerseniz, arama yalnızca minimum skora eşit veya daha yüksek bir skora sahip belgeleri getirecektir.",
|
||||
"Notes": "",
|
||||
"Notifications": "Bildirimler",
|
||||
"November": "Kasım",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Web sitesi izinleri reddedildiğinden yanıt bildirimleri etkinleştirilemiyor. Gerekli erişimi sağlamak için lütfen tarayıcı ayarlarınızı ziyaret edin.",
|
||||
"Response splitting": "Yanıt bölme",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Rol",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Не відповідає дійсності",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Примітка: Якщо ви встановите мінімальну кількість балів, пошук поверне лише документи з кількістю балів, більшою або рівною мінімальній кількості балів.",
|
||||
"Notes": "",
|
||||
"Notifications": "Сповіщення",
|
||||
"November": "Листопад",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Сповіщення про відповіді не можуть бути активовані, оскільки вам було відмовлено в доступі до веб-сайту. Будь ласка, відвідайте налаштування вашого браузера, щоб надати необхідний доступ.",
|
||||
"Response splitting": "Розбиття відповіді",
|
||||
"Result": "Результат",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "RK",
|
||||
"Role": "Роль",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "Không chính xác so với thực tế",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Lưu ý: Nếu bạn đặt điểm (Score) tối thiểu thì tìm kiếm sẽ chỉ trả về những tài liệu có điểm lớn hơn hoặc bằng điểm tối thiểu.",
|
||||
"Notes": "",
|
||||
"Notifications": "Thông báo trên máy tính (Notification)",
|
||||
"November": "Tháng 11",
|
||||
"num_gpu (Ollama)": "",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Không thể kích hoạt thông báo vì trang web không cấp quyền. Vui lòng truy cập cài đặt trình duyệt của bạn để cấp quyền cần thiết.",
|
||||
"Response splitting": "",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "Vai trò",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "事实并非如此",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:如果设置了最低分数,搜索只会返回分数大于或等于最低分数的文档。",
|
||||
"Notes": "",
|
||||
"Notifications": "桌面通知",
|
||||
"November": "十一月",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "无法激活回复时发送通知。请检查浏览器设置,并授予必要的访问权限。",
|
||||
"Response splitting": "拆分回复",
|
||||
"Result": "结果",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "排名",
|
||||
"Role": "权限组",
|
||||
"Rosé Pine": "Rosé Pine",
|
||||
|
||||
@@ -490,6 +490,7 @@
|
||||
"Not factually correct": "與事實不符",
|
||||
"Not helpful": "",
|
||||
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:如果您設定了最低分數,則搜尋只會回傳分數大於或等於最低分數的文件。",
|
||||
"Notes": "",
|
||||
"Notifications": "通知",
|
||||
"November": "11 月",
|
||||
"num_gpu (Ollama)": "num_gpu (Ollama)",
|
||||
@@ -587,6 +588,7 @@
|
||||
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "無法啟用回應通知,因為網站權限已遭拒。請前往瀏覽器設定以授予必要存取權限。",
|
||||
"Response splitting": "回應分割",
|
||||
"Result": "",
|
||||
"Rich Text Input for Chat": "",
|
||||
"RK": "",
|
||||
"Role": "角色",
|
||||
"Rosé Pine": "玫瑰松",
|
||||
|
||||
@@ -32,7 +32,7 @@ export const replaceTokens = (content, char, user) => {
|
||||
|
||||
// Replace HTML ID tags with corresponding HTML content
|
||||
content = content.replace(htmlIdToken, (match, fileId) => {
|
||||
const htmlUrl = `${WEBUI_BASE_URL}/api/v1/files/${fileId}/content`;
|
||||
const htmlUrl = `${WEBUI_BASE_URL}/api/v1/files/${fileId}/content/html`;
|
||||
return `<iframe src="${htmlUrl}" width="100%" frameborder="0" onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';"></iframe>`;
|
||||
});
|
||||
|
||||
|
||||
@@ -51,6 +51,15 @@
|
||||
href="/playground">{$i18n.t('Chat')}</a
|
||||
>
|
||||
|
||||
<a
|
||||
class="min-w-fit rounded-full p-1.5 px-3 {$page.url.pathname.includes(
|
||||
'/playground/notes'
|
||||
)
|
||||
? 'bg-gray-50 dark:bg-gray-850'
|
||||
: ''} transition"
|
||||
href="/playground/notes">{$i18n.t('Notes')}</a
|
||||
>
|
||||
|
||||
<a
|
||||
class="min-w-fit rounded-full p-1.5 px-3 {$page.url.pathname.includes(
|
||||
'/playground/completions'
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<script>
|
||||
import Notes from '$lib/components/playground/Notes.svelte';
|
||||
</script>
|
||||
|
||||
<Notes />
|
||||
Reference in New Issue
Block a user