Compare commits

..
113 Commits
Author SHA1 Message Date
Timothy Jaeryang Baek 4bc9904b3c Merge pull request #8159 from open-webui/dev
0.5.3
2024-12-31 13:41:03 -08:00
Timothy Jaeryang Baek 995f80002f doc: changelog 2024-12-31 13:40:49 -08:00
Timothy Jaeryang Baek ffdb45cc4b refac 2024-12-31 13:39:03 -08:00
Timothy Jaeryang Baek f5ee5deec8 chore: format 2024-12-31 13:30:59 -08:00
Timothy Jaeryang Baek 02777ffc54 doc: changelog 2024-12-31 13:23:05 -08:00
Timothy Jaeryang Baek a5627d4226 refac 2024-12-31 13:09:17 -08:00
Timothy Jaeryang Baek 435a174316 Merge pull request #8232 from okamototk/improve-jp-trans
i18n - Updated Japanese Translation
2024-12-31 13:04:58 -08:00
Timothy Jaeryang Baek d905202afb refac 2024-12-31 13:04:27 -08:00
Takashi Okamoto 221cc19ac6 i18n - Updated Japanese Translation 2024-12-31 11:58:43 +00:00
Timothy Jaeryang Baek 3d69eaf34f refac: styling 2024-12-31 03:57:43 -08:00
Timothy Jaeryang Baek e7c501677c refac 2024-12-31 03:54:43 -08:00
Timothy Jaeryang Baek 96b1c2024b refac 2024-12-31 03:45:54 -08:00
Timothy Jaeryang Baek f7ecfafe1a refac: styling 2024-12-31 03:25:25 -08:00
Timothy Jaeryang Baek 6ecee8b920 refac: emoji picker optimisation 2024-12-31 03:24:05 -08:00
Timothy Jaeryang Baek cce8f37ada refac 2024-12-31 02:58:15 -08:00
Timothy Jaeryang Baek 60247fe18d refac 2024-12-31 02:51:52 -08:00
Timothy Jaeryang Baek de4e086bd5 refac 2024-12-31 02:48:43 -08:00
Timothy Jaeryang Baek 3da7ff1721 refac 2024-12-31 02:42:46 -08:00
Timothy Jaeryang Baek c8cdc6377b refac 2024-12-31 02:30:03 -08:00
Timothy Jaeryang Baek 85038cef69 refac: styling 2024-12-31 02:27:49 -08:00
Timothy Jaeryang Baek 016b91adda chore: format 2024-12-31 02:26:30 -08:00
Timothy Jaeryang Baek 0846a08795 Merge pull request #8230 from moblangeois/dev
i18n: update fr-FR
2024-12-31 02:24:42 -08:00
Timothy Jaeryang Baek 277eef62c2 Merge pull request #8210 from open-webui/channels
enh: channel threads & reactions
2024-12-31 02:24:10 -08:00
Timothy Jaeryang Baek 9f19933e64 refac: styling 2024-12-31 02:23:26 -08:00
Timothy Jaeryang Baek 904ddcec13 refac: styling 2024-12-31 02:19:22 -08:00
Timothy Jaeryang Baek 77da0a6cc1 refac: styling 2024-12-31 02:17:39 -08:00
Timothy Jaeryang Baek a754a4388a feat: channel threads 2024-12-31 02:16:07 -08:00
Morgan Blangeois 93f262c6a2 i18n: update fr-FR 2024-12-31 11:09:31 +01:00
Timothy Jaeryang Baek 16a48ef4eb fix 2024-12-31 02:06:55 -08:00
Timothy Jaeryang Baek 841f74894e refac 2024-12-31 02:06:19 -08:00
Timothy Jaeryang Baek 9c337552e6 enh: reply count 2024-12-31 02:05:11 -08:00
Timothy Jaeryang Baek 584e9e6da5 refac: threads 2024-12-31 00:51:43 -08:00
Timothy Jaeryang Baek a3dfa90668 refac: optimisation 2024-12-31 00:11:46 -08:00
Timothy Jaeryang Baek 00e8849445 refac 2024-12-30 23:55:19 -08:00
Timothy Jaeryang Baek 2840ff405b refac 2024-12-30 23:48:55 -08:00
Timothy Jaeryang Baek 9d39404e6c refac: styling 2024-12-30 23:16:50 -08:00
Timothy Jaeryang Baek 371201d820 refac 2024-12-30 23:12:50 -08:00
Timothy Jaeryang Baek f93c2e4a8d feat: reactions 2024-12-30 23:06:34 -08:00
Timothy Jaeryang Baek 4b0fa112bb Merge pull request #8222 from open-webui/dev
dev
2024-12-30 17:55:13 -08:00
Timothy Jaeryang Baek fd0170c179 revert 2024-12-30 16:55:29 -08:00
Timothy Jaeryang Baek 9b56b64cfa Merge pull request #8212 from ashm-dev/main
feat: Small optimization
2024-12-30 16:00:18 -08:00
Timothy Jaeryang Baek 887627fa34 Merge pull request #8217 from gabriel-ecegi/batch_fix
fix: Add missing request parameter to knowledge and retrieval routes
2024-12-30 15:58:10 -08:00
Timothy Jaeryang Baek 46bcf98ef2 fix: usage stats 2024-12-30 15:52:07 -08:00
Timothy Jaeryang Baek 947f5600d6 refac 2024-12-30 15:39:35 -08:00
Timothy Jaeryang Baek 79ce6e0a3f refac 2024-12-30 11:29:18 -08:00
Gabriel Ecegi 46e57706c1 refac: formatting 2024-12-30 17:45:43 +01:00
Gabriel Ecegi ba2964cb01 fix: missing parameter 2024-12-30 17:36:34 +01:00
shamil a0aee4ff28 feat: Small optimization 2024-12-30 13:45:20 +03:00
Timothy Jaeryang Baek 45289b0fa8 refac 2024-12-30 02:21:45 -08:00
Timothy Jaeryang Baek eece28ccc6 feat: emoji picker 2024-12-30 02:20:09 -08:00
Timothy Jaeryang Baek c216d89520 enh: threads & reactions 2024-12-29 23:16:18 -08:00
Timothy Jaeryang Baek d94134ad2d refac 2024-12-29 22:11:20 -08:00
Timothy Jaeryang Baek 952822ad5d refac 2024-12-29 21:02:11 -08:00
Timothy Jaeryang Baek 79d7e67e51 fix: ollama options 2024-12-29 16:30:36 -08:00
Timothy Jaeryang Baek 6de1923151 Merge pull request #8192 from TiancongLx/dev
i18n: update zh-TW
2024-12-29 15:36:19 -08:00
Tiancong Li abdbd6a67e i18n: update zh-TW 2024-12-30 03:13:20 +08:00
Timothy Jaeryang Baek a14dee87e8 Merge pull request #8184 from vishwamartur/fix-offline-docker
Fix offline docker container startup issue
2024-12-28 22:26:38 -08:00
Vishwanath Martur 00e6ffe83c Fix offline docker container startup issue
Related to #7207

Modify the code to allow the docker container to start in an offline environment for versions >= 0.4.0.

* **backend/open_webui/retrieval/utils.py**
  - Import `OFFLINE_MODE` from `open_webui.env`.
  - Set `local_files_only` to `True` when `OFFLINE_MODE` is enabled in `snapshot_kwargs`.

* **backend/open_webui/env.py**
  - Add logic to set `HF_HUB_OFFLINE` environment variable to `1` when `OFFLINE_MODE` is enabled.

* **README.md**
  - Document setting `HF_HUB_OFFLINE` environment variable to `1` for offline environments.
