From 4f982e244f5b48c8f47ecd862d0168309b5e8cd6 Mon Sep 17 00:00:00 2001 From: Olivier Lacroix Date: Thu, 5 Jun 2025 10:58:22 +1000 Subject: [PATCH 001/162] Ensure tool callable can be used by genai directly --- backend/open_webui/utils/tools.py | 34 +++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index 0774522dbd..da67e6fdc0 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -55,16 +55,34 @@ def get_async_tool_function_and_apply_extra_params( extra_params = {k: v for k, v in extra_params.items() if k in sig.parameters} partial_func = partial(function, **extra_params) + # Remove the 'frozen' keyword arguments from the signature + # python-genai uses the signature to infer the tool properties for native function calling + parameters = [] + for name, parameter in sig.parameters.items(): + # Exclude keyword arguments that are frozen + if name in extra_params: + continue + # Keep remaining parameters + parameters.append(parameter) + + new_sig = inspect.Signature( + parameters=parameters, return_annotation=sig.return_annotation + ) + if inspect.iscoroutinefunction(function): - update_wrapper(partial_func, function) - return partial_func + # wrap the functools.partial as python-genai has trouble with it + # https://github.com/googleapis/python-genai/issues/907 + async def new_function(*args, **kwargs): + return await partial_func(*args, **kwargs) else: - # Make it a coroutine function + # Make it a coroutine function when it is not already async def new_function(*args, **kwargs): return partial_func(*args, **kwargs) - update_wrapper(new_function, function) - return new_function + update_wrapper(new_function, function) + new_function.__signature__ = new_sig + + return new_function def get_tools( @@ -286,15 +304,15 @@ def convert_function_to_pydantic_model(func: Callable) -> type[BaseModel]: field_defs = {} for name, param in parameters.items(): - type_hint = type_hints.get(name, Any) default_value = param.default if param.default is not param.empty else ... param_description = function_param_descriptions.get(name, None) if param_description: - field_defs[name] = type_hint, Field( - default_value, description=param_description + field_defs[name] = ( + type_hint, + Field(default_value, description=param_description), ) else: field_defs[name] = type_hint, default_value From 6dd969129df247a2feed47bf67a242fe7e9c77bc Mon Sep 17 00:00:00 2001 From: Rodrigo Agundez Date: Thu, 5 Jun 2025 23:21:04 +0800 Subject: [PATCH 002/162] Add option to blacklist modules in code interpreter Co-authored-by: KG --- backend/open_webui/config.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index 0c7dc3d521..ad4570a893 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1711,6 +1711,16 @@ CODE_INTERPRETER_JUPYTER_TIMEOUT = PersistentConfig( ), ) +CODE_INTERPRETER_BLACKLISTED_MODULES = PersistentConfig( + "CODE_INTERPRETER_BLACKLISTED_MODULES", + "code_interpreter.blacklisted_modules", + [ + library.strip() + for library in os.environ.get("CODE_INTERPRETER_BLACKLISTED_MODULES", "").split(",") + if library.strip() + ], +) + DEFAULT_CODE_INTERPRETER_PROMPT = """ #### Tools Available From bb09245792555a50a01f0e35334fd2dc59a4497d Mon Sep 17 00:00:00 2001 From: Rodrigo Agundez Date: Thu, 5 Jun 2025 23:21:37 +0800 Subject: [PATCH 003/162] Inject code to block imports from blacklisted modules Co-authored-by: KG --- backend/open_webui/utils/middleware.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 6510d7c99b..9005ce033e 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -3,6 +3,7 @@ import logging import sys import os import base64 +import textwrap import asyncio from aiocache import cached @@ -84,6 +85,7 @@ from open_webui.config import ( CACHE_DIR, DEFAULT_TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE, DEFAULT_CODE_INTERPRETER_PROMPT, + CODE_INTERPRETER_BLACKLISTED_MODULES, ) from open_webui.env import ( SRC_LOG_LEVELS, @@ -2207,6 +2209,25 @@ async def process_chat_response( try: if content_blocks[-1]["attributes"].get("type") == "code": code = content_blocks[-1]["content"] + if CODE_INTERPRETER_BLACKLISTED_MODULES: + blocking_code = textwrap.dedent(f""" + import builtins + + BLACKLISTED_MODULES = {CODE_INTERPRETER_BLACKLISTED_MODULES} + + _real_import = builtins.__import__ + def restricted_import(name, globals=None, locals=None, fromlist=(), level=0): + if name.split('.')[0] in BLACKLISTED_MODULES: + importer_name = globals.get('__name__') if globals else None + if importer_name == '__main__': + raise ImportError( + f"Direct import of module {{name}} is restricted." + ) + return _real_import(name, globals, locals, fromlist, level) + + builtins.__import__ = restricted_import + """) + code = blocking_code + "\n" + code if ( request.app.state.config.CODE_INTERPRETER_ENGINE From b23abcbfe55f0357674ec139cbf781b31db0a9a0 Mon Sep 17 00:00:00 2001 From: Adam Tao Date: Wed, 18 Jun 2025 19:29:37 +0800 Subject: [PATCH 004/162] feat(db): Add DATABASE_ENABLE_SQLITE_WAL to enable SQLite WAL Signed-off-by: Adam Tao --- backend/open_webui/env.py | 4 ++++ backend/open_webui/internal/db.py | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index e561036408..391da6a53b 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -336,6 +336,10 @@ else: except Exception: DATABASE_POOL_RECYCLE = 3600 +DATABASE_ENABLE_SQLITE_WAL = ( + os.environ.get("DATABASE_ENABLE_SQLITE_WAL", "False").lower() == "true" +) + RESET_CONFIG_ON_START = ( os.environ.get("RESET_CONFIG_ON_START", "False").lower() == "true" ) diff --git a/backend/open_webui/internal/db.py b/backend/open_webui/internal/db.py index d7a200ff20..ccc3995ded 100644 --- a/backend/open_webui/internal/db.py +++ b/backend/open_webui/internal/db.py @@ -14,9 +14,10 @@ from open_webui.env import ( DATABASE_POOL_RECYCLE, DATABASE_POOL_SIZE, DATABASE_POOL_TIMEOUT, + DATABASE_ENABLE_SQLITE_WAL, ) from peewee_migrate import Router -from sqlalchemy import Dialect, create_engine, MetaData, types +from sqlalchemy import Dialect, create_engine, MetaData, event, types from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.pool import QueuePool, NullPool @@ -114,6 +115,14 @@ elif "sqlite" in SQLALCHEMY_DATABASE_URL: engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) + def on_connect(dbapi_connection, connection_record): + cursor = dbapi_connection.cursor() + if DATABASE_ENABLE_SQLITE_WAL: + cursor.execute("PRAGMA journal_mode=WAL") + else: + cursor.execute("PRAGMA journal_mode=DELETE") + cursor.close() + event.listen(engine, "connect", on_connect) else: if isinstance(DATABASE_POOL_SIZE, int): if DATABASE_POOL_SIZE > 0: From 635cb8e3ff0208724ff122b37128ae4e42f7ff05 Mon Sep 17 00:00:00 2001 From: Adam Tao Date: Mon, 7 Jul 2025 22:16:19 +0800 Subject: [PATCH 005/162] perf(db): deduplicate update_user_last_active_by_id to reduce conflicts Signed-off-by: Adam Tao --- backend/open_webui/env.py | 11 +++++++++ backend/open_webui/models/users.py | 3 +++ backend/open_webui/utils/misc.py | 39 ++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 391da6a53b..7ce17f57fc 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -340,6 +340,17 @@ DATABASE_ENABLE_SQLITE_WAL = ( os.environ.get("DATABASE_ENABLE_SQLITE_WAL", "False").lower() == "true" ) +DATABASE_DEDUPLICATE_INTERVAL = ( + os.environ.get("DATABASE_DEDUPLICATE_INTERVAL", 0.) +) +if DATABASE_DEDUPLICATE_INTERVAL == "": + DATABASE_DEDUPLICATE_INTERVAL = 0.0 +else: + try: + DATABASE_DEDUPLICATE_INTERVAL = float(DATABASE_DEDUPLICATE_INTERVAL) + except Exception: + DATABASE_DEDUPLICATE_INTERVAL = 0.0 + RESET_CONFIG_ON_START = ( os.environ.get("RESET_CONFIG_ON_START", "False").lower() == "true" ) diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index 60b6ad0c10..47cd7b0eb0 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -4,8 +4,10 @@ from typing import Optional from open_webui.internal.db import Base, JSONField, get_db +from open_webui.env import DATABASE_DEDUPLICATE_INTERVAL from open_webui.models.chats import Chats from open_webui.models.groups import Groups +from open_webui.utils.misc import deduplicate from pydantic import BaseModel, ConfigDict @@ -311,6 +313,7 @@ class UsersTable: except Exception: return None + @deduplicate(DATABASE_DEDUPLICATE_INTERVAL) def update_user_last_active_by_id(self, id: str) -> Optional[UserModel]: try: with get_db() as db: diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 2a780209a7..8c4ae9d9a2 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -1,5 +1,6 @@ import hashlib import re +import threading import time import uuid import logging @@ -478,3 +479,41 @@ def convert_logit_bias_input_to_json(user_input): bias = 100 if bias > 100 else -100 if bias < -100 else bias logit_bias_json[token] = bias return json.dumps(logit_bias_json) + + +def freeze(value): + """ + Freeze a value to make it hashable. + """ + if isinstance(value, dict): + return frozenset((k, freeze(v)) for k, v in value.items()) + elif isinstance(value, list): + return tuple(freeze(v) for v in value) + return value + + +def deduplicate(interval: float = 10.0): + """ + Decorator to prevent a function from being called more than once within a specified duration. + If the function is called again within the duration, it returns None. To avoid returning + different types, the return type of the function should be Optional[T]. + + :param interval: Duration in seconds to wait before allowing the function to be called again. + """ + def decorator(func): + last_calls = {} + lock = threading.Lock() + + def wrapper(*args, **kwargs): + key = (args, freeze(kwargs)) + now = time.time() + if now - last_calls.get(key, 0) < interval: + return None + with lock: + if now - last_calls.get(key, 0) < interval: + return None + last_calls[key] = now + return func(*args, **kwargs) + return wrapper + + return decorator From 7bd7559bfe490c71d9601e35ae119d788a90c495 Mon Sep 17 00:00:00 2001 From: Adam Tao Date: Sat, 19 Jul 2025 19:20:53 +0800 Subject: [PATCH 006/162] refactor: format Signed-off-by: Adam Tao --- backend/open_webui/env.py | 4 +--- backend/open_webui/internal/db.py | 2 ++ backend/open_webui/utils/misc.py | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 7ce17f57fc..5f5f1be8e4 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -336,9 +336,7 @@ else: except Exception: DATABASE_POOL_RECYCLE = 3600 -DATABASE_ENABLE_SQLITE_WAL = ( - os.environ.get("DATABASE_ENABLE_SQLITE_WAL", "False").lower() == "true" -) +DATABASE_ENABLE_SQLITE_WAL = (os.environ.get("DATABASE_ENABLE_SQLITE_WAL", "False").lower() == "true") DATABASE_DEDUPLICATE_INTERVAL = ( os.environ.get("DATABASE_DEDUPLICATE_INTERVAL", 0.) diff --git a/backend/open_webui/internal/db.py b/backend/open_webui/internal/db.py index ccc3995ded..b6913d87b0 100644 --- a/backend/open_webui/internal/db.py +++ b/backend/open_webui/internal/db.py @@ -115,6 +115,7 @@ elif "sqlite" in SQLALCHEMY_DATABASE_URL: engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) + def on_connect(dbapi_connection, connection_record): cursor = dbapi_connection.cursor() if DATABASE_ENABLE_SQLITE_WAL: @@ -122,6 +123,7 @@ elif "sqlite" in SQLALCHEMY_DATABASE_URL: else: cursor.execute("PRAGMA journal_mode=DELETE") cursor.close() + event.listen(engine, "connect", on_connect) else: if isinstance(DATABASE_POOL_SIZE, int): diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 8c4ae9d9a2..e7a007df38 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -500,6 +500,7 @@ def deduplicate(interval: float = 10.0): :param interval: Duration in seconds to wait before allowing the function to be called again. """ + def decorator(func): last_calls = {} lock = threading.Lock() @@ -514,6 +515,7 @@ def deduplicate(interval: float = 10.0): return None last_calls[key] = now return func(*args, **kwargs) + return wrapper return decorator From f890fe6901563d92e4aae649088f29b7ee33056c Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 11 Aug 2025 17:36:36 +0400 Subject: [PATCH 007/162] enh: allow plaintext for external tool servers --- backend/open_webui/utils/tools.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index 3727bb1ad9..e9506fd2d8 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -626,7 +626,13 @@ async def execute_tool_server( if response.status >= 400: text = await response.text() raise Exception(f"HTTP error {response.status}: {text}") - return await response.json() + + try: + response_data = await response.json() + except Exception: + response_data = await response.text() + + return response_data else: async with request_method( final_url, @@ -636,7 +642,13 @@ async def execute_tool_server( if response.status >= 400: text = await response.text() raise Exception(f"HTTP error {response.status}: {text}") - return await response.json() + + try: + response_data = await response.json() + except Exception: + response_data = await response.text() + + return response_data except Exception as err: error = str(err) From 2df4e7207b97cdb840d92cdaf66854f224052d10 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 11 Aug 2025 17:38:00 +0400 Subject: [PATCH 008/162] refac --- src/lib/apis/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/apis/index.ts b/src/lib/apis/index.ts index 86f4165c30..c3701b7325 100644 --- a/src/lib/apis/index.ts +++ b/src/lib/apis/index.ts @@ -480,7 +480,14 @@ export const executeToolServer = async ( throw new Error(`HTTP error! Status: ${res.status}. Message: ${resText}`); } - return await res.json(); + let responseData; + try { + responseData = await res.json(); + } catch (err) { + responseData = await res.text(); + } + + return responseData; } catch (err: any) { error = err.message; console.error('API Request Error:', error); From 53c9c483877e4d4858f2960f783f2a7add941f89 Mon Sep 17 00:00:00 2001 From: Kylapaallikko Date: Mon, 11 Aug 2025 19:11:56 +0300 Subject: [PATCH 009/162] Update fi-FI translation.json Added missing translations --- src/lib/i18n/locales/fi-FI/translation.json | 278 ++++++++++---------- 1 file changed, 139 insertions(+), 139 deletions(-) diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index f541e9fa39..1aed97469c 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -5,15 +5,15 @@ "(e.g. `sh webui.sh --api`)": "(esim. `sh webui.sh --api`)", "(latest)": "(uusin)", "(leave blank for to use commercial endpoint)": "(Jätä tyhjäksi, jos haluat käyttää kaupallista päätepistettä)", - "[Last] dddd [at] h:mm A": "", - "[Today at] h:mm A": "", - "[Yesterday at] h:mm A": "", + "[Last] dddd [at] h:mm A": "[Viimeisin] dddd h:mm A", + "[Today at] h:mm A": "[Tänään] h:mm A", + "[Yesterday at] h:mm A": "[Huommenna] h:mm A", "{{ models }}": "{{ mallit }}", "{{COUNT}} Available Tools": "{{COUNT}} työkalua saatavilla", - "{{COUNT}} characters": "", + "{{COUNT}} characters": "{{COUNT}} kirjainta", "{{COUNT}} hidden lines": "{{COUNT}} piilotettua riviä", "{{COUNT}} Replies": "{{COUNT}} vastausta", - "{{COUNT}} words": "", + "{{COUNT}} words": "{{COUNT}} sanaa", "{{user}}'s Chats": "{{user}}:n keskustelut", "{{webUIName}} Backend Required": "{{webUIName}}-backend vaaditaan", "*Prompt node ID(s) are required for image generation": "Kuvan luomiseen vaaditaan kehote-solmun ID(t)", @@ -28,7 +28,7 @@ "Account": "Tili", "Account Activation Pending": "Tilin aktivointi odottaa", "Accurate information": "Tarkkaa tietoa", - "Action": "", + "Action": "Toiminto", "Actions": "Toiminnot", "Activate": "Aktivoi", "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktivoi tämä komento kirjoittamalla \"/{{COMMAND}}\" chat-syötteeseen.", @@ -43,7 +43,7 @@ "Add content here": "Lisää sisältöä tähän", "Add Custom Parameter": "Lisää mukautettu parametri", "Add custom prompt": "Lisää mukautettu kehote", - "Add Details": "", + "Add Details": "Lisää yksityiskohtia", "Add Files": "Lisää tiedostoja", "Add Group": "Lisää ryhmä", "Add Memory": "Lisää muistiin", @@ -54,7 +54,7 @@ "Add text content": "Lisää tekstisisältöä", "Add User": "Lisää käyttäjä", "Add User Group": "Lisää käyttäjäryhmä", - "Additional Config": "", + "Additional Config": "Lisäasetukset", "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "", "Adjusting these settings will apply changes universally to all users.": "Näiden asetusten säätäminen vaikuttaa kaikkiin käyttäjiin.", "admin": "hallinta", @@ -64,7 +64,7 @@ "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Ylläpitäjillä on pääsy kaikkiin työkaluihin koko ajan; käyttäjät tarvitsevat työkaluja mallille määritettynä työtilassa.", "Advanced Parameters": "Edistyneet parametrit", "Advanced Params": "Edistyneet parametrit", - "AI": "", + "AI": "AI", "All": "Kaikki", "All Documents": "Kaikki asiakirjat", "All models deleted successfully": "Kaikki mallit poistettu onnistuneesti", @@ -74,10 +74,10 @@ "Allow Chat Deletion": "Salli keskustelujen poisto", "Allow Chat Edit": "Salli keskustelujen muokkaus", "Allow Chat Export": "Salli keskustelujen vienti", - "Allow Chat Params": "", + "Allow Chat Params": "Salli keskustelujen parametrit", "Allow Chat Share": "Salli keskustelujen jako", - "Allow Chat System Prompt": "", - "Allow Chat Valves": "", + "Allow Chat System Prompt": "Salli keskustelujen järjestelmä kehoitteet", + "Allow Chat Valves": "Salli keskustelu venttiilit", "Allow File Upload": "Salli tiedostojen lataus", "Allow Multiple Models in Chat": "Salli useampi malli keskustelussa", "Allow non-local voices": "Salli ei-paikalliset äänet", @@ -97,7 +97,7 @@ "Always Play Notification Sound": "Toista aina ilmoitusääni", "Amazing": "Hämmästyttävä", "an assistant": "avustaja", - "Analytics": "", + "Analytics": "Analytiikka", "Analyzed": "Analysoitu", "Analyzing...": "Analysoidaan..", "and": "ja", @@ -167,18 +167,18 @@ "Bing Search V7 Subscription Key": "Bing Search V7 -tilauskäyttäjäavain", "BM25 Weight": "", "Bocha Search API Key": "Bocha Search API -avain", - "Bold": "", + "Bold": "Lihavointi", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "Docling OCR moottori ja kiele(t) tulee täyttää, tai jättää molemmat tyhjäksi.", "Brave Search API Key": "Brave Search API -avain", - "Bullet List": "", - "Button ID": "", - "Button Label": "", - "Button Prompt": "", + "Bullet List": "Luettelo", + "Button ID": "Painikkeen ID", + "Button Label": "Painikkeen nimi", + "Button Prompt": "Painikkeen kehoite", "By {{name}}": "Tekijä {{name}}", "Bypass Embedding and Retrieval": "Ohita upotus ja haku", "Bypass Web Loader": "Ohita verkkolataaja", - "Cache Base Model List": "", + "Cache Base Model List": "Malli listan välimuisti", "Calendar": "Kalenteri", "Call": "Puhelu", "Call feature is not supported when using Web STT engine": "Puhelutoimintoa ei tueta käytettäessä web-puheentunnistusmoottoria", @@ -199,7 +199,7 @@ "Chat Bubble UI": "Keskustelu-pallojen käyttöliittymä", "Chat Controls": "Keskustelun hallinta", "Chat direction": "Keskustelun suunta", - "Chat ID": "", + "Chat ID": "Keskustelu ID", "Chat Overview": "Keskustelun yleiskatsaus", "Chat Permissions": "Keskustelun käyttöoikeudet", "Chat Tags Auto-Generation": "Keskustelutunnisteiden automaattinen luonti", @@ -233,12 +233,12 @@ "Clone Chat": "Kloonaa keskustelu", "Clone of {{TITLE}}": "{{TITLE}} klooni", "Close": "Sulje", - "Close Banner": "", - "Close Configure Connection Modal": "", - "Close modal": "", + "Close Banner": "Sulje banneri", + "Close Configure Connection Modal": "Sulje yhteyksien modaali", + "Close modal": "Sulje modaali", "Close settings modal": "Sulje asetus modaali", - "Close Sidebar": "", - "Code Block": "", + "Close Sidebar": "Sulje sivupalkki", + "Code Block": "Koodiblokki", "Code execution": "Koodin suoritus", "Code Execution": "Koodin Suoritus", "Code Execution Engine": "Koodin suoritusmoottori", @@ -257,16 +257,16 @@ "ComfyUI Workflow": "ComfyUI-työnkulku", "ComfyUI Workflow Nodes": "ComfyUI-työnkulun solmut", "Command": "Komento", - "Comment": "", + "Comment": "Kommentti", "Completions": "Täydennykset", - "Compress Images in Channels": "", + "Compress Images in Channels": "Pakkaa kuvat kanavissa", "Concurrent Requests": "Samanaikaiset pyynnöt", "Configure": "Määritä", "Confirm": "Vahvista", "Confirm Password": "Vahvista salasana", "Confirm your action": "Vahvista toimintasi", "Confirm your new password": "Vahvista uusi salasanasi", - "Confirm Your Password": "", + "Confirm Your Password": "Vahvista salasanasi", "Connect to your own OpenAI compatible API endpoints.": "Yhdistä omat OpenAI yhteensopivat API päätepisteet.", "Connect to your own OpenAPI compatible external tool servers.": "Yhdistä omat ulkopuoliset OpenAPI yhteensopivat työkalu palvelimet.", "Connection failed": "Yhteys epäonnistui", @@ -274,7 +274,7 @@ "Connection Type": "Yhteystyyppi", "Connections": "Yhteydet", "Connections saved successfully": "Yhteyksien tallentaminen onnistui", - "Connections settings updated": "", + "Connections settings updated": "Yhteysasetukset päivitetty", "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", "Contact Admin for WebUI Access": "Ota yhteyttä ylläpitäjään WebUI-käyttöä varten", "Content": "Sisältö", @@ -295,7 +295,7 @@ "Copy Formatted Text": "Kopioi muotoiltu teksti", "Copy last code block": "Kopioi viimeisin koodilohko", "Copy last response": "Kopioi viimeisin vastaus", - "Copy link": "", + "Copy link": "Kopioi linkki", "Copy Link": "Kopioi linkki", "Copy to clipboard": "Kopioi leikepöydälle", "Copying to clipboard was successful!": "Kopioiminen leikepöydälle onnistui!", @@ -306,7 +306,7 @@ "Create Account": "Luo tili", "Create Admin Account": "Luo ylläpitäjätili", "Create Channel": "Luo kanava", - "Create Folder": "", + "Create Folder": "Luo kansio", "Create Group": "Luo ryhmä", "Create Knowledge": "Luo tietoa", "Create new key": "Luo uusi avain", @@ -321,7 +321,7 @@ "Current Model": "Nykyinen malli", "Current Password": "Nykyinen salasana", "Custom": "Mukautettu", - "Custom description enabled": "", + "Custom description enabled": "Muokautetut kuvaukset käytössä", "Custom Parameter Name": "Mukautetun parametrin nimi", "Custom Parameter Value": "Mukautetun parametrin arvo", "Danger Zone": "Vaara-alue", @@ -329,13 +329,13 @@ "Database": "Tietokanta", "Datalab Marker API": "Datalab Marker API", "Datalab Marker API Key required.": "Datalab Marker API-avain vaaditaan.", - "DD/MM/YYYY": "", + "DD/MM/YYYY": "DD/MM/YYYY", "December": "joulukuu", "Default": "Oletus", "Default (Open AI)": "Oletus (Open AI)", "Default (SentenceTransformers)": "Oletus (SentenceTransformers)", - "Default action buttons will be used.": "", - "Default description enabled": "", + "Default action buttons will be used.": "Painikkeen oletustoiminto", + "Default description enabled": "Oletuskuvaus käytössä", "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "Oletustila toimii laajemman mallivalikoiman kanssa kutsumalla työkaluja kerran ennen suorittamista. Natiivitila hyödyntää mallin sisäänrakennettuja työkalujen kutsumisominaisuuksia, mutta edellyttää, että malli tukee tätä ominaisuutta.", "Default Model": "Oletusmalli", "Default model updated": "Oletusmalli päivitetty", @@ -377,7 +377,7 @@ "Direct Connections": "Suorat yhteydet", "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Suorat yhteydet mahdollistavat käyttäjien yhdistää omia OpenAI-yhteensopivia API-päätepisteitä.", "Direct Tool Servers": "Suorat työkalu palvelimet", - "Disable Code Interpreter": "", + "Disable Code Interpreter": "Poista Koodin suoritus käytöstä", "Disable Image Extraction": "Poista kuvien poiminta käytöstä", "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "Poista kuvien poiminta käytöstä PDF tiedostoista. Jos LLM on käytössä, kuvat tekstitetään automaattisesti. Oletuksena ei käytössä.", "Disabled": "Ei käytössä", @@ -393,7 +393,7 @@ "Discover, download, and explore model presets": "Löydä ja lataa mallien esiasetuksia", "Display": "Näytä", "Display Emoji in Call": "Näytä hymiöitä puhelussa", - "Display Multi-model Responses in Tabs": "", + "Display Multi-model Responses in Tabs": "Näytä usean mallin vastaukset välilehdissä", "Display the username instead of You in the Chat": "Näytä käyttäjänimi keskustelussa \"Sinä\" -tekstin sijaan", "Displays citations in the response": "Näyttää lähdeviitteet vastauksessa", "Dive into knowledge": "Uppoudu tietoon", @@ -440,12 +440,12 @@ "Edit Channel": "Muokkaa kanavaa", "Edit Connection": "Muokkaa yhteyttä", "Edit Default Permissions": "Muokkaa oletuskäyttöoikeuksia", - "Edit Folder": "", + "Edit Folder": "Muokkaa kansiota", "Edit Memory": "Muokkaa muistia", "Edit User": "Muokkaa käyttäjää", "Edit User Group": "Muokkaa käyttäjäryhmää", - "Edited": "", - "Editing": "", + "Edited": "Muokattu", + "Editing": "Muokataan", "Eject": "Poista", "ElevenLabs": "ElevenLabs", "Email": "Sähköposti", @@ -488,7 +488,7 @@ "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Syötä pilkulla erottaen \"token:bias_value\" parit (esim. 5432:100, 413:-100)", "Enter Config in JSON format": "Kirjoita konfiguraatio JSON-muodossa", "Enter content for the pending user info overlay. Leave empty for default.": "Kirjoita odottavien käyttäjien infon tekstisisältö. Käytä oletusta jättämällä tyhjäksi.", - "Enter Datalab Marker API Base URL": "", + "Enter Datalab Marker API Base URL": "Kirjoita Datalab Marker API verkko-osoite", "Enter Datalab Marker API Key": "Kirjoita Datalab Marker API-avain", "Enter description": "Kirjoita kuvaus", "Enter Docling OCR Engine": "Kirjoita Docling OCR moottori", @@ -506,13 +506,13 @@ "Enter External Web Search URL": "Kirjoita ulkoisen Web Search verkko-osoite", "Enter Firecrawl API Base URL": "Kirjoita Firecrawl API -verkko-osoite", "Enter Firecrawl API Key": "Kirjoita Firecrawl API-avain", - "Enter folder name": "", + "Enter folder name": "Kirjoita kansion nimi", "Enter Github Raw URL": "Kirjoita Github Raw -verkko-osoite", "Enter Google PSE API Key": "Kirjoita Google PSE API -avain", "Enter Google PSE Engine Id": "Kirjoita Google PSE -moottorin tunnus", "Enter Image Size (e.g. 512x512)": "Kirjoita kuvan koko (esim. 512x512)", "Enter Jina API Key": "Kirjoita Jina API -avain", - "Enter JSON config (e.g., {\"disable_links\": true})": "", + "Enter JSON config (e.g., {\"disable_links\": true})": "Kirjoita JSON asetus (esim. {\"disable_links\": true})", "Enter Jupyter Password": "Kirjoita Jupyter salasana", "Enter Jupyter Token": "Kirjoita Juypyter token", "Enter Jupyter URL": "Kirjoita Jupyter verkko-osoite", @@ -585,7 +585,7 @@ "Error unloading model: {{error}}": "Virhe mallia ladattaessa: {{error}}", "Error uploading file: {{error}}": "Virhe ladattaessa tiedostoa: {{error}}", "Evaluations": "Arvioinnit", - "Everyone": "", + "Everyone": "Kaikki", "Exa API Key": "Exa API -avain", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Esimerkki: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Esimerkki: KAIKKI", @@ -613,7 +613,7 @@ "Export Prompts": "Vie kehotteet", "Export to CSV": "Vie CSV-tiedostoon", "Export Tools": "Vie työkalut", - "Export Users": "", + "Export Users": "Vie käyttäjät", "External": "Ulkoiset", "External Document Loader URL required.": "Ulkoisen Document Loader:n verkko-osoite on vaaditaan.", "External Task Model": "Ulkoinen työmalli", @@ -621,17 +621,17 @@ "External Web Loader URL": "Ulkoinen Web Loader verkko-osoite", "External Web Search API Key": "Ulkoinen Web Search API-avain", "External Web Search URL": "Ulkoinen Web Search verkko-osoite", - "Fade Effect for Streaming Text": "", + "Fade Effect for Streaming Text": "Häivytystehoste suoratoistetulle tekstille", "Failed to add file.": "Tiedoston lisääminen epäonnistui.", "Failed to connect to {{URL}} OpenAPI tool server": "Yhdistäminen {{URL}} OpenAPI työkalu palvelimeen epäonnistui", "Failed to copy link": "Linkin kopioinmti epäonnistui", "Failed to create API Key.": "API-avaimen luonti epäonnistui.", "Failed to delete note": "Muistiinpanon poistaminen epäonnistui", - "Failed to extract content from the file: {{error}}": "", - "Failed to extract content from the file.": "", + "Failed to extract content from the file: {{error}}": "Tiedoston sisällön pomiminen epäonnistui: {{error}}", + "Failed to extract content from the file.": "Tiedoston sisällön pomiminen epäonnistui.", "Failed to fetch models": "Mallien hakeminen epäonnistui", - "Failed to generate title": "", - "Failed to load chat preview": "", + "Failed to generate title": "Otsikon luonti epäonnistui", + "Failed to load chat preview": "Keskustelun esikatselun lataaminen epäonnistui", "Failed to load file content.": "Tiedoston sisällön lataaminen epäonnistui.", "Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui", "Failed to save connections": "Yhteyksien tallentaminen epäonnistui", @@ -641,7 +641,7 @@ "Features": "Ominaisuudet", "Features Permissions": "Ominaisuuksien käyttöoikeudet", "February": "helmikuu", - "Feedback Details": "", + "Feedback Details": "Palautteen tiedot", "Feedback History": "Palautehistoria", "Feedbacks": "Palautteet", "Feel free to add specific details": "Voit lisätä tarkempia tietoja", @@ -655,20 +655,20 @@ "File Upload": "Tiedoston lataus", "File uploaded successfully": "Tiedosto ladattiin onnistuneesti", "Files": "Tiedostot", - "Filter": "", + "Filter": "Suodata", "Filter is now globally disabled": "Suodatin on nyt poistettu käytöstä globaalisti", "Filter is now globally enabled": "Suodatin on nyt otettu käyttöön globaalisti", "Filters": "Suodattimet", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Sormenjäljen väärentäminen havaittu: Alkukirjaimia ei voi käyttää avatarina. Käytetään oletusprofiilikuvaa.", "Firecrawl API Base URL": "Firecrawl API -verkko-osoite", "Firecrawl API Key": "Firecrawl API-avain", - "Floating Quick Actions": "", + "Floating Quick Actions": "Kelluvat pikakomennot", "Focus chat input": "Fokusoi syöttökenttään", "Folder deleted successfully": "Kansio poistettu onnistuneesti", - "Folder Name": "", + "Folder Name": "Kansion nimi", "Folder name cannot be empty.": "Kansion nimi ei voi olla tyhjä.", "Folder name updated successfully": "Kansion nimi päivitetty onnistuneesti", - "Folder updated successfully": "", + "Folder updated successfully": "Kansio päivitettiin onnistuneesti", "Follow up": "Jatkokysymykset", "Follow Up Generation": "Jatkokysymysten luonti", "Follow Up Generation Prompt": "Jatkokysymysten luonti kehoite", @@ -678,8 +678,8 @@ "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "Pakota OCR:n käyttö kaikilla PDF-sivuilla. Tämä voi johtaa huonompiin tuloksiin jos PDF:n tekstisisältö on laadukasta. Oletusarvo, ei käytöstä.", "Forge new paths": "Luo uusia polkuja", "Form": "Lomake", - "Format Lines": "", - "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "", + "Format Lines": "Muotoile rivit", + "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "Muotoile rivit. Oletusarvo on False. Jos arvo on True, rivit muotoillaan siten, että ne havaitsevat riviin liitetyn matematiikan ja tyylit.", "Format your variables using brackets like this:": "Muotoile muuttujasi hakasulkeilla tällä tavalla:", "Forwards system user session credentials to authenticate": "Välittää järjestelmän käyttäjän istunnon tunnistetiedot todennusta varten", "Full Context Mode": "Koko kontekstitila", @@ -707,7 +707,7 @@ "Generate prompt pair": "Luo kehotepari", "Generating search query": "Luodaan hakukyselyä", "Generating...": "Luodaan...", - "Get information on {{name}} in the UI": "", + "Get information on {{name}} in the UI": "Hae tietoja {{name}} -nimestä käyttöliittymässä", "Get started": "Aloita", "Get started with {{WEBUI_NAME}}": "Aloita käyttämään {{WEBUI_NAME}}:iä", "Global": "Yleinen", @@ -721,9 +721,9 @@ "Group Name": "Ryhmän nimi", "Group updated successfully": "Ryhmä päivitetty onnistuneesti", "Groups": "Ryhmät", - "H1": "", - "H2": "", - "H3": "", + "H1": "H1", + "H2": "H2", + "H3": "H3", "Haptic Feedback": "Haptinen palaute", "Hello, {{name}}": "Hei, {{name}}", "Help": "Ohje", @@ -747,14 +747,14 @@ "Ignite curiosity": "Sytytä uteliaisuus", "Image": "Kuva", "Image Compression": "Kuvan pakkaus", - "Image Compression Height": "", - "Image Compression Width": "", + "Image Compression Height": "Kuvan pakkauksen korkeus", + "Image Compression Width": "Kuvan pakkauksen leveys", "Image Generation": "Kuvagenerointi", "Image Generation (Experimental)": "Kuvagenerointi (kokeellinen)", "Image Generation Engine": "Kuvagenerointimoottori", "Image Max Compression Size": "Kuvan enimmäispakkauskoko", - "Image Max Compression Size height": "", - "Image Max Compression Size width": "", + "Image Max Compression Size height": "Kuvan enimmäiskorkeus", + "Image Max Compression Size width": "Kuvan enimmäisleveys", "Image Prompt Generation": "Kuvan kehote generointi", "Image Prompt Generation Prompt": "Kuvan generoinnin kehote", "Image Settings": "Kuva-asetukset", @@ -776,12 +776,12 @@ "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.": "", "Info": "Tiedot", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Upota koko sisältö kontekstiin kattavaa käsittelyä varten. Tätä suositellaan monimutkaisille kyselyille.", - "Input": "", + "Input": "Syöte", "Input commands": "Syötekäskyt", - "Input Variables": "", - "Insert": "", - "Insert Follow-Up Prompt to Input": "", - "Insert Prompt as Rich Text": "", + "Input Variables": "Syötteen muuttujat", + "Insert": "Lisää", + "Insert Follow-Up Prompt to Input": "Lisää jatkokysymys syötteeseen", + "Insert Prompt as Rich Text": "Lisää kehote RTF-muodossa", "Install from Github URL": "Asenna Github-URL:stä", "Instant Auto-Send After Voice Transcription": "Heti automaattinen lähetys äänitunnistuksen jälkeen", "Integration": "Integrointi", @@ -789,10 +789,10 @@ "Invalid file content": "Virheellinen tiedostosisältö", "Invalid file format.": "Virheellinen tiedostomuoto.", "Invalid JSON file": "Virheellinen JSON tiedosto", - "Invalid JSON format in Additional Config": "", + "Invalid JSON format in Additional Config": "Virheellinen JSON muotoilu lisäasetuksissa", "Invalid Tag": "Virheellinen tagi", "is typing...": "Kirjoittaa...", - "Italic": "", + "Italic": "Kursiivi", "January": "tammikuu", "Jina API Key": "Jina API -avain", "join our Discord for help.": "liity Discordiimme saadaksesi apua.", @@ -805,13 +805,13 @@ "JWT Expiration": "JWT-vanheneminen", "JWT Token": "JWT-token", "Kagi Search API Key": "Kagi Search API -avain", - "Keep Follow-Up Prompts in Chat": "", + "Keep Follow-Up Prompts in Chat": "Säilytä jatkokysymys kehoitteet keskustelussa", "Keep in Sidebar": "Pidä sivupalkissa", "Key": "Avain", "Keyboard shortcuts": "Pikanäppäimet", "Knowledge": "Tietämys", "Knowledge Access": "Tiedon käyttöoikeus", - "Knowledge Base": "", + "Knowledge Base": "Tietokanta", "Knowledge created successfully.": "Tietokanta luotu onnistuneesti.", "Knowledge deleted successfully.": "Tietokanta poistettu onnistuneesti.", "Knowledge Public Sharing": "Tietokannan julkinen jakaminen", @@ -829,9 +829,9 @@ "LDAP": "LDAP", "LDAP server updated": "LDAP-palvelin päivitetty", "Leaderboard": "Tulosluettelo", - "Learn More": "", + "Learn More": "Lue lisää", "Learn more about OpenAPI tool servers.": "Lue lisää OpenAPI työkalu palvelimista.", - "Leave empty for no compression": "", + "Leave empty for no compression": "Jätä tyhjäksi, jos et halua pakkausta", "Leave empty for unlimited": "Rajaton tyhjänä", "Leave empty to include all models from \"{{url}}\" endpoint": "Jätä tyhjäksi sisällyttääksesi \"{{url}}\" päätepisteen mallit", "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Jätä tyhjäksi sisällyttääksesi \"{{url}}/api/tags\" päätepisteen mallit", @@ -839,9 +839,9 @@ "Leave empty to include all models or select specific models": "Jätä tyhjäksi, jos haluat sisällyttää kaikki mallit tai valitse tietyt mallit", "Leave empty to use the default prompt, or enter a custom prompt": "Jätä tyhjäksi käyttääksesi oletuskehotetta tai kirjoita mukautettu kehote", "Leave model field empty to use the default model.": "Jätä malli kenttä tyhjäksi käyttääksesi oletus mallia.", - "lexical": "", + "lexical": "leksikaalinen", "License": "Lisenssi", - "Lift List": "", + "Lift List": "Nostolista", "Light": "Vaalea", "Listening...": "Kuuntelee...", "Llama.cpp": "Llama.cpp", @@ -854,7 +854,7 @@ "Lost": "Mennyt", "LTR": "LTR", "Made by Open WebUI Community": "Tehnyt OpenWebUI-yhteisö", - "Make password visible in the user interface": "", + "Make password visible in the user interface": "Näytä salasana käyttöliittymässä", "Make sure to enclose them with": "Varmista, että suljet ne", "Make sure to export a workflow.json file as API format from ComfyUI.": "Muista viedä workflow.json-tiedosto API-muodossa ComfyUI:sta.", "Manage": "Hallitse", @@ -867,7 +867,7 @@ "Manage Tool Servers": "Hallitse työkalu palvelimia", "March": "maaliskuu", "Markdown": "Markdown", - "Markdown (Header)": "", + "Markdown (Header)": "Markdown (otsikko)", "Max Speakers": "Puhujien enimmäismäärä", "Max Upload Count": "Latausten enimmäismäärä", "Max Upload Size": "Latausten enimmäiskoko", @@ -905,10 +905,10 @@ "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Mallin tiedostojärjestelmäpolku havaittu. Mallin lyhytnimi vaaditaan päivitykseen, ei voida jatkaa.", "Model Filtering": "Mallin suodatus", "Model ID": "Mallin tunnus", - "Model ID is required.": "", + "Model ID is required.": "Mallin tunnus on pakollinen", "Model IDs": "Mallitunnukset", "Model Name": "Mallin nimi", - "Model Name is required.": "", + "Model Name is required.": "Mallin nimi on pakollinen", "Model not selected": "Mallia ei ole valittu", "Model Params": "Mallin parametrit", "Model Permissions": "Mallin käyttöoikeudet", @@ -923,12 +923,12 @@ "Mojeek Search API Key": "Mojeek Search API -avain", "more": "lisää", "More": "Lisää", - "More Concise": "", - "More Options": "", + "More Concise": "Ytimekkäämpi", + "More Options": "Lisää vaihtoehtoja", "Name": "Nimi", "Name your knowledge base": "Anna tietokannalle nimi", "Native": "Natiivi", - "New Button": "", + "New Button": "Uusi painike", "New Chat": "Uusi keskustelu", "New Folder": "Uusi kansio", "New Function": "Uusi toiminto", @@ -937,7 +937,7 @@ "New Tool": "Uusi työkalu", "new-channel": "uusi-kanava", "Next message": "Seuraava viesti", - "No chats found": "", + "No chats found": "Keskuteluja ei löytynyt", "No chats found for this user.": "Käyttäjän keskusteluja ei löytynyt.", "No chats found.": "Keskusteluja ei löytynyt", "No content": "Ei sisältöä", @@ -995,11 +995,11 @@ "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hups! Käytät ei-tuettua menetelmää (vain frontend). Palvele WebUI:ta backendistä.", "Open file": "Avaa tiedosto", "Open in full screen": "Avaa koko näytön tilaan", - "Open modal to configure connection": "", - "Open Modal To Manage Floating Quick Actions": "", + "Open modal to configure connection": "Avaa modaaliikkuna yhteyden määrittämiseksi", + "Open Modal To Manage Floating Quick Actions": "Avaa modaaliikkuna kelluvien pikatoimintojen hallitsemiseksi", "Open new chat": "Avaa uusi keskustelu", - "Open Sidebar": "", - "Open User Profile Menu": "", + "Open Sidebar": "Avaa sivupalkki", + "Open User Profile Menu": "Avaa käyttäjäprofiili ikkuna", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI voi käyttää minkä tahansa OpenAPI-palvelimen tarjoamia työkaluja.", "Open WebUI uses faster-whisper internally.": "Open WebUI käyttää faster-whisperia sisäisesti.", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI käyttää SpeechT5:tä ja CMU Arctic -kaiuttimen upotuksia.", @@ -1013,7 +1013,7 @@ "openapi.json URL or Path": "openapi.json verkko-osoite tai polku", "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "", "or": "tai", - "Ordered List": "", + "Ordered List": "Järjestetty lista", "Organize your users": "Järjestä käyttäjäsi", "Other": "Muu", "OUTPUT": "TULOSTE", @@ -1024,7 +1024,7 @@ "Paginate": "Sivutus", "Parameters": "Parametrit", "Password": "Salasana", - "Passwords do not match.": "", + "Passwords do not match.": "Salasanat eivät täsmää", "Paste Large Text as File": "Liitä suuri teksti tiedostona", "PDF document (.pdf)": "PDF-asiakirja (.pdf)", "PDF Extract Images (OCR)": "Poimi kuvat PDF:stä (OCR)", @@ -1046,7 +1046,7 @@ "Pin": "Kiinnitä", "Pinned": "Kiinnitetty", "Pioneer insights": "Pioneerin oivalluksia", - "Pipe": "", + "Pipe": "Putki", "Pipeline deleted successfully": "Putki poistettu onnistuneesti", "Pipeline downloaded successfully": "Putki ladattu onnistuneesti", "Pipelines": "Putkistot", @@ -1066,12 +1066,12 @@ "Please select a model first.": "Valitse ensin malli.", "Please select a model.": "Valitse malli.", "Please select a reason": "Valitse syy", - "Please wait until all files are uploaded.": "", + "Please wait until all files are uploaded.": "Odota kunnes kaikki tiedostot ovat ladattu.", "Port": "Portti", "Positive attitude": "Positiivinen asenne", "Prefix ID": "Etuliite-ID", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Etuliite-ID:tä käytetään välttämään ristiriidat muiden yhteyksien kanssa lisäämällä etuliite mallitunnuksiin - jätä tyhjäksi, jos haluat ottaa sen pois käytöstä", - "Prevent file creation": "", + "Prevent file creation": "Estä tiedostojen luonti", "Preview": "Esikatselu", "Previous 30 days": "Edelliset 30 päivää", "Previous 7 days": "Edelliset 7 päivää", @@ -1092,7 +1092,7 @@ "Pull \"{{searchValue}}\" from Ollama.com": "Lataa \"{{searchValue}}\" Ollama.comista", "Pull a model from Ollama.com": "Lataa malli Ollama.comista", "Query Generation Prompt": "Kyselytulosten luontikehote", - "Quick Actions": "", + "Quick Actions": "Pikatoiminnot", "RAG Template": "RAG-kehote", "Rating": "Arviointi", "Re-rank models by topic similarity": "Uudelleenjärjestä mallit aiheyhteyden mukaan", @@ -1107,22 +1107,22 @@ "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Viittaa itseen \"Käyttäjänä\" (esim. \"Käyttäjä opiskelee espanjaa\")", "References from": "Viitteet lähteistä", "Refused when it shouldn't have": "Kieltäytyi, vaikka ei olisi pitänyt", - "Regenerate": "Uudelleentuota", - "Regenerate Menu": "", + "Regenerate": "Regeneroi", + "Regenerate Menu": "Regenerointi ikkuna", "Reindex": "Indeksoi uudelleen", "Reindex Knowledge Base Vectors": "Indeksoi tietämyksen vektorit uudelleen", "Release Notes": "Julkaisutiedot", "Releases": "Julkaisut", "Relevance": "Relevanssi", "Relevance Threshold": "Relevanssikynnys", - "Remember Dismissal": "", + "Remember Dismissal": "Muista sulkeminen", "Remove": "Poista", - "Remove {{MODELID}} from list.": "", - "Remove file": "", - "Remove File": "", - "Remove image": "", + "Remove {{MODELID}} from list.": "Poista {{MODELID}} listalta", + "Remove file": "Poista tiedosto", + "Remove File": "Poista tiedosto", + "Remove image": "Poista kuva", "Remove Model": "Poista malli", - "Remove this tag from list": "", + "Remove this tag from list": "Poista tämä tagi listalta", "Rename": "Nimeä uudelleen", "Reorder Models": "Uudelleenjärjestä malleja", "Reply in Thread": "Vastauksia ", @@ -1133,7 +1133,7 @@ "Reset Upload Directory": "Palauta latauspolku", "Reset Vector Storage/Knowledge": "Tyhjennä vektoritallennukset/tietämys", "Reset view": "Palauta näkymä", - "Response": "", + "Response": "Vastaus", "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Vastausilmoituksia ei voida ottaa käyttöön, koska verkkosivuston käyttöoikeudet on evätty. Myönnä tarvittavat käyttöoikeudet selaimesi asetuksista.", "Response splitting": "Vastauksen jakaminen", "Response Watermark": "Vastauksen vesileima", @@ -1162,16 +1162,16 @@ "Search Chats": "Hae keskusteluja", "Search Collection": "Hae kokoelmaa", "Search Filters": "Hakusuodattimet", - "search for archived chats": "", - "search for folders": "", - "search for pinned chats": "", - "search for shared chats": "", + "search for archived chats": "Hae arkistoiduista keskusteluista", + "search for folders": "Hae kansioista", + "search for pinned chats": "Hae kiinnitetyistä keskusteluista", + "search for shared chats": "Hae jaetuista keskusteluista", "search for tags": "hae tageja", "Search Functions": "Hae toimintoja", - "Search In Models": "", + "Search In Models": "Hae mallleista", "Search Knowledge": "Hae tietämystä", "Search Models": "Hae malleja", - "Search Notes": "", + "Search Notes": "Hae muistiinpanoista", "Search options": "Hakuvaihtoehdot", "Search Prompts": "Hae kehotteita", "Search Result Count": "Hakutulosten määrä", @@ -1188,7 +1188,7 @@ "See what's new": "Katso, mitä uutta", "Seed": "Siemenluku", "Select a base model": "Valitse perusmalli", - "Select a conversation to preview": "", + "Select a conversation to preview": "Valitse keskustelun esikatselu", "Select a engine": "Valitse moottori", "Select a function": "Valitse toiminto", "Select a group": "Valitse ryhmä", @@ -1202,7 +1202,7 @@ "Select Knowledge": "Valitse tietämys", "Select only one model to call": "Valitse vain yksi malli kutsuttavaksi", "Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasöytteitä", - "semantic": "", + "semantic": "Semaattinen", "Semantic distance to query": "Semanttinen etäisyys kyselyyn", "Send": "Lähetä", "Send a Message": "Lähetä viesti", @@ -1241,13 +1241,13 @@ "Share Chat": "Jaa keskustelu", "Share to Open WebUI Community": "Jaa OpenWebUI-yhteisöön", "Sharing Permissions": "Jako oikeudet", - "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "", + "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Tähdellä (*) merkityt pikavalinnat ovat tilannekohtaisia ja aktiivisia vain tietyissä olosuhteissa.", "Show": "Näytä", "Show \"What's New\" modal on login": "Näytä \"Mitä uutta\" -modaali kirjautumisen yhteydessä", "Show Admin Details in Account Pending Overlay": "Näytä ylläpitäjän tiedot odottavan tilin päällä", "Show All": "Näytä kaikki", - "Show Formatting Toolbar": "", - "Show image preview": "", + "Show Formatting Toolbar": "Näytä muotoilupalkki", + "Show image preview": "Näytä kuvan esikatselu", "Show Less": "Näytä vähemmän", "Show Model": "Näytä malli", "Show shortcuts": "Näytä pikanäppäimet", @@ -1270,14 +1270,14 @@ "Source": "Lähde", "Speech Playback Speed": "Puhetoiston nopeus", "Speech recognition error: {{error}}": "Puheentunnistusvirhe: {{error}}", - "Speech-to-Text": "", + "Speech-to-Text": "Puheentunnistus", "Speech-to-Text Engine": "Puheentunnistusmoottori", "Stop": "Pysäytä", - "Stop Generating": "", + "Stop Generating": "Lopeta generointi", "Stop Sequence": "Lopetussekvenssi", "Stream Chat Response": "Streamaa keskusteluvastaus", - "Stream Delta Chunk Size": "", - "Strikethrough": "", + "Stream Delta Chunk Size": "Striimin delta-lohkon koko", + "Strikethrough": "Yliviivaus", "Strip Existing OCR": "Poista olemassa oleva OCR", "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "Poista olemassa oleva OCR-teksti PDF-tiedostosta ja suorita OCR uudelleen. Ohitetaan, jos pakota OCR -asetus on käytössä. Oletusarvo ei käytössä.", "STT Model": "Puheentunnistusmalli", @@ -1286,11 +1286,11 @@ "Subtitle (e.g. about the Roman Empire)": "Alaotsikko (esim. Rooman valtakunta)", "Success": "Onnistui", "Successfully updated.": "Päivitetty onnistuneesti.", - "Suggest a change": "", + "Suggest a change": "Ehdota muutosta", "Suggested": "Ehdotukset", "Support": "Tuki", "Support this plugin:": "Tue tätä lisäosaa:", - "Supported MIME Types": "", + "Supported MIME Types": "Tuetut MIME-tyypit", "Sync directory": "Synkronoitu hakemisto", "System": "Järjestelmä", "System Instructions": "Järjestelmäohjeet", @@ -1301,7 +1301,7 @@ "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "", "Talk to model": "Puhu mallille", "Tap to interrupt": "Napauta keskeyttääksesi", - "Task List": "", + "Task List": "Tehtävälista", "Task Model": "Työmalli", "Tasks": "Tehtävät", "Tavily API Key": "Tavily API -avain", @@ -1310,7 +1310,7 @@ "Temperature": "Lämpötila", "Temporary Chat": "Väliaikainen keskustelu", "Text Splitter": "Tekstin jakaja", - "Text-to-Speech": "", + "Text-to-Speech": "Puhesynteesi", "Text-to-Speech Engine": "Puhesynteesimoottori", "Thanks for your feedback!": "Kiitos palautteestasi!", "The Application Account DN you bind with for search": "Hakua varten sidottu sovelluksen käyttäjätilin DN", @@ -1319,7 +1319,7 @@ "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Tämän lisäosan takana olevat kehittäjät ovat intohimoisia vapaaehtoisyhteisöstä. Jos koet tämän lisäosan hyödylliseksi, harkitse sen kehittämisen tukemista.", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Arviointitulosluettelo perustuu Elo-luokitusjärjestelmään ja päivittyy reaaliajassa.", "The format to return a response in. Format can be json or a JSON schema.": "Muoto, jolla vastaus palautetaan. Muoto voi olla json- tai JSON-skeema.", - "The height in pixels to compress images to. Leave empty for no compression.": "", + "The height in pixels to compress images to. Leave empty for no compression.": "Kuvien pakkauskorkeus pikseleinä. Jätä tyhjäksi, jos et halua pakata kuvia.", "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "Syöteäänen kieli. Syöttökielen antaminen ISO-639-1-muodossa (esim. en) parantaa tarkkuutta ja viivettä. Jätä tyhjäksi, jos haluat kielen automaattisen tunnistuksen.", "The LDAP attribute that maps to the mail that users use to sign in.": "LDAP-määrite, joka yhdistää käyttäjien kirjautumiseen käyttämään sähköpostiin.", "The LDAP attribute that maps to the username that users use to sign in.": "LDAP-määrite, joka vastaa käyttäjien kirjautumiskäyttäjänimeä.", @@ -1328,17 +1328,17 @@ "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.": "Suurin sallittu tiedostojen määrä käytettäväksi kerralla chatissa. Jos tiedostojen määrä ylittää tämän rajan, niitä ei ladata.", "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "Tekstin tulostusmuoto. Voi olla 'json', 'markdown' tai 'html'. Oletusarvo on 'markdown'.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Pisteytyksen tulee olla arvo välillä 0,0 (0 %) ja 1,0 (100 %).", - "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "", + "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "Mallin striimin delta-lohkon koko. Lohkon koon kasvattaminen saa mallin vastaamaan kerralla suuremmilla tekstipaloilla.", "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "Mallin lämpötila. Lisäämällä lämpötilaa mallin vastaukset ovat luovempia.", - "The Weight of BM25 Hybrid Search. 0 more lexical, 1 more semantic. Default 0.5": "", - "The width in pixels to compress images to. Leave empty for no compression.": "", + "The Weight of BM25 Hybrid Search. 0 more lexical, 1 more semantic. Default 0.5": "BM25-hybridihaun painoarvo. 0 leksikaalista enemmän, 1 semanttista enemmän. Oletusarvo 0,5", + "The width in pixels to compress images to. Leave empty for no compression.": "Leveys pikseleinä, johon kuvat pakataan. Jätä tyhjäksi, jos et halua pakkausta.", "Theme": "Teema", "Thinking...": "Ajattelee...", "This action cannot be undone. Do you wish to continue?": "Tätä toimintoa ei voi peruuttaa. Haluatko jatkaa?", "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Tämä kanava on luotiin {{createdAt}}. Tämä on {{channelName}} kanavan alku.", "This chat won't appear in history and your messages will not be saved.": "Tämä keskustelu ei näy historiassa, eikä viestejäsi tallenneta.", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tämä varmistaa, että arvokkaat keskustelusi tallennetaan turvallisesti backend-tietokantaasi. Kiitos!", - "This feature is experimental and may be modified or discontinued without notice.": "", + "This feature is experimental and may be modified or discontinued without notice.": "Tämä ominaisuus on kokeellinen ja sitä voidaan muokata tai se voidaan lopettaa ilman erillistä ilmoitusta.", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Tämä on kokeellinen ominaisuus, se ei välttämättä toimi odotetulla tavalla ja se voi muuttua milloin tahansa.", "This model is not publicly available. Please select another model.": "Tämä malli ei ole julkisesti saatavilla. Valitse toinen malli.", "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Tämä asetus määrittää kuinka kauan malli pysyy ladattuna muistissa pyynnön jälkeen (oletusarvo: 5m)", @@ -1355,7 +1355,7 @@ "Thorough explanation": "Perusteellinen selitys", "Thought for {{DURATION}}": "Ajatteli {{DURATION}}", "Thought for {{DURATION}} seconds": "Ajatteli {{DURATION}} sekunttia", - "Thought for less than a second": "", + "Thought for less than a second": "Ajatteli alle sekunnin", "Tika": "Tika", "Tika Server URL required.": "Tika palvelimen verkko-osoite vaaditaan.", "Tiktoken": "Tiktoken", @@ -1372,7 +1372,7 @@ "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Päästäksesi käyttämään WebUI:ta, ota yhteyttä ylläpitäjään. Ylläpitäjät voivat hallita käyttäjien tiloja Ylläpitopaneelista.", "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Liittääksesi tietokantasi tähän, lisää ne ensin \"Tietämys\"-työtilaan.", "To learn more about available endpoints, visit our documentation.": "Jos haluat lisätietoja käytettävissä olevista päätepisteistä, tutustu dokumentaatioomme.", - "To learn more about powerful prompt variables, click here": "", + "To learn more about powerful prompt variables, click here": "Lisätietoja tehokkaista kehotemuuttujista saat napsauttamalla tästä", "To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Yksityisyydensuojasi vuoksi palautteestasi jaetaan vain arvostelut, mallitunnukset, tagit ja metadata - keskustelulokisi pysyvät yksityisinä eikä niitä sisällytetä.", "To select actions here, add them to the \"Functions\" workspace first.": "Valitaksesi toimintoja tässä, lisää ne ensin \"Toiminnot\"-työtilaan.", "To select filters here, add them to the \"Functions\" workspace first.": "Valitaksesi suodattimia tässä, lisää ne ensin \"Toiminnot\"-työtilaan.", @@ -1382,7 +1382,7 @@ "Toggle search": "Kytke haku", "Toggle settings": "Kytke asetukset", "Toggle sidebar": "Kytke sivupalkki", - "Toggle whether current connection is active.": "", + "Toggle whether current connection is active.": "Vaihda, onko nykyinen yhteys aktiivinen", "Token": "Token", "Too verbose": "Liian puhelias", "Tool created successfully": "Työkalu luotu onnistuneesti", @@ -1404,7 +1404,7 @@ "Transformers": "Muunnokset", "Trouble accessing Ollama?": "Ongelmia Ollama-yhteydessä?", "Trust Proxy Environment": "Luota välityspalvelimen ympäristöön", - "Try Again": "", + "Try Again": "Yritä uudelleen", "TTS Model": "Puhesynteesimalli", "TTS Settings": "Puhesynteesiasetukset", "TTS Voice": "Puhesynteesiääni", @@ -1415,12 +1415,12 @@ "Unarchive All": "Pura kaikkien arkistointi", "Unarchive All Archived Chats": "Pura kaikkien arkistoitujen keskustelujen arkistointi", "Unarchive Chat": "Pura keskustelun arkistointi", - "Underline": "", + "Underline": "Alleviivaus", "Unloads {{FROM_NOW}}": "Purkuja {{FROM_NOW}}", "Unlock mysteries": "Selvitä arvoituksia", "Unpin": "Irrota kiinnitys", "Unravel secrets": "Avaa salaisuuksia", - "Unsupported file type.": "", + "Unsupported file type.": "Ei tuettu tiedostotyyppi", "Untagged": "Ei tageja", "Untitled": "Nimetön", "Update": "Päivitä", @@ -1451,14 +1451,14 @@ "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Käytä http_proxy- ja https_proxy-ympäristömuuttujien määrittämää välityspalvelinta sivun sisällön hakemiseen.", "user": "käyttäjä", "User": "Käyttäjä", - "User Groups": "", + "User Groups": "Käyttäjäryhmät", "User location successfully retrieved.": "Käyttäjän sijainti haettu onnistuneesti.", - "User menu": "", + "User menu": "Käyttäjävalikko", "User Webhooks": "Käyttäjän Webhook:it", "Username": "Käyttäjätunnus", "Users": "Käyttäjät", - "Using Entire Document": "", - "Using Focused Retrieval": "", + "Using Entire Document": "Koko asiakirjan käyttäminen", + "Using Focused Retrieval": "Kohdennetun haun käyttäminen", "Using the default arena model with all models. Click the plus button to add custom models.": "Käytetään oletusarena-mallia kaikkien mallien kanssa. Napsauta plus-painiketta lisätäksesi mukautettuja malleja.", "Valid time units:": "Kelvolliset aikayksiköt:", "Valves": "Venttiilit", From 62506b1955a9fe68e1f67c8aa77a8fd58f7b4c84 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 11 Aug 2025 22:43:29 +0400 Subject: [PATCH 010/162] fix: duckduckgo isn't duckduckgo anymore --- src/lib/components/admin/Settings/WebSearch.svelte | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/components/admin/Settings/WebSearch.svelte b/src/lib/components/admin/Settings/WebSearch.svelte index e2101917fc..6a2959e028 100644 --- a/src/lib/components/admin/Settings/WebSearch.svelte +++ b/src/lib/components/admin/Settings/WebSearch.svelte @@ -119,7 +119,11 @@ > {#each webSearchEngines as engine} - + {#if engine === 'duckduckgo' || engine === 'ddgs'} + + {:else} + + {/if} {/each} From 7ace997c53fbf6e8525d0a7476a6e949102db415 Mon Sep 17 00:00:00 2001 From: Timo van Asten Date: Mon, 11 Aug 2025 23:13:04 +0200 Subject: [PATCH 011/162] Update translation.json --- src/lib/i18n/locales/nl-NL/translation.json | 26 ++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 2b6ed381c9..64c66bfda4 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -185,8 +185,8 @@ "Camera": "Camera", "Cancel": "Annuleren", "Capabilities": "Mogelijkheden", - "Capture": "Vangen", - "Capture Audio": "", + "Capture": "Vastleggen", + "Capture Audio": "Audio Opnemen", "Certificate Path": "Certificaatpad", "Change Password": "Wijzig Wachtwoord", "Channel Name": "Kanaalnaam", @@ -212,7 +212,7 @@ "Chunk Size": "Chunkgrootte", "Ciphers": "Versleutelingen", "Citation": "Citaat", - "Citations": "", + "Citations": "Citaten", "Clear memory": "Geheugen wissen", "Clear Memory": "Geheugen wissen", "click here": "klik hier", @@ -257,7 +257,7 @@ "ComfyUI Workflow": "ComfyUI workflow", "ComfyUI Workflow Nodes": "ComfyUI workflowknopen", "Command": "Commando", - "Comment": "", + "Comment": "Reactie", "Completions": "Voltooiingen", "Compress Images in Channels": "", "Concurrent Requests": "Gelijktijdige verzoeken", @@ -269,9 +269,9 @@ "Confirm Your Password": "", "Connect to your own OpenAI compatible API endpoints.": "Verbind met je eigen OpenAI-compatibele API-endpoints", "Connect to your own OpenAPI compatible external tool servers.": "Verbind met je eigen OpenAPI-compatibele externe gereedschapservers", - "Connection failed": "", - "Connection successful": "", - "Connection Type": "", + "Connection failed": "Connectie mislukt", + "Connection successful": "Connectie succesvol", + "Connection Type": "Connectie type", "Connections": "Verbindingen", "Connections saved successfully": "", "Connections settings updated": "", @@ -292,10 +292,10 @@ "Copied shared chat URL to clipboard!": "URL van gedeelde gesprekspagina gekopieerd naar klembord!", "Copied to clipboard": "Gekopieerd naar klembord", "Copy": "Kopieer", - "Copy Formatted Text": "", + "Copy Formatted Text": "Kopieer opgemaakte tekst", "Copy last code block": "Kopieer laatste codeblok", "Copy last response": "Kopieer laatste antwoord", - "Copy link": "", + "Copy link": "Kopiëer link", "Copy Link": "Kopieer link", "Copy to clipboard": "Kopieer naar klembord", "Copying to clipboard was successful!": "Kopiëren naar klembord was succesvol!", @@ -311,7 +311,7 @@ "Create Knowledge": "Creër kennis", "Create new key": "Maak nieuwe sleutel", "Create new secret key": "Maak nieuwe geheime sleutel", - "Create Note": "", + "Create Note": "Maak Notitie", "Create your first note by clicking on the plus button below.": "", "Created at": "Gemaakt op", "Created At": "Gemaakt op", @@ -328,7 +328,7 @@ "Dark": "Donker", "Database": "Database", "Datalab Marker API": "", - "Datalab Marker API Key required.": "", + "Datalab Marker API Key required.": "Datalab Marker API Key vereist.", "DD/MM/YYYY": "", "December": "December", "Default": "Standaard", @@ -357,8 +357,8 @@ "Delete folder?": "Verwijder map?", "Delete function?": "Verwijder functie?", "Delete Message": "Verwijder bericht", - "Delete message?": "Verwijder bericht", - "Delete note?": "", + "Delete message?": "Bericht verwijderen?", + "Delete note?": "Notitie verwijderen?", "Delete prompt?": "Verwijder prompt?", "delete this link": "verwijder deze link", "Delete tool?": "Verwijder tool?", From d8c4dd6f79b39e105a084b79f4467cf74697730e Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:23:44 +0200 Subject: [PATCH 012/162] Fix admin model access (#17) * Update models.py * Update models.py * Update models.py * Update ollama.py * Update openai.py * Update models.py * Update openai.py * Update ollama.py --- backend/open_webui/routers/models.py | 2 +- backend/open_webui/utils/models.py | 96 +++++++++++++++++----------- 2 files changed, 58 insertions(+), 40 deletions(-) diff --git a/backend/open_webui/routers/models.py b/backend/open_webui/routers/models.py index 3d5f6ccf96..e1a5ec1937 100644 --- a/backend/open_webui/routers/models.py +++ b/backend/open_webui/routers/models.py @@ -117,7 +117,7 @@ async def get_model_by_id(id: str, user=Depends(get_verified_user)): model = Models.get_model_by_id(id) if model: if ( - user.role == "admin" + (user.role == "admin" and ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS) or model.user_id == user.id or has_access(user.id, "read", model.access_control) ): diff --git a/backend/open_webui/utils/models.py b/backend/open_webui/utils/models.py index b713b84307..58b324e6cd 100644 --- a/backend/open_webui/utils/models.py +++ b/backend/open_webui/utils/models.py @@ -23,6 +23,7 @@ from open_webui.utils.access_control import has_access from open_webui.config import ( DEFAULT_ARENA_MODEL, + ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS, ) from open_webui.env import SRC_LOG_LEVELS, GLOBAL_LOG_LEVEL @@ -181,45 +182,62 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None) elif custom_model.is_active and ( custom_model.id not in [model["id"] for model in models] ): - owned_by = "openai" - pipe = None - - action_ids = [] - filter_ids = [] - - for model in models: - if ( - custom_model.base_model_id == model["id"] - or custom_model.base_model_id == model["id"].split(":")[0] - ): - owned_by = model.get("owned_by", "unknown owner") - if "pipe" in model: - pipe = model["pipe"] - break - - if custom_model.meta: - meta = custom_model.meta.model_dump() - - if "actionIds" in meta: - action_ids.extend(meta["actionIds"]) - - if "filterIds" in meta: - filter_ids.extend(meta["filterIds"]) - - models.append( - { - "id": f"{custom_model.id}", - "name": custom_model.name, - "object": "model", - "created": custom_model.created_at, - "owned_by": owned_by, - "info": custom_model.model_dump(), - "preset": True, - **({"pipe": pipe} if pipe is not None else {}), - "action_ids": action_ids, - "filter_ids": filter_ids, - } - ) + # Check access control for custom models + should_include = False + + if user and user.role == "admin" and ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS: + # Admin with full workspace access + should_include = True + elif user and user.id == custom_model.user_id: + # Owner always has access + should_include = True + elif user and has_access(user.id, "read", custom_model.access_control): + # User has explicit read access + should_include = True + elif not user: + # No user context - include for backwards compatibility + should_include = True + + if should_include: + owned_by = "openai" + pipe = None + + action_ids = [] + filter_ids = [] + + for model in models: + if ( + custom_model.base_model_id == model["id"] + or custom_model.base_model_id == model["id"].split(":")[0] + ): + owned_by = model.get("owned_by", "unknown owner") + if "pipe" in model: + pipe = model["pipe"] + break + + if custom_model.meta: + meta = custom_model.meta.model_dump() + + if "actionIds" in meta: + action_ids.extend(meta["actionIds"]) + + if "filterIds" in meta: + filter_ids.extend(meta["filterIds"]) + + models.append( + { + "id": f"{custom_model.id}", + "name": custom_model.name, + "object": "model", + "created": custom_model.created_at, + "owned_by": owned_by, + "info": custom_model.model_dump(), + "preset": True, + **({"pipe": pipe} if pipe is not None else {}), + "action_ids": action_ids, + "filter_ids": filter_ids, + } + ) # Process action_ids to get the actions def get_action_items_from_module(function, module): From a10e038fffe43d0bf7e289ed17df093639b9a3c3 Mon Sep 17 00:00:00 2001 From: Timo van Asten Date: Mon, 11 Aug 2025 23:23:49 +0200 Subject: [PATCH 013/162] Update translation.json --- src/lib/i18n/locales/nl-NL/translation.json | 22 ++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 64c66bfda4..82a4ce33f4 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -4,16 +4,16 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(bv. `sh webui.sh --api --api-auth gebruikersnaam_wachtwoord`)", "(e.g. `sh webui.sh --api`)": "(bv. `sh webui.sh --api`)", "(latest)": "(nieuwste)", - "(leave blank for to use commercial endpoint)": "", + "(leave blank for to use commercial endpoint)": "(laat leeg voor een comercieel endpoint)", "[Last] dddd [at] h:mm A": "", "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modellen }}", - "{{COUNT}} Available Tools": "", - "{{COUNT}} characters": "", + "{{COUNT}} Available Tools": "{{COUNT}} beschikbare tools", + "{{COUNT}} characters": "{{COUNT}} karakters", "{{COUNT}} hidden lines": "{{COUNT}} verborgen regels", "{{COUNT}} Replies": "{{COUNT}} antwoorden", - "{{COUNT}} words": "", + "{{COUNT}} words": "{{COUNT}} woorden", "{{user}}'s Chats": "{{user}}'s chats", "{{webUIName}} Backend Required": "{{webUIName}} Backend verplicht", "*Prompt node ID(s) are required for image generation": "*Prompt node ID('s) zijn vereist voor het genereren van afbeeldingen", @@ -28,7 +28,7 @@ "Account": "Account", "Account Activation Pending": "Accountactivatie in afwachting", "Accurate information": "Accurate informatie", - "Action": "", + "Action": "Actie", "Actions": "Acties", "Activate": "Activeren", "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Activeer dit commando door \"/{{COMMAND}}\" in de chat te typen", @@ -54,7 +54,7 @@ "Add text content": "Voeg tekstinhoud toe", "Add User": "Voeg gebruiker toe", "Add User Group": "Voeg gebruikersgroep toe", - "Additional Config": "", + "Additional Config": "Extra configuratie", "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "", "Adjusting these settings will apply changes universally to all users.": "Het aanpassen van deze instellingen zal universeel worden toegepast op alle gebruikers.", "admin": "beheerder", @@ -68,7 +68,7 @@ "All": "Alle", "All Documents": "Alle documenten", "All models deleted successfully": "Alle modellen zijn succesvol verwijderd", - "Allow Call": "", + "Allow Call": "Bellen toestaan", "Allow Chat Controls": "Chatbesturing toestaan", "Allow Chat Delete": "Chatverwijdering toestaan", "Allow Chat Deletion": "Chatverwijdering toestaan", @@ -186,8 +186,8 @@ "Cancel": "Annuleren", "Capabilities": "Mogelijkheden", "Capture": "Vastleggen", - "Capture Audio": "Audio Opnemen", - "Certificate Path": "Certificaatpad", + "Capture Audio": "Audio opnemen", + "Certificate Path": "Pad naar certificaat", "Change Password": "Wijzig Wachtwoord", "Channel Name": "Kanaalnaam", "Channels": "Kanalen", @@ -311,7 +311,7 @@ "Create Knowledge": "Creër kennis", "Create new key": "Maak nieuwe sleutel", "Create new secret key": "Maak nieuwe geheime sleutel", - "Create Note": "Maak Notitie", + "Create Note": "Maak notitie", "Create your first note by clicking on the plus button below.": "", "Created at": "Gemaakt op", "Created At": "Gemaakt op", @@ -481,7 +481,7 @@ "Enter Bing Search V7 Subscription Key": "Voer Bing Search V7 abonnementscode in", "Enter Bocha Search API Key": "Voer Bocha Search API-sleutel in", "Enter Brave Search API Key": "Voer de Brave Search API-sleutel in", - "Enter certificate path": "Voer certificaatpad in", + "Enter certificate path": "Voer pad naar certificaat in", "Enter CFG Scale (e.g. 7.0)": "Voer CFG schaal in (bv. 7.0)", "Enter Chunk Overlap": "Voeg Chunk Overlap toe", "Enter Chunk Size": "Voeg Chunk Size toe", From 357b57e1d609efcf14991e62cbbf6f71459e8225 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:36:48 +0200 Subject: [PATCH 014/162] Update models.py --- backend/open_webui/utils/models.py | 96 ++++++++++++------------------ 1 file changed, 39 insertions(+), 57 deletions(-) diff --git a/backend/open_webui/utils/models.py b/backend/open_webui/utils/models.py index 58b324e6cd..b713b84307 100644 --- a/backend/open_webui/utils/models.py +++ b/backend/open_webui/utils/models.py @@ -23,7 +23,6 @@ from open_webui.utils.access_control import has_access from open_webui.config import ( DEFAULT_ARENA_MODEL, - ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS, ) from open_webui.env import SRC_LOG_LEVELS, GLOBAL_LOG_LEVEL @@ -182,62 +181,45 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None) elif custom_model.is_active and ( custom_model.id not in [model["id"] for model in models] ): - # Check access control for custom models - should_include = False - - if user and user.role == "admin" and ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS: - # Admin with full workspace access - should_include = True - elif user and user.id == custom_model.user_id: - # Owner always has access - should_include = True - elif user and has_access(user.id, "read", custom_model.access_control): - # User has explicit read access - should_include = True - elif not user: - # No user context - include for backwards compatibility - should_include = True - - if should_include: - owned_by = "openai" - pipe = None - - action_ids = [] - filter_ids = [] - - for model in models: - if ( - custom_model.base_model_id == model["id"] - or custom_model.base_model_id == model["id"].split(":")[0] - ): - owned_by = model.get("owned_by", "unknown owner") - if "pipe" in model: - pipe = model["pipe"] - break - - if custom_model.meta: - meta = custom_model.meta.model_dump() - - if "actionIds" in meta: - action_ids.extend(meta["actionIds"]) - - if "filterIds" in meta: - filter_ids.extend(meta["filterIds"]) - - models.append( - { - "id": f"{custom_model.id}", - "name": custom_model.name, - "object": "model", - "created": custom_model.created_at, - "owned_by": owned_by, - "info": custom_model.model_dump(), - "preset": True, - **({"pipe": pipe} if pipe is not None else {}), - "action_ids": action_ids, - "filter_ids": filter_ids, - } - ) + owned_by = "openai" + pipe = None + + action_ids = [] + filter_ids = [] + + for model in models: + if ( + custom_model.base_model_id == model["id"] + or custom_model.base_model_id == model["id"].split(":")[0] + ): + owned_by = model.get("owned_by", "unknown owner") + if "pipe" in model: + pipe = model["pipe"] + break + + if custom_model.meta: + meta = custom_model.meta.model_dump() + + if "actionIds" in meta: + action_ids.extend(meta["actionIds"]) + + if "filterIds" in meta: + filter_ids.extend(meta["filterIds"]) + + models.append( + { + "id": f"{custom_model.id}", + "name": custom_model.name, + "object": "model", + "created": custom_model.created_at, + "owned_by": owned_by, + "info": custom_model.model_dump(), + "preset": True, + **({"pipe": pipe} if pipe is not None else {}), + "action_ids": action_ids, + "filter_ids": filter_ids, + } + ) # Process action_ids to get the actions def get_action_items_from_module(function, module): From f758bf74c2e308a6af7613a376e7cd28b6a3f558 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:39:01 +0200 Subject: [PATCH 015/162] Update main.py --- backend/open_webui/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 076d4c486d..c2cd587c8e 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -375,6 +375,7 @@ from open_webui.config import ( RESPONSE_WATERMARK, # Admin ENABLE_ADMIN_CHAT_ACCESS, + ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS, ENABLE_ADMIN_EXPORT, # Tasks TASK_MODEL, @@ -1321,7 +1322,7 @@ async def get_models( ) # Filter out models that the user does not have access to - if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL: + if (user.role == "user" or (user.role == "admin" and not ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS)) and not BYPASS_MODEL_ACCESS_CONTROL: models = get_filtered_models(models, user) log.debug( From df314fda1d1d7768e4a0a48b571b303d84773626 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:41:49 +0200 Subject: [PATCH 016/162] Update main.py --- backend/open_webui/main.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index c2cd587c8e..8d008dafcc 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -1279,14 +1279,16 @@ async def get_models( ): filtered_models.append(model) continue - + model_info = Models.get_model_by_id(model["id"]) if model_info: - if user.id == model_info.user_id or has_access( - user.id, type="read", access_control=model_info.access_control + if ( + (user.role == "admin" and ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS) + or user.id == model_info.user_id + or has_access(user.id, type="read", access_control=model_info.access_control) ): filtered_models.append(model) - + return filtered_models all_models = await get_all_models(request, refresh=refresh, user=user) From 06666cb1480b462ba336a2bf31e5bf534f82fe4c Mon Sep 17 00:00:00 2001 From: joaoback <156559121+joaoback@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:49:40 -0300 Subject: [PATCH 017/162] Update translation.json Several improvements were made and new translations were included for those items that had not yet been translated. --- src/lib/i18n/locales/pt-BR/translation.json | 1118 +++++++++---------- 1 file changed, 559 insertions(+), 559 deletions(-) diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 7f0c2ca854..8a38185a99 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -1,19 +1,19 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1 para nenhum limite ou um inteiro positivo para um limite específico", "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' ou '-1' para sem expiração.", "(e.g. `sh webui.sh --api --api-auth username_password`)": "(por exemplo, `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(por exemplo, `sh webui.sh --api`)", "(latest)": "(último)", - "(leave blank for to use commercial endpoint)": "", - "[Last] dddd [at] h:mm A": "", - "[Today at] h:mm A": "", - "[Yesterday at] h:mm A": "", + "(leave blank for to use commercial endpoint)": "(deixe em branco para usar o endpoint comercial)", + "[Last] dddd [at] h:mm A": "[Último] dddd [em] h:mm A", + "[Today at] h:mm A": "[Hoje às] h:mm A", + "[Yesterday at] h:mm A": "[Ontem às] h:mm A", "{{ models }}": "{{ models }}", - "{{COUNT}} Available Tools": "", - "{{COUNT}} characters": "", - "{{COUNT}} hidden lines": "", - "{{COUNT}} Replies": "", - "{{COUNT}} words": "", + "{{COUNT}} Available Tools": "{{COUNT}} Ferramentas disponíveis", + "{{COUNT}} characters": "{{COUNT}} caracteres", + "{{COUNT}} hidden lines": "{{COUNT}} linhas ocultas", + "{{COUNT}} Replies": "{{COUNT}} Respostas", + "{{COUNT}} words": "{{COUNT}} palavras", "{{user}}'s Chats": "Chats de {{user}}", "{{webUIName}} Backend Required": "Backend {{webUIName}} necessário", "*Prompt node ID(s) are required for image generation": "*Prompt node ID(s) são obrigatórios para gerar imagens", @@ -21,16 +21,16 @@ "A task model is used when performing tasks such as generating titles for chats and web search queries": "Um modelo de tarefa é usado ao realizar tarefas como gerar títulos para chats e consultas de pesquisa na web", "a user": "um usuário", "About": "Sobre", - "Accept autocomplete generation / Jump to prompt variable": "", + "Accept autocomplete generation / Jump to prompt variable": "Aceitar geração de preenchimento automático / Ir para variável de prompt", "Access": "Acesso", "Access Control": "Controle de Acesso", - "Accessible to all users": "Accessível para todos os usuários", + "Accessible to all users": "Acessível para todos os usuários", "Account": "Conta", "Account Activation Pending": "Ativação da Conta Pendente", - "Accurate information": "Informação precisa", - "Action": "", + "Accurate information": "Informações precisas", + "Action": "Ação", "Actions": "Ações", - "Activate": "", + "Activate": "Ativar", "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Ativar esse comando no chat digitando \"/{{COMMAND}}\"", "Active Users": "Usuários Ativos", "Add": "Adicionar", @@ -41,78 +41,78 @@ "Add Connection": "Adicionar Conexao", "Add Content": "Adicionar Conteúdo", "Add content here": "Adicionar conteúdo aqui", - "Add Custom Parameter": "", + "Add Custom Parameter": "Adicionar parâmetro personalizado", "Add custom prompt": "Adicionar prompt personalizado", - "Add Details": "", + "Add Details": "Adicionar detalhes", "Add Files": "Adicionar Arquivos", "Add Group": "Adicionar Grupo", "Add Memory": "Adicionar Memória", "Add Model": "Adicionar Modelo", - "Add Reaction": "", + "Add Reaction": "Adicionar reação", "Add Tag": "Adicionar Tag", "Add Tags": "Adicionar Tags", "Add text content": "Adicionar conteúdo de texto", "Add User": "Adicionar Usuário", "Add User Group": "Adicionar grupo de usuários", - "Additional Config": "", - "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "", + "Additional Config": "Configuração adicional", + "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Opções de configuração adicionais para o marcador. Deve ser uma string JSON com pares chave-valor. Por exemplo, '{\"key\": \"value\"}'. As chaves suportadas incluem: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level", "Adjusting these settings will apply changes universally to all users.": "Ajustar essas configurações aplicará mudanças para todos os usuários.", "admin": "admin", "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 administradores 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", - "AI": "", - "All": "", + "AI": "IA", + "All": "Tudo", "All Documents": "Todos os Documentos", "All models deleted successfully": "Todos os modelos foram excluídos com sucesso", - "Allow Call": "", - "Allow Chat Controls": "", + "Allow Call": "Permitir chamada", + "Allow Chat Controls": "Permitir Controles de Chats", "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 Chat Export": "", - "Allow Chat Params": "", - "Allow Chat Share": "", - "Allow Chat System Prompt": "", - "Allow Chat Valves": "", + "Allow Chat Export": "Permitir exportação de chat", + "Allow Chat Params": "Permitir parâmetros de chat", + "Allow Chat Share": "Permitir compartilhamento de chat", + "Allow Chat System Prompt": "Permitir prompt do sistema de chat", + "Allow Chat Valves": "Permitir válvulas de chat", "Allow File Upload": "Permitir Envio de arquivos", - "Allow Multiple Models in Chat": "", + "Allow Multiple Models in Chat": "Permitir vários modelos no chat", "Allow non-local voices": "Permitir vozes não locais", - "Allow Speech to Text": "", + "Allow Speech to Text": "Permitir Fala para Texto", "Allow Temporary Chat": "Permitir Conversa Temporária", - "Allow Text to Speech": "", + "Allow Text to Speech": "Permitir Texto para Fala", "Allow User Location": "Permitir Localização do Usuário", "Allow Voice Interruption in Call": "Permitir Interrupção de Voz na Chamada", - "Allowed Endpoints": "", - "Allowed File Extensions": "", - "Allowed file extensions for upload. Separate multiple extensions with commas. Leave empty for all file types.": "", - "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.": "", - "Always": "", - "Always Collapse Code Blocks": "", - "Always Expand Details": "", - "Always Play Notification Sound": "", + "Allowed Endpoints": "Endpoints Permitidos", + "Allowed File Extensions": "Extensões de arquivo permitidas", + "Allowed file extensions for upload. Separate multiple extensions with commas. Leave empty for all file types.": "Extensões de arquivo permitidas para upload. Separe várias extensões com vírgulas. Deixe em branco para todos os tipos de arquivo.", + "Already have an account?": "Já possui 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.": "Alternativa ao top_p, visando garantir um equilíbrio entre qualidade e variedade. O parâmetro p representa a probabilidade mínima de um token ser considerado, em relação à probabilidade do token mais provável. Por exemplo, com p = 0,05 e o token mais provável tendo uma probabilidade de 0,9, logits com valor inferior a 0,045 são filtrados.", + "Always": "Sempre", + "Always Collapse Code Blocks": "Sempre recolher blocos de código", + "Always Expand Details": "Sempre expandir detalhes", + "Always Play Notification Sound": "Sempre reproduzir som de notificação", "Amazing": "Incrível", "an assistant": "um assistente", - "Analytics": "", - "Analyzed": "", - "Analyzing...": "", + "Analytics": "Análise", + "Analyzed": "Analisado", + "Analyzing...": "Analisando...", "and": "e", "and {{COUNT}} more": "e mais {{COUNT}}", "and create a new shared link.": "e criar um novo link compartilhado.", - "Android": "", - "API": "", + "Android": "Android", + "API": "API", "API Base URL": "URL Base da API", - "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "", - "API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.": "", + "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "URL base da API para o serviço Datalab Marker. O padrão é: https://www.datalab.to/api/v1/marker", + "API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.": "Detalhes da API para usar um modelo de linguagem de visão na descrição da imagem. Este parâmetro é mutuamente exclusivo com picture_description_local.", "API Key": "Chave API", "API Key created.": "Chave API criada.", - "API Key Endpoint Restrictions": "", + "API Key Endpoint Restrictions": "Restrições de endpoint de chave de API", "API keys": "Chaves API", - "API Version": "", + "API Version": "Versão da API", "Application DN": "DN da Aplicação", "Application DN Password": "Senha da aplicação DN", "applies to all users with the \"user\" role": "Aplicar para todos com permissão de \"usuário\"", @@ -120,10 +120,10 @@ "Archive": "Arquivar", "Archive All Chats": "Arquivar Todos os Chats", "Archived Chats": "Chats Arquivados", - "archived-chat-export": "", - "Are you sure you want to clear all memories? This action cannot be undone.": "", - "Are you sure you want to delete this channel?": "", - "Are you sure you want to delete this message?": "", + "archived-chat-export": "exportação de chats arquivados", + "Are you sure you want to clear all memories? This action cannot be undone.": "Tem certeza de que deseja apagar todas as memórias? Esta ação não pode ser desfeita.", + "Are you sure you want to delete this channel?": "Tem certeza de que deseja excluir este canal?", + "Are you sure you want to delete this message?": "Tem certeza de que deseja excluir esta mensagem?", "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": "Arena de Modelos", @@ -131,75 +131,75 @@ "Ask": "Perguntar", "Ask a question": "Faça uma pergunta", "Assistant": "Assistente", - "Attach file from knowledge": "", + "Attach file from knowledge": "Anexar arquivo da base de conhecimento", "Attention to detail": "Atenção aos detalhes", - "Attribute for Mail": "", + "Attribute for Mail": "Atributo para E-mail", "Attribute for Username": "Atribuir para nome de usuário", "Audio": "Áudio", "August": "Agosto", - "Auth": "", + "Auth": "Aut.", "Authenticate": "Autenticar", - "Authentication": "", - "Auto": "", + "Authentication": "Autenticação", + "Auto": "Auto", "Auto-Copy Response to Clipboard": "Cópia Automática da Resposta para a Área de Transferência", "Auto-playback response": "Resposta de reprodução automática", - "Autocomplete Generation": "", - "Autocomplete Generation Input Max Length": "", + "Autocomplete Generation": "Geração de preenchimento automático", + "Autocomplete Generation Input Max Length": "Comprimento máximo de entrada de geração de preenchimento automático", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Api Auth String": "String de Autenticação da API AUTOMATIC1111", "AUTOMATIC1111 Base URL": "URL Base AUTOMATIC1111", "AUTOMATIC1111 Base URL is required.": "URL Base AUTOMATIC1111 é necessária.", "Available list": "Lista disponível", - "Available Tools": "", + "Available Tools": "Ferramentas disponíveis", "available!": "disponível!", "Awful": "Horrível", - "Azure AI Speech": "", - "Azure Region": "", + "Azure AI Speech": "Fala de IA do Azure", + "Azure Region": "Região Azure", "Back": "Voltar", "Bad Response": "Resposta Ruim", "Banners": "Banners", "Base Model (From)": "Modelo Base (De)", - "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "", + "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "O cache da lista de modelos base acelera o acesso buscando modelos base somente na inicialização ou ao salvar as configurações — mais rápido, mas pode não mostrar alterações recentes no modelo base.", "before": "antes", "Being lazy": "Sendo preguiçoso", - "Beta": "", - "Bing Search V7 Endpoint": "", - "Bing Search V7 Subscription Key": "", - "BM25 Weight": "", - "Bocha Search API Key": "", + "Beta": "Beta", + "Bing Search V7 Endpoint": "Endpoint do Bing Search V7", + "Bing Search V7 Subscription Key": "Chave de assinatura do Bing Search V7", + "BM25 Weight": "Peso BM25", + "Bocha Search API Key": "Chave da API de pesquisa Bocha", "Bold": "", - "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", - "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "", + "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Aumentar ou penalizar tokens específicos para respostas restritas. Os valores de viés serão fixados entre -100 e 100 (inclusive). (Padrão: nenhum)", + "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "Tanto o Docling OCR Engine quanto o(s) idioma(s) devem ser fornecidos ou ambos devem ser deixados em branco.", "Brave Search API Key": "Chave API do Brave Search", - "Bullet List": "", - "Button ID": "", - "Button Label": "", - "Button Prompt": "", + "Bullet List": "Lista com marcadores", + "Button ID": "ID do botão", + "Button Label": "Rótulo do botão", + "Button Prompt": "Prompt do botão", "By {{name}}": "Por {{name}}", - "Bypass Embedding and Retrieval": "", - "Bypass Web Loader": "", - "Cache Base Model List": "", - "Calendar": "", + "Bypass Embedding and Retrieval": "Ignorar incorporação e recuperação", + "Bypass Web Loader": "Ignorar carregador da Web", + "Cache Base Model List": "Lista de modelos base de cache", + "Calendar": "Calendário", "Call": "Chamada", "Call feature is not supported when using Web STT engine": "O recurso de chamada não é suportado ao usar o mecanismo Web STT", "Camera": "Câmera", "Cancel": "Cancelar", "Capabilities": "Capacidades", - "Capture": "", - "Capture Audio": "", + "Capture": "Capturar", + "Capture Audio": "Capturar Audio", "Certificate Path": "Caminho do Certificado", - "Change Password": "Mudar Senha", - "Channel Name": "", - "Channels": "", + "Change Password": "Alterar Senha", + "Channel Name": "Nome do canal", + "Channels": "Canais", "Character": "Caracter", - "Character limit for autocomplete generation input": "", + "Character limit for autocomplete generation input": "Limite de caracteres para entrada de geração de preenchimento automático", "Chart new frontiers": "Trace novas fronteiras", "Chat": "Chat", "Chat Background Image": "Imagem de Fundo do Chat", "Chat Bubble UI": "Interface de Bolha de Chat", "Chat Controls": "Controles de Chat", "Chat direction": "Direção do Chat", - "Chat ID": "", + "Chat ID": "ID do Chat", "Chat Overview": "Visão Geral do Chat", "Chat Permissions": "Permissões de Chat", "Chat Tags Auto-Generation": "Tags de Chat Geradas Automaticamente", @@ -212,16 +212,16 @@ "Chunk Size": "Tamanho do Chunk", "Ciphers": "Cifras", "Citation": "Citação", - "Citations": "", + "Citations": "Citações", "Clear memory": "Limpar memória", - "Clear Memory": "", + "Clear Memory": "Limpar Memória", "click here": "Clique aqui", "Click here for filter guides.": "Clique aqui para obter instruções de filtros.", "Click here for help.": "Clique aqui para obter ajuda.", "Click here to": "Clique aqui para", "Click here to download user import template file.": "Clique aqui para baixar o arquivo de modelo de importação de usuários.", "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 see available models.": "", + "Click here to see available models.": "Clique aqui para 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 python.", @@ -230,122 +230,122 @@ "Click on the user role button to change a user's role.": "Clique no botão de função do usuário para alterar a função de um usuário.", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permissão de escrita na área de transferência negada. Verifique as configurações do seu navegador para conceder o acesso necessário.", "Clone": "Clonar", - "Clone Chat": "", - "Clone of {{TITLE}}": "", + "Clone Chat": "Clonar Chat", + "Clone of {{TITLE}}": "Clone de {{TITLE}}", "Close": "Fechar", - "Close Banner": "", - "Close Configure Connection Modal": "", - "Close modal": "", - "Close settings modal": "", - "Close Sidebar": "", - "Code Block": "", + "Close Banner": "Fechar Banner", + "Close Configure Connection Modal": "Fechar a Modal de Configuração de Conexão", + "Close modal": "Fechar modal", + "Close settings modal": "Fechar configurações modal", + "Close Sidebar": "Fechar barra lateral", + "Code Block": "Bloco de código", "Code execution": "Execução de código", - "Code Execution": "", - "Code Execution Engine": "", - "Code Execution Timeout": "", + "Code Execution": "Execução de código", + "Code Execution Engine": "Mecanismo de execução de código", + "Code Execution Timeout": "Tempo limite de execução do código", "Code formatted successfully": "Código formatado com sucesso", - "Code Interpreter": "", - "Code Interpreter Engine": "", - "Code Interpreter Prompt Template": "", - "Collapse": "", + "Code Interpreter": "Intérprete de código", + "Code Interpreter Engine": "Motor de interpretação de código", + "Code Interpreter Prompt Template": "Modelo de Prompt do Interpretador de Código", + "Collapse": "Recolher", "Collection": "Coleção", "Color": "Cor", "ComfyUI": "ComfyUI", - "ComfyUI API Key": "", + "ComfyUI API Key": "Chave de API do ComfyUI", "ComfyUI Base URL": "URL Base do ComfyUI", "ComfyUI Base URL is required.": "URL Base do ComfyUI é necessária.", "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Command": "Comando", - "Comment": "", + "Comment": "Comentário", "Completions": "Conclusões", - "Compress Images in Channels": "", - "Concurrent Requests": "Solicitações Concomitantes", + "Compress Images in Channels": "Comprimir imagens em canais", + "Concurrent Requests": "Solicitações simultâneas", "Configure": "Configurar", "Confirm": "Confirmar", "Confirm Password": "Confirmar Senha", "Confirm your action": "Confirme sua ação", - "Confirm your new password": "", - "Confirm Your Password": "", - "Connect to your own OpenAI compatible API endpoints.": "", - "Connect to your own OpenAPI compatible external tool servers.": "", - "Connection failed": "", - "Connection successful": "", - "Connection Type": "", + "Confirm your new password": "Confirme sua nova senha", + "Confirm Your Password": "Confirme sua senha", + "Connect to your own OpenAI compatible API endpoints.": "Conecte-se aos seus próprios endpoints de API compatíveis com OpenAI.", + "Connect to your own OpenAPI compatible external tool servers.": "Conecte-se aos seus próprios servidores de ferramentas externas compatíveis com OpenAPI.", + "Connection failed": "Falha na conexão", + "Connection successful": "Conexão bem-sucedida", + "Connection Type": "Tipo de conexão", "Connections": "Conexões", - "Connections saved successfully": "", - "Connections settings updated": "", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", - "Contact Admin for WebUI Access": "Contate o Admin para Acesso ao WebUI", + "Connections saved successfully": "Conexões salvas com sucesso", + "Connections settings updated": "Configurações de conexão atualizadas", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "Restringe o esforço de raciocínio para modelos de raciocínio. Aplicável somente a modelos de raciocínio de provedores específicos que suportam o esforço de raciocínio.", + "Contact Admin for WebUI Access": "Contate o Administrador para verificar seu acesso", "Content": "Conteúdo", - "Content Extraction Engine": "", + "Content Extraction Engine": "Mecanismo de Extração de Conteúdo", "Continue Response": "Continuar Resposta", "Continue with {{provider}}": "Continuar com {{provider}}", "Continue with Email": "Continuar com Email", "Continue with LDAP": "Continuar com LDAP", "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.": "Controlar como o texto do mensagem é dividido para solicitações TTS. 'Pontuação' dividida em frases, 'parágrafos' divide em parágrafos e 'não' mantém a mensagem como uma cadeia de caracteres.", - "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "", + "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "Controla a repetição de sequências de tokens no texto gerado. Um valor mais alto (por exemplo, 1,5) penalizará as repetições com mais rigor, enquanto um valor mais baixo (por exemplo, 1,1) será mais tolerante. Em 1, ele está desabilitado.", "Controls": "Controles", - "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "", + "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "Controla o equilíbrio entre coerência e diversidade da saída. Um valor menor resultará em um texto mais focado e coerente.", "Copied": "Copiado", - "Copied link to clipboard": "", - "Copied shared chat URL to clipboard!": "URL de chat compartilhado copiado para a área de transferência!", + "Copied link to clipboard": "Link copiado para a área de transferência", + "Copied shared chat URL to clipboard!": "URL do chat compartilhado copiada para a área de transferência!", "Copied to clipboard": "Copiado para a área de transferência", "Copy": "Copiar", - "Copy Formatted Text": "", + "Copy Formatted Text": "Copiar texto formatado", "Copy last code block": "Copiar último bloco de código", "Copy last response": "Copiar última resposta", - "Copy link": "", + "Copy link": "Copiar link", "Copy Link": "Copiar Link", "Copy to clipboard": "Copiar para a área de transferência", "Copying to clipboard was successful!": "Cópia para a área de transferência bem-sucedida!", - "CORS must be properly configured by the provider to allow requests from Open WebUI.": "", + "CORS must be properly configured by the provider to allow requests from Open WebUI.": "O CORS deve ser configurado corretamente pelo provedor para permitir solicitações do Open WebUI.", "Create": "Criar", - "Create a knowledge base": "Criar uma base de conhecimento", - "Create a model": "Criar um modelo", + "Create a knowledge base": "Criar uma Base de Conhecimento", + "Create a model": "Criar um Modelo", "Create Account": "Criar Conta", - "Create Admin Account": "Criar Conta de Admin", - "Create Channel": "", - "Create Folder": "", + "Create Admin Account": "Criar Conta de Administrador", + "Create Channel": "Criar Canal", + "Create Folder": "Criar Pasta", "Create Group": "Criar Grupo", - "Create Knowledge": "Criar Conhecimento", + "Create Knowledge": "Criar Base de Conhecimento", "Create new key": "Criar nova chave", "Create new secret key": "Criar nova chave secreta", - "Create Note": "", - "Create your first note by clicking on the plus button below.": "", + "Create Note": "Criar Nota", + "Create your first note by clicking on the plus button below.": "Crie sua primeira nota clicando no botão de adição abaixo.", "Created at": "Criado em", "Created At": "Criado Em", "Created by": "Criado por", "CSV Import": "Importação CSV", - "Ctrl+Enter to Send": "", + "Ctrl+Enter to Send": "Ctrl+Enter para enviar", "Current Model": "Modelo Atual", "Current Password": "Senha Atual", "Custom": "Personalizado", - "Custom description enabled": "", - "Custom Parameter Name": "", - "Custom Parameter Value": "", - "Danger Zone": "", + "Custom description enabled": "Descrição personalizada habilitada", + "Custom Parameter Name": "Nome do parâmetro personalizado", + "Custom Parameter Value": "Valor do parâmetro personalizado", + "Danger Zone": "Zona de perigo", "Dark": "Escuro", "Database": "Banco de Dados", - "Datalab Marker API": "", - "Datalab Marker API Key required.": "", + "Datalab Marker API": "API do Marcador do Datalab", + "Datalab Marker API Key required.": "Chave de API do Datalab Marker necessária.", "DD/MM/YYYY": "", "December": "Dezembro", "Default": "Padrão", "Default (Open AI)": "Padrão (Open AI)", "Default (SentenceTransformers)": "Padrão (SentenceTransformers)", - "Default action buttons will be used.": "", - "Default description enabled": "", - "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", + "Default action buttons will be used.": "Botões de ação padrão serão usados.", + "Default description enabled": "Descrição padrão habilitada", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "O modo padrão funciona com uma gama mais ampla de modelos, chamando as ferramentas uma vez antes da execução. O modo nativo aproveita os recursos integrados de chamada de ferramentas do modelo, mas exige que o modelo suporte esse recurso inerentemente.", "Default Model": "Modelo Padrão", "Default model updated": "Modelo padrão atualizado", - "Default Models": "", + "Default Models": "Modelos Padrão", "Default permissions": "Permissões padrão", "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 389 or 636 if TLS is enabled": "O padrão é 389 ou 636 se o TLS estiver habilitado", "Default to ALL": "Padrão para TODOS", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Use a recuperação segmentada como padrão para extração de conteúdo focado e relevante; isso é recomendado para a maioria dos casos.", "Default User Role": "Padrão para novos usuários", "Delete": "Excluir", "Delete a model": "Excluir um modelo", @@ -356,9 +356,9 @@ "Delete chat?": "Excluir chat?", "Delete folder?": "Excluir pasta?", "Delete function?": "Excluir função?", - "Delete Message": "", - "Delete message?": "", - "Delete note?": "", + "Delete Message": "Excluir mensagem", + "Delete message?": "Excluir mensagem?", + "Delete note?": "Excluir nota?", "Delete prompt?": "Excluir prompt?", "delete this link": "Excluir este link", "Delete tool?": "Excluir ferramenta?", @@ -366,26 +366,26 @@ "Deleted {{deleteModelTag}}": "Excluído {{deleteModelTag}}", "Deleted {{name}}": "Excluído {{name}}", "Deleted User": "Usuário Excluído", - "Deployment names are required for Azure OpenAI": "", - "Describe Pictures in Documents": "", + "Deployment names are required for Azure OpenAI": "Nomes de implantação são necessários para o Azure OpenAI", + "Describe Pictures in Documents": "Descreva imagens em documentos", "Describe your knowledge base and objectives": "Descreva sua base de conhecimento e objetivos", "Description": "Descrição", - "Detect Artifacts Automatically": "", - "Dictate": "", + "Detect Artifacts Automatically": "Detectar artefatos automaticamente", + "Dictate": "Ditar", "Didn't fully follow instructions": "Não seguiu completamente as instruções", - "Direct": "", - "Direct Connections": "", - "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", - "Direct Tool Servers": "", - "Disable Code Interpreter": "", - "Disable Image Extraction": "", - "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "", + "Direct": "Direto", + "Direct Connections": "Conexões Diretas", + "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "As conexões diretas permitem que os usuários se conectem aos seus próprios terminais de API compatíveis com OpenAI.", + "Direct Tool Servers": "Servidores de ferramentas diretas", + "Disable Code Interpreter": "Desativar o interpretador de código", + "Disable Image Extraction": "Desativar extração de imagem", + "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "Desabilite a extração de imagens do PDF. Se a opção Usar LLM estiver habilitada, as imagens serão legendadas automaticamente. O padrão é Falso.", "Disabled": "Desativado", "Discover a function": "Descubra uma função", "Discover a model": "Descubra um modelo", "Discover a prompt": "Descubra um prompt", "Discover a tool": "Descubra uma ferramenta", - "Discover how to use Open WebUI and seek support from the community.": "", + "Discover how to use Open WebUI and seek support from the community.": "Descubra como usar o Open WebUI e busque suporte da comunidade.", "Discover wonders": "Descobrir maravilhas", "Discover, download, and explore custom functions": "Descubra, baixe e explore funções personalizadas", "Discover, download, and explore custom prompts": "Descubra, baixe e explore prompts personalizados", @@ -393,72 +393,72 @@ "Discover, download, and explore model presets": "Descubra, baixe e explore predefinições de modelos", "Display": "Exibir", "Display Emoji in Call": "Exibir Emoji na Chamada", - "Display Multi-model Responses in Tabs": "", + "Display Multi-model Responses in Tabs": "Exibir respostas de vários modelos em guias", "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": "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.", + "Do not install functions from sources you do not fully trust.": "Não instale funções de origens nas quais você não confia totalmente.", + "Do not install tools from sources you do not fully trust.": "Não instale ferramentas de origens nas quais você não confia totalmente.", "Docling": "", - "Docling Server URL required.": "", + "Docling Server URL required.": "URL do servidor Docling necessária.", "Document": "Documento", - "Document Intelligence": "", - "Document Intelligence endpoint and key required.": "", + "Document Intelligence": "Inteligência de documentos", + "Document Intelligence endpoint and key required.": "Endpoint e chave do Document Intelligence necessários.", "Documentation": "Documentação", "Documents": "Documentos", "does not make any external connections, and your data stays securely on your locally hosted server.": "não faz nenhuma conexão externa, e seus dados permanecem seguros no seu servidor local.", - "Domain Filter List": "", + "Domain Filter List": "Lista de filtros de domínio", "Don't have an account?": "Não tem uma conta?", - "don't install random functions from sources you don't trust.": "não instale funções aleatórias de fontes que você não confia.", - "don't install random tools from sources you don't trust.": "não instale ferramentas aleatórias de fontes que você não confia.", + "don't install random functions from sources you don't trust.": "não instale funções aleatórias de origens que você não confia.", + "don't install random tools from sources you don't trust.": "não instale ferramentas aleatórias de origens que você não confia.", "Don't like the style": "Não gosta do estilo", "Done": "Concluído", "Download": "Baixar", - "Download as SVG": "", + "Download as SVG": "Baixar como SVG", "Download canceled": "Download cancelado", - "Download Database": "Baixar Banco de Dados", + "Download Database": "Download do Banco de Dados", "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 upload": "", + "Drop any files here to upload": "Solte qualquer arquivo aqui para fazer upload", "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. \"json\" or a JSON schema": "", - "e.g. 60": "", + "e.g. \"json\" or a JSON schema": "por exemplo, \"json\" ou um esquema JSON", + "e.g. 60": "por exemplo, 60", "e.g. A filter to remove profanity from text": "Exemplo: Um filtro para remover palavrões do texto", - "e.g. en": "", + "e.g. en": "por exemplo, en", "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. pdf, docx, txt": "", + "e.g. pdf, docx, txt": "por exemplo, pdf, docx, txt", "e.g. Tools for performing various operations": "Exemplo: Ferramentas para executar operações diversas", - "e.g., 3, 4, 5 (leave blank for default)": "", - "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", - "e.g., westus (leave blank for eastus)": "", + "e.g., 3, 4, 5 (leave blank for default)": "por exemplo, 3, 4, 5 (deixe em branco para o padrão)", + "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "por exemplo, áudio/wav, áudio/mpeg, vídeo/* (deixe em branco para os padrões)", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "por exemplo, en-US, ja-JP (deixe em branco para detecção automática)", + "e.g., westus (leave blank for eastus)": "por exemplo, westus (deixe em branco para eastus)", "Edit": "Editar", "Edit Arena Model": "Editar Arena de Modelos", - "Edit Channel": "", + "Edit Channel": "Editar Canal", "Edit Connection": "Editar Conexão", "Edit Default Permissions": "Editar Permissões Padrão", - "Edit Folder": "", + "Edit Folder": "Editar Pasta", "Edit Memory": "Editar Memória", "Edit User": "Editar Usuário", "Edit User Group": "Editar Grupo de Usuários", - "Edited": "", - "Editing": "", - "Eject": "", + "Edited": "Editado", + "Editing": "Editando", + "Eject": "Ejetar", "ElevenLabs": "", "Email": "Email", "Embark on adventures": "Embarque em aventuras", - "Embedding": "", + "Embedding": "Embedding", "Embedding Batch Size": "Tamanho do Lote de Embedding", "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": "", - "Enable autocomplete generation for chat messages": "", - "Enable Code Execution": "", - "Enable Code Interpreter": "", + "Enable API Key": "Habilitar chave de API", + "Enable autocomplete generation for chat messages": "Habilitar geração de preenchimento automático para mensagens de bate-papo", + "Enable Code Execution": "Habilitar execução de código", + "Enable Code Interpreter": "Habilitar intérprete de código", "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.", @@ -467,136 +467,136 @@ "Enable New Sign Ups": "Ativar Novos Cadastros", "Enabled": "Ativado", "Endpoint URL": "", - "Enforce Temporary Chat": "", - "Enhance": "", + "Enforce Temporary Chat": "Aplicar chat temporário", + "Enhance": "Melhorar", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Certifique-se de que seu arquivo CSV inclua 4 colunas nesta ordem: Nome, Email, Senha, Função.", "Enter {{role}} message here": "Digite a mensagem de {{role}} aqui", "Enter a detail about yourself for your LLMs to recall": "Digite um detalhe sobre você para seus LLMs lembrarem", - "Enter a title for the pending user info overlay. Leave empty for default.": "", - "Enter a watermark for the response. Leave empty for none.": "", + "Enter a title for the pending user info overlay. Leave empty for default.": "Insira um título para a sobreposição de informações pendentes do usuário. Deixe em branco como padrão.", + "Enter a watermark for the response. Leave empty for none.": "Insira uma marca d'água para a resposta. Deixe em branco se não houver nenhuma.", "Enter api auth string (e.g. username:password)": "Digite a string de autenticação da API (por exemplo, username:password)", "Enter Application DN": "Digite o DN da Aplicação", "Enter Application DN Password": "Digite a Senha do DN da Aplicação", "Enter Bing Search V7 Endpoint": "Digite o Endpoint do Bing Search V7", "Enter Bing Search V7 Subscription Key": "Digite a Chave de Assinatura do Bing Search V7", - "Enter Bocha Search API Key": "", - "Enter Brave Search API Key": "Digite a Chave API do Brave Search", + "Enter Bocha Search API Key": "Insira a chave da API de pesquisa do Bocha", + "Enter Brave Search API Key": "Insira a chave da API de pesquisa do Brave", "Enter certificate path": "Digite o caminho do certificado", "Enter CFG Scale (e.g. 7.0)": "Digite a escala de CFG (por exemplo, 7.0)", "Enter Chunk Overlap": "Digite a Sobreposição de Chunk", "Enter Chunk Size": "Digite o Tamanho do Chunk", - "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", - "Enter Config in JSON format": "", - "Enter content for the pending user info overlay. Leave empty for default.": "", - "Enter Datalab Marker API Base URL": "", - "Enter Datalab Marker API Key": "", + "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Insira pares "token:bias_value" separados por vírgulas (exemplo: 5432:100, 413:-100)", + "Enter Config in JSON format": "Insira a configuração no formato JSON", + "Enter content for the pending user info overlay. Leave empty for default.": "Insira o conteúdo para a sobreposição de informações pendentes do usuário. Deixe em branco para o padrão.", + "Enter Datalab Marker API Base URL": "Insira o URL base da API do marcador do Datalab", + "Enter Datalab Marker API Key": "Insira a chave da API do marcador do Datalab", "Enter description": "Digite a descrição", - "Enter Docling OCR Engine": "", - "Enter Docling OCR Language(s)": "", - "Enter Docling Server URL": "", - "Enter Document Intelligence Endpoint": "", - "Enter Document Intelligence Key": "", - "Enter domains separated by commas (e.g., example.com,site.org)": "", - "Enter Exa API Key": "", - "Enter External Document Loader API Key": "", - "Enter External Document Loader URL": "", - "Enter External Web Loader API Key": "", - "Enter External Web Loader URL": "", - "Enter External Web Search API Key": "", - "Enter External Web Search URL": "", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", - "Enter folder name": "", + "Enter Docling OCR Engine": "Insira a Engine OCR do Docling", + "Enter Docling OCR Language(s)": "Insira o(s) idioma(s) do Docling OCR", + "Enter Docling Server URL": "Digite a URL do servidor Docling", + "Enter Document Intelligence Endpoint": "Insira o endpoint do Document Intelligence", + "Enter Document Intelligence Key": "Insira a chave de inteligência do documento", + "Enter domains separated by commas (e.g., example.com,site.org)": "Insira domínios separados por vírgulas (por exemplo, example.com,site.org)", + "Enter Exa API Key": "Insira a chave da API Exa", + "Enter External Document Loader API Key": "Insira a chave da API do carregador de documentos externo", + "Enter External Document Loader URL": "Insira a URL do carregador de documentos externo", + "Enter External Web Loader API Key": "Insira a chave da API do carregador da Web externo", + "Enter External Web Loader URL": "Insira a URL do carregador da Web externo", + "Enter External Web Search API Key": "Insira a chave da API de pesquisa na Web externa", + "Enter External Web Search URL": "Insira a URL de pesquisa na Web externa", + "Enter Firecrawl API Base URL": "Insira a URL base da API do Firecrawl", + "Enter Firecrawl API Key": Insira a chave da API do Firecrawl + "Enter folder name": "Digite o nome da pasta", "Enter Github Raw URL": "Digite a URL bruta do Github", "Enter Google PSE API Key": "Digite a Chave API do Google PSE", "Enter Google PSE Engine Id": "Digite o ID do Motor do Google PSE", "Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)", "Enter Jina API Key": "Digite a Chave API Jina", - "Enter JSON config (e.g., {\"disable_links\": true})": "", - "Enter Jupyter Password": "", - "Enter Jupyter Token": "", - "Enter Jupyter URL": "", - "Enter Kagi Search API Key": "", - "Enter Key Behavior": "", + "Enter JSON config (e.g., {\"disable_links\": true})": "Insira a configuração JSON (por exemplo, {\"disable_links\": true})", + "Enter Jupyter Password": "Digite a senha do Jupyter", + "Enter Jupyter Token": "Insira o Token Jupyter", + "Enter Jupyter URL": "Insira a URL do Jupyter", + "Enter Kagi Search API Key": "Insira a chave da API de pesquisa do Kagi", + "Enter Key Behavior": "Comportamento da tecla Enter", "Enter language codes": "Digite os códigos de idioma", - "Enter Mistral API Key": "", + "Enter Mistral API Key": "Insira a chave da API Mistral", "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": "Digite a Chave API do Mojeek Search", - "Enter name": "", - "Enter New Password": "", + "Enter name": "Digite o nome", + "Enter New Password": "Digite uma nova senha", "Enter Number of Steps (e.g. 50)": "Digite o Número de Passos (por exemplo, 50)", - "Enter Perplexity API Key": "", + "Enter Perplexity API Key": "Insira a chave da API Perplexity", "Enter Playwright Timeout": "", "Enter Playwright WebSocket URL": "", - "Enter proxy URL (e.g. https://user:password@host:port)": "", - "Enter reasoning effort": "", + "Enter proxy URL (e.g. https://user:password@host:port)": "Insira a URL do proxy (por exemplo, https://usuário:senha@host:porta)", + "Enter reasoning effort": "Enter reasoning effort", "Enter Sampler (e.g. Euler a)": "Digite o Sampler (por exemplo, Euler a)", "Enter Scheduler (e.g. Karras)": "Digite o Agendador (por exemplo, Karras)", "Enter Score": "Digite a Pontuação", "Enter SearchApi API Key": "Digite a Chave API do SearchApi", "Enter SearchApi Engine": "Digite o Motor do SearchApi", "Enter Searxng Query URL": "Digite a URL de Consulta do Searxng", - "Enter Seed": "", - "Enter SerpApi API Key": "", - "Enter SerpApi Engine": "", + "Enter Seed": "Digite a Seed", + "Enter SerpApi API Key": "Insira a chave da API SerpApi", + "Enter SerpApi Engine": "Digite o mecanismo/engine SerpApi", "Enter Serper API Key": "Digite a Chave API do Serper", "Enter Serply API Key": "Digite a Chave API do Serply", "Enter Serpstack API Key": "Digite a Chave API do Serpstack", "Enter server host": "Digite o host do servidor", "Enter server label": "Digite o label do servidor", "Enter server port": "Digite a porta do servidor", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", + "Enter Sougou Search API sID": "Insira o sID da API de pesquisa do Sougou", + "Enter Sougou Search API SK": "Digite Sougou Search API SK", "Enter stop sequence": "Digite a sequência de parada", "Enter system prompt": "Digite o prompt do sistema", - "Enter system prompt here": "", + "Enter system prompt here": "Insira o prompt do sistema aqui", "Enter Tavily API Key": "Digite a Chave API do Tavily", "Enter Tavily Extract Depth": "", - "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "", - "Enter the URL of the function to import": "", - "Enter the URL to import": "", + "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Insira a URL pública da sua WebUI. Esta URL será usada para gerar links nas notificações.", + "Enter the URL of the function to import": "Digite a URL da função a ser importada", + "Enter the URL to import": "Digite a URL para importar", "Enter Tika Server URL": "Digite a URL do Servidor Tika", - "Enter timeout in seconds": "", - "Enter to Send": "", + "Enter timeout in seconds": "Insira o tempo limite em segundos", + "Enter to Send": "Enter para Enviar", "Enter Top K": "Digite o Top K", - "Enter Top K Reranker": "", + "Enter Top K Reranker": "Digite o Top K Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "Digite a URL (por exemplo, http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Digite a URL (por exemplo, http://localhost:11434)", - "Enter Yacy Password": "", - "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", - "Enter Yacy Username": "", - "Enter your current password": "", + "Enter Yacy Password": "Digite a senha do Yacy", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Digite a URL do Yacy (por exemplo, http://yacy.example.com:8090)", + "Enter Yacy Username": "Digite o nome de usuário do Yacy", + "Enter your current password": "Digite sua senha atual", "Enter Your Email": "Digite Seu Email", "Enter Your Full Name": "Digite Seu Nome Completo", "Enter your message": "Digite sua mensagem", - "Enter your name": "", - "Enter Your Name": "", - "Enter your new password": "", + "Enter your name": "Digite seu nome", + "Enter Your Name": "Digite Seu Nome", + "Enter your new password": "Digite sua nova senha", "Enter Your Password": "Digite Sua Senha", "Enter Your Role": "Digite Sua Função", "Enter Your Username": "Digite seu usuário", - "Enter your webhook URL": "", + "Enter your webhook URL": "Insira a URL do seu webhook", "Error": "Erro", - "ERROR": "", - "Error accessing Google Drive: {{error}}": "", - "Error accessing media devices.": "", - "Error starting recording.": "", - "Error unloading model: {{error}}": "", - "Error uploading file: {{error}}": "", + "ERROR": "ERRO", + "Error accessing Google Drive: {{error}}": "Erro ao acessar o Google Drive: {{error}}", + "Error accessing media devices.": "Erro ao acessar dispositivos de mídia.", + "Error starting recording.": "Erro ao iniciar a gravação.", + "Error unloading model: {{error}}": "Erro ao descarregar modelo: {{error}}", + "Error uploading file: {{error}}": "Erro ao carregar o arquivo: {{error}}", "Evaluations": "Avaliações", - "Everyone": "", + "Everyone": "Todos", "Exa API Key": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemplo: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Exemplo: ALL", - "Example: mail": "", + "Example: mail": "Exemplo: Email", "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", - "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "", + "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Excedeu o número de licenças disponíveis. Entre em contato com o suporte para aumentar o número de licenças.", "Exclude": "Excluir", - "Execute code for analysis": "", - "Executing **{{NAME}}**...": "", - "Expand": "", + "Execute code for analysis": "Executar código para análise", + "Executing **{{NAME}}**...": "Executando **{{NAME}}**...", + "Expand": "Expandir", "Experimental": "Experimental", "Explain": "Explicar", "Explore the cosmos": "Explorar o cosmos", @@ -609,39 +609,39 @@ "Export Functions": "Exportar Funções", "Export Models": "Exportar Modelos", "Export Presets": "Exportar Presets", - "Export Prompt Suggestions": "", + "Export Prompt Suggestions": "Exportar Sugestões de Prompt", "Export Prompts": "Exportar Prompts", "Export to CSV": "Exportar para CSV", "Export Tools": "Exportar Ferramentas", - "Export Users": "", - "External": "", - "External Document Loader URL required.": "", - "External Task Model": "", - "External Web Loader API Key": "", - "External Web Loader URL": "", - "External Web Search API Key": "", - "External Web Search URL": "", - "Fade Effect for Streaming Text": "", + "Export Users": "Exportar Usuários", + "External": "Externo", + "External Document Loader URL required.": "URL do carregador de documentos externo necessária.", + "External Task Model": "Modelo de Tarefa Externa", + "External Web Loader API Key": "Chave de API do carregador da Web externo", + "External Web Loader URL": "URL do carregador da Web externo", + "External Web Search API Key": "Chave de API de pesquisa na Web externa", + "External Web Search URL": "URL de pesquisa na Web externa", + "Fade Effect for Streaming Text": "Efeito de desbotamento para texto em streaming", "Failed to add file.": "Falha ao adicionar arquivo.", - "Failed to connect to {{URL}} OpenAPI tool server": "", - "Failed to copy link": "", + "Failed to connect to {{URL}} OpenAPI tool server": "Falha ao conectar ao servidor da ferramenta OpenAPI {{URL}}", + "Failed to copy link": "Falha ao copiar o link", "Failed to create API Key.": "Falha ao criar a Chave API.", - "Failed to delete note": "", - "Failed to extract content from the file: {{error}}": "", - "Failed to extract content from the file.": "", - "Failed to fetch models": "", - "Failed to generate title": "", - "Failed to load chat preview": "", - "Failed to load file content.": "", + "Failed to delete note": "Falha ao excluir a nota", + "Failed to extract content from the file: {{error}}": "Falha ao extrair conteúdo do arquivo: {{error}}", + "Failed to extract content from the file.": "Falha ao extrair conteúdo do arquivo.", + "Failed to fetch models": "Falha ao buscar modelos", + "Failed to generate title": "Falha ao gerar título", + "Failed to load chat preview": "Falha ao carregar a pré-visualização do chat", + "Failed to load file content.": "Falha ao carregar o conteúdo do arquivo.", "Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência", - "Failed to save connections": "", - "Failed to save models configuration": "", + "Failed to save connections": "Falha ao salvar conexões", + "Failed to save models configuration": "Falha ao salvar a configuração dos modelos", "Failed to update settings": "Falha ao atualizar as configurações", "Failed to upload file.": "Falha ao carregar o arquivo.", - "Features": "", - "Features Permissions": "", + "Features": "Funcionalidades", + "Features Permissions": "Permissões das Funcionalidades", "February": "Fevereiro", - "Feedback Details": "", + "Feedback Details": "Detalhes do comentário", "Feedback History": "Histórico de comentários", "Feedbacks": "Comentários", "Feel free to add specific details": "Sinta-se à vontade para adicionar detalhes específicos", @@ -652,44 +652,44 @@ "File not found.": "Arquivo não encontrado.", "File removed successfully.": "Arquivo removido com sucesso.", "File size should not exceed {{maxSize}} MB.": "Arquivo não pode exceder {{maxSize}} MB.", - "File Upload": "", - "File uploaded successfully": "", + "File Upload": "Upload de arquivo", + "File uploaded successfully": "Arquivo carregado com sucesso", "Files": "Arquivos", - "Filter": "", + "Filter": "Filtro", "Filter is now globally disabled": "O filtro está agora desativado globalmente", "Filter is now globally enabled": "O filtro está agora ativado globalmente", "Filters": "Filtros", "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.", - "Firecrawl API Base URL": "", - "Firecrawl API Key": "", - "Floating Quick Actions": "", + "Firecrawl API Base URL": "URL base da API do Firecrawl", + "Firecrawl API Key": "Chave de API do Firecrawl", + "Floating Quick Actions": "Ações rápidas flutuantes", "Focus chat input": "Focar entrada de chat", "Folder deleted successfully": "Pasta excluída com sucesso", - "Folder Name": "", + "Folder Name": "Nome da Pasta", "Folder name cannot be empty.": "Nome da pasta não pode estar vazio.", "Folder name updated successfully": "Nome da pasta atualizado com sucesso", - "Folder updated successfully": "", - "Follow up": "", - "Follow Up Generation": "", - "Follow Up Generation Prompt": "", - "Follow-Up Auto-Generation": "", + "Folder updated successfully": "Pasta atualizada com sucesso", + "Follow up": "Acompanhamento", + "Follow Up Generation": "Geração de Acompanhamento", + "Follow Up Generation Prompt": "Prompt de Geração de Acompanhamento", + "Follow-Up Auto-Generation": "Geração automática de acompanhamento", "Followed instructions perfectly": "Seguiu as instruções perfeitamente", - "Force OCR": "", - "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "", + "Force OCR": "Forçar OCR", + "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "Forçar OCR em todas as páginas do PDF. Isso pode levar a resultados piores se você tiver texto de boa qualidade nos seus PDFs. O padrão é Falso.", "Forge new paths": "Trilhar novos caminhos", "Form": "Formulário", "Format Lines": "", - "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "", + "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "Formata as linhas na saída. O padrão é Falso. Se definido como Verdadeiro, as linhas serão formatadas para detectar matemática e estilos embutidos.", "Format your variables using brackets like this:": "Formate suas variáveis usando colchetes como este:", - "Forwards system user session credentials to authenticate": "", - "Full Context Mode": "", + "Forwards system user session credentials to authenticate": "Encaminha as credenciais da sessão do usuário do sistema para autenticação", + "Full Context Mode": "Modo de contexto completo", "Function": "Função", - "Function Calling": "", + "Function Calling": "Chamada de função", "Function created successfully": "Função criada com sucesso", "Function deleted successfully": "Função excluída com sucesso", "Function Description": "Descrição da Função", "Function ID": "ID da Função", - "Function imported successfully": "", + "Function imported successfully": "Função importada com sucesso", "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", @@ -698,16 +698,16 @@ "Functions allow arbitrary code execution.": "Funções permitem a execução arbitrária de código.", "Functions imported successfully": "Funções importadas com sucesso", "Gemini": "", - "Gemini API Config": "", - "Gemini API Key is required.": "", + "Gemini API Config": "Configuração da API Gemini", + "Gemini API Key is required.": "A chave da API Gemini é necessária.", "General": "Geral", - "Generate": "", - "Generate an image": "", + "Generate": "Gerar", + "Generate an image": "Gerar uma imagem", "Generate Image": "Gerar Imagem", - "Generate prompt pair": "", + "Generate prompt pair": "Gerar par de prompts", "Generating search query": "Gerando consulta de pesquisa", - "Generating...": "", - "Get information on {{name}} in the UI": "", + "Generating...": "Gerando...", + "Get information on {{name}} in the UI": "Obtenha informações sobre {{name}} na IU", "Get started": "Iniciar", "Get started with {{WEBUI_NAME}}": "Iniciar com {{WEBUI_NAME}}", "Global": "Global", @@ -731,10 +731,10 @@ "Hex Color": "Cor hexadecimal", "Hex Color - Leave empty for default color": "Cor Hexadecimal - Deixe em branco para a cor padrão", "Hide": "Ocultar", - "Hide from Sidebar": "", - "Hide Model": "", - "High Contrast Mode": "", - "Home": "", + "Hide from Sidebar": "Ocultar da barra lateral", + "Hide Model": "Ocultar modelo", + "High Contrast Mode": "Modo de alto contraste", + "Home": "Início", "Host": "Servidor", "How can I help you today?": "Como posso ajudar você hoje?", "How would you rate this response?": "Como você avalia essa resposta?", @@ -745,56 +745,56 @@ "iframe Sandbox Allow Forms": "", "iframe Sandbox Allow Same Origin": "", "Ignite curiosity": "Desperte a curiosidade", - "Image": "", - "Image Compression": "", - "Image Compression Height": "", - "Image Compression Width": "", - "Image Generation": "", + "Image": "Imagem", + "Image Compression": "Compressão de imagem", + "Image Compression Height": "Altura de compressão da imagem", + "Image Compression Width": "Largura de compressão de imagem", + "Image Generation": "Geração de Imagem", "Image Generation (Experimental)": "Geração de Imagem (Experimental)", "Image Generation Engine": "Motor de Geração de Imagem", - "Image Max Compression Size": "", - "Image Max Compression Size height": "", - "Image Max Compression Size width": "", - "Image Prompt Generation": "", - "Image Prompt Generation Prompt": "", + "Image Max Compression Size": "Tamanho máximo de compressão da imagem", + "Image Max Compression Size height": "Altura do tamanho máximo de compressão da imagem", + "Image Max Compression Size width": "Tamanho máximo de compressão da imagem largura", + "Image Prompt Generation": "Geração de prompt de imagem", + "Image Prompt Generation Prompt": "Prompt de geração de prompt de imagem", "Image Settings": "Configurações de Imagem", "Images": "Imagens", - "Import": "", + "Import": "Importar", "Import Chats": "Importar Chats", "Import Config from JSON File": "Importar Configurações de JSON", - "Import From Link": "", + "Import From Link": "Importar do link", "Import Functions": "Importar Funções", "Import Models": "Importar Modelos", - "Import Notes": "", + "Import Notes": "Importar Notas", "Import Presets": "Importar Presets", - "Import Prompt Suggestions": "", + "Import Prompt Suggestions": "Importar Sugestões de Prompt", "Import Prompts": "Importar Prompts", "Import Tools": "Importar Ferramentas", "Include": "Incluir", "Include `--api-auth` flag when running stable-diffusion-webui": "Incluir a flag `--api-auth` ao executar stable-diffusion-webui", "Include `--api` flag when running stable-diffusion-webui": "Incluir a flag `--api` ao executar stable-diffusion-webui", - "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.": "", + "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.": "Influencia a rapidez com que o algoritmo responde ao feedback do texto gerado. Uma taxa de aprendizado menor resultará em ajustes mais lentos, enquanto uma taxa de aprendizado maior tornará o algoritmo mais responsivo.", "Info": "Informação", - "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", - "Input": "", + "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injete todo o conteúdo como contexto para processamento abrangente; isso é recomendado para consultas complexas.", + "Input": "Entrada", "Input commands": "Comandos de entrada", - "Input Variables": "", - "Insert": "", - "Insert Follow-Up Prompt to Input": "", - "Insert Prompt as Rich Text": "", + "Input Variables": "Variáveis de entrada", + "Insert": "Inserir", + "Insert Follow-Up Prompt to Input": "Inserir prompt de acompanhamento para entrada", + "Insert Prompt as Rich Text": "Inserir prompt como texto enriquecido", "Install from Github URL": "Instalar da URL do Github", "Instant Auto-Send After Voice Transcription": "Envio Automático Instantâneo Após Transcrição de Voz", - "Integration": "", + "Integration": "Integração", "Interface": "Interface", - "Invalid file content": "", + "Invalid file content": "Conteúdo de arquivo inválido", "Invalid file format.": "Formato de arquivo inválido.", - "Invalid JSON file": "", - "Invalid JSON format in Additional Config": "", + "Invalid JSON file": "Arquivo JSON inválido", + "Invalid JSON format in Additional Config": "Formato JSON inválido na configuração adicional", "Invalid Tag": "Tag Inválida", - "is typing...": "", - "Italic": "", + "is typing...": "está digitando...", + "Italic": "Itálico", "January": "Janeiro", - "Jina API Key": "", + "Jina API Key": "Chave de API Jina", "join our Discord for help.": "junte-se ao nosso Discord para ajudar.", "JSON": "JSON", "JSON Preview": "Pré-visualização JSON", @@ -805,13 +805,13 @@ "JWT Expiration": "Expiração do JWT", "JWT Token": "Token JWT", "Kagi Search API Key": "", - "Keep Follow-Up Prompts in Chat": "", - "Keep in Sidebar": "", + "Keep Follow-Up Prompts in Chat": "Mantenha prompts de acompanhamento no chat", + "Keep in Sidebar": "Manter na barra lateral", "Key": "Chave", "Keyboard shortcuts": "Atalhos de Teclado", "Knowledge": "Conhecimento", "Knowledge Access": "Acesso ao Conhecimento", - "Knowledge Base": "", + "Knowledge Base": "Base de Conhecimento", "Knowledge created successfully.": "Conhecimento criado com sucesso.", "Knowledge deleted successfully.": "Conhecimento excluído com sucesso.", "Knowledge Public Sharing": "", @@ -822,49 +822,49 @@ "Label": "Rótulo", "Landing Page Mode": "Modo Landing Page", "Language": "Idioma", - "Language Locales": "", + "Language Locales": "Locais de idioma", "Last Active": "Última Atividade", "Last Modified": "Última Modificação", - "Last reply": "", + "Last reply": "Última resposta", "LDAP": "", "LDAP server updated": "Servidor LDAP atualizado", "Leaderboard": "Tabela de classificação", - "Learn More": "", - "Learn more about OpenAPI tool servers.": "", - "Leave empty for no compression": "", + "Learn More": "Saiba Mais", + "Learn more about OpenAPI tool servers.": "Saiba mais sobre servidores de ferramentas OpenAPI.", + "Leave empty for no compression": "Deixe em branco para nenhuma compactação", "Leave empty for unlimited": "Deixe vazio para ilimitado", - "Leave empty to include all models from \"{{url}}\" endpoint": "", - "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}}\" endpoint": "Deixe em branco para incluir todos os modelos do ponto final \"{{url}}\"", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Deixe em branco para incluir todos os modelos do ponto final \"{{url}}/api/tags\"", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "Deixe em branco para incluir todos os modelos do ponto final \"{{url}}/models\"", "Leave empty to include all models or select specific models": "Deixe vazio para incluir todos os modelos ou selecione modelos especificos", "Leave empty to use the default prompt, or enter a custom prompt": "Deixe vazio para usar o prompt padrão, ou insira um prompt personalizado", - "Leave model field empty to use the default model.": "", + "Leave model field empty to use the default model.": "Deixe o campo do modelo vazio para usar o modelo padrão.", "lexical": "", - "License": "", + "License": "Licença", "Lift List": "", "Light": "Claro", "Listening...": "Escutando...", "Llama.cpp": "", "LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.", - "Loader": "", + "Loader": "Carregador", "Loading Kokoro.js...": "", "Local": "", - "Local Task Model": "", - "Location access not allowed": "", + "Local Task Model": "Modelo de Tarefa Local", + "Location access not allowed": "Acesso ao local não permitido", "Lost": "Perdeu", "LTR": "Esquerda para Direita", "Made by Open WebUI Community": "Feito pela Comunidade OpenWebUI", - "Make password visible in the user interface": "", + "Make password visible in the user interface": "Tornar a senha visível na interface do usuário", "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 Direct Connections": "", - "Manage Models": "", + "Manage Direct Connections": "Gerenciar conexões diretas", + "Manage Models": "Gerenciar modelos", "Manage Ollama": "Gerenciar Ollama", "Manage Ollama API Connections": "Gerenciar Conexões Ollama API", "Manage OpenAI API Connections": "Gerenciar Conexões OpenAI API", "Manage Pipelines": "Gerenciar Pipelines", - "Manage Tool Servers": "", + "Manage Tool Servers": "Gerenciar servidores de ferramentas", "March": "Março", "Markdown": "", "Markdown (Header)": "", @@ -894,68 +894,68 @@ "Model {{modelId}} not found": "Modelo {{modelId}} não encontrado", "Model {{modelName}} is not vision capable": "Modelo {{modelName}} não é capaz de visão", "Model {{name}} is now {{status}}": "Modelo {{name}} está agora {{status}}", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", - "Model accepts file inputs": "", + "Model {{name}} is now hidden": "O modelo {{name}} agora está oculto", + "Model {{name}} is now visible": "O modelo {{name}} agora está visível", + "Model accepts file inputs": "O modelo aceita entradas de arquivo", "Model accepts image inputs": "Modelo aceita entradas de imagens", - "Model can execute code and perform calculations": "", - "Model can generate images based on text prompts": "", - "Model can search the web for information": "", + "Model can execute code and perform calculations": "O modelo pode executar código e realizar cálculos", + "Model can generate images based on text prompts": "O modelo pode gerar imagens com base em prompts de texto", + "Model can search the web for information": "O modelo pode pesquisar informações na web", "Model created successfully!": "Modelo criado com sucesso!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Caminho do sistema de arquivos do modelo detectado. Nome curto do modelo é necessário para atualização, não é possível continuar.", "Model Filtering": "Filtrando modelo", "Model ID": "ID do Modelo", - "Model ID is required.": "", + "Model ID is required.": "É necessário o ID do modelo.", "Model IDs": "IDs do modelo", "Model Name": "Nome do Modelo", - "Model Name is required.": "", + "Model Name is required.": "O nome do modelo é obrigatório.", "Model not selected": "Modelo não selecionado", "Model Params": "Parâmetros do Modelo", "Model Permissions": "Permissões do Modelo", - "Model unloaded successfully": "", + "Model unloaded successfully": "Modelo descarregado com sucesso", "Model updated successfully": "Modelo atualizado com sucesso", - "Model(s) do not support file upload": "", + "Model(s) do not support file upload": "Modelo(s) não suportam upload de arquivo", "Modelfile Content": "Conteúdo do Arquivo do Modelo", "Models": "Modelos", "Models Access": "Acesso aos Modelos", - "Models configuration saved successfully": "", - "Models Public Sharing": "", + "Models configuration saved successfully": "Configuração de modelos salva com sucesso", + "Models Public Sharing": "Modelos de Compartilhamento Público", "Mojeek Search API Key": "Chave de API Mojeel Search", "more": "mais", "More": "Mais", - "More Concise": "", - "More Options": "", + "More Concise": "Mais conciso", + "More Options": "Mais opções", "Name": "Nome", "Name your knowledge base": "Nome da sua base de conhecimento", - "Native": "", - "New Button": "", + "Native": "Nativo", + "New Button": "Novo Botão", "New Chat": "Novo Chat", - "New Folder": "", - "New Function": "", - "New Note": "", + "New Folder": "Nova Pasta", + "New Function": "Nova Função", + "New Note": "Nota Nota", "New Password": "Nova Senha", - "New Tool": "", + "New Tool": "Nova Ferrameta", "new-channel": "", - "Next message": "", - "No chats found": "", - "No chats found for this user.": "", - "No chats found.": "", - "No content": "", + "Next message": "Próxima mensagem", + "No chats found": "Nenhum chat encontrado", + "No chats found for this user.": "Nenhum chat encontrado para este usuário.", + "No chats found.": "Nenhum chat encontrado.", + "No content": "Nenhum conteúdo", "No content found": "Nenhum conteúdo encontrado", - "No content found in file.": "", + "No content found in file.": "Nenhum conteúdo encontrado no arquivo.", "No content to speak": "Sem conteúdo para falar", "No distance available": "Sem distância disponível", "No feedbacks found": "Comentários não encontrados", "No file selected": "Nenhum arquivo selecionado", "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 inference engine with management support found": "", + "No inference engine with management support found": "Nenhum mecanismo de inferência com suporte de gerenciamento encontrado", "No knowledge found": "Nenhum conhecimento encontrado", - "No memories to clear": "", + "No memories to clear": "Nenhuma memória para limpar", "No model IDs": "Nenhum ID de modelo", "No models found": "Nenhum modelo encontrado", - "No models selected": "", - "No Notes": "", + "No models selected": "Nenhum modelo selecionado", + "No Notes": "Sem Notas", "No results found": "Nenhum resultado encontrado", "No search query generated": "Nenhuma consulta de pesquisa gerada", "No source available": "Nenhuma fonte disponível", @@ -964,11 +964,11 @@ "None": "Nenhum", "Not factually correct": "Não está factualmente correto", "Not helpful": "Não é útil", - "Note deleted successfully": "", + "Note deleted successfully": "Nota excluída com sucesso", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Nota: Se você definir uma pontuação mínima, a pesquisa retornará apenas documentos com pontuação igual ou superior à pontuação mínima.", "Notes": "Notas", - "Notification Sound": "", - "Notification Webhook": "", + "Notification Sound": "Som de notificação", + "Notification Webhook": "Webhook de notificação", "Notifications": "Notificações", "November": "Novembro", "OAuth ID": "OAuth ID", @@ -982,12 +982,12 @@ "Ollama Version": "Versão Ollama", "On": "Ligado", "OneDrive": "", - "Only active when \"Paste Large Text as File\" setting is toggled on.": "", - "Only active when the chat input is in focus and an LLM is generating a response.": "", + "Only active when \"Paste Large Text as File\" setting is toggled on.": "Ativo somente quando a configuração "Colar texto grande como arquivo" estiver ativada.", + "Only active when the chat input is in focus and an LLM is generating a response.": "Ativo somente quando a entrada do chat está em foco e um LLM está gerando uma resposta.", "Only alphanumeric characters and hyphens are allowed": "Somente caracteres alfanuméricos e hífens são permitidos", "Only alphanumeric characters and hyphens are allowed in the command string.": "Apenas caracteres alfanuméricos e hífens são permitidos na string de comando.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Somente coleções podem ser editadas. Crie uma nova base de conhecimento para editar/adicionar documentos.", - "Only markdown files are allowed": "", + "Only markdown files are allowed": "Somente arquivos markdown são permitidos", "Only select users and groups with permission can access": "Somente usuários e grupos selecionados com permissão podem acessar.", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ops! Parece que a URL é inválida. Por favor, verifique novamente e tente de novo.", "Oops! There are files still uploading. Please wait for the upload to complete.": "Ops! Existem arquivos a serem carregados. Por favor, aguarde que o carregamento tenha concluído.", @@ -995,12 +995,12 @@ "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ops! Você está usando um método não suportado (somente frontend). Por favor, sirva a WebUI a partir do backend.", "Open file": "Abrir arquivo", "Open in full screen": "Abrir em tela cheia", - "Open modal to configure connection": "", - "Open Modal To Manage Floating Quick Actions": "", + "Open modal to configure connection": "Abra o modal para configurar a conexão", + "Open Modal To Manage Floating Quick Actions": "Abra o Modal para gerenciar ações rápidas flutuantes", "Open new chat": "Abrir novo chat", - "Open Sidebar": "", - "Open User Profile Menu": "", - "Open WebUI can use tools provided by any OpenAPI server.": "", + "Open Sidebar": "Abrir barra lateral", + "Open User Profile Menu": "Abrir menu de perfil do usuário", + "Open WebUI can use tools provided by any OpenAPI server.": "O Open WebUI pode usar ferramentas fornecidas por qualquer servidor OpenAPI.", "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}})", @@ -1011,27 +1011,27 @@ "OpenAI API settings updated": "Configurações OpenAI atualizadas", "OpenAI URL/Key required.": "URL/Chave OpenAI necessária.", "openapi.json URL or Path": "", - "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "", + "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "Opções para executar um modelo de linguagem de visão local na descrição da imagem. Os parâmetros referem-se a um modelo hospedado no Hugging Face. Este parâmetro é mutuamente exclusivo com picture_description_api.", "or": "ou", - "Ordered List": "", + "Ordered List": "Lista ordenada", "Organize your users": "Organizar seus usuários", "Other": "Outro", "OUTPUT": "SAÍDA", "Output format": "Formato de saída", - "Output Format": "", + "Output Format": "Formato de Saída", "Overview": "Visão Geral", "page": "página", - "Paginate": "", - "Parameters": "", + "Paginate": "Paginar", + "Parameters": "Parâmetros", "Password": "Senha", - "Passwords do not match.": "", + "Passwords do not match.": "As senhas não coincidem.", "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", - "Pending": "", - "Pending User Overlay Content": "", - "Pending User Overlay Title": "", + "Pending": "Pendente", + "Pending User Overlay Content": "Conteúdo de sobreposição de usuário pendente", + "Pending User Overlay Title": "Título de sobreposição de usuário pendente", "Permission denied when accessing media devices": "Permissão negada ao acessar dispositivos de mídia", "Permission denied when accessing microphone": "Permissão negada ao acessar o microfone", "Permission denied when accessing microphone: {{error}}": "Permissão negada ao acessar o microfone: {{error}}", @@ -1052,35 +1052,35 @@ "Pipelines": "Pipelines", "Pipelines Not Detected": "Pipelines Não Detectados", "Pipelines Valves": "Válvulas de Pipelines", - "Plain text (.md)": "", + "Plain text (.md)": "Texto simples (.md)", "Plain text (.txt)": "Texto simples (.txt)", "Playground": "Playground", "Playwright Timeout (ms)": "", "Playwright WebSocket URL": "", "Please carefully review the following warnings:": "Por favor, revise cuidadosamente os seguintes avisos:", - "Please do not close the settings page while loading the model.": "", + "Please do not close the settings page while loading the model.": "Não feche a página de configurações enquanto estiver carregando o modelo.", "Please enter a prompt": "Por favor, digite um prompt", - "Please enter a valid path": "", - "Please enter a valid URL": "", + "Please enter a valid path": "Por favor, insira um caminho válido", + "Please enter a valid URL": "Por favor, insira uma URL válido", "Please fill in all fields.": "Por favor, preencha todos os campos.", - "Please select a model first.": "", - "Please select a model.": "", + "Please select a model first.": "Selecione um modelo primeiro.", + "Please select a model.": "Selecione um modelo.", "Please select a reason": "Por favor, seleccione uma razão", - "Please wait until all files are uploaded.": "", + "Please wait until all files are uploaded.": "Aguarde até que todos os arquivos sejam enviados.", "Port": "Porta", "Positive attitude": "Atitude positiva", "Prefix ID": "Prefixo ID", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "O ID de prefixo é utilizado para evitar conflitos com outras conexões, adicionando um prefixo aos IDs dos modelos - deixe em branco para desativar.", - "Prevent file creation": "", - "Preview": "", + "Prevent file creation": "Impedir a criação de arquivos", + "Preview": "Visualização", "Previous 30 days": "Últimos 30 dias", "Previous 7 days": "Últimos 7 dias", - "Previous message": "", - "Private": "", + "Previous message": "Mensagem anterior", + "Private": "Privado", "Profile Image": "Imagem de Perfil", "Prompt": "", "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (por exemplo, Diga-me um fato divertido sobre o Império Romano)", - "Prompt Autocompletion": "", + "Prompt Autocompletion": "Preenchimento automático de prompts", "Prompt Content": "Conteúdo do Prompt", "Prompt created successfully": "Prompt criado com sucesso", "Prompt suggestions": "Sugestões de Prompt", @@ -1088,59 +1088,59 @@ "Prompts": "Prompts", "Prompts Access": "Acessar prompts", "Prompts Public Sharing": "", - "Public": "", + "Public": "Público", "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": "Prompt de Geração de Consulta", - "Quick Actions": "", + "Quick Actions": "Ações rápidas", "RAG Template": "Modelo RAG", "Rating": "Avaliação", "Re-rank models by topic similarity": "Reclassificação de modelos por similaridade de tópico", - "Read": "", + "Read": "Ler", "Read Aloud": "Ler em Voz Alta", - "Reason": "", - "Reasoning Effort": "", - "Record": "", + "Reason": "Razão", + "Reasoning Effort": "Esforço de raciocínio", + "Record": "Registro", "Record voice": "Gravar voz", "Redirecting you to Open WebUI 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.": "", + "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.": "Reduz a probabilidade de gerar respostas sem sentido. Um valor mais alto (por exemplo, 100) resultará em respostas mais diversas, enquanto um valor mais baixo (por exemplo, 10) será mais conservador.", "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": "Gerar novamente", - "Regenerate Menu": "", - "Reindex": "", - "Reindex Knowledge Base Vectors": "", + "Regenerate Menu": "Regenerar Menu", + "Reindex": "Reindexar", + "Reindex Knowledge Base Vectors": "Reindexar vetores da base de conhecimento", "Release Notes": "Notas de Lançamento", - "Releases": "", + "Releases": "Lançamentos", "Relevance": "Relevância", - "Relevance Threshold": "", + "Relevance Threshold": "Limiar de Relevância", "Remember Dismissal": "", "Remove": "Remover", - "Remove {{MODELID}} from list.": "", - "Remove file": "", - "Remove File": "", - "Remove image": "", + "Remove {{MODELID}} from list.": "Remover {{MODELID}} da lista.", + "Remove file": "Remover arquivo", + "Remove File": "Remover Arquivo", + "Remove image": "Remover imagem", "Remove Model": "Remover Modelo", - "Remove this tag from list": "", + "Remove this tag from list": "Remover esta tag da lista", "Rename": "Renomear", - "Reorder Models": "", - "Reply in Thread": "", + "Reorder Models": "Reordenar modelos", + "Reply in Thread": "Responder no tópico", "Reranking Engine": "", "Reranking Model": "Modelo de Reclassificação", "Reset": "Redefinir", - "Reset All Models": "", + "Reset All Models": "Redefinir todos os modelos", "Reset Upload Directory": "Redefinir Diretório de Upload", "Reset Vector Storage/Knowledge": "Redefinir Armazenamento de Vetores/Conhecimento", - "Reset view": "", - "Response": "", + "Reset view": "Redefinir visualização", + "Response": "Resposta", "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notificações de resposta não podem ser ativadas pois as permissões do site foram negadas. Por favor, visite as configurações do seu navegador para conceder o acesso necessário.", "Response splitting": "Divisão da Resposta", - "Response Watermark": "", + "Response Watermark": "Marca d'água de resposta", "Result": "Resultado", - "Retrieval": "", - "Retrieval Query Generation": "", - "Rich Text Input for Chat": "Entrada de rich text para bate-papo", + "Retrieval": "Recuperação", + "Retrieval Query Generation": "Geração de Consulta de Recuperação", + "Rich Text Input for Chat": "Entrada de rich text para o chat", "RK": "", "Role": "Função", "Rosé Pine": "Rosé Pine", @@ -1162,33 +1162,33 @@ "Search Chats": "Pesquisar Chats", "Search Collection": "Pesquisar Coleção", "Search Filters": "Pesquisar Filtros", - "search for archived chats": "", - "search for folders": "", - "search for pinned chats": "", - "search for shared chats": "", + "search for archived chats": "pesquisar por chats arquivados", + "search for folders": "procurar pastas", + "search for pinned chats": "pesquisar por chats fixados", + "search for shared chats": "procurar por chats compartilhados", "search for tags": "Pesquisar por tags", "Search Functions": "Pesquisar Funções", - "Search In Models": "", + "Search In Models": "Pesquisar em modelos", "Search Knowledge": "Pesquisar Conhecimento", "Search Models": "Pesquisar Modelos", - "Search Notes": "", + "Search Notes": "Pesquisaar Notas", "Search options": "Opções de pesquisa", "Search Prompts": "Prompts de Pesquisa", "Search Result Count": "Contagem de Resultados da Pesquisa", - "Search the internet": "", + "Search the internet": "Pesquisar na Internet", "Search Tools": "Pesquisar Ferramentas", "SearchApi API Key": "Chave API SearchApi", "SearchApi Engine": "Motor SearchApi", - "Searched {{count}} sites": "", + "Searched {{count}} sites": "{{count}} sites pesquisados", "Searching \"{{searchQuery}}\"": "Pesquisando \"{{searchQuery}}\"", "Searching Knowledge for \"{{searchQuery}}\"": "Buscando conhecimento para \"{{searchQuery}}\"", - "Searching the web...": "", + "Searching the web...": "Pesquisando na Internet...", "Searxng Query URL": "URL da Consulta Searxng", "See readme.md for instructions": "Veja readme.md para instruções", "See what's new": "Veja o que há de novo", "Seed": "Seed", "Select a base model": "Selecione um modelo base", - "Select a conversation to preview": "", + "Select a conversation to preview": "Selecione uma conversa para visualizar", "Select a engine": "Selecione um motor", "Select a function": "Selecione uma função", "Select a group": "Selecionar grupo", @@ -1196,13 +1196,13 @@ "Select a pipeline": "Selecione um pipeline", "Select a pipeline url": "Selecione uma URL de pipeline", "Select a tool": "Selecione uma ferramenta", - "Select an auth method": "", - "Select an Ollama instance": "", + "Select an auth method": "Selecione um método de autenticação", + "Select an Ollama instance": "Selecione uma instância do Ollama", "Select Engine": "Selecionar Motor", "Select Knowledge": "Selecionar Conhecimento", "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", - "semantic": "", + "semantic": "semântica", "Semantic distance to query": "Distância semântica para consulta", "Send": "Enviar", "Send a Message": "Enviar uma Mensagem", @@ -1225,31 +1225,31 @@ "Set Sampler": "Definir Sampler", "Set Scheduler": "Definir Agendador", "Set Steps": "Definir Etapas", - "Set the number of layers, which will be off-loaded to GPU. 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 layers, which will be off-loaded to GPU. 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 camadas que serão transferidas para a GPU. Aumentar esse valor pode melhorar significativamente o desempenho de modelos otimizados para aceleração de GPU, mas também pode consumir mais energia e recursos da GPU.", "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.": "Defina o número de threads de trabalho usadas para computação. Esta opção controla quantos threads são usados para processar as solicitações recebidas de forma simultânea. Aumentar esse valor pode melhorar o desempenho em cargas de trabalho de alta concorrência, mas também pode consumir mais recursos da CPU.", "Set Voice": "Definir Voz", "Set whisper model": "Definir modelo Whisper", - "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets how far back for the model to look back to prevent repetition.": "", - "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.": "", - "Sets the size of the context window used to generate the next token.": "", + "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Define um viés fixo contra tokens que apareceram pelo menos uma vez. Um valor mais alto (por exemplo, 1,5) penalizará as repetições com mais força, enquanto um valor mais baixo (por exemplo, 0,9) será mais tolerante. Em 0, está desabilitado.", + "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Define um viés de escala contra tokens para penalizar repetições, com base em quantas vezes elas apareceram. Um valor mais alto (por exemplo, 1,5) penalizará as repetições com mais rigor, enquanto um valor mais baixo (por exemplo, 0,9) será mais brando. Em 0, está desabilitado.", + "Sets how far back for the model to look back to prevent repetition.": "Define até que ponto o modelo deve olhar para trás para evitar repetições.", + "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.": "Define a semente numérica aleatória a ser usada para geração. Definir um número específico fará com que o modelo gere o mesmo texto para o mesmo prompt.", + "Sets the size of the context window used to generate the next token.": "Define o tamanho da janela de contexto usada para gerar o próximo token.", "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.": "Define as sequências de parada a serem usadas. Quando esse padrão for encontrado, o modelo de linguagem (LLM) parará de gerar texto e retornará. Vários padrões de parada podem ser definidos especificando parâmetros de parada separados em um arquivo de modelo.", "Settings": "Configurações", "Settings saved successfully!": "Configurações salvas com sucesso!", "Share": "Compartilhar", "Share Chat": "Compartilhar Chat", "Share to Open WebUI Community": "Compartilhar com a Comunidade OpenWebUI", - "Sharing Permissions": "", - "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "", + "Sharing Permissions": "Permissões de compartilhamento", + "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Atalhos com um asterisco (*) são situacionais e só estão ativos em condições específicas.", "Show": "Mostrar", "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 All": "", - "Show Formatting Toolbar": "", - "Show image preview": "", - "Show Less": "", - "Show Model": "", + "Show All": "Mostrar Tudo", + "Show Formatting Toolbar": "Mostrar barra de ferramentas de formatação", + "Show image preview": "Mostrar pré-visualização da imagem", + "Show Less": "Mostrar menos", + "Show Model": "Mostrar modelo", "Show shortcuts": "Mostrar atalhos", "Show your support!": "Mostre seu apoio!", "Showcased creativity": "Criatividade exibida", @@ -1259,92 +1259,92 @@ "Sign Out": "Sair", "Sign up": "Inscrever-se", "Sign up to {{WEBUI_NAME}}": "Inscreva-se em {{WEBUI_NAME}}", - "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "", + "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "Melhora significativamente a precisão usando um LLM para aprimorar tabelas, formulários, cálculos em linha e detecção de layout. Aumenta a latência. O padrão é Falso.", "Signing in to {{WEBUI_NAME}}": "Fazendo login em {{WEBUI_NAME}}", "Sink List": "", "sk-1234": "", - "Skip Cache": "", - "Skip the cache and re-run the inference. Defaults to False.": "", + "Skip Cache": "Pular cache", + "Skip the cache and re-run the inference. Defaults to False.": "Ignore o cache e execute a inferência novamente. O padrão é Falso.", "Sougou Search API sID": "", "Sougou Search API SK": "", "Source": "Fonte", "Speech Playback Speed": "Velocidade de reprodução de fala", "Speech recognition error: {{error}}": "Erro de reconhecimento de fala: {{error}}", - "Speech-to-Text": "", + "Speech-to-Text": "Fala-para-Texto", "Speech-to-Text Engine": "Motor de Transcrição de Fala", "Stop": "Parar", - "Stop Generating": "", + "Stop Generating": "Pare de gerar", "Stop Sequence": "Sequência de Parada", "Stream Chat Response": "Stream Resposta do Chat", "Stream Delta Chunk Size": "", - "Strikethrough": "", + "Strikethrough": "Tachado", "Strip Existing OCR": "", - "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "", + "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "Remove o texto OCR existente do PDF e executa o OCR novamente. Ignorado se a opção Forçar OCR estiver habilitada. O padrão é Falso.", "STT Model": "Modelo STT", "STT Settings": "Configurações STT", - "Stylized PDF Export": "", + "Stylized PDF Export": "Exportação de PDF estilizado", "Subtitle (e.g. about the Roman Empire)": "Subtítulo (por exemplo, sobre o Império Romano)", "Success": "Sucesso", "Successfully updated.": "Atualizado com sucesso.", - "Suggest a change": "", + "Suggest a change": "Sugira uma mudança", "Suggested": "Sugerido", "Support": "Suporte", "Support this plugin:": "Apoie este plugin:", - "Supported MIME Types": "", + "Supported MIME Types": "Tipos MIME suportados", "Sync directory": "", "System": "Sistema", "System Instructions": "Instruções do sistema", "System Prompt": "Prompt do Sistema", "Tags": "", - "Tags Generation": "", + "Tags Generation": "Geração de tags", "Tags Generation Prompt": "Prompt para geração de Tags", - "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "", - "Talk to model": "", + "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.": "A amostragem livre de cauda é usada para reduzir o impacto de tokens menos prováveis na saída. Um valor mais alto (por exemplo, 2,0) reduzirá ainda mais o impacto, enquanto um valor de 1,0 desabilita essa configuração.", + "Talk to model": "Fale com a modelo", "Tap to interrupt": "Toque para interromper", - "Task List": "", - "Task Model": "", - "Tasks": "", + "Task List": "Lista de tarefas", + "Task Model": "Modelo de Tarefa", + "Tasks": "Tarefas", "Tavily API Key": "Chave da API Tavily", "Tavily Extract Depth": "", "Tell us more:": "Conte-nos mais:", "Temperature": "Temperatura", "Temporary Chat": "Chat temporário", "Text Splitter": "Divisor de Texto", - "Text-to-Speech": "", + "Text-to-Speech": "Texto-para-Fala", "Text-to-Speech Engine": "Motor de Texto para Fala", "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.": "", + "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.": "O tamanho do lote determina quantas solicitações de texto são processadas simultaneamente. Um tamanho de lote maior pode aumentar o desempenho e a velocidade do modelo, mas também requer mais memória.", "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Os desenvolvedores por trás deste plugin são voluntários apaixonados da comunidade. Se você achar este plugin útil, considere contribuir para o seu desenvolvimento.", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "A evolução do ranking de avaliação é baseada no sistema Elo e será atualizada em tempo real.", - "The format to return a response in. Format can be json or a JSON schema.": "", - "The height in pixels to compress images to. Leave empty for no compression.": "", - "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "", - "The LDAP attribute that maps to the mail that users use to sign in.": "", + "The format to return a response in. Format can be json or a JSON schema.": "O formato para retornar uma resposta. O formato pode ser json ou um esquema JSON.", + "The height in pixels to compress images to. Leave empty for no compression.": "Altura em pixels para compactar as imagens. Deixe em branco para não compactar.", + "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "O idioma do áudio de entrada. Fornecer o idioma de entrada no formato ISO-639-1 (por exemplo, en) aumentará a precisão e a latência. Deixe em branco para detectar o idioma automaticamente.", + "The LDAP attribute that maps to the mail that users use to sign in.": "O atributo LDAP que mapeia o e-mail que os usuários usam para fazer login.", "The LDAP attribute that maps to the username that users use to sign in.": "O atributo LDAP que mapeia para o nome de usuário que os usuários usam para fazer login.", "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "O ranking atual está em beta, e podemos ajustar as contas de avaliação como refinamos o algoritmo.", "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "Máximo tamanho de arquivo em MB. Se o tamanho do arquivo exceder este limite, o arquivo não será enviado.", "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.": "O número máximo de arquivos que podem ser utilizados a cada vez em chat. Se o número de arquivos exceder este limite, os arquivos não serão enviados.", - "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "", + "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "Formato de saída para o texto. Pode ser 'json', 'markdown' ou 'html'. O padrão é 'markdown'.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "A pontuação deve ser um valor entre 0.0 (0%) e 1.0 (100%).", - "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "", - "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "", - "The Weight of BM25 Hybrid Search. 0 more lexical, 1 more semantic. Default 0.5": "", - "The width in pixels to compress images to. Leave empty for no compression.": "", + "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "O tamanho do bloco delta do fluxo para o modelo. Aumentar o tamanho do bloco fará com que o modelo responda com trechos maiores de texto de uma só vez.", + "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "A temperatura do modelo. Aumentar a temperatura fará com que o modelo responda de forma mais criativa.", + "The Weight of BM25 Hybrid Search. 0 more lexical, 1 more semantic. Default 0.5": "O Peso da Busca Híbrida BM25. 0 a mais lexical, 1 a mais semântica. Padrão 0.5", + "The width in pixels to compress images to. Leave empty for no compression.": "A largura em pixels para compactar as imagens. Deixe em branco para não compactar.", "Theme": "Tema", "Thinking...": "Pensando...", "This action cannot be undone. Do you wish to continue?": "Esta ação não pode ser desfeita. Você deseja continuar?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", - "This chat won't appear in history and your messages will not be saved.": "", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Este canal foi criado em {{createdAt}}. Este é o início do canal {{channelName}}.", + "This chat won't appear in history and your messages will not be saved.": "Este chat não aparecerá no histórico e suas mensagens não serão salvas.", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Isso garante que suas conversas valiosas sejam salvas com segurança no banco de dados do backend. Obrigado!", - "This feature is experimental and may be modified or discontinued without notice.": "", + "This feature is experimental and may be modified or discontinued without notice.": "Este recurso é experimental e pode ser modificado ou descontinuado sem aviso prévio.", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Esta é uma funcionalidade experimental, pode não funcionar como esperado e está sujeita a alterações a qualquer momento.", - "This model is not publicly available. Please select another model.": "", - "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "", - "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.": "", - "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", - "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.": "", + "This model is not publicly available. Please select another model.": "Este modelo não está disponível publicamente. Selecione outro modelo.", + "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Esta opção controla por quanto tempo o modelo permanecerá carregado na memória após a solicitação (padrão: 5m)", + "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.": "Esta opção controla quantos tokens são preservados ao atualizar o contexto. Por exemplo, se definido como 2, os últimos 2 tokens do contexto da conversa serão mantidos. Preservar o contexto pode ajudar a manter a continuidade de uma conversa, mas pode reduzir a capacidade de responder a novos tópicos.", + "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Esta opção habilita ou desabilita o uso do recurso de raciocínio no Ollama, que permite que o modelo pense antes de gerar uma resposta. Quando habilitada, o modelo pode levar um momento para processar o contexto da conversa e gerar uma resposta mais ponderada.", + "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.": "Esta opção define o número máximo de tokens que o modelo pode gerar em sua resposta. Aumentar esse limite permite que o modelo forneça respostas mais longas, mas também pode aumentar a probabilidade de geração de conteúdo inútil ou irrelevante.", "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", @@ -1353,9 +1353,9 @@ "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", - "Thought for {{DURATION}}": "", - "Thought for {{DURATION}} seconds": "", - "Thought for less than a second": "", + "Thought for {{DURATION}}": "Pensado por {{DURATION}}", + "Thought for {{DURATION}} seconds": "Pensado por {{DURATION}} segundos", + "Thought for less than a second": "Pensei por menos de um segundo", "Tika": "Tika", "Tika Server URL required.": "URL do servidor Tika necessária.", "Tiktoken": "", @@ -1364,25 +1364,25 @@ "Title (e.g. Tell me a fun fact)": "Título (por exemplo, Conte-me um fato divertido)", "Title Auto-Generation": "Geração Automática de Título", "Title cannot be an empty string.": "O Título não pode ser uma string vazia.", - "Title Generation": "", + "Title Generation": "Geração de Títulos", "Title Generation Prompt": "Prompt de Geração de Título", "TLS": "", "To access the available model names for downloading,": "Para acessar os nomes de modelos disponíveis para download,", "To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Para acessar a WebUI, entre em contato com o administrador. Os administradores podem gerenciar os status dos usuários no Painel de Administração.", "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Para anexar a base de conhecimento aqui, adicione-os ao espaço de trabalho \"Conhecimento\" primeiro.", - "To learn more about available endpoints, visit our documentation.": "", - "To learn more about powerful prompt variables, click here": "", + "To learn more about available endpoints, visit our documentation.": "Para saber mais sobre os endpoints disponíveis, visite nossa documentação.", + "To learn more about powerful prompt variables, click here": "Para saber mais sobre variáveis ​​de prompt poderosas, clique aqui", "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.", "Toast notifications for new updates": "Notificações de alerta para novas atualizações", "Today": "Hoje", - "Toggle search": "", + "Toggle search": "Alternar pesquisa", "Toggle settings": "Alternar configurações", "Toggle sidebar": "Alternar barra lateral", - "Toggle whether current connection is active.": "", + "Toggle whether current connection is active.": "Alterna se a conexão atual está ativa.", "Token": "", "Too verbose": "Muito detalhado", "Tool created successfully": "Ferramenta criada com sucesso", @@ -1391,38 +1391,38 @@ "Tool ID": "ID da ferramenta", "Tool imported successfully": "Ferramenta importada com sucesso", "Tool Name": "Nome da ferramenta", - "Tool Servers": "", + "Tool Servers": "Servidores de ferramentas", "Tool updated successfully": "Ferramenta atualizada com sucesso", "Tools": "Ferramentas", "Tools Access": "Acesso as Ferramentas", "Tools are a function calling system with arbitrary code execution": "Ferramentas são um sistema de chamada de funções com execução de código arbitrário", - "Tools Function Calling Prompt": "", + "Tools Function Calling Prompt": "Prompt de chamada de função de ferramentas", "Tools have a function calling system that allows arbitrary code execution.": "Ferramentas possuem um sistema de chamada de funções que permite a execução de código arbitrário.", - "Tools Public Sharing": "", + "Tools Public Sharing": "Ferramentas Compartilhamento Público", "Top K": "Top K", "Top K Reranker": "", "Transformers": "", "Trouble accessing Ollama?": "Problemas para acessar o Ollama?", - "Trust Proxy Environment": "", - "Try Again": "", + "Trust Proxy Environment": "Ambiente de Proxy Confiável", + "Try Again": "Tentar novamente", "TTS Model": "Modelo TTS", "TTS Settings": "Configurações TTS", "TTS Voice": "Voz TTS", "Type": "Tipo", "Type Hugging Face Resolve (Download) URL": "Digite o URL de download do Hugging Face", - "Uh-oh! There was an issue with the response.": "", + "Uh-oh! There was an issue with the response.": "Opa! Houve um problema com a resposta.", "UI": "Interface", "Unarchive All": "Desarquivar tudo", "Unarchive All Archived Chats": "Desarquivar Todos os Chats Arquivados", "Unarchive Chat": "Desarquivar Chat", - "Underline": "", + "Underline": "Sublinhado", "Unloads {{FROM_NOW}}": "", "Unlock mysteries": "Desvendar mistérios", "Unpin": "Desfixar", "Unravel secrets": "Desvendar segredos", - "Unsupported file type.": "", + "Unsupported file type.": "Tipo de arquivo não suportado.", "Untagged": "Sem tag", - "Untitled": "", + "Untitled": "Sem título", "Update": "Atualizar", "Update and Copy Link": "Atualizar e Copiar Link", "Update for the latest features and improvements.": "Atualizar para as novas funcionalidades e melhorias.", @@ -1430,49 +1430,49 @@ "Updated": "Atualizado", "Updated at": "Atualizado em", "Updated At": "Atualizado Em", - "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "", + "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Faça upgrade para um plano licenciado para obter recursos aprimorados, incluindo temas e marcas personalizados e suporte dedicado.", "Upload": "Fazer upload", "Upload a GGUF model": "Fazer upload de um modelo GGUF", - "Upload Audio": "", + "Upload Audio": "Carregar Áudio", "Upload directory": "Carregar diretório", "Upload files": "Carregar arquivos", - "Upload Files": "Fazer upload de Arquivos", + "Upload Files": "Carregar Arquivos", "Upload Pipeline": "Fazer upload de Pipeline", "Upload Progress": "Progresso do Upload", "URL": "", "URL Mode": "Modo URL", - "Usage": "", + "Usage": "Uso", "Use '#' in the prompt input to load and include your knowledge.": "Usar '#' no prompt para carregar e incluir seus conhecimentos.", "Use Gravatar": "Usar Gravatar", "Use groups to group your users and assign permissions.": "Use grupos para agrupar seus usuários e atribuir permissões.", "Use Initials": "Usar Iniciais", - "Use LLM": "", - "Use no proxy to fetch page contents.": "", - "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "", + "Use LLM": "Usar LLM", + "Use no proxy to fetch page contents.": "Não utilize proxy para buscar o conteúdo da página.", + "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Use o proxy designado pelas variáveis de ambiente http_proxy e https_proxy para buscar o conteúdo da página.", "user": "usuário", "User": "Usuário", - "User Groups": "", + "User Groups": "Grupos de usuários", "User location successfully retrieved.": "Localização do usuário recuperada com sucesso.", - "User menu": "", - "User Webhooks": "", + "User menu": "Menu do usuário", + "User Webhooks": "Webhooks do usuário", "Username": "Nome do Usuário", "Users": "Usuários", - "Using Entire Document": "", - "Using Focused Retrieval": "", + "Using Entire Document": "Usando o documento inteiro", + "Using Focused Retrieval": "Usando Recuperação Focada", "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.", "Valid time units:": "Unidades de tempo válidas:", "Valves": "Válvulas", "Valves updated": "Válvulas atualizadas", "Valves updated successfully": "Válvulas atualizadas com sucesso", "variable": "variável", - "Verify Connection": "", - "Verify SSL Certificate": "", + "Verify Connection": "Verificar conexão", + "Verify SSL Certificate": "Verificar certificado SSL", "Version": "Versão", "Version {{selectedVersion}} of {{totalVersions}}": "Versão {{selectedVersion}} de {{totalVersions}}", - "View Replies": "", - "View Result from **{{NAME}}**": "", + "View Replies": "Ver respostas", + "View Result from **{{NAME}}**": "Ver resultado de **{{NAME}}**", "Visibility": "Visibilidade", - "Vision": "", + "Vision": "Visão", "Voice": "Voz", "Voice Input": "Entrada de voz", "Voice mode": "", @@ -1480,18 +1480,18 @@ "Warning:": "Aviso:", "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Aviso: Habilitar isso permitirá que os usuários façam upload de código arbitrário no servidor.", "Warning: If you update or change your embedding model, you will need to re-import all documents.": "Aviso: Se você atualizar ou alterar seu modelo de incorporação, será necessário reimportar todos os documentos.", - "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "", + "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Aviso: a execução do Jupyter permite a execução de código arbitrário, o que representa sérios riscos de segurança. Prossiga com extremo cuidado.", "Web": "Web", "Web API": "API Web", "Web Loader Engine": "", "Web Search": "Pesquisa na Web", "Web Search Engine": "Mecanismo de Busca na Web", - "Web Search in Chat": "", - "Web Search Query Generation": "", + "Web Search in Chat": "Pesquisa na Web no Chat", + "Web Search Query Generation": "Geração de consulta de pesquisa na Web", "Webhook URL": "URL do Webhook", "WebUI Settings": "Configurações da WebUI", "WebUI URL": "", - "WebUI will make requests to \"{{url}}\"": "", + "WebUI will make requests to \"{{url}}\"": "A WebUI fará requisições para \"{{url}}\"", "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?", @@ -1499,15 +1499,15 @@ "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.", - "Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.": "", + "Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.": "Se a saída deve ser paginada. Cada página será separada por uma régua horizontal e um número de página. O padrão é Falso.", "Whisper (Local)": "Whisper (Local)", "Why?": "Por que", "Widescreen Mode": "Modo Tela Cheia", "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.": "", + "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.": "Funciona em conjunto com o top-k. Um valor mais alto (por exemplo, 0,95) resultará em um texto mais diverso, enquanto um valor mais baixo (por exemplo, 0,5) gerará um texto mais focado e conservador.", "Workspace": "Espaço de Trabalho", "Workspace Permissions": "Permissões do espaço de trabalho", - "Write": "", + "Write": "Escrever", "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...": "Escreva algo...", @@ -1516,7 +1516,7 @@ "Yacy Username": "", "Yesterday": "Ontem", "You": "Você", - "You are currently using a trial license. Please contact support to upgrade your license.": "", + "You are currently using a trial license. Please contact support to upgrade your license.": "Você está usando uma licença de teste. Entre em contato com o suporte para atualizar sua licença.", "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.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Você pode personalizar suas interações com LLMs adicionando memórias através do botão 'Gerenciar' abaixo, tornando-as mais úteis e adaptadas a você.", "You cannot upload an empty file.": "Você não pode carregar um arquivo vazio.", From 5543f30c49bb486cffb926d1026e88f7d3e01a9e Mon Sep 17 00:00:00 2001 From: Athanasios Oikonomou Date: Tue, 12 Aug 2025 01:07:09 +0300 Subject: [PATCH 018/162] feat: Allow navigating to user group from user edit This commit allow navigating from user edit to user group, allowing faster updates to groups. The querystringValue function was moved to lib/utils to reuse it in multiple places. --- src/lib/components/admin/Users/Groups/GroupItem.svelte | 10 +++++++++- .../admin/Users/UserList/EditUserModal.svelte | 5 +++++ src/lib/utils/index.ts | 6 ++++++ src/routes/auth/+page.svelte | 8 +------- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/lib/components/admin/Users/Groups/GroupItem.svelte b/src/lib/components/admin/Users/Groups/GroupItem.svelte index c84eb4b3aa..6e2b324353 100644 --- a/src/lib/components/admin/Users/Groups/GroupItem.svelte +++ b/src/lib/components/admin/Users/Groups/GroupItem.svelte @@ -1,6 +1,6 @@ {#each userGroups as userGroup} + goto('/admin/users/groups?id=' + userGroup.id)}> {userGroup.name} + {/each} diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 2ee3781019..ef61f5cde8 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -1583,3 +1583,9 @@ export const extractContentFromFile = async (file, pdfjsLib = null) => { throw new Error('Unsupported or non-text file type: ' + (file.name || type)); } }; + +export const querystringValue = (key: string): string | null => { + const querystring = window.location.search; + const urlParams = new URLSearchParams(querystring); + return urlParams.get(key); +}; diff --git a/src/routes/auth/+page.svelte b/src/routes/auth/+page.svelte index 8ee6fc79b1..d4ce838251 100644 --- a/src/routes/auth/+page.svelte +++ b/src/routes/auth/+page.svelte @@ -14,7 +14,7 @@ import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; import { WEBUI_NAME, config, user, socket } from '$lib/stores'; - import { generateInitialsImage, canvasPixelTest } from '$lib/utils'; + import { generateInitialsImage, canvasPixelTest, querystringValue } from '$lib/utils'; import Spinner from '$lib/components/common/Spinner.svelte'; import OnBoarding from '$lib/components/OnBoarding.svelte'; @@ -33,12 +33,6 @@ let ldapUsername = ''; - const querystringValue = (key) => { - const querystring = window.location.search; - const urlParams = new URLSearchParams(querystring); - return urlParams.get(key); - }; - const setSessionUser = async (sessionUser) => { if (sessionUser) { console.log(sessionUser); From f91da291d9938d1c47dc1f8a4b81bc3b4e70eb08 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 12 Aug 2025 03:48:04 +0400 Subject: [PATCH 019/162] refac: reactive user settings --- .../admin/Settings/Connections.svelte | 5 +- src/lib/components/chat/SettingsModal.svelte | 143 ++++++++++-------- 2 files changed, 87 insertions(+), 61 deletions(-) diff --git a/src/lib/components/admin/Settings/Connections.svelte b/src/lib/components/admin/Settings/Connections.svelte index 11a67322b5..0b9d2874b2 100644 --- a/src/lib/components/admin/Settings/Connections.svelte +++ b/src/lib/components/admin/Settings/Connections.svelte @@ -6,7 +6,7 @@ import { getOllamaConfig, updateOllamaConfig } from '$lib/apis/ollama'; import { getOpenAIConfig, updateOpenAIConfig, getOpenAIModels } from '$lib/apis/openai'; - import { getModels as _getModels } from '$lib/apis'; + import { getModels as _getModels, getBackendConfig } from '$lib/apis'; import { getConnectionsConfig, setConnectionsConfig } from '$lib/apis/configs'; import { config, models, settings, user } from '$lib/stores'; @@ -114,6 +114,7 @@ if (res) { toast.success($i18n.t('Connections settings updated')); await models.set(await getModels()); + await config.set(await getBackendConfig()); } }; @@ -198,6 +199,8 @@ updateOllamaHandler(); dispatch('save'); + + await config.set(await getBackendConfig()); }; diff --git a/src/lib/components/chat/SettingsModal.svelte b/src/lib/components/chat/SettingsModal.svelte index 07c4a6c67c..6e3e6fe5e7 100644 --- a/src/lib/components/chat/SettingsModal.svelte +++ b/src/lib/components/chat/SettingsModal.svelte @@ -1,5 +1,5 @@ @@ -575,8 +598,8 @@ placeholder={$i18n.t('Search')} /> - {#if visibleTabs.length > 0} - {#each visibleTabs as tabId (tabId)} + {#if filteredSettings.length > 0} + {#each filteredSettings as tabId (tabId)} {#if tabId === 'general'}