Compare commits

...
80 Commits
Author SHA1 Message Date
Timothy Jaeryang Baek 0a26c41c7b Merge pull request #7399 from open-webui/dev
0.4.6
2024-11-26 20:24:33 -08:00
Timothy Jaeryang Baek da6535eeb4 refac: wording 2024-11-26 20:19:46 -08:00
Timothy Jaeryang Baek 2db35d5969 chore: format 2024-11-26 20:14:48 -08:00
Timothy Jaeryang Baek 582ce23bb5 doc: changelog 2024-11-26 20:12:01 -08:00
Timothy Jaeryang Baek f42cc90a00 doc: changelogs 2024-11-26 20:03:10 -08:00
Timothy Jaeryang Baek cbc7801b0e chore: format 2024-11-26 20:03:06 -08:00
Timothy Jaeryang Baek 22b5feb747 Merge pull request #7401 from walker-chen2024/main
bugfix - {{CURRENT_WEEKDAY}} is not working
2024-11-26 19:54:27 -08:00
Walker.Chen 4b536b5283 bugfix - {{CURRENT_WEEKDAY}} is not working
Signed-off-by: Walker.Chen <walker_chen@moremote.com>  https://uniwillai.net
2024-11-27 08:53:45 +08:00
Timothy Jaeryang Baek ede29e98b7 refac 2024-11-26 15:30:35 -08:00
Timothy Jaeryang Baek 789e1db260 refac: textarea 2024-11-26 14:14:26 -08:00
Timothy Jaeryang Baek 4383306770 refac 2024-11-26 14:00:49 -08:00
Timothy Jaeryang Baek 13796fe3b3 fix: legacy query generation support 2024-11-26 13:44:19 -08:00
Timothy Jaeryang Baek 63402c48a8 refac: query gen prompt 2024-11-26 10:23:29 -08:00
Timothy Jaeryang Baek 44efd4d372 refac 2024-11-26 10:17:17 -08:00
Timothy Jaeryang Baek a18292da84 Merge pull request #7381 from panda44312/dev
i18n - Update Simplified Chinese translation
2024-11-26 08:59:40 -08:00
Timothy Jaeryang Baek adba11ebeb Merge pull request #7382 from juananpe/dev
i18n: Add Basque (eu-ES, Euskara) translation
2024-11-26 08:59:30 -08:00
Timothy Jaeryang Baek 442f99e075 refac 2024-11-26 08:55:34 -08:00
Timothy Jaeryang Baek dc7221816f fix: models configure 2024-11-26 08:55:06 -08:00
Juanan Pereira bddc293d82 Add Basque (eu-ES, Euskara) translation 2024-11-26 14:18:59 +01:00
panda44312 3a2247b7a0 Update translation.json 更新翻译 2024-11-26 13:48:28 +01:00
Timothy Jaeryang Baek 4831c9e57e Merge pull request #7307 from open-webui/dev
0.4.5
2024-11-26 01:55:13 -08:00
Timothy Jaeryang Baek e3236622f3 chore: format 2024-11-26 01:53:06 -08:00
Timothy Jaeryang Baek 83f1fa7bb9 Merge pull request #7373 from open-webui/main
dev
2024-11-26 01:52:45 -08:00
Timothy Jaeryang Baek ba427bee3f Merge pull request #7369 from PieterBecking/fix/i18n-typo-groepen
fix(i18n): Correct capitalization typo in Dutch localization
2024-11-26 01:52:24 -08:00
Timothy Jaeryang Baek b9458817b1 doc: changelogs 2024-11-26 01:51:04 -08:00
Timothy Jaeryang Baek 38eb6abbfc chore: version bump 2024-11-26 01:43:28 -08:00
Timothy Jaeryang Baek b173f86690 fix: escape source id 2024-11-26 01:39:12 -08:00
Timothy Jaeryang Baek 9b8f9c689b refac 2024-11-26 01:22:09 -08:00
Timothy Jaeryang Baek e40212a662 refac 2024-11-26 01:14:32 -08:00
Timothy Jaeryang Baek a37cad2ecf chore: format 2024-11-26 01:05:50 -08:00
Timothy Jaeryang Baek 3b9e21ecf9 refac 2024-11-26 00:58:40 -08:00
Timothy Jaeryang Baek 5fac25a002 enh: reintroduce model order/default models 2024-11-26 00:55:58 -08:00
Pieter Becking 2b4e8f6cea fix(i18n): Correct capitalization typo in Dutch localization (GRoepen -> Groepen) 2024-11-26 09:42:13 +01:00
Timothy Jaeryang Baek 29fac5ecca refac: admin models settings 2024-11-25 22:57:54 -08:00
Timothy Jaeryang Baek f9e24968e3 fix: input issue 2024-11-25 22:43:34 -08:00
Timothy Jaeryang Baek c4f82309dc fix: min_p save issue 2024-11-25 16:11:49 -08:00
Timothy Jaeryang Baek da4676de2e Merge pull request #7326 from bnodnarb/fix/ollama-authentication
fix: Include Authorization header in /api/pull and /api/chat requests
2024-11-25 15:38:43 -08:00
Timothy Jaeryang Baek d870386d7d Update CODE_OF_CONDUCT.md 2024-11-24 23:48:02 -08:00
bnodnarb 8dc73e8744 Fix: Add authorization header with bearer token for remote Ollama server endpoints 2024-11-24 20:29:54 -10:00
Timothy Jaeryang Baek 840437e58f refac: o1 title generation issue 2024-11-24 19:07:51 -08:00
Timothy Jaeryang Baek bd28e1ed7d refac: rag prompt template 2024-11-24 18:49:56 -08:00
Timothy Jaeryang Baek 50c3be2136 refac 2024-11-24 18:11:48 -08:00
Timothy Jaeryang Baek 907cf61da7 refac: query generation 2024-11-24 18:03:58 -08:00
Timothy Jaeryang Baek a3a205abd1 fix: function list 2024-11-24 15:45:23 -08:00
Timothy Jaeryang Baek fac8c3259c refac: rich text input behaviour 2024-11-23 23:57:05 -08:00
Timothy Jaeryang Baek e67fdce727 enh: model editor reset image 2024-11-23 23:26:11 -08:00
Timothy Jaeryang Baek c465a37597 fix: textarea auto height issue 2024-11-23 23:10:12 -08:00
Timothy Jaeryang Baek f5bda4bc27 chore: pyproject bump 2024-11-23 23:00:04 -08:00
Timothy Jaeryang Baek 9ff580b8ca fix: textarea input new line issue 2024-11-23 22:58:09 -08:00
Timothy Jaeryang Baek d3acb5cbaa Merge pull request #7286 from houcheng/tts-aiofiles
Tts aiofiles
2024-11-23 22:37:05 -08:00
Timothy Jaeryang Baek 2a5506a9cd fix: textarea input height issue 2024-11-23 22:27:01 -08:00
Timothy Jaeryang Baek c567185cb1 refac: rich text input behaviour 2024-11-23 20:31:33 -08:00
Timothy Jaeryang Baek 5ed5e532a9 Merge pull request #7279 from Luceurre/fix/missing-tool-description
fix: add missing tool description
2024-11-23 10:39:47 -08:00
houcheng a83f89d430 fix: prevent TTS blocking using aiohttp and aiofiles 2024-11-24 00:28:14 +08:00
Pierre Glandon b2d3bfa3a8 feat: add description in Tool 2024-11-23 11:22:12 +01:00
Timothy Jaeryang Baek 8744a12abb Merge pull request #7274 from DmitriyAlergant-T1A/fix/logging_cleanup
Fix: logging cleanup
2024-11-22 20:16:47 -08:00
DmitriyAlergant-T1A 374d6cad18 Python Formatting (Failed CI - fixed) 2024-11-22 23:11:46 -05:00
DmitriyAlergant-T1A d24c21b40f Fix
Logging cleanup: removed some extraneous hard prints (including some that revealed message content!); improved debug logging a bit.

+ added chat_id to task metadata (helpful for logging/tracking in some pipe functions)
2024-11-22 23:05:45 -05:00
Timothy Jaeryang Baek db929b5d5e Merge pull request #7262 from open-webui/dev
0.4.4
2024-11-22 19:27:41 -08:00
Timothy Jaeryang Baek 47ae5221f7 doc: wording 2024-11-22 19:27:20 -08:00
Timothy Jaeryang Baek 79e988b281 doc: changelogs 2024-11-22 19:26:42 -08:00
Timothy Jaeryang Baek 9412f51c19 chore: version bump 2024-11-22 19:22:35 -08:00
Timothy Jaeryang Baek 320cf06333 Merge pull request #7266 from s1adem4n/update-german-translation
i18n: Add missing German translations and fix existing ones
2024-11-22 16:23:51 -08:00
Jonathan cede8a966f add missing translations and fix existing ones 2024-11-23 01:17:22 +01:00
Timothy Jaeryang Baek c561a4c42b Merge pull request #7263 from michaelpoluektov/fix/docstring-event-emitter
fix: docstring event emitter
2024-11-22 16:06:46 -08:00
Michael Poluektov b4e7957a00 docstring quickfix 2024-11-22 20:51:48 +00:00
Timothy Jaeryang Baek c4eacbfc0f refac: rm print statement 2024-11-22 12:39:08 -08:00
Timothy Jaeryang Baek 429fa2befa fix: query generation 2024-11-22 12:31:06 -08:00
Timothy Jaeryang Baek 3cfd4f8993 fix: controls not being shown in mobile 2024-11-22 11:21:53 -08:00
Timothy Jaeryang Baek 1c3bc99b86 refac: accept legacy 'citation' type 2024-11-22 10:49:30 -08:00
Timothy Jaeryang Baek 335337fc75 Merge pull request #7233 from iamcristi/patch-1
Fix: LDAP integration used None for image and that broke Authentication
2024-11-22 10:42:49 -08:00
Timothy Jaeryang Baek 1ea03cc156 Merge pull request #7228 from OriginalSimon/main
18n: Update Ukrainian translation
2024-11-22 10:42:37 -08:00
Timothy Jaeryang Baek 3923c4df65 Merge pull request #7225 from hilam/translate_pt_br
i18b: Translate missing pt-BR strings and enhancements
2024-11-22 10:42:21 -08:00
Timothy Jaeryang Baek 70ea85484c Merge pull request #7238 from aleixdorca/dev
i18n: Update Catalan translation.json
2024-11-22 10:41:46 -08:00
Timothy Jaeryang Baek 35d75e733d refac: file handling 2024-11-22 10:35:59 -08:00
Aleix Dorca 259881f0b6 Update Catalan translation.json 2024-11-22 17:41:35 +01:00
iamcristi b4cd685795 Update auths.py
changed Auths.insert_new_auth for LDAP accounts. Previously setting image to "None" was causing an error.
2024-11-22 17:23:49 +02:00
SimonOriginal 2d5e1a8c6f fix 2024-11-22 14:51:45 +01:00
SimonOriginal f07ba60f2a Update uk translation.json 2024-11-22 14:43:11 +01:00
Hildeberto e12cf77553 Update pt-BR translation.json 2024-11-22 09:35:25 -03:00
87 changed files with 3098 additions and 1203 deletions
+43
View File
@@ -5,6 +5,49 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.4.6] - 2024-11-26
### Added
- **🌍 Enhanced Translations**: Various language translations improved to make the WebUI more accessible and user-friendly worldwide.
### Fixed
- **✏️ Textarea Shifting Bug**: Resolved the issue where the textarea shifted unexpectedly, ensuring a smoother typing experience.
- **⚙️ Model Configuration Modal**: Fixed the issue where the models configuration modal introduced in 0.4.5 wasn’t working for some users.
- **🔍 Legacy Query Support**: Restored functionality for custom query generation in RAG when using legacy prompts, ensuring both default and custom templates now work seamlessly.
- **⚡ Improved General Reliability**: Various minor fixes improve platform stability and ensure a smoother overall experience across workflows.
## [0.4.5] - 2024-11-26
### Added
- **🎨 Model Order/Defaults Reintroduced**: Brought back the ability to set model order and default models, now configurable via Admin Settings > Models > Configure (Gear Icon).
### Fixed
- **🔍 Query Generation Issue**: Resolved an error in web search query generation, enhancing search accuracy and ensuring smoother search workflows.
- **📏 Textarea Auto Height Bug**: Fixed a layout issue where textarea input height was shifting unpredictably, particularly when editing system prompts.
- **🔑 Ollama Authentication**: Corrected an issue with Ollama’s authorization headers, guaranteeing reliable authentication across all endpoints.
- **⚙️ Missing Min_P Save**: Resolved an issue where the 'min_p' parameter was not being saved in configurations.
- **🛠️ Tools Description**: Fixed a key issue that omitted tool descriptions in tools payload.
## [0.4.4] - 2024-11-22
### Added
- **🌐 Translation Updates**: Refreshed Catalan, Brazilian Portuguese, German, and Ukrainian translations, further enhancing the platform's accessibility and improving the experience for international users.
### Fixed
- **📱 Mobile Controls Visibility**: Resolved an issue where the controls button was not displaying on the new chats page for mobile users, ensuring smoother navigation and functionality on smaller screens.
- **📷 LDAP Profile Image Issue**: Fixed an LDAP integration bug related to profile images, ensuring seamless authentication and a reliable login experience for users.
- **⏳ RAG Query Generation Issue**: Addressed a significant problem where RAG query generation occurred unnecessarily without attached files, drastically improving speed and reducing delays during chat completions.
### Changed
- **⚙️ Legacy Event Emitter Support**: Reintroduced compatibility with legacy "citation" types for event emitters in tools and functions, providing smoother workflows and broader tool support for users.
## [0.4.3] - 2024-11-21
### Added
+60 -38
View File
@@ -2,76 +2,98 @@
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
As members, contributors, and leaders of this community, we pledge to make participation in our open-source project a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
We are committed to creating and maintaining an open, respectful, and professional environment where positive contributions and meaningful discussions can flourish. By participating in this project, you agree to uphold these values and align your behavior to the standards outlined in this Code of Conduct.
## Why These Standards Are Important
Open-source projects rely on a community of volunteers dedicating their time, expertise, and effort toward a shared goal. These projects are inherently collaborative but also fragile, as the success of the project depends on the goodwill, energy, and productivity of those involved.
Maintaining a positive and respectful environment is essential to safeguarding the integrity of this project and protecting contributors' efforts. Behavior that disrupts this atmosphere—whether through hostility, entitlement, or unprofessional conduct—can severely harm the morale and productivity of the community. **Strict enforcement of these standards ensures a safe and supportive space for meaningful collaboration.**
This is a community where **respect and professionalism are mandatory.** Violations of these standards will result in **zero tolerance** and immediate enforcement to prevent disruption and ensure the well-being of all participants.
## Our Standards
Examples of behavior that contribute to a positive environment for our community include:
Examples of behavior that contribute to a positive and professional community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall community
- **Respecting others.** Be considerate, listen actively, and engage with empathy toward others' viewpoints and experiences.
- **Constructive feedback.** Provide actionable, thoughtful, and respectful feedback that helps improve the project and encourages collaboration. Avoid unproductive negativity or hypercriticism.
- **Recognizing volunteer contributions.** Appreciate that contributors dedicate their free time and resources selflessly. Approach them with gratitude and patience.
- **Focusing on shared goals.** Collaborate in ways that prioritize the health, success, and sustainability of the community over individual agendas.
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their explicit permission
- **Spamming of any kind**
- Aggressive sales tactics targeting our community members are strictly prohibited. You can mention your product if it's relevant to the discussion, but under no circumstances should you push it forcefully
- Other conduct which could reasonably be considered inappropriate in a professional setting
- The use of discriminatory, demeaning, or sexualized language or behavior.
- Personal attacks, derogatory comments, trolling, or inflammatory political or ideological arguments.
- Harassment, intimidation, or any behavior intended to create a hostile, uncomfortable, or unsafe environment.
- Publishing others' private information (e.g., physical or email addresses) without explicit permission.
- **Entitlement, demand, or aggression toward contributors.** Volunteers are under no obligation to provide immediate or personalized support. Rude or dismissive behavior will not be tolerated.
- **Unproductive or destructive behavior.** This includes venting frustration as hostility ("tantrums"), hypercriticism, attention-seeking negativity, or anything that distracts from the project's goals.
- **Spamming and promotional exploitation.** Sharing irrelevant product promotions or self-promotion in the community is not allowed unless it directly contributes value to the discussion.
### Feedback and Community Engagement
- **Constructive feedback is encouraged, but hostile or entitled behavior will result in immediate action.** If you disagree with elements of the project, we encourage you to offer meaningful improvements or fork the project if necessary. Healthy discussions and technical disagreements are welcome only when handled with professionalism.
- **Respect contributors' time and efforts.** No one is entitled to personalized or on-demand assistance. This is a community built on collaboration and shared effort; demanding or demeaning behavior undermines that trust and will not be allowed.
### Zero Tolerance: No Warnings, Immediate Action
This community operates under a **zero-tolerance policy.** Any behavior deemed unacceptable under this Code of Conduct will result in **immediate enforcement, without prior warning.**
We employ this approach to ensure that unproductive or disruptive behavior does not escalate further or cause unnecessary harm to other contributors. The standards are clear, and violations of any kind—whether mild or severe—will be addressed decisively to protect the community.
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
Community leaders are responsible for upholding and enforcing these standards. They are empowered to take **immediate and appropriate action** to address any behaviors they deem unacceptable under this Code of Conduct. These actions are taken with the goal of protecting the community and preserving its safe, positive, and productive environment.
## Scope
This Code of Conduct applies within all community spaces and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
This Code of Conduct applies to all community spaces, including forums, repositories, social media accounts, and in-person events. It also applies when an individual represents the community in public settings, such as conferences or official communications.
## Enforcement
Additionally, any behavior outside of these defined spaces that negatively impacts the community or its members may fall within the scope of this Code of Conduct.
Instances of abusive, harassing, spamming, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at hello@openwebui.com. All complaints will be reviewed and investigated promptly and fairly.
## Reporting Violations
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
Instances of unacceptable behavior can be reported to the leadership team at **hello@openwebui.com**. Reports will be handled promptly, confidentially, and with consideration for the safety and well-being of the reporter.
All community leaders are required to uphold confidentiality and impartiality when addressing reports of violations.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
### Ban
### 1. Temporary Ban
**Community Impact**: Community leaders will issue a ban to any participant whose behavior is deemed unacceptable according to this Code of Conduct. Bans are enforced immediately and without prior notice.
**Community Impact**: Any violation of community standards, including but not limited to inappropriate language, unprofessional behavior, harassment, or spamming.
A ban may be temporary or permanent, depending on the severity of the violation. This includes—but is not limited to—behavior such as:
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
- Harassment or abusive behavior toward contributors.
- Persistent negativity or hostility that disrupts the collaborative environment.
- Disrespectful, demanding, or aggressive interactions with others.
- Attempts to cause harm or sabotage the community.
### 2. Permanent Ban
**Consequence**: A banned individual is immediately removed from access to all community spaces, communication channels, and events. Community leaders reserve the right to enforce either a time-limited suspension or a permanent ban based on the specific circumstances of the violation.
**Community Impact**: Repeated or severe violations of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
This approach ensures that disruptive behaviors are addressed swiftly and decisively in order to maintain the integrity and productivity of the community.
**Consequence**: A permanent ban from any sort of public interaction within the community.
## Why Zero Tolerance Is Necessary
Open-source projects thrive on collaboration, goodwill, and mutual respect. Toxic behaviors—such as entitlement, hostility, or persistent negativity—threaten not just individual contributors but the health of the project as a whole. Allowing such behaviors to persist robs contributors of their time, energy, and enthusiasm for the work they do.
By enforcing a zero-tolerance policy, we ensure that the community remains a safe, welcoming space for all participants. These measures are not about harshness—they are about protecting contributors and fostering a productive environment where innovation can thrive.
Our expectations are clear, and our enforcement reflects our commitment to this project's long-term success.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
+46 -56
View File
@@ -8,6 +8,8 @@ from pathlib import Path
from pydub import AudioSegment
from pydub.silence import split_on_silence
import aiohttp
import aiofiles
import requests
from open_webui.config import (
AUDIO_STT_ENGINE,
@@ -292,46 +294,39 @@ async def speech(request: Request, user=Depends(get_verified_user)):
except Exception:
pass
r = None
try:
r = requests.post(
url=f"{app.state.config.TTS_OPENAI_API_BASE_URL}/audio/speech",
data=body,
headers=headers,
stream=True,
)
async with aiohttp.ClientSession() as session:
async with session.post(
url=f"{app.state.config.TTS_OPENAI_API_BASE_URL}/audio/speech",
data=body,
headers=headers,
) as r:
r.raise_for_status()
async with aiofiles.open(file_path, "wb") as f:
await f.write(await r.read())
r.raise_for_status()
async with aiofiles.open(file_body_path, "w") as f:
await f.write(json.dumps(json.loads(body.decode("utf-8"))))
# Save the streaming content to a file
with open(file_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
with open(file_body_path, "w") as f:
json.dump(json.loads(body.decode("utf-8")), f)
# Return the saved file
return FileResponse(file_path)
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = r.json()
try:
if r.status != 200:
res = await r.json()
if "error" in res:
error_detail = f"External: {res['error']['message']}"
except Exception:
error_detail = f"External: {e}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(
status_code=r.status_code if r != None else 500,
status_code=getattr(r, "status", 500),
detail=error_detail,
)
elif app.state.config.TTS_ENGINE == "elevenlabs":
payload = None
try:
payload = json.loads(body.decode("utf-8"))
except Exception as e:
@@ -339,7 +334,6 @@ async def speech(request: Request, user=Depends(get_verified_user)):
raise HTTPException(status_code=400, detail="Invalid JSON payload")
voice_id = payload.get("voice", "")
if voice_id not in get_available_voices():
raise HTTPException(
status_code=400,
@@ -347,13 +341,11 @@ async def speech(request: Request, user=Depends(get_verified_user)):
)
url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
headers = {
"Accept": "audio/mpeg",
"Content-Type": "application/json",
"xi-api-key": app.state.config.TTS_API_KEY,
}
data = {
"text": payload["input"],
"model_id": app.state.config.TTS_MODEL,
@@ -361,39 +353,34 @@ async def speech(request: Request, user=Depends(get_verified_user)):
}
try:
r = requests.post(url, json=data, headers=headers)
async with aiohttp.ClientSession() as session:
async with session.post(url, json=data, headers=headers) as r:
r.raise_for_status()
async with aiofiles.open(file_path, "wb") as f:
await f.write(await r.read())
r.raise_for_status()
async with aiofiles.open(file_body_path, "w") as f:
await f.write(json.dumps(json.loads(body.decode("utf-8"))))
# Save the streaming content to a file
with open(file_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)
with open(file_body_path, "w") as f:
json.dump(json.loads(body.decode("utf-8")), f)
# Return the saved file
return FileResponse(file_path)
except Exception as e:
log.exception(e)
error_detail = "Open WebUI: Server Connection Error"
if r is not None:
try:
res = r.json()
try:
if r.status != 200:
res = await r.json()
if "error" in res:
error_detail = f"External: {res['error']['message']}"
except Exception:
error_detail = f"External: {e}"
except Exception:
error_detail = f"External: {e}"
raise HTTPException(
status_code=r.status_code if r != None else 500,
status_code=getattr(r, "status", 500),
detail=error_detail,
)
elif app.state.config.TTS_ENGINE == "azure":
payload = None
try:
payload = json.loads(body.decode("utf-8"))
except Exception as e:
@@ -416,17 +403,20 @@ async def speech(request: Request, user=Depends(get_verified_user)):
<voice name="{language}">{payload["input"]}</voice>
</speak>"""
response = requests.post(url, headers=headers, data=data)
if response.status_code == 200:
with open(file_path, "wb") as f:
f.write(response.content)
return FileResponse(file_path)
else:
log.error(f"Error synthesizing speech - {response.reason}")
raise HTTPException(
status_code=500, detail=f"Error synthesizing speech - {response.reason}"
)
try:
async with aiohttp.ClientSession() as session:
async with session.post(url, headers=headers, data=data) as response:
if response.status == 200:
async with aiofiles.open(file_path, "wb") as f:
await f.write(await response.read())
return FileResponse(file_path)
else:
error_msg = f"Error synthesizing speech - {response.reason}"
log.error(error_msg)
raise HTTPException(status_code=500, detail=error_msg)
except Exception as e:
log.exception(e)
raise HTTPException(status_code=500, detail=str(e))
elif app.state.config.TTS_ENGINE == "transformers":
payload = None
try:
+35 -11
View File
@@ -195,7 +195,10 @@ async def post_streaming_url(
trust_env=True, timeout=aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT)
)
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
key = api_config.get("key", None)
headers = {"Content-Type": "application/json"}
@@ -210,13 +213,13 @@ async def post_streaming_url(
r.raise_for_status()
if stream:
headers = dict(r.headers)
response_headers = dict(r.headers)
if content_type:
headers["Content-Type"] = content_type
response_headers["Content-Type"] = content_type
return StreamingResponse(
r.content,
status_code=r.status,
headers=headers,
headers=response_headers,
background=BackgroundTask(
cleanup_response, response=r, session=session
),
@@ -324,7 +327,10 @@ async def get_ollama_tags(
else:
url = app.state.config.OLLAMA_BASE_URLS[url_idx]
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
key = api_config.get("key", None)
headers = {}
@@ -525,7 +531,10 @@ async def copy_model(
url = app.state.config.OLLAMA_BASE_URLS[url_idx]
log.info(f"url: {url}")
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
key = api_config.get("key", None)
headers = {"Content-Type": "application/json"}
@@ -584,7 +593,10 @@ async def delete_model(
url = app.state.config.OLLAMA_BASE_URLS[url_idx]
log.info(f"url: {url}")
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
key = api_config.get("key", None)
headers = {"Content-Type": "application/json"}
@@ -635,7 +647,10 @@ async def show_model_info(form_data: ModelNameForm, user=Depends(get_verified_us
url = app.state.config.OLLAMA_BASE_URLS[url_idx]
log.info(f"url: {url}")
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
key = api_config.get("key", None)
headers = {"Content-Type": "application/json"}
@@ -730,7 +745,10 @@ async def generate_ollama_embeddings(
url = app.state.config.OLLAMA_BASE_URLS[url_idx]
log.info(f"url: {url}")
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
key = api_config.get("key", None)
headers = {"Content-Type": "application/json"}
@@ -797,7 +815,10 @@ async def generate_ollama_batch_embeddings(
url = app.state.config.OLLAMA_BASE_URLS[url_idx]
log.info(f"url: {url}")
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
key = api_config.get("key", None)
headers = {"Content-Type": "application/json"}
@@ -974,7 +995,10 @@ async def generate_chat_completion(
log.info(f"url: {url}")
log.debug(f"generate_chat_completion() - 2.payload = {payload}")
api_config = app.state.config.OLLAMA_API_CONFIGS.get(url, {})
parsed_url = urlparse(url)
base_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
api_config = app.state.config.OLLAMA_API_CONFIGS.get(base_url, {})
prefix_id = api_config.get("prefix_id", None)
if prefix_id:
payload["model"] = payload["model"].replace(f"{prefix_id}.", "")
-2
View File
@@ -585,8 +585,6 @@ async def generate_chat_completion(
# Convert the modified body back to JSON
payload = json.dumps(payload)
log.debug(payload)
headers = {}
headers["Authorization"] = f"Bearer {key}"
headers["Content-Type"] = "application/json"
+1 -41
View File
@@ -15,8 +15,6 @@ from open_webui.apps.retrieval.vector.connector import VECTOR_DB_CLIENT
from open_webui.utils.misc import get_last_user_message
from open_webui.env import SRC_LOG_LEVELS
from open_webui.config import DEFAULT_RAG_TEMPLATE
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])
@@ -238,44 +236,6 @@ def query_collection_with_hybrid_search(
return merge_and_sort_query_results(results, k=k, reverse=True)
def rag_template(template: str, context: str, query: str):
if template == "":
template = DEFAULT_RAG_TEMPLATE
if "[context]" not in template and "{{CONTEXT}}" not in template:
log.debug(
"WARNING: The RAG template does not contain the '[context]' or '{{CONTEXT}}' placeholder."
)
if "<context>" in context and "</context>" in context:
log.debug(
"WARNING: Potential prompt injection attack: the RAG "
"context contains '<context>' and '</context>'. This might be "
"nothing, or the user might be trying to hack something."
)
query_placeholders = []
if "[query]" in context:
query_placeholder = "{{QUERY" + str(uuid.uuid4()) + "}}"
template = template.replace("[query]", query_placeholder)
query_placeholders.append(query_placeholder)
if "{{QUERY}}" in context:
query_placeholder = "{{QUERY" + str(uuid.uuid4()) + "}}"
template = template.replace("{{QUERY}}", query_placeholder)
query_placeholders.append(query_placeholder)
template = template.replace("[context]", context)
template = template.replace("{{CONTEXT}}", context)
template = template.replace("[query]", query)
template = template.replace("{{QUERY}}", query)
for query_placeholder in query_placeholders:
template = template.replace(query_placeholder, query)
return template
def get_embedding_function(
embedding_engine,
embedding_model,
@@ -469,7 +429,7 @@ def generate_openai_batch_embeddings(
def generate_ollama_batch_embeddings(
model: str, texts: list[str], url: str, key: str
model: str, texts: list[str], url: str, key: str = ""
) -> Optional[list[list[float]]]:
try:
r = requests.post(
+15 -4
View File
@@ -31,6 +31,7 @@ from open_webui.config import (
DEFAULT_MODELS,
DEFAULT_PROMPT_SUGGESTIONS,
DEFAULT_USER_ROLE,
MODEL_ORDER_LIST,
ENABLE_COMMUNITY_SHARING,
ENABLE_LOGIN_FORM,
ENABLE_MESSAGE_RATING,
@@ -68,6 +69,7 @@ from open_webui.config import (
)
from open_webui.env import (
ENV,
SRC_LOG_LEVELS,
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
WEBUI_AUTH_TRUSTED_NAME_HEADER,
)
@@ -94,6 +96,7 @@ app = FastAPI(
)
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MAIN"])
app.state.config = AppConfig()
@@ -118,6 +121,7 @@ app.state.config.DEFAULT_USER_ROLE = DEFAULT_USER_ROLE
app.state.config.USER_PERMISSIONS = USER_PERMISSIONS
app.state.config.WEBHOOK_URL = WEBHOOK_URL
app.state.config.BANNERS = WEBUI_BANNERS
app.state.config.MODEL_ORDER_LIST = MODEL_ORDER_LIST
app.state.config.ENABLE_COMMUNITY_SHARING = ENABLE_COMMUNITY_SHARING
app.state.config.ENABLE_MESSAGE_RATING = ENABLE_MESSAGE_RATING
@@ -270,7 +274,9 @@ async def get_pipe_models():
log.exception(e)
sub_pipes = []
print(sub_pipes)
log.debug(
f"get_pipe_models: function '{pipe.id}' is a manifold of {sub_pipes}"
)
for p in sub_pipes:
sub_pipe_id = f'{pipe.id}.{p["id"]}'
@@ -280,6 +286,7 @@ async def get_pipe_models():
sub_pipe_name = f"{function_module.name}{sub_pipe_name}"
pipe_flag = {"type": pipe.type}
pipe_models.append(
{
"id": sub_pipe_id,
@@ -293,6 +300,10 @@ async def get_pipe_models():
else:
pipe_flag = {"type": "pipe"}
log.debug(
f"get_pipe_models: function '{pipe.id}' is a single pipe {{ 'id': {pipe.id}, 'name': {pipe.name} }}"
)
pipe_models.append(
{
"id": pipe.id,
@@ -346,7 +357,7 @@ def get_pipe_id(form_data: dict) -> str:
pipe_id = form_data["model"]
if "." in pipe_id:
pipe_id, _ = pipe_id.split(".", 1)
print(pipe_id)
return pipe_id
@@ -453,7 +464,7 @@ async def generate_function_chat_completion(form_data, user, models: dict = {}):
return
except Exception as e:
print(f"Error: {e}")
log.error(f"Error: {e}")
yield f"data: {json.dumps({'error': {'detail':str(e)}})}\n\n"
return
@@ -483,7 +494,7 @@ async def generate_function_chat_completion(form_data, user, models: dict = {}):
res = await execute_pipe(pipe, params)
except Exception as e:
print(f"Error: {e}")
log.error(f"Error: {e}")
return {"error": {"detail": str(e)}}
if isinstance(res, StreamingResponse) or isinstance(res, dict):
@@ -246,11 +246,7 @@ async def ldap_auth(request: Request, response: Response, form_data: LdapForm):
)
user = Auths.insert_new_auth(
mail,
str(uuid.uuid4()),
cn,
None,
role,
email=mail, password=str(uuid.uuid4()), name=cn, role=role
)
if not user:
@@ -1,10 +1,12 @@
from open_webui.config import BannerModel
from fastapi import APIRouter, Depends, Request
from pydantic import BaseModel
from typing import Optional
from open_webui.utils.utils import get_admin_user, get_verified_user
from open_webui.config import get_config, save_config
from open_webui.config import BannerModel
router = APIRouter()
@@ -34,8 +36,32 @@ async def export_config(user=Depends(get_admin_user)):
return get_config()
class SetDefaultModelsForm(BaseModel):
models: str
############################
# SetDefaultModels
############################
class ModelsConfigForm(BaseModel):
DEFAULT_MODELS: Optional[str]
MODEL_ORDER_LIST: Optional[list[str]]
@router.get("/models", response_model=ModelsConfigForm)
async def get_models_config(request: Request, user=Depends(get_admin_user)):
return {
"DEFAULT_MODELS": request.app.state.config.DEFAULT_MODELS,
"MODEL_ORDER_LIST": request.app.state.config.MODEL_ORDER_LIST,
}
@router.post("/models", response_model=ModelsConfigForm)
async def set_models_config(
request: Request, form_data: ModelsConfigForm, user=Depends(get_admin_user)
):
request.app.state.config.DEFAULT_MODELS = form_data.DEFAULT_MODELS
request.app.state.config.MODEL_ORDER_LIST = form_data.MODEL_ORDER_LIST
return {
"DEFAULT_MODELS": request.app.state.config.DEFAULT_MODELS,
"MODEL_ORDER_LIST": request.app.state.config.MODEL_ORDER_LIST,
}
class PromptSuggestion(BaseModel):
@@ -47,21 +73,8 @@ class SetDefaultSuggestionsForm(BaseModel):
suggestions: list[PromptSuggestion]
############################
# SetDefaultModels
############################
@router.post("/default/models", response_model=str)
async def set_global_default_models(
request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user)
):
request.app.state.config.DEFAULT_MODELS = form_data.models
return request.app.state.config.DEFAULT_MODELS
@router.post("/default/suggestions", response_model=list[PromptSuggestion])
async def set_global_default_suggestions(
@router.post("/suggestions", response_model=list[PromptSuggestion])
async def set_default_suggestions(
request: Request,
form_data: SetDefaultSuggestionsForm,
user=Depends(get_admin_user),
+11 -6
View File
@@ -5,10 +5,15 @@ import sys
from importlib import util
import types
import tempfile
import logging
from open_webui.env import SRC_LOG_LEVELS
from open_webui.apps.webui.models.functions import Functions
from open_webui.apps.webui.models.tools import Tools
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["MAIN"])
def extract_frontmatter(content):
"""
@@ -95,7 +100,7 @@ def load_tools_module_by_id(toolkit_id, content=None):
# Executing the modified content in the created module's namespace
exec(content, module.__dict__)
frontmatter = extract_frontmatter(content)
print(f"Loaded module: {module.__name__}")
log.info(f"Loaded module: {module.__name__}")
# Create and return the object if the class 'Tools' is found in the module
if hasattr(module, "Tools"):
@@ -103,7 +108,7 @@ def load_tools_module_by_id(toolkit_id, content=None):
else:
raise Exception("No Tools class found in the module")
except Exception as e:
print(f"Error loading module: {toolkit_id}: {e}")
log.error(f"Error loading module: {toolkit_id}: {e}")
del sys.modules[module_name] # Clean up
raise e
finally:
@@ -139,7 +144,7 @@ def load_function_module_by_id(function_id, content=None):
# Execute the modified content in the created module's namespace
exec(content, module.__dict__)
frontmatter = extract_frontmatter(content)
print(f"Loaded module: {module.__name__}")
log.info(f"Loaded module: {module.__name__}")
# Create appropriate object based on available class type in the module
if hasattr(module, "Pipe"):
@@ -151,7 +156,7 @@ def load_function_module_by_id(function_id, content=None):
else:
raise Exception("No Function class found in the module")
except Exception as e:
print(f"Error loading module: {function_id}: {e}")
log.error(f"Error loading module: {function_id}: {e}")
del sys.modules[module_name] # Cleanup by removing the module in case of error
Functions.update_function_by_id(function_id, {"is_active": False})
@@ -164,7 +169,7 @@ def install_frontmatter_requirements(requirements):
if requirements:
req_list = [req.strip() for req in requirements.split(",")]
for req in req_list:
print(f"Installing requirement: {req}")
log.info(f"Installing requirement: {req}")
subprocess.check_call([sys.executable, "-m", "pip", "install", req])
else:
print("No requirements found in frontmatter.")
log.info("No requirements found in frontmatter.")
+16 -9
View File
@@ -740,6 +740,12 @@ DEFAULT_PROMPT_SUGGESTIONS = PersistentConfig(
],
)
MODEL_ORDER_LIST = PersistentConfig(
"MODEL_ORDER_LIST",
"ui.model_order_list",
[],
)
DEFAULT_USER_ROLE = PersistentConfig(
"DEFAULT_USER_ROLE",
"ui.default_user_role",
@@ -969,19 +975,20 @@ QUERY_GENERATION_PROMPT_TEMPLATE = PersistentConfig(
)
DEFAULT_QUERY_GENERATION_PROMPT_TEMPLATE = """### Task:
Based on the chat history, determine whether a search is necessary, and if so, generate a 1-3 broad search queries to retrieve comprehensive and updated information. If no search is required, return an empty list.
Analyze the chat history to determine the necessity of generating search queries, in the given language. By default, **prioritize generating 1-3 broad and relevant search queries** unless it is absolutely certain that no additional information is required. The aim is to retrieve comprehensive, updated, and valuable information even with minimal uncertainty. If no search is unequivocally needed, return an empty list.
### Guidelines:
- Respond exclusively with a JSON object.
- If a search query is needed, return an object like: { "queries": ["query1", "query2"] } where each query is distinct and concise.
- If no search query is necessary, output should be: { "queries": [] }
- Default to suggesting a search query to ensure accurate and updated information, unless it is definitively clear no search is required.
- Be concise, focusing strictly on composing search queries with no additional commentary or text.
- When in doubt, prefer to suggest a search for comprehensiveness.
- Today's date is: {{CURRENT_DATE}}
- Respond **EXCLUSIVELY** with a JSON object. Any form of extra commentary, explanation, or additional text is strictly prohibited.
- When generating search queries, respond in the format: { "queries": ["query1", "query2"] }, ensuring each query is distinct, concise, and relevant to the topic.
- If and only if it is entirely certain that no useful results can be retrieved by a search, return: { "queries": [] }.
- Err on the side of suggesting search queries if there is **any chance** they might provide useful or updated information.
- Be concise and focused on composing high-quality search queries, avoiding unnecessary elaboration, commentary, or assumptions.
- Today's date is: {{CURRENT_DATE}}.
- Always prioritize providing actionable and broad queries that maximize informational coverage.
### Output:
JSON format: {
Strictly return in JSON format:
{
"queries": ["query1", "query2"]
}
+85 -57
View File
@@ -49,7 +49,9 @@ from open_webui.apps.openai.main import (
get_all_models_responses as get_openai_models_responses,
)
from open_webui.apps.retrieval.main import app as retrieval_app
from open_webui.apps.retrieval.utils import get_sources_from_files, rag_template
from open_webui.apps.retrieval.utils import get_sources_from_files
from open_webui.apps.socket.main import (
app as socket_app,
periodic_usage_pool_cleanup,
@@ -122,11 +124,12 @@ from open_webui.utils.response import (
)
from open_webui.utils.security_headers import SecurityHeadersMiddleware
from open_webui.utils.task import (
moa_response_generation_template,
tags_generation_template,
query_generation_template,
emoji_generation_template,
rag_template,
title_generation_template,
query_generation_template,
tags_generation_template,
emoji_generation_template,
moa_response_generation_template,
tools_function_calling_generation_template,
)
from open_webui.utils.tools import get_tools
@@ -515,32 +518,37 @@ async def chat_completion_files_handler(
) -> tuple[dict, dict[str, list]]:
sources = []
try:
queries_response = await generate_queries(
{
"model": body["model"],
"messages": body["messages"],
"type": "retrieval",
},
user,
)
queries_response = queries_response["choices"][0]["message"]["content"]
try:
queries_response = json.loads(queries_response)
except Exception as e:
queries_response = {"queries": []}
queries = queries_response.get("queries", [])
except Exception as e:
queries = []
if len(queries) == 0:
queries = [get_last_user_message(body["messages"])]
print(f"{queries=}")
if files := body.get("metadata", {}).get("files", None):
try:
queries_response = await generate_queries(
{
"model": body["model"],
"messages": body["messages"],
"type": "retrieval",
},
user,
)
queries_response = queries_response["choices"][0]["message"]["content"]
try:
bracket_start = queries_response.find("{")
bracket_end = queries_response.rfind("}") + 1
if bracket_start == -1 or bracket_end == -1:
raise Exception("No JSON object found in the response")
queries_response = queries_response[bracket_start:bracket_end]
queries_response = json.loads(queries_response)
except Exception as e:
queries_response = {"queries": [queries_response]}
queries = queries_response.get("queries", [])
except Exception as e:
queries = []
if len(queries) == 0:
queries = [get_last_user_message(body["messages"])]
sources = get_sources_from_files(
files=files,
queries=queries,
@@ -698,12 +706,13 @@ class ChatCompletionMiddleware(BaseHTTPMiddleware):
if "document" in source:
for doc_idx, doc_context in enumerate(source["document"]):
metadata = source.get("metadata")
doc_source_id = None
if metadata:
doc_source_id = metadata[doc_idx].get("source", source_id)
if source_id:
context_string += f"<source><source_id>{doc_source_id}</source_id><source_context>{doc_context}</source_context></source>\n"
context_string += f"<source><source_id>{doc_source_id if doc_source_id is not None else source_id}</source_id><source_context>{doc_context}</source_context></source>\n"
else:
# If there is no source_id, then do not include the source_id tag
context_string += f"<source><source_context>{doc_context}</source_context></source>\n"
@@ -969,7 +978,7 @@ app.add_middleware(SecurityHeadersMiddleware)
@app.middleware("http")
async def commit_session_after_request(request: Request, call_next):
response = await call_next(request)
log.debug("Commit session after request")
# log.debug("Commit session after request")
Session.commit()
return response
@@ -1176,6 +1185,8 @@ async def get_all_models():
model["actions"].extend(
get_action_items_from_module(action_function, function_module)
)
log.debug(f"get_all_models() returned {len(models)} models")
return models
@@ -1190,6 +1201,14 @@ async def get_models(user=Depends(get_verified_user)):
if "pipeline" not in model or model["pipeline"].get("type", None) != "filter"
]
model_order_list = webui_app.state.config.MODEL_ORDER_LIST
if model_order_list:
model_order_dict = {model_id: i for i, model_id in enumerate(model_order_list)}
# Sort models by order list priority, with fallback for those not in the list
models.sort(
key=lambda x: (model_order_dict.get(x["id"], float("inf")), x["name"])
)
# Filter out models that the user does not have access to
if user.role == "user":
filtered_models = []
@@ -1213,6 +1232,10 @@ async def get_models(user=Depends(get_verified_user)):
filtered_models.append(model)
models = filtered_models
log.debug(
f"/api/models returned filtered models accessible to the user: {json.dumps([model['id'] for model in models])}"
)
return {"data": models}
@@ -1703,7 +1726,6 @@ async def update_task_config(form_data: TaskConfigForm, user=Depends(get_admin_u
@app.post("/api/task/title/completions")
async def generate_title(form_data: dict, user=Depends(get_verified_user)):
print("generate_title")
model_list = await get_all_models()
models = {model["id"]: model for model in model_list}
@@ -1724,9 +1746,9 @@ async def generate_title(form_data: dict, user=Depends(get_verified_user)):
models,
)
print(task_model_id)
model = models[task_model_id]
log.debug(
f"generating chat title using model {task_model_id} for user {user.email} "
)
if app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE != "":
template = app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE
@@ -1765,10 +1787,12 @@ Artificial Intelligence in Healthcare
"max_completion_tokens": 50,
}
),
"chat_id": form_data.get("chat_id", None),
"metadata": {"task": str(TASKS.TITLE_GENERATION), "task_body": form_data},
"metadata": {
"task": str(TASKS.TITLE_GENERATION),
"task_body": form_data,
"chat_id": form_data.get("chat_id", None),
},
}
log.debug(payload)
# Handle pipeline filters
try:
@@ -1792,7 +1816,7 @@ Artificial Intelligence in Healthcare
@app.post("/api/task/tags/completions")
async def generate_chat_tags(form_data: dict, user=Depends(get_verified_user)):
print("generate_chat_tags")
if not app.state.config.ENABLE_TAGS_GENERATION:
return JSONResponse(
status_code=status.HTTP_200_OK,
@@ -1817,7 +1841,10 @@ async def generate_chat_tags(form_data: dict, user=Depends(get_verified_user)):
app.state.config.TASK_MODEL_EXTERNAL,
models,
)
print(task_model_id)
log.debug(
f"generating chat tags using model {task_model_id} for user {user.email} "
)
if app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE != "":
template = app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE
@@ -1848,9 +1875,12 @@ JSON format: { "tags": ["tag1", "tag2", "tag3"] }
"model": task_model_id,
"messages": [{"role": "user", "content": content}],
"stream": False,
"metadata": {"task": str(TASKS.TAGS_GENERATION), "task_body": form_data},
"metadata": {
"task": str(TASKS.TAGS_GENERATION),
"task_body": form_data,
"chat_id": form_data.get("chat_id", None),
},
}
log.debug(payload)
# Handle pipeline filters
try:
@@ -1874,7 +1904,7 @@ JSON format: { "tags": ["tag1", "tag2", "tag3"] }
@app.post("/api/task/queries/completions")
async def generate_queries(form_data: dict, user=Depends(get_verified_user)):
print("generate_queries")
type = form_data.get("type")
if type == "web_search":
if not app.state.config.ENABLE_SEARCH_QUERY_GENERATION:
@@ -1907,9 +1937,10 @@ async def generate_queries(form_data: dict, user=Depends(get_verified_user)):
app.state.config.TASK_MODEL_EXTERNAL,
models,
)
print(task_model_id)
model = models[task_model_id]
log.debug(
f"generating {type} queries using model {task_model_id} for user {user.email}"
)
if app.state.config.QUERY_GENERATION_PROMPT_TEMPLATE != "":
template = app.state.config.QUERY_GENERATION_PROMPT_TEMPLATE
@@ -1924,9 +1955,12 @@ async def generate_queries(form_data: dict, user=Depends(get_verified_user)):
"model": task_model_id,
"messages": [{"role": "user", "content": content}],
"stream": False,
"metadata": {"task": str(TASKS.QUERY_GENERATION), "task_body": form_data},
"metadata": {
"task": str(TASKS.QUERY_GENERATION),
"task_body": form_data,
"chat_id": form_data.get("chat_id", None),
},
}
log.debug(payload)
# Handle pipeline filters
try:
@@ -1950,7 +1984,6 @@ async def generate_queries(form_data: dict, user=Depends(get_verified_user)):
@app.post("/api/task/emoji/completions")
async def generate_emoji(form_data: dict, user=Depends(get_verified_user)):
print("generate_emoji")
model_list = await get_all_models()
models = {model["id"]: model for model in model_list}
@@ -1970,9 +2003,8 @@ async def generate_emoji(form_data: dict, user=Depends(get_verified_user)):
app.state.config.TASK_MODEL_EXTERNAL,
models,
)
print(task_model_id)
model = models[task_model_id]
log.debug(f"generating emoji using model {task_model_id} for user {user.email} ")
template = '''
Your task is to reflect the speaker's likely facial expression through a fitting emoji. Interpret emotions from the message and reflect their facial expression using fitting, diverse emojis (e.g., 😊, 😢, 😡, 😱).
@@ -2002,7 +2034,6 @@ Message: """{{prompt}}"""
"chat_id": form_data.get("chat_id", None),
"metadata": {"task": str(TASKS.EMOJI_GENERATION), "task_body": form_data},
}
log.debug(payload)
# Handle pipeline filters
try:
@@ -2026,7 +2057,6 @@ Message: """{{prompt}}"""
@app.post("/api/task/moa/completions")
async def generate_moa_response(form_data: dict, user=Depends(get_verified_user)):
print("generate_moa_response")
model_list = await get_all_models()
models = {model["id"]: model for model in model_list}
@@ -2046,9 +2076,8 @@ async def generate_moa_response(form_data: dict, user=Depends(get_verified_user)
app.state.config.TASK_MODEL_EXTERNAL,
models,
)
print(task_model_id)
model = models[task_model_id]
log.debug(f"generating MOA model {task_model_id} for user {user.email} ")
template = """You have been provided with a set of responses from various models to the latest user query: "{{prompt}}"
@@ -2072,7 +2101,6 @@ Responses from models: {{responses}}"""
"task_body": form_data,
},
}
log.debug(payload)
try:
payload = filter_pipeline(payload, user, models)
@@ -2107,7 +2135,7 @@ Responses from models: {{responses}}"""
async def get_pipelines_list(user=Depends(get_admin_user)):
responses = await get_openai_models_responses()
print(responses)
log.debug(f"get_pipelines_list: get_openai_models_responses returned {responses}")
urlIdxs = [
idx
for idx, response in enumerate(responses)
+49
View File
@@ -1,11 +1,20 @@
import logging
import math
import re
from datetime import datetime
from typing import Optional
import uuid
from open_webui.utils.misc import get_last_user_message, get_messages_content
from open_webui.env import SRC_LOG_LEVELS
from open_webui.config import DEFAULT_RAG_TEMPLATE
log = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])
def prompt_template(
template: str, user_name: Optional[str] = None, user_location: Optional[str] = None
@@ -16,12 +25,14 @@ def prompt_template(
# Format the date to YYYY-MM-DD
formatted_date = current_date.strftime("%Y-%m-%d")
formatted_time = current_date.strftime("%I:%M:%S %p")
formatted_weekday = current_date.strftime("%A")
template = template.replace("{{CURRENT_DATE}}", formatted_date)
template = template.replace("{{CURRENT_TIME}}", formatted_time)
template = template.replace(
"{{CURRENT_DATETIME}}", f"{formatted_date} {formatted_time}"
)
template = template.replace("{{CURRENT_WEEKDAY}}", formatted_weekday)
if user_name:
# Replace {{USER_NAME}} in the template with the user's name
@@ -110,6 +121,44 @@ def replace_messages_variable(template: str, messages: list[str]) -> str:
# {{prompt:middletruncate:8000}}
def rag_template(template: str, context: str, query: str):
if template == "":
template = DEFAULT_RAG_TEMPLATE
if "[context]" not in template and "{{CONTEXT}}" not in template:
log.debug(
"WARNING: The RAG template does not contain the '[context]' or '{{CONTEXT}}' placeholder."
)
if "<context>" in context and "</context>" in context:
log.debug(
"WARNING: Potential prompt injection attack: the RAG "
"context contains '<context>' and '</context>'. This might be "
"nothing, or the user might be trying to hack something."
)
query_placeholders = []
if "[query]" in context:
query_placeholder = "{{QUERY" + str(uuid.uuid4()) + "}}"
template = template.replace("[query]", query_placeholder)
query_placeholders.append(query_placeholder)
if "{{QUERY}}" in context:
query_placeholder = "{{QUERY" + str(uuid.uuid4()) + "}}"
template = template.replace("{{QUERY}}", query_placeholder)
query_placeholders.append(query_placeholder)
template = template.replace("[context]", context)
template = template.replace("{{CONTEXT}}", context)
template = template.replace("[query]", query)
template = template.replace("{{QUERY}}", query)
for query_placeholder in query_placeholders:
template = template.replace(query_placeholder, query)
return template
def title_generation_template(
template: str, messages: list[dict], user: Optional[dict] = None
) -> str:
+38 -4
View File
@@ -90,6 +90,32 @@ def get_tools(
return tools_dict
def parse_description(docstring: str | None) -> str:
"""
Parse a function's docstring to extract the description.
Args:
docstring (str): The docstring to parse.
Returns:
str: The description.
"""
if not docstring:
return ""
lines = [line.strip() for line in docstring.strip().split("\n")]
description_lines: list[str] = []
for line in lines:
if re.match(r":param", line) or re.match(r":return", line):
break
description_lines.append(line)
return "\n".join(description_lines)
def parse_docstring(docstring):
"""
Parse a function's docstring to extract parameter descriptions in reST format.
@@ -109,9 +135,12 @@ def parse_docstring(docstring):
for line in docstring.splitlines():
match = param_pattern.match(line.strip())
if match:
param_name, param_description = match.groups()
param_descriptions[param_name] = param_description
if not match:
continue
param_name, param_description = match.groups()
if param_name.startswith("__"):
continue
param_descriptions[param_name] = param_description
return param_descriptions
@@ -135,6 +164,8 @@ def function_to_pydantic_model(func: Callable) -> type[BaseModel]:
docstring = func.__doc__
descriptions = parse_docstring(docstring)
tool_description = parse_description(docstring)
field_defs = {}
for name, param in parameters.items():
type_hint = type_hints.get(name, Any)
@@ -145,7 +176,10 @@ def function_to_pydantic_model(func: Callable) -> type[BaseModel]:
continue
field_defs[name] = type_hint, Field(default_value, description=description)
return create_model(func.__name__, **field_defs)
model = create_model(func.__name__, **field_defs)
model.__doc__ = tool_description
return model
def get_callable_attributes(tool: object) -> list[Callable]:
+1
View File
@@ -14,6 +14,7 @@ requests==2.32.3
aiohttp==3.10.8
async-timeout
aiocache
aiofiles
sqlalchemy==2.0.32
alembic==1.13.2
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "open-webui",
"version": "0.4.3",
"version": "0.4.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "open-webui",
"version": "0.4.3",
"version": "0.4.6",
"dependencies": {
"@codemirror/lang-javascript": "^6.2.2",
"@codemirror/lang-python": "^6.1.6",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "open-webui",
"version": "0.4.3",
"version": "0.4.6",
"private": true,
"scripts": {
"dev": "npm run pyodide:fetch && vite dev --host",
+1
View File
@@ -22,6 +22,7 @@ dependencies = [
"aiohttp==3.10.8",
"async-timeout",
"aiocache",
"aiofiles",
"sqlalchemy==2.0.32",
"alembic==1.13.2",
+9
View File
@@ -231,6 +231,15 @@ input[type='number'] {
@apply dark:bg-gray-800 bg-gray-100;
}
.tiptap p code {
color: #eb5757;
border-width: 0px;
padding: 3px 8px;
font-size: 0.8em;
font-weight: 600;
@apply rounded-md dark:bg-gray-800 bg-gray-100 mx-0.5;
}
/* Code styling */
.hljs-comment,
.hljs-quote {
+31 -4
View File
@@ -58,17 +58,44 @@ export const exportConfig = async (token: string) => {
return res;
};
export const setDefaultModels = async (token: string, models: string) => {
export const getModelsConfig = async (token: string) => {
let error = null;
const res = await fetch(`${WEBUI_API_BASE_URL}/configs/default/models`, {
const res = await fetch(`${WEBUI_API_BASE_URL}/configs/models`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
}
})
.then(async (res) => {
if (!res.ok) throw await res.json();
return res.json();
})
.catch((err) => {
console.log(err);
error = err.detail;
return null;
});
if (error) {
throw error;
}
return res;
};
export const setModelsConfig = async (token: string, config: object) => {
let error = null;
const res = await fetch(`${WEBUI_API_BASE_URL}/configs/models`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`
},
body: JSON.stringify({
models: models
...config
})
})
.then(async (res) => {
@@ -91,7 +118,7 @@ export const setDefaultModels = async (token: string, models: string) => {
export const setDefaultPromptSuggestions = async (token: string, promptSuggestions: string) => {
let error = null;
const res = await fetch(`${WEBUI_API_BASE_URL}/configs/default/suggestions`, {
const res = await fetch(`${WEBUI_API_BASE_URL}/configs/suggestions`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
+9 -34
View File
@@ -25,26 +25,6 @@ export const getModels = async (token: string = '', base: boolean = false) => {
}
let models = res?.data ?? [];
models = models
.filter((models) => models)
// Sort the models
.sort((a, b) => {
// Compare case-insensitively by name for models without position property
const lowerA = a.name.toLowerCase();
const lowerB = b.name.toLowerCase();
if (lowerA < lowerB) return -1;
if (lowerA > lowerB) return 1;
// If same case-insensitively, sort by original strings,
// lowercase will come before uppercase due to ASCII values
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0; // They are equal
});
console.log(models);
return models;
};
@@ -387,20 +367,15 @@ export const generateQueries = async (
throw error;
}
// Step 1: Safely extract the response string
const response = res?.choices[0]?.message?.content ?? '';
try {
// Step 1: Safely extract the response string
const response = res?.choices[0]?.message?.content ?? '';
const jsonStartIndex = response.indexOf('{');
const jsonEndIndex = response.lastIndexOf('}');
// Step 2: Attempt to fix common JSON format issues like single quotes
const sanitizedResponse = response.replace(/['‘’`]/g, '"'); // Convert single quotes to double quotes for valid JSON
// Step 3: Find the relevant JSON block within the response
const jsonStartIndex = sanitizedResponse.indexOf('{');
const jsonEndIndex = sanitizedResponse.lastIndexOf('}');
// Step 4: Check if we found a valid JSON block (with both `{` and `}`)
if (jsonStartIndex !== -1 && jsonEndIndex !== -1) {
const jsonResponse = sanitizedResponse.substring(jsonStartIndex, jsonEndIndex + 1);
const jsonResponse = response.substring(jsonStartIndex, jsonEndIndex + 1);
// Step 5: Parse the JSON block
const parsed = JSON.parse(jsonResponse);
@@ -413,12 +388,12 @@ export const generateQueries = async (
}
}
// If no valid JSON block found, return an empty array
return [];
// If no valid JSON block found, return response as is
return [response];
} catch (e) {
// Catch and safely return empty array on any parsing errors
console.error('Failed to parse response: ', e);
return [];
return [response];
}
};
+1 -1
View File
@@ -219,7 +219,7 @@
</div>
<div class="mb-5">
{#each filteredItems as func}
{#each filteredItems as func (func.id)}
<div
class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl"
>
@@ -5,6 +5,7 @@
const dispatch = createEventDispatcher();
import { getModels } from '$lib/apis';
import { getConfig, updateConfig } from '$lib/apis/evaluations';
import Switch from '$lib/components/common/Switch.svelte';
import Spinner from '$lib/components/common/Spinner.svelte';
@@ -12,7 +13,6 @@
import Plus from '$lib/components/icons/Plus.svelte';
import Model from './Evaluations/Model.svelte';
import ArenaModelModal from './Evaluations/ArenaModelModal.svelte';
import { getConfig, updateConfig } from '$lib/apis/evaluations';
const i18n = getContext('i18n');
@@ -27,6 +27,7 @@
if (config) {
toast.success('Settings saved successfully');
models.set(await getModels(localStorage.token));
}
};
@@ -375,7 +375,7 @@
<div class="flex justify-end pt-3 text-sm font-medium gap-1.5">
{#if edit}
<button
class="px-3.5 py-1.5 text-sm font-medium dark:bg-black dark:hover:bg-gray-900 dark:text-white bg-white text-black hover:bg-gray-100 transition rounded-full flex flex-row space-x-1 items-center"
class="px-3.5 py-1.5 text-sm font-medium dark:bg-black dark:hover:bg-gray-950 dark:text-white bg-white text-black hover:bg-gray-100 transition rounded-full flex flex-row space-x-1 items-center"
type="button"
on:click={() => {
dispatch('delete', model);
@@ -387,7 +387,7 @@
{/if}
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full flex flex-row space-x-1 items-center {loading
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-950 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full flex flex-row space-x-1 items-center {loading
? ' cursor-not-allowed'
: ''}"
type="submit"
+274 -267
View File
@@ -55,255 +55,176 @@
};
</script>
<form
class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={() => {
updateInterfaceHandler();
dispatch('save');
}}
>
<div class=" overflow-y-scroll scrollbar-hidden h-full pr-1.5">
<div>
<div class=" mb-2.5 text-sm font-medium flex items-center">
<div class=" mr-1">{$i18n.t('Set Task Model')}</div>
<Tooltip
content={$i18n.t(
'A task model is used when performing tasks such as generating titles for chats and web search queries'
)}
>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="size-3.5"
{#if taskConfig}
<form
class="flex flex-col h-full justify-between space-y-3 text-sm"
on:submit|preventDefault={() => {
updateInterfaceHandler();
dispatch('save');
}}
>
<div class=" overflow-y-scroll scrollbar-hidden h-full pr-1.5">
<div>
<div class=" mb-2.5 text-sm font-medium flex items-center">
<div class=" mr-1">{$i18n.t('Set Task Model')}</div>
<Tooltip
content={$i18n.t(
'A task model is used when performing tasks such as generating titles for chats and web search queries'
)}
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"
/>
</svg>
</Tooltip>
</div>
<div class="flex w-full gap-2">
<div class="flex-1">
<div class=" text-xs mb-1">{$i18n.t('Local Models')}</div>
<select
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
bind:value={taskConfig.TASK_MODEL}
placeholder={$i18n.t('Select a model')}
>
<option value="" selected>{$i18n.t('Current Model')}</option>
{#each $models.filter((m) => m.owned_by === 'ollama') as model}
<option value={model.id} class="bg-gray-100 dark:bg-gray-700">
{model.name}
</option>
{/each}
</select>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="size-3.5"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"
/>
</svg>
</Tooltip>
</div>
<div class="flex w-full gap-2">
<div class="flex-1">
<div class=" text-xs mb-1">{$i18n.t('Local Models')}</div>
<select
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
bind:value={taskConfig.TASK_MODEL}
placeholder={$i18n.t('Select a model')}
>
<option value="" selected>{$i18n.t('Current Model')}</option>
{#each $models.filter((m) => m.owned_by === 'ollama') as model}
<option value={model.id} class="bg-gray-100 dark:bg-gray-700">
{model.name}
</option>
{/each}
</select>
</div>
<div class="flex-1">
<div class=" text-xs mb-1">{$i18n.t('External Models')}</div>
<select
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
bind:value={taskConfig.TASK_MODEL_EXTERNAL}
placeholder={$i18n.t('Select a model')}
>
<option value="" selected>{$i18n.t('Current Model')}</option>
{#each $models as model}
<option value={model.id} class="bg-gray-100 dark:bg-gray-700">
{model.name}
</option>
{/each}
</select>
</div>
</div>
<div class="flex-1">
<div class=" text-xs mb-1">{$i18n.t('External Models')}</div>
<select
class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
bind:value={taskConfig.TASK_MODEL_EXTERNAL}
placeholder={$i18n.t('Select a model')}
>
<option value="" selected>{$i18n.t('Current Model')}</option>
{#each $models as model}
<option value={model.id} class="bg-gray-100 dark:bg-gray-700">
{model.name}
</option>
{/each}
</select>
</div>
</div>
<div class="mt-3">
<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Title Generation Prompt')}</div>
<Tooltip
content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
placement="top-start"
>
<Textarea
bind:value={taskConfig.TITLE_GENERATION_PROMPT_TEMPLATE}
placeholder={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
/>
</Tooltip>
</div>
<hr class=" dark:border-gray-850 my-3" />
<div class="my-3 flex w-full items-center justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Enable Tags Generation')}
</div>
<Switch bind:state={taskConfig.ENABLE_TAGS_GENERATION} />
</div>
{#if taskConfig.ENABLE_TAGS_GENERATION}
<div class="mt-3">
<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Tags Generation Prompt')}</div>
<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Title Generation Prompt')}</div>
<Tooltip
content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
placement="top-start"
>
<Textarea
bind:value={taskConfig.TAGS_GENERATION_PROMPT_TEMPLATE}
bind:value={taskConfig.TITLE_GENERATION_PROMPT_TEMPLATE}
placeholder={$i18n.t(
'Leave empty to use the default prompt, or enter a custom prompt'
)}
/>
</Tooltip>
</div>
{/if}
<hr class=" dark:border-gray-850 my-3" />
<div class="my-3 flex w-full items-center justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Enable Tags Generation')}
</div>
<Switch bind:state={taskConfig.ENABLE_TAGS_GENERATION} />
</div>
{#if taskConfig.ENABLE_TAGS_GENERATION}
<div class="mt-3">
<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Tags Generation Prompt')}</div>
<Tooltip
content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
placement="top-start"
>
<Textarea
bind:value={taskConfig.TAGS_GENERATION_PROMPT_TEMPLATE}
placeholder={$i18n.t(
'Leave empty to use the default prompt, or enter a custom prompt'
)}
/>
</Tooltip>
</div>
{/if}
<hr class=" dark:border-gray-850 my-3" />
<div class="my-3 flex w-full items-center justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Enable Retrieval Query Generation')}
</div>
<Switch bind:state={taskConfig.ENABLE_RETRIEVAL_QUERY_GENERATION} />
</div>
<div class="my-3 flex w-full items-center justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Enable Web Search Query Generation')}
</div>
<Switch bind:state={taskConfig.ENABLE_SEARCH_QUERY_GENERATION} />
</div>
<div class="">
<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Query Generation Prompt')}</div>
<Tooltip
content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
placement="top-start"
>
<Textarea
bind:value={taskConfig.QUERY_GENERATION_PROMPT_TEMPLATE}
placeholder={$i18n.t(
'Leave empty to use the default prompt, or enter a custom prompt'
)}
/>
</Tooltip>
</div>
</div>
<hr class=" dark:border-gray-850 my-3" />
<div class="my-3 flex w-full items-center justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Enable Retrieval Query Generation')}
</div>
<Switch bind:state={taskConfig.ENABLE_RETRIEVAL_QUERY_GENERATION} />
</div>
<div class="my-3 flex w-full items-center justify-between">
<div class=" self-center text-xs font-medium">
{$i18n.t('Enable Web Search Query Generation')}
</div>
<Switch bind:state={taskConfig.ENABLE_SEARCH_QUERY_GENERATION} />
</div>
<div class="">
<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Query Generation Prompt')}</div>
<Tooltip
content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
placement="top-start"
>
<Textarea
bind:value={taskConfig.QUERY_GENERATION_PROMPT_TEMPLATE}
placeholder={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
/>
</Tooltip>
</div>
</div>
<hr class=" dark:border-gray-850 my-3" />
<div class=" space-y-3 {banners.length > 0 ? ' mb-3' : ''}">
<div class="flex w-full justify-between">
<div class=" self-center text-sm font-semibold">
{$i18n.t('Banners')}
</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
type="button"
on:click={() => {
if (banners.length === 0 || banners.at(-1).content !== '') {
banners = [
...banners,
{
id: uuidv4(),
type: '',
title: '',
content: '',
dismissible: true,
timestamp: Math.floor(Date.now() / 1000)
}
];
}
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-4 h-4"
>
<path
d="M10.75 4.75a.75.75 0 00-1.5 0v4.5h-4.5a.75.75 0 000 1.5h4.5v4.5a.75.75 0 001.5 0v-4.5h4.5a.75.75 0 000-1.5h-4.5v-4.5z"
/>
</svg>
</button>
</div>
<div class="flex flex-col space-y-1">
{#each banners as banner, bannerIdx}
<div class=" flex justify-between">
<div class="flex flex-row flex-1 border rounded-xl dark:border-gray-800">
<select
class="w-fit capitalize rounded-xl py-2 px-4 text-xs bg-transparent outline-none"
bind:value={banner.type}
required
>
{#if banner.type == ''}
<option value="" selected disabled class="text-gray-900">{$i18n.t('Type')}</option
>
{/if}
<option value="info" class="text-gray-900">{$i18n.t('Info')}</option>
<option value="warning" class="text-gray-900">{$i18n.t('Warning')}</option>
<option value="error" class="text-gray-900">{$i18n.t('Error')}</option>
<option value="success" class="text-gray-900">{$i18n.t('Success')}</option>
</select>
<input
class="pr-5 py-1.5 text-xs w-full bg-transparent outline-none"
placeholder={$i18n.t('Content')}
bind:value={banner.content}
/>
<div class="relative top-1.5 -left-2">
<Tooltip content={$i18n.t('Dismissible')} className="flex h-fit items-center">
<Switch bind:state={banner.dismissible} />
</Tooltip>
</div>
</div>
<button
class="px-2"
type="button"
on:click={() => {
banners.splice(bannerIdx, 1);
banners = banners;
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-4 h-4"
>
<path
d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
/>
</svg>
</button>
</div>
{/each}
</div>
</div>
{#if $user.role === 'admin'}
<div class=" space-y-3">
<div class="flex w-full justify-between mb-2">
<div class=" space-y-3 {banners.length > 0 ? ' mb-3' : ''}">
<div class="flex w-full justify-between">
<div class=" self-center text-sm font-semibold">
{$i18n.t('Default Prompt Suggestions')}
{$i18n.t('Banners')}
</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
type="button"
on:click={() => {
if (promptSuggestions.length === 0 || promptSuggestions.at(-1).content !== '') {
promptSuggestions = [...promptSuggestions, { content: '', title: ['', ''] }];
if (banners.length === 0 || banners.at(-1).content !== '') {
banners = [
...banners,
{
id: uuidv4(),
type: '',
title: '',
content: '',
dismissible: true,
timestamp: Math.floor(Date.now() / 1000)
}
];
}
}}
>
@@ -319,40 +240,45 @@
</svg>
</button>
</div>
<div class="grid lg:grid-cols-2 flex-col gap-1.5">
{#each promptSuggestions as prompt, promptIdx}
<div
class=" flex border border-gray-100 dark:border-none dark:bg-gray-850 rounded-xl py-1.5"
>
<div class="flex flex-col flex-1 pl-1">
<div class="flex border-b border-gray-100 dark:border-gray-800 w-full">
<input
class="px-3 py-1.5 text-xs w-full bg-transparent outline-none border-r border-gray-100 dark:border-gray-800"
placeholder={$i18n.t('Title (e.g. Tell me a fun fact)')}
bind:value={prompt.title[0]}
/>
<div class="flex flex-col space-y-1">
{#each banners as banner, bannerIdx}
<div class=" flex justify-between">
<div class="flex flex-row flex-1 border rounded-xl dark:border-gray-800">
<select
class="w-fit capitalize rounded-xl py-2 px-4 text-xs bg-transparent outline-none"
bind:value={banner.type}
required
>
{#if banner.type == ''}
<option value="" selected disabled class="text-gray-900"
>{$i18n.t('Type')}</option
>
{/if}
<option value="info" class="text-gray-900">{$i18n.t('Info')}</option>
<option value="warning" class="text-gray-900">{$i18n.t('Warning')}</option>
<option value="error" class="text-gray-900">{$i18n.t('Error')}</option>
<option value="success" class="text-gray-900">{$i18n.t('Success')}</option>
</select>
<input
class="px-3 py-1.5 text-xs w-full bg-transparent outline-none border-r border-gray-100 dark:border-gray-800"
placeholder={$i18n.t('Subtitle (e.g. about the Roman Empire)')}
bind:value={prompt.title[1]}
/>
</div>
<textarea
class="px-3 py-1.5 text-xs w-full bg-transparent outline-none border-r border-gray-100 dark:border-gray-800 resize-none"
placeholder={$i18n.t('Prompt (e.g. Tell me a fun fact about the Roman Empire)')}
rows="3"
bind:value={prompt.content}
<input
class="pr-5 py-1.5 text-xs w-full bg-transparent outline-none"
placeholder={$i18n.t('Content')}
bind:value={banner.content}
/>
<div class="relative top-1.5 -left-2">
<Tooltip content={$i18n.t('Dismissible')} className="flex h-fit items-center">
<Switch bind:state={banner.dismissible} />
</Tooltip>
</div>
</div>
<button
class="px-3"
class="px-2"
type="button"
on:click={() => {
promptSuggestions.splice(promptIdx, 1);
promptSuggestions = promptSuggestions;
banners.splice(bannerIdx, 1);
banners = banners;
}}
>
<svg
@@ -369,22 +295,103 @@
</div>
{/each}
</div>
{#if promptSuggestions.length > 0}
<div class="text-xs text-left w-full mt-2">
{$i18n.t('Adjusting these settings will apply changes universally to all users.')}
</div>
{/if}
</div>
{/if}
</div>
<div class="flex justify-end text-sm font-medium">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
</button>
</div>
</form>
{#if $user.role === 'admin'}
<div class=" space-y-3">
<div class="flex w-full justify-between mb-2">
<div class=" self-center text-sm font-semibold">
{$i18n.t('Default Prompt Suggestions')}
</div>
<button
class="p-1 px-3 text-xs flex rounded transition"
type="button"
on:click={() => {
if (promptSuggestions.length === 0 || promptSuggestions.at(-1).content !== '') {
promptSuggestions = [...promptSuggestions, { content: '', title: ['', ''] }];
}
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-4 h-4"
>
<path
d="M10.75 4.75a.75.75 0 00-1.5 0v4.5h-4.5a.75.75 0 000 1.5h4.5v4.5a.75.75 0 001.5 0v-4.5h4.5a.75.75 0 000-1.5h-4.5v-4.5z"
/>
</svg>
</button>
</div>
<div class="grid lg:grid-cols-2 flex-col gap-1.5">
{#each promptSuggestions as prompt, promptIdx}
<div
class=" flex border border-gray-100 dark:border-none dark:bg-gray-850 rounded-xl py-1.5"
>
<div class="flex flex-col flex-1 pl-1">
<div class="flex border-b border-gray-100 dark:border-gray-800 w-full">
<input
class="px-3 py-1.5 text-xs w-full bg-transparent outline-none border-r border-gray-100 dark:border-gray-800"
placeholder={$i18n.t('Title (e.g. Tell me a fun fact)')}
bind:value={prompt.title[0]}
/>
<input
class="px-3 py-1.5 text-xs w-full bg-transparent outline-none border-r border-gray-100 dark:border-gray-800"
placeholder={$i18n.t('Subtitle (e.g. about the Roman Empire)')}
bind:value={prompt.title[1]}
/>
</div>
<textarea
class="px-3 py-1.5 text-xs w-full bg-transparent outline-none border-r border-gray-100 dark:border-gray-800 resize-none"
placeholder={$i18n.t('Prompt (e.g. Tell me a fun fact about the Roman Empire)')}
rows="3"
bind:value={prompt.content}
/>
</div>
<button
class="px-3"
type="button"
on:click={() => {
promptSuggestions.splice(promptIdx, 1);
promptSuggestions = promptSuggestions;
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-4 h-4"
>
<path
d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
/>
</svg>
</button>
</div>
{/each}
</div>
{#if promptSuggestions.length > 0}
<div class="text-xs text-left w-full mt-2">
{$i18n.t('Adjusting these settings will apply changes universally to all users.')}
</div>
{/if}
</div>
{/if}
</div>
<div class="flex justify-end text-sm font-medium">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
</button>
</div>
</form>
{/if}
+20 -24
View File
@@ -24,6 +24,8 @@
import ModelEditor from '$lib/components/workspace/Models/ModelEditor.svelte';
import { toast } from 'svelte-sonner';
import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
import Cog6 from '$lib/components/icons/Cog6.svelte';
import ConfigureModelsModal from './Models/ConfigureModelsModal.svelte';
let importFiles;
let modelsImportInputElement: HTMLInputElement;
@@ -35,12 +37,20 @@
let filteredModels = [];
let selectedModelId = null;
let showResetModal = false;
let showConfigModal = false;
$: if (models) {
filteredModels = models.filter(
(m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase())
);
filteredModels = models
.filter((m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase()))
.sort((a, b) => {
// Check if either model is inactive and push them to the bottom
if ((a.is_active ?? true) !== (b.is_active ?? true)) {
return (b.is_active ?? true) - (a.is_active ?? true);
}
// If both models' active states are the same, sort alphabetically
return a.name.localeCompare(b.name);
});
}
let searchValue = '';
@@ -114,12 +124,11 @@
}).catch((error) => {
return null;
});
await init();
} else {
await toggleModelById(localStorage.token, model.id);
}
await init();
_models.set(await getModels(localStorage.token));
};
@@ -128,18 +137,7 @@
});
</script>
<ConfirmDialog
title={$i18n.t('Delete All Models')}
message={$i18n.t('This will delete all models including custom models and cannot be undone.')}
bind:show={showResetModal}
onConfirm={async () => {
const res = deleteAllModels(localStorage.token);
if (res) {
toast.success($i18n.t('All models deleted successfully'));
init();
}
}}
/>
<ConfigureModelsModal bind:show={showConfigModal} {init} />
{#if models !== null}
{#if selectedModelId === null}
@@ -154,17 +152,15 @@
</div>
<div>
<Tooltip content={$i18n.t('This will delete all models including custom models')}>
<Tooltip content={$i18n.t('Configure')}>
<button
class=" px-2.5 py-1 rounded-full flex gap-1 items-center"
type="button"
on:click={() => {
showResetModal = true;
showConfigModal = true;
}}
>
<div class="text-xs flex-shrink-0">
{$i18n.t('Reset')}
</div>
<Cog6 />
</button>
</Tooltip>
</div>
@@ -186,7 +182,7 @@
<div class=" my-2 mb-5" id="model-list">
{#if models.length > 0}
{#each filteredModels as model, modelIdx (`${model.id}-${modelIdx}`)}
{#each filteredModels as model, modelIdx (model.id)}
<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"
id="model-item-{model.id}"
@@ -0,0 +1,263 @@
<script>
import { toast } from 'svelte-sonner';
import { createEventDispatcher, getContext, onMount } from 'svelte';
const i18n = getContext('i18n');
const dispatch = createEventDispatcher();
import { models } from '$lib/stores';
import { deleteAllModels } from '$lib/apis/models';
import Modal from '$lib/components/common/Modal.svelte';
import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte';
import Tooltip from '$lib/components/common/Tooltip.svelte';
import ModelList from './ModelList.svelte';
import { getModelsConfig, setModelsConfig } from '$lib/apis/configs';
import Spinner from '$lib/components/common/Spinner.svelte';
import Minus from '$lib/components/icons/Minus.svelte';
import Plus from '$lib/components/icons/Plus.svelte';
export let show = false;
export let init = () => {};
let config = null;
let selectedModelId = '';
let defaultModelIds = [];
let modelIds = [];
let loading = false;
let showResetModal = false;
const submitHandler = async () => {
loading = true;
const res = await setModelsConfig(localStorage.token, {
DEFAULT_MODELS: defaultModelIds.join(','),
MODEL_ORDER_LIST: modelIds
});
if (res) {
toast.success($i18n.t('Models configuration saved successfully'));
init();
show = false;
} else {
toast.error($i18n.t('Failed to save models configuration'));
}
loading = false;
};
onMount(async () => {
config = await getModelsConfig(localStorage.token);
if (config?.DEFAULT_MODELS) {
defaultModelIds = (config?.DEFAULT_MODELS).split(',').filter((id) => id);
} else {
defaultModelIds = [];
}
const modelOrderList = config.MODEL_ORDER_LIST || [];
const allModelIds = $models.map((model) => model.id);
// Create a Set for quick lookup of ordered IDs
const orderedSet = new Set(modelOrderList);
modelIds = [
// Add all IDs from MODEL_ORDER_LIST that exist in allModelIds
...modelOrderList.filter((id) => orderedSet.has(id) && allModelIds.includes(id)),
// Add remaining IDs not in MODEL_ORDER_LIST, sorted alphabetically
...allModelIds.filter((id) => !orderedSet.has(id)).sort((a, b) => a.localeCompare(b))
];
});
</script>
<ConfirmDialog
title={$i18n.t('Reset All Models')}
message={$i18n.t('This will delete all models including custom models and cannot be undone.')}
bind:show={showResetModal}
onConfirm={async () => {
const res = deleteAllModels(localStorage.token);
if (res) {
toast.success($i18n.t('All models deleted successfully'));
init();
}
}}
/>
<Modal size="sm" bind:show>
<div>
<div class=" flex justify-between dark:text-gray-100 px-5 pt-4 pb-2">
<div class=" text-lg font-medium self-center font-primary">
{$i18n.t('Configure Models')}
</div>
<button
class="self-center"
on:click={() => {
show = false;
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
class="w-5 h-5"
>
<path
d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
/>
</svg>
</button>
</div>
<div class="flex flex-col md:flex-row w-full px-5 pb-4 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">
{#if config}
<form
class="flex flex-col w-full"
on:submit|preventDefault={() => {
submitHandler();
}}
>
<div>
<div class="flex flex-col w-full">
<div class="mb-1 flex justify-between">
<div class="text-xs text-gray-500">{$i18n.t('Reorder Models')}</div>
</div>
<ModelList bind:modelIds />
</div>
</div>
<hr class=" border-gray-100 dark:border-gray-700/10 my-2.5 w-full" />
<div>
<div class="flex flex-col w-full">
<div class="mb-1 flex justify-between">
<div class="text-xs text-gray-500">{$i18n.t('Default Models')}</div>
</div>
{#if defaultModelIds.length > 0}
<div class="flex flex-col">
{#each defaultModelIds as modelId, modelIdx}
<div class=" flex gap-2 w-full justify-between items-center">
<div class=" text-sm flex-1 py-1 rounded-lg">
{$models.find((model) => model.id === modelId)?.name}
</div>
<div class="flex-shrink-0">
<button
type="button"
on:click={() => {
defaultModelIds = defaultModelIds.filter(
(_, idx) => idx !== modelIdx
);
}}
>
<Minus strokeWidth="2" className="size-3.5" />
</button>
</div>
</div>
{/each}
</div>
{:else}
<div class="text-gray-500 text-xs text-center py-2">
{$i18n.t('No models selected')}
</div>
{/if}
<hr class=" border-gray-100 dark:border-gray-700/10 my-2.5 w-full" />
<div class="flex items-center">
<select
class="w-full py-1 text-sm rounded-lg bg-transparent {selectedModelId
? ''
: 'text-gray-500'} placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-none"
bind:value={selectedModelId}
>
<option value="">{$i18n.t('Select a model')}</option>
{#each $models as model}
<option value={model.id} class="bg-gray-50 dark:bg-gray-700"
>{model.name}</option
>
{/each}
</select>
<div>
<button
type="button"
on:click={() => {
if (defaultModelIds.includes(selectedModelId)) {
return;
}
defaultModelIds = [...defaultModelIds, selectedModelId];
selectedModelId = '';
}}
>
<Plus className="size-3.5" strokeWidth="2" />
</button>
</div>
</div>
</div>
</div>
<div class="flex justify-between pt-3 text-sm font-medium gap-1.5">
<Tooltip content={$i18n.t('This will delete all models including custom models')}>
<button
class="px-3.5 py-1.5 text-sm font-medium dark:bg-black dark:hover:bg-gray-950 dark:text-white bg-white text-black hover:bg-gray-100 transition rounded-full flex flex-row space-x-1 items-center"
type="button"
on:click={() => {
showResetModal = true;
}}
>
{$i18n.t('Delete All Models')}
</button>
</Tooltip>
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full flex flex-row space-x-1 items-center {loading
? ' cursor-not-allowed'
: ''}"
type="submit"
disabled={loading}
>
{$i18n.t('Save')}
{#if loading}
<div class="ml-2 self-center">
<svg
class=" w-4 h-4"
viewBox="0 0 24 24"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
><style>
.spinner_ajPY {
transform-origin: center;
animation: spinner_AtaB 0.75s infinite linear;
}
@keyframes spinner_AtaB {
100% {
transform: rotate(360deg);
}
}
</style><path
d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"
opacity=".25"
/><path
d="M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z"
class="spinner_ajPY"
/></svg
>
</div>
{/if}
</button>
</div>
</form>
{:else}
<div>
<Spinner />
</div>
{/if}
</div>
</div>
</div>
</Modal>
@@ -0,0 +1,58 @@
<script lang="ts">
import Sortable from 'sortablejs';
import { createEventDispatcher, getContext, onMount } from 'svelte';
const i18n = getContext('i18n');
import { models } from '$lib/stores';
import Tooltip from '$lib/components/common/Tooltip.svelte';
import EllipsisVertical from '$lib/components/icons/EllipsisVertical.svelte';
export let modelIds = [];
let sortable = null;
let modelListElement = null;
const positionChangeHandler = () => {
const modelList = Array.from(modelListElement.children).map((child) =>
child.id.replace('model-item-', '')
);
modelIds = modelList;
};
onMount(() => {
sortable = Sortable.create(modelListElement, {
animation: 150,
onUpdate: async (event) => {
positionChangeHandler();
}
});
});
</script>
{#if modelIds.length > 0}
<div class="flex flex-col -translate-x-1" bind:this={modelListElement}>
{#each modelIds as modelId, modelIdx (modelId)}
<div class=" flex gap-2 w-full justify-between items-center" id="model-item-{modelId}">
<Tooltip content={modelId} placement="top-start">
<div class="flex items-center gap-1">
<EllipsisVertical className="size-4 cursor-move" />
<div class=" text-sm flex-1 py-1 rounded-lg">
{#if $models.find((model) => model.id === modelId)}
{$models.find((model) => model.id === modelId).name}
{:else}
{modelId}
{/if}
</div>
</div>
</Tooltip>
</div>
{/each}
</div>
{:else}
<div class="text-gray-500 text-xs text-center py-2">
{$i18n.t('No models found')}
</div>
{/if}
+15 -8
View File
@@ -216,7 +216,7 @@
} else {
message.statusHistory = [data];
}
} else if (type === 'source') {
} else if (type === 'source' || type === 'citation') {
if (data?.type === 'code_execution') {
// Code execution; update existing code execution by ID, or add new one.
if (!message?.code_executions) {
@@ -888,11 +888,10 @@
await tick();
// Reset chat input textarea
const chatInputContainer = document.getElementById('chat-input-container');
const chatInputElement = document.getElementById('chat-input');
if (chatInputContainer) {
chatInputContainer.value = '';
chatInputContainer.style.height = '';
if (chatInputElement) {
chatInputElement.style.height = '';
}
const _files = JSON.parse(JSON.stringify(files));
@@ -1977,7 +1976,7 @@
}
);
return title;
return title ? title : (lastUserMessage?.content ?? 'New Chat');
} else {
return lastUserMessage?.content ?? 'New Chat';
}
@@ -2310,7 +2309,11 @@
on:submit={async (e) => {
if (e.detail) {
await tick();
submitPrompt(e.detail.replaceAll('\n\n', '\n'));
submitPrompt(
($settings?.richTextInput ?? true)
? e.detail.replaceAll('\n\n', '\n')
: e.detail
);
}
}}
/>
@@ -2347,7 +2350,11 @@
on:submit={async (e) => {
if (e.detail) {
await tick();
submitPrompt(e.detail.replaceAll('\n\n', '\n'));
submitPrompt(
($settings?.richTextInput ?? true)
? e.detail.replaceAll('\n\n', '\n')
: e.detail
);
}
}}
/>
+58 -46
View File
@@ -592,29 +592,6 @@
placeholder={placeholder ? placeholder : $i18n.t('Send a Message')}
largeTextAsFile={$settings?.largeTextAsFile ?? false}
bind:value={prompt}
on:enter={async (e) => {
const commandsContainerElement =
document.getElementById('commands-container');
if (commandsContainerElement) {
e.preventDefault();
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
if (commandOptionButton) {
commandOptionButton?.click();
return;
}
}
if (prompt !== '') {
dispatch('submit', prompt);
}
}}
on:keypress={(e) => {
e = e.detail.event;
}}
on:keydown={async (e) => {
e = e.detail.event;
@@ -657,34 +634,70 @@
editButton?.click();
}
if (commandsContainerElement && e.key === 'ArrowUp') {
e.preventDefault();
commandsElement.selectUp();
if (commandsContainerElement) {
if (commandsContainerElement && e.key === 'ArrowUp') {
e.preventDefault();
commandsElement.selectUp();
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
commandOptionButton.scrollIntoView({ block: 'center' });
}
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
commandOptionButton.scrollIntoView({ block: 'center' });
}
if (commandsContainerElement && e.key === 'ArrowDown') {
e.preventDefault();
commandsElement.selectDown();
if (commandsContainerElement && e.key === 'ArrowDown') {
e.preventDefault();
commandsElement.selectDown();
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
commandOptionButton.scrollIntoView({ block: 'center' });
}
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
commandOptionButton.scrollIntoView({ block: 'center' });
}
if (commandsContainerElement && e.key === 'Tab') {
e.preventDefault();
if (commandsContainerElement && e.key === 'Tab') {
e.preventDefault();
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
commandOptionButton?.click();
commandOptionButton?.click();
}
if (commandsContainerElement && e.key === 'Enter') {
e.preventDefault();
const commandOptionButton = [
...document.getElementsByClassName('selected-command-option-button')
]?.at(-1);
if (commandOptionButton) {
commandOptionButton?.click();
} else {
document.getElementById('send-message-button')?.click();
}
}
} else {
if (
!$mobile ||
!(
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
navigator.msMaxTouchPoints > 0
)
) {
// Prevent Enter key from creating a new line
// Uses keyCode '13' for Enter key for chinese/japanese keyboards
if (e.keyCode === 13 && !e.shiftKey) {
e.preventDefault();
}
// Submit the prompt when Enter key is pressed
if (prompt !== '' && e.keyCode === 13 && !e.shiftKey) {
dispatch('submit', prompt);
}
}
}
if (e.key === 'Escape') {
@@ -881,7 +894,6 @@
on:input={async (e) => {
e.target.style.height = '';
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
user = null;
}}
on:focus={async (e) => {
e.target.style.height = '';
@@ -38,7 +38,9 @@
};
});
if (mergedDocuments.every((doc) => doc.distance !== undefined)) {
mergedDocuments.sort((a, b) => (a.distance ?? Infinity) - (b.distance ?? Infinity));
mergedDocuments = mergedDocuments.sort(
(a, b) => (b.distance ?? Infinity) - (a.distance ?? Infinity)
);
}
}
</script>
@@ -5,9 +5,7 @@
import Selector from './ModelSelector/Selector.svelte';
import Tooltip from '../common/Tooltip.svelte';
import { setDefaultModels } from '$lib/apis/configs';
import { updateUserSettings } from '$lib/apis/users';
const i18n = getContext('i18n');
export let selectedModels = [''];
@@ -55,6 +55,7 @@
mirostat_tau: null,
top_k: null,
top_p: null,
min_p: null,
stop: null,
tfs_z: null,
num_ctx: null,
@@ -340,6 +341,7 @@
mirostat_tau: params.mirostat_tau !== null ? params.mirostat_tau : undefined,
top_k: params.top_k !== null ? params.top_k : undefined,
top_p: params.top_p !== null ? params.top_p : undefined,
min_p: params.min_p !== null ? params.min_p : undefined,
tfs_z: params.tfs_z !== null ? params.tfs_z : undefined,
num_ctx: params.num_ctx !== null ? params.num_ctx : undefined,
num_batch: params.num_batch !== null ? params.num_batch : undefined,
+3 -3
View File
@@ -6,7 +6,7 @@
export let show = true;
export let size = 'md';
export let className = 'bg-gray-50 dark:bg-gray-900 rounded-2xl';
export let className = 'bg-gray-50 dark:bg-gray-900 rounded-2xl';
let modalElement = null;
let mounted = false;
@@ -65,7 +65,7 @@
<!-- svelte-ignore a11y-no-static-element-interactions -->
<div
bind:this={modalElement}
class="modal fixed top-0 right-0 left-0 bottom-0 bg-black/60 w-full h-screen max-h-[100dvh] flex justify-center z-[9999] overflow-hidden overscroll-contain"
class="modal fixed top-0 right-0 left-0 bottom-0 bg-black/60 w-full h-screen max-h-[100dvh] p-3 flex justify-center z-[9999] overflow-y-auto overscroll-contain"
in:fade={{ duration: 10 }}
on:mousedown={() => {
show = false;
@@ -74,7 +74,7 @@
<div
class=" m-auto max-w-full {sizeToWidth(size)} {size !== 'full'
? 'mx-2'
: ''} shadow-3xl max-h-[100dvh] overflow-y-auto scrollbar-hidden {className}"
: ''} shadow-3xl min-h-fit scrollbar-hidden {className}"
in:flyAndScale
on:mousedown={(e) => {
e.stopPropagation();
+12 -16
View File
@@ -1,7 +1,10 @@
<script lang="ts">
import { marked } from 'marked';
import TurndownService from 'turndown';
const turndownService = new TurndownService();
const turndownService = new TurndownService({
codeBlockStyle: 'fenced'
});
turndownService.escape = (string) => string;
import { onMount, onDestroy } from 'svelte';
import { createEventDispatcher } from 'svelte';
@@ -154,7 +157,11 @@
const newValue = turndownService.turndown(editor.getHTML());
if (value !== newValue) {
value = newValue; // Trigger parent updates
value = newValue;
if (value === '') {
editor.commands.clearContent();
}
}
},
editorProps: {
@@ -164,11 +171,10 @@
eventDispatch('focus', { event });
return false;
},
keypress: (view, event) => {
eventDispatch('keypress', { event });
keyup: (view, event) => {
eventDispatch('keyup', { event });
return false;
},
keydown: (view, event) => {
// Handle Tab Key
if (event.key === 'Tab') {
@@ -210,22 +216,12 @@
// Handle shift + Enter for a line break
if (shiftEnter) {
if (event.key === 'Enter' && event.shiftKey) {
if (event.key === 'Enter' && event.shiftKey && !event.ctrlKey && !event.metaKey) {
editor.commands.setHardBreak(); // Insert a hard break
view.dispatch(view.state.tr.scrollIntoView()); // Move viewport to the cursor
event.preventDefault();
return true;
}
if (event.key === 'Enter') {
eventDispatch('enter', { event });
event.preventDefault();
return true;
}
}
if (event.key === 'Enter') {
eventDispatch('enter', { event });
event.preventDefault();
return true;
}
}
eventDispatch('keydown', { event });
+2 -19
View File
@@ -3,42 +3,25 @@
export let value = '';
export let placeholder = '';
export let rows = 1;
export let required = false;
export let className =
'w-full rounded-lg px-3 py-2 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none resize-none h-full';
let textareaElement;
// Adjust height on mount and after setting the element.
onMount(async () => {
await tick();
if (textareaElement) {
await tick();
setTimeout(adjustHeight, 0);
}
});
$: if (value) {
setTimeout(adjustHeight, 0);
}
const adjustHeight = () => {
if (textareaElement) {
textareaElement.style.height = '';
textareaElement.style.height = `${textareaElement.scrollHeight}px`;
}
};
</script>
<textarea
bind:this={textareaElement}
bind:value
{placeholder}
on:input={adjustHeight}
on:focus={adjustHeight}
class={className}
style="field-sizing: content;"
{rows}
{required}
/>
+14
View File
@@ -115,6 +115,20 @@
</div>
</button>
</Menu>
{:else if $mobile}
<Tooltip content={$i18n.t('Controls')}>
<button
class=" flex cursor-pointer px-2 py-2 rounded-xl hover:bg-gray-50 dark:hover:bg-gray-850 transition"
on:click={async () => {
await showControls.set(!$showControls);
}}
aria-label="Controls"
>
<div class=" m-auto self-center">
<AdjustmentsHorizontal className=" size-5" strokeWidth="0.5" />
</div>
</button>
</Tooltip>
{/if}
{#if !$mobile}
@@ -317,6 +317,7 @@
info.meta.profile_image_url = compressedSrc;
inputFiles = null;
filesInputElement.value = '';
};
};
@@ -345,7 +346,7 @@
<div class="self-center md:self-start flex justify-center my-2 flex-shrink-0">
<div class="self-center">
<button
class="rounded-2xl flex flex-shrink-0 items-center {info.meta.profile_image_url !==
class="rounded-xl flex flex-shrink-0 items-center {info.meta.profile_image_url !==
'/static/favicon.png'
? 'bg-transparent'
: 'bg-white'} shadow-xl group relative"
@@ -358,13 +359,13 @@
<img
src={info.meta.profile_image_url}
alt="model profile"
class="rounded-lg size-72 md:size-60 object-cover shrink-0"
class="rounded-xl size-72 md:size-60 object-cover shrink-0"
/>
{:else}
<img
src="/static/favicon.png"
alt="model profile"
class=" rounded-lg size-72 md:size-60 object-cover shrink-0"
class=" rounded-xl size-72 md:size-60 object-cover shrink-0"
/>
{/if}
@@ -393,6 +394,18 @@
class="absolute top-0 bottom-0 left-0 right-0 bg-white dark:bg-black rounded-lg opacity-0 group-hover:opacity-20 transition"
></div>
</button>
<div class="flex w-full mt-1 justify-end">
<button
class="px-2 py-1 text-gray-500 rounded-lg text-xs"
on:click={() => {
info.meta.profile_image_url = '/static/favicon.png';
}}
type="button"
>
Reset Image</button
>
</div>
</div>
</div>
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "الطلبات المتزامنة",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "تأكيد كلمة المرور",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "(SentenceTransformers) الإفتراضي",
"Default Model": "النموذج الافتراضي",
"Default model updated": "الإفتراضي تحديث الموديل",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "الإفتراضي Prompt الاقتراحات",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "فشل في إنشاء مفتاح API.",
"Failed to read clipboard contents": "فشل في قراءة محتويات الحافظة",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "فبراير",
@@ -570,6 +573,7 @@
"Modelfile Content": "محتوى الملف النموذجي",
"Models": "الموديلات",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "المزيد",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "لا توجد نتايج",
"No search query generated": "لم يتم إنشاء استعلام بحث",
"No source available": "لا يوجد مصدر متاح",
@@ -699,12 +704,14 @@
"Remove": "إزالة",
"Remove Model": "حذف الموديل",
"Rename": "إعادة تسمية",
"Reorder Models": "",
"Repeat Last N": "N كرر آخر",
"Request Mode": "وضع الطلب",
"Reranking Model": "إعادة تقييم النموذج",
"Reranking model disabled": "تم تعطيل نموذج إعادة الترتيب",
"Reranking model set to \"{{reranking_model}}\"": "تم ضبط نموذج إعادة الترتيب على \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Едновременни искания",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Потвърди Парола",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "По подразбиране (SentenceTransformers)",
"Default Model": "Модел по подразбиране",
"Default model updated": "Моделът по подразбиране е обновен",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Промпт Предложения по подразбиране",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Неуспешно създаване на API ключ.",
"Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "Февруари",
@@ -570,6 +573,7 @@
"Modelfile Content": "Съдържание на модфайл",
"Models": "Модели",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Повече",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Няма намерени резултати",
"No search query generated": "Не е генерирана заявка за търсене",
"No source available": "Няма наличен източник",
@@ -699,12 +704,14 @@
"Remove": "Изтриване",
"Remove Model": "Изтриване на модела",
"Rename": "Преименуване",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Request Mode": "Request Mode",
"Reranking Model": "Reranking Model",
"Reranking model disabled": "Reranking model disabled",
"Reranking model set to \"{{reranking_model}}\"": "Reranking model set to \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "সমকালীন অনুরোধ",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "পাসওয়ার্ড নিশ্চিত করুন",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "ডিফল্ট (SentenceTransformers)",
"Default Model": "ডিফল্ট মডেল",
"Default model updated": "ডিফল্ট মডেল আপডেট হয়েছে",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "ডিফল্ট প্রম্পট সাজেশন",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "API Key তৈরি করা যায়নি।",
"Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "ফেব্রুয়ারি",
@@ -570,6 +573,7 @@
"Modelfile Content": "মডেলফাইল কনটেন্ট",
"Models": "মডেলসমূহ",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "আরো",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "কোন ফলাফল পাওয়া যায়নি",
"No search query generated": "কোনও অনুসন্ধান ক্যোয়ারী উত্পন্ন হয়নি",
"No source available": "কোন উৎস পাওয়া যায়নি",
@@ -699,12 +704,14 @@
"Remove": "রিমুভ করুন",
"Remove Model": "মডেল রিমুভ করুন",
"Rename": "রেনেম",
"Reorder Models": "",
"Repeat Last N": "রিপিট Last N",
"Request Mode": "রিকোয়েস্ট মোড",
"Reranking Model": "রির্যাক্টিং মডেল",
"Reranking model disabled": "রির্যাক্টিং মডেল নিষ্ক্রিয় করা",
"Reranking model set to \"{{reranking_model}}\"": "রির ্যাঙ্কিং মডেল \"{{reranking_model}}\" -এ সেট করা আছে",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
+80 -73
View File
@@ -11,9 +11,9 @@
"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",
"About": "Sobre",
"Access": "",
"Access Control": "",
"Accessible to all users": "",
"Access": "Accés",
"Access Control": "Control d'accés",
"Accessible to all users": "Accessible a tots els usuaris",
"Account": "Compte",
"Account Activation Pending": "Activació del compte pendent",
"Accurate information": "Informació precisa",
@@ -30,14 +30,14 @@
"Add content here": "Afegir contingut aquí",
"Add custom prompt": "Afegir una indicació personalitzada",
"Add Files": "Afegir arxius",
"Add Group": "",
"Add Group": "Afegir grup",
"Add Memory": "Afegir memòria",
"Add Model": "Afegir un model",
"Add Tag": "Afegir etiqueta",
"Add Tags": "Afegir etiquetes",
"Add text content": "Afegir contingut de text",
"Add User": "Afegir un usuari",
"Add User Group": "",
"Add User Group": "Afegir grup d'usuaris",
"Adjusting these settings will apply changes universally to all users.": "Si ajustes aquesta preferència, els canvis s'aplicaran de manera universal a tots els usuaris.",
"admin": "administrador",
"Admin": "Administrador",
@@ -48,18 +48,18 @@
"Advanced Params": "Paràmetres avançats",
"All chats": "Tots els xats",
"All Documents": "Tots els documents",
"All models deleted successfully": "",
"Allow Chat Delete": "",
"All models deleted successfully": "Tots els models s'han eliminat correctament",
"Allow Chat Delete": "Permetre eliminar el xat",
"Allow Chat Deletion": "Permetre la supressió del xat",
"Allow Chat Edit": "",
"Allow File Upload": "",
"Allow Chat Edit": "Permetre editar el xat",
"Allow File Upload": "Permetre la pujada d'arxius",
"Allow non-local voices": "Permetre veus no locals",
"Allow Temporary Chat": "Permetre el xat temporal",
"Allow User Location": "Permetre la ubicació de l'usuari",
"Allow Voice Interruption in Call": "Permetre la interrupció de la veu en una trucada",
"Already have an account?": "Ja tens un compte?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa al top_p, i pretén garantir un equilibri de qualitat i varietat. El paràmetre p representa la probabilitat mínima que es consideri un token, en relació amb la probabilitat del token més probable. Per exemple, amb p=0,05 i el token més probable amb una probabilitat de 0,9, es filtren els logits amb un valor inferior a 0,045. (Per defecte: 0.0)",
"Amazing": "",
"Amazing": "Al·lucinant",
"an assistant": "un assistent",
"and": "i",
"and {{COUNT}} more": "i {{COUNT}} més",
@@ -70,7 +70,7 @@
"API keys": "Claus de l'API",
"Application DN": "DN d'aplicació",
"Application DN Password": "Contrasenya del DN d'aplicació",
"applies to all users with the \"user\" role": "",
"applies to all users with the \"user\" role": "s'aplica a tots els usuaris amb el rol \"usuari\"",
"April": "Abril",
"Archive": "Arxiu",
"Archive All Chats": "Arxiva tots els xats",
@@ -96,7 +96,7 @@
"AUTOMATIC1111 Base URL is required.": "Es requereix l'URL Base d'AUTOMATIC1111.",
"Available list": "Llista de disponibles",
"available!": "disponible!",
"Awful": "",
"Awful": "Terrible",
"Azure AI Speech": "Azure AI Speech",
"Azure Region": "Regió d'Azure",
"Back": "Enrere",
@@ -109,7 +109,7 @@
"Bing Search V7 Endpoint": "Punt de connexió a Bing Search V7",
"Bing Search V7 Subscription Key": "Clau de subscripció a Bing Search V7",
"Brave Search API Key": "Clau API de Brave Search",
"By {{name}}": "",
"By {{name}}": "Per {{name}}",
"Bypass SSL verification for Websites": "Desactivar la verificació SSL per a l'accés a Internet",
"Call": "Trucada",
"Call feature is not supported when using Web STT engine": "La funció de trucada no s'admet quan s'utilitza el motor Web STT",
@@ -126,7 +126,7 @@
"Chat Controls": "Controls de xat",
"Chat direction": "Direcció del xat",
"Chat Overview": "Vista general del xat",
"Chat Permissions": "",
"Chat Permissions": "Permisos del xat",
"Chat Tags Auto-Generation": "Generació automàtica d'etiquetes del xat",
"Chats": "Xats",
"Check Again": "Comprovar-ho de nou",
@@ -157,7 +157,7 @@
"Code execution": "Execució de codi",
"Code formatted successfully": "Codi formatat correctament",
"Collection": "Col·lecció",
"Color": "",
"Color": "Color",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL": "URL base de ComfyUI",
"ComfyUI Base URL is required.": "L'URL base de ComfyUI és obligatòria.",
@@ -167,6 +167,7 @@
"Completions": "Completaments",
"Concurrent Requests": "Peticions simultànies",
"Configure": "Configurar",
"Configure Models": "",
"Confirm": "Confirmar",
"Confirm Password": "Confirmar la contrasenya",
"Confirm your action": "Confirma la teva acció",
@@ -191,12 +192,12 @@
"Copy Link": "Copiar l'enllaç",
"Copy to clipboard": "Copiar al porta-retalls",
"Copying to clipboard was successful!": "La còpia al porta-retalls s'ha realitzat correctament",
"Create": "",
"Create": "Crear",
"Create a knowledge base": "Crear una base de coneixement",
"Create a model": "Crear un model",
"Create Account": "Crear un compte",
"Create Admin Account": "Crear un compte d'Administrador",
"Create Group": "",
"Create Group": "Crear grup",
"Create Knowledge": "Crear Coneixement",
"Create new key": "Crear una nova clau",
"Create new secret key": "Crear una nova clau secreta",
@@ -215,8 +216,9 @@
"Default (SentenceTransformers)": "Per defecte (SentenceTransformers)",
"Default Model": "Model per defecte",
"Default model updated": "Model per defecte actualitzat",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Models": "",
"Default permissions": "Permisos per defecte",
"Default permissions updated successfully": "Permisos per defecte actualitzats correctament",
"Default Prompt Suggestions": "Suggeriments d'indicació per defecte",
"Default to 389 or 636 if TLS is enabled": "Per defecte 389 o 636 si TLS està habilitat",
"Default to ALL": "Per defecte TOTS",
@@ -224,7 +226,7 @@
"Delete": "Eliminar",
"Delete a model": "Eliminar un model",
"Delete All Chats": "Eliminar tots els xats",
"Delete All Models": "",
"Delete All Models": "Eliminar tots els models",
"Delete chat": "Eliminar xat",
"Delete Chat": "Eliminar xat",
"Delete chat?": "Eliminar el xat?",
@@ -236,7 +238,7 @@
"Delete User": "Eliminar usuari",
"Deleted {{deleteModelTag}}": "S'ha eliminat {{deleteModelTag}}",
"Deleted {{name}}": "S'ha eliminat {{name}}",
"Deleted User": "",
"Deleted User": "Usuari eliminat",
"Describe your knowledge base and objectives": "Descriu la teva base de coneixement i objectius",
"Description": "Descripció",
"Didn't fully follow instructions": "No s'han seguit les instruccions completament",
@@ -251,10 +253,10 @@
"Discover, download, and explore custom tools": "Descobrir, descarregar i explorar eines personalitzades",
"Discover, download, and explore model presets": "Descobrir, descarregar i explorar models preconfigurats",
"Dismissible": "Descartable",
"Display": "",
"Display": "Mostrar",
"Display Emoji in Call": "Mostrar emojis a la trucada",
"Display the username instead of You in the Chat": "Mostrar el nom d'usuari en lloc de 'Tu' al xat",
"Displays citations in the response": "",
"Displays citations in the response": "Mostra les referències a la resposta",
"Dive into knowledge": "Aprofundir en el coneixement",
"Do not install functions from sources you do not fully trust.": "No instal·lis funcions de fonts en què no confiïs plenament.",
"Do not install tools from sources you do not fully trust.": "No instal·lis eines de fonts en què no confiïs plenament.",
@@ -270,23 +272,23 @@
"Download": "Descarregar",
"Download canceled": "Descàrrega cancel·lada",
"Download Database": "Descarregar la base de dades",
"Drag and drop a file to upload or select a file to view": "",
"Drag and drop a file to upload or select a file to view": "Arrossegar un arxiu per pujar o escull un arxiu a veure",
"Draw": "Dibuixar",
"Drop any files here to add to the conversation": "Deixa qualsevol arxiu aquí per afegir-lo a la conversa",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p. ex. '30s','10m'. Les unitats de temps vàlides són 's', 'm', 'h'.",
"e.g. A filter to remove profanity from text": "p. ex. Un filtre per eliminar paraules malsonants del text",
"e.g. My Filter": "p. ex. El meu filtre",
"e.g. My Tools": "",
"e.g. My Tools": "p. ex. Les meves eines",
"e.g. my_filter": "p. ex. els_meus_filtres",
"e.g. my_tools": "",
"e.g. Tools for performing various operations": "",
"e.g. my_tools": "p. ex. les_meves_eines",
"e.g. Tools for performing various operations": "p. ex. Eines per dur a terme operacions",
"Edit": "Editar",
"Edit Arena Model": "Editar model de l'Arena",
"Edit Connection": "Editar la connexió",
"Edit Default Permissions": "",
"Edit Default Permissions": "Editar el permisos per defecte",
"Edit Memory": "Editar la memòria",
"Edit User": "Editar l'usuari",
"Edit User Group": "",
"Edit User Group": "Editar el grup d'usuaris",
"ElevenLabs": "ElevenLabs",
"Email": "Correu electrònic",
"Embark on adventures": "Embarcar en aventures",
@@ -294,14 +296,14 @@
"Embedding Model": "Model d'incrustació",
"Embedding Model Engine": "Motor de model d'incrustació",
"Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key Auth": "Activar l'autenticació amb clau API",
"Enable Community Sharing": "Activar l'ús compartit amb la comunitat",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activar el bloqueig de memòria (mlock) per evitar que les dades del model s'intercanviïn fora de la memòria RAM. Aquesta opció bloqueja el conjunt de pàgines de treball del model a la memòria RAM, assegurant-se que no s'intercanviaran al disc. Això pot ajudar a mantenir el rendiment evitant errors de pàgina i garantint un accés ràpid a les dades.",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Activar l'assignació de memòria (mmap) per carregar les dades del model. Aquesta opció permet que el sistema utilitzi l'emmagatzematge en disc com a extensió de la memòria RAM tractant els fitxers de disc com si estiguessin a la memòria RAM. Això pot millorar el rendiment del model permetent un accés més ràpid a les dades. Tanmateix, és possible que no funcioni correctament amb tots els sistemes i pot consumir una quantitat important d'espai en disc.",
"Enable Message Rating": "Permetre la qualificació de missatges",
"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "Activar el mostreig de Mirostat per controlar la perplexitat. (Per defecte: 0, 0 = Inhabilitat, 1 = Mirostat, 2 = Mirostat 2.0)",
"Enable New Sign Ups": "Permetre nous registres",
"Enable Retrieval Query Generation": "",
"Enable Retrieval Query Generation": "Activar la Retrieval Query Generation",
"Enable Tags Generation": "Activar la generació d'etiquetes",
"Enable Web Search": "Activar la cerca web",
"Enable Web Search Query Generation": "Activa la generació de consultes de cerca web",
@@ -329,7 +331,7 @@
"Enter language codes": "Introdueix els codis de llenguatge",
"Enter Model ID": "Introdueix l'identificador del model",
"Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})",
"Enter Mojeek Search API Key": "",
"Enter Mojeek Search API Key": "Introdueix la clau API de Mojeek Search",
"Enter Number of Steps (e.g. 50)": "Introdueix el nombre de passos (p. ex. 50)",
"Enter Sampler (e.g. Euler a)": "Introdueix el mostrejador (p.ex. Euler a)",
"Enter Scheduler (e.g. Karras)": "Entra el programador (p.ex. Karras)",
@@ -375,7 +377,7 @@
"Export Config to JSON File": "Exportar la configuració a un arxiu JSON",
"Export Functions": "Exportar funcions",
"Export Models": "Exportar els models",
"Export Presets": "",
"Export Presets": "Exportar les configuracions",
"Export Prompts": "Exportar les indicacions",
"Export to CSV": "Exportar a CSV",
"Export Tools": "Exportar les eines",
@@ -383,6 +385,7 @@
"Failed to add file.": "No s'ha pogut afegir l'arxiu.",
"Failed to create API Key.": "No s'ha pogut crear la clau API.",
"Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls",
"Failed to save models configuration": "",
"Failed to update settings": "No s'han pogut actualitzar les preferències",
"Failed to upload file.": "No s'ha pogut pujar l'arxiu.",
"February": "Febrer",
@@ -436,11 +439,11 @@
"Good Response": "Bona resposta",
"Google PSE API Key": "Clau API PSE de Google",
"Google PSE Engine Id": "Identificador del motor PSE de Google",
"Group created successfully": "",
"Group deleted successfully": "",
"Group Description": "",
"Group Name": "",
"Group updated successfully": "",
"Group created successfully": "El grup s'ha creat correctament",
"Group deleted successfully": "El grup s'ha eliminat correctament",
"Group Description": "Descripció del grup",
"Group Name": "Nom del grup",
"Group updated successfully": "Grup actualitzat correctament",
"Groups": "Grups",
"h:mm a": "h:mm a",
"Haptic Feedback": "Retorn hàptic",
@@ -448,12 +451,12 @@
"Hello, {{name}}": "Hola, {{name}}",
"Help": "Ajuda",
"Help us create the best community leaderboard by sharing your feedback history!": "Ajuda'ns a crear la millor taula de classificació de la comunitat compartint el teu historial de comentaris!",
"Hex Color": "",
"Hex Color - Leave empty for default color": "",
"Hex Color": "Color hexadecimal",
"Hex Color - Leave empty for default color": "Color hexadecimal - Deixar buit per a color per defecte",
"Hide": "Amaga",
"Host": "Servidor",
"How can I help you today?": "Com et puc ajudar avui?",
"How would you rate this response?": "",
"How would you rate this response?": "Com avaluaries aquesta resposta?",
"Hybrid Search": "Cerca 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.": "Afirmo que he llegit i entenc les implicacions de la meva acció. Soc conscient dels riscos associats a l'execució de codi arbitrari i he verificat la fiabilitat de la font.",
"ID": "ID",
@@ -466,7 +469,7 @@
"Import Config from JSON File": "Importar la configuració des d'un arxiu JSON",
"Import Functions": "Importar funcions",
"Import Models": "Importar models",
"Import Presets": "",
"Import Presets": "Importar configuracions",
"Import Prompts": "Importar indicacions",
"Import Tools": "Importar eines",
"Include": "Incloure",
@@ -493,7 +496,7 @@
"Key": "Clau",
"Keyboard shortcuts": "Dreceres de teclat",
"Knowledge": "Coneixement",
"Knowledge Access": "",
"Knowledge Access": "Accés al coneixement",
"Knowledge created successfully.": "Coneixement creat correctament.",
"Knowledge deleted successfully.": "Coneixement eliminat correctament.",
"Knowledge reset successfully.": "Coneixement restablert correctament.",
@@ -523,7 +526,7 @@
"Make sure to export a workflow.json file as API format from ComfyUI.": "Assegura't d'exportar un fitxer workflow.json com a format API des de ComfyUI.",
"Manage": "Gestionar",
"Manage Arena Models": "Gestionar els models de l'Arena",
"Manage Ollama": "",
"Manage Ollama": "Gestionar Ollama",
"Manage Ollama API Connections": "Gestionar les connexions a l'API d'Ollama",
"Manage OpenAI API Connections": "Gestionar les connexions a l'API d'OpenAI",
"Manage Pipelines": "Gestionar les Pipelines",
@@ -559,18 +562,19 @@
"Model accepts image inputs": "El model accepta entrades d'imatge",
"Model created successfully!": "Model creat correctament",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "S'ha detectat el camí del sistema de fitxers del model. És necessari un nom curt del model per actualitzar, no es pot continuar.",
"Model Filtering": "",
"Model Filtering": "Filtrat de models",
"Model ID": "Identificador del model",
"Model IDs": "Identificadors del model",
"Model Name": "Nom del model",
"Model not selected": "Model no seleccionat",
"Model Params": "Paràmetres del model",
"Model Permissions": "",
"Model Permissions": "Permisos dels models",
"Model updated successfully": "Model actualitzat correctament",
"Modelfile Content": "Contingut del Modelfile",
"Models": "Models",
"Models Access": "",
"Mojeek Search API Key": "",
"Models Access": "Accés als models",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "Clau API de Mojeek Search",
"more": "més",
"More": "Més",
"Name": "Nom",
@@ -584,15 +588,16 @@
"No feedbacks found": "No s'han trobat comentaris",
"No file selected": "No s'ha escollit cap fitxer",
"No files found.": "No s'han trobat arxius.",
"No groups with access, add a group to grant access": "",
"No groups with access, add a group to grant access": "No hi ha cap grup amb accés, afegeix un grup per concedir accés",
"No HTML, CSS, or JavaScript content found.": "No s'ha trobat contingut HTML, CSS o JavaScript.",
"No knowledge found": "No s'ha trobat Coneixement",
"No model IDs": "",
"No model IDs": "No hi ha IDs de model",
"No models found": "No s'han trobat models",
"No models selected": "",
"No results found": "No s'han trobat resultats",
"No search query generated": "No s'ha generat cap consulta",
"No source available": "Sense font disponible",
"No users were found.": "",
"No users were found.": "No s'han trobat usuaris",
"No valves to update": "No hi ha cap Valve per actualitzar",
"None": "Cap",
"Not factually correct": "No és clarament correcte",
@@ -617,7 +622,7 @@
"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 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 select users and groups with permission can access": "",
"Only select users and groups with permission can access": "Només hi poden accedir usuaris i grups seleccionats amb permís",
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ui! Sembla que l'URL no és vàlida. Si us plau, revisa-la i torna-ho a provar.",
"Oops! There are files still uploading. Please wait for the upload to complete.": "Ui! Encara hi ha fitxers pujant-se. Si us plau, espera que finalitzi la càrrega.",
"Oops! There was an error in the previous response.": "Ui! Hi ha hagut un error a la resposta anterior.",
@@ -635,21 +640,21 @@
"OpenAI API settings updated": "Configuració de l'API d'OpenAI actualitzada",
"OpenAI URL/Key required.": "URL/Clau d'OpenAI requerides.",
"or": "o",
"Organize your users": "",
"Organize your users": "Organitza els teus usuaris",
"Other": "Altres",
"OUTPUT": "SORTIDA",
"Output format": "Format de sortida",
"Overview": "Vista general",
"page": "pàgina",
"Password": "Contrasenya",
"Paste Large Text as File": "",
"Paste Large Text as File": "Enganxa un text llarg com a fitxer",
"PDF document (.pdf)": "Document PDF (.pdf)",
"PDF Extract Images (OCR)": "Extreu imatges del PDF (OCR)",
"pending": "pendent",
"Permission denied when accessing media devices": "Permís denegat en accedir a dispositius multimèdia",
"Permission denied when accessing microphone": "Permís denegat en accedir al micròfon",
"Permission denied when accessing microphone: {{error}}": "Permís denegat en accedir al micròfon: {{error}}",
"Permissions": "",
"Permissions": "Permisos",
"Personalization": "Personalització",
"Pin": "Fixar",
"Pinned": "Fixat",
@@ -674,14 +679,14 @@
"Profile Image": "Imatge de perfil",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Indicació (p.ex. Digues-me quelcom divertit sobre l'Imperi Romà)",
"Prompt Content": "Contingut de la indicació",
"Prompt created successfully": "",
"Prompt created successfully": "Indicació creada correctament",
"Prompt suggestions": "Suggeriments d'indicacions",
"Prompt updated successfully": "",
"Prompt updated successfully": "Indicació actualitzada correctament",
"Prompts": "Indicacions",
"Prompts Access": "",
"Prompts Access": "Accés a les indicacions",
"Pull \"{{searchValue}}\" from Ollama.com": "Obtenir \"{{searchValue}}\" de Ollama.com",
"Pull a model from Ollama.com": "Obtenir un model d'Ollama.com",
"Query Generation Prompt": "",
"Query Generation Prompt": "Indicació per a generació de consulta",
"Query Params": "Paràmetres de consulta",
"RAG Template": "Plantilla RAG",
"Rating": "Valoració",
@@ -699,12 +704,14 @@
"Remove": "Eliminar",
"Remove Model": "Eliminar el model",
"Rename": "Canviar el nom",
"Reorder Models": "",
"Repeat Last N": "Repeteix els darrers N",
"Request Mode": "Mode de sol·licitud",
"Reranking Model": "Model de reavaluació",
"Reranking model disabled": "Model de reavaluació desactivat",
"Reranking model set to \"{{reranking_model}}\"": "Model de reavaluació establert a \"{{reranking_model}}\"",
"Reset": "Restableix",
"Reset All Models": "",
"Reset Upload Directory": "Restableix el directori de pujades",
"Reset Vector Storage/Knowledge": "Restableix el Repositori de vectors/Coneixement",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de resposta no es poden activar perquè els permisos del lloc web han estat rebutjats. Comprova les preferències del navegador per donar l'accés necessari.",
@@ -755,7 +762,7 @@
"Select a base model": "Seleccionar un model base",
"Select a engine": "Seleccionar un motor",
"Select a function": "Seleccionar una funció",
"Select a group": "",
"Select a group": "Seleccionar un grup",
"Select a model": "Seleccionar un model",
"Select a pipeline": "Seleccionar una Pipeline",
"Select a pipeline url": "Seleccionar l'URL d'una Pipeline",
@@ -778,7 +785,7 @@
"Set as default": "Establir com a predeterminat",
"Set CFG Scale": "Establir l'escala CFG",
"Set Default Model": "Establir el model predeterminat",
"Set embedding model": "",
"Set embedding model": "Establir el model d'incrustació",
"Set embedding model (e.g. {{model}})": "Establir el model d'incrustació (p.ex. {{model}})",
"Set Image Size": "Establir la mida de la image",
"Set reranking model (e.g. {{model}})": "Establir el model de reavaluació (p.ex. {{model}})",
@@ -866,8 +873,8 @@
"This response was generated by \"{{model}}\"": "Aquesta resposta l'ha generat el model \"{{model}}\"",
"This will delete": "Això eliminarà",
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Això eliminarà <strong>{{NAME}}</strong> i <strong>tots els continguts</strong>.",
"This will delete all models including custom models": "",
"This will delete all models including custom models and cannot be undone.": "",
"This will delete all models including custom models": "Això eliminarà tots els models incloent els personalitzats",
"This will delete all models including custom models and cannot be undone.": "Això eliminarà tots els models incloent els personalitzats i no es pot desfer",
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Això restablirà la base de coneixement i sincronitzarà tots els fitxers. Vols continuar?",
"Thorough explanation": "Explicació en detall",
"Tika": "Tika",
@@ -897,13 +904,13 @@
"Too verbose": "Massa explicit",
"Tool created successfully": "Eina creada correctament",
"Tool deleted successfully": "Eina eliminada correctament",
"Tool Description": "",
"Tool ID": "",
"Tool Description": "Descripció de l'eina",
"Tool ID": "ID de l'eina",
"Tool imported successfully": "Eina importada correctament",
"Tool Name": "",
"Tool Name": "Nom de l'eina",
"Tool updated successfully": "Eina actualitzada correctament",
"Tools": "Eines",
"Tools Access": "",
"Tools Access": "Accés a les eines",
"Tools are a function calling system with arbitrary code execution": "Les eines són un sistema de crida a funcions amb execució de codi arbitrari",
"Tools have a function calling system that allows arbitrary code execution": "Les eines disposen d'un sistema de crida a funcions que permet execució de codi arbitrari",
"Tools have a function calling system that allows arbitrary code execution.": "Les eines disposen d'un sistema de crida a funcions que permet execució de codi arbitrari.",
@@ -943,7 +950,7 @@
"URL Mode": "Mode URL",
"Use '#' in the prompt input to load and include your knowledge.": "Utilitza '#' a l'entrada de la indicació per carregar i incloure els teus coneixements.",
"Use Gravatar": "Utilitzar Gravatar",
"Use groups to group your users and assign permissions.": "",
"Use groups to group your users and assign permissions.": "Utilitza grups per agrupar els usuaris i assignar permisos.",
"Use Initials": "Utilitzar inicials",
"use_mlock (Ollama)": "use_mlock (Ollama)",
"use_mmap (Ollama)": "use_mmap (Ollama)",
@@ -962,12 +969,12 @@
"variable to have them replaced with clipboard content.": "variable per tenir-les reemplaçades amb el contingut del porta-retalls.",
"Version": "Versió",
"Version {{selectedVersion}} of {{totalVersions}}": "Versió {{selectedVersion}} de {{totalVersions}}",
"Visibility": "",
"Visibility": "Visibilitat",
"Voice": "Veu",
"Voice Input": "Entrada de veu",
"Warning": "Avís",
"Warning:": "Avís:",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Avís: Habilitar això permetrà als usuaris penjar codi arbitrari al servidor.",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Avís: Si s'actualitza o es canvia el model d'incrustació, s'hauran de tornar a importar tots els documents.",
"Web": "Web",
"Web API": "Web API",
@@ -984,12 +991,12 @@
"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "Quan està activat, el model respondrà a cada missatge de xat en temps real, generant una resposta tan bon punt l'usuari envia un missatge. Aquest mode és útil per a aplicacions de xat en directe, però pot afectar el rendiment en maquinari més lent.",
"wherever you are": "allà on estiguis",
"Whisper (Local)": "Whisper (local)",
"Why?": "",
"Why?": "Per què?",
"Widescreen Mode": "Mode de pantalla ampla",
"Won": "Ha guanyat",
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "Funciona juntament amb top-k. Un valor més alt (p. ex., 0,95) donarà lloc a un text més divers, mentre que un valor més baix (p. ex., 0,5) generarà un text més concentrat i conservador. (Per defecte: 0,9)",
"Workspace": "Espai de treball",
"Workspace Permissions": "",
"Workspace Permissions": "Permisos de l'espai de treball",
"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 something...": "Escriu quelcom...",
@@ -999,7 +1006,7 @@
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Només pots xatejar amb un màxim de {{maxCount}} fitxers alhora.",
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Pots personalitzar les teves interaccions amb els models de llenguatge afegint memòries mitjançant el botó 'Gestiona' que hi ha a continuació, fent-les més útils i adaptades a tu.",
"You cannot upload an empty file.": "No es pot pujar un ariux buit.",
"You do not have permission to upload files.": "",
"You do not have permission to upload files.": "No tens permisos per pujar arxius.",
"You have no archived conversations.": "No tens converses arxivades.",
"You have shared this chat": "Has compartit aquest xat",
"You're a helpful assistant.": "Ets un assistent útil.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Kumpirma ang password",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "",
"Default Model": "",
"Default model updated": "Gi-update nga default template",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Default nga prompt nga mga sugyot",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "",
"Failed to read clipboard contents": "Napakyas sa pagbasa sa sulod sa clipboard",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "",
@@ -570,6 +573,7 @@
"Modelfile Content": "Mga sulod sa template file",
"Models": "Mga modelo",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "",
"No search query generated": "",
"No source available": "Walay tinubdan nga anaa",
@@ -699,12 +704,14 @@
"Remove": "",
"Remove Model": "",
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "Balika ang katapusang N",
"Request Mode": "Query mode",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "Doplnění",
"Concurrent Requests": "Současné požadavky",
"Configure": "",
"Configure Models": "",
"Confirm": "Potvrdit",
"Confirm Password": "Potvrzení hesla",
"Confirm your action": "Potvrďte svoji akci",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Výchozí (SentenceTransformers)",
"Default Model": "Výchozí model",
"Default model updated": "Výchozí model aktualizován.",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Výchozí návrhy promptů",
@@ -383,6 +385,7 @@
"Failed to add file.": "Nepodařilo se přidat soubor.",
"Failed to create API Key.": "Nepodařilo se vytvořit API klíč.",
"Failed to read clipboard contents": "Nepodařilo se přečíst obsah schránky",
"Failed to save models configuration": "",
"Failed to update settings": "Nepodařilo se aktualizovat nastavení",
"Failed to upload file.": "Nepodařilo se nahrát soubor.",
"February": "Únor",
@@ -570,6 +573,7 @@
"Modelfile Content": "Obsah souboru modelfile",
"Models": "Modely",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "více",
"More": "Více",
@@ -589,6 +593,7 @@
"No knowledge found": "Nebyly nalezeny žádné znalosti",
"No model IDs": "",
"No models found": "Nebyly nalezeny žádné modely",
"No models selected": "",
"No results found": "Nebyly nalezeny žádné výsledky",
"No search query generated": "Nebyl vygenerován žádný vyhledávací dotaz.",
"No source available": "Není k dispozici žádný zdroj.",
@@ -699,12 +704,14 @@
"Remove": "Odebrat",
"Remove Model": "Odebrat model",
"Rename": "Přejmenovat",
"Reorder Models": "",
"Repeat Last N": "Opakovat posledních N",
"Request Mode": "Režim žádosti",
"Reranking Model": "Model pro přehodnocení pořadí",
"Reranking model disabled": "Přeřazovací model je deaktivován",
"Reranking model set to \"{{reranking_model}}\"": "Model pro přeřazení nastaven na \"{{reranking_model}}\"",
"Reset": "režim Reset",
"Reset All Models": "",
"Reset Upload Directory": "Resetovat adresář nahrávání",
"Reset Vector Storage/Knowledge": "Resetování úložiště vektorů/znalostí",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Oznámení o odpovědích nelze aktivovat, protože oprávnění webu byla zamítnuta. Navštivte nastavení svého prohlížeče a udělte potřebný přístup.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Concurrent requests",
"Configure": "",
"Configure Models": "",
"Confirm": "Bekræft",
"Confirm Password": "Bekræft password",
"Confirm your action": "Bekræft din handling",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
"Default Model": "Standard model",
"Default model updated": "Standard model opdateret",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Standardforslag til prompt",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Kunne ikke oprette API-nøgle.",
"Failed to read clipboard contents": "Kunne ikke læse indholdet af udklipsholderen",
"Failed to save models configuration": "",
"Failed to update settings": "Kunne ikke opdatere indstillinger",
"Failed to upload file.": "Kunne ikke uploade fil.",
"February": "Februar",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modelfilindhold",
"Models": "Modeller",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Mere",
@@ -589,6 +593,7 @@
"No knowledge found": "Ingen viden fundet",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Ingen resultater fundet",
"No search query generated": "Ingen søgeforespørgsel genereret",
"No source available": "Ingen kilde tilgængelig",
@@ -699,12 +704,14 @@
"Remove": "Fjern",
"Remove Model": "Fjern model",
"Rename": "Omdøb",
"Reorder Models": "",
"Repeat Last N": "Gentag sidste N",
"Request Mode": "Forespørgselstilstand",
"Reranking Model": "Omarrangeringsmodel",
"Reranking model disabled": "Omarrangeringsmodel deaktiveret",
"Reranking model set to \"{{reranking_model}}\"": "Omarrangeringsmodel sat til \"{{reranking_model}}\"",
"Reset": "Nulstil",
"Reset All Models": "",
"Reset Upload Directory": "Nulstil uploadmappe",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Svarnotifikationer kan ikke aktiveres, da webstedets tilladelser er blevet nægtet. Besøg dine browserindstillinger for at give den nødvendige adgang.",
+208 -201
View File
@@ -11,33 +11,33 @@
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Aufgabenmodelle können Unterhaltungstitel oder Websuchanfragen generieren.",
"a user": "ein Benutzer",
"About": "Über",
"Access": "",
"Access Control": "",
"Accessible to all users": "",
"Access": "Zugang",
"Access Control": "Zugangskontrolle",
"Accessible to all users": "Für alle Benutzer zugänglich",
"Account": "Konto",
"Account Activation Pending": "Kontoaktivierung ausstehend",
"Accurate information": "Präzise Information(en)",
"Actions": "Aktionen",
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "",
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktivieren Sie diesen Befehl, indem Sie \"/{{COMMAND}}\" in die Chat-Eingabe eingeben.",
"Active Users": "Aktive Benutzer",
"Add": "Hinzufügen",
"Add a model ID": "",
"Add a model ID": "Modell-ID hinzufügen",
"Add a short description about what this model does": "Fügen Sie eine kurze Beschreibung über dieses Modell hinzu",
"Add a tag": "Tag hinzufügen",
"Add Arena Model": "Arena-Modell hinzufügen",
"Add Connection": "",
"Add Connection": "Verbindung hinzufügen",
"Add Content": "Inhalt hinzufügen",
"Add content here": "Inhalt hier hinzufügen",
"Add custom prompt": "Benutzerdefinierten Prompt hinzufügen",
"Add Files": "Dateien hinzufügen",
"Add Group": "",
"Add Group": "Gruppe hinzufügen",
"Add Memory": "Erinnerung hinzufügen",
"Add Model": "Modell hinzufügen",
"Add Tag": "Tag hinzufügen",
"Add Tags": "Tags hinzufügen",
"Add text content": "Textinhalt hinzufügen",
"Add User": "Benutzer hinzufügen",
"Add User Group": "",
"Add User Group": "Benutzergruppe hinzufügen",
"Adjusting these settings will apply changes universally to all users.": "Das Anpassen dieser Einstellungen wird Änderungen universell auf alle Benutzer anwenden.",
"admin": "Administrator",
"Admin": "Administrator",
@@ -48,18 +48,18 @@
"Advanced Params": "Erweiterte Parameter",
"All chats": "Alle Unterhaltungen",
"All Documents": "Alle Dokumente",
"All models deleted successfully": "",
"Allow Chat Delete": "",
"All models deleted successfully": "Alle Modelle erfolgreich gelöscht",
"Allow Chat Delete": "Löschen von Unterhaltungen erlauben",
"Allow Chat Deletion": "Löschen von Unterhaltungen erlauben",
"Allow Chat Edit": "",
"Allow File Upload": "",
"Allow Chat Edit": "Bearbeiten von Unterhaltungen erlauben",
"Allow File Upload": "Hochladen von Dateien erlauben",
"Allow non-local voices": "Nicht-lokale Stimmen erlauben",
"Allow Temporary Chat": "Temporäre Unterhaltungen erlauben",
"Allow User Location": "Standort freigeben",
"Allow Voice Interruption in Call": "Unterbrechung durch Stimme im Anruf zulassen",
"Already have an account?": "Haben Sie bereits einen Account?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternative zu top_p und zielt darauf ab, ein Gleichgewicht zwischen Qualität und Vielfalt zu gewährleisten. Der Parameter p repräsentiert die Mindestwahrscheinlichkeit für ein Token, um berücksichtigt zu werden, relativ zur Wahrscheinlichkeit des wahrscheinlichsten Tokens. Zum Beispiel, bei p=0.05 und das wahrscheinlichste Token hat eine Wahrscheinlichkeit von 0.9, werden Logits mit einem Wert von weniger als 0.045 herausgefiltert. (Standard: 0.0)",
"Amazing": "Fantastisch",
"an assistant": "ein Assistent",
"and": "und",
"and {{COUNT}} more": "und {{COUNT}} mehr",
@@ -68,15 +68,15 @@
"API Key": "API-Schlüssel",
"API Key created.": "API-Schlüssel erstellt.",
"API keys": "API-Schlüssel",
"Application DN": "",
"Application DN Password": "",
"applies to all users with the \"user\" role": "",
"Application DN": "Anwendungs-DN",
"Application DN Password": "Anwendungs-DN-Passwort",
"applies to all users with the \"user\" role": "gilt für alle Benutzer mit der Rolle \"Benutzer\"",
"April": "April",
"Archive": "Archivieren",
"Archive All Chats": "Alle Unterhaltungen archivieren",
"Archived Chats": "Archivierte Unterhaltungen",
"archived-chat-export": "",
"Are you sure you want to unarchive all archived chats?": "",
"archived-chat-export": "archivierter-chat-export",
"Are you sure you want to unarchive all archived chats?": "Sind Sie sicher, dass Sie alle archivierten Unterhaltungen wiederherstellen möchten?",
"Are you sure?": "Sind Sie sicher?",
"Arena Models": "Arena-Modelle",
"Artifacts": "Artefakte",
@@ -84,10 +84,10 @@
"Assistant": "Assistent",
"Attach file": "Datei anhängen",
"Attention to detail": "Aufmerksamkeit für Details",
"Attribute for Username": "",
"Attribute for Username": "Attribut für Benutzername",
"Audio": "Audio",
"August": "August",
"Authenticate": "",
"Authenticate": "Authentifizieren",
"Auto-Copy Response to Clipboard": "Antwort automatisch in die Zwischenablage kopieren",
"Auto-playback response": "Antwort automatisch abspielen",
"Automatic1111": "Automatic1111",
@@ -96,7 +96,7 @@
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111-Basis-URL ist erforderlich.",
"Available list": "Verfügbare Liste",
"available!": "Verfügbar!",
"Awful": "",
"Awful": "Schrecklich",
"Azure AI Speech": "Azure AI Speech",
"Azure Region": "Azure-Region",
"Back": "Zurück",
@@ -106,27 +106,27 @@
"Batch Size (num_batch)": "Stapelgröße (num_batch)",
"before": "bereits geteilt",
"Being lazy": "Faulheit",
"Bing Search V7 Endpoint": "",
"Bing Search V7 Subscription Key": "",
"Bing Search V7 Endpoint": "Bing Search V7-Endpunkt",
"Bing Search V7 Subscription Key": "Bing Search V7-Abonnement-Schlüssel",
"Brave Search API Key": "Brave Search API-Schlüssel",
"By {{name}}": "",
"By {{name}}": "Von {{name}}",
"Bypass SSL verification for Websites": "SSL-Überprüfung für Webseiten umgehen",
"Call": "Anrufen",
"Call feature is not supported when using Web STT engine": "Die Anruffunktion wird nicht unterstützt, wenn die Web-STT-Engine verwendet wird.",
"Camera": "Kamera",
"Cancel": "Abbrechen",
"Capabilities": "Fähigkeiten",
"Certificate Path": "",
"Certificate Path": "Zertifikatpfad",
"Change Password": "Passwort ändern",
"Character": "Zeichen",
"Chart new frontiers": "",
"Chart new frontiers": "Neue Wege beschreiten",
"Chat": "Gespräch",
"Chat Background Image": "Hintergrundbild des Unterhaltungsfensters",
"Chat Bubble UI": "Chat Bubble UI",
"Chat Controls": "Chat-Steuerung",
"Chat direction": "Textrichtung",
"Chat Overview": "Unterhaltungsübersicht",
"Chat Permissions": "",
"Chat Permissions": "Unterhaltungsberechtigungen",
"Chat Tags Auto-Generation": "Automatische Generierung von Unterhaltungstags",
"Chats": "Unterhaltungen",
"Check Again": "Erneut überprüfen",
@@ -136,11 +136,11 @@
"Chunk Overlap": "Blocküberlappung",
"Chunk Params": "Blockparameter",
"Chunk Size": "Blockgröße",
"Ciphers": "",
"Ciphers": "Verschlüsselungen",
"Citation": "Zitate",
"Clear memory": "Alle Erinnerungen entfernen",
"click here": "",
"Click here for filter guides.": "",
"click here": "hier klicken",
"Click here for filter guides.": "Klicken Sie hier für Filteranleitungen.",
"Click here for help.": "Klicken Sie hier für Hilfe.",
"Click here to": "Klicken Sie hier, um",
"Click here to download user import template file.": "Klicken Sie hier, um die Vorlage für den Benutzerimport herunterzuladen.",
@@ -157,7 +157,7 @@
"Code execution": "Codeausführung",
"Code formatted successfully": "Code erfolgreich formatiert",
"Collection": "Kollektion",
"Color": "",
"Color": "Farbe",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL": "ComfyUI-Basis-URL",
"ComfyUI Base URL is required.": "ComfyUI-Basis-URL wird benötigt.",
@@ -166,7 +166,8 @@
"Command": "Befehl",
"Completions": "Vervollständigungen",
"Concurrent Requests": "Anzahl gleichzeitiger Anfragen",
"Configure": "",
"Configure": "Konfigurieren",
"Configure Models": "",
"Confirm": "Bestätigen",
"Confirm Password": "Passwort bestätigen",
"Confirm your action": "Bestätigen Sie Ihre Aktion.",
@@ -177,11 +178,11 @@
"Context Length": "Kontextlänge",
"Continue Response": "Antwort fortsetzen",
"Continue with {{provider}}": "Mit {{provider}} fortfahren",
"Continue with Email": "",
"Continue with LDAP": "",
"Continue with Email": "Mit Email fortfahren",
"Continue with LDAP": "Mit LDAP fortfahren",
"Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "Kontrollieren Sie, wie Nachrichtentext für TTS-Anfragen aufgeteilt wird. 'Punctuation' teilt in Sätze auf, 'paragraphs' teilt in Absätze auf und 'none' behält die Nachricht als einzelnen String.",
"Controls": "Steuerung",
"Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "",
"Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "Kontrolliert das Gleichgewicht zwischen Kohärenz und Vielfalt des Ausgabetextes. Ein niedrigerer Wert führt zu fokussierterem und kohärenterem Text. (Standard: 5.0)",
"Copied": "Kopiert",
"Copied shared chat URL to clipboard!": "Freigabelink in die Zwischenablage kopiert!",
"Copied to clipboard": "In die Zwischenablage kopiert",
@@ -191,12 +192,12 @@
"Copy Link": "Link kopieren",
"Copy to clipboard": "In die Zwischenablage kopieren",
"Copying to clipboard was successful!": "Das Kopieren in die Zwischenablage war erfolgreich!",
"Create": "",
"Create a knowledge base": "",
"Create a model": "Ein Modell erstellen",
"Create": "Erstellen",
"Create a knowledge base": "Wissensspeicher erstellen",
"Create a model": "Modell erstellen",
"Create Account": "Konto erstellen",
"Create Admin Account": "",
"Create Group": "",
"Create Admin Account": "Administrator-Account erstellen",
"Create Group": "Gruppe erstellen",
"Create Knowledge": "Wissen erstellen",
"Create new key": "Neuen Schlüssel erstellen",
"Create new secret key": "Neuen API-Schlüssel erstellen",
@@ -215,16 +216,17 @@
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
"Default Model": "Standardmodell",
"Default model updated": "Standardmodell aktualisiert",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Models": "",
"Default permissions": "Standardberechtigungen",
"Default permissions updated successfully": "Standardberechtigungen erfolgreich aktualisiert",
"Default Prompt Suggestions": "Prompt-Vorschläge",
"Default to 389 or 636 if TLS is enabled": "",
"Default to ALL": "",
"Default to 389 or 636 if TLS is enabled": "Standardmäßig auf 389 oder 636 setzen, wenn TLS aktiviert ist",
"Default to ALL": "Standardmäßig auf ALLE setzen",
"Default User Role": "Standardbenutzerrolle",
"Delete": "Löschen",
"Delete a model": "Ein Modell löschen",
"Delete All Chats": "Alle Unterhaltungen löschen",
"Delete All Models": "",
"Delete All Models": "Alle Modelle löschen",
"Delete chat": "Unterhaltung löschen",
"Delete Chat": "Unterhaltung löschen",
"Delete chat?": "Unterhaltung löschen?",
@@ -236,8 +238,8 @@
"Delete User": "Benutzer löschen",
"Deleted {{deleteModelTag}}": "{{deleteModelTag}} gelöscht",
"Deleted {{name}}": "{{name}} gelöscht",
"Deleted User": "",
"Describe your knowledge base and objectives": "",
"Deleted User": "Benutzer gelöscht",
"Describe your knowledge base and objectives": "Beschreibe deinen Wissensspeicher und deine Ziele",
"Description": "Beschreibung",
"Didn't fully follow instructions": "Nicht genau den Answeisungen gefolgt",
"Disabled": "Deaktiviert",
@@ -245,17 +247,17 @@
"Discover a model": "Entdecken Sie weitere Modelle",
"Discover a prompt": "Entdecken Sie weitere Prompts",
"Discover a tool": "Entdecken Sie weitere Werkzeuge",
"Discover wonders": "",
"Discover wonders": "Entdecken Sie Wunder",
"Discover, download, and explore custom functions": "Entdecken und beziehen Sie benutzerdefinierte Funktionen",
"Discover, download, and explore custom prompts": "Entdecken und beziehen Sie benutzerdefinierte Prompts",
"Discover, download, and explore custom tools": "Entdecken und beziehen Sie benutzerdefinierte Werkzeuge",
"Discover, download, and explore model presets": "Entdecken und beziehen Sie benutzerdefinierte Modellvorlagen",
"Dismissible": "ausblendbar",
"Display": "",
"Display": "Anzeigen",
"Display Emoji in Call": "Emojis im Anruf anzeigen",
"Display the username instead of You in the Chat": "Soll \"Sie\" durch Ihren Benutzernamen ersetzt werden?",
"Displays citations in the response": "",
"Dive into knowledge": "",
"Displays citations in the response": "Zeigt Zitate in der Antwort an",
"Dive into knowledge": "Tauchen Sie in das Wissen ein",
"Do not install functions from sources you do not fully trust.": "Installieren Sie keine Funktionen aus Quellen, denen Sie nicht vollständig vertrauen.",
"Do not install tools from sources you do not fully trust.": "Installieren Sie keine Werkzeuge aus Quellen, denen Sie nicht vollständig vertrauen.",
"Document": "Dokument",
@@ -270,39 +272,39 @@
"Download": "Exportieren",
"Download canceled": "Exportierung abgebrochen",
"Download Database": "Datenbank exportieren",
"Drag and drop a file to upload or select a file to view": "",
"Drag and drop a file to upload or select a file to view": "Ziehen Sie eine Datei zum Hochladen oder wählen Sie eine Datei zum Anzeigen aus",
"Draw": "Zeichnen",
"Drop any files here to add to the conversation": "Ziehen Sie beliebige Dateien hierher, um sie der Unterhaltung hinzuzufügen",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "z. B. '30s','10m'. Gültige Zeiteinheiten sind 's', 'm', 'h'.",
"e.g. A filter to remove profanity from text": "",
"e.g. My Filter": "",
"e.g. My Tools": "",
"e.g. my_filter": "",
"e.g. my_tools": "",
"e.g. Tools for performing various operations": "",
"e.g. A filter to remove profanity from text": "z. B. Ein Filter, um Schimpfwörter aus Text zu entfernen",
"e.g. My Filter": "z. B. Mein Filter",
"e.g. My Tools": "z. B. Meine Werkzeuge",
"e.g. my_filter": "z. B. mein_filter",
"e.g. my_tools": "z. B. meine_werkzeuge",
"e.g. Tools for performing various operations": "z. B. Werkzeuge für verschiedene Operationen",
"Edit": "Bearbeiten",
"Edit Arena Model": "Arena-Modell bearbeiten",
"Edit Connection": "",
"Edit Default Permissions": "",
"Edit Connection": "Verbindung bearbeiten",
"Edit Default Permissions": "Standardberechtigungen bearbeiten",
"Edit Memory": "Erinnerungen bearbeiten",
"Edit User": "Benutzer bearbeiten",
"Edit User Group": "",
"Edit User Group": "Benutzergruppe bearbeiten",
"ElevenLabs": "ElevenLabs",
"Email": "E-Mail",
"Embark on adventures": "",
"Embark on adventures": "Abenteuer erleben",
"Embedding Batch Size": "Embedding-Stapelgröße",
"Embedding Model": "Embedding-Modell",
"Embedding Model Engine": "Embedding-Modell-Engine",
"Embedding model set to \"{{embedding_model}}\"": "Embedding-Modell auf \"{{embedding_model}}\" gesetzt",
"Enable API Key Auth": "",
"Enable API Key Auth": "API-Schlüssel-Authentifizierung aktivieren",
"Enable Community Sharing": "Community-Freigabe aktivieren",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Aktiviere Memory Locking (mlock), um zu verhindern, dass Modelldaten aus dem RAM ausgelagert werden. Diese Option sperrt die Arbeitsseiten des Modells im RAM, um sicherzustellen, dass sie nicht auf die Festplatte ausgelagert werden. Dies kann die Leistung verbessern, indem Page Faults vermieden und ein schneller Datenzugriff sichergestellt werden.",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Aktiviere Memory Mapping (mmap), um Modelldaten zu laden. Diese Option ermöglicht es dem System, den Festplattenspeicher als Erweiterung des RAM zu verwenden, indem Festplattendateien so behandelt werden, als ob sie im RAM wären. Dies kann die Modellleistung verbessern, indem ein schnellerer Datenzugriff ermöglicht wird. Es kann jedoch nicht auf allen Systemen korrekt funktionieren und einen erheblichen Teil des Festplattenspeichers beanspruchen.",
"Enable Message Rating": "Nachrichtenbewertung aktivieren",
"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "",
"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "Mirostat Sampling zur Steuerung der Perplexität aktivieren. (Standard: 0, 0 = Deaktiviert, 1 = Mirostat, 2 = Mirostat 2.0)",
"Enable New Sign Ups": "Registrierung erlauben",
"Enable Retrieval Query Generation": "",
"Enable Tags Generation": "",
"Enable Retrieval Query Generation": "Abfragegenerierung aktivieren",
"Enable Tags Generation": "Tag-Generierung aktivieren",
"Enable Web Search": "Websuche aktivieren",
"Enable Web Search Query Generation": "Websuchanfragen-Generierung aktivieren",
"Enabled": "Aktiviert",
@@ -311,12 +313,12 @@
"Enter {{role}} message here": "Geben Sie die {{role}}-Nachricht hier ein",
"Enter a detail about yourself for your LLMs to recall": "Geben Sie ein Detail über sich selbst ein, das Ihre Sprachmodelle (LLMs) sich merken sollen",
"Enter api auth string (e.g. username:password)": "Geben Sie die API-Authentifizierungszeichenfolge ein (z. B. Benutzername:Passwort)",
"Enter Application DN": "",
"Enter Application DN Password": "",
"Enter Bing Search V7 Endpoint": "",
"Enter Bing Search V7 Subscription Key": "",
"Enter Application DN": "Geben Sie die Anwendungs-DN ein",
"Enter Application DN Password": "Geben Sie das Anwendungs-DN-Passwort ein",
"Enter Bing Search V7 Endpoint": "Geben Sie den Bing Search V7-Endpunkt ein",
"Enter Bing Search V7 Subscription Key": "Geben Sie den Bing Search V7-Abonnement-Schlüssel ein",
"Enter Brave Search API Key": "Geben Sie den Brave Search API-Schlüssel ein",
"Enter certificate path": "",
"Enter certificate path": "Geben Sie den Zertifikatpfad ein",
"Enter CFG Scale (e.g. 7.0)": "Geben Sie die CFG-Skala ein (z. B. 7.0)",
"Enter Chunk Overlap": "Geben Sie die Blocküberlappung ein",
"Enter Chunk Size": "Geben Sie die Blockgröße ein",
@@ -325,11 +327,11 @@
"Enter Google PSE API Key": "Geben Sie den Google PSE-API-Schlüssel ein",
"Enter Google PSE Engine Id": "Geben Sie die Google PSE-Engine-ID ein",
"Enter Image Size (e.g. 512x512)": "Geben Sie die Bildgröße ein (z. B. 512x512)",
"Enter Jina API Key": "",
"Enter Jina API Key": "Geben Sie den Jina-API-Schlüssel ein",
"Enter language codes": "Geben Sie die Sprachcodes ein",
"Enter Model ID": "Geben Sie die Modell-ID ein",
"Enter model tag (e.g. {{modelTag}})": "Gebn Sie den Model-Tag ein",
"Enter Mojeek Search API Key": "",
"Enter model tag (e.g. {{modelTag}})": "Geben Sie den Model-Tag ein",
"Enter Mojeek Search API Key": "Geben Sie den Mojeek Search API-Schlüssel ein",
"Enter Number of Steps (e.g. 50)": "Geben Sie die Anzahl an Schritten ein (z. B. 50)",
"Enter Sampler (e.g. Euler a)": "Geben Sie den Sampler ein (z. B. Euler a)",
"Enter Scheduler (e.g. Karras)": "Geben Sie den Scheduler ein (z. B. Karras)",
@@ -337,13 +339,13 @@
"Enter SearchApi API Key": "Geben Sie den SearchApi-API-Schlüssel ein",
"Enter SearchApi Engine": "Geben Sie die SearchApi-Engine ein",
"Enter Searxng Query URL": "Geben Sie die Searxng-Abfrage-URL ein",
"Enter Seed": "",
"Enter Seed": "Geben Sie den Seed ein",
"Enter Serper API Key": "Geben Sie den Serper-API-Schlüssel ein",
"Enter Serply API Key": "Geben Sie den",
"Enter Serpstack API Key": "Geben Sie den Serpstack-API-Schlüssel ein",
"Enter server host": "",
"Enter server label": "",
"Enter server port": "",
"Enter server host": "Geben Sie den Server-Host ein",
"Enter server label": "Geben Sie das Server-Label ein",
"Enter server port": "Geben Sie den Server-Port ein",
"Enter stop sequence": "Stop-Sequenz eingeben",
"Enter system prompt": "Systemprompt eingeben",
"Enter Tavily API Key": "Geben Sie den Tavily-API-Schlüssel ein",
@@ -356,38 +358,39 @@
"Enter your message": "Geben Sie Ihre Nachricht ein",
"Enter Your Password": "Geben Sie Ihr Passwort ein",
"Enter Your Role": "Geben Sie Ihre Rolle ein",
"Enter Your Username": "",
"Enter Your Username": "Geben Sie Ihren Benutzernamen ein",
"Error": "Fehler",
"ERROR": "FEHLER",
"Evaluations": "Evaluationen",
"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "",
"Example: ALL": "",
"Example: ou=users,dc=foo,dc=example": "",
"Example: sAMAccountName or uid or userPrincipalName": "",
"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Beispiel: (&(objectClass=inetOrgPerson)(uid=%s))",
"Example: ALL": "Beispiel: ALL",
"Example: ou=users,dc=foo,dc=example": "Beispiel: ou=users,dc=foo,dc=example",
"Example: sAMAccountName or uid or userPrincipalName": "Beispiel: sAMAccountName or uid or userPrincipalName",
"Exclude": "Ausschließen",
"Experimental": "Experimentell",
"Explore the cosmos": "",
"Explore the cosmos": "Erforschen Sie das Universum",
"Export": "Exportieren",
"Export All Archived Chats": "",
"Export All Archived Chats": "Alle archivierten Unterhaltungen exportieren",
"Export All Chats (All Users)": "Alle Unterhaltungen exportieren (alle Benutzer)",
"Export chat (.json)": "Unterhaltung exportieren (.json)",
"Export Chats": "Unterhaltungen exportieren",
"Export Config to JSON File": "Exportiere Konfiguration als JSON-Datei",
"Export Functions": "Funktionen exportieren",
"Export Models": "Modelle exportieren",
"Export Presets": "",
"Export Presets": "Voreinstellungen exportieren",
"Export Prompts": "Prompts exportieren",
"Export to CSV": "",
"Export to CSV": "Als CSV exportieren",
"Export Tools": "Werkzeuge exportieren",
"External Models": "Externe Modelle",
"Failed to add file.": "Fehler beim Hinzufügen der Datei.",
"Failed to create API Key.": "Fehler beim Erstellen des API-Schlüssels.",
"Failed to read clipboard contents": "Fehler beim Abruf der Zwischenablage",
"Failed to save models configuration": "",
"Failed to update settings": "Fehler beim Aktualisieren der Einstellungen",
"Failed to upload file.": "Fehler beim Hochladen der Datei.",
"February": "Februar",
"Feedback History": "Feedback-Verlauf",
"Feedbacks": "",
"Feedbacks": "Feedbacks",
"Feel free to add specific details": "Fühlen Sie sich frei, spezifische Details hinzuzufügen",
"File": "Datei",
"File added successfully.": "Datei erfolgreich hinzugefügt.",
@@ -408,18 +411,18 @@
"Folder name cannot be empty.": "Ordnername darf nicht leer sein.",
"Folder name updated successfully": "Ordnername erfolgreich aktualisiert",
"Followed instructions perfectly": "Anweisungen perfekt befolgt",
"Forge new paths": "",
"Forge new paths": "Neue Wege beschreiten",
"Form": "Formular",
"Format your variables using brackets like this:": "Formatieren Sie Ihre Variablen mit Klammern, wie hier:",
"Frequency Penalty": "Frequenzstrafe",
"Function": "Funktion",
"Function created successfully": "Funktion erfolgreich erstellt",
"Function deleted successfully": "Funktion erfolgreich gelöscht",
"Function Description": "",
"Function ID": "",
"Function Description": "Funktionsbeschreibung",
"Function ID": "Funktions-ID",
"Function is now globally disabled": "Die Funktion ist jetzt global deaktiviert",
"Function is now globally enabled": "Die Funktion ist jetzt global aktiviert",
"Function Name": "",
"Function Name": "Funktionsname",
"Function updated successfully": "Funktion erfolgreich aktualisiert",
"Functions": "Funktionen",
"Functions allow arbitrary code execution": "Funktionen ermöglichen die Ausführung beliebigen Codes",
@@ -430,34 +433,34 @@
"Generate Image": "Bild erzeugen",
"Generating search query": "Suchanfrage wird erstellt",
"Generation Info": "Generierungsinformationen",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
"Get started": "Loslegen",
"Get started with {{WEBUI_NAME}}": "Loslegen mit {{WEBUI_NAME}}",
"Global": "Global",
"Good Response": "Gute Antwort",
"Google PSE API Key": "Google PSE-API-Schlüssel",
"Google PSE Engine Id": "Google PSE-Engine-ID",
"Group created successfully": "",
"Group deleted successfully": "",
"Group Description": "",
"Group Name": "",
"Group updated successfully": "",
"Groups": "",
"Group created successfully": "Gruppe erfolgreich erstellt",
"Group deleted successfully": "Gruppe erfolgreich gelöscht",
"Group Description": "Gruppenbeschreibung",
"Group Name": "Gruppenname",
"Group updated successfully": "Gruppe erfolgreich aktualisiert",
"Groups": "Gruppen",
"h:mm a": "h:mm a",
"Haptic Feedback": "Haptisches Feedback",
"has no conversations.": "hat keine Unterhaltungen.",
"Hello, {{name}}": "Hallo, {{name}}",
"Help": "Hilfe",
"Help us create the best community leaderboard by sharing your feedback history!": "Helfen Sie uns, die beste Community-Bestenliste zu erstellen, indem Sie Ihren Feedback-Verlauf teilen!",
"Hex Color": "",
"Hex Color - Leave empty for default color": "",
"Hex Color": "Hex-Farbe",
"Hex Color - Leave empty for default color": "Hex-Farbe - Leer lassen für Standardfarbe",
"Hide": "Verbergen",
"Host": "",
"Host": "Host",
"How can I help you today?": "Wie kann ich Ihnen heute helfen?",
"How would you rate this response?": "",
"How would you rate this response?": "Wie würden Sie diese Antwort bewerten?",
"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.",
"ID": "ID",
"Ignite curiosity": "",
"Ignite curiosity": "Neugier entfachen",
"Image Generation (Experimental)": "Bildgenerierung (experimentell)",
"Image Generation Engine": "Bildgenerierungs-Engine",
"Image Settings": "Bildeinstellungen",
@@ -466,13 +469,13 @@
"Import Config from JSON File": "Konfiguration aus JSON-Datei importieren",
"Import Functions": "Funktionen importieren",
"Import Models": "Modelle importieren",
"Import Presets": "",
"Import Presets": "Voreinstellungen importieren",
"Import Prompts": "Prompts importieren",
"Import Tools": "Werkzeuge importieren",
"Include": "Einschließen",
"Include `--api-auth` flag when running stable-diffusion-webui": "Fügen Sie beim Ausführen von stable-diffusion-webui die Option `--api-auth` hinzu",
"Include `--api` flag when running stable-diffusion-webui": "Fügen Sie beim Ausführen von stable-diffusion-webui die Option `--api` hinzu",
"Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive. (Default: 0.1)": "",
"Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive. (Default: 0.1)": "Beeinflusst, wie schnell der Algorithmus auf Feedback aus dem generierten Text reagiert. Eine niedrigere Lernrate führt zu langsameren Anpassungen, während eine höhere Lernrate den Algorithmus reaktionsschneller macht. (Standard: 0.1)",
"Info": "Info",
"Input commands": "Eingabebefehle",
"Install from Github URL": "Installiere von der Github-URL",
@@ -481,7 +484,7 @@
"Invalid file format.": "Ungültiges Dateiformat.",
"Invalid Tag": "Ungültiger Tag",
"January": "Januar",
"Jina API Key": "",
"Jina API Key": "Jina-API-Schlüssel",
"join our Discord for help.": "Treten Sie unserem Discord bei, um Hilfe zu erhalten.",
"JSON": "JSON",
"JSON Preview": "JSON-Vorschau",
@@ -490,31 +493,31 @@
"JWT Expiration": "JWT-Ablauf",
"JWT Token": "JWT-Token",
"Keep Alive": "Verbindung aufrechterhalten",
"Key": "",
"Key": "Schlüssel",
"Keyboard shortcuts": "Tastenkombinationen",
"Knowledge": "Wissen",
"Knowledge Access": "",
"Knowledge Access": "Wissenszugriff",
"Knowledge created successfully.": "Wissen erfolgreich erstellt.",
"Knowledge deleted successfully.": "Wissen erfolgreich gelöscht.",
"Knowledge reset successfully.": "Wissen erfolgreich zurückgesetzt.",
"Knowledge updated successfully": "Wissen erfolgreich aktualisiert",
"Label": "",
"Label": "Label",
"Landing Page Mode": "Startseitenmodus",
"Language": "Sprache",
"Last Active": "Zuletzt aktiv",
"Last Modified": "Zuletzt bearbeitet",
"LDAP": "",
"LDAP server updated": "",
"LDAP": "LDAP",
"LDAP server updated": "LDAP-Server aktualisiert",
"Leaderboard": "Bestenliste",
"Leave empty for unlimited": "Leer lassen für unbegrenzt",
"Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "",
"Leave empty to include all models from \"{{URL}}/models\" endpoint": "",
"Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "Leer lassen, um alle Modelle vom \"{{URL}}/api/tags\"-Endpunkt einzuschließen",
"Leave empty to include all models from \"{{URL}}/models\" endpoint": "Leer lassen, um alle Modelle vom \"{{URL}}/models\"-Endpunkt einzuschließen",
"Leave empty to include all models or select specific models": "Leer lassen, um alle Modelle einzuschließen oder spezifische Modelle auszuwählen",
"Leave empty to use the default prompt, or enter a custom prompt": "Leer lassen, um den Standardprompt zu verwenden, oder geben Sie einen benutzerdefinierten Prompt ein",
"Light": "Hell",
"Listening...": "Höre zu...",
"LLMs can make mistakes. Verify important information.": "LLMs können Fehler machen. Überprüfe wichtige Informationen.",
"Local": "",
"Local": "Lokal",
"Local Models": "Lokale Modelle",
"Lost": "Verloren",
"LTR": "LTR",
@@ -523,9 +526,9 @@
"Make sure to export a workflow.json file as API format from ComfyUI.": "Stellen Sie sicher, dass sie eine workflow.json-Datei im API-Format von ComfyUI exportieren.",
"Manage": "Verwalten",
"Manage Arena Models": "Arena-Modelle verwalten",
"Manage Ollama": "",
"Manage Ollama API Connections": "",
"Manage OpenAI API Connections": "",
"Manage Ollama": "Ollama verwalten",
"Manage Ollama API Connections": "Ollama-API-Verbindungen verwalten",
"Manage OpenAI API Connections": "OpenAI-API-Verbindungen verwalten",
"Manage Pipelines": "Pipelines verwalten",
"March": "März",
"Max Tokens (num_predict)": "Maximale Tokenanzahl (num_predict)",
@@ -559,22 +562,23 @@
"Model accepts image inputs": "Modell akzeptiert Bileingaben",
"Model created successfully!": "Modell erfolgreich erstellt!",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Modell-Dateisystempfad erkannt. Modellkurzname ist für das Update erforderlich, Fortsetzung nicht möglich.",
"Model Filtering": "",
"Model Filtering": "Modellfilterung",
"Model ID": "Modell-ID",
"Model IDs": "",
"Model IDs": "Modell-IDs",
"Model Name": "Modell-Name",
"Model not selected": "Modell nicht ausgewählt",
"Model Params": "Modell-Params",
"Model Permissions": "",
"Model Params": "Modell-Parameter",
"Model Permissions": "Modellberechtigungen",
"Model updated successfully": "Modell erfolgreich aktualisiert",
"Modelfile Content": "Modelfile-Inhalt",
"Models": "Modelle",
"Models Access": "",
"Mojeek Search API Key": "",
"Models Access": "Modell-Zugriff",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "Mojeek Search API-Schlüssel",
"more": "mehr",
"More": "Mehr",
"Name": "Name",
"Name your knowledge base": "",
"Name your knowledge base": "Benennen Sie Ihren Wissensspeicher",
"New Chat": "Neue Unterhaltung",
"New folder": "Neuer Ordner",
"New Password": "Neues Passwort",
@@ -584,15 +588,16 @@
"No feedbacks found": "Kein Feedback gefunden",
"No file selected": "Keine Datei ausgewählt",
"No files found.": "Keine Dateien gefunden.",
"No groups with access, add a group to grant access": "",
"No groups with access, add a group to grant access": "Keine Gruppen mit Zugriff, fügen Sie eine Gruppe hinzu, um Zugriff zu gewähren",
"No HTML, CSS, or JavaScript content found.": "Keine HTML-, CSS- oder JavaScript-Inhalte gefunden.",
"No knowledge found": "Kein Wissen gefunden",
"No model IDs": "",
"No model IDs": "Keine Modell-IDs",
"No models found": "Keine Modelle gefunden",
"No models selected": "",
"No results found": "Keine Ergebnisse gefunden",
"No search query generated": "Keine Suchanfrage generiert",
"No source available": "Keine Quelle verfügbar",
"No users were found.": "",
"No users were found.": "Keine Benutzer gefunden.",
"No valves to update": "Keine Valves zum Aktualisieren",
"None": "Nichts",
"Not factually correct": "Nicht sachlich korrekt",
@@ -611,13 +616,13 @@
"Ollama": "Ollama",
"Ollama API": "Ollama-API",
"Ollama API disabled": "Ollama-API deaktiviert",
"Ollama API settings updated": "",
"Ollama API settings updated": "Ollama-API-Einstellungen aktualisiert",
"Ollama Version": "Ollama-Version",
"On": "Ein",
"Only alphanumeric characters and hyphens are allowed": "",
"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 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 select users and groups with permission can access": "",
"Only select users and groups with permission can access": "Nur ausgewählte Benutzer und Gruppen mit Berechtigung können darauf zugreifen",
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppla! Es scheint, dass die URL ungültig ist. Bitte überprüfen Sie diese und versuchen Sie es erneut.",
"Oops! There are files still uploading. Please wait for the upload to complete.": "Hoppla! Es werden noch Dateien hochgeladen. Bitte warten Sie, bis der Upload abgeschlossen ist.",
"Oops! There was an error in the previous response.": "Hoppla! Es gab einen Fehler in der vorherigen Antwort.",
@@ -626,34 +631,34 @@
"Open in full screen": "Im Vollbildmodus öffnen",
"Open new chat": "Neuen Chat öffnen",
"Open WebUI uses faster-whisper internally.": "Open WebUI verwendet intern faster-whisper.",
"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI verwendet SpeechT5 und CMU Arctic-Sprecher-Embeddings.",
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Die installierte Open-WebUI-Version (v{{OPEN_WEBUI_VERSION}}) ist niedriger als die erforderliche Version (v{{REQUIRED_VERSION}})",
"OpenAI": "OpenAI",
"OpenAI API": "OpenAI-API",
"OpenAI API Config": "OpenAI-API-Konfiguration",
"OpenAI API Key is required.": "OpenAI-API-Schlüssel erforderlich.",
"OpenAI API settings updated": "",
"OpenAI API settings updated": "OpenAI-API-Einstellungen aktualisiert",
"OpenAI URL/Key required.": "OpenAI-URL/Schlüssel erforderlich.",
"or": "oder",
"Organize your users": "",
"Organize your users": "Organisieren Sie Ihre Benutzer",
"Other": "Andere",
"OUTPUT": "AUSGABE",
"Output format": "Ausgabeformat",
"Overview": "Übersicht",
"page": "Seite",
"Password": "Passwort",
"Paste Large Text as File": "",
"Paste Large Text as File": "Großen Text als Datei einfügen",
"PDF document (.pdf)": "PDF-Dokument (.pdf)",
"PDF Extract Images (OCR)": "Text von Bildern aus PDFs extrahieren (OCR)",
"pending": "ausstehend",
"Permission denied when accessing media devices": "Zugriff auf Mediengeräte verweigert",
"Permission denied when accessing microphone": "Zugriff auf das Mikrofon verweigert",
"Permission denied when accessing microphone: {{error}}": "Zugriff auf das Mikrofon verweigert: {{error}}",
"Permissions": "",
"Permissions": "Berechtigungen",
"Personalization": "Personalisierung",
"Pin": "Anheften",
"Pinned": "Angeheftet",
"Pioneer insights": "",
"Pioneer insights": "Bahnbrechende Erkenntnisse",
"Pipeline deleted successfully": "Pipeline erfolgreich gelöscht",
"Pipeline downloaded successfully": "Pipeline erfolgreich heruntergeladen",
"Pipelines": "Pipelines",
@@ -665,23 +670,23 @@
"Please enter a prompt": "Bitte geben Sie einen Prompt ein",
"Please fill in all fields.": "Bitte füllen Sie alle Felder aus.",
"Please select a reason": "Bitte wählen Sie einen Grund aus",
"Port": "",
"Port": "Port",
"Positive attitude": "Positive Einstellung",
"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": "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",
"Previous 30 days": "Vorherige 30 Tage",
"Previous 7 days": "Vorherige 7 Tage",
"Profile Image": "Profilbild",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (z. B. \"Erzähle mir eine interessante Tatsache über das Römische Reich\")",
"Prompt Content": "Prompt-Inhalt",
"Prompt created successfully": "",
"Prompt created successfully": "Prompt erfolgreich erstellt",
"Prompt suggestions": "Prompt-Vorschläge",
"Prompt updated successfully": "",
"Prompt updated successfully": "Prompt erfolgreich aktualisiert",
"Prompts": "Prompts",
"Prompts Access": "",
"Prompts Access": "Prompt-Zugriff",
"Pull \"{{searchValue}}\" from Ollama.com": "\"{{searchValue}}\" von Ollama.com beziehen",
"Pull a model from Ollama.com": "Modell von Ollama.com beziehen",
"Query Generation Prompt": "",
"Query Generation Prompt": "Abfragegenerierungsprompt",
"Query Params": "Abfrageparameter",
"RAG Template": "RAG-Vorlage",
"Rating": "Bewertung",
@@ -689,7 +694,7 @@
"Read Aloud": "Vorlesen",
"Record voice": "Stimme aufnehmen",
"Redirecting you to OpenWebUI Community": "Sie werden zur OpenWebUI-Community weitergeleitet",
"Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "",
"Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "Reduziert die Wahrscheinlichkeit, Unsinn zu generieren. Ein höherer Wert (z.B. 100) liefert vielfältigere Antworten, während ein niedrigerer Wert (z.B. 10) konservativer ist. (Standard: 40)",
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Beziehen Sie sich auf sich selbst als \"Benutzer\" (z. B. \"Benutzer lernt Spanisch\")",
"References from": "Referenzen aus",
"Refused when it shouldn't have": "Abgelehnt, obwohl es nicht hätte abgelehnt werden sollen",
@@ -699,12 +704,14 @@
"Remove": "Entfernen",
"Remove Model": "Modell entfernen",
"Rename": "Umbenennen",
"Reorder Models": "",
"Repeat Last N": "Wiederhole die letzten N",
"Request Mode": "Anforderungsmodus",
"Reranking Model": "Reranking-Modell",
"Reranking model disabled": "Reranking-Modell deaktiviert",
"Reranking model set to \"{{reranking_model}}\"": "Reranking-Modell \"{{reranking_model}}\" fesgelegt",
"Reset": "Zurücksetzen",
"Reset All Models": "",
"Reset Upload Directory": "Upload-Verzeichnis zurücksetzen",
"Reset Vector Storage/Knowledge": "Vektorspeicher/Wissen zurücksetzen",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Benachrichtigungen können nicht aktiviert werden, da die Website-Berechtigungen abgelehnt wurden. Bitte besuchen Sie Ihre Browser-Einstellungen, um den erforderlichen Zugriff zu gewähren.",
@@ -728,18 +735,18 @@
"Scroll to bottom when switching between branches": "Beim Wechsel zwischen Branches nach unten scrollen",
"Search": "Suchen",
"Search a model": "Modell suchen",
"Search Base": "",
"Search Base": "Suchbasis",
"Search Chats": "Unterhaltungen durchsuchen...",
"Search Collection": "Sammlung durchsuchen",
"Search Filters": "",
"Search Filters": "Suchfilter",
"search for tags": "nach Tags suchen",
"Search Functions": "Funktionen durchsuchen...",
"Search Knowledge": "Wissen durchsuchen",
"Search Models": "Modelle durchsuchen...",
"Search options": "",
"Search options": "Suchoptionen",
"Search Prompts": "Prompts durchsuchen...",
"Search Result Count": "Anzahl der Suchergebnisse",
"Search the web": "",
"Search the web": "Im Web suchen",
"Search Tools": "Werkzeuge durchsuchen...",
"SearchApi API Key": "SearchApi-API-Schlüssel",
"SearchApi Engine": "SearchApi-Engine",
@@ -754,7 +761,7 @@
"Select a base model": "Wählen Sie ein Basismodell",
"Select a engine": "Wählen Sie eine Engine",
"Select a function": "Wählen Sie eine Funktion",
"Select a group": "",
"Select a group": "Wählen Sie eine Gruppe",
"Select a model": "Wählen Sie ein Modell",
"Select a pipeline": "Wählen Sie eine Pipeline",
"Select a pipeline url": "Wählen Sie eine Pipeline-URL",
@@ -777,7 +784,7 @@
"Set as default": "Als Standard festlegen",
"Set CFG Scale": "CFG-Skala festlegen",
"Set Default Model": "Standardmodell festlegen",
"Set embedding model": "",
"Set embedding model": "Einbettungsmodell festlegen",
"Set embedding model (e.g. {{model}})": "Einbettungsmodell festlegen (z. B. {{model}})",
"Set Image Size": "Bildgröße festlegen",
"Set reranking model (e.g. {{model}})": "Rerankingmodell festlegen (z. B. {{model}})",
@@ -785,29 +792,29 @@
"Set Scheduler": "Scheduler festlegen",
"Set Steps": "Schrittgröße festlegen",
"Set Task Model": "Aufgabenmodell festlegen",
"Set the number of GPU devices used for computation. This option controls how many GPU devices (if available) are used to process incoming requests. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "",
"Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "",
"Set the number of GPU devices used for computation. This option controls how many GPU devices (if available) are used to process incoming requests. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "Legt die Anzahl der für die Berechnung verwendeten GPU-Geräte fest. Diese Option steuert, wie viele GPU-Geräte (falls verfügbar) zur Verarbeitung eingehender Anfragen verwendet werden. Eine Erhöhung dieses Wertes kann die Leistung für Modelle, die für GPU-Beschleunigung optimiert sind, erheblich verbessern, kann jedoch auch mehr Strom und GPU-Ressourcen verbrauchen.",
"Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "Legt die Anzahl der für die Berechnung verwendeten GPU-Geräte fest. Diese Option steuert, wie viele GPU-Geräte (falls verfügbar) zur Verarbeitung eingehender Anfragen verwendet werden. Eine Erhöhung dieses Wertes kann die Leistung für Modelle, die für GPU-Beschleunigung optimiert sind, erheblich verbessern, kann jedoch auch mehr Strom und GPU-Ressourcen verbrauchen.",
"Set Voice": "Stimme festlegen",
"Set whisper model": "Whisper-Modell festlegen",
"Sets how far back for the model to look back to prevent repetition. (Default: 64, 0 = disabled, -1 = num_ctx)": "",
"Sets how strongly to penalize repetitions. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. (Default: 1.1)": "",
"Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt. (Default: random)": "",
"Sets the size of the context window used to generate the next token. (Default: 2048)": "",
"Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "",
"Sets how far back for the model to look back to prevent repetition. (Default: 64, 0 = disabled, -1 = num_ctx)": "Legt fest, wie weit das Modell zurückblicken soll, um Wiederholungen zu verhindern. (Standard: 64, 0 = deaktiviert, -1 = num_ctx)",
"Sets how strongly to penalize repetitions. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. (Default: 1.1)": "Legt fest, wie stark Wiederholungen bestraft werden sollen. Ein höherer Wert (z.B. 1.5) bestraft Wiederholungen stärker, während ein niedrigerer Wert (z.B. 0.9) nachsichtiger ist. (Standard: 1.1)",
"Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt. (Default: random)": "Legt den Zufallszahlengenerator-Seed für die Generierung fest. Wenn dieser auf eine bestimmte Zahl gesetzt wird, erzeugt das Modell denselben Text für denselben Prompt. (Standard: zufällig)",
"Sets the size of the context window used to generate the next token. (Default: 2048)": "Legt die Größe des Kontextfensters fest, das zur Generierung des nächsten Tokens verwendet wird. (Standard: 2048)",
"Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "Legt die zu verwendenden Stoppsequenzen fest. Wenn dieses Muster erkannt wird, stoppt das LLM die Textgenerierung und gibt zurück. Mehrere Stoppmuster können festgelegt werden, indem mehrere separate Stopp-Parameter in einer Modelldatei angegeben werden.",
"Settings": "Einstellungen",
"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!",
"Share": "Teilen",
"Share Chat": "Unterhaltung teilen",
"Share to OpenWebUI Community": "Mit OpenWebUI Community teilen",
"Show": "Anzeigen",
"Show \"What's New\" modal on login": "",
"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 shortcuts": "Verknüpfungen anzeigen",
"Show your support!": "Zeigen Sie Ihre Unterstützung!",
"Showcased creativity": "Kreativität gezeigt",
"Sign in": "Anmelden",
"Sign in to {{WEBUI_NAME}}": "Bei {{WEBUI_NAME}} anmelden",
"Sign in to {{WEBUI_NAME}} with LDAP": "",
"Sign in to {{WEBUI_NAME}} with LDAP": "Bei {{WEBUI_NAME}} mit LDAP anmelden",
"Sign Out": "Abmelden",
"Sign up": "Registrieren",
"Sign up to {{WEBUI_NAME}}": "Bei {{WEBUI_NAME}} registrieren",
@@ -832,7 +839,7 @@
"System Instructions": "Systemanweisungen",
"System Prompt": "System-Prompt",
"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. (default: 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. (default: 1)": "Tail-Free Sampling wird verwendet, um den Einfluss weniger wahrscheinlicher Tokens 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)",
"Tap to interrupt": "Zum Unterbrechen tippen",
"Tavily API Key": "Tavily-API-Schlüssel",
"Tell us more:": "Erzähl uns mehr",
@@ -843,30 +850,30 @@
"Text-to-Speech Engine": "Text-zu-Sprache-Engine",
"Tfs Z": "Tfs Z",
"Thanks for your feedback!": "Danke für Ihr Feedback!",
"The Application Account DN you bind with for search": "",
"The base to search for users": "",
"The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory. (Default: 512)": "",
"The Application Account DN you bind with for search": "Der Anwendungs-Konto-DN, mit dem Sie für die Suche binden",
"The base to search for users": "Die Basis, in der nach Benutzern gesucht wird",
"The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory. (Default: 512)": "Die Batch-Größe bestimmt, wie viele Textanfragen gleichzeitig verarbeitet werden. Eine größere Batch-Größe kann die Leistung und Geschwindigkeit des Modells erhöhen, erfordert jedoch auch mehr Speicher. (Standard: 512)",
"The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Die Entwickler hinter diesem Plugin sind leidenschaftliche Freiwillige aus der Community. Wenn Sie dieses Plugin hilfreich finden, erwägen Sie bitte, zu seiner Entwicklung beizutragen.",
"The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Die Bewertungs-Bestenliste basiert auf dem Elo-Bewertungssystem und wird in Echtzeit aktualisiert.",
"The LDAP attribute that maps to the username that users use to sign in.": "",
"The LDAP attribute that maps to the username that users use to sign in.": "Das LDAP-Attribut, das dem Benutzernamen zugeordnet ist, den Benutzer zum Anmelden verwenden.",
"The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "Die Bestenliste befindet sich derzeit in der Beta-Phase, und es ist möglich, dass wir die Bewertungsberechnungen anpassen, während wir den Algorithmus verfeinern.",
"The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "Die maximale Dateigröße in MB. Wenn die Dateigröße dieses Limit überschreitet, wird die Datei nicht hochgeladen.",
"The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "Die maximale Anzahl von Dateien, die gleichzeitig in der Unterhaltung verwendet werden können. Wenn die Anzahl der Dateien dieses Limit überschreitet, werden die Dateien nicht hochgeladen.",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Die Punktzahl sollte ein Wert zwischen 0,0 (0 %) und 1,0 (100 %) sein.",
"The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "",
"The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "Die Temperatur des Modells. Eine Erhöhung der Temperatur führt dazu, dass das Modell kreativer antwortet. (Standard: 0,8)",
"Theme": "Design",
"Thinking...": "Denke nach...",
"This action cannot be undone. Do you wish to continue?": "Diese Aktion kann nicht rückgängig gemacht werden. Möchten Sie fortfahren?",
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dies stellt sicher, dass Ihre wertvollen Unterhaltungen sicher in Ihrer Backend-Datenbank gespeichert werden. Vielen Dank!",
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Dies ist eine experimentelle Funktion, sie funktioniert möglicherweise nicht wie erwartet und kann jederzeit geändert werden.",
"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics. (Default: 24)": "",
"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated. (Default: 128)": "",
"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics. (Default: 24)": "Diese Option steuert, wie viele Tokens beim Aktualisieren des Kontexts beibehalten werden. Wenn sie beispielsweise auf 2 gesetzt ist, werden die letzten 2 Tokens des Gesprächskontexts beibehalten. Das Beibehalten des Kontexts kann helfen, die Kontinuität eines Gesprächs aufrechtzuerhalten, kann jedoch die Fähigkeit verringern, auf neue Themen zu reagieren. (Standard: 24)",
"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated. (Default: 128)": "Diese Option legt die maximale Anzahl von Tokens fest, die das Modell in seiner Antwort generieren kann. Eine Erhöhung dieses Limits ermöglicht es dem Modell, längere Antworten zu geben, kann jedoch auch die Wahrscheinlichkeit erhöhen, dass unhilfreicher oder irrelevanter Inhalt generiert wird. (Standard: 128)",
"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Diese Option löscht alle vorhandenen Dateien in der Sammlung und ersetzt sie durch neu hochgeladene Dateien.",
"This response was generated by \"{{model}}\"": "Diese Antwort wurde von \"{{model}}\" generiert",
"This will delete": "Dies löscht",
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Dies löscht <strong>{{NAME}}</strong> und <strong>alle Inhalte</strong>.",
"This will delete all models including custom models": "",
"This will delete all models including custom models and cannot be undone.": "",
"This will delete all models including custom models": "Dies wird alle Modelle einschließlich benutzerdefinierter Modelle löschen",
"This will delete all models including custom models and cannot be undone.": "Dies wird alle Modelle einschließlich benutzerdefinierter Modelle löschen und kann nicht rückgängig gemacht werden.",
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Dadurch wird die Wissensdatenbank zurückgesetzt und alle Dateien synchronisiert. Möchten Sie fortfahren?",
"Thorough explanation": "Ausführliche Erklärung",
"Tika": "Tika",
@@ -878,7 +885,7 @@
"Title Auto-Generation": "Unterhaltungstitel automatisch generieren",
"Title cannot be an empty string.": "Titel darf nicht leer sein.",
"Title Generation Prompt": "Prompt für Titelgenerierung",
"TLS": "",
"TLS": "TLS",
"To access the available model names for downloading,": "Um auf die verfügbaren Modellnamen zuzugreifen,",
"To access the GGUF models available for downloading,": "Um auf die verfügbaren GGUF-Modelle zuzugreifen,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Um auf das WebUI zugreifen zu können, wenden Sie sich bitte an einen Administrator. Administratoren können den Benutzerstatus über das Admin-Panel verwalten.",
@@ -896,19 +903,19 @@
"Too verbose": "Zu ausführlich",
"Tool created successfully": "Werkzeug erfolgreich erstellt",
"Tool deleted successfully": "Werkzeug erfolgreich gelöscht",
"Tool Description": "",
"Tool ID": "",
"Tool Description": "Werkzeugbeschreibung",
"Tool ID": "Werkzeug-ID",
"Tool imported successfully": "Werkzeug erfolgreich importiert",
"Tool Name": "",
"Tool Name": "Werkzeugname",
"Tool updated successfully": "Werkzeug erfolgreich aktualisiert",
"Tools": "Werkzeuge",
"Tools Access": "",
"Tools Access": "Werkzeugzugriff",
"Tools are a function calling system with arbitrary code execution": "Wekzeuge sind ein Funktionssystem mit beliebiger Codeausführung",
"Tools have a function calling system that allows arbitrary code execution": "Werkezuge verfügen über ein Funktionssystem, das die Ausführung beliebigen Codes ermöglicht",
"Tools have a function calling system that allows arbitrary code execution.": "Werkzeuge verfügen über ein Funktionssystem, das die Ausführung beliebigen Codes ermöglicht.",
"Top K": "Top K",
"Top P": "Top P",
"Transformers": "",
"Transformers": "Transformers",
"Trouble accessing Ollama?": "Probleme beim Zugriff auf Ollama?",
"TTS Model": "TTS-Modell",
"TTS Settings": "TTS-Einstellungen",
@@ -917,12 +924,12 @@
"Type Hugging Face Resolve (Download) URL": "Geben Sie die Hugging Face Resolve-URL ein",
"Uh-oh! There was an issue connecting to {{provider}}.": "Ups! Es gab ein Problem bei der Verbindung mit {{provider}}.",
"UI": "Oberfläche",
"Unarchive All": "",
"Unarchive All Archived Chats": "",
"Unarchive Chat": "",
"Unlock mysteries": "",
"Unarchive All": "Alle wiederherstellen",
"Unarchive All Archived Chats": "Alle archivierten Unterhaltungen wiederherstellen",
"Unarchive Chat": "Unterhaltung wiederherstellen",
"Unlock mysteries": "Geheimnisse entsperren",
"Unpin": "Lösen",
"Unravel secrets": "",
"Unravel secrets": "Geheimnisse lüften",
"Untagged": "Ungetaggt",
"Update": "Aktualisieren",
"Update and Copy Link": "Aktualisieren und Link kopieren",
@@ -938,18 +945,18 @@
"Upload Files": "Datei(en) hochladen",
"Upload Pipeline": "Pipeline hochladen",
"Upload Progress": "Hochladefortschritt",
"URL": "",
"URL": "URL",
"URL Mode": "URL-Modus",
"Use '#' in the prompt input to load and include your knowledge.": "Nutzen Sie '#' in der Prompt-Eingabe, um Ihr Wissen zu laden und einzuschließen.",
"Use Gravatar": "Gravatar verwenden",
"Use groups to group your users and assign permissions.": "",
"Use groups to group your users and assign permissions.": "Nutzen Sie Gruppen, um Ihre Benutzer zu gruppieren und Berechtigungen zuzuweisen.",
"Use Initials": "Initialen verwenden",
"use_mlock (Ollama)": "use_mlock (Ollama)",
"use_mmap (Ollama)": "use_mmap (Ollama)",
"user": "Benutzer",
"User": "Benutzer",
"User location successfully retrieved.": "Benutzerstandort erfolgreich ermittelt.",
"Username": "",
"Username": "Benutzername",
"Users": "Benutzer",
"Using the default arena model with all models. Click the plus button to add custom models.": "Verwendung des Standard-Arena-Modells mit allen Modellen. Klicken Sie auf die Plus-Schaltfläche, um benutzerdefinierte Modelle hinzuzufügen.",
"Utilize": "Verwende",
@@ -961,12 +968,12 @@
"variable to have them replaced with clipboard content.": "Variable, um den Inhalt der Zwischenablage beim Nutzen des Prompts zu ersetzen.",
"Version": "Version",
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} von {{totalVersions}}",
"Visibility": "",
"Visibility": "Sichtbarkeit",
"Voice": "Stimme",
"Voice Input": "Spracheingabe",
"Warning": "Warnung",
"Warning:": "Warnung:",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Warnung: Wenn Sie dies aktivieren, können Benutzer beliebigen Code auf dem Server hochladen.",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Warnung: Wenn Sie das Einbettungsmodell aktualisieren oder ändern, müssen Sie alle Dokumente erneut importieren.",
"Web": "Web",
"Web API": "Web-API",
@@ -975,30 +982,30 @@
"Web Search Engine": "Suchmaschine",
"Webhook URL": "Webhook URL",
"WebUI Settings": "WebUI-Einstellungen",
"WebUI will make requests to \"{{url}}/api/chat\"": "",
"WebUI will make requests to \"{{url}}/chat/completions\"": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI wird Anfragen an \"{{url}}/api/chat\" senden",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI wird Anfragen an \"{{url}}/chat/completions\" senden",
"What are you trying to achieve?": "Was versuchen Sie zu erreichen?",
"What are you working on?": "Woran arbeiten Sie?",
"What’s New in": "Neuigkeiten von",
"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "",
"wherever you are": "",
"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "Wenn aktiviert, antwortet das Modell in Echtzeit auf jede Chat-Nachricht und generiert eine Antwort, sobald der Benutzer eine Nachricht sendet. Dieser Modus ist nützlich für Live-Chat-Anwendungen, kann jedoch die Leistung auf langsamerer Hardware beeinträchtigen.",
"wherever you are": "wo immer Sie sind",
"Whisper (Local)": "Whisper (lokal)",
"Why?": "",
"Why?": "Warum?",
"Widescreen Mode": "Breitbildmodus",
"Won": "Gewonnen",
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "",
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "Funktioniert zusammen mit top-k. Ein höherer Wert (z.B. 0,95) führt zu vielfältigerem Text, während ein niedrigerer Wert (z.B. 0,5) fokussierteren und konservativeren Text erzeugt. (Standard: 0,9)",
"Workspace": "Arbeitsbereich",
"Workspace Permissions": "",
"Workspace Permissions": "Arbeitsbereichsberechtigungen",
"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 something...": "Schreiben Sie etwas...",
"Write your model template content here": "",
"Write your model template content here": "Schreiben Sie hier Ihren Modellvorlageninhalt",
"Yesterday": "Gestern",
"You": "Sie",
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Sie können nur mit maximal {{maxCount}} Datei(en) gleichzeitig chatten.",
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Personalisieren Sie Interaktionen mit LLMs, indem Sie über die Schaltfläche \"Verwalten\" Erinnerungen hinzufügen.",
"You cannot upload an empty file.": "Sie können keine leere Datei hochladen.",
"You do not have permission to upload files.": "",
"You do not have permission to upload files.": "Sie haben keine Berechtigung zum Hochladen von Dateien.",
"You have no archived conversations.": "Du hast keine archivierten Unterhaltungen.",
"You have shared this chat": "Sie haben diese Unterhaltung geteilt",
"You're a helpful assistant.": "Du bist ein hilfreicher Assistent.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Confirm Password",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "",
"Default Model": "",
"Default model updated": "Default model much updated",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Default Prompt Suggestions",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "",
"Failed to read clipboard contents": "Failed to read clipboard borks",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modelfile Content",
"Models": "Wowdels",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "",
"No search query generated": "",
"No source available": "No source available",
@@ -699,12 +704,14 @@
"Remove": "",
"Remove Model": "",
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Request Mode": "Request Bark",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "",
"Default Model": "",
"Default model updated": "",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "",
"Failed to read clipboard contents": "",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "",
@@ -570,6 +573,7 @@
"Modelfile Content": "",
"Models": "",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "",
"No search query generated": "",
"No source available": "",
@@ -699,12 +704,14 @@
"Remove": "",
"Remove Model": "",
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "",
"Request Mode": "",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "",
"Default Model": "",
"Default model updated": "",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "",
"Failed to read clipboard contents": "",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "",
@@ -570,6 +573,7 @@
"Modelfile Content": "",
"Models": "",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "",
"No search query generated": "",
"No source available": "",
@@ -699,12 +704,14 @@
"Remove": "",
"Remove Model": "",
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "",
"Request Mode": "",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Solicitudes simultáneas",
"Configure": "",
"Configure Models": "",
"Confirm": "Confirmar",
"Confirm Password": "Confirmar Contraseña",
"Confirm your action": "Confirma tu acción",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Predeterminado (SentenceTransformers)",
"Default Model": "Modelo predeterminado",
"Default model updated": "El modelo por defecto ha sido actualizado",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Sugerencias de mensajes por defecto",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "No se pudo crear la clave API.",
"Failed to read clipboard contents": "No se pudo leer el contenido del portapapeles",
"Failed to save models configuration": "",
"Failed to update settings": "Falla al actualizar los ajustes",
"Failed to upload file.": "Falla al subir el archivo.",
"February": "Febrero",
@@ -570,6 +573,7 @@
"Modelfile Content": "Contenido del Modelfile",
"Models": "Modelos",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Más",
@@ -589,6 +593,7 @@
"No knowledge found": "No se encontró ningún conocimiento",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "No se han encontrado resultados",
"No search query generated": "No se ha generado ninguna consulta de búsqueda",
"No source available": "No hay fuente disponible",
@@ -699,12 +704,14 @@
"Remove": "Eliminar",
"Remove Model": "Eliminar modelo",
"Rename": "Renombrar",
"Reorder Models": "",
"Repeat Last N": "Repetir las últimas N",
"Request Mode": "Modo de petición",
"Reranking Model": "Modelo de reranking",
"Reranking model disabled": "Modelo de reranking deshabilitado",
"Reranking model set to \"{{reranking_model}}\"": "Modelo de reranking establecido en \"{{reranking_model}}\"",
"Reset": "Reiniciar",
"Reset All Models": "",
"Reset Upload Directory": "Reiniciar Directorio de carga",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Las notificaciones de respuesta no pueden activarse debido a que los permisos del sitio web han sido denegados. Por favor, visite las configuraciones de su navegador para otorgar el acceso necesario.",
File diff suppressed because it is too large Load Diff
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "درخواست های همزمان",
"Configure": "",
"Configure Models": "",
"Confirm": "تایید",
"Confirm Password": "تایید رمز عبور",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "پیشفرض (SentenceTransformers)",
"Default Model": "مدل پیشفرض",
"Default model updated": "مدل پیشفرض به\u200cروزرسانی شد",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "پیشنهادات پرامپت پیش فرض",
@@ -383,6 +385,7 @@
"Failed to add file.": "خطا در افزودن پرونده",
"Failed to create API Key.": "ایجاد کلید API با خطا مواجه شد.",
"Failed to read clipboard contents": "خواندن محتوای کلیپ بورد ناموفق بود",
"Failed to save models configuration": "",
"Failed to update settings": "خطا در به\u200cروزرسانی تنظیمات",
"Failed to upload file.": "خطا در بارگذاری پرونده",
"February": "فوریه",
@@ -570,6 +573,7 @@
"Modelfile Content": "محتویات فایل مدل",
"Models": "مدل\u200cها",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "بیشتر",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "نتیجه\u200cای یافت نشد",
"No search query generated": "پرسوجوی جستجویی ایجاد نشده است",
"No source available": "منبعی در دسترس نیست",
@@ -699,12 +704,14 @@
"Remove": "حذف",
"Remove Model": "حذف مدل",
"Rename": "تغییر نام",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Request Mode": "حالت درخواست",
"Reranking Model": "مدل ری\u200cشناسی مجدد غیرفعال است",
"Reranking model disabled": "مدل ری\u200cشناسی مجدد غیرفعال است",
"Reranking model set to \"{{reranking_model}}\"": "مدل ری\u200cشناسی مجدد به \"{{reranking_model}}\" تنظیم شده است",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Samanaikaiset pyynnöt",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Vahvista salasana",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Oletus (SentenceTransformers)",
"Default Model": "Oletusmalli",
"Default model updated": "Oletusmalli päivitetty",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Oletuskehotteiden ehdotukset",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "API-avaimen luonti epäonnistui.",
"Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "helmikuu",
@@ -570,6 +573,7 @@
"Modelfile Content": "Mallitiedoston sisältö",
"Models": "Mallit",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Lisää",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Ei tuloksia",
"No search query generated": "Hakukyselyä ei luotu",
"No source available": "Ei lähdettä saatavilla",
@@ -699,12 +704,14 @@
"Remove": "Poista",
"Remove Model": "Poista malli",
"Rename": "Nimeä uudelleen",
"Reorder Models": "",
"Repeat Last N": "Viimeinen N -toisto",
"Request Mode": "Pyyntötila",
"Reranking Model": "Uudelleenpisteytysmalli",
"Reranking model disabled": "Uudelleenpisteytysmalli poistettu käytöstä",
"Reranking model set to \"{{reranking_model}}\"": "\"{{reranking_model}}\" valittu uudelleenpisteytysmalliksi",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Demandes concurrentes",
"Configure": "",
"Configure Models": "",
"Confirm": "Confirmer",
"Confirm Password": "Confirmer le mot de passe",
"Confirm your action": "Confirmez votre action",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Par défaut (Sentence Transformers)",
"Default Model": "Modèle standard",
"Default model updated": "Modèle par défaut mis à jour",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Suggestions de prompts par défaut",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Échec de la création de la clé API.",
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
"Failed to save models configuration": "",
"Failed to update settings": "Échec de la mise à jour des paramètres",
"Failed to upload file.": "",
"February": "Février",
@@ -570,6 +573,7 @@
"Modelfile Content": "Contenu du Fichier de Modèle",
"Models": "Modèles",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Plus de",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Aucun résultat trouvé",
"No search query generated": "Aucune requête de recherche générée",
"No source available": "Aucune source n'est disponible",
@@ -699,12 +704,14 @@
"Remove": "Retirer",
"Remove Model": "Retirer le modèle",
"Rename": "Renommer",
"Reorder Models": "",
"Repeat Last N": "Répéter les N derniers",
"Request Mode": "Mode de Requête",
"Reranking Model": "Modèle de ré-ranking",
"Reranking model disabled": "Modèle de ré-ranking désactivé",
"Reranking model set to \"{{reranking_model}}\"": "Modèle de ré-ranking défini sur « {{reranking_model}} »",
"Reset": "Réinitialiser",
"Reset All Models": "",
"Reset Upload Directory": "Répertoire de téléchargement réinitialisé",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de réponse ne peuvent pas être activées car les autorisations du site web ont été refusées. Veuillez visiter les paramètres de votre navigateur pour accorder l'accès nécessaire.",
@@ -167,6 +167,7 @@
"Completions": "Complétions",
"Concurrent Requests": "Demandes concurrentes",
"Configure": "",
"Configure Models": "",
"Confirm": "Confirmer",
"Confirm Password": "Confirmer le mot de passe",
"Confirm your action": "Confirmer votre action",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Par défaut (Sentence Transformers)",
"Default Model": "Modèle standard",
"Default model updated": "Modèle par défaut mis à jour",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Suggestions de prompts par défaut",
@@ -383,6 +385,7 @@
"Failed to add file.": "Échec de l'ajout du fichier.",
"Failed to create API Key.": "Échec de la création de la clé API.",
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
"Failed to save models configuration": "",
"Failed to update settings": "Échec de la mise à jour des paramètres",
"Failed to upload file.": "Échec du téléchargement du fichier.",
"February": "Février",
@@ -570,6 +573,7 @@
"Modelfile Content": "Contenu du Fichier de Modèle",
"Models": "Modèles",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "plus",
"More": "Plus",
@@ -589,6 +593,7 @@
"No knowledge found": "Aucune connaissance trouvée",
"No model IDs": "",
"No models found": "Aucun modèle trouvé",
"No models selected": "",
"No results found": "Aucun résultat trouvé",
"No search query generated": "Aucune requête de recherche générée",
"No source available": "Aucune source n'est disponible",
@@ -699,12 +704,14 @@
"Remove": "Retirer",
"Remove Model": "Retirer le modèle",
"Rename": "Renommer",
"Reorder Models": "",
"Repeat Last N": "Répéter les N derniers",
"Request Mode": "Mode de requête",
"Reranking Model": "Modèle de ré-ranking",
"Reranking model disabled": "Modèle de ré-ranking désactivé",
"Reranking model set to \"{{reranking_model}}\"": "Modèle de ré-ranking défini sur « {{reranking_model}} »",
"Reset": "Réinitialiser",
"Reset All Models": "",
"Reset Upload Directory": "Réinitialiser le répertoire de téléchargement",
"Reset Vector Storage/Knowledge": "Réinitialiser le stockage vectoriel/connaissances",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de réponse ne peuvent pas être activées car les autorisations du site web ont été refusées. Veuillez vérifier les paramètres de votre navigateur pour accorder l'accès nécessaire.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "בקשות בו-זמניות",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "אשר סיסמה",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "ברירת מחדל (SentenceTransformers)",
"Default Model": "מודל ברירת מחדל",
"Default model updated": "המודל המוגדר כברירת מחדל עודכן",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "הצעות ברירת מחדל לפקודות",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "יצירת מפתח API נכשלה.",
"Failed to read clipboard contents": "קריאת תוכן הלוח נכשלה",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "פברואר",
@@ -570,6 +573,7 @@
"Modelfile Content": "תוכן קובץ מודל",
"Models": "מודלים",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "עוד",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "לא נמצאו תוצאות",
"No search query generated": "לא נוצרה שאילתת חיפוש",
"No source available": "אין מקור זמין",
@@ -699,12 +704,14 @@
"Remove": "הסר",
"Remove Model": "הסר מודל",
"Rename": "שנה שם",
"Reorder Models": "",
"Repeat Last N": "חזור על ה-N האחרונים",
"Request Mode": "מצב בקשה",
"Reranking Model": "מודל דירוג מחדש",
"Reranking model disabled": "מודל דירוג מחדש מושבת",
"Reranking model set to \"{{reranking_model}}\"": "מודל דירוג מחדש הוגדר ל-\"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "समवर्ती अनुरोध",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "पासवर्ड की पुष्टि कीजिये",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "डिफ़ॉल्ट (SentenceTransformers)",
"Default Model": "डिफ़ॉल्ट मॉडल",
"Default model updated": "डिफ़ॉल्ट मॉडल अपडेट किया गया",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "डिफ़ॉल्ट प्रॉम्प्ट सुझाव",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "एपीआई कुंजी बनाने में विफल.",
"Failed to read clipboard contents": "क्लिपबोर्ड सामग्री पढ़ने में विफल",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "फरवरी",
@@ -570,6 +573,7 @@
"Modelfile Content": "मॉडल फ़ाइल सामग्री",
"Models": "सभी मॉडल",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "और..",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "कोई परिणाम नहीं मिला",
"No search query generated": "कोई खोज क्वेरी जनरेट नहीं हुई",
"No source available": "कोई स्रोत उपलब्ध नहीं है",
@@ -699,12 +704,14 @@
"Remove": "हटा दें",
"Remove Model": "मोडेल हटाएँ",
"Rename": "नाम बदलें",
"Reorder Models": "",
"Repeat Last N": "अंतिम N दोहराएँ",
"Request Mode": "अनुरोध मोड",
"Reranking Model": "रीरैकिंग मोड",
"Reranking model disabled": "पुनर्रैंकिंग मॉडल अक्षम किया गया",
"Reranking model set to \"{{reranking_model}}\"": "रीरैंकिंग मॉडल को \"{{reranking_model}}\" पर \u200b\u200bसेट किया गया",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Istodobni zahtjevi",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Potvrdite lozinku",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Zadano (SentenceTransformers)",
"Default Model": "Zadani model",
"Default model updated": "Zadani model ažuriran",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Zadani prijedlozi prompta",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Neuspješno stvaranje API ključa.",
"Failed to read clipboard contents": "Neuspješno čitanje sadržaja međuspremnika",
"Failed to save models configuration": "",
"Failed to update settings": "Greška kod ažuriranja postavki",
"Failed to upload file.": "",
"February": "Veljača",
@@ -570,6 +573,7 @@
"Modelfile Content": "Sadržaj datoteke modela",
"Models": "Modeli",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Više",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Nema rezultata",
"No search query generated": "Nije generiran upit za pretraživanje",
"No source available": "Nema dostupnog izvora",
@@ -699,12 +704,14 @@
"Remove": "Ukloni",
"Remove Model": "Ukloni model",
"Rename": "Preimenuj",
"Reorder Models": "",
"Repeat Last N": "Ponovi zadnjih N",
"Request Mode": "Način zahtjeva",
"Reranking Model": "Model za ponovno rangiranje",
"Reranking model disabled": "Model za ponovno rangiranje onemogućen",
"Reranking model set to \"{{reranking_model}}\"": "Model za ponovno rangiranje postavljen na \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "Poništi upload direktorij",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "Kiegészítések",
"Concurrent Requests": "Párhuzamos kérések",
"Configure": "",
"Configure Models": "",
"Confirm": "Megerősítés",
"Confirm Password": "Jelszó megerősítése",
"Confirm your action": "Erősítsd meg a műveletet",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Alapértelmezett (SentenceTransformers)",
"Default Model": "Alapértelmezett modell",
"Default model updated": "Alapértelmezett modell frissítve",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Alapértelmezett prompt javaslatok",
@@ -383,6 +385,7 @@
"Failed to add file.": "Nem sikerült hozzáadni a fájlt.",
"Failed to create API Key.": "Nem sikerült létrehozni az API kulcsot.",
"Failed to read clipboard contents": "Nem sikerült olvasni a vágólap tartalmát",
"Failed to save models configuration": "",
"Failed to update settings": "Nem sikerült frissíteni a beállításokat",
"Failed to upload file.": "Nem sikerült feltölteni a fájlt.",
"February": "Február",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modellfájl tartalom",
"Models": "Modellek",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "több",
"More": "Több",
@@ -589,6 +593,7 @@
"No knowledge found": "Nem található tudásbázis",
"No model IDs": "",
"No models found": "Nem található modell",
"No models selected": "",
"No results found": "Nincs találat",
"No search query generated": "Nem generálódott keresési lekérdezés",
"No source available": "Nincs elérhető forrás",
@@ -699,12 +704,14 @@
"Remove": "Eltávolítás",
"Remove Model": "Modell eltávolítása",
"Rename": "Átnevezés",
"Reorder Models": "",
"Repeat Last N": "Utolsó N ismétlése",
"Request Mode": "Kérési mód",
"Reranking Model": "Újrarangsoroló modell",
"Reranking model disabled": "Újrarangsoroló modell letiltva",
"Reranking model set to \"{{reranking_model}}\"": "Újrarangsoroló modell beállítva erre: \"{{reranking_model}}\"",
"Reset": "Visszaállítás",
"Reset All Models": "",
"Reset Upload Directory": "Feltöltési könyvtár visszaállítása",
"Reset Vector Storage/Knowledge": "Vektor tárhely/tudásbázis visszaállítása",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "A válasz értesítések nem aktiválhatók, mert a weboldal engedélyei meg lettek tagadva. Kérjük, látogasson el a böngésző beállításaihoz a szükséges hozzáférés megadásához.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Permintaan Bersamaan",
"Configure": "",
"Configure Models": "",
"Confirm": "Konfirmasi",
"Confirm Password": "Konfirmasi Kata Sandi",
"Confirm your action": "Konfirmasi tindakan Anda",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Default (Pengubah Kalimat)",
"Default Model": "Model Default",
"Default model updated": "Model default diperbarui",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Saran Permintaan Default",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Gagal membuat API Key.",
"Failed to read clipboard contents": "Gagal membaca konten papan klip",
"Failed to save models configuration": "",
"Failed to update settings": "Gagal memperbarui pengaturan",
"Failed to upload file.": "",
"February": "Februari",
@@ -570,6 +573,7 @@
"Modelfile Content": "Konten File Model",
"Models": "Model",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Lainnya",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Tidak ada hasil yang ditemukan",
"No search query generated": "Tidak ada permintaan pencarian yang dibuat",
"No source available": "Tidak ada sumber yang tersedia",
@@ -699,12 +704,14 @@
"Remove": "Hapus",
"Remove Model": "Hapus Model",
"Rename": "Ganti nama",
"Reorder Models": "",
"Repeat Last N": "Ulangi N Terakhir",
"Request Mode": "Mode Permintaan",
"Reranking Model": "Model Pemeringkatan Ulang",
"Reranking model disabled": "Model pemeringkatan ulang dinonaktifkan",
"Reranking model set to \"{{reranking_model}}\"": "Model pemeringkatan diatur ke \"{{reranking_model}}\"",
"Reset": "Atur Ulang",
"Reset All Models": "",
"Reset Upload Directory": "Setel Ulang Direktori Unggahan",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notifikasi respons tidak dapat diaktifkan karena izin situs web telah ditolak. Silakan kunjungi pengaturan browser Anda untuk memberikan akses yang diperlukan.",
@@ -167,6 +167,7 @@
"Completions": "Críochnaithe",
"Concurrent Requests": "Iarrataí Comhthéime",
"Configure": "Cumraigh",
"Configure Models": "",
"Confirm": "Deimhnigh",
"Confirm Password": "Deimhnigh Pasfhocal",
"Confirm your action": "Deimhnigh do ghníomh",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Réamhshocraithe (SentenceTransFormers)",
"Default Model": "Samhail Réamhshocraithe",
"Default model updated": "An tsamhail réamhshocraithe",
"Default Models": "",
"Default permissions": "Ceadanna réamhshocraithe",
"Default permissions updated successfully": "D'éirigh le ceadanna réamhshocraithe a nuashonrú",
"Default Prompt Suggestions": "Moltaí Pras Réamhshocraithe",
@@ -383,6 +385,7 @@
"Failed to add file.": "Theip ar an gcomhad a chur leis.",
"Failed to create API Key.": "Theip ar an eochair API a chruthú.",
"Failed to read clipboard contents": "Theip ar ábhar gearrthaisce a lé",
"Failed to save models configuration": "",
"Failed to update settings": "Theip ar shocruithe a nuashonrú",
"Failed to upload file.": "Theip ar uaslódáil an chomhaid.",
"February": "Feabhra",
@@ -570,6 +573,7 @@
"Modelfile Content": "Ábhar Modelfile",
"Models": "Múnlaí",
"Models Access": "Rochtain Múnlaí",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "níos mó",
"More": "Tuilleadh",
@@ -589,6 +593,7 @@
"No knowledge found": "Níor aimsíodh aon eolas",
"No model IDs": "Gan IDanna múnla",
"No models found": "Níor aimsíodh aon mhúnlaí",
"No models selected": "",
"No results found": "Níl aon torthaí le fáil",
"No search query generated": "Ní ghintear aon cheist cuardaigh",
"No source available": "Níl aon fhoinse ar fáil",
@@ -699,12 +704,14 @@
"Remove": "Bain",
"Remove Model": "Bain Múnla",
"Rename": "Athainmnigh",
"Reorder Models": "",
"Repeat Last N": "Déan an N deireanach arís",
"Request Mode": "Mód Iarratais",
"Reranking Model": "Múnla Athrangú",
"Reranking model disabled": "Samhail athrangú faoi mhíchumas",
"Reranking model set to \"{{reranking_model}}\"": "Samhail athrangú socraithe go \"{{reranking_model}}\"",
"Reset": "Athshocraigh",
"Reset All Models": "",
"Reset Upload Directory": "Athshocraigh Eolaire Uas",
"Reset Vector Storage/Knowledge": "Athshocraigh Stóráil/Eolas Veicteoir",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Ní féidir fógraí freagartha a ghníomhachtú toisc gur diúltaíodh ceadanna an tsuímh Ghréasáin. Tabhair cuairt ar do shocruithe brabhsálaí chun an rochtain riachtanach a dheonú.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Richieste simultanee",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Conferma password",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Predefinito (SentenceTransformers)",
"Default Model": "Modello di default",
"Default model updated": "Modello predefinito aggiornato",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Suggerimenti prompt predefiniti",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Impossibile creare la chiave API.",
"Failed to read clipboard contents": "Impossibile leggere il contenuto degli appunti",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "Febbraio",
@@ -570,6 +573,7 @@
"Modelfile Content": "Contenuto del file modello",
"Models": "Modelli",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Altro",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Nessun risultato trovato",
"No search query generated": "Nessuna query di ricerca generata",
"No source available": "Nessuna fonte disponibile",
@@ -699,12 +704,14 @@
"Remove": "Rimuovi",
"Remove Model": "Rimuovi modello",
"Rename": "Rinomina",
"Reorder Models": "",
"Repeat Last N": "Ripeti ultimi N",
"Request Mode": "Modalità richiesta",
"Reranking Model": "Modello di riclassificazione",
"Reranking model disabled": "Modello di riclassificazione disabilitato",
"Reranking model set to \"{{reranking_model}}\"": "Modello di riclassificazione impostato su \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "同時リクエスト",
"Configure": "",
"Configure Models": "",
"Confirm": "確認",
"Confirm Password": "パスワードを確認",
"Confirm your action": "あなたのアクションの確認",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "デフォルト (SentenceTransformers)",
"Default Model": "デフォルトモデル",
"Default model updated": "デフォルトモデルが更新されました",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "デフォルトのプロンプトの提案",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "APIキーの作成に失敗しました。",
"Failed to read clipboard contents": "クリップボードの内容を読み取れませんでした",
"Failed to save models configuration": "",
"Failed to update settings": "設定アップデート失敗",
"Failed to upload file.": "ファイルアップロード失敗",
"February": "2月",
@@ -570,6 +573,7 @@
"Modelfile Content": "モデルファイルの内容",
"Models": "モデル",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "もっと見る",
@@ -589,6 +593,7 @@
"No knowledge found": "知識が見つかりません",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "結果が見つかりません",
"No search query generated": "検索クエリは生成されません",
"No source available": "使用可能なソースがありません",
@@ -699,12 +704,14 @@
"Remove": "削除",
"Remove Model": "モデルを削除",
"Rename": "名前を変更",
"Reorder Models": "",
"Repeat Last N": "最後の N を繰り返す",
"Request Mode": "リクエストモード",
"Reranking Model": "モデルの再ランキング",
"Reranking model disabled": "再ランキングモデルが無効です",
"Reranking model set to \"{{reranking_model}}\"": "再ランキングモデルを \"{{reranking_model}}\" に設定しました",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "アップロードディレクトリをリセット",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "თანმხლები მოთხოვნები",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "პაროლის დამოწმება",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "დეფოლტ (SentenceTransformers)",
"Default Model": "ნაგულისხმები მოდელი",
"Default model updated": "დეფოლტ მოდელი განახლებულია",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "დეფოლტ პრომპტი პირველი პირველი",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "API ღილაკის შექმნა ვერ მოხერხდა.",
"Failed to read clipboard contents": "ბუფერში შიგთავსის წაკითხვა ვერ მოხერხდა",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "თებერვალი",
@@ -570,6 +573,7 @@
"Modelfile Content": "მოდელური ფაილის კონტენტი",
"Models": "მოდელები",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "ვრცლად",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "ჩვენ ვერ პოულობით ნაპოვნი ჩაწერები",
"No search query generated": "ძიების მოთხოვნა არ არის გენერირებული",
"No source available": "წყარო არ არის ხელმისაწვდომი",
@@ -699,12 +704,14 @@
"Remove": "პოპულარობის რაოდენობა",
"Remove Model": "პოპულარობის რაოდენობა",
"Rename": "პოპულარობის რაოდენობა",
"Reorder Models": "",
"Repeat Last N": "გაიმეორეთ ბოლო N",
"Request Mode": "მოთხოვნის რეჟიმი",
"Reranking Model": "რექვექტირება",
"Reranking model disabled": "რექვექტირება არაა ჩართული",
"Reranking model set to \"{{reranking_model}}\"": "Reranking model set to \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "완성됨",
"Concurrent Requests": "동시 요청 수",
"Configure": "",
"Configure Models": "",
"Confirm": "확인",
"Confirm Password": "비밀번호 확인",
"Confirm your action": "액션 확인",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "기본값 (SentenceTransformers)",
"Default Model": "기본 모델",
"Default model updated": "기본 모델이 업데이트되었습니다.",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "기본 프롬프트 제안",
@@ -383,6 +385,7 @@
"Failed to add file.": "파일추가에 실패했습니다",
"Failed to create API Key.": "API 키 생성에 실패했습니다.",
"Failed to read clipboard contents": "클립보드 내용 가져오기를 실패하였습니다.",
"Failed to save models configuration": "",
"Failed to update settings": "설정 업데이트에 실패하였습니다.",
"Failed to upload file.": "파일 업로드에 실패했습니다",
"February": "2월",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modelfile 내용",
"Models": "모델",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "더보기",
"More": "더보기",
@@ -589,6 +593,7 @@
"No knowledge found": "지식 기반 없음",
"No model IDs": "",
"No models found": "모델 없음",
"No models selected": "",
"No results found": "결과 없음",
"No search query generated": "검색어가 생성되지 않았습니다.",
"No source available": "사용 가능한 소스 없음",
@@ -699,12 +704,14 @@
"Remove": "삭제",
"Remove Model": "모델 삭제",
"Rename": "이름 변경",
"Reorder Models": "",
"Repeat Last N": "마지막 N 반복",
"Request Mode": "요청 모드",
"Reranking Model": "Reranking 모델",
"Reranking model disabled": "Reranking 모델 비활성화",
"Reranking model set to \"{{reranking_model}}\"": "Reranking 모델을 \"{{reranking_model}}\"로 설정",
"Reset": "초기화",
"Reset All Models": "",
"Reset Upload Directory": "업로드 디렉토리 초기화",
"Reset Vector Storage/Knowledge": "벡터 저장 공간/지식 기반 초기화",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "웹사이트 권환과 같이 응답 알림이 활성화될 수 없습니다. 필요한 접근을 사용하기 위해 브라우져 설정을 확인 부탁드립니다.",
+4
View File
@@ -43,6 +43,10 @@
"code": "es-ES",
"title": "Spanish (Español)"
},
{
"code": "eu-ES",
"title": "Basque (Euskara)"
},
{
"code": "fa-IR",
"title": "Persian (فارسی)"
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Kelios užklausos vienu metu",
"Configure": "",
"Configure Models": "",
"Confirm": "Patvrtinti",
"Confirm Password": "Patvirtinkite slaptažodį",
"Confirm your action": "Patvirtinkite veiksmą",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Numatytasis (SentenceTransformers)",
"Default Model": "Numatytasis modelis",
"Default model updated": "Numatytasis modelis atnaujintas",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Numatytieji užklausų pasiūlymai",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Nepavyko sukurti API rakto",
"Failed to read clipboard contents": "Nepavyko perskaityti kopijuoklės",
"Failed to save models configuration": "",
"Failed to update settings": "Nepavyko atnaujinti nustatymų",
"Failed to upload file.": "",
"February": "Vasaris",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modelio failo turinys",
"Models": "Modeliai",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Daugiau",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Rezultatų nerasta",
"No search query generated": "Paieškos užklausa nesugeneruota",
"No source available": "Šaltinių nerasta",
@@ -699,12 +704,14 @@
"Remove": "Pašalinti",
"Remove Model": "Pašalinti modelį",
"Rename": "Pervadinti",
"Reorder Models": "",
"Repeat Last N": "Pakartoti paskutinius N",
"Request Mode": "Užklausos rėžimas",
"Reranking Model": "Reranking modelis",
"Reranking model disabled": "Reranking modelis neleidžiamas",
"Reranking model set to \"{{reranking_model}}\"": "Nustatytas rereanking modelis: \"{{reranking_model}}\"",
"Reset": "Atkurti",
"Reset All Models": "",
"Reset Upload Directory": "Atkurti įkėlimų direktoiją",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Naršyklė neleidžia siųsti pranešimų",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Permintaan Serentak",
"Configure": "",
"Configure Models": "",
"Confirm": "Sahkan",
"Confirm Password": "Sahkan kata laluan",
"Confirm your action": "Sahkan tindakan anda",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Lalai (SentenceTransformers)",
"Default Model": "Model Lalai",
"Default model updated": "Model lalai dikemas kini",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Cadangan Gesaan Lalai",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Gagal mencipta kekunci API",
"Failed to read clipboard contents": "Gagal membaca konten papan klip",
"Failed to save models configuration": "",
"Failed to update settings": "Gagal mengemaskini tetapan",
"Failed to upload file.": "",
"February": "Febuari",
@@ -570,6 +573,7 @@
"Modelfile Content": "Kandungan Modelfail",
"Models": "Model",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Lagi",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Tiada keputusan dijumpai",
"No search query generated": "Tiada pertanyaan carian dijana",
"No source available": "Tiada sumber tersedia",
@@ -699,12 +704,14 @@
"Remove": "Hapuskan",
"Remove Model": "Hapuskan Model",
"Rename": "Namakan Semula",
"Reorder Models": "",
"Repeat Last N": "Ulang N Terakhir",
"Request Mode": "Mod Permintaan",
"Reranking Model": "Model 'Reranking'",
"Reranking model disabled": "Model 'Reranking' dilumpuhkan",
"Reranking model set to \"{{reranking_model}}\"": "Model 'Reranking' ditetapkan kepada \"{{reranking_model}}\"",
"Reset": "Tetapkan Semula",
"Reset All Models": "",
"Reset Upload Directory": "Tetapkan Semula Direktori Muat Naik",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Pemberitahuan respons tidak boleh diaktifkan kerana kebenaran tapak web tidak diberi. Sila lawati tetapan pelayar web anda untuk memberikan akses yang diperlukan.",
@@ -167,6 +167,7 @@
"Completions": "Fullføringer",
"Concurrent Requests": "Samtidige forespørsler",
"Configure": "Konfigurer",
"Configure Models": "",
"Confirm": "Bekreft",
"Confirm Password": "Bekreft passordet",
"Confirm your action": "Bekreft handlingen",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
"Default Model": "Standard modell",
"Default model updated": "Standard modell oppdatert",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Standard forslag til ledetekster",
@@ -383,6 +385,7 @@
"Failed to add file.": "Kan ikke legge til filen.",
"Failed to create API Key.": "Kan ikke opprette en API-nøkkel.",
"Failed to read clipboard contents": "Kan ikke lese innhold på utklippstavlen",
"Failed to save models configuration": "",
"Failed to update settings": "Kan ikke oppdatere innstillinger",
"Failed to upload file.": "Kan ikke laste opp filen.",
"February": "februar",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modellfilinnhold",
"Models": "Modeller",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "mer",
"More": "Mer",
@@ -589,6 +593,7 @@
"No knowledge found": "Finner ingen kunnskaper",
"No model IDs": "",
"No models found": "Finner ingen modeller",
"No models selected": "",
"No results found": "Finner ingen resultater",
"No search query generated": "Ingen søkespørringer er generert",
"No source available": "Ingen kilde tilgjengelig",
@@ -699,12 +704,14 @@
"Remove": "Fjern",
"Remove Model": "Fjern modell",
"Rename": "Gi nytt navn",
"Reorder Models": "",
"Repeat Last N": "Gjenta siste N",
"Request Mode": "Forespørselsmodus",
"Reranking Model": "Omrangeringsmodell",
"Reranking model disabled": "Omrangeringsmodell deaktivert",
"Reranking model set to \"{{reranking_model}}\"": "Omrangeringsmodell er angitt til \"{{reranking_model}}\"",
"Reset": "Tilbakestill",
"Reset All Models": "",
"Reset Upload Directory": "Tilbakestill opplastingskatalog",
"Reset Vector Storage/Knowledge": "Tilbakestill Vector lagring/kunnskap",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Svar-varsler kan ikke aktiveres fordi tilgang til nettstedet er nektet. Gå til nettleserinnstillingene dine for å gi den nødvendige tilgangen.",
+8 -1
View File
@@ -167,6 +167,7 @@
"Completions": "Voltooiingen",
"Concurrent Requests": "Gelijktijdige verzoeken",
"Configure": "Configureer",
"Configure Models": "",
"Confirm": "Bevestigen",
"Confirm Password": "Bevestig wachtwoord",
"Confirm your action": "Bevestig uw actie",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Standaard (SentenceTransformers)",
"Default Model": "Standaard model",
"Default model updated": "Standaard model bijgewerkt",
"Default Models": "",
"Default permissions": "Standaardrechten",
"Default permissions updated successfully": "Standaardrechten succesvol bijgewerkt",
"Default Prompt Suggestions": "Standaard Prompt Suggesties",
@@ -383,6 +385,7 @@
"Failed to add file.": "Het is niet gelukt om het bestand toe te voegen.",
"Failed to create API Key.": "Kan API Key niet aanmaken.",
"Failed to read clipboard contents": "Kan klembord inhoud niet lezen",
"Failed to save models configuration": "",
"Failed to update settings": "Instellingen konden niet worden bijgewerkt.",
"Failed to upload file.": "Bestand kon niet worden geüpload.",
"February": "Februari",
@@ -441,7 +444,7 @@
"Group Description": "Groepsbeschrijving",
"Group Name": "Groepsnaam",
"Group updated successfully": "Groep succesvol bijgewerkt",
"Groups": "GRoepen",
"Groups": "Groepen",
"h:mm a": "h:mm a",
"Haptic Feedback": "Haptische feedback",
"has no conversations.": "heeft geen gesprekken.",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modelfile Inhoud",
"Models": "Modellen",
"Models Access": "Modellentoegang",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "Meer",
"More": "Meer",
@@ -589,6 +593,7 @@
"No knowledge found": "Geen kennis gevonden",
"No model IDs": "Geen model-ID's",
"No models found": "Geen modellen gevonden",
"No models selected": "",
"No results found": "Geen resultaten gevonden",
"No search query generated": "Geen zoekopdracht gegenereerd",
"No source available": "Geen bron beschikbaar",
@@ -699,12 +704,14 @@
"Remove": "Verwijderen",
"Remove Model": "Verwijder model",
"Rename": "Hernoemen",
"Reorder Models": "",
"Repeat Last N": "Herhaal Laatste N",
"Request Mode": "Request Modus",
"Reranking Model": "Reranking Model",
"Reranking model disabled": "Reranking model uitgeschakeld",
"Reranking model set to \"{{reranking_model}}\"": "Reranking model ingesteld op \"{{reranking_model}}\"",
"Reset": "Herstellen",
"Reset All Models": "",
"Reset Upload Directory": "Herstel Uploadmap",
"Reset Vector Storage/Knowledge": "Herstel Vectoropslag/-kennis",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Antwoordmeldingen kunnen niet worden geactiveerd omdat de rechten voor de website zijn geweigerd. Ga naar de instellingen van uw browser om de benodigde toegang te verlenen.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "ਸਮਕਾਲੀ ਬੇਨਤੀਆਂ",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "ਪਾਸਵਰਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "ਮੂਲ (ਸੈਂਟੈਂਸਟ੍ਰਾਂਸਫਾਰਮਰਸ)",
"Default Model": "ਡਿਫਾਲਟ ਮਾਡਲ",
"Default model updated": "ਮੂਲ ਮਾਡਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "ਮੂਲ ਪ੍ਰੰਪਟ ਸੁਝਾਅ",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "API ਕੁੰਜੀ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ।",
"Failed to read clipboard contents": "ਕਲਿੱਪਬੋਰਡ ਸਮੱਗਰੀ ਪੜ੍ਹਣ ਵਿੱਚ ਅਸਫਲ",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "ਫਰਵਰੀ",
@@ -570,6 +573,7 @@
"Modelfile Content": "ਮਾਡਲਫਾਈਲ ਸਮੱਗਰੀ",
"Models": "ਮਾਡਲ",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "ਹੋਰ",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ",
"No search query generated": "ਕੋਈ ਖੋਜ ਪੁੱਛਗਿੱਛ ਤਿਆਰ ਨਹੀਂ ਕੀਤੀ ਗਈ",
"No source available": "ਕੋਈ ਸਰੋਤ ਉਪਲਬਧ ਨਹੀਂ",
@@ -699,12 +704,14 @@
"Remove": "ਹਟਾਓ",
"Remove Model": "ਮਾਡਲ ਹਟਾਓ",
"Rename": "ਨਾਮ ਬਦਲੋ",
"Reorder Models": "",
"Repeat Last N": "ਆਖਰੀ N ਨੂੰ ਦੁਹਰਾਓ",
"Request Mode": "ਬੇਨਤੀ ਮੋਡ",
"Reranking Model": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ",
"Reranking model disabled": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ ਅਯੋਗ ਕੀਤਾ ਗਿਆ",
"Reranking model set to \"{{reranking_model}}\"": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ ਨੂੰ \"{{reranking_model}}\" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Równoczesne żądania",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Potwierdź hasło",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Domyślny (SentenceTransformers)",
"Default Model": "Model domyślny",
"Default model updated": "Domyślny model zaktualizowany",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Domyślne sugestie promptów",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Nie udało się utworzyć klucza API.",
"Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "Luty",
@@ -570,6 +573,7 @@
"Modelfile Content": "Zawartość pliku modelu",
"Models": "Modele",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Więcej",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Nie znaleziono rezultatów",
"No search query generated": "Nie wygenerowano zapytania wyszukiwania",
"No source available": "Źródło nie dostępne",
@@ -699,12 +704,14 @@
"Remove": "Usuń",
"Remove Model": "Usuń model",
"Rename": "ZMień nazwę",
"Reorder Models": "",
"Repeat Last N": "Powtórz ostatnie N",
"Request Mode": "Tryb żądania",
"Reranking Model": "Zmiana rankingu modelu",
"Reranking model disabled": "Zmiana rankingu modelu zablokowana",
"Reranking model set to \"{{reranking_model}}\"": "Zmiana rankingu modelu ustawiona na \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
+123 -116
View File
@@ -18,7 +18,7 @@
"Account Activation Pending": "Ativação da Conta Pendente",
"Accurate information": "Informação precisa",
"Actions": "Ações",
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "",
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Ativar esse comando no chat digitando \"/{{COMMAND}}\"",
"Active Users": "Usuários Ativos",
"Add": "Adicionar",
"Add a model ID": "Adicione um ID de modelo",
@@ -43,26 +43,26 @@
"Admin": "Admin",
"Admin Panel": "Painel do Admin",
"Admin Settings": "Configurações do Admin",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Os admins têm acesso a todas as ferramentas o tempo todo; os usuários precisam de ferramentas atribuídas por modelo no workspace.",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Os admins têm acesso a todas as ferramentas o tempo todo; os usuários precisam de ferramentas atribuídas, por modelo, no workspace.",
"Advanced Parameters": "Parâmetros Avançados",
"Advanced Params": "Parâmetros Avançados",
"All chats": "Todos os chats",
"All Documents": "Todos os Documentos",
"All models deleted successfully": "",
"Allow Chat Delete": "Permitir exclusão de Chats",
"All models deleted successfully": "Todos os modelos foram excluídos com sucesso",
"Allow Chat Delete": "Permitir Exclusão de Chats",
"Allow Chat Deletion": "Permitir Exclusão de Chats",
"Allow Chat Edit": "Permitir edição de Chats",
"Allow File Upload": "Permitir envio de arquivos",
"Allow Chat Edit": "Permitir Edição de Chats",
"Allow File Upload": "Permitir Envio de arquivos",
"Allow non-local voices": "Permitir vozes não locais",
"Allow Temporary Chat": "Permitir Conversa Temporária",
"Allow User Location": "Permitir Localização do Usuário",
"Allow Voice Interruption in Call": "Permitir Interrupção de Voz na Chamada",
"Already have an account?": "Já tem uma conta?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
"Amazing": "",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa ao 'top_p', e visa garantir um equilíbrio entre qualidade e variedade. O parâmetro 'p' representa a probabilidade mínima para que um token seja considerado, em relação à probabilidade do token mais provável. Por exemplo, com 'p=0.05' e o token mais provável com probabilidade de '0.9', as predições com valor inferior a '0.045' são filtrados. (Default: 0.0)",
"Amazing": "Incrível",
"an assistant": "um assistente",
"and": "e",
"and {{COUNT}} more": "e {{COUNT}} mais",
"and {{COUNT}} more": "e mais {{COUNT}}",
"and create a new shared link.": "e criar um novo link compartilhado.",
"API Base URL": "URL Base da API",
"API Key": "Chave API",
@@ -76,9 +76,9 @@
"Archive All Chats": "Arquivar Todos os Chats",
"Archived Chats": "Chats Arquivados",
"archived-chat-export": "",
"Are you sure you want to unarchive all archived chats?": "Você tem certeza que deseja arquivar todos os chats?",
"Are you sure you want to unarchive all archived chats?": "Você tem certeza que deseja desarquivar todos os chats arquivados?",
"Are you sure?": "Você tem certeza?",
"Arena Models": "Modelos Arena",
"Arena Models": "Arena de Modelos",
"Artifacts": "Artefatos",
"Ask a question": "Faça uma pergunta",
"Assistant": "Assistente",
@@ -96,13 +96,13 @@
"AUTOMATIC1111 Base URL is required.": "URL Base AUTOMATIC1111 é necessária.",
"Available list": "Lista disponível",
"available!": "disponível!",
"Awful": "",
"Awful": "Horrível",
"Azure AI Speech": "",
"Azure Region": "",
"Back": "Voltar",
"Bad Response": "Resposta Ruim",
"Banners": "Banners",
"Base Model (From)": "Modelo Base (From)",
"Base Model (From)": "Modelo Base (De)",
"Batch Size (num_batch)": "Tamanho do Lote (num_batch)",
"before": "antes",
"Being lazy": "Sendo preguiçoso",
@@ -116,10 +116,10 @@
"Camera": "Câmera",
"Cancel": "Cancelar",
"Capabilities": "Capacidades",
"Certificate Path": "",
"Certificate Path": "Caminho do Certificado",
"Change Password": "Mudar Senha",
"Character": "Caracter",
"Chart new frontiers": "",
"Chart new frontiers": "Trace novas fronteiras",
"Chat": "Chat",
"Chat Background Image": "Imagem de Fundo do Chat",
"Chat Bubble UI": "Interface de Bolha de Chat",
@@ -147,7 +147,7 @@
"Click here to learn more about faster-whisper and see the available models.": "Clique aqui para aprender mais sobre Whisper e ver os modelos disponíveis.",
"Click here to select": "Clique aqui para enviar",
"Click here to select a csv file.": "Clique aqui para enviar um arquivo csv.",
"Click here to select a py file.": "Clique aqui para enviar um arquivo py.",
"Click here to select a py file.": "Clique aqui para enviar um arquivo python.",
"Click here to upload a workflow.json file.": "Clique aqui para enviar um arquivo workflow.json.",
"click here.": "clique aqui.",
"Click on the user role button to change a user's role.": "Clique no botão de função do usuário para alterar a função de um usuário.",
@@ -167,6 +167,7 @@
"Completions": "Conclusões",
"Concurrent Requests": "Solicitações Concomitantes",
"Configure": "Configurar",
"Configure Models": "",
"Confirm": "Confirmar",
"Confirm Password": "Confirmar Senha",
"Confirm your action": "Confirme sua ação",
@@ -174,7 +175,7 @@
"Contact Admin for WebUI Access": "Contate o Admin para Acesso ao WebUI",
"Content": "Conteúdo",
"Content Extraction": "Extração de Conteúdo",
"Context Length": "Context Length",
"Context Length": "Tamanho de Contexto",
"Continue Response": "Continuar Resposta",
"Continue with {{provider}}": "Continuar com {{provider}}",
"Continue with Email": "Continuar com Email",
@@ -196,8 +197,8 @@
"Create a model": "Criar um modelo",
"Create Account": "Criar Conta",
"Create Admin Account": "Criar Conta de Admin",
"Create Group": "Criar grupo",
"Create Knowledge": "Criar conhecimento",
"Create Group": "Criar Grupo",
"Create Knowledge": "Criar Conhecimento",
"Create new key": "Criar nova chave",
"Create new secret key": "Criar nova chave secreta",
"Created at": "Criado em",
@@ -215,28 +216,29 @@
"Default (SentenceTransformers)": "Padrão (SentenceTransformers)",
"Default Model": "Modelo Padrão",
"Default model updated": "Modelo padrão atualizado",
"Default Models": "",
"Default permissions": "Permissões padrão",
"Default permissions updated successfully": "",
"Default permissions updated successfully": "Permissões padrão atualizadas com sucesso",
"Default Prompt Suggestions": "Sugestões de Prompt Padrão",
"Default to 389 or 636 if TLS is enabled": "",
"Default to ALL": "Padrão para todos",
"Default to ALL": "Padrão para TODOS",
"Default User Role": "Padrão para novos usuários",
"Delete": "Deletar",
"Delete a model": "Deletar um modelo",
"Delete All Chats": "Deletar Todos os Chats",
"Delete All Models": "",
"Delete chat": "Deletar chat",
"Delete Chat": "Deletar Chat",
"Delete chat?": "Deletar chat?",
"Delete folder?": "Deletar pasta?",
"Delete function?": "Deletar função?",
"Delete prompt?": "Deletar prompt?",
"delete this link": "deletar este link",
"Delete tool?": "Deletar ferramenta?",
"Delete User": "Deletar Usuário",
"Deleted {{deleteModelTag}}": "Deletado {{deleteModelTag}}",
"Deleted {{name}}": "Deletado {{name}}",
"Deleted User": "",
"Delete": "Excluir",
"Delete a model": "Excluir um modelo",
"Delete All Chats": "Excluir Todos os Chats",
"Delete All Models": "Excluir Todos os Modelos",
"Delete chat": "Excluir chat",
"Delete Chat": "Excluir Chat",
"Delete chat?": "Excluir chat?",
"Delete folder?": "Excluir pasta?",
"Delete function?": "Excluir função?",
"Delete prompt?": "Excluir prompt?",
"delete this link": "Excluir este link",
"Delete tool?": "Excluir ferramenta?",
"Delete User": "Excluir Usuário",
"Deleted {{deleteModelTag}}": "Excluído {{deleteModelTag}}",
"Deleted {{name}}": "Excluído {{name}}",
"Deleted User": "Usuário Excluído",
"Describe your knowledge base and objectives": "Descreva sua base de conhecimento e objetivos",
"Description": "Descrição",
"Didn't fully follow instructions": "Não seguiu completamente as instruções",
@@ -254,7 +256,7 @@
"Display": "Exibir",
"Display Emoji in Call": "Exibir Emoji na Chamada",
"Display the username instead of You in the Chat": "Exibir o nome de usuário em vez de Você no Chat",
"Displays citations in the response": "",
"Displays citations in the response": "Exibir citações na resposta",
"Dive into knowledge": "Explorar base de conhecimento",
"Do not install functions from sources you do not fully trust.": "Não instale funções de fontes que você não confia totalmente.",
"Do not install tools from sources you do not fully trust.": "Não instale ferramentas de fontes que você não confia totalmente.",
@@ -270,23 +272,23 @@
"Download": "Baixar",
"Download canceled": "Download cancelado",
"Download Database": "Baixar Banco de Dados",
"Drag and drop a file to upload or select a file to view": "",
"Drag and drop a file to upload or select a file to view": "Arraste e solte um arquivo para enviar ou selecione um arquivo para visualizar",
"Draw": "Empate",
"Drop any files here to add to the conversation": "Solte qualquer arquivo aqui para adicionar à conversa",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.",
"e.g. A filter to remove profanity from text": "Exemplo: Um filtro para remover o homofobia de texto",
"e.g. My Filter": "Exemplo: Um filtro",
"e.g. My Tools": "Exemplo: Minhas ferramentas",
"e.g. A filter to remove profanity from text": "Exemplo: Um filtro para remover palavrões do texto",
"e.g. My Filter": "Exemplo: Meu Filtro",
"e.g. My Tools": "Exemplo: Minhas Ferramentas",
"e.g. my_filter": "Exemplo: my_filter",
"e.g. my_tools": "Exemplo: my_tools",
"e.g. Tools for performing various operations": "Exemplo: Ferramentas para executar operações diversas",
"Edit": "Editar",
"Edit Arena Model": "Editar Modelo Arena",
"Edit Connection": "Editar conexão",
"Edit Default Permissions": "Editar permissões padrão",
"Edit Arena Model": "Editar Arena de Modelos",
"Edit Connection": "Editar Conexão",
"Edit Default Permissions": "Editar Permissões Padrão",
"Edit Memory": "Editar Memória",
"Edit User": "Editar Usuário",
"Edit User Group": "Editar grupo de usuários",
"Edit User Group": "Editar Grupo de Usuários",
"ElevenLabs": "",
"Email": "Email",
"Embark on adventures": "Embarque em aventuras",
@@ -294,15 +296,15 @@
"Embedding Model": "Modelo de Embedding",
"Embedding Model Engine": "Motor do Modelo de Embedding",
"Embedding model set to \"{{embedding_model}}\"": "Modelo de embedding definido para \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key Auth": "Ativar Autenticação por API Key",
"Enable Community Sharing": "Ativar Compartilhamento com a Comunidade",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Habilite o bloqueio de memória (mlock) para evitar que os dados do modelo sejam transferidos da RAM para a área de troca (swap). Essa opção bloqueia o conjunto de páginas em uso pelo modelo na RAM, garantindo que elas não sejam transferidas para o disco. Isso pode ajudar a manter o desempenho, evitando falhas de página e garantindo acesso rápido aos dados.",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Habilite o mapeamento de memória (mmap) para carregar dados do modelo. Esta opção permite que o sistema use o armazenamento em disco como uma extensão da RAM, tratando os arquivos do disco como se estivessem na RAM. Isso pode melhorar o desempenho do modelo, permitindo acesso mais rápido aos dados. No entanto, pode não funcionar corretamente com todos os sistemas e consumir uma quantidade significativa de espaço em disco.",
"Enable Message Rating": "Habilitar Avaliação de Mensagens",
"Enable Message Rating": "Ativar Avaliação de Mensagens",
"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "Habilite a amostragem Mirostat para controlar a perplexidade. (Padrão: 0, 0 = Desativado, 1 = Mirostat, 2 = Mirostat 2.0)",
"Enable New Sign Ups": "Ativar Novos Cadastros",
"Enable Retrieval Query Generation": "",
"Enable Tags Generation": "Habilitar geração de Tags",
"Enable Retrieval Query Generation": "Ativar Geração Baseada em Busca",
"Enable Tags Generation": "Habilitar Geração de Tags",
"Enable Web Search": "Ativar Pesquisa na Web",
"Enable Web Search Query Generation": "Habilitar Geração de Consultas na Web",
"Enabled": "Ativado",
@@ -329,7 +331,7 @@
"Enter language codes": "Digite os códigos de idioma",
"Enter Model ID": "Digite o ID do modelo",
"Enter model tag (e.g. {{modelTag}})": "Digite a tag do modelo (por exemplo, {{modelTag}})",
"Enter Mojeek Search API Key": "",
"Enter Mojeek Search API Key": "Digite a Chave API do Mojeek Search",
"Enter Number of Steps (e.g. 50)": "Digite o Número de Passos (por exemplo, 50)",
"Enter Sampler (e.g. Euler a)": "Digite o Sampler (por exemplo, Euler a)",
"Enter Scheduler (e.g. Karras)": "Digite o Agendador (por exemplo, Karras)",
@@ -359,11 +361,11 @@
"Enter Your Username": "Digite seu usuário",
"Error": "Erro",
"ERROR": "",
"Evaluations": "Evoluções",
"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Examplo: (&(objectClass=inetOrgPerson)(uid=%s))",
"Example: ALL": "Examplo: ALL",
"Example: ou=users,dc=foo,dc=example": "Examplo: ou=users,dc=foo,dc=example",
"Example: sAMAccountName or uid or userPrincipalName": "Examplo: sAMAccountName or uid or userPrincipalName",
"Evaluations": "Avaliações",
"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemplo: (&(objectClass=inetOrgPerson)(uid=%s))",
"Example: ALL": "Exemplo: ALL",
"Example: ou=users,dc=foo,dc=example": "Exemplo: ou=users,dc=foo,dc=example",
"Example: sAMAccountName or uid or userPrincipalName": "Exemplo: sAMAccountName ou uid ou userPrincipalName",
"Exclude": "Excluir",
"Experimental": "Experimental",
"Explore the cosmos": "Explorar o cosmos",
@@ -383,11 +385,12 @@
"Failed to add file.": "Falha ao adicionar arquivo.",
"Failed to create API Key.": "Falha ao criar a Chave API.",
"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
"Failed to save models configuration": "",
"Failed to update settings": "Falha ao atualizar as configurações",
"Failed to upload file.": "Falha ao carregar o arquivo.",
"February": "Fevereiro",
"Feedback History": "Histórico de comentários",
"Feedbacks": "",
"Feedbacks": "Comentários",
"Feel free to add specific details": "Sinta-se à vontade para adicionar detalhes específicos",
"File": "Arquivo",
"File added successfully.": "Arquivo adicionado com sucesso.",
@@ -403,23 +406,23 @@
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Falsificação de impressão digital detectada: Não foi possível usar as iniciais como avatar. Usando a imagem de perfil padrão.",
"Fluidly stream large external response chunks": "Transmitir fluentemente grandes blocos de respostas externas",
"Focus chat input": "Focar entrada de chat",
"Folder deleted successfully": "Pasta deletada com sucesso",
"Folder name cannot be empty": "Nome da pasta não pode estar vazia",
"Folder name cannot be empty.": "Nome da pasta não pode estar vazia.",
"Folder deleted successfully": "Pasta excluída com sucesso",
"Folder name cannot be empty": "Nome da pasta não pode estar vazio",
"Folder name cannot be empty.": "Nome da pasta não pode estar vazio.",
"Folder name updated successfully": "Nome da pasta atualizado com sucesso",
"Followed instructions perfectly": "Seguiu as instruções perfeitamente",
"Forge new paths": "Trilhar novos caminhos",
"Form": "Formulário",
"Format your variables using brackets like this:": "Formate suas variáveis usando colchetes como este:",
"Frequency Penalty": "Frequency Penalty",
"Frequency Penalty": "Penalização por Frequência",
"Function": "Função",
"Function created successfully": "Função criada com sucesso",
"Function deleted successfully": "Função deletada com sucesso",
"Function Description": "Descrição da função",
"Function deleted successfully": "Função excluída com sucesso",
"Function Description": "Descrição da Função",
"Function ID": "ID da Função",
"Function is now globally disabled": "A função está agora desativada globalmente",
"Function is now globally enabled": "A função está agora ativada globalmente",
"Function Name": "Nome da função",
"Function Name": "Nome da Função",
"Function updated successfully": "Função atualizada com sucesso",
"Functions": "Funções",
"Functions allow arbitrary code execution": "Funções permitem a execução arbitrária de código",
@@ -437,9 +440,9 @@
"Google PSE API Key": "Chave API do Google PSE",
"Google PSE Engine Id": "ID do Motor do Google PSE",
"Group created successfully": "Grupo criado com sucesso",
"Group deleted successfully": "Grupo deletado com sucesso",
"Group Description": "Descrição do grupo",
"Group Name": "Nome do grupo",
"Group deleted successfully": "Grupo excluído com sucesso",
"Group Description": "Descrição do Grupo",
"Group Name": "Nome do Grupo",
"Group updated successfully": "Grupo atualizado com sucesso",
"Groups": "Grupos",
"h:mm a": "h:mm a",
@@ -447,13 +450,13 @@
"has no conversations.": "não tem conversas.",
"Hello, {{name}}": "Olá, {{name}}",
"Help": "Ajuda",
"Help us create the best community leaderboard by sharing your feedback history!": "Ajude-nos a criar o melhor ranking da comunidade compartilhando sua historial de comentaários!",
"Help us create the best community leaderboard by sharing your feedback history!": "Ajude-nos a criar o melhor ranking da comunidade compartilhando sua historia de comentários!",
"Hex Color": "Cor hexadecimal",
"Hex Color - Leave empty for default color": "Cor Hexadecimal - Deixe em branco para a cor padrão",
"Hide": "Ocultar",
"Host": "Servidor",
"How can I help you today?": "Como posso ajudar você hoje?",
"How would you rate this response?": "",
"How would you rate this response?": "Como você avalia essa resposta?",
"Hybrid Search": "Pesquisa 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.": "Eu reconheço que li e entendi as implicações da minha ação. Estou ciente dos riscos associados à execução de código arbitrário e verifiquei a confiabilidade da fonte.",
"ID": "",
@@ -498,7 +501,7 @@
"Knowledge deleted successfully.": "Conhecimento excluído com sucesso.",
"Knowledge reset successfully.": "Conhecimento resetado com sucesso.",
"Knowledge updated successfully": "Conhecimento atualizado com sucesso",
"Label": "",
"Label": "Rótulo",
"Landing Page Mode": "Modo Landing Page",
"Language": "Idioma",
"Last Active": "Última Atividade",
@@ -516,13 +519,13 @@
"LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.",
"Local": "",
"Local Models": "Modelos Locais",
"Lost": "Negativo",
"LTR": "LTR",
"Lost": "Perdeu",
"LTR": "Esquerda para Direita",
"Made by OpenWebUI Community": "Feito pela Comunidade OpenWebUI",
"Make sure to enclose them with": "Certifique-se de encerrá-los com",
"Make sure to export a workflow.json file as API format from ComfyUI.": "Certifique-se de exportar um arquivo workflow.json como o formato API do ComfyUI.",
"Manage": "Gerenciar",
"Manage Arena Models": "Gerenciar Modelos Arena",
"Manage Arena Models": "Gerenciar Arena de Modelos",
"Manage Ollama": "Gerenciar Ollama",
"Manage Ollama API Connections": "Gerenciar Conexões Ollama API",
"Manage OpenAI API Connections": "Gerenciar Conexões OpenAI API",
@@ -565,12 +568,13 @@
"Model Name": "Nome do Modelo",
"Model not selected": "Modelo não selecionado",
"Model Params": "Parâmetros do Modelo",
"Model Permissions": "Permissões do modelo",
"Model Permissions": "Permissões do Modelo",
"Model updated successfully": "Modelo atualizado com sucesso",
"Modelfile Content": "Conteúdo do Arquivo do Modelo",
"Models": "Modelos",
"Models Access": "Acesso aos Modelos",
"Mojeek Search API Key": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "Chave de API Mojeel Search",
"more": "mais",
"More": "Mais",
"Name": "Nome",
@@ -584,11 +588,12 @@
"No feedbacks found": "Comentários não encontrados",
"No file selected": "Nenhum arquivo selecionado",
"No files found.": "Nenhum arquivo encontrado.",
"No groups with access, add a group to grant access": "",
"No groups with access, add a group to grant access": "Nenhum grupo com acesso, adicione um grupo para dar acesso",
"No HTML, CSS, or JavaScript content found.": "Nenhum conteúdo HTML, CSS ou JavaScript encontrado.",
"No knowledge found": "nenhum conhecimento encontrado",
"No knowledge found": "Nenhum conhecimento encontrado",
"No model IDs": "Nenhum ID de modelo",
"No models found": "Nenhum modelo encontrado",
"No models selected": "",
"No results found": "Nenhum resultado encontrado",
"No search query generated": "Nenhuma consulta de pesquisa gerada",
"No source available": "Nenhuma fonte disponível",
@@ -601,8 +606,8 @@
"Notes": "Notas",
"Notifications": "Notificações",
"November": "Novembro",
"num_gpu (Ollama)": "",
"num_thread (Ollama)": "num_thread (Ollama)",
"num_gpu (Ollama)": "Número de GPUs (Ollama)",
"num_thread (Ollama)": "Número de Threads (Ollama)",
"OAuth ID": "OAuth ID",
"October": "Outubro",
"Off": "Desligado",
@@ -611,7 +616,7 @@
"Ollama": "Ollama",
"Ollama API": "API Ollama",
"Ollama API disabled": "API Ollama desativada",
"Ollama API settings updated": "",
"Ollama API settings updated": "Configurações da API Ollama atualizadas",
"Ollama Version": "Versão Ollama",
"On": "Ligado",
"Only alphanumeric characters and hyphens are allowed": "Somente caracteres alfanuméricos e hífens são permitidos",
@@ -625,7 +630,7 @@
"Open file": "Abrir arquivo",
"Open in full screen": "Abrir em tela cheia",
"Open new chat": "Abrir novo chat",
"Open WebUI uses faster-whisper internally.": "Open WebUI usa reconhecimento de fala rápido mais rápido internamente.",
"Open WebUI uses faster-whisper internally.": "Open WebUI usa faster-whisper internamente.",
"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "A Open WebUI usa os embeddings de voz do SpeechT5 e do CMU Arctic.",
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "A versão do Open WebUI (v{{OPEN_WEBUI_VERSION}}) é inferior à versão necessária (v{{REQUIRED_VERSION}})",
"OpenAI": "OpenAI",
@@ -642,7 +647,7 @@
"Overview": "Visão Geral",
"page": "página",
"Password": "Senha",
"Paste Large Text as File": "",
"Paste Large Text as File": "Cole Textos Longos como Arquivo",
"PDF document (.pdf)": "Documento PDF (.pdf)",
"PDF Extract Images (OCR)": "Extrair Imagens do PDF (OCR)",
"pending": "pendente",
@@ -653,7 +658,7 @@
"Personalization": "Personalização",
"Pin": "Fixar",
"Pinned": "Fixado",
"Pioneer insights": "",
"Pioneer insights": "Insights pioneiros",
"Pipeline deleted successfully": "Pipeline excluído com sucesso",
"Pipeline downloaded successfully": "Pipeline baixado com sucesso",
"Pipelines": "Pipelines",
@@ -681,7 +686,7 @@
"Prompts Access": "Acessar prompts",
"Pull \"{{searchValue}}\" from Ollama.com": "Obter \"{{searchValue}}\" de Ollama.com",
"Pull a model from Ollama.com": "Obter um modelo de Ollama.com",
"Query Generation Prompt": "",
"Query Generation Prompt": "Prompt de Geração de Consulta",
"Query Params": "Parâmetros de Consulta",
"RAG Template": "Modelo RAG",
"Rating": "Avaliação",
@@ -689,22 +694,24 @@
"Read Aloud": "Ler em Voz Alta",
"Record voice": "Gravar voz",
"Redirecting you to OpenWebUI Community": "Redirecionando você para a Comunidade OpenWebUI",
"Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "",
"Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "Reduz a probabilidade de gerar absurdos. Um valor mais alto (por exemplo, 100) dará respostas mais diversas, enquanto um valor mais baixo (por exemplo, 10) será mais conservador. (Padrão: 40)",
"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Refira-se como \"Usuário\" (por exemplo, \"Usuário está aprendendo espanhol\")",
"References from": "Referências de",
"Refused when it shouldn't have": "Recusado quando não deveria",
"Regenerate": "Regenerar",
"Regenerate": "Gerar novamente",
"Release Notes": "Notas de Lançamento",
"Relevance": "Relevância",
"Remove": "Remover",
"Remove Model": "Remover Modelo",
"Rename": "Renomear",
"Reorder Models": "",
"Repeat Last N": "Repetir Último N",
"Request Mode": "Modo de Solicitação",
"Reranking Model": "Modelo de Reclassificação",
"Reranking model disabled": "Modelo de Reclassificação desativado",
"Reranking model set to \"{{reranking_model}}\"": "Modelo de Reclassificação definido como \"{{reranking_model}}\"",
"Reset": "Redefinir",
"Reset All Models": "",
"Reset Upload Directory": "Redefinir Diretório de Upload",
"Reset Vector Storage/Knowledge": "Redefinir Armazenamento de Vetores/Conhecimento",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notificações de resposta não podem ser ativadas pois as permissões do site foram negadas. Por favor, visite as configurações do seu navegador para conceder o acesso necessário.",
@@ -715,13 +722,13 @@
"Role": "Função",
"Rosé Pine": "Rosé Pine",
"Rosé Pine Dawn": "Rosé Pine Dawn",
"RTL": "RTL",
"RTL": "Direita para Esquerda",
"Run": "Executar",
"Running": "Executando",
"Save": "Salvar",
"Save & Create": "Salvar e Criar",
"Save & Update": "Salvar e Atualizar",
"Save As Copy": "Salvar como cópia",
"Save As Copy": "Salvar Como Cópia",
"Save Tag": "Salvar Tag",
"Saved": "Armazenado",
"Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Salvar registros de chat diretamente no armazenamento do seu navegador não é mais suportado. Por favor, reserve um momento para baixar e excluir seus registros de chat clicando no botão abaixo. Não se preocupe, você pode facilmente reimportar seus registros de chat para o backend através de",
@@ -731,17 +738,17 @@
"Search Base": "Pesquisar base",
"Search Chats": "Pesquisar Chats",
"Search Collection": "Pesquisar Coleção",
"Search Filters": "Pesquisar filtros",
"Search Filters": "Pesquisar Filtros",
"search for tags": "Pesquisar por tags",
"Search Functions": "Pesquisar Funções",
"Search Knowledge": "Pesquisar conhecimento",
"Search Knowledge": "Pesquisar Conhecimento",
"Search Models": "Pesquisar Modelos",
"Search options": "Opções de pesquisa",
"Search Prompts": "Pesquisar Prompts",
"Search Prompts": "Prompts de Pesquisa",
"Search Result Count": "Contagem de Resultados da Pesquisa",
"Search the web": "Pesquisar web",
"Search Tools": "Pesquisar Ferramentas",
"SearchApi API Key": "Pesquisar SearchApi key",
"SearchApi API Key": "Chave API SearchApi",
"SearchApi Engine": "Motor SearchApi",
"Searched {{count}} sites_one": "Pesquisou {{count}} sites_one",
"Searched {{count}} sites_many": "Pesquisou {{count}} sites_many",
@@ -760,8 +767,8 @@
"Select a pipeline": "Selecione um pipeline",
"Select a pipeline url": "Selecione uma URL de pipeline",
"Select a tool": "Selecione uma ferramenta",
"Select Engine": "Selecionar motor",
"Select Knowledge": "Selecionar conhecimento",
"Select Engine": "Selecionar Motor",
"Select Knowledge": "Selecionar Conhecimento",
"Select model": "Selecionar modelo",
"Select only one model to call": "Selecione apenas um modelo para chamar",
"Selected model(s) do not support image inputs": "Modelo(s) selecionado(s) não suportam entradas de imagem",
@@ -783,7 +790,7 @@
"Set Image Size": "Definir Tamanho da Imagem",
"Set reranking model (e.g. {{model}})": "Definir modelo de reclassificação (por exemplo, {{model}})",
"Set Sampler": "Definir Sampler",
"Set Scheduler": "Definir Agenda",
"Set Scheduler": "Definir Agendador",
"Set Steps": "Definir Etapas",
"Set Task Model": "Definir Modelo de Tarefa",
"Set the number of GPU devices used for computation. This option controls how many GPU devices (if available) are used to process incoming requests. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "Defina o número de dispositivos GPU usados para computação. Esta opção controla quantos dispositivos GPU (se disponíveis) são usados para processar as solicitações recebidas. Aumentar esse valor pode melhorar significativamente o desempenho para modelos otimizados para aceleração de GPU, mas também pode consumir mais energia e recursos da GPU.",
@@ -801,7 +808,7 @@
"Share Chat": "Compartilhar Chat",
"Share to OpenWebUI Community": "Compartilhar com a Comunidade OpenWebUI",
"Show": "Mostrar",
"Show \"What's New\" modal on login": "Mostrar \"novidades\" no login",
"Show \"What's New\" modal on login": "Mostrar \"O que há de Novo\" no login",
"Show Admin Details in Account Pending Overlay": "Mostrar Detalhes do Administrador na Sobreposição de Conta Pendentes",
"Show shortcuts": "Mostrar atalhos",
"Show your support!": "Mostre seu apoio!",
@@ -819,10 +826,10 @@
"Speech-to-Text Engine": "Motor de Transcrição de Fala",
"Stop": "Parar",
"Stop Sequence": "Sequência de Parada",
"Stream Chat Response": "",
"Stream Chat Response": "Stream Resposta do Chat",
"STT Model": "Modelo STT",
"STT Settings": "Configurações STT",
"Subtitle (e.g. about the Roman Empire)": "Legenda (por exemplo, sobre o Império Romano)",
"Subtitle (e.g. about the Roman Empire)": "Subtítulo (por exemplo, sobre o Império Romano)",
"Success": "Sucesso",
"Successfully updated.": "Atualizado com sucesso.",
"Suggested": "Sugerido",
@@ -838,12 +845,12 @@
"Tavily API Key": "Chave da API Tavily",
"Tell us more:": "Conte-nos mais:",
"Temperature": "Temperatura",
"Template": "Modelo",
"Template": "Template",
"Temporary Chat": "Chat temporário",
"Text Splitter": "Divisor de texto",
"Text Splitter": "Divisor de Texto",
"Text-to-Speech Engine": "Motor de Texto para Fala",
"Tfs Z": "Tfs Z",
"Thanks for your feedback!": "Obrigado pelo seu feedback!",
"Thanks for your feedback!": "Obrigado pelo seu comentário!",
"The Application Account DN you bind with for search": "O DN (Distinguished Name) da Conta de Aplicação com a qual você se conecta para pesquisa.",
"The base to search for users": "Base para pesquisar usuários.",
"The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory. (Default: 512)": "O tamanho do lote (batch size) determina quantas solicitações de texto são processadas juntas de uma vez. Um tamanho de lote maior pode aumentar o desempenho e a velocidade do modelo, mas também requer mais memória. (Padrão: 512)",
@@ -865,9 +872,9 @@
"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Essa opção deletará todos os arquivos existentes na coleção e todos eles serão substituídos.",
"This response was generated by \"{{model}}\"": "Esta resposta foi gerada por \"{{model}}\"",
"This will delete": "Isso vai excluir",
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Esta ação deletará <strong>{{NAME}}</strong> e <strong>todos seus conteúdos</strong>.",
"This will delete all models including custom models": "",
"This will delete all models including custom models and cannot be undone.": "",
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Esta ação excluirá <strong>{{NAME}}</strong> e <strong>todos seus conteúdos</strong>.",
"This will delete all models including custom models": "Isto vai excluir todos os modelos, incluindo personalizados",
"This will delete all models including custom models and cannot be undone.": "Isto vai excluir todos os modelos, incluindo personalizados e não pode ser desfeito.",
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Esta ação resetará a base de conhecimento e sincronizará todos os arquivos. Deseja continuar?",
"Thorough explanation": "Explicação detalhada",
"Tika": "Tika",
@@ -884,7 +891,7 @@
"To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para acessar a WebUI, entre em contato com o administrador. Os administradores podem gerenciar os status dos usuários no Painel de Administração.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Para anexar a base de conhecimento aqui, adicione-os ao espaço de trabalho \"Conhecimento\" primeiro.",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Para proteger sua privacidade, apenas classificações, IDs de modelo, tags e metadados são compartilhados a partir de seus comentários – seus registros de bate-papo permanecem privados e não são incluídos.",
"To select actions here, add them to the \"Functions\" workspace first.": "Para selecionar ações aqui, adicione-os ao espaço de trabalho \"Ações\" primeiro.",
"To select filters here, add them to the \"Functions\" workspace first.": "Para selecionar filtros aqui, adicione-os ao espaço de trabalho \"Funções\" primeiro.",
"To select toolkits here, add them to the \"Tools\" workspace first.": "Para selecionar kits de ferramentas aqui, adicione-os ao espaço de trabalho \"Ferramentas\" primeiro.",
@@ -919,8 +926,8 @@
"Uh-oh! There was an issue connecting to {{provider}}.": "Ops! Houve um problema ao conectar-se ao {{provider}}.",
"UI": "Interface",
"Unarchive All": "Desarquivar tudo",
"Unarchive All Archived Chats": "Desarquivar todos os chats arquivados",
"Unarchive Chat": "Desarquivar chat",
"Unarchive All Archived Chats": "Desarquivar Todos os Chats Arquivados",
"Unarchive Chat": "Desarquivar Chat",
"Unlock mysteries": "Desvendar mistérios",
"Unpin": "Desfixar",
"Unravel secrets": "Desvendar segredos",
@@ -931,7 +938,7 @@
"Update password": "Atualizar senha",
"Updated": "Atualizado",
"Updated at": "Atualizado em",
"Updated At": "Atualizado em",
"Updated At": "Atualizado Em",
"Upload": "Fazer upload",
"Upload a GGUF model": "Fazer upload de um modelo GGUF",
"Upload directory": "Carregar diretório",
@@ -950,9 +957,9 @@
"user": "usuário",
"User": "Usuário",
"User location successfully retrieved.": "Localização do usuário recuperada com sucesso.",
"Username": "Usuário",
"Username": "Nome do Usuário",
"Users": "Usuários",
"Using the default arena model with all models. Click the plus button to add custom models.": "Usando o modelo arena padrão para todos os modelos. Clique no botão mais para adicionar modelos personalizados.",
"Using the default arena model with all models. Click the plus button to add custom models.": "Usando a arena de modelos padrão para todos os modelos. Clique no botão mais para adicionar modelos personalizados.",
"Utilize": "Utilizar",
"Valid time units:": "Unidades de tempo válidas:",
"Valves": "Válvulas",
@@ -979,21 +986,21 @@
"WebUI will make requests to \"{{url}}/api/chat\"": "A WebUI fará requisições para \"{{url}}/api/chat\".",
"WebUI will make requests to \"{{url}}/chat/completions\"": "A WebUI fará requisições para \"{{url}}/chat/completions\".",
"What are you trying to achieve?": "O que está tentando alcançar?",
"What are you working on?": "O que está trabalhando?",
"What are you working on?": "No que está trabalhando?",
"What’s New in": "O que há de novo em",
"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "Quando habilitado, o modelo responderá a cada mensagem de chat em tempo real, gerando uma resposta assim que o usuário enviar uma mensagem. Este modo é útil para aplicativos de chat ao vivo, mas pode impactar o desempenho em hardware mais lento.",
"wherever you are": "Onde quer que você esteja.",
"wherever you are": "onde quer que você esteja.",
"Whisper (Local)": "Whisper (Local)",
"Why?": "",
"Why?": "Por que",
"Widescreen Mode": "Modo Tela Cheia",
"Won": "Positivo",
"Won": "Ganhou",
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "Funciona em conjunto com o top-k. Um valor mais alto (por exemplo, 0,95) levará a um texto mais diversificado, enquanto um valor mais baixo (por exemplo, 0,5) gerará um texto mais focado e conservador. (Padrão: 0,9)",
"Workspace": "Espaço de Trabalho",
"Workspace Permissions": "Permissões do espaço de trabalho",
"Write a prompt suggestion (e.g. Who are you?)": "Escreva uma sugestão de prompt (por exemplo, Quem é você?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].",
"Write something...": "Escrevendo algo...",
"Write your model template content here": "Escreva o conteúdo do modelo aqui.",
"Write something...": "Escreva algo...",
"Write your model template content here": "Escreva o conteúdo do template do modelo aqui.",
"Yesterday": "Ontem",
"You": "Você",
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Você só pode conversar com no máximo {{maxCount}} arquivo(s) de cada vez.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Solicitações simultâneas",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Confirmar Senha",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Padrão (SentenceTransformers)",
"Default Model": "Modelo padrão",
"Default model updated": "Modelo padrão atualizado",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Sugestões de Prompt Padrão",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Falha ao criar a Chave da API.",
"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
"Failed to save models configuration": "",
"Failed to update settings": "Falha ao atualizar as definições",
"Failed to upload file.": "",
"February": "Fevereiro",
@@ -570,6 +573,7 @@
"Modelfile Content": "Conteúdo do Ficheiro do Modelo",
"Models": "Modelos",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Mais",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Não foram encontrados resultados",
"No search query generated": "Não foi gerada nenhuma consulta de pesquisa",
"No source available": "Nenhuma fonte disponível",
@@ -699,12 +704,14 @@
"Remove": "Remover",
"Remove Model": "Remover Modelo",
"Rename": "Renomear",
"Reorder Models": "",
"Repeat Last N": "Repetir Últimos N",
"Request Mode": "Modo de Pedido",
"Reranking Model": "Modelo de Reranking",
"Reranking model disabled": "Modelo de Reranking desativado",
"Reranking model set to \"{{reranking_model}}\"": "Modelo de Reranking definido como \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "Limpar Pasta de Carregamento",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "Completări",
"Concurrent Requests": "Cereri Concurente",
"Configure": "",
"Configure Models": "",
"Confirm": "Confirmă",
"Confirm Password": "Confirmă Parola",
"Confirm your action": "Confirmă acțiunea ta",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Implicit (SentenceTransformers)",
"Default Model": "Model Implicit",
"Default model updated": "Modelul implicit a fost actualizat",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Sugestii de Prompt Implicite",
@@ -383,6 +385,7 @@
"Failed to add file.": "Eșec la adăugarea fișierului.",
"Failed to create API Key.": "Crearea cheii API a eșuat.",
"Failed to read clipboard contents": "Citirea conținutului clipboard-ului a eșuat",
"Failed to save models configuration": "",
"Failed to update settings": "Actualizarea setărilor a eșuat",
"Failed to upload file.": "Încărcarea fișierului a eșuat.",
"February": "Februarie",
@@ -570,6 +573,7 @@
"Modelfile Content": "Conținutul Fișierului Model",
"Models": "Modele",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "mai mult",
"More": "Mai multe",
@@ -589,6 +593,7 @@
"No knowledge found": "Nu au fost găsite informații.",
"No model IDs": "",
"No models found": "Nu s-au găsit modele",
"No models selected": "",
"No results found": "Nu au fost găsite rezultate",
"No search query generated": "Nu a fost generată nicio interogare de căutare",
"No source available": "Nicio sursă disponibilă",
@@ -699,12 +704,14 @@
"Remove": "Înlătură",
"Remove Model": "Înlătură Modelul",
"Rename": "Redenumește",
"Reorder Models": "",
"Repeat Last N": "Repetă Ultimele N",
"Request Mode": "Mod de Cerere",
"Reranking Model": "Model de Rearanjare",
"Reranking model disabled": "Modelul de Rearanjare este dezactivat",
"Reranking model set to \"{{reranking_model}}\"": "Modelul de Rearanjare setat la \"{{reranking_model}}\"",
"Reset": "Resetează",
"Reset All Models": "",
"Reset Upload Directory": "Resetează Directorul de Încărcare",
"Reset Vector Storage/Knowledge": "Resetarea Stocării/Vectoului de Cunoștințe",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notificările de răspuns nu pot fi activate deoarece permisiunile site-ului au fost refuzate. Vă rugăm să vizitați setările browserului pentru a acorda accesul necesar.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Одновременные запросы",
"Configure": "",
"Configure Models": "",
"Confirm": "Подтвердить",
"Confirm Password": "Подтвердите пароль",
"Confirm your action": "Подтвердите свое действие",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "По умолчанию (SentenceTransformers)",
"Default Model": "Модель по умолчанию",
"Default model updated": "Модель по умолчанию обновлена",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Предложения промптов по умолчанию",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Не удалось создать ключ API.",
"Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена",
"Failed to save models configuration": "",
"Failed to update settings": "Не удалось обновить настройки",
"Failed to upload file.": "",
"February": "Февраль",
@@ -570,6 +573,7 @@
"Modelfile Content": "Содержимое файла модели",
"Models": "Модели",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Больше",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Результатов не найдено",
"No search query generated": "Поисковый запрос не сгенерирован",
"No source available": "Нет доступных источников",
@@ -699,12 +704,14 @@
"Remove": "Удалить",
"Remove Model": "Удалить модель",
"Rename": "Переименовать",
"Reorder Models": "",
"Repeat Last N": "Повторить последние N",
"Request Mode": "Режим запроса",
"Reranking Model": "Модель реранжирования",
"Reranking model disabled": "Модель реранжирования отключена",
"Reranking model set to \"{{reranking_model}}\"": "Модель реранжирования установлена на \"{{reranking_model}}\"",
"Reset": "Сбросить",
"Reset All Models": "",
"Reset Upload Directory": "Сбросить каталог загрузок",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Уведомления об ответах не могут быть активированы, поскольку доступ к веб-сайту был заблокирован. Пожалуйста, перейдите к настройкам своего браузера, чтобы предоставить необходимый доступ.",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Упоредни захтеви",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Потврди лозинку",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Подразумевано (SentenceTransformers)",
"Default Model": "Подразумевани модел",
"Default model updated": "Подразумевани модел ажуриран",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Подразумевани предлози упита",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Неуспешно стварање API кључа.",
"Failed to read clipboard contents": "Неуспешно читање садржаја оставе",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "Фебруар",
@@ -570,6 +573,7 @@
"Modelfile Content": "Садржај модел-датотеке",
"Models": "Модели",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Више",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Нема резултата",
"No search query generated": "Није генерисан упит за претрагу",
"No source available": "Нема доступног извора",
@@ -699,12 +704,14 @@
"Remove": "Уклони",
"Remove Model": "Уклони модел",
"Rename": "Преименуј",
"Reorder Models": "",
"Repeat Last N": "Понови последњих N",
"Request Mode": "Режим захтева",
"Reranking Model": "Модел поновног рангирања",
"Reranking model disabled": "Модел поновног рангирања онемогућен",
"Reranking model set to \"{{reranking_model}}\"": "Модел поновног рангирања подешен на \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Parallella anrop",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "Bekräfta lösenord",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
"Default Model": "Standardmodell",
"Default model updated": "Standardmodell uppdaterad",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Standardinstruktionsförslag",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Misslyckades med att skapa API-nyckel.",
"Failed to read clipboard contents": "Misslyckades med att läsa urklippsinnehåll",
"Failed to save models configuration": "",
"Failed to update settings": "Misslyckades med att uppdatera inställningarna",
"Failed to upload file.": "",
"February": "februari",
@@ -570,6 +573,7 @@
"Modelfile Content": "Modelfilens innehåll",
"Models": "Modeller",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Mer",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Inga resultat hittades",
"No search query generated": "Ingen sökfråga genererad",
"No source available": "Ingen tillgänglig källa",
@@ -699,12 +704,14 @@
"Remove": "Ta bort",
"Remove Model": "Ta bort modell",
"Rename": "Byt namn",
"Reorder Models": "",
"Repeat Last N": "Upprepa senaste N",
"Request Mode": "Frågeläge",
"Reranking Model": "Reranking modell",
"Reranking model disabled": "Reranking modell inaktiverad",
"Reranking model set to \"{{reranking_model}}\"": "Reranking modell inställd på \"{{reranking_model}}\"",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "Återställ uppladdningskatalog",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "คำขอพร้อมกัน",
"Configure": "",
"Configure Models": "",
"Confirm": "ยืนยัน",
"Confirm Password": "ยืนยันรหัสผ่าน",
"Confirm your action": "ยืนยันการดำเนินการของคุณ",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "ค่าเริ่มต้น (SentenceTransformers)",
"Default Model": "โมเดลค่าเริ่มต้น",
"Default model updated": "อัปเดตโมเดลค่าเริ่มต้นแล้ว",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "คำแนะนำพรอมต์ค่าเริ่มต้น",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "สร้างคีย์ API ล้มเหลว",
"Failed to read clipboard contents": "อ่านเนื้อหาคลิปบอร์ดล้มเหลว",
"Failed to save models configuration": "",
"Failed to update settings": "อัปเดตการตั้งค่าล้มเหลว",
"Failed to upload file.": "",
"February": "กุมภาพันธ์",
@@ -570,6 +573,7 @@
"Modelfile Content": "เนื้อหาของไฟล์โมเดล",
"Models": "โมเดล",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "เพิ่มเติม",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "ไม่มีผลลัพธ์",
"No search query generated": "ไม่มีการสร้างคำค้นหา",
"No source available": "ไม่มีแหล่งข้อมูล",
@@ -699,12 +704,14 @@
"Remove": "ลบ",
"Remove Model": "ลบโมเดล",
"Rename": "เปลี่ยนชื่อ",
"Reorder Models": "",
"Repeat Last N": "ทำซ้ำครั้งล่าสุด N",
"Request Mode": "โหมดคำขอ",
"Reranking Model": "จัดอันดับใหม่โมเดล",
"Reranking model disabled": "ปิดการใช้งานโมเดลการจัดอันดับใหม่",
"Reranking model set to \"{{reranking_model}}\"": "ตั้งค่าโมเดลการจัดอันดับใหม่เป็น \"{{reranking_model}}\"",
"Reset": "รีเซ็ต",
"Reset All Models": "",
"Reset Upload Directory": "รีเซ็ตไดเร็กทอรีการอัปโหลด",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "ไม่สามารถเปิดการแจ้งเตือนการตอบสนองได้เนื่องจากเว็บไซต์ปฏิเสธ กรุณาเข้าการตั้งค่าเบราว์เซอร์ของคุณเพื่อให้สิทธิ์การเข้าถึงที่จำเป็น",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "",
"Configure": "",
"Configure Models": "",
"Confirm": "",
"Confirm Password": "",
"Confirm your action": "",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "",
"Default Model": "",
"Default model updated": "",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "",
"Failed to read clipboard contents": "",
"Failed to save models configuration": "",
"Failed to update settings": "",
"Failed to upload file.": "",
"February": "",
@@ -570,6 +573,7 @@
"Modelfile Content": "",
"Models": "",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "",
"No search query generated": "",
"No source available": "",
@@ -699,12 +704,14 @@
"Remove": "",
"Remove Model": "",
"Rename": "",
"Reorder Models": "",
"Repeat Last N": "",
"Request Mode": "",
"Reranking Model": "",
"Reranking model disabled": "",
"Reranking model set to \"{{reranking_model}}\"": "",
"Reset": "",
"Reset All Models": "",
"Reset Upload Directory": "",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Eşzamanlı İstekler",
"Configure": "Yapılandırma",
"Configure Models": "",
"Confirm": "Onayla",
"Confirm Password": "Parolayı Onayla",
"Confirm your action": "İşleminizi onaylayın",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Varsayılan (SentenceTransformers)",
"Default Model": "Varsayılan Model",
"Default model updated": "Varsayılan model güncellendi",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Varsayılan Prompt Önerileri",
@@ -383,6 +385,7 @@
"Failed to add file.": "Dosya eklenemedi.",
"Failed to create API Key.": "API Anahtarı oluşturulamadı.",
"Failed to read clipboard contents": "Pano içeriği okunamadı",
"Failed to save models configuration": "",
"Failed to update settings": "Ayarlar güncellenemedi",
"Failed to upload file.": "",
"February": "Şubat",
@@ -570,6 +573,7 @@
"Modelfile Content": "Model Dosyası İçeriği",
"Models": "Modeller",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Daha Fazla",
@@ -589,6 +593,7 @@
"No knowledge found": "Bilgi bulunamadı",
"No model IDs": "",
"No models found": "Model bulunamadı",
"No models selected": "",
"No results found": "Sonuç bulunamadı",
"No search query generated": "Hiç arama sorgusu oluşturulmadı",
"No source available": "Kaynak mevcut değil",
@@ -699,12 +704,14 @@
"Remove": "Kaldır",
"Remove Model": "Modeli Kaldır",
"Rename": "Yeniden Adlandır",
"Reorder Models": "",
"Repeat Last N": "Son N'yi Tekrar Et",
"Request Mode": "İstek Modu",
"Reranking Model": "Yeniden Sıralama Modeli",
"Reranking model disabled": "Yeniden sıralama modeli devre dışı bırakıldı",
"Reranking model set to \"{{reranking_model}}\"": "Yeniden sıralama modeli \"{{reranking_model}}\" olarak ayarlandı",
"Reset": "Sıfırla",
"Reset All Models": "",
"Reset Upload Directory": "Yükleme Dizinini Sıfırla",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Web sitesi izinleri reddedildiğinden yanıt bildirimleri etkinleştirilemiyor. Gerekli erişimi sağlamak için lütfen tarayıcı ayarlarınızı ziyaret edin.",
+128 -121
View File
@@ -7,37 +7,37 @@
"{{user}}'s Chats": "Чати {{user}}а",
"{{webUIName}} Backend Required": "Необхідно підключення бекенду {{webUIName}}",
"*Prompt node ID(s) are required for image generation": "*Для генерації зображення потрібно вказати ідентифікатор(и) вузла(ів)",
"A new version (v{{LATEST_VERSION}}) is now available.": "Нова версія (в{{LATEST_VERSION}}) зараз доступна.",
"A new version (v{{LATEST_VERSION}}) is now available.": "Нова версія (v{{LATEST_VERSION}}) зараз доступна.",
"A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач використовується при виконанні таких завдань, як генерація заголовків для чатів та пошукових запитів в Інтернеті",
"a user": "користувача",
"About": "Про програму",
"Access": "",
"Access Control": "",
"Accessible to all users": "",
"Access": "Доступ",
"Access Control": "Контроль доступу",
"Accessible to all users": "Доступно всім користувачам",
"Account": "Обліковий запис",
"Account Activation Pending": "Очікування активації облікового запису",
"Accurate information": "Точна інформація",
"Actions": "Дії",
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "",
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Активуйте цю команду, ввівши \"/{{COMMAND}}\" у введення чату.",
"Active Users": "Активні користувачі",
"Add": "Додати",
"Add a model ID": "",
"Add a model ID": "Додайти ID моделі",
"Add a short description about what this model does": "Додайте короткий опис того, що робить ця модель",
"Add a tag": "Додайте тег",
"Add a tag": "Додайти тег",
"Add Arena Model": "Додати модель Arena",
"Add Connection": "",
"Add Connection": "Додати з'єднання",
"Add Content": "Додати вміст",
"Add content here": "Додайте вміст сюди",
"Add custom prompt": "Додати користувацьку підказку",
"Add Files": "Додати файли",
"Add Group": "",
"Add Group": "Додати групу",
"Add Memory": "Додати пам'ять",
"Add Model": "Додати модель",
"Add Tag": "Додати тег",
"Add Tags": "Додати теги",
"Add text content": "Додати текстовий вміст",
"Add User": "Додати користувача",
"Add User Group": "",
"Add User Group": "Додати групу користувачів",
"Adjusting these settings will apply changes universally to all users.": "Зміни в цих налаштуваннях будуть застосовані для всіх користувачів.",
"admin": "адмін",
"Admin": "Адмін",
@@ -48,18 +48,18 @@
"Advanced Params": "Розширені параметри",
"All chats": "Усі чати",
"All Documents": "Усі документи",
"All models deleted successfully": "",
"Allow Chat Delete": "",
"All models deleted successfully": "Всі моделі видалені успішно",
"Allow Chat Delete": "Дозволити видалення чату",
"Allow Chat Deletion": "Дозволити видалення чату",
"Allow Chat Edit": "",
"Allow File Upload": "",
"Allow Chat Edit": "Дозволити редагування чату",
"Allow File Upload": "Дозволити завантаження файлів",
"Allow non-local voices": "Дозволити не локальні голоси",
"Allow Temporary Chat": "Дозволити тимчасовий чат",
"Allow User Location": "Доступ до місцезнаходження",
"Allow Voice Interruption in Call": "Дозволити переривання голосу під час виклику",
"Already have an account?": "Вже є обліковий запис?",
"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Альтернатива параметру top_p, яка має на меті забезпечити баланс якості та різноманітності. Параметр p представляє мінімальну ймовірність для того, щоб токен був врахований, відносно ймовірності найбільш ймовірного токена. Наприклад, при p=0.05 і найбільш імовірному токені з ймовірністю 0.9, логіти зі значенням менше 0.045 будуть відфільтровані. (За замовчуванням: 0.0)",
"Amazing": "",
"Amazing": "Чудово",
"an assistant": "асистента",
"and": "та",
"and {{COUNT}} more": "та ще {{COUNT}}",
@@ -70,13 +70,13 @@
"API keys": "Ключі API",
"Application DN": "DN застосунку",
"Application DN Password": "Пароль DN застосунку",
"applies to all users with the \"user\" role": "",
"applies to all users with the \"user\" role": "стосується всіх користувачів з роллю \"користувач\"",
"April": "Квітень",
"Archive": "Архів",
"Archive All Chats": "Архівувати всі чати",
"Archived Chats": "Архівовані чати",
"archived-chat-export": "",
"Are you sure you want to unarchive all archived chats?": "",
"archived-chat-export": "експорт-архівованих-чатів",
"Are you sure you want to unarchive all archived chats?": "Ви впевнені, що хочете розархівувати всі архівовані чати?",
"Are you sure?": "Ви впевнені?",
"Arena Models": "Моделі Arena",
"Artifacts": "Артефакти",
@@ -96,7 +96,7 @@
"AUTOMATIC1111 Base URL is required.": "Необхідна URL-адреса AUTOMATIC1111.",
"Available list": "Список доступності",
"available!": "доступно!",
"Awful": "",
"Awful": "Жахливо",
"Azure AI Speech": "Мовлення Azure AI",
"Azure Region": "Регіон Azure",
"Back": "Назад",
@@ -109,7 +109,7 @@
"Bing Search V7 Endpoint": "Точка доступу Bing Search V7",
"Bing Search V7 Subscription Key": "Ключ підписки Bing Search V7",
"Brave Search API Key": "Ключ API пошуку Brave",
"By {{name}}": "",
"By {{name}}": "Від {{name}}",
"Bypass SSL verification for Websites": "Обхід SSL-перевірки для веб-сайтів",
"Call": "Виклик",
"Call feature is not supported when using Web STT engine": "Функція виклику не підтримується при використанні Web STT (розпізнавання мовлення) рушія",
@@ -126,7 +126,7 @@
"Chat Controls": "Керування чатом",
"Chat direction": "Напрям чату",
"Chat Overview": "Огляд чату",
"Chat Permissions": "",
"Chat Permissions": "Дозволи чату",
"Chat Tags Auto-Generation": "Автоматична генерація тегів чату",
"Chats": "Чати",
"Check Again": "Перевірити ще раз",
@@ -157,7 +157,7 @@
"Code execution": "Виконання коду",
"Code formatted successfully": "Код успішно відформатовано",
"Collection": "Колекція",
"Color": "",
"Color": "Колір",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL": "URL-адреса ComfyUI",
"ComfyUI Base URL is required.": "Необхідно вказати URL-адресу ComfyUI.",
@@ -166,7 +166,8 @@
"Command": "Команда",
"Completions": "Завершення",
"Concurrent Requests": "Одночасні запити",
"Configure": "",
"Configure": "Налаштувати",
"Configure Models": "",
"Confirm": "Підтвердити",
"Confirm Password": "Підтвердіть пароль",
"Confirm your action": "Підтвердіть свою дію",
@@ -191,12 +192,12 @@
"Copy Link": "Копіювати посилання",
"Copy to clipboard": "Копіювати в буфер обміну",
"Copying to clipboard was successful!": "Копіювання в буфер обміну виконано успішно!",
"Create": "",
"Create": "Створити",
"Create a knowledge base": "Створити базу знань",
"Create a model": "Створити модель",
"Create Account": "Створити обліковий запис",
"Create Admin Account": "Створити обліковий запис адміністратора",
"Create Group": "",
"Create Group": "Створити групу",
"Create Knowledge": "Створити знання",
"Create new key": "Створити новий ключ",
"Create new secret key": "Створити новий секретний ключ",
@@ -215,8 +216,9 @@
"Default (SentenceTransformers)": "За замовчуванням (SentenceTransformers)",
"Default Model": "Модель за замовчуванням",
"Default model updated": "Модель за замовчуванням оновлено",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Models": "",
"Default permissions": "Дозволи за замовчуванням",
"Default permissions updated successfully": "Дозволи за замовчуванням успішно оновлено",
"Default Prompt Suggestions": "Пропозиції промтів замовчуванням",
"Default to 389 or 636 if TLS is enabled": "За замовчуванням використовується 389 або 636, якщо TLS увімкнено.",
"Default to ALL": "За замовчуванням — ВСІ.",
@@ -224,7 +226,7 @@
"Delete": "Видалити",
"Delete a model": "Видалити модель",
"Delete All Chats": "Видалити усі чати",
"Delete All Models": "",
"Delete All Models": "Видалити всі моделі",
"Delete chat": "Видалити чат",
"Delete Chat": "Видалити чат",
"Delete chat?": "Видалити чат?",
@@ -236,7 +238,7 @@
"Delete User": "Видалити користувача",
"Deleted {{deleteModelTag}}": "Видалено {{deleteModelTag}}",
"Deleted {{name}}": "Видалено {{name}}",
"Deleted User": "",
"Deleted User": "Видалений користувач",
"Describe your knowledge base and objectives": "Опишіть вашу базу знань та цілі",
"Description": "Опис",
"Didn't fully follow instructions": "Не повністю дотримувалися інструкцій",
@@ -251,10 +253,10 @@
"Discover, download, and explore custom tools": "Знайдіть, завантажте та досліджуйте налаштовані інструменти",
"Discover, download, and explore model presets": "Знайдіть, завантажте та досліджуйте налаштування моделей",
"Dismissible": "Неприйнятно",
"Display": "",
"Display": "Відображення",
"Display Emoji in Call": "Відображати емодзі у викликах",
"Display the username instead of You in the Chat": "Показувати ім'я користувача замість 'Ви' в чаті",
"Displays citations in the response": "",
"Displays citations in the response": "Показує посилання у відповіді",
"Dive into knowledge": "Зануртесь у знання",
"Do not install functions from sources you do not fully trust.": "Не встановлюйте функції з джерел, яким ви не повністю довіряєте.",
"Do not install tools from sources you do not fully trust.": "Не встановлюйте інструменти з джерел, яким ви не повністю довіряєте.",
@@ -270,23 +272,23 @@
"Download": "Завантажити",
"Download canceled": "Завантаження скасовано",
"Download Database": "Завантажити базу даних",
"Drag and drop a file to upload or select a file to view": "",
"Drag and drop a file to upload or select a file to view": "Перетягніть файл для завантаження або виберіть файл для перегляду",
"Draw": "Малювати",
"Drop any files here to add to the conversation": "Перетягніть сюди файли, щоб додати до розмови",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр., '30s','10m'. Дійсні одиниці часу: 'с', 'хв', 'г'.",
"e.g. A filter to remove profanity from text": "",
"e.g. My Filter": "",
"e.g. My Tools": "",
"e.g. my_filter": "",
"e.g. my_tools": "",
"e.g. Tools for performing various operations": "",
"e.g. A filter to remove profanity from text": "напр., фільтр для видалення нецензурної лексики з тексту",
"e.g. My Filter": "напр., Мій фільтр",
"e.g. My Tools": "напр., Мої інструменти",
"e.g. my_filter": "напр., my_filter",
"e.g. my_tools": "напр., my_tools",
"e.g. Tools for performing various operations": "напр., Інструменти для виконання різних операцій",
"Edit": "Редагувати",
"Edit Arena Model": "Редагувати модель Arena",
"Edit Connection": "",
"Edit Default Permissions": "",
"Edit Connection": "Редагувати з'єднання",
"Edit Default Permissions": "Редагувати дозволи за замовчуванням",
"Edit Memory": "Редагувати пам'ять",
"Edit User": "Редагувати користувача",
"Edit User Group": "",
"Edit User Group": "Редагувати групу користувачів",
"ElevenLabs": "ElevenLabs",
"Email": "Ел. пошта",
"Embark on adventures": "Вирушайте в пригоди",
@@ -294,14 +296,14 @@
"Embedding Model": "Модель вбудовування",
"Embedding Model Engine": "Рушій моделі вбудовування ",
"Embedding model set to \"{{embedding_model}}\"": "Встановлена модель вбудовування \"{{embedding_model}}\"",
"Enable API Key Auth": "",
"Enable API Key Auth": "Увімкнути автентифікацію за допомогою API ключа",
"Enable Community Sharing": "Увімкнути спільний доступ",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Увімкнути блокування пам'яті (mlock), щоб запобігти виведенню даних моделі з оперативної пам'яті. Цей параметр блокує робочий набір сторінок моделі в оперативній пам'яті, гарантуючи, що вони не будуть виведені на диск. Це може допомогти підтримувати продуктивність, уникати помилок сторінок та забезпечувати швидкий доступ до даних.",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Увімкнути відображення пам'яті (mmap) для завантаження даних моделі. Цей параметр дозволяє системі використовувати дискове сховище як розширення оперативної пам'яті, трактуючи файли на диску, як ніби вони знаходяться в RAM. Це може покращити продуктивність моделі, дозволяючи швидший доступ до даних. Однак, він може не працювати коректно на всіх системах і може споживати значну кількість дискового простору.",
"Enable Message Rating": "Увімкнути оцінку повідомлень",
"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "Увімкнути вибірку Mirostat для контролю над непередбачуваністю. (За замовчуванням: 0, 0 = Вимкнено, 1 = Mirostat, 2 = Mirostat 2.0)",
"Enable New Sign Ups": "Дозволити нові реєстрації",
"Enable Retrieval Query Generation": "",
"Enable Retrieval Query Generation": "Увімкнути генерацію запитів для вилучення",
"Enable Tags Generation": "Увімкнути генерацію тегів",
"Enable Web Search": "Увімкнути веб-пошук",
"Enable Web Search Query Generation": "Увімкнути генерацію запитів для веб-пошуку",
@@ -329,7 +331,7 @@
"Enter language codes": "Введіть мовні коди",
"Enter Model ID": "Введіть ID моделі",
"Enter model tag (e.g. {{modelTag}})": "Введіть тег моделі (напр., {{modelTag}})",
"Enter Mojeek Search API Key": "",
"Enter Mojeek Search API Key": "Введіть API ключ для пошуку Mojeek",
"Enter Number of Steps (e.g. 50)": "Введіть кількість кроків (напр., 50)",
"Enter Sampler (e.g. Euler a)": "Введіть семплер (напр., Euler a)",
"Enter Scheduler (e.g. Karras)": "Введіть планувальник (напр., Karras)",
@@ -368,26 +370,27 @@
"Experimental": "Експериментальне",
"Explore the cosmos": "Досліджуйте космос",
"Export": "Експорт",
"Export All Archived Chats": "",
"Export All Chats (All Users)": "Експортувати всі чати (всіх користувачів)",
"Export All Archived Chats": "Експорт всіх архівованих чатів",
"Export All Chats (All Users)": "Експорт всіх чатів (всіх користувачів)",
"Export chat (.json)": "Експорт чату (.json)",
"Export Chats": "Експортувати чати",
"Export Config to JSON File": "Експортувати конфігурацію у файл JSON",
"Export Chats": "Експорт чатів",
"Export Config to JSON File": "Експорт конфігурації у файл JSON",
"Export Functions": "Експорт функцій ",
"Export Models": "Експорт моделей",
"Export Presets": "",
"Export Prompts": "Експортувати промти",
"Export to CSV": "Експортувати в CSV",
"Export Tools": "Експортувати інструменти",
"Export Presets": "Експорт пресетів",
"Export Prompts": "Експорт промтів",
"Export to CSV": "Експорт в CSV",
"Export Tools": "Експорт інструментів",
"External Models": "Зовнішні моделі",
"Failed to add file.": "Не вдалося додати файл.",
"Failed to create API Key.": "Не вдалося створити API ключ.",
"Failed to read clipboard contents": "Не вдалося прочитати вміст буфера обміну",
"Failed to save models configuration": "",
"Failed to update settings": "Не вдалося оновити налаштування",
"Failed to upload file.": "Не вдалося завантажити файл.",
"February": "Лютий",
"Feedback History": "Історія відгуків",
"Feedbacks": "",
"Feedbacks": "Відгуки",
"Feel free to add specific details": "Не соромтеся додавати конкретні деталі",
"File": "Файл",
"File added successfully.": "Файл успішно додано.",
@@ -415,11 +418,11 @@
"Function": "Функція",
"Function created successfully": "Функцію успішно створено",
"Function deleted successfully": "Функцію успішно видалено",
"Function Description": "",
"Function ID": "",
"Function Description": "Опис функції",
"Function ID": "ID функції",
"Function is now globally disabled": "Функція зараз глобально вимкнена",
"Function is now globally enabled": "Функція зараз глобально увімкнена ",
"Function Name": "",
"Function Name": "Назва функції",
"Function updated successfully": "Функцію успішно оновлено",
"Functions": "Функції",
"Functions allow arbitrary code execution": "Функції дозволяють виконання довільного коду",
@@ -436,39 +439,39 @@
"Good Response": "Гарна відповідь",
"Google PSE API Key": "Ключ API Google PSE",
"Google PSE Engine Id": "Id рушія Google PSE",
"Group created successfully": "",
"Group deleted successfully": "",
"Group Description": "",
"Group Name": "",
"Group updated successfully": "",
"Groups": "",
"Group created successfully": "Групу успішно створено",
"Group deleted successfully": "Групу успішно видалено",
"Group Description": "Опис групи",
"Group Name": "Назва групи",
"Group updated successfully": "Групу успішно оновлено",
"Groups": "Групи",
"h:mm a": "h:mm a",
"Haptic Feedback": "Тактильний зворотній зв'язок",
"has no conversations.": "не має розмов.",
"Hello, {{name}}": "Привіт, {{name}}",
"Help": "Допоможіть",
"Help us create the best community leaderboard by sharing your feedback history!": "Допоможіть нам створити найкращу таблицю лідерів спільноти, поділившись історією своїх відгуків!",
"Hex Color": "",
"Hex Color - Leave empty for default color": "",
"Hex Color": "Шістнадцятковий колір",
"Hex Color - Leave empty for default color": "Шістнадцятковий колір — залиште порожнім для кольору за замовчуванням",
"Hide": "Приховати",
"Host": "Хост",
"How can I help you today?": "Чим я можу допомогти вам сьогодні?",
"How would you rate this response?": "",
"How would you rate this response?": "Як би ви оцінили цю відповідь?",
"Hybrid Search": "Гібридний пошук",
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Я підтверджую, що прочитав і розумію наслідки своїх дій. Я усвідомлюю ризики, пов'язані з виконанням довільного коду, і перевірив надійність джерела.",
"ID": "Ідентифікатор",
"ID": "ID",
"Ignite curiosity": "Запаліть цікавість",
"Image Generation (Experimental)": "Генерування зображень (експериментально)",
"Image Generation Engine": "Механізм генерації зображень",
"Image Settings": "Налаштування зображення",
"Images": "Зображення",
"Import Chats": "Імпортувати чати",
"Import Config from JSON File": "Імпортувати конфігурацію з файлу JSON",
"Import Chats": "Імпорт чатів",
"Import Config from JSON File": "Імпорт конфігурації з файлу JSON",
"Import Functions": "Імпорт функцій ",
"Import Models": "Імпорт моделей",
"Import Presets": "",
"Import Prompts": "Імпортувати промти",
"Import Tools": "Імпортувати інструменти",
"Import Presets": "Імпорт пресетів",
"Import Prompts": "Імпорт промтів",
"Import Tools": "Імпорт інструментів",
"Include": "Включити",
"Include `--api-auth` flag when running stable-diffusion-webui": "Включіть прапорець `--api-auth` під час запуску stable-diffusion-webui",
"Include `--api` flag when running stable-diffusion-webui": "Включіть прапор `--api` при запуску stable-diffusion-webui",
@@ -490,10 +493,10 @@
"JWT Expiration": "Термін дії JWT",
"JWT Token": "Токен JWT",
"Keep Alive": "Зберегти активність",
"Key": "",
"Key": "Ключ",
"Keyboard shortcuts": "Клавіатурні скорочення",
"Knowledge": "Знання",
"Knowledge Access": "",
"Knowledge Access": "Доступ до знань",
"Knowledge created successfully.": "Знання успішно створено.",
"Knowledge deleted successfully.": "Знання успішно видалено.",
"Knowledge reset successfully.": "Знання успішно скинуто.",
@@ -507,8 +510,8 @@
"LDAP server updated": "Сервер LDAP оновлено",
"Leaderboard": "Таблиця лідерів",
"Leave empty for unlimited": "Залиште порожнім для необмеженого розміру",
"Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "",
"Leave empty to include all models from \"{{URL}}/models\" endpoint": "",
"Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "Залиште порожнім, щоб включити всі моделі з кінцевої точки \"{{URL}}/api/tags\"",
"Leave empty to include all models from \"{{URL}}/models\" endpoint": "Залиште порожнім, щоб включити всі моделі з кінцевої точки \"{{URL}}/models\"",
"Leave empty to include all models or select specific models": "Залиште порожнім, щоб включити всі моделі, або виберіть конкретні моделі.",
"Leave empty to use the default prompt, or enter a custom prompt": "Залиште порожнім для використання стандартного запиту, або введіть власний запит",
"Light": "Світла",
@@ -523,9 +526,9 @@
"Make sure to export a workflow.json file as API format from ComfyUI.": "Обов'язково експортуйте файл workflow.json у форматі API з ComfyUI.",
"Manage": "Керувати",
"Manage Arena Models": "Керувати моделями Arena",
"Manage Ollama": "",
"Manage Ollama API Connections": "",
"Manage OpenAI API Connections": "",
"Manage Ollama": "Керувати Ollama",
"Manage Ollama API Connections": "Керувати з'єднаннями Ollama API",
"Manage OpenAI API Connections": "Керувати з'єднаннями OpenAI API",
"Manage Pipelines": "Керування конвеєрами",
"March": "Березень",
"Max Tokens (num_predict)": "Макс токенів (num_predict)",
@@ -559,18 +562,19 @@
"Model accepts image inputs": "Модель приймає зображеня",
"Model created successfully!": "Модель створено успішно!",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Виявлено шлях до файлової системи моделі. Для оновлення потрібно вказати коротке ім'я моделі, не вдасться продовжити.",
"Model Filtering": "",
"Model Filtering": "Фільтрація моделей",
"Model ID": "ID моделі",
"Model IDs": "",
"Model IDs": "ID моделей",
"Model Name": "Назва моделі",
"Model not selected": "Модель не вибрана",
"Model Params": "Параметри моделі",
"Model Permissions": "",
"Model Permissions": "Дозволи моделей",
"Model updated successfully": "Модель успішно оновлено",
"Modelfile Content": "Вміст файлу моделі",
"Models": "Моделі",
"Models Access": "",
"Mojeek Search API Key": "",
"Models Access": "Доступ до моделей",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "API ключ для пошуку Mojeek",
"more": "більше",
"More": "Більше",
"Name": "Ім'я",
@@ -584,15 +588,16 @@
"No feedbacks found": "Відгуків не знайдено",
"No file selected": "Файл не обрано",
"No files found.": "Файли не знайдено.",
"No groups with access, add a group to grant access": "",
"No groups with access, add a group to grant access": "Немає груп з доступом, додайте групу для надання доступу",
"No HTML, CSS, or JavaScript content found.": "HTML, CSS або JavaScript контент не знайдено.",
"No knowledge found": "Знання не знайдено.",
"No model IDs": "",
"No model IDs": "Немає ID моделей",
"No models found": "Моделей не знайдено",
"No models selected": "",
"No results found": "Не знайдено жодного результату",
"No search query generated": "Пошуковий запит не сформовано",
"No source available": "Джерело не доступне",
"No users were found.": "",
"No users were found.": "Користувачів не знайдено.",
"No valves to update": "Немає клапанів для оновлення",
"None": "Нема",
"Not factually correct": "Не відповідає дійсності",
@@ -611,13 +616,13 @@
"Ollama": "Ollama",
"Ollama API": "Ollama API",
"Ollama API disabled": "Ollama API вимкнено",
"Ollama API settings updated": "",
"Ollama API settings updated": "Налаштування Ollama API оновлено",
"Ollama Version": "Версія Ollama",
"On": "Увімк",
"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 collections can be edited, create a new knowledge base to edit/add documents.": "Редагувати можна лише колекції, створіть нову базу знань, щоб редагувати або додавати документи.",
"Only select users and groups with permission can access": "",
"Only select users and groups with permission can access": "Тільки вибрані користувачі та групи з дозволом можуть отримати доступ",
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Схоже, що URL-адреса невірна. Будь ласка, перевірте ще раз та спробуйте ще раз.",
"Oops! There are files still uploading. Please wait for the upload to complete.": "Упс! Деякі файли все ще завантажуються. Будь ласка, зачекайте, поки завантаження завершиться.",
"Oops! There was an error in the previous response.": "Упс! Сталася помилка в попередній відповіді.",
@@ -632,24 +637,24 @@
"OpenAI API": "OpenAI API",
"OpenAI API Config": "Конфігурація OpenAI API",
"OpenAI API Key is required.": "Потрібен ключ OpenAI API.",
"OpenAI API settings updated": "",
"OpenAI API settings updated": "Налаштування OpenAI API оновлено",
"OpenAI URL/Key required.": "Потрібен OpenAI URL/ключ.",
"or": "або",
"Organize your users": "",
"Organize your users": "Організуйте своїх користувачів",
"Other": "Інше",
"OUTPUT": "ВИХІД",
"Output format": "Формат відповіді",
"Overview": "Огляд",
"page": "сторінка",
"Password": "Пароль",
"Paste Large Text as File": "",
"Paste Large Text as File": "Вставити великий текст як файл",
"PDF document (.pdf)": "PDF документ (.pdf)",
"PDF Extract Images (OCR)": "Розпізнавання зображень з PDF (OCR)",
"pending": "на розгляді",
"Permission denied when accessing media devices": "Відмовлено в доступі до медіапристроїв",
"Permission denied when accessing microphone": "Відмовлено у доступі до мікрофона",
"Permission denied when accessing microphone: {{error}}": "Доступ до мікрофона заборонено: {{error}}",
"Permissions": "",
"Permissions": "Дозволи",
"Personalization": "Персоналізація",
"Pin": "Зачепити",
"Pinned": "Зачеплено",
@@ -667,21 +672,21 @@
"Please select a reason": "Будь ласка, виберіть причину",
"Port": "Порт",
"Positive attitude": "Позитивне ставлення",
"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": "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 моделей — залиште порожнім, щоб вимкнути",
"Previous 30 days": "Попередні 30 днів",
"Previous 7 days": "Попередні 7 днів",
"Profile Image": "Зображення профілю",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Підказка (напр., розкажіть мені цікавий факт про Римську імперію)",
"Prompt Content": "Зміст промту",
"Prompt created successfully": "",
"Prompt created successfully": "Підказку успішно створено",
"Prompt suggestions": "Швидкі промти",
"Prompt updated successfully": "",
"Prompt updated successfully": "Підказку успішно оновлено",
"Prompts": "Промти",
"Prompts Access": "",
"Prompts Access": "Доступ до підказок",
"Pull \"{{searchValue}}\" from Ollama.com": "Завантажити \"{{searchValue}}\" з Ollama.com",
"Pull a model from Ollama.com": "Завантажити модель з Ollama.com",
"Query Generation Prompt": "",
"Query Generation Prompt": "Підказка для генерації запиту",
"Query Params": "Параметри запиту",
"RAG Template": "Шаблон RAG",
"Rating": "Оцінка",
@@ -699,12 +704,14 @@
"Remove": "Видалити",
"Remove Model": "Видалити модель",
"Rename": "Перейменувати",
"Reorder Models": "",
"Repeat Last N": "Повторити останні N",
"Request Mode": "Режим запиту",
"Reranking Model": "Модель переранжування",
"Reranking model disabled": "Модель переранжування вимкнена",
"Reranking model set to \"{{reranking_model}}\"": "Модель переранжування встановлено на \"{{reranking_model}}\"",
"Reset": "Скидання",
"Reset All Models": "",
"Reset Upload Directory": "Скинути каталог завантажень",
"Reset Vector Storage/Knowledge": "Скинути векторне сховище/Знання",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Сповіщення про відповіді не можуть бути активовані, оскільки вам було відмовлено в доступі до веб-сайту. Будь ласка, відвідайте налаштування вашого браузера, щоб надати необхідний доступ.",
@@ -739,7 +746,7 @@
"Search options": "Опції пошуку",
"Search Prompts": "Пошук промтів",
"Search Result Count": "Кількість результатів пошуку",
"Search the web": "",
"Search the web": "Шукати в Інтернеті",
"Search Tools": "Пошуку інструментів",
"SearchApi API Key": "Ключ API для SearchApi",
"SearchApi Engine": "Рушій SearchApi",
@@ -756,7 +763,7 @@
"Select a base model": "Обрати базову модель",
"Select a engine": "Оберіть рушій",
"Select a function": "Оберіть функцію",
"Select a group": "",
"Select a group": "Вибрати групу",
"Select a model": "Оберіть модель",
"Select a pipeline": "Оберіть конвеєр",
"Select a pipeline url": "Оберіть адресу конвеєра",
@@ -779,7 +786,7 @@
"Set as default": "Встановити за замовчуванням",
"Set CFG Scale": "Встановити масштаб CFG",
"Set Default Model": "Встановити модель за замовчуванням",
"Set embedding model": "",
"Set embedding model": "Встановити модель вбудовування",
"Set embedding model (e.g. {{model}})": "Встановити модель вбудовування (напр, {{model}})",
"Set Image Size": "Встановити розмір зображення",
"Set reranking model (e.g. {{model}})": "Встановити модель переранжування (напр., {{model}})",
@@ -867,8 +874,8 @@
"This response was generated by \"{{model}}\"": "Цю відповідь згенеровано за допомогою \"{{model}}\"",
"This will delete": "Це призведе до видалення",
"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Це видалить <strong>{{NAME}}</strong> та <strong>всі його вмісти</strong>.",
"This will delete all models including custom models": "",
"This will delete all models including custom models and cannot be undone.": "",
"This will delete all models including custom models": "Це видалить усі моделі, включаючи користувацькі моделі",
"This will delete all models including custom models and cannot be undone.": "Це видалить усі моделі, включаючи користувацькі моделі, і не може бути скасовано.",
"This will reset the knowledge base and sync all files. Do you wish to continue?": "Це скине базу знань і синхронізує всі файли. Ви бажаєте продовжити?",
"Thorough explanation": "Детальне пояснення",
"Tika": "Tika",
@@ -885,7 +892,7 @@
"To access the GGUF models available for downloading,": "Щоб отримати доступ до моделей GGUF, які можна завантажити,,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Щоб отримати доступ до веб-інтерфейсу, зверніться до адміністратора. Адміністратори можуть керувати статусами користувачів з Панелі адміністратора.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Щоб прикріпити базу знань тут, спочатку додайте їх до робочого простору \"Знання\".",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Для захисту вашої конфіденційності з вашими відгуками діляться лише оцінками, ідентифікаторами моделей, тегами та метаданими — ваші журнали чату залишаються приватними і не включаються.",
"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Для захисту вашої конфіденційності з вашими відгуками діляться лише оцінками, ID моделей, тегами та метаданими — ваші журнали чату залишаються приватними і не включаються.",
"To select actions here, add them to the \"Functions\" workspace first.": "Щоб вибрати дії тут, спочатку додайте їх до робочої області \"Функції\".",
"To select filters here, add them to the \"Functions\" workspace first.": "Щоб обрати фільтри тут, спочатку додайте їх до робочої області \"Функції\".",
"To select toolkits here, add them to the \"Tools\" workspace first.": "Щоб обрати тут набори інструментів, спочатку додайте їх до робочої області \"Інструменти\".",
@@ -898,13 +905,13 @@
"Too verbose": "Занадто докладно",
"Tool created successfully": "Інструмент успішно створено",
"Tool deleted successfully": "Інструмент успішно видалено",
"Tool Description": "",
"Tool ID": "",
"Tool Description": "Опис інструменту",
"Tool ID": "ID інструменту",
"Tool imported successfully": "Інструмент успішно імпортовано",
"Tool Name": "",
"Tool Name": "Назва інструменту",
"Tool updated successfully": "Інструмент успішно оновлено",
"Tools": "Інструменти",
"Tools Access": "",
"Tools Access": "Доступ до інструментів",
"Tools are a function calling system with arbitrary code execution": "Інструменти - це система виклику функцій з довільним виконанням коду",
"Tools have a function calling system that allows arbitrary code execution": "Інструменти мають систему виклику функцій, яка дозволяє виконання довільного коду",
"Tools have a function calling system that allows arbitrary code execution.": "Інструменти мають систему виклику функцій, яка дозволяє виконання довільного коду.",
@@ -919,9 +926,9 @@
"Type Hugging Face Resolve (Download) URL": "Введіть URL ресурсу Hugging Face Resolve (завантаження)",
"Uh-oh! There was an issue connecting to {{provider}}.": "Ой! Виникла проблема при підключенні до {{provider}}.",
"UI": "Користувацький інтерфейс",
"Unarchive All": "",
"Unarchive All Archived Chats": "",
"Unarchive Chat": "",
"Unarchive All": "Розархівувати все",
"Unarchive All Archived Chats": "Розархівувати всі архівовані чати",
"Unarchive Chat": "Розархівувати чат",
"Unlock mysteries": "Розкрийте таємниці",
"Unpin": "Відчепити",
"Unravel secrets": "Розплутуйте секрети",
@@ -940,11 +947,11 @@
"Upload Files": "Завантажити файли",
"Upload Pipeline": "Завантажити конвеєр",
"Upload Progress": "Прогрес завантаження",
"URL": "",
"URL": "URL",
"URL Mode": "Режим URL-адреси",
"Use '#' in the prompt input to load and include your knowledge.": "Використовуйте '#' у полі введення підказки, щоб завантажити та включити свої знання.",
"Use Gravatar": "Змінити аватар",
"Use groups to group your users and assign permissions.": "",
"Use groups to group your users and assign permissions.": "Використовуйте групи, щоб об’єднувати користувачів і призначати дозволи.",
"Use Initials": "Використовувати ініціали",
"use_mlock (Ollama)": "use_mlock (Ollama)",
"use_mmap (Ollama)": "use_mmap (Ollama)",
@@ -963,12 +970,12 @@
"variable to have them replaced with clipboard content.": "змінна, щоб замінити їх вмістом буфера обміну.",
"Version": "Версія",
"Version {{selectedVersion}} of {{totalVersions}}": "Версія {{selectedVersion}} з {{totalVersions}}",
"Visibility": "",
"Visibility": "Видимість",
"Voice": "Голос",
"Voice Input": "Голосове введення",
"Warning": "Увага!",
"Warning:": "Увага:",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Попередження: Увімкнення цього дозволить користувачам завантажувати довільний код на сервер.",
"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Попередження: Якщо ви оновлюєте або змінюєте модель вбудовування, вам потрібно буде повторно імпортувати всі документи.",
"Web": "Веб",
"Web API": "Веб-API",
@@ -977,20 +984,20 @@
"Web Search Engine": "Веб-пошукова система",
"Webhook URL": "URL веб-запиту",
"WebUI Settings": "Налаштування WebUI",
"WebUI will make requests to \"{{url}}/api/chat\"": "",
"WebUI will make requests to \"{{url}}/chat/completions\"": "",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI надсилатиме запити до \"{{url}}/api/chat\"",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI надсилатиме запити до \"{{url}}/chat/completions\"",
"What are you trying to achieve?": "Чого ви прагнете досягти?",
"What are you working on?": "Над чим ти працюєш?",
"What’s New in": "Що нового в",
"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "Коли активовано, модель буде відповідати на кожне повідомлення чату в режимі реального часу, генеруючи відповідь, як тільки користувач надішле повідомлення. Цей режим корисний для застосувань життєвих вітань чатів, але може позначитися на продуктивності на повільнішому апаратному забезпеченні.",
"wherever you are": "де б ви не були",
"Whisper (Local)": "Whisper (Локально)",
"Why?": "",
"Why?": "Чому?",
"Widescreen Mode": "Широкоекранний режим",
"Won": "Переможець",
"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "Працює разом з top-k. Більше значення (напр., 0.95) приведе до більш різноманітного тексту, тоді як менше значення (напр., 0.5) згенерує більш зосереджений і консервативний текст. (За замовчуванням: 0.9)",
"Workspace": "Робочий простір",
"Workspace Permissions": "",
"Workspace Permissions": "Дозволи робочого простору.",
"Write a prompt suggestion (e.g. Who are you?)": "Напишіть промт (напр., Хто ти?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Напишіть стислий зміст у 50 слів, який узагальнює [тема або ключове слово].",
"Write something...": "Напишіть щось...",
@@ -1000,7 +1007,7 @@
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Ви можете спілкуватися лише з максимальною кількістю {{maxCount}} файлів одночасно.",
"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Ви можете налаштувати ваші взаємодії з мовними моделями, додавши спогади через кнопку 'Керувати' внизу, що зробить їх більш корисними та персоналізованими для вас.",
"You cannot upload an empty file.": "Ви не можете завантажити порожній файл.",
"You do not have permission to upload files.": "",
"You do not have permission to upload files.": "У вас немає дозволу завантажувати файли.",
"You have no archived conversations.": "У вас немає архівованих розмов.",
"You have shared this chat": "Ви поділилися цим чатом",
"You're a helpful assistant.": "Ви корисний асистент.",
@@ -167,6 +167,7 @@
"Completions": "تکمیل",
"Concurrent Requests": "ہم وقت درخواستیں",
"Configure": "",
"Configure Models": "",
"Confirm": "تصدیق کریں",
"Confirm Password": "پاس ورڈ کی توثیق کریں",
"Confirm your action": "اپنی کارروائی کی تصدیق کریں",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "ڈیفالٹ (سینٹینس ٹرانسفارمرز)",
"Default Model": "ڈیفالٹ ماڈل",
"Default model updated": "ڈیفالٹ ماڈل اپ ڈیٹ ہو گیا",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "ڈیفالٹ پرامپٹ تجاویز",
@@ -383,6 +385,7 @@
"Failed to add file.": "فائل شامل کرنے میں ناکام",
"Failed to create API Key.": "API کلید بنانے میں ناکام",
"Failed to read clipboard contents": "کلپ بورڈ مواد کو پڑھنے میں ناکام",
"Failed to save models configuration": "",
"Failed to update settings": "ترتیبات کی تازہ کاری ناکام رہی",
"Failed to upload file.": "فائل اپلوڈ کرنے میں ناکامی ہوئی",
"February": "فروری",
@@ -570,6 +573,7 @@
"Modelfile Content": "ماڈل فائل مواد",
"Models": "ماڈلز",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "مزید",
"More": "مزید",
@@ -589,6 +593,7 @@
"No knowledge found": "کوئی معلومات نہیں ملی",
"No model IDs": "",
"No models found": "کوئی ماڈل نہیں ملا",
"No models selected": "",
"No results found": "کوئی نتائج نہیں ملے",
"No search query generated": "کوئی تلاش کی درخواست نہیں بنائی گئی",
"No source available": "ماخذ دستیاب نہیں ہے",
@@ -699,12 +704,14 @@
"Remove": "ہٹا دیں",
"Remove Model": "ماڈل ہٹائیں",
"Rename": "تبدیل نام کریں",
"Reorder Models": "",
"Repeat Last N": "آخری این (N)",
"Request Mode": "درخواست کا موڈ",
"Reranking Model": "دوبارہ درجہ بندی کا ماڈل",
"Reranking model disabled": "دوبارہ درجہ بندی کا ماڈل غیر فعال کر دیا گیا",
"Reranking model set to \"{{reranking_model}}\"": "دوبارہ درجہ بندی کا ماڈل \"{{reranking_model}}\" پر مقرر کر دیا گیا ہے",
"Reset": "ری سیٹ",
"Reset All Models": "",
"Reset Upload Directory": "اپلوڈ ڈائریکٹری کو ری سیٹ کریں",
"Reset Vector Storage/Knowledge": "ویكٹر اسٹوریج/علم کو ری سیٹ کریں",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "جواب کی اطلاعات کو فعال نہیں کیا جا سکتا کیونکہ ویب سائٹ کی اجازتیں مسترد کر دی گئی ہیں براہ کرم اپنے براؤزر کی سیٹنگز پر جائیں تاکہ ضروری رسائی کی اجازت دے سکیں",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "Các truy vấn đồng thời",
"Configure": "",
"Configure Models": "",
"Confirm": "Xác nhận",
"Confirm Password": "Xác nhận Mật khẩu",
"Confirm your action": "Xác nhận hành động của bạn",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "Mặc định (SentenceTransformers)",
"Default Model": "Model mặc định",
"Default model updated": "Mô hình mặc định đã được cập nhật",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "Đề xuất prompt mặc định",
@@ -383,6 +385,7 @@
"Failed to add file.": "",
"Failed to create API Key.": "Lỗi khởi tạo API Key",
"Failed to read clipboard contents": "Không thể đọc nội dung clipboard",
"Failed to save models configuration": "",
"Failed to update settings": "Lỗi khi cập nhật các cài đặt",
"Failed to upload file.": "",
"February": "Tháng 2",
@@ -570,6 +573,7 @@
"Modelfile Content": "Nội dung Tệp Mô hình",
"Models": "Mô hình",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "Thêm",
@@ -589,6 +593,7 @@
"No knowledge found": "",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "Không tìm thấy kết quả",
"No search query generated": "Không có truy vấn tìm kiếm nào được tạo ra",
"No source available": "Không có nguồn",
@@ -699,12 +704,14 @@
"Remove": "Xóa",
"Remove Model": "Xóa model",
"Rename": "Đổi tên",
"Reorder Models": "",
"Repeat Last N": "Repeat Last N",
"Request Mode": "Request Mode",
"Reranking Model": "Reranking Model",
"Reranking model disabled": "Reranking model disabled",
"Reranking model set to \"{{reranking_model}}\"": "Reranking model được đặt thành \"{{reranking_model}}\"",
"Reset": "Xóa toàn bộ",
"Reset All Models": "",
"Reset Upload Directory": "Xóa toàn bộ thư mục Upload",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Không thể kích hoạt thông báo vì trang web không cấp quyền. Vui lòng truy cập cài đặt trình duyệt của bạn để cấp quyền cần thiết.",
+10 -3
View File
@@ -167,6 +167,7 @@
"Completions": "续写",
"Concurrent Requests": "并发请求",
"Configure": "配置",
"Configure Models": "配置模型",
"Confirm": "确认",
"Confirm Password": "确认密码",
"Confirm your action": "确定吗?",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "默认(SentenceTransformers)",
"Default Model": "默认模型",
"Default model updated": "默认模型已更新",
"Default Models": "默认模型",
"Default permissions": "默认权限",
"Default permissions updated successfully": "默认权限更新成功",
"Default Prompt Suggestions": "默认提示词建议",
@@ -329,7 +331,7 @@
"Enter language codes": "输入语言代码",
"Enter Model ID": "输入模型 ID",
"Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如:{{modelTag}})",
"Enter Mojeek Search API Key": "",
"Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥",
"Enter Number of Steps (e.g. 50)": "输入步骤数 (Steps) (例如:50)",
"Enter Sampler (e.g. Euler a)": "输入 Sampler (例如:Euler a)",
"Enter Scheduler (e.g. Karras)": "输入 Scheduler (例如:Karras)",
@@ -383,6 +385,7 @@
"Failed to add file.": "添加文件失败。",
"Failed to create API Key.": "无法创建 API 密钥。",
"Failed to read clipboard contents": "无法读取剪贴板内容",
"Failed to save models configuration": "无法保存模型配置",
"Failed to update settings": "无法更新设置",
"Failed to upload file.": "上传文件失败",
"February": "二月",
@@ -453,7 +456,7 @@
"Hide": "隐藏",
"Host": "Host",
"How can I help you today?": "有什么我能帮您的吗?",
"How would you rate this response?": "",
"How would you rate this response?": "您如何评价这个回应?",
"Hybrid Search": "混合搜索",
"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "我已阅读并理解我的行为所带来的影响,明白执行任意代码所涉及的风险。且我已验证代码来源可信度。",
"ID": "ID",
@@ -570,7 +573,8 @@
"Modelfile Content": "模型文件内容",
"Models": "模型",
"Models Access": "访问模型列表",
"Mojeek Search API Key": "",
"Models configuration saved successfully": "模型配置保存成功",
"Mojeek Search API Key": "Mojeek Search API 密钥",
"more": "更多",
"More": "更多",
"Name": "名称",
@@ -589,6 +593,7 @@
"No knowledge found": "未找到知识",
"No model IDs": "没有模型 ID",
"No models found": "未找到任何模型",
"No models selected": "未选择任何模型",
"No results found": "未找到结果",
"No search query generated": "未生成搜索查询",
"No source available": "没有可用来源",
@@ -699,12 +704,14 @@
"Remove": "移除",
"Remove Model": "移除模型",
"Rename": "重命名",
"Reorder Models": "重新排序模型",
"Repeat Last N": "重复最后 N 次",
"Request Mode": "请求模式",
"Reranking Model": "重排模型",
"Reranking model disabled": "重排模型已禁用",
"Reranking model set to \"{{reranking_model}}\"": "重排模型设置为 \"{{reranking_model}}\"",
"Reset": "重置",
"Reset All Models": "",
"Reset Upload Directory": "重置上传目录",
"Reset Vector Storage/Knowledge": "重置向量存储/知识",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "无法激活回复时发送通知。请检查浏览器设置,并授予必要的访问权限。",
@@ -167,6 +167,7 @@
"Completions": "",
"Concurrent Requests": "平行請求",
"Configure": "",
"Configure Models": "",
"Confirm": "確認",
"Confirm Password": "確認密碼",
"Confirm your action": "確認您的操作",
@@ -215,6 +216,7 @@
"Default (SentenceTransformers)": "預設 (SentenceTransformers)",
"Default Model": "預設模型",
"Default model updated": "預設模型已更新",
"Default Models": "",
"Default permissions": "",
"Default permissions updated successfully": "",
"Default Prompt Suggestions": "預設提示詞建議",
@@ -383,6 +385,7 @@
"Failed to add file.": "無法新增檔案。",
"Failed to create API Key.": "無法建立 API 金鑰。",
"Failed to read clipboard contents": "無法讀取剪貼簿內容",
"Failed to save models configuration": "",
"Failed to update settings": "無法更新設定",
"Failed to upload file.": "無法上傳檔案。",
"February": "2 月",
@@ -570,6 +573,7 @@
"Modelfile Content": "模型檔案內容",
"Models": "模型",
"Models Access": "",
"Models configuration saved successfully": "",
"Mojeek Search API Key": "",
"more": "",
"More": "更多",
@@ -589,6 +593,7 @@
"No knowledge found": "找不到知識",
"No model IDs": "",
"No models found": "",
"No models selected": "",
"No results found": "找不到任何結果",
"No search query generated": "未產生搜尋查詢",
"No source available": "沒有可用的來源",
@@ -699,12 +704,14 @@
"Remove": "移除",
"Remove Model": "移除模型",
"Rename": "重新命名",
"Reorder Models": "",
"Repeat Last N": "重複最後 N 個",
"Request Mode": "請求模式",
"Reranking Model": "重新排序模型",
"Reranking model disabled": "已停用重新排序模型",
"Reranking model set to \"{{reranking_model}}\"": "重新排序模型已設定為 \"{{reranking_model}}\"",
"Reset": "重設",
"Reset All Models": "",
"Reset Upload Directory": "重設上傳目錄",
"Reset Vector Storage/Knowledge": "",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "無法啟用回應通知,因為網站權限已遭拒。請前往瀏覽器設定以授予必要存取權限。",
+8 -1
View File
@@ -8,6 +8,10 @@ import { TTS_RESPONSE_SPLIT } from '$lib/types';
// Helper functions
//////////////////////////
function escapeRegExp(string: string): string {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
export const replaceTokens = (content, sourceIds, char, user) => {
const charToken = /{{char}}/gi;
const userToken = /{{user}}/gi;
@@ -39,8 +43,11 @@ export const replaceTokens = (content, sourceIds, char, user) => {
// Remove sourceIds from the content and replace them with <source_id>...</source_id>
if (Array.isArray(sourceIds)) {
sourceIds.forEach((sourceId) => {
// Escape special characters in the sourceId
const escapedSourceId = escapeRegExp(sourceId);
// Create a token based on the exact `[sourceId]` string
const sourceToken = `\\[${sourceId}\\]`; // Escape special characters for RegExp
const sourceToken = `\\[${escapedSourceId}\\]`; // Escape special characters for RegExp
const sourceRegex = new RegExp(sourceToken, 'g'); // Match all occurrences of [sourceId]
content = content.replace(sourceRegex, `<source_id data="${sourceId}" />`);