2024-12-29 11:53:09 +05:30
Timothy Jaeryang Baek 36d927e1ba refac 2024-12-28 19:31:03 -08:00
Timothy Jaeryang Baek 091e9e2f40 refac 2024-12-28 18:08:30 -08:00
Timothy Jaeryang Baek 54daf3b765 fix: outlet filter hook 2024-12-28 18:05:07 -08:00
Timothy Jaeryang Baek 76decdba2a fix: delete file 2024-12-28 17:40:00 -08:00
Timothy Jaeryang Baek e6e8978f78 refac 2024-12-28 16:42:43 -08:00
Timothy Jaeryang Baek fcaeb2f539 Merge pull request #8179 from cvaz1306/add_reset_button_mermaidjs_renderer
i18n: Add reset panzoom button to SVGPanZoom and cleanup
2024-12-28 16:27:44 -08:00
cvaz1306 f7d1833f41 Fixing formatting 2024-12-28 15:50:23 -08:00
cvaz1306 95598e5435 Merge branch 'dev' into add_reset_button_mermaidjs_renderer 2024-12-28 15:46:23 -08:00
cvaz1306 8a7e8b57a8 Add reset panzoom button to SVGPanZoom and cleanup 2024-12-28 15:27:47 -08:00
Timothy Jaeryang Baek 5a720a4a31 refac 2024-12-27 22:46:50 -08:00
Timothy Jaeryang Baek d55884b50e enh: ENABLE_REALTIME_CHAT_SAVE 2024-12-27 22:36:14 -08:00
Timothy Jaeryang Baek c8fb11db59 Merge pull request #8158 from cvaz1306/add_reset_button_mermaidjs_renderer
feat: Add reset button mermaidjs renderer
2024-12-27 17:55:00 -08:00
cvaz1306 7b3a86475d Add reset panzoom button to SVGPanZoom and cleanup 2024-12-27 17:06:15 -08:00
Timothy Jaeryang Baek 59ed53ec1e Merge pull request #8145 from bernadinm/fix/modified_update_ollama_models.sh
fix: Add execute permissions to update_ollama_models.sh
2024-12-27 16:24:32 -08:00
Timothy Jaeryang Baek 7f8b6ebbd5 refac: styling 2024-12-27 12:24:58 -08:00
Miguel Bernadin 3f0dd80898 fix: chmod +x update_ollama_models.sh 2024-12-27 08:29:54 -08:00
Timothy Jaeryang Baek 2299f48430 Merge pull request #8131 from open-webui/dev
fix: api key restrictions
2024-12-27 00:32:37 -08:00
Timothy Jaeryang Baek 99386bf680 fix: api key restrictions 2024-12-27 00:32:25 -08:00
Timothy Jaeryang Baek 4e4e2792b1 Merge pull request #8130 from open-webui/dev
refac
2024-12-27 00:06:41 -08:00
Timothy Jaeryang Baek d99e3d49e1 refac 2024-12-27 00:05:32 -08:00
Timothy Jaeryang Baek e42cbf07f5 Merge pull request #8122 from open-webui/dev
0.5.2
2024-12-26 23:51:49 -08:00
Timothy Jaeryang Baek 016862a6b8 doc: changelog 2024-12-26 23:51:40 -08:00
Timothy Jaeryang Baek cd9dae0f3a refac 2024-12-26 23:51:30 -08:00
Timothy Jaeryang Baek b7baf4ddef doc: changelog 2024-12-26 23:46:07 -08:00
Timothy Jaeryang Baek 1584015d3b chore: format 2024-12-26 23:35:56 -08:00
Timothy Jaeryang Baek e4b4a78e52 refac 2024-12-26 23:35:01 -08:00
Timothy Jaeryang Baek 50534a0dcf enh: user status indicator 2024-12-26 23:29:33 -08:00
Timothy Jaeryang Baek c53ace3c98 refac 2024-12-26 22:03:39 -08:00
Timothy Jaeryang Baek 7fa60dd63e refac 2024-12-26 21:55:21 -08:00
Timothy Jaeryang Baek 6ff6d57507 enh: typing indicator 2024-12-26 21:51:09 -08:00
Timothy Jaeryang Baek 4f93ecf519 refac 2024-12-26 20:58:46 -08:00
Timothy Jaeryang Baek 1e974439d9 enh: configurable api key endpoint restrictions 2024-12-26 20:57:51 -08:00
Timothy Jaeryang Baek 611955bc91 refac 2024-12-26 20:38:27 -08:00
Timothy Jaeryang Baek e3937ada38 fix: ollama usage 2024-12-26 20:35:14 -08:00
Timothy Jaeryang Baek c5b8466c0e fix: playground 2024-12-26 19:12:08 -08:00
Timothy Jaeryang Baek e25b082162 fix: pipelines outlet 2024-12-26 19:10:28 -08:00
Timothy Jaeryang Baek 247d7896fc Merge pull request #8093 from aleixdorca/dev
i18n: Updated Catalan translation.json
2024-12-26 13:34:30 -08:00
Timothy Jaeryang Baek a0ad681c77 Merge pull request #8101 from panda44312/dev
i18n - Updated Simplified Chinese Translation
2024-12-26 13:34:21 -08:00
Timothy Jaeryang Baek 1b7ee5dd2b Merge pull request #8115 from taylorwilsdon/fix_drive_integration
Fix drive integration
2024-12-26 13:34:09 -08:00
Timothy Jaeryang Baek 8b6d03e430 fix: elevenlabs audio 2024-12-26 12:54:31 -08:00
Taylor Wilsdon efc4ad9f65 Update Documents.svelte 2024-12-26 14:48:38 -05:00
Taylor Wilsdon 3cfb6507c5 Update .gitignore 2024-12-26 14:47:41 -05:00
Taylor Wilsdon 24a314876b formatting 2024-12-26 14:46:41 -05:00
Taylor Wilsdon 190911206b Remove logging 2024-12-26 14:46:06 -05:00
Taylor Wilsdon ea11521961 Remove unnecessary logging 2024-12-26 14:44:36 -05:00
Taylor Wilsdon 909c94e983 Fix Google Drive integration 2024-12-26 14:41:58 -05:00
Taylor Wilsdon (aider) 1c7ff7b1dc fix: Initialize enableGoogleDriveIntegration with default value 2024-12-26 12:22:58 -05:00
Taylor Wilsdon (aider) c7cec2131c debug: Add detailed logging for Google Drive Integration state changes 2024-12-26 12:21:38 -05:00
Taylor Wilsdon (aider) 6f3e7ed0e9 debug: Add console logs for Google Drive Integration state changes 2024-12-26 12:19:53 -05:00
Panda d4ccd25760 Update translation.json 2024-12-26 11:51:44 +01:00
Timothy Jaeryang Baek dd933e406f Merge pull request #8095 from open-webui/dev
fix: automatic1111 image generation
2024-12-25 23:35:10 -08:00
Timothy Jaeryang Baek 3c74ce3653 fix: automatic1111 image generation 2024-12-25 23:34:54 -08:00
Timothy Jaeryang Baek de2bda3e2e Merge pull request #8094 from open-webui/dev
refac: title generation logic
2024-12-25 23:52:21 -07:00
Timothy Jaeryang Baek 4b3e1bb747 refac: title generation logic 2024-12-25 22:51:08 -08:00
Aleix Dorca bb30a83520 Update catalan translation.json 2024-12-26 07:49:49 +01:00
3942 changed files with 13628 additions and 508 deletions
+37
View File
@@ -5,6 +5,43 @@ 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.5.3] - 2024-12-31
### Added
- **💬 Channel Reactions with Built-In Emoji Picker**: Easily express yourself in channel threads and messages with reactions, featuring an intuitive built-in emoji picker for seamless selection.
- **🧵 Threads for Channels**: Organize discussions within channels by creating threads, improving clarity and fostering focused conversations.
- **🔄 Reset Button for SVG Pan/Zoom**: Added a handy reset button to SVG Pan/Zoom, allowing users to quickly return diagrams or visuals to their default state without hassle.
- **⚡ Realtime Chat Save Environment Variable**: Introduced the ENABLE_REALTIME_CHAT_SAVE environment variable. Choose between faster responses by disabling realtime chat saving or ensuring chunk-by-chunk data persistency for critical operations.
- **🌍 Translation Enhancements**: Updated and refined translations across multiple languages, providing a smoother experience for international users.
- **📚 Improved Documentation**: Expanded documentation on functions, including clearer guidance on function plugins and detailed instructions for migrating to v0.5. This ensures users can adapt and harness new updates more effectively. (https://docs.openwebui.com/features/plugin/)
### Fixed
- **🛠️ Ollama Parameters Respected**: Resolved an issue where input parameters for Ollama were being ignored, ensuring precise and consistent model behavior.
- **🔧 Function Plugin Outlet Hook Reliability**: Fixed a bug causing issues with 'event_emitter' and outlet hooks in filter function plugins, guaranteeing smoother operation within custom extensions.
- **🖋️ Weird Custom Status Descriptions**: Adjusted the formatting and functionality for custom user statuses, ensuring they display correctly and intuitively.
- **🔗 Restored API Functionality**: Fixed a critical issue where APIs were not operational for certain configurations, ensuring uninterrupted access.
- **⏳ Custom Pipe Function Completion**: Resolved an issue where chats using specific custom pipe function plugins weren’t finishing properly, restoring consistent chat workflows.
- **✅ General Stability Enhancements**: Implemented various under-the-hood improvements to boost overall reliability, ensuring smoother and more consistent performance across the WebUI.
## [0.5.2] - 2024-12-26
### Added
- **🖊️ Typing Indicators in Channels**: Know exactly who’s typing in real-time within your channels, enhancing collaboration and keeping everyone engaged.
- **👤 User Status Indicators**: Quickly view a user’s status by clicking their profile image in channels for better coordination and availability insights.
- **🔒 Configurable API Key Authentication Restrictions**: Flexibly configure endpoint restrictions for API key authentication, now off by default for a smoother setup in trusted environments.
### Fixed
- **🔧 Playground Functionality Restored**: Resolved a critical issue where the playground wasn’t working, ensuring seamless experimentation and troubleshooting workflows.
- **📊 Corrected Ollama Usage Statistics**: Fixed a calculation error in Ollama’s usage statistics, providing more accurate tracking and insights for better resource management.
- **🔗 Pipelines Outlet Hook Registration**: Addressed an issue where outlet hooks for pipelines weren’t registered, restoring functionality and consistency in pipeline workflows.
- **🎨 Image Generation Error**: Resolved a persistent issue causing errors with 'get_automatic1111_api_auth()' to ensure smooth image generation workflows.
- **🎙️ Text-to-Speech Error**: Fixed the missing argument in Eleven Labs’ 'get_available_voices()', restoring full text-to-speech capabilities for uninterrupted voice interactions.
- **🖋️ Title Generation Issue**: Fixed a bug where title generation was not working in certain cases, ensuring consistent and reliable chat organization.
## [0.5.1] - 2024-12-25
### Added
+8
View File
@@ -185,6 +185,14 @@ If you want to try out the latest bleeding-edge features and are okay with occas
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui --add-host=host.docker.internal:host-gateway --restart always ghcr.io/open-webui/open-webui:dev
```
### Offline Mode
If you are running Open WebUI in an offline environment, you can set the `HF_HUB_OFFLINE` environment variable to `1` to prevent attempts to download models from the internet.
```bash
export HF_HUB_OFFLINE=1
```
## What's Next? 🌟
Discover upcoming features on our roadmap in the [Open WebUI Documentation](https://docs.openwebui.com/roadmap/).
+23 -11
View File
@@ -272,6 +272,18 @@ ENABLE_API_KEY = PersistentConfig(
os.environ.get("ENABLE_API_KEY", "True").lower() == "true",
)
ENABLE_API_KEY_ENDPOINT_RESTRICTIONS = PersistentConfig(
"ENABLE_API_KEY_ENDPOINT_RESTRICTIONS",
"auth.api_key.endpoint_restrictions",
os.environ.get("ENABLE_API_KEY_ENDPOINT_RESTRICTIONS", "False").lower() == "true",
)
API_KEY_ALLOWED_ENDPOINTS = PersistentConfig(
"API_KEY_ALLOWED_ENDPOINTS",
"auth.api_key.allowed_endpoints",
os.environ.get("API_KEY_ALLOWED_ENDPOINTS", ""),
)
JWT_EXPIRES_IN = PersistentConfig(
"JWT_EXPIRES_IN", "auth.jwt_expiry", os.environ.get("JWT_EXPIRES_IN", "-1")
@@ -307,17 +319,6 @@ GOOGLE_CLIENT_SECRET = PersistentConfig(
os.environ.get("GOOGLE_CLIENT_SECRET", ""),
)
GOOGLE_DRIVE_CLIENT_ID = PersistentConfig(
"GOOGLE_DRIVE_CLIENT_ID",
"google_drive.client_id",
os.environ.get("GOOGLE_DRIVE_CLIENT_ID", ""),
)
GOOGLE_DRIVE_API_KEY = PersistentConfig(
"GOOGLE_DRIVE_API_KEY",
"google_drive.api_key",
os.environ.get("GOOGLE_DRIVE_API_KEY", ""),
)
GOOGLE_OAUTH_SCOPE = PersistentConfig(
"GOOGLE_OAUTH_SCOPE",
@@ -1223,6 +1224,17 @@ ENABLE_GOOGLE_DRIVE_INTEGRATION = PersistentConfig(
os.getenv("ENABLE_GOOGLE_DRIVE_INTEGRATION", "False").lower() == "true",
)
GOOGLE_DRIVE_CLIENT_ID = PersistentConfig(
"GOOGLE_DRIVE_CLIENT_ID",
"google_drive.client_id",
os.environ.get("GOOGLE_DRIVE_CLIENT_ID", ""),
)
GOOGLE_DRIVE_API_KEY = PersistentConfig(
"GOOGLE_DRIVE_API_KEY",
"google_drive.api_key",
os.environ.get("GOOGLE_DRIVE_API_KEY", ""),
)
# RAG Content Extraction
CONTENT_EXTRACTION_ENGINE = PersistentConfig(
+8
View File
@@ -311,6 +311,11 @@ RESET_CONFIG_ON_START = (
os.environ.get("RESET_CONFIG_ON_START", "False").lower() == "true"
)
ENABLE_REALTIME_CHAT_SAVE = (
os.environ.get("ENABLE_REALTIME_CHAT_SAVE", "True").lower() == "true"
)
####################################
# REDIS
####################################
@@ -392,3 +397,6 @@ else:
####################################
OFFLINE_MODE = os.environ.get("OFFLINE_MODE", "false").lower() == "true"
if OFFLINE_MODE:
os.environ["HF_HUB_OFFLINE"] = "1"
+7
View File
@@ -199,6 +199,8 @@ from open_webui.config import (
ENABLE_SIGNUP,
ENABLE_LOGIN_FORM,
ENABLE_API_KEY,
ENABLE_API_KEY_ENDPOINT_RESTRICTIONS,
API_KEY_ALLOWED_ENDPOINTS,
ENABLE_CHANNELS,
ENABLE_COMMUNITY_SHARING,
ENABLE_MESSAGE_RATING,
@@ -392,7 +394,12 @@ app.state.OPENAI_MODELS = {}
app.state.config.WEBUI_URL = WEBUI_URL
app.state.config.ENABLE_SIGNUP = ENABLE_SIGNUP
app.state.config.ENABLE_LOGIN_FORM = ENABLE_LOGIN_FORM
app.state.config.ENABLE_API_KEY = ENABLE_API_KEY
app.state.config.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS = (
ENABLE_API_KEY_ENDPOINT_RESTRICTIONS
)
app.state.config.API_KEY_ALLOWED_ENDPOINTS = API_KEY_ALLOWED_ENDPOINTS
app.state.config.JWT_EXPIRES_IN = JWT_EXPIRES_IN
@@ -0,0 +1,70 @@
"""Update message & channel tables
Revision ID: 3781e22d8b01
Revises: 7826ab40b532
Create Date: 2024-12-30 03:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "3781e22d8b01"
down_revision = "7826ab40b532"
branch_labels = None
depends_on = None
def upgrade():
# Add 'type' column to the 'channel' table
op.add_column(
"channel",
sa.Column(
"type",
sa.Text(),
nullable=True,
),
)
# Add 'parent_id' column to the 'message' table for threads
op.add_column(
"message",
sa.Column("parent_id", sa.Text(), nullable=True),
)
op.create_table(
"message_reaction",
sa.Column(
"id", sa.Text(), nullable=False, primary_key=True, unique=True
), # Unique reaction ID
sa.Column("user_id", sa.Text(), nullable=False), # User who reacted
sa.Column(
"message_id", sa.Text(), nullable=False
), # Message that was reacted to
sa.Column(
"name", sa.Text(), nullable=False
), # Reaction name (e.g. "thumbs_up")
sa.Column(
"created_at", sa.BigInteger(), nullable=True
), # Timestamp of when the reaction was added
)
op.create_table(
"channel_member",
sa.Column(
"id", sa.Text(), nullable=False, primary_key=True, unique=True
), # Record ID for the membership row
sa.Column("channel_id", sa.Text(), nullable=False), # Associated channel
sa.Column("user_id", sa.Text(), nullable=False), # Associated user
sa.Column(
"created_at", sa.BigInteger(), nullable=True
), # Timestamp of when the user joined the channel
)
def downgrade():
# Revert 'type' column addition to the 'channel' table
op.drop_column("channel", "type")
op.drop_column("message", "parent_id")
op.drop_table("message_reaction")
op.drop_table("channel_member")
+6 -2
View File
@@ -21,6 +21,7 @@ class Channel(Base):
id = Column(Text, primary_key=True)
user_id = Column(Text)
type = Column(Text, nullable=True)
name = Column(Text)
description = Column(Text, nullable=True)
@@ -38,9 +39,11 @@ class ChannelModel(BaseModel):
id: str
user_id: str
description: Optional[str] = None
type: Optional[str] = None
name: str
description: Optional[str] = None
data: Optional[dict] = None
meta: Optional[dict] = None
access_control: Optional[dict] = None
@@ -64,12 +67,13 @@ class ChannelForm(BaseModel):
class ChannelTable:
def insert_new_channel(
self, form_data: ChannelForm, user_id: str
self, type: Optional[str], form_data: ChannelForm, user_id: str
) -> Optional[ChannelModel]:
with get_db() as db:
channel = ChannelModel(
**{
**form_data.model_dump(),
"type": type,
"name": form_data.name.lower(),
"id": str(uuid.uuid4()),
"user_id": user_id,
+9
View File
@@ -212,6 +212,15 @@ class ChatTable:
return chat.chat.get("history", {}).get("messages", {}) or {}
def get_message_by_id_and_message_id(
self, id: str, message_id: str
) -> Optional[dict]:
chat = self.get_chat_by_id(id)
if chat is None:
return None
return chat.chat.get("history", {}).get("messages", {}).get(message_id, {})
def upsert_message_to_chat_by_id_and_message_id(
self, id: str, message_id: str, message: dict
) -> Optional[ChatModel]:
+143 -7
View File
@@ -17,6 +17,25 @@ from sqlalchemy.sql import exists
####################
class MessageReaction(Base):
__tablename__ = "message_reaction"
id = Column(Text, primary_key=True)
user_id = Column(Text)
message_id = Column(Text)
name = Column(Text)
created_at = Column(BigInteger)
class MessageReactionModel(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: str
user_id: str
message_id: str
name: str
created_at: int # timestamp in epoch
class Message(Base):
__tablename__ = "message"
id = Column(Text, primary_key=True)
@@ -24,6 +43,8 @@ class Message(Base):
user_id = Column(Text)
channel_id = Column(Text, nullable=True)
parent_id = Column(Text, nullable=True)
content = Column(Text)
data = Column(JSON, nullable=True)
meta = Column(JSON, nullable=True)
@@ -39,6 +60,8 @@ class MessageModel(BaseModel):
user_id: str
channel_id: Optional[str] = None
parent_id: Optional[str] = None
content: str
data: Optional[dict] = None
meta: Optional[dict] = None
@@ -54,10 +77,23 @@ class MessageModel(BaseModel):
class MessageForm(BaseModel):
content: str
parent_id: Optional[str] = None
data: Optional[dict] = None
meta: Optional[dict] = None
class Reactions(BaseModel):
name: str
user_ids: list[str]
count: int
class MessageResponse(MessageModel):
latest_reply_at: Optional[int]
reply_count: int
reactions: list[Reactions]
class MessageTable:
def insert_new_message(
self, form_data: MessageForm, channel_id: str, user_id: str
@@ -71,6 +107,7 @@ class MessageTable:
"id": id,
"user_id": user_id,
"channel_id": channel_id,
"parent_id": form_data.parent_id,
"content": form_data.content,
"data": form_data.data,
"meta": form_data.meta,
@@ -85,10 +122,40 @@ class MessageTable:
db.refresh(result)
return MessageModel.model_validate(result) if result else None
def get_message_by_id(self, id: str) -> Optional[MessageModel]:
def get_message_by_id(self, id: str) -> Optional[MessageResponse]:
with get_db() as db:
message = db.get(Message, id)
return MessageModel.model_validate(message) if message else None
if not message:
return None
reactions = self.get_reactions_by_message_id(id)
replies = self.get_replies_by_message_id(id)
return MessageResponse(
**{
**MessageModel.model_validate(message).model_dump(),
"latest_reply_at": replies[0].created_at if replies else None,
"reply_count": len(replies),
"reactions": reactions,
}
)
def get_replies_by_message_id(self, id: str) -> list[MessageModel]:
with get_db() as db:
all_messages = (
db.query(Message)
.filter_by(parent_id=id)
.order_by(Message.created_at.desc())
.all()
)
return [MessageModel.model_validate(message) for message in all_messages]
def get_reply_user_ids_by_message_id(self, id: str) -> list[str]:
with get_db() as db:
return [
message.user_id
for message in db.query(Message).filter_by(parent_id=id).all()
]
def get_messages_by_channel_id(
self, channel_id: str, skip: int = 0, limit: int = 50
@@ -96,7 +163,7 @@ class MessageTable:
with get_db() as db:
all_messages = (
db.query(Message)
.filter_by(channel_id=channel_id)
.filter_by(channel_id=channel_id, parent_id=None)
.order_by(Message.created_at.desc())
.offset(skip)
.limit(limit)
@@ -104,19 +171,27 @@ class MessageTable:
)
return [MessageModel.model_validate(message) for message in all_messages]
def get_messages_by_user_id(
self, user_id: str, skip: int = 0, limit: int = 50
def get_messages_by_parent_id(
self, channel_id: str, parent_id: str, skip: int = 0, limit: int = 50
) -> list[MessageModel]:
with get_db() as db:
message = db.get(Message, parent_id)
if not message:
return []
all_messages = (
db.query(Message)
.filter_by(user_id=user_id)
.filter_by(channel_id=channel_id, parent_id=parent_id)
.order_by(Message.created_at.desc())
.offset(skip)
.limit(limit)
.all()
)
return [MessageModel.model_validate(message) for message in all_messages]
return [
MessageModel.model_validate(message) for message in all_messages
] + [MessageModel.model_validate(message)]
def update_message_by_id(
self, id: str, form_data: MessageForm
@@ -131,9 +206,70 @@ class MessageTable:
db.refresh(message)
return MessageModel.model_validate(message) if message else None
def add_reaction_to_message(
self, id: str, user_id: str, name: str
) -> Optional[MessageReactionModel]:
with get_db() as db:
reaction_id = str(uuid.uuid4())
reaction = MessageReactionModel(
id=reaction_id,
user_id=user_id,
message_id=id,
name=name,
created_at=int(time.time_ns()),
)
result = MessageReaction(**reaction.model_dump())
db.add(result)
db.commit()
db.refresh(result)
return MessageReactionModel.model_validate(result) if result else None
def get_reactions_by_message_id(self, id: str) -> list[Reactions]:
with get_db() as db:
all_reactions = db.query(MessageReaction).filter_by(message_id=id).all()
reactions = {}
for reaction in all_reactions:
if reaction.name not in reactions:
reactions[reaction.name] = {
"name": reaction.name,
"user_ids": [],
"count": 0,
}
reactions[reaction.name]["user_ids"].append(reaction.user_id)
reactions[reaction.name]["count"] += 1
return [Reactions(**reaction) for reaction in reactions.values()]
def remove_reaction_by_id_and_user_id_and_name(
self, id: str, user_id: str, name: str
) -> bool:
with get_db() as db:
db.query(MessageReaction).filter_by(
message_id=id, user_id=user_id, name=name
).delete()
db.commit()
return True
def delete_reactions_by_id(self, id: str) -> bool:
with get_db() as db:
db.query(MessageReaction).filter_by(message_id=id).delete()
db.commit()
return True
def delete_replies_by_id(self, id: str) -> bool:
with get_db() as db:
db.query(Message).filter_by(parent_id=id).delete()
db.commit()
return True
def delete_message_by_id(self, id: str) -> bool:
with get_db() as db:
db.query(Message).filter_by(id=id).delete()
# Delete all reactions to this message
db.query(MessageReaction).filter_by(message_id=id).delete()
db.commit()
return True
+4 -1
View File
@@ -14,7 +14,7 @@ from langchain_core.documents import Document
from open_webui.retrieval.vector.connector import VECTOR_DB_CLIENT
from open_webui.utils.misc import get_last_user_message
from open_webui.env import SRC_LOG_LEVELS
from open_webui.env import SRC_LOG_LEVELS, OFFLINE_MODE
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])
@@ -375,6 +375,9 @@ def get_model_path(model: str, update_model: bool = False):
local_files_only = not update_model
if OFFLINE_MODE:
local_files_only = True
snapshot_kwargs = {
"cache_dir": cache_dir,
"local_files_only": local_files_only,
+1 -1
View File
@@ -311,7 +311,7 @@ async def speech(request: Request, user=Depends(get_verified_user)):
elif request.app.state.config.TTS_ENGINE == "elevenlabs":
voice_id = payload.get("voice", "")
if voice_id not in get_available_voices():
if voice_id not in get_available_voices(request):
raise HTTPException(
status_code=400,
detail="Invalid voice id",
+14
View File
@@ -616,6 +616,8 @@ async def get_admin_config(request: Request, user=Depends(get_admin_user)):
"WEBUI_URL": request.app.state.config.WEBUI_URL,
"ENABLE_SIGNUP": request.app.state.config.ENABLE_SIGNUP,
"ENABLE_API_KEY": request.app.state.config.ENABLE_API_KEY,
"ENABLE_API_KEY_ENDPOINT_RESTRICTIONS": request.app.state.config.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS,
"API_KEY_ALLOWED_ENDPOINTS": request.app.state.config.API_KEY_ALLOWED_ENDPOINTS,
"ENABLE_CHANNELS": request.app.state.config.ENABLE_CHANNELS,
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
@@ -629,6 +631,8 @@ class AdminConfig(BaseModel):
WEBUI_URL: str
ENABLE_SIGNUP: bool
ENABLE_API_KEY: bool
ENABLE_API_KEY_ENDPOINT_RESTRICTIONS: bool
API_KEY_ALLOWED_ENDPOINTS: str
ENABLE_CHANNELS: bool
DEFAULT_USER_ROLE: str
JWT_EXPIRES_IN: str
@@ -643,7 +647,15 @@ async def update_admin_config(
request.app.state.config.SHOW_ADMIN_DETAILS = form_data.SHOW_ADMIN_DETAILS
request.app.state.config.WEBUI_URL = form_data.WEBUI_URL
request.app.state.config.ENABLE_SIGNUP = form_data.ENABLE_SIGNUP
request.app.state.config.ENABLE_API_KEY = form_data.ENABLE_API_KEY
request.app.state.config.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS = (
form_data.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS
)
request.app.state.config.API_KEY_ALLOWED_ENDPOINTS = (
form_data.API_KEY_ALLOWED_ENDPOINTS
)
request.app.state.config.ENABLE_CHANNELS = form_data.ENABLE_CHANNELS
if form_data.DEFAULT_USER_ROLE in ["pending", "user", "admin"]:
@@ -665,6 +677,8 @@ async def update_admin_config(
"WEBUI_URL": request.app.state.config.WEBUI_URL,
"ENABLE_SIGNUP": request.app.state.config.ENABLE_SIGNUP,
"ENABLE_API_KEY": request.app.state.config.ENABLE_API_KEY,
"ENABLE_API_KEY_ENDPOINT_RESTRICTIONS": request.app.state.config.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS,
"API_KEY_ALLOWED_ENDPOINTS": request.app.state.config.API_KEY_ALLOWED_ENDPOINTS,
"ENABLE_CHANNELS": request.app.state.config.ENABLE_CHANNELS,
"DEFAULT_USER_ROLE": request.app.state.config.DEFAULT_USER_ROLE,
"JWT_EXPIRES_IN": request.app.state.config.JWT_EXPIRES_IN,
+329 -13
View File
@@ -11,7 +11,12 @@ from open_webui.socket.main import sio, get_user_ids_from_room
from open_webui.models.users import Users, UserNameResponse
from open_webui.models.channels import Channels, ChannelModel, ChannelForm
from open_webui.models.messages import Messages, MessageModel, MessageForm
from open_webui.models.messages import (
Messages,
MessageModel,
MessageResponse,
MessageForm,
)
from open_webui.config import ENABLE_ADMIN_CHAT_ACCESS, ENABLE_ADMIN_EXPORT
@@ -49,7 +54,7 @@ async def get_channels(user=Depends(get_verified_user)):
@router.post("/create", response_model=Optional[ChannelModel])
async def create_new_channel(form_data: ChannelForm, user=Depends(get_admin_user)):
try:
channel = Channels.insert_new_channel(form_data, user.id)
channel = Channels.insert_new_channel(None, form_data, user.id)
return ChannelModel(**channel.model_dump())
except Exception as e:
log.exception(e)
@@ -134,11 +139,11 @@ async def delete_channel_by_id(id: str, user=Depends(get_admin_user)):
############################
class MessageUserModel(MessageModel):
class MessageUserResponse(MessageResponse):
user: UserNameResponse
@router.get("/{id}/messages", response_model=list[MessageUserModel])
@router.get("/{id}/messages", response_model=list[MessageUserResponse])
async def get_channel_messages(
id: str, skip: int = 0, limit: int = 50, user=Depends(get_verified_user)
):
@@ -164,10 +169,16 @@ async def get_channel_messages(
user = Users.get_user_by_id(message.user_id)
users[message.user_id] = user
replies = Messages.get_replies_by_message_id(message.id)
latest_reply_at = replies[0].created_at if replies else None
messages.append(
MessageUserModel(
MessageUserResponse(
**{
**message.model_dump(),
"reply_count": len(replies),
"latest_reply_at": latest_reply_at,
"reactions": Messages.get_reactions_by_message_id(message.id),
"user": UserNameResponse(**users[message.user_id].model_dump()),
}
)
@@ -236,10 +247,17 @@ async def post_new_message(
"message_id": message.id,
"data": {
"type": "message",
"data": {
**message.model_dump(),
"user": UserNameResponse(**user.model_dump()).model_dump(),
},
"data": MessageUserResponse(
**{
**message.model_dump(),
"reply_count": 0,
"latest_reply_at": None,
"reactions": Messages.get_reactions_by_message_id(
message.id
),
"user": UserNameResponse(**user.model_dump()),
}
).model_dump(),
},
"user": UserNameResponse(**user.model_dump()).model_dump(),
"channel": channel.model_dump(),
@@ -251,6 +269,35 @@ async def post_new_message(
to=f"channel:{channel.id}",
)
if message.parent_id:
# If this message is a reply, emit to the parent message as well
parent_message = Messages.get_message_by_id(message.parent_id)
if parent_message:
await sio.emit(
"channel-events",
{
"channel_id": channel.id,
"message_id": parent_message.id,
"data": {
"type": "message:reply",
"data": MessageUserResponse(
**{
**parent_message.model_dump(),
"user": UserNameResponse(
**Users.get_user_by_id(
parent_message.user_id
).model_dump()
),
}
).model_dump(),
},
"user": UserNameResponse(**user.model_dump()).model_dump(),
"channel": channel.model_dump(),
},
to=f"channel:{channel.id}",
)
active_user_ids = get_user_ids_from_room(f"channel:{channel.id}")
background_tasks.add_task(
@@ -269,6 +316,101 @@ async def post_new_message(
)
############################
# GetChannelMessage
############################
@router.get("/{id}/messages/{message_id}", response_model=Optional[MessageUserResponse])
async def get_channel_message(
id: str, message_id: str, user=Depends(get_verified_user)
):
channel = Channels.get_channel_by_id(id)
if not channel:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND
)
if user.role != "admin" and not has_access(
user.id, type="read", access_control=channel.access_control
):
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT()
)
message = Messages.get_message_by_id(message_id)
if not message:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND
)
if message.channel_id != id:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
)
return MessageUserResponse(
**{
**message.model_dump(),
"user": UserNameResponse(
**Users.get_user_by_id(message.user_id).model_dump()
),
}
)
############################
# GetChannelThreadMessages
############################
@router.get(
"/{id}/messages/{message_id}/thread", response_model=list[MessageUserResponse]
)
async def get_channel_thread_messages(
id: str,
message_id: str,
skip: int = 0,
limit: int = 50,
user=Depends(get_verified_user),
):
channel = Channels.get_channel_by_id(id)
if not channel:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND
)
if user.role != "admin" and not has_access(
user.id, type="read", access_control=channel.access_control
):
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT()
)
message_list = Messages.get_messages_by_parent_id(id, message_id, skip, limit)
users = {}
messages = []
for message in message_list:
if message.user_id not in users:
user = Users.get_user_by_id(message.user_id)
users[message.user_id] = user
messages.append(
MessageUserResponse(
**{
**message.model_dump(),
"reply_count": 0,
"latest_reply_at": None,
"reactions": Messages.get_reactions_by_message_id(message.id),
"user": UserNameResponse(**users[message.user_id].model_dump()),
}
)
)
return messages
############################
# UpdateMessageById
############################
@@ -306,6 +448,8 @@ async def update_message_by_id(
try:
message = Messages.update_message_by_id(message_id, form_data)
message = Messages.get_message_by_id(message_id)
if message:
await sio.emit(
"channel-events",
@@ -314,10 +458,14 @@ async def update_message_by_id(
"message_id": message.id,
"data": {
"type": "message:update",
"data": {
**message.model_dump(),
"user": UserNameResponse(**user.model_dump()).model_dump(),
},
"data": MessageUserResponse(
**{
**message.model_dump(),
"user": UserNameResponse(
**user.model_dump()
).model_dump(),
}
).model_dump(),
},
"user": UserNameResponse(**user.model_dump()).model_dump(),
"channel": channel.model_dump(),
@@ -333,6 +481,145 @@ async def update_message_by_id(
)
############################
# AddReactionToMessage
############################
class ReactionForm(BaseModel):
name: str
@router.post("/{id}/messages/{message_id}/reactions/add", response_model=bool)
async def add_reaction_to_message(
id: str, message_id: str, form_data: ReactionForm, user=Depends(get_verified_user)
):
channel = Channels.get_channel_by_id(id)
if not channel:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND
)
if user.role != "admin" and not has_access(
user.id, type="read", access_control=channel.access_control
):
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT()
)
message = Messages.get_message_by_id(message_id)
if not message:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND
)
if message.channel_id != id:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
)
try:
Messages.add_reaction_to_message(message_id, user.id, form_data.name)
message = Messages.get_message_by_id(message_id)
await sio.emit(
"channel-events",
{
"channel_id": channel.id,
"message_id": message.id,
"data": {
"type": "message:reaction:add",
"data": {
**message.model_dump(),
"user": UserNameResponse(
**Users.get_user_by_id(message.user_id).model_dump()
).model_dump(),
"name": form_data.name,
},
},
"user": UserNameResponse(**user.model_dump()).model_dump(),
"channel": channel.model_dump(),
},
to=f"channel:{channel.id}",
)
return True
except Exception as e:
log.exception(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
)
############################
# RemoveReactionById
############################
@router.post("/{id}/messages/{message_id}/reactions/remove", response_model=bool)
async def remove_reaction_by_id_and_user_id_and_name(
id: str, message_id: str, form_data: ReactionForm, user=Depends(get_verified_user)
):
channel = Channels.get_channel_by_id(id)
if not channel:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND
)
if user.role != "admin" and not has_access(
user.id, type="read", access_control=channel.access_control
):
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT()
)
message = Messages.get_message_by_id(message_id)
if not message:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND
)
if message.channel_id != id:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
)
try:
Messages.remove_reaction_by_id_and_user_id_and_name(
message_id, user.id, form_data.name
)
message = Messages.get_message_by_id(message_id)
await sio.emit(
"channel-events",
{
"channel_id": channel.id,
"message_id": message.id,
"data": {
"type": "message:reaction:remove",
"data": {
**message.model_dump(),
"user": UserNameResponse(
**Users.get_user_by_id(message.user_id).model_dump()
).model_dump(),
"name": form_data.name,
},
},
"user": UserNameResponse(**user.model_dump()).model_dump(),
"channel": channel.model_dump(),
},
to=f"channel:{channel.id}",
)
return True
except Exception as e:
log.exception(e)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
)
############################
# DeleteMessageById
############################
@@ -386,6 +673,35 @@ async def delete_message_by_id(
to=f"channel:{channel.id}",
)
if message.parent_id:
# If this message is a reply, emit to the parent message as well
parent_message = Messages.get_message_by_id(message.parent_id)
if parent_message:
await sio.emit(
"channel-events",
{
"channel_id": channel.id,
"message_id": parent_message.id,
"data": {
"type": "message:reply",
"data": MessageUserResponse(
**{
**parent_message.model_dump(),
"user": UserNameResponse(
**Users.get_user_by_id(
parent_message.user_id
).model_dump()
),
}
).model_dump(),
},
"user": UserNameResponse(**user.model_dump()).model_dump(),
"channel": channel.model_dump(),
},
to=f"channel:{channel.id}",
)
return True
except Exception as e:
log.exception(e)
+1 -1
View File
@@ -348,7 +348,7 @@ async def delete_file_by_id(id: str, user=Depends(get_verified_user)):
result = Files.delete_file_by_id(id)
if result:
try:
Storage.delete_file(file.filename)
Storage.delete_file(file.path)
except Exception as e:
log.exception(e)
log.error(f"Error deleting files")
+3 -3
View File
@@ -236,7 +236,7 @@ def get_image_model(request):
try:
r = requests.get(
url=f"{request.app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/options",
headers={"authorization": get_automatic1111_api_auth()},
headers={"authorization": get_automatic1111_api_auth(request)},
)
options = r.json()
return options["sd_model_checkpoint"]
@@ -354,7 +354,7 @@ def get_models(request: Request, user=Depends(get_verified_user)):
):
r = requests.get(
url=f"{request.app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/sd-models",
headers={"authorization": get_automatic1111_api_auth()},
headers={"authorization": get_automatic1111_api_auth(request)},
)
models = r.json()
return list(
@@ -578,7 +578,7 @@ async def image_generations(
requests.post,
url=f"{request.app.state.config.AUTOMATIC1111_BASE_URL}/sdapi/v1/txt2img",
json=data,
headers={"authorization": get_automatic1111_api_auth()},
headers={"authorization": get_automatic1111_api_auth(request)},
)
res = r.json()
+4 -8
View File
@@ -419,13 +419,6 @@ def remove_file_from_knowledge_by_id(
collection_name=knowledge.id, filter={"file_id": form_data.file_id}
)
result = VECTOR_DB_CLIENT.query(
collection_name=knowledge.id,
filter={"file_id": form_data.file_id},
)
Files.delete_file_by_id(form_data.file_id)
if knowledge:
data = knowledge.data or {}
file_ids = data.get("file_ids", [])
@@ -527,6 +520,7 @@ async def reset_knowledge_by_id(id: str, user=Depends(get_verified_user)):
@router.post("/{id}/files/batch/add", response_model=Optional[KnowledgeFilesResponse])
def add_files_to_knowledge_batch(
request: Request,
id: str,
form_data: list[KnowledgeFileIdForm],
user=Depends(get_verified_user),
@@ -562,7 +556,9 @@ def add_files_to_knowledge_batch(
# Process files
try:
result = process_files_batch(
BatchProcessFilesForm(files=files, collection_name=id)
request=request,
form_data=BatchProcessFilesForm(files=files, collection_name=id),
user=user,
)
except Exception as e:
log.error(
+3 -7
View File
@@ -124,18 +124,14 @@ def process_pipeline_outlet_filter(request, payload, user, models):
f"{url}/{filter['id']}/filter/outlet",
headers={"Authorization": f"Bearer {key}"},
json={
"user": {
"id": user.id,
"name": user.name,
"email": user.email,
"role": user.role,
},
"body": data,
"user": user,
"body": payload,
},
)
r.raise_for_status()
data = r.json()
payload = data
except Exception as e:
# Handle connection error here
print(f"Connection error: {e}")
+6 -2
View File
@@ -347,7 +347,7 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)):
return {
"status": True,
"pdf_extract_images": request.app.state.config.PDF_EXTRACT_IMAGES,
"ENABLE_GOOGLE_DRIVE_INTEGRATION": request.app.state.config.ENABLE_GOOGLE_DRIVE_INTEGRATION,
"enable_google_drive_integration": request.app.state.config.ENABLE_GOOGLE_DRIVE_INTEGRATION,
"content_extraction": {
"engine": request.app.state.config.CONTENT_EXTRACTION_ENGINE,
"tika_server_url": request.app.state.config.TIKA_SERVER_URL,
@@ -1458,6 +1458,7 @@ class BatchProcessFilesResponse(BaseModel):
@router.post("/process/files/batch")
def process_files_batch(
request: Request,
form_data: BatchProcessFilesForm,
user=Depends(get_verified_user),
) -> BatchProcessFilesResponse:
@@ -1504,7 +1505,10 @@ def process_files_batch(
if all_docs:
try:
save_docs_to_vector_db(
docs=all_docs, collection_name=collection_name, add=True
request=request,
docs=all_docs,
collection_name=collection_name,
add=True,
)
# Update all files with collection name
+11 -1
View File
@@ -10,6 +10,9 @@ from open_webui.models.users import (
UserSettings,
UserUpdateForm,
)
from open_webui.socket.main import get_active_status_by_user_id
from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS
from fastapi import APIRouter, Depends, HTTPException, Request, status
@@ -196,6 +199,7 @@ async def update_user_info_by_session_user(
class UserResponse(BaseModel):
name: str
profile_image_url: str
active: Optional[bool] = None
@router.get("/{user_id}", response_model=UserResponse)
@@ -216,7 +220,13 @@ async def get_user_by_id(user_id: str, user=Depends(get_verified_user)):
user = Users.get_user_by_id(user_id)
if user:
return UserResponse(name=user.name, profile_image_url=user.profile_image_url)
return UserResponse(
**{
"name": user.name,
"profile_image_url": user.profile_image_url,
"active": get_active_status_by_user_id(user_id),
}
)
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
+78 -15
View File
@@ -4,7 +4,7 @@ import logging
import sys
import time
from open_webui.models.users import Users
from open_webui.models.users import Users, UserNameResponse
from open_webui.models.channels import Channels
from open_webui.models.chats import Chats
@@ -152,14 +152,14 @@ async def connect(sid, environ, auth):
user = Users.get_user_by_id(data["id"])
if user:
SESSION_POOL[sid] = user.id
SESSION_POOL[sid] = user.model_dump()
if user.id in USER_POOL:
USER_POOL[user.id] = USER_POOL[user.id] + [sid]
else:
USER_POOL[user.id] = [sid]
# print(f"user {user.name}({user.id}) connected with session ID {sid}")
await sio.emit("user-count", {"count": len(USER_POOL.items())})
await sio.emit("user-list", {"user_ids": list(USER_POOL.keys())})
await sio.emit("usage", {"models": get_models_in_use()})
@@ -178,7 +178,7 @@ async def user_join(sid, data):
if not user:
return
SESSION_POOL[sid] = user.id
SESSION_POOL[sid] = user.model_dump()
if user.id in USER_POOL:
USER_POOL[user.id] = USER_POOL[user.id] + [sid]
else:
@@ -192,7 +192,7 @@ async def user_join(sid, data):
# print(f"user {user.name}({user.id}) connected with session ID {sid}")
await sio.emit("user-count", {"count": len(USER_POOL.items())})
await sio.emit("user-list", {"user_ids": list(USER_POOL.keys())})
return {"id": user.id, "name": user.name}
@@ -217,28 +217,52 @@ async def join_channel(sid, data):
await sio.enter_room(sid, f"channel:{channel.id}")
@sio.on("user-count")
async def user_count(sid):
await sio.emit("user-count", {"count": len(USER_POOL.items())})
@sio.on("channel-events")
async def channel_events(sid, data):
room = f"channel:{data['channel_id']}"
participants = sio.manager.get_participants(
namespace="/",
room=room,
)
sids = [sid for sid, _ in participants]
if sid not in sids:
return
event_data = data["data"]
event_type = event_data["type"]
if event_type == "typing":
await sio.emit(
"channel-events",
{
"channel_id": data["channel_id"],
"message_id": data.get("message_id", None),
"data": event_data,
"user": UserNameResponse(**SESSION_POOL[sid]).model_dump(),
},
room=room,
)
@sio.on("chat")
async def chat(sid, data):
print("chat", sid, SESSION_POOL[sid], data)
@sio.on("user-list")
async def user_list(sid):
await sio.emit("user-list", {"user_ids": list(USER_POOL.keys())})
@sio.event
async def disconnect(sid):
if sid in SESSION_POOL:
user_id = SESSION_POOL[sid]
user = SESSION_POOL[sid]
del SESSION_POOL[sid]
user_id = user["id"]
USER_POOL[user_id] = [_sid for _sid in USER_POOL[user_id] if _sid != sid]
if len(USER_POOL[user_id]) == 0:
del USER_POOL[user_id]
await sio.emit("user-count", {"count": len(USER_POOL)})
await sio.emit("user-list", {"user_ids": list(USER_POOL.keys())})
else:
pass
# print(f"Unknown session ID {sid} disconnected")
@@ -269,6 +293,34 @@ def get_event_emitter(request_info):
event_data.get("data", {}),
)
if "type" in event_data and event_data["type"] == "message":
message = Chats.get_message_by_id_and_message_id(
request_info["chat_id"],
request_info["message_id"],
)
content = message.get("content", "")
content += event_data.get("data", {}).get("content", "")
Chats.upsert_message_to_chat_by_id_and_message_id(
request_info["chat_id"],
request_info["message_id"],
{
"content": content,
},
)
if "type" in event_data and event_data["type"] == "replace":
content = event_data.get("data", {}).get("content", "")
Chats.upsert_message_to_chat_by_id_and_message_id(
request_info["chat_id"],
request_info["message_id"],
{
"content": content,
},
)
return __event_emitter__
@@ -289,7 +341,10 @@ def get_event_call(request_info):
def get_user_id_from_session_pool(sid):
return SESSION_POOL.get(sid)
user = SESSION_POOL.get(sid)
if user:
return user["id"]
return None
def get_user_ids_from_room(room):
@@ -299,6 +354,14 @@ def get_user_ids_from_room(room):
)
active_user_ids = list(
set([SESSION_POOL.get(session_id[0]) for session_id in active_session_ids])
set(
[SESSION_POOL.get(session_id[0])["id"] for session_id in active_session_ids]
)
)
return active_user_ids
def get_active_status_by_user_id(user_id):
if user_id in USER_POOL:
return True
return False
+3 -1
View File
@@ -147,8 +147,10 @@ class StorageProvider:
return self._get_file_from_s3(file_path)
return self._get_file_from_local(file_path)
def delete_file(self, filename: str) -> None:
def delete_file(self, file_path: str) -> None:
"""Deletes a file either from S3 or the local file system."""
filename = file_path.split("/")[-1]
if self.storage_provider == "s3":
self._delete_from_s3(filename)
+12 -5
View File
@@ -96,11 +96,18 @@ def get_current_user(
status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.API_KEY_NOT_ALLOWED
)
allowed_paths = ["/api/models", "/api/chat/completions"]
if request.url.path not in allowed_paths:
raise HTTPException(
status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.API_KEY_NOT_ALLOWED
)
if request.app.state.config.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS:
allowed_paths = [
path.strip()
for path in str(request.app.state.config.API_KEY_ALLOWED_PATHS).split(
","
)
]
if request.url.path not in allowed_paths:
raise HTTPException(
status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.API_KEY_NOT_ALLOWED
)
return get_current_user_by_api_key(token)
+5
View File
@@ -157,6 +157,9 @@ async def generate_chat_completion(
)
chat_completion = generate_chat_completion
async def chat_completed(request: Request, form_data: dict, user: Any):
if not request.app.state.MODELS:
await get_all_models(request)
@@ -179,6 +182,7 @@ async def chat_completed(request: Request, form_data: dict, user: Any):
"chat_id": data["chat_id"],
"message_id": data["id"],
"session_id": data["session_id"],
"user_id": user.id,
}
)
@@ -187,6 +191,7 @@ async def chat_completed(request: Request, form_data: dict, user: Any):
"chat_id": data["chat_id"],
"message_id": data["id"],
"session_id": data["session_id"],
"user_id": user.id,
}
)
+76 -41
View File
@@ -23,7 +23,7 @@ from open_webui.models.users import Users
from open_webui.socket.main import (
get_event_call,
get_event_emitter,
get_user_id_from_session_pool,
get_active_status_by_user_id,
)
from open_webui.routers.tasks import (
generate_queries,
@@ -65,6 +65,7 @@ from open_webui.env import (
SRC_LOG_LEVELS,
GLOBAL_LOG_LEVEL,
BYPASS_MODEL_ACCESS_CONTROL,
ENABLE_REALTIME_CHAT_SAVE,
)
from open_webui.constants import TASKS
@@ -560,7 +561,6 @@ def apply_params_to_form_data(form_data, model):
if "frequency_penalty" in params:
form_data["frequency_penalty"] = params["frequency_penalty"]
return form_data
@@ -750,7 +750,7 @@ async def process_chat_response(
):
async def background_tasks_handler():
message_map = Chats.get_messages_by_chat_id(metadata["chat_id"])
message = message_map.get(metadata["message_id"])
message = message_map.get(metadata["message_id"]) if message_map else None
if message:
messages = get_message_list(message_map, message.get("id"))
@@ -776,7 +776,10 @@ async def process_chat_response(
"content",
message.get("content", "New Chat"),
)
)
).strip()
if not title:
title = messages[0].get("content", "New Chat")
Chats.update_chat_title_by_id(metadata["chat_id"], title)
@@ -893,7 +896,7 @@ async def process_chat_response(
)
# Send a webhook notification if the user is not active
if get_user_id_from_session_pool(metadata["session_id"]) is None:
if get_active_status_by_user_id(user.id) is None:
webhook_url = Users.get_user_webhook_url_by_id(user.id)
if webhook_url:
post_webhook(
@@ -925,6 +928,11 @@ async def process_chat_response(
# Handle as a background task
async def post_response_handler(response, events):
message = Chats.get_message_by_id_and_message_id(
metadata["chat_id"], metadata["message_id"]
)
content = message.get("content", "") if message else ""
try:
for event in events:
await event_emitter(
@@ -943,9 +951,6 @@ async def process_chat_response(
},
)
assistant_message = get_last_assistant_message(form_data["messages"])
content = assistant_message if assistant_message else ""
async for line in response.body_iterator:
line = line.decode("utf-8") if isinstance(line, bytes) else line
data = line
@@ -974,7 +979,6 @@ async def process_chat_response(
)
else:
value = (
data.get("choices", [])[0]
.get("delta", {})
@@ -984,55 +988,85 @@ async def process_chat_response(
if value:
content = f"{content}{value}"
# Save message in the database
Chats.upsert_message_to_chat_by_id_and_message_id(
metadata["chat_id"],
metadata["message_id"],
{
if ENABLE_REALTIME_CHAT_SAVE:
# Save message in the database
Chats.upsert_message_to_chat_by_id_and_message_id(
metadata["chat_id"],
metadata["message_id"],
{
"content": content,
},
)
else:
data = {
"content": content,
},
)
}
await event_emitter(
{
"type": "chat:completion",
"data": data,
}
)
except Exception as e:
done = "data: [DONE]" in line
title = Chats.get_chat_title_by_id(metadata["chat_id"])
if done:
data = {"done": True, "content": content, "title": title}
# Send a webhook notification if the user is not active
if (
get_user_id_from_session_pool(metadata["session_id"])
is None
):
webhook_url = Users.get_user_webhook_url_by_id(user.id)
if webhook_url:
post_webhook(
webhook_url,
f"{title} - {request.app.state.config.WEBUI_URL}/c/{metadata['chat_id']}\n\n{content}",
{
"action": "chat",
"message": content,
"title": title,
"url": f"{request.app.state.config.WEBUI_URL}/c/{metadata['chat_id']}",
},
)
pass
else:
continue
await event_emitter(
title = Chats.get_chat_title_by_id(metadata["chat_id"])
data = {"done": True, "content": content, "title": title}
if not ENABLE_REALTIME_CHAT_SAVE:
# Save message in the database
Chats.upsert_message_to_chat_by_id_and_message_id(
metadata["chat_id"],
metadata["message_id"],
{
"type": "chat:completion",
"data": data,
}
"content": content,
},
)
# Send a webhook notification if the user is not active
if get_active_status_by_user_id(user.id) is None:
webhook_url = Users.get_user_webhook_url_by_id(user.id)
if webhook_url:
post_webhook(
webhook_url,
f"{title} - {request.app.state.config.WEBUI_URL}/c/{metadata['chat_id']}\n\n{content}",
{
"action": "chat",
"message": content,
"title": title,
"url": f"{request.app.state.config.WEBUI_URL}/c/{metadata['chat_id']}",
},
)
await event_emitter(
{
"type": "chat:completion",
"data": data,
}
)
await background_tasks_handler()
except asyncio.CancelledError:
print("Task was cancelled!")
await event_emitter({"type": "task-cancelled"})
if not ENABLE_REALTIME_CHAT_SAVE:
# Save message in the database
Chats.upsert_message_to_chat_by_id_and_message_id(
metadata["chat_id"],
metadata["message_id"],
{
"content": content,
},
)
if response.background is not None:
await response.background()
@@ -1056,4 +1090,5 @@ async def process_chat_response(
return StreamingResponse(
stream_wrapper(response.body_iterator, events),
headers=dict(response.headers),
background=response.background,
)
+4
View File
@@ -160,6 +160,10 @@ def convert_payload_openai_to_ollama(openai_payload: dict) -> dict:
# If there are advanced parameters in the payload, format them in Ollama's options field
ollama_options = {}
if openai_payload.get("options"):
ollama_payload["options"] = openai_payload["options"]
ollama_options = openai_payload["options"]
# Handle parameters which map directly
for param in ["temperature", "top_p", "seed"]:
if param in openai_payload:
+6 -19
View File
@@ -29,7 +29,7 @@ async def convert_streaming_response_ollama_to_openai(ollama_streaming_response)
(
(
data.get("eval_count", 0)
/ ((data.get("eval_duration", 0) / 1_000_000_000))
/ ((data.get("eval_duration", 0) / 10_000_000))
)
* 100
),
@@ -43,12 +43,7 @@ async def convert_streaming_response_ollama_to_openai(ollama_streaming_response)
(
(
data.get("prompt_eval_count", 0)
/ (
(
data.get("prompt_eval_duration", 0)
/ 1_000_000_000
)
)
/ ((data.get("prompt_eval_duration", 0) / 10_000_000))
)
* 100
),
@@ -57,20 +52,12 @@ async def convert_streaming_response_ollama_to_openai(ollama_streaming_response)
if data.get("prompt_eval_duration", 0) > 0
else "N/A"
),
"total_duration": round(
((data.get("total_duration", 0) / 1_000_000) * 100), 2
),
"load_duration": round(
((data.get("load_duration", 0) / 1_000_000) * 100), 2
),
"total_duration": data.get("total_duration", 0),
"load_duration": data.get("load_duration", 0),
"prompt_eval_count": data.get("prompt_eval_count", 0),
"prompt_eval_duration": round(
((data.get("prompt_eval_duration", 0) / 1_000_000) * 100), 2
),
"prompt_eval_duration": data.get("prompt_eval_duration", 0),
"eval_count": data.get("eval_count", 0),
"eval_duration": round(
((data.get("eval_duration", 0) / 1_000_000) * 100), 2
),
"eval_duration": data.get("eval_duration", 0),
"approximate_total": (
lambda s: f"{s // 3600}h{(s % 3600) // 60}m{s % 60}s"
)((data.get("total_duration", 0) or 0) // 1_000_000_000),
+9 -2
View File
@@ -1,12 +1,12 @@
{
"name": "open-webui",
"version": "0.5.1",
"version": "0.5.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "open-webui",
"version": "0.5.1",
"version": "0.5.3",
"dependencies": {
"@codemirror/lang-javascript": "^6.2.2",
"@codemirror/lang-python": "^6.1.6",
@@ -16,6 +16,7 @@
"@mediapipe/tasks-vision": "^0.10.17",
"@pyscript/core": "^0.4.32",
"@sveltejs/adapter-node": "^2.0.0",
"@sveltejs/svelte-virtual-list": "^3.0.1",
"@tiptap/core": "^2.10.0",
"@tiptap/extension-code-block-lowlight": "^2.10.0",
"@tiptap/extension-highlight": "^2.10.0",
@@ -2291,6 +2292,12 @@
"vite": "^5.0.3 || ^6.0.0"
}
},
"node_modules/@sveltejs/svelte-virtual-list": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@sveltejs/svelte-virtual-list/-/svelte-virtual-list-3.0.1.tgz",
"integrity": "sha512-aF9TptS7NKKS7/TqpsxQBSDJ9Q0XBYzBehCeIC5DzdMEgrJZpIYao9LRLnyyo6SVodpapm2B7FE/Lj+FSA5/SQ==",
"license": "LIL"
},
"node_modules/@sveltejs/vite-plugin-svelte": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz",
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "open-webui",
"version": "0.5.1",
"version": "0.5.3",
"private": true,
"scripts": {
"dev": "npm run pyodide:fetch && vite dev --host",
@@ -50,7 +50,6 @@
"type": "module",
"dependencies": {
"@codemirror/lang-javascript": "^6.2.2",
"codemirror-lang-hcl": "^0.0.0-beta.2",
"@codemirror/lang-python": "^6.1.6",
"@codemirror/language-data": "^6.5.1",
"@codemirror/theme-one-dark": "^6.1.2",
@@ -58,6 +57,7 @@
"@mediapipe/tasks-vision": "^0.10.17",
"@pyscript/core": "^0.4.32",
"@sveltejs/adapter-node": "^2.0.0",
"@sveltejs/svelte-virtual-list": "^3.0.1",
"@tiptap/core": "^2.10.0",
"@tiptap/extension-code-block-lowlight": "^2.10.0",
"@tiptap/extension-highlight": "^2.10.0",
@@ -69,6 +69,7 @@
"async": "^3.2.5",
"bits-ui": "^0.19.7",
"codemirror": "^6.0.1",
"codemirror-lang-hcl": "^0.0.0-beta.2",
"crc-32": "^1.2.2",
"dayjs": "^1.11.10",
"dompurify": "^3.1.6",
+122
View File
@@ -1,4 +1,5 @@
import { WEBUI_API_BASE_URL } from '$lib/constants';
import { t } from 'i18next';
type ChannelForm = {
name: string;
@@ -207,7 +208,48 @@ export const getChannelMessages = async (
return res;
};
export const getChannelThreadMessages = async (
token: string = '',
channel_id: string,
message_id: string,
skip: number = 0,
limit: number = 50
) => {
let error = null;
const res = await fetch(
`${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/thread?skip=${skip}&limit=${limit}`,
{
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
authorization: `Bearer ${token}`
}
}
)
.then(async (res) => {
if (!res.ok) throw await res.json();
return res.json();
})
.then((json) => {
return json;
})
.catch((err) => {
error = err.detail;
console.log(err);
return null;
});
if (error) {
throw error;
}
return res;
};
type MessageForm = {
parent_id?: string;
content: string;
data?: object;
meta?: object;
@@ -285,6 +327,86 @@ export const updateMessage = async (
return res;
};
export const addReaction = async (
token: string = '',
channel_id: string,
message_id: string,
name: string
) => {
let error = null;
const res = await fetch(
`${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/reactions/add`,
{
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
authorization: `Bearer ${token}`
},
body: JSON.stringify({ name })
}
)
.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 removeReaction = async (
token: string = '',
channel_id: string,
message_id: string,
name: string
) => {
let error = null;
const res = await fetch(
`${WEBUI_API_BASE_URL}/channels/${channel_id}/messages/${message_id}/reactions/remove`,
{
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
authorization: `Bearer ${token}`
},
body: JSON.stringify({ name })
}
)
.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 deleteMessage = async (token: string = '', channel_id: string, message_id: string) => {
let error = null;
@@ -112,12 +112,48 @@
</div>
</div>
<div class=" flex w-full justify-between pr-2">
<div class=" self-center text-xs font-medium">{$i18n.t('Enable API Key Auth')}</div>
<div class=" flex w-full justify-between pr-2 my-3">
<div class=" self-center text-xs font-medium">{$i18n.t('Enable API Key')}</div>
<Switch bind:state={adminConfig.ENABLE_API_KEY} />
</div>
{#if adminConfig?.ENABLE_API_KEY}
<div class=" flex w-full justify-between pr-2 my-3">
<div class=" self-center text-xs font-medium">
{$i18n.t('API Key Endpoint Restrictions')}
</div>
<Switch bind:state={adminConfig.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS} />
</div>
{#if adminConfig?.ENABLE_API_KEY_ENDPOINT_RESTRICTIONS}
<div class=" flex w-full flex-col pr-2">
<div class=" text-xs font-medium">
{$i18n.t('Allowed Endpoints')}
</div>
<input
class="w-full mt-1 rounded-lg text-sm dark:text-gray-300 bg-transparent outline-none"
type="text"
placeholder={`e.g.) /api/v1/messages, /api/v1/channels`}
bind:value={adminConfig.API_KEY_ALLOWED_ENDPOINTS}
/>
<div class="mt-2 text-xs text-gray-400 dark:text-gray-500">
<!-- https://docs.openwebui.com/getting-started/advanced-topics/api-endpoints -->
<a
href="https://docs.openwebui.com/getting-started/advanced-topics/api-endpoints"
target="_blank"
class=" text-gray-300 font-medium underline"
>
{$i18n.t('To learn more about available endpoints, visit our documentation.')}
</a>
</div>
</div>
{/if}
{/if}
<hr class=" border-gray-50 dark:border-gray-850 my-2" />
<div class="my-3 flex w-full items-center justify-between pr-2">
+192 -45
View File
@@ -1,14 +1,19 @@
<script lang="ts">
import { toast } from 'svelte-sonner';
import { onDestroy, onMount, tick } from 'svelte';
import { Pane, PaneGroup, PaneResizer } from 'paneforge';
import { chatId, showSidebar, socket } from '$lib/stores';
import { onDestroy, onMount, tick } from 'svelte';
import { goto } from '$app/navigation';
import { chatId, showSidebar, socket, user } from '$lib/stores';
import { getChannelById, getChannelMessages, sendMessage } from '$lib/apis/channels';
import Messages from './Messages.svelte';
import MessageInput from './MessageInput.svelte';
import { goto } from '$app/navigation';
import Navbar from './Navbar.svelte';
import Drawer from '../common/Drawer.svelte';
import EllipsisVertical from '../icons/EllipsisVertical.svelte';
import Thread from './Thread.svelte';
export let id = '';
@@ -20,18 +25,29 @@
let channel = null;
let messages = null;
let threadId = null;
let typingUsers = [];
let typingUsersTimeout = {};
$: if (id) {
initHandler();
}
const scrollToBottom = () => {
messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight;
if (messagesContainerElement) {
messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight;
}
};
const initHandler = async () => {
top = false;
messages = null;
channel = null;
threadId = null;
typingUsers = [];
typingUsersTimeout = {};
channel = await getChannelById(localStorage.token, id).catch((error) => {
return null;
@@ -41,7 +57,7 @@
messages = await getChannelMessages(localStorage.token, id, 0);
if (messages) {
messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight;
scrollToBottom();
if (messages.length < 50) {
top = true;
@@ -53,29 +69,68 @@
};
const channelEventHandler = async (event) => {
console.log(event);
if (event.channel_id === id) {
const type = event?.data?.type ?? null;
const data = event?.data?.data ?? null;
if (type === 'message') {
console.log('message', data);
messages = [data, ...messages];
await tick();
if (scrollEnd) {
messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight;
if ((data?.parent_id ?? null) === null) {
messages = [data, ...messages];
if (typingUsers.find((user) => user.id === event.user.id)) {
typingUsers = typingUsers.filter((user) => user.id !== event.user.id);
}
await tick();
if (scrollEnd) {
scrollToBottom();
}
}
} else if (type === 'message:update') {
console.log('message:update', data);
const idx = messages.findIndex((message) => message.id === data.id);
if (idx !== -1) {
messages[idx] = data;
}
} else if (type === 'message:delete') {
console.log('message:delete', data);
messages = messages.filter((message) => message.id !== data.id);
} else if (type === 'message:reply') {
const idx = messages.findIndex((message) => message.id === data.id);
if (idx !== -1) {
messages[idx] = data;
}
} else if (type.includes('message:reaction')) {
const idx = messages.findIndex((message) => message.id === data.id);
if (idx !== -1) {
messages[idx] = data;
}
} else if (type === 'typing' && event.message_id === null) {
if (event.user.id === $user.id) {
return;
}
typingUsers = data.typing
? [
...typingUsers,
...(typingUsers.find((user) => user.id === event.user.id)
? []
: [
{
id: event.user.id,
name: event.user.name
}
])
]
: typingUsers.filter((user) => user.id !== event.user.id);
if (typingUsersTimeout[event.user.id]) {
clearTimeout(typingUsersTimeout[event.user.id]);
}
typingUsersTimeout[event.user.id] = setTimeout(() => {
typingUsers = typingUsers.filter((user) => user.id !== event.user.id);
}, 5000);
}
}
};
@@ -97,59 +152,151 @@
}
};
const onChange = async () => {
$socket?.emit('channel-events', {
channel_id: id,
message_id: null,
data: {
type: 'typing',
data: {
typing: true
}
}
});
};
let mediaQuery;
let largeScreen = false;
onMount(() => {
if ($chatId) {
chatId.set('');
}
$socket?.on('channel-events', channelEventHandler);
mediaQuery = window.matchMedia('(min-width: 1024px)');
const handleMediaQuery = async (e) => {
if (e.matches) {
largeScreen = true;
} else {
largeScreen = false;
}
};
mediaQuery.addEventListener('change', handleMediaQuery);
handleMediaQuery(mediaQuery);
});
onDestroy(() => {
// $socket?.off('channel-events', channelEventHandler);
$socket?.off('channel-events', channelEventHandler);
});
</script>
<svelte:head>
<title>#{channel?.name ?? 'Channel'} | Open WebUI</title>
</svelte:head>
<div
class="h-screen max-h-[100dvh] {$showSidebar
? 'md:max-w-[calc(100%-260px)]'
: ''} w-full max-w-full flex flex-col"
id="channel-container"
>
<Navbar {channel} />
<PaneGroup direction="horizontal" class="w-full h-full">
<Pane defaultSize={50} minSize={50} class="h-full flex flex-col w-full relative">
<Navbar {channel} />
<div class="flex-1 overflow-y-auto">
{#if channel}
<div
class=" pb-2.5 max-w-full z-10 scrollbar-hidden w-full h-full pt-6 flex-1 flex flex-col-reverse overflow-auto"
id="messages-container"
bind:this={messagesContainerElement}
on:scroll={(e) => {
scrollEnd = Math.abs(messagesContainerElement.scrollTop) <= 50;
}}
<div class="flex-1 overflow-y-auto">
{#if channel}
<div
class=" pb-2.5 max-w-full z-10 scrollbar-hidden w-full h-full pt-6 flex-1 flex flex-col-reverse overflow-auto"
id="messages-container"
bind:this={messagesContainerElement}
on:scroll={(e) => {
scrollEnd = Math.abs(messagesContainerElement.scrollTop) <= 50;
}}
>
{#key id}
<Messages
{channel}
{messages}
{top}
onThread={(id) => {
threadId = id;
}}
onLoad={async () => {
const newMessages = await getChannelMessages(
localStorage.token,
id,
messages.length
);
messages = [...messages, ...newMessages];
if (newMessages.length < 50) {
top = true;
return;
}
}}
/>
{/key}
</div>
{/if}
</div>
<div class=" pb-[1rem]">
<MessageInput
id="root"
{typingUsers}
{onChange}
onSubmit={submitHandler}
{scrollToBottom}
{scrollEnd}
/>
</div>
</Pane>
{#if !largeScreen}
{#if threadId !== null}
<Drawer
show={threadId !== null}
on:close={() => {
threadId = null;
}}
>
<div class=" {threadId !== null ? ' h-screen w-screen' : 'px-6 py-4'} h-full">
<Thread
{threadId}
{channel}
onClose={() => {
threadId = null;
}}
/>
</div>
</Drawer>
{/if}
{:else if threadId !== null}
<PaneResizer
class="relative flex w-[3px] items-center justify-center bg-background group bg-gray-50 dark:bg-gray-850"
>
{#key id}
<Messages
<div class="z-10 flex h-7 w-5 items-center justify-center rounded-sm">
<EllipsisVertical className="size-4 invisible group-hover:visible" />
</div>
</PaneResizer>
<Pane defaultSize={50} minSize={30} class="h-full w-full">
<div class="h-full w-full shadow-xl">
<Thread
{threadId}
{channel}
{messages}
{top}
onLoad={async () => {
const newMessages = await getChannelMessages(localStorage.token, id, messages.length);
messages = [...messages, ...newMessages];
if (newMessages.length < 50) {
top = true;
return;
}
onClose={() => {
threadId = null;
}}
/>
{/key}
</div>
</div>
</Pane>
{/if}
</div>
<div class=" pb-[1rem]">
<MessageInput onSubmit={submitHandler} {scrollToBottom} {scrollEnd} />
</div>
</PaneGroup>
</div>
+82 -103
View File
@@ -6,7 +6,7 @@
const i18n = getContext('i18n');
import { config, mobile, settings } from '$lib/stores';
import { config, mobile, settings, socket } from '$lib/stores';
import { blobToFile, compressImage } from '$lib/utils';
import Tooltip from '../common/Tooltip.svelte';
@@ -23,6 +23,8 @@
export let placeholder = $i18n.t('Send a Message');
export let transparentBackground = false;
export let id = null;
let draggedOver = false;
let recording = false;
@@ -32,9 +34,12 @@
let filesInputElement;
let inputFiles;
export let typingUsers = [];
export let onSubmit: Function;
export let onChange: Function;
export let scrollEnd = true;
export let scrollToBottom: Function;
export let scrollToBottom: Function = () => {};
const screenCaptureHandler = async () => {
try {
@@ -254,13 +259,17 @@
await tick();
const chatInputElement = document.getElementById('chat-input');
const chatInputElement = document.getElementById(`chat-input-${id}`);
chatInputElement?.focus();
};
$: if (content) {
onChange();
}
onMount(async () => {
window.setTimeout(() => {
const chatInput = document.getElementById('chat-input');
const chatInput = document.getElementById(`chat-input-${id}`);
chatInput?.focus();
}, 0);
@@ -290,37 +299,6 @@
<FilesOverlay show={draggedOver} />
<div class=" mx-auto inset-x-0 bg-transparent flex justify-center">
<div class="flex flex-col px-3 max-w-6xl w-full">
<div class="relative">
{#if scrollEnd === false}
<div class=" absolute -top-12 left-0 right-0 flex justify-center z-30 pointer-events-none">
<button
class=" bg-white border border-gray-100 dark:border-none dark:bg-white/20 p-1.5 rounded-full pointer-events-auto"
on:click={() => {
scrollEnd = true;
scrollToBottom();
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-5 h-5"
>
<path
fill-rule="evenodd"
d="M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z"
clip-rule="evenodd"
/>
</svg>
</button>
</div>
{/if}
</div>
</div>
</div>
<input
bind:this={filesInputElement}
bind:files={inputFiles}
@@ -337,12 +315,58 @@
filesInputElement.value = '';
}}
/>
<div class="{transparentBackground ? 'bg-transparent' : 'bg-white dark:bg-gray-900'} ">
<div class="bg-transparent">
<div
class="{($settings?.widescreenMode ?? null)
? 'max-w-full'
: 'max-w-6xl'} px-2.5 mx-auto inset-x-0"
: 'max-w-6xl'} px-2.5 mx-auto inset-x-0 relative"
>
<div class="absolute top-0 left-0 right-0 mx-auto inset-x-0 bg-transparent flex justify-center">
<div class="flex flex-col px-3 w-full">
<div class="relative">
{#if scrollEnd === false}
<div
class=" absolute -top-12 left-0 right-0 flex justify-center z-30 pointer-events-none"
>
<button
class=" bg-white border border-gray-100 dark:border-none dark:bg-white/20 p-1.5 rounded-full pointer-events-auto"
on:click={() => {
scrollEnd = true;
scrollToBottom();
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-5 h-5"
>
<path
fill-rule="evenodd"
d="M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z"
clip-rule="evenodd"
/>
</svg>
</button>
</div>
{/if}
</div>
<div class="relative">
<div class=" -mt-5">
{#if typingUsers.length > 0}
<div class=" text-xs px-4 mb-1">
<span class=" font-normal text-black dark:text-white">
{typingUsers.map((user) => user.name).join(', ')}
</span>
{$i18n.t('is typing...')}
</div>
{/if}
</div>
</div>
</div>
</div>
<div class="">
{#if recording}
<VoiceRecording
@@ -351,7 +375,7 @@
recording = false;
await tick();
document.getElementById('chat-input')?.focus();
document.getElementById(`chat-input-${id}`)?.focus();
}}
on:confirm={async (e) => {
const { text, filename } = e.detail;
@@ -359,7 +383,7 @@
recording = false;
await tick();
document.getElementById('chat-input')?.focus();
document.getElementById(`chat-input-${id}`)?.focus();
}}
/>
{:else}
@@ -370,7 +394,7 @@
}}
>
<div
class="flex-1 flex flex-col relative w-full rounded-3xl px-1 bg-gray-50 dark:bg-gray-400/5 dark:text-gray-100"
class="flex-1 flex flex-col relative w-full rounded-3xl px-1 bg-gray-600/5 dark:bg-gray-400/5 dark:text-gray-100"
dir={$settings?.chatDirection ?? 'LTR'}
>
{#if files.length > 0}
@@ -456,61 +480,21 @@
</InputMenu>
</div>
{#if $settings?.richTextInput ?? true}
<div
class="scrollbar-hidden text-left bg-transparent dark:text-gray-100 outline-none w-full py-2.5 px-1 rounded-xl resize-none h-fit max-h-80 overflow-auto"
>
<RichTextInput
bind:value={content}
id="chat-input"
messageInput={true}
shiftEnter={!$mobile ||
!(
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
navigator.msMaxTouchPoints > 0
)}
{placeholder}
largeTextAsFile={$settings?.largeTextAsFile ?? false}
on:keydown={async (e) => {
e = e.detail.event;
const isCtrlPressed = e.ctrlKey || e.metaKey; // metaKey is for Cmd key on Mac
if (
!$mobile ||
!(
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
navigator.msMaxTouchPoints > 0
)
) {
// Prevent Enter key from creating a new line
// Uses keyCode '13' for Enter key for chinese/japanese keyboards
if (e.keyCode === 13 && !e.shiftKey) {
e.preventDefault();
}
// Submit the content when Enter key is pressed
if (content !== '' && e.keyCode === 13 && !e.shiftKey) {
submitHandler();
}
}
if (e.key === 'Escape') {
console.log('Escape');
}
}}
on:paste={async (e) => {
e = e.detail.event;
console.log(e);
}}
/>
</div>
{:else}
<textarea
id="chat-input"
class="scrollbar-hidden bg-transparent dark:text-gray-100 outline-none w-full py-3 px-1 rounded-xl resize-none h-[48px]"
{placeholder}
<div
class="scrollbar-hidden text-left bg-transparent dark:text-gray-100 outline-none w-full py-2.5 px-1 rounded-xl resize-none h-fit max-h-80 overflow-auto"
>
<RichTextInput
bind:value={content}
id={`chat-input-${id}`}
messageInput={true}
shiftEnter={!$mobile ||
!(
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
navigator.msMaxTouchPoints > 0
)}
{placeholder}
largeTextAsFile={$settings?.largeTextAsFile ?? false}
on:keydown={async (e) => {
e = e.detail.event;
const isCtrlPressed = e.ctrlKey || e.metaKey; // metaKey is for Cmd key on Mac
@@ -538,17 +522,12 @@
console.log('Escape');
}
}}
rows="1"
on:input={async (e) => {
e.target.style.height = '';
e.target.style.height = Math.min(e.target.scrollHeight, 320) + 'px';
}}
on:focus={async (e) => {
e.target.style.height = '';
e.target.style.height = Math.min(e.target.scrollHeight, 320) + 'px';
on:paste={async (e) => {
e = e.detail.event;
console.log(e);
}}
/>
{/if}
</div>
<div class="self-end mb-1.5 flex space-x-1 mr-1">
{#if content === ''}
+82 -5
View File
@@ -11,20 +11,23 @@
dayjs.extend(isYesterday);
import { tick, getContext, onMount, createEventDispatcher } from 'svelte';
import { settings } from '$lib/stores';
import { settings, user } from '$lib/stores';
import Message from './Messages/Message.svelte';
import Loader from '../common/Loader.svelte';
import Spinner from '../common/Spinner.svelte';
import { deleteMessage, updateMessage } from '$lib/apis/channels';
import { addReaction, deleteMessage, removeReaction, updateMessage } from '$lib/apis/channels';
const i18n = getContext('i18n');
export let id = null;
export let channel = null;
export let messages = [];
export let top = false;
export let thread = false;
export let onLoad: Function = () => {};
export let onThread: Function = () => {};
let messagesLoading = false;
@@ -59,14 +62,14 @@
<div class=" ">Loading...</div>
</div>
</Loader>
{:else}
{:else if !thread}
<div
class="px-5
{($settings?.widescreenMode ?? null) ? 'max-w-full' : 'max-w-5xl'} mx-auto"
>
{#if channel}
<div class="flex flex-col gap-1.5 py-5">
<div class="flex flex-col gap-1.5 pb-5 pt-10">
<div class="text-2xl font-medium capitalize">{channel.name}</div>
<div class=" text-gray-500">
@@ -88,12 +91,15 @@
</div>
{/if}
{#each messageList as message, messageIdx (message.id)}
{#each messageList as message, messageIdx (id ? `${id}-${message.id}` : message.id)}
<Message
{message}
{thread}
showUserProfile={messageIdx === 0 ||
messageList.at(messageIdx - 1)?.user_id !== message.user_id}
onDelete={() => {
messages = messages.filter((m) => m.id !== message.id);
const res = deleteMessage(localStorage.token, message.channel_id, message.id).catch(
(error) => {
toast.error(error);
@@ -102,6 +108,13 @@
);
}}
onEdit={(content) => {
messages = messages.map((m) => {
if (m.id === message.id) {
m.content = content;
}
return m;
});
const res = updateMessage(localStorage.token, message.channel_id, message.id, {
content: content
}).catch((error) => {
@@ -109,6 +122,70 @@
return null;
});
}}
onThread={(id) => {
onThread(id);
}}
onReaction={(name) => {
if (
(message?.reactions ?? [])
.find((reaction) => reaction.name === name)
?.user_ids?.includes($user.id) ??
false
) {
messages = messages.map((m) => {
if (m.id === message.id) {
const reaction = m.reactions.find((reaction) => reaction.name === name);
if (reaction) {
reaction.user_ids = reaction.user_ids.filter((id) => id !== $user.id);
reaction.count = reaction.user_ids.length;
if (reaction.count === 0) {
m.reactions = m.reactions.filter((r) => r.name !== name);
}
}
}
return m;
});
const res = removeReaction(
localStorage.token,
message.channel_id,
message.id,
name
).catch((error) => {
toast.error(error);
return null;
});
} else {
messages = messages.map((m) => {
if (m.id === message.id) {
if (m.reactions) {
const reaction = m.reactions.find((reaction) => reaction.name === name);
if (reaction) {
reaction.user_ids.push($user.id);
reaction.count = reaction.user_ids.length;
} else {
m.reactions.push({
name: name,
user_ids: [$user.id],
count: 1
});
}
}
}
return m;
});
const res = addReaction(localStorage.token, message.channel_id, message.id, name).catch(
(error) => {
toast.error(error);
return null;
}
);
}
}}
/>
{/each}
@@ -8,10 +8,10 @@
dayjs.extend(isToday);
dayjs.extend(isYesterday);
import { getContext } from 'svelte';
import { getContext, onMount } from 'svelte';
const i18n = getContext<Writable<i18nType>>('i18n');
import { settings, user } from '$lib/stores';
import { settings, user, shortCodesToEmojis } from '$lib/stores';
import { WEBUI_BASE_URL } from '$lib/constants';
@@ -25,12 +25,22 @@
import Textarea from '$lib/components/common/Textarea.svelte';
import Image from '$lib/components/common/Image.svelte';
import FileItem from '$lib/components/common/FileItem.svelte';
import ProfilePreview from './Message/ProfilePreview.svelte';
import ChatBubbleOvalEllipsis from '$lib/components/icons/ChatBubbleOvalEllipsis.svelte';
import FaceSmile from '$lib/components/icons/FaceSmile.svelte';
import ReactionPicker from './Message/ReactionPicker.svelte';
import ChevronRight from '$lib/components/icons/ChevronRight.svelte';
export let message;
export let showUserProfile = true;
export let thread = false;
export let onDelete: Function = () => {};
export let onEdit: Function = () => {};
export let onThread: Function = () => {};
export let onReaction: Function = () => {};
let showButtons = false;
let edit = false;
let editedContent = null;
@@ -65,29 +75,69 @@
? 'pt-1.5 pb-0.5'
: ''} w-full {($settings?.widescreenMode ?? null)
? 'max-w-full'
: 'max-w-5xl'} mx-auto group hover:bg-gray-500/5 transition relative"
: 'max-w-5xl'} mx-auto group hover:bg-gray-300/5 dark:hover:bg-gray-700/5 transition relative"
>
{#if (message.user_id === $user.id || $user.role === 'admin') && !edit}
<div class=" absolute invisible group-hover:visible right-1 -top-2 z-30">
{#if !edit}
<div
class=" absolute {showButtons ? '' : 'invisible group-hover:visible'} right-1 -top-2 z-10"
>
<div
class="flex gap-1 rounded-lg bg-white dark:bg-gray-850 shadow-md p-0.5 border border-gray-100 dark:border-gray-800"
>
<button
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
on:click={() => {
edit = true;
editedContent = message.content;
<ReactionPicker
onClose={() => (showButtons = false)}
onSubmit={(name) => {
showButtons = false;
onReaction(name);
}}
>
<Pencil />
</button>
<Tooltip content={$i18n.t('Add Reaction')}>
<button
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
on:click={() => {
showButtons = true;
}}
>
<FaceSmile />
</button>
</Tooltip>
</ReactionPicker>
<button
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
on:click={() => (showDeleteConfirmDialog = true)}
>
<GarbageBin />
</button>
{#if !thread}
<Tooltip content={$i18n.t('Reply in Thread')}>
<button
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
on:click={() => {
onThread(message.id);
}}
>
<ChatBubbleOvalEllipsis />
</button>
</Tooltip>
{/if}
{#if message.user_id === $user.id || $user.role === 'admin'}
<Tooltip content={$i18n.t('Edit')}>
<button
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
on:click={() => {
edit = true;
editedContent = message.content;
}}
>
<Pencil />
</button>
</Tooltip>
<Tooltip content={$i18n.t('Delete')}>
<button
class="hover:bg-gray-100 dark:hover:bg-gray-800 transition rounded-lg p-1"
on:click={() => (showDeleteConfirmDialog = true)}
>
<GarbageBin />
</button>
</Tooltip>
{/if}
</div>
</div>
{/if}
@@ -101,11 +151,13 @@
class={`flex-shrink-0 ${($settings?.chatDirection ?? 'LTR') === 'LTR' ? 'mr-3' : 'ml-3'} w-9`}
>
{#if showUserProfile}
<ProfileImage
src={message.user?.profile_image_url ??
($i18n.language === 'dg-DG' ? `/doge.png` : `${WEBUI_BASE_URL}/static/favicon.png`)}
className={'size-8 translate-y-1 ml-0.5'}
/>
<ProfilePreview user={message.user}>
<ProfileImage
src={message.user?.profile_image_url ??
($i18n.language === 'dg-DG' ? `/doge.png` : `${WEBUI_BASE_URL}/static/favicon.png`)}
className={'size-8 translate-y-1 ml-0.5'}
/>
</ProfilePreview>
{:else}
<!-- <div class="w-7 h-7 rounded-full bg-transparent" /> -->
@@ -219,6 +271,85 @@
>(edited)</span
>{/if}
</div>
{#if (message?.reactions ?? []).length > 0}
<div>
<div class="flex items-center flex-wrap gap-y-1.5 gap-1 mt-1 mb-2">
{#each message.reactions as reaction}
<Tooltip content={`:${reaction.name}:`}>
<button
class="flex items-center gap-1.5 transition rounded-xl px-2 py-1 cursor-pointer {reaction.user_ids.includes(
$user.id
)
? ' bg-blue-300/10 outline outline-blue-500/50 outline-1'
: 'bg-gray-300/10 dark:bg-gray-500/10 hover:outline hover:outline-gray-700/30 dark:hover:outline-gray-300/30 hover:outline-1'}"
on:click={() => {
onReaction(reaction.name);
}}
>
{#if $shortCodesToEmojis[reaction.name]}
<img
src="/assets/emojis/{$shortCodesToEmojis[
reaction.name
].toLowerCase()}.svg"
alt={reaction.name}
class=" size-4"
loading="lazy"
/>
{:else}
<div>
{reaction.name}
</div>
{/if}
{#if reaction.user_ids.length > 0}
<div class="text-xs font-medium text-gray-500 dark:text-gray-400">
{reaction.user_ids?.length}
</div>
{/if}
</button>
</Tooltip>
{/each}
<ReactionPicker
onSubmit={(name) => {
onReaction(name);
}}
>
<Tooltip content={$i18n.t('Add Reaction')}>
<div
class="flex items-center gap-1.5 bg-gray-500/10 hover:outline hover:outline-gray-700/30 dark:hover:outline-gray-300/30 hover:outline-1 transition rounded-xl px-1 py-1 cursor-pointer text-gray-500 dark:text-gray-400"
>
<FaceSmile />
</div>
</Tooltip>
</ReactionPicker>
</div>
</div>
{/if}
{#if !thread && message.reply_count > 0}
<div class="flex items-center gap-1.5 -mt-0.5 mb-1.5">
<button
class="flex items-center text-xs py-1 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 transition"
on:click={() => {
onThread(message.id);
}}
>
<span class="font-medium mr-1">
{$i18n.t('{{COUNT}} Replies', { COUNT: message.reply_count })}</span
><span>
{' - '}{$i18n.t('Last reply')}
{dayjs.unix(message.latest_reply_at / 1000000000).fromNow()}</span
>
<span class="ml-1">
<ChevronRight className="size-2.5" strokeWidth="3" />
</span>
<!-- {$i18n.t('View Replies')} -->
</button>
</div>
{/if}
{/if}
</div>
</div>
@@ -0,0 +1,85 @@
<script lang="ts">
import { DropdownMenu } from 'bits-ui';
import { createEventDispatcher } from 'svelte';
import { flyAndScale } from '$lib/utils/transitions';
import { WEBUI_BASE_URL } from '$lib/constants';
import { activeUserIds } from '$lib/stores';
export let side = 'right';
export let align = 'top';
export let user = null;
let show = false;
const dispatch = createEventDispatcher();
</script>
<DropdownMenu.Root
bind:open={show}
closeFocus={false}
onOpenChange={(state) => {
dispatch('change', state);
}}
typeahead={false}
>
<DropdownMenu.Trigger>
<slot />
</DropdownMenu.Trigger>
<slot name="content">
<DropdownMenu.Content
class="max-w-full w-[240px] rounded-lg z-[9999] bg-white dark:bg-black dark:text-white shadow-lg"
sideOffset={8}
{side}
{align}
transition={flyAndScale}
>
{#if user}
<div class=" flex flex-col gap-2 w-full rounded-lg">
<div class="py-8 relative bg-gray-900 rounded-t-lg">
<img
crossorigin="anonymous"
src={user?.profile_image_url ?? `${WEBUI_BASE_URL}/static/favicon.png`}
class=" absolute -bottom-5 left-3 size-12 ml-0.5 object-cover rounded-full -translate-y-[1px]"
alt="profile"
/>
</div>
<div class=" flex flex-col pt-4 pb-2.5 px-4">
<div class=" -mb-1">
<span class="font-medium text-sm line-clamp-1"> {user.name} </span>
</div>
<div class=" flex items-center gap-2">
{#if $activeUserIds.includes(user.id)}
<div>
<span class="relative flex size-2">
<span
class="animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"
/>
<span class="relative inline-flex rounded-full size-2 bg-green-500" />
</span>
</div>
<div class=" -translate-y-[1px]">
<span class="text-xs"> Active </span>
</div>
{:else}
<div>
<span class="relative flex size-2">
<span class="relative inline-flex rounded-full size-2 bg-gray-500" />
</span>
</div>
<div class=" -translate-y-[1px]">
<span class="text-xs"> Away </span>
</div>
{/if}
</div>
</div>
</div>
{/if}
</DropdownMenu.Content>
</slot>
</DropdownMenu.Root>
@@ -0,0 +1,166 @@
<script lang="ts">
import { DropdownMenu } from 'bits-ui';
import { flyAndScale } from '$lib/utils/transitions';
import emojiGroups from '$lib/emoji-groups.json';
import emojiShortCodes from '$lib/emoji-shortcodes.json';
import Tooltip from '$lib/components/common/Tooltip.svelte';
import VirtualList from '@sveltejs/svelte-virtual-list';
export let onClose = () => {};
export let onSubmit = (name) => {};
export let side = 'top';
export let align = 'start';
export let user = null;
let show = false;
let emojis = emojiShortCodes;
let search = '';
let flattenedEmojis = [];
let emojiRows = [];
// Reactive statement to filter the emojis based on search query
$: {
if (search) {
emojis = Object.keys(emojiShortCodes).reduce((acc, key) => {
if (key.includes(search)) {
acc[key] = emojiShortCodes[key];
} else {
if (Array.isArray(emojiShortCodes[key])) {
const filtered = emojiShortCodes[key].filter((emoji) => emoji.includes(search));
if (filtered.length) {
acc[key] = filtered;
}
} else {
if (emojiShortCodes[key].includes(search)) {
acc[key] = emojiShortCodes[key];
}
}
}
return acc;
}, {});
} else {
emojis = emojiShortCodes;
}
}
// Flatten emoji groups and group them into rows of 8 for virtual scrolling
$: {
flattenedEmojis = [];
Object.keys(emojiGroups).forEach((group) => {
const groupEmojis = emojiGroups[group].filter((emoji) => emojis[emoji]);
if (groupEmojis.length > 0) {
flattenedEmojis.push({ type: 'group', label: group });
flattenedEmojis.push(
...groupEmojis.map((emoji) => ({
type: 'emoji',
name: emoji,
shortCodes:
typeof emojiShortCodes[emoji] === 'string'
? [emojiShortCodes[emoji]]
: emojiShortCodes[emoji]
}))
);
}
});
// Group emojis into rows of 6
emojiRows = [];
let currentRow = [];
flattenedEmojis.forEach((item) => {
if (item.type === 'emoji') {
currentRow.push(item);
if (currentRow.length === 7) {
emojiRows.push(currentRow);
currentRow = [];
}
} else if (item.type === 'group') {
if (currentRow.length > 0) {
emojiRows.push(currentRow); // Push the remaining row
currentRow = [];
}
emojiRows.push([item]); // Add the group label as a separate row
}
});
if (currentRow.length > 0) {
emojiRows.push(currentRow); // Push the final row
}
}
const ROW_HEIGHT = 48; // Approximate height for a row with multiple emojis
// Handle emoji selection
function selectEmoji(emoji) {
const selectedCode = emoji.shortCodes[0];
onSubmit(selectedCode);
show = false;
}
</script>
<DropdownMenu.Root
bind:open={show}
closeFocus={false}
onOpenChange={(state) => {
if (!state) {
search = '';
onClose();
}
}}
typeahead={false}
>
<DropdownMenu.Trigger>
<slot />
</DropdownMenu.Trigger>
<DropdownMenu.Content
class="max-w-full w-80 bg-gray-50 dark:bg-gray-850 rounded-lg z-[9999] shadow-lg dark:text-white"
sideOffset={8}
{side}
{align}
transition={flyAndScale}
>
<div class="mb-1 px-3 pt-2 pb-2">
<input
type="text"
class="w-full text-sm bg-transparent outline-none"
placeholder="Search all emojis"
bind:value={search}
/>
</div>
<!-- Virtualized Emoji List -->
<div class="w-full flex justify-start h-96 overflow-y-auto px-3 pb-3 text-sm">
{#if emojiRows.length === 0}
<div class="text-center text-xs text-gray-500 dark:text-gray-400">No results</div>
{:else}
<div class="w-full flex ml-2">
<VirtualList rowHeight={ROW_HEIGHT} items={emojiRows} height={384} let:item>
<div class="w-full">
{#if item.length === 1 && item[0].type === 'group'}
<!-- Render group header -->
<div class="text-xs font-medium mb-2 text-gray-500 dark:text-gray-400">
{item[0].label}
</div>
{:else}
<!-- Render emojis in a row -->
<div class="flex items-center gap-2 w-full">
{#each item as emojiItem}
<Tooltip
content={emojiItem.shortCodes.map((code) => `:${code}:`).join(', ')}
placement="top"
>
<button
class="p-1.5 rounded-lg cursor-pointer hover:bg-gray-200 dark:hover:bg-gray-700 transition"
on:click={() => selectEmoji(emojiItem)}
>
<img
src="/assets/emojis/{emojiItem.name.toLowerCase()}.svg"
alt={emojiItem.name}
class="size-5"
loading="lazy"
/>
</button>
</Tooltip>
{/each}
</div>
{/if}
</div>
</VirtualList>
</div>
{/if}
</div>
</DropdownMenu.Content>
</DropdownMenu.Root>
+204
View File
@@ -0,0 +1,204 @@
<script lang="ts">
import { goto } from '$app/navigation';
import { socket, user } from '$lib/stores';
import { getChannelThreadMessages, sendMessage } from '$lib/apis/channels';
import XMark from '$lib/components/icons/XMark.svelte';
import MessageInput from './MessageInput.svelte';
import Messages from './Messages.svelte';
import { onDestroy, onMount, tick } from 'svelte';
import { toast } from 'svelte-sonner';
export let threadId = null;
export let channel = null;
export let onClose = () => {};
let messages = null;
let top = false;
let typingUsers = [];
let typingUsersTimeout = {};
let messagesContainerElement = null;
$: if (threadId) {
initHandler();
}
const scrollToBottom = () => {
messagesContainerElement.scrollTop = messagesContainerElement.scrollHeight;
};
const initHandler = async () => {
messages = null;
top = false;
typingUsers = [];
typingUsersTimeout = {};
if (channel) {
messages = await getChannelThreadMessages(localStorage.token, channel.id, threadId);
if (messages.length < 50) {
top = true;
}
await tick();
scrollToBottom();
} else {
goto('/');
}
};
const channelEventHandler = async (event) => {
console.log(event);
if (event.channel_id === channel.id) {
const type = event?.data?.type ?? null;
const data = event?.data?.data ?? null;
if (type === 'message') {
if ((data?.parent_id ?? null) === threadId) {
if (messages) {
messages = [data, ...messages];
if (typingUsers.find((user) => user.id === event.user.id)) {
typingUsers = typingUsers.filter((user) => user.id !== event.user.id);
}
}
}
} else if (type === 'message:update') {
if (messages) {
const idx = messages.findIndex((message) => message.id === data.id);
if (idx !== -1) {
messages[idx] = data;
}
}
} else if (type === 'message:delete') {
if (messages) {
messages = messages.filter((message) => message.id !== data.id);
}
} else if (type.includes('message:reaction')) {
if (messages) {
const idx = messages.findIndex((message) => message.id === data.id);
if (idx !== -1) {
messages[idx] = data;
}
}
} else if (type === 'typing' && event.message_id === threadId) {
if (event.user.id === $user.id) {
return;
}
typingUsers = data.typing
? [
...typingUsers,
...(typingUsers.find((user) => user.id === event.user.id)
? []
: [
{
id: event.user.id,
name: event.user.name
}
])
]
: typingUsers.filter((user) => user.id !== event.user.id);
if (typingUsersTimeout[event.user.id]) {
clearTimeout(typingUsersTimeout[event.user.id]);
}
typingUsersTimeout[event.user.id] = setTimeout(() => {
typingUsers = typingUsers.filter((user) => user.id !== event.user.id);
}, 5000);
}
}
};
const submitHandler = async ({ content, data }) => {
if (!content) {
return;
}
const res = await sendMessage(localStorage.token, channel.id, {
parent_id: threadId,
content: content,
data: data
}).catch((error) => {
toast.error(error);
return null;
});
};
const onChange = async () => {
$socket?.emit('channel-events', {
channel_id: channel.id,
message_id: threadId,
data: {
type: 'typing',
data: {
typing: true
}
}
});
};
onMount(() => {
$socket?.on('channel-events', channelEventHandler);
});
onDestroy(() => {
$socket?.off('channel-events', channelEventHandler);
});
</script>
{#if channel}
<div class="flex flex-col w-full h-full bg-gray-50 dark:bg-gray-850">
<div class="flex items-center justify-between px-3.5 pt-3">
<div class=" font-medium text-lg">Thread</div>
<div>
<button
class="text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 p-2"
on:click={() => {
onClose();
}}
>
<XMark />
</button>
</div>
</div>
<div class=" max-h-full w-full overflow-y-auto pt-3" bind:this={messagesContainerElement}>
<Messages
id={threadId}
{channel}
{messages}
{top}
thread={true}
onLoad={async () => {
const newMessages = await getChannelThreadMessages(
localStorage.token,
channel.id,
threadId,
messages.length
);
messages = [...messages, ...newMessages];
if (newMessages.length < 50) {
top = true;
return;
}
}}
/>
<div class=" pb-[1rem]">
<MessageInput id={threadId} {typingUsers} {onChange} onSubmit={submitHandler} />
</div>
</div>
</div>
{/if}
+44 -7
View File
@@ -427,7 +427,7 @@
onDestroy(() => {
chatIdUnsubscriber?.();
window.removeEventListener('message', onMessageHandler);
// $socket?.off('chat-events');
$socket?.off('chat-events', chatEventHandler);
});
// File upload functions
@@ -836,7 +836,7 @@
return null;
});
if (res !== null) {
if (res !== null && res.messages) {
// Update chat history with the new messages
for (const message of res.messages) {
history.messages[message.id] = {
@@ -890,7 +890,7 @@
return null;
});
if (res !== null) {
if (res !== null && res.messages) {
// Update chat history with the new messages
for (const message of res.messages) {
history.messages[message.id] = {
@@ -1053,7 +1053,7 @@
};
const chatCompletionEventHandler = async (data, message, chatId) => {
const { id, done, choices, sources, selected_model_id, error, usage } = data;
const { id, done, choices, content, sources, selected_model_id, error, usage } = data;
if (error) {
await handleOpenAIError(error, message);
@@ -1105,6 +1105,38 @@
}
}
if (content) {
// REALTIME_CHAT_SAVE is disabled
message.content = content;
if (navigator.vibrate && ($settings?.hapticFeedback ?? false)) {
navigator.vibrate(5);
}
// Emit chat event for TTS
const messageContentParts = getMessageContentParts(
message.content,
$config?.audio?.tts?.split_on ?? 'punctuation'
);
messageContentParts.pop();
// dispatch only last sentence and make sure it hasn't been dispatched before
if (
messageContentParts.length > 0 &&
messageContentParts[messageContentParts.length - 1] !== message.lastSentence
) {
message.lastSentence = messageContentParts[messageContentParts.length - 1];
eventTarget.dispatchEvent(
new CustomEvent('chat', {
detail: {
id: message.id,
content: messageContentParts[messageContentParts.length - 1]
}
})
);
}
}
if (selected_model_id) {
message.selectedModelId = selected_model_id;
message.arena = true;
@@ -1114,6 +1146,8 @@
message.usage = usage;
}
history.messages[message.id] = message;
if (done) {
message.done = true;
@@ -1158,8 +1192,6 @@
await chatCompletedHandler(chatId, message.model, message.id, createMessagesList(message.id));
}
history.messages[message.id] = message;
console.log(data);
if (autoScroll) {
scrollToBottom();
@@ -1511,7 +1543,12 @@
chat_id: $chatId,
id: responseMessageId,
...(!$temporaryChatEnabled && messages.length == 1 && selectedModels[0] === model.id
...(!$temporaryChatEnabled &&
(messages.length == 1 ||
(messages.length == 2 &&
messages.at(0)?.role === 'system' &&
messages.at(1)?.role === 'user')) &&
selectedModels[0] === model.id
? {
background_tasks: {
title_generation: $settings?.title?.auto ?? true,
+1 -1
View File
@@ -544,7 +544,7 @@
}}
>
<div
class="flex-1 flex flex-col relative w-full rounded-3xl px-1 bg-gray-50 dark:bg-gray-400/5 dark:text-gray-100"
class="flex-1 flex flex-col relative w-full rounded-3xl px-1 bg-gray-600/5 dark:bg-gray-400/5 dark:text-gray-100"
dir={$settings?.chatDirection ?? 'LTR'}
>
{#if files.length > 0}
@@ -52,12 +52,21 @@
}
const init = () => {
selectedReason = message?.annotation?.reason ?? '';
comment = message?.annotation?.comment ?? '';
if (!selectedReason) {
selectedReason = message?.annotation?.reason ?? '';
}
if (!comment) {
comment = message?.annotation?.comment ?? '';
}
tags = (message?.annotation?.tags ?? []).map((tag) => ({
name: tag
}));
detailedRating = message?.annotation?.details?.rating ?? null;
if (!detailedRating) {
detailedRating = message?.annotation?.details?.rating ?? null;
}
};
onMount(() => {
@@ -543,8 +543,12 @@
{$i18n.t(status?.description, {
count: status?.urls.length
})}
{:else if status?.description === 'No search query generated'}
{$i18n.t('No search query generated')}
{:else if status?.description === 'Generating search query'}
{$i18n.t('Generating search query')}
{:else}
{$i18n.t(status?.description)}
{status?.description}
{/if}
</div>
</div>
@@ -573,8 +577,12 @@
{$i18n.t(status?.description, {
searchQuery: status?.query
})}
{:else if status?.description === 'No search query generated'}
{$i18n.t('No search query generated')}
{:else if status?.description === 'Generating search query'}
{$i18n.t('Generating search query')}
{:else}
{$i18n.t(status?.description)}
{status?.description}
{/if}
</div>
</div>
@@ -106,6 +106,12 @@
<hr class=" dark:border-gray-850" />
<div class="mt-2 text-xs text-gray-400 dark:text-gray-500">
Emoji graphics provided by
<a href="https://github.com/jdecked/twemoji" target="_blank">Twemoji</a>, licensed under
<a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC-BY 4.0</a>.
</div>
<div class="flex space-x-1">
<a href="https://discord.gg/5rJgQTnV4s" target="_blank">
<img
+1 -1
View File
@@ -57,7 +57,7 @@
<div
bind:this={modalElement}
class="modal fixed right-0 left-0 bottom-0 bg-black/60 w-full h-screen max-h-[100dvh] flex justify-center z-[9999] overflow-hidden overscroll-contain"
class="modal fixed right-0 left-0 bottom-0 bg-black/60 w-full h-screen max-h-[100dvh] flex justify-center z-[999] overflow-hidden overscroll-contain"
in:fly={{ y: 100, duration: 100 }}
on:mousedown={() => {
show = false;
+4 -2
View File
@@ -5,6 +5,8 @@
import { flyAndScale } from '$lib/utils/transitions';
export let show = false;
export let side = 'bottom';
export let align = 'start';
const dispatch = createEventDispatcher();
</script>
@@ -24,8 +26,8 @@
<DropdownMenu.Content
class="w-full max-w-[130px] rounded-lg px-1 py-1.5 border border-gray-900 z-50 bg-gray-850 text-white"
sideOffset={8}
side="bottom"
align="start"
{side}
{align}
transition={flyAndScale}
>
<DropdownMenu.Item class="flex items-center px-3 py-2 text-sm font-medium">
+22 -2
View File
@@ -2,7 +2,7 @@
import { onMount, getContext } from 'svelte';
const i18n = getContext('i18n');
import panzoom from 'panzoom';
import panzoom, { type PanZoom } from 'panzoom';
import DOMPurify from 'dompurify';
import DocumentDuplicate from '../icons/DocumentDuplicate.svelte';
@@ -10,12 +10,13 @@
import { toast } from 'svelte-sonner';
import Tooltip from './Tooltip.svelte';
import Clipboard from '../icons/Clipboard.svelte';
import Reset from '../icons/Reset.svelte';
export let className = '';
export let svg = '';
export let content = '';
let instance;
let instance: PanZoom;
let sceneParentElement: HTMLElement;
let sceneElement: HTMLElement;
@@ -28,6 +29,12 @@
zoomSpeed: 0.065
});
}
function resetPanZoomViewport() {
console.log('Reset View');
instance.moveTo(0, 0);
instance.zoomAbs(0, 0, 1);
console.log(instance.getTransform());
}
</script>
<div bind:this={sceneParentElement} class="relative {className}">
@@ -49,5 +56,18 @@
</button>
</Tooltip>
</div>
<div class=" absolute top-1 right-10">
<Tooltip content={$i18n.t('Reset view')}>
<button
class="p-1.5 rounded-lg border border-gray-100 dark:border-none dark:bg-gray-850 hover:bg-gray-50 dark:hover:bg-gray-800 transition"
on:click={() => {
resetPanZoomViewport();
toast.success($i18n.t('Reset view'));
}}
>
<Reset className=" size-4" />
</button>
</Tooltip>
</div>
{/if}
</div>
@@ -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="M8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 0 1-2.555-.337A5.972 5.972 0 0 1 5.41 20.97a5.969 5.969 0 0 1-.474-.065 4.48 4.48 0 0 0 .978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25Z"
/>
</svg>
+19
View File
@@ -0,0 +1,19 @@
<script lang="ts">
export let className = 'size-4';
export let strokeWidth = '1.5';
</script>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width={strokeWidth}
stroke="currentColor"
class={className}
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z"
/>
</svg>
+9
View File
@@ -0,0 +1,9 @@
<script lang="ts">
export let className = 'size-4';
</script>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="currentColor" class={className}>
<path
d="M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z"
/>
</svg>
@@ -5,7 +5,7 @@
import { flyAndScale } from '$lib/utils/transitions';
import { goto } from '$app/navigation';
import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
import { showSettings, activeUserCount, USAGE_POOL, mobile, showSidebar } from '$lib/stores';
import { showSettings, activeUserIds, USAGE_POOL, mobile, showSidebar } from '$lib/stores';
import { fade, slide } from 'svelte/transition';
import Tooltip from '$lib/components/common/Tooltip.svelte';
import { userSignOut } from '$lib/apis/auths';
@@ -184,7 +184,7 @@
<div class=" self-center truncate">{$i18n.t('Sign Out')}</div>
</button>
{#if $activeUserCount}
{#if $activeUserIds?.length > 0}
<hr class=" border-gray-50 dark:border-gray-850 my-1 p-0" />
<Tooltip
@@ -207,7 +207,7 @@
{$i18n.t('Active Users')}:
</span>
<span class=" font-semibold">
{$activeUserCount}
{$activeUserIds?.length}
</span>
</div>
</div>
+2 -2
View File
@@ -12,7 +12,7 @@
} from '$lib/constants';
import { WEBUI_NAME, config, user, models, settings } from '$lib/stores';
import { generateOpenAIChatCompletion } from '$lib/apis/openai';
import { chatCompletion, generateOpenAIChatCompletion } from '$lib/apis/openai';
import { splitStream } from '$lib/utils';
import Collapsible from '../common/Collapsible.svelte';
@@ -61,7 +61,7 @@
const chatCompletionHandler = async () => {
const model = $models.find((model) => model.id === selectedModelId);
const [res, controller] = await generateOpenAIChatCompletion(
const [res, controller] = await chatCompletion(
localStorage.token,
{
model: model.id,
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "( `sh webui.sh --api`مثال)",
"(latest)": "(الأخير)",
"{{ models }}": "{{ نماذج }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "دردشات {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} مطلوب",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "إضافة ذكرايات",
"Add Model": "اضافة موديل",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "اضافة تاق",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "هل تملك حساب ؟",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API الرابط الرئيسي",
"API Key": "API مفتاح",
"API Key created.": "API تم أنشاء المفتاح",
"API Key Endpoint Restrictions": "",
"API keys": "مفاتيح واجهة برمجة التطبيقات",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "نموذج التضمين",
"Embedding Model Engine": "تضمين محرك النموذج",
"Embedding model set to \"{{embedding_model}}\"": "تم تعيين نموذج التضمين على \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "تمكين مشاركة المجتمع",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "واجهه المستخدم",
"Invalid file format.": "",
"Invalid Tag": "تاق غير صالحة",
"is typing...": "",
"January": "يناير",
"Jina API Key": "",
"join our Discord for help.": "انضم إلى Discord للحصول على المساعدة.",
@@ -531,6 +536,7 @@
"Language": "اللغة",
"Last Active": "آخر نشاط",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "إعادة تسمية",
"Reorder Models": "",
"Repeat Last N": "N كرر آخر",
"Reply in Thread": "",
"Request Mode": "وضع الطلب",
"Reranking Model": "إعادة تقييم النموذج",
"Reranking model disabled": "تم تعطيل نموذج إعادة الترتيب",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "للوصول إلى الموديلات GGUF المتاحة للتنزيل،",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "متغير لاستبدالها بمحتوى الحافظة.",
"Version": "إصدار",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(например `sh webui.sh --api`)",
"(latest)": "(последна)",
"{{ models }}": "{{ модели }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}'s чатове",
"{{webUIName}} Backend Required": "{{webUIName}} Изисква се Бекенд",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Добавяне на Памет",
"Add Model": "Добавяне на Модел",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "добавяне на тагове",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Вече имате акаунт? ",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API Базов URL",
"API Key": "API Ключ",
"API Key created.": "API Ключ създаден.",
"API Key Endpoint Restrictions": "",
"API keys": "API Ключове",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Модел за вграждане",
"Embedding Model Engine": "Модел за вграждане",
"Embedding model set to \"{{embedding_model}}\"": "Модел за вграждане е настроен на \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Разрешаване на споделяне в общност",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Интерфейс",
"Invalid file format.": "",
"Invalid Tag": "Невалиден тег",
"is typing...": "",
"January": "Януари",
"Jina API Key": "",
"join our Discord for help.": "свържете се с нашия Discord за помощ.",
@@ -531,6 +536,7 @@
"Language": "Език",
"Last Active": "Последни активни",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Преименуване",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Reply in Thread": "",
"Request Mode": "Request Mode",
"Reranking Model": "Reranking Model",
"Reranking model disabled": "Reranking model disabled",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "За да получите достъп до GGUF моделите, налични за изтегляне,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "променливи да се заменят съдържанието от клипборд.",
"Version": "Версия",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(যেমন `sh webui.sh --api`)",
"(latest)": "(সর্বশেষ)",
"{{ models }}": "{{ মডেল}}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}র চ্যাটস",
"{{webUIName}} Backend Required": "{{webUIName}} ব্যাকএন্ড আবশ্যক",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "মেমোরি যোগ করুন",
"Add Model": "মডেল যোগ করুন",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "ট্যাগ যোগ করুন",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "আগে থেকেই একাউন্ট আছে?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "এপিআই বেজ ইউআরএল",
"API Key": "এপিআই কোড",
"API Key created.": "একটি এপিআই কোড তৈরি করা হয়েছে.",
"API Key Endpoint Restrictions": "",
"API keys": "এপিআই কোডস",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "ইমেজ ইমেবডিং মডেল",
"Embedding Model Engine": "ইমেজ ইমেবডিং মডেল ইঞ্জিন",
"Embedding model set to \"{{embedding_model}}\"": "ইমেজ ইমেবডিং মডেল সেট করা হয়েছে - \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "সম্প্রদায় শেয়ারকরণ সক্ষম করুন",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "ইন্টারফেস",
"Invalid file format.": "",
"Invalid Tag": "অবৈধ ট্যাগ",
"is typing...": "",
"January": "জানুয়ারী",
"Jina API Key": "",
"join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন",
@@ -531,6 +536,7 @@
"Language": "ভাষা",
"Last Active": "সর্বশেষ সক্রিয়",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "রেনেম",
"Reorder Models": "",
"Repeat Last N": "রিপিট Last N",
"Reply in Thread": "",
"Request Mode": "রিকোয়েস্ট মোড",
"Reranking Model": "রির্যাক্টিং মডেল",
"Reranking model disabled": "রির্যাক্টিং মডেল নিষ্ক্রিয় করা",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "ডাউলোডের জন্য এভেইলএবল GGUF মডেলগুলো এক্সেস করতে,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "ক্লিপবোর্ডের কন্টেন্ট দিয়ে যেই ভেরিয়েবল রিপ্লেস করা যাবে।",
"Version": "ভার্সন",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+32 -22
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(p. ex. `sh webui.sh --api`)",
"(latest)": "(últim)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Els xats de {{user}}",
"{{webUIName}} Backend Required": "El Backend de {{webUIName}} és necessari",
"*Prompt node ID(s) are required for image generation": "*Els identificadors de nodes d'indicacions són necessaris per a la generació d'imatges",
@@ -34,6 +35,7 @@
"Add Group": "Afegir grup",
"Add Memory": "Afegir memòria",
"Add Model": "Afegir un model",
"Add Reaction": "",
"Add Tag": "Afegir etiqueta",
"Add Tags": "Afegir etiquetes",
"Add text content": "Afegir contingut de text",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Permetre el xat temporal",
"Allow User Location": "Permetre la ubicació de l'usuari",
"Allow Voice Interruption in Call": "Permetre la interrupció de la veu en una trucada",
"Allowed Endpoints": "",
"Already have an account?": "Ja tens un compte?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa al top_p, i pretén garantir un equilibri de qualitat i varietat. El paràmetre p representa la probabilitat mínima que es consideri un token, en relació amb la probabilitat del token més probable. Per exemple, amb p=0,05 i el token més probable amb una probabilitat de 0,9, es filtren els logits amb un valor inferior a 0,045. (Per defecte: 0.0)",
"Amazing": "Al·lucinant",
@@ -67,6 +70,7 @@
"API Base URL": "URL Base de l'API",
"API Key": "clau API",
"API Key created.": "clau API creada.",
"API Key Endpoint Restrictions": "",
"API keys": "Claus de l'API",
"Application DN": "DN d'aplicació",
"Application DN Password": "Contrasenya del DN d'aplicació",
@@ -76,8 +80,8 @@
"Archive All Chats": "Arxiva tots els xats",
"Archived Chats": "Xats arxivats",
"archived-chat-export": "archived-chat-export",
"Are you sure you want to delete this channel?": "",
"Are you sure you want to delete this message?": "",
"Are you sure you want to delete this channel?": "Estàs segur que vols eliminar aquest canal?",
"Are you sure you want to delete this message?": "Estàs segur que vols eliminar aquest missatge?",
"Are you sure you want to unarchive all archived chats?": "Estàs segur que vols desarxivar tots els xats arxivats?",
"Are you sure?": "Estàs segur?",
"Arena Models": "Models de l'Arena",
@@ -110,7 +114,7 @@
"Batch Size (num_batch)": "Mida del lot (num_batch)",
"before": "abans",
"Being lazy": "Essent mandrós",
"Beta": "",
"Beta": "Beta",
"Bing Search V7 Endpoint": "Punt de connexió a Bing Search V7",
"Bing Search V7 Subscription Key": "Clau de subscripció a Bing Search V7",
"Brave Search API Key": "Clau API de Brave Search",
@@ -124,8 +128,8 @@
"Capture": "Captura",
"Certificate Path": "Camí del certificat",
"Change Password": "Canviar la contrasenya",
"Channel Name": "",
"Channels": "",
"Channel Name": "Nom del canal",
"Channels": "Canals",
"Character": "Personatge",
"Character limit for autocomplete generation input": "Límit de caràcters per a l'entrada de generació automàtica",
"Chart new frontiers": "Traça noves fronteres",
@@ -181,7 +185,7 @@
"Confirm": "Confirmar",
"Confirm Password": "Confirmar la contrasenya",
"Confirm your action": "Confirma la teva acció",
"Confirm your new password": "",
"Confirm your new password": "Confirma la teva nova contrasenya",
"Connections": "Connexions",
"Contact Admin for WebUI Access": "Posat en contacte amb l'administrador per accedir a WebUI",
"Content": "Contingut",
@@ -208,7 +212,7 @@
"Create a model": "Crear un model",
"Create Account": "Crear un compte",
"Create Admin Account": "Crear un compte d'Administrador",
"Create Channel": "",
"Create Channel": "Crear un canal",
"Create Group": "Crear grup",
"Create Knowledge": "Crear Coneixement",
"Create new key": "Crear una nova clau",
@@ -244,7 +248,7 @@
"Delete chat?": "Eliminar el xat?",
"Delete folder?": "Eliminar la carpeta?",
"Delete function?": "Eliminar funció?",
"Delete Message": "",
"Delete Message": "Eleiminar el missatge",
"Delete prompt?": "Eliminar indicació?",
"delete this link": "Eliminar aquest enllaç",
"Delete tool?": "Eliminar eina?",
@@ -297,7 +301,7 @@
"e.g. Tools for performing various operations": "p. ex. Eines per dur a terme operacions",
"Edit": "Editar",
"Edit Arena Model": "Editar model de l'Arena",
"Edit Channel": "",
"Edit Channel": "Editar el canal",
"Edit Connection": "Editar la connexió",
"Edit Default Permissions": "Editar el permisos per defecte",
"Edit Memory": "Editar la memòria",
@@ -310,7 +314,7 @@
"Embedding Model": "Model d'incrustació",
"Embedding Model Engine": "Motor de model d'incrustació",
"Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"",
"Enable API Key Auth": "Activar l'autenticació amb clau API",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "Activar la generació automàtica per als missatges del xat",
"Enable Community Sharing": "Activar l'ús compartit amb la comunitat",
"Enable Google Drive": "Activar Google Drive",
@@ -364,20 +368,20 @@
"Enter stop sequence": "Introdueix la seqüència de parada",
"Enter system prompt": "Introdueix la indicació de sistema",
"Enter Tavily API Key": "Introdueix la clau API de Tavily",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Entra la URL pública de WebUI. Aquesta URL s'utilitzarà per generar els enllaços en les notificacions.",
"Enter Tika Server URL": "Introdueix l'URL del servidor Tika",
"Enter Top K": "Introdueix Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Introdueix l'URL (p. ex. http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "Introdueix l'URL (p. ex. http://localhost:11434)",
"Enter your current password": "",
"Enter your current password": "Introdueix la teva contrasenya actual",
"Enter Your Email": "Introdueix el teu correu electrònic",
"Enter Your Full Name": "Introdueix el teu nom complet",
"Enter your message": "Introdueix el teu missatge",
"Enter your new password": "",
"Enter your new password": "Introdueix la teva nova contrasenya",
"Enter Your Password": "Introdueix la teva contrasenya",
"Enter Your Role": "Introdueix el teu rol",
"Enter Your Username": "Introdueix el teu nom d'usuari",
"Enter your webhook URL": "",
"Enter your webhook URL": "Entra la URL del webhook",
"Error": "Error",
"ERROR": "ERROR",
"Error accessing Google Drive: {{error}}": "Error en accedir a Google Drive: {{error}}",
@@ -483,10 +487,10 @@
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Afirmo que he llegit i entenc les implicacions de la meva acció. Soc conscient dels riscos associats a l'execució de codi arbitrari i he verificat la fiabilitat de la font.",
"ID": "ID",
"Ignite curiosity": "Despertar la curiositat",
"Image Compression": "",
"Image Compression": "Compressió d'imatges",
"Image Generation (Experimental)": "Generació d'imatges (Experimental)",
"Image Generation Engine": "Motor de generació d'imatges",
"Image Max Compression Size": "",
"Image Max Compression Size": "Mida màxima de la compressió d'imatges",
"Image Settings": "Preferències d'imatges",
"Images": "Imatges",
"Import Chats": "Importar xats",
@@ -507,6 +511,7 @@
"Interface": "Interfície",
"Invalid file format.": "Format d'arxiu no vàlid.",
"Invalid Tag": "Etiqueta no vàlida",
"is typing...": "",
"January": "Gener",
"Jina API Key": "Clau API de Jina",
"join our Discord for help.": "uneix-te al nostre Discord per obtenir ajuda.",
@@ -531,6 +536,7 @@
"Language": "Idioma",
"Last Active": "Activitat recent",
"Last Modified": "Modificació",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "Servidor LDAP actualitzat",
"Leaderboard": "Tauler de classificació",
@@ -605,9 +611,9 @@
"Name": "Nom",
"Name your knowledge base": "Anomena la teva base de coneixement",
"New Chat": "Nou xat",
"New folder": "",
"New folder": "Nova carpeta",
"New Password": "Nova contrasenya",
"new-channel": "",
"new-channel": "nou-canal",
"No content found": "No s'ha trobat contingut",
"No content to speak": "No hi ha contingut per parlar",
"No distance available": "No hi ha distància disponible",
@@ -630,8 +636,8 @@
"Not helpful": "No ajuda",
"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": "Notes",
"Notification Sound": "",
"Notification Webhook": "",
"Notification Sound": "So de la notificació",
"Notification Webhook": "Webhook de la notificació",
"Notifications": "Notificacions",
"November": "Novembre",
"num_gpu (Ollama)": "num_gpu (Ollama)",
@@ -736,6 +742,7 @@
"Rename": "Canviar el nom",
"Reorder Models": "Reordenar els models",
"Repeat Last N": "Repeteix els darrers N",
"Reply in Thread": "",
"Request Mode": "Mode de sol·licitud",
"Reranking Model": "Model de reavaluació",
"Reranking model disabled": "Model de reavaluació desactivat",
@@ -744,6 +751,7 @@
"Reset All Models": "Restablir tots els models",
"Reset Upload Directory": "Restableix el directori de pujades",
"Reset Vector Storage/Knowledge": "Restableix el Repositori de vectors/Coneixement",
"Reset view": "",
"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": "Resultat",
@@ -781,7 +789,7 @@
"Search Tools": "Cercar eines",
"SearchApi API Key": "Clau API de SearchApi",
"SearchApi Engine": "Motor de SearchApi",
"Searched {{count}} sites": "",
"Searched {{count}} sites": "S'han cercat {{count}} pàgines",
"Searching \"{{searchQuery}}\"": "Cercant \"{{searchQuery}}\"",
"Searching Knowledge for \"{{searchQuery}}\"": "Cercant \"{{searchQuery}}\" al coneixement",
"Searxng Query URL": "URL de consulta de Searxng",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Per accedir als models GGUF disponibles per descarregar,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Per accedir a la WebUI, poseu-vos en contacte amb l'administrador. Els administradors poden gestionar els estats dels usuaris des del tauler d'administració.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Per adjuntar la base de coneixement aquí, afegiu-la primer a l'espai de treball \"Coneixement\".",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Per protegir la privadesa, només es comparteixen puntuacions, identificadors de models, etiquetes i metadades dels comentaris; els registres de xat romanen privats i no s'inclouen.",
"To select actions here, add them to the \"Functions\" workspace first.": "Per seleccionar accions aquí, afegeix-les primer a l'espai de treball \"Funcions\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Per seleccionar filtres aquí, afegeix-los primer a l'espai de treball \"Funcions\".",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variable per tenir-les reemplaçades amb el contingut del porta-retalls.",
"Version": "Versió",
"Version {{selectedVersion}} of {{totalVersions}}": "Versió {{selectedVersion}} de {{totalVersions}}",
"View Replies": "",
"Visibility": "Visibilitat",
"Voice": "Veu",
"Voice Input": "Entrada de veu",
@@ -1015,7 +1025,7 @@
"Web Search Query Generation": "Generació de consultes per a la cerca de la web",
"Webhook URL": "URL del webhook",
"WebUI Settings": "Preferències de WebUI",
"WebUI URL": "",
"WebUI URL": "URL de WebUI",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI farà peticions a \"{{url}}/api/chat\"",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI farà peticions a \"{{url}}/chat/completions\"",
"What are you trying to achieve?": "Què intentes aconseguir?",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(pananglitan `sh webui.sh --api`)",
"(latest)": "",
"{{ models }}": "",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "",
"{{webUIName}} Backend Required": "Backend {{webUIName}} gikinahanglan",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "",
"Add Model": "",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "idugang ang mga tag",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Naa na kay account ?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API Base URL",
"API Key": "yawe sa API",
"API Key created.": "",
"API Key Endpoint Restrictions": "",
"API keys": "",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interface",
"Invalid file format.": "",
"Invalid Tag": "",
"is typing...": "",
"January": "",
"Jina API Key": "",
"join our Discord for help.": "Apil sa among Discord alang sa tabang.",
@@ -531,6 +536,7 @@
"Language": "Pinulongan",
"Last Active": "",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "Balika ang katapusang N",
"Reply in Thread": "",
"Request Mode": "Query mode",
"Reranking Model": "",
"Reranking model disabled": "",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Aron ma-access ang mga modelo sa GGUF nga magamit alang sa pag-download,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variable aron pulihan kini sa mga sulud sa clipboard.",
"Version": "Bersyon",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(např. `sh webui.sh --api`)",
"(latest)": "Nejnovější",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}'s konverzace",
"{{webUIName}} Backend Required": "Požadován {{webUIName}} Backend",
"*Prompt node ID(s) are required for image generation": "*Jsou vyžadovány IDs pro prompt node pro generování obrázků",
@@ -34,6 +35,7 @@
"Add Group": "Přidat skupinu",
"Add Memory": "Přidat paměť",
"Add Model": "Přidat model",
"Add Reaction": "",
"Add Tag": "Přidat štítek",
"Add Tags": "Přidat štítky",
"Add text content": "Přidejte textový obsah",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Povolit dočasný chat",
"Allow User Location": "Povolit uživatelskou polohu",
"Allow Voice Interruption in Call": "Povolit přerušení hlasu při hovoru",
"Allowed Endpoints": "",
"Already have an account?": "Už máte účet?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "Základní URL adresa API",
"API Key": "Klíč API",
"API Key created.": "API klíč byl vytvořen.",
"API Key Endpoint Restrictions": "",
"API keys": "API klíče",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Vkládací model (Embedding Model)",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "Model vkládání nastaven na \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Povolit sdílení komunity",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Rozhraní",
"Invalid file format.": "Neplatný formát souboru.",
"Invalid Tag": "Neplatný tag",
"is typing...": "",
"January": "Leden",
"Jina API Key": "",
"join our Discord for help.": "připojte se k našemu Discordu pro pomoc.",
@@ -531,6 +536,7 @@
"Language": "Jazyk",
"Last Active": "Naposledy aktivní",
"Last Modified": "Poslední změna",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "Žebříček",
@@ -736,6 +742,7 @@
"Rename": "Přejmenovat",
"Reorder Models": "",
"Repeat Last N": "Opakovat posledních N",
"Reply in Thread": "",
"Request Mode": "Režim žádosti",
"Reranking Model": "Model pro přehodnocení pořadí",
"Reranking model disabled": "Přeřazovací model je deaktivován",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Resetovat adresář nahrávání",
"Reset Vector Storage/Knowledge": "Resetování úložiště vektorů/znalostí",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Oznámení o odpovědích nelze aktivovat, protože oprávnění webu byla zamítnuta. Navštivte nastavení svého prohlížeče a udělte potřebný přístup.",
"Response splitting": "Rozdělení odpovědi",
"Result": "Výsledek",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Pro přístup k modelům GGUF dostupným pro stažení,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pro přístup k WebUI se prosím obraťte na administrátora. Administrátoři mohou spravovat stavy uživatelů z Admin Panelu.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Chcete-li zde připojit znalostní databázi, nejprve ji přidejte do workspace \"Knowledge\".",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Aby byla chráněna vaše soukromí, z vaší zpětné vazby jsou sdílena pouze hodnocení, ID modelů, značky a metadata – vaše chatové záznamy zůstávají soukromé a nejsou zahrnuty.",
"To select actions here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat akce, nejprve je přidejte do pracovní plochy \"Functions\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat filtry, nejprve je přidejte do workspace „Functions“.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "proměnnou, aby byl jejich obsah nahrazen obsahem schránky.",
"Version": "Verze",
"Version {{selectedVersion}} of {{totalVersions}}": "Verze {{selectedVersion}} z {{totalVersions}}",
"View Replies": "",
"Visibility": "Viditelnost",
"Voice": "Hlas",
"Voice Input": "Hlasový vstup",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(f.eks. `sh webui.sh --api`)",
"(latest)": "(seneste)",
"{{ models }}": "{{ modeller }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}s chats",
"{{webUIName}} Backend Required": "{{webUIName}} Backend kræves",
"*Prompt node ID(s) are required for image generation": "*Prompt node ID(s) er påkrævet for at kunne generere billeder",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Tilføj hukommelse",
"Add Model": "Tilføj model",
"Add Reaction": "",
"Add Tag": "Tilføj tag",
"Add Tags": "Tilføj tags",
"Add text content": "Tilføj tekst",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Tillad midlertidig chat",
"Allow User Location": "Tillad bruger-lokation",
"Allow Voice Interruption in Call": "Tillad afbrydelser i stemme i opkald",
"Allowed Endpoints": "",
"Already have an account?": "Har du allerede en profil?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API Base URL",
"API Key": "API nøgle",
"API Key created.": "API nøgle lavet",
"API Key Endpoint Restrictions": "",
"API keys": "API nøgler",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Embedding Model",
"Embedding Model Engine": "Embedding Model engine",
"Embedding model set to \"{{embedding_model}}\"": "Embedding model sat til \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Aktiver deling til Community",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Grænseflade",
"Invalid file format.": "",
"Invalid Tag": "Ugyldigt tag",
"is typing...": "",
"January": "Januar",
"Jina API Key": "",
"join our Discord for help.": "tilslut dig vores Discord for at få hjælp.",
@@ -531,6 +536,7 @@
"Language": "Sprog",
"Last Active": "Sidst aktiv",
"Last Modified": "Sidst ændret",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Omdøb",
"Reorder Models": "",
"Repeat Last N": "Gentag sidste N",
"Reply in Thread": "",
"Request Mode": "Forespørgselstilstand",
"Reranking Model": "Omarrangeringsmodel",
"Reranking model disabled": "Omarrangeringsmodel deaktiveret",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Nulstil uploadmappe",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "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": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "For at få adgang til de GGUF-modeller, der er tilgængelige til download,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "For at få adgang til WebUI skal du kontakte administratoren. Administratorer kan administrere brugerstatus fra administrationspanelet.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "For at vedhæfte vidensbase her skal du først tilføje dem til \"Viden\"-arbejdsområdet.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "For at vælge handlinger her skal du først tilføje dem til \"Funktioner\"-arbejdsområdet.",
"To select filters here, add them to the \"Functions\" workspace first.": "For at vælge filtre her skal du først tilføje dem til \"Funktioner\"-arbejdsområdet.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variabel for at få dem erstattet med indholdet af udklipsholderen.",
"Version": "Version",
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} af {{totalVersions}}",
"View Replies": "",
"Visibility": "",
"Voice": "Stemme",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(z. B. `sh webui.sh --api`)",
"(latest)": "(neueste)",
"{{ models }}": "{{ Modelle }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}s Unterhaltungen",
"{{webUIName}} Backend Required": "{{webUIName}}-Backend erforderlich",
"*Prompt node ID(s) are required for image generation": "*Prompt-Node-ID(s) sind für die Bildgenerierung erforderlich",
@@ -34,6 +35,7 @@
"Add Group": "Gruppe hinzufügen",
"Add Memory": "Erinnerung hinzufügen",
"Add Model": "Modell hinzufügen",
"Add Reaction": "",
"Add Tag": "Tag hinzufügen",
"Add Tags": "Tags hinzufügen",
"Add text content": "Textinhalt hinzufügen",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Temporäre Unterhaltungen erlauben",
"Allow User Location": "Standort freigeben",
"Allow Voice Interruption in Call": "Unterbrechung durch Stimme im Anruf zulassen",
"Allowed Endpoints": "",
"Already have an account?": "Haben Sie bereits einen Account?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternative zu top_p und zielt darauf ab, ein Gleichgewicht zwischen Qualität und Vielfalt zu gewährleisten. Der Parameter p repräsentiert die Mindestwahrscheinlichkeit für ein Token, um berücksichtigt zu werden, relativ zur Wahrscheinlichkeit des wahrscheinlichsten Tokens. Zum Beispiel, bei p=0.05 und das wahrscheinlichste Token hat eine Wahrscheinlichkeit von 0.9, werden Logits mit einem Wert von weniger als 0.045 herausgefiltert. (Standard: 0.0)",
"Amazing": "Fantastisch",
@@ -67,6 +70,7 @@
"API Base URL": "API-Basis-URL",
"API Key": "API-Schlüssel",
"API Key created.": "API-Schlüssel erstellt.",
"API Key Endpoint Restrictions": "",
"API keys": "API-Schlüssel",
"Application DN": "Anwendungs-DN",
"Application DN Password": "Anwendungs-DN-Passwort",
@@ -310,7 +314,7 @@
"Embedding Model": "Embedding-Modell",
"Embedding Model Engine": "Embedding-Modell-Engine",
"Embedding model set to \"{{embedding_model}}\"": "Embedding-Modell auf \"{{embedding_model}}\" gesetzt",
"Enable API Key Auth": "API-Schlüssel-Authentifizierung aktivieren",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Community-Freigabe aktivieren",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Benutzeroberfläche",
"Invalid file format.": "Ungültiges Dateiformat.",
"Invalid Tag": "Ungültiger Tag",
"is typing...": "",
"January": "Januar",
"Jina API Key": "Jina-API-Schlüssel",
"join our Discord for help.": "Treten Sie unserem Discord bei, um Hilfe zu erhalten.",
@@ -531,6 +536,7 @@
"Language": "Sprache",
"Last Active": "Zuletzt aktiv",
"Last Modified": "Zuletzt bearbeitet",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP-Server aktualisiert",
"Leaderboard": "Bestenliste",
@@ -736,6 +742,7 @@
"Rename": "Umbenennen",
"Reorder Models": "",
"Repeat Last N": "Wiederhole die letzten N",
"Reply in Thread": "",
"Request Mode": "Anforderungsmodus",
"Reranking Model": "Reranking-Modell",
"Reranking model disabled": "Reranking-Modell deaktiviert",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Upload-Verzeichnis zurücksetzen",
"Reset Vector Storage/Knowledge": "Vektorspeicher/Wissen zurücksetzen",
"Reset view": "",
"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": "Antwortaufteilung",
"Result": "Ergebnis",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Um auf die verfügbaren GGUF-Modelle zuzugreifen,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Um auf das WebUI zugreifen zu können, wenden Sie sich bitte an einen Administrator. Administratoren können den Benutzerstatus über das Admin-Panel verwalten.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Um Wissensdatenbanken hier anzuhängen, fügen Sie sie zunächst dem Arbeitsbereich \"Wissen\" hinzu.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Um Ihre Privatsphäre zu schützen, werden nur Bewertungen, Modell-IDs, Tags und Metadaten aus Ihrem Feedback geteilt – Ihre Unterhaltungen bleiben privat und werden nicht einbezogen.",
"To select actions here, add them to the \"Functions\" workspace first.": "Um Aktionen auszuwählen, fügen Sie diese zunächst dem Arbeitsbereich „Funktionen“ hinzu.",
"To select filters here, add them to the \"Functions\" workspace first.": "Um Filter auszuwählen, fügen Sie diese zunächst dem Arbeitsbereich „Funktionen“ hinzu.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "Variable, um den Inhalt der Zwischenablage beim Nutzen des Prompts zu ersetzen.",
"Version": "Version",
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} von {{totalVersions}}",
"View Replies": "",
"Visibility": "Sichtbarkeit",
"Voice": "Stimme",
"Voice Input": "Spracheingabe",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(such e.g. `sh webui.sh --api`)",
"(latest)": "(much latest)",
"{{ models }}": "",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "",
"{{webUIName}} Backend Required": "{{webUIName}} Backend Much Required",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "",
"Add Model": "",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Such account exists?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API Base URL",
"API Key": "API Key",
"API Key created.": "",
"API Key Endpoint Restrictions": "",
"API keys": "",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interface",
"Invalid file format.": "",
"Invalid Tag": "",
"is typing...": "",
"January": "",
"Jina API Key": "",
"join our Discord for help.": "join our Discord for help.",
@@ -531,6 +536,7 @@
"Language": "Doge Speak",
"Last Active": "",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Reply in Thread": "",
"Request Mode": "Request Bark",
"Reranking Model": "",
"Reranking model disabled": "",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "To access the GGUF models available for downloading, much access",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variable to have them replaced with clipboard content. Very replace.",
"Version": "Version much version",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(π.χ. `sh webui.sh --api`)",
"(latest)": "(τελευταίο)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Συνομιλίες του {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Απαιτείται Backend",
"*Prompt node ID(s) are required for image generation": "*Τα αναγνωριστικά κόμβου Prompt απαιτούνται για τη δημιουργία εικόνων",
@@ -34,6 +35,7 @@
"Add Group": "Προσθήκη Ομάδας",
"Add Memory": "Προσθήκη Μνήμης",
"Add Model": "Προσθήκη Μοντέλου",
"Add Reaction": "",
"Add Tag": "Προσθήκη Ετικέτας",
"Add Tags": "Προσθήκη Ετικετών",
"Add text content": "Προσθήκη κειμένου",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Επιτρέπεται η Προσωρινή Συνομιλία",
"Allow User Location": "Επιτρέπεται η Τοποθεσία Χρήστη",
"Allow Voice Interruption in Call": "Επιτρέπεται η Παύση Φωνής στην Κλήση",
"Allowed Endpoints": "",
"Already have an account?": "Έχετε ήδη λογαριασμό;",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Εναλλακτικό στο top_p, και στοχεύει στη διασφάλιση μιας ισορροπίας μεταξύ ποιότητας και ποικιλίας. Η παράμετρος p αντιπροσωπεύει την ελάχιστη πιθανότητα για ένα token να θεωρηθεί, σε σχέση με την πιθανότητα του πιο πιθανού token. Για παράδειγμα, με p=0.05 και το πιο πιθανό token να έχει πιθανότητα 0.9, τα logits με τιμή μικρότερη από 0.045 φιλτράρονται. (Προεπιλογή: 0.0)",
"Amazing": "Καταπληκτικό",
@@ -67,6 +70,7 @@
"API Base URL": "API Βασικό URL",
"API Key": "Κλειδί API",
"API Key created.": "Το κλειδί API δημιουργήθηκε.",
"API Key Endpoint Restrictions": "",
"API keys": "κλειδιά API",
"Application DN": "DN Εφαρμογής",
"Application DN Password": "Κωδικός DN Εφαρμογής",
@@ -310,7 +314,7 @@
"Embedding Model": "Μοντέλο Ενσωμάτωσης",
"Embedding Model Engine": "Μηχανή Μοντέλου Ενσωμάτωσης",
"Embedding model set to \"{{embedding_model}}\"": "Το μοντέλο ενσωμάτωσης έχει οριστεί σε \"{{embedding_model}}\"",
"Enable API Key Auth": "Ενεργοποίηση Επαλήθευσης Κλειδιού API",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Ενεργοποίηση Κοινοτικής Κοινής Χρήσης",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Διεπαφή",
"Invalid file format.": "Μη έγκυρη μορφή αρχείου.",
"Invalid Tag": "Μη έγκυρη Ετικέτα",
"is typing...": "",
"January": "Ιανουάριος",
"Jina API Key": "Κλειδί API Jina",
"join our Discord for help.": "συμμετέχετε στο Discord μας για βοήθεια.",
@@ -531,6 +536,7 @@
"Language": "Γλώσσα",
"Last Active": "Τελευταία Ενεργή",
"Last Modified": "Τελευταία Τροποποίηση",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "Ο διακομιστής LDAP ενημερώθηκε",
"Leaderboard": "Κατάταξη",
@@ -736,6 +742,7 @@
"Rename": "Μετονομασία",
"Reorder Models": "Επαναταξινόμηση Μοντέλων",
"Repeat Last N": "Επανάληψη Τελευταίων N",
"Reply in Thread": "",
"Request Mode": "Λειτουργία Αιτήματος",
"Reranking Model": "Μοντέλο Επαναταξινόμησης",
"Reranking model disabled": "Το μοντέλο επαναταξινόμησης απενεργοποιήθηκε",
@@ -744,6 +751,7 @@
"Reset All Models": "Επαναφορά Όλων των Μοντέλων",
"Reset Upload Directory": "Επαναφορά Καταλόγου Ανεβάσματος",
"Reset Vector Storage/Knowledge": "Επαναφορά Αποθήκευσης Διανυσμάτων/Γνώσης",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Οι ειδοποιήσεις απάντησης δεν μπορούν να ενεργοποιηθούν καθώς οι άδειες του ιστότοπου έχουν αρνηθεί. Παρακαλώ επισκεφτείτε τις ρυθμίσεις του περιηγητή σας για να δώσετε την απαραίτητη πρόσβαση.",
"Response splitting": "Διαχωρισμός απάντησης",
"Result": "Αποτέλεσμα",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Για να αποκτήσετε πρόσβαση στα μοντέλα GGUF διαθέσιμα για λήψη,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Για να αποκτήσετε πρόσβαση στο WebUI, παρακαλώ επικοινωνήστε με τον διαχειριστή. Οι διαχειριστές μπορούν να διαχειριστούν τις καταστάσεις των χρηστών από τον Πίνακα Διαχειριστή.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Για να επισυνάψετε τη βάση γνώσης εδώ, προσθέστε τα πρώτα στο χώρο εργασίας \"Knowledge\".",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Για να προστατεύσετε την ιδιωτικότητά σας, μόνο οι βαθμολογίες, τα IDs μοντέλων, οι ετικέτες και τα μεταδεδομένα μοιράζονται από την ανατροφοδότησή σας—τα αρχεία συνομιλιών σας παραμένουν ιδιωτικά και δεν περιλαμβάνονται.",
"To select actions here, add them to the \"Functions\" workspace first.": "Για να επιλέξετε ενέργειες εδώ, προσθέστε τις πρώτα στο χώρο εργασίας \"Functions\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Για να επιλέξετε φίλτρα εδώ, προσθέστε τα πρώτα στο χώρο εργασίας \"Functions\".",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "μεταβλητή να αντικατασταθούν με το περιεχόμενο του πρόχειρου.",
"Version": "Έκδοση",
"Version {{selectedVersion}} of {{totalVersions}}": "Έκδοση {{selectedVersion}} από {{totalVersions}}",
"View Replies": "",
"Visibility": "Ορατότητα",
"Voice": "Φωνή",
"Voice Input": "Εισαγωγή Φωνής",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "",
"(latest)": "",
"{{ models }}": "",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "",
"{{webUIName}} Backend Required": "",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "",
"Add Model": "",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "",
"API Key": "",
"API Key created.": "",
"API Key Endpoint Restrictions": "",
"API keys": "",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "",
"Invalid file format.": "",
"Invalid Tag": "",
"is typing...": "",
"January": "",
"Jina API Key": "",
"join our Discord for help.": "",
@@ -531,6 +536,7 @@
"Language": "",
"Last Active": "",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "",
"Reply in Thread": "",
"Request Mode": "",
"Reranking Model": "",
"Reranking model disabled": "",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "",
"Version": "",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "",
"(latest)": "",
"{{ models }}": "",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "",
"{{webUIName}} Backend Required": "",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "",
"Add Model": "",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "",
"API Key": "",
"API Key created.": "",
"API Key Endpoint Restrictions": "",
"API keys": "",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "",
"Invalid file format.": "",
"Invalid Tag": "",
"is typing...": "",
"January": "",
"Jina API Key": "",
"join our Discord for help.": "",
@@ -531,6 +536,7 @@
"Language": "",
"Last Active": "",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "",
"Reply in Thread": "",
"Request Mode": "",
"Reranking Model": "",
"Reranking model disabled": "",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "",
"Version": "",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(p.ej. `sh webui.sh --api`)",
"(latest)": "(latest)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Chats de {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Servidor Requerido",
"*Prompt node ID(s) are required for image generation": "Los ID de nodo son requeridos para la generación de imágenes",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Agregar Memoria",
"Add Model": "Agregar Modelo",
"Add Reaction": "",
"Add Tag": "Agregar etiqueta",
"Add Tags": "agregar etiquetas",
"Add text content": "Añade contenido de texto",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Permitir Chat Temporal",
"Allow User Location": "Permitir Ubicación del Usuario",
"Allow Voice Interruption in Call": "Permitir interrupción de voz en llamada",
"Allowed Endpoints": "",
"Already have an account?": "¿Ya tienes una cuenta?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "Dirección URL de la API",
"API Key": "Clave de la API ",
"API Key created.": "Clave de la API creada.",
"API Key Endpoint Restrictions": "",
"API keys": "Claves de la API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Modelo de Embedding",
"Embedding Model Engine": "Motor de Modelo de Embedding",
"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding configurado a \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Habilitar el uso compartido de la comunidad",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interfaz",
"Invalid file format.": "",
"Invalid Tag": "Etiqueta Inválida",
"is typing...": "",
"January": "Enero",
"Jina API Key": "",
"join our Discord for help.": "Únase a nuestro Discord para obtener ayuda.",
@@ -531,6 +536,7 @@
"Language": "Lenguaje",
"Last Active": "Última Actividad",
"Last Modified": "Modificado por última vez",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Renombrar",
"Reorder Models": "",
"Repeat Last N": "Repetir las últimas N",
"Reply in Thread": "",
"Request Mode": "Modo de petición",
"Reranking Model": "Modelo de reranking",
"Reranking model disabled": "Modelo de reranking deshabilitado",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Reiniciar Directorio de carga",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "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": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Para acceder a los modelos GGUF disponibles para descargar,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para acceder al interfaz de usuario web, por favor contacte al administrador. Los administradores pueden administrar los estados de los usuarios desde el panel de administración.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Para adjuntar la base de conocimientos aquí, agreguelas al área de trabajo \"Conocimiento\" primero.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "Para seleccionar acciones aquí, agreguelas al área de trabajo \"Funciones\" primero.",
"To select filters here, add them to the \"Functions\" workspace first.": "Para seleccionar filtros aquí, agreguelos al área de trabajo \"Funciones\" primero.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variable para reemplazarlos con el contenido del portapapeles.",
"Version": "Versión",
"Version {{selectedVersion}} of {{totalVersions}}": "Versión {{selectedVersion}} de {{totalVersions}}",
"View Replies": "",
"Visibility": "",
"Voice": "Voz",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(adib. `sh webui.sh --api`)",
"(latest)": "(azkena)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}-ren Txatak",
"{{webUIName}} Backend Required": "{{webUIName}} Backend-a Beharrezkoa",
"*Prompt node ID(s) are required for image generation": "Prompt nodoaren IDa(k) beharrezkoak dira irudiak sortzeko",
@@ -34,6 +35,7 @@
"Add Group": "Gehitu Taldea",
"Add Memory": "Gehitu Memoria",
"Add Model": "Gehitu Eredua",
"Add Reaction": "",
"Add Tag": "Gehitu Etiketa",
"Add Tags": "Gehitu Etiketak",
"Add text content": "Gehitu testu edukia",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Baimendu Behin-behineko Txata",
"Allow User Location": "Baimendu Erabiltzailearen Kokapena",
"Allow Voice Interruption in Call": "Baimendu Ahots Etena Deietan",
"Allowed Endpoints": "",
"Already have an account?": "Baduzu kontu bat?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p-ren alternatiba, kalitate eta aniztasunaren arteko oreka bermatzea du helburu. p parametroak token bat kontuan hartzeko gutxieneko probabilitatea adierazten du, token probableenaren probabilitatearen arabera. Adibidez, p=0.05 balioarekin eta token probableenaren probabilitatea 0.9 denean, 0.045 baino balio txikiagoko logit-ak baztertzen dira. (Lehenetsia: 0.0)",
"Amazing": "Harrigarria",
@@ -67,6 +70,7 @@
"API Base URL": "API Oinarri URLa",
"API Key": "API Gakoa",
"API Key created.": "API Gakoa sortu da.",
"API Key Endpoint Restrictions": "",
"API keys": "API gakoak",
"Application DN": "Aplikazioaren DN",
"Application DN Password": "Aplikazioaren DN Pasahitza",
@@ -310,7 +314,7 @@
"Embedding Model": "Embedding Eredua",
"Embedding Model Engine": "Embedding Eredu Motorea",
"Embedding model set to \"{{embedding_model}}\"": "Embedding eredua \"{{embedding_model}}\"-ra ezarri da",
"Enable API Key Auth": "Gaitu API Gako Autentikazioa",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Gaitu Komunitatearen Partekatzea",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interfazea",
"Invalid file format.": "Fitxategi formatu baliogabea.",
"Invalid Tag": "Etiketa Baliogabea",
"is typing...": "",
"January": "Urtarrila",
"Jina API Key": "Jina API Gakoa",
"join our Discord for help.": "batu gure Discord-era laguntzarako.",
@@ -531,6 +536,7 @@
"Language": "Hizkuntza",
"Last Active": "Azken Aktibitatea",
"Last Modified": "Azken Aldaketa",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP zerbitzaria eguneratu da",
"Leaderboard": "Sailkapena",
@@ -736,6 +742,7 @@
"Rename": "Berrizendatu",
"Reorder Models": "Berrantolatu modeloak",
"Repeat Last N": "Errepikatu azken N",
"Reply in Thread": "",
"Request Mode": "Eskaera modua",
"Reranking Model": "Berrantolatze modeloa",
"Reranking model disabled": "Berrantolatze modeloa desgaituta",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Berrezarri karga direktorioa",
"Reset Vector Storage/Knowledge": "Berrezarri bektore biltegia/ezagutza",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Erantzunen jakinarazpenak ezin dira aktibatu webgunearen baimenak ukatu direlako. Mesedez, bisitatu zure nabigatzailearen ezarpenak beharrezko sarbidea emateko.",
"Response splitting": "Erantzun banaketa",
"Result": "Emaitza",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Deskargatzeko eskuragarri dauden GGUF modeloak atzitzeko,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "WebUI-a atzitzeko, mesedez jarri harremanetan administratzailearekin. Administratzaileek erabiltzaileen egoerak kudeatu ditzakete Admin Paneletik.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Ezagutza-basea hemen eransteko, gehitu ezazu lehenik \"Ezagutza\" lan-eremura.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Zure pribatutasuna babesteko, zure feedbacketik bakarrik partekatzen dira balorazioak, modelo IDak, etiketak eta metadatuak—zure txat erregistroak pribatuak dira eta ez dira sartzen.",
"To select actions here, add them to the \"Functions\" workspace first.": "Ekintzak hemen hautatzeko, gehitu itzazu lehenik \"Funtzioak\" lan-eremura.",
"To select filters here, add them to the \"Functions\" workspace first.": "Iragazkiak hemen hautatzeko, gehitu itzazu lehenik \"Funtzioak\" lan-eremura.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "aldagaia arbeleko edukiarekin ordezkatzeko.",
"Version": "Bertsioa",
"Version {{selectedVersion}} of {{totalVersions}}": "{{totalVersions}}-tik {{selectedVersion}}. bertsioa",
"View Replies": "",
"Visibility": "Ikusgarritasuna",
"Voice": "Ahotsa",
"Voice Input": "Ahots sarrera",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)",
"(latest)": "(آخرین)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} گفتگوهای",
"{{webUIName}} Backend Required": "بکند {{webUIName}} نیاز است.",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "افزودن حافظه",
"Add Model": "افزودن مدل",
"Add Reaction": "",
"Add Tag": "افزودن برچسب",
"Add Tags": "افزودن برچسب\u200cها",
"Add text content": "افزودن محتوای متنی",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "اجازهٔ گفتگوی موقتی",
"Allow User Location": "اجازهٔ موقعیت مکانی کاربر",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "از قبل حساب کاربری دارید؟",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "نشانی پایهٔ API",
"API Key": "کلید API",
"API Key created.": "کلید API ساخته شد.",
"API Key Endpoint Restrictions": "",
"API keys": "کلیدهای API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "مدل پیدائش",
"Embedding Model Engine": "محرک مدل پیدائش",
"Embedding model set to \"{{embedding_model}}\"": "مدل پیدائش را به \"{{embedding_model}}\" تنظیم کنید",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "فعالسازی اشتراک انجمن",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "رابط",
"Invalid file format.": "",
"Invalid Tag": "تگ نامعتبر",
"is typing...": "",
"January": "ژانویه",
"Jina API Key": "",
"join our Discord for help.": "برای کمک به دیسکورد ما بپیوندید.",
@@ -531,6 +536,7 @@
"Language": "زبان",
"Last Active": "آخرین فعال",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "تغییر نام",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Reply in Thread": "",
"Request Mode": "حالت درخواست",
"Reranking Model": "مدل ری\u200cشناسی مجدد غیرفعال است",
"Reranking model disabled": "مدل ری\u200cشناسی مجدد غیرفعال است",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "نتیجه",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "برای دسترسی به مدل\u200cهای GGUF موجود برای دانلود،",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "متغیر برای جایگزینی آنها با محتوای بریده\u200cدان.",
"Version": "نسخه",
"Version {{selectedVersion}} of {{totalVersions}}": "نسخهٔ {{selectedVersion}} از {{totalVersions}}",
"View Replies": "",
"Visibility": "",
"Voice": "صوت",
"Voice Input": "ورودی صوتی",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(esim. `sh webui.sh --api`)",
"(latest)": "(uusin)",
"{{ models }}": "{{ mallit }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}:n keskustelut",
"{{webUIName}} Backend Required": "{{webUIName}}-backend vaaditaan",
"*Prompt node ID(s) are required for image generation": "Kuvan luomiseen vaaditaan kehote-solmun ID(t)",
@@ -34,6 +35,7 @@
"Add Group": "Lisää ryhmä",
"Add Memory": "Lisää muistia",
"Add Model": "Lisää malli",
"Add Reaction": "",
"Add Tag": "Lisää tagi",
"Add Tags": "Lisää tageja",
"Add text content": "Lisää tekstisisältöä",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Salli väliaikaiset keskustelut",
"Allow User Location": "Salli käyttäjän sijainti",
"Allow Voice Interruption in Call": "Salli äänen keskeytys puhelussa",
"Allowed Endpoints": "",
"Already have an account?": "Onko sinulla jo tili?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Vaihtoehto top_p:lle, jolla pyritään varmistamaan laadun ja monipuolisuuden tasapaino. Parametri p edustaa pienintä todennäköisyyttä, jolla token otetaan huomioon suhteessa todennäköisimpään tokeniin. Esimerkiksi p=0.05 ja todennäköisin token todennäköisyydellä 0.9, arvoltaan alle 0.045 olevat logit suodatetaan pois. (Oletus: 0.0)",
"Amazing": "Hämmästyttävä",
@@ -67,6 +70,7 @@
"API Base URL": "APIn perus-URL",
"API Key": "API-avain",
"API Key created.": "API-avain luotu.",
"API Key Endpoint Restrictions": "",
"API keys": "API-avaimet",
"Application DN": "Sovelluksen DN",
"Application DN Password": "Sovelluksen DN-salasana",
@@ -310,7 +314,7 @@
"Embedding Model": "Upotusmalli",
"Embedding Model Engine": "Upotusmallin moottori",
"Embedding model set to \"{{embedding_model}}\"": "\"{{embedding_model}}\" valittu upotusmalliksi",
"Enable API Key Auth": "Ota API-avaimen todentaminen käyttöön",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "Ota automaattinen täydennys käyttöön keskusteluviesteissä",
"Enable Community Sharing": "Ota yhteisön jakaminen käyttöön",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Käyttöliittymä",
"Invalid file format.": "Virheellinen tiedostomuoto.",
"Invalid Tag": "Virheellinen tagi",
"is typing...": "",
"January": "tammikuu",
"Jina API Key": "Jina API -avain",
"join our Discord for help.": "liity Discordiimme saadaksesi apua.",
@@ -531,6 +536,7 @@
"Language": "Kieli",
"Last Active": "Viimeksi aktiivinen",
"Last Modified": "Viimeksi muokattu",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP-palvelin päivitetty",
"Leaderboard": "Tulosluettelo",
@@ -736,6 +742,7 @@
"Rename": "Nimeä uudelleen",
"Reorder Models": "Uudelleenjärjestä malleja",
"Repeat Last N": "Toista viimeiset N",
"Reply in Thread": "",
"Request Mode": "Pyyntötila",
"Reranking Model": "Uudelleenpisteytymismalli",
"Reranking model disabled": "Uudelleenpisteytymismalli poistettu käytöstä",
@@ -744,6 +751,7 @@
"Reset All Models": "Palauta kaikki mallit",
"Reset Upload Directory": "Palauta latauspolku",
"Reset Vector Storage/Knowledge": "Tyhjennä vektoritallennukset/tietämys",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Vastausilmoituksia ei voida ottaa käyttöön, koska verkkosivuston käyttöoikeudet on evätty. Myönnä tarvittavat käyttöoikeudet selaimesi asetuksista.",
"Response splitting": "Vastauksen jakaminen",
"Result": "Tulos",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Päästäksesi käsiksi ladattavissa oleviin GGUF-malleihin,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Päästäksesi käyttämään WebUI:ta, ota yhteyttä ylläpitäjään. Ylläpitäjät voivat hallita käyttäjien tiloja Ylläpitopaneelista.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Liittääksesi tietokantasi tähän, lisää ne ensin \"Tietämys\"-työtilaan.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Yksityisyydensuojasi vuoksi palautteestasi jaetaan vain arvostelut, mallitunnukset, tagit ja metadata - keskustelulokisi pysyvät yksityisinä eikä niitä sisällytetä.",
"To select actions here, add them to the \"Functions\" workspace first.": "Valitaksesi toimintoja tässä, lisää ne ensin \"Toiminnot\"-työtilaan.",
"To select filters here, add them to the \"Functions\" workspace first.": "Valitaksesi suodattimia tässä, lisää ne ensin \"Toiminnot\"-työtilaan.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "muuttuja korvataan leikepöydän sisällöllä.",
"Version": "Versio",
"Version {{selectedVersion}} of {{totalVersions}}": "Versio {{selectedVersion}} / {{totalVersions}}",
"View Replies": "",
"Visibility": "Näkyvyys",
"Voice": "Ääni",
"Voice Input": "Äänitulolaitteen käyttö",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(par exemple `sh webui.sh --api`)",
"(latest)": "(dernier)",
"{{ models }}": "{{ modèles }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Discussions de {{user}}",
"{{webUIName}} Backend Required": "Backend {{webUIName}} requis",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Ajouter de la mémoire",
"Add Model": "Ajouter un modèle",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "Ajouter des balises",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "Autoriser l'emplacement de l'utilisateur",
"Allow Voice Interruption in Call": "Autoriser l'interruption vocale pendant un appel",
"Allowed Endpoints": "",
"Already have an account?": "Avez-vous déjà un compte ?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"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 Key Endpoint Restrictions": "",
"API keys": "Clés d'API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Modèle d'embedding",
"Embedding Model Engine": "Moteur de modèle d'encodage",
"Embedding model set to \"{{embedding_model}}\"": "Modèle d'encodage défini sur « {{embedding_model}} »",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Activer le partage communautaire",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interface utilisateur",
"Invalid file format.": "",
"Invalid Tag": "Étiquette non valide",
"is typing...": "",
"January": "Janvier",
"Jina API Key": "",
"join our Discord for help.": "Rejoignez notre Discord pour obtenir de l'aide.",
@@ -531,6 +536,7 @@
"Language": "Langue",
"Last Active": "Dernière activité",
"Last Modified": "Dernière modification",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Renommer",
"Reorder Models": "",
"Repeat Last N": "Répéter les N derniers",
"Reply in Thread": "",
"Request Mode": "Mode de Requête",
"Reranking Model": "Modèle de ré-ranking",
"Reranking model disabled": "Modèle de ré-ranking désactivé",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Répertoire de téléchargement réinitialisé",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "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": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles en téléchargement,",
"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.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "Pour sélectionner des filtres ici, ajoutez-les d'abord à l'espace de travail « Fonctions ». ",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variable pour qu'elles soient remplacées par le contenu du presse-papiers.",
"Version": "Version améliorée",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "Voix",
"Voice Input": "",
+54 -44
View File
@@ -1,10 +1,11 @@
{
"-1 for no limit, or a positive integer for a specific limit": "",
"-1 for no limit, or a positive integer for a specific limit": "-1 pour aucune limite, ou un entier positif pour une limite spécifique",
"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": " 's', 'm', 'h', 'd', 'w' ou '-1' pour une durée illimitée.",
"(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 }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{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",
@@ -34,6 +35,7 @@
"Add Group": "Ajouter un groupe",
"Add Memory": "Ajouter de la mémoire",
"Add Model": "Ajouter un modèle",
"Add Reaction": "",
"Add Tag": "Ajouter un tag",
"Add Tags": "Ajouter des tags",
"Add text content": "Ajouter du contenu textuel",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Autoriser le chat éphémère",
"Allow User Location": "Autoriser l'emplacement de l'utilisateur",
"Allow Voice Interruption in Call": "Autoriser l'interruption vocale pendant un appel",
"Allowed Endpoints": "Points de terminaison autorisés",
"Already have an account?": "Avez-vous déjà un compte ?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternative au top_p, visant à assurer un équilibre entre qualité et variété. Le paramètre p représente la probabilité minimale pour qu'un token soit pris en compte, par rapport à la probabilité du token le plus probable. Par exemple, avec p=0.05 et le token le plus probable ayant une probabilité de 0.9, les logits ayant une valeur inférieure à 0.045 sont filtrés. (Par défaut : 0.0)",
"Amazing": "Incroyable",
@@ -67,6 +70,7 @@
"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 Key Endpoint Restrictions": "Restrictions des points de terminaison de la clé API",
"API keys": "Clés d'API",
"Application DN": "DN de l'application",
"Application DN Password": "Mot de passe DN de l'application",
@@ -76,8 +80,8 @@
"Archive All Chats": "Archiver toutes les conversations",
"Archived Chats": "Conversations archivées",
"archived-chat-export": "exportation de conversation archivée",
"Are you sure you want to delete this channel?": "",
"Are you sure you want to delete this message?": "",
"Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?",
"Are you sure you want to delete this message?": "Êtes-vous sûr de vouloir supprimer ce message ?",
"Are you sure you want to unarchive all archived chats?": "Êtes-vous sûr de vouloir désarchiver toutes les conversations archivées?",
"Are you sure?": "Êtes-vous certain ?",
"Arena Models": "Modèles d'arène",
@@ -92,8 +96,8 @@
"Authenticate": "Authentifier",
"Auto-Copy Response to Clipboard": "Copie automatique de la réponse vers le presse-papiers",
"Auto-playback response": "Lire automatiquement la réponse",
"Autocomplete Generation": "",
"Autocomplete Generation Input Max Length": "",
"Autocomplete Generation": "Génération des suggestions",
"Autocomplete Generation Input Max Length": "Longueur maximale pour la génération des suggestions",
"Automatic1111": "Automatic1111",
"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Chaîne d'authentification de l'API",
"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
@@ -110,7 +114,7 @@
"Batch Size (num_batch)": "Batch Size (num_batch)",
"before": "avant",
"Being lazy": "Être fainéant",
"Beta": "",
"Beta": "Bêta",
"Bing Search V7 Endpoint": "Point de terminaison Bing Search V7",
"Bing Search V7 Subscription Key": "Clé d'abonnement Bing Search V7",
"Brave Search API Key": "Clé API Brave Search",
@@ -121,13 +125,13 @@
"Camera": "Appareil photo",
"Cancel": "Annuler",
"Capabilities": "Capacités",
"Capture": "",
"Capture": "Prise de vue",
"Certificate Path": "Chemin du certificat",
"Change Password": "Changer le mot de passe",
"Channel Name": "",
"Channels": "",
"Channel Name": "Nom du canal",
"Channels": "Canaux",
"Character": "Caractère",
"Character limit for autocomplete generation input": "",
"Character limit for autocomplete generation input": "Limite de caractères pour la génération des suggestions",
"Chart new frontiers": "Tracer de nouvelles frontières",
"Chat": "Chat",
"Chat Background Image": "Image d'arrière-plan de la fenêtre de chat",
@@ -168,7 +172,7 @@
"Collection": "Collection",
"Color": "Couleur",
"ComfyUI": "ComfyUI",
"ComfyUI API Key": "",
"ComfyUI API Key": "Clé API ComfyUI",
"ComfyUI Base URL": "URL de base ComfyUI",
"ComfyUI Base URL is required.": "L'URL de base ComfyUI est requise.",
"ComfyUI Workflow": "Flux de travaux de ComfyUI",
@@ -181,7 +185,7 @@
"Confirm": "Confirmer",
"Confirm Password": "Confirmer le mot de passe",
"Confirm your action": "Confirmer votre action",
"Confirm your new password": "",
"Confirm your new password": "Confirmer votre nouveau mot de passe",
"Connections": "Connexions",
"Contact Admin for WebUI Access": "Contacter l'administrateur pour obtenir l'accès à WebUI",
"Content": "Contenu",
@@ -208,7 +212,7 @@
"Create a model": "Créer un modèle",
"Create Account": "Créer un compte",
"Create Admin Account": "Créer un compte administrateur",
"Create Channel": "",
"Create Channel": "Créer un canal",
"Create Group": "Créer un groupe",
"Create Knowledge": "Créer une connaissance",
"Create new key": "Créer une nouvelle clé",
@@ -244,7 +248,7 @@
"Delete chat?": "Supprimer la conversation ?",
"Delete folder?": "Supprimer le dossier ?",
"Delete function?": "Supprimer la fonction ?",
"Delete Message": "",
"Delete Message": "Supprimer le message",
"Delete prompt?": "Supprimer le prompt ?",
"delete this link": "supprimer ce lien",
"Delete tool?": "Effacer l'outil ?",
@@ -297,7 +301,7 @@
"e.g. Tools for performing various operations": "par ex. Outils pour effectuer diverses opérations",
"Edit": "Modifier",
"Edit Arena Model": "Modifier le modèle d'arène",
"Edit Channel": "",
"Edit Channel": "Modifier le canal",
"Edit Connection": "Modifier la connexion",
"Edit Default Permissions": "Modifier les autorisations par défaut",
"Edit Memory": "Modifier la mémoire",
@@ -310,10 +314,10 @@
"Embedding Model": "Modèle d'embedding",
"Embedding Model Engine": "Moteur de modèle d'embedding",
"Embedding model set to \"{{embedding_model}}\"": "Modèle d'embedding défini sur « {{embedding_model}} »",
"Enable API Key Auth": "Activer l'authentification par clé API",
"Enable autocomplete generation for chat messages": "",
"Enable API Key": "Activer la clé API",
"Enable autocomplete generation for chat messages": "Activer la génération des suggestions pour les messages",
"Enable Community Sharing": "Activer le partage communautaire",
"Enable Google Drive": "",
"Enable Google Drive": "Activer Google Drive",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activer le verrouillage de la mémoire (mlock) pour empêcher les données du modèle d'être échangées de la RAM. Cette option verrouille l'ensemble de pages de travail du modèle en RAM, garantissant qu'elles ne seront pas échangées vers le disque. Cela peut aider à maintenir les performances en évitant les défauts de page et en assurant un accès rapide aux données.",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Activer le mappage de la mémoire (mmap) pour charger les données du modèle. Cette option permet au système d'utiliser le stockage disque comme une extension de la RAM en traitant les fichiers disque comme s'ils étaient en RAM. Cela peut améliorer les performances du modèle en permettant un accès plus rapide aux données. Cependant, cela peut ne pas fonctionner correctement avec tous les systèmes et peut consommer une quantité significative d'espace disque.",
"Enable Message Rating": "Activer l'évaluation des messages",
@@ -341,13 +345,13 @@
"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 Jina API Key": "Entrez la clé API Jina",
"Enter Kagi Search API Key": "",
"Enter Kagi Search API Key": "Entrez la clé API Kagi Search",
"Enter language codes": "Entrez les codes de langue",
"Enter Model ID": "Entrez l'ID du modèle",
"Enter model tag (e.g. {{modelTag}})": "Entrez le tag du modèle (par ex. {{modelTag}})",
"Enter Mojeek Search API Key": "Entrez la clé API Mojeek",
"Enter Number of Steps (e.g. 50)": "Entrez le nombre d'étapes (par ex. 50)",
"Enter proxy URL (e.g. https://user:password@host:port)": "",
"Enter proxy URL (e.g. https://user:password@host:port)": "Entrez l'URL du proxy (par ex. https://use:password@host:port)",
"Enter Sampler (e.g. Euler a)": "Entrez le sampler (par ex. Euler a)",
"Enter Scheduler (e.g. Karras)": "Entrez le planificateur (par ex. Karras)",
"Enter Score": "Entrez votre score",
@@ -364,24 +368,24 @@
"Enter stop sequence": "Entrez la séquence d'arrêt",
"Enter system prompt": "Entrez le prompt système",
"Enter Tavily API Key": "Entrez la clé API Tavily",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Entrez l'URL publique de votre WebUI. Cette URL sera utilisée pour générer des liens dans les notifications.",
"Enter Tika Server URL": "Entrez l'URL du serveur Tika",
"Enter Top K": "Entrez les Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Entrez l'URL (par ex. {http://127.0.0.1:7860/})",
"Enter URL (e.g. http://localhost:11434)": "Entrez l'URL (par ex. http://localhost:11434)",
"Enter your current password": "",
"Enter your current password": "Entrez votre mot de passe actuel",
"Enter Your Email": "Entrez votre adresse e-mail",
"Enter Your Full Name": "Entrez votre nom complet",
"Enter your message": "Entrez votre message",
"Enter your new password": "",
"Enter your new password": "Entrez votre nouveau mot de passe",
"Enter Your Password": "Entrez votre mot de passe",
"Enter Your Role": "Entrez votre rôle",
"Enter Your Username": "Entrez votre nom d'utilisateur",
"Enter your webhook URL": "",
"Enter your webhook URL": "Entrez l'URL de votre webhook",
"Error": "Erreur",
"ERROR": "ERREUR",
"Error accessing Google Drive: {{error}}": "",
"Error uploading file: {{error}}": "",
"Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}",
"Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}",
"Evaluations": "Évaluations",
"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemple: (&(objectClass=inetOrgPerson)(uid=%s))",
"Example: ALL": "Exemple: TOUS",
@@ -420,7 +424,7 @@
"File not found.": "Fichier introuvable.",
"File removed successfully.": "Fichier supprimé avec succès.",
"File size should not exceed {{maxSize}} MB.": "La taille du fichier ne doit pas dépasser {{maxSize}} Mo.",
"File uploaded successfully": "",
"File uploaded successfully": "Fichier téléversé avec succès",
"Files": "Fichiers",
"Filter is now globally disabled": "Le filtre est maintenant désactivé globalement",
"Filter is now globally enabled": "Le filtre est désormais activé globalement",
@@ -458,7 +462,7 @@
"Get started with {{WEBUI_NAME}}": "Commencez avec {{WEBUI_NAME}}",
"Global": "Mondial",
"Good Response": "Bonne réponse",
"Google Drive": "",
"Google Drive": "Google Drive",
"Google PSE API Key": "Clé API Google PSE",
"Google PSE Engine Id": "ID du moteur de recherche PSE de Google",
"Group created successfully": "Groupe créé avec succès",
@@ -483,10 +487,10 @@
"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",
"Ignite curiosity": "Éveiller la curiosité",
"Image Compression": "",
"Image Compression": "Compression d'image",
"Image Generation (Experimental)": "Génération d'images (expérimental)",
"Image Generation Engine": "Moteur de génération d'images",
"Image Max Compression Size": "",
"Image Max Compression Size": "Taille maximale de compression d'image",
"Image Settings": "Paramètres de génération d'images",
"Images": "Images",
"Import Chats": "Importer les conversations",
@@ -507,6 +511,7 @@
"Interface": "Interface utilisateur",
"Invalid file format.": "Format de fichier non valide.",
"Invalid Tag": "Tag non valide",
"is typing...": "est en train d'écrire...",
"January": "Janvier",
"Jina API Key": "Clé API Jina",
"join our Discord for help.": "Rejoignez notre Discord pour obtenir de l'aide.",
@@ -516,7 +521,7 @@
"June": "Juin",
"JWT Expiration": "Expiration du token JWT",
"JWT Token": "Token JWT",
"Kagi Search API Key": "",
"Kagi Search API Key": "Clé API Kagi Search",
"Keep Alive": "Temps de maintien connecté",
"Key": "Clé",
"Keyboard shortcuts": "Raccourcis clavier",
@@ -531,6 +536,7 @@
"Language": "Langue",
"Last Active": "Dernière activité",
"Last Modified": "Dernière modification",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "Serveur LDAP mis à jour",
"Leaderboard": "Classement",
@@ -605,9 +611,9 @@
"Name": "Nom d'utilisateur",
"Name your knowledge base": "Nommez votre base de connaissances",
"New Chat": "Nouvelle conversation",
"New folder": "",
"New folder": "Nouveau dossier",
"New Password": "Nouveau mot de passe",
"new-channel": "",
"new-channel": "nouveau-canal",
"No content found": "Aucun contenu trouvé",
"No content to speak": "Rien à signaler",
"No distance available": "Aucune distance disponible",
@@ -630,8 +636,8 @@
"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",
"Notification Sound": "",
"Notification Webhook": "",
"Notification Sound": "Son de notification",
"Notification Webhook": "Webhook de notification",
"Notifications": "Notifications",
"November": "Novembre",
"num_gpu (Ollama)": "num_gpu (Ollama)",
@@ -697,7 +703,7 @@
"Please carefully review the following warnings:": "Veuillez lire attentivement les avertissements suivants :",
"Please enter a prompt": "Veuillez saisir un prompt",
"Please fill in all fields.": "Veuillez remplir tous les champs.",
"Please select a model first.": "",
"Please select a model first.": "Veuillez d'abord sélectionner un modèle.",
"Please select a reason": "Veuillez sélectionner une raison",
"Port": "Port",
"Positive attitude": "Attitude positive",
@@ -713,7 +719,7 @@
"Prompt updated successfully": "Prompt mis à jour avec succès",
"Prompts": "Prompts",
"Prompts Access": "Accès aux prompts",
"Proxy URL": "",
"Proxy URL": "URL du proxy",
"Pull \"{{searchValue}}\" from Ollama.com": "Récupérer « {{searchValue}} » depuis Ollama.com",
"Pull a model from Ollama.com": "Télécharger un modèle depuis Ollama.com",
"Query Generation Prompt": "Prompt de génération de requête",
@@ -736,6 +742,7 @@
"Rename": "Renommer",
"Reorder Models": "Réorganiser les modèles",
"Repeat Last N": "Répéter les N derniers",
"Reply in Thread": "",
"Request Mode": "Mode de requête",
"Reranking Model": "Modèle de ré-ranking",
"Reranking model disabled": "Modèle de ré-ranking désactivé",
@@ -744,10 +751,11 @@
"Reset All Models": "Réinitialiser tous les modèles",
"Reset Upload Directory": "Réinitialiser le répertoire de téléchargement",
"Reset Vector Storage/Knowledge": "Réinitialiser le stockage vectoriel/connaissances",
"Reset view": "Réinitialiser la vue",
"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": "Résultat",
"Retrieval Query Generation": "",
"Retrieval Query Generation": "Génération de requête de RAG",
"Rich Text Input for Chat": "Saisie de texte enrichi pour le chat",
"RK": "Rang",
"Role": "Rôle",
@@ -781,7 +789,7 @@
"Search Tools": "Rechercher des outils",
"SearchApi API Key": "Clé API SearchApi",
"SearchApi Engine": "Moteur de recherche SearchApi",
"Searched {{count}} sites": "",
"Searched {{count}} sites": "{{count}} sites recherchés",
"Searching \"{{searchQuery}}\"": "Recherche de « {{searchQuery}} »",
"Searching Knowledge for \"{{searchQuery}}\"": "Recherche des connaissances pour « {{searchQuery}} »",
"Searxng Query URL": "URL de recherche Searxng",
@@ -849,7 +857,7 @@
"Sign up": "Inscrivez-vous",
"Sign up to {{WEBUI_NAME}}": "Inscrivez-vous à {{WEBUI_NAME}}",
"Signing in to {{WEBUI_NAME}}": "Connexion à {{WEBUI_NAME}}",
"sk-1234": "",
"sk-1234": "sk-1234",
"Source": "Source",
"Speech Playback Speed": "Vitesse de lecture de la parole",
"Speech recognition error: {{error}}": "Erreur de reconnaissance vocale\u00a0: {{error}}",
@@ -869,7 +877,7 @@
"System": "Système",
"System Instructions": "Instructions système",
"System Prompt": "Prompt système",
"Tags Generation": "",
"Tags Generation": "Génération de tags",
"Tags Generation Prompt": "Prompt de génération de tags",
"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "L'échantillonnage sans queue est utilisé pour réduire l'impact des tokens moins probables dans la sortie. Une valeur plus élevée (par exemple 2.0) réduira davantage l'impact, tandis qu'une valeur de 1.0 désactive ce paramètre. (par défaut : 1)",
"Tap to interrupt": "Appuyez pour interrompre",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles,",
"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 learn more about available endpoints, visit our documentation.": "Pour en savoir plus sur les points de terminaison disponibles, consultez notre documentation.",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "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 ». ",
@@ -954,7 +963,7 @@
"TTS Voice": "Voix de Text-to-Speech",
"Type": "Type",
"Type Hugging Face Resolve (Download) URL": "Entrez l'URL de Téléchargement Hugging Face Resolve",
"Uh-oh! There was an issue with the response.": "",
"Uh-oh! There was an issue with the response.": "Oh! Un problème est survenu avec la réponse.",
"UI": "UI",
"Unarchive All": "Désarchiver tout",
"Unarchive All Archived Chats": "Désarchiver toutes les conversations archivées",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variable pour qu'elles soient remplacées par le contenu du presse-papiers.",
"Version": "version:",
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} de {{totalVersions}}",
"View Replies": "",
"Visibility": "Visibilité",
"Voice": "Voix",
"Voice Input": "Saisie vocale",
@@ -1012,10 +1022,10 @@
"Web Loader Settings": "Paramètres du Web Loader",
"Web Search": "Recherche Web",
"Web Search Engine": "Moteur de recherche Web",
"Web Search Query Generation": "",
"Web Search Query Generation": "Génération de requête de recherche Web",
"Webhook URL": "URL du webhook",
"WebUI Settings": "Paramètres de WebUI",
"WebUI URL": "",
"WebUI URL": "URL de WebUI",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI fera des requêtes à \"{{url}}/api/chat\"",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI fera des requêtes à \"{{url}}/chat/completions\"",
"What are you trying to achieve?": "Que cherchez-vous à accomplir ?",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(למשל `sh webui.sh --api`)",
"(latest)": "(האחרון)",
"{{ models }}": "{{ דגמים }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "צ'אטים של {{user}}",
"{{webUIName}} Backend Required": "נדרש Backend של {{webUIName}}",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "הוסף זיכרון",
"Add Model": "הוסף מודל",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "הוסף תגים",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "כבר יש לך חשבון?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "כתובת URL בסיסית ל-API",
"API Key": "מפתח API",
"API Key created.": "מפתח API נוצר.",
"API Key Endpoint Restrictions": "",
"API keys": "מפתחות API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "מודל הטמעה",
"Embedding Model Engine": "מנוע מודל הטמעה",
"Embedding model set to \"{{embedding_model}}\"": "מודל ההטמעה הוגדר ל-\"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "הפיכת שיתוף קהילה לזמין",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "ממשק",
"Invalid file format.": "",
"Invalid Tag": "תג לא חוקי",
"is typing...": "",
"January": "ינואר",
"Jina API Key": "",
"join our Discord for help.": "הצטרף ל-Discord שלנו לעזרה.",
@@ -531,6 +536,7 @@
"Language": "שפה",
"Last Active": "פעיל לאחרונה",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "שנה שם",
"Reorder Models": "",
"Repeat Last N": "חזור על ה-N האחרונים",
"Reply in Thread": "",
"Request Mode": "מצב בקשה",
"Reranking Model": "מודל דירוג מחדש",
"Reranking model disabled": "מודל דירוג מחדש מושבת",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "כדי לגשת לדגמי GGUF הזמינים להורדה,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "משתנה להחליפו ב- clipboard תוכן.",
"Version": "גרסה",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)",
"(latest)": "(latest)",
"{{ models }}": "{{ मॉडल }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} की चैट",
"{{webUIName}} Backend Required": "{{webUIName}} बैकएंड आवश्यक",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "मेमोरी जोड़ें",
"Add Model": "मॉडल जोड़ें",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "टैगों को जोड़ें",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "क्या आपके पास पहले से एक खाता मौजूद है?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "एपीआई बेस यूआरएल",
"API Key": "एपीआई कुंजी",
"API Key created.": "एपीआई कुंजी बनाई गई",
"API Key Endpoint Restrictions": "",
"API keys": "एपीआई कुंजियाँ",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "मॉडेल अनुकूलन",
"Embedding Model Engine": "एंबेडिंग मॉडल इंजन",
"Embedding model set to \"{{embedding_model}}\"": "एम्बेडिंग मॉडल को \"{{embedding_model}}\" पर सेट किया गया",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "समुदाय साझाकरण सक्षम करें",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "इंटरफेस",
"Invalid file format.": "",
"Invalid Tag": "अवैध टैग",
"is typing...": "",
"January": "जनवरी",
"Jina API Key": "",
"join our Discord for help.": "मदद के लिए हमारे डिस्कोर्ड में शामिल हों।",
@@ -531,6 +536,7 @@
"Language": "भाषा",
"Last Active": "पिछली बार सक्रिय",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "नाम बदलें",
"Reorder Models": "",
"Repeat Last N": "अंतिम N दोहराएँ",
"Reply in Thread": "",
"Request Mode": "अनुरोध मोड",
"Reranking Model": "रीरैकिंग मोड",
"Reranking model disabled": "पुनर्रैंकिंग मॉडल अक्षम किया गया",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "डाउनलोडिंग के लिए उपलब्ध GGUF मॉडल तक पहुँचने के लिए,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "उन्हें क्लिपबोर्ड सामग्री से बदलने के लिए वेरिएबल।",
"Version": "संस्करण",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(npr. `sh webui.sh --api`)",
"(latest)": "(najnovije)",
"{{ models }}": "{{ modeli }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Razgovori korisnika {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Backend je potreban",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Dodaj memoriju",
"Add Model": "Dodaj model",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "Dodaj oznake",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Već imate račun?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "Osnovni URL API-ja",
"API Key": "API ključ",
"API Key created.": "API ključ je stvoren.",
"API Key Endpoint Restrictions": "",
"API keys": "API ključevi",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Embedding model",
"Embedding Model Engine": "Embedding model pogon",
"Embedding model set to \"{{embedding_model}}\"": "Embedding model postavljen na \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Omogući zajedničko korištenje zajednice",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Sučelje",
"Invalid file format.": "",
"Invalid Tag": "Nevažeća oznaka",
"is typing...": "",
"January": "Siječanj",
"Jina API Key": "",
"join our Discord for help.": "pridružite se našem Discordu za pomoć.",
@@ -531,6 +536,7 @@
"Language": "Jezik",
"Last Active": "Zadnja aktivnost",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Preimenuj",
"Reorder Models": "",
"Repeat Last N": "Ponovi zadnjih N",
"Reply in Thread": "",
"Request Mode": "Način zahtjeva",
"Reranking Model": "Model za ponovno rangiranje",
"Reranking model disabled": "Model za ponovno rangiranje onemogućen",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Poništi upload direktorij",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Za pristup GGUF modelima dostupnim za preuzimanje,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Za pristup WebUI-u obratite se administratoru. Administratori mogu upravljati statusima korisnika s Admin panela.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "varijabla za zamjenu sadržajem međuspremnika.",
"Version": "Verzija",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(pl. `sh webui.sh --api`)",
"(latest)": "(legújabb)",
"{{ models }}": "{{ modellek }}",
"{{COUNT}} Replies": "",
"{{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",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Memória hozzáadása",
"Add Model": "Modell hozzáadása",
"Add Reaction": "",
"Add Tag": "Címke hozzáadása",
"Add Tags": "Címkék hozzáadása",
"Add text content": "Szöveges tartalom hozzáadása",
@@ -57,6 +59,7 @@
"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",
"Allowed Endpoints": "",
"Already have an account?": "Már van fiókod?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API alap URL",
"API Key": "API kulcs",
"API Key created.": "API kulcs létrehozva.",
"API Key Endpoint Restrictions": "",
"API keys": "API kulcsok",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"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 API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Közösségi megosztás engedélyezése",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Felület",
"Invalid file format.": "Érvénytelen fájlformátum.",
"Invalid Tag": "Érvénytelen címke",
"is typing...": "",
"January": "Január",
"Jina API Key": "",
"join our Discord for help.": "Csatlakozz a Discord szerverünkhöz segítségért.",
@@ -531,6 +536,7 @@
"Language": "Nyelv",
"Last Active": "Utoljára aktív",
"Last Modified": "Utoljára módosítva",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "Ranglista",
@@ -736,6 +742,7 @@
"Rename": "Átnevezés",
"Reorder Models": "",
"Repeat Last N": "Utolsó N ismétlése",
"Reply in Thread": "",
"Request Mode": "Kérési mód",
"Reranking Model": "Újrarangsoroló modell",
"Reranking model disabled": "Újrarangsoroló modell letiltva",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"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",
"Reset view": "",
"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",
@@ -922,6 +930,7 @@
"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 learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "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.",
@@ -1000,6 +1009,7 @@
"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",
"View Replies": "",
"Visibility": "",
"Voice": "Hang",
"Voice Input": "Hangbevitel",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(contoh: `sh webui.sh --api`)",
"(latest)": "(terbaru)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Obrolan {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Diperlukan Backend",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Menambahkan Memori",
"Add Model": "Tambahkan Model",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "Tambahkan Tag",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "Izinkan Lokasi Pengguna",
"Allow Voice Interruption in Call": "Izinkan Gangguan Suara dalam Panggilan",
"Allowed Endpoints": "",
"Already have an account?": "Sudah memiliki akun?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "URL Dasar API",
"API Key": "Kunci API",
"API Key created.": "Kunci API dibuat.",
"API Key Endpoint Restrictions": "",
"API keys": "Kunci API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Model Penyematan",
"Embedding Model Engine": "Mesin Model Penyematan",
"Embedding model set to \"{{embedding_model}}\"": "Model penyematan diatur ke \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Aktifkan Berbagi Komunitas",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Antarmuka",
"Invalid file format.": "",
"Invalid Tag": "Tag tidak valid",
"is typing...": "",
"January": "Januari",
"Jina API Key": "",
"join our Discord for help.": "bergabunglah dengan Discord kami untuk mendapatkan bantuan.",
@@ -531,6 +536,7 @@
"Language": "Bahasa",
"Last Active": "Terakhir Aktif",
"Last Modified": "Terakhir Dimodifikasi",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Ganti nama",
"Reorder Models": "",
"Repeat Last N": "Ulangi N Terakhir",
"Reply in Thread": "",
"Request Mode": "Mode Permintaan",
"Reranking Model": "Model Pemeringkatan Ulang",
"Reranking model disabled": "Model pemeringkatan ulang dinonaktifkan",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Setel Ulang Direktori Unggahan",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notifikasi respons tidak dapat diaktifkan karena izin situs web telah ditolak. Silakan kunjungi pengaturan browser Anda untuk memberikan akses yang diperlukan.",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Untuk mengakses model GGUF yang tersedia untuk diunduh,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Untuk mengakses WebUI, hubungi administrator. Admin dapat mengelola status pengguna dari Panel Admin.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "Untuk memilih filter di sini, tambahkan filter ke ruang kerja \"Fungsi\" terlebih dahulu.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variabel untuk diganti dengan konten papan klip.",
"Version": "Versi",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "Suara",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(m.sh. `sh webui.sh --api`)",
"(latest)": "(is déanaí)",
"{{ models }}": "{{models}}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Comhráite {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Ceoldeireadh Riachtanach",
"*Prompt node ID(s) are required for image generation": "* Tá ID nód pras ag teastáil chun íomhá a ghiniúint",
@@ -34,6 +35,7 @@
"Add Group": "Cuir Grúpa leis",
"Add Memory": "Cuir Cuimhne",
"Add Model": "Cuir múnla leis",
"Add Reaction": "",
"Add Tag": "Cuir Clib leis",
"Add Tags": "Cuir Clibeanna leis",
"Add text content": "Cuir ábhar téacs leis",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Cead Comhrá Sealadach",
"Allow User Location": "Ceadaigh Suíomh Úsáideora",
"Allow Voice Interruption in Call": "Ceadaigh Briseadh Guth i nGlao",
"Allowed Endpoints": "",
"Already have an account?": "Tá cuntas agat cheana féin?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Rogha eile seachas an top_p, agus tá sé mar aidhm aige cothromaíocht cáilíochta agus éagsúlachta a chinntiú. Léiríonn an paraiméadar p an dóchúlacht íosta go mbreithneofar comhartha, i gcoibhneas le dóchúlacht an chomhartha is dóichí. Mar shampla, le p=0.05 agus dóchúlacht 0.9 ag an comhartha is dóichí, déantar logits le luach níos lú ná 0.045 a scagadh amach. (Réamhshocrú: 0.0)",
"Amazing": "Iontach",
@@ -67,6 +70,7 @@
"API Base URL": "URL Bonn API",
"API Key": "Eochair API",
"API Key created.": "Cruthaíodh Eochair API.",
"API Key Endpoint Restrictions": "",
"API keys": "Eochracha API",
"Application DN": "Feidhmchlár DN",
"Application DN Password": "Feidhmchlár DN Pasfhocal",
@@ -310,7 +314,7 @@
"Embedding Model": "Múnla Leabháilte",
"Embedding Model Engine": "Inneall Múnla Ionchorprú",
"Embedding model set to \"{{embedding_model}}\"": "Samhail leabaithe atá socraithe go \"{{embedding_model}}\"",
"Enable API Key Auth": "Cumasaigh Fíordheimhniú Eochracha API",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Cumasaigh Comhroinnt Pobail",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Comhéadan",
"Invalid file format.": "Formáid comhaid neamhbhailí.",
"Invalid Tag": "Clib neamhbhailí",
"is typing...": "",
"January": "Eanáir",
"Jina API Key": "Jina API Eochair",
"join our Discord for help.": "bí inár Discord chun cabhair a fháil.",
@@ -531,6 +536,7 @@
"Language": "Teanga",
"Last Active": "Gníomhach Deiridh",
"Last Modified": "Athraithe Deiridh",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "Nuashonraíodh freastalaí LDAP",
"Leaderboard": "An Clár Ceannairí",
@@ -736,6 +742,7 @@
"Rename": "Athainmnigh",
"Reorder Models": "",
"Repeat Last N": "Déan an N deireanach arís",
"Reply in Thread": "",
"Request Mode": "Mód Iarratais",
"Reranking Model": "Múnla Athrangú",
"Reranking model disabled": "Samhail athrangú faoi mhíchumas",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Athshocraigh Eolaire Uas",
"Reset Vector Storage/Knowledge": "Athshocraigh Stóráil/Eolas Veicteoir",
"Reset view": "",
"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": "Toradh",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Chun rochtain a fháil ar na múnlaí GGUF atá ar fáil le híoslódáil,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Chun rochtain a fháil ar an WebUI, déan teagmháil leis an riarthóir le do thoil. Is féidir le riarthóirí stádas úsáideora a bhainistiú ón bPainéal Riaracháin.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Chun an bonn eolais a cheangal anseo, cuir leis an spás oibre \"Eolas\" iad ar dtús.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Chun do phríobháideachas a chosaint, ní roinntear ach rátálacha, aitheantais mhúnla, clibeanna agus meiteashonraí ó d’aiseolas - fanann do logaí comhrá príobháideach agus níl siad san áireamh.",
"To select actions here, add them to the \"Functions\" workspace first.": "Chun gníomhartha a roghnú anseo, cuir iad leis an spás oibre \"Feidhmeanna\" ar dtús.",
"To select filters here, add them to the \"Functions\" workspace first.": "Chun scagairí a roghnú anseo, cuir iad leis an spás oibre \"Feidhmeanna\" ar dtús.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "athróg chun ábhar gearrthaisce a chur in ionad iad.",
"Version": "Leagan",
"Version {{selectedVersion}} of {{totalVersions}}": "Leagan {{selectedVersion}} de {{totalVersions}}",
"View Replies": "",
"Visibility": "Infheictheacht",
"Voice": "Guth",
"Voice Input": "Ionchur Gutha",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(p.e. `sh webui.sh --api`)",
"(latest)": "(ultima)",
"{{ models }}": "{{ modelli }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} Chat",
"{{webUIName}} Backend Required": "{{webUIName}} Backend richiesto",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Aggiungi memoria",
"Add Model": "Aggiungi modello",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "Aggiungi tag",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Hai già un account?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "URL base API",
"API Key": "Chiave API",
"API Key created.": "Chiave API creata.",
"API Key Endpoint Restrictions": "",
"API keys": "Chiavi API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Modello di embedding",
"Embedding Model Engine": "Motore del modello di embedding",
"Embedding model set to \"{{embedding_model}}\"": "Modello di embedding impostato su \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Abilita la condivisione della community",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interfaccia",
"Invalid file format.": "",
"Invalid Tag": "Tag non valido",
"is typing...": "",
"January": "Gennaio",
"Jina API Key": "",
"join our Discord for help.": "unisciti al nostro Discord per ricevere aiuto.",
@@ -531,6 +536,7 @@
"Language": "Lingua",
"Last Active": "Ultima attività",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Rinomina",
"Reorder Models": "",
"Repeat Last N": "Ripeti ultimi N",
"Reply in Thread": "",
"Request Mode": "Modalità richiesta",
"Reranking Model": "Modello di riclassificazione",
"Reranking model disabled": "Modello di riclassificazione disabilitato",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Per accedere ai modelli GGUF disponibili per il download,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variabile per farli sostituire con il contenuto degli appunti.",
"Version": "Versione",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+28 -18
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(例: `sh webui.sh --api`)",
"(latest)": "(最新)",
"{{ models }}": "{{ モデル }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} のチャット",
"{{webUIName}} Backend Required": "{{webUIName}} バックエンドが必要です",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "メモリを追加",
"Add Model": "モデルを追加",
"Add Reaction": "",
"Add Tag": "タグを追加",
"Add Tags": "タグを追加",
"Add text content": "コンテンツを追加",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "一時的なチャットを許可",
"Allow User Location": "ユーザーロケーションの許可",
"Allow Voice Interruption in Call": "通話中に音声の割り込みを許可",
"Allowed Endpoints": "",
"Already have an account?": "すでにアカウントをお持ちですか?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API ベース URL",
"API Key": "API キー",
"API Key created.": "API キーが作成されました。",
"API Key Endpoint Restrictions": "",
"API keys": "API キー",
"Application DN": "",
"Application DN Password": "",
@@ -136,7 +140,7 @@
"Chat direction": "チャットの方向",
"Chat Overview": "チャット概要",
"Chat Permissions": "",
"Chat Tags Auto-Generation": "",
"Chat Tags Auto-Generation": "チャットタグの自動生成",
"Chats": "チャット",
"Check Again": "再確認",
"Check for updates": "アップデートを確認",
@@ -179,7 +183,7 @@
"Configure": "",
"Configure Models": "",
"Confirm": "確認",
"Confirm Password": "パスワードを確認",
"Confirm Password": "パスワードの確認",
"Confirm your action": "あなたのアクションの確認",
"Confirm your new password": "",
"Connections": "接続",
@@ -210,7 +214,7 @@
"Create Admin Account": "",
"Create Channel": "",
"Create Group": "",
"Create Knowledge": "知識データ作成",
"Create Knowledge": "ナレッジベース作成",
"Create new key": "新しいキーを作成",
"Create new secret key": "新しいシークレットキーを作成",
"Created at": "作成日時",
@@ -310,10 +314,10 @@
"Embedding Model": "埋め込みモデル",
"Embedding Model Engine": "埋め込みモデルエンジン",
"Embedding model set to \"{{embedding_model}}\"": "埋め込みモデルを\"{{embedding_model}}\"に設定しました",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "コミュニティ共有を有効にする",
"Enable Google Drive": "",
"Enable Google Drive": "Google Driveの有効化",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "",
"Enable Message Rating": "メッセージ評価を有効にする",
@@ -507,6 +511,7 @@
"Interface": "インターフェース",
"Invalid file format.": "",
"Invalid Tag": "無効なタグ",
"is typing...": "",
"January": "1月",
"Jina API Key": "",
"join our Discord for help.": "ヘルプについては、Discord に参加してください。",
@@ -520,17 +525,18 @@
"Keep Alive": "キープアライブ",
"Key": "",
"Keyboard shortcuts": "キーボードショートカット",
"Knowledge": "知識",
"Knowledge": "ナレッジベース",
"Knowledge Access": "",
"Knowledge created successfully.": "知識の作成に成功しました",
"Knowledge deleted successfully.": "知識の削除に成功しました",
"Knowledge reset successfully.": "知識のリセットに成功しました",
"Knowledge updated successfully": "知識のアップデートに成功しました",
"Knowledge created successfully.": "ナレッジベースの作成に成功しました",
"Knowledge deleted successfully.": "ナレッジベースの削除に成功しました",
"Knowledge reset successfully.": "ナレッジベースのリセットに成功しました",
"Knowledge updated successfully": "ナレッジベースのアップデートに成功しました",
"Label": "",
"Landing Page Mode": "ランディングページモード",
"Language": "言語",
"Last Active": "最終アクティブ",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -616,7 +622,7 @@
"No files found.": "",
"No groups with access, add a group to grant access": "",
"No HTML, CSS, or JavaScript content found.": "",
"No knowledge found": "知識が見つかりません",
"No knowledge found": "ナレッジベースが見つかりません",
"No model IDs": "",
"No models found": "",
"No models selected": "",
@@ -630,7 +636,7 @@
"Not helpful": "",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:最小スコアを設定した場合、検索は最小スコア以上のスコアを持つドキュメントのみを返します。",
"Notes": "",
"Notification Sound": "",
"Notification Sound": "通知音",
"Notification Webhook": "",
"Notifications": "デスクトップ通知",
"November": "11月",
@@ -736,6 +742,7 @@
"Rename": "名前を変更",
"Reorder Models": "",
"Repeat Last N": "最後の N を繰り返す",
"Reply in Thread": "",
"Request Mode": "リクエストモード",
"Reranking Model": "モデルの再ランキング",
"Reranking model disabled": "再ランキングモデルが無効です",
@@ -743,7 +750,8 @@
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "アップロードディレクトリをリセット",
"Reset Vector Storage/Knowledge": "",
"Reset Vector Storage/Knowledge": "ベクターストレージとナレッジべーうをリセット",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "応答の分割",
"Result": "",
@@ -772,7 +780,7 @@
"Search Filters": "",
"search for tags": "",
"Search Functions": "Functionの検索",
"Search Knowledge": "知識の検索",
"Search Knowledge": "ナレッジベースの検索",
"Search Models": "モデル検索",
"Search options": "",
"Search Prompts": "プロンプトを検索",
@@ -797,7 +805,7 @@
"Select a pipeline url": "パイプラインの URL を選択する",
"Select a tool": "ツールの選択",
"Select Engine": "エンジンの選択",
"Select Knowledge": "知識の選択",
"Select Knowledge": "ナレッジベースの選択",
"Select model": "モデルを選択",
"Select only one model to call": "",
"Selected model(s) do not support image inputs": "一部のモデルは画像入力をサポートしていません",
@@ -851,7 +859,7 @@
"Signing in to {{WEBUI_NAME}}": "",
"sk-1234": "",
"Source": "ソース",
"Speech Playback Speed": "",
"Speech Playback Speed": "音声の再生速度",
"Speech recognition error: {{error}}": "音声認識エラー: {{error}}",
"Speech-to-Text Engine": "音声テキスト変換エンジン",
"Stop": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "ダウンロード可能な GGUF モデルにアクセスするには、",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -940,7 +949,7 @@
"Tool imported successfully": "",
"Tool Name": "",
"Tool updated successfully": "",
"Tools": "",
"Tools": "ツール",
"Tools Access": "",
"Tools are a function calling system with arbitrary code execution": "",
"Tools have a function calling system that allows arbitrary code execution": "",
@@ -979,7 +988,7 @@
"Upload Progress": "アップロードの進行状況",
"URL": "",
"URL Mode": "URL モード",
"Use '#' in the prompt input to load and include your knowledge.": "#を入力すると知識データを参照することが出来ます。",
"Use '#' in the prompt input to load and include your knowledge.": "#を入力するとナレッジベースを参照することが出来ます。",
"Use Gravatar": "Gravatar を使用する",
"Use groups to group your users and assign permissions.": "",
"Use Initials": "初期値を使用する",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "クリップボードの内容に置き換える変数。",
"Version": "バージョン",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "ボイス",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(მაგ. `sh webui.sh --api`)",
"(latest)": "(უახლესი)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}-ის ჩათები",
"{{webUIName}} Backend Required": "{{webUIName}} საჭიროა ბექენდი",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "მემორიის დამატება",
"Add Model": "მოდელის დამატება",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "ტეგების დამატება",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "უკვე გაქვს ანგარიში?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API საბაზისო URL",
"API Key": "API გასაღები",
"API Key created.": "API გასაღები შექმნილია.",
"API Key Endpoint Restrictions": "",
"API keys": "API გასაღები",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "ჩასმის ძირითადი პროგრამა",
"Embedding Model Engine": "ჩასმის ძირითადი პროგრამა",
"Embedding model set to \"{{embedding_model}}\"": "ჩასმის ძირითადი პროგრამა ჩართულია \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "საზოგადოების გაზიარების ჩართვა",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "ინტერფეისი",
"Invalid file format.": "",
"Invalid Tag": "არასწორი ტეგი",
"is typing...": "",
"January": "იანვარი",
"Jina API Key": "",
"join our Discord for help.": "შეუერთდით ჩვენს Discord-ს დახმარებისთვის",
@@ -531,6 +536,7 @@
"Language": "ენა",
"Last Active": "ბოლო აქტიური",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "პოპულარობის რაოდენობა",
"Reorder Models": "",
"Repeat Last N": "გაიმეორეთ ბოლო N",
"Reply in Thread": "",
"Request Mode": "მოთხოვნის რეჟიმი",
"Reranking Model": "რექვექტირება",
"Reranking model disabled": "რექვექტირება არაა ჩართული",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "ჩასატვირთად ხელმისაწვდომი GGUF მოდელებზე წვდომისთვის",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "ცვლადი, რომ შეცვალოს ისინი ბუფერში შიგთავსით.",
"Version": "ვერსია",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(예: `sh webui.sh --api`)",
"(latest)": "(최근)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}의 채팅",
"{{webUIName}} Backend Required": "{{webUIName}} 백엔드가 필요합니다.",
"*Prompt node ID(s) are required for image generation": "사진 생성을 위해 프롬포트 노드 ID가 필요합니다",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "메모리 추가",
"Add Model": "모델 추가",
"Add Reaction": "",
"Add Tag": "태그 추가",
"Add Tags": "태그 추가",
"Add text content": "글 추가",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "임시 채팅 허용",
"Allow User Location": "사용자 위치 활용 허용",
"Allow Voice Interruption in Call": "음성 기능에서 음성 방해 허용",
"Allowed Endpoints": "",
"Already have an account?": "이미 계정이 있으신가요?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API 기본 URL",
"API Key": "API 키",
"API Key created.": "API 키가 생성되었습니다.",
"API Key Endpoint Restrictions": "",
"API keys": "API 키",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "임베딩 모델",
"Embedding Model Engine": "임베딩 모델 엔진",
"Embedding model set to \"{{embedding_model}}\"": "임베딩 모델을 \"{{embedding_model}}\"로 설정함",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "커뮤니티 공유 활성화",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "인터페이스",
"Invalid file format.": "잘못된 파일 형식",
"Invalid Tag": "잘못된 태그",
"is typing...": "",
"January": "1월",
"Jina API Key": "",
"join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.",
@@ -531,6 +536,7 @@
"Language": "언어",
"Last Active": "최근 활동",
"Last Modified": "마지막 수정",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "리더보드",
@@ -736,6 +742,7 @@
"Rename": "이름 변경",
"Reorder Models": "",
"Repeat Last N": "마지막 N 반복",
"Reply in Thread": "",
"Request Mode": "요청 모드",
"Reranking Model": "Reranking 모델",
"Reranking model disabled": "Reranking 모델 비활성화",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "업로드 디렉토리 초기화",
"Reset Vector Storage/Knowledge": "벡터 저장 공간/지식 기반 초기화",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "웹사이트 권환과 같이 응답 알림이 활성화될 수 없습니다. 필요한 접근을 사용하기 위해 브라우져 설정을 확인 부탁드립니다.",
"Response splitting": "응답 나누기",
"Result": "결과",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "다운로드 가능한 GGUF 모델을 확인하려면,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "WebUI에 접속하려면 관리자에게 문의하십시오. 관리자는 관리자 패널에서 사용자 상태를 관리할 수 있습니다.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "지식 기반을 여기에 첨부하려면. \"지식 기반\" 워크스페이스에 먼저 추가하세요",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "개인정보를 보호하기 위해, 당신의 채팅 로그는 비공개로 유지되고, 오직 당신의 피드백에서 평가, 모델 ID, 태그, 그리고 메타데이타만 공유됩니다",
"To select actions here, add them to the \"Functions\" workspace first.": "여기서 행동을 선택하려면, \"함수\" 워크스페이스에 먼저 추가하세요",
"To select filters here, add them to the \"Functions\" workspace first.": "여기서 필터를 선택하려면, \"함수\" 워크스페이스에 먼저 추가하세요",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "변수를 사용하여 클립보드 내용으로 바꾸세요.",
"Version": "버전",
"Version {{selectedVersion}} of {{totalVersions}}": "버전 {{totalVersions}}의 {{selectedVersion}}",
"View Replies": "",
"Visibility": "",
"Voice": "음성",
"Voice Input": "음성 입력",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(pvz. `sh webui.sh --api`)",
"(latest)": "(naujausias)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} susirašinėjimai",
"{{webUIName}} Backend Required": "{{webUIName}} būtinas serveris",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Pridėti atminį",
"Add Model": "Pridėti modelį",
"Add Reaction": "",
"Add Tag": "Pridėti žymą",
"Add Tags": "Pridėti žymas",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "Leisti naudotojo vietos matymą",
"Allow Voice Interruption in Call": "Leisti pertraukimą skambučio metu",
"Allowed Endpoints": "",
"Already have an account?": "Ar jau turite paskyrą?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API basės nuoroda",
"API Key": "API raktas",
"API Key created.": "API raktas sukurtas",
"API Key Endpoint Restrictions": "",
"API keys": "API raktai",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Embedding modelis",
"Embedding Model Engine": "Embedding modelio variklis",
"Embedding model set to \"{{embedding_model}}\"": "Embedding modelis nustatytas kaip\"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Leisti dalinimąsi su bendruomene",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Sąsaja",
"Invalid file format.": "",
"Invalid Tag": "Neteisinga žyma",
"is typing...": "",
"January": "Sausis",
"Jina API Key": "",
"join our Discord for help.": "prisijunkite prie mūsų Discord.",
@@ -531,6 +536,7 @@
"Language": "Kalba",
"Last Active": "Paskutinį kartą aktyvus",
"Last Modified": "Paskutinis pakeitimas",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Pervadinti",
"Reorder Models": "",
"Repeat Last N": "Pakartoti paskutinius N",
"Reply in Thread": "",
"Request Mode": "Užklausos rėžimas",
"Reranking Model": "Reranking modelis",
"Reranking model disabled": "Reranking modelis neleidžiamas",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Atkurti įkėlimų direktoiją",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Naršyklė neleidžia siųsti pranešimų",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Tam, kad prieiti prie galimų parsisiųsti GGUF,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Norėdami prieiti prie programos, susisiekite su administratoriumi, kuris Jus patvirtins.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "Norėdami pasirinkti veiksmus, pirmiausia pridėkite juos funkcijų nuostatuose",
"To select filters here, add them to the \"Functions\" workspace first.": "Norėdami pasirinkti filtrus, pirmiausia pridėkite juos funkcijų nuostatuose",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "kintamoji pakeičiama kopijuoklės turiniu.",
"Version": "Versija",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "Balsas",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(contoh `sh webui.sh --api`)",
"(latest)": "(terkini)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Perbualan {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Backend diperlukan",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Tambah Memori",
"Add Model": "Tambah Model",
"Add Reaction": "",
"Add Tag": "Tambah Tag",
"Add Tags": "Tambah Tag",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "Benarkan Lokasi Pengguna",
"Allow Voice Interruption in Call": "Benarkan gangguan suara dalam panggilan",
"Allowed Endpoints": "",
"Already have an account?": "Telah mempunyai akaun?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "URL Asas API",
"API Key": "Kunci API",
"API Key created.": "Kunci API dicipta",
"API Key Endpoint Restrictions": "",
"API keys": "Kekunci API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Model Benamkan",
"Embedding Model Engine": "Enjin Model Benamkan",
"Embedding model set to \"{{embedding_model}}\"": "Model Benamkan ditetapkan kepada \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Benarkan Perkongsian Komuniti",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Antaramuka",
"Invalid file format.": "",
"Invalid Tag": "Tag tidak sah",
"is typing...": "",
"January": "Januari",
"Jina API Key": "",
"join our Discord for help.": "sertai Discord kami untuk mendapatkan bantuan.",
@@ -531,6 +536,7 @@
"Language": "Bahasa",
"Last Active": "Dilihat aktif terakhir pada",
"Last Modified": "Kemaskini terakhir pada",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Namakan Semula",
"Reorder Models": "",
"Repeat Last N": "Ulang N Terakhir",
"Reply in Thread": "",
"Request Mode": "Mod Permintaan",
"Reranking Model": "Model 'Reranking'",
"Reranking model disabled": "Model 'Reranking' dilumpuhkan",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Tetapkan Semula Direktori Muat Naik",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "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": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Untuk mengakses model GGUF yang tersedia untuk dimuat turun,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Untuk mengakses WebUI , sila hubungi pentadbir. Pentadbir boleh menguruskan status pengguna daripada Panel Pentadbiran",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "Untuk memilih tindakan di sini, tambahkannya pada ruang kerja \"Functions\" dahulu.",
"To select filters here, add them to the \"Functions\" workspace first.": "Untuk memilih tapisan di sini, tambahkannya pada ruang kerja \"Functions\" dahulu.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "pembolehubah untuk ia digantikan dengan kandungan papan klip.",
"Version": "Versi",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "Suara",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(f.eks. `sh webui.sh --api`)",
"(latest)": "(siste)",
"{{ models }}": "{{ modeller }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} sine samtaler",
"{{webUIName}} Backend Required": "Backend til {{webUIName}} kreves",
"*Prompt node ID(s) are required for image generation": "Node-ID-er for ledetekst kreves for generering av bilder",
@@ -34,6 +35,7 @@
"Add Group": "Legg til gruppe",
"Add Memory": "Legg til minne",
"Add Model": "Legg til modell",
"Add Reaction": "",
"Add Tag": "Legg til etikett",
"Add Tags": "Legg til etiketter",
"Add text content": "Legg til tekstinnhold",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Tillat midlertidige chatter",
"Allow User Location": "Aktiver stedstjenester",
"Allow Voice Interruption in Call": "Muliggjør taleavbrytelse i samtaler",
"Allowed Endpoints": "",
"Already have an account?": "Har du allerede en konto?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativ til top_p, og har som mål å sikre en balanse mellom kvalitet og variasjon. Parameteren p representerer minimumssannsynligheten for at et token skal vurderes, i forhold til sannsynligheten for det mest sannsynlige tokenet. Hvis p for eksempel er 0,05 og det mest sannsynlige tokenet har en sannsynlighet på 0,9, filtreres logits med en verdi på mindre enn 0,045 bort. (Standard: 0,0)",
"Amazing": "Flott",
@@ -67,6 +70,7 @@
"API Base URL": "Absolutt API-URL",
"API Key": "API-nøkkel",
"API Key created.": "API-nøkkel opprettet.",
"API Key Endpoint Restrictions": "",
"API keys": "API-nøkler",
"Application DN": "Applikasjonens DN",
"Application DN Password": "Applikasjonens DN-passord",
@@ -310,7 +314,7 @@
"Embedding Model": "Innbyggingsmodell",
"Embedding Model Engine": "Motor for innbygging av modeller",
"Embedding model set to \"{{embedding_model}}\"": "Innbyggingsmodell angitt til \"{{embedding_model}}\"",
"Enable API Key Auth": "Aktiver godkjenning med API-nøkkel",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "Aktiver automatisk utfylling av chatmeldinger",
"Enable Community Sharing": "Aktiver deling i fellesskap",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Grensesnitt",
"Invalid file format.": "Ugyldig filformat.",
"Invalid Tag": "Ugyldig etikett",
"is typing...": "",
"January": "januar",
"Jina API Key": "API-nøkkel for Jina",
"join our Discord for help.": "bli med i Discord-fellesskapet vårt for å få hjelp.",
@@ -531,6 +536,7 @@
"Language": "Språk",
"Last Active": "Sist aktiv",
"Last Modified": "Sist endret",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP-server oppdatert",
"Leaderboard": "Ledertavle",
@@ -736,6 +742,7 @@
"Rename": "Gi nytt navn",
"Reorder Models": "Sorter modeller på nytt",
"Repeat Last N": "Gjenta siste N",
"Reply in Thread": "",
"Request Mode": "Forespørselsmodus",
"Reranking Model": "Omrangeringsmodell",
"Reranking model disabled": "Omrangeringsmodell deaktivert",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Tilbakestill opplastingskatalog",
"Reset Vector Storage/Knowledge": "Tilbakestill Vector-lagring/kunnskap",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Svar-varsler kan ikke aktiveres fordi tilgang til nettstedet er nektet. Gå til nettleserinnstillingene dine for å gi den nødvendige tilgangen.",
"Response splitting": "Oppdeling av svar",
"Result": "Resultat",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Hvis du vil ha tilgang til GGUF-modellene tilgjengelige for nedlasting,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Hvis du vil ha tilgang til WebUI, må du kontakte administrator. Administratorer kan behandle brukeres status fra Admin-panelet.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Hvis du vil legge til kunnskapsbaser her, må du først legge dem til i arbeidsområdet \"Kunnskap\".",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "For å beskytte personvernet ditt deles bare vurderinger, modell-ID-er, etiketter og metadata fra dine tilbakemeldinger. Chattelogger forblir private og inkluderes ikke.",
"To select actions here, add them to the \"Functions\" workspace first.": "Hvis du vil velge handlinger her, må du først legge dem til i arbeidsområdet \"Funksjoner\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Hvis du vil velge filtre her, må du først legge dem til i arbeidsområdet \"Funksjoner\".",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variabel for å erstatte dem med utklippstavleinnhold.",
"Version": "Versjon",
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} av {{totalVersions}}",
"View Replies": "",
"Visibility": "Synlighet",
"Voice": "Stemme",
"Voice Input": "Taleinndata",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(bv. `sh webui.sh --api`)",
"(latest)": "(nieuwste)",
"{{ models }}": "{{ modellen }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}'s chats",
"{{webUIName}} Backend Required": "{{webUIName}} Backend Verplicht",
"*Prompt node ID(s) are required for image generation": "*Prompt node ID('s) zijn vereist voor het genereren van afbeeldingen",
@@ -34,6 +35,7 @@
"Add Group": "Voeg groep toe",
"Add Memory": "Voeg geheugen toe",
"Add Model": "Voeg model toe",
"Add Reaction": "",
"Add Tag": "Voeg tag toe",
"Add Tags": "Voeg tags toe",
"Add text content": "Voeg tekstinhoud toe",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Tijdelijke chat toestaan",
"Allow User Location": "Gebruikerslocatie toestaan",
"Allow Voice Interruption in Call": "Stemonderbreking tijdens gesprek toestaan",
"Allowed Endpoints": "",
"Already have an account?": "Heb je al een account?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternatief voor de top_p, en streeft naar een evenwicht tussen kwaliteit en variatie. De parameter p vertegenwoordigt de minimumwaarschijnlijkheid dat een token in aanmerking wordt genomen, in verhouding tot de waarschijnlijkheid van het meest waarschijnlijke token. Bijvoorbeeld, met p=0.05 en de meest waarschijnlijke token met een waarschijnlijkheid van 0.9, worden logits met een waarde kleiner dan 0.045 uitgefilterd. (Standaard: 0,0)",
"Amazing": "Geweldig",
@@ -67,6 +70,7 @@
"API Base URL": "API Base URL",
"API Key": "API-sleutel",
"API Key created.": "API-sleutel aangemaakt.",
"API Key Endpoint Restrictions": "",
"API keys": "API-sleutels",
"Application DN": "Applicatie DN",
"Application DN Password": "Applicatie",
@@ -310,7 +314,7 @@
"Embedding Model": "Embedding Model",
"Embedding Model Engine": "Embedding Model Engine",
"Embedding model set to \"{{embedding_model}}\"": "Embedding model ingesteld op \"{{embedding_model}}\"",
"Enable API Key Auth": "Schakel API-sleutel authenticatie in",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Delen via de community inschakelen",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interface",
"Invalid file format.": "Ongeldig bestandsformaat",
"Invalid Tag": "Ongeldige Tag",
"is typing...": "",
"January": "Januari",
"Jina API Key": "Jina API-sleutel",
"join our Discord for help.": "join onze Discord voor hulp.",
@@ -531,6 +536,7 @@
"Language": "Taal",
"Last Active": "Laatst Actief",
"Last Modified": "Laatst aangepast",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP-server bijgewerkt",
"Leaderboard": "Klassement",
@@ -736,6 +742,7 @@
"Rename": "Hernoemen",
"Reorder Models": "Herschik modellen",
"Repeat Last N": "Herhaal Laatste N",
"Reply in Thread": "",
"Request Mode": "Request Modus",
"Reranking Model": "Reranking Model",
"Reranking model disabled": "Reranking model uitgeschakeld",
@@ -744,6 +751,7 @@
"Reset All Models": "Herstel alle modellen",
"Reset Upload Directory": "Herstel Uploadmap",
"Reset Vector Storage/Knowledge": "Herstel Vectoropslag/-kennis",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Antwoordmeldingen kunnen niet worden geactiveerd omdat de rechten voor de website zijn geweigerd. Ga naar de instellingen van uw browser om de benodigde toegang te verlenen.",
"Response splitting": "Antwoord splitsing",
"Result": "Resultaat",
@@ -922,6 +930,7 @@
"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.": "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.": "Om hier een kennisbron bij te voegen, voeg ze eerst aan de \"Kennis\" werkplaats toe.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Om je privacy te beschermen, worden alleen beoordelingen, model-ID's, tags en metadata van je feedback gedeeld - je chatlogs blijven privé en worden niet opgenomen.",
"To select actions here, add them to the \"Functions\" workspace first.": "Om hier acties te selecteren, voeg ze eerst aan de \"Functies\" Werkplaats toe.",
"To select filters here, add them to the \"Functions\" workspace first.": "Om hier filters te selecteren, voeg ze eerst aan de \"Functies\" Werkplaats toe.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variabele om ze te laten vervangen door klembord inhoud.",
"Version": "Versie",
"Version {{selectedVersion}} of {{totalVersions}}": "Versie {{selectedVersion}} van {{totalVersions}}",
"View Replies": "",
"Visibility": "Zichtbaarheid",
"Voice": "Stem",
"Voice Input": "Steminvoer",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(ਉਦਾਹਰਣ ਦੇ ਤੌਰ ਤੇ `sh webui.sh --api`)",
"(latest)": "(ਤਾਜ਼ਾ)",
"{{ models }}": "{{ ਮਾਡਲ }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} ਦੀਆਂ ਗੱਲਾਂ",
"{{webUIName}} Backend Required": "{{webUIName}} ਬੈਕਐਂਡ ਲੋੜੀਂਦਾ ਹੈ",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "ਮਿਹਾਨ ਸ਼ਾਮਲ ਕਰੋ",
"Add Model": "ਮਾਡਲ ਸ਼ਾਮਲ ਕਰੋ",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "ਟੈਗ ਸ਼ਾਮਲ ਕਰੋ",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "ਪਹਿਲਾਂ ਹੀ ਖਾਤਾ ਹੈ?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API ਬੇਸ URL",
"API Key": "API ਕੁੰਜੀ",
"API Key created.": "API ਕੁੰਜੀ ਬਣਾਈ ਗਈ।",
"API Key Endpoint Restrictions": "",
"API keys": "API ਕੁੰਜੀਆਂ",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ",
"Embedding Model Engine": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਇੰਜਣ",
"Embedding model set to \"{{embedding_model}}\"": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਨੂੰ \"{{embedding_model}}\" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "ਕਮਿਊਨਿਟੀ ਸ਼ੇਅਰਿੰਗ ਨੂੰ ਸਮਰੱਥ ਕਰੋ",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "ਇੰਟਰਫੇਸ",
"Invalid file format.": "",
"Invalid Tag": "ਗਲਤ ਟੈਗ",
"is typing...": "",
"January": "ਜਨਵਰੀ",
"Jina API Key": "",
"join our Discord for help.": "ਮਦਦ ਲਈ ਸਾਡੇ ਡਿਸਕੋਰਡ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ।",
@@ -531,6 +536,7 @@
"Language": "ਭਾਸ਼ਾ",
"Last Active": "ਆਖਰੀ ਸਰਗਰਮ",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "ਨਾਮ ਬਦਲੋ",
"Reorder Models": "",
"Repeat Last N": "ਆਖਰੀ N ਨੂੰ ਦੁਹਰਾਓ",
"Reply in Thread": "",
"Request Mode": "ਬੇਨਤੀ ਮੋਡ",
"Reranking Model": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ",
"Reranking model disabled": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ ਅਯੋਗ ਕੀਤਾ ਗਿਆ",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ GGUF ਮਾਡਲਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "ਕਲਿੱਪਬੋਰਡ ਸਮੱਗਰੀ ਨਾਲ ਬਦਲਣ ਲਈ ਵੈਰੀਏਬਲ।",
"Version": "ਵਰਜਨ",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(np. `sh webui.sh --api`)",
"(latest)": "(najnowszy)",
"{{ models }}": "{{ modele }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} - czaty",
"{{webUIName}} Backend Required": "Backend {{webUIName}} wymagane",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Dodaj pamięć",
"Add Model": "Dodaj model",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "Dodaj tagi",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Masz już konto?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "Podstawowy adres URL interfejsu API",
"API Key": "Klucz API",
"API Key created.": "Klucz API utworzony.",
"API Key Endpoint Restrictions": "",
"API keys": "Klucze API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Model osadzania",
"Embedding Model Engine": "Silnik modelu osadzania",
"Embedding model set to \"{{embedding_model}}\"": "Model osadzania ustawiono na \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Włączanie udostępniania społecznościowego",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interfejs",
"Invalid file format.": "",
"Invalid Tag": "Nieprawidłowy tag",
"is typing...": "",
"January": "Styczeń",
"Jina API Key": "",
"join our Discord for help.": "Dołącz do naszego Discorda po pomoc.",
@@ -531,6 +536,7 @@
"Language": "Język",
"Last Active": "Ostatnio aktywny",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "ZMień nazwę",
"Reorder Models": "",
"Repeat Last N": "Powtórz ostatnie N",
"Reply in Thread": "",
"Request Mode": "Tryb żądania",
"Reranking Model": "Zmiana rankingu modelu",
"Reranking model disabled": "Zmiana rankingu modelu zablokowana",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "zmienna która zostanie zastąpiona zawartością schowka.",
"Version": "Wersja",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(por exemplo, `sh webui.sh --api`)",
"(latest)": "(último)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Chats de {{user}}",
"{{webUIName}} Backend Required": "Backend {{webUIName}} necessário",
"*Prompt node ID(s) are required for image generation": "*Prompt node ID(s) são obrigatórios para gerar imagens",
@@ -34,6 +35,7 @@
"Add Group": "Adicionar Grupo",
"Add Memory": "Adicionar Memória",
"Add Model": "Adicionar Modelo",
"Add Reaction": "",
"Add Tag": "Adicionar Tag",
"Add Tags": "Adicionar Tags",
"Add text content": "Adicionar conteúdo de texto",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Permitir Conversa Temporária",
"Allow User Location": "Permitir Localização do Usuário",
"Allow Voice Interruption in Call": "Permitir Interrupção de Voz na Chamada",
"Allowed Endpoints": "",
"Already have an account?": "Já tem uma conta?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa ao 'top_p', e visa garantir um equilíbrio entre qualidade e variedade. O parâmetro 'p' representa a probabilidade mínima para que um token seja considerado, em relação à probabilidade do token mais provável. Por exemplo, com 'p=0.05' e o token mais provável com probabilidade de '0.9', as predições com valor inferior a '0.045' são filtrados. (Default: 0.0)",
"Amazing": "Incrível",
@@ -67,6 +70,7 @@
"API Base URL": "URL Base da API",
"API Key": "Chave API",
"API Key created.": "Chave API criada.",
"API Key Endpoint Restrictions": "",
"API keys": "Chaves API",
"Application DN": "DN da Aplicação",
"Application DN Password": "Senha da aplicação DN",
@@ -310,7 +314,7 @@
"Embedding Model": "Modelo de Embedding",
"Embedding Model Engine": "Motor do Modelo de Embedding",
"Embedding model set to \"{{embedding_model}}\"": "Modelo de embedding definido para \"{{embedding_model}}\"",
"Enable API Key Auth": "Ativar Autenticação por API Key",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Ativar Compartilhamento com a Comunidade",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interface",
"Invalid file format.": "Formato de arquivo inválido.",
"Invalid Tag": "Tag Inválida",
"is typing...": "",
"January": "Janeiro",
"Jina API Key": "",
"join our Discord for help.": "junte-se ao nosso Discord para ajudar.",
@@ -531,6 +536,7 @@
"Language": "Idioma",
"Last Active": "Última Atividade",
"Last Modified": "Última Modificação",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "Servidor LDAP atualizado",
"Leaderboard": "Tabela de classificação",
@@ -736,6 +742,7 @@
"Rename": "Renomear",
"Reorder Models": "",
"Repeat Last N": "Repetir Último N",
"Reply in Thread": "",
"Request Mode": "Modo de Solicitação",
"Reranking Model": "Modelo de Reclassificação",
"Reranking model disabled": "Modelo de Reclassificação desativado",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Redefinir Diretório de Upload",
"Reset Vector Storage/Knowledge": "Redefinir Armazenamento de Vetores/Conhecimento",
"Reset view": "",
"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": "Divisão da Resposta",
"Result": "Resultado",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para acessar a WebUI, entre em contato com o administrador. Os administradores podem gerenciar os status dos usuários no Painel de Administração.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Para anexar a base de conhecimento aqui, adicione-os ao espaço de trabalho \"Conhecimento\" primeiro.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Para proteger sua privacidade, apenas classificações, IDs de modelo, tags e metadados são compartilhados a partir de seus comentários – seus registros de bate-papo permanecem privados e não são incluídos.",
"To select actions here, add them to the \"Functions\" workspace first.": "Para selecionar ações aqui, adicione-os ao espaço de trabalho \"Ações\" primeiro.",
"To select filters here, add them to the \"Functions\" workspace first.": "Para selecionar filtros aqui, adicione-os ao espaço de trabalho \"Funções\" primeiro.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variável para ser substituída pelo conteúdo da área de transferência.",
"Version": "Versão",
"Version {{selectedVersion}} of {{totalVersions}}": "Versão {{selectedVersion}} de {{totalVersions}}",
"View Replies": "",
"Visibility": "Visibilidade",
"Voice": "Voz",
"Voice Input": "Entrada de voz",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(por exemplo, `sh webui.sh --api`)",
"(latest)": "(mais recente)",
"{{ models }}": "{{ modelos }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}'s Chats",
"{{webUIName}} Backend Required": "{{webUIName}} Backend Necessário",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Adicionar memória",
"Add Model": "Adicionar modelo",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "adicionar tags",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Já tem uma conta?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "URL Base da API",
"API Key": "Chave da API",
"API Key created.": "Chave da API criada.",
"API Key Endpoint Restrictions": "",
"API keys": "Chaves da API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Modelo de Embedding",
"Embedding Model Engine": "Motor de Modelo de Embedding",
"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding definido como \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Active a Partilha da Comunidade",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interface",
"Invalid file format.": "",
"Invalid Tag": "Etiqueta Inválida",
"is typing...": "",
"January": "Janeiro",
"Jina API Key": "",
"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
@@ -531,6 +536,7 @@
"Language": "Idioma",
"Last Active": "Último Ativo",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Renomear",
"Reorder Models": "",
"Repeat Last N": "Repetir Últimos N",
"Reply in Thread": "",
"Request Mode": "Modo de Pedido",
"Reranking Model": "Modelo de Reranking",
"Reranking model disabled": "Modelo de Reranking desativado",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Limpar Pasta de Carregamento",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Para aceder aos modelos GGUF disponíveis para descarregar,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para aceder ao WebUI, entre em contato com o administrador. Os administradores podem gerir o status dos utilizadores no Painel de Administração.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variável para que sejam substituídos pelo conteúdo da área de transferência.",
"Version": "Versão",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(de ex. `sh webui.sh --api`)",
"(latest)": "(ultimul)",
"{{ models }}": "{{ modele }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Conversațiile lui {{user}}",
"{{webUIName}} Backend Required": "Este necesar backend-ul {{webUIName}}",
"*Prompt node ID(s) are required for image generation": "*Sunt necesare ID-urile nodurilor de solicitare pentru generarea imaginii*",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Adaugă Memorie",
"Add Model": "Adaugă Model",
"Add Reaction": "",
"Add Tag": "Adaugă Etichetă",
"Add Tags": "Adaugă Etichete",
"Add text content": "Adăugați conținut textual",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Permite Chat Temporar",
"Allow User Location": "Permite Localizarea Utilizatorului",
"Allow Voice Interruption in Call": "Permite Întreruperea Vocii în Apel",
"Allowed Endpoints": "",
"Already have an account?": "Deja ai un cont?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "URL Bază API",
"API Key": "Cheie API",
"API Key created.": "Cheie API creată.",
"API Key Endpoint Restrictions": "",
"API keys": "Chei API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Model de Încapsulare",
"Embedding Model Engine": "Motor de Model de Încapsulare",
"Embedding model set to \"{{embedding_model}}\"": "Modelul de încapsulare setat la \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Activează Partajarea Comunitară",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Interfață",
"Invalid file format.": "Format de fișier invalid.",
"Invalid Tag": "Etichetă Invalidă",
"is typing...": "",
"January": "Ianuarie",
"Jina API Key": "",
"join our Discord for help.": "alătură-te Discord-ului nostru pentru ajutor.",
@@ -531,6 +536,7 @@
"Language": "Limbă",
"Last Active": "Ultima Activitate",
"Last Modified": "Ultima Modificare",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "Tabel de clasament",
@@ -736,6 +742,7 @@
"Rename": "Redenumește",
"Reorder Models": "",
"Repeat Last N": "Repetă Ultimele N",
"Reply in Thread": "",
"Request Mode": "Mod de Cerere",
"Reranking Model": "Model de Rearanjare",
"Reranking model disabled": "Modelul de Rearanjare este dezactivat",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Resetează Directorul de Încărcare",
"Reset Vector Storage/Knowledge": "Resetarea Stocării/Vectoului de Cunoștințe",
"Reset view": "",
"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": "Împărțirea răspunsurilor",
"Result": "Rezultat",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Pentru a accesa modelele GGUF disponibile pentru descărcare,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pentru a accesa WebUI, vă rugăm să contactați administratorul. Administratorii pot gestiona statusurile utilizatorilor din Panoul de Administrare.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Pentru a atașa baza de cunoștințe aici, adăugați-o mai întâi în spațiul de lucru \"Knowledge\".",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Pentru a vă proteja confidențialitatea, doar evaluările, ID-urile modelelor, etichetele și metadatele sunt partajate din feedback-ul dumneavoastră—jurnalele de chat rămân private și nu sunt incluse.",
"To select actions here, add them to the \"Functions\" workspace first.": "Pentru a selecta acțiuni aici, adăugați-le mai întâi în spațiul de lucru \"Funcții\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Pentru a selecta filtrele aici, adăugați-le mai întâi în spațiul de lucru \"Funcții\".",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variabilă pentru a fi înlocuite cu conținutul clipboard-ului.",
"Version": "Versiune",
"Version {{selectedVersion}} of {{totalVersions}}": "Versiunea {{selectedVersion}} din {{totalVersions}}",
"View Replies": "",
"Visibility": "",
"Voice": "Voce",
"Voice Input": "Intrare vocală",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(например, `sh webui.sh --api`)",
"(latest)": "(последняя)",
"{{ models }}": "{{ модели }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Чаты {{user}}'а",
"{{webUIName}} Backend Required": "Необходимо подключение к серверу {{webUIName}}",
"*Prompt node ID(s) are required for image generation": "ID узлов промптов обязательны для генерации изображения",
@@ -34,6 +35,7 @@
"Add Group": "Добавить группу",
"Add Memory": "Добавить воспоминание",
"Add Model": "Добавить модель",
"Add Reaction": "",
"Add Tag": "Добавить тег",
"Add Tags": "Добавить теги",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Разрешить временные чаты",
"Allow User Location": "Разрешить доступ к местоположению пользователя",
"Allow Voice Interruption in Call": "Разрешить прерывание голоса во время вызова",
"Allowed Endpoints": "",
"Already have an account?": "У вас уже есть учетная запись?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "Удивительный",
@@ -67,6 +70,7 @@
"API Base URL": "Базовый адрес API",
"API Key": "Ключ API",
"API Key created.": "Ключ API создан.",
"API Key Endpoint Restrictions": "",
"API keys": "Ключи API",
"Application DN": "DN приложения",
"Application DN Password": "DN-пароль приложения",
@@ -310,7 +314,7 @@
"Embedding Model": "Модель встраивания",
"Embedding Model Engine": "Движок модели встраивания",
"Embedding model set to \"{{embedding_model}}\"": "Модель встраивания установлена в \"{{embedding_model}}\"",
"Enable API Key Auth": "Включить аутентификацию по API Ключу",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "Включить генерацию автозаполнения для сообщений чата",
"Enable Community Sharing": "Включить совместное использование",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Интерфейс",
"Invalid file format.": "Неверный формат файла.",
"Invalid Tag": "Недопустимый тег",
"is typing...": "",
"January": "Январь",
"Jina API Key": "",
"join our Discord for help.": "присоединяйтесь к нашему Discord для помощи.",
@@ -531,6 +536,7 @@
"Language": "Язык",
"Last Active": "Последний Активный",
"Last Modified": "Последнее Изменение",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "LDAP сервер обновлен",
"Leaderboard": "Таблица Лидеров",
@@ -736,6 +742,7 @@
"Rename": "Переименовать",
"Reorder Models": "",
"Repeat Last N": "Повторить последние N",
"Reply in Thread": "",
"Request Mode": "Режим запроса",
"Reranking Model": "Модель реранжирования",
"Reranking model disabled": "Модель реранжирования отключена",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Сбросить каталог загрузок",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Уведомления об ответах не могут быть активированы, поскольку доступ к веб-сайту был заблокирован. Пожалуйста, перейдите к настройкам своего браузера, чтобы предоставить необходимый доступ.",
"Response splitting": "Разделение ответов",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Чтобы получить доступ к моделям GGUF, доступным для загрузки,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Чтобы получить доступ к WebUI, пожалуйста, обратитесь к администратору. Администраторы могут управлять статусами пользователей из панели администратора.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Чтобы прикрепить сюда базу знаний, сначала добавьте её в \"Знания\" рабочего пространства.",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "Чтобы выбрать действия, сначала добавьте их в \"Функции\" рабочего пространства.",
"To select filters here, add them to the \"Functions\" workspace first.": "Чтобы выбрать фильтры, сначала добавьте их в \"Функции\" рабочего пространства.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "переменную, чтобы заменить их содержимым буфера обмена.",
"Version": "Версия",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "Видимость",
"Voice": "Голос",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(napr. `sh webui.sh --api`)",
"(latest)": "Najnovšie",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}'s konverzácie",
"{{webUIName}} Backend Required": "Vyžaduje sa {{webUIName}} Backend",
"*Prompt node ID(s) are required for image generation": "*Sú potrebné IDs pre prompt node na generovanie obrázkov",
@@ -34,6 +35,7 @@
"Add Group": "Pridať skupinu",
"Add Memory": "Pridať pamäť",
"Add Model": "Pridať model",
"Add Reaction": "",
"Add Tag": "Pridať štítok",
"Add Tags": "Pridať štítky",
"Add text content": "Pridajte textový obsah",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Povoliť dočasný chat",
"Allow User Location": "Povoliť užívateľskú polohu",
"Allow Voice Interruption in Call": "Povoliť prerušenie hlasu počas hovoru",
"Allowed Endpoints": "",
"Already have an account?": "Už máte účet?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "Základná URL adresa API",
"API Key": "API kľúč",
"API Key created.": "API kľúč bol vytvorený.",
"API Key Endpoint Restrictions": "",
"API keys": "API kľúče",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Vkladací model (Embedding Model)",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "Model vkladania nastavený na \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Povoliť zdieľanie komunity",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Rozhranie",
"Invalid file format.": "Neplatný formát súboru.",
"Invalid Tag": "Neplatný tag",
"is typing...": "",
"January": "Január",
"Jina API Key": "",
"join our Discord for help.": "pripojte sa k nášmu Discordu pre pomoc.",
@@ -531,6 +536,7 @@
"Language": "Jazyk",
"Last Active": "Naposledy aktívny",
"Last Modified": "Posledná zmena",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "Rebríček",
@@ -736,6 +742,7 @@
"Rename": "Premenovať",
"Reorder Models": "",
"Repeat Last N": "Opakovať posledných N",
"Reply in Thread": "",
"Request Mode": "Režim žiadosti",
"Reranking Model": "Model na prehodnotenie poradia",
"Reranking model disabled": "Model na prehodnotenie poradia je deaktivovaný",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Resetovať adresár nahrávania",
"Reset Vector Storage/Knowledge": "Resetovanie úložiska vektorov/znalostí",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Oznámenia o odpovediach nie je možné aktivovať, pretože povolenia webu boli zamietnuté. Navštívte nastavenia svojho prehliadača a povoľte potrebný prístup.",
"Response splitting": "Rozdelenie odpovede",
"Result": "Výsledok",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Pre prístup k modelom GGUF dostupným na stiahnutie,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pre prístup k WebUI sa prosím obráťte na administrátora. Administrátori môžu spravovať stavy používateľov z Admin Panelu.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Ak chcete tu pripojiť znalostnú databázu, najprv ju pridajte do pracovného priestoru \"Knowledge\".",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Na ochranu vášho súkromia sú z vašej spätnej väzby zdieľané iba hodnotenia, ID modelov, značky a metadáta – vaše záznamy chatu zostávajú súkromné a nie sú zahrnuté.",
"To select actions here, add them to the \"Functions\" workspace first.": "Ak chcete tu vybrať akcie, najprv ich pridajte do pracovného priestoru \"Functions\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Ak chcete tu vybrať filtre, najprv ich pridajte do pracovného priestoru „Functions“.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "premennú, aby bol ich obsah nahradený obsahom schránky.",
"Version": "Verzia",
"Version {{selectedVersion}} of {{totalVersions}}": "Verzia {{selectedVersion}} z {{totalVersions}}",
"View Replies": "",
"Visibility": "Viditeľnosť",
"Voice": "Hlas",
"Voice Input": "Hlasový vstup",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(нпр. `sh webui.sh --api`)",
"(latest)": "(најновије)",
"{{ models }}": "{{ модели }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Ћаскања корисника {{user}}",
"{{webUIName}} Backend Required": "Захтева се {{webUIName}} позадинац",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "Додај групу",
"Add Memory": "Додај меморију",
"Add Model": "Додај модел",
"Add Reaction": "",
"Add Tag": "Додај ознаку",
"Add Tags": "Додај ознаке",
"Add text content": "Додај садржај текста",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Дозволи привремена ћаскања",
"Allow User Location": "Дозволи корисничку локацију",
"Allow Voice Interruption in Call": "Дозволи прекид гласа у позиву",
"Allowed Endpoints": "",
"Already have an account?": "Већ имате налог?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "Невероватно",
@@ -67,6 +70,7 @@
"API Base URL": "Основна адреса API-ја",
"API Key": "API кључ",
"API Key created.": "API кључ направљен.",
"API Key Endpoint Restrictions": "",
"API keys": "API кључеви",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Модел уградње",
"Embedding Model Engine": "Мотор модела уградње",
"Embedding model set to \"{{embedding_model}}\"": "Модел уградње подешен на \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Омогући дељење заједнице",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Изглед",
"Invalid file format.": "",
"Invalid Tag": "Неисправна ознака",
"is typing...": "",
"January": "Јануар",
"Jina API Key": "",
"join our Discord for help.": "придружите се нашем Дискорду за помоћ.",
@@ -531,6 +536,7 @@
"Language": "Језик",
"Last Active": "Последња активност",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "Ранг листа",
@@ -736,6 +742,7 @@
"Rename": "Преименуј",
"Reorder Models": "",
"Repeat Last N": "Понови последњих N",
"Reply in Thread": "",
"Request Mode": "Режим захтева",
"Reranking Model": "Модел поновног рангирања",
"Reranking model disabled": "Модел поновног рангирања онемогућен",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Да бисте приступили GGUF моделима доступним за преузимање,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "променљива за замену са садржајем оставе.",
"Version": "Издање",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(t.ex. `sh webui.sh --api`)",
"(latest)": "(senaste)",
"{{ models }}": "{{ modeller }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}s Chats",
"{{webUIName}} Backend Required": "{{webUIName}} Backend krävs",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Lägg till minne",
"Add Model": "Lägg till modell",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "Lägg till taggar",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "Har du redan ett konto?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API-bas-URL",
"API Key": "API-nyckel",
"API Key created.": "API-nyckel skapad.",
"API Key Endpoint Restrictions": "",
"API keys": "API-nycklar",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Inbäddningsmodell",
"Embedding Model Engine": "Motor för inbäddningsmodell",
"Embedding model set to \"{{embedding_model}}\"": "Inbäddningsmodell inställd på \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Aktivera community-delning",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Gränssnitt",
"Invalid file format.": "",
"Invalid Tag": "Ogiltig tagg",
"is typing...": "",
"January": "januari",
"Jina API Key": "",
"join our Discord for help.": "gå med i vår Discord för hjälp.",
@@ -531,6 +536,7 @@
"Language": "Språk",
"Last Active": "Senast aktiv",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Byt namn",
"Reorder Models": "",
"Repeat Last N": "Upprepa senaste N",
"Reply in Thread": "",
"Request Mode": "Frågeläge",
"Reranking Model": "Reranking modell",
"Reranking model disabled": "Reranking modell inaktiverad",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Återställ uppladdningskatalog",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "För att komma åt de GGUF-modellerna som finns tillgängliga för nedladdning,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "För att få tillgång till WebUI, kontakta administratören. Administratörer kan hantera behörigheter från administrationspanelen.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "variabel för att få dem ersatta med urklippsinnehåll.",
"Version": "Version",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(เช่น `sh webui.sh --api`)",
"(latest)": "(ล่าสุด)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "การสนทนาของ {{user}}",
"{{webUIName}} Backend Required": "ต้องการ Backend ของ {{webUIName}}",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "เพิ่มความจำ",
"Add Model": "เพิ่มโมเดล",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "เพิ่มแท็ก",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "อนุญาตตำแหน่งผู้ใช้",
"Allow Voice Interruption in Call": "อนุญาตการแทรกเสียงในสาย",
"Allowed Endpoints": "",
"Already have an account?": "มีบัญชีอยู่แล้ว?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "URL ฐานของ API",
"API Key": "คีย์ API",
"API Key created.": "สร้างคีย์ API แล้ว",
"API Key Endpoint Restrictions": "",
"API keys": "คีย์ API",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "โมเดลการฝัง",
"Embedding Model Engine": "เครื่องยนต์โมเดลการฝัง",
"Embedding model set to \"{{embedding_model}}\"": "ตั้งค่าโมเดลการฝังเป็น \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "เปิดใช้งานการแชร์ในชุมชน",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "อินเทอร์เฟซ",
"Invalid file format.": "",
"Invalid Tag": "แท็กไม่ถูกต้อง",
"is typing...": "",
"January": "มกราคม",
"Jina API Key": "",
"join our Discord for help.": "เข้าร่วม Discord ของเราเพื่อขอความช่วยเหลือ",
@@ -531,6 +536,7 @@
"Language": "ภาษา",
"Last Active": "ใช้งานล่าสุด",
"Last Modified": "แก้ไขล่าสุด",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "เปลี่ยนชื่อ",
"Reorder Models": "",
"Repeat Last N": "ทำซ้ำครั้งล่าสุด N",
"Reply in Thread": "",
"Request Mode": "โหมดคำขอ",
"Reranking Model": "จัดอันดับใหม่โมเดล",
"Reranking model disabled": "ปิดการใช้งานโมเดลการจัดอันดับใหม่",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "รีเซ็ตไดเร็กทอรีการอัปโหลด",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "ไม่สามารถเปิดการแจ้งเตือนการตอบสนองได้เนื่องจากเว็บไซต์ปฏิเสธ กรุณาเข้าการตั้งค่าเบราว์เซอร์ของคุณเพื่อให้สิทธิ์การเข้าถึงที่จำเป็น",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "ในการเข้าถึงโมเดล GGUF ที่มีให้ดาวน์โหลด",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "ในการเข้าถึง WebUI โปรดติดต่อผู้ดูแลระบบ ผู้ดูแลระบบสามารถจัดการสถานะผู้ใช้จากแผงควบคุมผู้ดูแลระบบ",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "ในการเลือกฟิลเตอร์ที่นี่ ให้เพิ่มไปยังพื้นที่ทำงาน \"ฟังก์ชัน\" ก่อน",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "ตัวแปรเพื่อให้แทนที่ด้วยเนื้อหาคลิปบอร์ด",
"Version": "เวอร์ชัน",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "เสียง",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "",
"(latest)": "",
"{{ models }}": "",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "",
"{{webUIName}} Backend Required": "",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "",
"Add Model": "",
"Add Reaction": "",
"Add Tag": "",
"Add Tags": "",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "",
"Allow User Location": "",
"Allow Voice Interruption in Call": "",
"Allowed Endpoints": "",
"Already have an account?": "",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "",
"API Key": "",
"API Key created.": "",
"API Key Endpoint Restrictions": "",
"API keys": "",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "",
"Embedding Model Engine": "",
"Embedding model set to \"{{embedding_model}}\"": "",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "",
"Invalid file format.": "",
"Invalid Tag": "",
"is typing...": "",
"January": "",
"Jina API Key": "",
"join our Discord for help.": "",
@@ -531,6 +536,7 @@
"Language": "",
"Last Active": "",
"Last Modified": "",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "",
"Reply in Thread": "",
"Request Mode": "",
"Reranking Model": "",
"Reranking model disabled": "",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
"Response splitting": "",
"Result": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "",
"To select filters here, add them to the \"Functions\" workspace first.": "",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "",
"Version": "",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(örn. `sh webui.sh --api`)",
"(latest)": "(en son)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}'ın Sohbetleri",
"{{webUIName}} Backend Required": "{{webUIName}} Arka-uç Gerekli",
"*Prompt node ID(s) are required for image generation": "*Görüntü oluşturma için düğüm kimlikleri gereklidir",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Bellek Ekle",
"Add Model": "Model Ekle",
"Add Reaction": "",
"Add Tag": "Etiket Ekle",
"Add Tags": "Etiketler Ekle",
"Add text content": "Metin içeriği ekleme",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Geçici Sohbetlere İzin Ver",
"Allow User Location": "Kullanıcı Konumuna İzin Ver",
"Allow Voice Interruption in Call": "Aramada Ses Kesintisine İzin Ver",
"Allowed Endpoints": "",
"Already have an account?": "Zaten bir hesabınız mı var?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API Temel URL",
"API Key": "API Anahtarı",
"API Key created.": "API Anahtarı oluşturuldu.",
"API Key Endpoint Restrictions": "",
"API keys": "API anahtarları",
"Application DN": "Uygulama DN",
"Application DN Password": "Uygulama DN Parola",
@@ -310,7 +314,7 @@
"Embedding Model": "Gömme Modeli",
"Embedding Model Engine": "Gömme Modeli Motoru",
"Embedding model set to \"{{embedding_model}}\"": "Gömme modeli \"{{embedding_model}}\" olarak ayarlandı",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Topluluk Paylaşımını Etkinleştir",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Arayüz",
"Invalid file format.": "",
"Invalid Tag": "Geçersiz etiket",
"is typing...": "",
"January": "Ocak",
"Jina API Key": "",
"join our Discord for help.": "yardım için Discord'umuza katılın.",
@@ -531,6 +536,7 @@
"Language": "Dil",
"Last Active": "Son Aktivite",
"Last Modified": "Son Düzenleme",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP sunucusu güncellendi",
"Leaderboard": "Liderlik Tablosu",
@@ -736,6 +742,7 @@
"Rename": "Yeniden Adlandır",
"Reorder Models": "",
"Repeat Last N": "Son N'yi Tekrar Et",
"Reply in Thread": "",
"Request Mode": "İstek Modu",
"Reranking Model": "Yeniden Sıralama Modeli",
"Reranking model disabled": "Yeniden sıralama modeli devre dışı bırakıldı",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Yükleme Dizinini Sıfırla",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "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": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "İndirilebilir mevcut GGUF modellerine erişmek için,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "WebUI'ye erişmek için lütfen yöneticiyle iletişime geçin. Yöneticiler kullanıcı durumlarını Yönetici Panelinden yönetebilir.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "Burada eylemleri seçmek için öncelikle bunları \"İşlevler\" çalışma alanına ekleyin.",
"To select filters here, add them to the \"Functions\" workspace first.": "Filtreleri burada seçmek için öncelikle bunları \"İşlevler\" çalışma alanına ekleyin.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "panodaki içerikle değiştirilmesi için değişken.",
"Version": "Sürüm",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "Ses",
"Voice Input": "",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)",
"(latest)": "(остання)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "Чати {{user}}а",
"{{webUIName}} Backend Required": "Необхідно підключення бекенду {{webUIName}}",
"*Prompt node ID(s) are required for image generation": "*Для генерації зображення потрібно вказати ідентифікатор(и) вузла(ів)",
@@ -34,6 +35,7 @@
"Add Group": "Додати групу",
"Add Memory": "Додати пам'ять",
"Add Model": "Додати модель",
"Add Reaction": "",
"Add Tag": "Додати тег",
"Add Tags": "Додати теги",
"Add text content": "Додати текстовий вміст",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Дозволити тимчасовий чат",
"Allow User Location": "Доступ до місцезнаходження",
"Allow Voice Interruption in Call": "Дозволити переривання голосу під час виклику",
"Allowed Endpoints": "",
"Already have an account?": "Вже є обліковий запис?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Альтернатива параметру top_p, яка має на меті забезпечити баланс якості та різноманітності. Параметр p представляє мінімальну ймовірність для того, щоб токен був врахований, відносно ймовірності найбільш ймовірного токена. Наприклад, при p=0.05 і найбільш імовірному токені з ймовірністю 0.9, логіти зі значенням менше 0.045 будуть відфільтровані. (За замовчуванням: 0.0)",
"Amazing": "Чудово",
@@ -67,6 +70,7 @@
"API Base URL": "URL-адреса API",
"API Key": "Ключ API",
"API Key created.": "Ключ API створено.",
"API Key Endpoint Restrictions": "",
"API keys": "Ключі API",
"Application DN": "DN застосунку",
"Application DN Password": "Пароль DN застосунку",
@@ -310,7 +314,7 @@
"Embedding Model": "Модель вбудовування",
"Embedding Model Engine": "Рушій моделі вбудовування ",
"Embedding model set to \"{{embedding_model}}\"": "Встановлена модель вбудовування \"{{embedding_model}}\"",
"Enable API Key Auth": "Увімкнути автентифікацію за допомогою API ключа",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "Увімкнути генерацію автозаповнення для повідомлень чату",
"Enable Community Sharing": "Увімкнути спільний доступ",
"Enable Google Drive": "Увімкнути Google Drive",
@@ -507,6 +511,7 @@
"Interface": "Інтерфейс",
"Invalid file format.": "Неправильний формат файлу.",
"Invalid Tag": "Недійсний тег",
"is typing...": "",
"January": "Січень",
"Jina API Key": "Ключ API для Jina",
"join our Discord for help.": "приєднуйтеся до нашого Discord для допомоги.",
@@ -531,6 +536,7 @@
"Language": "Мова",
"Last Active": "Остання активність",
"Last Modified": "Востаннє змінено",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "Сервер LDAP оновлено",
"Leaderboard": "Таблиця лідерів",
@@ -736,6 +742,7 @@
"Rename": "Перейменувати",
"Reorder Models": "Переставити моделі",
"Repeat Last N": "Повторити останні N",
"Reply in Thread": "",
"Request Mode": "Режим запиту",
"Reranking Model": "Модель переранжування",
"Reranking model disabled": "Модель переранжування вимкнена",
@@ -744,6 +751,7 @@
"Reset All Models": "Скинути всі моделі",
"Reset Upload Directory": "Скинути каталог завантажень",
"Reset Vector Storage/Knowledge": "Скинути векторне сховище/Знання",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Сповіщення про відповіді не можуть бути активовані, оскільки вам було відмовлено в доступі до веб-сайту. Будь ласка, відвідайте налаштування вашого браузера, щоб надати необхідний доступ.",
"Response splitting": "Розбиття відповіді",
"Result": "Результат",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Щоб отримати доступ до моделей GGUF, які можна завантажити,,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Щоб отримати доступ до веб-інтерфейсу, зверніться до адміністратора. Адміністратори можуть керувати статусами користувачів з Панелі адміністратора.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Щоб прикріпити базу знань тут, спочатку додайте їх до робочого простору \"Знання\".",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Для захисту вашої конфіденційності з вашими відгуками діляться лише оцінками, ID моделей, тегами та метаданими — ваші журнали чату залишаються приватними і не включаються.",
"To select actions here, add them to the \"Functions\" workspace first.": "Щоб вибрати дії тут, спочатку додайте їх до робочої області \"Функції\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Щоб обрати фільтри тут, спочатку додайте їх до робочої області \"Функції\".",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "змінна, щоб замінити їх вмістом буфера обміну.",
"Version": "Версія",
"Version {{selectedVersion}} of {{totalVersions}}": "Версія {{selectedVersion}} з {{totalVersions}}",
"View Replies": "",
"Visibility": "Видимість",
"Voice": "Голос",
"Voice Input": "Голосове введення",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(مثال کے طور پر: `sh webui.sh --api`)",
"(latest)": "(تازہ ترین)",
"{{ models }}": "{{ ماڈلز }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{ صارف }} کی بات چیت",
"{{webUIName}} Backend Required": "{{webUIName}} بیک اینڈ درکار ہے",
"*Prompt node ID(s) are required for image generation": "تصویر کی تخلیق کے لیے *پرومپٹ نوڈ آئی ڈی(ز) کی ضرورت ہے",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "میموری شامل کریں",
"Add Model": "ماڈل شامل کریں",
"Add Reaction": "",
"Add Tag": "ٹیگ شامل کریں",
"Add Tags": "ٹیگز شامل کریں",
"Add text content": "متن کا مواد شامل کریں",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "عارضی چیٹ کی اجازت دیں",
"Allow User Location": "صارف کی مقام کی اجازت دیں",
"Allow Voice Interruption in Call": "کال میں آواز کی مداخلت کی اجازت دیں",
"Allowed Endpoints": "",
"Already have an account?": "کیا پہلے سے اکاؤنٹ موجود ہے؟",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "API بنیادی URL",
"API Key": "اے پی آئی کلید",
"API Key created.": "اے پی آئی کلید بنائی گئی",
"API Key Endpoint Restrictions": "",
"API keys": "API کیز",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "ایمبیڈنگ ماڈل",
"Embedding Model Engine": "ایمبیڈنگ ماڈل انجن",
"Embedding model set to \"{{embedding_model}}\"": "ایمبیڈنگ ماڈل \"{{embedding_model}}\" پر سیٹ کیا گیا ہے",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "کمیونٹی شیئرنگ فعال کریں",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "انٹرفیس",
"Invalid file format.": "غلط فائل فارمیٹ",
"Invalid Tag": "غلط ٹیگ",
"is typing...": "",
"January": "جنوری",
"Jina API Key": "",
"join our Discord for help.": "مدد کے لئے ہمارے ڈسکارڈ میں شامل ہوں",
@@ -531,6 +536,7 @@
"Language": "زبان",
"Last Active": "آخری سرگرمی",
"Last Modified": "آخری ترمیم",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "لیڈر بورڈ",
@@ -736,6 +742,7 @@
"Rename": "تبدیل نام کریں",
"Reorder Models": "",
"Repeat Last N": "آخری این (N)",
"Reply in Thread": "",
"Request Mode": "درخواست کا موڈ",
"Reranking Model": "دوبارہ درجہ بندی کا ماڈل",
"Reranking model disabled": "دوبارہ درجہ بندی کا ماڈل غیر فعال کر دیا گیا",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "اپلوڈ ڈائریکٹری کو ری سیٹ کریں",
"Reset Vector Storage/Knowledge": "ویكٹر اسٹوریج/علم کو ری سیٹ کریں",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "جواب کی اطلاعات کو فعال نہیں کیا جا سکتا کیونکہ ویب سائٹ کی اجازتیں مسترد کر دی گئی ہیں براہ کرم اپنے براؤزر کی سیٹنگز پر جائیں تاکہ ضروری رسائی کی اجازت دے سکیں",
"Response splitting": "جواب کو تقسیم کرنا",
"Result": "نتیجہ",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "GGUF ماڈلز تک رسائی حاصل کرنے کے لئے جو ڈاؤنلوڈنگ کے لئے دستیاب ہیں،",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "ویب یو آئی تک رسائی حاصل کرنے کے لیے براہ کرم منتظم سے رابطہ کریں ایڈمنز صارف کی حالت کو ایڈمن پینل سے منظم کر سکتے ہیں",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "یہاں معلوماتی بنیاد منسلک کرنے کے لیے، پہلے انہیں \"معلومات\" ورک اسپیس میں شامل کریں",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "آپ کی رازداری کے تحفظ کے لئے، صرف درجہ بندی، ماڈل IDs، ٹیگز، اور میٹا ڈیٹا آپ کے فیڈ بیک سے شیئر کیے جاتے ہیں - آپ کی چیٹ کی تفصیلات نجی رہتی ہیں اور شامل نہیں کی جاتیں ",
"To select actions here, add them to the \"Functions\" workspace first.": "عمل کا انتخاب کرنے کے لیے، پہلے انہیں \"افعال\" ورک اسپیس میں شامل کریں",
"To select filters here, add them to the \"Functions\" workspace first.": "یہاں فلٹرز منتخب کرنے کے لئے، پہلے انہیں \"فیچرز\" ورک اسپیس میں شامل کریں",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "انہیں کلپ بورڈ کے مواد سے تبدیل کرنے کے لیے متغیر",
"Version": "ورژن",
"Version {{selectedVersion}} of {{totalVersions}}": "ورژن {{selectedVersion}} کا {{totalVersions}} میں سے",
"View Replies": "",
"Visibility": "",
"Voice": "آواز",
"Voice Input": "آواز داخل کریں",
+11 -1
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(vd: `sh webui.sh --api`)",
"(latest)": "(mới nhất)",
"{{ models }}": "{{ mô hình }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}}'s Chats",
"{{webUIName}} Backend Required": "{{webUIName}} Yêu cầu Backend",
"*Prompt node ID(s) are required for image generation": "",
@@ -34,6 +35,7 @@
"Add Group": "",
"Add Memory": "Thêm bộ nhớ",
"Add Model": "Thêm model",
"Add Reaction": "",
"Add Tag": "Thêm thẻ",
"Add Tags": "thêm thẻ",
"Add text content": "",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "Cho phép Chat nháp",
"Allow User Location": "Cho phép sử dụng vị trí người dùng",
"Allow Voice Interruption in Call": "Cho phép gián đoạn giọng nói trong cuộc gọi",
"Allowed Endpoints": "",
"Already have an account?": "Bạn đã có tài khoản?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
@@ -67,6 +70,7 @@
"API Base URL": "Đường dẫn tới API (API Base URL)",
"API Key": "API Key",
"API Key created.": "Khóa API đã tạo",
"API Key Endpoint Restrictions": "",
"API keys": "API Keys",
"Application DN": "",
"Application DN Password": "",
@@ -310,7 +314,7 @@
"Embedding Model": "Mô hình embedding",
"Embedding Model Engine": "Trình xử lý embedding",
"Embedding model set to \"{{embedding_model}}\"": "Mô hình embedding đã được thiết lập thành \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "",
"Enable Community Sharing": "Cho phép Chia sẻ Cộng đồng",
"Enable Google Drive": "",
@@ -507,6 +511,7 @@
"Interface": "Giao diện",
"Invalid file format.": "",
"Invalid Tag": "Tag không hợp lệ",
"is typing...": "",
"January": "Tháng 1",
"Jina API Key": "",
"join our Discord for help.": "tham gia Discord của chúng tôi để được trợ giúp.",
@@ -531,6 +536,7 @@
"Language": "Ngôn ngữ",
"Last Active": "Truy cập gần nhất",
"Last Modified": "Lần sửa gần nhất",
"Last reply": "",
"LDAP": "",
"LDAP server updated": "",
"Leaderboard": "",
@@ -736,6 +742,7 @@
"Rename": "Đổi tên",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Reply in Thread": "",
"Request Mode": "Request Mode",
"Reranking Model": "Reranking Model",
"Reranking model disabled": "Reranking model disabled",
@@ -744,6 +751,7 @@
"Reset All Models": "",
"Reset Upload Directory": "Xóa toàn bộ thư mục Upload",
"Reset Vector Storage/Knowledge": "",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "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": "",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "Để truy cập các mô hình GGUF có sẵn để tải xuống,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Để truy cập vui lòng liên hệ với quản trị viên.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To select actions here, add them to the \"Functions\" workspace first.": "Để chọn các tác vụ, bạn phải thêm chúng vào workspace \"Functions\" trước.",
"To select filters here, add them to the \"Functions\" workspace first.": "Để chọn các filters, bạn phải thêm chúng vào workspace \"Functions\" trước.",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "biến để có chúng được thay thế bằng nội dung clipboard.",
"Version": "Version",
"Version {{selectedVersion}} of {{totalVersions}}": "",
"View Replies": "",
"Visibility": "",
"Voice": "Giọng nói",
"Voice Input": "",
+18 -8
View File
@@ -5,6 +5,7 @@
"(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)",
"(latest)": "(最新版)",
"{{ models }}": "{{ models }}",
"{{COUNT}} Replies": "",
"{{user}}'s Chats": "{{user}} 的对话记录",
"{{webUIName}} Backend Required": "{{webUIName}} 需要后端服务",
"*Prompt node ID(s) are required for image generation": "*图片生成需要 Prompt node ID",
@@ -34,6 +35,7 @@
"Add Group": "添加权限组",
"Add Memory": "添加记忆",
"Add Model": "添加模型",
"Add Reaction": "",
"Add Tag": "添加标签",
"Add Tags": "添加标签",
"Add text content": "添加文本内容",
@@ -57,6 +59,7 @@
"Allow Temporary Chat": "允许临时对话",
"Allow User Location": "允许获取您的位置",
"Allow Voice Interruption in Call": "允许通话中的打断语音",
"Allowed Endpoints": "",
"Already have an account?": "已经拥有账号了?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)",
"Amazing": "很棒",
@@ -67,6 +70,7 @@
"API Base URL": "API 基础地址",
"API Key": "API 密钥",
"API Key created.": "API 密钥已创建。",
"API Key Endpoint Restrictions": "",
"API keys": "API 密钥",
"Application DN": "Application DN",
"Application DN Password": "Application DN 密码",
@@ -310,7 +314,7 @@
"Embedding Model": "语义向量模型",
"Embedding Model Engine": "语义向量模型引擎",
"Embedding model set to \"{{embedding_model}}\"": "语义向量模型设置为 \"{{embedding_model}}\"",
"Enable API Key Auth": "启用 API 密钥鉴权",
"Enable API Key": "",
"Enable autocomplete generation for chat messages": "启用聊天消息的自动完成生成",
"Enable Community Sharing": "启用分享至社区",
"Enable Google Drive": "启用 Google 云端硬盘",
@@ -364,7 +368,7 @@
"Enter stop sequence": "输入停止序列 (Stop Sequence)",
"Enter system prompt": "输入系统提示词 (Prompt)",
"Enter Tavily API Key": "输入 Tavily API 密钥",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "输入 WebUI 的公共 URL。此 URL 将用于在通知中生成链接。",
"Enter Tika Server URL": "输入 Tika 服务器地址",
"Enter Top K": "输入 Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "输入地址 (例如:http://127.0.0.1:7860/)",
@@ -483,10 +487,10 @@
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "我已阅读并理解我的行为所带来的影响,明白执行任意代码所涉及的风险。且我已验证代码来源可信度。",
"ID": "ID",
"Ignite curiosity": "点燃好奇心",
"Image Compression": "",
"Image Compression": "图像压缩",
"Image Generation (Experimental)": "图像生成(实验性)",
"Image Generation Engine": "图像生成引擎",
"Image Max Compression Size": "",
"Image Max Compression Size": "图像最大压缩尺寸",
"Image Settings": "图像设置",
"Images": "图像",
"Import Chats": "导入对话记录",
@@ -507,6 +511,7 @@
"Interface": "界面",
"Invalid file format.": "无效文件格式。",
"Invalid Tag": "无效标签",
"is typing...": "",
"January": "一月",
"Jina API Key": "Jina API 密钥",
"join our Discord for help.": "加入我们的 Discord 寻求帮助。",
@@ -531,6 +536,7 @@
"Language": "语言",
"Last Active": "最后在线时间",
"Last Modified": "最后修改时间",
"Last reply": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP 服务器已更新",
"Leaderboard": "排行榜",
@@ -605,7 +611,7 @@
"Name": "名称",
"Name your knowledge base": "为您的知识库命名",
"New Chat": "新对话",
"New folder": "",
"New folder": "新文件夹",
"New Password": "新密码",
"new-channel": "新频道",
"No content found": "未发现内容",
@@ -630,7 +636,7 @@
"Not helpful": "无帮助",
"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:如果设置了最低分数,搜索只会返回分数大于或等于最低分数的文档。",
"Notes": "笔记",
"Notification Sound": "",
"Notification Sound": "通知声音",
"Notification Webhook": "通知 Webhook",
"Notifications": "桌面通知",
"November": "十一月",
@@ -736,6 +742,7 @@
"Rename": "重命名",
"Reorder Models": "重新排序模型",
"Repeat Last N": "重复最后 N 次",
"Reply in Thread": "",
"Request Mode": "请求模式",
"Reranking Model": "重排模型",
"Reranking model disabled": "重排模型已禁用",
@@ -744,6 +751,7 @@
"Reset All Models": "重置所有模型",
"Reset Upload Directory": "重置上传目录",
"Reset Vector Storage/Knowledge": "重置向量存储/知识",
"Reset view": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "无法激活回复时发送通知。请检查浏览器设置,并授予必要的访问权限。",
"Response splitting": "拆分回复",
"Result": "结果",
@@ -781,7 +789,7 @@
"Search Tools": "搜索工具",
"SearchApi API Key": "SearchApi API 密钥",
"SearchApi Engine": "SearchApi 引擎",
"Searched {{count}} sites": "",
"Searched {{count}} sites": "搜索过的 {{count}} 网站",
"Searching \"{{searchQuery}}\"": "搜索 \"{{searchQuery}}\" 中",
"Searching Knowledge for \"{{searchQuery}}\"": "检索有关 \"{{searchQuery}}\" 的知识中",
"Searxng Query URL": "Searxng 查询 URL",
@@ -922,6 +930,7 @@
"To access the GGUF models available for downloading,": "要访问可下载的 GGUF 模型,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "请联系管理员以访问。管理员可以在后台管理面板中管理用户状态。",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "要在这里附加知识库,请先将其添加到工作空间中的“知识库”。",
"To learn more about available endpoints, visit our documentation.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "为了保护您的隐私,只有评分、模型ID、标签和元数据会从您的反馈中分享——您的聊天记录将保持私密,不会被包含在内。",
"To select actions here, add them to the \"Functions\" workspace first.": "要在这里选择自动化,请先将其添加到工作空间中的“函数”。",
"To select filters here, add them to the \"Functions\" workspace first.": "要在这里选择过滤器,请先将其添加到工作空间中的“函数”。",
@@ -1000,6 +1009,7 @@
"variable to have them replaced with clipboard content.": "变量将被剪贴板内容替换。",
"Version": "版本",
"Version {{selectedVersion}} of {{totalVersions}}": "版本 {{selectedVersion}}/{{totalVersions}}",
"View Replies": "",
"Visibility": "可见性",
"Voice": "语音",
"Voice Input": "语音输入",
@@ -1015,7 +1025,7 @@
"Web Search Query Generation": "网页搜索查询生成",
"Webhook URL": "Webhook URL",
"WebUI Settings": "WebUI 设置",
"WebUI URL": "",
"WebUI URL": "WebUI URL",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 将向 \"{{url}}/api/chat\" 发出请求",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI 将向 \"{{url}}/chat/completions\" 发出请求",
"What are you trying to achieve?": "你想要达到什么目标?",

Some files were not shown because too many files have changed in this diff Show More