Merge branch 'dev' into main

This commit is contained in:
IllimarR 2025-11-01 16:05:35 +02:00 committed by GitHub
commit 00eacfcacc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
139 changed files with 2670 additions and 3341 deletions

View file

@ -11,9 +11,9 @@ body:
## Important Notes ## Important Notes
- **Before submitting a bug report**: Please check the [Issues](https://github.com/open-webui/open-webui/issues) and [Discussions](https://github.com/open-webui/open-webui/discussions) sections to see if a similar issue has already been reported. If unsure, start a discussion first, as this helps us efficiently focus on improving the project. Duplicates may be closed without notice. **Please search for existing issues and discussions.** - **Before submitting a bug report**: Please check the [Issues](https://github.com/open-webui/open-webui/issues) and [Discussions](https://github.com/open-webui/open-webui/discussions) sections to see if a similar issue has already been reported. If unsure, start a discussion first, as this helps us efficiently focus on improving the project. Duplicates may be closed without notice. **Please search for existing issues AND discussions. No matter open or closed.**
- Check for opened, **but also for (recently) CLOSED issues** as the issue you are trying to report **might already have been fixed!** - Check for opened, **but also for (recently) CLOSED issues** as the issue you are trying to report **might already have been fixed on the dev branch!**
- **Respectful collaboration**: Open WebUI is a volunteer-driven project with a single maintainer and contributors who also have full-time jobs. Please be constructive and respectful in your communication. - **Respectful collaboration**: Open WebUI is a volunteer-driven project with a single maintainer and contributors who also have full-time jobs. Please be constructive and respectful in your communication.
@ -21,6 +21,8 @@ body:
- **Bug Reproducibility**: If a bug cannot be reproduced using a `:main` or `:dev` Docker setup or with `pip install` on Python 3.11, community assistance may be required. In such cases, we will move it to the "[Issues](https://github.com/open-webui/open-webui/discussions/categories/issues)" Discussions section. Your help is appreciated! - **Bug Reproducibility**: If a bug cannot be reproduced using a `:main` or `:dev` Docker setup or with `pip install` on Python 3.11, community assistance may be required. In such cases, we will move it to the "[Issues](https://github.com/open-webui/open-webui/discussions/categories/issues)" Discussions section. Your help is appreciated!
- **Scope**: If you want to report a SECURITY VULNERABILITY, then do so through our [GitHub security page](https://github.com/open-webui/open-webui/security).
- type: checkboxes - type: checkboxes
id: issue-check id: issue-check
attributes: attributes:
@ -31,6 +33,8 @@ body:
required: true required: true
- label: I have searched for any existing and/or related discussions. - label: I have searched for any existing and/or related discussions.
required: true required: true
- label: I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
required: true
- label: I am using the latest version of Open WebUI. - label: I am using the latest version of Open WebUI.
required: true required: true

View file

@ -8,9 +8,19 @@ body:
value: | value: |
## Important Notes ## Important Notes
### Before submitting ### Before submitting
Please check the open AND closed [Issues](https://github.com/open-webui/open-webui/issues) AND [Discussions](https://github.com/open-webui/open-webui/discussions) to see if a similar request has been posted.
Please check the **open AND closed** [Issues](https://github.com/open-webui/open-webui/issues) AND [Discussions](https://github.com/open-webui/open-webui/discussions) to see if a similar request has been posted.
It's likely we're already tracking it! If youre unsure, start a discussion post first. It's likely we're already tracking it! If youre unsure, start a discussion post first.
If your feature request might impact others in the community, consider opening a discussion instead and evaluate whether and how to implement it.
#### Scope
If your feature request is likely to take more than a quick coding session to implement, test and verify, then open it in the **Ideas** section of the [Discussions](https://github.com/open-webui/open-webui/discussions) instead.
**We will close and force move your feature request to the Ideas section, if we believe your feature request is not trivial/quick to implement.**
This is to ensure the issues tab is used only for issues, quickly addressable feature requests and tracking tickets by the maintainers.
Other feature requests belong in the **Ideas** section of the [Discussions](https://github.com/open-webui/open-webui/discussions).
If your feature request might impact others in the community, definitely open a discussion instead and evaluate whether and how to implement it.
This will help us efficiently focus on improving the project. This will help us efficiently focus on improving the project.
### Collaborate respectfully ### Collaborate respectfully
@ -23,7 +33,6 @@ body:
We appreciate your time and ask that you **respect ours**. We appreciate your time and ask that you **respect ours**.
### Contributing ### Contributing
If you encounter an issue, we highly encourage you to submit a pull request or fork the project. We actively work to prevent contributor burnout to maintain the quality and continuity of Open WebUI. If you encounter an issue, we highly encourage you to submit a pull request or fork the project. We actively work to prevent contributor burnout to maintain the quality and continuity of Open WebUI.
@ -36,14 +45,22 @@ body:
label: Check Existing Issues label: Check Existing Issues
description: Please confirm that you've checked for existing similar requests description: Please confirm that you've checked for existing similar requests
options: options:
- label: I have searched all existing open AND closed issues and discussions for similar requests. I have found none that is comparable to my request. - label: I have searched for all existing **open AND closed** issues and discussions for similar requests. I have found none that is comparable to my request.
required: true
- type: checkboxes
id: feature-scope
attributes:
label: Verify Feature Scope
description: Please confirm the feature's scope is within the described scope
options:
- label: I have read through and understood the scope definition for feature requests in the Issues section. I believe my feature request meets the definition and belongs in the Issues section instead of the Discussions.
required: true required: true
- type: textarea - type: textarea
id: problem-description id: problem-description
attributes: attributes:
label: Problem Description label: Problem Description
description: Is your feature request related to a problem? Please provide a clear and concise description of what the problem is. description: Is your feature request related to a problem? Please provide a clear and concise description of what the problem is.
placeholder: "Ex. I'm always frustrated when..." placeholder: "Ex. I'm always frustrated when... / Not related to a problem"
validations: validations:
required: true required: true
- type: textarea - type: textarea

View file

@ -1,16 +1,18 @@
# Pull Request Checklist # Pull Request Checklist
### Note to first-time contributors: Please open a discussion post in [Discussions](https://github.com/open-webui/open-webui/discussions) and describe your changes before submitting a pull request. ### Note to first-time contributors: Please open a discussion post in [Discussions](https://github.com/open-webui/open-webui/discussions) to discuss your idea/fix with the community before creating a pull request, and describe your changes before submitting a pull request.
This is to ensure large feature PRs are discussed with the community first, before starting work on it. If the community does not want this feature or it is not relevant for Open WebUI as a project, it can be identified in the discussion before working on the feature and submitting the PR.
**Before submitting, make sure you've checked the following:** **Before submitting, make sure you've checked the following:**
- [ ] **Target branch:** Verify that the pull request targets the `dev` branch. Not targeting the `dev` branch may lead to immediate closure of the PR. - [ ] **Target branch:** Verify that the pull request targets the `dev` branch. **Not targeting the `dev` branch will lead to immediate closure of the PR.**
- [ ] **Description:** Provide a concise description of the changes made in this pull request. - [ ] **Description:** Provide a concise description of the changes made in this pull request down below.
- [ ] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description. - [ ] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description.
- [ ] **Documentation:** If necessary, update relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs) like environment variables, the tutorials, or other documentation sources. - [ ] **Documentation:** If necessary, update relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs) like environment variables, the tutorials, or other documentation sources.
- [ ] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation? - [ ] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation?
- [ ] **Testing:** Perform manual tests to verify the implemented fix/feature works as intended AND does not break any other functionality. Take this as an opportunity to make screenshots of the feature/fix and include it in the PR description. - [ ] **Testing:** Perform manual tests to **verify the implemented fix/feature works as intended AND does not break any other functionality**. Take this as an opportunity to **make screenshots of the feature/fix and include it in the PR description**.
- [ ] **Agentic AI Code:**: Confirm this Pull Request is **not written by any AI Agent** or has at least gone through additional human review **and** manual testing. If any AI Agent is the co-author of this PR, it may lead to immediate closure of the PR. - [ ] **Agentic AI Code:** Confirm this Pull Request is **not written by any AI Agent** or has at least **gone through additional human review AND manual testing**. If any AI Agent is the co-author of this PR, it may lead to immediate closure of the PR.
- [ ] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards? - [ ] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
- [ ] **Title Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following: - [ ] **Title Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following:
- **BREAKING CHANGE**: Significant changes that may affect compatibility - **BREAKING CHANGE**: Significant changes that may affect compatibility
@ -75,3 +77,6 @@
### Contributor License Agreement ### Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms.
> [!NOTE]
> Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in.

View file

@ -17,7 +17,7 @@ Passionate about open-source AI? [Join our team →](https://careers.openwebui.c
![Open WebUI Demo](./demo.gif) ![Open WebUI Demo](./demo.gif)
> [!TIP] > [!TIP]
> **Looking for an [Enterprise Plan](https://docs.openwebui.com/enterprise)?** **[Speak with Our Sales Team Today!](mailto:sales@openwebui.com)** > **Looking for an [Enterprise Plan](https://docs.openwebui.com/enterprise)?** **[Speak with Our Sales Team Today!](https://docs.openwebui.com/enterprise)**
> >
> Get **enhanced capabilities**, including **custom theming and branding**, **Service Level Agreement (SLA) support**, **Long-Term Support (LTS) versions**, and **more!** > Get **enhanced capabilities**, including **custom theming and branding**, **Service Level Agreement (SLA) support**, **Long-Term Support (LTS) versions**, and **more!**
@ -65,43 +65,6 @@ For more information, be sure to check out our [Open WebUI Documentation](https:
Want to learn more about Open WebUI's features? Check out our [Open WebUI documentation](https://docs.openwebui.com/features) for a comprehensive overview! Want to learn more about Open WebUI's features? Check out our [Open WebUI documentation](https://docs.openwebui.com/features) for a comprehensive overview!
## Sponsors 🙌
#### Emerald
<table>
<!-- <tr>
<td>
<a href="https://n8n.io/" target="_blank">
<img src="https://docs.openwebui.com/sponsors/logos/n8n.png" alt="n8n" style="width: 8rem; height: 8rem; border-radius: .75rem;" />
</a>
</td>
<td>
<a href="https://n8n.io/">n8n</a> • Does your interface have a backend yet?<br>Try <a href="https://n8n.io/">n8n</a>
</td>
</tr> -->
<tr>
<td>
<a href="https://tailscale.com/blog/self-host-a-local-ai-stack/?utm_source=OpenWebUI&utm_medium=paid-ad-placement&utm_campaign=OpenWebUI-Docs" target="_blank">
<img src="https://docs.openwebui.com/sponsors/logos/tailscale.png" alt="Tailscale" style="width: 8rem; height: 8rem; border-radius: .75rem;" />
</a>
</td>
<td>
<a href="https://tailscale.com/blog/self-host-a-local-ai-stack/?utm_source=OpenWebUI&utm_medium=paid-ad-placement&utm_campaign=OpenWebUI-Docs">Tailscale</a> • Connect self-hosted AI to any device with Tailscale
</td>
</tr>
<tr>
<td>
<a href="https://warp.dev/open-webui" target="_blank">
<img src="https://docs.openwebui.com/sponsors/logos/warp.png" alt="Warp" style="width: 8rem; height: 8rem; border-radius: .75rem;" />
</a>
</td>
<td>
<a href="https://warp.dev/open-webui">Warp</a> • The intelligent terminal for developers
</td>
</tr>
</table>
--- ---
We are incredibly grateful for the generous support of our sponsors. Their contributions help us to maintain and improve our project, ensuring we can continue to deliver quality work to our community. Thank you! We are incredibly grateful for the generous support of our sponsors. Their contributions help us to maintain and improve our project, ensuring we can continue to deliver quality work to our community. Thank you!

View file

@ -576,19 +576,26 @@ OAUTH_ROLES_CLAIM = PersistentConfig(
os.environ.get("OAUTH_ROLES_CLAIM", "roles"), os.environ.get("OAUTH_ROLES_CLAIM", "roles"),
) )
SEP = os.environ.get("OAUTH_ROLES_SEPARATOR", ",")
OAUTH_ALLOWED_ROLES = PersistentConfig( OAUTH_ALLOWED_ROLES = PersistentConfig(
"OAUTH_ALLOWED_ROLES", "OAUTH_ALLOWED_ROLES",
"oauth.allowed_roles", "oauth.allowed_roles",
[ [
role.strip() role.strip()
for role in os.environ.get("OAUTH_ALLOWED_ROLES", "user,admin").split(",") for role in os.environ.get("OAUTH_ALLOWED_ROLES", f"user{SEP}admin").split(SEP)
if role
], ],
) )
OAUTH_ADMIN_ROLES = PersistentConfig( OAUTH_ADMIN_ROLES = PersistentConfig(
"OAUTH_ADMIN_ROLES", "OAUTH_ADMIN_ROLES",
"oauth.admin_roles", "oauth.admin_roles",
[role.strip() for role in os.environ.get("OAUTH_ADMIN_ROLES", "admin").split(",")], [
role.strip()
for role in os.environ.get("OAUTH_ADMIN_ROLES", "admin").split(SEP)
if role
],
) )
OAUTH_ALLOWED_DOMAINS = PersistentConfig( OAUTH_ALLOWED_DOMAINS = PersistentConfig(
@ -3336,6 +3343,10 @@ DEEPGRAM_API_KEY = PersistentConfig(
os.getenv("DEEPGRAM_API_KEY", ""), os.getenv("DEEPGRAM_API_KEY", ""),
) )
# ElevenLabs configuration
ELEVENLABS_API_BASE_URL = os.getenv(
"ELEVENLABS_API_BASE_URL", "https://api.elevenlabs.io"
)
AUDIO_STT_OPENAI_API_BASE_URL = PersistentConfig( AUDIO_STT_OPENAI_API_BASE_URL = PersistentConfig(
"AUDIO_STT_OPENAI_API_BASE_URL", "AUDIO_STT_OPENAI_API_BASE_URL",

View file

@ -482,9 +482,11 @@ from open_webui.utils.auth import (
) )
from open_webui.utils.plugin import install_tool_and_function_dependencies from open_webui.utils.plugin import install_tool_and_function_dependencies
from open_webui.utils.oauth import ( from open_webui.utils.oauth import (
get_oauth_client_info_with_dynamic_client_registration,
encrypt_data,
decrypt_data,
OAuthManager, OAuthManager,
OAuthClientManager, OAuthClientManager,
decrypt_data,
OAuthClientInformationFull, OAuthClientInformationFull,
) )
from open_webui.utils.security_headers import SecurityHeadersMiddleware from open_webui.utils.security_headers import SecurityHeadersMiddleware
@ -1556,11 +1558,15 @@ async def chat_completion(
log.info("Chat processing was cancelled") log.info("Chat processing was cancelled")
try: try:
event_emitter = get_event_emitter(metadata) event_emitter = get_event_emitter(metadata)
await event_emitter( await asyncio.shield(
event_emitter(
{"type": "chat:tasks:cancel"}, {"type": "chat:tasks:cancel"},
) )
)
except Exception as e: except Exception as e:
pass pass
finally:
raise # re-raise to ensure proper task cancellation handling
except Exception as e: except Exception as e:
log.debug(f"Error processing chat payload: {e}") log.debug(f"Error processing chat payload: {e}")
if metadata.get("chat_id") and metadata.get("message_id"): if metadata.get("chat_id") and metadata.get("message_id"):
@ -1591,7 +1597,7 @@ async def chat_completion(
finally: finally:
try: try:
if mcp_clients := metadata.get("mcp_clients"): if mcp_clients := metadata.get("mcp_clients"):
for client in mcp_clients.values(): for client in reversed(mcp_clients.values()):
await client.disconnect() await client.disconnect()
except Exception as e: except Exception as e:
log.debug(f"Error cleaning up: {e}") log.debug(f"Error cleaning up: {e}")
@ -1937,6 +1943,7 @@ if len(app.state.config.TOOL_SERVER_CONNECTIONS) > 0:
if tool_server_connection.get("type", "openapi") == "mcp": if tool_server_connection.get("type", "openapi") == "mcp":
server_id = tool_server_connection.get("info", {}).get("id") server_id = tool_server_connection.get("info", {}).get("id")
auth_type = tool_server_connection.get("auth_type", "none") auth_type = tool_server_connection.get("auth_type", "none")
if server_id and auth_type == "oauth_2.1": if server_id and auth_type == "oauth_2.1":
oauth_client_info = tool_server_connection.get("info", {}).get( oauth_client_info = tool_server_connection.get("info", {}).get(
"oauth_client_info", "" "oauth_client_info", ""
@ -1982,6 +1989,64 @@ except Exception as e:
) )
async def register_client(self, request, client_id: str) -> bool:
server_type, server_id = client_id.split(":", 1)
connection = None
connection_idx = None
for idx, conn in enumerate(request.app.state.config.TOOL_SERVER_CONNECTIONS or []):
if conn.get("type", "openapi") == server_type:
info = conn.get("info", {})
if info.get("id") == server_id:
connection = conn
connection_idx = idx
break
if connection is None or connection_idx is None:
log.warning(
f"Unable to locate MCP tool server configuration for client {client_id} during re-registration"
)
return False
server_url = connection.get("url")
oauth_server_key = (connection.get("config") or {}).get("oauth_server_key")
try:
oauth_client_info = (
await get_oauth_client_info_with_dynamic_client_registration(
request,
client_id,
server_url,
oauth_server_key,
)
)
except Exception as e:
log.error(f"Dynamic client re-registration failed for {client_id}: {e}")
return False
try:
request.app.state.config.TOOL_SERVER_CONNECTIONS[connection_idx] = {
**connection,
"info": {
**connection.get("info", {}),
"oauth_client_info": encrypt_data(
oauth_client_info.model_dump(mode="json")
),
},
}
except Exception as e:
log.error(
f"Failed to persist updated OAuth client info for tool server {client_id}: {e}"
)
return False
oauth_client_manager.remove_client(client_id)
oauth_client_manager.add_client(client_id, oauth_client_info)
log.info(f"Re-registered OAuth client {client_id} for tool server")
return True
@app.get("/oauth/clients/{client_id}/authorize") @app.get("/oauth/clients/{client_id}/authorize")
async def oauth_client_authorize( async def oauth_client_authorize(
client_id: str, client_id: str,
@ -1989,6 +2054,41 @@ async def oauth_client_authorize(
response: Response, response: Response,
user=Depends(get_verified_user), user=Depends(get_verified_user),
): ):
# ensure_valid_client_registration
client = oauth_client_manager.get_client(client_id)
client_info = oauth_client_manager.get_client_info(client_id)
if client is None or client_info is None:
raise HTTPException(status.HTTP_404_NOT_FOUND)
if not await oauth_client_manager._preflight_authorization_url(client, client_info):
log.info(
"Detected invalid OAuth client %s; attempting re-registration",
client_id,
)
registered = await register_client(request, client_id)
if not registered:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail="Failed to re-register OAuth client",
)
client = oauth_client_manager.get_client(client_id)
client_info = oauth_client_manager.get_client_info(client_id)
if client is None or client_info is None:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail="OAuth client unavailable after re-registration",
)
if not await oauth_client_manager._preflight_authorization_url(
client, client_info
):
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail="OAuth client registration is still invalid after re-registration",
)
return await oauth_client_manager.handle_authorize(request, client_id=client_id) return await oauth_client_manager.handle_authorize(request, client_id=client_id)

View file

@ -440,7 +440,10 @@ class ChatTable:
order_by = filter.get("order_by") order_by = filter.get("order_by")
direction = filter.get("direction") direction = filter.get("direction")
if order_by and direction and getattr(Chat, order_by): if order_by and direction:
if not getattr(Chat, order_by, None):
raise ValueError("Invalid order_by field")
if direction.lower() == "asc": if direction.lower() == "asc":
query = query.order_by(getattr(Chat, order_by).asc()) query = query.order_by(getattr(Chat, order_by).asc())
elif direction.lower() == "desc": elif direction.lower() == "desc":

View file

@ -262,5 +262,16 @@ class OAuthSessionTable:
log.error(f"Error deleting OAuth sessions by user ID: {e}") log.error(f"Error deleting OAuth sessions by user ID: {e}")
return False return False
def delete_sessions_by_provider(self, provider: str) -> bool:
"""Delete all OAuth sessions for a provider"""
try:
with get_db() as db:
db.query(OAuthSession).filter_by(provider=provider).delete()
db.commit()
return True
except Exception as e:
log.error(f"Error deleting OAuth sessions by provider {provider}: {e}")
return False
OAuthSessions = OAuthSessionTable() OAuthSessions = OAuthSessionTable()

View file

@ -272,7 +272,6 @@ class Loader:
loader = TikaLoader( loader = TikaLoader(
url=self.kwargs.get("TIKA_SERVER_URL"), url=self.kwargs.get("TIKA_SERVER_URL"),
file_path=file_path, file_path=file_path,
mime_type=file_content_type,
extract_images=self.kwargs.get("PDF_EXTRACT_IMAGES"), extract_images=self.kwargs.get("PDF_EXTRACT_IMAGES"),
) )
elif ( elif (

View file

@ -83,6 +83,7 @@ class YoutubeLoader:
TranscriptsDisabled, TranscriptsDisabled,
YouTubeTranscriptApi, YouTubeTranscriptApi,
) )
from youtube_transcript_api.proxies import GenericProxyConfig
except ImportError: except ImportError:
raise ImportError( raise ImportError(
'Could not import "youtube_transcript_api" Python package. ' 'Could not import "youtube_transcript_api" Python package. '
@ -90,10 +91,9 @@ class YoutubeLoader:
) )
if self.proxy_url: if self.proxy_url:
youtube_proxies = { youtube_proxies = GenericProxyConfig(
"http": self.proxy_url, http_url=self.proxy_url, https_url=self.proxy_url
"https": self.proxy_url, )
}
log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") log.debug(f"Using proxy URL: {self.proxy_url[:14]}...")
else: else:
youtube_proxies = None youtube_proxies = None

View file

@ -71,6 +71,7 @@ def get_loader(request, url: str):
url, url,
verify_ssl=request.app.state.config.ENABLE_WEB_LOADER_SSL_VERIFICATION, verify_ssl=request.app.state.config.ENABLE_WEB_LOADER_SSL_VERIFICATION,
requests_per_second=request.app.state.config.WEB_LOADER_CONCURRENT_REQUESTS, requests_per_second=request.app.state.config.WEB_LOADER_CONCURRENT_REQUESTS,
trust_env=request.app.state.config.WEB_SEARCH_TRUST_ENV,
) )
@ -668,13 +669,18 @@ def get_sources_from_items(
collection_names.append(f"file-{item['id']}") collection_names.append(f"file-{item['id']}")
elif item.get("type") == "collection": elif item.get("type") == "collection":
# Manual Full Mode Toggle for Collection
knowledge_base = Knowledges.get_knowledge_by_id(item.get("id"))
if knowledge_base and (
user.role == "admin"
or knowledge_base.user_id == user.id
or has_access(user.id, "read", knowledge_base.access_control)
):
if ( if (
item.get("context") == "full" item.get("context") == "full"
or request.app.state.config.BYPASS_EMBEDDING_AND_RETRIEVAL or request.app.state.config.BYPASS_EMBEDDING_AND_RETRIEVAL
): ):
# Manual Full Mode Toggle for Collection
knowledge_base = Knowledges.get_knowledge_by_id(item.get("id"))
if knowledge_base and ( if knowledge_base and (
user.role == "admin" user.role == "admin"
or knowledge_base.user_id == user.id or knowledge_base.user_id == user.id

View file

@ -1,11 +1,11 @@
import logging import logging
from typing import Optional, List from typing import Optional, List
from urllib.parse import urljoin
import requests
from open_webui.retrieval.web.main import SearchResult, get_filtered_results from open_webui.retrieval.web.main import SearchResult, get_filtered_results
from open_webui.env import SRC_LOG_LEVELS from open_webui.env import SRC_LOG_LEVELS
from firecrawl import Firecrawl
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"]) log.setLevel(SRC_LOG_LEVELS["RAG"])
@ -18,27 +18,18 @@ def search_firecrawl(
filter_list: Optional[List[str]] = None, filter_list: Optional[List[str]] = None,
) -> List[SearchResult]: ) -> List[SearchResult]:
try: try:
firecrawl_search_url = urljoin(firecrawl_url, "/v1/search") firecrawl = Firecrawl(api_key=firecrawl_api_key, api_url=firecrawl_url)
response = requests.post( response = firecrawl.search(
firecrawl_search_url, query=query, limit=count, ignore_invalid_urls=True, timeout=count * 3
headers={
"User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot",
"Authorization": f"Bearer {firecrawl_api_key}",
},
json={
"query": query,
"limit": count,
},
) )
response.raise_for_status() results = response.web
results = response.json().get("data", [])
if filter_list: if filter_list:
results = get_filtered_results(results, filter_list) results = get_filtered_results(results, filter_list)
results = [ results = [
SearchResult( SearchResult(
link=result.get("url"), link=result.url,
title=result.get("title"), title=result.title,
snippet=result.get("description"), snippet=result.description,
) )
for result in results[:count] for result in results[:count]
] ]

View file

@ -4,7 +4,6 @@ import socket
import ssl import ssl
import urllib.parse import urllib.parse
import urllib.request import urllib.request
from collections import defaultdict
from datetime import datetime, time, timedelta from datetime import datetime, time, timedelta
from typing import ( from typing import (
Any, Any,
@ -17,11 +16,12 @@ from typing import (
Union, Union,
Literal, Literal,
) )
from fastapi.concurrency import run_in_threadpool
import aiohttp import aiohttp
import certifi import certifi
import validators import validators
from langchain_community.document_loaders import PlaywrightURLLoader, WebBaseLoader from langchain_community.document_loaders import PlaywrightURLLoader, WebBaseLoader
from langchain_community.document_loaders.firecrawl import FireCrawlLoader
from langchain_community.document_loaders.base import BaseLoader from langchain_community.document_loaders.base import BaseLoader
from langchain_core.documents import Document from langchain_core.documents import Document
from open_webui.retrieval.loaders.tavily import TavilyLoader from open_webui.retrieval.loaders.tavily import TavilyLoader
@ -39,7 +39,9 @@ from open_webui.config import (
EXTERNAL_WEB_LOADER_URL, EXTERNAL_WEB_LOADER_URL,
EXTERNAL_WEB_LOADER_API_KEY, EXTERNAL_WEB_LOADER_API_KEY,
) )
from open_webui.env import SRC_LOG_LEVELS, AIOHTTP_CLIENT_SESSION_SSL from open_webui.env import SRC_LOG_LEVELS
from firecrawl import Firecrawl
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"]) log.setLevel(SRC_LOG_LEVELS["RAG"])
@ -142,13 +144,13 @@ class RateLimitMixin:
class URLProcessingMixin: class URLProcessingMixin:
def _verify_ssl_cert(self, url: str) -> bool: async def _verify_ssl_cert(self, url: str) -> bool:
"""Verify SSL certificate for a URL.""" """Verify SSL certificate for a URL."""
return verify_ssl_cert(url) return await run_in_threadpool(verify_ssl_cert, url)
async def _safe_process_url(self, url: str) -> bool: async def _safe_process_url(self, url: str) -> bool:
"""Perform safety checks before processing a URL.""" """Perform safety checks before processing a URL."""
if self.verify_ssl and not self._verify_ssl_cert(url): if self.verify_ssl and not await self._verify_ssl_cert(url):
raise ValueError(f"SSL certificate verification failed for {url}") raise ValueError(f"SSL certificate verification failed for {url}")
await self._wait_for_rate_limit() await self._wait_for_rate_limit()
return True return True
@ -189,13 +191,12 @@ class SafeFireCrawlLoader(BaseLoader, RateLimitMixin, URLProcessingMixin):
(uses FIRE_CRAWL_API_KEY environment variable if not provided). (uses FIRE_CRAWL_API_KEY environment variable if not provided).
api_url: Base URL for FireCrawl API. Defaults to official API endpoint. api_url: Base URL for FireCrawl API. Defaults to official API endpoint.
mode: Operation mode selection: mode: Operation mode selection:
- 'crawl': Website crawling mode (default) - 'crawl': Website crawling mode
- 'scrape': Direct page scraping - 'scrape': Direct page scraping (default)
- 'map': Site map generation - 'map': Site map generation
proxy: Proxy override settings for the FireCrawl API. proxy: Proxy override settings for the FireCrawl API.
params: The parameters to pass to the Firecrawl API. params: The parameters to pass to the Firecrawl API.
Examples include crawlerOptions. For more details, visit: https://docs.firecrawl.dev/sdks/python#batch-scrape
For more details, visit: https://github.com/mendableai/firecrawl-py
""" """
proxy_server = proxy.get("server") if proxy else None proxy_server = proxy.get("server") if proxy else None
if trust_env and not proxy_server: if trust_env and not proxy_server:
@ -215,50 +216,84 @@ class SafeFireCrawlLoader(BaseLoader, RateLimitMixin, URLProcessingMixin):
self.api_key = api_key self.api_key = api_key
self.api_url = api_url self.api_url = api_url
self.mode = mode self.mode = mode
self.params = params self.params = params or {}
def lazy_load(self) -> Iterator[Document]: def lazy_load(self) -> Iterator[Document]:
"""Load documents concurrently using FireCrawl.""" """Load documents using FireCrawl batch_scrape."""
for url in self.web_paths: log.debug(
try: "Starting FireCrawl batch scrape for %d URLs, mode: %s, params: %s",
self._safe_process_url_sync(url) len(self.web_paths),
loader = FireCrawlLoader( self.mode,
url=url, self.params,
api_key=self.api_key,
api_url=self.api_url,
mode=self.mode,
params=self.params,
) )
for document in loader.lazy_load(): try:
if not document.metadata.get("source"): firecrawl = Firecrawl(api_key=self.api_key, api_url=self.api_url)
document.metadata["source"] = document.metadata.get("sourceURL") result = firecrawl.batch_scrape(
yield document self.web_paths,
formats=["markdown"],
skip_tls_verification=not self.verify_ssl,
ignore_invalid_urls=True,
remove_base64_images=True,
max_age=300000, # 5 minutes https://docs.firecrawl.dev/features/fast-scraping#common-maxage-values
wait_timeout=len(self.web_paths) * 3,
**self.params,
)
if result.status != "completed":
raise RuntimeError(
f"FireCrawl batch scrape did not complete successfully. result: {result}"
)
for data in result.data:
metadata = data.metadata or {}
yield Document(
page_content=data.markdown or "",
metadata={"source": metadata.url or metadata.source_url or ""},
)
except Exception as e: except Exception as e:
if self.continue_on_failure: if self.continue_on_failure:
log.exception(f"Error loading {url}: {e}") log.exception(f"Error extracting content from URLs: {e}")
continue else:
raise e raise e
async def alazy_load(self): async def alazy_load(self):
"""Async version of lazy_load.""" """Async version of lazy_load."""
for url in self.web_paths: log.debug(
try: "Starting FireCrawl batch scrape for %d URLs, mode: %s, params: %s",
await self._safe_process_url(url) len(self.web_paths),
loader = FireCrawlLoader( self.mode,
url=url, self.params,
api_key=self.api_key,
api_url=self.api_url,
mode=self.mode,
params=self.params,
) )
async for document in loader.alazy_load(): try:
if not document.metadata.get("source"): firecrawl = Firecrawl(api_key=self.api_key, api_url=self.api_url)
document.metadata["source"] = document.metadata.get("sourceURL") result = firecrawl.batch_scrape(
yield document self.web_paths,
formats=["markdown"],
skip_tls_verification=not self.verify_ssl,
ignore_invalid_urls=True,
remove_base64_images=True,
max_age=300000, # 5 minutes https://docs.firecrawl.dev/features/fast-scraping#common-maxage-values
wait_timeout=len(self.web_paths) * 3,
**self.params,
)
if result.status != "completed":
raise RuntimeError(
f"FireCrawl batch scrape did not complete successfully. result: {result}"
)
for data in result.data:
metadata = data.metadata or {}
yield Document(
page_content=data.markdown or "",
metadata={"source": metadata.url or metadata.source_url or ""},
)
except Exception as e: except Exception as e:
if self.continue_on_failure: if self.continue_on_failure:
log.exception(f"Error loading {url}: {e}") log.exception(f"Error extracting content from URLs: {e}")
continue else:
raise e raise e

View file

@ -39,13 +39,14 @@ from open_webui.config import (
WHISPER_MODEL_DIR, WHISPER_MODEL_DIR,
CACHE_DIR, CACHE_DIR,
WHISPER_LANGUAGE, WHISPER_LANGUAGE,
ELEVENLABS_API_BASE_URL,
) )
from open_webui.constants import ERROR_MESSAGES from open_webui.constants import ERROR_MESSAGES
from open_webui.env import ( from open_webui.env import (
ENV,
AIOHTTP_CLIENT_SESSION_SSL, AIOHTTP_CLIENT_SESSION_SSL,
AIOHTTP_CLIENT_TIMEOUT, AIOHTTP_CLIENT_TIMEOUT,
ENV,
SRC_LOG_LEVELS, SRC_LOG_LEVELS,
DEVICE_TYPE, DEVICE_TYPE,
ENABLE_FORWARD_USER_INFO_HEADERS, ENABLE_FORWARD_USER_INFO_HEADERS,
@ -413,7 +414,7 @@ async def speech(request: Request, user=Depends(get_verified_user)):
timeout=timeout, trust_env=True timeout=timeout, trust_env=True
) as session: ) as session:
async with session.post( async with session.post(
f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}", f"{ELEVENLABS_API_BASE_URL}/v1/text-to-speech/{voice_id}",
json={ json={
"text": payload["input"], "text": payload["input"],
"model_id": request.app.state.config.TTS_MODEL, "model_id": request.app.state.config.TTS_MODEL,
@ -1037,7 +1038,7 @@ def get_available_models(request: Request) -> list[dict]:
elif request.app.state.config.TTS_ENGINE == "elevenlabs": elif request.app.state.config.TTS_ENGINE == "elevenlabs":
try: try:
response = requests.get( response = requests.get(
"https://api.elevenlabs.io/v1/models", f"{ELEVENLABS_API_BASE_URL}/v1/models",
headers={ headers={
"xi-api-key": request.app.state.config.TTS_API_KEY, "xi-api-key": request.app.state.config.TTS_API_KEY,
"Content-Type": "application/json", "Content-Type": "application/json",
@ -1141,7 +1142,7 @@ def get_elevenlabs_voices(api_key: str) -> dict:
try: try:
# TODO: Add retries # TODO: Add retries
response = requests.get( response = requests.get(
"https://api.elevenlabs.io/v1/voices", f"{ELEVENLABS_API_BASE_URL}/v1/voices",
headers={ headers={
"xi-api-key": api_key, "xi-api-key": api_key,
"Content-Type": "application/json", "Content-Type": "application/json",

View file

@ -508,6 +508,15 @@ async def signin(request: Request, response: Response, form_data: SigninForm):
user = Auths.authenticate_user(admin_email.lower(), admin_password) user = Auths.authenticate_user(admin_email.lower(), admin_password)
else: else:
password_bytes = form_data.password.encode("utf-8")
if len(password_bytes) > 72:
# TODO: Implement other hashing algorithms that support longer passwords
log.info("Password too long, truncating to 72 bytes for bcrypt")
password_bytes = password_bytes[:72]
# decode safely — ignore incomplete UTF-8 sequences
form_data.password = password_bytes.decode("utf-8", errors="ignore")
user = Auths.authenticate_user(form_data.email.lower(), form_data.password) user = Auths.authenticate_user(form_data.email.lower(), form_data.password)
if user: if user:

View file

@ -1,4 +1,5 @@
import logging import logging
import copy
from fastapi import APIRouter, Depends, Request, HTTPException from fastapi import APIRouter, Depends, Request, HTTPException
from pydantic import BaseModel, ConfigDict from pydantic import BaseModel, ConfigDict
import aiohttp import aiohttp
@ -15,6 +16,7 @@ from open_webui.utils.tools import (
set_tool_servers, set_tool_servers,
) )
from open_webui.utils.mcp.client import MCPClient from open_webui.utils.mcp.client import MCPClient
from open_webui.models.oauth_sessions import OAuthSessions
from open_webui.env import SRC_LOG_LEVELS from open_webui.env import SRC_LOG_LEVELS
@ -165,6 +167,21 @@ async def set_tool_servers_config(
form_data: ToolServersConfigForm, form_data: ToolServersConfigForm,
user=Depends(get_admin_user), user=Depends(get_admin_user),
): ):
for connection in request.app.state.config.TOOL_SERVER_CONNECTIONS:
server_type = connection.get("type", "openapi")
auth_type = connection.get("auth_type", "none")
if auth_type == "oauth_2.1":
# Remove existing OAuth clients for tool servers
server_id = connection.get("info", {}).get("id")
client_key = f"{server_type}:{server_id}"
try:
request.app.state.oauth_client_manager.remove_client(client_key)
except:
pass
# Set new tool server connections
request.app.state.config.TOOL_SERVER_CONNECTIONS = [ request.app.state.config.TOOL_SERVER_CONNECTIONS = [
connection.model_dump() for connection in form_data.TOOL_SERVER_CONNECTIONS connection.model_dump() for connection in form_data.TOOL_SERVER_CONNECTIONS
] ]
@ -176,6 +193,7 @@ async def set_tool_servers_config(
if server_type == "mcp": if server_type == "mcp":
server_id = connection.get("info", {}).get("id") server_id = connection.get("info", {}).get("id")
auth_type = connection.get("auth_type", "none") auth_type = connection.get("auth_type", "none")
if auth_type == "oauth_2.1" and server_id: if auth_type == "oauth_2.1" and server_id:
try: try:
oauth_client_info = connection.get("info", {}).get( oauth_client_info = connection.get("info", {}).get(

View file

@ -115,6 +115,10 @@ def process_uploaded_file(request, file, file_path, file_item, file_metadata, us
request.app.state.config.CONTENT_EXTRACTION_ENGINE == "external" request.app.state.config.CONTENT_EXTRACTION_ENGINE == "external"
): ):
process_file(request, ProcessFileForm(file_id=file_item.id), user=user) process_file(request, ProcessFileForm(file_id=file_item.id), user=user)
else:
raise Exception(
f"File type {file.content_type} is not supported for processing"
)
else: else:
log.info( log.info(
f"File type {file.content_type} is not provided, but trying to process anyway" f"File type {file.content_type} is not provided, but trying to process anyway"

View file

@ -501,30 +501,9 @@ async def get_all_models(request: Request, user: UserModel) -> dict[str, list]:
return response return response
return None return None
def merge_models_lists(model_lists): def is_supported_openai_models(model_id):
log.debug(f"merge_models_lists {model_lists}") if any(
merged_list = [] name in model_id
for idx, models in enumerate(model_lists):
if models is not None and "error" not in models:
merged_list.extend(
[
{
**model,
"name": model.get("name", model["id"]),
"owned_by": "openai",
"openai": model,
"connection_type": model.get("connection_type", "external"),
"urlIdx": idx,
}
for model in models
if (model.get("id") or model.get("name"))
and (
"api.openai.com"
not in request.app.state.config.OPENAI_API_BASE_URLS[idx]
or not any(
name in model["id"]
for name in [ for name in [
"babbage", "babbage",
"dall-e", "dall-e",
@ -533,18 +512,44 @@ async def get_all_models(request: Request, user: UserModel) -> dict[str, list]:
"tts", "tts",
"whisper", "whisper",
] ]
) ):
) return False
] return True
)
return merged_list def get_merged_models(model_lists):
log.debug(f"merge_models_lists {model_lists}")
models = {}
models = {"data": merge_models_lists(map(extract_data, responses))} for idx, model_list in enumerate(model_lists):
if model_list is not None and "error" not in model_list:
for model in model_list:
model_id = model.get("id") or model.get("name")
if (
"api.openai.com"
in request.app.state.config.OPENAI_API_BASE_URLS[idx]
and not is_supported_openai_models(model_id)
):
# Skip unwanted OpenAI models
continue
if model_id and model_id not in models:
models[model_id] = {
**model,
"name": model.get("name", model_id),
"owned_by": "openai",
"openai": model,
"connection_type": model.get("connection_type", "external"),
"urlIdx": idx,
}
return models
models = get_merged_models(map(extract_data, responses))
log.debug(f"models: {models}") log.debug(f"models: {models}")
request.app.state.OPENAI_MODELS = {model["id"]: model for model in models["data"]} request.app.state.OPENAI_MODELS = map(extract_data, responses)
return models return {"data": list(models.values())}
@router.get("/models") @router.get("/models")

View file

@ -18,6 +18,10 @@ from open_webui.utils.redis import (
get_sentinel_url_from_env, get_sentinel_url_from_env,
) )
from open_webui.config import (
CORS_ALLOW_ORIGIN,
)
from open_webui.env import ( from open_webui.env import (
ENABLE_WEBSOCKET_SUPPORT, ENABLE_WEBSOCKET_SUPPORT,
WEBSOCKET_MANAGER, WEBSOCKET_MANAGER,
@ -58,7 +62,7 @@ if WEBSOCKET_MANAGER == "redis":
else: else:
mgr = socketio.AsyncRedisManager(WEBSOCKET_REDIS_URL) mgr = socketio.AsyncRedisManager(WEBSOCKET_REDIS_URL)
sio = socketio.AsyncServer( sio = socketio.AsyncServer(
cors_allowed_origins=[], cors_allowed_origins=CORS_ALLOW_ORIGIN,
async_mode="asgi", async_mode="asgi",
transports=(["websocket"] if ENABLE_WEBSOCKET_SUPPORT else ["polling"]), transports=(["websocket"] if ENABLE_WEBSOCKET_SUPPORT else ["polling"]),
allow_upgrades=ENABLE_WEBSOCKET_SUPPORT, allow_upgrades=ENABLE_WEBSOCKET_SUPPORT,
@ -67,7 +71,7 @@ if WEBSOCKET_MANAGER == "redis":
) )
else: else:
sio = socketio.AsyncServer( sio = socketio.AsyncServer(
cors_allowed_origins=[], cors_allowed_origins=CORS_ALLOW_ORIGIN,
async_mode="asgi", async_mode="asgi",
transports=(["websocket"] if ENABLE_WEBSOCKET_SUPPORT else ["polling"]), transports=(["websocket"] if ENABLE_WEBSOCKET_SUPPORT else ["polling"]),
allow_upgrades=ENABLE_WEBSOCKET_SUPPORT, allow_upgrades=ENABLE_WEBSOCKET_SUPPORT,

View file

@ -2,6 +2,8 @@ import asyncio
from typing import Optional from typing import Optional
from contextlib import AsyncExitStack from contextlib import AsyncExitStack
import anyio
from mcp import ClientSession from mcp import ClientSession
from mcp.client.auth import OAuthClientProvider, TokenStorage from mcp.client.auth import OAuthClientProvider, TokenStorage
from mcp.client.streamable_http import streamablehttp_client from mcp.client.streamable_http import streamablehttp_client
@ -11,25 +13,28 @@ from mcp.shared.auth import OAuthClientInformationFull, OAuthClientMetadata, OAu
class MCPClient: class MCPClient:
def __init__(self): def __init__(self):
self.session: Optional[ClientSession] = None self.session: Optional[ClientSession] = None
self.exit_stack = AsyncExitStack() self.exit_stack = None
async def connect(self, url: str, headers: Optional[dict] = None): async def connect(self, url: str, headers: Optional[dict] = None):
async with AsyncExitStack() as exit_stack:
try: try:
self._streams_context = streamablehttp_client(url, headers=headers) self._streams_context = streamablehttp_client(url, headers=headers)
transport = await self.exit_stack.enter_async_context(self._streams_context) transport = await exit_stack.enter_async_context(self._streams_context)
read_stream, write_stream, _ = transport read_stream, write_stream, _ = transport
self._session_context = ClientSession( self._session_context = ClientSession(
read_stream, write_stream read_stream, write_stream
) # pylint: disable=W0201 ) # pylint: disable=W0201
self.session = await self.exit_stack.enter_async_context( self.session = await exit_stack.enter_async_context(
self._session_context self._session_context
) )
with anyio.fail_after(10):
await self.session.initialize() await self.session.initialize()
self.exit_stack = exit_stack.pop_all()
except Exception as e: except Exception as e:
await self.disconnect() await asyncio.shield(self.disconnect())
raise e raise e
async def list_tool_specs(self) -> Optional[dict]: async def list_tool_specs(self) -> Optional[dict]:

View file

@ -1545,7 +1545,6 @@ async def process_chat_response(
): # Only update titles and tags for non-temp chats ): # Only update titles and tags for non-temp chats
if ( if (
TASKS.TITLE_GENERATION in tasks TASKS.TITLE_GENERATION in tasks
and tasks[TASKS.TITLE_GENERATION]
): ):
user_message = get_last_user_message(messages) user_message = get_last_user_message(messages)
if user_message and len(user_message) > 100: if user_message and len(user_message) > 100:
@ -2349,7 +2348,9 @@ async def process_chat_response(
) )
if data: if data:
if "event" in data: if "event" in data and not getattr(
request.state, "direct", False
):
await event_emitter(data.get("event", {})) await event_emitter(data.get("event", {}))
if "selected_model_id" in data: if "selected_model_id" in data:

View file

@ -166,7 +166,8 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
action_ids = [] action_ids = []
filter_ids = [] filter_ids = []
if "info" in model and "meta" in model["info"]: if "info" in model:
if "meta" in model["info"]:
action_ids.extend( action_ids.extend(
model["info"]["meta"].get("actionIds", []) model["info"]["meta"].get("actionIds", [])
) )
@ -174,6 +175,10 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
model["info"]["meta"].get("filterIds", []) model["info"]["meta"].get("filterIds", [])
) )
if "params" in model["info"]:
# Remove params to avoid exposing sensitive info
del model["info"]["params"]
model["action_ids"] = action_ids model["action_ids"] = action_ids
model["filter_ids"] = filter_ids model["filter_ids"] = filter_ids
else: else:
@ -182,22 +187,40 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
elif custom_model.is_active and ( elif custom_model.is_active and (
custom_model.id not in [model["id"] for model in models] custom_model.id not in [model["id"] for model in models]
): ):
# Custom model based on a base model
owned_by = "openai" owned_by = "openai"
pipe = None pipe = None
for m in models:
if (
custom_model.base_model_id == m["id"]
or custom_model.base_model_id == m["id"].split(":")[0]
):
owned_by = m.get("owned_by", "unknown")
if "pipe" in m:
pipe = m["pipe"]
break
model = {
"id": f"{custom_model.id}",
"name": custom_model.name,
"object": "model",
"created": custom_model.created_at,
"owned_by": owned_by,
"preset": True,
**({"pipe": pipe} if pipe is not None else {}),
}
info = custom_model.model_dump()
if "params" in info:
# Remove params to avoid exposing sensitive info
del info["params"]
model["info"] = info
action_ids = [] action_ids = []
filter_ids = [] filter_ids = []
for model in models:
if (
custom_model.base_model_id == model["id"]
or custom_model.base_model_id == model["id"].split(":")[0]
):
owned_by = model.get("owned_by", "unknown owner")
if "pipe" in model:
pipe = model["pipe"]
break
if custom_model.meta: if custom_model.meta:
meta = custom_model.meta.model_dump() meta = custom_model.meta.model_dump()
@ -207,20 +230,10 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
if "filterIds" in meta: if "filterIds" in meta:
filter_ids.extend(meta["filterIds"]) filter_ids.extend(meta["filterIds"])
models.append( model["action_ids"] = action_ids
{ model["filter_ids"] = filter_ids
"id": f"{custom_model.id}",
"name": custom_model.name, models.append(model)
"object": "model",
"created": custom_model.created_at,
"owned_by": owned_by,
"info": custom_model.model_dump(),
"preset": True,
**({"pipe": pipe} if pipe is not None else {}),
"action_ids": action_ids,
"filter_ids": filter_ids,
}
)
# Process action_ids to get the actions # Process action_ids to get the actions
def get_action_items_from_module(function, module): def get_action_items_from_module(function, module):

View file

@ -1,4 +1,5 @@
import base64 import base64
import copy
import hashlib import hashlib
import logging import logging
import mimetypes import mimetypes
@ -74,6 +75,8 @@ from mcp.shared.auth import (
OAuthMetadata, OAuthMetadata,
) )
from authlib.oauth2.rfc6749.errors import OAuth2Error
class OAuthClientInformationFull(OAuthClientMetadata): class OAuthClientInformationFull(OAuthClientMetadata):
issuer: Optional[str] = None # URL of the OAuth server that issued this client issuer: Optional[str] = None # URL of the OAuth server that issued this client
@ -150,6 +153,37 @@ def decrypt_data(data: str):
raise raise
def _build_oauth_callback_error_message(e: Exception) -> str:
"""
Produce a user-facing callback error string with actionable context.
Keeps the message short and strips newlines for safe redirect usage.
"""
if isinstance(e, OAuth2Error):
parts = [p for p in [e.error, e.description] if p]
detail = " - ".join(parts)
elif isinstance(e, HTTPException):
detail = e.detail if isinstance(e.detail, str) else str(e.detail)
elif isinstance(e, aiohttp.ClientResponseError):
detail = f"Upstream provider returned {e.status}: {e.message}"
elif isinstance(e, aiohttp.ClientError):
detail = str(e)
elif isinstance(e, KeyError):
missing = str(e).strip("'")
if missing.lower() == "state":
detail = "Missing state parameter in callback (session may have expired)"
else:
detail = f"Missing expected key '{missing}' in OAuth response"
else:
detail = str(e)
detail = detail.replace("\n", " ").strip()
if not detail:
detail = e.__class__.__name__
message = f"OAuth callback failed: {detail}"
return message[:197] + "..." if len(message) > 200 else message
def is_in_blocked_groups(group_name: str, groups: list) -> bool: def is_in_blocked_groups(group_name: str, groups: list) -> bool:
""" """
Check if a group name matches any blocked pattern. Check if a group name matches any blocked pattern.
@ -371,6 +405,82 @@ class OAuthClientManager:
if client_id in self.clients: if client_id in self.clients:
del self.clients[client_id] del self.clients[client_id]
log.info(f"Removed OAuth client {client_id}") log.info(f"Removed OAuth client {client_id}")
if hasattr(self.oauth, "_clients"):
if client_id in self.oauth._clients:
self.oauth._clients.pop(client_id, None)
if hasattr(self.oauth, "_registry"):
if client_id in self.oauth._registry:
self.oauth._registry.pop(client_id, None)
return True
async def _preflight_authorization_url(
self, client, client_info: OAuthClientInformationFull
) -> bool:
# TODO: Replace this logic with a more robust OAuth client registration validation
# Only perform preflight checks for Starlette OAuth clients
if not hasattr(client, "create_authorization_url"):
return True
redirect_uri = None
if client_info.redirect_uris:
redirect_uri = str(client_info.redirect_uris[0])
try:
auth_data = await client.create_authorization_url(redirect_uri=redirect_uri)
authorization_url = auth_data.get("url")
if not authorization_url:
return True
except Exception as e:
log.debug(
f"Skipping OAuth preflight for client {client_info.client_id}: {e}",
)
return True
try:
async with aiohttp.ClientSession(trust_env=True) as session:
async with session.get(
authorization_url,
allow_redirects=False,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
) as resp:
if resp.status < 400:
return True
response_text = await resp.text()
error = None
error_description = ""
content_type = resp.headers.get("content-type", "")
if "application/json" in content_type:
try:
payload = json.loads(response_text)
error = payload.get("error")
error_description = payload.get("error_description", "")
except:
pass
else:
error_description = response_text
error_message = f"{error or ''} {error_description or ''}".lower()
if any(
keyword in error_message
for keyword in ("invalid_client", "invalid client", "client id")
):
log.warning(
f"OAuth client preflight detected invalid registration for {client_info.client_id}: {error} {error_description}"
)
return False
except Exception as e:
log.debug(
f"Skipping OAuth preflight network check for client {client_info.client_id}: {e}"
)
return True return True
def get_client(self, client_id): def get_client(self, client_id):
@ -561,7 +671,6 @@ class OAuthClientManager:
client = self.get_client(client_id) client = self.get_client(client_id)
if client is None: if client is None:
raise HTTPException(404) raise HTTPException(404)
client_info = self.get_client_info(client_id) client_info = self.get_client_info(client_id)
if client_info is None: if client_info is None:
raise HTTPException(404) raise HTTPException(404)
@ -569,7 +678,8 @@ class OAuthClientManager:
redirect_uri = ( redirect_uri = (
client_info.redirect_uris[0] if client_info.redirect_uris else None client_info.redirect_uris[0] if client_info.redirect_uris else None
) )
return await client.authorize_redirect(request, str(redirect_uri)) redirect_uri_str = str(redirect_uri) if redirect_uri else None
return await client.authorize_redirect(request, redirect_uri_str)
async def handle_callback(self, request, client_id: str, user_id: str, response): async def handle_callback(self, request, client_id: str, user_id: str, response):
client = self.get_client(client_id) client = self.get_client(client_id)
@ -621,8 +731,14 @@ class OAuthClientManager:
error_message = "Failed to obtain OAuth token" error_message = "Failed to obtain OAuth token"
log.warning(error_message) log.warning(error_message)
except Exception as e: except Exception as e:
error_message = "OAuth callback error" error_message = _build_oauth_callback_error_message(e)
log.warning(f"OAuth callback error: {e}") log.warning(
"OAuth callback error for user_id=%s client_id=%s: %s",
user_id,
client_id,
error_message,
exc_info=True,
)
redirect_url = ( redirect_url = (
str(request.app.state.config.WEBUI_URL or request.base_url) str(request.app.state.config.WEBUI_URL or request.base_url)
@ -630,7 +746,9 @@ class OAuthClientManager:
if error_message: if error_message:
log.debug(error_message) log.debug(error_message)
redirect_url = f"{redirect_url}/?error={error_message}" redirect_url = (
f"{redirect_url}/?error={urllib.parse.quote_plus(error_message)}"
)
return RedirectResponse(url=redirect_url, headers=response.headers) return RedirectResponse(url=redirect_url, headers=response.headers)
response = RedirectResponse(url=redirect_url, headers=response.headers) response = RedirectResponse(url=redirect_url, headers=response.headers)
@ -1104,7 +1222,13 @@ class OAuthManager:
try: try:
token = await client.authorize_access_token(request) token = await client.authorize_access_token(request)
except Exception as e: except Exception as e:
log.warning(f"OAuth callback error: {e}") detailed_error = _build_oauth_callback_error_message(e)
log.warning(
"OAuth callback error during authorize_access_token for provider %s: %s",
provider,
detailed_error,
exc_info=True,
)
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED) raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
# Try to get userinfo from the token first, some providers include it there # Try to get userinfo from the token first, some providers include it there

View file

@ -297,6 +297,10 @@ def convert_payload_openai_to_ollama(openai_payload: dict) -> dict:
if "tools" in openai_payload: if "tools" in openai_payload:
ollama_payload["tools"] = openai_payload["tools"] ollama_payload["tools"] = openai_payload["tools"]
if "max_tokens" in openai_payload:
ollama_payload["num_predict"] = openai_payload["max_tokens"]
del openai_payload["max_tokens"]
# If there are advanced parameters in the payload, format them in Ollama's options field # If there are advanced parameters in the payload, format them in Ollama's options field
if openai_payload.get("options"): if openai_payload.get("options"):
ollama_payload["options"] = openai_payload["options"] ollama_payload["options"] = openai_payload["options"]

View file

@ -5,7 +5,7 @@ python-multipart==0.0.20
itsdangerous==2.2.0 itsdangerous==2.2.0
python-socketio==5.13.0 python-socketio==5.13.0
python-jose==3.4.0 python-jose==3.5.0
cryptography cryptography
bcrypt==5.0.0 bcrypt==5.0.0
argon2-cffi==25.1.0 argon2-cffi==25.1.0
@ -63,7 +63,7 @@ fpdf2==2.8.2
pymdown-extensions==10.14.2 pymdown-extensions==10.14.2
docx2txt==0.8 docx2txt==0.8
python-pptx==1.0.2 python-pptx==1.0.2
unstructured==0.16.17 unstructured==0.18.15
nltk==3.9.1 nltk==3.9.1
Markdown==3.9 Markdown==3.9
pypandoc==1.15 pypandoc==1.15
@ -133,7 +133,7 @@ pytest-docker~=3.1.1
ldap3==2.9.1 ldap3==2.9.1
## Firecrawl ## Firecrawl
firecrawl-py==1.12.0 firecrawl-py==4.5.0
## Trace ## Trace
opentelemetry-api==1.37.0 opentelemetry-api==1.37.0

View file

@ -11,8 +11,6 @@ services:
open-webui: open-webui:
build: build:
context: . context: .
args:
OLLAMA_BASE_URL: '/ollama'
dockerfile: Dockerfile dockerfile: Dockerfile
image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main} image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
container_name: open-webui container_name: open-webui

View file

@ -24,6 +24,10 @@ Noticed something off? Have an idea? Check our [Issues tab](https://github.com/o
> - **Template Compliance:** Please be aware that failure to follow the provided issue template, or not providing the requested information at all, will likely result in your issue being closed without further consideration. This approach is critical for maintaining the manageability and integrity of issue tracking. > - **Template Compliance:** Please be aware that failure to follow the provided issue template, or not providing the requested information at all, will likely result in your issue being closed without further consideration. This approach is critical for maintaining the manageability and integrity of issue tracking.
> - **Detail is Key:** To ensure your issue is understood and can be effectively addressed, it's imperative to include comprehensive details. Descriptions should be clear, including steps to reproduce, expected outcomes, and actual results. Lack of sufficient detail may hinder our ability to resolve your issue. > - **Detail is Key:** To ensure your issue is understood and can be effectively addressed, it's imperative to include comprehensive details. Descriptions should be clear, including steps to reproduce, expected outcomes, and actual results. Lack of sufficient detail may hinder our ability to resolve your issue.
> [!WARNING]
> Reporting vulnerabilities is not wanted through Issues!
> Instead, [use the security reporting functionality](https://github.com/open-webui/open-webui/security) and ensure you comply with the outlined requirements.
### 🧭 Scope of Support ### 🧭 Scope of Support
We've noticed an uptick in issues not directly related to Open WebUI but rather to the environment it's run in, especially Docker setups. While we strive to support Docker deployment, understanding Docker fundamentals is crucial for a smooth experience. We've noticed an uptick in issues not directly related to Open WebUI but rather to the environment it's run in, especially Docker setups. While we strive to support Docker deployment, understanding Docker fundamentals is crucial for a smooth experience.
@ -32,6 +36,8 @@ We've noticed an uptick in issues not directly related to Open WebUI but rather
- **Advanced Configurations**: Setting up reverse proxies for HTTPS and managing Docker deployments requires foundational knowledge. There are numerous online resources available to learn these skills. Ensuring you have this knowledge will greatly enhance your experience with Open WebUI and similar projects. - **Advanced Configurations**: Setting up reverse proxies for HTTPS and managing Docker deployments requires foundational knowledge. There are numerous online resources available to learn these skills. Ensuring you have this knowledge will greatly enhance your experience with Open WebUI and similar projects.
- **Check the documentation and help improve it**: [Our documentation](https://docs.openwebui.com) has ever growing troubleshooting guides and detailed installation tutorials. Please verify if it is of help to your issue and help expand it by submitting issues and PRs on our [Docs Repository](https://github.com/open-webui/docs).
## 💡 Contributing ## 💡 Contributing
Looking to contribute? Great! Here's how you can help: Looking to contribute? Great! Here's how you can help:
@ -46,9 +52,15 @@ We welcome pull requests. Before submitting one, please:
4. Write clear, descriptive commit messages. 4. Write clear, descriptive commit messages.
5. It's essential to complete your pull request in a timely manner. We move fast, and having PRs hang around too long is not feasible. If you can't get it done within a reasonable time frame, we may have to close it to keep the project moving forward. 5. It's essential to complete your pull request in a timely manner. We move fast, and having PRs hang around too long is not feasible. If you can't get it done within a reasonable time frame, we may have to close it to keep the project moving forward.
> [!NOTE]
> The Pull Request Template has various requirements outlined. Go through the PR-checklist one by one and ensure you completed all steps before submitting your PR for review (you can open it as draft otherwise!).
### 📚 Documentation & Tutorials ### 📚 Documentation & Tutorials
Help us make Open WebUI more accessible by improving documentation, writing tutorials, or creating guides on setting up and optimizing the web UI. Help us make Open WebUI more accessible by improving the documentation, writing tutorials, or creating guides on setting up and optimizing the Web UI.
Help expand our documentation by submitting issues and PRs on our [Docs Repository](https://github.com/open-webui/docs).
We welcome tutorials, guides and other documentation improvements!
### 🌐 Translations and Internationalization ### 🌐 Translations and Internationalization
@ -62,9 +74,12 @@ To add a new language:
- Copy the American English translation file(s) (from `en-US` directory in `src/lib/i18n/locale`) to this new directory and update the string values in JSON format according to your language. Make sure to preserve the structure of the JSON object. - Copy the American English translation file(s) (from `en-US` directory in `src/lib/i18n/locale`) to this new directory and update the string values in JSON format according to your language. Make sure to preserve the structure of the JSON object.
- Add the language code and its respective title to languages file at `src/lib/i18n/locales/languages.json`. - Add the language code and its respective title to languages file at `src/lib/i18n/locales/languages.json`.
> [!NOTE]
> When adding new translations, do so in a standalone PR! Feature PRs or PRs fixing a bug should not contain translation updates. Always keep the scope of a PR narrow.
### 🤔 Questions & Feedback ### 🤔 Questions & Feedback
Got questions or feedback? Join our [Discord community](https://discord.gg/5rJgQTnV4s) or open an issue. We're here to help! Got questions or feedback? Join our [Discord community](https://discord.gg/5rJgQTnV4s) or open an issue or discussion. We're here to help!
## 🙏 Thank You! ## 🙏 Thank You!

View file

@ -44,8 +44,9 @@ We appreciate the community's interest in identifying potential vulnerabilities.
> - Screenshots/videos demonstrating the exploit (supplementary to written steps) > - Screenshots/videos demonstrating the exploit (supplementary to written steps)
> >
> **Failure to provide a reproducible PoC may lead to closure of the report** > **Failure to provide a reproducible PoC may lead to closure of the report**
> We will notify you, if we struggle to reproduce the exploit using your PoC to allow you to improve your PoC >
> However, if we repeatedly cannot reproduce the exploit using the PoC, the report may be closed > We will notify you, if we struggle to reproduce the exploit using your PoC to allow you to improve your PoC.
> However, if we repeatedly cannot reproduce the exploit using the PoC, the report may be closed.
5. **Required Patch or Actionable Remediation Plan Submission**: Along with the PoC, reporters must provide a patch or some actionable steps to remediate the identified vulnerability. This helps us evaluate and implement fixes rapidly. 5. **Required Patch or Actionable Remediation Plan Submission**: Along with the PoC, reporters must provide a patch or some actionable steps to remediate the identified vulnerability. This helps us evaluate and implement fixes rapidly.
@ -88,11 +89,21 @@ We appreciate the community's interest in identifying potential vulnerabilities.
**Non-compliant submissions will be closed, and repeat extreme violators may be banned.** Our goal is to foster a constructive reporting environment where quality submissions promote better security for all users. **Non-compliant submissions will be closed, and repeat extreme violators may be banned.** Our goal is to foster a constructive reporting environment where quality submissions promote better security for all users.
## Where to report the vulnerability
If you want to report a vulnerability and can meet the outlined requirements, [open a vulnerability report here](https://github.com/open-webui/open-webui/security/advisories/new). If you want to report a vulnerability and can meet the outlined requirements, [open a vulnerability report here](https://github.com/open-webui/open-webui/security/advisories/new).
If you feel like you are not able to follow ALL outlined requirements for vulnerability-specific reasons, still do report it, we will check every report either way.
## Product Security And For Non-Vulnerability Security Concerns: ## Product Security And For Non-Vulnerability Security Concerns:
If your concern does not meet the vulnerability requirements outlined above, such as: If your concern does not meet the vulnerability requirements outlined above, is not a vulnerability, **but is still related to security concerns**, then use the following channels instead:
- **Documentation issues/improvement ideas:** Open an issue on our [Documentation Repository](https://github.com/open-webui/docs)
- **Feature requests:** Create a discussion in [GitHub Discussions - Ideas](https://github.com/open-webui/open-webui/discussions/) to discuss with the community if this feature request is wanted by multiple people
- **Configuration help:** Ask the community for help and guidance on our [Discord Server](https://discord.gg/5rJgQTnV4s) or on [Reddit](https://www.reddit.com/r/OpenWebUI/)
- **General issues:** Use our [Issue Tracker](https://github.com/open-webui/open-webui/issues)
**Examples of non-vulnerability, still security related concerns:**
- Suggestions for better default configuration values - Suggestions for better default configuration values
- Security hardening recommendations - Security hardening recommendations
@ -102,12 +113,7 @@ If your concern does not meet the vulnerability requirements outlined above, suc
- Feature requests for optional security enhancements (2FA, audit logging, etc.) - Feature requests for optional security enhancements (2FA, audit logging, etc.)
- General security questions about production deployment - General security questions about production deployment
**then use one of the following channels instead:** Please use the adequate channel for your specific issue - e.g. best-practice guidance or additional documentation needs into the Documentation Repository, and feature requests into the Main Repository as an issue or discussion.
- **Documentation issues/improvement ideas:** Open an issue on our [Documentation Repository](https://github.com/open-webui/docs)
- **Feature requests:** Create a discussion in [GitHub Discussions - Ideas](https://github.com/open-webui/open-webui/discussions/) to discuss with the community if this feature request is wanted by multiple people
- **Configuration help:** Ask the community for help and guidance on our [Discord Server](https://discord.gg/5rJgQTnV4s) or on [Reddit](https://www.reddit.com/r/OpenWebUI/)
- **General issues:** Use our [Issue Tracker](https://github.com/open-webui/open-webui/issues)
We regularly audit our internal processes and system architecture for vulnerabilities using a combination of automated and manual testing techniques. We are also planning to implement SAST and SCA scans in our project soon. We regularly audit our internal processes and system architecture for vulnerabilities using a combination of automated and manual testing techniques. We are also planning to implement SAST and SCA scans in our project soon.
@ -115,4 +121,4 @@ For any other immediate concerns, please create an issue in our [issue tracker](
--- ---
_Last updated on **2025-10-12**._ _Last updated on **2025-10-17**._

684
package-lock.json generated
View file

@ -103,8 +103,8 @@
"devDependencies": { "devDependencies": {
"@sveltejs/adapter-auto": "3.2.2", "@sveltejs/adapter-auto": "3.2.2",
"@sveltejs/adapter-static": "^3.0.2", "@sveltejs/adapter-static": "^3.0.2",
"@sveltejs/kit": "^2.5.20", "@sveltejs/kit": "^2.5.27",
"@sveltejs/vite-plugin-svelte": "^3.1.1", "@sveltejs/vite-plugin-svelte": "^4.0.0",
"@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/postcss": "^4.0.0", "@tailwindcss/postcss": "^4.0.0",
"@tailwindcss/typography": "^0.5.13", "@tailwindcss/typography": "^0.5.13",
@ -114,14 +114,14 @@
"eslint": "^8.56.0", "eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-cypress": "^3.4.0", "eslint-plugin-cypress": "^3.4.0",
"eslint-plugin-svelte": "^2.43.0", "eslint-plugin-svelte": "^2.45.1",
"i18next-parser": "^9.0.1", "i18next-parser": "^9.0.1",
"postcss": "^8.4.31", "postcss": "^8.4.31",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"prettier-plugin-svelte": "^3.2.6", "prettier-plugin-svelte": "^3.2.6",
"sass-embedded": "^1.81.0", "sass-embedded": "^1.81.0",
"svelte": "^4.2.18", "svelte": "^5.0.0",
"svelte-check": "^3.8.5", "svelte-check": "^4.0.0",
"svelte-confetti": "^1.3.2", "svelte-confetti": "^1.3.2",
"tailwindcss": "^4.0.0", "tailwindcss": "^4.0.0",
"tslib": "^2.4.1", "tslib": "^2.4.1",
@ -155,18 +155,6 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@ampproject/remapping": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@antfu/install-pkg": { "node_modules/@antfu/install-pkg": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz",
@ -1997,16 +1985,23 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@jridgewell/gen-mapping": { "node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5", "version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.24" "@jridgewell/trace-mapping": "^0.3.24"
}
}, },
"engines": { "node_modules/@jridgewell/remapping": {
"node": ">=6.0.0" "version": "2.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
"license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
} }
}, },
"node_modules/@jridgewell/resolve-uri": { "node_modules/@jridgewell/resolve-uri": {
@ -2017,18 +2012,11 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/@jridgewell/set-array": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@jridgewell/sourcemap-codec": { "node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0", "version": "1.5.5",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"license": "MIT"
}, },
"node_modules/@jridgewell/trace-mapping": { "node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25", "version": "0.3.25",
@ -2210,23 +2198,6 @@
"resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz", "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz",
"integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==" "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg=="
}, },
"node_modules/@melt-ui/svelte": {
"version": "0.76.2",
"resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.76.2.tgz",
"integrity": "sha512-7SbOa11tXUS95T3fReL+dwDs5FyJtCEqrqG3inRziDws346SYLsxOQ6HmX+4BkIsQh1R8U3XNa+EMmdMt38lMA==",
"license": "MIT",
"dependencies": {
"@floating-ui/core": "^1.3.1",
"@floating-ui/dom": "^1.4.5",
"@internationalized/date": "^3.5.0",
"dequal": "^2.0.3",
"focus-trap": "^7.5.2",
"nanoid": "^5.0.4"
},
"peerDependencies": {
"svelte": ">=3 <5"
}
},
"node_modules/@mermaid-js/parser": { "node_modules/@mermaid-js/parser": {
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz", "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz",
@ -2948,42 +2919,89 @@
"license": "LIL" "license": "LIL"
}, },
"node_modules/@sveltejs/vite-plugin-svelte": { "node_modules/@sveltejs/vite-plugin-svelte": {
"version": "3.1.1", "version": "4.0.4",
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz", "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.4.tgz",
"integrity": "sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==", "integrity": "sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "@sveltejs/vite-plugin-svelte-inspector": "^3.0.0-next.0||^3.0.0",
"debug": "^4.3.4", "debug": "^4.3.7",
"deepmerge": "^4.3.1", "deepmerge": "^4.3.1",
"kleur": "^4.1.5", "kleur": "^4.1.5",
"magic-string": "^0.30.10", "magic-string": "^0.30.12",
"svelte-hmr": "^0.16.0", "vitefu": "^1.0.3"
"vitefu": "^0.2.5"
}, },
"engines": { "engines": {
"node": "^18.0.0 || >=20" "node": "^18.0.0 || ^20.0.0 || >=22"
}, },
"peerDependencies": { "peerDependencies": {
"svelte": "^4.0.0 || ^5.0.0-next.0", "svelte": "^5.0.0-next.96 || ^5.0.0",
"vite": "^5.0.0" "vite": "^5.0.0"
} }
}, },
"node_modules/@sveltejs/vite-plugin-svelte-inspector": { "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
"version": "2.1.0", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-3.0.1.tgz",
"integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", "integrity": "sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"debug": "^4.3.4" "debug": "^4.3.7"
}, },
"engines": { "engines": {
"node": "^18.0.0 || >=20" "node": "^18.0.0 || ^20.0.0 || >=22"
}, },
"peerDependencies": { "peerDependencies": {
"@sveltejs/vite-plugin-svelte": "^3.0.0", "@sveltejs/vite-plugin-svelte": "^4.0.0-next.0||^4.0.0",
"svelte": "^4.0.0 || ^5.0.0-next.0", "svelte": "^5.0.0-next.96 || ^5.0.0",
"vite": "^5.0.0" "vite": "^5.0.0"
} }
}, },
"node_modules/@sveltejs/vite-plugin-svelte-inspector/node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@sveltejs/vite-plugin-svelte-inspector/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/@sveltejs/vite-plugin-svelte/node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/@sveltejs/vite-plugin-svelte/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/@swc/helpers": { "node_modules/@swc/helpers": {
"version": "0.5.17", "version": "0.5.17",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
@ -4198,12 +4216,6 @@
"undici-types": "~5.26.4" "undici-types": "~5.26.4"
} }
}, },
"node_modules/@types/pug": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz",
"integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==",
"dev": true
},
"node_modules/@types/raf": { "node_modules/@types/raf": {
"version": "3.4.3", "version": "3.4.3",
"resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
@ -4803,11 +4815,12 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
}, },
"node_modules/aria-query": { "node_modules/aria-query": {
"version": "5.3.0", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
"dependencies": { "license": "Apache-2.0",
"dequal": "^2.0.3" "engines": {
"node": ">= 0.4"
} }
}, },
"node_modules/asn1": { "node_modules/asn1": {
@ -4895,11 +4908,12 @@
"dev": true "dev": true
}, },
"node_modules/axobject-query": { "node_modules/axobject-query": {
"version": "4.0.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
"integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
"dependencies": { "license": "Apache-2.0",
"dequal": "^2.0.3" "engines": {
"node": ">= 0.4"
} }
}, },
"node_modules/balanced-match": { "node_modules/balanced-match": {
@ -4990,6 +5004,23 @@
"svelte": "^4.0.0 || ^5.0.0-next.118" "svelte": "^4.0.0 || ^5.0.0-next.118"
} }
}, },
"node_modules/bits-ui/node_modules/@melt-ui/svelte": {
"version": "0.76.2",
"resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.76.2.tgz",
"integrity": "sha512-7SbOa11tXUS95T3fReL+dwDs5FyJtCEqrqG3inRziDws346SYLsxOQ6HmX+4BkIsQh1R8U3XNa+EMmdMt38lMA==",
"license": "MIT",
"dependencies": {
"@floating-ui/core": "^1.3.1",
"@floating-ui/dom": "^1.4.5",
"@internationalized/date": "^3.5.0",
"dequal": "^2.0.3",
"focus-trap": "^7.5.2",
"nanoid": "^5.0.4"
},
"peerDependencies": {
"svelte": ">=3 <5"
}
},
"node_modules/bl": { "node_modules/bl": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
@ -5702,24 +5733,13 @@
"integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==",
"dev": true "dev": true
}, },
"node_modules/code-red": { "node_modules/clsx": {
"version": "1.0.4", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
"integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
"dependencies": { "license": "MIT",
"@jridgewell/sourcemap-codec": "^1.4.15", "engines": {
"@types/estree": "^1.0.1", "node": ">=6"
"acorn": "^8.10.0",
"estree-walker": "^3.0.3",
"periscopic": "^3.1.0"
}
},
"node_modules/code-red/node_modules/estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dependencies": {
"@types/estree": "^1.0.0"
} }
}, },
"node_modules/codedent": { "node_modules/codedent": {
@ -5981,18 +6001,6 @@
"url": "https://github.com/sponsors/fb55" "url": "https://github.com/sponsors/fb55"
} }
}, },
"node_modules/css-tree": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"dependencies": {
"mdn-data": "2.0.30",
"source-map-js": "^1.0.1"
},
"engines": {
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
"node_modules/css-what": { "node_modules/css-what": {
"version": "6.1.0", "version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@ -6815,15 +6823,6 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/detect-indent": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
"integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/detect-libc": { "node_modules/detect-libc": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
@ -7116,12 +7115,6 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/es6-promise": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
"integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==",
"dev": true
},
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.25.1", "version": "0.25.1",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
@ -7278,22 +7271,23 @@
} }
}, },
"node_modules/eslint-plugin-svelte": { "node_modules/eslint-plugin-svelte": {
"version": "2.43.0", "version": "2.46.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.43.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz",
"integrity": "sha512-REkxQWvg2pp7QVLxQNa+dJ97xUqRe7Y2JJbSWkHSuszu0VcblZtXkPBPckkivk99y5CdLw4slqfPylL2d/X4jQ==", "integrity": "sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.4.0", "@eslint-community/eslint-utils": "^4.4.0",
"@jridgewell/sourcemap-codec": "^1.4.15", "@jridgewell/sourcemap-codec": "^1.4.15",
"eslint-compat-utils": "^0.5.1", "eslint-compat-utils": "^0.5.1",
"esutils": "^2.0.3", "esutils": "^2.0.3",
"known-css-properties": "^0.34.0", "known-css-properties": "^0.35.0",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"postcss-load-config": "^3.1.4", "postcss-load-config": "^3.1.4",
"postcss-safe-parser": "^6.0.0", "postcss-safe-parser": "^6.0.0",
"postcss-selector-parser": "^6.1.0", "postcss-selector-parser": "^6.1.0",
"semver": "^7.6.2", "semver": "^7.6.2",
"svelte-eslint-parser": "^0.41.0" "svelte-eslint-parser": "^0.43.0"
}, },
"engines": { "engines": {
"node": "^14.17.0 || >=16.0.0" "node": "^14.17.0 || >=16.0.0"
@ -7303,7 +7297,7 @@
}, },
"peerDependencies": { "peerDependencies": {
"eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0",
"svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.191" "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"svelte": { "svelte": {
@ -7410,6 +7404,15 @@
"node": ">=0.10" "node": ">=0.10"
} }
}, },
"node_modules/esrap": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/esrap/-/esrap-2.1.1.tgz",
"integrity": "sha512-ebTT9B6lOtZGMgJ3o5r12wBacHctG7oEWazIda8UlPfA3HD/Wrv8FdXoVo73vzdpwCxNyXjPauyN2bbJzMkB9A==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
}
},
"node_modules/esrecurse": { "node_modules/esrecurse": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@ -9021,10 +9024,11 @@
} }
}, },
"node_modules/known-css-properties": { "node_modules/known-css-properties": {
"version": "0.34.0", "version": "0.35.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz",
"integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==",
"dev": true "dev": true,
"license": "MIT"
}, },
"node_modules/kokoro-js": { "node_modules/kokoro-js": {
"version": "1.1.1", "version": "1.1.1",
@ -9658,11 +9662,12 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.30.11", "version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0" "@jridgewell/sourcemap-codec": "^1.5.5"
} }
}, },
"node_modules/markdown-it": { "node_modules/markdown-it": {
@ -9738,11 +9743,6 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
},
"node_modules/mdurl": { "node_modules/mdurl": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
@ -9857,15 +9857,6 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
"integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/minimatch": { "node_modules/minimatch": {
"version": "9.0.5", "version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
@ -9961,18 +9952,6 @@
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dev": true,
"dependencies": {
"minimist": "^1.2.6"
},
"bin": {
"mkdirp": "bin/cmd.js"
}
},
"node_modules/mktemp": { "node_modules/mktemp": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz", "resolved": "https://registry.npmjs.org/mktemp/-/mktemp-0.4.0.tgz",
@ -10461,32 +10440,6 @@
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
"devOptional": true "devOptional": true
}, },
"node_modules/periscopic": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
"integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^3.0.0",
"is-reference": "^3.0.0"
}
},
"node_modules/periscopic/node_modules/estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dependencies": {
"@types/estree": "^1.0.0"
}
},
"node_modules/periscopic/node_modules/is-reference": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
"dependencies": {
"@types/estree": "*"
}
},
"node_modules/phonemizer": { "node_modules/phonemizer": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/phonemizer/-/phonemizer-1.2.1.tgz", "resolved": "https://registry.npmjs.org/phonemizer/-/phonemizer-1.2.1.tgz",
@ -10684,6 +10637,7 @@
"url": "https://github.com/sponsors/ai" "url": "https://github.com/sponsors/ai"
} }
], ],
"license": "MIT",
"engines": { "engines": {
"node": ">=12.0" "node": ">=12.0"
}, },
@ -11581,73 +11535,6 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"node_modules/sander": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
"integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==",
"dev": true,
"dependencies": {
"es6-promise": "^3.1.2",
"graceful-fs": "^4.1.3",
"mkdirp": "^0.5.1",
"rimraf": "^2.5.2"
}
},
"node_modules/sander/node_modules/brace-expansion": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/sander/node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/sander/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/sander/node_modules/rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
"dependencies": {
"glob": "^7.1.3"
},
"bin": {
"rimraf": "bin.js"
}
},
"node_modules/sass-embedded": { "node_modules/sass-embedded": {
"version": "1.81.0", "version": "1.81.0",
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.81.0.tgz", "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.81.0.tgz",
@ -12231,21 +12118,6 @@
"node": ">=10.0.0" "node": ">=10.0.0"
} }
}, },
"node_modules/sorcery": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz",
"integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==",
"dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.14",
"buffer-crc32": "^0.2.5",
"minimist": "^1.2.0",
"sander": "^0.5.0"
},
"bin": {
"sorcery": "bin/sorcery"
}
},
"node_modules/sort-keys": { "node_modules/sort-keys": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz",
@ -12456,18 +12328,6 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
"integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
"dev": true,
"dependencies": {
"min-indent": "^1.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-json-comments": { "node_modules/strip-json-comments": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@ -12527,47 +12387,115 @@
} }
}, },
"node_modules/svelte": { "node_modules/svelte": {
"version": "4.2.19", "version": "5.42.2",
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.42.2.tgz",
"integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "integrity": "sha512-iSry5jsBHispVczyt9UrBX/1qu3HQ/UyKPAIjqlvlu3o/eUvc+kpyMyRS2O4HLLx4MvLurLGIUOyyP11pyD59g==",
"license": "MIT",
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.1", "@jridgewell/remapping": "^2.3.4",
"@jridgewell/sourcemap-codec": "^1.4.15", "@jridgewell/sourcemap-codec": "^1.5.0",
"@jridgewell/trace-mapping": "^0.3.18", "@sveltejs/acorn-typescript": "^1.0.5",
"@types/estree": "^1.0.1", "@types/estree": "^1.0.5",
"acorn": "^8.9.0", "acorn": "^8.12.1",
"aria-query": "^5.3.0", "aria-query": "^5.3.1",
"axobject-query": "^4.0.0", "axobject-query": "^4.1.0",
"code-red": "^1.0.3", "clsx": "^2.1.1",
"css-tree": "^2.3.1", "esm-env": "^1.2.1",
"estree-walker": "^3.0.3", "esrap": "^2.1.0",
"is-reference": "^3.0.1", "is-reference": "^3.0.3",
"locate-character": "^3.0.0", "locate-character": "^3.0.0",
"magic-string": "^0.30.4", "magic-string": "^0.30.11",
"periscopic": "^3.1.0" "zimmerframe": "^1.1.2"
}, },
"engines": { "engines": {
"node": ">=16" "node": ">=18"
} }
}, },
"node_modules/svelte-check": { "node_modules/svelte-check": {
"version": "3.8.5", "version": "4.3.3",
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.8.5.tgz", "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.3.tgz",
"integrity": "sha512-3OGGgr9+bJ/+1nbPgsvulkLC48xBsqsgtc8Wam281H4G9F5v3mYGa2bHRsPuwHC5brKl4AxJH95QF73kmfihGQ==", "integrity": "sha512-RYP0bEwenDXzfv0P1sKAwjZSlaRyqBn0Fz1TVni58lqyEiqgwztTpmodJrGzP6ZT2aHl4MbTvWP6gbmQ3FOnBg==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/trace-mapping": "^0.3.17", "@jridgewell/trace-mapping": "^0.3.25",
"chokidar": "^3.4.1", "chokidar": "^4.0.1",
"fdir": "^6.2.0",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"sade": "^1.7.4", "sade": "^1.7.4"
"svelte-preprocess": "^5.1.3",
"typescript": "^5.0.3"
}, },
"bin": { "bin": {
"svelte-check": "bin/svelte-check" "svelte-check": "bin/svelte-check"
}, },
"engines": {
"node": ">= 18.0.0"
},
"peerDependencies": { "peerDependencies": {
"svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" "svelte": "^4.0.0 || ^5.0.0-next.0",
"typescript": ">=5.0.0"
}
},
"node_modules/svelte-check/node_modules/chokidar": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dev": true,
"license": "MIT",
"dependencies": {
"readdirp": "^4.0.1"
},
"engines": {
"node": ">= 14.16.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/svelte-check/node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12.0.0"
},
"peerDependencies": {
"picomatch": "^3 || ^4"
},
"peerDependenciesMeta": {
"picomatch": {
"optional": true
}
}
},
"node_modules/svelte-check/node_modules/picomatch": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/svelte-check/node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 14.18.0"
},
"funding": {
"type": "individual",
"url": "https://paulmillr.com/funding/"
} }
}, },
"node_modules/svelte-confetti": { "node_modules/svelte-confetti": {
@ -12580,10 +12508,11 @@
} }
}, },
"node_modules/svelte-eslint-parser": { "node_modules/svelte-eslint-parser": {
"version": "0.41.0", "version": "0.43.0",
"resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.41.0.tgz", "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz",
"integrity": "sha512-L6f4hOL+AbgfBIB52Z310pg1d2QjRqm7wy3kI1W6hhdhX5bvu7+f0R6w4ykp5HoDdzq+vGhIJmsisaiJDGmVfA==", "integrity": "sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"eslint-scope": "^7.2.2", "eslint-scope": "^7.2.2",
"eslint-visitor-keys": "^3.4.3", "eslint-visitor-keys": "^3.4.3",
@ -12598,7 +12527,7 @@
"url": "https://github.com/sponsors/ota-meshi" "url": "https://github.com/sponsors/ota-meshi"
}, },
"peerDependencies": { "peerDependencies": {
"svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.191" "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"svelte": { "svelte": {
@ -12606,80 +12535,6 @@
} }
} }
}, },
"node_modules/svelte-hmr": {
"version": "0.16.0",
"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz",
"integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==",
"engines": {
"node": "^12.20 || ^14.13.1 || >= 16"
},
"peerDependencies": {
"svelte": "^3.19.0 || ^4.0.0"
}
},
"node_modules/svelte-preprocess": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz",
"integrity": "sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@types/pug": "^2.0.6",
"detect-indent": "^6.1.0",
"magic-string": "^0.30.5",
"sorcery": "^0.11.0",
"strip-indent": "^3.0.0"
},
"engines": {
"node": ">= 16.0.0",
"pnpm": "^8.0.0"
},
"peerDependencies": {
"@babel/core": "^7.10.2",
"coffeescript": "^2.5.1",
"less": "^3.11.3 || ^4.0.0",
"postcss": "^7 || ^8",
"postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
"pug": "^3.0.0",
"sass": "^1.26.8",
"stylus": "^0.55.0",
"sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0",
"svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0",
"typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0"
},
"peerDependenciesMeta": {
"@babel/core": {
"optional": true
},
"coffeescript": {
"optional": true
},
"less": {
"optional": true
},
"postcss": {
"optional": true
},
"postcss-load-config": {
"optional": true
},
"pug": {
"optional": true
},
"sass": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"typescript": {
"optional": true
}
}
},
"node_modules/svelte-sonner": { "node_modules/svelte-sonner": {
"version": "0.3.28", "version": "0.3.28",
"resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-0.3.28.tgz", "resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-0.3.28.tgz",
@ -12688,20 +12543,19 @@
"svelte": "^3.0.0 || ^4.0.0 || ^5.0.0-next.1" "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0-next.1"
} }
}, },
"node_modules/svelte/node_modules/estree-walker": { "node_modules/svelte/node_modules/@types/estree": {
"version": "3.0.3", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"dependencies": { "license": "MIT"
"@types/estree": "^1.0.0"
}
}, },
"node_modules/svelte/node_modules/is-reference": { "node_modules/svelte/node_modules/is-reference": {
"version": "3.0.2", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
"license": "MIT",
"dependencies": { "dependencies": {
"@types/estree": "*" "@types/estree": "^1.0.6"
} }
}, },
"node_modules/svg-pathdata": { "node_modules/svg-pathdata": {
@ -14213,11 +14067,17 @@
} }
}, },
"node_modules/vitefu": { "node_modules/vitefu": {
"version": "0.2.5", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz",
"integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==",
"license": "MIT",
"workspaces": [
"tests/deps/*",
"tests/projects/*",
"tests/projects/workspace/packages/*"
],
"peerDependencies": { "peerDependencies": {
"vite": "^3.0.0 || ^4.0.0 || ^5.0.0" "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"vite": { "vite": {
@ -14945,6 +14805,12 @@
"funding": { "funding": {
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
},
"node_modules/zimmerframe": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz",
"integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==",
"license": "MIT"
} }
} }
} }

View file

@ -24,8 +24,8 @@
"devDependencies": { "devDependencies": {
"@sveltejs/adapter-auto": "3.2.2", "@sveltejs/adapter-auto": "3.2.2",
"@sveltejs/adapter-static": "^3.0.2", "@sveltejs/adapter-static": "^3.0.2",
"@sveltejs/kit": "^2.5.20", "@sveltejs/kit": "^2.5.27",
"@sveltejs/vite-plugin-svelte": "^3.1.1", "@sveltejs/vite-plugin-svelte": "^4.0.0",
"@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/postcss": "^4.0.0", "@tailwindcss/postcss": "^4.0.0",
"@tailwindcss/typography": "^0.5.13", "@tailwindcss/typography": "^0.5.13",
@ -35,14 +35,14 @@
"eslint": "^8.56.0", "eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-cypress": "^3.4.0", "eslint-plugin-cypress": "^3.4.0",
"eslint-plugin-svelte": "^2.43.0", "eslint-plugin-svelte": "^2.45.1",
"i18next-parser": "^9.0.1", "i18next-parser": "^9.0.1",
"postcss": "^8.4.31", "postcss": "^8.4.31",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"prettier-plugin-svelte": "^3.2.6", "prettier-plugin-svelte": "^3.2.6",
"sass-embedded": "^1.81.0", "sass-embedded": "^1.81.0",
"svelte": "^4.2.18", "svelte": "^5.0.0",
"svelte-check": "^3.8.5", "svelte-check": "^4.0.0",
"svelte-confetti": "^1.3.2", "svelte-confetti": "^1.3.2",
"tailwindcss": "^4.0.0", "tailwindcss": "^4.0.0",
"tslib": "^2.4.1", "tslib": "^2.4.1",

View file

@ -13,7 +13,7 @@ dependencies = [
"itsdangerous==2.2.0", "itsdangerous==2.2.0",
"python-socketio==5.13.0", "python-socketio==5.13.0",
"python-jose==3.4.0", "python-jose==3.5.0",
"cryptography", "cryptography",
"bcrypt==5.0.0", "bcrypt==5.0.0",
"argon2-cffi==25.1.0", "argon2-cffi==25.1.0",
@ -73,7 +73,7 @@ dependencies = [
"pymdown-extensions==10.14.2", "pymdown-extensions==10.14.2",
"docx2txt==0.8", "docx2txt==0.8",
"python-pptx==1.0.2", "python-pptx==1.0.2",
"unstructured==0.16.17", "unstructured==0.18.15",
"nltk==3.9.1", "nltk==3.9.1",
"Markdown==3.9", "Markdown==3.9",
"pypandoc==1.15", "pypandoc==1.15",
@ -151,9 +151,7 @@ all = [
"oracledb==3.2.0", "oracledb==3.2.0",
"colbert-ai==0.2.21", "colbert-ai==0.2.21",
"firecrawl-py==4.5.0",
"firecrawl-py==1.12.0",
"tencentcloud-sdk-python==3.0.1336",
] ]
[project.scripts] [project.scripts]

View file

@ -129,8 +129,8 @@ li p {
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
height: 0.8rem; height: 0.45rem;
width: 0.8rem; width: 0.45rem;
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
@ -152,6 +152,14 @@ select {
-webkit-appearance: none; -webkit-appearance: none;
} }
.dark select:not([class*='bg-transparent']) {
@apply bg-gray-900 text-gray-300;
}
.dark select option {
@apply bg-gray-850 text-white;
}
@keyframes shimmer { @keyframes shimmer {
0% { 0% {
background-position: 200% 0; background-position: 200% 0;

View file

@ -23,12 +23,7 @@
href="/static/apple-touch-icon.png" href="/static/apple-touch-icon.png"
crossorigin="use-credentials" crossorigin="use-credentials"
/> />
<link <link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
rel="manifest"
href="/manifest.json"
crossorigin="use-credentials"
crossorigin="use-credentials"
/>
<meta <meta
name="viewport" name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover"

View file

@ -63,6 +63,10 @@ export const uploadFile = async (token: string, file: File, metadata?: object |
console.error(data.error); console.error(data.error);
res.error = data.error; res.error = data.error;
} }
if (res?.data) {
res.data = data;
}
} }
} }
} }

View file

@ -171,14 +171,6 @@
return; return;
} }
if (
RAGConfig.CONTENT_EXTRACTION_ENGINE === 'datalab_marker' &&
!RAGConfig.DATALAB_MARKER_API_KEY
) {
toast.error($i18n.t('Datalab Marker API Key required.'));
return;
}
if ( if (
RAGConfig.CONTENT_EXTRACTION_ENGINE === 'datalab_marker' && RAGConfig.CONTENT_EXTRACTION_ENGINE === 'datalab_marker' &&
RAGConfig.DATALAB_MARKER_ADDITIONAL_CONFIG && RAGConfig.DATALAB_MARKER_ADDITIONAL_CONFIG &&
@ -733,7 +725,7 @@
</div> </div>
<div class=""> <div class="">
<Textarea <Textarea
bind:value={RAGConfig.DOCLING_PARAMETERS} bind:value={RAGConfig.DOCLING_PARAMS}
placeholder={$i18n.t('Enter additional parameters in JSON format')} placeholder={$i18n.t('Enter additional parameters in JSON format')}
minSize={100} minSize={100}
/> />
@ -785,8 +777,8 @@
} }
}} }}
> >
<option value="local">{$i18n.t('Self-Hosted')}</option> <option value="local">{$i18n.t('local')}</option>
<option value="cloud">{$i18n.t('minerU managed (Cloud API)')}</option> <option value="cloud">{$i18n.t('cloud')}</option>
</select> </select>
</div> </div>
</div> </div>
@ -802,15 +794,12 @@
/> />
</div> </div>
<!-- API Key (Cloud only) -->
{#if RAGConfig.MINERU_API_MODE === 'cloud'}
<div class="flex w-full mt-2"> <div class="flex w-full mt-2">
<SensitiveInput <SensitiveInput
placeholder={$i18n.t('Enter MinerU API Key')} placeholder={$i18n.t('Enter MinerU API Key')}
bind:value={RAGConfig.MINERU_API_KEY} bind:value={RAGConfig.MINERU_API_KEY}
/> />
</div> </div>
{/if}
<!-- Parameters --> <!-- Parameters -->
<div class="flex justify-between w-full mt-2"> <div class="flex justify-between w-full mt-2">

View file

@ -313,7 +313,7 @@
<div class=" my-2 mb-5" id="model-list"> <div class=" my-2 mb-5" id="model-list">
{#if models.length > 0} {#if models.length > 0}
{#each filteredModels as model, modelIdx (model.id)} {#each filteredModels as model, modelIdx (`${model.id}-${modelIdx}`)}
<div <div
class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-lg transition {model class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-lg transition {model
?.meta?.hidden ?.meta?.hidden

View file

@ -4,7 +4,14 @@
const i18n = getContext('i18n'); const i18n = getContext('i18n');
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
import { artifactCode, chatId, settings, showArtifacts, showControls } from '$lib/stores'; import {
artifactCode,
chatId,
settings,
showArtifacts,
showControls,
artifactContents
} from '$lib/stores';
import { copyToClipboard, createMessagesList } from '$lib/utils'; import { copyToClipboard, createMessagesList } from '$lib/utils';
import XMark from '../icons/XMark.svelte'; import XMark from '../icons/XMark.svelte';
@ -15,8 +22,6 @@
import Download from '../icons/Download.svelte'; import Download from '../icons/Download.svelte';
export let overlay = false; export let overlay = false;
export let history;
let messages = [];
let contents: Array<{ type: string; content: string }> = []; let contents: Array<{ type: string; content: string }> = [];
let selectedContentIdx = 0; let selectedContentIdx = 0;
@ -24,121 +29,11 @@
let copied = false; let copied = false;
let iframeElement: HTMLIFrameElement; let iframeElement: HTMLIFrameElement;
$: if (history) {
messages = createMessagesList(history, history.currentId);
getContents();
} else {
messages = [];
getContents();
}
const getContents = () => {
contents = [];
messages.forEach((message) => {
if (message?.role !== 'user' && message?.content) {
const codeBlockContents = message.content.match(/```[\s\S]*?```/g);
let codeBlocks = [];
let htmlContent = '';
let cssContent = '';
let jsContent = '';
if (codeBlockContents) {
codeBlockContents.forEach((block) => {
const lang = block.split('\n')[0].replace('```', '').trim().toLowerCase();
const code = block.replace(/```[\s\S]*?\n/, '').replace(/```$/, '');
codeBlocks.push({ lang, code });
});
codeBlocks.forEach((block) => {
const { lang, code } = block;
if (lang === 'html') {
htmlContent += code + '\n';
} else if (lang === 'css') {
cssContent += code + '\n';
} else if (lang === 'javascript' || lang === 'js') {
jsContent += code + '\n';
}
});
} else {
const inlineHtml = message.content.match(/<html>[\s\S]*?<\/html>/gi);
const inlineCss = message.content.match(/<style>[\s\S]*?<\/style>/gi);
const inlineJs = message.content.match(/<script>[\s\S]*?<\/script>/gi);
if (inlineHtml) {
inlineHtml.forEach((block) => {
const content = block.replace(/<\/?html>/gi, ''); // Remove <html> tags
htmlContent += content + '\n';
});
}
if (inlineCss) {
inlineCss.forEach((block) => {
const content = block.replace(/<\/?style>/gi, ''); // Remove <style> tags
cssContent += content + '\n';
});
}
if (inlineJs) {
inlineJs.forEach((block) => {
const content = block.replace(/<\/?script>/gi, ''); // Remove <script> tags
jsContent += content + '\n';
});
}
}
if (htmlContent || cssContent || jsContent) {
const renderedContent = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<${''}style>
body {
background-color: white; /* Ensure the iframe has a white background */
}
${cssContent}
</${''}style>
</head>
<body>
${htmlContent}
<${''}script>
${jsContent}
</${''}script>
</body>
</html>
`;
contents = [...contents, { type: 'iframe', content: renderedContent }];
} else {
// Check for SVG content
for (const block of codeBlocks) {
if (block.lang === 'svg' || (block.lang === 'xml' && block.code.includes('<svg'))) {
contents = [...contents, { type: 'svg', content: block.code }];
}
}
}
}
});
if (contents.length === 0) {
showControls.set(false);
showArtifacts.set(false);
}
selectedContentIdx = contents ? contents.length - 1 : 0;
};
function navigateContent(direction: 'prev' | 'next') { function navigateContent(direction: 'prev' | 'next') {
console.log(selectedContentIdx);
selectedContentIdx = selectedContentIdx =
direction === 'prev' direction === 'prev'
? Math.max(selectedContentIdx - 1, 0) ? Math.max(selectedContentIdx - 1, 0)
: Math.min(selectedContentIdx + 1, contents.length - 1); : Math.min(selectedContentIdx + 1, contents.length - 1);
console.log(selectedContentIdx);
} }
const iframeLoadHandler = () => { const iframeLoadHandler = () => {
@ -201,6 +96,18 @@
selectedContentIdx = codeIdx !== -1 ? codeIdx : 0; selectedContentIdx = codeIdx !== -1 ? codeIdx : 0;
} }
}); });
artifactContents.subscribe((value) => {
contents = value;
console.log('Artifact contents updated:', contents);
if (contents.length === 0) {
showControls.set(false);
showArtifacts.set(false);
}
selectedContentIdx = contents ? contents.length - 1 : 0;
});
}); });
</script> </script>

View file

@ -4,6 +4,7 @@
import { PaneGroup, Pane, PaneResizer } from 'paneforge'; import { PaneGroup, Pane, PaneResizer } from 'paneforge';
import { getContext, onDestroy, onMount, tick } from 'svelte'; import { getContext, onDestroy, onMount, tick } from 'svelte';
import { fade } from 'svelte/transition';
const i18n: Writable<i18nType> = getContext('i18n'); const i18n: Writable<i18nType> = getContext('i18n');
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
@ -34,6 +35,7 @@
showOverview, showOverview,
chatTitle, chatTitle,
showArtifacts, showArtifacts,
artifactContents,
tools, tools,
toolServers, toolServers,
functions, functions,
@ -48,9 +50,9 @@
createMessagesList, createMessagesList,
getPromptVariables, getPromptVariables,
processDetails, processDetails,
removeAllDetails removeAllDetails,
getCodeBlockContents
} from '$lib/utils'; } from '$lib/utils';
import { import {
createNewChat, createNewChat,
getAllTags, getAllTags,
@ -75,8 +77,8 @@
import { getTools } from '$lib/apis/tools'; import { getTools } from '$lib/apis/tools';
import { uploadFile } from '$lib/apis/files'; import { uploadFile } from '$lib/apis/files';
import { createOpenAITextStream } from '$lib/apis/streaming'; import { createOpenAITextStream } from '$lib/apis/streaming';
import { getFunctions } from '$lib/apis/functions';
import { fade } from 'svelte/transition'; import { updateFolderById } from '$lib/apis/folders';
import Banner from '../common/Banner.svelte'; import Banner from '../common/Banner.svelte';
import MessageInput from '$lib/components/chat/MessageInput.svelte'; import MessageInput from '$lib/components/chat/MessageInput.svelte';
@ -89,9 +91,7 @@
import Spinner from '../common/Spinner.svelte'; import Spinner from '../common/Spinner.svelte';
import Tooltip from '../common/Tooltip.svelte'; import Tooltip from '../common/Tooltip.svelte';
import Sidebar from '../icons/Sidebar.svelte'; import Sidebar from '../icons/Sidebar.svelte';
import { getFunctions } from '$lib/apis/functions';
import Image from '../common/Image.svelte'; import Image from '../common/Image.svelte';
import { updateFolderById } from '$lib/apis/folders';
export let chatIdProp = ''; export let chatIdProp = '';
@ -192,6 +192,8 @@
codeInterpreterEnabled = input.codeInterpreterEnabled; codeInterpreterEnabled = input.codeInterpreterEnabled;
} }
} catch (e) {} } catch (e) {}
} else {
await setDefaults();
} }
const chatInput = document.getElementById('chat-input'); const chatInput = document.getElementById('chat-input');
@ -817,6 +819,63 @@
} }
}; };
$: if (history) {
getContents();
} else {
artifactContents.set([]);
}
const getContents = () => {
const messages = history ? createMessagesList(history, history.currentId) : [];
let contents = [];
messages.forEach((message) => {
if (message?.role !== 'user' && message?.content) {
const {
codeBlocks: codeBlocks,
html: htmlContent,
css: cssContent,
js: jsContent
} = getCodeBlockContents(message.content);
if (htmlContent || cssContent || jsContent) {
const renderedContent = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<${''}style>
body {
background-color: white; /* Ensure the iframe has a white background */
}
${cssContent}
</${''}style>
</head>
<body>
${htmlContent}
<${''}script>
${jsContent}
</${''}script>
</body>
</html>
`;
contents = [...contents, { type: 'iframe', content: renderedContent }];
} else {
// Check for SVG content
for (const block of codeBlocks) {
if (block.lang === 'svg' || (block.lang === 'xml' && block.code.includes('<svg'))) {
contents = [...contents, { type: 'svg', content: block.code }];
}
}
}
}
});
artifactContents.set(contents);
};
////////////////////////// //////////////////////////
// Web functions // Web functions
////////////////////////// //////////////////////////
@ -1080,7 +1139,7 @@
}); });
} }
}; };
const chatCompletedHandler = async (chatId, modelId, responseMessageId, messages) => { const chatCompletedHandler = async (_chatId, modelId, responseMessageId, messages) => {
const res = await chatCompleted(localStorage.token, { const res = await chatCompleted(localStorage.token, {
model: modelId, model: modelId,
messages: messages.map((m) => ({ messages: messages.map((m) => ({
@ -1094,7 +1153,7 @@
})), })),
filter_ids: selectedFilterIds.length > 0 ? selectedFilterIds : undefined, filter_ids: selectedFilterIds.length > 0 ? selectedFilterIds : undefined,
model_item: $models.find((m) => m.id === modelId), model_item: $models.find((m) => m.id === modelId),
chat_id: chatId, chat_id: _chatId,
session_id: $socket?.id, session_id: $socket?.id,
id: responseMessageId id: responseMessageId
}).catch((error) => { }).catch((error) => {
@ -1122,9 +1181,9 @@
await tick(); await tick();
if ($chatId == chatId) { if ($chatId == _chatId) {
if (!$temporaryChatEnabled) { if (!$temporaryChatEnabled) {
chat = await updateChatById(localStorage.token, chatId, { chat = await updateChatById(localStorage.token, _chatId, {
models: selectedModels, models: selectedModels,
messages: messages, messages: messages,
history: history, history: history,
@ -1140,7 +1199,7 @@
taskIds = null; taskIds = null;
}; };
const chatActionHandler = async (chatId, actionId, modelId, responseMessageId, event = null) => { const chatActionHandler = async (_chatId, actionId, modelId, responseMessageId, event = null) => {
const messages = createMessagesList(history, responseMessageId); const messages = createMessagesList(history, responseMessageId);
const res = await chatAction(localStorage.token, actionId, { const res = await chatAction(localStorage.token, actionId, {
@ -1155,7 +1214,7 @@
})), })),
...(event ? { event: event } : {}), ...(event ? { event: event } : {}),
model_item: $models.find((m) => m.id === modelId), model_item: $models.find((m) => m.id === modelId),
chat_id: chatId, chat_id: _chatId,
session_id: $socket?.id, session_id: $socket?.id,
id: responseMessageId id: responseMessageId
}).catch((error) => { }).catch((error) => {
@ -1177,9 +1236,9 @@
} }
} }
if ($chatId == chatId) { if ($chatId == _chatId) {
if (!$temporaryChatEnabled) { if (!$temporaryChatEnabled) {
chat = await updateChatById(localStorage.token, chatId, { chat = await updateChatById(localStorage.token, _chatId, {
models: selectedModels, models: selectedModels,
messages: messages, messages: messages,
history: history, history: history,
@ -2440,7 +2499,7 @@
</div> </div>
</div> </div>
<div class=" pb-2"> <div class=" pb-2 z-10">
<MessageInput <MessageInput
bind:this={messageInput} bind:this={messageInput}
{history} {history}
@ -2570,3 +2629,10 @@
</div> </div>
{/if} {/if}
</div> </div>
<style>
::-webkit-scrollbar {
height: 0.5rem;
width: 0.5rem;
}
</style>

View file

@ -168,27 +168,28 @@
return '{{CLIPBOARD}}'; return '{{CLIPBOARD}}';
}); });
const clipboardItems = await navigator.clipboard.read(); const clipboardItems = await navigator.clipboard.read().catch((err) => {
console.error('Failed to read clipboard items:', err);
return [];
});
let imageUrl = null;
for (const item of clipboardItems) { for (const item of clipboardItems) {
// Check for known image types
for (const type of item.types) { for (const type of item.types) {
if (type.startsWith('image/')) { if (type.startsWith('image/')) {
const blob = await item.getType(type); const blob = await item.getType(type);
imageUrl = URL.createObjectURL(blob); const reader = new FileReader();
} reader.onload = (event) => {
}
}
if (imageUrl) {
files = [ files = [
...files, ...files,
{ {
type: 'image', type: 'image',
url: imageUrl url: event.target.result as string
} }
]; ];
};
reader.readAsDataURL(blob);
}
}
} }
text = text.replaceAll('{{CLIPBOARD}}', clipboardText); text = text.replaceAll('{{CLIPBOARD}}', clipboardText);
@ -1033,8 +1034,7 @@
recording = false; recording = false;
await tick(); await tick();
insertTextAtCursor(text); await insertTextAtCursor(text);
await tick(); await tick();
document.getElementById('chat-input')?.focus(); document.getElementById('chat-input')?.focus();
@ -1051,6 +1051,12 @@
dispatch('submit', prompt); dispatch('submit', prompt);
}} }}
> >
<button
id="generate-message-pair-button"
class="hidden"
on:click={() => createMessagePair(prompt)}
/>
<div <div
id="message-input-container" id="message-input-container"
class="flex-1 flex flex-col relative w-full shadow-lg rounded-3xl border {$temporaryChatEnabled class="flex-1 flex flex-col relative w-full shadow-lg rounded-3xl border {$temporaryChatEnabled
@ -1255,24 +1261,6 @@
stopResponse(); stopResponse();
} }
// Command/Ctrl + Shift + Enter to submit a message pair
if (isCtrlPressed && e.key === 'Enter' && e.shiftKey) {
e.preventDefault();
createMessagePair(prompt);
}
// Check if Ctrl + R is pressed
if (prompt === '' && isCtrlPressed && e.key.toLowerCase() === 'r') {
e.preventDefault();
console.log('regenerate');
const regenerateButton = [
...document.getElementsByClassName('regenerate-response-button')
]?.at(-1);
regenerateButton?.click();
}
if (prompt === '' && e.key == 'ArrowUp') { if (prompt === '' && e.key == 'ArrowUp') {
e.preventDefault(); e.preventDefault();
@ -1455,11 +1443,11 @@
</div> </div>
</InputMenu> </InputMenu>
{#if showWebSearchButton || showImageGenerationButton || showCodeInterpreterButton || showToolsButton || (toggleFilters && toggleFilters.length > 0)}
<div <div
class="flex self-center w-[1px] h-4 mx-1 bg-gray-200/50 dark:bg-gray-800/50" class="flex self-center w-[1px] h-4 mx-1 bg-gray-200/50 dark:bg-gray-800/50"
/> />
{#if showWebSearchButton || showImageGenerationButton || showCodeInterpreterButton || showToolsButton || (toggleFilters && toggleFilters.length > 0)}
<IntegrationsMenu <IntegrationsMenu
selectedModels={atSelectedModel ? [atSelectedModel.id] : selectedModels} selectedModels={atSelectedModel ? [atSelectedModel.id] : selectedModels}
{toggleFilters} {toggleFilters}

View file

@ -56,6 +56,10 @@
fileUploadCapableModels.length === selectedModels.length && fileUploadCapableModels.length === selectedModels.length &&
($user?.role === 'admin' || $user?.permissions?.chat?.file_upload); ($user?.role === 'admin' || $user?.permissions?.chat?.file_upload);
$: if (!fileUploadEnabled && files.length > 0) {
files = [];
}
const detectMobile = () => { const detectMobile = () => {
const userAgent = navigator.userAgent || navigator.vendor || window.opera; const userAgent = navigator.userAgent || navigator.vendor || window.opera;
return /android|iphone|ipad|ipod|windows phone/i.test(userAgent); return /android|iphone|ipad|ipod|windows phone/i.test(userAgent);
@ -199,7 +203,9 @@
className="w-full" className="w-full"
> >
<DropdownMenu.Item <DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl" class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl {!fileUploadEnabled
? 'opacity-50'
: ''}"
on:click={() => { on:click={() => {
if (fileUploadEnabled) { if (fileUploadEnabled) {
showAttachWebpageModal = true; showAttachWebpageModal = true;

View file

@ -108,7 +108,7 @@
source: _source, source: _source,
document: [document], document: [document],
metadata: metadata ? [metadata] : [], metadata: metadata ? [metadata] : [],
distances: distance !== undefined ? [distance] : undefined distances: distance !== undefined ? [distance] : []
}); });
} }
}); });

View file

@ -6,7 +6,12 @@
import PyodideWorker from '$lib/workers/pyodide.worker?worker'; import PyodideWorker from '$lib/workers/pyodide.worker?worker';
import { executeCode } from '$lib/apis/utils'; import { executeCode } from '$lib/apis/utils';
import { copyToClipboard, renderMermaidDiagram, renderVegaVisualization } from '$lib/utils'; import {
copyToClipboard,
initMermaid,
renderMermaidDiagram,
renderVegaVisualization
} from '$lib/utils';
import 'highlight.js/styles/github-dark.min.css'; import 'highlight.js/styles/github-dark.min.css';
@ -54,8 +59,8 @@
let _token = null; let _token = null;
let mermaidHtml = null; let renderHTML = null;
let vegaHtml = null; let renderError = null;
let highlightedCode = null; let highlightedCode = null;
let executing = false; let executing = false;
@ -323,28 +328,36 @@
}; };
}; };
let mermaid = null;
const renderMermaid = async (code) => {
if (!mermaid) {
mermaid = await initMermaid();
}
return await renderMermaidDiagram(mermaid, code);
};
const render = async () => { const render = async () => {
onUpdate(token); onUpdate(token);
if (lang === 'mermaid' && (token?.raw ?? '').slice(-4).includes('```')) { if (lang === 'mermaid' && (token?.raw ?? '').slice(-4).includes('```')) {
try { try {
mermaidHtml = await renderMermaidDiagram(code); renderHTML = await renderMermaid(code);
} catch (error) { } catch (error) {
console.error('Failed to render mermaid diagram:', error); console.error('Failed to render mermaid diagram:', error);
const errorMsg = error instanceof Error ? error.message : String(error); const errorMsg = error instanceof Error ? error.message : String(error);
toast.error($i18n.t('Failed to render diagram') + `: ${errorMsg}`); renderError = $i18n.t('Failed to render diagram') + `: ${errorMsg}`;
mermaidHtml = null; renderHTML = null;
} }
} else if ( } else if (
(lang === 'vega' || lang === 'vega-lite') && (lang === 'vega' || lang === 'vega-lite') &&
(token?.raw ?? '').slice(-4).includes('```') (token?.raw ?? '').slice(-4).includes('```')
) { ) {
try { try {
vegaHtml = await renderVegaVisualization(code); renderHTML = await renderVegaVisualization(code);
} catch (error) { } catch (error) {
console.error('Failed to render Vega visualization:', error); console.error('Failed to render Vega visualization:', error);
const errorMsg = error instanceof Error ? error.message : String(error); const errorMsg = error instanceof Error ? error.message : String(error);
toast.error($i18n.t('Failed to render diagram') + `: ${errorMsg}`); renderError = $i18n.t('Failed to render visualization') + `: ${errorMsg}`;
vegaHtml = null; renderHTML = null;
} }
} }
}; };
@ -407,25 +420,24 @@
class="relative {className} flex flex-col rounded-3xl border border-gray-100 dark:border-gray-850 my-0.5" class="relative {className} flex flex-col rounded-3xl border border-gray-100 dark:border-gray-850 my-0.5"
dir="ltr" dir="ltr"
> >
{#if lang === 'mermaid'} {#if ['mermaid', 'vega', 'vega-lite'].includes(lang)}
{#if mermaidHtml} {#if renderHTML}
<SvgPanZoom <SvgPanZoom
className=" rounded-3xl max-h-fit overflow-hidden" className=" rounded-3xl max-h-fit overflow-hidden"
svg={mermaidHtml} svg={renderHTML}
content={_token.text} content={_token.text}
/> />
{:else} {:else}
<pre class="mermaid">{code}</pre> <div class="p-3">
{#if renderError}
<div
class="flex gap-2.5 border px-4 py-3 border-red-600/10 bg-red-600/10 rounded-2xl mb-2"
>
{renderError}
</div>
{/if} {/if}
{:else if lang === 'vega' || lang === 'vega-lite'} <pre>{code}</pre>
{#if vegaHtml} </div>
<SvgPanZoom
className="rounded-3xl max-h-fit overflow-hidden"
svg={vegaHtml}
content={_token.text}
/>
{:else}
<pre class="vega">{code}</pre>
{/if} {/if}
{:else} {:else}
<div <div
@ -561,15 +573,15 @@
> >
{#if executing} {#if executing}
<div class=" "> <div class=" ">
<div class=" text-gray-500 text-xs mb-1">{$i18n.t('STDOUT/STDERR')}</div> <div class=" text-gray-500 text-sm mb-1">{$i18n.t('STDOUT/STDERR')}</div>
<div class="text-sm">{$i18n.t('Running...')}</div> <div class="text-sm">{$i18n.t('Running...')}</div>
</div> </div>
{:else} {:else}
{#if stdout || stderr} {#if stdout || stderr}
<div class=" "> <div class=" ">
<div class=" text-gray-500 text-xs mb-1">{$i18n.t('STDOUT/STDERR')}</div> <div class=" text-gray-500 text-sm mb-1">{$i18n.t('STDOUT/STDERR')}</div>
<div <div
class="text-sm {stdout?.split('\n')?.length > 100 class="text-sm font-mono whitespace-pre-wrap {stdout?.split('\n')?.length > 100
? `max-h-96` ? `max-h-96`
: ''} overflow-y-auto" : ''} overflow-y-auto"
> >
@ -579,7 +591,7 @@
{/if} {/if}
{#if result || files} {#if result || files}
<div class=" "> <div class=" ">
<div class=" text-gray-500 text-xs mb-1">{$i18n.t('RESULT')}</div> <div class=" text-gray-500 text-sm mb-1">{$i18n.t('RESULT')}</div>
{#if result} {#if result}
<div class="text-sm">{`${JSON.stringify(result)}`}</div> <div class="text-sm">{`${JSON.stringify(result)}`}</div>
{/if} {/if}

View file

@ -79,7 +79,12 @@
title="Embedded content" title="Embedded content"
frameborder="0" frameborder="0"
sandbox sandbox
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';" on:load={(e) => {
try {
e.currentTarget.style.height =
e.currentTarget.contentWindow.document.body.scrollHeight + 20 + 'px';
} catch {}
}}
></iframe> ></iframe>
{:else} {:else}
{token.text} {token.text}
@ -116,17 +121,19 @@
referrerpolicy="strict-origin-when-cross-origin" referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen allowfullscreen
width="100%" width="100%"
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';" on:load={(e) => {
try {
e.currentTarget.style.height =
e.currentTarget.contentWindow.document.body.scrollHeight + 20 + 'px';
} catch {}
}}
></iframe> ></iframe>
{/if} {/if}
{:else if token.text.includes(`<source_id`)} {:else if token.text.includes(`<source_id`)}
<Source {id} {token} onClick={onSourceClick} /> <Source {id} {token} onClick={onSourceClick} />
{:else} {:else if token.text.trim().match(/^<br\s*\/?>$/i)}
{@const br = token.text.match(/<br\s*\/?>/)}
{#if br}
<br /> <br />
{:else} {:else}
{token.text} {token.text}
{/if} {/if}
{/if} {/if}
{/if}

View file

@ -24,7 +24,7 @@
export let onSourceClick: Function = () => {}; export let onSourceClick: Function = () => {};
</script> </script>
{#each tokens as token} {#each tokens as token, tokenIdx (tokenIdx)}
{#if token.type === 'escape'} {#if token.type === 'escape'}
{unescapeHtml(token.text)} {unescapeHtml(token.text)}
{:else if token.type === 'html'} {:else if token.type === 'html'}
@ -59,7 +59,12 @@
title={token.fileId} title={token.fileId}
width="100%" width="100%"
frameborder="0" frameborder="0"
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';" on:load={(e) => {
try {
e.currentTarget.style.height =
e.currentTarget.contentWindow.document.body.scrollHeight + 20 + 'px';
} catch {}
}}
></iframe> ></iframe>
{:else if token.type === 'mention'} {:else if token.type === 'mention'}
<MentionToken {token} /> <MentionToken {token} />

View file

@ -13,7 +13,7 @@
{:else} {:else}
{#each texts as text} {#each texts as text}
<span class="" transition:fade={{ duration: 100 }}> <span class="" transition:fade={{ duration: 100 }}>
{text} {text}{' '}
</span> </span>
{/each} {/each}
{/if} {/if}

View file

@ -321,7 +321,12 @@
title={token.fileId} title={token.fileId}
width="100%" width="100%"
frameborder="0" frameborder="0"
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';" on:load={(e) => {
try {
e.currentTarget.style.height =
e.currentTarget.contentWindow.document.body.scrollHeight + 20 + 'px';
} catch {}
}}
></iframe> ></iframe>
{:else if token.type === 'paragraph'} {:else if token.type === 'paragraph'}
<p dir="auto"> <p dir="auto">

View file

@ -312,13 +312,16 @@
onMount(async () => { onMount(async () => {
if (items) { if (items) {
tags = items tags = Array.from(
new Set(
items
.filter((item) => !(item.model?.info?.meta?.hidden ?? false)) .filter((item) => !(item.model?.info?.meta?.hidden ?? false))
.flatMap((item) => item.model?.tags ?? []) .flatMap((item) => item.model?.tags ?? [])
.map((tag) => tag.name); .map((tag) => tag.name.toLowerCase())
)
// Remove duplicates and sort )
tags = Array.from(new Set(tags)).sort((a, b) => a.localeCompare(b)); .sort((a, b) => a.localeCompare(b))
.map((tag) => capitalizeFirstLetter(tag));
} }
}); });

View file

@ -0,0 +1,96 @@
<script lang="ts">
import { getContext, onMount } from 'svelte';
import Tooltip from '../common/Tooltip.svelte';
import type { Shortcut } from '$lib/shortcuts';
export let shortcut: Shortcut;
export let isMac: boolean;
const i18n = getContext('i18n');
let keyboardLayoutMap: Map<string, string> | undefined;
onMount(async () => {
if (navigator.keyboard && 'getLayoutMap' in navigator.keyboard) {
try {
keyboardLayoutMap = await navigator.keyboard.getLayoutMap();
} catch (error) {
console.error('Failed to get keyboard layout map:', error);
}
}
});
function formatKey(key: string): string {
// First, handle special modifier keys which are defined in lowercase
switch (key) {
case 'mod':
return isMac ? '⌘' : 'Ctrl';
case 'shift':
return isMac ? '⇧' : 'Shift';
case 'alt':
return isMac ? '⌥' : 'Alt';
}
// Next, try to use the layout map with the raw KeyboardEvent.code (e.g., "Slash")
if (keyboardLayoutMap && keyboardLayoutMap.has(key)) {
const mappedKey = keyboardLayoutMap.get(key) ?? key;
// For single characters, make them uppercase. For others (like 'CapsLock'), leave as is.
return mappedKey.length === 1 ? mappedKey.toUpperCase() : mappedKey;
}
// Finally, provide a fallback for browsers without getLayoutMap or for keys not in the map
const lowerKey = key.toLowerCase();
switch (lowerKey) {
case 'backspace':
case 'delete':
return isMac ? '⌫' : 'Delete';
case 'escape':
return 'Esc';
case 'enter':
return isMac ? '↩' : 'Enter';
case 'tab':
return isMac ? '⇥' : 'Tab';
case 'arrowup':
return '↑';
case 'arrowdown':
return '↓';
case 'quote':
return "'";
case 'period':
return '.';
case 'slash':
return '/';
case 'semicolon':
return ';';
default:
// For 'KeyA', 'Digit1', etc., extract the last character.
if (lowerKey.startsWith('key') || lowerKey.startsWith('digit')) {
return key.slice(-1).toUpperCase();
}
// For anything else, just uppercase it.
return key.toUpperCase();
}
}
</script>
<div class="w-full flex justify-between">
<div class="text-sm whitespace-pre-line">
{#if shortcut.tooltip}
<Tooltip content={$i18n.t(shortcut.tooltip)}>
<span class="whitespace-nowrap">
{$i18n.t(shortcut.name)}<span class="text-xs">&nbsp;*</span>
</span>
</Tooltip>
{:else}
{$i18n.t(shortcut.name)}
{/if}
</div>
<div class="flex-shrink-0 flex justify-end self-start h-full space-x-1 text-xs">
{#each shortcut.keys.filter((key) => !(key.toLowerCase() === 'delete' && shortcut.keys.includes('Backspace'))) as key}
<div
class="h-fit px-1 py-0.5 flex items-start justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
{formatKey(key)}
</div>
{/each}
</div>
</div>

View file

@ -1,392 +1,99 @@
<script lang="ts"> <script lang="ts">
import { getContext } from 'svelte'; import { getContext, onMount } from 'svelte';
import Modal from '../common/Modal.svelte'; import Modal from '../common/Modal.svelte';
import { shortcuts } from '$lib/shortcuts';
import Tooltip from '../common/Tooltip.svelte'; import { settings } from '$lib/stores';
const i18n = getContext('i18n'); import ShortcutItem from './ShortcutItem.svelte';
import XMark from '$lib/components/icons/XMark.svelte'; import XMark from '$lib/components/icons/XMark.svelte';
type CategorizedShortcuts = {
[category: string]: {
left: Shortcut[];
right: Shortcut[];
};
};
const i18n = getContext('i18n');
export let show = false; export let show = false;
let categorizedShortcuts: CategorizedShortcuts = {};
let isMac = false;
onMount(() => {
isMac = /Mac/i.test(navigator.userAgent);
});
$: {
const allShortcuts = Object.values(shortcuts).filter((shortcut) => {
if (!shortcut.setting) {
return true;
}
return $settings[shortcut.setting.id] === shortcut.setting.value;
});
categorizedShortcuts = allShortcuts.reduce((acc, shortcut) => {
const category = shortcut.category;
if (!acc[category]) {
acc[category] = [];
}
acc[category].push(shortcut);
return acc;
}, {});
}
</script> </script>
<Modal bind:show> <Modal bind:show>
<div class="text-gray-700 dark:text-gray-100"> <div class="text-gray-700 dark:text-gray-100 px-5 py-4">
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4"> <div class="flex justify-between dark:text-gray-300 pb-2">
<div class=" text-lg font-medium self-center">{$i18n.t('Keyboard shortcuts')}</div> <div class="text-lg font-medium self-center">{$i18n.t('Keyboard Shortcuts')}</div>
<button <button class="self-center" on:click={() => (show = false)}>
class="self-center"
on:click={() => {
show = false;
}}
>
<XMark className={'size-5'} /> <XMark className={'size-5'} />
</button> </button>
</div> </div>
<div class="flex flex-col md:flex-row w-full p-5 md:space-x-4 dark:text-gray-200"> {#each Object.entries(categorizedShortcuts) as [category, items], categoryIndex}
{#if categoryIndex > 0}
<div class="py-3">
<div class="w-full border-t dark:border-gray-850 border-gray-50" />
</div>
{/if}
<div class="flex justify-between dark:text-gray-300 pb-2">
<div class="text-base self-center">{$i18n.t(category)}</div>
</div>
<div class="flex flex-col md:flex-row w-full md:space-x-2 dark:text-gray-200">
<div class="flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6"> <div class="flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6">
<div class="flex flex-col space-y-3 w-full self-start"> <div class=" grid grid-cols-1 sm:grid-cols-2 gap-2 gap-x-4 w-full">
<div class="w-full flex justify-between items-center"> {#each items as shortcut}
<div class=" text-sm">{$i18n.t('Open new chat')}</div> <div class="col-span-1 flex items-start">
<ShortcutItem {shortcut} {isMac} />
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
O
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Focus chat input')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Esc
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">
<Tooltip
content={$i18n.t(
'Only active when the chat input is in focus and an LLM is generating a response.'
)}
>
{$i18n.t('Stop Generating')}<span class="text-xs"> *</span>
</Tooltip>
</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Esc
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Copy last code block')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
;
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Copy last response')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
C
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">
<Tooltip
content={$i18n.t(
'Only active when "Paste Large Text as File" setting is toggled on.'
)}
>
{$i18n.t('Prevent file creation')}<span class="text-s"> *</span>
</Tooltip>
</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
V
</div>
</div>
</div>
</div>
<div class="flex flex-col space-y-3 w-full self-start">
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Generate prompt pair')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Enter
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Toggle search')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
K
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Toggle settings')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
.
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Toggle sidebar')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
S
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Delete chat')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Shift
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
⌫/Delete
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">{$i18n.t('Show shortcuts')}</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
Ctrl/⌘
</div>
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
/
</div>
</div>
</div>
</div>
</div>
</div>
<div class="px-5 pb-4 text-xs text-gray-500 dark:text-gray-400">
{$i18n.t(
'Shortcuts with an asterisk (*) are situational and only active under specific conditions.'
)}
</div>
<div class=" flex justify-between dark:text-gray-300 px-5">
<div class=" text-lg font-medium self-center">{$i18n.t('Input commands')}</div>
</div>
<div class="flex flex-col md:flex-row w-full p-5 md:space-x-4 dark:text-gray-200">
<div class=" flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6">
<div class="flex flex-col space-y-3 w-full self-start">
<div class="w-full flex justify-between items-center">
<div class=" text-sm">
{$i18n.t('Attach file from knowledge')}
</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
#
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">
{$i18n.t('Add custom prompt')}
</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
/
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">
{$i18n.t('Talk to model')}
</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
@
</div>
</div>
</div>
<div class="w-full flex justify-between items-center">
<div class=" text-sm">
{$i18n.t('Accept autocomplete generation / Jump to prompt variable')}
</div>
<div class="flex space-x-1 text-xs">
<div
class=" h-fit py-1 px-2 flex items-center justify-center rounded-sm border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
>
TAB
</div>
</div>
</div> </div>
{/each}
</div> </div>
</div> </div>
</div> </div>
{/each}
</div> </div>
</Modal> </Modal>
<style> <style>
input::-webkit-outer-spin-button, input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button { input::-webkit-inner-spin-button {
/* display: none; <- Crashes Chrome on hover */
-webkit-appearance: none; -webkit-appearance: none;
margin: 0; /* <-- Apparently some margin are still there even though it's hidden */ margin: 0;
} }
.tabs::-webkit-scrollbar { .tabs::-webkit-scrollbar {
display: none; /* for Chrome, Safari and Opera */ display: none;
} }
.tabs { .tabs {
-ms-overflow-style: none; /* IE and Edge */ -ms-overflow-style: none;
scrollbar-width: none; /* Firefox */ scrollbar-width: none;
} }
input[type='number'] { input[type='number'] {
-moz-appearance: textfield; /* Firefox */ -moz-appearance: textfield;
} }
</style> </style>

View file

@ -161,7 +161,7 @@
</div> </div>
{#if edit} {#if edit}
<div> <div class=" self-end">
<Tooltip <Tooltip
content={enableFullContent content={enableFullContent
? $i18n.t( ? $i18n.t(
@ -205,7 +205,7 @@
</div> </div>
{:else if isPDF} {:else if isPDF}
<div <div
class="flex mb-2.5 scrollbar-none overflow-x-auto w-full border-b border-gray-100 dark:border-gray-800 text-center text-sm font-medium bg-transparent dark:text-gray-200" class="flex mb-2.5 scrollbar-none overflow-x-auto w-full border-b border-gray-50 dark:border-gray-850 text-center text-sm font-medium bg-transparent dark:text-gray-200"
> >
<button <button
class="min-w-fit py-1.5 px-4 border-b {selectedTab === '' class="min-w-fit py-1.5 px-4 border-b {selectedTab === ''

View file

@ -0,0 +1,37 @@
<script lang="ts">
import { onMount } from 'svelte';
import { shortcuts } from '$lib/shortcuts';
import { settings } from '$lib/stores';
export let name: string;
export let className = '';
let isMac = false;
let mounted = false;
let keys: string[] = [];
let isVisible = true;
onMount(() => {
isMac = /Mac/i.test(navigator.userAgent);
keys = shortcuts[name]?.keys ?? [];
mounted = true;
});
function formatKey(key: string): string {
const lowerKey = key.toLowerCase();
if (lowerKey === 'mod') return isMac ? '⌘' : 'Ctrl';
if (lowerKey === 'shift') return isMac ? '⇧' : 'Shift';
if (lowerKey.startsWith('key')) return key.slice(-1);
return key;
}
</script>
{#if mounted && isVisible}
<div
class="hidden md:flex items-center self-center text-xs text-gray-400 dark:text-gray-600 {className}"
>
<span>{keys.map(formatKey).join(isMac ? '' : '+')}</span>
</div>
{/if}

View file

@ -92,6 +92,7 @@
aria-modal="true" aria-modal="true"
role="dialog" role="dialog"
class="modal fixed top-0 right-0 left-0 bottom-0 bg-black/30 dark:bg-black/60 w-full h-screen max-h-[100dvh] {containerClassName} flex justify-center z-9999 overflow-y-auto overscroll-contain" class="modal fixed top-0 right-0 left-0 bottom-0 bg-black/30 dark:bg-black/60 w-full h-screen max-h-[100dvh] {containerClassName} flex justify-center z-9999 overflow-y-auto overscroll-contain"
style="scrollbar-gutter: stable;"
in:fade={{ duration: 10 }} in:fade={{ duration: 10 }}
on:mousedown={() => { on:mousedown={() => {
show = false; show = false;

View file

@ -1,5 +1,7 @@
<script lang="ts"> <script lang="ts">
import { marked } from 'marked'; import { marked } from 'marked';
import DOMPurify from 'dompurify';
marked.use({ marked.use({
breaks: true, breaks: true,
gfm: true, gfm: true,
@ -336,12 +338,14 @@
let tr = state.tr; let tr = state.tr;
if (insertPromptAsRichText) { if (insertPromptAsRichText) {
const htmlContent = marked const htmlContent = DOMPurify.sanitize(
marked
.parse(text, { .parse(text, {
breaks: true, breaks: true,
gfm: true gfm: true
}) })
.trim(); .trim()
);
// Create a temporary div to parse HTML // Create a temporary div to parse HTML
const tempDiv = document.createElement('div'); const tempDiv = document.createElement('div');
@ -691,7 +695,6 @@
CodeBlockLowlight.configure({ CodeBlockLowlight.configure({
lowlight lowlight
}), }),
Highlight,
Typography, Typography,
TableKit.configure({ TableKit.configure({
table: { resizable: true } table: { resizable: true }

View file

@ -1,3 +1,6 @@
import { mount, unmount } from 'svelte';
import { createClassComponent } from 'svelte/legacy';
import tippy from 'tippy.js'; import tippy from 'tippy.js';
export function getSuggestionRenderer(Component: any, ComponentProps = {}) { export function getSuggestionRenderer(Component: any, ComponentProps = {}) {
@ -15,7 +18,8 @@ export function getSuggestionRenderer(Component: any, ComponentProps = {}) {
document.body.appendChild(container); document.body.appendChild(container);
// mount Svelte component // mount Svelte component
component = new Component({ component = createClassComponent({
component: Component,
target: container, target: container,
props: { props: {
char: props?.text, char: props?.text,
@ -104,7 +108,12 @@ export function getSuggestionRenderer(Component: any, ComponentProps = {}) {
popup?.destroy(); popup?.destroy();
popup = null; popup = null;
component?.$destroy(); try {
component.$destroy();
} catch (e) {
console.error('Error unmounting component:', e);
}
component = null; component = null;
if (container?.parentNode) container.parentNode.removeChild(container); if (container?.parentNode) container.parentNode.removeChild(container);

View file

@ -15,7 +15,13 @@
</script> </script>
<Tooltip <Tooltip
content={tooltip ? (state ? $i18n.t('Enabled') : $i18n.t('Disabled')) : ''} content={typeof tooltip === 'string'
? tooltip
: typeof tooltip === 'boolean' && tooltip
? state
? $i18n.t('Enabled')
: $i18n.t('Disabled')
: ''}
placement="top" placement="top"
> >
<Switch.Root <Switch.Root

View file

@ -5,7 +5,6 @@
import Switch from './Switch.svelte'; import Switch from './Switch.svelte';
import MapSelector from './Valves/MapSelector.svelte'; import MapSelector from './Valves/MapSelector.svelte';
import { split } from 'postcss/lib/list';
export let valvesSpec = null; export let valvesSpec = null;
export let valves = {}; export let valves = {};
@ -168,7 +167,7 @@
on:change={() => { on:change={() => {
dispatch('change'); dispatch('change');
}} }}
/> ></textarea>
{/if} {/if}
</div> </div>
</div> </div>

View file

@ -19,7 +19,8 @@
user, user,
settings, settings,
folders, folders,
showEmbeds showEmbeds,
artifactContents
} from '$lib/stores'; } from '$lib/stores';
import { flyAndScale } from '$lib/utils/transitions'; import { flyAndScale } from '$lib/utils/transitions';
import { getChatById } from '$lib/apis/chats'; import { getChatById } from '$lib/apis/chats';
@ -312,7 +313,7 @@
<div class="flex items-center">{$i18n.t('Settings')}</div> <div class="flex items-center">{$i18n.t('Settings')}</div>
</DropdownMenu.Item> --> </DropdownMenu.Item> -->
{#if $mobile} {#if $mobile && ($user?.role === 'admin' || ($user?.permissions.chat?.controls ?? true))}
<DropdownMenu.Item <DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl select-none w-full" class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl select-none w-full"
id="chat-controls-button" id="chat-controls-button"
@ -342,6 +343,7 @@
<div class="flex items-center">{$i18n.t('Overview')}</div> <div class="flex items-center">{$i18n.t('Overview')}</div>
</DropdownMenu.Item> </DropdownMenu.Item>
{#if ($artifactContents ?? []).length > 0}
<DropdownMenu.Item <DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl select-none w-full" class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl select-none w-full"
id="chat-overview-button" id="chat-overview-button"
@ -355,6 +357,7 @@
<Cube className=" size-4" strokeWidth="1.5" /> <Cube className=" size-4" strokeWidth="1.5" />
<div class="flex items-center">{$i18n.t('Artifacts')}</div> <div class="flex items-center">{$i18n.t('Artifacts')}</div>
</DropdownMenu.Item> </DropdownMenu.Item>
{/if}
<hr class="border-gray-50 dark:border-gray-800 my-1" /> <hr class="border-gray-50 dark:border-gray-800 my-1" />

View file

@ -233,7 +233,7 @@
{ {
label: $i18n.t('Create a new note'), label: $i18n.t('Create a new note'),
onClick: async () => { onClick: async () => {
await goto(`/notes${query ? `?content=${query}` : ''}`); await goto(`/notes?content=${query}`);
show = false; show = false;
onClose(); onClose();
}, },

View file

@ -62,6 +62,7 @@
import PinnedModelList from './Sidebar/PinnedModelList.svelte'; import PinnedModelList from './Sidebar/PinnedModelList.svelte';
import Note from '../icons/Note.svelte'; import Note from '../icons/Note.svelte';
import { slide } from 'svelte/transition'; import { slide } from 'svelte/transition';
import HotkeyHint from '../common/HotkeyHint.svelte';
const BREAKPOINT = 768; const BREAKPOINT = 768;
@ -128,7 +129,8 @@
}; };
const createFolder = async ({ name, data }) => { const createFolder = async ({ name, data }) => {
if (name === '') { name = name?.trim();
if (!name) {
toast.error($i18n.t('Folder name cannot be empty.')); toast.error($i18n.t('Folder name cannot be empty.'));
return; return;
} }
@ -181,6 +183,7 @@
console.log('initChatList'); console.log('initChatList');
currentChatPage.set(1); currentChatPage.set(1);
allChatsLoaded = false; allChatsLoaded = false;
scrollPaginationEnabled.set(false);
initFolders(); initFolders();
await Promise.all([ await Promise.all([
@ -366,10 +369,6 @@
navElement.style['-webkit-app-region'] = 'drag'; navElement.style['-webkit-app-region'] = 'drag';
} }
} }
if (!$showSidebar && !value) {
showSidebar.set(true);
}
}), }),
showSidebar.subscribe(async (value) => { showSidebar.subscribe(async (value) => {
localStorage.sidebar = value; localStorage.sidebar = value;
@ -478,6 +477,12 @@
<ChannelModal <ChannelModal
bind:show={showCreateChannel} bind:show={showCreateChannel}
onSubmit={async ({ name, access_control }) => { onSubmit={async ({ name, access_control }) => {
name = name?.trim();
if (!name) {
toast.error($i18n.t('Channel name cannot be empty.'));
return;
}
const res = await createNewChannel(localStorage.token, { const res = await createNewChannel(localStorage.token, {
name: name, name: name,
access_control: access_control access_control: access_control
@ -787,7 +792,7 @@
<div class="px-[7px] flex justify-center text-gray-800 dark:text-gray-200"> <div class="px-[7px] flex justify-center text-gray-800 dark:text-gray-200">
<a <a
id="sidebar-new-chat-button" id="sidebar-new-chat-button"
class="grow flex items-center space-x-3 rounded-2xl px-2.5 py-2 hover:bg-gray-100 dark:hover:bg-gray-900 transition outline-none" class="group grow flex items-center space-x-3 rounded-2xl px-2.5 py-2 hover:bg-gray-100 dark:hover:bg-gray-900 transition outline-none"
href="/" href="/"
draggable="false" draggable="false"
on:click={newChatHandler} on:click={newChatHandler}
@ -797,16 +802,18 @@
<PencilSquare className=" size-4.5" strokeWidth="2" /> <PencilSquare className=" size-4.5" strokeWidth="2" />
</div> </div>
<div class="flex self-center translate-y-[0.5px]"> <div class="flex flex-1 self-center translate-y-[0.5px]">
<div class=" self-center text-sm font-primary">{$i18n.t('New Chat')}</div> <div class=" self-center text-sm font-primary">{$i18n.t('New Chat')}</div>
</div> </div>
<HotkeyHint name="newChat" className=" group-hover:visible invisible" />
</a> </a>
</div> </div>
<div class="px-[7px] flex justify-center text-gray-800 dark:text-gray-200"> <div class="px-[7px] flex justify-center text-gray-800 dark:text-gray-200">
<button <button
id="sidebar-search-button" id="sidebar-search-button"
class="grow flex items-center space-x-3 rounded-2xl px-2.5 py-2 hover:bg-gray-100 dark:hover:bg-gray-900 transition outline-none" class="group grow flex items-center space-x-3 rounded-2xl px-2.5 py-2 hover:bg-gray-100 dark:hover:bg-gray-900 transition outline-none"
on:click={() => { on:click={() => {
showSearch.set(true); showSearch.set(true);
}} }}
@ -817,9 +824,10 @@
<Search strokeWidth="2" className="size-4.5" /> <Search strokeWidth="2" className="size-4.5" />
</div> </div>
<div class="flex self-center translate-y-[0.5px]"> <div class="flex flex-1 self-center translate-y-[0.5px]">
<div class=" self-center text-sm font-primary">{$i18n.t('Search')}</div> <div class=" self-center text-sm font-primary">{$i18n.t('Search')}</div>
</div> </div>
<HotkeyHint name="search" className=" group-hover:visible invisible" />
</button> </button>
</div> </div>
@ -880,7 +888,14 @@
</div> </div>
{#if ($models ?? []).length > 0 && ($settings?.pinnedModels ?? []).length > 0} {#if ($models ?? []).length > 0 && ($settings?.pinnedModels ?? []).length > 0}
<Folder
className="px-2 mt-0.5"
name={$i18n.t('Models')}
chevron={false}
dragAndDrop={false}
>
<PinnedModelList bind:selectedChatId {shiftKey} /> <PinnedModelList bind:selectedChatId {shiftKey} />
</Folder>
{/if} {/if}
{#if $config?.features?.enable_channels && ($user?.role === 'admin' || $channels.length > 0)} {#if $config?.features?.enable_channels && ($user?.role === 'admin' || $channels.length > 0)}

View file

@ -78,7 +78,7 @@
</a> </a>
{#if $user?.role === 'admin'} {#if $user?.role === 'admin'}
<button <div
class="absolute z-10 right-2 invisible group-hover:visible self-center flex items-center dark:text-gray-300" class="absolute z-10 right-2 invisible group-hover:visible self-center flex items-center dark:text-gray-300"
on:click={(e) => { on:click={(e) => {
e.stopPropagation(); e.stopPropagation();
@ -88,6 +88,6 @@
<button class="p-0.5 dark:hover:bg-gray-850 rounded-lg touch-auto" on:click={(e) => {}}> <button class="p-0.5 dark:hover:bg-gray-850 rounded-lg touch-auto" on:click={(e) => {}}>
<Cog6 className="size-3.5" /> <Cog6 className="size-3.5" />
</button> </button>
</button> </div>
{/if} {/if}
</div> </div>

View file

@ -393,7 +393,7 @@
<div class="flex items-center">{$i18n.t('Clone')}</div> <div class="flex items-center">{$i18n.t('Clone')}</div>
</DropdownMenu.Item> </DropdownMenu.Item>
{#if chatId} {#if chatId && $folders.length > 0}
<DropdownMenu.Sub> <DropdownMenu.Sub>
<DropdownMenu.SubTrigger <DropdownMenu.SubTrigger
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl select-none w-full" class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl select-none w-full"

View file

@ -19,7 +19,7 @@
{#if model} {#if model}
<!-- svelte-ignore a11y-no-static-element-interactions --> <!-- svelte-ignore a11y-no-static-element-interactions -->
<div <div
class="px-[7px] flex justify-center text-gray-800 dark:text-gray-200 cursor-grab relative group" class=" flex justify-center text-gray-800 dark:text-gray-200 cursor-grab relative group"
data-id={model?.id} data-id={model?.id}
on:mouseenter={(e) => { on:mouseenter={(e) => {
mouseOver = true; mouseOver = true;
@ -29,7 +29,7 @@
}} }}
> >
<a <a
class="grow flex items-center space-x-2.5 rounded-lg px-2 py-[7px] group-hover:bg-gray-100 dark:group-hover:bg-gray-900 transition" class="grow flex items-center space-x-2.5 rounded-xl px-2.5 py-[7px] group-hover:bg-gray-100 dark:group-hover:bg-gray-900 transition"
href="/?model={model?.id}" href="/?model={model?.id}"
on:click={onClick} on:click={onClick}
draggable="false" draggable="false"

View file

@ -470,7 +470,7 @@
> >
<!-- svelte-ignore a11y-no-static-element-interactions --> <!-- svelte-ignore a11y-no-static-element-interactions -->
<div class="w-full group"> <div class="w-full group">
<button <div
id="folder-{folderId}-button" id="folder-{folderId}-button"
class="relative w-full py-1 px-1.5 rounded-xl flex items-center gap-1.5 hover:bg-gray-100 dark:hover:bg-gray-900 transition {$selectedFolder?.id === class="relative w-full py-1 px-1.5 rounded-xl flex items-center gap-1.5 hover:bg-gray-100 dark:hover:bg-gray-900 transition {$selectedFolder?.id ===
folderId folderId
@ -595,7 +595,7 @@
</div> </div>
</FolderMenu> </FolderMenu>
</button> </button>
</button> </div>
</div> </div>
<div slot="content" class="w-full"> <div slot="content" class="w-full">

View file

@ -155,7 +155,7 @@
<DropdownMenu.Item <DropdownMenu.Item
as="a" as="a"
target="_blank" target="_blank"
class="flex gap-2 items-center py-1.5 px-3 text-sm select-none w-full cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl transition" class="flex gap-3 items-center py-1.5 px-3 text-sm select-none w-full cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl transition"
id="chat-share-button" id="chat-share-button"
on:click={() => { on:click={() => {
show = false; show = false;
@ -170,7 +170,7 @@
<DropdownMenu.Item <DropdownMenu.Item
as="a" as="a"
target="_blank" target="_blank"
class="flex gap-2 items-center py-1.5 px-3 text-sm select-none w-full cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl transition" class="flex gap-3 items-center py-1.5 px-3 text-sm select-none w-full cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl transition"
id="chat-share-button" id="chat-share-button"
on:click={() => { on:click={() => {
show = false; show = false;
@ -183,7 +183,7 @@
{/if} {/if}
<DropdownMenu.Item <DropdownMenu.Item
class="flex gap-2 items-center py-1.5 px-3 text-sm select-none w-full hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl transition cursor-pointer" class="flex gap-3 items-center py-1.5 px-3 text-sm select-none w-full hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl transition cursor-pointer"
id="chat-share-button" id="chat-share-button"
on:click={async () => { on:click={async () => {
show = false; show = false;

View file

@ -327,7 +327,7 @@ Based on the user's instruction, update and enhance the existing notes or select
}); });
</script> </script>
<div class="flex items-center mb-1.5 pt-1.5 px-2.5"> <div class="flex items-center mb-1.5 pt-1.5">
<div class="flex items-center mr-1"> <div class="flex items-center mr-1">
<button <button
class="p-0.5 bg-transparent transition rounded-lg" class="p-0.5 bg-transparent transition rounded-lg"
@ -358,7 +358,7 @@ Based on the user's instruction, update and enhance the existing notes or select
</div> </div>
</div> </div>
<div class="flex flex-col items-center flex-1 @container px-2.5"> <div class="flex flex-col items-center flex-1 @container">
<div class=" flex flex-col justify-between w-full overflow-y-auto h-full"> <div class=" flex flex-col justify-between w-full overflow-y-auto h-full">
<div class="mx-auto w-full md:px-0 h-full relative"> <div class="mx-auto w-full md:px-0 h-full relative">
<div class=" flex flex-col h-full"> <div class=" flex flex-col h-full">
@ -377,7 +377,7 @@ Based on the user's instruction, update and enhance the existing notes or select
<div class=" pb-[1rem]"> <div class=" pb-[1rem]">
{#if selectedContent} {#if selectedContent}
<div class="text-xs rounded-xl px-3.5 py-3 w-full markdown-prose-xs"> <div class="text-xs rounded-xl px-2.5 py-3 w-full markdown-prose-xs">
<blockquote> <blockquote>
<div class=" line-clamp-3"> <div class=" line-clamp-3">
{selectedContent?.text} {selectedContent?.text}

View file

@ -17,7 +17,7 @@
}; };
</script> </script>
<div class="flex items-center mb-1.5 pt-1.5 px-2.5"> <div class="flex items-center mb-1.5 pt-1.5">
<div class=" mr-1 flex items-center"> <div class=" mr-1 flex items-center">
<button <button
class="p-0.5 bg-transparent transition rounded-lg" class="p-0.5 bg-transparent transition rounded-lg"
@ -36,10 +36,10 @@
</div> </div>
</div> </div>
<div class="mt-1 px-2.5"> <div class="mt-1 px-1.5">
<div class="pb-10"> <div class="pb-10">
{#if files.length > 0} {#if files.length > 0}
<div class=" text-xs font-medium pb-1">{$i18n.t('Files')}</div> <div class=" text-xs font-medium mb-2">{$i18n.t('Files')}</div>
<div class="flex flex-col gap-1"> <div class="flex flex-col gap-1">
{#each files.filter((file) => file.type !== 'image') as file, fileIdx} {#each files.filter((file) => file.type !== 'image') as file, fileIdx}

View file

@ -99,7 +99,7 @@
{#if show} {#if show}
<div class="flex max-h-full min-h-full"> <div class="flex max-h-full min-h-full">
<div <div
class="w-full pt-2 bg-white dark:shadow-lg dark:bg-gray-850 z-40 pointer-events-auto overflow-y-auto scrollbar-hidden flex flex-col" class="w-full pt-2 bg-white dark:shadow-lg dark:bg-gray-850 z-40 pointer-events-auto overflow-y-auto scrollbar-hidden flex flex-col px-2"
> >
<slot /> <slot />
</div> </div>

View file

@ -303,13 +303,11 @@
}); });
onMount(async () => { onMount(async () => {
if ($page.url.searchParams.get('content')) { if ($page.url.searchParams.get('content') !== null) {
const content = $page.url.searchParams.get('content') ?? ''; const content = $page.url.searchParams.get('content') ?? '';
if (content) {
createNoteHandler(content); createNoteHandler(content);
return; return;
} }
}
await init(); await init();
loaded = true; loaded = true;

View file

@ -224,7 +224,7 @@
{$i18n.t('System Instructions')} {$i18n.t('System Instructions')}
</div> </div>
{#if !showSystem} {#if !showSystem && system.trim()}
<div class=" flex-1 text-gray-500 line-clamp-1"> <div class=" flex-1 text-gray-500 line-clamp-1">
{system} {system}
</div> </div>

View file

@ -184,12 +184,6 @@
if (uploadedFile) { if (uploadedFile) {
console.log(uploadedFile); console.log(uploadedFile);
if (uploadedFile.error) {
console.warn('File upload warning:', uploadedFile.error);
toast.warning(uploadedFile.error);
}
knowledge.files = knowledge.files.map((item) => { knowledge.files = knowledge.files.map((item) => {
if (item.itemId === tempItemId) { if (item.itemId === tempItemId) {
item.id = uploadedFile.id; item.id = uploadedFile.id;
@ -199,7 +193,14 @@
delete item.itemId; delete item.itemId;
return item; return item;
}); });
if (uploadedFile.error) {
console.warn('File upload warning:', uploadedFile.error);
toast.warning(uploadedFile.error);
knowledge.files = knowledge.files.filter((file) => file.id !== uploadedFile.id);
} else {
await addFileHandler(uploadedFile.id); await addFileHandler(uploadedFile.id);
}
} else { } else {
toast.error($i18n.t('Failed to upload file.')); toast.error($i18n.t('Failed to upload file.'));
} }

View file

@ -189,7 +189,7 @@
tags = models tags = models
.filter((model) => !(model?.meta?.hidden ?? false)) .filter((model) => !(model?.meta?.hidden ?? false))
.flatMap((model) => model?.meta?.tags ?? []) .flatMap((model) => model?.meta?.tags ?? [])
.map((tag) => tag.name); .map((tag) => tag.name.toLowerCase());
// Remove duplicates and sort // Remove duplicates and sort
tags = Array.from(new Set(tags)).sort((a, b) => a.localeCompare(b)); tags = Array.from(new Set(tags)).sort((a, b) => a.localeCompare(b));
@ -411,7 +411,9 @@
{#if (filteredModels ?? []).length !== 0} {#if (filteredModels ?? []).length !== 0}
<div class=" px-3 my-2 gap-1 lg:gap-2 grid lg:grid-cols-2" id="model-list"> <div class=" px-3 my-2 gap-1 lg:gap-2 grid lg:grid-cols-2" id="model-list">
{#each filteredModels as model (model.id)} {#each filteredModels as model (model.id)}
<button <!-- svelte-ignore a11y_no_static_element_interactions -->
<!-- svelte-ignore a11y_click_events_have_key_events -->
<div
class=" flex cursor-pointer dark:hover:bg-gray-850/50 hover:bg-gray-50 transition rounded-2xl w-full p-2.5" class=" flex cursor-pointer dark:hover:bg-gray-850/50 hover:bg-gray-50 transition rounded-2xl w-full p-2.5"
id="model-item-{model.id}" id="model-item-{model.id}"
on:click={() => { on:click={() => {
@ -498,6 +500,11 @@
<ModelMenu <ModelMenu
user={$user} user={$user}
{model} {model}
editHandler={() => {
goto(
`/workspace/models/edit?id=${encodeURIComponent(model.id)}`
);
}}
shareHandler={() => { shareHandler={() => {
shareModelHandler(model); shareModelHandler(model);
}} }}
@ -593,7 +600,7 @@
</div> </div>
</div> </div>
</div> </div>
</button> </div>
{/each} {/each}
</div> </div>
{:else} {:else}

View file

@ -34,10 +34,17 @@
<div class=" flex items-center gap-2 mr-3"> <div class=" flex items-center gap-2 mr-3">
<div class="self-center flex items-center"> <div class="self-center flex items-center">
<Checkbox <Checkbox
state={_actions[action].selected ? 'checked' : 'unchecked'} state={_actions[action].is_global
? 'checked'
: _actions[action].selected
? 'checked'
: 'unchecked'}
disabled={_actions[action].is_global}
on:change={(e) => { on:change={(e) => {
if (!_actions[action].is_global) {
_actions[action].selected = e.detail === 'checked'; _actions[action].selected = e.detail === 'checked';
selectedActionIds = Object.keys(_actions).filter((t) => _actions[t].selected); selectedActionIds = Object.keys(_actions).filter((t) => _actions[t].selected);
}
}} }}
/> />
</div> </div>

View file

@ -18,7 +18,7 @@
let loaded = false; let loaded = false;
let filesInputElement = null; let filesInputElement = null;
let inputFiles = []; let inputFiles = null;
const uploadFileHandler = async (file, fullContext: boolean = false) => { const uploadFileHandler = async (file, fullContext: boolean = false) => {
if ($user?.role !== 'admin' && !($user?.permissions?.chat?.file_upload ?? true)) { if ($user?.role !== 'admin' && !($user?.permissions?.chat?.file_upload ?? true)) {

View file

@ -22,6 +22,7 @@
export let user; export let user;
export let model; export let model;
export let editHandler: Function;
export let shareHandler: Function; export let shareHandler: Function;
export let cloneHandler: Function; export let cloneHandler: Function;
export let exportHandler: Function; export let exportHandler: Function;
@ -61,6 +62,16 @@
align="start" align="start"
transition={flyAndScale} transition={flyAndScale}
> >
<DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
on:click={() => {
editHandler();
}}
>
<Pencil />
<div class="flex items-center">{$i18n.t('Edit')}</div>
</DropdownMenu.Item>
<DropdownMenu.Item <DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl" class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
on:click={() => { on:click={() => {
@ -113,6 +124,19 @@
</div> </div>
</DropdownMenu.Item> </DropdownMenu.Item>
<DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
on:click={() => {
cloneHandler();
}}
>
<DocumentDuplicate />
<div class="flex items-center">{$i18n.t('Clone')}</div>
</DropdownMenu.Item>
<hr class="border-gray-50 dark:border-gray-800 my-1" />
<DropdownMenu.Item <DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl" class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
on:click={() => { on:click={() => {
@ -124,6 +148,17 @@
<div class="flex items-center">{$i18n.t('Copy Link')}</div> <div class="flex items-center">{$i18n.t('Copy Link')}</div>
</DropdownMenu.Item> </DropdownMenu.Item>
<DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
on:click={() => {
exportHandler();
}}
>
<Download />
<div class="flex items-center">{$i18n.t('Export')}</div>
</DropdownMenu.Item>
{#if $config?.features.enable_community_sharing} {#if $config?.features.enable_community_sharing}
<DropdownMenu.Item <DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl" class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
@ -136,28 +171,6 @@
</DropdownMenu.Item> </DropdownMenu.Item>
{/if} {/if}
<DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
on:click={() => {
cloneHandler();
}}
>
<DocumentDuplicate />
<div class="flex items-center">{$i18n.t('Clone')}</div>
</DropdownMenu.Item>
<DropdownMenu.Item
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
on:click={() => {
exportHandler();
}}
>
<Download />
<div class="flex items-center">{$i18n.t('Export')}</div>
</DropdownMenu.Item>
<hr class="border-gray-50 dark:border-gray-800 my-1" /> <hr class="border-gray-50 dark:border-gray-800 my-1" />
<DropdownMenu.Item <DropdownMenu.Item

View file

@ -1,5 +1,6 @@
<script lang="ts"> <script lang="ts">
import Checkbox from '$lib/components/common/Checkbox.svelte'; import Checkbox from '$lib/components/common/Checkbox.svelte';
import Tooltip from '$lib/components/common/Tooltip.svelte';
import { getContext, onMount } from 'svelte'; import { getContext, onMount } from 'svelte';
export let tools = []; export let tools = [];
@ -46,9 +47,11 @@
/> />
</div> </div>
<Tooltip content={_tools[tool]?.meta?.description ?? _tools[tool].id}>
<div class=" py-0.5 text-sm w-full capitalize font-medium"> <div class=" py-0.5 text-sm w-full capitalize font-medium">
{_tools[tool].name} {_tools[tool].name}
</div> </div>
</Tooltip>
</div> </div>
{/each} {/each}
</div> </div>

View file

@ -33,7 +33,7 @@
let promptsImportInputElement: HTMLInputElement; let promptsImportInputElement: HTMLInputElement;
let loaded = false; let loaded = false;
let importFiles = ''; let importFiles = null;
let query = ''; let query = '';
let prompts = []; let prompts = [];

View file

@ -106,7 +106,7 @@
<div class="flex flex-col w-full"> <div class="flex flex-col w-full">
<div class="flex items-center"> <div class="flex items-center">
<input <input
class="text-2xl font-semibold w-full bg-transparent outline-hidden" class="text-2xl font-medium w-full bg-transparent outline-hidden"
placeholder={$i18n.t('Title')} placeholder={$i18n.t('Title')}
bind:value={title} bind:value={title}
required required
@ -153,7 +153,7 @@
<div> <div>
<Textarea <Textarea
className="text-sm w-full bg-transparent outline-hidden overflow-y-hidden resize-none" className="text-sm w-full bg-transparent outline-hidden overflow-y-hidden resize-none"
placeholder={$i18n.t('Write a summary in 50 words that summarizes [topic or keyword].')} placeholder={$i18n.t('Write a summary in 50 words that summarizes {{topic}}.')}
bind:value={content} bind:value={content}
rows={6} rows={6}
required required
@ -181,7 +181,7 @@
<div class="my-4 flex justify-end pb-20"> <div class="my-4 flex justify-end pb-20">
<button <button
class=" text-sm w-full lg:w-fit px-4 py-2 transition rounded-lg {loading class=" text-sm w-full lg:w-fit px-4 py-2 transition rounded-xl {loading
? ' cursor-not-allowed bg-black hover:bg-gray-900 text-white dark:bg-white dark:hover:bg-gray-100 dark:text-black' ? ' cursor-not-allowed bg-black hover:bg-gray-900 text-white dark:bg-white dark:hover:bg-gray-100 dark:text-black'
: 'bg-black hover:bg-gray-900 text-white dark:bg-white dark:hover:bg-gray-100 dark:text-black'} flex w-full justify-center" : 'bg-black hover:bg-gray-900 text-white dark:bg-white dark:hover:bg-gray-100 dark:text-black'} flex w-full justify-center"
type="submit" type="submit"

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "يتم استخدام نموذج المهمة عند تنفيذ مهام مثل إنشاء عناوين للدردشات واستعلامات بحث الويب", "A task model is used when performing tasks such as generating titles for chats and web search queries": "يتم استخدام نموذج المهمة عند تنفيذ مهام مثل إنشاء عناوين للدردشات واستعلامات بحث الويب",
"a user": "مستخدم", "a user": "مستخدم",
"About": "عن", "About": "عن",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "", "Access": "",
"Access Control": "", "Access Control": "",
"Accessible to all users": "", "Accessible to all users": "",
@ -51,7 +50,6 @@
"Add Content": "", "Add Content": "",
"Add content here": "", "Add content here": "",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "أضافة مطالبة مخصصه",
"Add Details": "", "Add Details": "",
"Add Files": "إضافة ملفات", "Add Files": "إضافة ملفات",
"Add Group": "", "Add Group": "",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "", "Ask a question": "",
"Assistant": "", "Assistant": "",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "", "Character": "",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "", "Code execution": "",
@ -331,8 +330,6 @@
"Copied to clipboard": "", "Copied to clipboard": "",
"Copy": "نسخ", "Copy": "نسخ",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "انسخ كتلة التعليمات البرمجية الأخيرة",
"Copy last response": "انسخ الرد الأخير",
"Copy link": "", "Copy link": "",
"Copy Link": "أنسخ الرابط", "Copy Link": "أنسخ الرابط",
"Copy to clipboard": "", "Copy to clipboard": "",
@ -396,7 +393,6 @@
"Delete a model": "حذف الموديل", "Delete a model": "حذف الموديل",
"Delete All Chats": "حذف جميع الدردشات", "Delete All Chats": "حذف جميع الدردشات",
"Delete All Models": "", "Delete All Models": "",
"Delete chat": "حذف المحادثه",
"Delete Chat": "حذف المحادثه.", "Delete Chat": "حذف المحادثه.",
"Delete chat?": "", "Delete chat?": "",
"Delete folder?": "", "Delete folder?": "",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "التركيز على إدخال الدردشة",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "", "Folder deleted successfully": "",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "", "Generate Image": "",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "إنشاء استعلام بحث", "Generating search query": "إنشاء استعلام بحث",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "إدخال الأوامر",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "", "Key": "",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "اختصارات لوحة المفاتيح", "Keyboard shortcuts": "اختصارات لوحة المفاتيح",
"Keyboard Shortcuts": "",
"Knowledge": "", "Knowledge": "",
"Knowledge Access": "", "Knowledge Access": "",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "جارٍ التحميل...", "Loading...": "جارٍ التحميل...",
"local": "",
"Local": "", "Local": "",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "", "Model": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama الاصدار", "Ollama Version": "Ollama الاصدار",
"On": "تشغيل", "On": "تشغيل",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed": "",
"Only alphanumeric characters and hyphens are allowed in the command string.": "يُسمح فقط بالأحرف الأبجدية الرقمية والواصلات في سلسلة الأمر.", "Only alphanumeric characters and hyphens are allowed in the command string.": "يُسمح فقط بالأحرف الأبجدية الرقمية والواصلات في سلسلة الأمر.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "فتح محادثة جديده",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "", "Prefix ID": "",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "أخر 30 يوم", "Previous 30 days": "أخر 30 يوم",
"Previous 7 days": "أخر 7 أيام", "Previous 7 days": "أخر 7 أيام",
@ -1400,7 +1390,6 @@
"Select only one model to call": "", "Select only one model to call": "",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور", "Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "تم", "Send": "تم",
"Send a Message": "يُرجى إدخال طلبك هنا", "Send a Message": "يُرجى إدخال طلبك هنا",
@ -1442,14 +1431,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "عرض", "Show": "عرض",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "إظهار الاختصارات",
"Show your support!": "", "Show your support!": "",
"Showcased creativity": "أظهر الإبداع", "Showcased creativity": "أظهر الإبداع",
"Sign in": "تسجيل الدخول", "Sign in": "تسجيل الدخول",
@ -1484,7 +1471,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "", "Stop": "",
"Stop Generating": "",
"Stop Sequence": "وقف التسلسل", "Stop Sequence": "وقف التسلسل",
"Stream Chat Response": "", "Stream Chat Response": "",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1514,7 +1500,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "", "Tags Generation Prompt": "",
"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.": "", "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.": "",
"Talk to model": "تحدث إلى النموذج",
"Tap to interrupt": "", "Tap to interrupt": "",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1596,9 +1581,6 @@
"Toast notifications for new updates": "", "Toast notifications for new updates": "",
"Today": "اليوم", "Today": "اليوم",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "فتح وأغلاق الاعدادات",
"Toggle sidebar": "فتح وأغلاق الشريط الجانبي",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "", "Token": "",
"Too verbose": "", "Too verbose": "",
@ -1736,7 +1718,7 @@
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "اكتب اقتراحًا سريعًا (على سبيل المثال، من أنت؟)", "Write a prompt suggestion (e.g. Who are you?)": "اكتب اقتراحًا سريعًا (على سبيل المثال، من أنت؟)",
"Write a summary in 50 words that summarizes [topic or keyword].": "اكتب ملخصًا في 50 كلمة يلخص [الموضوع أو الكلمة الرئيسية]", "Write a summary in 50 words that summarizes {{topic}}.": "اكتب ملخصًا في 50 كلمة يلخص [الموضوع أو الكلمة الرئيسية]",
"Write something...": "", "Write something...": "",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "اكتب محتوى مطالبة النظام (system prompt) لنموذجك هنا\nعلى سبيل المثال: أنت ماريو من Super Mario Bros وتتصرف كمساعد.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "اكتب محتوى مطالبة النظام (system prompt) لنموذجك هنا\nعلى سبيل المثال: أنت ماريو من Super Mario Bros وتتصرف كمساعد.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "يُستخدم نموذج المهام عند تنفيذ مهام مثل توليد عناوين المحادثات واستعلامات البحث على الويب", "A task model is used when performing tasks such as generating titles for chats and web search queries": "يُستخدم نموذج المهام عند تنفيذ مهام مثل توليد عناوين المحادثات واستعلامات البحث على الويب",
"a user": "مستخدم", "a user": "مستخدم",
"About": "حول", "About": "حول",
"Accept autocomplete generation / Jump to prompt variable": "قبول توليد الإكمال التلقائي / الانتقال إلى متغير الموجه",
"Access": "الوصول", "Access": "الوصول",
"Access Control": "التحكم في الوصول", "Access Control": "التحكم في الوصول",
"Accessible to all users": "متاح لجميع المستخدمين", "Accessible to all users": "متاح لجميع المستخدمين",
@ -51,7 +50,6 @@
"Add Content": "إضافة محتوى", "Add Content": "إضافة محتوى",
"Add content here": "أضف المحتوى هنا", "Add content here": "أضف المحتوى هنا",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "إضافة موجه مخصص",
"Add Details": "", "Add Details": "",
"Add Files": "إضافة ملفات", "Add Files": "إضافة ملفات",
"Add Group": "إضافة مجموعة", "Add Group": "إضافة مجموعة",
@ -151,7 +149,6 @@
"Ask": "اسأل", "Ask": "اسأل",
"Ask a question": "اطرح سؤالاً", "Ask a question": "اطرح سؤالاً",
"Assistant": "المساعد", "Assistant": "المساعد",
"Attach file from knowledge": "إرفاق ملف من المعرفة",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "اسم القناة", "Channel Name": "اسم القناة",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "القنوات", "Channels": "القنوات",
"Character": "الشخصية", "Character": "الشخصية",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "تنفيذ الشيفرة", "Code execution": "تنفيذ الشيفرة",
@ -331,8 +330,6 @@
"Copied to clipboard": "تم النسخ إلى الحافظة", "Copied to clipboard": "تم النسخ إلى الحافظة",
"Copy": "نسخ", "Copy": "نسخ",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "نسخ آخر كتلة شيفرة",
"Copy last response": "نسخ آخر رد",
"Copy link": "", "Copy link": "",
"Copy Link": "نسخ الرابط", "Copy Link": "نسخ الرابط",
"Copy to clipboard": "نسخ إلى الحافظة", "Copy to clipboard": "نسخ إلى الحافظة",
@ -396,7 +393,6 @@
"Delete a model": "حذف الموديل", "Delete a model": "حذف الموديل",
"Delete All Chats": "حذف جميع الدردشات", "Delete All Chats": "حذف جميع الدردشات",
"Delete All Models": "حذف جميع النماذج", "Delete All Models": "حذف جميع النماذج",
"Delete chat": "حذف المحادثه",
"Delete Chat": "حذف المحادثه.", "Delete Chat": "حذف المحادثه.",
"Delete chat?": "هل تريد حذف المحادثة؟", "Delete chat?": "هل تريد حذف المحادثة؟",
"Delete folder?": "هل تريد حذف المجلد؟", "Delete folder?": "هل تريد حذف المجلد؟",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "التركيز على إدخال الدردشة",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "تم حذف المجلد بنجاح", "Folder deleted successfully": "تم حذف المجلد بنجاح",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "توليد صورة", "Generate an image": "توليد صورة",
"Generate Image": "توليد صورة", "Generate Image": "توليد صورة",
"Generate prompt pair": "توليد زوج من التعليمات",
"Generated Image": "", "Generated Image": "",
"Generating search query": "إنشاء استعلام بحث", "Generating search query": "إنشاء استعلام بحث",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "إدخال الأوامر",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "المفتاح", "Key": "المفتاح",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "اختصارات لوحة المفاتيح", "Keyboard shortcuts": "اختصارات لوحة المفاتيح",
"Keyboard Shortcuts": "",
"Knowledge": "المعرفة", "Knowledge": "المعرفة",
"Knowledge Access": "الوصول إلى المعرفة", "Knowledge Access": "الوصول إلى المعرفة",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "المحمّل", "Loader": "المحمّل",
"Loading Kokoro.js...": "جارٍ تحميل Kokoro.js...", "Loading Kokoro.js...": "جارٍ تحميل Kokoro.js...",
"Loading...": "جارٍ تحميل...", "Loading...": "جارٍ تحميل...",
"local": "",
"Local": "محلي", "Local": "محلي",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "لا يُسمح بالوصول إلى الموقع", "Location access not allowed": "لا يُسمح بالوصول إلى الموقع",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "النموذج", "Model": "النموذج",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama الاصدار", "Ollama Version": "Ollama الاصدار",
"On": "تشغيل", "On": "تشغيل",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "يُسمح فقط بالحروف والأرقام والواصلات", "Only alphanumeric characters and hyphens are allowed": "يُسمح فقط بالحروف والأرقام والواصلات",
"Only alphanumeric characters and hyphens are allowed in the command string.": "يُسمح فقط بالأحرف الأبجدية الرقمية والواصلات في سلسلة الأمر.", "Only alphanumeric characters and hyphens are allowed in the command string.": "يُسمح فقط بالأحرف الأبجدية الرقمية والواصلات في سلسلة الأمر.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "يمكن تعديل المجموعات فقط، أنشئ قاعدة معرفة جديدة لتعديل أو إضافة مستندات.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "يمكن تعديل المجموعات فقط، أنشئ قاعدة معرفة جديدة لتعديل أو إضافة مستندات.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "فتح محادثة جديده",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "معرف البادئة", "Prefix ID": "معرف البادئة",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "يُستخدم معرف البادئة لتفادي التعارض مع الاتصالات الأخرى من خلال إضافة بادئة إلى معرفات النماذج اتركه فارغًا لتعطيله", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "يُستخدم معرف البادئة لتفادي التعارض مع الاتصالات الأخرى من خلال إضافة بادئة إلى معرفات النماذج اتركه فارغًا لتعطيله",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "أخر 30 يوم", "Previous 30 days": "أخر 30 يوم",
"Previous 7 days": "أخر 7 أيام", "Previous 7 days": "أخر 7 أيام",
@ -1400,7 +1390,6 @@
"Select only one model to call": "اختر نموذجًا واحدًا فقط للاستدعاء", "Select only one model to call": "اختر نموذجًا واحدًا فقط للاستدعاء",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور", "Selected model(s) do not support image inputs": "النموذج (النماذج) المحددة لا تدعم مدخلات الصور",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "تم", "Send": "تم",
"Send a Message": "يُرجى إدخال طلبك هنا", "Send a Message": "يُرجى إدخال طلبك هنا",
@ -1442,14 +1431,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "عرض", "Show": "عرض",
"Show \"What's New\" modal on login": "عرض نافذة \"ما الجديد\" عند تسجيل الدخول", "Show \"What's New\" modal on login": "عرض نافذة \"ما الجديد\" عند تسجيل الدخول",
"Show Admin Details in Account Pending Overlay": "عرض تفاصيل المشرف في نافذة \"الحساب قيد الانتظار\"", "Show Admin Details in Account Pending Overlay": "عرض تفاصيل المشرف في نافذة \"الحساب قيد الانتظار\"",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "إظهار الاختصارات",
"Show your support!": "أظهر دعمك!", "Show your support!": "أظهر دعمك!",
"Showcased creativity": "أظهر الإبداع", "Showcased creativity": "أظهر الإبداع",
"Sign in": "تسجيل الدخول", "Sign in": "تسجيل الدخول",
@ -1484,7 +1471,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "إيقاف", "Stop": "إيقاف",
"Stop Generating": "",
"Stop Sequence": "وقف التسلسل", "Stop Sequence": "وقف التسلسل",
"Stream Chat Response": "بث استجابة الدردشة", "Stream Chat Response": "بث استجابة الدردشة",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1514,7 +1500,6 @@
"Tags Generation": "إنشاء الوسوم", "Tags Generation": "إنشاء الوسوم",
"Tags Generation Prompt": "توجيه إنشاء الوسوم", "Tags Generation Prompt": "توجيه إنشاء الوسوم",
"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.": "يتم استخدام أخذ العينات بدون ذيل لتقليل تأثير الرموز الأقل احتمالًا. القيمة الأعلى (مثل 2.0) تقلل التأثير أكثر، والقيمة 1.0 تعطل هذا الإعداد.", "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.": "يتم استخدام أخذ العينات بدون ذيل لتقليل تأثير الرموز الأقل احتمالًا. القيمة الأعلى (مثل 2.0) تقلل التأثير أكثر، والقيمة 1.0 تعطل هذا الإعداد.",
"Talk to model": "تحدث إلى النموذج",
"Tap to interrupt": "اضغط للمقاطعة", "Tap to interrupt": "اضغط للمقاطعة",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1596,9 +1581,6 @@
"Toast notifications for new updates": "إشعارات منبثقة للتحديثات الجديدة", "Toast notifications for new updates": "إشعارات منبثقة للتحديثات الجديدة",
"Today": "اليوم", "Today": "اليوم",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "فتح وأغلاق الاعدادات",
"Toggle sidebar": "فتح وأغلاق الشريط الجانبي",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "رمز", "Token": "رمز",
"Too verbose": "مفرط في التفاصيل", "Too verbose": "مفرط في التفاصيل",
@ -1736,7 +1718,7 @@
"Workspace Permissions": "صلاحيات مساحة العمل", "Workspace Permissions": "صلاحيات مساحة العمل",
"Write": "كتابة", "Write": "كتابة",
"Write a prompt suggestion (e.g. Who are you?)": "اكتب اقتراحًا سريعًا (على سبيل المثال، من أنت؟)", "Write a prompt suggestion (e.g. Who are you?)": "اكتب اقتراحًا سريعًا (على سبيل المثال، من أنت؟)",
"Write a summary in 50 words that summarizes [topic or keyword].": "اكتب ملخصًا في 50 كلمة يلخص [الموضوع أو الكلمة الرئيسية]", "Write a summary in 50 words that summarizes {{topic}}.": "اكتب ملخصًا في 50 كلمة يلخص [الموضوع أو الكلمة الرئيسية]",
"Write something...": "اكتب شيئًا...", "Write something...": "اكتب شيئًا...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "اكتب محتوى مطالبة النظام (system prompt) لنموذجك هنا\nعلى سبيل المثال: أنت ماريو من Super Mario Bros وتتصرف كمساعد.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "اكتب محتوى مطالبة النظام (system prompt) لنموذجك هنا\nعلى سبيل المثال: أنت ماريو من Super Mario Bros وتتصرف كمساعد.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Моделът на задачите се използва при изпълнението на задачите като генериране на заглавия за чатове и заявки за търсене в мрежата", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Моделът на задачите се използва при изпълнението на задачите като генериране на заглавия за чатове и заявки за търсене в мрежата",
"a user": "потребител", "a user": "потребител",
"About": "Относно", "About": "Относно",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "Достъп", "Access": "Достъп",
"Access Control": "Контрол на достъпа", "Access Control": "Контрол на достъпа",
"Accessible to all users": "Достъпно за всички потребители", "Accessible to all users": "Достъпно за всички потребители",
@ -51,7 +50,6 @@
"Add Content": "Добавяне на съдържание", "Add Content": "Добавяне на съдържание",
"Add content here": "Добавете съдържание тук", "Add content here": "Добавете съдържание тук",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "Добавяне на собствен промпт",
"Add Details": "", "Add Details": "",
"Add Files": "Добавяне на Файлове", "Add Files": "Добавяне на Файлове",
"Add Group": "Добавяне на група", "Add Group": "Добавяне на група",
@ -151,7 +149,6 @@
"Ask": "Питай", "Ask": "Питай",
"Ask a question": "Задайте въпрос", "Ask a question": "Задайте въпрос",
"Assistant": "Асистент", "Assistant": "Асистент",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "Име на канала", "Channel Name": "Име на канала",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "Канали", "Channels": "Канали",
"Character": "Герой", "Character": "Герой",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "Изпълнение на код", "Code execution": "Изпълнение на код",
@ -331,8 +330,6 @@
"Copied to clipboard": "Копирано в клипборда", "Copied to clipboard": "Копирано в клипборда",
"Copy": "Копирай", "Copy": "Копирай",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "Копиране на последен код блок",
"Copy last response": "Копиране на последен отговор",
"Copy link": "", "Copy link": "",
"Copy Link": "Копиране на връзка", "Copy Link": "Копиране на връзка",
"Copy to clipboard": "Копиране в клипборда", "Copy to clipboard": "Копиране в клипборда",
@ -396,7 +393,6 @@
"Delete a model": "Изтриване на модела", "Delete a model": "Изтриване на модела",
"Delete All Chats": "Изтриване на всички чатове", "Delete All Chats": "Изтриване на всички чатове",
"Delete All Models": "Изтриване на всички модели", "Delete All Models": "Изтриване на всички модели",
"Delete chat": "Изтриване на чат",
"Delete Chat": "Изтриване на Чат", "Delete Chat": "Изтриване на Чат",
"Delete chat?": "Изтриване на чата?", "Delete chat?": "Изтриване на чата?",
"Delete folder?": "Изтриване на папката?", "Delete folder?": "Изтриване на папката?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Фокусиране на чат вход",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "Папката е изтрита успешно", "Folder deleted successfully": "Папката е изтрита успешно",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "Генериране на изображение", "Generate an image": "Генериране на изображение",
"Generate Image": "Генериране на изображение", "Generate Image": "Генериране на изображение",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "Генериране на заявка за търсене", "Generating search query": "Генериране на заявка за търсене",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "Въведете команди",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "Ключ", "Key": "Ключ",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Клавиши за бърз достъп", "Keyboard shortcuts": "Клавиши за бърз достъп",
"Keyboard Shortcuts": "",
"Knowledge": "Знания", "Knowledge": "Знания",
"Knowledge Access": "Достъп до знания", "Knowledge Access": "Достъп до знания",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "Зареждане на Kokoro.js...", "Loading Kokoro.js...": "Зареждане на Kokoro.js...",
"Loading...": "Зареждане на...", "Loading...": "Зареждане на...",
"local": "",
"Local": "Локално", "Local": "Локално",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "Модел", "Model": "Модел",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama Версия", "Ollama Version": "Ollama Версия",
"On": "Вкл.", "On": "Вкл.",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "Разрешени са само буквено-цифрови знаци и тирета", "Only alphanumeric characters and hyphens are allowed": "Разрешени са само буквено-цифрови знаци и тирета",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Само алфанумерични знаци и тире са разрешени в командния низ.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Само алфанумерични знаци и тире са разрешени в командния низ.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Само колекциите могат да бъдат редактирани, създайте нова база от знания, за да редактирате/добавяте документи.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Само колекциите могат да бъдат редактирани, създайте нова база от знания, за да редактирате/добавяте документи.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Отвори нов чат",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "Префикс ID", "Prefix ID": "Префикс ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Префикс ID се използва за избягване на конфликти с други връзки чрез добавяне на префикс към ID-тата на моделите - оставете празно, за да деактивирате", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Префикс ID се използва за избягване на конфликти с други връзки чрез добавяне на префикс към ID-тата на моделите - оставете празно, за да деактивирате",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "Предишните 30 дни", "Previous 30 days": "Предишните 30 дни",
"Previous 7 days": "Предишните 7 дни", "Previous 7 days": "Предишните 7 дни",
@ -1396,7 +1386,6 @@
"Select only one model to call": "Изберете само един модел за извикване", "Select only one model to call": "Изберете само един модел за извикване",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Избраният(те) модел(и) не поддържа въвеждане на изображения", "Selected model(s) do not support image inputs": "Избраният(те) модел(и) не поддържа въвеждане на изображения",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "Изпрати", "Send": "Изпрати",
"Send a Message": "Изпращане на Съобщение", "Send a Message": "Изпращане на Съобщение",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "Права за споделяне", "Sharing Permissions": "Права за споделяне",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "Покажи", "Show": "Покажи",
"Show \"What's New\" modal on login": "Покажи модалния прозорец \"Какво е ново\" при вписване", "Show \"What's New\" modal on login": "Покажи модалния прозорец \"Какво е ново\" при вписване",
"Show Admin Details in Account Pending Overlay": "Покажи детайлите на администратора в наслагването на изчакващ акаунт", "Show Admin Details in Account Pending Overlay": "Покажи детайлите на администратора в наслагването на изчакващ акаунт",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "Покажи модел", "Show Model": "Покажи модел",
"Show shortcuts": "Покажи преки пътища",
"Show your support!": "Покажете вашата подкрепа!", "Show your support!": "Покажете вашата подкрепа!",
"Showcased creativity": "Показана креативност", "Showcased creativity": "Показана креативност",
"Sign in": "Вписване", "Sign in": "Вписване",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Спри", "Stop": "Спри",
"Stop Generating": "",
"Stop Sequence": "Стоп последователност", "Stop Sequence": "Стоп последователност",
"Stream Chat Response": "Поточен чат отговор", "Stream Chat Response": "Поточен чат отговор",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "Генериране на тагове", "Tags Generation": "Генериране на тагове",
"Tags Generation Prompt": "Промпт за генериране на тагове", "Tags Generation Prompt": "Промпт за генериране на тагове",
"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.": "", "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.": "",
"Talk to model": "Говорете с модела",
"Tap to interrupt": "Докоснете за прекъсване", "Tap to interrupt": "Докоснете за прекъсване",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "Изскачащи известия за нови актуализации", "Toast notifications for new updates": "Изскачащи известия за нови актуализации",
"Today": "Днес", "Today": "Днес",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "Превключване на настройките",
"Toggle sidebar": "Превключване на страничната лента",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "Токен", "Token": "Токен",
"Too verbose": "Прекалено многословно", "Too verbose": "Прекалено многословно",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "Разрешения за работното пространство", "Workspace Permissions": "Разрешения за работното пространство",
"Write": "Напиши", "Write": "Напиши",
"Write a prompt suggestion (e.g. Who are you?)": "Напиши предложение за промпт (напр. Кой сте вие?)", "Write a prompt suggestion (e.g. Who are you?)": "Напиши предложение за промпт (напр. Кой сте вие?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Напиши описание в 50 думи, което обобщава [тема или ключова дума].", "Write a summary in 50 words that summarizes {{topic}}.": "Напиши описание в 50 думи, което обобщава [тема или ключова дума].",
"Write something...": "Напишете нещо...", "Write something...": "Напишете нещо...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Напишете тук съдържанието на системния prompt на вашия модел\nнапр.: Вие сте Марио от Super Mario Bros и действате като асистент.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Напишете тук съдържанието на системния prompt на вашия модел\nнапр.: Вие сте Марио от Super Mario Bros и действате като асистент.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "চ্যাট এবং ওয়েব অনুসন্ধান প্রশ্নের জন্য শিরোনাম তৈরি করার মতো কাজগুলি সম্পাদন করার সময় একটি টাস্ক মডেল ব্যবহার করা হয়", "A task model is used when performing tasks such as generating titles for chats and web search queries": "চ্যাট এবং ওয়েব অনুসন্ধান প্রশ্নের জন্য শিরোনাম তৈরি করার মতো কাজগুলি সম্পাদন করার সময় একটি টাস্ক মডেল ব্যবহার করা হয়",
"a user": "একজন ব্যাবহারকারী", "a user": "একজন ব্যাবহারকারী",
"About": "সম্পর্কে", "About": "সম্পর্কে",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "", "Access": "",
"Access Control": "", "Access Control": "",
"Accessible to all users": "", "Accessible to all users": "",
@ -51,7 +50,6 @@
"Add Content": "", "Add Content": "",
"Add content here": "", "Add content here": "",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "একটি কাস্টম প্রম্পট যোগ করুন",
"Add Details": "", "Add Details": "",
"Add Files": "ফাইল যোগ করুন", "Add Files": "ফাইল যোগ করুন",
"Add Group": "", "Add Group": "",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "", "Ask a question": "",
"Assistant": "", "Assistant": "",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "", "Character": "",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "", "Code execution": "",
@ -331,8 +330,6 @@
"Copied to clipboard": "", "Copied to clipboard": "",
"Copy": "অনুলিপি", "Copy": "অনুলিপি",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "সর্বশেষ কোড ব্লক কপি করুন",
"Copy last response": "সর্বশেষ রেসপন্স কপি করুন",
"Copy link": "", "Copy link": "",
"Copy Link": "লিংক কপি করুন", "Copy Link": "লিংক কপি করুন",
"Copy to clipboard": "", "Copy to clipboard": "",
@ -396,7 +393,6 @@
"Delete a model": "একটি মডেল মুছে ফেলুন", "Delete a model": "একটি মডেল মুছে ফেলুন",
"Delete All Chats": "সব চ্যাট মুছে ফেলুন", "Delete All Chats": "সব চ্যাট মুছে ফেলুন",
"Delete All Models": "", "Delete All Models": "",
"Delete chat": "চ্যাট মুছে ফেলুন",
"Delete Chat": "চ্যাট মুছে ফেলুন", "Delete Chat": "চ্যাট মুছে ফেলুন",
"Delete chat?": "", "Delete chat?": "",
"Delete folder?": "", "Delete folder?": "",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "চ্যাট ইনপুট ফোকাস করুন",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "", "Folder deleted successfully": "",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "", "Generate Image": "",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "অনুসন্ধান ক্যোয়ারী তৈরি করা হচ্ছে", "Generating search query": "অনুসন্ধান ক্যোয়ারী তৈরি করা হচ্ছে",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "ইনপুট কমান্ডস",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "", "Key": "",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "কিবোর্ড শর্টকাটসমূহ", "Keyboard shortcuts": "কিবোর্ড শর্টকাটসমূহ",
"Keyboard Shortcuts": "",
"Knowledge": "", "Knowledge": "",
"Knowledge Access": "", "Knowledge Access": "",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "লোড হচ্ছে...", "Loading...": "লোড হচ্ছে...",
"local": "",
"Local": "", "Local": "",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "", "Model": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama ভার্সন", "Ollama Version": "Ollama ভার্সন",
"On": "চালু", "On": "চালু",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed": "",
"Only alphanumeric characters and hyphens are allowed in the command string.": "কমান্ড স্ট্রিং-এ শুধুমাত্র ইংরেজি অক্ষর, সংখ্যা এবং হাইফেন ব্যবহার করা যাবে।", "Only alphanumeric characters and hyphens are allowed in the command string.": "কমান্ড স্ট্রিং-এ শুধুমাত্র ইংরেজি অক্ষর, সংখ্যা এবং হাইফেন ব্যবহার করা যাবে।",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "নতুন চ্যাট খুলুন",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "", "Prefix ID": "",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "পূর্ব ৩০ দিন", "Previous 30 days": "পূর্ব ৩০ দিন",
"Previous 7 days": "পূর্ব দিন", "Previous 7 days": "পূর্ব দিন",
@ -1396,7 +1386,6 @@
"Select only one model to call": "", "Select only one model to call": "",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "নির্বাচিত মডেল(গুলি) চিত্র ইনপুট সমর্থন করে না", "Selected model(s) do not support image inputs": "নির্বাচিত মডেল(গুলি) চিত্র ইনপুট সমর্থন করে না",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "পাঠান", "Send": "পাঠান",
"Send a Message": "একটি মেসেজ পাঠান", "Send a Message": "একটি মেসেজ পাঠান",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "দেখান", "Show": "দেখান",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "শর্টকাটগুলো দেখান",
"Show your support!": "", "Show your support!": "",
"Showcased creativity": "সৃজনশীলতা প্রদর্শন", "Showcased creativity": "সৃজনশীলতা প্রদর্শন",
"Sign in": "সাইন ইন", "Sign in": "সাইন ইন",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "", "Stop": "",
"Stop Generating": "",
"Stop Sequence": "সিকোয়েন্স থামান", "Stop Sequence": "সিকোয়েন্স থামান",
"Stream Chat Response": "", "Stream Chat Response": "",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "", "Tags Generation Prompt": "",
"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.": "", "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.": "",
"Talk to model": "মডেলের সাথে কথা বলুন",
"Tap to interrupt": "", "Tap to interrupt": "",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "", "Toast notifications for new updates": "",
"Today": "আজ", "Today": "আজ",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "সেটিংস টোগল",
"Toggle sidebar": "সাইডবার টোগল",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "", "Token": "",
"Too verbose": "", "Too verbose": "",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "একটি প্রম্পট সাজেশন লিখুন (যেমন Who are you?)", "Write a prompt suggestion (e.g. Who are you?)": "একটি প্রম্পট সাজেশন লিখুন (যেমন Who are you?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "৫০ শব্দের মধ্যে [topic or keyword] এর একটি সারসংক্ষেপ লিখুন।", "Write a summary in 50 words that summarizes {{topic}}.": "৫০ শব্দের মধ্যে [topic or keyword] এর একটি সারসংক্ষেপ লিখুন।",
"Write something...": "", "Write something...": "",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "এখানে আপনার মডেলের সিস্টেম প্রম্পটের বিষয়বস্তু লিখুন\nউদাহরণ: আপনি সুপার মারিও ব্রস-এর মারিও, একজন সহকারী হিসেবে কাজ করছেন।", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "এখানে আপনার মডেলের সিস্টেম প্রম্পটের বিষয়বস্তু লিখুন\nউদাহরণ: আপনি সুপার মারিও ব্রস-এর মারিও, একজন সহকারী হিসেবে কাজ করছেন।",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "ལས་ཀའི་དཔེ་དབྱིབས་ནི་ཁ་བརྡའི་ཁ་བྱང་བཟོ་བ་དང་དྲ་བའི་འཚོལ་བཤེར་འདྲི་བ་ལྟ་བུའི་ལས་འགན་སྒྲུབ་སྐབས་སྤྱོད་ཀྱི་ཡོད།", "A task model is used when performing tasks such as generating titles for chats and web search queries": "ལས་ཀའི་དཔེ་དབྱིབས་ནི་ཁ་བརྡའི་ཁ་བྱང་བཟོ་བ་དང་དྲ་བའི་འཚོལ་བཤེར་འདྲི་བ་ལྟ་བུའི་ལས་འགན་སྒྲུབ་སྐབས་སྤྱོད་ཀྱི་ཡོད།",
"a user": "བེད་སྤྱོད་མཁན་ཞིག", "a user": "བེད་སྤྱོད་མཁན་ཞིག",
"About": "སྐོར་ལོ།", "About": "སྐོར་ལོ།",
"Accept autocomplete generation / Jump to prompt variable": "རང་འཚང་བཟོ་བསྐྲུན་དང་ལེན་བྱེད་པ། / འགུལ་སློང་འགྱུར་ཚད་ལ་མཆོངས་པ།",
"Access": "འཛུལ་སྤྱོད།", "Access": "འཛུལ་སྤྱོད།",
"Access Control": "འཛུལ་སྤྱོད་ཚོད་འཛིན།", "Access Control": "འཛུལ་སྤྱོད་ཚོད་འཛིན།",
"Accessible to all users": "བེད་སྤྱོད་མཁན་ཡོངས་ལ་འཛུལ་སྤྱོད་ཆོག་པ།", "Accessible to all users": "བེད་སྤྱོད་མཁན་ཡོངས་ལ་འཛུལ་སྤྱོད་ཆོག་པ།",
@ -51,7 +50,6 @@
"Add Content": "ནང་དོན་སྣོན་པ།", "Add Content": "ནང་དོན་སྣོན་པ།",
"Add content here": "ནང་དོན་འདིར་སྣོན་པ།", "Add content here": "ནང་དོན་འདིར་སྣོན་པ།",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "སྲོལ་བཟོས་འགུལ་སློང་སྣོན་པ།",
"Add Details": "", "Add Details": "",
"Add Files": "ཡིག་ཆ་སྣོན་པ།", "Add Files": "ཡིག་ཆ་སྣོན་པ།",
"Add Group": "ཚོགས་པ་སྣོན་པ།", "Add Group": "ཚོགས་པ་སྣོན་པ།",
@ -151,7 +149,6 @@
"Ask": "འདྲི་བ།", "Ask": "འདྲི་བ།",
"Ask a question": "དྲི་བ་ཞིག་འདྲི་བ།", "Ask a question": "དྲི་བ་ཞིག་འདྲི་བ།",
"Assistant": "ལག་རོགས་པ།", "Assistant": "ལག་རོགས་པ།",
"Attach file from knowledge": "ཤེས་བྱའི་ནང་ནས་ཡིག་ཆ་འཇོག་པ།",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "བགྲོ་གླེང་གི་མིང་།", "Channel Name": "བགྲོ་གླེང་གི་མིང་།",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "བགྲོ་གླེང་།", "Channels": "བགྲོ་གླེང་།",
"Character": "ཡིག་འབྲུ།", "Character": "ཡིག་འབྲུ།",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "ཀོཌ་ལག་བསྟར།", "Code execution": "ཀོཌ་ལག་བསྟར།",
@ -331,8 +330,6 @@
"Copied to clipboard": "སྦྱར་སྡེར་དུ་འདྲ་བཤུས་བྱས་པ།", "Copied to clipboard": "སྦྱར་སྡེར་དུ་འདྲ་བཤུས་བྱས་པ།",
"Copy": "འདྲ་བཤུས།", "Copy": "འདྲ་བཤུས།",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "ཀོཌ་གཏོགས་ཁོངས་མཐའ་མ་འདྲ་བཤུས།",
"Copy last response": "ལན་མཐའ་མ་འདྲ་བཤུས།",
"Copy link": "", "Copy link": "",
"Copy Link": "སྦྲེལ་ཐག་འདྲ་བཤུས།", "Copy Link": "སྦྲེལ་ཐག་འདྲ་བཤུས།",
"Copy to clipboard": "སྦྱར་སྡེར་དུ་འདྲ་བཤུས།", "Copy to clipboard": "སྦྱར་སྡེར་དུ་འདྲ་བཤུས།",
@ -396,7 +393,6 @@
"Delete a model": "དཔེ་དབྱིབས་ཤིག་བསུབ་པ།", "Delete a model": "དཔེ་དབྱིབས་ཤིག་བསུབ་པ།",
"Delete All Chats": "ཁ་བརྡ་ཡོངས་རྫོགས་བསུབ་པ།", "Delete All Chats": "ཁ་བརྡ་ཡོངས་རྫོགས་བསུབ་པ།",
"Delete All Models": "དཔེ་དབྱིབས་ཡོངས་རྫོགས་བསུབ་པ།", "Delete All Models": "དཔེ་དབྱིབས་ཡོངས་རྫོགས་བསུབ་པ།",
"Delete chat": "ཁ་བརྡ་བསུབ་པ།",
"Delete Chat": "ཁ་བརྡ་བསུབ་པ།", "Delete Chat": "ཁ་བརྡ་བསུབ་པ།",
"Delete chat?": "ཁ་བརྡ་བསུབ་པ།?", "Delete chat?": "ཁ་བརྡ་བསུབ་པ།?",
"Delete folder?": "ཡིག་སྣོད་བསུབ་པ།?", "Delete folder?": "ཡིག་སྣོད་བསུབ་པ།?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "ཁ་བརྡའི་ནང་འཇུག་ལ་དམིགས་པ།",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "ཡིག་སྣོད་ལེགས་པར་བསུབས་ཟིན།", "Folder deleted successfully": "ཡིག་སྣོད་ལེགས་པར་བསུབས་ཟིན།",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "པར་ཞིག་བཟོ་བ།", "Generate an image": "པར་ཞིག་བཟོ་བ།",
"Generate Image": "པར་བཟོ་བ།", "Generate Image": "པར་བཟོ་བ།",
"Generate prompt pair": "འགུལ་སློང་ཆ་ཞིག་བཟོ་བ།",
"Generated Image": "", "Generated Image": "",
"Generating search query": "འཚོལ་བཤེར་འདྲི་བ་བཟོ་བཞིན་པ།", "Generating search query": "འཚོལ་བཤེར་འདྲི་བ་བཟོ་བཞིན་པ།",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "ནང་དོན་ཆ་ཚང་དེ་ནང་དོན་དུ་བཅུག་ནས་སྒྲུབ་རིམ་ཆ་ཚང་བྱེད་པ། འདི་ནི་འདྲི་བ་རྙོག་འཛིང་ཅན་གྱི་ཆེད་དུ་འོས་སྦྱོར་བྱེད།", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "ནང་དོན་ཆ་ཚང་དེ་ནང་དོན་དུ་བཅུག་ནས་སྒྲུབ་རིམ་ཆ་ཚང་བྱེད་པ། འདི་ནི་འདྲི་བ་རྙོག་འཛིང་ཅན་གྱི་ཆེད་དུ་འོས་སྦྱོར་བྱེད།",
"Input": "", "Input": "",
"Input commands": "ནང་འཇུག་བཀའ་བརྡ།",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "ལྡེ་མིག", "Key": "ལྡེ་མིག",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "མཐེབ་གནོན་མྱུར་ལམ།", "Keyboard shortcuts": "མཐེབ་གནོན་མྱུར་ལམ།",
"Keyboard Shortcuts": "",
"Knowledge": "ཤེས་བྱ།", "Knowledge": "ཤེས་བྱ།",
"Knowledge Access": "ཤེས་བྱར་འཛུལ་སྤྱོད།", "Knowledge Access": "ཤེས་བྱར་འཛུལ་སྤྱོད།",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "ནང་འཇུག་བྱེད་པོ།", "Loader": "ནང་འཇུག་བྱེད་པོ།",
"Loading Kokoro.js...": "Kokoro.js ནང་འཇུག་བྱེད་བཞིན་པ།...", "Loading Kokoro.js...": "Kokoro.js ནང་འཇུག་བྱེད་བཞིན་པ།...",
"Loading...": "མངོན་འཁོར་འགྲེལ་འཁོད་བཞིན...", "Loading...": "མངོན་འཁོར་འགྲེལ་འཁོད་བཞིན...",
"local": "",
"Local": "ས་གནས།", "Local": "ས་གནས།",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "གནས་ཡུལ་འཛུལ་སྤྱོད་ལ་གནང་བ་མ་སྤྲད།", "Location access not allowed": "གནས་ཡུལ་འཛུལ་སྤྱོད་ལ་གནང་བ་མ་སྤྲད།",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "དཔེ་དབྱིབས།", "Model": "དཔེ་དབྱིབས།",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama པར་གཞི།", "Ollama Version": "Ollama པར་གཞི།",
"On": "ཁ་ཕྱེ་བ།", "On": "ཁ་ཕྱེ་བ།",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "ཨང་ཀི་དང་དབྱིན་ཡིག་གི་ཡིག་འབྲུ་དང་སྦྲེལ་རྟགས་ཁོ་ན་ཆོག་པ།", "Only alphanumeric characters and hyphens are allowed": "ཨང་ཀི་དང་དབྱིན་ཡིག་གི་ཡིག་འབྲུ་དང་སྦྲེལ་རྟགས་ཁོ་ན་ཆོག་པ།",
"Only alphanumeric characters and hyphens are allowed in the command string.": "བཀའ་བརྡའི་ཡིག་ཕྲེང་ནང་ཨང་ཀི་དང་དབྱིན་ཡིག་གི་ཡིག་འབྲུ་དང་སྦྲེལ་རྟགས་ཁོ་ན་ཆོག་པ།", "Only alphanumeric characters and hyphens are allowed in the command string.": "བཀའ་བརྡའི་ཡིག་ཕྲེང་ནང་ཨང་ཀི་དང་དབྱིན་ཡིག་གི་ཡིག་འབྲུ་དང་སྦྲེལ་རྟགས་ཁོ་ན་ཆོག་པ།",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "བསྡུ་གསོག་ཁོ་ན་ཞུ་དག་བྱེད་ཐུབ། ཡིག་ཆ་ཞུ་དག་/སྣོན་པར་ཤེས་བྱའི་རྟེན་གཞི་གསར་པ་ཞིག་བཟོ་བ།", "Only collections can be edited, create a new knowledge base to edit/add documents.": "བསྡུ་གསོག་ཁོ་ན་ཞུ་དག་བྱེད་ཐུབ། ཡིག་ཆ་ཞུ་དག་/སྣོན་པར་ཤེས་བྱའི་རྟེན་གཞི་གསར་པ་ཞིག་བཟོ་བ།",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "ཁ་བརྡ་གསར་པ་ཁ་ཕྱེ་བ།",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "སྔོན་སྦྱོར་ ID", "Prefix ID": "སྔོན་སྦྱོར་ ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "སྔོན་སྦྱོར་ ID ནི་དཔེ་དབྱིབས་ཀྱི་ IDs ལ་སྔོན་སྦྱོར་ཞིག་སྣོན་ནས་སྦྲེལ་མཐུད་གཞན་དང་གདོང་ཐུག་ལས་གཡོལ་བར་བེད་སྤྱོད་བྱེད། - ནུས་མེད་བཏང་བར་སྟོང་པ་བཞག་པ།", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "སྔོན་སྦྱོར་ ID ནི་དཔེ་དབྱིབས་ཀྱི་ IDs ལ་སྔོན་སྦྱོར་ཞིག་སྣོན་ནས་སྦྲེལ་མཐུད་གཞན་དང་གདོང་ཐུག་ལས་གཡོལ་བར་བེད་སྤྱོད་བྱེད། - ནུས་མེད་བཏང་བར་སྟོང་པ་བཞག་པ།",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "ཉིན་ ༣༠ སྔོན་མ།", "Previous 30 days": "ཉིན་ ༣༠ སྔོན་མ།",
"Previous 7 days": "ཉིན་ ༧ སྔོན་མ།", "Previous 7 days": "ཉིན་ ༧ སྔོན་མ།",
@ -1395,7 +1385,6 @@
"Select only one model to call": "འབོད་པར་དཔེ་དབྱིབས་གཅིག་ཁོ་ན་གདམ་པ།", "Select only one model to call": "འབོད་པར་དཔེ་དབྱིབས་གཅིག་ཁོ་ན་གདམ་པ།",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "གདམ་ཟིན་པའི་དཔེ་དབྱིབས་(ཚོ)ས་པར་གྱི་ནང་འཇུག་ལ་རྒྱབ་སྐྱོར་མི་བྱེད།", "Selected model(s) do not support image inputs": "གདམ་ཟིན་པའི་དཔེ་དབྱིབས་(ཚོ)ས་པར་གྱི་ནང་འཇུག་ལ་རྒྱབ་སྐྱོར་མི་བྱེད།",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "གཏོང་བ།", "Send": "གཏོང་བ།",
"Send a Message": "འཕྲིན་ཞིག་གཏོང་བ།", "Send a Message": "འཕྲིན་ཞིག་གཏོང་བ།",
@ -1437,14 +1426,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "མཉམ་སྤྱོད་དབང་ཚད།", "Sharing Permissions": "མཉམ་སྤྱོད་དབང་ཚད།",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "སྟོན་པ།", "Show": "སྟོན་པ།",
"Show \"What's New\" modal on login": "ནང་འཛུལ་སྐབས་ \"གསར་པ་ཅི་ཡོད\" modal སྟོན་པ།", "Show \"What's New\" modal on login": "ནང་འཛུལ་སྐབས་ \"གསར་པ་ཅི་ཡོད\" modal སྟོན་པ།",
"Show Admin Details in Account Pending Overlay": "རྩིས་ཁྲ་སྒུག་བཞིན་པའི་གཏོགས་ངོས་སུ་དོ་དམ་པའི་ཞིབ་ཕྲ་སྟོན་པ།", "Show Admin Details in Account Pending Overlay": "རྩིས་ཁྲ་སྒུག་བཞིན་པའི་གཏོགས་ངོས་སུ་དོ་དམ་པའི་ཞིབ་ཕྲ་སྟོན་པ།",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "དཔེ་དབྱིབས་སྟོན་པ།", "Show Model": "དཔེ་དབྱིབས་སྟོན་པ།",
"Show shortcuts": "མྱུར་ལམ་སྟོན་པ།",
"Show your support!": "ཁྱེད་ཀྱི་རྒྱབ་སྐྱོར་སྟོན་པ།", "Show your support!": "ཁྱེད་ཀྱི་རྒྱབ་སྐྱོར་སྟོན་པ།",
"Showcased creativity": "གསར་གཏོད་ནུས་པ་ངོམ་པ།", "Showcased creativity": "གསར་གཏོད་ནུས་པ་ངོམ་པ།",
"Sign in": "ནང་འཛུལ།", "Sign in": "ནང་འཛུལ།",
@ -1479,7 +1466,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "མཚམས་འཇོག", "Stop": "མཚམས་འཇོག",
"Stop Generating": "",
"Stop Sequence": "མཚམས་འཇོག་རིམ་པ།", "Stop Sequence": "མཚམས་འཇོག་རིམ་པ།",
"Stream Chat Response": "ཁ་བརྡའི་ལན་རྒྱུག་པ།", "Stream Chat Response": "ཁ་བརྡའི་ལན་རྒྱུག་པ།",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1509,7 +1495,6 @@
"Tags Generation": "རྟགས་བཟོ་སྐྲུན།", "Tags Generation": "རྟགས་བཟོ་སྐྲུན།",
"Tags Generation Prompt": "རྟགས་བཟོ་སྐྲུན་གྱི་འགུལ་སློང་།", "Tags Generation Prompt": "རྟགས་བཟོ་སྐྲུན་གྱི་འགུལ་སློང་།",
"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.": "མཇུག་མ་རང་དབང་མ་དཔེ་འདེམས་པ་ནི་ཐོན་འབྲས་ནས་ཆགས་ཚུལ་དམའ་བའི་ཊོཀ་ཀེན་གྱི་ཤུགས་རྐྱེན་ཉུང་དུ་གཏོང་བར་བེད་སྤྱོད་བྱེད། རིན་ཐང་མཐོ་བ་ (དཔེར་ན། 2.0) ཡིས་ཤུགས་རྐྱེན་དེ་སྔར་ལས་ཉུང་དུ་གཏོང་ངེས། དེ་བཞིན་དུ་རིན་ཐང་ 1.0 ཡིས་སྒྲིག་འགོད་འདི་ནུས་མེད་བཏང་ངེས།", "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.": "མཇུག་མ་རང་དབང་མ་དཔེ་འདེམས་པ་ནི་ཐོན་འབྲས་ནས་ཆགས་ཚུལ་དམའ་བའི་ཊོཀ་ཀེན་གྱི་ཤུགས་རྐྱེན་ཉུང་དུ་གཏོང་བར་བེད་སྤྱོད་བྱེད། རིན་ཐང་མཐོ་བ་ (དཔེར་ན། 2.0) ཡིས་ཤུགས་རྐྱེན་དེ་སྔར་ལས་ཉུང་དུ་གཏོང་ངེས། དེ་བཞིན་དུ་རིན་ཐང་ 1.0 ཡིས་སྒྲིག་འགོད་འདི་ནུས་མེད་བཏང་ངེས།",
"Talk to model": "དཔེ་དབྱིབས་ལ་སྐད་ཆ་ཤོད།",
"Tap to interrupt": "བར་ཆད་བྱེད་པར་མནན་པ།", "Tap to interrupt": "བར་ཆད་བྱེད་པར་མནན་པ།",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1591,9 +1576,6 @@
"Toast notifications for new updates": "གསར་སྒྱུར་གསར་པའི་ཆེད་དུ་ Toast བརྡ་ཁྱབ།", "Toast notifications for new updates": "གསར་སྒྱུར་གསར་པའི་ཆེད་དུ་ Toast བརྡ་ཁྱབ།",
"Today": "དེ་རིང་།", "Today": "དེ་རིང་།",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "སྒྲིག་འགོད་བརྗེ་བ།",
"Toggle sidebar": "ཟུར་ངོས་བརྗེ་བ།",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "ཊོཀ་ཀེན།", "Token": "ཊོཀ་ཀེན།",
"Too verbose": "རིང་དྲགས།", "Too verbose": "རིང་དྲགས།",
@ -1731,7 +1713,7 @@
"Workspace Permissions": "ལས་ཡུལ་གྱི་དབང་ཚད།", "Workspace Permissions": "ལས་ཡུལ་གྱི་དབང་ཚད།",
"Write": "འབྲི་བ།", "Write": "འབྲི་བ།",
"Write a prompt suggestion (e.g. Who are you?)": "འགུལ་སློང་གྲོས་གཞི་ཞིག་འབྲི་བ། (དཔེར་ན། ཁྱེད་སུ་ཡིན།)", "Write a prompt suggestion (e.g. Who are you?)": "འགུལ་སློང་གྲོས་གཞི་ཞིག་འབྲི་བ། (དཔེར་ན། ཁྱེད་སུ་ཡིན།)",
"Write a summary in 50 words that summarizes [topic or keyword].": "[བརྗོད་གཞི་ཡང་ན་གནད་ཚིག] ཕྱོགས་སྡོམ་བྱེད་པའི་ཚིག་ ༥༠ ནང་གི་སྙིང་བསྡུས་ཤིག་འབྲི་བ།", "Write a summary in 50 words that summarizes {{topic}}.": "[བརྗོད་གཞི་ཡང་ན་གནད་ཚིག] ཕྱོགས་སྡོམ་བྱེད་པའི་ཚིག་ ༥༠ ནང་གི་སྙིང་བསྡུས་ཤིག་འབྲི་བ།",
"Write something...": "ཅི་ཞིག་འབྲི་བ།...", "Write something...": "ཅི་ཞིག་འབྲི་བ།...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model zadatka koristi se pri izvođenju zadataka kao što su generiranje naslova za razgovore i upite za pretraživanje weba", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Model zadatka koristi se pri izvođenju zadataka kao što su generiranje naslova za razgovore i upite za pretraživanje weba",
"a user": "korisnik", "a user": "korisnik",
"About": "O aplikaciji", "About": "O aplikaciji",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "", "Access": "",
"Access Control": "", "Access Control": "",
"Accessible to all users": "", "Accessible to all users": "",
@ -51,7 +50,6 @@
"Add Content": "", "Add Content": "",
"Add content here": "", "Add content here": "",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "Dodaj prilagođeni prompt",
"Add Details": "", "Add Details": "",
"Add Files": "Dodaj datoteke", "Add Files": "Dodaj datoteke",
"Add Group": "", "Add Group": "",
@ -151,7 +149,6 @@
"Ask": "Pitaj", "Ask": "Pitaj",
"Ask a question": "Pitaj pitanje", "Ask a question": "Pitaj pitanje",
"Assistant": "Asistent", "Assistant": "Asistent",
"Attach file from knowledge": "Prikaci file iz 'knowledge' baze",
"Attach Knowledge": "Prikazi znanje", "Attach Knowledge": "Prikazi znanje",
"Attach Notes": "Prikazi zapise", "Attach Notes": "Prikazi zapise",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "", "Character": "",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "", "Code execution": "",
@ -331,8 +330,6 @@
"Copied to clipboard": "", "Copied to clipboard": "",
"Copy": "Kopiraj", "Copy": "Kopiraj",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "Kopiraj zadnji blok koda",
"Copy last response": "Kopiraj zadnji odgovor",
"Copy link": "", "Copy link": "",
"Copy Link": "Kopiraj vezu", "Copy Link": "Kopiraj vezu",
"Copy to clipboard": "", "Copy to clipboard": "",
@ -396,7 +393,6 @@
"Delete a model": "Izbriši model", "Delete a model": "Izbriši model",
"Delete All Chats": "Izbriši sve razgovore", "Delete All Chats": "Izbriši sve razgovore",
"Delete All Models": "", "Delete All Models": "",
"Delete chat": "Izbriši razgovor",
"Delete Chat": "Izbriši razgovor", "Delete Chat": "Izbriši razgovor",
"Delete chat?": "", "Delete chat?": "",
"Delete folder?": "", "Delete folder?": "",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Fokusiraj unos razgovora",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "", "Folder deleted successfully": "",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "Gneriraj sliku", "Generate Image": "Gneriraj sliku",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "Generiranje upita za pretraživanje", "Generating search query": "Generiranje upita za pretraživanje",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "Unos naredbi",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "", "Key": "",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Tipkovnički prečaci", "Keyboard shortcuts": "Tipkovnički prečaci",
"Keyboard Shortcuts": "",
"Knowledge": "Znanje", "Knowledge": "Znanje",
"Knowledge Access": "", "Knowledge Access": "",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "Učitavanje...", "Loading...": "Učitavanje...",
"local": "",
"Local": "", "Local": "",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "", "Model": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama verzija", "Ollama Version": "Ollama verzija",
"On": "Uključeno", "On": "Uključeno",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed": "",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Samo alfanumerički znakovi i crtice su dopušteni u naredbenom nizu.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Samo alfanumerički znakovi i crtice su dopušteni u naredbenom nizu.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Otvorite novi razgovor",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "", "Prefix ID": "",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "Prethodnih 30 dana", "Previous 30 days": "Prethodnih 30 dana",
"Previous 7 days": "Prethodnih 7 dana", "Previous 7 days": "Prethodnih 7 dana",
@ -1397,7 +1387,6 @@
"Select only one model to call": "Odaberite samo jedan model za poziv", "Select only one model to call": "Odaberite samo jedan model za poziv",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Odabrani modeli ne podržavaju unose slika", "Selected model(s) do not support image inputs": "Odabrani modeli ne podržavaju unose slika",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "Pošalji", "Send": "Pošalji",
"Send a Message": "Pošaljite poruku", "Send a Message": "Pošaljite poruku",
@ -1439,14 +1428,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "Pokaži", "Show": "Pokaži",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "Pokaži prečace",
"Show your support!": "", "Show your support!": "",
"Showcased creativity": "Prikazana kreativnost", "Showcased creativity": "Prikazana kreativnost",
"Sign in": "Prijava", "Sign in": "Prijava",
@ -1481,7 +1468,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "", "Stop": "",
"Stop Generating": "",
"Stop Sequence": "Zaustavi sekvencu", "Stop Sequence": "Zaustavi sekvencu",
"Stream Chat Response": "", "Stream Chat Response": "",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1511,7 +1497,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "", "Tags Generation Prompt": "",
"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.": "", "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.": "",
"Talk to model": "Razgovarajte s modelom",
"Tap to interrupt": "", "Tap to interrupt": "",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1593,9 +1578,6 @@
"Toast notifications for new updates": "", "Toast notifications for new updates": "",
"Today": "Danas", "Today": "Danas",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "Prebaci postavke",
"Toggle sidebar": "Prebaci bočnu traku",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "", "Token": "",
"Too verbose": "", "Too verbose": "",
@ -1733,7 +1715,7 @@
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "Napišite prijedlog prompta (npr. Tko si ti?)", "Write a prompt suggestion (e.g. Who are you?)": "Napišite prijedlog prompta (npr. Tko si ti?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Napišite sažetak u 50 riječi koji sažima [temu ili ključnu riječ].", "Write a summary in 50 words that summarizes {{topic}}.": "Napišite sažetak u 50 riječi koji sažima [temu ili ključnu riječ].",
"Write something...": "", "Write something...": "",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Ovdje upišite sadržaj sistemskog upita (system prompt) vašeg modela\nnpr.: Vi ste Mario iz Super Mario Bros i djelujete kao asistent.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Ovdje upišite sadržaj sistemskog upita (system prompt) vašeg modela\nnpr.: Vi ste Mario iz Super Mario Bros i djelujete kao asistent.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un model de tasca s'utilitza quan es realitzen tasques com ara generar títols per a xats i consultes de cerca per a la web", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Un model de tasca s'utilitza quan es realitzen tasques com ara generar títols per a xats i consultes de cerca per a la web",
"a user": "un usuari", "a user": "un usuari",
"About": "Sobre", "About": "Sobre",
"Accept autocomplete generation / Jump to prompt variable": "Acceptar la generació autocompletada / Saltar a la variable d'indicació",
"Access": "Accés", "Access": "Accés",
"Access Control": "Control d'accés", "Access Control": "Control d'accés",
"Accessible to all users": "Accessible a tots els usuaris", "Accessible to all users": "Accessible a tots els usuaris",
@ -51,7 +50,6 @@
"Add Content": "Afegir contingut", "Add Content": "Afegir contingut",
"Add content here": "Afegir contingut aquí", "Add content here": "Afegir contingut aquí",
"Add Custom Parameter": "Afegir paràmetre personalitzat ", "Add Custom Parameter": "Afegir paràmetre personalitzat ",
"Add custom prompt": "Afegir una indicació personalitzada",
"Add Details": "Afegir detalls", "Add Details": "Afegir detalls",
"Add Files": "Afegir arxius", "Add Files": "Afegir arxius",
"Add Group": "Afegir grup", "Add Group": "Afegir grup",
@ -151,7 +149,6 @@
"Ask": "Preguntar", "Ask": "Preguntar",
"Ask a question": "Fer una pregunta", "Ask a question": "Fer una pregunta",
"Assistant": "Assistent", "Assistant": "Assistent",
"Attach file from knowledge": "Adjuntar arxiu del coneixement",
"Attach Knowledge": "Adjuntar coneixement", "Attach Knowledge": "Adjuntar coneixement",
"Attach Notes": "Adjuntar notes", "Attach Notes": "Adjuntar notes",
"Attach Webpage": "Adjuntar pàgina web", "Attach Webpage": "Adjuntar pàgina web",
@ -221,6 +218,7 @@
"Channel": "Canal", "Channel": "Canal",
"Channel deleted successfully": "Canal suprimit correctament", "Channel deleted successfully": "Canal suprimit correctament",
"Channel Name": "Nom del canal", "Channel Name": "Nom del canal",
"Channel name cannot be empty.": "",
"Channel updated successfully": "Canal actualitzat correctament", "Channel updated successfully": "Canal actualitzat correctament",
"Channels": "Canals", "Channels": "Canals",
"Character": "Personatge", "Character": "Personatge",
@ -272,6 +270,7 @@
"Close modal": "Tancar el modal", "Close modal": "Tancar el modal",
"Close settings modal": "Tancar el modal de configuració", "Close settings modal": "Tancar el modal de configuració",
"Close Sidebar": "Tancar la barra lateral", "Close Sidebar": "Tancar la barra lateral",
"cloud": "",
"CMU ARCTIC speaker embedding name": "Nom de l'altaveu d'incrustació CMU ARCTIC", "CMU ARCTIC speaker embedding name": "Nom de l'altaveu d'incrustació CMU ARCTIC",
"Code Block": "Bloc de codi", "Code Block": "Bloc de codi",
"Code execution": "Execució de codi", "Code execution": "Execució de codi",
@ -331,8 +330,6 @@
"Copied to clipboard": "Copiat al porta-retalls", "Copied to clipboard": "Copiat al porta-retalls",
"Copy": "Copiar", "Copy": "Copiar",
"Copy Formatted Text": "Copiar el text formatat", "Copy Formatted Text": "Copiar el text formatat",
"Copy last code block": "Copiar l'últim bloc de codi",
"Copy last response": "Copiar l'última resposta",
"Copy link": "Copiar l'enllaç", "Copy link": "Copiar l'enllaç",
"Copy Link": "Copiar l'enllaç", "Copy Link": "Copiar l'enllaç",
"Copy to clipboard": "Copiar al porta-retalls", "Copy to clipboard": "Copiar al porta-retalls",
@ -396,7 +393,6 @@
"Delete a model": "Eliminar un model", "Delete a model": "Eliminar un model",
"Delete All Chats": "Eliminar tots els xats", "Delete All Chats": "Eliminar tots els xats",
"Delete All Models": "Eliminar tots els models", "Delete All Models": "Eliminar tots els models",
"Delete chat": "Eliminar xat",
"Delete Chat": "Eliminar xat", "Delete Chat": "Eliminar xat",
"Delete chat?": "Eliminar el xat?", "Delete chat?": "Eliminar el xat?",
"Delete folder?": "Eliminar la carpeta?", "Delete folder?": "Eliminar la carpeta?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "URL de l'API de base de Firecrawl", "Firecrawl API Base URL": "URL de l'API de base de Firecrawl",
"Firecrawl API Key": "Clau API de Firecrawl", "Firecrawl API Key": "Clau API de Firecrawl",
"Floating Quick Actions": "Accions ràpides flotants", "Floating Quick Actions": "Accions ràpides flotants",
"Focus chat input": "Estableix el focus a l'entrada del xat",
"Folder": "Carpeta", "Folder": "Carpeta",
"Folder Background Image": "Imatge del fons de la carpeta", "Folder Background Image": "Imatge del fons de la carpeta",
"Folder deleted successfully": "Carpeta eliminada correctament", "Folder deleted successfully": "Carpeta eliminada correctament",
@ -786,7 +781,6 @@
"Generate": "Generar", "Generate": "Generar",
"Generate an image": "Generar una imatge", "Generate an image": "Generar una imatge",
"Generate Image": "Generar imatge", "Generate Image": "Generar imatge",
"Generate prompt pair": "Generar parella d'indicació",
"Generated Image": "Imatge generada", "Generated Image": "Imatge generada",
"Generating search query": "Generant consulta", "Generating search query": "Generant consulta",
"Generating...": "Generant...", "Generating...": "Generant...",
@ -870,7 +864,6 @@
"Initials": "Inicials", "Initials": "Inicials",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injectar tot el contingut com a context per a un processament complet, això es recomana per a consultes complexes.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injectar tot el contingut com a context per a un processament complet, això es recomana per a consultes complexes.",
"Input": "Entrada", "Input": "Entrada",
"Input commands": "Entra comandes",
"Input Key (e.g. text, unet_name, steps)": "Entra la clau (p. ex. text, unet_name, steps)", "Input Key (e.g. text, unet_name, steps)": "Entra la clau (p. ex. text, unet_name, steps)",
"Input Variables": "Variables d'entrada", "Input Variables": "Variables d'entrada",
"Insert": "Inserir", "Insert": "Inserir",
@ -909,6 +902,7 @@
"Key": "Clau", "Key": "Clau",
"Key is required": "La clau és necessària", "Key is required": "La clau és necessària",
"Keyboard shortcuts": "Dreceres de teclat", "Keyboard shortcuts": "Dreceres de teclat",
"Keyboard Shortcuts": "",
"Knowledge": "Coneixement", "Knowledge": "Coneixement",
"Knowledge Access": "Accés al coneixement", "Knowledge Access": "Accés al coneixement",
"Knowledge Base": "Base de coneixement", "Knowledge Base": "Base de coneixement",
@ -952,6 +946,7 @@
"Loader": "Carregador", "Loader": "Carregador",
"Loading Kokoro.js...": "Carregant Kokoro.js", "Loading Kokoro.js...": "Carregant Kokoro.js",
"Loading...": "Carregant...", "Loading...": "Carregant...",
"local": "",
"Local": "Local", "Local": "Local",
"Local Task Model": "Model local de tasques", "Local Task Model": "Model local de tasques",
"Location access not allowed": "Accés a la ubicació no permesa", "Location access not allowed": "Accés a la ubicació no permesa",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (feina/escola)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (feina/escola)",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "Mistral OCR", "Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "És necessària la clau API de Mistral OCR", "Mistral OCR API Key required.": "És necessària la clau API de Mistral OCR",
"Model": "Model", "Model": "Model",
@ -1119,8 +1113,6 @@
"Ollama Version": "Versió d'Ollama", "Ollama Version": "Versió d'Ollama",
"On": "Activat", "On": "Activat",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Només actiu quan la configuració \"Enganxar text gran com a fitxer\" està activa.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Només actiu quan la entrada de xat està en focus i un model de llenguatge està generant una resposta.",
"Only alphanumeric characters and hyphens are allowed": "Només es permeten caràcters alfanumèrics i guions", "Only alphanumeric characters and hyphens are allowed": "Només es permeten caràcters alfanumèrics i guions",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Només es permeten caràcters alfanumèrics i guions en la comanda.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Només es permeten caràcters alfanumèrics i guions en la comanda.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Només es poden editar col·leccions, crea una nova base de coneixement per editar/afegir documents.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Només es poden editar col·leccions, crea una nova base de coneixement per editar/afegir documents.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Obre el modal per configurar la connexió", "Open modal to configure connection": "Obre el modal per configurar la connexió",
"Open Modal To Manage Floating Quick Actions": "Obre el model per configurar les Accions ràpides flotants", "Open Modal To Manage Floating Quick Actions": "Obre el model per configurar les Accions ràpides flotants",
"Open Modal To Manage Image Compression": "Obrir un modal per gestionar la compressió d'imatges", "Open Modal To Manage Image Compression": "Obrir un modal per gestionar la compressió d'imatges",
"Open new chat": "Obre un xat nou",
"Open Sidebar": "Obre la barra lateral", "Open Sidebar": "Obre la barra lateral",
"Open User Profile Menu": "Obre el menú de perfil d'usuari", "Open User Profile Menu": "Obre el menú de perfil d'usuari",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI pot utilitzar eines de servidors OpenAPI.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI pot utilitzar eines de servidors OpenAPI.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "Prefereixo no dir-ho", "Prefer not to say": "Prefereixo no dir-ho",
"Prefix ID": "Identificador del prefix", "Prefix ID": "Identificador del prefix",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "L'identificador de prefix s'utilitza per evitar conflictes amb altres connexions afegint un prefix als ID de model; deixa'l en blanc per desactivar-lo.", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "L'identificador de prefix s'utilitza per evitar conflictes amb altres connexions afegint un prefix als ID de model; deixa'l en blanc per desactivar-lo.",
"Prevent file creation": "Impedir la creació d'arxius",
"Preview": "Previsualització", "Preview": "Previsualització",
"Previous 30 days": "30 dies anteriors", "Previous 30 days": "30 dies anteriors",
"Previous 7 days": "7 dies anteriors", "Previous 7 days": "7 dies anteriors",
@ -1397,7 +1387,6 @@
"Select only one model to call": "Seleccionar només un model per trucar", "Select only one model to call": "Seleccionar només un model per trucar",
"Select view": "Seleccionar una vista", "Select view": "Seleccionar una vista",
"Selected model(s) do not support image inputs": "El(s) model(s) seleccionats no admeten l'entrada d'imatges", "Selected model(s) do not support image inputs": "El(s) model(s) seleccionats no admeten l'entrada d'imatges",
"Self-Hosted": "",
"semantic": "semàntic", "semantic": "semàntic",
"Send": "Enviar", "Send": "Enviar",
"Send a Message": "Enviar un missatge", "Send a Message": "Enviar un missatge",
@ -1439,14 +1428,12 @@
"Share your background and interests": "Compartir la teva informació i interessos", "Share your background and interests": "Compartir la teva informació i interessos",
"Shared with you": "Compartit amb tu", "Shared with you": "Compartit amb tu",
"Sharing Permissions": "Compartir els permisos", "Sharing Permissions": "Compartir els permisos",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Les dreceres de teclat amb un asterisc (*) són situacionals i només actives sota condicions específiques.",
"Show": "Mostrar", "Show": "Mostrar",
"Show \"What's New\" modal on login": "Veure 'Què hi ha de nou' a l'entrada", "Show \"What's New\" modal on login": "Veure 'Què hi ha de nou' a l'entrada",
"Show Admin Details in Account Pending Overlay": "Mostrar els detalls de l'administrador a la superposició del compte pendent", "Show Admin Details in Account Pending Overlay": "Mostrar els detalls de l'administrador a la superposició del compte pendent",
"Show Formatting Toolbar": "Mostrar la barra de format", "Show Formatting Toolbar": "Mostrar la barra de format",
"Show image preview": "Mostrar la previsualització de la imatge", "Show image preview": "Mostrar la previsualització de la imatge",
"Show Model": "Mostrar el model", "Show Model": "Mostrar el model",
"Show shortcuts": "Mostrar dreceres",
"Show your support!": "Mostra el teu suport!", "Show your support!": "Mostra el teu suport!",
"Showcased creativity": "Creativitat mostrada", "Showcased creativity": "Creativitat mostrada",
"Sign in": "Iniciar sessió", "Sign in": "Iniciar sessió",
@ -1481,7 +1468,6 @@
"Status Updates": "Estat de les actualitzacions", "Status Updates": "Estat de les actualitzacions",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Atura", "Stop": "Atura",
"Stop Generating": "Atura la generació",
"Stop Sequence": "Atura la seqüència", "Stop Sequence": "Atura la seqüència",
"Stream Chat Response": "Fer streaming de la resposta del xat", "Stream Chat Response": "Fer streaming de la resposta del xat",
"Stream Delta Chunk Size": "Mida del fragment Delta del flux", "Stream Delta Chunk Size": "Mida del fragment Delta del flux",
@ -1511,7 +1497,6 @@
"Tags Generation": "Generació d'etiquetes", "Tags Generation": "Generació d'etiquetes",
"Tags Generation Prompt": "Indicació per a la generació d'etiquetes", "Tags Generation Prompt": "Indicació per a la generació d'etiquetes",
"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.": "El mostreig sense cua s'utilitza per reduir l'impacte de tokens menys probables de la sortida. Un valor més alt (p. ex., 2,0) reduirà més l'impacte, mentre que un valor d'1,0 desactiva aquesta configuració.", "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.": "El mostreig sense cua s'utilitza per reduir l'impacte de tokens menys probables de la sortida. Un valor més alt (p. ex., 2,0) reduirà més l'impacte, mentre que un valor d'1,0 desactiva aquesta configuració.",
"Talk to model": "Parlar amb el model",
"Tap to interrupt": "Prem per interrompre", "Tap to interrupt": "Prem per interrompre",
"Task List": "Llista de tasques", "Task List": "Llista de tasques",
"Task Model": "Model de tasques", "Task Model": "Model de tasques",
@ -1593,9 +1578,6 @@
"Toast notifications for new updates": "Notificacions Toast de noves actualitzacions", "Toast notifications for new updates": "Notificacions Toast de noves actualitzacions",
"Today": "Avui", "Today": "Avui",
"Today at {{LOCALIZED_TIME}}": "Avui a les {{LOCALIZED_TIME}}", "Today at {{LOCALIZED_TIME}}": "Avui a les {{LOCALIZED_TIME}}",
"Toggle search": "Alternar cerca",
"Toggle settings": "Alterna preferències",
"Toggle sidebar": "Alterna la barra lateral",
"Toggle whether current connection is active.": "Alterna si la connexió actual està activa.", "Toggle whether current connection is active.": "Alterna si la connexió actual està activa.",
"Token": "Token", "Token": "Token",
"Too verbose": "Massa explicit", "Too verbose": "Massa explicit",
@ -1733,7 +1715,7 @@
"Workspace Permissions": "Permisos de l'espai de treball", "Workspace Permissions": "Permisos de l'espai de treball",
"Write": "Escriure", "Write": "Escriure",
"Write a prompt suggestion (e.g. Who are you?)": "Escriu una suggerència d'indicació (p. ex. Qui ets?)", "Write a prompt suggestion (e.g. Who are you?)": "Escriu una suggerència d'indicació (p. ex. Qui ets?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Escriu un resum en 50 paraules que resumeixi [tema o paraula clau].", "Write a summary in 50 words that summarizes {{topic}}.": "Escriu un resum en 50 paraules que resumeixi [tema o paraula clau].",
"Write something...": "Escriu quelcom...", "Write something...": "Escriu quelcom...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Escriu aquí el contingut del system prompt del teu model\np. ex.: Ets en Mario de Super Mario Bros i actues com a assistent.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Escriu aquí el contingut del system prompt del teu model\np. ex.: Ets en Mario de Super Mario Bros i actues com a assistent.",
"Yacy Instance URL": "URL de la instància de Yacy", "Yacy Instance URL": "URL de la instància de Yacy",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "", "A task model is used when performing tasks such as generating titles for chats and web search queries": "",
"a user": "usa ka user", "a user": "usa ka user",
"About": "Mahitungod sa", "About": "Mahitungod sa",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "", "Access": "",
"Access Control": "", "Access Control": "",
"Accessible to all users": "", "Accessible to all users": "",
@ -51,7 +50,6 @@
"Add Content": "", "Add Content": "",
"Add content here": "", "Add content here": "",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "Pagdugang og custom prompt",
"Add Details": "", "Add Details": "",
"Add Files": "Idugang ang mga file", "Add Files": "Idugang ang mga file",
"Add Group": "", "Add Group": "",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "", "Ask a question": "",
"Assistant": "", "Assistant": "",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "", "Character": "",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "", "Code execution": "",
@ -331,8 +330,6 @@
"Copied to clipboard": "", "Copied to clipboard": "",
"Copy": "", "Copy": "",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "Kopyaha ang katapusang bloke sa code",
"Copy last response": "Kopyaha ang kataposang tubag",
"Copy link": "", "Copy link": "",
"Copy Link": "", "Copy Link": "",
"Copy to clipboard": "", "Copy to clipboard": "",
@ -396,7 +393,6 @@
"Delete a model": "Pagtangtang sa usa ka template", "Delete a model": "Pagtangtang sa usa ka template",
"Delete All Chats": "", "Delete All Chats": "",
"Delete All Models": "", "Delete All Models": "",
"Delete chat": "Pagtangtang sa panaghisgot",
"Delete Chat": "", "Delete Chat": "",
"Delete chat?": "", "Delete chat?": "",
"Delete folder?": "", "Delete folder?": "",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Pag-focus sa entry sa diskusyon",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "", "Folder deleted successfully": "",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "", "Generate Image": "",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "", "Generating search query": "",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "Pagsulod sa input commands",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "", "Key": "",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Mga shortcut sa keyboard", "Keyboard shortcuts": "Mga shortcut sa keyboard",
"Keyboard Shortcuts": "",
"Knowledge": "", "Knowledge": "",
"Knowledge Access": "", "Knowledge Access": "",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "Nagkarga...", "Loading...": "Nagkarga...",
"local": "",
"Local": "", "Local": "",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "", "Model": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama nga bersyon", "Ollama Version": "Ollama nga bersyon",
"On": "Gipaandar", "On": "Gipaandar",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed": "",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Ang alphanumeric nga mga karakter ug hyphen lang ang gitugotan sa command string.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Ang alphanumeric nga mga karakter ug hyphen lang ang gitugotan sa command string.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Ablihi ang bag-ong diskusyon",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "", "Prefix ID": "",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "", "Previous 30 days": "",
"Previous 7 days": "", "Previous 7 days": "",
@ -1396,7 +1386,6 @@
"Select only one model to call": "", "Select only one model to call": "",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "", "Selected model(s) do not support image inputs": "",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "", "Send": "",
"Send a Message": "Magpadala ug mensahe", "Send a Message": "Magpadala ug mensahe",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "Pagpakita", "Show": "Pagpakita",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "Ipakita ang mga shortcut",
"Show your support!": "", "Show your support!": "",
"Showcased creativity": "", "Showcased creativity": "",
"Sign in": "Para maka log in", "Sign in": "Para maka log in",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "", "Stop": "",
"Stop Generating": "",
"Stop Sequence": "Pagkasunod-sunod sa pagsira", "Stop Sequence": "Pagkasunod-sunod sa pagsira",
"Stream Chat Response": "", "Stream Chat Response": "",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "", "Tags Generation Prompt": "",
"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.": "", "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.": "",
"Talk to model": "Pakig-istorya sa modelo",
"Tap to interrupt": "", "Tap to interrupt": "",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "", "Toast notifications for new updates": "",
"Today": "", "Today": "",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "I-toggle ang mga setting",
"Toggle sidebar": "I-toggle ang sidebar",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "", "Token": "",
"Too verbose": "", "Too verbose": "",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "Pagsulat og gisugyot nga prompt (eg. Kinsa ka?)", "Write a prompt suggestion (e.g. Who are you?)": "Pagsulat og gisugyot nga prompt (eg. Kinsa ka?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Pagsulat og 50 ka pulong nga summary nga nagsumaryo [topic o keyword].", "Write a summary in 50 words that summarizes {{topic}}.": "Pagsulat og 50 ka pulong nga summary nga nagsumaryo [topic o keyword].",
"Write something...": "", "Write something...": "",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Isulat dinhi ang sulod sa system prompt sa imong modelo\npananglitan: Ikaw si Mario gikan sa Super Mario Bros, naglihok isip assistant.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Isulat dinhi ang sulod sa system prompt sa imong modelo\npananglitan: Ikaw si Mario gikan sa Super Mario Bros, naglihok isip assistant.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model pro úkoly se používá při provádění úkolů, jako je generování názvů pro konverzace a vyhledávací dotazy na webu.", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Model pro úkoly se používá při provádění úkolů, jako je generování názvů pro konverzace a vyhledávací dotazy na webu.",
"a user": "uživatel", "a user": "uživatel",
"About": "O aplikaci", "About": "O aplikaci",
"Accept autocomplete generation / Jump to prompt variable": "Přijmout automatické dokončení / Přejít na proměnnou instrukce",
"Access": "Přístup", "Access": "Přístup",
"Access Control": "Řízení přístupu", "Access Control": "Řízení přístupu",
"Accessible to all users": "Přístupné pro všechny uživatele", "Accessible to all users": "Přístupné pro všechny uživatele",
@ -51,7 +50,6 @@
"Add Content": "Přidat obsah", "Add Content": "Přidat obsah",
"Add content here": "Zde přidejte obsah", "Add content here": "Zde přidejte obsah",
"Add Custom Parameter": "Přidat vlastní parametr", "Add Custom Parameter": "Přidat vlastní parametr",
"Add custom prompt": "Přidat vlastní instrukce",
"Add Details": "Přidat podrobnosti", "Add Details": "Přidat podrobnosti",
"Add Files": "Přidat soubory", "Add Files": "Přidat soubory",
"Add Group": "Přidat skupinu", "Add Group": "Přidat skupinu",
@ -151,7 +149,6 @@
"Ask": "Zeptat se", "Ask": "Zeptat se",
"Ask a question": "Položit otázku", "Ask a question": "Položit otázku",
"Assistant": "Asistent", "Assistant": "Asistent",
"Attach file from knowledge": "Připojit soubor ze znalostní báze",
"Attach Knowledge": "Připojit znalosti", "Attach Knowledge": "Připojit znalosti",
"Attach Notes": "Přiojit poznámky", "Attach Notes": "Přiojit poznámky",
"Attach Webpage": "Připojit web", "Attach Webpage": "Připojit web",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "Kanál byl úspěšně smazán", "Channel deleted successfully": "Kanál byl úspěšně smazán",
"Channel Name": "Název kanálu", "Channel Name": "Název kanálu",
"Channel name cannot be empty.": "",
"Channel updated successfully": "Kanál byl úspěšně aktualizován", "Channel updated successfully": "Kanál byl úspěšně aktualizován",
"Channels": "Kanály", "Channels": "Kanály",
"Character": "Postava", "Character": "Postava",
@ -272,6 +270,7 @@
"Close modal": "Zavřít modální okno", "Close modal": "Zavřít modální okno",
"Close settings modal": "Zavřít modální okno nastavení", "Close settings modal": "Zavřít modální okno nastavení",
"Close Sidebar": "Zavřít postranní panel", "Close Sidebar": "Zavřít postranní panel",
"cloud": "",
"CMU ARCTIC speaker embedding name": "Název vektorizace mluvčího CMU ARCTIC", "CMU ARCTIC speaker embedding name": "Název vektorizace mluvčího CMU ARCTIC",
"Code Block": "Blok kódu", "Code Block": "Blok kódu",
"Code execution": "Spouštění kódu", "Code execution": "Spouštění kódu",
@ -331,8 +330,6 @@
"Copied to clipboard": "Zkopírováno do schránky", "Copied to clipboard": "Zkopírováno do schránky",
"Copy": "Kopírovat", "Copy": "Kopírovat",
"Copy Formatted Text": "Kopírovat formátovaný text", "Copy Formatted Text": "Kopírovat formátovaný text",
"Copy last code block": "Kopírovat poslední blok kódu",
"Copy last response": "Kopírovat poslední odpověď",
"Copy link": "Kopírovat odkaz", "Copy link": "Kopírovat odkaz",
"Copy Link": "Kopírovat odkaz", "Copy Link": "Kopírovat odkaz",
"Copy to clipboard": "Kopírovat do schránky", "Copy to clipboard": "Kopírovat do schránky",
@ -396,7 +393,6 @@
"Delete a model": "Smazat model", "Delete a model": "Smazat model",
"Delete All Chats": "Smazat všechny konverzace", "Delete All Chats": "Smazat všechny konverzace",
"Delete All Models": "Smazat všechny modely", "Delete All Models": "Smazat všechny modely",
"Delete chat": "Smazat konverzaci",
"Delete Chat": "Smazat konverzaci", "Delete Chat": "Smazat konverzaci",
"Delete chat?": "Smazat konverzaci?", "Delete chat?": "Smazat konverzaci?",
"Delete folder?": "Smazat složku?", "Delete folder?": "Smazat složku?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "Základní URL API pro Firecrawl", "Firecrawl API Base URL": "Základní URL API pro Firecrawl",
"Firecrawl API Key": "API klíč pro Firecrawl", "Firecrawl API Key": "API klíč pro Firecrawl",
"Floating Quick Actions": "Plovoucí rychlé akce", "Floating Quick Actions": "Plovoucí rychlé akce",
"Focus chat input": "Zaměřit vstupní pole konverzace",
"Folder": "Složka", "Folder": "Složka",
"Folder Background Image": "Obrázek na pozadí složky", "Folder Background Image": "Obrázek na pozadí složky",
"Folder deleted successfully": "Složka byla úspěšně smazána", "Folder deleted successfully": "Složka byla úspěšně smazána",
@ -786,7 +781,6 @@
"Generate": "Generovat", "Generate": "Generovat",
"Generate an image": "Generovat obrázek", "Generate an image": "Generovat obrázek",
"Generate Image": "Generovat obrázek", "Generate Image": "Generovat obrázek",
"Generate prompt pair": "Generovat pár instrukcí",
"Generated Image": "", "Generated Image": "",
"Generating search query": "Generuji vyhledávací dotaz", "Generating search query": "Generuji vyhledávací dotaz",
"Generating...": "Generuji...", "Generating...": "Generuji...",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Vložit celý obsah jako kontext pro komplexní zpracování, doporučeno pro složité dotazy.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Vložit celý obsah jako kontext pro komplexní zpracování, doporučeno pro složité dotazy.",
"Input": "Vstup", "Input": "Vstup",
"Input commands": "Vstupní příkazy",
"Input Key (e.g. text, unet_name, steps)": "Vstupní klíč (např. text, unet_name, steps)", "Input Key (e.g. text, unet_name, steps)": "Vstupní klíč (např. text, unet_name, steps)",
"Input Variables": "Vstupní proměnné", "Input Variables": "Vstupní proměnné",
"Insert": "Vložit", "Insert": "Vložit",
@ -909,6 +902,7 @@
"Key": "Klíč", "Key": "Klíč",
"Key is required": "Klíč je vyžadován", "Key is required": "Klíč je vyžadován",
"Keyboard shortcuts": "Klávesové zkratky", "Keyboard shortcuts": "Klávesové zkratky",
"Keyboard Shortcuts": "",
"Knowledge": "Znalosti", "Knowledge": "Znalosti",
"Knowledge Access": "Přístup ke znalostem", "Knowledge Access": "Přístup ke znalostem",
"Knowledge Base": "Znalostní báze", "Knowledge Base": "Znalostní báze",
@ -952,6 +946,7 @@
"Loader": "Zavaděč", "Loader": "Zavaděč",
"Loading Kokoro.js...": "Načítám Kokoro.js...", "Loading Kokoro.js...": "Načítám Kokoro.js...",
"Loading...": "Načítám...", "Loading...": "Načítám...",
"local": "",
"Local": "Lokální", "Local": "Lokální",
"Local Task Model": "Lokální model pro úkoly", "Local Task Model": "Lokální model pro úkoly",
"Location access not allowed": "Přístup k poloze nebyl povolen", "Location access not allowed": "Přístup k poloze nebyl povolen",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (pracovní/školní)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (pracovní/školní)",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "Mistral OCR", "Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "Je vyžadován API klíč pro Mistral OCR.", "Mistral OCR API Key required.": "Je vyžadován API klíč pro Mistral OCR.",
"Model": "Model", "Model": "Model",
@ -1119,8 +1113,6 @@
"Ollama Version": "Verze Ollama", "Ollama Version": "Verze Ollama",
"On": "Zapnuto", "On": "Zapnuto",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Aktivní pouze pokud je zapnuta volba \"Vložit velký text jako soubor\".",
"Only active when the chat input is in focus and an LLM is generating a response.": "Aktivní pouze pokud je zaměřeno vstupní pole konverzace a LLM generuje odpověď.",
"Only alphanumeric characters and hyphens are allowed": "Jsou povoleny pouze alfanumerické znaky a pomlčky", "Only alphanumeric characters and hyphens are allowed": "Jsou povoleny pouze alfanumerické znaky a pomlčky",
"Only alphanumeric characters and hyphens are allowed in the command string.": "V řetězci příkazu jsou povoleny pouze alfanumerické znaky a pomlčky.", "Only alphanumeric characters and hyphens are allowed in the command string.": "V řetězci příkazu jsou povoleny pouze alfanumerické znaky a pomlčky.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Lze upravovat pouze kolekce, pro úpravu/přidání dokumentů vytvořte novou znalostní bázi.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Lze upravovat pouze kolekce, pro úpravu/přidání dokumentů vytvořte novou znalostní bázi.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Otevřít modální okno pro konfiguraci připojení", "Open modal to configure connection": "Otevřít modální okno pro konfiguraci připojení",
"Open Modal To Manage Floating Quick Actions": "Otevřít modální okno pro správu plovoucích rychlých akcí", "Open Modal To Manage Floating Quick Actions": "Otevřít modální okno pro správu plovoucích rychlých akcí",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Otevřít novou konverzaci",
"Open Sidebar": "Otevřít postranní panel", "Open Sidebar": "Otevřít postranní panel",
"Open User Profile Menu": "Otevřít nabídku profilu uživatele", "Open User Profile Menu": "Otevřít nabídku profilu uživatele",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI může používat nástroje poskytované jakýmkoli serverem OpenAPI.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI může používat nástroje poskytované jakýmkoli serverem OpenAPI.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "Raději nevyberu", "Prefer not to say": "Raději nevyberu",
"Prefix ID": "Prefix ID", "Prefix ID": "Prefix ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID se používá k zamezení konfliktů s jinými připojeními přidáním prefixu k ID modelů - pro vypnutí ponechte prázdné", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID se používá k zamezení konfliktů s jinými připojeními přidáním prefixu k ID modelů - pro vypnutí ponechte prázdné",
"Prevent file creation": "Zabránit vytváření souborů",
"Preview": "Náhled", "Preview": "Náhled",
"Previous 30 days": "Posledních 30 dní", "Previous 30 days": "Posledních 30 dní",
"Previous 7 days": "Posledních 7 dní", "Previous 7 days": "Posledních 7 dní",
@ -1398,7 +1388,6 @@
"Select only one model to call": "Vyberte pouze jeden model k volání", "Select only one model to call": "Vyberte pouze jeden model k volání",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Vybraný model (modely) nepodporuje obrazové vstupy.", "Selected model(s) do not support image inputs": "Vybraný model (modely) nepodporuje obrazové vstupy.",
"Self-Hosted": "",
"semantic": "sémantický", "semantic": "sémantický",
"Send": "Odeslat", "Send": "Odeslat",
"Send a Message": "Odeslat zprávu", "Send a Message": "Odeslat zprávu",
@ -1440,14 +1429,12 @@
"Share your background and interests": "Sdílejte své zkušenosti a zájmy", "Share your background and interests": "Sdílejte své zkušenosti a zájmy",
"Shared with you": "Sdíleno s vámi", "Shared with you": "Sdíleno s vámi",
"Sharing Permissions": "Oprávnění pro sdílení", "Sharing Permissions": "Oprávnění pro sdílení",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Zkratky s hvězdičkou (*) jsou situační a aktivní pouze za specifických podmínek.",
"Show": "Zobrazit", "Show": "Zobrazit",
"Show \"What's New\" modal on login": "Zobrazit okno \"Co je nového\" při přihlášení", "Show \"What's New\" modal on login": "Zobrazit okno \"Co je nového\" při přihlášení",
"Show Admin Details in Account Pending Overlay": "Zobrazit podrobnosti administrátora v překryvné vrstvě čekajícího účtu", "Show Admin Details in Account Pending Overlay": "Zobrazit podrobnosti administrátora v překryvné vrstvě čekajícího účtu",
"Show Formatting Toolbar": "Zobrazit panel nástrojů pro formátování", "Show Formatting Toolbar": "Zobrazit panel nástrojů pro formátování",
"Show image preview": "Zobrazit náhled obrázku", "Show image preview": "Zobrazit náhled obrázku",
"Show Model": "Zobrazit model", "Show Model": "Zobrazit model",
"Show shortcuts": "Zobrazit zkratky",
"Show your support!": "Vyjádřete svou podporu!", "Show your support!": "Vyjádřete svou podporu!",
"Showcased creativity": "Předvedená kreativita", "Showcased creativity": "Předvedená kreativita",
"Sign in": "Přihlásit se", "Sign in": "Přihlásit se",
@ -1482,7 +1469,6 @@
"Status Updates": "Aktualizace stavu", "Status Updates": "Aktualizace stavu",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Zastavit", "Stop": "Zastavit",
"Stop Generating": "Zastavit generování",
"Stop Sequence": "stop sequence", "Stop Sequence": "stop sequence",
"Stream Chat Response": "stream chat response", "Stream Chat Response": "stream chat response",
"Stream Delta Chunk Size": "stream delta chunk size", "Stream Delta Chunk Size": "stream delta chunk size",
@ -1512,7 +1498,6 @@
"Tags Generation": "Generování štítků", "Tags Generation": "Generování štítků",
"Tags Generation Prompt": "Instrukce pro generování štítků", "Tags Generation Prompt": "Instrukce pro generování štítků",
"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.": "Vzorkování bez konce (tail free sampling) se používá ke snížení vlivu méně pravděpodobných tokenů na výstup. Vyšší hodnota (např. 2.0) sníží vliv více, zatímco hodnota 1.0 toto nastavení vypne.", "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.": "Vzorkování bez konce (tail free sampling) se používá ke snížení vlivu méně pravděpodobných tokenů na výstup. Vyšší hodnota (např. 2.0) sníží vliv více, zatímco hodnota 1.0 toto nastavení vypne.",
"Talk to model": "Mluvit s modelem",
"Tap to interrupt": "Klepnutím přerušíte", "Tap to interrupt": "Klepnutím přerušíte",
"Task List": "Seznam úkolů", "Task List": "Seznam úkolů",
"Task Model": "Model pro úkoly", "Task Model": "Model pro úkoly",
@ -1594,9 +1579,6 @@
"Toast notifications for new updates": "Vyskakovací oznámení o nových aktualizacích", "Toast notifications for new updates": "Vyskakovací oznámení o nových aktualizacích",
"Today": "Dnes", "Today": "Dnes",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "Přepnout vyhledávání",
"Toggle settings": "Přepnout nastavení",
"Toggle sidebar": "Přepnout postranní panel",
"Toggle whether current connection is active.": "Přepnout, zda je aktuální připojení aktivní.", "Toggle whether current connection is active.": "Přepnout, zda je aktuální připojení aktivní.",
"Token": "Token", "Token": "Token",
"Too verbose": "Příliš rozvláčné", "Too verbose": "Příliš rozvláčné",
@ -1734,7 +1716,7 @@
"Workspace Permissions": "Oprávnění pracovního prostoru", "Workspace Permissions": "Oprávnění pracovního prostoru",
"Write": "Napsat", "Write": "Napsat",
"Write a prompt suggestion (e.g. Who are you?)": "Napište návrh instrukcí (např. Kdo jsi?)", "Write a prompt suggestion (e.g. Who are you?)": "Napište návrh instrukcí (např. Kdo jsi?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Napište shrnutí na 50 slov, které shrnuje [téma nebo klíčové slovo].", "Write a summary in 50 words that summarizes {{topic}}.": "Napište shrnutí na 50 slov, které shrnuje [téma nebo klíčové slovo].",
"Write something...": "Napište něco...", "Write something...": "Napište něco...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Sem napište obsah systémových instrukcí vašeho modelu\nnapř.: Jste Mario ze Super Mario Bros a vystupujete jako asistent.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Sem napište obsah systémových instrukcí vašeho modelu\nnapř.: Jste Mario ze Super Mario Bros a vystupujete jako asistent.",
"Yacy Instance URL": "URL instance Yacy", "Yacy Instance URL": "URL instance Yacy",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "En 'task model' bliver brugt til at opgaver såsom at generere overskrifter til chats eller internetsøgninger", "A task model is used when performing tasks such as generating titles for chats and web search queries": "En 'task model' bliver brugt til at opgaver såsom at generere overskrifter til chats eller internetsøgninger",
"a user": "en bruger", "a user": "en bruger",
"About": "Information", "About": "Information",
"Accept autocomplete generation / Jump to prompt variable": "Accepter generede autofuldførsel / Spring til prompt variabel",
"Access": "Adgang", "Access": "Adgang",
"Access Control": "Adgangskontrol", "Access Control": "Adgangskontrol",
"Accessible to all users": "Tilgængelig for alle brugere", "Accessible to all users": "Tilgængelig for alle brugere",
@ -51,7 +50,6 @@
"Add Content": "Tilføj indhold", "Add Content": "Tilføj indhold",
"Add content here": "Tilføj indhold her", "Add content here": "Tilføj indhold her",
"Add Custom Parameter": "Tilføj brugerdefineret parameter", "Add Custom Parameter": "Tilføj brugerdefineret parameter",
"Add custom prompt": "Tilføj en special-prompt",
"Add Details": "", "Add Details": "",
"Add Files": "Tilføj filer", "Add Files": "Tilføj filer",
"Add Group": "Tilføj gruppe", "Add Group": "Tilføj gruppe",
@ -151,7 +149,6 @@
"Ask": "Spørg", "Ask": "Spørg",
"Ask a question": "Stil et spørgsmål", "Ask a question": "Stil et spørgsmål",
"Assistant": "Assistent", "Assistant": "Assistent",
"Attach file from knowledge": "Vedhæft fil fra viden",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "Kanalnavn", "Channel Name": "Kanalnavn",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "Kanaler", "Channels": "Kanaler",
"Character": "Karakterer", "Character": "Karakterer",
@ -272,6 +270,7 @@
"Close modal": "Luk dialogboks", "Close modal": "Luk dialogboks",
"Close settings modal": "Luk dialogboks med indstillinger", "Close settings modal": "Luk dialogboks med indstillinger",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "Kodeblok", "Code Block": "Kodeblok",
"Code execution": "Kode kørsel", "Code execution": "Kode kørsel",
@ -331,8 +330,6 @@
"Copied to clipboard": "Kopieret til udklipsholder", "Copied to clipboard": "Kopieret til udklipsholder",
"Copy": "Kopier", "Copy": "Kopier",
"Copy Formatted Text": "Kopier formateret tekst", "Copy Formatted Text": "Kopier formateret tekst",
"Copy last code block": "Kopier seneste kode",
"Copy last response": "Kopier senester svar",
"Copy link": "Kopier link", "Copy link": "Kopier link",
"Copy Link": "Kopier link", "Copy Link": "Kopier link",
"Copy to clipboard": "Kopier til udklipsholder", "Copy to clipboard": "Kopier til udklipsholder",
@ -396,7 +393,6 @@
"Delete a model": "Slet en model", "Delete a model": "Slet en model",
"Delete All Chats": "Slet alle chats", "Delete All Chats": "Slet alle chats",
"Delete All Models": "Slet alle modeller", "Delete All Models": "Slet alle modeller",
"Delete chat": "Slet chat",
"Delete Chat": "Slet chat", "Delete Chat": "Slet chat",
"Delete chat?": "Slet chat?", "Delete chat?": "Slet chat?",
"Delete folder?": "Slet mappe?", "Delete folder?": "Slet mappe?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "Firecrawl API Base URL", "Firecrawl API Base URL": "Firecrawl API Base URL",
"Firecrawl API Key": "Firecrawl API nøgle", "Firecrawl API Key": "Firecrawl API nøgle",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Fokuser på chatinput",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "Mappe fjernet.", "Folder deleted successfully": "Mappe fjernet.",
@ -786,7 +781,6 @@
"Generate": "Generer", "Generate": "Generer",
"Generate an image": "Generer et billede", "Generate an image": "Generer et billede",
"Generate Image": "Generer billede", "Generate Image": "Generer billede",
"Generate prompt pair": "Generer prompt par",
"Generated Image": "", "Generated Image": "",
"Generating search query": "Genererer søgeforespørgsel", "Generating search query": "Genererer søgeforespørgsel",
"Generating...": "Genererer...", "Generating...": "Genererer...",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injicer alt indhold som kontekst til omfattende behandling, dette anbefales til komplekse forespørgsler.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injicer alt indhold som kontekst til omfattende behandling, dette anbefales til komplekse forespørgsler.",
"Input": "", "Input": "",
"Input commands": "Inputkommandoer",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "Input variable", "Input Variables": "Input variable",
"Insert": "Indsæt", "Insert": "Indsæt",
@ -909,6 +902,7 @@
"Key": "Nøgle", "Key": "Nøgle",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Tastaturgenveje", "Keyboard shortcuts": "Tastaturgenveje",
"Keyboard Shortcuts": "",
"Knowledge": "Viden", "Knowledge": "Viden",
"Knowledge Access": "Videnadgang", "Knowledge Access": "Videnadgang",
"Knowledge Base": "Vidensbase", "Knowledge Base": "Vidensbase",
@ -952,6 +946,7 @@
"Loader": "Loader", "Loader": "Loader",
"Loading Kokoro.js...": "Indlæser Kokoro.js...", "Loading Kokoro.js...": "Indlæser Kokoro.js...",
"Loading...": "Indlæser...", "Loading...": "Indlæser...",
"local": "",
"Local": "Lokal", "Local": "Lokal",
"Local Task Model": "Lokal opgavemodel", "Local Task Model": "Lokal opgavemodel",
"Location access not allowed": "Adgang til placering ikke tilladt", "Location access not allowed": "Adgang til placering ikke tilladt",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (arbejde/skole)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (arbejde/skole)",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "Mistral OCR", "Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "Mistral OCR API nøgle påkrævet.", "Mistral OCR API Key required.": "Mistral OCR API nøgle påkrævet.",
"Model": "Model", "Model": "Model",
@ -1049,7 +1043,7 @@
"New Folder": "Ny mappe", "New Folder": "Ny mappe",
"New Function": "Ny funktion", "New Function": "Ny funktion",
"New Knowledge": "", "New Knowledge": "",
"New Model": "", "New Model": "Ny model",
"New Note": "Ny note", "New Note": "Ny note",
"New Password": "Ny adgangskode", "New Password": "Ny adgangskode",
"New Prompt": "", "New Prompt": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama-version", "Ollama Version": "Ollama-version",
"On": "Til", "On": "Til",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Kun aktiv når \"Indsæt store tekster som fil\" indstillingen er slået til.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Kun aktiv når chat input er i fokus og en LLM genererer et svar.",
"Only alphanumeric characters and hyphens are allowed": "Kun alfanumeriske tegn og bindestreger er tilladt", "Only alphanumeric characters and hyphens are allowed": "Kun alfanumeriske tegn og bindestreger er tilladt",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Kun alfanumeriske tegn og bindestreger er tilladt i kommandostrengen.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Kun alfanumeriske tegn og bindestreger er tilladt i kommandostrengen.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Kun samlinger kan redigeres, opret en ny vidensbase for at redigere/tilføje dokumenter.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Kun samlinger kan redigeres, opret en ny vidensbase for at redigere/tilføje dokumenter.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Åbn modal for at konfigurere forbindelse", "Open modal to configure connection": "Åbn modal for at konfigurere forbindelse",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Åbn ny chat",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI kan bruge værktøjer leveret af enhver OpenAPI server.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI kan bruge værktøjer leveret af enhver OpenAPI server.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "Prefix ID", "Prefix ID": "Prefix ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID bruges til at undgå konflikter med andre forbindelser ved at tilføje et prefix til model-ID'erne - lad være tom for at deaktivere", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID bruges til at undgå konflikter med andre forbindelser ved at tilføje et prefix til model-ID'erne - lad være tom for at deaktivere",
"Prevent file creation": "Forhindr filoprettelse",
"Preview": "Forhåndsvisning", "Preview": "Forhåndsvisning",
"Previous 30 days": "Seneste 30 dage", "Previous 30 days": "Seneste 30 dage",
"Previous 7 days": "Seneste 7 dage", "Previous 7 days": "Seneste 7 dage",
@ -1396,7 +1386,6 @@
"Select only one model to call": "Vælg kun én model at kalde", "Select only one model to call": "Vælg kun én model at kalde",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Valgte model(ler) understøtter ikke billedinput", "Selected model(s) do not support image inputs": "Valgte model(ler) understøtter ikke billedinput",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "Send", "Send": "Send",
"Send a Message": "Send en besked", "Send a Message": "Send en besked",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "Delingstilladelser", "Sharing Permissions": "Delingstilladelser",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Genveje med en stjerne (*) er situationsbestemte og kun aktive under specifikke betingelser.",
"Show": "Vis", "Show": "Vis",
"Show \"What's New\" modal on login": "Vis \"Hvad er nyt\" modal ved login", "Show \"What's New\" modal on login": "Vis \"Hvad er nyt\" modal ved login",
"Show Admin Details in Account Pending Overlay": "Vis administratordetaljer i overlay for ventende konto", "Show Admin Details in Account Pending Overlay": "Vis administratordetaljer i overlay for ventende konto",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "Vis billedforhåndsvisning", "Show image preview": "Vis billedforhåndsvisning",
"Show Model": "Vis model", "Show Model": "Vis model",
"Show shortcuts": "Vis genveje",
"Show your support!": "Vis din støtte!", "Show your support!": "Vis din støtte!",
"Showcased creativity": "Udstillet kreativitet", "Showcased creativity": "Udstillet kreativitet",
"Sign in": "Log ind", "Sign in": "Log ind",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Stop", "Stop": "Stop",
"Stop Generating": "Stop generering",
"Stop Sequence": "Stopsekvens", "Stop Sequence": "Stopsekvens",
"Stream Chat Response": "Stream chatsvar", "Stream Chat Response": "Stream chatsvar",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "Tag generering", "Tags Generation": "Tag generering",
"Tags Generation Prompt": "Tag genererings prompt", "Tags Generation Prompt": "Tag genererings prompt",
"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.": "Tail free sampling bruges til at reducere påvirkningen af mindre sandsynlige tokens fra outputtet. En højere værdi (f.eks. 2,0) vil reducere påvirkningen mere, mens en værdi på 1,0 deaktiverer denne indstilling.", "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.": "Tail free sampling bruges til at reducere påvirkningen af mindre sandsynlige tokens fra outputtet. En højere værdi (f.eks. 2,0) vil reducere påvirkningen mere, mens en værdi på 1,0 deaktiverer denne indstilling.",
"Talk to model": "Tal til model",
"Tap to interrupt": "Tryk for at afbryde", "Tap to interrupt": "Tryk for at afbryde",
"Task List": "Opgaveliste", "Task List": "Opgaveliste",
"Task Model": "Opgavemodel", "Task Model": "Opgavemodel",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "Toast-notifikationer for nye opdateringer", "Toast notifications for new updates": "Toast-notifikationer for nye opdateringer",
"Today": "I dag", "Today": "I dag",
"Today at {{LOCALIZED_TIME}}": "I dag {{LOCALIZED_TIME}}", "Today at {{LOCALIZED_TIME}}": "I dag {{LOCALIZED_TIME}}",
"Toggle search": "Skift søgning",
"Toggle settings": "Skift indstillinger",
"Toggle sidebar": "Skift sidebjælke",
"Toggle whether current connection is active.": "Skift om nuværende forbindelse er aktiv.", "Toggle whether current connection is active.": "Skift om nuværende forbindelse er aktiv.",
"Token": "Token", "Token": "Token",
"Too verbose": "For ordrigt", "Too verbose": "For ordrigt",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "Arbejdsområde rettigheder", "Workspace Permissions": "Arbejdsområde rettigheder",
"Write": "Skriv", "Write": "Skriv",
"Write a prompt suggestion (e.g. Who are you?)": "Skriv et promptforslag (f.eks. Hvem er du?)", "Write a prompt suggestion (e.g. Who are you?)": "Skriv et promptforslag (f.eks. Hvem er du?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Skriv en opsummering på 50 ord, der opsummerer [emne eller søgeord].", "Write a summary in 50 words that summarizes {{topic}}.": "Skriv en opsummering på 50 ord, der opsummerer [emne eller søgeord].",
"Write something...": "Skriv noget...", "Write something...": "Skriv noget...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Skriv indholdet af din models systemprompt her\nf.eks.: Du er Mario fra Super Mario Bros og agerer som assistent.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Skriv indholdet af din models systemprompt her\nf.eks.: Du er Mario fra Super Mario Bros og agerer som assistent.",
"Yacy Instance URL": "Yacy instans URL", "Yacy Instance URL": "Yacy instans URL",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Aufgabenmodelle werden beispielsweise zur Generierung von Chat-Titeln oder Websuchanfragen verwendet", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Aufgabenmodelle werden beispielsweise zur Generierung von Chat-Titeln oder Websuchanfragen verwendet",
"a user": "ein Benutzer", "a user": "ein Benutzer",
"About": "Über", "About": "Über",
"Accept autocomplete generation / Jump to prompt variable": "Automatische Vervollständigung akzeptieren / Zur Prompt-Variable springen",
"Access": "Zugang", "Access": "Zugang",
"Access Control": "Zugangskontrolle", "Access Control": "Zugangskontrolle",
"Accessible to all users": "Für alle Benutzer zugänglich", "Accessible to all users": "Für alle Benutzer zugänglich",
@ -51,7 +50,6 @@
"Add Content": "Inhalt hinzufügen", "Add Content": "Inhalt hinzufügen",
"Add content here": "Inhalt hier hinzufügen", "Add content here": "Inhalt hier hinzufügen",
"Add Custom Parameter": "Benutzerdefinierten Parameter hinzufügen", "Add Custom Parameter": "Benutzerdefinierten Parameter hinzufügen",
"Add custom prompt": "Benutzerdefinierten Prompt hinzufügen",
"Add Details": "Details hinzufügen", "Add Details": "Details hinzufügen",
"Add Files": "Dateien hinzufügen", "Add Files": "Dateien hinzufügen",
"Add Group": "Gruppe hinzufügen", "Add Group": "Gruppe hinzufügen",
@ -73,9 +71,9 @@
"Admin Settings": "Administration", "Admin Settings": "Administration",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratoren haben jederzeit Zugriff auf alle Werkzeuge; Benutzern müssen Werkzeuge pro Modell im Arbeitsbereich zugewiesen werden.", "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratoren haben jederzeit Zugriff auf alle Werkzeuge; Benutzern müssen Werkzeuge pro Modell im Arbeitsbereich zugewiesen werden.",
"Advanced Parameters": "Erweiterte Parameter", "Advanced Parameters": "Erweiterte Parameter",
"Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "", "Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "Erweiterte Parameter für das MinerU-Parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)",
"Advanced Params": "Erweiterte Parameter", "Advanced Params": "Erweiterte Parameter",
"After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "", "After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "Nachdem Sie das Embedding-Modell aktualisiert oder geändert haben, müssen Sie den Wissensspeicher neu indizieren, damit die Änderungen wirksam werden. Sie können dies mit der Schaltfläche \"Neu indizieren\" unten durchführen.",
"AI": "KI", "AI": "KI",
"All": "Alle", "All": "Alle",
"All chats have been unarchived.": "Alle Chats wurden aus dem Archiv wiederhergestellt.", "All chats have been unarchived.": "Alle Chats wurden aus dem Archiv wiederhergestellt.",
@ -130,7 +128,7 @@
"API Key created.": "API-Schlüssel erstellt.", "API Key created.": "API-Schlüssel erstellt.",
"API Key Endpoint Restrictions": "API-Schlüssel Endpunkteinschränkungen", "API Key Endpoint Restrictions": "API-Schlüssel Endpunkteinschränkungen",
"API keys": "API-Schlüssel", "API keys": "API-Schlüssel",
"API Mode": "", "API Mode": "API-Modus",
"API Version": "API Version", "API Version": "API Version",
"API Version is required": "API-Version ist erforderlich", "API Version is required": "API-Version ist erforderlich",
"Application DN": "Anwendungs-DN", "Application DN": "Anwendungs-DN",
@ -151,7 +149,6 @@
"Ask": "Fragen", "Ask": "Fragen",
"Ask a question": "Stellen Sie eine Frage", "Ask a question": "Stellen Sie eine Frage",
"Assistant": "Assistent", "Assistant": "Assistent",
"Attach file from knowledge": "Datei aus Wissensspeicher anhängen",
"Attach Knowledge": "Wissensspeicher anhängen", "Attach Knowledge": "Wissensspeicher anhängen",
"Attach Notes": "Notizen anhängen", "Attach Notes": "Notizen anhängen",
"Attach Webpage": "Webseite anhängen", "Attach Webpage": "Webseite anhängen",
@ -221,6 +218,7 @@
"Channel": "Kanal", "Channel": "Kanal",
"Channel deleted successfully": "Kanal erfolgreich gelöscht", "Channel deleted successfully": "Kanal erfolgreich gelöscht",
"Channel Name": "Kanalname", "Channel Name": "Kanalname",
"Channel name cannot be empty.": "",
"Channel updated successfully": "Kanal erfolgreich aktualisiert", "Channel updated successfully": "Kanal erfolgreich aktualisiert",
"Channels": "Kanäle", "Channels": "Kanäle",
"Character": "Zeichen", "Character": "Zeichen",
@ -272,6 +270,7 @@
"Close modal": "Modal schließen", "Close modal": "Modal schließen",
"Close settings modal": "Einstellungsfenster schließen", "Close settings modal": "Einstellungsfenster schließen",
"Close Sidebar": "Seitenleiste schließen", "Close Sidebar": "Seitenleiste schließen",
"cloud": "",
"CMU ARCTIC speaker embedding name": "Name des CMU ARCTIC Sprecher-Embeddings", "CMU ARCTIC speaker embedding name": "Name des CMU ARCTIC Sprecher-Embeddings",
"Code Block": "Codeblock", "Code Block": "Codeblock",
"Code execution": "Codeausführung", "Code execution": "Codeausführung",
@ -331,8 +330,6 @@
"Copied to clipboard": "In die Zwischenablage kopiert", "Copied to clipboard": "In die Zwischenablage kopiert",
"Copy": "Kopieren", "Copy": "Kopieren",
"Copy Formatted Text": "Formatierten Text kopieren", "Copy Formatted Text": "Formatierten Text kopieren",
"Copy last code block": "Letzten Codeblock kopieren",
"Copy last response": "Letzte Antwort kopieren",
"Copy link": "Link kopieren", "Copy link": "Link kopieren",
"Copy Link": "Link kopieren", "Copy Link": "Link kopieren",
"Copy to clipboard": "In die Zwischenablage kopieren", "Copy to clipboard": "In die Zwischenablage kopieren",
@ -341,7 +338,7 @@
"Create": "Erstellen", "Create": "Erstellen",
"Create a knowledge base": "Wissensspeicher erstellen", "Create a knowledge base": "Wissensspeicher erstellen",
"Create a model": "Modell erstellen", "Create a model": "Modell erstellen",
"Create a new note": "", "Create a new note": "Neue Notiz erstellen",
"Create Account": "Konto erstellen", "Create Account": "Konto erstellen",
"Create Admin Account": "Administrator-Account erstellen", "Create Admin Account": "Administrator-Account erstellen",
"Create Channel": "Kanal erstellen", "Create Channel": "Kanal erstellen",
@ -396,7 +393,6 @@
"Delete a model": "Ein Modell löschen", "Delete a model": "Ein Modell löschen",
"Delete All Chats": "Alle Chats löschen", "Delete All Chats": "Alle Chats löschen",
"Delete All Models": "Alle Modelle löschen", "Delete All Models": "Alle Modelle löschen",
"Delete chat": "Chat löschen",
"Delete Chat": "Chat löschen", "Delete Chat": "Chat löschen",
"Delete chat?": "Chat löschen?", "Delete chat?": "Chat löschen?",
"Delete folder?": "Ordner löschen?", "Delete folder?": "Ordner löschen?",
@ -582,7 +578,7 @@
"Enter Kagi Search API Key": "Geben Sie den Kagi Search API-Schlüssel ein", "Enter Kagi Search API Key": "Geben Sie den Kagi Search API-Schlüssel ein",
"Enter Key Behavior": "Verhalten von 'Enter'", "Enter Key Behavior": "Verhalten von 'Enter'",
"Enter language codes": "Geben Sie die Sprachcodes ein", "Enter language codes": "Geben Sie die Sprachcodes ein",
"Enter MinerU API Key": "", "Enter MinerU API Key": "Geben Sie den MinerU API-Schlüssel ein",
"Enter Mistral API Key": "Geben Sie den Mistral API-Schlüssel ein", "Enter Mistral API Key": "Geben Sie den Mistral API-Schlüssel ein",
"Enter Model ID": "Geben Sie die Modell-ID ein", "Enter Model ID": "Geben Sie die Modell-ID ein",
"Enter model tag (e.g. {{modelTag}})": "Geben Sie den Model-Tag ein", "Enter model tag (e.g. {{modelTag}})": "Geben Sie den Model-Tag ein",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "Firecrawl API Basis-URL", "Firecrawl API Base URL": "Firecrawl API Basis-URL",
"Firecrawl API Key": "Firecrawl API-Schlüssel", "Firecrawl API Key": "Firecrawl API-Schlüssel",
"Floating Quick Actions": "Schnellaktionen", "Floating Quick Actions": "Schnellaktionen",
"Focus chat input": "Chat-Eingabe fokussieren",
"Folder": "Ordner", "Folder": "Ordner",
"Folder Background Image": "Ordner Hintergrundbild", "Folder Background Image": "Ordner Hintergrundbild",
"Folder deleted successfully": "Ordner erfolgreich gelöscht", "Folder deleted successfully": "Ordner erfolgreich gelöscht",
@ -786,7 +781,6 @@
"Generate": "Generieren", "Generate": "Generieren",
"Generate an image": "Bild erzeugen", "Generate an image": "Bild erzeugen",
"Generate Image": "Bild erzeugen", "Generate Image": "Bild erzeugen",
"Generate prompt pair": "Prompt-Paar generieren",
"Generated Image": "Generiertes Bild", "Generated Image": "Generiertes Bild",
"Generating search query": "Suchanfrage wird erstellt", "Generating search query": "Suchanfrage wird erstellt",
"Generating...": "Generiere...", "Generating...": "Generiere...",
@ -828,8 +822,8 @@
"How can I help you today?": "Wie kann ich Ihnen heute helfen?", "How can I help you today?": "Wie kann ich Ihnen heute helfen?",
"How would you rate this response?": "Wie würden Sie diese Antwort bewerten?", "How would you rate this response?": "Wie würden Sie diese Antwort bewerten?",
"HTML": "HTML", "HTML": "HTML",
"http://localhost:8000": "", "http://localhost:8000": "http://localhost:8000",
"https://mineru.net/api/v4": "", "https://mineru.net/api/v4": "https://mineru.net/api/v4",
"Hybrid Search": "Hybride Suche", "Hybrid Search": "Hybride Suche",
"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.": "Ich bestätige, dass ich gelesen habe und die Auswirkungen meiner Aktion verstehe. Mir sind die Risiken bewusst, die mit der Ausführung beliebigen Codes verbunden sind, und ich habe die Vertrauenswürdigkeit der Quelle überprüft.", "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.": "Ich bestätige, dass ich gelesen habe und die Auswirkungen meiner Aktion verstehe. Mir sind die Risiken bewusst, die mit der Ausführung beliebigen Codes verbunden sind, und ich habe die Vertrauenswürdigkeit der Quelle überprüft.",
"ID": "ID", "ID": "ID",
@ -870,7 +864,6 @@
"Initials": "Initialen", "Initials": "Initialen",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Gesamten Inhalt als Kontext für umfassende Verarbeitung einfügen, dies wird für komplexe Abfragen empfohlen.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Gesamten Inhalt als Kontext für umfassende Verarbeitung einfügen, dies wird für komplexe Abfragen empfohlen.",
"Input": "Eingabe", "Input": "Eingabe",
"Input commands": "Eingabebefehle",
"Input Key (e.g. text, unet_name, steps)": "Eingabe Schlüssel (z.B. text, unet_name, steps)", "Input Key (e.g. text, unet_name, steps)": "Eingabe Schlüssel (z.B. text, unet_name, steps)",
"Input Variables": "Eingabe Variablen", "Input Variables": "Eingabe Variablen",
"Insert": "Einfügen", "Insert": "Einfügen",
@ -909,6 +902,7 @@
"Key": "Schlüssel", "Key": "Schlüssel",
"Key is required": "Schlüssel ist erforderlich", "Key is required": "Schlüssel ist erforderlich",
"Keyboard shortcuts": "Tastenkombinationen", "Keyboard shortcuts": "Tastenkombinationen",
"Keyboard Shortcuts": "",
"Knowledge": "Wissen", "Knowledge": "Wissen",
"Knowledge Access": "Wissenszugriff", "Knowledge Access": "Wissenszugriff",
"Knowledge Base": "Wissensdatenbank", "Knowledge Base": "Wissensdatenbank",
@ -952,6 +946,7 @@
"Loader": "Loader", "Loader": "Loader",
"Loading Kokoro.js...": "Lade Kokoro.js...", "Loading Kokoro.js...": "Lade Kokoro.js...",
"Loading...": "Lade...", "Loading...": "Lade...",
"local": "",
"Local": "Lokal", "Local": "Lokal",
"Local Task Model": "Lokales Aufgabenmodell", "Local Task Model": "Lokales Aufgabenmodell",
"Location access not allowed": "Standortzugriff nicht erlaubt", "Location access not allowed": "Standortzugriff nicht erlaubt",
@ -996,9 +991,8 @@
"Microsoft OneDrive": "Microsoft OneDrive", "Microsoft OneDrive": "Microsoft OneDrive",
"Microsoft OneDrive (personal)": "Microsoft OneDrive (persönlich)", "Microsoft OneDrive (personal)": "Microsoft OneDrive (persönlich)",
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (Arbeit/Schule)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (Arbeit/Schule)",
"MinerU": "", "MinerU": "MinerU",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "MinerU API-Schlüssel erforderlich für den Cloud-API-Modus.",
"minerU managed (Cloud API)": "",
"Mistral OCR": "Mistral OCR", "Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "Mistral OCR API-Schlüssel erforderlich.", "Mistral OCR API Key required.": "Mistral OCR API-Schlüssel erforderlich.",
"Model": "Modell", "Model": "Modell",
@ -1066,7 +1060,7 @@
"No content to speak": "Kein Inhalt zum Vorlesen", "No content to speak": "Kein Inhalt zum Vorlesen",
"No conversation to save": "Keine Unterhaltung zum Speichern vorhanden", "No conversation to save": "Keine Unterhaltung zum Speichern vorhanden",
"No distance available": "Keine Distanz verfügbar", "No distance available": "Keine Distanz verfügbar",
"No expiration can pose security risks.": "", "No expiration can pose security risks.": "Keine Ablauffrist zu setzen kann Sicherheitsrisiken bergen.",
"No feedbacks found": "Kein Feedback gefunden", "No feedbacks found": "Kein Feedback gefunden",
"No file selected": "Keine Datei ausgewählt", "No file selected": "Keine Datei ausgewählt",
"No functions found": "Keine Funktionen gefunden", "No functions found": "Keine Funktionen gefunden",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama-Version", "Ollama Version": "Ollama-Version",
"On": "Ein", "On": "Ein",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Nur aktiv, wenn die \"Großen Text als Datei einfügen\" Option aktiviert ist.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Nur aktiv, wenn die Eingabe im Chat ausgewählt ist und ein LLM gerade eine Antwort generiert.",
"Only alphanumeric characters and hyphens are allowed": "Nur alphanumerische Zeichen und Bindestriche sind erlaubt", "Only alphanumeric characters and hyphens are allowed": "Nur alphanumerische Zeichen und Bindestriche sind erlaubt",
"Only alphanumeric characters and hyphens are allowed in the command string.": "In der Befehlszeichenfolge sind nur alphanumerische Zeichen und Bindestriche erlaubt.", "Only alphanumeric characters and hyphens are allowed in the command string.": "In der Befehlszeichenfolge sind nur alphanumerische Zeichen und Bindestriche erlaubt.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Nur Sammlungen können bearbeitet werden. Erstellen Sie eine neue Wissensbasis, um Dokumente zu bearbeiten/hinzuzufügen.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Nur Sammlungen können bearbeitet werden. Erstellen Sie eine neue Wissensbasis, um Dokumente zu bearbeiten/hinzuzufügen.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Modal öffnen, um die Verbindung zu konfigurieren", "Open modal to configure connection": "Modal öffnen, um die Verbindung zu konfigurieren",
"Open Modal To Manage Floating Quick Actions": "Modal öffnen, um Schnellaktionen zu verwalten", "Open Modal To Manage Floating Quick Actions": "Modal öffnen, um Schnellaktionen zu verwalten",
"Open Modal To Manage Image Compression": "Modal öffnen, um die Bildkompression zu verwalten", "Open Modal To Manage Image Compression": "Modal öffnen, um die Bildkompression zu verwalten",
"Open new chat": "Neuen Chat öffnen",
"Open Sidebar": "Seitenleiste öffnen", "Open Sidebar": "Seitenleiste öffnen",
"Open User Profile Menu": "Benutzerprofilmenü öffnen", "Open User Profile Menu": "Benutzerprofilmenü öffnen",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI kann Werkzeuge verwenden, die von irgendeinem OpenAPI-Server bereitgestellt werden.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI kann Werkzeuge verwenden, die von irgendeinem OpenAPI-Server bereitgestellt werden.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "Keine Angabe", "Prefer not to say": "Keine Angabe",
"Prefix ID": "Präfix-ID", "Prefix ID": "Präfix-ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix-ID wird verwendet, um Konflikte mit anderen Verbindungen zu vermeiden, indem ein Präfix zu den Modell-IDs hinzugefügt wird - leer lassen, um zu deaktivieren", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix-ID wird verwendet, um Konflikte mit anderen Verbindungen zu vermeiden, indem ein Präfix zu den Modell-IDs hinzugefügt wird - leer lassen, um zu deaktivieren",
"Prevent file creation": "Dateierstellung verhindern",
"Preview": "Vorschau", "Preview": "Vorschau",
"Previous 30 days": "Vorherige 30 Tage", "Previous 30 days": "Vorherige 30 Tage",
"Previous 7 days": "Vorherige 7 Tage", "Previous 7 days": "Vorherige 7 Tage",
@ -1396,7 +1386,6 @@
"Select only one model to call": "Wählen Sie nur ein Modell zum Anrufen aus", "Select only one model to call": "Wählen Sie nur ein Modell zum Anrufen aus",
"Select view": "Ansicht wählen", "Select view": "Ansicht wählen",
"Selected model(s) do not support image inputs": "Ihre ausgewählten Modelle unterstützen keine Bildeingaben", "Selected model(s) do not support image inputs": "Ihre ausgewählten Modelle unterstützen keine Bildeingaben",
"Self-Hosted": "",
"semantic": "semantisch", "semantic": "semantisch",
"Send": "Senden", "Send": "Senden",
"Send a Message": "Eine Nachricht senden", "Send a Message": "Eine Nachricht senden",
@ -1438,14 +1427,12 @@
"Share your background and interests": "Teilen Sie Ihren Hintergrund und Ihre Interessen", "Share your background and interests": "Teilen Sie Ihren Hintergrund und Ihre Interessen",
"Shared with you": "Mit dir geteilt", "Shared with you": "Mit dir geteilt",
"Sharing Permissions": "Berechtigungen teilen", "Sharing Permissions": "Berechtigungen teilen",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Tastenkürzel mit einem Sternchen (*) sind situationsbedingt und nur unter bestimmten Bedingungen aktiv.",
"Show": "Anzeigen", "Show": "Anzeigen",
"Show \"What's New\" modal on login": "\"Was gibt's Neues\"-Modal beim Anmelden anzeigen", "Show \"What's New\" modal on login": "\"Was gibt's Neues\"-Modal beim Anmelden anzeigen",
"Show Admin Details in Account Pending Overlay": "Admin-Details im Account-Pending-Overlay anzeigen", "Show Admin Details in Account Pending Overlay": "Admin-Details im Account-Pending-Overlay anzeigen",
"Show Formatting Toolbar": "Formatierungsleiste anzeigen", "Show Formatting Toolbar": "Formatierungsleiste anzeigen",
"Show image preview": "Bildvorschau anzeigen", "Show image preview": "Bildvorschau anzeigen",
"Show Model": "Modell anzeigen", "Show Model": "Modell anzeigen",
"Show shortcuts": "Verknüpfungen anzeigen",
"Show your support!": "Zeigen Sie Ihre Unterstützung!", "Show your support!": "Zeigen Sie Ihre Unterstützung!",
"Showcased creativity": "Kreativität gezeigt", "Showcased creativity": "Kreativität gezeigt",
"Sign in": "Anmelden", "Sign in": "Anmelden",
@ -1474,13 +1461,12 @@
"Speech-to-Text": "Sprache-zu-Text", "Speech-to-Text": "Sprache-zu-Text",
"Speech-to-Text Engine": "Sprache-zu-Text-Engine", "Speech-to-Text Engine": "Sprache-zu-Text-Engine",
"standard": "Standard", "standard": "Standard",
"Start a new conversation": "", "Start a new conversation": "Neue Unterhaltung starten",
"Start of the channel": "Beginn des Kanals", "Start of the channel": "Beginn des Kanals",
"Start Tag": "Start-Tag", "Start Tag": "Start-Tag",
"Status Updates": "Statusaktualisierungen", "Status Updates": "Statusaktualisierungen",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Stop", "Stop": "Stop",
"Stop Generating": "Generierung stoppen",
"Stop Sequence": "Stop-Sequenz", "Stop Sequence": "Stop-Sequenz",
"Stream Chat Response": "Chat-Antwort streamen", "Stream Chat Response": "Chat-Antwort streamen",
"Stream Delta Chunk Size": "Stream-Delta-Chunk-Größe", "Stream Delta Chunk Size": "Stream-Delta-Chunk-Größe",
@ -1510,7 +1496,6 @@
"Tags Generation": "Tag-Generierung", "Tags Generation": "Tag-Generierung",
"Tags Generation Prompt": "Prompt für Tag-Generierung", "Tags Generation Prompt": "Prompt für Tag-Generierung",
"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.": "Tail-Free Sampling wird verwendet, um den Einfluss weniger wahrscheinlicher Token auf die Ausgabe zu reduzieren. Ein höherer Wert (z. B. 2.0) reduziert den Einfluss stärker, während ein Wert von 1.0 diese Einstellung deaktiviert. (Standard: 1)", "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.": "Tail-Free Sampling wird verwendet, um den Einfluss weniger wahrscheinlicher Token auf die Ausgabe zu reduzieren. Ein höherer Wert (z. B. 2.0) reduziert den Einfluss stärker, während ein Wert von 1.0 diese Einstellung deaktiviert. (Standard: 1)",
"Talk to model": "Zu einem Modell sprechen",
"Tap to interrupt": "Zum Unterbrechen tippen", "Tap to interrupt": "Zum Unterbrechen tippen",
"Task List": "Aufgabenliste", "Task List": "Aufgabenliste",
"Task Model": "Aufgabenmodell", "Task Model": "Aufgabenmodell",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "Toast-Benachrichtigungen für neue Updates", "Toast notifications for new updates": "Toast-Benachrichtigungen für neue Updates",
"Today": "Heute", "Today": "Heute",
"Today at {{LOCALIZED_TIME}}": "Heute um {{LOCALIZED_TIME}}", "Today at {{LOCALIZED_TIME}}": "Heute um {{LOCALIZED_TIME}}",
"Toggle search": "Suche umschalten",
"Toggle settings": "Einstellungen umschalten",
"Toggle sidebar": "Seitenleiste umschalten",
"Toggle whether current connection is active.": "Aktuelle Verbindung umschalten.", "Toggle whether current connection is active.": "Aktuelle Verbindung umschalten.",
"Token": "Token", "Token": "Token",
"Too verbose": "Zu ausführlich", "Too verbose": "Zu ausführlich",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "Arbeitsbereichsberechtigungen", "Workspace Permissions": "Arbeitsbereichsberechtigungen",
"Write": "Schreiben", "Write": "Schreiben",
"Write a prompt suggestion (e.g. Who are you?)": "Schreiben Sie einen Promptvorschlag (z. B. Wer sind Sie?)", "Write a prompt suggestion (e.g. Who are you?)": "Schreiben Sie einen Promptvorschlag (z. B. Wer sind Sie?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Schreibe eine kurze Zusammenfassung in 50 Wörtern, die [Thema oder Schlüsselwort] zusammenfasst.", "Write a summary in 50 words that summarizes {{topic}}.": "Schreibe eine kurze Zusammenfassung in 50 Wörtern, die [Thema oder Schlüsselwort] zusammenfasst.",
"Write something...": "Schreiben Sie etwas...", "Write something...": "Schreiben Sie etwas...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Schreiben Sie hier den Inhalt des System-Prompts Ihres Modells\nz. B.: Sie sind Mario aus Super Mario Bros und agieren als Assistent.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Schreiben Sie hier den Inhalt des System-Prompts Ihres Modells\nz. B.: Sie sind Mario aus Super Mario Bros und agieren als Assistent.",
"Yacy Instance URL": "Yacy-Instanz-URL", "Yacy Instance URL": "Yacy-Instanz-URL",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "", "A task model is used when performing tasks such as generating titles for chats and web search queries": "",
"a user": "such user", "a user": "such user",
"About": "Much About", "About": "Much About",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "", "Access": "",
"Access Control": "", "Access Control": "",
"Accessible to all users": "", "Accessible to all users": "",
@ -51,7 +50,6 @@
"Add Content": "", "Add Content": "",
"Add content here": "", "Add content here": "",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "",
"Add Details": "", "Add Details": "",
"Add Files": "Add Files", "Add Files": "Add Files",
"Add Group": "", "Add Group": "",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "", "Ask a question": "",
"Assistant": "", "Assistant": "",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "", "Character": "",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "", "Code execution": "",
@ -331,8 +330,6 @@
"Copied to clipboard": "", "Copied to clipboard": "",
"Copy": "", "Copy": "",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "Copy last code block",
"Copy last response": "Copy last response",
"Copy link": "", "Copy link": "",
"Copy Link": "", "Copy Link": "",
"Copy to clipboard": "", "Copy to clipboard": "",
@ -396,7 +393,6 @@
"Delete a model": "Delete a model", "Delete a model": "Delete a model",
"Delete All Chats": "", "Delete All Chats": "",
"Delete All Models": "", "Delete All Models": "",
"Delete chat": "Delete chat",
"Delete Chat": "", "Delete Chat": "",
"Delete chat?": "", "Delete chat?": "",
"Delete folder?": "", "Delete folder?": "",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Focus chat bork",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "", "Folder deleted successfully": "",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "", "Generate Image": "",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "", "Generating search query": "",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "Input commands",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "", "Key": "",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Keyboard Barkcuts", "Keyboard shortcuts": "Keyboard Barkcuts",
"Keyboard Shortcuts": "",
"Knowledge": "", "Knowledge": "",
"Knowledge Access": "", "Knowledge Access": "",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "Much loading...", "Loading...": "Much loading...",
"local": "",
"Local": "", "Local": "",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "", "Model": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama Version", "Ollama Version": "Ollama Version",
"On": "On", "On": "On",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed": "",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Only wow characters and hyphens are allowed in the bork string.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Only wow characters and hyphens are allowed in the bork string.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Open new bark",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "", "Prefix ID": "",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "", "Previous 30 days": "",
"Previous 7 days": "", "Previous 7 days": "",
@ -1396,7 +1386,6 @@
"Select only one model to call": "", "Select only one model to call": "",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "", "Selected model(s) do not support image inputs": "",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "", "Send": "",
"Send a Message": "Send a Message much message", "Send a Message": "Send a Message much message",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "Show much show", "Show": "Show much show",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "Show shortcuts much shortcut",
"Show your support!": "", "Show your support!": "",
"Showcased creativity": "", "Showcased creativity": "",
"Sign in": "Sign in very sign", "Sign in": "Sign in very sign",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "", "Stop": "",
"Stop Generating": "",
"Stop Sequence": "Stop Sequence much stop", "Stop Sequence": "Stop Sequence much stop",
"Stream Chat Response": "", "Stream Chat Response": "",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "", "Tags Generation Prompt": "",
"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.": "", "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.": "",
"Talk to model": "Talk to model",
"Tap to interrupt": "", "Tap to interrupt": "",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "", "Toast notifications for new updates": "",
"Today": "", "Today": "",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "Toggle settings much toggle",
"Toggle sidebar": "Toggle sidebar much toggle",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "", "Token": "",
"Too verbose": "", "Too verbose": "",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "Write a prompt suggestion (e.g. Who are you?) much suggest", "Write a prompt suggestion (e.g. Who are you?)": "Write a prompt suggestion (e.g. Who are you?) much suggest",
"Write a summary in 50 words that summarizes [topic or keyword].": "Write a summary in 50 words that summarizes [topic or keyword]. Much summarize.", "Write a summary in 50 words that summarizes {{topic}}.": "Write a summary in 50 words that summarizes {{topic}}. Much summarize.",
"Write something...": "", "Write something...": "",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

File diff suppressed because it is too large Load diff

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "", "A task model is used when performing tasks such as generating titles for chats and web search queries": "",
"a user": "", "a user": "",
"About": "", "About": "",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "", "Access": "",
"Access Control": "", "Access Control": "",
"Accessible to all users": "", "Accessible to all users": "",
@ -51,7 +50,6 @@
"Add Content": "", "Add Content": "",
"Add content here": "", "Add content here": "",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "",
"Add Details": "", "Add Details": "",
"Add Files": "", "Add Files": "",
"Add Group": "", "Add Group": "",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "", "Ask a question": "",
"Assistant": "", "Assistant": "",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "", "Character": "",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "", "Code execution": "",
@ -331,8 +330,6 @@
"Copied to clipboard": "", "Copied to clipboard": "",
"Copy": "", "Copy": "",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "",
"Copy last response": "",
"Copy link": "", "Copy link": "",
"Copy Link": "", "Copy Link": "",
"Copy to clipboard": "", "Copy to clipboard": "",
@ -396,7 +393,6 @@
"Delete a model": "", "Delete a model": "",
"Delete All Chats": "", "Delete All Chats": "",
"Delete All Models": "", "Delete All Models": "",
"Delete chat": "",
"Delete Chat": "", "Delete Chat": "",
"Delete chat?": "", "Delete chat?": "",
"Delete folder?": "", "Delete folder?": "",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "", "Folder deleted successfully": "",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "", "Generate Image": "",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "", "Generating search query": "",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "", "Key": "",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "", "Keyboard shortcuts": "",
"Keyboard Shortcuts": "",
"Knowledge": "", "Knowledge": "",
"Knowledge Access": "", "Knowledge Access": "",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "", "Loading...": "",
"local": "",
"Local": "", "Local": "",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "", "Model": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "", "Ollama Version": "",
"On": "", "On": "",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed": "",
"Only alphanumeric characters and hyphens are allowed in the command string.": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "", "Prefix ID": "",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "", "Previous 30 days": "",
"Previous 7 days": "", "Previous 7 days": "",
@ -1396,7 +1386,6 @@
"Select only one model to call": "", "Select only one model to call": "",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "", "Selected model(s) do not support image inputs": "",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "", "Send": "",
"Send a Message": "", "Send a Message": "",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "", "Show": "",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "",
"Show your support!": "", "Show your support!": "",
"Showcased creativity": "", "Showcased creativity": "",
"Sign in": "", "Sign in": "",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "", "STDOUT/STDERR": "",
"Stop": "", "Stop": "",
"Stop Generating": "",
"Stop Sequence": "", "Stop Sequence": "",
"Stream Chat Response": "", "Stream Chat Response": "",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "", "Tags Generation Prompt": "",
"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.": "", "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.": "",
"Talk to model": "",
"Tap to interrupt": "", "Tap to interrupt": "",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "", "Toast notifications for new updates": "",
"Today": "", "Today": "",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "",
"Toggle sidebar": "",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "", "Token": "",
"Too verbose": "", "Too verbose": "",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "", "Write a prompt suggestion (e.g. Who are you?)": "",
"Write a summary in 50 words that summarizes [topic or keyword].": "Write a summary in 50 words that summarises [topic or keyword].", "Write a summary in 50 words that summarizes {{topic}}.": "Write a summary in 50 words that summarises [topic or keyword].",
"Write something...": "", "Write something...": "",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "", "A task model is used when performing tasks such as generating titles for chats and web search queries": "",
"a user": "", "a user": "",
"About": "", "About": "",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "", "Access": "",
"Access Control": "", "Access Control": "",
"Accessible to all users": "", "Accessible to all users": "",
@ -51,7 +50,6 @@
"Add Content": "", "Add Content": "",
"Add content here": "", "Add content here": "",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "",
"Add Details": "", "Add Details": "",
"Add Files": "", "Add Files": "",
"Add Group": "", "Add Group": "",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "", "Ask a question": "",
"Assistant": "", "Assistant": "",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "", "Character": "",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "", "Code execution": "",
@ -331,8 +330,6 @@
"Copied to clipboard": "", "Copied to clipboard": "",
"Copy": "", "Copy": "",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "",
"Copy last response": "",
"Copy link": "", "Copy link": "",
"Copy Link": "", "Copy Link": "",
"Copy to clipboard": "", "Copy to clipboard": "",
@ -396,7 +393,6 @@
"Delete a model": "", "Delete a model": "",
"Delete All Chats": "", "Delete All Chats": "",
"Delete All Models": "", "Delete All Models": "",
"Delete chat": "",
"Delete Chat": "", "Delete Chat": "",
"Delete chat?": "", "Delete chat?": "",
"Delete folder?": "", "Delete folder?": "",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "", "Folder deleted successfully": "",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "", "Generate Image": "",
"Generate prompt pair": "",
"Generated Image": "Generated Image", "Generated Image": "Generated Image",
"Generating search query": "", "Generating search query": "",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "", "Key": "",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "", "Keyboard shortcuts": "",
"Keyboard Shortcuts": "",
"Knowledge": "", "Knowledge": "",
"Knowledge Access": "", "Knowledge Access": "",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "", "Loading...": "",
"local": "",
"Local": "", "Local": "",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "", "Model": "",
@ -1119,8 +1113,6 @@
"Ollama Version": "", "Ollama Version": "",
"On": "", "On": "",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "", "Only alphanumeric characters and hyphens are allowed": "",
"Only alphanumeric characters and hyphens are allowed in the command string.": "", "Only alphanumeric characters and hyphens are allowed in the command string.": "",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "", "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "", "Prefix ID": "",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "", "Previous 30 days": "",
"Previous 7 days": "", "Previous 7 days": "",
@ -1396,7 +1386,6 @@
"Select only one model to call": "", "Select only one model to call": "",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "", "Selected model(s) do not support image inputs": "",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "", "Send": "",
"Send a Message": "", "Send a Message": "",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "", "Show": "",
"Show \"What's New\" modal on login": "", "Show \"What's New\" modal on login": "",
"Show Admin Details in Account Pending Overlay": "", "Show Admin Details in Account Pending Overlay": "",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "",
"Show your support!": "", "Show your support!": "",
"Showcased creativity": "", "Showcased creativity": "",
"Sign in": "", "Sign in": "",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "", "STDOUT/STDERR": "",
"Stop": "", "Stop": "",
"Stop Generating": "",
"Stop Sequence": "", "Stop Sequence": "",
"Stream Chat Response": "", "Stream Chat Response": "",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "", "Tags Generation Prompt": "",
"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.": "", "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.": "",
"Talk to model": "",
"Tap to interrupt": "", "Tap to interrupt": "",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "", "Toast notifications for new updates": "",
"Today": "", "Today": "",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "",
"Toggle sidebar": "",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "", "Token": "",
"Too verbose": "", "Too verbose": "",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "", "Workspace Permissions": "",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "", "Write a prompt suggestion (e.g. Who are you?)": "",
"Write a summary in 50 words that summarizes [topic or keyword].": "", "Write a summary in 50 words that summarizes {{topic}}.": "",
"Write something...": "", "Write something...": "",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Write your model system prompt content here\n e.g.) You are Mario from Super Mario Bros, acting as an assistant.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "El modelo de tareas realiza tareas como la generación de títulos para chats y consultas de búsqueda web", "A task model is used when performing tasks such as generating titles for chats and web search queries": "El modelo de tareas realiza tareas como la generación de títulos para chats y consultas de búsqueda web",
"a user": "un usuario", "a user": "un usuario",
"About": "Acerca de", "About": "Acerca de",
"Accept autocomplete generation / Jump to prompt variable": "Aceptar generación de autocompletado / Saltar a indicador variable",
"Access": "Acceso", "Access": "Acceso",
"Access Control": "Control de Acceso", "Access Control": "Control de Acceso",
"Accessible to all users": "Accesible para todos los usuarios", "Accessible to all users": "Accesible para todos los usuarios",
@ -51,7 +50,6 @@
"Add Content": "Añadir Contenido", "Add Content": "Añadir Contenido",
"Add content here": "Añadir contenido aquí", "Add content here": "Añadir contenido aquí",
"Add Custom Parameter": "Añadir parámetro personalizado", "Add Custom Parameter": "Añadir parámetro personalizado",
"Add custom prompt": "Añadir un indicador personalizado",
"Add Details": "Añadir Detalles", "Add Details": "Añadir Detalles",
"Add Files": "Añadir Archivos", "Add Files": "Añadir Archivos",
"Add Group": "Añadir Grupo", "Add Group": "Añadir Grupo",
@ -73,9 +71,9 @@
"Admin Settings": "Ajustes de Admin", "Admin Settings": "Ajustes de Admin",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Los administradores tienen acceso a todas las herramientas en todo momento; los usuarios necesitan que los modelos tengan asignadas las herramientas en el area de trabajo.", "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Los administradores tienen acceso a todas las herramientas en todo momento; los usuarios necesitan que los modelos tengan asignadas las herramientas en el area de trabajo.",
"Advanced Parameters": "Parámetros Avanzados", "Advanced Parameters": "Parámetros Avanzados",
"Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "", "Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "Parámetros avanzados para MinerU (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)",
"Advanced Params": "Parámetros Avanzados", "Advanced Params": "Parámetros Avanzados",
"After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "", "After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "Después de actualizar o cambiar el modelo de incrustación, debe reindexar la base de datos para que los cambios surtan efecto. Puede hacerlo usando el botón \"Reindexar\" a continuación.",
"AI": "IA", "AI": "IA",
"All": "Todos", "All": "Todos",
"All chats have been unarchived.": "Todos los chats han sido desarchivados", "All chats have been unarchived.": "Todos los chats han sido desarchivados",
@ -130,7 +128,7 @@
"API Key created.": "Clave API creada.", "API Key created.": "Clave API creada.",
"API Key Endpoint Restrictions": "Clave API para Endpoints Restringidos", "API Key Endpoint Restrictions": "Clave API para Endpoints Restringidos",
"API keys": "Claves API", "API keys": "Claves API",
"API Mode": "", "API Mode": "Modo de API",
"API Version": "Versión API", "API Version": "Versión API",
"API Version is required": "La Versión API es requerida", "API Version is required": "La Versión API es requerida",
"Application DN": "Aplicacion DN", "Application DN": "Aplicacion DN",
@ -151,7 +149,6 @@
"Ask": "Preguntar", "Ask": "Preguntar",
"Ask a question": "Haz una pregunta", "Ask a question": "Haz una pregunta",
"Assistant": "Asistente", "Assistant": "Asistente",
"Attach file from knowledge": "Adjuntar archivo desde conocimiento",
"Attach Knowledge": "Adjuntar Conocimiento", "Attach Knowledge": "Adjuntar Conocimiento",
"Attach Notes": "Adjuntar Notas", "Attach Notes": "Adjuntar Notas",
"Attach Webpage": "Adjuntar Página Web", "Attach Webpage": "Adjuntar Página Web",
@ -221,6 +218,7 @@
"Channel": "Canal", "Channel": "Canal",
"Channel deleted successfully": "Canal borrado correctamente", "Channel deleted successfully": "Canal borrado correctamente",
"Channel Name": "Nombre del Canal", "Channel Name": "Nombre del Canal",
"Channel name cannot be empty.": "",
"Channel updated successfully": "Canal actualizado correctamente", "Channel updated successfully": "Canal actualizado correctamente",
"Channels": "Canal", "Channels": "Canal",
"Character": "Carácter", "Character": "Carácter",
@ -272,6 +270,7 @@
"Close modal": "Cerrar modal", "Close modal": "Cerrar modal",
"Close settings modal": "Cerrar modal configuraciones", "Close settings modal": "Cerrar modal configuraciones",
"Close Sidebar": "Cerrar Barra Lateral", "Close Sidebar": "Cerrar Barra Lateral",
"cloud": "",
"CMU ARCTIC speaker embedding name": "Nombre de incrustación CMU ARCTIC del interlocutor", "CMU ARCTIC speaker embedding name": "Nombre de incrustación CMU ARCTIC del interlocutor",
"Code Block": "Bloque de Código", "Code Block": "Bloque de Código",
"Code execution": "Ejecución de Código", "Code execution": "Ejecución de Código",
@ -331,17 +330,15 @@
"Copied to clipboard": "Copiado al portapapeles", "Copied to clipboard": "Copiado al portapapeles",
"Copy": "Copiar", "Copy": "Copiar",
"Copy Formatted Text": "Copiar Texto Formateado", "Copy Formatted Text": "Copiar Texto Formateado",
"Copy last code block": "Copia el último bloque de código",
"Copy last response": "Copia la última respuesta",
"Copy link": "Copiar Enlace", "Copy link": "Copiar Enlace",
"Copy Link": "Copiar enlace", "Copy Link": "Copiar enlace",
"Copy to clipboard": "Copia a portapapeles", "Copy to clipboard": "Copia a portapapeles",
"Copying to clipboard was successful!": "¡La copia al portapapeles se ha realizado correctamente!", "Copying to clipboard was successful!": "¡La copia al portapapeles se ha realizado correctamente!",
"CORS must be properly configured by the provider to allow requests from Open WebUI.": "El protocolo CORS debe estar configurado correctamente por el proveedor para permitir solicitudes desde Open WebUI.", "CORS must be properly configured by the provider to allow requests from Open WebUI.": "El protocolo CORS debe estar configurado correctamente por el proveedor para permitir solicitudes desde Open WebUI.",
"Create": "Crear", "Create": "Crear",
"Create a knowledge base": "Crear Base de Conocimiento", "Create a knowledge base": "Crea una Base de Conocimiento",
"Create a model": "Crear Modelo", "Create a model": "Crea un modelo",
"Create a new note": "", "Create a new note": "Crea una nueva nota",
"Create Account": "Crear Cuenta", "Create Account": "Crear Cuenta",
"Create Admin Account": "Crear Cuenta Administrativa", "Create Admin Account": "Crear Cuenta Administrativa",
"Create Channel": "Crear Canal", "Create Channel": "Crear Canal",
@ -396,7 +393,6 @@
"Delete a model": "Borrar un modelo", "Delete a model": "Borrar un modelo",
"Delete All Chats": "Borrar todos los chats", "Delete All Chats": "Borrar todos los chats",
"Delete All Models": "Borrar todos los modelos", "Delete All Models": "Borrar todos los modelos",
"Delete chat": "Borrar chat",
"Delete Chat": "Borrar Chat", "Delete Chat": "Borrar Chat",
"Delete chat?": "¿Borrar el chat?", "Delete chat?": "¿Borrar el chat?",
"Delete folder?": "¿Borrar carpeta?", "Delete folder?": "¿Borrar carpeta?",
@ -582,7 +578,7 @@
"Enter Kagi Search API Key": "Ingresar Clave API de Kagi Search", "Enter Kagi Search API Key": "Ingresar Clave API de Kagi Search",
"Enter Key Behavior": "Comportamiento de la Tecla de Envío", "Enter Key Behavior": "Comportamiento de la Tecla de Envío",
"Enter language codes": "Ingresar Códigos de Idioma", "Enter language codes": "Ingresar Códigos de Idioma",
"Enter MinerU API Key": "", "Enter MinerU API Key": "Ingresar Clave API de MinerU",
"Enter Mistral API Key": "Ingresar Clave API de Mistral", "Enter Mistral API Key": "Ingresar Clave API de Mistral",
"Enter Model ID": "Ingresar ID del Modelo", "Enter Model ID": "Ingresar ID del Modelo",
"Enter model tag (e.g. {{modelTag}})": "Ingresar la etiqueta del modelo (p.ej. {{modelTag}})", "Enter model tag (e.g. {{modelTag}})": "Ingresar la etiqueta del modelo (p.ej. {{modelTag}})",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "URL Base de API de Firecrawl", "Firecrawl API Base URL": "URL Base de API de Firecrawl",
"Firecrawl API Key": "Clave de API de Firecrawl", "Firecrawl API Key": "Clave de API de Firecrawl",
"Floating Quick Actions": "Acciones Rápidas Flotantes", "Floating Quick Actions": "Acciones Rápidas Flotantes",
"Focus chat input": "Enfocar campo de chat",
"Folder": "Carpeta", "Folder": "Carpeta",
"Folder Background Image": "Imagen de Fondo de la Carpeta", "Folder Background Image": "Imagen de Fondo de la Carpeta",
"Folder deleted successfully": "Carpeta eliminada correctamente", "Folder deleted successfully": "Carpeta eliminada correctamente",
@ -786,7 +781,6 @@
"Generate": "Generar", "Generate": "Generar",
"Generate an image": "Generar una imagen", "Generate an image": "Generar una imagen",
"Generate Image": "Generar imagen", "Generate Image": "Generar imagen",
"Generate prompt pair": "Generar par de indicadores",
"Generated Image": "Imagen Generada", "Generated Image": "Imagen Generada",
"Generating search query": "Generando consulta de búsqueda", "Generating search query": "Generando consulta de búsqueda",
"Generating...": "Generando", "Generating...": "Generando",
@ -828,8 +822,8 @@
"How can I help you today?": "¿Cómo puedo ayudarte hoy?", "How can I help you today?": "¿Cómo puedo ayudarte hoy?",
"How would you rate this response?": "¿Cómo calificarías esta respuesta?", "How would you rate this response?": "¿Cómo calificarías esta respuesta?",
"HTML": "HTML", "HTML": "HTML",
"http://localhost:8000": "", "http://localhost:8000": "http://localhost:8000",
"https://mineru.net/api/v4": "", "https://mineru.net/api/v4": "https://mineru.net/api/v4",
"Hybrid Search": "Búsqueda Híbrida", "Hybrid Search": "Búsqueda Híbrida",
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Aseguro que he leído y entiendo las implicaciones de mi acción. Soy consciente de los riesgos asociados con la ejecución de código arbitrario y he verificado la confiabilidad de la fuente.", "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Aseguro que he leído y entiendo las implicaciones de mi acción. Soy consciente de los riesgos asociados con la ejecución de código arbitrario y he verificado la confiabilidad de la fuente.",
"ID": "ID", "ID": "ID",
@ -870,7 +864,6 @@
"Initials": "Iniciales", "Initials": "Iniciales",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Inyecta el contenido completo como contexto para un procesado comprensivo, recomendado para consultas complejas.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Inyecta el contenido completo como contexto para un procesado comprensivo, recomendado para consultas complejas.",
"Input": "Entrada", "Input": "Entrada",
"Input commands": "Ingresar comandos",
"Input Key (e.g. text, unet_name, steps)": "Ingresa Clave (ej. text, unet_name. steps)", "Input Key (e.g. text, unet_name, steps)": "Ingresa Clave (ej. text, unet_name. steps)",
"Input Variables": "Ingresar variables", "Input Variables": "Ingresar variables",
"Insert": "Insertar", "Insert": "Insertar",
@ -909,6 +902,7 @@
"Key": "Clave", "Key": "Clave",
"Key is required": "La Clave es requerida", "Key is required": "La Clave es requerida",
"Keyboard shortcuts": "Atajos de teclado", "Keyboard shortcuts": "Atajos de teclado",
"Keyboard Shortcuts": "",
"Knowledge": "Conocimiento", "Knowledge": "Conocimiento",
"Knowledge Access": "Acceso a Conocimiento", "Knowledge Access": "Acceso a Conocimiento",
"Knowledge Base": "Base de Conocimiento", "Knowledge Base": "Base de Conocimiento",
@ -952,6 +946,7 @@
"Loader": "Cargador", "Loader": "Cargador",
"Loading Kokoro.js...": "Cargando Kokoro.js...", "Loading Kokoro.js...": "Cargando Kokoro.js...",
"Loading...": "Cargando...", "Loading...": "Cargando...",
"local": "",
"Local": "Local", "Local": "Local",
"Local Task Model": "Modelo Local para Tarea", "Local Task Model": "Modelo Local para Tarea",
"Location access not allowed": "Sin acceso a la Ubicación", "Location access not allowed": "Sin acceso a la Ubicación",
@ -996,9 +991,8 @@
"Microsoft OneDrive": "Microsoft OneDrive", "Microsoft OneDrive": "Microsoft OneDrive",
"Microsoft OneDrive (personal)": "Microsoft OneDrive (personal)", "Microsoft OneDrive (personal)": "Microsoft OneDrive (personal)",
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (trabajo/estudio)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (trabajo/estudio)",
"MinerU": "", "MinerU": "MinerU",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "La clave API de MinerU es necesaria para el modo Cloud API",
"minerU managed (Cloud API)": "",
"Mistral OCR": "OCR Mistral", "Mistral OCR": "OCR Mistral",
"Mistral OCR API Key required.": "Clave API de Mistral OCR requerida", "Mistral OCR API Key required.": "Clave API de Mistral OCR requerida",
"Model": "Modelo", "Model": "Modelo",
@ -1066,7 +1060,7 @@
"No content to speak": "No hay contenido para hablar", "No content to speak": "No hay contenido para hablar",
"No conversation to save": "No hay conversación para guardar", "No conversation to save": "No hay conversación para guardar",
"No distance available": "No hay distancia disponible", "No distance available": "No hay distancia disponible",
"No expiration can pose security risks.": "", "No expiration can pose security risks.": "No expiración puede poner la seguridad en riesgo.",
"No feedbacks found": "No se encontraron comentarios", "No feedbacks found": "No se encontraron comentarios",
"No file selected": "No se seleccionó archivo", "No file selected": "No se seleccionó archivo",
"No functions found": "No se encontraron funciones", "No functions found": "No se encontraron funciones",
@ -1119,8 +1113,6 @@
"Ollama Version": "Versión de Ollama", "Ollama Version": "Versión de Ollama",
"On": "Activado", "On": "Activado",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Solo activo cuando la opción \"Pegar el Texto Largo como Archivo\" está activada.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Solo activo cuando el foco está en la entrada del chat y el LLM está generando una respuesta.",
"Only alphanumeric characters and hyphens are allowed": "Sólo están permitidos caracteres alfanuméricos y guiones", "Only alphanumeric characters and hyphens are allowed": "Sólo están permitidos caracteres alfanuméricos y guiones",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo están permitidos en la cadena de comandos caracteres alfanuméricos y guiones.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo están permitidos en la cadena de comandos caracteres alfanuméricos y guiones.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Solo se pueden editar las colecciones, para añadir/editar documentos hay que crear una nueva base de conocimientos", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Solo se pueden editar las colecciones, para añadir/editar documentos hay que crear una nueva base de conocimientos",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Abrir modal para configurar la conexión", "Open modal to configure connection": "Abrir modal para configurar la conexión",
"Open Modal To Manage Floating Quick Actions": "Abrir Modal para Gestionar Acciones Rápidas Flotantes", "Open Modal To Manage Floating Quick Actions": "Abrir Modal para Gestionar Acciones Rápidas Flotantes",
"Open Modal To Manage Image Compression": "Abrir Modal para Gestionar Compresión de Imagen", "Open Modal To Manage Image Compression": "Abrir Modal para Gestionar Compresión de Imagen",
"Open new chat": "Abrir nuevo chat",
"Open Sidebar": "Abrir Barra Lateral", "Open Sidebar": "Abrir Barra Lateral",
"Open User Profile Menu": "Abrir Menu de Perfiles de Usuario", "Open User Profile Menu": "Abrir Menu de Perfiles de Usuario",
"Open WebUI can use tools provided by any OpenAPI server.": "Open-WebUI puede usar herramientas proporcionadas por cualquier servidor OpenAPI", "Open WebUI can use tools provided by any OpenAPI server.": "Open-WebUI puede usar herramientas proporcionadas por cualquier servidor OpenAPI",
@ -1225,7 +1216,6 @@
"Prefer not to say": "Prefiero no decirlo", "Prefer not to say": "Prefiero no decirlo",
"Prefix ID": "prefijo ID", "Prefix ID": "prefijo ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "El prefijo ID se utiliza para evitar conflictos con otras conexiones al añadir un prefijo a los IDs de modelo, dejar vacío para deshabilitarlo", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "El prefijo ID se utiliza para evitar conflictos con otras conexiones al añadir un prefijo a los IDs de modelo, dejar vacío para deshabilitarlo",
"Prevent file creation": "Prevenir la creación de archivos",
"Preview": "Previsualización", "Preview": "Previsualización",
"Previous 30 days": "30 días previos", "Previous 30 days": "30 días previos",
"Previous 7 days": "7 días previos", "Previous 7 days": "7 días previos",
@ -1397,7 +1387,6 @@
"Select only one model to call": "Seleccionar sólo un modelo a llamar", "Select only one model to call": "Seleccionar sólo un modelo a llamar",
"Select view": "Seleccionar vista", "Select view": "Seleccionar vista",
"Selected model(s) do not support image inputs": "Modelo(s) seleccionado(s) no admiten entradas de imagen", "Selected model(s) do not support image inputs": "Modelo(s) seleccionado(s) no admiten entradas de imagen",
"Self-Hosted": "",
"semantic": "semántica", "semantic": "semántica",
"Send": "Enviar", "Send": "Enviar",
"Send a Message": "Enviar un Mensaje", "Send a Message": "Enviar un Mensaje",
@ -1439,14 +1428,12 @@
"Share your background and interests": "Compartir tus antecedentes e intereses", "Share your background and interests": "Compartir tus antecedentes e intereses",
"Shared with you": "Compartido contigo", "Shared with you": "Compartido contigo",
"Sharing Permissions": "Permisos al Compartir", "Sharing Permissions": "Permisos al Compartir",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Accesos cortos con un asterisco (*) depende de la situación y solo activos bajo determinadas condiciones.",
"Show": "Mostrar", "Show": "Mostrar",
"Show \"What's New\" modal on login": "Mostrar modal \"Qué hay de Nuevo\" al iniciar sesión", "Show \"What's New\" modal on login": "Mostrar modal \"Qué hay de Nuevo\" al iniciar sesión",
"Show Admin Details in Account Pending Overlay": "Mostrar Detalles Admin en la sobrecapa de 'Cuenta Pendiente'", "Show Admin Details in Account Pending Overlay": "Mostrar Detalles Admin en la sobrecapa de 'Cuenta Pendiente'",
"Show Formatting Toolbar": "Mostrar barra de herramientas de Formateo", "Show Formatting Toolbar": "Mostrar barra de herramientas de Formateo",
"Show image preview": "Mostrar previsualización de imagen", "Show image preview": "Mostrar previsualización de imagen",
"Show Model": "Mostrar Modelo", "Show Model": "Mostrar Modelo",
"Show shortcuts": "Mostrar Atajos",
"Show your support!": "¡Muestra tu apoyo!", "Show your support!": "¡Muestra tu apoyo!",
"Showcased creativity": "Creatividad exhibida", "Showcased creativity": "Creatividad exhibida",
"Sign in": "Iniciar Sesión", "Sign in": "Iniciar Sesión",
@ -1475,13 +1462,12 @@
"Speech-to-Text": "Voz a Texto", "Speech-to-Text": "Voz a Texto",
"Speech-to-Text Engine": "Motor Voz a Texto(STT)", "Speech-to-Text Engine": "Motor Voz a Texto(STT)",
"standard": "standard", "standard": "standard",
"Start a new conversation": "", "Start a new conversation": "Comenzar una conversación nueva",
"Start of the channel": "Inicio del canal", "Start of the channel": "Inicio del canal",
"Start Tag": "Etiqueta de Inicio", "Start Tag": "Etiqueta de Inicio",
"Status Updates": "Actualizaciones de Estado", "Status Updates": "Actualizaciones de Estado",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Detener", "Stop": "Detener",
"Stop Generating": "Detener la Generación",
"Stop Sequence": "Secuencia de Parada", "Stop Sequence": "Secuencia de Parada",
"Stream Chat Response": "Transmisión Directa de la Respuesta del Chat", "Stream Chat Response": "Transmisión Directa de la Respuesta del Chat",
"Stream Delta Chunk Size": "Tamaño del Fragmentado Incremental para la Transmisión Directa", "Stream Delta Chunk Size": "Tamaño del Fragmentado Incremental para la Transmisión Directa",
@ -1511,7 +1497,6 @@
"Tags Generation": "Generación de Etiquetas", "Tags Generation": "Generación de Etiquetas",
"Tags Generation Prompt": "Indicador para la Generación de Etiquetas", "Tags Generation Prompt": "Indicador para la Generación de Etiquetas",
"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.": "El Muestreo de cola libre(TFS_Z) es usado para reducir el impacto de los tokens menos probables en la salida. Un valor más alto (p.ej. 2.0) reduce más fuertemente el impacto, mientras que un valor de 1.0 deshabilita este ajuste.", "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.": "El Muestreo de cola libre(TFS_Z) es usado para reducir el impacto de los tokens menos probables en la salida. Un valor más alto (p.ej. 2.0) reduce más fuertemente el impacto, mientras que un valor de 1.0 deshabilita este ajuste.",
"Talk to model": "Hablar con el modelo",
"Tap to interrupt": "Toca para interrumpir", "Tap to interrupt": "Toca para interrumpir",
"Task List": "Lista de Tareas", "Task List": "Lista de Tareas",
"Task Model": "Modelo de Tarea", "Task Model": "Modelo de Tarea",
@ -1593,9 +1578,6 @@
"Toast notifications for new updates": "Notificaciones emergentes para nuevas actualizaciones", "Toast notifications for new updates": "Notificaciones emergentes para nuevas actualizaciones",
"Today": "Hoy", "Today": "Hoy",
"Today at {{LOCALIZED_TIME}}": "Hoy a las {{LOCALIZED_TIME}}", "Today at {{LOCALIZED_TIME}}": "Hoy a las {{LOCALIZED_TIME}}",
"Toggle search": "Alternar busqueda",
"Toggle settings": "Alternar Ajustes",
"Toggle sidebar": "Alternar Barra Lateral",
"Toggle whether current connection is active.": "Alternar si la conexión actual está activa", "Toggle whether current connection is active.": "Alternar si la conexión actual está activa",
"Token": "Token", "Token": "Token",
"Too verbose": "Demasiado detallado", "Too verbose": "Demasiado detallado",
@ -1733,7 +1715,7 @@
"Workspace Permissions": "Permisos del Espacio de Trabajo", "Workspace Permissions": "Permisos del Espacio de Trabajo",
"Write": "Escribir", "Write": "Escribir",
"Write a prompt suggestion (e.g. Who are you?)": "Escribe una sugerencia de indicador (p.ej. ¿quién eres?)", "Write a prompt suggestion (e.g. Who are you?)": "Escribe una sugerencia de indicador (p.ej. ¿quién eres?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Escribe un resumen en 50 palabras que resuma [tema o palabra clave].", "Write a summary in 50 words that summarizes {{topic}}.": "Escribe un resumen en 50 palabras que resuma [tema o palabra clave].",
"Write something...": "Escribe algo...", "Write something...": "Escribe algo...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Escribe aquí el contenido del system prompt de tu modelo\np. ej.: Eres Mario de Super Mario Bros y actúas como asistente.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Escribe aquí el contenido del system prompt de tu modelo\np. ej.: Eres Mario de Super Mario Bros y actúas como asistente.",
"Yacy Instance URL": "URL de la instancia Yacy", "Yacy Instance URL": "URL de la instancia Yacy",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Ülesande mudelit kasutatakse selliste toimingute jaoks nagu vestluste pealkirjade ja veebiotsingu päringute genereerimine", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Ülesande mudelit kasutatakse selliste toimingute jaoks nagu vestluste pealkirjade ja veebiotsingu päringute genereerimine",
"a user": "kasutaja", "a user": "kasutaja",
"About": "Teave", "About": "Teave",
"Accept autocomplete generation / Jump to prompt variable": "Nõustu automaattäitmisega / Liigu vihjete muutujale",
"Access": "Juurdepääs", "Access": "Juurdepääs",
"Access Control": "Juurdepääsu kontroll", "Access Control": "Juurdepääsu kontroll",
"Accessible to all users": "Kättesaadav kõigile kasutajatele", "Accessible to all users": "Kättesaadav kõigile kasutajatele",
@ -396,7 +395,6 @@
"Delete a model": "Kustuta mudel", "Delete a model": "Kustuta mudel",
"Delete All Chats": "Kustuta kõik vestlused", "Delete All Chats": "Kustuta kõik vestlused",
"Delete All Models": "Kustuta kõik mudelid", "Delete All Models": "Kustuta kõik mudelid",
"Delete chat": "Kustuta vestlus",
"Delete Chat": "Kustuta vestlus", "Delete Chat": "Kustuta vestlus",
"Delete chat?": "Kustutada vestlus?", "Delete chat?": "Kustutada vestlus?",
"Delete folder?": "Kustutada kaust?", "Delete folder?": "Kustutada kaust?",
@ -909,6 +907,7 @@
"Key": "Võti", "Key": "Võti",
"Key is required": "Võti on nõutav", "Key is required": "Võti on nõutav",
"Keyboard shortcuts": "Klaviatuuri otseteed", "Keyboard shortcuts": "Klaviatuuri otseteed",
"Keyboard Shortcuts": "",
"Knowledge": "Teadmised", "Knowledge": "Teadmised",
"Knowledge Access": "Teadmiste juurdepääs", "Knowledge Access": "Teadmiste juurdepääs",
"Knowledge Base": "Teadmiste baas", "Knowledge Base": "Teadmiste baas",
@ -952,6 +951,7 @@
"Loader": "Laadija", "Loader": "Laadija",
"Loading Kokoro.js...": "Kokoro.js laadimine...", "Loading Kokoro.js...": "Kokoro.js laadimine...",
"Loading...": "...", "Loading...": "...",
"local": "",
"Local": "Kohalik", "Local": "Kohalik",
"Local Task Model": "Kohalik Task Mudel", "Local Task Model": "Kohalik Task Mudel",
"Location access not allowed": "Asukoha juurdepääs pole lubatud", "Location access not allowed": "Asukoha juurdepääs pole lubatud",
@ -1510,7 +1510,6 @@
"Tags Generation": "Siltide genereerimine", "Tags Generation": "Siltide genereerimine",
"Tags Generation Prompt": "Siltide genereerimise vihje", "Tags Generation Prompt": "Siltide genereerimise vihje",
"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.": "Saba vaba valimit kasutatakse väljundis vähem tõenäoliste tokenite mõju vähendamiseks. Kõrgem väärtus (nt 2,0) vähendab mõju rohkem, samas kui väärtus 1,0 keelab selle seade.", "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.": "Saba vaba valimit kasutatakse väljundis vähem tõenäoliste tokenite mõju vähendamiseks. Kõrgem väärtus (nt 2,0) vähendab mõju rohkem, samas kui väärtus 1,0 keelab selle seade.",
"Talk to model": "Räägi mudeliga",
"Tap to interrupt": "Puuduta katkestamiseks", "Tap to interrupt": "Puuduta katkestamiseks",
"Task List": "Task List", "Task List": "Task List",
"Task Model": "Task Mudel", "Task Model": "Task Mudel",
@ -1732,7 +1731,7 @@
"Workspace Permissions": "Tööala õigused", "Workspace Permissions": "Tööala õigused",
"Write": "Kirjuta", "Write": "Kirjuta",
"Write a prompt suggestion (e.g. Who are you?)": "Kirjutage vihje soovitus (nt Kes sa oled?)", "Write a prompt suggestion (e.g. Who are you?)": "Kirjutage vihje soovitus (nt Kes sa oled?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Kirjutage 50-sõnaline kokkuvõte, mis võtab kokku [teema või märksõna].", "Write a summary in 50 words that summarizes {{topic}}.": "Kirjutage 50-sõnaline kokkuvõte, mis võtab kokku [teema või märksõna].",
"Write something...": "Kirjutage midagi...", "Write something...": "Kirjutage midagi...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Kirjuta siia oma mudeli süsteemse käsuviiba sisu\nnt: Sa oled Mario mängust Super Mario Bros ja tegutsed assistendina.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Kirjuta siia oma mudeli süsteemse käsuviiba sisu\nnt: Sa oled Mario mängust Super Mario Bros ja tegutsed assistendina.",
"Yacy Instance URL": "Yacy Instance URL", "Yacy Instance URL": "Yacy Instance URL",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Ataza eredua erabiltzen da txatentzako izenburuak eta web bilaketa kontsultak sortzeko bezalako atazak egitean", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Ataza eredua erabiltzen da txatentzako izenburuak eta web bilaketa kontsultak sortzeko bezalako atazak egitean",
"a user": "erabiltzaile bat", "a user": "erabiltzaile bat",
"About": "Honi buruz", "About": "Honi buruz",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "Sarbidea", "Access": "Sarbidea",
"Access Control": "Sarbide Kontrola", "Access Control": "Sarbide Kontrola",
"Accessible to all users": "Erabiltzaile guztientzat eskuragarri", "Accessible to all users": "Erabiltzaile guztientzat eskuragarri",
@ -51,7 +50,6 @@
"Add Content": "Gehitu Edukia", "Add Content": "Gehitu Edukia",
"Add content here": "Gehitu edukia hemen", "Add content here": "Gehitu edukia hemen",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "Gehitu prompt pertsonalizatua",
"Add Details": "", "Add Details": "",
"Add Files": "Gehitu Fitxategiak", "Add Files": "Gehitu Fitxategiak",
"Add Group": "Gehitu Taldea", "Add Group": "Gehitu Taldea",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "Egin galdera bat", "Ask a question": "Egin galdera bat",
"Assistant": "Laguntzailea", "Assistant": "Laguntzailea",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "", "Channel Name": "",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "", "Channels": "",
"Character": "Karakterea", "Character": "Karakterea",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "Kodearen exekuzioa", "Code execution": "Kodearen exekuzioa",
@ -331,8 +330,6 @@
"Copied to clipboard": "Arbelera kopiatuta", "Copied to clipboard": "Arbelera kopiatuta",
"Copy": "Kopiatu", "Copy": "Kopiatu",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "Kopiatu azken kode blokea",
"Copy last response": "Kopiatu azken erantzuna",
"Copy link": "", "Copy link": "",
"Copy Link": "Kopiatu Esteka", "Copy Link": "Kopiatu Esteka",
"Copy to clipboard": "Kopiatu arbelera", "Copy to clipboard": "Kopiatu arbelera",
@ -396,7 +393,6 @@
"Delete a model": "Ezabatu eredu bat", "Delete a model": "Ezabatu eredu bat",
"Delete All Chats": "Ezabatu Txat Guztiak", "Delete All Chats": "Ezabatu Txat Guztiak",
"Delete All Models": "Ezabatu Eredu Guztiak", "Delete All Models": "Ezabatu Eredu Guztiak",
"Delete chat": "Ezabatu txata",
"Delete Chat": "Ezabatu Txata", "Delete Chat": "Ezabatu Txata",
"Delete chat?": "Ezabatu txata?", "Delete chat?": "Ezabatu txata?",
"Delete folder?": "Ezabatu karpeta?", "Delete folder?": "Ezabatu karpeta?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Fokuratu txataren sarrera",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "Karpeta ongi ezabatu da", "Folder deleted successfully": "Karpeta ongi ezabatu da",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "", "Generate an image": "",
"Generate Image": "Sortu Irudia", "Generate Image": "Sortu Irudia",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "Bilaketa kontsulta sortzen", "Generating search query": "Bilaketa kontsulta sortzen",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "Sartu komandoak",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "Gakoa", "Key": "Gakoa",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Teklatuko lasterbideak", "Keyboard shortcuts": "Teklatuko lasterbideak",
"Keyboard Shortcuts": "",
"Knowledge": "Ezagutza", "Knowledge": "Ezagutza",
"Knowledge Access": "Ezagutzarako Sarbidea", "Knowledge Access": "Ezagutzarako Sarbidea",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "", "Loader": "",
"Loading Kokoro.js...": "", "Loading Kokoro.js...": "",
"Loading...": "Kargatzen...", "Loading...": "Kargatzen...",
"local": "",
"Local": "Lokala", "Local": "Lokala",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "Modeloa", "Model": "Modeloa",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama bertsioa", "Ollama Version": "Ollama bertsioa",
"On": "Piztuta", "On": "Piztuta",
"OneDrive": "", "OneDrive": "",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "Karaktere alfanumerikoak eta marratxoak soilik onartzen dira", "Only alphanumeric characters and hyphens are allowed": "Karaktere alfanumerikoak eta marratxoak soilik onartzen dira",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Karaktere alfanumerikoak eta marratxoak soilik onartzen dira komando katean.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Karaktere alfanumerikoak eta marratxoak soilik onartzen dira komando katean.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Bildumak soilik edita daitezke, sortu ezagutza-base berri bat dokumentuak editatzeko/gehitzeko.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Bildumak soilik edita daitezke, sortu ezagutza-base berri bat dokumentuak editatzeko/gehitzeko.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Ireki txat berria",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "Aurrizki ID", "Prefix ID": "Aurrizki ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Aurrizki IDa erabiltzen da beste konexioekin gatazkak saihesteko modelo IDei aurrizki bat gehituz - utzi hutsik desgaitzeko", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Aurrizki IDa erabiltzen da beste konexioekin gatazkak saihesteko modelo IDei aurrizki bat gehituz - utzi hutsik desgaitzeko",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "Aurreko 30 egunak", "Previous 30 days": "Aurreko 30 egunak",
"Previous 7 days": "Aurreko 7 egunak", "Previous 7 days": "Aurreko 7 egunak",
@ -1396,7 +1386,6 @@
"Select only one model to call": "Hautatu modelo bakarra deitzeko", "Select only one model to call": "Hautatu modelo bakarra deitzeko",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Hautatutako modelo(e)k ez dute irudi sarrerarik onartzen", "Selected model(s) do not support image inputs": "Hautatutako modelo(e)k ez dute irudi sarrerarik onartzen",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "Bidali", "Send": "Bidali",
"Send a Message": "Bidali mezu bat", "Send a Message": "Bidali mezu bat",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "Erakutsi", "Show": "Erakutsi",
"Show \"What's New\" modal on login": "Erakutsi \"Berritasunak\" modala saioa hastean", "Show \"What's New\" modal on login": "Erakutsi \"Berritasunak\" modala saioa hastean",
"Show Admin Details in Account Pending Overlay": "Erakutsi administratzaile xehetasunak kontu zain geruzan", "Show Admin Details in Account Pending Overlay": "Erakutsi administratzaile xehetasunak kontu zain geruzan",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "Erakutsi lasterbideak",
"Show your support!": "Erakutsi zure babesa!", "Show your support!": "Erakutsi zure babesa!",
"Showcased creativity": "Erakutsitako sormena", "Showcased creativity": "Erakutsitako sormena",
"Sign in": "Hasi saioa", "Sign in": "Hasi saioa",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Gelditu", "Stop": "Gelditu",
"Stop Generating": "",
"Stop Sequence": "Gelditzeko sekuentzia", "Stop Sequence": "Gelditzeko sekuentzia",
"Stream Chat Response": "Transmititu txat erantzuna", "Stream Chat Response": "Transmititu txat erantzuna",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "", "Tags Generation": "",
"Tags Generation Prompt": "Etiketa sortzeko prompta", "Tags Generation Prompt": "Etiketa sortzeko prompta",
"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.": "", "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.": "",
"Talk to model": "Hitz egin ereduarekin",
"Tap to interrupt": "Ukitu eteteko", "Tap to interrupt": "Ukitu eteteko",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "Toast jakinarazpenak eguneraketa berrientzat", "Toast notifications for new updates": "Toast jakinarazpenak eguneraketa berrientzat",
"Today": "Gaur", "Today": "Gaur",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "Aldatu ezarpenak",
"Toggle sidebar": "Aldatu alboko barra",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "Tokena", "Token": "Tokena",
"Too verbose": "Luzeegia", "Too verbose": "Luzeegia",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "Lan-eremuaren baimenak", "Workspace Permissions": "Lan-eremuaren baimenak",
"Write": "", "Write": "",
"Write a prompt suggestion (e.g. Who are you?)": "Idatzi prompt iradokizun bat (adib. Nor zara zu?)", "Write a prompt suggestion (e.g. Who are you?)": "Idatzi prompt iradokizun bat (adib. Nor zara zu?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Idatzi 50 hitzeko laburpen bat [gaia edo gako-hitza] laburbiltzen duena.", "Write a summary in 50 words that summarizes {{topic}}.": "Idatzi 50 hitzeko laburpen bat [gaia edo gako-hitza] laburbiltzen duena.",
"Write something...": "Idatzi zerbait...", "Write something...": "Idatzi zerbait...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Idatzi hemen zure ereduaren sistema-promptaren edukia\nadib.: Super Mario Bros-eko Mario zara eta laguntzaile gisa jokatzen duzu.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Idatzi hemen zure ereduaren sistema-promptaren edukia\nadib.: Super Mario Bros-eko Mario zara eta laguntzaile gisa jokatzen duzu.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "یک مدل وظیفه هنگام انجام وظایف مانند تولید عناوین برای چت ها و نمایش های جستجوی وب استفاده می شود.", "A task model is used when performing tasks such as generating titles for chats and web search queries": "یک مدل وظیفه هنگام انجام وظایف مانند تولید عناوین برای چت ها و نمایش های جستجوی وب استفاده می شود.",
"a user": "یک کاربر", "a user": "یک کاربر",
"About": "درباره", "About": "درباره",
"Accept autocomplete generation / Jump to prompt variable": "پذیرش تکمیل خودکار / پرش به متغیر پرامپت",
"Access": "دسترسی", "Access": "دسترسی",
"Access Control": "کنترل دسترسی", "Access Control": "کنترل دسترسی",
"Accessible to all users": "قابل دسترسی برای همه کاربران", "Accessible to all users": "قابل دسترسی برای همه کاربران",
@ -51,7 +50,6 @@
"Add Content": "افزودن محتوا", "Add Content": "افزودن محتوا",
"Add content here": "محتوا را اینجا اضافه کنید", "Add content here": "محتوا را اینجا اضافه کنید",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "افزودن یک درخواست سفارشی",
"Add Details": "", "Add Details": "",
"Add Files": "افزودن فایل\u200cها", "Add Files": "افزودن فایل\u200cها",
"Add Group": "افزودن گروه", "Add Group": "افزودن گروه",
@ -151,7 +149,6 @@
"Ask": "بپرس", "Ask": "بپرس",
"Ask a question": "سوالی بپرسید", "Ask a question": "سوالی بپرسید",
"Assistant": "دستیار", "Assistant": "دستیار",
"Attach file from knowledge": "پیوست فایل از دانش",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "نام کانال", "Channel Name": "نام کانال",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "کانال\u200cها", "Channels": "کانال\u200cها",
"Character": "شخصیت", "Character": "شخصیت",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "اجرای کد", "Code execution": "اجرای کد",
@ -331,8 +330,6 @@
"Copied to clipboard": "به بریده\u200cدان کپی\u200cشد", "Copied to clipboard": "به بریده\u200cدان کپی\u200cشد",
"Copy": "کپی", "Copy": "کپی",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "کپی آخرین بلوک کد",
"Copy last response": "کپی آخرین پاسخ",
"Copy link": "", "Copy link": "",
"Copy Link": "کپی لینک", "Copy Link": "کپی لینک",
"Copy to clipboard": "کپی به کلیپ\u200cبورد", "Copy to clipboard": "کپی به کلیپ\u200cبورد",
@ -396,7 +393,6 @@
"Delete a model": "حذف یک مدل", "Delete a model": "حذف یک مدل",
"Delete All Chats": "حذف همه گفتگوها", "Delete All Chats": "حذف همه گفتگوها",
"Delete All Models": "حذف همه مدل\u200cها", "Delete All Models": "حذف همه مدل\u200cها",
"Delete chat": "حذف گپ",
"Delete Chat": "حذف گپ", "Delete Chat": "حذف گپ",
"Delete chat?": "گفتگو حذف شود؟", "Delete chat?": "گفتگو حذف شود؟",
"Delete folder?": "پوشه حذف شود؟", "Delete folder?": "پوشه حذف شود؟",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "آدرس پایه API فایرکراول", "Firecrawl API Base URL": "آدرس پایه API فایرکراول",
"Firecrawl API Key": "کلید API فایرکراول", "Firecrawl API Key": "کلید API فایرکراول",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "فوکوس کردن ورودی گپ",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "پوشه با موفقیت حذف شد", "Folder deleted successfully": "پوشه با موفقیت حذف شد",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "تولید یک تصویر", "Generate an image": "تولید یک تصویر",
"Generate Image": "تولید تصویر", "Generate Image": "تولید تصویر",
"Generate prompt pair": "تولید جفت پرامپت",
"Generated Image": "", "Generated Image": "",
"Generating search query": "در حال تولید پرسوجوی جستجو", "Generating search query": "در حال تولید پرسوجوی جستجو",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "کل محتوا را به عنوان زمینه برای پردازش جامع تزریق کنید، این برای پرس\u200cوجوهای پیچیده توصیه می\u200cشود.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "کل محتوا را به عنوان زمینه برای پردازش جامع تزریق کنید، این برای پرس\u200cوجوهای پیچیده توصیه می\u200cشود.",
"Input": "", "Input": "",
"Input commands": "ورودی دستورات",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "کلید", "Key": "کلید",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "میانبرهای صفحه کلید", "Keyboard shortcuts": "میانبرهای صفحه کلید",
"Keyboard Shortcuts": "",
"Knowledge": "دانش", "Knowledge": "دانش",
"Knowledge Access": "دسترسی به دانش", "Knowledge Access": "دسترسی به دانش",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "بارگذار", "Loader": "بارگذار",
"Loading Kokoro.js...": "در حال بارگذاری Kokoro.js...", "Loading Kokoro.js...": "در حال بارگذاری Kokoro.js...",
"Loading...": "در حال بارگذاری...", "Loading...": "در حال بارگذاری...",
"local": "",
"Local": "محلی", "Local": "محلی",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "دسترسی به موقعیت مکانی مجاز نیست", "Location access not allowed": "دسترسی به موقعیت مکانی مجاز نیست",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "تشخیص متن میسترال", "Mistral OCR": "تشخیص متن میسترال",
"Mistral OCR API Key required.": "کلید API تشخیص متن میسترال مورد نیاز است.", "Mistral OCR API Key required.": "کلید API تشخیص متن میسترال مورد نیاز است.",
"Model": "مدل", "Model": "مدل",
@ -1119,8 +1113,6 @@
"Ollama Version": "نسخه ollama", "Ollama Version": "نسخه ollama",
"On": "روشن", "On": "روشن",
"OneDrive": "وان\u200cدرایو", "OneDrive": "وان\u200cدرایو",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "فقط حروف الفبا، اعداد و خط تیره مجاز هستند", "Only alphanumeric characters and hyphens are allowed": "فقط حروف الفبا، اعداد و خط تیره مجاز هستند",
"Only alphanumeric characters and hyphens are allowed in the command string.": "فقط کاراکترهای الفبایی و خط فاصله در رشته فرمان مجاز هستند.", "Only alphanumeric characters and hyphens are allowed in the command string.": "فقط کاراکترهای الفبایی و خط فاصله در رشته فرمان مجاز هستند.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "فقط مجموعه\u200cها قابل ویرایش هستند، برای ویرایش/افزودن اسناد یک پایگاه دانش جدید ایجاد کنید.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "فقط مجموعه\u200cها قابل ویرایش هستند، برای ویرایش/افزودن اسناد یک پایگاه دانش جدید ایجاد کنید.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "باز کردن گپ جدید",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI می\u200cتواند از ابزارهای ارائه شده توسط هر سرور OpenAPI استفاده کند.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI می\u200cتواند از ابزارهای ارائه شده توسط هر سرور OpenAPI استفاده کند.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "شناسه پیشوند", "Prefix ID": "شناسه پیشوند",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "شناسه پیشوند برای جلوگیری از تداخل با سایر اتصالات با افزودن پیشوند به شناسه\u200cهای مدل استفاده می\u200cشود - برای غیرفعال کردن خالی بگذارید", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "شناسه پیشوند برای جلوگیری از تداخل با سایر اتصالات با افزودن پیشوند به شناسه\u200cهای مدل استفاده می\u200cشود - برای غیرفعال کردن خالی بگذارید",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "30 روز قبل", "Previous 30 days": "30 روز قبل",
"Previous 7 days": "7 روز قبل", "Previous 7 days": "7 روز قبل",
@ -1396,7 +1386,6 @@
"Select only one model to call": "تنها یک مدل را برای صدا زدن انتخاب کنید", "Select only one model to call": "تنها یک مدل را برای صدا زدن انتخاب کنید",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "مدل) های (انتخاب شده ورودیهای تصویر را پشتیبانی نمیکند", "Selected model(s) do not support image inputs": "مدل) های (انتخاب شده ورودیهای تصویر را پشتیبانی نمیکند",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "ارسال", "Send": "ارسال",
"Send a Message": "ارسال یک پیام", "Send a Message": "ارسال یک پیام",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "مجوزهای اشتراک\u200cگذاری", "Sharing Permissions": "مجوزهای اشتراک\u200cگذاری",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "نمایش", "Show": "نمایش",
"Show \"What's New\" modal on login": "نمایش مودال \"موارد جدید\" هنگام ورود", "Show \"What's New\" modal on login": "نمایش مودال \"موارد جدید\" هنگام ورود",
"Show Admin Details in Account Pending Overlay": "نمایش جزئیات مدیر در پوشش حساب در انتظار", "Show Admin Details in Account Pending Overlay": "نمایش جزئیات مدیر در پوشش حساب در انتظار",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "نمایش مدل", "Show Model": "نمایش مدل",
"Show shortcuts": "نمایش میانبرها",
"Show your support!": "حمایت خود را نشان دهید!", "Show your support!": "حمایت خود را نشان دهید!",
"Showcased creativity": "ایده\u200cآفرینی", "Showcased creativity": "ایده\u200cآفرینی",
"Sign in": "ورود", "Sign in": "ورود",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "توقف", "Stop": "توقف",
"Stop Generating": "",
"Stop Sequence": "توقف توالی", "Stop Sequence": "توقف توالی",
"Stream Chat Response": "پاسخ چت جریانی", "Stream Chat Response": "پاسخ چت جریانی",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "تولید برچسب\u200cها", "Tags Generation": "تولید برچسب\u200cها",
"Tags Generation Prompt": "پرامپت تولید برچسب\u200cها", "Tags Generation Prompt": "پرامپت تولید برچسب\u200cها",
"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.": "نمونه\u200cبرداری دنباله آزاد برای کاهش تأثیر توکن\u200cهای کم احتمال\u200cتر از خروجی استفاده می\u200cشود. مقدار بالاتر (مثلاً 2.0) تأثیر را بیشتر کاهش می\u200cدهد، در حالی که مقدار 1.0 این تنظیم را غیرفعال می\u200cکند.", "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.": "نمونه\u200cبرداری دنباله آزاد برای کاهش تأثیر توکن\u200cهای کم احتمال\u200cتر از خروجی استفاده می\u200cشود. مقدار بالاتر (مثلاً 2.0) تأثیر را بیشتر کاهش می\u200cدهد، در حالی که مقدار 1.0 این تنظیم را غیرفعال می\u200cکند.",
"Talk to model": "گفتگو با مدل",
"Tap to interrupt": "برای وقفه ضربه بزنید", "Tap to interrupt": "برای وقفه ضربه بزنید",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "اعلان\u200cهای پاپ\u200cآپ برای به\u200cروزرسانی\u200cهای جدید", "Toast notifications for new updates": "اعلان\u200cهای پاپ\u200cآپ برای به\u200cروزرسانی\u200cهای جدید",
"Today": "امروز", "Today": "امروز",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "نمایش/عدم نمایش تنظیمات",
"Toggle sidebar": "نمایش/عدم نمایش نوار کناری",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "توکن", "Token": "توکن",
"Too verbose": "خیلی طولانی", "Too verbose": "خیلی طولانی",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "مجوزهای محیط کار", "Workspace Permissions": "مجوزهای محیط کار",
"Write": "نوشتن", "Write": "نوشتن",
"Write a prompt suggestion (e.g. Who are you?)": "یک پیشنهاد پرامپت بنویسید (مثلاً شما کی هستید؟)", "Write a prompt suggestion (e.g. Who are you?)": "یک پیشنهاد پرامپت بنویسید (مثلاً شما کی هستید؟)",
"Write a summary in 50 words that summarizes [topic or keyword].": "خلاصه ای در 50 کلمه بنویسید که [موضوع یا کلمه کلیدی] را خلاصه کند.", "Write a summary in 50 words that summarizes {{topic}}.": "خلاصه ای در 50 کلمه بنویسید که [موضوع یا کلمه کلیدی] را خلاصه کند.",
"Write something...": "چیزی بنویسید...", "Write something...": "چیزی بنویسید...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "محتوای پرامپت سیستمی مدل خود را اینجا بنویسید\nمثال: شما ماریو از بازی Super Mario Bros هستید و به عنوان دستیار عمل می\u200cکنید.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "محتوای پرامپت سیستمی مدل خود را اینجا بنویسید\nمثال: شما ماریو از بازی Super Mario Bros هستید و به عنوان دستیار عمل می\u200cکنید.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Tehtävämallia käytetään tehtävien suorittamiseen, kuten otsikoiden luomiseen keskusteluille ja verkkohakukyselyille", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Tehtävämallia käytetään tehtävien suorittamiseen, kuten otsikoiden luomiseen keskusteluille ja verkkohakukyselyille",
"a user": "käyttäjä", "a user": "käyttäjä",
"About": "Tietoja", "About": "Tietoja",
"Accept autocomplete generation / Jump to prompt variable": "Hyväksy automaattinen täyttö / Siirry kehotteen muuttujaan",
"Access": "Pääsy", "Access": "Pääsy",
"Access Control": "Käyttöoikeuksien hallinta", "Access Control": "Käyttöoikeuksien hallinta",
"Accessible to all users": "Käytettävissä kaikille käyttäjille", "Accessible to all users": "Käytettävissä kaikille käyttäjille",
@ -51,7 +50,6 @@
"Add Content": "Lisää sisältöä", "Add Content": "Lisää sisältöä",
"Add content here": "Lisää sisältöä tähän", "Add content here": "Lisää sisältöä tähän",
"Add Custom Parameter": "Lisää mukautettu parametri", "Add Custom Parameter": "Lisää mukautettu parametri",
"Add custom prompt": "Lisää mukautettu kehote",
"Add Details": "Lisää yksityiskohtia", "Add Details": "Lisää yksityiskohtia",
"Add Files": "Lisää tiedostoja", "Add Files": "Lisää tiedostoja",
"Add Group": "Lisää ryhmä", "Add Group": "Lisää ryhmä",
@ -151,7 +149,6 @@
"Ask": "Kysy", "Ask": "Kysy",
"Ask a question": "Kysy kysymys", "Ask a question": "Kysy kysymys",
"Assistant": "Avustaja", "Assistant": "Avustaja",
"Attach file from knowledge": "Liitä tiedosto tietokannasta",
"Attach Knowledge": "Liitä tietoa", "Attach Knowledge": "Liitä tietoa",
"Attach Notes": "Liitä muistiinpanoja", "Attach Notes": "Liitä muistiinpanoja",
"Attach Webpage": "Liitä verkkosivu", "Attach Webpage": "Liitä verkkosivu",
@ -221,6 +218,7 @@
"Channel": "Kanava", "Channel": "Kanava",
"Channel deleted successfully": "Kanavan poisto onnistui", "Channel deleted successfully": "Kanavan poisto onnistui",
"Channel Name": "Kanavan nimi", "Channel Name": "Kanavan nimi",
"Channel name cannot be empty.": "",
"Channel updated successfully": "Kanavan päivitys onnistui", "Channel updated successfully": "Kanavan päivitys onnistui",
"Channels": "Kanavat", "Channels": "Kanavat",
"Character": "Kirjain", "Character": "Kirjain",
@ -272,6 +270,7 @@
"Close modal": "Sulje modaali", "Close modal": "Sulje modaali",
"Close settings modal": "Sulje asetus modaali", "Close settings modal": "Sulje asetus modaali",
"Close Sidebar": "Sulje sivupalkki", "Close Sidebar": "Sulje sivupalkki",
"cloud": "",
"CMU ARCTIC speaker embedding name": "CMU ARCTIC puhujan upotus nimi", "CMU ARCTIC speaker embedding name": "CMU ARCTIC puhujan upotus nimi",
"Code Block": "Koodiblokki", "Code Block": "Koodiblokki",
"Code execution": "Koodin suoritus", "Code execution": "Koodin suoritus",
@ -331,8 +330,6 @@
"Copied to clipboard": "Kopioitu leikepöydälle", "Copied to clipboard": "Kopioitu leikepöydälle",
"Copy": "Kopioi", "Copy": "Kopioi",
"Copy Formatted Text": "Kopioi muotoiltu teksti", "Copy Formatted Text": "Kopioi muotoiltu teksti",
"Copy last code block": "Kopioi viimeisin koodilohko",
"Copy last response": "Kopioi viimeisin vastaus",
"Copy link": "Kopioi linkki", "Copy link": "Kopioi linkki",
"Copy Link": "Kopioi linkki", "Copy Link": "Kopioi linkki",
"Copy to clipboard": "Kopioi leikepöydälle", "Copy to clipboard": "Kopioi leikepöydälle",
@ -396,7 +393,6 @@
"Delete a model": "Poista malli", "Delete a model": "Poista malli",
"Delete All Chats": "Poista kaikki keskustelut", "Delete All Chats": "Poista kaikki keskustelut",
"Delete All Models": "Poista kaikki mallit", "Delete All Models": "Poista kaikki mallit",
"Delete chat": "Poista keskustelu",
"Delete Chat": "Poista keskustelu", "Delete Chat": "Poista keskustelu",
"Delete chat?": "Haluatko varmasti poistaa tämän keskustelun?", "Delete chat?": "Haluatko varmasti poistaa tämän keskustelun?",
"Delete folder?": "Haluatko varmasti poistaa tämän kansion?", "Delete folder?": "Haluatko varmasti poistaa tämän kansion?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "Firecrawl API -verkko-osoite", "Firecrawl API Base URL": "Firecrawl API -verkko-osoite",
"Firecrawl API Key": "Firecrawl API-avain", "Firecrawl API Key": "Firecrawl API-avain",
"Floating Quick Actions": "Kelluvat pikakomennot", "Floating Quick Actions": "Kelluvat pikakomennot",
"Focus chat input": "Fokusoi syöttökenttään",
"Folder": "Kansio", "Folder": "Kansio",
"Folder Background Image": "Kansion taustakuva", "Folder Background Image": "Kansion taustakuva",
"Folder deleted successfully": "Kansio poistettu onnistuneesti", "Folder deleted successfully": "Kansio poistettu onnistuneesti",
@ -786,7 +781,6 @@
"Generate": "Luo", "Generate": "Luo",
"Generate an image": "Luo kuva", "Generate an image": "Luo kuva",
"Generate Image": "Luo kuva", "Generate Image": "Luo kuva",
"Generate prompt pair": "Luo kehotepari",
"Generated Image": "Luo kuva", "Generated Image": "Luo kuva",
"Generating search query": "Luodaan hakukyselyä", "Generating search query": "Luodaan hakukyselyä",
"Generating...": "Luodaan...", "Generating...": "Luodaan...",
@ -870,7 +864,6 @@
"Initials": "Nimikirjaimet", "Initials": "Nimikirjaimet",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Upota koko sisältö kontekstiin kattavaa käsittelyä varten. Tätä suositellaan monimutkaisille kyselyille.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Upota koko sisältö kontekstiin kattavaa käsittelyä varten. Tätä suositellaan monimutkaisille kyselyille.",
"Input": "Syöte", "Input": "Syöte",
"Input commands": "Syötekäskyt",
"Input Key (e.g. text, unet_name, steps)": "Syötteen arvo (esim. text, unet_namme, steps)", "Input Key (e.g. text, unet_name, steps)": "Syötteen arvo (esim. text, unet_namme, steps)",
"Input Variables": "Syötteen muuttujat", "Input Variables": "Syötteen muuttujat",
"Insert": "Lisää", "Insert": "Lisää",
@ -909,6 +902,7 @@
"Key": "Avain", "Key": "Avain",
"Key is required": "Avain vaaditaan", "Key is required": "Avain vaaditaan",
"Keyboard shortcuts": "Pikanäppäimet", "Keyboard shortcuts": "Pikanäppäimet",
"Keyboard Shortcuts": "",
"Knowledge": "Tietämys", "Knowledge": "Tietämys",
"Knowledge Access": "Tiedon käyttöoikeus", "Knowledge Access": "Tiedon käyttöoikeus",
"Knowledge Base": "Tietokanta", "Knowledge Base": "Tietokanta",
@ -952,6 +946,7 @@
"Loader": "Lataaja", "Loader": "Lataaja",
"Loading Kokoro.js...": "Ladataan Kokoro.js...", "Loading Kokoro.js...": "Ladataan Kokoro.js...",
"Loading...": "Ladataan...", "Loading...": "Ladataan...",
"local": "",
"Local": "Paikallinen", "Local": "Paikallinen",
"Local Task Model": "Paikallinen työmalli", "Local Task Model": "Paikallinen työmalli",
"Location access not allowed": "Ei pääsyä sijaintitietoihin", "Location access not allowed": "Ei pääsyä sijaintitietoihin",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "Mistral OCR", "Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "Mistral OCR api-avain vaaditaan", "Mistral OCR API Key required.": "Mistral OCR api-avain vaaditaan",
"Model": "Malli", "Model": "Malli",
@ -1119,8 +1113,6 @@
"Ollama Version": "Ollama-versio", "Ollama Version": "Ollama-versio",
"On": "Päällä", "On": "Päällä",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Vain käytössä jos \"Liitä suuri teksti tiedostona\" asetus on käytössä.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Aktiivinen vain, kun keskustelusyöte on kohdistettu ja LLM generoi vastausta.",
"Only alphanumeric characters and hyphens are allowed": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja", "Only alphanumeric characters and hyphens are allowed": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja komentosarjassa.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja komentosarjassa.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Vain kokoelmia voi muokata, luo uusi tietokanta muokataksesi/lisätäksesi asiakirjoja.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Vain kokoelmia voi muokata, luo uusi tietokanta muokataksesi/lisätäksesi asiakirjoja.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Avaa modaali yhteyden määrittämiseksi", "Open modal to configure connection": "Avaa modaali yhteyden määrittämiseksi",
"Open Modal To Manage Floating Quick Actions": "Avaa modaali kelluvien pikatoimintojen hallitsemiseksi", "Open Modal To Manage Floating Quick Actions": "Avaa modaali kelluvien pikatoimintojen hallitsemiseksi",
"Open Modal To Manage Image Compression": "Avaa kuvien pakkaus hallinta modaali", "Open Modal To Manage Image Compression": "Avaa kuvien pakkaus hallinta modaali",
"Open new chat": "Avaa uusi keskustelu",
"Open Sidebar": "Avaa sivupalkki", "Open Sidebar": "Avaa sivupalkki",
"Open User Profile Menu": "Avaa käyttäjäprofiili ikkuna", "Open User Profile Menu": "Avaa käyttäjäprofiili ikkuna",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI voi käyttää minkä tahansa OpenAPI-palvelimen tarjoamia työkaluja.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI voi käyttää minkä tahansa OpenAPI-palvelimen tarjoamia työkaluja.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "En halua sanoa", "Prefer not to say": "En halua sanoa",
"Prefix ID": "Etuliite-ID", "Prefix ID": "Etuliite-ID",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Etuliite-ID:tä käytetään välttämään ristiriidat muiden yhteyksien kanssa lisäämällä etuliite mallitunnuksiin - jätä tyhjäksi, jos haluat ottaa sen pois käytöstä", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Etuliite-ID:tä käytetään välttämään ristiriidat muiden yhteyksien kanssa lisäämällä etuliite mallitunnuksiin - jätä tyhjäksi, jos haluat ottaa sen pois käytöstä",
"Prevent file creation": "Estä tiedostojen luonti",
"Preview": "Esikatselu", "Preview": "Esikatselu",
"Previous 30 days": "Edelliset 30 päivää", "Previous 30 days": "Edelliset 30 päivää",
"Previous 7 days": "Edelliset 7 päivää", "Previous 7 days": "Edelliset 7 päivää",
@ -1396,7 +1386,6 @@
"Select only one model to call": "Valitse vain yksi malli kutsuttavaksi", "Select only one model to call": "Valitse vain yksi malli kutsuttavaksi",
"Select view": "Valitse näkymä", "Select view": "Valitse näkymä",
"Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasöytteitä", "Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasöytteitä",
"Self-Hosted": "",
"semantic": "Semaattinen", "semantic": "Semaattinen",
"Send": "Lähetä", "Send": "Lähetä",
"Send a Message": "Lähetä viesti", "Send a Message": "Lähetä viesti",
@ -1438,14 +1427,12 @@
"Share your background and interests": "Jaa taustasi ja kiinnostuksen kohteesi", "Share your background and interests": "Jaa taustasi ja kiinnostuksen kohteesi",
"Shared with you": "Jaettu kanssasi", "Shared with you": "Jaettu kanssasi",
"Sharing Permissions": "Jako oikeudet", "Sharing Permissions": "Jako oikeudet",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Tähdellä (*) merkityt pikavalinnat ovat tilannekohtaisia ja aktiivisia vain tietyissä olosuhteissa.",
"Show": "Näytä", "Show": "Näytä",
"Show \"What's New\" modal on login": "Näytä \"Mitä uutta\" -modaali kirjautumisen yhteydessä", "Show \"What's New\" modal on login": "Näytä \"Mitä uutta\" -modaali kirjautumisen yhteydessä",
"Show Admin Details in Account Pending Overlay": "Näytä ylläpitäjän tiedot odottavan tilin päällä", "Show Admin Details in Account Pending Overlay": "Näytä ylläpitäjän tiedot odottavan tilin päällä",
"Show Formatting Toolbar": "Näytä muotoilupalkki", "Show Formatting Toolbar": "Näytä muotoilupalkki",
"Show image preview": "Näytä kuvan esikatselu", "Show image preview": "Näytä kuvan esikatselu",
"Show Model": "Näytä malli", "Show Model": "Näytä malli",
"Show shortcuts": "Näytä pikanäppäimet",
"Show your support!": "Osoita tukesi!", "Show your support!": "Osoita tukesi!",
"Showcased creativity": "Osoitti luovuutta", "Showcased creativity": "Osoitti luovuutta",
"Sign in": "Kirjaudu sisään", "Sign in": "Kirjaudu sisään",
@ -1480,7 +1467,6 @@
"Status Updates": "Tila päivitykset", "Status Updates": "Tila päivitykset",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Pysäytä", "Stop": "Pysäytä",
"Stop Generating": "Lopeta generointi",
"Stop Sequence": "Lopetussekvenssi", "Stop Sequence": "Lopetussekvenssi",
"Stream Chat Response": "Streamaa keskusteluvastaus", "Stream Chat Response": "Streamaa keskusteluvastaus",
"Stream Delta Chunk Size": "Striimin delta-lohkon koko", "Stream Delta Chunk Size": "Striimin delta-lohkon koko",
@ -1510,7 +1496,6 @@
"Tags Generation": "Tagien luonti", "Tags Generation": "Tagien luonti",
"Tags Generation Prompt": "Tagien luontikehote", "Tags Generation Prompt": "Tagien luontikehote",
"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.": "", "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.": "",
"Talk to model": "Puhu mallille",
"Tap to interrupt": "Napauta keskeyttääksesi", "Tap to interrupt": "Napauta keskeyttääksesi",
"Task List": "Tehtävälista", "Task List": "Tehtävälista",
"Task Model": "Työmalli", "Task Model": "Työmalli",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "Ilmoituspopuppien näyttäminen uusista päivityksistä", "Toast notifications for new updates": "Ilmoituspopuppien näyttäminen uusista päivityksistä",
"Today": "Tänään", "Today": "Tänään",
"Today at {{LOCALIZED_TIME}}": "Tänään {{LOCALIZED_TIME}}", "Today at {{LOCALIZED_TIME}}": "Tänään {{LOCALIZED_TIME}}",
"Toggle search": "Kytke haku",
"Toggle settings": "Kytke asetukset",
"Toggle sidebar": "Kytke sivupalkki",
"Toggle whether current connection is active.": "Vaihda, onko nykyinen yhteys aktiivinen", "Toggle whether current connection is active.": "Vaihda, onko nykyinen yhteys aktiivinen",
"Token": "Token", "Token": "Token",
"Too verbose": "Liian puhelias", "Too verbose": "Liian puhelias",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "Työtilan käyttöoikeudet", "Workspace Permissions": "Työtilan käyttöoikeudet",
"Write": "Kirjoita", "Write": "Kirjoita",
"Write a prompt suggestion (e.g. Who are you?)": "Kirjoita kehotteen ehdotus (esim. Kuka olet?)", "Write a prompt suggestion (e.g. Who are you?)": "Kirjoita kehotteen ehdotus (esim. Kuka olet?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Kirjoita 50 sanan yhteenveto, joka tiivistää [aihe tai avainsana].", "Write a summary in 50 words that summarizes {{topic}}.": "Kirjoita 50 sanan yhteenveto, joka tiivistää [aihe tai avainsana].",
"Write something...": "Kirjoita jotain...", "Write something...": "Kirjoita jotain...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Kirjoita mallisi järjestelmäkehotteen sisältö tähän\nesim.: Olet Mario pelistä Super Mario Bros ja toimit assistenttina.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Kirjoita mallisi järjestelmäkehotteen sisältö tähän\nesim.: Olet Mario pelistä Super Mario Bros ja toimit assistenttina.",
"Yacy Instance URL": "Yacy instanssin verkko-osoite", "Yacy Instance URL": "Yacy instanssin verkko-osoite",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modèle de tâche est utilisé lors de l'exécution de tâches telles que la génération de titres pour les conversations et les requêtes de recherche sur le web.", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modèle de tâche est utilisé lors de l'exécution de tâches telles que la génération de titres pour les conversations et les requêtes de recherche sur le web.",
"a user": "un utilisateur", "a user": "un utilisateur",
"About": "À propos", "About": "À propos",
"Accept autocomplete generation / Jump to prompt variable": "Accepter la génération de saisie semi-automatique / Accéder directement à la variable du prompt",
"Access": "Accès", "Access": "Accès",
"Access Control": "Contrôle d'accès", "Access Control": "Contrôle d'accès",
"Accessible to all users": "Accessible à tous les utilisateurs", "Accessible to all users": "Accessible à tous les utilisateurs",
@ -51,7 +50,6 @@
"Add Content": "Ajouter du contenu", "Add Content": "Ajouter du contenu",
"Add content here": "Ajoutez du contenu ici", "Add content here": "Ajoutez du contenu ici",
"Add Custom Parameter": "Ajoutez votre réglage personnalisé", "Add Custom Parameter": "Ajoutez votre réglage personnalisé",
"Add custom prompt": "Ajouter un prompt personnalisé",
"Add Details": "", "Add Details": "",
"Add Files": "Ajouter des fichiers", "Add Files": "Ajouter des fichiers",
"Add Group": "Ajouter un groupe", "Add Group": "Ajouter un groupe",
@ -151,7 +149,6 @@
"Ask": "Demander", "Ask": "Demander",
"Ask a question": "Posez votre question", "Ask a question": "Posez votre question",
"Assistant": "Assistant", "Assistant": "Assistant",
"Attach file from knowledge": "Joindre un fichier depuis la base de connaissances",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "Nom du canal", "Channel Name": "Nom du canal",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "Canaux", "Channels": "Canaux",
"Character": "Caractère", "Character": "Caractère",
@ -272,6 +270,7 @@
"Close modal": "Fermer la fenêtre", "Close modal": "Fermer la fenêtre",
"Close settings modal": "Fermer la fenêtre des réglages", "Close settings modal": "Fermer la fenêtre des réglages",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "Exécution de code", "Code execution": "Exécution de code",
@ -331,8 +330,6 @@
"Copied to clipboard": "Copié dans le presse-papiers", "Copied to clipboard": "Copié dans le presse-papiers",
"Copy": "Copier", "Copy": "Copier",
"Copy Formatted Text": "Copier le texte en gardant le format", "Copy Formatted Text": "Copier le texte en gardant le format",
"Copy last code block": "Copier le dernier bloc de code",
"Copy last response": "Copier la dernière réponse",
"Copy link": "", "Copy link": "",
"Copy Link": "Copier le lien", "Copy Link": "Copier le lien",
"Copy to clipboard": "Copier dans le presse-papiers", "Copy to clipboard": "Copier dans le presse-papiers",
@ -396,7 +393,6 @@
"Delete a model": "Supprimer un modèle", "Delete a model": "Supprimer un modèle",
"Delete All Chats": "Supprimer toutes les conversations", "Delete All Chats": "Supprimer toutes les conversations",
"Delete All Models": "Supprimer tous les modèles", "Delete All Models": "Supprimer tous les modèles",
"Delete chat": "Supprimer la conversation",
"Delete Chat": "Supprimer la Conversation", "Delete Chat": "Supprimer la Conversation",
"Delete chat?": "Supprimer la conversation ?", "Delete chat?": "Supprimer la conversation ?",
"Delete folder?": "Supprimer le dossier ?", "Delete folder?": "Supprimer le dossier ?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "Url de l'API Base Firecrawl", "Firecrawl API Base URL": "Url de l'API Base Firecrawl",
"Firecrawl API Key": "Clé de l'API Firecrawl", "Firecrawl API Key": "Clé de l'API Firecrawl",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Mettre le focus sur l'entrée de la conversation",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "Dossier supprimé avec succès", "Folder deleted successfully": "Dossier supprimé avec succès",
@ -786,7 +781,6 @@
"Generate": "Génére", "Generate": "Génére",
"Generate an image": "Génère une image", "Generate an image": "Génère une image",
"Generate Image": "Générer une image", "Generate Image": "Générer une image",
"Generate prompt pair": "Générer une paire de prompt",
"Generated Image": "", "Generated Image": "",
"Generating search query": "Génération d'une requête de recherche", "Generating search query": "Génération d'une requête de recherche",
"Generating...": "Génération en cours...", "Generating...": "Génération en cours...",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injecter l'ensemble du contenu comme contexte pour un traitement complet, recommandé pour les requêtes complexes.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injecter l'ensemble du contenu comme contexte pour un traitement complet, recommandé pour les requêtes complexes.",
"Input": "", "Input": "",
"Input commands": "Commandes d'entrée",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "Variables d'entrée", "Input Variables": "Variables d'entrée",
"Insert": "Insérer", "Insert": "Insérer",
@ -909,6 +902,7 @@
"Key": "Clé", "Key": "Clé",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Raccourcis clavier", "Keyboard shortcuts": "Raccourcis clavier",
"Keyboard Shortcuts": "",
"Knowledge": "Connaissances", "Knowledge": "Connaissances",
"Knowledge Access": "Accès aux connaissances", "Knowledge Access": "Accès aux connaissances",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "Chargeur", "Loader": "Chargeur",
"Loading Kokoro.js...": "Chargement de Kokoro.js...", "Loading Kokoro.js...": "Chargement de Kokoro.js...",
"Loading...": "Chargement de...", "Loading...": "Chargement de...",
"local": "",
"Local": "Local", "Local": "Local",
"Local Task Model": "Model de tâche local", "Local Task Model": "Model de tâche local",
"Location access not allowed": "Accès à la localisation non autorisé", "Location access not allowed": "Accès à la localisation non autorisé",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (travail/école)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (travail/école)",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "Mistral OCR", "Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "Clé d'API pour Mistral OCR requise", "Mistral OCR API Key required.": "Clé d'API pour Mistral OCR requise",
"Model": "Modèle", "Model": "Modèle",
@ -1119,8 +1113,6 @@
"Ollama Version": "Version d'Ollama", "Ollama Version": "Version d'Ollama",
"On": "Activé", "On": "Activé",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Seul actif lorsque le réglage \"Coller un texte volumineux comme fichier\" est activé.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Seulement actif lorsque le champ de saisie de la conversation est en focus et qu'un LLM génère une réponse.",
"Only alphanumeric characters and hyphens are allowed": "Seuls les caractères alphanumériques et les tirets sont autorisés", "Only alphanumeric characters and hyphens are allowed": "Seuls les caractères alphanumériques et les tirets sont autorisés",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissance pour modifier/ajouter des documents.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissance pour modifier/ajouter des documents.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Ouvrir la fenêtre modale pour configurer la connexion", "Open modal to configure connection": "Ouvrir la fenêtre modale pour configurer la connexion",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Ouvrir une nouvelle conversation",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "ID de préfixe", "Prefix ID": "ID de préfixe",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver",
"Prevent file creation": "Prévenir la création de fichier",
"Preview": "Aperçu", "Preview": "Aperçu",
"Previous 30 days": "30 derniers jours", "Previous 30 days": "30 derniers jours",
"Previous 7 days": "7 derniers jours", "Previous 7 days": "7 derniers jours",
@ -1397,7 +1387,6 @@
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler", "Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images", "Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "Envoyer", "Send": "Envoyer",
"Send a Message": "Envoyer un message", "Send a Message": "Envoyer un message",
@ -1439,14 +1428,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "Autorisation de partage", "Sharing Permissions": "Autorisation de partage",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Les raccourcis avec un astérisque (*) sont situationnels et ne sont actifs que dans des conditions spécifiques.",
"Show": "Afficher", "Show": "Afficher",
"Show \"What's New\" modal on login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion", "Show \"What's New\" modal on login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion",
"Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente", "Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "Afficher l'aperçu de l'image", "Show image preview": "Afficher l'aperçu de l'image",
"Show Model": "Afficher le model", "Show Model": "Afficher le model",
"Show shortcuts": "Afficher les raccourcis",
"Show your support!": "Montrez votre soutien !", "Show your support!": "Montrez votre soutien !",
"Showcased creativity": "Créativité mise en avant", "Showcased creativity": "Créativité mise en avant",
"Sign in": "Connexion", "Sign in": "Connexion",
@ -1481,7 +1468,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Stop", "Stop": "Stop",
"Stop Generating": "Arrêter la génération",
"Stop Sequence": "Séquence d'arrêt", "Stop Sequence": "Séquence d'arrêt",
"Stream Chat Response": "Streamer la réponse de la conversation", "Stream Chat Response": "Streamer la réponse de la conversation",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1511,7 +1497,6 @@
"Tags Generation": "Génération de tags", "Tags Generation": "Génération de tags",
"Tags Generation Prompt": "Prompt de 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.": "Le sampling 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 réglage.", "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.": "Le sampling 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 réglage.",
"Talk to model": "Parler au modèle",
"Tap to interrupt": "Appuyez pour interrompre", "Tap to interrupt": "Appuyez pour interrompre",
"Task List": "", "Task List": "",
"Task Model": "Modèle pour les tâches", "Task Model": "Modèle pour les tâches",
@ -1593,9 +1578,6 @@
"Toast notifications for new updates": "Notifications toast pour les nouvelles mises à jour", "Toast notifications for new updates": "Notifications toast pour les nouvelles mises à jour",
"Today": "Aujourd'hui", "Today": "Aujourd'hui",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "Afficher/masquer la recherche",
"Toggle settings": "Afficher/masquer les réglages",
"Toggle sidebar": "Afficher/masquer la barre latérale",
"Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active", "Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active",
"Token": "Token", "Token": "Token",
"Too verbose": "Trop détaillé", "Too verbose": "Trop détaillé",
@ -1733,7 +1715,7 @@
"Workspace Permissions": "Autorisations de l'espace de travail", "Workspace Permissions": "Autorisations de l'espace de travail",
"Write": "Écrire", "Write": "Écrire",
"Write a prompt suggestion (e.g. Who are you?)": "Écrivez une suggestion de prompt (par exemple : Qui êtes-vous ?)", "Write a prompt suggestion (e.g. Who are you?)": "Écrivez une suggestion de prompt (par exemple : Qui êtes-vous ?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].", "Write a summary in 50 words that summarizes {{topic}}.": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].",
"Write something...": "Écrivez quelque chose...", "Write something...": "Écrivez quelque chose...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Écrivez ici le contenu du system prompt de votre modèle\np. ex. : Vous êtes Mario de Super Mario Bros et vous agissez comme assistant.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Écrivez ici le contenu du system prompt de votre modèle\np. ex. : Vous êtes Mario de Super Mario Bros et vous agissez comme assistant.",
"Yacy Instance URL": "URL de l'instance Yacy", "Yacy Instance URL": "URL de l'instance Yacy",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modèle de tâche est utilisé lors de l'exécution de tâches telles que la génération de titres pour les conversations et les requêtes de recherche sur le web.", "A task model is used when performing tasks such as generating titles for chats and web search queries": "Un modèle de tâche est utilisé lors de l'exécution de tâches telles que la génération de titres pour les conversations et les requêtes de recherche sur le web.",
"a user": "un utilisateur", "a user": "un utilisateur",
"About": "À propos", "About": "À propos",
"Accept autocomplete generation / Jump to prompt variable": "Accepter la génération de saisie semi-automatique / Accéder directement à la variable du prompt",
"Access": "Accès", "Access": "Accès",
"Access Control": "Contrôle d'accès", "Access Control": "Contrôle d'accès",
"Accessible to all users": "Accessible à tous les utilisateurs", "Accessible to all users": "Accessible à tous les utilisateurs",
@ -51,7 +50,6 @@
"Add Content": "Ajouter du contenu", "Add Content": "Ajouter du contenu",
"Add content here": "Ajoutez du contenu ici", "Add content here": "Ajoutez du contenu ici",
"Add Custom Parameter": "Ajoutez votre réglage personnalisé", "Add Custom Parameter": "Ajoutez votre réglage personnalisé",
"Add custom prompt": "Ajouter un prompt personnalisé",
"Add Details": "Ajouter des détails", "Add Details": "Ajouter des détails",
"Add Files": "Ajouter des fichiers", "Add Files": "Ajouter des fichiers",
"Add Group": "Ajouter un groupe", "Add Group": "Ajouter un groupe",
@ -151,7 +149,6 @@
"Ask": "Demander", "Ask": "Demander",
"Ask a question": "Posez votre question", "Ask a question": "Posez votre question",
"Assistant": "Assistant", "Assistant": "Assistant",
"Attach file from knowledge": "Joindre un fichier depuis la base de connaissances",
"Attach Knowledge": "Joindre une connaissance", "Attach Knowledge": "Joindre une connaissance",
"Attach Notes": "Joindre une note", "Attach Notes": "Joindre une note",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "Canal", "Channel": "Canal",
"Channel deleted successfully": "Le canal a été supprimée avec succès", "Channel deleted successfully": "Le canal a été supprimée avec succès",
"Channel Name": "Nom du canal", "Channel Name": "Nom du canal",
"Channel name cannot be empty.": "",
"Channel updated successfully": "Le canal a été mise à jour avec succès", "Channel updated successfully": "Le canal a été mise à jour avec succès",
"Channels": "Canaux", "Channels": "Canaux",
"Character": "Caractère", "Character": "Caractère",
@ -272,6 +270,7 @@
"Close modal": "Fermer la fenêtre", "Close modal": "Fermer la fenêtre",
"Close settings modal": "Fermer la fenêtre des réglages", "Close settings modal": "Fermer la fenêtre des réglages",
"Close Sidebar": "Fermer la barre latérale", "Close Sidebar": "Fermer la barre latérale",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "Bloc de code", "Code Block": "Bloc de code",
"Code execution": "Exécution de code", "Code execution": "Exécution de code",
@ -331,8 +330,6 @@
"Copied to clipboard": "Copié dans le presse-papiers", "Copied to clipboard": "Copié dans le presse-papiers",
"Copy": "Copier", "Copy": "Copier",
"Copy Formatted Text": "Copier le texte en gardant le format", "Copy Formatted Text": "Copier le texte en gardant le format",
"Copy last code block": "Copier le dernier bloc de code",
"Copy last response": "Copier la dernière réponse",
"Copy link": "Copier le lien", "Copy link": "Copier le lien",
"Copy Link": "Copier le lien", "Copy Link": "Copier le lien",
"Copy to clipboard": "Copier dans le presse-papiers", "Copy to clipboard": "Copier dans le presse-papiers",
@ -396,7 +393,6 @@
"Delete a model": "Supprimer un modèle", "Delete a model": "Supprimer un modèle",
"Delete All Chats": "Supprimer toutes les conversations", "Delete All Chats": "Supprimer toutes les conversations",
"Delete All Models": "Supprimer tous les modèles", "Delete All Models": "Supprimer tous les modèles",
"Delete chat": "Supprimer la conversation",
"Delete Chat": "Supprimer la Conversation", "Delete Chat": "Supprimer la Conversation",
"Delete chat?": "Supprimer la conversation ?", "Delete chat?": "Supprimer la conversation ?",
"Delete folder?": "Supprimer le dossier ?", "Delete folder?": "Supprimer le dossier ?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "Url de l'API Base Firecrawl", "Firecrawl API Base URL": "Url de l'API Base Firecrawl",
"Firecrawl API Key": "Clé de l'API Firecrawl", "Firecrawl API Key": "Clé de l'API Firecrawl",
"Floating Quick Actions": "Actions rapides flottantes", "Floating Quick Actions": "Actions rapides flottantes",
"Focus chat input": "Mettre le focus sur l'entrée de la conversation",
"Folder": "", "Folder": "",
"Folder Background Image": "Image d'arrière-plan du dossier", "Folder Background Image": "Image d'arrière-plan du dossier",
"Folder deleted successfully": "Dossier supprimé avec succès", "Folder deleted successfully": "Dossier supprimé avec succès",
@ -786,7 +781,6 @@
"Generate": "Génére", "Generate": "Génére",
"Generate an image": "Génère une image", "Generate an image": "Génère une image",
"Generate Image": "Générer une image", "Generate Image": "Générer une image",
"Generate prompt pair": "Générer une paire de prompt",
"Generated Image": "", "Generated Image": "",
"Generating search query": "Génération d'une requête de recherche", "Generating search query": "Génération d'une requête de recherche",
"Generating...": "Génération en cours...", "Generating...": "Génération en cours...",
@ -870,7 +864,6 @@
"Initials": "Initiales", "Initials": "Initiales",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injecter l'ensemble du contenu comme contexte pour un traitement complet, recommandé pour les requêtes complexes.", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injecter l'ensemble du contenu comme contexte pour un traitement complet, recommandé pour les requêtes complexes.",
"Input": "", "Input": "",
"Input commands": "Commandes d'entrée",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "Variables d'entrée", "Input Variables": "Variables d'entrée",
"Insert": "Insérer", "Insert": "Insérer",
@ -909,6 +902,7 @@
"Key": "Clé", "Key": "Clé",
"Key is required": "La clé est requise", "Key is required": "La clé est requise",
"Keyboard shortcuts": "Raccourcis clavier", "Keyboard shortcuts": "Raccourcis clavier",
"Keyboard Shortcuts": "",
"Knowledge": "Connaissances", "Knowledge": "Connaissances",
"Knowledge Access": "Accès aux connaissances", "Knowledge Access": "Accès aux connaissances",
"Knowledge Base": "Base de connaissances", "Knowledge Base": "Base de connaissances",
@ -952,6 +946,7 @@
"Loader": "Chargeur", "Loader": "Chargeur",
"Loading Kokoro.js...": "Chargement de Kokoro.js...", "Loading Kokoro.js...": "Chargement de Kokoro.js...",
"Loading...": "Chargement de...", "Loading...": "Chargement de...",
"local": "",
"Local": "Local", "Local": "Local",
"Local Task Model": "Model de tâche local", "Local Task Model": "Model de tâche local",
"Location access not allowed": "Accès à la localisation non autorisé", "Location access not allowed": "Accès à la localisation non autorisé",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (travail/école)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (travail/école)",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "Mistral OCR", "Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "Clé d'API pour Mistral OCR requise", "Mistral OCR API Key required.": "Clé d'API pour Mistral OCR requise",
"Model": "Modèle", "Model": "Modèle",
@ -1119,8 +1113,6 @@
"Ollama Version": "Version d'Ollama", "Ollama Version": "Version d'Ollama",
"On": "Activé", "On": "Activé",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Seul actif lorsque le réglage \"Coller un texte volumineux comme fichier\" est activé.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Seulement actif lorsque le champ de saisie de la conversation est en focus et qu'un LLM génère une réponse.",
"Only alphanumeric characters and hyphens are allowed": "Seuls les caractères alphanumériques et les tirets sont autorisés", "Only alphanumeric characters and hyphens are allowed": "Seuls les caractères alphanumériques et les tirets sont autorisés",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissance pour modifier/ajouter des documents.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissance pour modifier/ajouter des documents.",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "Ouvrir la fenêtre modale pour configurer la connexion", "Open modal to configure connection": "Ouvrir la fenêtre modale pour configurer la connexion",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Ouvrir une nouvelle conversation",
"Open Sidebar": "Ouvrir la barre latérale", "Open Sidebar": "Ouvrir la barre latérale",
"Open User Profile Menu": "Ouvrir le menu du profil utilisateur", "Open User Profile Menu": "Ouvrir le menu du profil utilisateur",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.",
@ -1225,7 +1216,6 @@
"Prefer not to say": "Je préfère ne pas répondre", "Prefer not to say": "Je préfère ne pas répondre",
"Prefix ID": "ID de préfixe", "Prefix ID": "ID de préfixe",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver",
"Prevent file creation": "Prévenir la création de fichier",
"Preview": "Aperçu", "Preview": "Aperçu",
"Previous 30 days": "30 derniers jours", "Previous 30 days": "30 derniers jours",
"Previous 7 days": "7 derniers jours", "Previous 7 days": "7 derniers jours",
@ -1370,7 +1360,7 @@
"Select": "Choisir", "Select": "Choisir",
"Select a base model": "Sélectionnez un modèle de base", "Select a base model": "Sélectionnez un modèle de base",
"Select a base model (e.g. llama3, gpt-4o)": "Chosir un modèle de base (ex : lamma3, gpt-4o)", "Select a base model (e.g. llama3, gpt-4o)": "Chosir un modèle de base (ex : lamma3, gpt-4o)",
"Select a conversation to preview": "Choisir une converation pour la prévisualiser", "Select a conversation to preview": "Choisir une conversation pour la prévisualiser",
"Select a engine": "Sélectionnez un moteur", "Select a engine": "Sélectionnez un moteur",
"Select a function": "Sélectionnez une fonction", "Select a function": "Sélectionnez une fonction",
"Select a group": "Sélectionner un groupe", "Select a group": "Sélectionner un groupe",
@ -1397,7 +1387,6 @@
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler", "Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images", "Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images",
"Self-Hosted": "",
"semantic": "sémantique", "semantic": "sémantique",
"Send": "Envoyer", "Send": "Envoyer",
"Send a Message": "Envoyer un message", "Send a Message": "Envoyer un message",
@ -1439,14 +1428,12 @@
"Share your background and interests": "Partagez votre parcours et vos intérêts", "Share your background and interests": "Partagez votre parcours et vos intérêts",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "Autorisation de partage", "Sharing Permissions": "Autorisation de partage",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Les raccourcis avec un astérisque (*) sont situationnels et ne sont actifs que dans des conditions spécifiques.",
"Show": "Afficher", "Show": "Afficher",
"Show \"What's New\" modal on login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion", "Show \"What's New\" modal on login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion",
"Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente", "Show Admin Details in Account Pending Overlay": "Afficher les coordonnées de l'administrateur aux comptes en attente",
"Show Formatting Toolbar": "Afficher la barre d'outils de formatage", "Show Formatting Toolbar": "Afficher la barre d'outils de formatage",
"Show image preview": "Afficher l'aperçu de l'image", "Show image preview": "Afficher l'aperçu de l'image",
"Show Model": "Afficher le model", "Show Model": "Afficher le model",
"Show shortcuts": "Afficher les raccourcis",
"Show your support!": "Montrez votre soutien !", "Show your support!": "Montrez votre soutien !",
"Showcased creativity": "Créativité mise en avant", "Showcased creativity": "Créativité mise en avant",
"Sign in": "Connexion", "Sign in": "Connexion",
@ -1481,7 +1468,6 @@
"Status Updates": "Mises à jour de statut", "Status Updates": "Mises à jour de statut",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Stop", "Stop": "Stop",
"Stop Generating": "Arrêter la génération",
"Stop Sequence": "Séquence d'arrêt", "Stop Sequence": "Séquence d'arrêt",
"Stream Chat Response": "Streamer la réponse de la conversation", "Stream Chat Response": "Streamer la réponse de la conversation",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1511,7 +1497,6 @@
"Tags Generation": "Génération de tags", "Tags Generation": "Génération de tags",
"Tags Generation Prompt": "Prompt de 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.": "Le sampling 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 réglage.", "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.": "Le sampling 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 réglage.",
"Talk to model": "Parler au modèle",
"Tap to interrupt": "Appuyez pour interrompre", "Tap to interrupt": "Appuyez pour interrompre",
"Task List": "Liste pour les tâches", "Task List": "Liste pour les tâches",
"Task Model": "Modèle pour les tâches", "Task Model": "Modèle pour les tâches",
@ -1593,9 +1578,6 @@
"Toast notifications for new updates": "Notifications toast pour les nouvelles mises à jour", "Toast notifications for new updates": "Notifications toast pour les nouvelles mises à jour",
"Today": "Aujourd'hui", "Today": "Aujourd'hui",
"Today at {{LOCALIZED_TIME}}": "Aujourd'hui à {{LOCALIZED_TIME}}", "Today at {{LOCALIZED_TIME}}": "Aujourd'hui à {{LOCALIZED_TIME}}",
"Toggle search": "Afficher/masquer la recherche",
"Toggle settings": "Afficher/masquer les réglages",
"Toggle sidebar": "Afficher/masquer la barre latérale",
"Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active", "Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active",
"Token": "Token", "Token": "Token",
"Too verbose": "Trop détaillé", "Too verbose": "Trop détaillé",
@ -1733,7 +1715,7 @@
"Workspace Permissions": "Autorisations de l'espace de travail", "Workspace Permissions": "Autorisations de l'espace de travail",
"Write": "Écrire", "Write": "Écrire",
"Write a prompt suggestion (e.g. Who are you?)": "Écrivez une suggestion de prompt (par exemple : Qui êtes-vous ?)", "Write a prompt suggestion (e.g. Who are you?)": "Écrivez une suggestion de prompt (par exemple : Qui êtes-vous ?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].", "Write a summary in 50 words that summarizes {{topic}}.": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].",
"Write something...": "Écrivez quelque chose...", "Write something...": "Écrivez quelque chose...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Écrivez ici le contenu du system prompt de votre modèle\np. ex. : Vous êtes Mario de Super Mario Bros et vous agissez comme assistant.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Écrivez ici le contenu du system prompt de votre modèle\np. ex. : Vous êtes Mario de Super Mario Bros et vous agissez comme assistant.",
"Yacy Instance URL": "URL de l'instance Yacy", "Yacy Instance URL": "URL de l'instance Yacy",

View file

@ -26,7 +26,6 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "o modelo de tarefas utilizase realizando tarefas como a xeneración de títulos para chats e consultas da búsqueda web", "A task model is used when performing tasks such as generating titles for chats and web search queries": "o modelo de tarefas utilizase realizando tarefas como a xeneración de títulos para chats e consultas da búsqueda web",
"a user": "un usuario", "a user": "un usuario",
"About": "Sobre nos", "About": "Sobre nos",
"Accept autocomplete generation / Jump to prompt variable": "",
"Access": "Acceso", "Access": "Acceso",
"Access Control": "Control de Acceso", "Access Control": "Control de Acceso",
"Accessible to all users": "Accesible para todos os usuarios", "Accessible to all users": "Accesible para todos os usuarios",
@ -51,7 +50,6 @@
"Add Content": "Agregar contido", "Add Content": "Agregar contido",
"Add content here": "Agrege contido aquí", "Add content here": "Agrege contido aquí",
"Add Custom Parameter": "", "Add Custom Parameter": "",
"Add custom prompt": "Agregar un prompt personalizado",
"Add Details": "", "Add Details": "",
"Add Files": "Agregar Arquivos", "Add Files": "Agregar Arquivos",
"Add Group": "Agregar Grupo", "Add Group": "Agregar Grupo",
@ -151,7 +149,6 @@
"Ask": "", "Ask": "",
"Ask a question": "Fai unha pregunta", "Ask a question": "Fai unha pregunta",
"Assistant": "Asistente", "Assistant": "Asistente",
"Attach file from knowledge": "",
"Attach Knowledge": "", "Attach Knowledge": "",
"Attach Notes": "", "Attach Notes": "",
"Attach Webpage": "", "Attach Webpage": "",
@ -221,6 +218,7 @@
"Channel": "", "Channel": "",
"Channel deleted successfully": "", "Channel deleted successfully": "",
"Channel Name": "Nome do Canal", "Channel Name": "Nome do Canal",
"Channel name cannot be empty.": "",
"Channel updated successfully": "", "Channel updated successfully": "",
"Channels": "Canal", "Channels": "Canal",
"Character": "Caracter", "Character": "Caracter",
@ -272,6 +270,7 @@
"Close modal": "", "Close modal": "",
"Close settings modal": "", "Close settings modal": "",
"Close Sidebar": "", "Close Sidebar": "",
"cloud": "",
"CMU ARCTIC speaker embedding name": "", "CMU ARCTIC speaker embedding name": "",
"Code Block": "", "Code Block": "",
"Code execution": "Execución de código", "Code execution": "Execución de código",
@ -331,8 +330,6 @@
"Copied to clipboard": "Copiado o portapapeis", "Copied to clipboard": "Copiado o portapapeis",
"Copy": "Copiar", "Copy": "Copiar",
"Copy Formatted Text": "", "Copy Formatted Text": "",
"Copy last code block": "Copia o último bloque de código",
"Copy last response": "Copia a última respuesta",
"Copy link": "", "Copy link": "",
"Copy Link": "Copiar enlace", "Copy Link": "Copiar enlace",
"Copy to clipboard": "Copiado o portapapeis", "Copy to clipboard": "Copiado o portapapeis",
@ -396,7 +393,6 @@
"Delete a model": "Borra un modelo", "Delete a model": "Borra un modelo",
"Delete All Chats": "Eliminar todos os chats", "Delete All Chats": "Eliminar todos os chats",
"Delete All Models": "Eliminar todos os modelos", "Delete All Models": "Eliminar todos os modelos",
"Delete chat": "Borrar chat",
"Delete Chat": "Borrar Chat", "Delete Chat": "Borrar Chat",
"Delete chat?": "Borrar o chat?", "Delete chat?": "Borrar o chat?",
"Delete folder?": "¿Eliminar carpeta?", "Delete folder?": "¿Eliminar carpeta?",
@ -739,7 +735,6 @@
"Firecrawl API Base URL": "", "Firecrawl API Base URL": "",
"Firecrawl API Key": "", "Firecrawl API Key": "",
"Floating Quick Actions": "", "Floating Quick Actions": "",
"Focus chat input": "Enfoca a entrada do chat",
"Folder": "", "Folder": "",
"Folder Background Image": "", "Folder Background Image": "",
"Folder deleted successfully": "Carpeta eliminada correctamente", "Folder deleted successfully": "Carpeta eliminada correctamente",
@ -786,7 +781,6 @@
"Generate": "", "Generate": "",
"Generate an image": "Generar unha imaxen", "Generate an image": "Generar unha imaxen",
"Generate Image": "Generar imaxen", "Generate Image": "Generar imaxen",
"Generate prompt pair": "",
"Generated Image": "", "Generated Image": "",
"Generating search query": "xeneración de consultas de búsqueda", "Generating search query": "xeneración de consultas de búsqueda",
"Generating...": "", "Generating...": "",
@ -870,7 +864,6 @@
"Initials": "", "Initials": "",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
"Input": "", "Input": "",
"Input commands": "Ingresar comandos",
"Input Key (e.g. text, unet_name, steps)": "", "Input Key (e.g. text, unet_name, steps)": "",
"Input Variables": "", "Input Variables": "",
"Insert": "", "Insert": "",
@ -909,6 +902,7 @@
"Key": "Chave", "Key": "Chave",
"Key is required": "", "Key is required": "",
"Keyboard shortcuts": "Atallos de teclado", "Keyboard shortcuts": "Atallos de teclado",
"Keyboard Shortcuts": "",
"Knowledge": "coñecemento", "Knowledge": "coñecemento",
"Knowledge Access": "Acceso al coñecemento", "Knowledge Access": "Acceso al coñecemento",
"Knowledge Base": "", "Knowledge Base": "",
@ -952,6 +946,7 @@
"Loader": "Cargador", "Loader": "Cargador",
"Loading Kokoro.js...": "Cargando Kokoro.js...", "Loading Kokoro.js...": "Cargando Kokoro.js...",
"Loading...": "Cargando...", "Loading...": "Cargando...",
"local": "",
"Local": "Local", "Local": "Local",
"Local Task Model": "", "Local Task Model": "",
"Location access not allowed": "", "Location access not allowed": "",
@ -998,7 +993,6 @@
"Microsoft OneDrive (work/school)": "", "Microsoft OneDrive (work/school)": "",
"MinerU": "", "MinerU": "",
"MinerU API Key required for Cloud API mode.": "", "MinerU API Key required for Cloud API mode.": "",
"minerU managed (Cloud API)": "",
"Mistral OCR": "", "Mistral OCR": "",
"Mistral OCR API Key required.": "", "Mistral OCR API Key required.": "",
"Model": "Modelo", "Model": "Modelo",
@ -1119,8 +1113,6 @@
"Ollama Version": "Versión de Ollama", "Ollama Version": "Versión de Ollama",
"On": "Activado", "On": "Activado",
"OneDrive": "OneDrive", "OneDrive": "OneDrive",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "",
"Only active when the chat input is in focus and an LLM is generating a response.": "",
"Only alphanumeric characters and hyphens are allowed": "Sólo se permiten caracteres alfanuméricos y guiones", "Only alphanumeric characters and hyphens are allowed": "Sólo se permiten caracteres alfanuméricos y guiones",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo se permiten caracteres alfanuméricos y guiones en a cadena de comando.", "Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo se permiten caracteres alfanuméricos y guiones en a cadena de comando.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Solo se pueden editar as coleccions, xerar unha nova base de coñecementos para editar / añadir documentos", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Solo se pueden editar as coleccions, xerar unha nova base de coñecementos para editar / añadir documentos",
@ -1136,7 +1128,6 @@
"Open modal to configure connection": "", "Open modal to configure connection": "",
"Open Modal To Manage Floating Quick Actions": "", "Open Modal To Manage Floating Quick Actions": "",
"Open Modal To Manage Image Compression": "", "Open Modal To Manage Image Compression": "",
"Open new chat": "Abrir novo chat",
"Open Sidebar": "", "Open Sidebar": "",
"Open User Profile Menu": "", "Open User Profile Menu": "",
"Open WebUI can use tools provided by any OpenAPI server.": "", "Open WebUI can use tools provided by any OpenAPI server.": "",
@ -1225,7 +1216,6 @@
"Prefer not to say": "", "Prefer not to say": "",
"Prefix ID": "ID de prefijo", "Prefix ID": "ID de prefijo",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "O ID de prefixo se utiliza para evitar conflictos con outras conexiones añadiendo un prefijo a os IDs de os modelos - deje vacío para deshabilitar", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "O ID de prefixo se utiliza para evitar conflictos con outras conexiones añadiendo un prefijo a os IDs de os modelos - deje vacío para deshabilitar",
"Prevent file creation": "",
"Preview": "", "Preview": "",
"Previous 30 days": "Últimos 30 días", "Previous 30 days": "Últimos 30 días",
"Previous 7 days": "Últimos 7 días", "Previous 7 days": "Últimos 7 días",
@ -1396,7 +1386,6 @@
"Select only one model to call": "Selecciona sólo un modelo para llamar", "Select only one model to call": "Selecciona sólo un modelo para llamar",
"Select view": "", "Select view": "",
"Selected model(s) do not support image inputs": "Os modelos seleccionados no admiten entradas de imaxen", "Selected model(s) do not support image inputs": "Os modelos seleccionados no admiten entradas de imaxen",
"Self-Hosted": "",
"semantic": "", "semantic": "",
"Send": "Enviar", "Send": "Enviar",
"Send a Message": "Enviar un mensaxe", "Send a Message": "Enviar un mensaxe",
@ -1438,14 +1427,12 @@
"Share your background and interests": "", "Share your background and interests": "",
"Shared with you": "", "Shared with you": "",
"Sharing Permissions": "", "Sharing Permissions": "",
"Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "",
"Show": "Mostrar", "Show": "Mostrar",
"Show \"What's New\" modal on login": "Mostrar modal \"Qué hay de novo\" al iniciar sesión", "Show \"What's New\" modal on login": "Mostrar modal \"Qué hay de novo\" al iniciar sesión",
"Show Admin Details in Account Pending Overlay": "Mostrar detalles de administración na capa de espera da conta", "Show Admin Details in Account Pending Overlay": "Mostrar detalles de administración na capa de espera da conta",
"Show Formatting Toolbar": "", "Show Formatting Toolbar": "",
"Show image preview": "", "Show image preview": "",
"Show Model": "", "Show Model": "",
"Show shortcuts": "Mostrar atallos",
"Show your support!": "¡Motra o teu apoio!", "Show your support!": "¡Motra o teu apoio!",
"Showcased creativity": "Creatividade mostrada", "Showcased creativity": "Creatividade mostrada",
"Sign in": "Iniciar sesión", "Sign in": "Iniciar sesión",
@ -1480,7 +1467,6 @@
"Status Updates": "", "Status Updates": "",
"STDOUT/STDERR": "STDOUT/STDERR", "STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Detener", "Stop": "Detener",
"Stop Generating": "",
"Stop Sequence": "Detener secuencia", "Stop Sequence": "Detener secuencia",
"Stream Chat Response": "Transmitir resposta de chat", "Stream Chat Response": "Transmitir resposta de chat",
"Stream Delta Chunk Size": "", "Stream Delta Chunk Size": "",
@ -1510,7 +1496,6 @@
"Tags Generation": "xeneración de etiquetas", "Tags Generation": "xeneración de etiquetas",
"Tags Generation Prompt": "Prompt de xeneración de etiquetas", "Tags Generation Prompt": "Prompt de xeneración de etiquetas",
"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.": "", "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.": "",
"Talk to model": "Falar co modelo",
"Tap to interrupt": "Toca para interrumpir", "Tap to interrupt": "Toca para interrumpir",
"Task List": "", "Task List": "",
"Task Model": "", "Task Model": "",
@ -1592,9 +1577,6 @@
"Toast notifications for new updates": "Notificacions emergentes para novas actualizacions", "Toast notifications for new updates": "Notificacions emergentes para novas actualizacions",
"Today": "Hoxe", "Today": "Hoxe",
"Today at {{LOCALIZED_TIME}}": "", "Today at {{LOCALIZED_TIME}}": "",
"Toggle search": "",
"Toggle settings": "Alternar configuración",
"Toggle sidebar": "Alternar barra lateral",
"Toggle whether current connection is active.": "", "Toggle whether current connection is active.": "",
"Token": "Token", "Token": "Token",
"Too verbose": "Demasiado detalliado", "Too verbose": "Demasiado detalliado",
@ -1732,7 +1714,7 @@
"Workspace Permissions": "Permisos do espacio de traballo", "Workspace Permissions": "Permisos do espacio de traballo",
"Write": "Escribir", "Write": "Escribir",
"Write a prompt suggestion (e.g. Who are you?)": "Escribe unha sugerencia para un prompt (por Exemplo, ¿quen eres?)", "Write a prompt suggestion (e.g. Who are you?)": "Escribe unha sugerencia para un prompt (por Exemplo, ¿quen eres?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Escribe un resumen en 50 palabras que resuma [tema ou palabra principal].", "Write a summary in 50 words that summarizes {{topic}}.": "Escribe un resumen en 50 palabras que resuma [tema ou palabra principal].",
"Write something...": "Escribe algo...", "Write something...": "Escribe algo...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Escribe aquí o contido do system prompt do teu modelo\np. ex.: Es Mario de Super Mario Bros e actúas como asistente.", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Escribe aquí o contido do system prompt do teu modelo\np. ex.: Es Mario de Super Mario Bros e actúas como asistente.",
"Yacy Instance URL": "", "Yacy Instance URL": "",

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