diff --git a/backend/apps/socket/main.py b/backend/apps/socket/main.py index 18ce7a607..1d98d37ff 100644 --- a/backend/apps/socket/main.py +++ b/backend/apps/socket/main.py @@ -52,7 +52,6 @@ async def user_join(sid, data): user = Users.get_user_by_id(data["id"]) if user: - SESSION_POOL[sid] = user.id if user.id in USER_POOL: USER_POOL[user.id].append(sid) @@ -80,7 +79,6 @@ def get_models_in_use(): @sio.on("usage") async def usage(sid, data): - model_id = data["model"] # Cancel previous callback if there is one @@ -139,7 +137,7 @@ async def disconnect(sid): print(f"Unknown session ID {sid} disconnected") -async def get_event_emitter(request_info): +def get_event_emitter(request_info): async def __event_emitter__(event_data): await sio.emit( "chat-events", @@ -154,7 +152,7 @@ async def get_event_emitter(request_info): return __event_emitter__ -async def get_event_call(request_info): +def get_event_call(request_info): async def __event_call__(event_data): response = await sio.call( "chat-events", diff --git a/backend/apps/webui/main.py b/backend/apps/webui/main.py index 97165a11b..972562a04 100644 --- a/backend/apps/webui/main.py +++ b/backend/apps/webui/main.py @@ -1,9 +1,6 @@ -from fastapi import FastAPI, Depends -from fastapi.routing import APIRoute +from fastapi import FastAPI from fastapi.responses import StreamingResponse from fastapi.middleware.cors import CORSMiddleware -from starlette.middleware.sessions import SessionMiddleware -from sqlalchemy.orm import Session from apps.webui.routers import ( auths, users, @@ -22,12 +19,15 @@ from apps.webui.models.functions import Functions from apps.webui.models.models import Models from apps.webui.utils import load_function_module_by_id -from utils.misc import stream_message_template +from utils.misc import ( + openai_chat_chunk_message_template, + openai_chat_completion_message_template, + add_or_update_system_message, +) from utils.task import prompt_template from config import ( - WEBUI_BUILD_HASH, SHOW_ADMIN_DETAILS, ADMIN_EMAIL, WEBUI_AUTH, @@ -51,11 +51,9 @@ from config import ( from apps.socket.main import get_event_call, get_event_emitter import inspect -import uuid -import time import json -from typing import Iterator, Generator, AsyncGenerator, Optional +from typing import Iterator, Generator, AsyncGenerator from pydantic import BaseModel app = FastAPI() @@ -127,60 +125,58 @@ async def get_status(): } +def get_function_module(pipe_id: str): + # Check if function is already loaded + if pipe_id not in app.state.FUNCTIONS: + function_module, _, _ = load_function_module_by_id(pipe_id) + app.state.FUNCTIONS[pipe_id] = function_module + else: + function_module = app.state.FUNCTIONS[pipe_id] + + if hasattr(function_module, "valves") and hasattr(function_module, "Valves"): + valves = Functions.get_function_valves_by_id(pipe_id) + function_module.valves = function_module.Valves(**(valves if valves else {})) + return function_module + + async def get_pipe_models(): pipes = Functions.get_functions_by_type("pipe", active_only=True) pipe_models = [] for pipe in pipes: - # Check if function is already loaded - if pipe.id not in app.state.FUNCTIONS: - function_module, function_type, frontmatter = load_function_module_by_id( - pipe.id - ) - app.state.FUNCTIONS[pipe.id] = function_module - else: - function_module = app.state.FUNCTIONS[pipe.id] - - if hasattr(function_module, "valves") and hasattr(function_module, "Valves"): - valves = Functions.get_function_valves_by_id(pipe.id) - function_module.valves = function_module.Valves( - **(valves if valves else {}) - ) + function_module = get_function_module(pipe.id) # Check if function is a manifold - if hasattr(function_module, "type"): - if function_module.type == "manifold": - manifold_pipes = [] + if hasattr(function_module, "pipes"): + manifold_pipes = [] - # Check if pipes is a function or a list - if callable(function_module.pipes): - manifold_pipes = function_module.pipes() - else: - manifold_pipes = function_module.pipes + # Check if pipes is a function or a list + if callable(function_module.pipes): + manifold_pipes = function_module.pipes() + else: + manifold_pipes = function_module.pipes - for p in manifold_pipes: - manifold_pipe_id = f'{pipe.id}.{p["id"]}' - manifold_pipe_name = p["name"] + for p in manifold_pipes: + manifold_pipe_id = f'{pipe.id}.{p["id"]}' + manifold_pipe_name = p["name"] - if hasattr(function_module, "name"): - manifold_pipe_name = ( - f"{function_module.name}{manifold_pipe_name}" - ) + if hasattr(function_module, "name"): + manifold_pipe_name = f"{function_module.name}{manifold_pipe_name}" - pipe_flag = {"type": pipe.type} - if hasattr(function_module, "ChatValves"): - pipe_flag["valves_spec"] = function_module.ChatValves.schema() + pipe_flag = {"type": pipe.type} + if hasattr(function_module, "ChatValves"): + pipe_flag["valves_spec"] = function_module.ChatValves.schema() - pipe_models.append( - { - "id": manifold_pipe_id, - "name": manifold_pipe_name, - "object": "model", - "created": pipe.created_at, - "owned_by": "openai", - "pipe": pipe_flag, - } - ) + pipe_models.append( + { + "id": manifold_pipe_id, + "name": manifold_pipe_name, + "object": "model", + "created": pipe.created_at, + "owned_by": "openai", + "pipe": pipe_flag, + } + ) else: pipe_flag = {"type": "pipe"} if hasattr(function_module, "ChatValves"): @@ -200,284 +196,211 @@ async def get_pipe_models(): return pipe_models +async def execute_pipe(pipe, params): + if inspect.iscoroutinefunction(pipe): + return await pipe(**params) + else: + return pipe(**params) + + +async def get_message_content(res: str | Generator | AsyncGenerator) -> str: + if isinstance(res, str): + return res + if isinstance(res, Generator): + return "".join(map(str, res)) + if isinstance(res, AsyncGenerator): + return "".join([str(stream) async for stream in res]) + + +def process_line(form_data: dict, line): + if isinstance(line, BaseModel): + line = line.model_dump_json() + line = f"data: {line}" + if isinstance(line, dict): + line = f"data: {json.dumps(line)}" + + try: + line = line.decode("utf-8") + except Exception: + pass + + if line.startswith("data:"): + return f"{line}\n\n" + else: + line = openai_chat_chunk_message_template(form_data["model"], line) + return f"data: {json.dumps(line)}\n\n" + + +def get_pipe_id(form_data: dict) -> str: + pipe_id = form_data["model"] + if "." in pipe_id: + pipe_id, _ = pipe_id.split(".", 1) + print(pipe_id) + return pipe_id + + +def get_function_params(function_module, form_data, user, extra_params={}): + pipe_id = get_pipe_id(form_data) + # Get the signature of the function + sig = inspect.signature(function_module.pipe) + params = {"body": form_data} + + for key, value in extra_params.items(): + if key in sig.parameters: + params[key] = value + + if "__user__" in sig.parameters: + __user__ = { + "id": user.id, + "email": user.email, + "name": user.name, + "role": user.role, + } + + try: + if hasattr(function_module, "UserValves"): + __user__["valves"] = function_module.UserValves( + **Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) + ) + except Exception as e: + print(e) + + params["__user__"] = __user__ + return params + + +# inplace function: form_data is modified +def apply_model_params_to_body(params: dict, form_data: dict) -> dict: + if not params: + return form_data + + mappings = { + "temperature": float, + "top_p": int, + "max_tokens": int, + "frequency_penalty": int, + "seed": lambda x: x, + "stop": lambda x: [bytes(s, "utf-8").decode("unicode_escape") for s in x], + } + + for key, cast_func in mappings.items(): + if (value := params.get(key)) is not None: + form_data[key] = cast_func(value) + + return form_data + + +# inplace function: form_data is modified +def apply_model_system_prompt_to_body(params: dict, form_data: dict, user) -> dict: + system = params.get("system", None) + if not system: + return form_data + + if user: + template_params = { + "user_name": user.name, + "user_location": user.info.get("location") if user.info else None, + } + else: + template_params = {} + system = prompt_template(system, **template_params) + form_data["messages"] = add_or_update_system_message( + system, form_data.get("messages", []) + ) + return form_data + + async def generate_function_chat_completion(form_data, user): model_id = form_data.get("model") model_info = Models.get_model_by_id(model_id) - - metadata = None - if "metadata" in form_data: - metadata = form_data["metadata"] - del form_data["metadata"] + metadata = form_data.pop("metadata", None) __event_emitter__ = None __event_call__ = None __task__ = None if metadata: - if ( - metadata.get("session_id") - and metadata.get("chat_id") - and metadata.get("message_id") - ): - __event_emitter__ = await get_event_emitter(metadata) - __event_call__ = await get_event_call(metadata) - - if metadata.get("task"): - __task__ = metadata.get("task") + if all(k in metadata for k in ("session_id", "chat_id", "message_id")): + __event_emitter__ = get_event_emitter(metadata) + __event_call__ = get_event_call(metadata) + __task__ = metadata.get("task", None) if model_info: if model_info.base_model_id: form_data["model"] = model_info.base_model_id - model_info.params = model_info.params.model_dump() + params = model_info.params.model_dump() + form_data = apply_model_params_to_body(params, form_data) + form_data = apply_model_system_prompt_to_body(params, form_data, user) - if model_info.params: - if model_info.params.get("temperature", None) is not None: - form_data["temperature"] = float(model_info.params.get("temperature")) + pipe_id = get_pipe_id(form_data) + function_module = get_function_module(pipe_id) - if model_info.params.get("top_p", None): - form_data["top_p"] = int(model_info.params.get("top_p", None)) + pipe = function_module.pipe + params = get_function_params( + function_module, + form_data, + user, + { + "__event_emitter__": __event_emitter__, + "__event_call__": __event_call__, + "__task__": __task__, + }, + ) - if model_info.params.get("max_tokens", None): - form_data["max_tokens"] = int(model_info.params.get("max_tokens", None)) - - if model_info.params.get("frequency_penalty", None): - form_data["frequency_penalty"] = int( - model_info.params.get("frequency_penalty", None) - ) - - if model_info.params.get("seed", None): - form_data["seed"] = model_info.params.get("seed", None) - - if model_info.params.get("stop", None): - form_data["stop"] = ( - [ - bytes(stop, "utf-8").decode("unicode_escape") - for stop in model_info.params["stop"] - ] - if model_info.params.get("stop", None) - else None - ) - - system = model_info.params.get("system", None) - if system: - system = prompt_template( - system, - **( - { - "user_name": user.name, - "user_location": ( - user.info.get("location") if user.info else None - ), - } - if user - else {} - ), - ) - # Check if the payload already has a system message - # If not, add a system message to the payload - if form_data.get("messages"): - for message in form_data["messages"]: - if message.get("role") == "system": - message["content"] = system + message["content"] - break - else: - form_data["messages"].insert( - 0, - { - "role": "system", - "content": system, - }, - ) - - else: - pass - - async def job(): - pipe_id = form_data["model"] - if "." in pipe_id: - pipe_id, sub_pipe_id = pipe_id.split(".", 1) - print(pipe_id) - - # Check if function is already loaded - if pipe_id not in app.state.FUNCTIONS: - function_module, function_type, frontmatter = load_function_module_by_id( - pipe_id - ) - app.state.FUNCTIONS[pipe_id] = function_module - else: - function_module = app.state.FUNCTIONS[pipe_id] - - if hasattr(function_module, "valves") and hasattr(function_module, "Valves"): - - valves = Functions.get_function_valves_by_id(pipe_id) - function_module.valves = function_module.Valves( - **(valves if valves else {}) - ) - - pipe = function_module.pipe - - # Get the signature of the function - sig = inspect.signature(pipe) - params = {"body": form_data} - - if "__user__" in sig.parameters: - __user__ = { - "id": user.id, - "email": user.email, - "name": user.name, - "role": user.role, - } + if form_data["stream"]: + async def stream_content(): try: - if hasattr(function_module, "UserValves"): - __user__["valves"] = function_module.UserValves( - **Functions.get_user_valves_by_id_and_user_id(pipe_id, user.id) - ) - except Exception as e: - print(e) + res = await execute_pipe(pipe, params) - params = {**params, "__user__": __user__} - - if "__event_emitter__" in sig.parameters: - params = {**params, "__event_emitter__": __event_emitter__} - - if "__event_call__" in sig.parameters: - params = {**params, "__event_call__": __event_call__} - - if "__task__" in sig.parameters: - params = {**params, "__task__": __task__} - - if form_data["stream"]: - - async def stream_content(): - try: - if inspect.iscoroutinefunction(pipe): - res = await pipe(**params) - else: - res = pipe(**params) - - # Directly return if the response is a StreamingResponse - if isinstance(res, StreamingResponse): - async for data in res.body_iterator: - yield data - return - if isinstance(res, dict): - yield f"data: {json.dumps(res)}\n\n" - return - - except Exception as e: - print(f"Error: {e}") - yield f"data: {json.dumps({'error': {'detail':str(e)}})}\n\n" + # Directly return if the response is a StreamingResponse + if isinstance(res, StreamingResponse): + async for data in res.body_iterator: + yield data + return + if isinstance(res, dict): + yield f"data: {json.dumps(res)}\n\n" return - if isinstance(res, str): - message = stream_message_template(form_data["model"], res) - yield f"data: {json.dumps(message)}\n\n" - - if isinstance(res, Iterator): - for line in res: - if isinstance(line, BaseModel): - line = line.model_dump_json() - line = f"data: {line}" - if isinstance(line, dict): - line = f"data: {json.dumps(line)}" - - try: - line = line.decode("utf-8") - except: - pass - - if line.startswith("data:"): - yield f"{line}\n\n" - else: - line = stream_message_template(form_data["model"], line) - yield f"data: {json.dumps(line)}\n\n" - - if isinstance(res, str) or isinstance(res, Generator): - finish_message = { - "id": f"{form_data['model']}-{str(uuid.uuid4())}", - "object": "chat.completion.chunk", - "created": int(time.time()), - "model": form_data["model"], - "choices": [ - { - "index": 0, - "delta": {}, - "logprobs": None, - "finish_reason": "stop", - } - ], - } - - yield f"data: {json.dumps(finish_message)}\n\n" - yield f"data: [DONE]" - - if isinstance(res, AsyncGenerator): - async for line in res: - if isinstance(line, BaseModel): - line = line.model_dump_json() - line = f"data: {line}" - if isinstance(line, dict): - line = f"data: {json.dumps(line)}" - - try: - line = line.decode("utf-8") - except: - pass - - if line.startswith("data:"): - yield f"{line}\n\n" - else: - line = stream_message_template(form_data["model"], line) - yield f"data: {json.dumps(line)}\n\n" - - return StreamingResponse(stream_content(), media_type="text/event-stream") - else: - - try: - if inspect.iscoroutinefunction(pipe): - res = await pipe(**params) - else: - res = pipe(**params) - - if isinstance(res, StreamingResponse): - return res except Exception as e: print(f"Error: {e}") - return {"error": {"detail": str(e)}} + yield f"data: {json.dumps({'error': {'detail':str(e)}})}\n\n" + return - if isinstance(res, dict): - return res - elif isinstance(res, BaseModel): - return res.model_dump() - else: - message = "" - if isinstance(res, str): - message = res - elif isinstance(res, Generator): - for stream in res: - message = f"{message}{stream}" - elif isinstance(res, AsyncGenerator): - async for stream in res: - message = f"{message}{stream}" + if isinstance(res, str): + message = openai_chat_chunk_message_template(form_data["model"], res) + yield f"data: {json.dumps(message)}\n\n" - return { - "id": f"{form_data['model']}-{str(uuid.uuid4())}", - "object": "chat.completion", - "created": int(time.time()), - "model": form_data["model"], - "choices": [ - { - "index": 0, - "message": { - "role": "assistant", - "content": message, - }, - "logprobs": None, - "finish_reason": "stop", - } - ], - } + if isinstance(res, Iterator): + for line in res: + yield process_line(form_data, line) - return await job() + if isinstance(res, AsyncGenerator): + async for line in res: + yield process_line(form_data, line) + + if isinstance(res, str) or isinstance(res, Generator): + finish_message = openai_chat_chunk_message_template( + form_data["model"], "" + ) + finish_message["choices"][0]["finish_reason"] = "stop" + yield f"data: {json.dumps(finish_message)}\n\n" + yield "data: [DONE]" + + return StreamingResponse(stream_content(), media_type="text/event-stream") + else: + try: + res = await execute_pipe(pipe, params) + + except Exception as e: + print(f"Error: {e}") + return {"error": {"detail": str(e)}} + + if isinstance(res, StreamingResponse) or isinstance(res, dict): + return res + if isinstance(res, BaseModel): + return res.model_dump() + + message = await get_message_content(res) + return openai_chat_completion_message_template(form_data["model"], message) diff --git a/backend/apps/webui/models/models.py b/backend/apps/webui/models/models.py index 3b128c7d6..8277d1d0b 100644 --- a/backend/apps/webui/models/models.py +++ b/backend/apps/webui/models/models.py @@ -1,13 +1,11 @@ -import json import logging -from typing import Optional +from typing import Optional, List from pydantic import BaseModel, ConfigDict -from sqlalchemy import String, Column, BigInteger, Text +from sqlalchemy import Column, BigInteger, Text from apps.webui.internal.db import Base, JSONField, get_db -from typing import List, Union, Optional from config import SRC_LOG_LEVELS import time @@ -113,7 +111,6 @@ class ModelForm(BaseModel): class ModelsTable: - def insert_new_model( self, form_data: ModelForm, user_id: str ) -> Optional[ModelModel]: @@ -126,9 +123,7 @@ class ModelsTable: } ) try: - with get_db() as db: - result = Model(**model.model_dump()) db.add(result) db.commit() @@ -144,13 +139,11 @@ class ModelsTable: def get_all_models(self) -> List[ModelModel]: with get_db() as db: - return [ModelModel.model_validate(model) for model in db.query(Model).all()] def get_model_by_id(self, id: str) -> Optional[ModelModel]: try: with get_db() as db: - model = db.get(Model, id) return ModelModel.model_validate(model) except: @@ -178,7 +171,6 @@ class ModelsTable: def delete_model_by_id(self, id: str) -> bool: try: with get_db() as db: - db.query(Model).filter_by(id=id).delete() db.commit() diff --git a/backend/apps/webui/routers/utils.py b/backend/apps/webui/routers/utils.py index 780ed6b43..4ffe748b0 100644 --- a/backend/apps/webui/routers/utils.py +++ b/backend/apps/webui/routers/utils.py @@ -1,3 +1,6 @@ +from pathlib import Path +import site + from fastapi import APIRouter, UploadFile, File, Response from fastapi import Depends, HTTPException, status from starlette.responses import StreamingResponse, FileResponse @@ -64,8 +67,18 @@ async def download_chat_as_pdf( pdf = FPDF() pdf.add_page() - STATIC_DIR = "./static" - FONTS_DIR = f"{STATIC_DIR}/fonts" + # When running in docker, workdir is /app/backend, so fonts is in /app/backend/static/fonts + FONTS_DIR = Path("./static/fonts") + + # Non Docker Installation + + # When running using `pip install` the static directory is in the site packages. + if not FONTS_DIR.exists(): + FONTS_DIR = Path(site.getsitepackages()[0]) / "static/fonts" + # When running using `pip install -e .` the static directory is in the site packages. + # This path only works if `open-webui serve` is run from the root of this project. + if not FONTS_DIR.exists(): + FONTS_DIR = Path("./backend/static/fonts") pdf.add_font("NotoSans", "", f"{FONTS_DIR}/NotoSans-Regular.ttf") pdf.add_font("NotoSans", "b", f"{FONTS_DIR}/NotoSans-Bold.ttf") diff --git a/backend/config.py b/backend/config.py index 395720c18..7bf998537 100644 --- a/backend/config.py +++ b/backend/config.py @@ -349,6 +349,12 @@ GOOGLE_OAUTH_SCOPE = PersistentConfig( os.environ.get("GOOGLE_OAUTH_SCOPE", "openid email profile"), ) +GOOGLE_REDIRECT_URI = PersistentConfig( + "GOOGLE_REDIRECT_URI", + "oauth.google.redirect_uri", + os.environ.get("GOOGLE_REDIRECT_URI", ""), +) + MICROSOFT_CLIENT_ID = PersistentConfig( "MICROSOFT_CLIENT_ID", "oauth.microsoft.client_id", @@ -373,6 +379,12 @@ MICROSOFT_OAUTH_SCOPE = PersistentConfig( os.environ.get("MICROSOFT_OAUTH_SCOPE", "openid email profile"), ) +MICROSOFT_REDIRECT_URI = PersistentConfig( + "MICROSOFT_REDIRECT_URI", + "oauth.microsoft.redirect_uri", + os.environ.get("MICROSOFT_REDIRECT_URI", ""), +) + OAUTH_CLIENT_ID = PersistentConfig( "OAUTH_CLIENT_ID", "oauth.oidc.client_id", @@ -391,6 +403,12 @@ OPENID_PROVIDER_URL = PersistentConfig( os.environ.get("OPENID_PROVIDER_URL", ""), ) +OPENID_REDIRECT_URI = PersistentConfig( + "OPENID_REDIRECT_URI", + "oauth.oidc.redirect_uri", + os.environ.get("OPENID_REDIRECT_URI", ""), +) + OAUTH_SCOPES = PersistentConfig( "OAUTH_SCOPES", "oauth.oidc.scopes", @@ -424,6 +442,7 @@ def load_oauth_providers(): "client_secret": GOOGLE_CLIENT_SECRET.value, "server_metadata_url": "https://accounts.google.com/.well-known/openid-configuration", "scope": GOOGLE_OAUTH_SCOPE.value, + "redirect_uri": GOOGLE_REDIRECT_URI.value, } if ( @@ -436,6 +455,7 @@ def load_oauth_providers(): "client_secret": MICROSOFT_CLIENT_SECRET.value, "server_metadata_url": f"https://login.microsoftonline.com/{MICROSOFT_CLIENT_TENANT_ID.value}/v2.0/.well-known/openid-configuration", "scope": MICROSOFT_OAUTH_SCOPE.value, + "redirect_uri": MICROSOFT_REDIRECT_URI.value, } if ( @@ -449,6 +469,7 @@ def load_oauth_providers(): "server_metadata_url": OPENID_PROVIDER_URL.value, "scope": OAUTH_SCOPES.value, "name": OAUTH_PROVIDER_NAME.value, + "redirect_uri": OPENID_REDIRECT_URI.value, } diff --git a/backend/main.py b/backend/main.py index 360f5f415..d654cd30a 100644 --- a/backend/main.py +++ b/backend/main.py @@ -13,8 +13,6 @@ import aiohttp import requests import mimetypes import shutil -import os -import uuid import inspect from fastapi import FastAPI, Request, Depends, status, UploadFile, File, Form @@ -29,7 +27,7 @@ from starlette.middleware.sessions import SessionMiddleware from starlette.responses import StreamingResponse, Response, RedirectResponse -from apps.socket.main import sio, app as socket_app, get_event_emitter, get_event_call +from apps.socket.main import app as socket_app, get_event_emitter, get_event_call from apps.ollama.main import ( app as ollama_app, get_all_models as get_ollama_models, @@ -619,32 +617,15 @@ class ChatCompletionMiddleware(BaseHTTPMiddleware): content={"detail": str(e)}, ) - # Extract valves from the request body - valves = None - if "valves" in body: - valves = body["valves"] - del body["valves"] + metadata = { + "chat_id": body.pop("chat_id", None), + "message_id": body.pop("id", None), + "session_id": body.pop("session_id", None), + "valves": body.pop("valves", None), + } - # Extract session_id, chat_id and message_id from the request body - session_id = None - if "session_id" in body: - session_id = body["session_id"] - del body["session_id"] - chat_id = None - if "chat_id" in body: - chat_id = body["chat_id"] - del body["chat_id"] - message_id = None - if "id" in body: - message_id = body["id"] - del body["id"] - - __event_emitter__ = await get_event_emitter( - {"chat_id": chat_id, "message_id": message_id, "session_id": session_id} - ) - __event_call__ = await get_event_call( - {"chat_id": chat_id, "message_id": message_id, "session_id": session_id} - ) + __event_emitter__ = get_event_emitter(metadata) + __event_call__ = get_event_call(metadata) # Initialize data_items to store additional data to be sent to the client data_items = [] @@ -709,13 +690,7 @@ class ChatCompletionMiddleware(BaseHTTPMiddleware): if len(citations) > 0: data_items.append({"citations": citations}) - body["metadata"] = { - "session_id": session_id, - "chat_id": chat_id, - "message_id": message_id, - "valves": valves, - } - + body["metadata"] = metadata modified_body_bytes = json.dumps(body).encode("utf-8") # Replace the request body with the modified one request._body = modified_body_bytes @@ -1191,13 +1166,13 @@ async def chat_completed(form_data: dict, user=Depends(get_verified_user)): status_code=r.status_code, content=res, ) - except: + except Exception: pass else: pass - __event_emitter__ = await get_event_emitter( + __event_emitter__ = get_event_emitter( { "chat_id": data["chat_id"], "message_id": data["id"], @@ -1205,7 +1180,7 @@ async def chat_completed(form_data: dict, user=Depends(get_verified_user)): } ) - __event_call__ = await get_event_call( + __event_call__ = get_event_call( { "chat_id": data["chat_id"], "message_id": data["id"], @@ -1334,14 +1309,14 @@ async def chat_completed( ) model = app.state.MODELS[model_id] - __event_emitter__ = await get_event_emitter( + __event_emitter__ = get_event_emitter( { "chat_id": data["chat_id"], "message_id": data["id"], "session_id": data["session_id"], } ) - __event_call__ = await get_event_call( + __event_call__ = get_event_call( { "chat_id": data["chat_id"], "message_id": data["id"], @@ -1770,7 +1745,6 @@ class AddPipelineForm(BaseModel): @app.post("/api/pipelines/add") async def add_pipeline(form_data: AddPipelineForm, user=Depends(get_admin_user)): - r = None try: urlIdx = form_data.urlIdx @@ -1813,7 +1787,6 @@ class DeletePipelineForm(BaseModel): @app.delete("/api/pipelines/delete") async def delete_pipeline(form_data: DeletePipelineForm, user=Depends(get_admin_user)): - r = None try: urlIdx = form_data.urlIdx @@ -1891,7 +1864,6 @@ async def get_pipeline_valves( models = await get_all_models() r = None try: - url = openai_app.state.config.OPENAI_API_BASE_URLS[urlIdx] key = openai_app.state.config.OPENAI_API_KEYS[urlIdx] @@ -2143,6 +2115,7 @@ for provider_name, provider_config in OAUTH_PROVIDERS.items(): client_kwargs={ "scope": provider_config["scope"], }, + redirect_uri=provider_config["redirect_uri"], ) # SessionMiddleware is used by authlib for oauth @@ -2160,7 +2133,10 @@ if len(OAUTH_PROVIDERS) > 0: async def oauth_login(provider: str, request: Request): if provider not in OAUTH_PROVIDERS: raise HTTPException(404) - redirect_uri = request.url_for("oauth_callback", provider=provider) + # If the provider has a custom redirect URL, use that, otherwise automatically generate one + redirect_uri = OAUTH_PROVIDERS[provider].get("redirect_uri") or request.url_for( + "oauth_callback", provider=provider + ) return await oauth.create_client(provider).authorize_redirect(request, redirect_uri) diff --git a/backend/utils/misc.py b/backend/utils/misc.py index f44a7ce7a..c4e2eda6f 100644 --- a/backend/utils/misc.py +++ b/backend/utils/misc.py @@ -1,6 +1,5 @@ from pathlib import Path import hashlib -import json import re from datetime import timedelta from typing import Optional, List, Tuple @@ -8,37 +7,39 @@ import uuid import time -def get_last_user_message_item(messages: List[dict]) -> str: +def get_last_user_message_item(messages: List[dict]) -> Optional[dict]: for message in reversed(messages): if message["role"] == "user": return message return None -def get_last_user_message(messages: List[dict]) -> str: - message = get_last_user_message_item(messages) - - if message is not None: - if isinstance(message["content"], list): - for item in message["content"]: - if item["type"] == "text": - return item["text"] +def get_content_from_message(message: dict) -> Optional[str]: + if isinstance(message["content"], list): + for item in message["content"]: + if item["type"] == "text": + return item["text"] + else: return message["content"] return None -def get_last_assistant_message(messages: List[dict]) -> str: +def get_last_user_message(messages: List[dict]) -> Optional[str]: + message = get_last_user_message_item(messages) + if message is None: + return None + + return get_content_from_message(message) + + +def get_last_assistant_message(messages: List[dict]) -> Optional[str]: for message in reversed(messages): if message["role"] == "assistant": - if isinstance(message["content"], list): - for item in message["content"]: - if item["type"] == "text": - return item["text"] - return message["content"] + return get_content_from_message(message) return None -def get_system_message(messages: List[dict]) -> dict: +def get_system_message(messages: List[dict]) -> Optional[dict]: for message in messages: if message["role"] == "system": return message @@ -49,7 +50,7 @@ def remove_system_message(messages: List[dict]) -> List[dict]: return [message for message in messages if message["role"] != "system"] -def pop_system_message(messages: List[dict]) -> Tuple[dict, List[dict]]: +def pop_system_message(messages: List[dict]) -> Tuple[Optional[dict], List[dict]]: return get_system_message(messages), remove_system_message(messages) @@ -87,23 +88,29 @@ def add_or_update_system_message(content: str, messages: List[dict]): return messages -def stream_message_template(model: str, message: str): +def openai_chat_message_template(model: str): return { "id": f"{model}-{str(uuid.uuid4())}", - "object": "chat.completion.chunk", "created": int(time.time()), "model": model, - "choices": [ - { - "index": 0, - "delta": {"content": message}, - "logprobs": None, - "finish_reason": None, - } - ], + "choices": [{"index": 0, "logprobs": None, "finish_reason": None}], } +def openai_chat_chunk_message_template(model: str, message: str): + template = openai_chat_message_template(model) + template["object"] = "chat.completion.chunk" + template["choices"][0]["delta"] = {"content": message} + return template + + +def openai_chat_completion_message_template(model: str, message: str): + template = openai_chat_message_template(model) + template["object"] = "chat.completion" + template["choices"][0]["message"] = {"content": message, "role": "assistant"} + template["choices"][0]["finish_reason"] = "stop" + + def get_gravatar_url(email): # Trim leading and trailing whitespace from # an email address and force all characters @@ -174,7 +181,7 @@ def extract_folders_after_data_docs(path): tags = [] folders = parts[index_docs:-1] - for idx, part in enumerate(folders): + for idx, _ in enumerate(folders): tags.append("/".join(folders[: idx + 1])) return tags @@ -270,11 +277,11 @@ def parse_ollama_modelfile(model_text): value = param_match.group(1) try: - if param_type == int: + if param_type is int: value = int(value) - elif param_type == float: + elif param_type is float: value = float(value) - elif param_type == bool: + elif param_type is bool: value = value.lower() == "true" except Exception as e: print(e) diff --git a/package-lock.json b/package-lock.json index cf04da5c6..c1639ec76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "dayjs": "^1.11.10", "eventsource-parser": "^1.1.2", "file-saver": "^2.0.5", + "fuse.js": "^7.0.0", "highlight.js": "^11.9.0", "i18next": "^23.10.0", "i18next-browser-languagedetector": "^7.2.0", @@ -4820,6 +4821,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fuse.js": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", + "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", + "engines": { + "node": ">=10" + } + }, "node_modules/gc-hook": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.3.1.tgz", diff --git a/package.json b/package.json index f7cc12598..87dcc09ae 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "dayjs": "^1.11.10", "eventsource-parser": "^1.1.2", "file-saver": "^2.0.5", + "fuse.js": "^7.0.0", "highlight.js": "^11.9.0", "i18next": "^23.10.0", "i18next-browser-languagedetector": "^7.2.0", diff --git a/src/app.css b/src/app.css index c3388f1d3..69e107be9 100644 --- a/src/app.css +++ b/src/app.css @@ -154,3 +154,7 @@ input[type='number'] { .tippy-box[data-theme~='dark'] { @apply rounded-lg bg-gray-950 text-xs border border-gray-900 shadow-xl; } + +.password { + -webkit-text-security: disc; +} diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 5ea541c7f..2fa835acd 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -98,6 +98,7 @@ const uploadFileHandler = async (file) => { console.log(file); + // Check if the file is an audio file and transcribe/convert it to text file if (['audio/mpeg', 'audio/wav'].includes(file['type'])) { const res = await transcribeAudio(localStorage.token, file).catch((error) => { @@ -112,40 +113,49 @@ } } - // Upload the file to the server - const uploadedFile = await uploadFile(localStorage.token, file).catch((error) => { - toast.error(error); - return null; - }); + const fileItem = { + type: 'file', + file: '', + id: null, + url: '', + name: file.name, + collection_name: '', + status: '', + size: file.size, + error: '' + }; + files = [...files, fileItem]; - if (uploadedFile) { - const fileItem = { - type: 'file', - file: uploadedFile, - id: uploadedFile.id, - url: `${WEBUI_API_BASE_URL}/files/${uploadedFile.id}`, - name: file.name, - collection_name: '', - status: 'uploaded', - error: '' - }; - files = [...files, fileItem]; + try { + const uploadedFile = await uploadFile(localStorage.token, file); - // TODO: Check if tools & functions have files support to skip this step to delegate file processing - // Default Upload to VectorDB - if ( - SUPPORTED_FILE_TYPE.includes(file['type']) || - SUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1)) - ) { - processFileItem(fileItem); + if (uploadedFile) { + fileItem.status = 'uploaded'; + fileItem.file = uploadedFile; + fileItem.id = uploadedFile.id; + fileItem.url = `${WEBUI_API_BASE_URL}/files/${uploadedFile.id}`; + + // TODO: Check if tools & functions have files support to skip this step to delegate file processing + // Default Upload to VectorDB + if ( + SUPPORTED_FILE_TYPE.includes(file['type']) || + SUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1)) + ) { + processFileItem(fileItem); + } else { + toast.error( + $i18n.t(`Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.`, { + file_type: file['type'] + }) + ); + processFileItem(fileItem); + } } else { - toast.error( - $i18n.t(`Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.`, { - file_type: file['type'] - }) - ); - processFileItem(fileItem); + files = files.filter((item) => item.status !== null); } + } catch (e) { + toast.error(e); + files = files.filter((item) => item.status !== null); } }; @@ -162,7 +172,6 @@ // Remove the failed doc from the files array // files = files.filter((f) => f.id !== fileItem.id); toast.error(e); - fileItem.status = 'processed'; files = files; } diff --git a/src/lib/components/chat/ModelSelector/Selector.svelte b/src/lib/components/chat/ModelSelector/Selector.svelte index e443e1f13..d36f3aa72 100644 --- a/src/lib/components/chat/ModelSelector/Selector.svelte +++ b/src/lib/components/chat/ModelSelector/Selector.svelte @@ -1,6 +1,7 @@ <script lang="ts"> import { DropdownMenu } from 'bits-ui'; import { marked } from 'marked'; + import Fuse from 'fuse.js'; import { flyAndScale } from '$lib/utils/transitions'; import { createEventDispatcher, onMount, getContext, tick } from 'svelte'; @@ -45,17 +46,29 @@ let selectedModelIdx = 0; - $: filteredItems = items.filter( - (item) => - (searchValue - ? item.value.toLowerCase().includes(searchValue.toLowerCase()) || - item.label.toLowerCase().includes(searchValue.toLowerCase()) || - (item.model?.info?.meta?.tags ?? []).some((tag) => - tag.name.toLowerCase().includes(searchValue.toLowerCase()) - ) - : true) && !(item.model?.info?.meta?.hidden ?? false) + const fuse = new Fuse( + items + .filter((item) => !item.model?.info?.meta?.hidden) + .map((item) => { + const _item = { + ...item, + modelName: item.model?.name, + tags: item.model?.info?.meta?.tags?.map((tag) => tag.name).join(' '), + desc: item.model?.info?.meta?.description + }; + return _item; + }), + { + keys: ['value', 'label', 'tags', 'desc', 'modelName'] + } ); + $: filteredItems = searchValue + ? fuse.search(searchValue).map((e) => { + return e.item; + }) + : items.filter((item) => !item.model?.info?.meta?.hidden); + const pullModelHandler = async () => { const sanitizedModelTag = searchValue.trim().replace(/^ollama\s+(run|pull)\s+/, ''); diff --git a/src/lib/components/common/SensitiveInput.svelte b/src/lib/components/common/SensitiveInput.svelte index a1d7b9248..76a626650 100644 --- a/src/lib/components/common/SensitiveInput.svelte +++ b/src/lib/components/common/SensitiveInput.svelte @@ -13,13 +13,13 @@ <div class={outerClassName}> <input - class={inputClassName} + class={`${inputClassName} ${show ? '' : 'password'}`} {placeholder} bind:value required={required && !readOnly} disabled={readOnly} autocomplete="off" - {...{ type: show ? 'text' : 'password' }} + type="text" /> <button class={showButtonClassName} diff --git a/src/lib/i18n/locales/languages.json b/src/lib/i18n/locales/languages.json index 018c6d1ac..48f62fe58 100644 --- a/src/lib/i18n/locales/languages.json +++ b/src/lib/i18n/locales/languages.json @@ -111,6 +111,10 @@ "code": "pt-PT", "title": "Portuguese (Portugal)" }, + { + "code": "ro-RO", + "title": "Romanian (Romania)" + }, { "code": "ru-RU", "title": "Russian (Russia)" diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index ede136e6c..28f5ad6f0 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -1,22 +1,22 @@ { "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 't', 'd', 'u' eller '-1' for ingen utløp.", "(Beta)": "(Beta)", - "(e.g. `sh webui.sh --api --api-auth username_password`)": "", + "(e.g. `sh webui.sh --api --api-auth username_password`)": "(f.eks. `sh webui.sh --api --api-auth brukernavn_passord`)", "(e.g. `sh webui.sh --api`)": "(f.eks. `sh webui.sh --api`)", "(latest)": "(siste)", "{{ models }}": "{{ modeller }}", "{{ owner }}: You cannot delete a base model": "{{ eier }}: Du kan ikke slette en grunnmodell", "{{modelName}} is thinking...": "{{modelName}} tenker...", - "{{user}}'s Chats": "{{user}}'s chatter", + "{{user}}'s Chats": "{{user}}s samtaler", "{{webUIName}} Backend Required": "{{webUIName}} Backend kreves", - "A task model is used when performing tasks such as generating titles for chats and web search queries": "En oppgavemodell brukes når du utfører oppgaver som å generere titler for chatter og websøkeforespørsler", + "A task model is used when performing tasks such as generating titles for chats and web search queries": "En oppgavemodell brukes når du utfører oppgaver som å generere titler for samtaler og websøkeforespørsler", "a user": "en bruker", "About": "Om", "Account": "Konto", - "Account Activation Pending": "", + "Account Activation Pending": "Venter på kontoaktivering", "Accurate information": "Nøyaktig informasjon", - "Actions": "", - "Active Users": "", + "Actions": "Handlinger", + "Active Users": "Aktive brukere", "Add": "Legg til", "Add a model id": "Legg til en modell-ID", "Add a short description about what this model does": "Legg til en kort beskrivelse av hva denne modellen gjør", @@ -28,15 +28,15 @@ "Add Memory": "Legg til minne", "Add message": "Legg til melding", "Add Model": "Legg til modell", - "Add Tag": "", + "Add Tag": "Legg til tag", "Add Tags": "Legg til tagger", "Add User": "Legg til bruker", - "Adjusting these settings will apply changes universally to all users.": "Justering av disse innstillingene vil gjelde universelt for alle brukere.", + "Adjusting these settings will apply changes universally to all users.": "Endringer i disse innstillingene vil gjelde for alle brukere uten unntak.", "admin": "administrator", - "Admin": "", + "Admin": "Administrator", "Admin Panel": "Administrasjonspanel", "Admin Settings": "Administrasjonsinnstillinger", - "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "", + "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratorer har alltid tilgang til alle verktøy, mens brukere må få tildelt verktøy for hver enkelt modell i arbeidsområdet.", "Advanced Parameters": "Avanserte parametere", "Advanced Params": "Avanserte parametere", "all": "alle", @@ -45,8 +45,8 @@ "Allow": "Tillat", "Allow Chat Deletion": "Tillat sletting av chatter", "Allow non-local voices": "Tillat ikke-lokale stemmer", - "Allow User Location": "", - "Allow Voice Interruption in Call": "", + "Allow User Location": "Aktiver stedstjenester", + "Allow Voice Interruption in Call": "Muliggjør stemmeavbrytelse i samtale", "alphanumeric characters and hyphens": "alfanumeriske tegn og bindestreker", "Already have an account?": "Har du allerede en konto?", "an assistant": "en assistent", @@ -56,19 +56,19 @@ "API Key": "API-nøkkel", "API Key created.": "API-nøkkel opprettet.", "API keys": "API-nøkler", - "April": "April", + "April": "april", "Archive": "Arkiv", "Archive All Chats": "Arkiver alle chatter", "Archived Chats": "Arkiverte chatter", "are allowed - Activate this command by typing": "er tillatt - Aktiver denne kommandoen ved å skrive", "Are you sure?": "Er du sikker?", "Attach file": "Legg ved fil", - "Attention to detail": "Oppmerksomhet på detaljer", + "Attention to detail": "Sans for detaljer", "Audio": "Lyd", - "Audio settings updated successfully": "", - "August": "August", + "Audio settings updated successfully": "Lydinnstillingene ble oppdatert", + "August": "august", "Auto-playback response": "Automatisk avspilling av svar", - "AUTOMATIC1111 Api Auth String": "", + "AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api Autentiseringsstreng", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 Grunn-URL", "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Grunn-URL kreves.", "available!": "tilgjengelig!", @@ -76,21 +76,21 @@ "Bad Response": "Dårlig svar", "Banners": "Bannere", "Base Model (From)": "Grunnmodell (Fra)", - "Batch Size (num_batch)": "", + "Batch Size (num_batch)": "Batchstørrelse (num_batch)", "before": "før", "Being lazy": "Er lat", "Brave Search API Key": "Brave Search API-nøkkel", "Bypass SSL verification for Websites": "Omgå SSL-verifisering for nettsteder", - "Call": "", - "Call feature is not supported when using Web STT engine": "", - "Camera": "", + "Call": "Ring", + "Call feature is not supported when using Web STT engine": "Ringefunksjonen støttes ikke når du bruker Web STT-motoren", + "Camera": "Kamera", "Cancel": "Avbryt", "Capabilities": "Muligheter", "Change Password": "Endre passord", "Chat": "Chat", - "Chat Background Image": "", + "Chat Background Image": "Bakgrunnsbilde for chat", "Chat Bubble UI": "Chat-boble UI", - "Chat Controls": "", + "Chat Controls": "Chat-kontroller", "Chat direction": "Chat-retning", "Chat History": "Chat-historikk", "Chat History is off for this browser.": "Chat-historikk er av for denne nettleseren.", @@ -103,37 +103,37 @@ "Chunk Params": "Chunk-parametere", "Chunk Size": "Chunk-størrelse", "Citation": "Sitering", - "Clear memory": "", + "Clear memory": "Tøm minnet", "Click here for help.": "Klikk her for hjelp.", "Click here to": "Klikk her for å", - "Click here to download user import template file.": "", + "Click here to download user import template file.": "Klikk her for å hente ned importmal for brukere.", "Click here to select": "Klikk her for å velge", "Click here to select a csv file.": "Klikk her for å velge en csv-fil.", - "Click here to select a py file.": "", + "Click here to select a py file.": "Klikk her for å velge en py-fil.", "Click here to select documents.": "Klikk her for å velge dokumenter.", "click here.": "klikk her.", "Click on the user role button to change a user's role.": "Klikk på brukerrolle-knappen for å endre en brukers rolle.", - "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "", + "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Skrivetilgang til utklippstavlen ble avslått. Kontroller nettleserinnstillingene for å gi nødvendig tillatelse.", "Clone": "Klon", "Close": "Lukk", - "Code formatted successfully": "", + "Code formatted successfully": "Koden ble formatert", "Collection": "Samling", "ComfyUI": "ComfyUI", "ComfyUI Base URL": "ComfyUI Grunn-URL", "ComfyUI Base URL is required.": "ComfyUI Grunn-URL kreves.", "Command": "Kommando", "Concurrent Requests": "Samtidige forespørsler", - "Confirm": "", + "Confirm": "Bekreft", "Confirm Password": "Bekreft passord", - "Confirm your action": "", + "Confirm your action": "Bekreft din handling", "Connections": "Tilkoblinger", - "Contact Admin for WebUI Access": "", + "Contact Admin for WebUI Access": "Kontakt administrator for WebUI-tilgang", "Content": "Innhold", - "Content Extraction": "", + "Content Extraction": "Uthenting av innhold", "Context Length": "Kontekstlengde", "Continue Response": "Fortsett svar", - "Continue with {{provider}}": "", - "Controls": "", + "Continue with {{provider}}": "Fortsett med {{provider}}", + "Controls": "Kontroller", "Copied shared chat URL to clipboard!": "Kopiert delt chat-URL til utklippstavlen!", "Copy": "Kopier", "Copy last code block": "Kopier siste kodeblokk", @@ -146,16 +146,16 @@ "Create new secret key": "Lag ny hemmelig nøkkel", "Created at": "Opprettet", "Created At": "Opprettet", - "Created by": "", - "CSV Import": "", + "Created by": "Opprettet av", + "CSV Import": "CSV-import", "Current Model": "Nåværende modell", "Current Password": "Nåværende passord", "Custom": "Tilpasset", "Customize models for a specific purpose": "Tilpass modeller for et spesifikt formål", "Dark": "Mørk", - "Dashboard": "", + "Dashboard": "Instrumentbord", "Database": "Database", - "December": "Desember", + "December": "desember", "Default": "Standard", "Default (Automatic1111)": "Standard (Automatic1111)", "Default (SentenceTransformers)": "Standard (SentenceTransformers)", @@ -169,42 +169,42 @@ "Delete All Chats": "Slett alle chatter", "Delete chat": "Slett chat", "Delete Chat": "Slett chat", - "Delete chat?": "", - "Delete Doc": "", - "Delete function?": "", - "Delete prompt?": "", + "Delete chat?": "Slett chat?", + "Delete Doc": "Slett dokument", + "Delete function?": "Slett funksjon?", + "Delete prompt?": "Slett prompt?", "delete this link": "slett denne lenken", - "Delete tool?": "", + "Delete tool?": "Slett verktøy?", "Delete User": "Slett bruker", "Deleted {{deleteModelTag}}": "Slettet {{deleteModelTag}}", "Deleted {{name}}": "Slettet {{name}}", "Description": "Beskrivelse", "Didn't fully follow instructions": "Fulgte ikke instruksjonene fullt ut", - "Disabled": "", - "Discover a function": "", + "Disabled": "Deaktivert", + "Discover a function": "Oppdag en funksjon", "Discover a model": "Oppdag en modell", "Discover a prompt": "Oppdag en prompt", - "Discover a tool": "", - "Discover, download, and explore custom functions": "", + "Discover a tool": "Oppdag et verktøy", + "Discover, download, and explore custom functions": "Oppdag, last ned og utforsk egendefinerte funksjoner", "Discover, download, and explore custom prompts": "Oppdag, last ned og utforsk egendefinerte prompts", - "Discover, download, and explore custom tools": "", + "Discover, download, and explore custom tools": "Oppdag, last ned og utforsk egendefinerte verktøy", "Discover, download, and explore model presets": "Oppdag, last ned og utforsk modellforhåndsinnstillinger", - "Dismissible": "", - "Display Emoji in Call": "", + "Dismissible": "Kan lukkes", + "Display Emoji in Call": "Vis emoji i samtale", "Display the username instead of You in the Chat": "Vis brukernavnet i stedet for Du i chatten", - "Do not install functions from sources you do not fully trust.": "", - "Do not install tools from sources you do not fully trust.": "", + "Do not install functions from sources you do not fully trust.": "Ikke installer funksjoner fra kilder du ikke fullt ut stoler på.", + "Do not install tools from sources you do not fully trust.": "Ikke installer verktøy fra kilder du ikke fullt ut stoler på.", "Document": "Dokument", "Document Settings": "Dokumentinnstillinger", "Documentation": "Dokumentasjon", "Documents": "Dokumenter", - "does not make any external connections, and your data stays securely on your locally hosted server.": "lager ingen eksterne tilkoblinger, og dataene dine forblir trygt på din lokalt hostede server.", + "does not make any external connections, and your data stays securely on your locally hosted server.": "har ingen tilkobling til eksterne tjenester, og dataene dine blir værende sikkert på din lokale tjener.", "Don't Allow": "Ikke tillat", "Don't have an account?": "Har du ikke en konto?", - "don't install random functions from sources you don't trust.": "", - "don't install random tools from sources you don't trust.": "", + "don't install random functions from sources you don't trust.": "ikke installer tilfeldige funksjoner fra kilder du ikke stoler på.", + "don't install random tools from sources you don't trust.": "ikke installer tilfeldige verktøy fra kilder du ikke stoler på.", "Don't like the style": "Liker ikke stilen", - "Done": "", + "Done": "Ferdig", "Download": "Last ned", "Download canceled": "Nedlasting avbrutt", "Download Database": "Last ned database", @@ -212,9 +212,9 @@ "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "f.eks. '30s','10m'. Gyldige tidsenheter er 's', 'm', 't'.", "Edit": "Rediger", "Edit Doc": "Rediger dokument", - "Edit Memory": "", + "Edit Memory": "Rediger minne", "Edit User": "Rediger bruker", - "ElevenLabs": "", + "ElevenLabs": "ElevenLabs", "Email": "E-post", "Embedding Batch Size": "Batch-størrelse for embedding", "Embedding Model": "Embedding-modell", @@ -224,12 +224,12 @@ "Enable Community Sharing": "Aktiver deling i fellesskap", "Enable New Sign Ups": "Aktiver nye registreringer", "Enable Web Search": "Aktiver websøk", - "Enabled": "", - "Engine": "", + "Enabled": "Aktivert", + "Engine": "Motor", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Sørg for at CSV-filen din inkluderer 4 kolonner i denne rekkefølgen: Navn, E-post, Passord, Rolle.", "Enter {{role}} message here": "Skriv inn {{role}} melding her", - "Enter a detail about yourself for your LLMs to recall": "Skriv inn en detalj om deg selv som LLM-ene dine kan huske", - "Enter api auth string (e.g. username:password)": "", + "Enter a detail about yourself for your LLMs to recall": "Skriv inn en detalj om deg selv som språkmodellene dine kan huske", + "Enter api auth string (e.g. username:password)": "Skriv inn api-autentiseringsstreng (f.eks. brukernavn:passord)", "Enter Brave Search API Key": "Skriv inn Brave Search API-nøkkel", "Enter Chunk Overlap": "Skriv inn Chunk Overlap", "Enter Chunk Size": "Skriv inn Chunk-størrelse", @@ -243,18 +243,18 @@ "Enter Score": "Skriv inn poengsum", "Enter Searxng Query URL": "Skriv inn Searxng forespørsels-URL", "Enter Serper API Key": "Skriv inn Serper API-nøkkel", - "Enter Serply API Key": "", + "Enter Serply API Key": "Skriv inn Serply API-nøkkel", "Enter Serpstack API Key": "Skriv inn Serpstack API-nøkkel", "Enter stop sequence": "Skriv inn stoppsekvens", - "Enter system prompt": "", - "Enter Tavily API Key": "", - "Enter Tika Server URL": "", + "Enter system prompt": "Skriv inn systemprompt", + "Enter Tavily API Key": "Skriv inn Tavily API-nøkkel", + "Enter Tika Server URL": "Skriv inn Tika Server-URL", "Enter Top K": "Skriv inn Top K", "Enter URL (e.g. http://127.0.0.1:7860/)": "Skriv inn URL (f.eks. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Skriv inn URL (f.eks. http://localhost:11434)", "Enter Your Email": "Skriv inn din e-post", "Enter Your Full Name": "Skriv inn ditt fulle navn", - "Enter your message": "", + "Enter your message": "Skriv inn meldingen din", "Enter Your Password": "Skriv inn ditt passord", "Enter Your Role": "Skriv inn din rolle", "Error": "Feil", @@ -264,50 +264,50 @@ "Export chat (.json)": "Eksporter chat (.json)", "Export Chats": "Eksporter chatter", "Export Documents Mapping": "Eksporter dokumentkartlegging", - "Export Functions": "", - "Export LiteLLM config.yaml": "", + "Export Functions": "Eksporter funksjoner", + "Export LiteLLM config.yaml": "Eksporter LiteLLM config.yaml", "Export Models": "Eksporter modeller", "Export Prompts": "Eksporter prompts", - "Export Tools": "", - "External Models": "", + "Export Tools": "Eksporter verktøy", + "External Models": "Eksterne modeller", "Failed to create API Key.": "Kunne ikke opprette API-nøkkel.", "Failed to read clipboard contents": "Kunne ikke lese utklippstavleinnhold", "Failed to update settings": "Kunne ikke oppdatere innstillinger", - "February": "Februar", - "Feel free to add specific details": "Føl deg fri til å legge til spesifikke detaljer", - "File": "", + "February": "februar", + "Feel free to add specific details": "Legg gjerne til spesifikke detaljer", + "File": "Fil", "File Mode": "Filmodus", "File not found.": "Fil ikke funnet.", - "Files": "", - "Filter is now globally disabled": "", - "Filter is now globally enabled": "", - "Filters": "", + "Files": "Filer", + "Filter is now globally disabled": "Filteret er nå deaktivert på systemnivå", + "Filter is now globally enabled": "Filteret er nå aktivert på systemnivå", + "Filters": "Filtere", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Fingeravtrykk-spoofing oppdaget: Kan ikke bruke initialer som avatar. Bruker standard profilbilde.", - "Fluidly stream large external response chunks": "Strøm store eksterne svarchunks flytende", + "Fluidly stream large external response chunks": "Flytende strømming av store eksterne responsbiter", "Focus chat input": "Fokuser chatinput", "Followed instructions perfectly": "Fulgte instruksjonene perfekt", - "Form": "", + "Form": "Form", "Format your variables using square brackets like this:": "Formatér variablene dine med hakeparenteser som dette:", "Frequency Penalty": "Frekvensstraff", - "Function created successfully": "", - "Function deleted successfully": "", - "Function Description (e.g. A filter to remove profanity from text)": "", - "Function ID (e.g. my_filter)": "", - "Function is now globally disabled": "", - "Function is now globally enabled": "", - "Function Name (e.g. My Filter)": "", - "Function updated successfully": "", - "Functions": "", - "Functions allow arbitrary code execution": "", - "Functions allow arbitrary code execution.": "", - "Functions imported successfully": "", + "Function created successfully": "Funksjonen ble opprettet", + "Function deleted successfully": "Funksjonen ble slettet", + "Function Description (e.g. A filter to remove profanity from text)": "Funksjonsbeskrivelse (f.eks. Et filter for å fjerne banning fra tekst)", + "Function ID (e.g. my_filter)": "Funksjons-id (f.eks. my_filter)", + "Function is now globally disabled": "Funksjonen er nå deaktivert på systemnivå", + "Function is now globally enabled": "Funksjonen er nå aktivert på systemnivå", + "Function Name (e.g. My Filter)": "Funksjonsnavn (f.eks. Mitt Filter)", + "Function updated successfully": "Funksjonen ble oppdatert", + "Functions": "Funksjoner", + "Functions allow arbitrary code execution": "Funksjoner tillater vilkårlig kodeeksekvering", + "Functions allow arbitrary code execution.": "Funksjoner tillater vilkårlig kodeeksekvering.", + "Functions imported successfully": "Funksjoner importert", "General": "Generelt", "General Settings": "Generelle innstillinger", - "Generate Image": "", + "Generate Image": "Generer bilde", "Generating search query": "Genererer søkeforespørsel", "Generation Info": "Generasjonsinfo", - "Get up and running with": "", - "Global": "", + "Get up and running with": "Kom i gang med", + "Global": "Systemnivå", "Good Response": "Godt svar", "Google PSE API Key": "Google PSE API-nøkkel", "Google PSE Engine Id": "Google PSE Motor-ID", @@ -316,65 +316,65 @@ "Hello, {{name}}": "Hei, {{name}}", "Help": "Hjelp", "Hide": "Skjul", - "Hide Model": "", + "Hide Model": "Skjul modell", "How can I help you today?": "Hvordan kan jeg hjelpe deg i dag?", "Hybrid Search": "Hybrid-søk", - "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "", + "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Jeg bekrefter at jeg har lest og forstår konsekvensene av min handling. Jeg er klar over risikoen forbundet med å kjøre vilkårlig kode, og jeg har verifisert kildens pålitelighet.", "Image Generation (Experimental)": "Bildegenerering (Eksperimentell)", "Image Generation Engine": "Bildegenereringsmotor", "Image Settings": "Bildeinnstillinger", "Images": "Bilder", "Import Chats": "Importer chatter", "Import Documents Mapping": "Importer dokumentkartlegging", - "Import Functions": "", + "Import Functions": "Funksjoner", "Import Models": "Importer modeller", "Import Prompts": "Importer prompts", - "Import Tools": "", - "Include `--api-auth` flag when running stable-diffusion-webui": "", + "Import Tools": "Importer verktøy", + "Include `--api-auth` flag when running stable-diffusion-webui": "Inkluder `--api-auth`-flagget når du kjører stable-diffusion-webui", "Include `--api` flag when running stable-diffusion-webui": "Inkluder `--api`-flagget når du kjører stable-diffusion-webui", "Info": "Info", "Input commands": "Inntast kommandoer", "Install from Github URL": "Installer fra Github-URL", - "Instant Auto-Send After Voice Transcription": "", + "Instant Auto-Send After Voice Transcription": "Direkte autosending etter stemmegjenkjenning", "Interface": "Grensesnitt", "Invalid Tag": "Ugyldig tag", - "January": "Januar", + "January": "januar", "join our Discord for help.": "bli med i vår Discord for hjelp.", "JSON": "JSON", "JSON Preview": "JSON-forhåndsvisning", - "July": "Juli", - "June": "Juni", + "July": "juli", + "June": "juni", "JWT Expiration": "JWT-utløp", "JWT Token": "JWT-token", "Keep Alive": "Hold i live", "Keyboard shortcuts": "Hurtigtaster", - "Knowledge": "", + "Knowledge": "Kunnskap", "Language": "Språk", - "large language models, locally.": "", + "large language models, locally.": "Store språkmodeller, lokalt.", "Last Active": "Sist aktiv", - "Last Modified": "", + "Last Modified": "Sist endret", "Light": "Lys", - "Listening...": "", - "LLMs can make mistakes. Verify important information.": "LLM-er kan gjøre feil. Verifiser viktig informasjon.", - "Local Models": "", + "Listening...": "Lytter ...", + "LLMs can make mistakes. Verify important information.": "Språkmodeller kan gjøre feil. Verifiser viktige opplysninger.", + "Local Models": "Lokale modeller", "LTR": "LTR", "Made by OpenWebUI Community": "Laget av OpenWebUI-fellesskapet", "Make sure to enclose them with": "Sørg for å omslutte dem med", - "Manage": "", + "Manage": "Administrer", "Manage Models": "Administrer modeller", "Manage Ollama Models": "Administrer Ollama-modeller", "Manage Pipelines": "Administrer pipelines", - "Manage Valves": "", - "March": "Mars", + "Manage Valves": "Administrer valves", + "March": "mars", "Max Tokens (num_predict)": "Maks antall tokens (num_predict)", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimalt 3 modeller kan lastes ned samtidig. Vennligst prøv igjen senere.", - "May": "Mai", - "Memories accessible by LLMs will be shown here.": "Minner tilgjengelige for LLM-er vil vises her.", + "May": "mai", + "Memories accessible by LLMs will be shown here.": "Minner tilgjengelige for språkmodeller vil vises her.", "Memory": "Minne", - "Memory added successfully": "", - "Memory cleared successfully": "", - "Memory deleted successfully": "", - "Memory updated successfully": "", + "Memory added successfully": "Minne lagt til", + "Memory cleared successfully": "Minne tømt", + "Memory deleted successfully": "Minne slettet", + "Memory updated successfully": "Minne oppdatert", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Meldinger du sender etter at du har opprettet lenken din vil ikke bli delt. Brukere med URL-en vil kunne se den delte chatten.", "Minimum Score": "Minimum poengsum", "Mirostat": "Mirostat", @@ -382,18 +382,18 @@ "Mirostat Tau": "Mirostat Tau", "MMMM DD, YYYY": "MMMM DD, YYYY", "MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm", - "MMMM DD, YYYY hh:mm:ss A": "", + "MMMM DD, YYYY hh:mm:ss A": "MMMM DD, YYYY hh:mm:ss A", "Model '{{modelName}}' has been successfully downloaded.": "Modellen '{{modelName}}' er lastet ned.", "Model '{{modelTag}}' is already in queue for downloading.": "Modellen '{{modelTag}}' er allerede i nedlastingskøen.", "Model {{modelId}} not found": "Modellen {{modelId}} ble ikke funnet", "Model {{modelName}} is not vision capable": "Modellen {{modelName}} er ikke visjonsdyktig", "Model {{name}} is now {{status}}": "Modellen {{name}} er nå {{status}}", - "Model created successfully!": "", + "Model created successfully!": "Modellen ble opprettet!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Modellens filsystemsti oppdaget. Modellens kortnavn er påkrevd for oppdatering, kan ikke fortsette.", "Model ID": "Modell-ID", "Model not selected": "Modell ikke valgt", "Model Params": "Modellparametere", - "Model updated successfully": "", + "Model updated successfully": "Modell oppdatert", "Model Whitelisting": "Modell hvitlisting", "Model(s) Whitelisted": "Modell(er) hvitlistet", "Modelfile Content": "Modellfilinnhold", @@ -404,39 +404,39 @@ "Name your model": "Gi modellen din et navn", "New Chat": "Ny chat", "New Password": "Nytt passord", - "No content to speak": "", - "No documents found": "", - "No file selected": "", + "No content to speak": "Mangler innhold for tale", + "No documents found": "Ingen dokumenter funnet", + "No file selected": "Ingen fil valgt", "No results found": "Ingen resultater funnet", "No search query generated": "Ingen søkeforespørsel generert", "No source available": "Ingen kilde tilgjengelig", - "No valves to update": "", + "No valves to update": "Ingen ventiler å oppdatere", "None": "Ingen", - "Not factually correct": "Ikke faktuelt korrekt", + "Not factually correct": "Uriktig informasjon", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Merk: Hvis du setter en minimums poengsum, vil søket kun returnere dokumenter med en poengsum som er større enn eller lik minimums poengsummen.", "Notifications": "Varsler", - "November": "November", + "November": "november", "num_thread (Ollama)": "num_thread (Ollama)", - "OAuth ID": "", - "October": "Oktober", + "OAuth ID": "OAuth-ID", + "October": "oktober", "Off": "Av", "Okay, Let's Go!": "Ok, la oss gå!", "OLED Dark": "OLED mørk", "Ollama": "Ollama", "Ollama API": "Ollama API", "Ollama API disabled": "Ollama API deaktivert", - "Ollama API is disabled": "", + "Ollama API is disabled": "Ollama API er deaktivert", "Ollama Version": "Ollama versjon", "On": "På", "Only": "Kun", "Only alphanumeric characters and hyphens are allowed in the command string.": "Kun alfanumeriske tegn og bindestreker er tillatt i kommandostrengen.", "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Oops! Hold deg fast! Filene dine er fortsatt i prosesseringsovnen. Vi tilbereder dem til perfeksjon. Vennligst vær tålmodig, vi gir beskjed når de er klare.", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Ser ut som URL-en er ugyldig. Vennligst dobbeltsjekk og prøv igjen.", - "Oops! There was an error in the previous response. Please try again or contact admin.": "", + "Oops! There was an error in the previous response. Please try again or contact admin.": "Oops! Det oppstod en feil i forrige svar. Prøv igjen eller kontakt administrator", "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Du bruker en ikke-støttet metode (kun frontend). Vennligst server WebUI fra backend.", "Open AI (Dall-E)": "Open AI (Dall-E)", "Open new chat": "Åpne ny chat", - "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI-versjon (v{{OPEN_WEBUI_VERSION}}) er lavere enn nødvendig versjon (v{{REQUIRED_VERSION}})", "OpenAI": "OpenAI", "OpenAI API": "OpenAI API", "OpenAI API Config": "OpenAI API-konfigurasjon", @@ -448,20 +448,20 @@ "PDF document (.pdf)": "PDF-dokument (.pdf)", "PDF Extract Images (OCR)": "PDF-ekstraktbilder (OCR)", "pending": "avventer", - "Permission denied when accessing media devices": "", - "Permission denied when accessing microphone": "", + "Permission denied when accessing media devices": "Tillatelse nektet ved tilgang til medieenheter", + "Permission denied when accessing microphone": "Tillatelse nektet ved tilgang til mikrofon", "Permission denied when accessing microphone: {{error}}": "Tillatelse nektet ved tilgang til mikrofon: {{error}}", "Personalization": "Personalisering", - "Pin": "", - "Pinned": "", - "Pipeline deleted successfully": "", - "Pipeline downloaded successfully": "", + "Pin": "Fest", + "Pinned": "Festet", + "Pipeline deleted successfully": "Pipeline slettet", + "Pipeline downloaded successfully": "Pipeline lastet ned", "Pipelines": "Pipelines", - "Pipelines Not Detected": "", + "Pipelines Not Detected": "Pipelines ikke oppdaget", "Pipelines Valves": "Pipeline-ventiler", "Plain text (.txt)": "Ren tekst (.txt)", "Playground": "Lekeplass", - "Please carefully review the following warnings:": "", + "Please carefully review the following warnings:": "Vær vennlig å lese gjennom følgende advarsler grundig:", "Positive attitude": "Positiv holdning", "Previous 30 days": "Forrige 30 dager", "Previous 7 days": "Forrige 7 dager", @@ -478,7 +478,7 @@ "Read Aloud": "Les høyt", "Record voice": "Ta opp stemme", "Redirecting you to OpenWebUI Community": "Omdirigerer deg til OpenWebUI-fellesskapet", - "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Omtal deg selv som \"Bruker\" (f.eks. \"Bruker lærer spansk\")", "Refused when it shouldn't have": "Avvist når det ikke skulle ha vært det", "Regenerate": "Regenerer", "Release Notes": "Utgivelsesnotater", @@ -490,21 +490,21 @@ "Reranking Model": "Reranking-modell", "Reranking model disabled": "Reranking-modell deaktivert", "Reranking model set to \"{{reranking_model}}\"": "Reranking-modell satt til \"{{reranking_model}}\"", - "Reset": "", - "Reset Upload Directory": "", + "Reset": "Tilbakestill", + "Reset Upload Directory": "Tilbakestill opplastingskatalog", "Reset Vector Storage": "Tilbakestill vektorlagring", "Response AutoCopy to Clipboard": "Respons auto-kopi til utklippstavle", - "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "", + "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Respons-varsler kan ikke aktiveres da nettstedsrettighetene er nektet. Vennligst se nettleserinnstillingene dine for å gi nødvendig tilgang.", "Role": "Rolle", "Rosé Pine": "Rosé Pine", "Rosé Pine Dawn": "Rosé Pine Dawn", "RTL": "RTL", - "Run Llama 2, Code Llama, and other models. Customize and create your own.": "", - "Running": "", + "Run Llama 2, Code Llama, and other models. Customize and create your own.": "Kjør Llama 2, Code Llama og andre modeller. Tilpass og lag egne versjoner.", + "Running": "Kjører", "Save": "Lagre", "Save & Create": "Lagre og opprett", "Save & Update": "Lagre og oppdater", - "Save Tag": "", + "Save Tag": "Lagre tag", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Lagring av chatlogger direkte til nettleserens lagring støttes ikke lenger. Vennligst ta et øyeblikk for å laste ned og slette chatloggene dine ved å klikke på knappen nedenfor. Ikke bekymre deg, du kan enkelt re-importere chatloggene dine til backend via", "Scan": "Skann", "Scan complete!": "Skanning fullført!", @@ -513,39 +513,39 @@ "Search a model": "Søk en modell", "Search Chats": "Søk chatter", "Search Documents": "Søk dokumenter", - "Search Functions": "", + "Search Functions": "Søk funksjoner", "Search Models": "Søk modeller", "Search Prompts": "Søk prompter", - "Search Query Generation Prompt": "", - "Search Query Generation Prompt Length Threshold": "", + "Search Query Generation Prompt": "Instruksjon for å lage søkeord", + "Search Query Generation Prompt Length Threshold": "Lengdegrense for prompt til generering av søkeforespørsel", "Search Result Count": "Antall søkeresultater", - "Search Tools": "", + "Search Tools": "Søkeverktøy", "Searched {{count}} sites_one": "Søkte på {{count}} side", "Searched {{count}} sites_other": "Søkte på {{count}} sider", - "Searching \"{{searchQuery}}\"": "", + "Searching \"{{searchQuery}}\"": "Søker etter \"{{searchQuery}}\"", "Searxng Query URL": "Searxng forespørsels-URL", "See readme.md for instructions": "Se readme.md for instruksjoner", "See what's new": "Se hva som er nytt", "Seed": "Seed", "Select a base model": "Velg en grunnmodell", - "Select a engine": "", - "Select a function": "", + "Select a engine": "Velg en motor", + "Select a function": "Velg en funksjon", "Select a mode": "Velg en modus", "Select a model": "Velg en modell", "Select a pipeline": "Velg en pipeline", "Select a pipeline url": "Velg en pipeline-URL", - "Select a tool": "", + "Select a tool": "Velg et verktøy", "Select an Ollama instance": "Velg en Ollama-instans", - "Select Documents": "", + "Select Documents": "Velg dokumenter", "Select model": "Velg modell", - "Select only one model to call": "", + "Select only one model to call": "Velg kun én modell å kalle", "Selected model(s) do not support image inputs": "Valgte modell(er) støtter ikke bildeforslag", "Send": "Send", "Send a Message": "Send en melding", "Send message": "Send melding", - "September": "September", + "September": "september", "Serper API Key": "Serper API-nøkkel", - "Serply API Key": "", + "Serply API Key": "Serply API-nøkkel", "Serpstack API Key": "Serpstack API-nøkkel", "Server connection verified": "Servertilkobling bekreftet", "Set as default": "Sett som standard", @@ -565,9 +565,9 @@ "short-summary": "kort sammendrag", "Show": "Vis", "Show Admin Details in Account Pending Overlay": "Vis administratordetaljer i ventende kontooverlay", - "Show Model": "", + "Show Model": "Vis modell", "Show shortcuts": "Vis snarveier", - "Show your support!": "", + "Show your support!": "Vis din støtte!", "Showcased creativity": "Vist frem kreativitet", "Sign in": "Logg inn", "Sign Out": "Logg ut", @@ -577,20 +577,20 @@ "Speech recognition error: {{error}}": "Feil ved talegjenkjenning: {{error}}", "Speech-to-Text Engine": "Tale-til-tekst-motor", "Stop Sequence": "Stoppsekvens", - "STT Model": "", + "STT Model": "STT-modell", "STT Settings": "STT-innstillinger", "Submit": "Send inn", "Subtitle (e.g. about the Roman Empire)": "Undertittel (f.eks. om Romerriket)", "Success": "Suksess", "Successfully updated.": "Oppdatert.", "Suggested": "Foreslått", - "Support": "", - "Support this plugin:": "", + "Support": "Bidra", + "Support this plugin:": "Bidra til denne utvidelsen:", "System": "System", "System Prompt": "Systemprompt", "Tags": "Tagger", - "Tap to interrupt": "", - "Tavily API Key": "", + "Tap to interrupt": "Berør for å avbryte", + "Tavily API Key": "Tavily API-nøkkel", "Tell us more:": "Fortell oss mer:", "Temperature": "Temperatur", "Template": "Mal", @@ -598,68 +598,68 @@ "Text-to-Speech Engine": "Tekst-til-tale-motor", "Tfs Z": "Tfs Z", "Thanks for your feedback!": "Takk for tilbakemeldingen!", - "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Utviklerne bak denne utvidelsen er lidenskapelige frivillige fra fellesskapet. Hvis du finner denne utvidelsen nyttig, vennligst vurder å bidra til utviklingen.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Poengsummen skal være en verdi mellom 0,0 (0%) og 1,0 (100%).", "Theme": "Tema", - "Thinking...": "", - "This action cannot be undone. Do you wish to continue?": "", + "Thinking...": "Tenker ...", + "This action cannot be undone. Do you wish to continue?": "Denne handlingen kan ikke angres. Ønsker du å fortsette?", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dette sikrer at dine verdifulle samtaler er trygt lagret i backend-databasen din. Takk!", - "This is an experimental feature, it may not function as expected and is subject to change at any time.": "", + "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Dette er en eksperimentell funksjon, det er mulig den ikke fungerer som forventet og kan endres når som helst.", "This setting does not sync across browsers or devices.": "Denne innstillingen synkroniseres ikke mellom nettlesere eller enheter.", - "This will delete": "", + "This will delete": "Dette vil slette", "Thorough explanation": "Grundig forklaring", - "Tika": "", - "Tika Server URL required.": "", + "Tika": "Tika", + "Tika Server URL required.": "Tika Server-URL kreves.", "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Tips: Oppdater flere variabelplasser etter hverandre ved å trykke på tab-tasten i chatinputen etter hver erstatning.", "Title": "Tittel", - "Title (e.g. Tell me a fun fact)": "Tittel (f.eks. Fortell meg en morsom fakta)", + "Title (e.g. Tell me a fun fact)": "Tittel (f.eks. Fortell meg et morsomt faktum)", "Title Auto-Generation": "Automatisk tittelgenerering", "Title cannot be an empty string.": "Tittelen kan ikke være en tom streng.", "Title Generation Prompt": "Tittelgenereringsprompt", "to": "til", "To access the available model names for downloading,": "For å få tilgang til tilgjengelige modelnavn for nedlasting,", "To access the GGUF models available for downloading,": "For å få tilgang til GGUF-modellene som er tilgjengelige for nedlasting,", - "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "", - "To add documents here, upload them to the \"Documents\" workspace first.": "", + "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "For å få tilgang til WebUI, vennligst kontakt administratoren. Administratorer kan administrere brukerstatus fra Admin-panelet.", + "To add documents here, upload them to the \"Documents\" workspace first.": "For å legge til dokumenter her, last dem opp til \"Dokumenter\"-arbeidsområdet først.", "to chat input.": "til chatinput.", - "To select actions here, add them to the \"Functions\" workspace first.": "", - "To select filters here, add them to the \"Functions\" workspace first.": "", - "To select toolkits here, add them to the \"Tools\" workspace first.": "", + "To select actions here, add them to the \"Functions\" workspace first.": "For å velge handlinger her, legg dem til i \"Funksjoner\"-arbeidsområdet først.", + "To select filters here, add them to the \"Functions\" workspace first.": "For å velge filtre her, legg dem til i \"Funksjoner\"-arbeidsområdet først.", + "To select toolkits here, add them to the \"Tools\" workspace first.": "For å velge verktøysett her, legg dem til i \"Verktøy\"-arbeidsområdet først.", "Today": "I dag", "Toggle settings": "Veksle innstillinger", "Toggle sidebar": "Veksle sidefelt", - "Tokens To Keep On Context Refresh (num_keep)": "", - "Tool created successfully": "", - "Tool deleted successfully": "", - "Tool imported successfully": "", - "Tool updated successfully": "", - "Toolkit Description (e.g. A toolkit for performing various operations)": "", - "Toolkit ID (e.g. my_toolkit)": "", - "Toolkit Name (e.g. My ToolKit)": "", - "Tools": "", - "Tools are a function calling system with arbitrary code execution": "", - "Tools have a function calling system that allows arbitrary code execution": "", - "Tools have a function calling system that allows arbitrary code execution.": "", + "Tokens To Keep On Context Refresh (num_keep)": "Tokens å beholde ved kontekstoppdatering (num_keep)", + "Tool created successfully": "Verktøy opprettet", + "Tool deleted successfully": "Verktøy slettet", + "Tool imported successfully": "Verktøy importert", + "Tool updated successfully": "Verktøy oppdatert", + "Toolkit Description (e.g. A toolkit for performing various operations)": "Verktøysettbeskrivelse (f.eks. Et verktøysett for å utføre ulike operasjoner)", + "Toolkit ID (e.g. my_toolkit)": "Verktøysett-ID (f.eks. my_toolkit)", + "Toolkit Name (e.g. My ToolKit)": "Verktøysett-navn (f.eks. Mitt verktøysett)", + "Tools": "Verktøy", + "Tools are a function calling system with arbitrary code execution": "Vertkøy er et funksjonskallssystem med vilkårlig kodeeksekvering", + "Tools have a function calling system that allows arbitrary code execution": "Verktøy har et funksjonskallssystem som tillater vilkårlig kodeeksekvering", + "Tools have a function calling system that allows arbitrary code execution.": "Verktøy har et funksjonskallssystem som tillater vilkårlig kodeeksekvering.", "Top K": "Top K", "Top P": "Top P", "Trouble accessing Ollama?": "Problemer med tilgang til Ollama?", - "TTS Model": "", + "TTS Model": "TTS-modell", "TTS Settings": "TTS-innstillinger", - "TTS Voice": "", + "TTS Voice": "TTS-stemme", "Type": "Type", "Type Hugging Face Resolve (Download) URL": "Skriv inn Hugging Face Resolve (nedlasting) URL", "Uh-oh! There was an issue connecting to {{provider}}.": "Oops! Det oppsto et problem med tilkoblingen til {{provider}}.", - "UI": "", - "Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.": "", - "Unpin": "", - "Update": "", + "UI": "UI", + "Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.": "Ukjent filtype '{{file_type}}'. Fortsetter likevel med filopplastingen.", + "Unpin": "Løsne", + "Update": "Oppdater", "Update and Copy Link": "Oppdater og kopier lenke", "Update password": "Oppdater passord", - "Updated at": "", - "Upload": "", + "Updated at": "Oppdatert", + "Upload": "Last opp", "Upload a GGUF model": "Last opp en GGUF-modell", "Upload Files": "Last opp filer", - "Upload Pipeline": "", + "Upload Pipeline": "Last opp pipeline", "Upload Progress": "Opplastingsfremdrift", "URL Mode": "URL-modus", "Use '#' in the prompt input to load and select your documents.": "Bruk '#' i prompt-input for å laste og velge dokumentene dine.", @@ -668,23 +668,23 @@ "use_mlock (Ollama)": "use_mlock (Ollama)", "use_mmap (Ollama)": "use_mmap (Ollama)", "user": "bruker", - "User location successfully retrieved.": "", + "User location successfully retrieved.": "Brukerlokasjon hentet", "User Permissions": "Brukertillatelser", "Users": "Brukere", "Utilize": "Utnytt", "Valid time units:": "Gyldige tidsenheter:", - "Valves": "", - "Valves updated": "", - "Valves updated successfully": "", + "Valves": "Ventiler", + "Valves updated": "Ventiler oppdatert", + "Valves updated successfully": "Ventiler oppdatert", "variable": "variabel", "variable to have them replaced with clipboard content.": "variabel for å få dem erstattet med utklippstavleinnhold.", "Version": "Versjon", - "Voice": "", + "Voice": "Stemme", "Warning": "Advarsel", - "Warning:": "", + "Warning:": "Advarsel:", "Warning: If you update or change your embedding model, you will need to re-import all documents.": "Advarsel: Hvis du oppdaterer eller endrer embedding-modellen din, må du re-importere alle dokumenter.", "Web": "Web", - "Web API": "", + "Web API": "Web-API", "Web Loader Settings": "Web-lasterinnstillinger", "Web Params": "Web-parametere", "Web Search": "Websøk", @@ -694,21 +694,21 @@ "WebUI will make requests to": "WebUI vil gjøre forespørsler til", "What’s New in": "Hva er nytt i", "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Når historikken er slått av, vil nye chatter på denne nettleseren ikke vises i historikken din på noen av enhetene dine.", - "Whisper (Local)": "", - "Widescreen Mode": "", + "Whisper (Local)": "Whisper (Lokal)", + "Widescreen Mode": "Bredskjermmodus", "Workspace": "Arbeidsområde", "Write a prompt suggestion (e.g. Who are you?)": "Skriv et promptforslag (f.eks. Hvem er du?)", "Write a summary in 50 words that summarizes [topic or keyword].": "Skriv et sammendrag på 50 ord som oppsummerer [emne eller nøkkelord].", "Yesterday": "I går", "You": "Du", - "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "", + "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Du kan tilpasse interaksjonene dine med språkmodeller ved å legge til minner gjennom 'Administrer'-knappen nedenfor, slik at de blir mer hjelpsomme og tilpasset deg.", "You cannot clone a base model": "Du kan ikke klone en grunnmodell", "You have no archived conversations.": "Du har ingen arkiverte samtaler.", "You have shared this chat": "Du har delt denne chatten", "You're a helpful assistant.": "Du er en hjelpsom assistent.", "You're now logged in.": "Du er nå logget inn.", - "Your account status is currently pending activation.": "", - "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "", + "Your account status is currently pending activation.": "Din konto venter for øyeblikket på aktivering.", + "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Hele beløpet du gir går uavkortet til utvikleren av tillegget; Open WebUI tar ikke noe av dette. Den valgte finansieringsplattformen kan derimot ha egne gebyrer.", "Youtube": "Youtube", - "Youtube Loader Settings": "Youtube-lasterinnstillinger" + "Youtube Loader Settings": "Innstillinger for YouTube-laster" } diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 22d9d8908..6d37cf364 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -1,715 +1,715 @@ { "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' ou '-1' para sem expiração.", - "(Beta)": "(Beta)", - "(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)", - "{{ models }}": "{{ models }}", - "{{ owner }}: You cannot delete a base model": "{{ owner }}: Você não pode deletar um modelo base", - "{{modelName}} is thinking...": "{{modelName}} está pensando...", - "{{user}}'s Chats": "Chats de {{user}}", - "{{webUIName}} Backend Required": "Backend {{webUIName}} necessário", - "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", - "Account": "Conta", - "Account Activation Pending": "Ativação da Conta Pendente", - "Accurate information": "Informação precisa", - "Actions": "", - "Active Users": "Usuários Ativos", - "Add": "Adicionar", - "Add a model id": "Adicionar um ID de modelo", - "Add a short description about what this model does": "Adicione uma descrição curta sobre o que este modelo faz", - "Add a short title for this prompt": "Adicione um título curto para este prompt", - "Add a tag": "Adicionar uma tag", - "Add custom prompt": "Adicionar prompt personalizado", - "Add Docs": "Adicionar Documentos", - "Add Files": "Adicionar Arquivos", - "Add Memory": "Adicionar Memória", - "Add message": "Adicionar mensagem", - "Add Model": "Adicionar Modelo", - "Add Tag": "Adicionar Tag", - "Add Tags": "Adicionar Tags", - "Add User": "Adicionar Usuário", - "Adjusting these settings will apply changes universally to all users.": "Ajustar essas configurações aplicará mudanças universalmente a 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.", - "Advanced Parameters": "Parâmetros Avançados", - "Advanced Params": "Parâmetros Avançados", - "all": "todos", - "All Documents": "Todos os Documentos", - "All Users": "Todos os Usuários", - "Allow": "Permitir", - "Allow Chat Deletion": "Permitir Exclusão de Chats", - "Allow non-local voices": "Permitir vozes não locais", - "Allow User Location": "Permitir Localização do Usuário", - "Allow Voice Interruption in Call": "Permitir Interrupção de Voz na Chamada", - "alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens", - "Already have an account?": "Já tem uma conta?", - "an assistant": "um assistente", + "(Beta)": "(Beta)", + "(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)", + "{{ models }}": "{{ models }}", + "{{ owner }}: You cannot delete a base model": "{{ owner }}: Você não pode deletar um modelo base", + "{{modelName}} is thinking...": "{{modelName}} está pensando...", + "{{user}}'s Chats": "Chats de {{user}}", + "{{webUIName}} Backend Required": "Backend {{webUIName}} necessário", + "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", + "Account": "Conta", + "Account Activation Pending": "Ativação da Conta Pendente", + "Accurate information": "Informação precisa", + "Actions": "", + "Active Users": "Usuários Ativos", + "Add": "Adicionar", + "Add a model id": "Adicionar um ID de modelo", + "Add a short description about what this model does": "Adicione uma descrição curta sobre o que este modelo faz", + "Add a short title for this prompt": "Adicione um título curto para este prompt", + "Add a tag": "Adicionar uma tag", + "Add custom prompt": "Adicionar prompt personalizado", + "Add Docs": "Adicionar Documentos", + "Add Files": "Adicionar Arquivos", + "Add Memory": "Adicionar Memória", + "Add message": "Adicionar mensagem", + "Add Model": "Adicionar Modelo", + "Add Tag": "Adicionar Tag", + "Add Tags": "Adicionar Tags", + "Add User": "Adicionar Usuário", + "Adjusting these settings will apply changes universally to all users.": "Ajustar essas configurações aplicará mudanças universalmente a 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.", + "Advanced Parameters": "Parâmetros Avançados", + "Advanced Params": "Parâmetros Avançados", + "all": "todos", + "All Documents": "Todos os Documentos", + "All Users": "Todos os Usuários", + "Allow": "Permitir", + "Allow Chat Deletion": "Permitir Exclusão de Chats", + "Allow non-local voices": "Permitir vozes não locais", + "Allow User Location": "Permitir Localização do Usuário", + "Allow Voice Interruption in Call": "Permitir Interrupção de Voz na Chamada", + "alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens", + "Already have an account?": "Já tem uma conta?", + "an assistant": "um assistente", "and": "e", - "and create a new shared link.": "e criar um novo link compartilhado.", - "API Base URL": "URL Base da API", - "API Key": "Chave API", - "API Key created.": "Chave API criada.", - "API keys": "Chaves API", - "April": "Abril", - "Archive": "Arquivar", - "Archive All Chats": "Arquivar Todos os Chats", - "Archived Chats": "Chats Arquivados", - "are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando", - "Are you sure?": "Você tem certeza?", - "Attach file": "Anexar arquivo", - "Attention to detail": "Atenção aos detalhes", - "Audio": "Áudio", - "Audio settings updated successfully": "Configurações de áudio atualizadas com sucesso", - "August": "Agosto", - "Auto-playback response": "Resposta de reprodução automática", - "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!": "disponível!", - "Back": "Voltar", - "Bad Response": "Resposta Ruim", - "Banners": "Banners", - "Base Model (From)": "Modelo Base (From)", - "Batch Size (num_batch)": "Tamanho do Lote (num_batch)", - "before": "antes", - "Being lazy": "Sendo preguiçoso", - "Brave Search API Key": "Chave API do Brave Search", - "Bypass SSL verification for Websites": "Ignorar verificação SSL para Sites", - "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", - "Change Password": "Mudar Senha", - "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 History": "Histórico de Chat", - "Chat History is off for this browser.": "O Histórico de Chat está desativado para este navegador.", - "Chats": "Chats", - "Check Again": "Verificar Novamente", - "Check for updates": "Verificar atualizações", - "Checking for updates...": "Verificando atualizações...", - "Choose a model before saving...": "Escolha um modelo antes de salvar...", - "Chunk Overlap": "Sobreposição de Chunk", + "and create a new shared link.": "e criar um novo link compartilhado.", + "API Base URL": "URL Base da API", + "API Key": "Chave API", + "API Key created.": "Chave API criada.", + "API keys": "Chaves API", + "April": "Abril", + "Archive": "Arquivar", + "Archive All Chats": "Arquivar Todos os Chats", + "Archived Chats": "Chats Arquivados", + "are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando", + "Are you sure?": "Você tem certeza?", + "Attach file": "Anexar arquivo", + "Attention to detail": "Atenção aos detalhes", + "Audio": "Áudio", + "Audio settings updated successfully": "Configurações de áudio atualizadas com sucesso", + "August": "Agosto", + "Auto-playback response": "Resposta de reprodução automática", + "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!": "disponível!", + "Back": "Voltar", + "Bad Response": "Resposta Ruim", + "Banners": "Banners", + "Base Model (From)": "Modelo Base (From)", + "Batch Size (num_batch)": "Tamanho do Lote (num_batch)", + "before": "antes", + "Being lazy": "Sendo preguiçoso", + "Brave Search API Key": "Chave API do Brave Search", + "Bypass SSL verification for Websites": "Ignorar verificação SSL para Sites", + "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", + "Change Password": "Mudar Senha", + "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 History": "Histórico de Chat", + "Chat History is off for this browser.": "O Histórico de Chat está desativado para este navegador.", + "Chats": "Chats", + "Check Again": "Verificar Novamente", + "Check for updates": "Verificar atualizações", + "Checking for updates...": "Verificando atualizações...", + "Choose a model before saving...": "Escolha um modelo antes de salvar...", + "Chunk Overlap": "Sobreposição de Chunk", "Chunk Params": "Parâmetros de Chunk", - "Chunk Size": "Tamanho do Chunk", - "Citation": "Citação", - "Clear memory": "Limpar memória", - "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 select": "Clique aqui para enviar", - "Click here to select a csv file.": "Clique aqui para enviar um arquivo csv.", - "Click here to select a py file.": "Clique aqui para enviar um arquivo py.", - "Click here to select documents.": "Clique aqui para enviar documentos.", - "click here.": "clique aqui.", - "Click on the user role button to change a user's role.": "Clique no botão de função do usuário para alterar a função de um usuário.", - "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", - "Close": "Fechar", - "Code formatted successfully": "Código formatado com sucesso", - "Collection": "Coleção", - "ComfyUI": "ComfyUI", - "ComfyUI Base URL": "URL Base do ComfyUI", - "ComfyUI Base URL is required.": "URL Base do ComfyUI é necessária.", - "Command": "Comando", - "Concurrent Requests": "Solicitações Concomitantes", - "Confirm": "Confirmar", - "Confirm Password": "Confirmar Senha", - "Confirm your action": "Confirme sua ação", - "Connections": "Conexões", - "Contact Admin for WebUI Access": "Contate o Admin para Acesso ao WebUI", - "Content": "Conteúdo", - "Content Extraction": "Extração de Conteúdo", - "Context Length": "Context Length", - "Continue Response": "Continuar Resposta", - "Continue with {{provider}}": "Continuar com {{provider}}", - "Controls": "Controles", - "Copied shared chat URL to clipboard!": "URL de chat compartilhado copiado para a área de transferência!", - "Copy": "Copiar", - "Copy last code block": "Copiar último bloco de código", - "Copy last response": "Copiar última resposta", - "Copy Link": "Copiar Link", - "Copying to clipboard was successful!": "Cópia para a área de transferência bem-sucedida!", - "Create a model": "Criar um modelo", - "Create Account": "Criar Conta", - "Create new key": "Criar nova chave", - "Create new secret key": "Criar nova chave secreta", - "Created at": "Criado em", - "Created At": "Criado Em", - "Created by": "Criado por", - "CSV Import": "Importação CSV", - "Current Model": "Modelo Atual", - "Current Password": "Senha Atual", + "Chunk Size": "Tamanho do Chunk", + "Citation": "Citação", + "Clear memory": "Limpar memória", + "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 select": "Clique aqui para enviar", + "Click here to select a csv file.": "Clique aqui para enviar um arquivo csv.", + "Click here to select a py file.": "Clique aqui para enviar um arquivo py.", + "Click here to select documents.": "Clique aqui para enviar documentos.", + "click here.": "clique aqui.", + "Click on the user role button to change a user's role.": "Clique no botão de função do usuário para alterar a função de um usuário.", + "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", + "Close": "Fechar", + "Code formatted successfully": "Código formatado com sucesso", + "Collection": "Coleção", + "ComfyUI": "ComfyUI", + "ComfyUI Base URL": "URL Base do ComfyUI", + "ComfyUI Base URL is required.": "URL Base do ComfyUI é necessária.", + "Command": "Comando", + "Concurrent Requests": "Solicitações Concomitantes", + "Confirm": "Confirmar", + "Confirm Password": "Confirmar Senha", + "Confirm your action": "Confirme sua ação", + "Connections": "Conexões", + "Contact Admin for WebUI Access": "Contate o Admin para Acesso ao WebUI", + "Content": "Conteúdo", + "Content Extraction": "Extração de Conteúdo", + "Context Length": "Context Length", + "Continue Response": "Continuar Resposta", + "Continue with {{provider}}": "Continuar com {{provider}}", + "Controls": "Controles", + "Copied shared chat URL to clipboard!": "URL de chat compartilhado copiado para a área de transferência!", + "Copy": "Copiar", + "Copy last code block": "Copiar último bloco de código", + "Copy last response": "Copiar última resposta", + "Copy Link": "Copiar Link", + "Copying to clipboard was successful!": "Cópia para a área de transferência bem-sucedida!", + "Create a model": "Criar um modelo", + "Create Account": "Criar Conta", + "Create new key": "Criar nova chave", + "Create new secret key": "Criar nova chave secreta", + "Created at": "Criado em", + "Created At": "Criado Em", + "Created by": "Criado por", + "CSV Import": "Importação CSV", + "Current Model": "Modelo Atual", + "Current Password": "Senha Atual", "Custom": "Personalizado", - "Customize models for a specific purpose": "Personalize modelos para um propósito específico", - "Dark": "Escuro", - "Dashboard": "Dashboard", - "Database": "Banco de Dados", - "December": "Dezembro", - "Default": "Padrão", - "Default (Automatic1111)": "Padrão (Automatic1111)", - "Default (SentenceTransformers)": "Padrão (SentenceTransformers)", - "Default Model": "Modelo Padrão", - "Default model updated": "Modelo padrão atualizado", - "Default Prompt Suggestions": "Sugestões de Prompt Padrão", - "Default User Role": "Função de Usuário Padrão", - "delete": "deletar", - "Delete": "Deletar", - "Delete a model": "Deletar um modelo", - "Delete All Chats": "Deletar Todos os Chats", - "Delete chat": "Deletar chat", - "Delete Chat": "Deletar Chat", - "Delete chat?": "Deletar chat?", - "Delete Doc": "Deletar Documento", - "Delete function?": "Deletar função?", - "Delete prompt?": "Deletar prompt?", - "delete this link": "deletar este link", - "Delete tool?": "Deletar ferramenta?", - "Delete User": "Deletar Usuário", - "Deleted {{deleteModelTag}}": "Deletado {{deleteModelTag}}", - "Deleted {{name}}": "Deletado {{name}}", - "Description": "Descrição", - "Didn't fully follow instructions": "Não seguiu completamente as instruções", - "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, download, and explore custom functions": "Descubra, baixe e explore funções personalizadas", - "Discover, download, and explore custom prompts": "Descubra, baixe e explore prompts personalizados", - "Discover, download, and explore custom tools": "Descubra, baixe e explore ferramentas personalizadas", - "Discover, download, and explore model presets": "Descubra, baixe e explore predefinições de modelos", - "Dismissible": "Descartável", - "Display Emoji in Call": "Exibir Emoji na Chamada", - "Display the username instead of You in the Chat": "Exibir o nome de usuário em vez de Você no Chat", - "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.", - "Document": "Documento", - "Document Settings": "Configurações de Documento", - "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.", - "Don't Allow": "Não Permitir", - "Don't have an account?": "Não tem uma conta?", + "Customize models for a specific purpose": "Personalize modelos para um propósito específico", + "Dark": "Escuro", + "Dashboard": "Dashboard", + "Database": "Banco de Dados", + "December": "Dezembro", + "Default": "Padrão", + "Default (Automatic1111)": "Padrão (Automatic1111)", + "Default (SentenceTransformers)": "Padrão (SentenceTransformers)", + "Default Model": "Modelo Padrão", + "Default model updated": "Modelo padrão atualizado", + "Default Prompt Suggestions": "Sugestões de Prompt Padrão", + "Default User Role": "Função de Usuário Padrão", + "delete": "deletar", + "Delete": "Deletar", + "Delete a model": "Deletar um modelo", + "Delete All Chats": "Deletar Todos os Chats", + "Delete chat": "Deletar chat", + "Delete Chat": "Deletar Chat", + "Delete chat?": "Deletar chat?", + "Delete Doc": "Deletar Documento", + "Delete function?": "Deletar função?", + "Delete prompt?": "Deletar prompt?", + "delete this link": "deletar este link", + "Delete tool?": "Deletar ferramenta?", + "Delete User": "Deletar Usuário", + "Deleted {{deleteModelTag}}": "Deletado {{deleteModelTag}}", + "Deleted {{name}}": "Deletado {{name}}", + "Description": "Descrição", + "Didn't fully follow instructions": "Não seguiu completamente as instruções", + "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, download, and explore custom functions": "Descubra, baixe e explore funções personalizadas", + "Discover, download, and explore custom prompts": "Descubra, baixe e explore prompts personalizados", + "Discover, download, and explore custom tools": "Descubra, baixe e explore ferramentas personalizadas", + "Discover, download, and explore model presets": "Descubra, baixe e explore predefinições de modelos", + "Dismissible": "Descartável", + "Display Emoji in Call": "Exibir Emoji na Chamada", + "Display the username instead of You in the Chat": "Exibir o nome de usuário em vez de Você no Chat", + "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.", + "Document": "Documento", + "Document Settings": "Configurações de Documento", + "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.", + "Don't Allow": "Não Permitir", + "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 like the style": "Não gosta do estilo", - "Done": "Concluído", - "Download": "Baixar", - "Download canceled": "Download cancelado", - "Download Database": "Baixar Banco de Dados", - "Drop any files here to add to the conversation": "Solte qualquer arquivo aqui para adicionar à conversa", - "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.", - "Edit": "Editar", - "Edit Doc": "Editar Documento", - "Edit Memory": "Editar Memória", - "Edit User": "Editar Usuário", - "ElevenLabs": "", - "Email": "Email", - "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 Chat History": "Ativar Histórico de Chat", - "Enable Community Sharing": "Ativar Compartilhamento Comunitário", - "Enable New Sign Ups": "Ativar Novos Cadastros", - "Enable Web Search": "Ativar Pesquisa na Web", - "Enabled": "Ativado", - "Engine": "Motor", - "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 api auth string (e.g. username:password)": "Digite a string de autenticação da API (por exemplo, username:password)", - "Enter Brave Search API Key": "Digite a Chave API do Brave Search", - "Enter Chunk Overlap": "Digite a Sobreposição de Chunk", - "Enter Chunk Size": "Digite o Tamanho do Chunk", - "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 language codes": "Digite os códigos de idioma", - "Enter model tag (e.g. {{modelTag}})": "Digite a tag do modelo (por exemplo, {{modelTag}})", - "Enter Number of Steps (e.g. 50)": "Digite o Número de Passos (por exemplo, 50)", - "Enter Score": "Digite a Pontuação", - "Enter Searxng Query URL": "Digite a URL de Consulta do Searxng", - "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 stop sequence": "Digite a sequência de parada", - "Enter system prompt": "Digite o prompt do sistema", - "Enter Tavily API Key": "Digite a Chave API do Tavily", - "Enter Tika Server URL": "Digite a URL do Servidor Tika", - "Enter Top K": "Digite o Top K", - "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)", + "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 like the style": "Não gosta do estilo", + "Done": "Concluído", + "Download": "Baixar", + "Download canceled": "Download cancelado", + "Download Database": "Baixar Banco de Dados", + "Drop any files here to add to the conversation": "Solte qualquer arquivo aqui para adicionar à conversa", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.", + "Edit": "Editar", + "Edit Doc": "Editar Documento", + "Edit Memory": "Editar Memória", + "Edit User": "Editar Usuário", + "ElevenLabs": "", + "Email": "Email", + "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 Chat History": "Ativar Histórico de Chat", + "Enable Community Sharing": "Ativar Compartilhamento Comunitário", + "Enable New Sign Ups": "Ativar Novos Cadastros", + "Enable Web Search": "Ativar Pesquisa na Web", + "Enabled": "Ativado", + "Engine": "Motor", + "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 api auth string (e.g. username:password)": "Digite a string de autenticação da API (por exemplo, username:password)", + "Enter Brave Search API Key": "Digite a Chave API do Brave Search", + "Enter Chunk Overlap": "Digite a Sobreposição de Chunk", + "Enter Chunk Size": "Digite o Tamanho do Chunk", + "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 language codes": "Digite os códigos de idioma", + "Enter model tag (e.g. {{modelTag}})": "Digite a tag do modelo (por exemplo, {{modelTag}})", + "Enter Number of Steps (e.g. 50)": "Digite o Número de Passos (por exemplo, 50)", + "Enter Score": "Digite a Pontuação", + "Enter Searxng Query URL": "Digite a URL de Consulta do Searxng", + "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 stop sequence": "Digite a sequência de parada", + "Enter system prompt": "Digite o prompt do sistema", + "Enter Tavily API Key": "Digite a Chave API do Tavily", + "Enter Tika Server URL": "Digite a URL do Servidor Tika", + "Enter Top K": "Digite o Top K", + "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 Your Email": "Digite Seu Email", - "Enter Your Full Name": "Digite Seu Nome Completo", - "Enter your message": "Digite sua mensagem", - "Enter Your Password": "Digite Sua Senha", - "Enter Your Role": "Digite Sua Função", - "Error": "Erro", - "Experimental": "Experimental", - "Export": "Exportar", - "Export All Chats (All Users)": "Exportar Todos os Chats (Todos os Usuários)", - "Export chat (.json)": "Exportar chat (.json)", - "Export Chats": "Exportar Chats", - "Export Documents Mapping": "Exportar Mapeamento de Documentos", - "Export Functions": "Exportar Funções", - "Export LiteLLM config.yaml": "Exportar config.yaml do LiteLLM", - "Export Models": "Exportar Modelos", - "Export Prompts": "Exportar Prompts", - "Export Tools": "Exportar Ferramentas", - "External Models": "Modelos Externos", - "Failed to create API Key.": "Falha ao criar a Chave API.", - "Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência", - "Failed to update settings": "Falha ao atualizar as configurações", - "February": "Fevereiro", - "Feel free to add specific details": "Sinta-se à vontade para adicionar detalhes específicos", - "File": "Arquivo", - "File Mode": "Modo de Arquivo", - "File not found.": "Arquivo não encontrado.", - "Files": "Arquivos", - "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.", - "Fluidly stream large external response chunks": "Transmitir fluentemente grandes blocos de respostas externas", - "Focus chat input": "Focar entrada de chat", - "Followed instructions perfectly": "Seguiu as instruções perfeitamente", - "Form": "Formulário", - "Format your variables using square brackets like this:": "Formate suas variáveis usando colchetes assim:", - "Frequency Penalty": "Frequency Penalty", - "Function created successfully": "Função criada com sucesso", - "Function deleted successfully": "Função deletada com sucesso", - "Function Description (e.g. A filter to remove profanity from text)": "Descrição da Função (por exemplo, Um filtro para remover palavrões do texto)", - "Function ID (e.g. my_filter)": "ID da Função (por exemplo, my_filter)", - "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 (e.g. My Filter)": "Nome da Função (por exemplo, My Filter)", - "Function updated successfully": "Função atualizada com sucesso", - "Functions": "Funções", - "Functions allow arbitrary code execution": "Funções permitem a execução arbitrária de código", - "Functions allow arbitrary code execution.": "Funções permitem a execução arbitrária de código.", - "Functions imported successfully": "Funções importadas com sucesso", - "General": "Geral", + "Enter Your Full Name": "Digite Seu Nome Completo", + "Enter your message": "Digite sua mensagem", + "Enter Your Password": "Digite Sua Senha", + "Enter Your Role": "Digite Sua Função", + "Error": "Erro", + "Experimental": "Experimental", + "Export": "Exportar", + "Export All Chats (All Users)": "Exportar Todos os Chats (Todos os Usuários)", + "Export chat (.json)": "Exportar chat (.json)", + "Export Chats": "Exportar Chats", + "Export Documents Mapping": "Exportar Mapeamento de Documentos", + "Export Functions": "Exportar Funções", + "Export LiteLLM config.yaml": "Exportar config.yaml do LiteLLM", + "Export Models": "Exportar Modelos", + "Export Prompts": "Exportar Prompts", + "Export Tools": "Exportar Ferramentas", + "External Models": "Modelos Externos", + "Failed to create API Key.": "Falha ao criar a Chave API.", + "Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência", + "Failed to update settings": "Falha ao atualizar as configurações", + "February": "Fevereiro", + "Feel free to add specific details": "Sinta-se à vontade para adicionar detalhes específicos", + "File": "Arquivo", + "File Mode": "Modo de Arquivo", + "File not found.": "Arquivo não encontrado.", + "Files": "Arquivos", + "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.", + "Fluidly stream large external response chunks": "Transmitir fluentemente grandes blocos de respostas externas", + "Focus chat input": "Focar entrada de chat", + "Followed instructions perfectly": "Seguiu as instruções perfeitamente", + "Form": "Formulário", + "Format your variables using square brackets like this:": "Formate suas variáveis usando colchetes assim:", + "Frequency Penalty": "Frequency Penalty", + "Function created successfully": "Função criada com sucesso", + "Function deleted successfully": "Função deletada com sucesso", + "Function Description (e.g. A filter to remove profanity from text)": "Descrição da Função (por exemplo, Um filtro para remover palavrões do texto)", + "Function ID (e.g. my_filter)": "ID da Função (por exemplo, my_filter)", + "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 (e.g. My Filter)": "Nome da Função (por exemplo, My Filter)", + "Function updated successfully": "Função atualizada com sucesso", + "Functions": "Funções", + "Functions allow arbitrary code execution": "Funções permitem a execução arbitrária de código", + "Functions allow arbitrary code execution.": "Funções permitem a execução arbitrária de código.", + "Functions imported successfully": "Funções importadas com sucesso", + "General": "Geral", "General Settings": "Configurações Gerais", - "Generate Image": "Gerar Imagem", - "Generating search query": "Gerando consulta de pesquisa", - "Generation Info": "Informações de Geração", - "Get up and running with": "Comece e esteja em funcionamento com", - "Global": "Global", - "Good Response": "Boa Resposta", - "Google PSE API Key": "Chave API do Google PSE", - "Google PSE Engine Id": "ID do Motor do Google PSE", - "h:mm a": "h:mm a", - "has no conversations.": "não tem conversas.", - "Hello, {{name}}": "Olá, {{name}}", - "Help": "Ajuda", - "Hide": "Ocultar", - "Hide Model": "Ocultar Modelo", - "How can I help you today?": "Como posso ajudar você hoje?", - "Hybrid Search": "Pesquisa Híbrida", - "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Eu reconheço que li e entendi as implicações da minha ação. Estou ciente dos riscos associados à execução de código arbitrário e verifiquei a confiabilidade da fonte.", - "Image Generation (Experimental)": "Geração de Imagem (Experimental)", - "Image Generation Engine": "Motor de Geração de Imagem", - "Image Settings": "Configurações de Imagem", - "Images": "Imagens", - "Import Chats": "Importar Chats", - "Import Documents Mapping": "Importar Mapeamento de Documentos", - "Import Functions": "Importar Funções", - "Import Models": "Importar Modelos", - "Import Prompts": "Importar Prompts", - "Import Tools": "Importar Ferramentas", - "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", - "Info": "Informação", - "Input commands": "Comandos de entrada", - "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", - "Interface": "Interface", - "Invalid Tag": "Tag Inválida", - "January": "Janeiro", - "join our Discord for help.": "junte-se ao nosso Discord para ajuda.", - "JSON": "JSON", - "JSON Preview": "Pré-visualização JSON", - "July": "Julho", - "June": "Junho", - "JWT Expiration": "Expiração do JWT", - "JWT Token": "Token JWT", - "Keep Alive": "Manter Vivo", - "Keyboard shortcuts": "Atalhos de Teclado", - "Knowledge": "Conhecimento", - "Language": "Idioma", - "large language models, locally.": "grandes modelos de linguagem, localmente.", - "Last Active": "Última Atividade", - "Last Modified": "Última Modificação", + "Generate Image": "Gerar Imagem", + "Generating search query": "Gerando consulta de pesquisa", + "Generation Info": "Informações de Geração", + "Get up and running with": "Comece e esteja em funcionamento com", + "Global": "Global", + "Good Response": "Boa Resposta", + "Google PSE API Key": "Chave API do Google PSE", + "Google PSE Engine Id": "ID do Motor do Google PSE", + "h:mm a": "h:mm a", + "has no conversations.": "não tem conversas.", + "Hello, {{name}}": "Olá, {{name}}", + "Help": "Ajuda", + "Hide": "Ocultar", + "Hide Model": "Ocultar Modelo", + "How can I help you today?": "Como posso ajudar você hoje?", + "Hybrid Search": "Pesquisa Híbrida", + "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Eu reconheço que li e entendi as implicações da minha ação. Estou ciente dos riscos associados à execução de código arbitrário e verifiquei a confiabilidade da fonte.", + "Image Generation (Experimental)": "Geração de Imagem (Experimental)", + "Image Generation Engine": "Motor de Geração de Imagem", + "Image Settings": "Configurações de Imagem", + "Images": "Imagens", + "Import Chats": "Importar Chats", + "Import Documents Mapping": "Importar Mapeamento de Documentos", + "Import Functions": "Importar Funções", + "Import Models": "Importar Modelos", + "Import Prompts": "Importar Prompts", + "Import Tools": "Importar Ferramentas", + "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", + "Info": "Informação", + "Input commands": "Comandos de entrada", + "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", + "Interface": "Interface", + "Invalid Tag": "Tag Inválida", + "January": "Janeiro", + "join our Discord for help.": "junte-se ao nosso Discord para ajuda.", + "JSON": "JSON", + "JSON Preview": "Pré-visualização JSON", + "July": "Julho", + "June": "Junho", + "JWT Expiration": "Expiração do JWT", + "JWT Token": "Token JWT", + "Keep Alive": "Manter Vivo", + "Keyboard shortcuts": "Atalhos de Teclado", + "Knowledge": "Conhecimento", + "Language": "Idioma", + "large language models, locally.": "grandes modelos de linguagem, localmente.", + "Last Active": "Última Atividade", + "Last Modified": "Última Modificação", "Light": "Claro", - "Listening...": "Escutando...", - "LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.", - "Local Models": "Modelos Locais", - "LTR": "LTR", - "Made by OpenWebUI Community": "Feito pela Comunidade OpenWebUI", - "Make sure to enclose them with": "Certifique-se de encerrá-los com", - "Manage": "Gerenciar", - "Manage Models": "Gerenciar Modelos", - "Manage Ollama Models": "Gerenciar Modelos Ollama", - "Manage Pipelines": "Gerenciar Pipelines", - "Manage Valves": "Gerenciar Válvulas", - "March": "Março", - "Max Tokens (num_predict)": "Máximo de Tokens (num_predict)", - "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Por favor, tente novamente mais tarde.", - "May": "Maio", - "Memories accessible by LLMs will be shown here.": "Memórias acessíveis por LLMs serão mostradas aqui.", - "Memory": "Memória", - "Memory added successfully": "Memória adicionada com sucesso", - "Memory cleared successfully": "Memória limpa com sucesso", - "Memory deleted successfully": "Memória excluída com sucesso", - "Memory updated successfully": "Memória atualizada com sucesso", - "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mensagens enviadas após criar seu link não serão compartilhadas. Usuários com o URL poderão visualizar o chat compartilhado.", - "Minimum Score": "Pontuação Mínima", - "Mirostat": "Mirostat", - "Mirostat Eta": "Mirostat Eta", - "Mirostat Tau": "Mirostat Tau", - "MMMM DD, YYYY": "MMMM DD, YYYY", - "MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm", - "MMMM DD, YYYY hh:mm:ss A": "MMMM DD, YYYY hh:mm:ss A", - "Model '{{modelName}}' has been successfully downloaded.": "Modelo '{{modelName}}' foi baixado com sucesso.", - "Model '{{modelTag}}' is already in queue for downloading.": "Modelo '{{modelTag}}' já está na fila para download.", - "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 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 ID": "ID do Modelo", - "Model not selected": "Modelo não selecionado", - "Model Params": "Parâmetros do Modelo", - "Model updated successfully": "Modelo atualizado com sucesso", - "Model Whitelisting": "Lista Branca de Modelos", - "Model(s) Whitelisted": "Modelo(s) na Lista Branca", - "Modelfile Content": "Conteúdo do Arquivo do Modelo", - "Models": "Modelos", - "More": "Mais", - "Name": "Nome", - "Name Tag": "Nome da Tag", - "Name your model": "Nomeie seu modelo", - "New Chat": "Novo Chat", + "Listening...": "Escutando...", + "LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.", + "Local Models": "Modelos Locais", + "LTR": "LTR", + "Made by OpenWebUI Community": "Feito pela Comunidade OpenWebUI", + "Make sure to enclose them with": "Certifique-se de encerrá-los com", + "Manage": "Gerenciar", + "Manage Models": "Gerenciar Modelos", + "Manage Ollama Models": "Gerenciar Modelos Ollama", + "Manage Pipelines": "Gerenciar Pipelines", + "Manage Valves": "Gerenciar Válvulas", + "March": "Março", + "Max Tokens (num_predict)": "Máximo de Tokens (num_predict)", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Por favor, tente novamente mais tarde.", + "May": "Maio", + "Memories accessible by LLMs will be shown here.": "Memórias acessíveis por LLMs serão mostradas aqui.", + "Memory": "Memória", + "Memory added successfully": "Memória adicionada com sucesso", + "Memory cleared successfully": "Memória limpa com sucesso", + "Memory deleted successfully": "Memória excluída com sucesso", + "Memory updated successfully": "Memória atualizada com sucesso", + "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mensagens enviadas após criar seu link não serão compartilhadas. Usuários com o URL poderão visualizar o chat compartilhado.", + "Minimum Score": "Pontuação Mínima", + "Mirostat": "Mirostat", + "Mirostat Eta": "Mirostat Eta", + "Mirostat Tau": "Mirostat Tau", + "MMMM DD, YYYY": "MMMM DD, YYYY", + "MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm", + "MMMM DD, YYYY hh:mm:ss A": "MMMM DD, YYYY hh:mm:ss A", + "Model '{{modelName}}' has been successfully downloaded.": "Modelo '{{modelName}}' foi baixado com sucesso.", + "Model '{{modelTag}}' is already in queue for downloading.": "Modelo '{{modelTag}}' já está na fila para download.", + "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 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 ID": "ID do Modelo", + "Model not selected": "Modelo não selecionado", + "Model Params": "Parâmetros do Modelo", + "Model updated successfully": "Modelo atualizado com sucesso", + "Model Whitelisting": "Lista Branca de Modelos", + "Model(s) Whitelisted": "Modelo(s) na Lista Branca", + "Modelfile Content": "Conteúdo do Arquivo do Modelo", + "Models": "Modelos", + "More": "Mais", + "Name": "Nome", + "Name Tag": "Nome da Tag", + "Name your model": "Nomeie seu modelo", + "New Chat": "Novo Chat", "New Password": "Nova Senha", - "No content to speak": "Sem conteúdo para falar", - "No documents found": "Nenhum documento encontrado", - "No file selected": "Nenhum arquivo selecionado", - "No results found": "Nenhum resultado encontrado", - "No search query generated": "Nenhuma consulta de pesquisa gerada", - "No source available": "Nenhuma fonte disponível", - "No valves to update": "Nenhuma válvula para atualizar", - "None": "Nenhum", - "Not factually correct": "Não está factualmente correto", - "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.", - "Notifications": "Notificações", - "November": "Novembro", - "num_thread (Ollama)": "num_thread (Ollama)", - "OAuth ID": "OAuth ID", - "October": "Outubro", - "Off": "Desligado", - "Okay, Let's Go!": "Ok, Vamos Lá!", - "OLED Dark": "OLED Escuro", - "Ollama": "Ollama", - "Ollama API": "API Ollama", - "Ollama API disabled": "API Ollama desativada", - "Ollama API is disabled": "API Ollama está desativada", - "Ollama Version": "Versão Ollama", - "On": "Ligado", - "Only": "Apenas", - "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.", - "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Ops! Aguarde! Seus arquivos ainda estão no forno de processamento. Estamos preparando-os com perfeição. Por favor, seja paciente e avisaremos quando estiverem prontos.", - "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 was an error in the previous response. Please try again or contact admin.": "Ops! Houve um erro na resposta anterior. Por favor, tente novamente ou entre em contato com o administrador.", - "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 AI (Dall-E)": "Open AI (Dall-E)", - "Open new chat": "Abrir novo chat", - "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "A versão do Open WebUI (v{{OPEN_WEBUI_VERSION}}) é inferior à versão necessária (v{{REQUIRED_VERSION}})", - "OpenAI": "OpenAI", - "OpenAI API": "API OpenAI", - "OpenAI API Config": "Configuração da API OpenAI", - "OpenAI API Key is required.": "Chave API OpenAI é necessária.", - "OpenAI URL/Key required.": "URL/Chave OpenAI necessária.", - "or": "ou", - "Other": "Outro", - "Password": "Senha", - "PDF document (.pdf)": "Documento PDF (.pdf)", - "PDF Extract Images (OCR)": "Extrair Imagens do PDF (OCR)", - "pending": "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}}", - "Personalization": "Personalização", - "Pin": "Fixar", + "No content to speak": "Sem conteúdo para falar", + "No documents found": "Nenhum documento encontrado", + "No file selected": "Nenhum arquivo selecionado", + "No results found": "Nenhum resultado encontrado", + "No search query generated": "Nenhuma consulta de pesquisa gerada", + "No source available": "Nenhuma fonte disponível", + "No valves to update": "Nenhuma válvula para atualizar", + "None": "Nenhum", + "Not factually correct": "Não está factualmente correto", + "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.", + "Notifications": "Notificações", + "November": "Novembro", + "num_thread (Ollama)": "num_thread (Ollama)", + "OAuth ID": "OAuth ID", + "October": "Outubro", + "Off": "Desligado", + "Okay, Let's Go!": "Ok, Vamos Lá!", + "OLED Dark": "OLED Escuro", + "Ollama": "Ollama", + "Ollama API": "API Ollama", + "Ollama API disabled": "API Ollama desativada", + "Ollama API is disabled": "API Ollama está desativada", + "Ollama Version": "Versão Ollama", + "On": "Ligado", + "Only": "Apenas", + "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.", + "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Ops! Aguarde! Seus arquivos ainda estão no forno de processamento. Estamos preparando-os com perfeição. Por favor, seja paciente e avisaremos quando estiverem prontos.", + "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 was an error in the previous response. Please try again or contact admin.": "Ops! Houve um erro na resposta anterior. Por favor, tente novamente ou entre em contato com o administrador.", + "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 AI (Dall-E)": "Open AI (Dall-E)", + "Open new chat": "Abrir novo chat", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "A versão do Open WebUI (v{{OPEN_WEBUI_VERSION}}) é inferior à versão necessária (v{{REQUIRED_VERSION}})", + "OpenAI": "OpenAI", + "OpenAI API": "API OpenAI", + "OpenAI API Config": "Configuração da API OpenAI", + "OpenAI API Key is required.": "Chave API OpenAI é necessária.", + "OpenAI URL/Key required.": "URL/Chave OpenAI necessária.", + "or": "ou", + "Other": "Outro", + "Password": "Senha", + "PDF document (.pdf)": "Documento PDF (.pdf)", + "PDF Extract Images (OCR)": "Extrair Imagens do PDF (OCR)", + "pending": "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}}", + "Personalization": "Personalização", + "Pin": "Fixar", "Pinned": "Fixado", - "Pipeline deleted successfully": "Pipeline excluído com sucesso", - "Pipeline downloaded successfully": "Pipeline baixado com sucesso", - "Pipelines": "Pipelines", - "Pipelines Not Detected": "Pipelines Não Detectados", - "Pipelines Valves": "Válvulas de Pipelines", - "Plain text (.txt)": "Texto simples (.txt)", - "Playground": "Playground", - "Please carefully review the following warnings:": "Por favor, revise cuidadosamente os seguintes avisos:", - "Positive attitude": "Atitude positiva", - "Previous 30 days": "Últimos 30 dias", - "Previous 7 days": "Últimos 7 dias", - "Profile Image": "Imagem de Perfil", - "Prompt": "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 Content": "Conteúdo do Prompt", - "Prompt suggestions": "Sugestões de Prompt", - "Prompts": "Prompts", - "Pull \"{{searchValue}}\" from Ollama.com": "Obter \"{{searchValue}}\" de Ollama.com", - "Pull a model from Ollama.com": "Obter um modelo de Ollama.com", - "Query Params": "Parâmetros de Consulta", - "RAG Template": "Modelo RAG", - "Read Aloud": "Ler em Voz Alta", - "Record voice": "Gravar voz", - "Redirecting you to OpenWebUI Community": "Redirecionando você para a Comunidade OpenWebUI", - "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Refira-se como \"Usuário\" (por exemplo, \"Usuário está aprendendo espanhol\")", - "Refused when it shouldn't have": "Recusado quando não deveria", - "Regenerate": "Regenerar", - "Release Notes": "Notas de Lançamento", - "Remove": "Remover", - "Remove Model": "Remover Modelo", - "Rename": "Renomear", - "Repeat Last N": "Repetir Último N", - "Request Mode": "Modo de Solicitação", - "Reranking Model": "Modelo de Reclassificação", - "Reranking model disabled": "Modelo de Reclassificação desativado", - "Reranking model set to \"{{reranking_model}}\"": "Modelo de Reclassificação definido como \"{{reranking_model}}\"", - "Reset": "Redefinir", - "Reset Upload Directory": "Redefinir Diretório de Upload", - "Reset Vector Storage": "Redefinir Armazenamento de Vetores", - "Response AutoCopy to Clipboard": "Cópia Automática da Resposta para a Área de Transferência", - "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.", - "Role": "Função", - "Rosé Pine": "Rosé Pine", - "Rosé Pine Dawn": "Rosé Pine Dawn", - "RTL": "RTL", - "Run Llama 2, Code Llama, and other models. Customize and create your own.": "Execute Llama 2, Code Llama e outros modelos. Personalize e crie os seus próprios.", - "Running": "Executando", - "Save": "Salvar", + "Pipeline deleted successfully": "Pipeline excluído com sucesso", + "Pipeline downloaded successfully": "Pipeline baixado com sucesso", + "Pipelines": "Pipelines", + "Pipelines Not Detected": "Pipelines Não Detectados", + "Pipelines Valves": "Válvulas de Pipelines", + "Plain text (.txt)": "Texto simples (.txt)", + "Playground": "Playground", + "Please carefully review the following warnings:": "Por favor, revise cuidadosamente os seguintes avisos:", + "Positive attitude": "Atitude positiva", + "Previous 30 days": "Últimos 30 dias", + "Previous 7 days": "Últimos 7 dias", + "Profile Image": "Imagem de Perfil", + "Prompt": "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 Content": "Conteúdo do Prompt", + "Prompt suggestions": "Sugestões de Prompt", + "Prompts": "Prompts", + "Pull \"{{searchValue}}\" from Ollama.com": "Obter \"{{searchValue}}\" de Ollama.com", + "Pull a model from Ollama.com": "Obter um modelo de Ollama.com", + "Query Params": "Parâmetros de Consulta", + "RAG Template": "Modelo RAG", + "Read Aloud": "Ler em Voz Alta", + "Record voice": "Gravar voz", + "Redirecting you to OpenWebUI Community": "Redirecionando você para a Comunidade OpenWebUI", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Refira-se como \"Usuário\" (por exemplo, \"Usuário está aprendendo espanhol\")", + "Refused when it shouldn't have": "Recusado quando não deveria", + "Regenerate": "Regenerar", + "Release Notes": "Notas de Lançamento", + "Remove": "Remover", + "Remove Model": "Remover Modelo", + "Rename": "Renomear", + "Repeat Last N": "Repetir Último N", + "Request Mode": "Modo de Solicitação", + "Reranking Model": "Modelo de Reclassificação", + "Reranking model disabled": "Modelo de Reclassificação desativado", + "Reranking model set to \"{{reranking_model}}\"": "Modelo de Reclassificação definido como \"{{reranking_model}}\"", + "Reset": "Redefinir", + "Reset Upload Directory": "Redefinir Diretório de Upload", + "Reset Vector Storage": "Redefinir Armazenamento de Vetores", + "Response AutoCopy to Clipboard": "Cópia Automática da Resposta para a Área de Transferência", + "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.", + "Role": "Função", + "Rosé Pine": "Rosé Pine", + "Rosé Pine Dawn": "Rosé Pine Dawn", + "RTL": "RTL", + "Run Llama 2, Code Llama, and other models. Customize and create your own.": "Execute Llama 2, Code Llama e outros modelos. Personalize e crie os seus próprios.", + "Running": "Executando", + "Save": "Salvar", "Save & Create": "Salvar e Criar", - "Save & Update": "Salvar e Atualizar", - "Save Tag": "Salvar Tag", - "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Salvar registros de chat diretamente no armazenamento do seu navegador não é mais suportado. Por favor, reserve um momento para baixar e excluir seus registros de chat clicando no botão abaixo. Não se preocupe, você pode facilmente reimportar seus registros de chat para o backend através de", - "Scan": "Escanear", - "Scan complete!": "Escaneamento concluído!", - "Scan for documents from {{path}}": "Escanear documentos de {{path}}", - "Search": "Pesquisar", - "Search a model": "Pesquisar um modelo", - "Search Chats": "Pesquisar Chats", - "Search Documents": "Pesquisar Documentos", - "Search Functions": "Pesquisar Funções", - "Search Models": "Pesquisar Modelos", - "Search Prompts": "Pesquisar Prompts", - "Search Query Generation Prompt": "Prompt de Geração de Consulta de Pesquisa", - "Search Query Generation Prompt Length Threshold": "Limiar de Comprimento do Prompt de Geração de Consulta de Pesquisa", - "Search Result Count": "Contagem de Resultados da Pesquisa", - "Search Tools": "Pesquisar Ferramentas", - "Searched {{count}} sites_one": "Pesquisou {{count}} sites_one", - "Searched {{count}} sites_many": "Pesquisou {{count}} sites_many", - "Searched {{count}} sites_other": "Pesquisou {{count}} sites_other", - "Searching \"{{searchQuery}}\"": "Pesquisando \"{{searchQuery}}\"", - "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 engine": "Selecione um motor", - "Select a function": "Selecione uma função", - "Select a mode": "Selecione um modo", - "Select a model": "Selecione um modelo", - "Select a pipeline": "Selecione um pipeline", - "Select a pipeline url": "Selecione uma URL de pipeline", - "Select a tool": "Selecione uma ferramenta", - "Select an Ollama instance": "Selecione uma instância Ollama", - "Select Documents": "Selecionar Documentos", - "Select model": "Selecionar modelo", - "Select only one model to call": "Selecione apenas um modelo para chamar", - "Selected model(s) do not support image inputs": "Modelo(s) selecionado(s) não suportam entradas de imagem", - "Send": "Enviar", - "Send a Message": "Enviar uma Mensagem", - "Send message": "Enviar mensagem", - "September": "Setembro", - "Serper API Key": "Chave da API Serper", - "Serply API Key": "Chave da API Serply", - "Serpstack API Key": "Chave da API Serpstack", - "Server connection verified": "Conexão com o servidor verificada", - "Set as default": "Definir como padrão", - "Set Default Model": "Definir Modelo Padrão", - "Set embedding model (e.g. {{model}})": "Definir modelo de embedding (por exemplo, {{model}})", - "Set Image Size": "Definir Tamanho da Imagem", - "Set reranking model (e.g. {{model}})": "Definir modelo de reclassificação (por exemplo, {{model}})", - "Set Steps": "Definir Etapas", - "Set Task Model": "Definir Modelo de Tarefa", - "Set Voice": "Definir Voz", - "Settings": "Configurações", - "Settings saved successfully!": "Configurações salvas com sucesso!", - "Settings updated successfully": "Configurações atualizadas com sucesso", - "Share": "Compartilhar", - "Share Chat": "Compartilhar Chat", - "Share to OpenWebUI Community": "Compartilhar com a Comunidade OpenWebUI", - "short-summary": "resumo-curto", - "Show": "Mostrar", - "Show Admin Details in Account Pending Overlay": "Mostrar Detalhes do Administrador na Sobreposição de Conta Pendentes", - "Show Model": "Mostrar Modelo", - "Show shortcuts": "Mostrar atalhos", - "Show your support!": "Mostre seu apoio!", - "Showcased creativity": "Criatividade exibida", - "Sign in": "Entrar", - "Sign Out": "Sair", - "Sign up": "Inscrever-se", - "Signing in": "Entrando", - "Source": "Fonte", - "Speech recognition error: {{error}}": "Erro de reconhecimento de fala: {{error}}", - "Speech-to-Text Engine": "Motor de Transcrição de Fala", + "Save & Update": "Salvar e Atualizar", + "Save Tag": "Salvar Tag", + "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Salvar registros de chat diretamente no armazenamento do seu navegador não é mais suportado. Por favor, reserve um momento para baixar e excluir seus registros de chat clicando no botão abaixo. Não se preocupe, você pode facilmente reimportar seus registros de chat para o backend através de", + "Scan": "Escanear", + "Scan complete!": "Escaneamento concluído!", + "Scan for documents from {{path}}": "Escanear documentos de {{path}}", + "Search": "Pesquisar", + "Search a model": "Pesquisar um modelo", + "Search Chats": "Pesquisar Chats", + "Search Documents": "Pesquisar Documentos", + "Search Functions": "Pesquisar Funções", + "Search Models": "Pesquisar Modelos", + "Search Prompts": "Pesquisar Prompts", + "Search Query Generation Prompt": "Prompt de Geração de Consulta de Pesquisa", + "Search Query Generation Prompt Length Threshold": "Limiar de Comprimento do Prompt de Geração de Consulta de Pesquisa", + "Search Result Count": "Contagem de Resultados da Pesquisa", + "Search Tools": "Pesquisar Ferramentas", + "Searched {{count}} sites_one": "Pesquisou {{count}} sites_one", + "Searched {{count}} sites_many": "Pesquisou {{count}} sites_many", + "Searched {{count}} sites_other": "Pesquisou {{count}} sites_other", + "Searching \"{{searchQuery}}\"": "Pesquisando \"{{searchQuery}}\"", + "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 engine": "Selecione um motor", + "Select a function": "Selecione uma função", + "Select a mode": "Selecione um modo", + "Select a model": "Selecione um modelo", + "Select a pipeline": "Selecione um pipeline", + "Select a pipeline url": "Selecione uma URL de pipeline", + "Select a tool": "Selecione uma ferramenta", + "Select an Ollama instance": "Selecione uma instância Ollama", + "Select Documents": "Selecionar Documentos", + "Select model": "Selecionar modelo", + "Select only one model to call": "Selecione apenas um modelo para chamar", + "Selected model(s) do not support image inputs": "Modelo(s) selecionado(s) não suportam entradas de imagem", + "Send": "Enviar", + "Send a Message": "Enviar uma Mensagem", + "Send message": "Enviar mensagem", + "September": "Setembro", + "Serper API Key": "Chave da API Serper", + "Serply API Key": "Chave da API Serply", + "Serpstack API Key": "Chave da API Serpstack", + "Server connection verified": "Conexão com o servidor verificada", + "Set as default": "Definir como padrão", + "Set Default Model": "Definir Modelo Padrão", + "Set embedding model (e.g. {{model}})": "Definir modelo de embedding (por exemplo, {{model}})", + "Set Image Size": "Definir Tamanho da Imagem", + "Set reranking model (e.g. {{model}})": "Definir modelo de reclassificação (por exemplo, {{model}})", + "Set Steps": "Definir Etapas", + "Set Task Model": "Definir Modelo de Tarefa", + "Set Voice": "Definir Voz", + "Settings": "Configurações", + "Settings saved successfully!": "Configurações salvas com sucesso!", + "Settings updated successfully": "Configurações atualizadas com sucesso", + "Share": "Compartilhar", + "Share Chat": "Compartilhar Chat", + "Share to OpenWebUI Community": "Compartilhar com a Comunidade OpenWebUI", + "short-summary": "resumo-curto", + "Show": "Mostrar", + "Show Admin Details in Account Pending Overlay": "Mostrar Detalhes do Administrador na Sobreposição de Conta Pendentes", + "Show Model": "Mostrar Modelo", + "Show shortcuts": "Mostrar atalhos", + "Show your support!": "Mostre seu apoio!", + "Showcased creativity": "Criatividade exibida", + "Sign in": "Entrar", + "Sign Out": "Sair", + "Sign up": "Inscrever-se", + "Signing in": "Entrando", + "Source": "Fonte", + "Speech recognition error: {{error}}": "Erro de reconhecimento de fala: {{error}}", + "Speech-to-Text Engine": "Motor de Transcrição de Fala", "Stop Sequence": "Sequência de Parada", - "STT Model": "Modelo STT", - "STT Settings": "Configurações STT", - "Submit": "Enviar", - "Subtitle (e.g. about the Roman Empire)": "Legenda (por exemplo, sobre o Império Romano)", - "Success": "Sucesso", - "Successfully updated.": "Atualizado com sucesso.", - "Suggested": "Sugerido", - "Support": "Suporte", - "Support this plugin:": "Apoie este plugin:", - "System": "Sistema", - "System Prompt": "Prompt do Sistema", - "Tags": "Tags", - "Tap to interrupt": "Toque para interromper", - "Tavily API Key": "Chave da API Tavily", - "Tell us more:": "Conte-nos mais:", - "Temperature": "Temperatura", - "Template": "Modelo", - "Text Completion": "Conclusão de Texto", - "Text-to-Speech Engine": "Motor de Texto para Fala", - "Tfs Z": "Tfs Z", - "Thanks for your feedback!": "Obrigado pelo seu feedback!", - "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 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%).", - "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?", + "STT Model": "Modelo STT", + "STT Settings": "Configurações STT", + "Submit": "Enviar", + "Subtitle (e.g. about the Roman Empire)": "Legenda (por exemplo, sobre o Império Romano)", + "Success": "Sucesso", + "Successfully updated.": "Atualizado com sucesso.", + "Suggested": "Sugerido", + "Support": "Suporte", + "Support this plugin:": "Apoie este plugin:", + "System": "Sistema", + "System Prompt": "Prompt do Sistema", + "Tags": "Tags", + "Tap to interrupt": "Toque para interromper", + "Tavily API Key": "Chave da API Tavily", + "Tell us more:": "Conte-nos mais:", + "Temperature": "Temperatura", + "Template": "Modelo", + "Text Completion": "Conclusão de Texto", + "Text-to-Speech Engine": "Motor de Texto para Fala", + "Tfs Z": "Tfs Z", + "Thanks for your feedback!": "Obrigado pelo seu feedback!", + "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 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%).", + "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 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 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 setting does not sync across browsers or devices.": "Esta configuração não sincroniza entre navegadores ou dispositivos.", - "This will delete": "Isso vai excluir", - "Thorough explanation": "Explicação detalhada", - "Tika": "Tika", - "Tika Server URL required.": "URL do servidor Tika necessária.", - "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Dica: Atualize vários slots de variáveis consecutivamente pressionando a tecla Tab na entrada de chat após cada substituição.", - "Title": "Título", - "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 Prompt": "Prompt de Geração de Título", - "to": "para", - "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,", + "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 setting does not sync across browsers or devices.": "Esta configuração não sincroniza entre navegadores ou dispositivos.", + "This will delete": "Isso vai excluir", + "Thorough explanation": "Explicação detalhada", + "Tika": "Tika", + "Tika Server URL required.": "URL do servidor Tika necessária.", + "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Dica: Atualize vários slots de variáveis consecutivamente pressionando a tecla Tab na entrada de chat após cada substituição.", + "Title": "Título", + "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 Prompt": "Prompt de Geração de Título", + "to": "para", + "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 add documents here, upload them to the \"Documents\" workspace first.": "Para adicionar documentos aqui, faça o upload para o espaço de trabalho \"Documentos\" primeiro.", - "to chat input.": "para entrada de chat.", - "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.", - "Today": "Hoje", - "Toggle settings": "Alternar configurações", - "Toggle sidebar": "Alternar barra lateral", - "Tokens To Keep On Context Refresh (num_keep)": "Tokens a Manter na Atualização do Contexto (num_keep)", - "Tool created successfully": "Ferramenta criada com sucesso", - "Tool deleted successfully": "Ferramenta excluída com sucesso", - "Tool imported successfully": "Ferramenta importada com sucesso", - "Tool updated successfully": "Ferramenta atualizada com sucesso", - "Toolkit Description (e.g. A toolkit for performing various operations)": "Descrição do Kit de Ferramentas (por exemplo, Um kit de ferramentas para realizar várias operações)", - "Toolkit ID (e.g. my_toolkit)": "ID do Kit de Ferramentas (por exemplo, my_toolkit)", - "Toolkit Name (e.g. My ToolKit)": "Nome do Kit de Ferramentas (por exemplo, Meu Kit de Ferramentas)", - "Tools": "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 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 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.", - "Top K": "Top K", - "Top P": "Top P", - "Trouble accessing Ollama?": "Problemas para acessar o Ollama?", - "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 connecting to {{provider}}.": "Ops! Houve um problema ao conectar-se ao {{provider}}.", - "UI": "Interface", - "Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.": "Tipo de arquivo desconhecido '{{file_type}}'. Prosseguindo com o upload do arquivo de qualquer maneira.", - "Unpin": "Desfixar", - "Update": "Atualizar", - "Update and Copy Link": "Atualizar e Copiar Link", - "Update password": "Atualizar senha", - "Updated at": "Atualizado em", - "Upload": "Fazer upload", - "Upload a GGUF model": "Fazer upload de um modelo GGUF", - "Upload Files": "Fazer upload de Arquivos", - "Upload Pipeline": "Fazer upload de Pipeline", - "Upload Progress": "Progresso do Upload", - "URL Mode": "Modo URL", - "Use '#' in the prompt input to load and select your documents.": "Use '#' na entrada de prompt para carregar e selecionar seus documentos.", - "Use Gravatar": "Usar Gravatar", - "Use Initials": "Usar Iniciais", - "use_mlock (Ollama)": "use_mlock (Ollama)", - "use_mmap (Ollama)": "use_mmap (Ollama)", - "user": "usuário", - "User location successfully retrieved.": "Localização do usuário recuperada com sucesso.", - "User Permissions": "Permissões do Usuário", - "Users": "Usuários", - "Utilize": "Utilizar", - "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", - "variable to have them replaced with clipboard content.": "variável para ser substituída pelo conteúdo da área de transferência.", - "Version": "Versão", - "Voice": "Voz", - "Warning": "Aviso", - "Warning:": "Aviso:", - "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.", - "Web": "Web", - "Web API": "API Web", - "Web Loader Settings": "Configurações do Carregador Web", - "Web Params": "Parâmetros Web", + "To add documents here, upload them to the \"Documents\" workspace first.": "Para adicionar documentos aqui, faça o upload para o espaço de trabalho \"Documentos\" primeiro.", + "to chat input.": "para entrada de chat.", + "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.", + "Today": "Hoje", + "Toggle settings": "Alternar configurações", + "Toggle sidebar": "Alternar barra lateral", + "Tokens To Keep On Context Refresh (num_keep)": "Tokens a Manter na Atualização do Contexto (num_keep)", + "Tool created successfully": "Ferramenta criada com sucesso", + "Tool deleted successfully": "Ferramenta excluída com sucesso", + "Tool imported successfully": "Ferramenta importada com sucesso", + "Tool updated successfully": "Ferramenta atualizada com sucesso", + "Toolkit Description (e.g. A toolkit for performing various operations)": "Descrição do Kit de Ferramentas (por exemplo, Um kit de ferramentas para realizar várias operações)", + "Toolkit ID (e.g. my_toolkit)": "ID do Kit de Ferramentas (por exemplo, my_toolkit)", + "Toolkit Name (e.g. My ToolKit)": "Nome do Kit de Ferramentas (por exemplo, Meu Kit de Ferramentas)", + "Tools": "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 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 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.", + "Top K": "Top K", + "Top P": "Top P", + "Trouble accessing Ollama?": "Problemas para acessar o Ollama?", + "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 connecting to {{provider}}.": "Ops! Houve um problema ao conectar-se ao {{provider}}.", + "UI": "Interface", + "Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.": "Tipo de arquivo desconhecido '{{file_type}}'. Prosseguindo com o upload do arquivo de qualquer maneira.", + "Unpin": "Desfixar", + "Update": "Atualizar", + "Update and Copy Link": "Atualizar e Copiar Link", + "Update password": "Atualizar senha", + "Updated at": "Atualizado em", + "Upload": "Fazer upload", + "Upload a GGUF model": "Fazer upload de um modelo GGUF", + "Upload Files": "Fazer upload de Arquivos", + "Upload Pipeline": "Fazer upload de Pipeline", + "Upload Progress": "Progresso do Upload", + "URL Mode": "Modo URL", + "Use '#' in the prompt input to load and select your documents.": "Use '#' na entrada de prompt para carregar e selecionar seus documentos.", + "Use Gravatar": "Usar Gravatar", + "Use Initials": "Usar Iniciais", + "use_mlock (Ollama)": "use_mlock (Ollama)", + "use_mmap (Ollama)": "use_mmap (Ollama)", + "user": "usuário", + "User location successfully retrieved.": "Localização do usuário recuperada com sucesso.", + "User Permissions": "Permissões do Usuário", + "Users": "Usuários", + "Utilize": "Utilizar", + "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", + "variable to have them replaced with clipboard content.": "variável para ser substituída pelo conteúdo da área de transferência.", + "Version": "Versão", + "Voice": "Voz", + "Warning": "Aviso", + "Warning:": "Aviso:", + "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.", + "Web": "Web", + "Web API": "API Web", + "Web Loader Settings": "Configurações do Carregador Web", + "Web Params": "Parâmetros Web", "Web Search": "Pesquisa na Web", "Web Search Engine": "Mecanismo de Busca na Web", - "Webhook URL": "URL do Webhook", - "WebUI Settings": "Configurações da WebUI", - "WebUI will make requests to": "A WebUI fará solicitações para", - "What’s New in": "O que há de novo em", - "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quando o histórico está desativado, novos chats neste navegador não aparecerão no seu histórico em nenhum dos seus dispositivos.", - "Whisper (Local)": "Whisper (Local)", - "Widescreen Mode": "Modo Tela Cheia", - "Workspace": "Espaço de Trabalho", - "Write a prompt suggestion (e.g. Who are you?)": "Escreva uma sugestão de prompt (por exemplo, Quem é você?)", - "Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].", - "Yesterday": "Ontem", - "You": "Você", - "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 clone a base model": "Você não pode clonar um modelo base", - "You have no archived conversations.": "Você não tem conversas arquivadas.", - "You have shared this chat": "Você compartilhou este chat", - "You're a helpful assistant.": "Você é um assistente útil.", - "You're now logged in.": "Você agora está logado.", - "Your account status is currently pending activation.": "O status da sua conta está atualmente aguardando ativação.", - "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Toda a sua contribuição irá diretamente para o desenvolvedor do plugin; o Open WebUI não retém nenhuma porcentagem. No entanto, a plataforma de financiamento escolhida pode ter suas próprias taxas.", - "Youtube": "Youtube", - "Youtube Loader Settings": "Configurações do Carregador Youtube" -} \ No newline at end of file + "Webhook URL": "URL do Webhook", + "WebUI Settings": "Configurações da WebUI", + "WebUI will make requests to": "A WebUI fará solicitações para", + "What’s New in": "O que há de novo em", + "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Quando o histórico está desativado, novos chats neste navegador não aparecerão no seu histórico em nenhum dos seus dispositivos.", + "Whisper (Local)": "Whisper (Local)", + "Widescreen Mode": "Modo Tela Cheia", + "Workspace": "Espaço de Trabalho", + "Write a prompt suggestion (e.g. Who are you?)": "Escreva uma sugestão de prompt (por exemplo, Quem é você?)", + "Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].", + "Yesterday": "Ontem", + "You": "Você", + "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 clone a base model": "Você não pode clonar um modelo base", + "You have no archived conversations.": "Você não tem conversas arquivadas.", + "You have shared this chat": "Você compartilhou este chat", + "You're a helpful assistant.": "Você é um assistente útil.", + "You're now logged in.": "Você agora está logado.", + "Your account status is currently pending activation.": "O status da sua conta está atualmente aguardando ativação.", + "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Toda a sua contribuição irá diretamente para o desenvolvedor do plugin; o Open WebUI não retém nenhuma porcentagem. No entanto, a plataforma de financiamento escolhida pode ter suas próprias taxas.", + "Youtube": "Youtube", + "Youtube Loader Settings": "Configurações do Carregador Youtube" +} diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json new file mode 100644 index 000000000..d33eedd62 --- /dev/null +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -0,0 +1,714 @@ +{ + "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' sau '-1' fără expirare.", + "(Beta)": "(Beta)", + "(e.g. `sh webui.sh --api --api-auth username_password`)": "(de ex. `sh webui.sh --api --api-auth username_password`)", + "(e.g. `sh webui.sh --api`)": "(de ex. `sh webui.sh --api`)", + "(latest)": "(ultimul)", + "{{ models }}": "{{ modele }}", + "{{ owner }}: You cannot delete a base model": "{{ owner }}: Nu puteți șterge un model de bază", + "{{modelName}} is thinking...": "{{modelName}} gândește...", + "{{user}}'s Chats": "Conversațiile lui {{user}}", + "{{webUIName}} Backend Required": "Este necesar backend-ul {{webUIName}}", + "A task model is used when performing tasks such as generating titles for chats and web search queries": "Un model de sarcină este utilizat pentru realizarea unor sarcini precum generarea de titluri pentru conversații și interogări de căutare pe web", + "a user": "un utilizator", + "About": "Despre", + "Account": "Cont", + "Account Activation Pending": "Activarea contului în așteptare", + "Accurate information": "Informații precise", + "Actions": "Acțiuni", + "Active Users": "Utilizatori activi", + "Add": "Adaugă", + "Add a model id": "Adaugă un id de model", + "Add a short description about what this model does": "Adaugă o scurtă descriere despre ce face acest model", + "Add a short title for this prompt": "Adaugă un titlu scurt pentru acest prompt", + "Add a tag": "Adaugă o etichetă", + "Add custom prompt": "Adaugă prompt personalizat", + "Add Docs": "Adaugă Documente", + "Add Files": "Adaugă Fișiere", + "Add Memory": "Adaugă Memorie", + "Add message": "Adaugă mesaj", + "Add Model": "Adaugă Model", + "Add Tag": "Adaugă Etichetă", + "Add Tags": "Adaugă Etichete", + "Add User": "Adaugă Utilizator", + "Adjusting these settings will apply changes universally to all users.": "Ajustarea acestor setări va aplica modificările universal pentru toți utilizatorii.", + "admin": "administrator", + "Admin": "Administrator", + "Admin Panel": "Panoul de Administrare", + "Admin Settings": "Setări de Administrator", + "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratorii au acces la toate instrumentele în orice moment; utilizatorii au nevoie de instrumente asignate pe model în spațiul de lucru.", + "Advanced Parameters": "Parametri Avansați", + "Advanced Params": "Parametri Avansați", + "all": "toate", + "All Documents": "Toate Documentele", + "All Users": "Toți Utilizatorii", + "Allow": "Permite", + "Allow Chat Deletion": "Permite Ștergerea Conversațiilor", + "Allow non-local voices": "Permite voci non-locale", + "Allow User Location": "Permite Localizarea Utilizatorului", + "Allow Voice Interruption in Call": "Permite Întreruperea Vocii în Apel", + "alphanumeric characters and hyphens": "caractere alfanumerice și cratime", + "Already have an account?": "Deja ai un cont?", + "an assistant": "un asistent", + "and": "și", + "and create a new shared link.": "și creează un nou link partajat.", + "API Base URL": "URL Bază API", + "API Key": "Cheie API", + "API Key created.": "Cheie API creată.", + "API keys": "Chei API", + "April": "Aprilie", + "Archive": "Arhivează", + "Archive All Chats": "Arhivează Toate Conversațiile", + "Archived Chats": "Conversații Arhivate", + "are allowed - Activate this command by typing": "sunt permise - Activează această comandă tastând", + "Are you sure?": "Ești sigur?", + "Attach file": "Atașează fișier", + "Attention to detail": "Atenție la detalii", + "Audio": "Audio", + "Audio settings updated successfully": "Setările audio au fost actualizate cu succes", + "August": "August", + "Auto-playback response": "Redare automată a răspunsului", + "AUTOMATIC1111 Api Auth String": "Șir de Autentificare API AUTOMATIC1111", + "AUTOMATIC1111 Base URL": "URL Bază AUTOMATIC1111", + "AUTOMATIC1111 Base URL is required.": "Este necesar URL-ul Bază AUTOMATIC1111.", + "available!": "disponibil!", + "Back": "Înapoi", + "Bad Response": "Răspuns Greșit", + "Banners": "Bannere", + "Base Model (From)": "Model de Bază (De la)", + "Batch Size (num_batch)": "Dimensiune Lot (num_batch)", + "before": "înainte", + "Being lazy": "Fiind leneș", + "Brave Search API Key": "Cheie API Brave Search", + "Bypass SSL verification for Websites": "Ocolește verificarea SSL pentru site-uri web", + "Call": "Apel", + "Call feature is not supported when using Web STT engine": "Funcția de apel nu este suportată când se utilizează motorul Web STT", + "Camera": "Cameră", + "Cancel": "Anulează", + "Capabilities": "Capabilități", + "Change Password": "Schimbă Parola", + "Chat": "Conversație", + "Chat Background Image": "Imagine de Fundal pentru Conversație", + "Chat Bubble UI": "Interfață cu Bule de Conversație", + "Chat Controls": "Controale pentru Conversație", + "Chat direction": "Direcția conversației", + "Chat History": "Istoricul conversațiilor", + "Chat History is off for this browser.": "Istoricul conversațiilor este dezactivat pentru acest browser.", + "Chats": "Conversații", + "Check Again": "Verifică din Nou", + "Check for updates": "Verifică actualizări", + "Checking for updates...": "Se verifică actualizările...", + "Choose a model before saving...": "Alege un model înainte de a salva...", + "Chunk Overlap": "Suprapunere Bloc", + "Chunk Params": "Parametri Bloc", + "Chunk Size": "Dimensiune Bloc", + "Citation": "Citație", + "Clear memory": "Șterge memoria", + "Click here for help.": "Apasă aici pentru ajutor.", + "Click here to": "Apasă aici pentru", + "Click here to download user import template file.": "Apasă aici pentru a descărca fișierul șablon de import utilizator.", + "Click here to select": "Apasă aici pentru a selecta", + "Click here to select a csv file.": "Apasă aici pentru a selecta un fișier csv.", + "Click here to select a py file.": "Apasă aici pentru a selecta un fișier py.", + "Click here to select documents.": "Apasă aici pentru a selecta documente.", + "click here.": "apasă aici.", + "Click on the user role button to change a user's role.": "Apasă pe butonul rolului utilizatorului pentru a schimba rolul unui utilizator.", + "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permisiunea de scriere în clipboard a fost refuzată. Vă rugăm să verificați setările browserului pentru a acorda accesul necesar.", + "Clone": "Clonează", + "Close": "Închide", + "Code formatted successfully": "Cod formatat cu succes", + "Collection": "Colecție", + "ComfyUI": "ComfyUI", + "ComfyUI Base URL": "URL De Bază ComfyUI", + "ComfyUI Base URL is required.": "Este necesar URL-ul De Bază ComfyUI.", + "Command": "Comandă", + "Concurrent Requests": "Cereri Concurente", + "Confirm": "Confirmă", + "Confirm Password": "Confirmă Parola", + "Confirm your action": "Confirmă acțiunea ta", + "Connections": "Conexiuni", + "Contact Admin for WebUI Access": "Contactează administratorul pentru acces WebUI", + "Content": "Conținut", + "Content Extraction": "Extragere Conținut", + "Context Length": "Lungime Context", + "Continue Response": "Continuă Răspunsul", + "Continue with {{provider}}": "Continuă cu {{provider}}", + "Controls": "Controale", + "Copied shared chat URL to clipboard!": "URL-ul conversației partajate a fost copiat în clipboard!", + "Copy": "Copiază", + "Copy last code block": "Copiază ultimul bloc de cod", + "Copy last response": "Copiază ultimul răspuns", + "Copy Link": "Copiază Link", + "Copying to clipboard was successful!": "Copierea în clipboard a fost realizată cu succes!", + "Create a model": "Creează un model", + "Create Account": "Creează Cont", + "Create new key": "Creează cheie nouă", + "Create new secret key": "Creează cheie secretă nouă", + "Created at": "Creat la", + "Created At": "Creat La", + "Created by": "Creat de", + "CSV Import": "Import CSV", + "Current Model": "Model Curent", + "Current Password": "Parola Curentă", + "Custom": "Personalizat", + "Customize models for a specific purpose": "Personalizează modele pentru un scop specific", + "Dark": "Întunecat", + "Dashboard": "Tablou de Bord", + "Database": "Bază de Date", + "December": "Decembrie", + "Default": "Implicit", + "Default (Automatic1111)": "Implicit (Automatic1111)", + "Default (SentenceTransformers)": "Implicit (SentenceTransformers)", + "Default Model": "Model Implicit", + "Default model updated": "Modelul implicit a fost actualizat", + "Default Prompt Suggestions": "Sugestii de Prompt Implicite", + "Default User Role": "Rolul Implicit al Utilizatorului", + "delete": "șterge", + "Delete": "Șterge", + "Delete a model": "Șterge un model", + "Delete All Chats": "Șterge Toate Conversațiile", + "Delete chat": "Șterge conversația", + "Delete Chat": "Șterge Conversația", + "Delete chat?": "Șterge conversația?", + "Delete Doc": "Șterge document", + "Delete function?": "Șterge funcția?", + "Delete prompt?": "Șterge promptul?", + "delete this link": "șterge acest link", + "Delete tool?": "Șterge instrumentul?", + "Delete User": "Șterge Utilizatorul", + "Deleted {{deleteModelTag}}": "{{deleteModelTag}} șters", + "Deleted {{name}}": "{{name}} șters", + "Description": "Descriere", + "Didn't fully follow instructions": "Nu a urmat complet instrucțiunile", + "Disabled": "Dezactivat", + "Discover a function": "Descoperă o funcție", + "Discover a model": "Descoperă un model", + "Discover a prompt": "Descoperă un prompt", + "Discover a tool": "Descoperă un instrument", + "Discover, download, and explore custom functions": "Descoperă, descarcă și explorează funcții personalizate", + "Discover, download, and explore custom prompts": "Descoperă, descarcă și explorează prompturi personalizate", + "Discover, download, and explore custom tools": "Descoperă, descarcă și explorează instrumente personalizate", + "Discover, download, and explore model presets": "Descoperă, descarcă și explorează presetări de model", + "Dismissible": "Ignorabil", + "Display Emoji in Call": "Afișează Emoji în Apel", + "Display the username instead of You in the Chat": "Afișează numele utilizatorului în loc de Tu în Conversație", + "Do not install functions from sources you do not fully trust.": "Nu instalați funcții din surse în care nu aveți încredere completă.", + "Do not install tools from sources you do not fully trust.": "Nu instalați instrumente din surse în care nu aveți încredere completă.", + "Document": "Document", + "Document Settings": "Setări Document", + "Documentation": "Documentație", + "Documents": "Documente", + "does not make any external connections, and your data stays securely on your locally hosted server.": "nu face nicio conexiune externă, iar datele tale rămân în siguranță pe serverul găzduit local.", + "Don't Allow": "Nu Permite", + "Don't have an account?": "Nu ai un cont?", + "don't install random functions from sources you don't trust.": "nu instala funcții aleatorii din surse în care nu ai încredere.", + "don't install random tools from sources you don't trust.": "nu instala instrumente aleatorii din surse în care nu ai încredere.", + "Don't like the style": "Nu îți place stilul", + "Done": "Gata", + "Download": "Descarcă", + "Download canceled": "Descărcare anulată", + "Download Database": "Descarcă Baza de Date", + "Drop any files here to add to the conversation": "Plasează orice fișiere aici pentru a le adăuga la conversație", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "de ex. '30s', '10m'. Unitățile de timp valide sunt 's', 'm', 'h'.", + "Edit": "Editează", + "Edit Doc": "Editează Document", + "Edit Memory": "Editează Memorie", + "Edit User": "Editează Utilizator", + "ElevenLabs": "ElevenLabs", + "Email": "Email", + "Embedding Batch Size": "Dimensiune Lot de Încapsulare", + "Embedding Model": "Model de Încapsulare", + "Embedding Model Engine": "Motor de Model de Încapsulare", + "Embedding model set to \"{{embedding_model}}\"": "Modelul de încapsulare setat la \"{{embedding_model}}\"", + "Enable Chat History": "Activează Istoricul Conversațiilor", + "Enable Community Sharing": "Activează Partajarea Comunitară", + "Enable New Sign Ups": "Activează Înscrierile Noi", + "Enable Web Search": "Activează Căutarea pe Web", + "Enabled": "Activat", + "Engine": "Motor", + "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Asigurați-vă că fișierul CSV include 4 coloane în această ordine: Nume, Email, Parolă, Rol.", + "Enter {{role}} message here": "Introduceți mesajul pentru {{role}} aici", + "Enter a detail about yourself for your LLMs to recall": "Introduceți un detaliu despre dvs. pe care LLM-urile să-l rețină", + "Enter api auth string (e.g. username:password)": "Introduceți șirul de autentificare API (de ex. username:password)", + "Enter Brave Search API Key": "Introduceți Cheia API Brave Search", + "Enter Chunk Overlap": "Introduceți Suprapunerea Blocului", + "Enter Chunk Size": "Introduceți Dimensiunea Blocului", + "Enter Github Raw URL": "Introduceți URL-ul Raw de pe Github", + "Enter Google PSE API Key": "Introduceți Cheia API Google PSE", + "Enter Google PSE Engine Id": "Introduceți ID-ul Motorului Google PSE", + "Enter Image Size (e.g. 512x512)": "Introduceți Dimensiunea Imaginii (de ex. 512x512)", + "Enter language codes": "Introduceți codurile limbilor", + "Enter model tag (e.g. {{modelTag}})": "Introduceți eticheta modelului (de ex. {{modelTag}})", + "Enter Number of Steps (e.g. 50)": "Introduceți Numărul de Pași (de ex. 50)", + "Enter Score": "Introduceți Scorul", + "Enter Searxng Query URL": "Introduceți URL-ul Interogării Searxng", + "Enter Serper API Key": "Introduceți Cheia API Serper", + "Enter Serply API Key": "Introduceți Cheia API Serply", + "Enter Serpstack API Key": "Introduceți Cheia API Serpstack", + "Enter stop sequence": "Introduceți secvența de oprire", + "Enter system prompt": "Introduceți promptul de sistem", + "Enter Tavily API Key": "Introduceți Cheia API Tavily", + "Enter Tika Server URL": "Introduceți URL-ul Serverului Tika", + "Enter Top K": "Introduceți Top K", + "Enter URL (e.g. http://127.0.0.1:7860/)": "Introduceți URL-ul (de ex. http://127.0.0.1:7860/)", + "Enter URL (e.g. http://localhost:11434)": "Introduceți URL-ul (de ex. http://localhost:11434)", + "Enter Your Email": "Introduceți Email-ul Dvs.", + "Enter Your Full Name": "Introduceți Numele Dvs. Complet", + "Enter your message": "Introduceți mesajul dvs.", + "Enter Your Password": "Introduceți Parola Dvs.", + "Enter Your Role": "Introduceți Rolul Dvs.", + "Error": "Eroare", + "Experimental": "Experimental", + "Export": "Exportă", + "Export All Chats (All Users)": "Exportă Toate Conversațiile (Toți Utilizatorii)", + "Export chat (.json)": "Exportă conversația (.json)", + "Export Chats": "Exportă Conversațiile", + "Export Documents Mapping": "Exportă Maparea Documentelor", + "Export Functions": "Exportă Funcțiile", + "Export LiteLLM config.yaml": "Exportă Configurația LiteLLM config.yaml", + "Export Models": "Exportă Modelele", + "Export Prompts": "Exportă Prompturile", + "Export Tools": "Exportă Instrumentele", + "External Models": "Modele Externe", + "Failed to create API Key.": "Crearea cheii API a eșuat.", + "Failed to read clipboard contents": "Citirea conținutului clipboard-ului a eșuat", + "Failed to update settings": "Actualizarea setărilor a eșuat", + "February": "Februarie", + "Feel free to add specific details": "Adăugați detalii specifice fără nicio ezitare", + "File": "Fișier", + "File Mode": "Mod Fișier", + "File not found.": "Fișierul nu a fost găsit.", + "Files": "Fișiere", + "Filter is now globally disabled": "Filtrul este acum dezactivat global", + "Filter is now globally enabled": "Filtrul este acum activat global", + "Filters": "Filtre", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Detectată falsificarea amprentelor: Nu se pot folosi inițialele ca avatar. Se utilizează imaginea de profil implicită.", + "Fluidly stream large external response chunks": "Transmite fluent blocuri mari de răspuns extern", + "Focus chat input": "Focalizează câmpul de intrare pentru conversație", + "Followed instructions perfectly": "A urmat instrucțiunile perfect", + "Form": "Formular", + "Format your variables using square brackets like this:": "Formatează variabilele folosind paranteze pătrate astfel:", + "Frequency Penalty": "Penalizare de Frecvență", + "Function created successfully": "Funcția a fost creată cu succes", + "Function deleted successfully": "Funcția a fost ștearsă cu succes", + "Function Description (e.g. A filter to remove profanity from text)": "Descrierea Funcției (de ex. Un filtru pentru a elimina profanitatea din text)", + "Function ID (e.g. my_filter)": "ID Funcție (de ex. my_filter)", + "Function is now globally disabled": "Funcția este acum dezactivată global", + "Function is now globally enabled": "Funcția este acum activată global", + "Function Name (e.g. My Filter)": "Nume Funcție (de ex. My Filter)", + "Function updated successfully": "Funcția a fost actualizată cu succes", + "Functions": "Funcții", + "Functions allow arbitrary code execution": "Funcțiile permit executarea arbitrară a codului", + "Functions allow arbitrary code execution.": "Funcțiile permit executarea arbitrară a codului.", + "Functions imported successfully": "Funcțiile au fost importate cu succes", + "General": "General", + "General Settings": "Setări Generale", + "Generate Image": "Generează Imagine", + "Generating search query": "Se generează interogarea de căutare", + "Generation Info": "Informații Generare", + "Get up and running with": "Începeți și rulați cu", + "Global": "Global", + "Good Response": "Răspuns Bun", + "Google PSE API Key": "Cheie API Google PSE", + "Google PSE Engine Id": "ID Motor Google PSE", + "h:mm a": "h:mm a", + "has no conversations.": "nu are conversații.", + "Hello, {{name}}": "Salut, {{name}}", + "Help": "Ajutor", + "Hide": "Ascunde", + "Hide Model": "Ascunde Modelul", + "How can I help you today?": "Cum te pot ajuta astăzi?", + "Hybrid Search": "Căutare Hibridă", + "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Recunosc că am citit și înțeleg implicațiile acțiunii mele. Sunt conștient de riscurile asociate cu executarea codului arbitrar și am verificat fiabilitatea sursei.", + "Image Generation (Experimental)": "Generare Imagine (Experimental)", + "Image Generation Engine": "Motor de Generare a Imaginilor", + "Image Settings": "Setări Imagine", + "Images": "Imagini", + "Import Chats": "Importă Conversațiile", + "Import Documents Mapping": "Importă Maparea Documentelor", + "Import Functions": "Importă Funcțiile", + "Import Models": "Importă Modelele", + "Import Prompts": "Importă Prompturile", + "Import Tools": "Importă Instrumentele", + "Include `--api-auth` flag when running stable-diffusion-webui": "Includeți flag-ul `--api-auth` când rulați stable-diffusion-webui", + "Include `--api` flag when running stable-diffusion-webui": "Includeți flag-ul `--api` când rulați stable-diffusion-webui", + "Info": "Informații", + "Input commands": "Comenzi de intrare", + "Install from Github URL": "Instalează de la URL-ul Github", + "Instant Auto-Send After Voice Transcription": "Trimitere Automată Instantanee După Transcrierea Vocii", + "Interface": "Interfață", + "Invalid Tag": "Etichetă Invalidă", + "January": "Ianuarie", + "join our Discord for help.": "alătură-te Discord-ului nostru pentru ajutor.", + "JSON": "JSON", + "JSON Preview": "Previzualizare JSON", + "July": "Iulie", + "June": "Iunie", + "JWT Expiration": "Expirarea JWT", + "JWT Token": "Token JWT", + "Keep Alive": "Menține Activ", + "Keyboard shortcuts": "Scurtături de la Tastatură", + "Knowledge": "Cunoștințe", + "Language": "Limbă", + "large language models, locally.": "modele mari de limbaj, local.", + "Last Active": "Ultima Activitate", + "Last Modified": "Ultima Modificare", + "Light": "Luminos", + "Listening...": "Ascult...", + "LLMs can make mistakes. Verify important information.": "LLM-urile pot face greșeli. Verificați informațiile importante.", + "Local Models": "Modele Locale", + "LTR": "LTR", + "Made by OpenWebUI Community": "Realizat de Comunitatea OpenWebUI", + "Make sure to enclose them with": "Asigurați-vă că le închideți cu", + "Manage": "Gestionează", + "Manage Models": "Gestionează Modelele", + "Manage Ollama Models": "Gestionează Modelele Ollama", + "Manage Pipelines": "Gestionează Conductele", + "Manage Valves": "Gestionează Valvele", + "March": "Martie", + "Max Tokens (num_predict)": "Număr Maxim de Tokeni (num_predict)", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maxim 3 modele pot fi descărcate simultan. Vă rugăm să încercați din nou mai târziu.", + "May": "Mai", + "Memories accessible by LLMs will be shown here.": "Memoriile accesibile de LLM-uri vor fi afișate aici.", + "Memory": "Memorie", + "Memory added successfully": "Memoria a fost adăugată cu succes", + "Memory cleared successfully": "Memoria a fost ștearsă cu succes", + "Memory deleted successfully": "Memoria a fost ștearsă cu succes", + "Memory updated successfully": "Memoria a fost actualizată cu succes", + "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mesajele pe care le trimiteți după crearea link-ului dvs. nu vor fi partajate. Utilizatorii cu URL-ul vor putea vizualiza conversația partajată.", + "Minimum Score": "Scor Minim", + "Mirostat": "Mirostat", + "Mirostat Eta": "Mirostat Eta", + "Mirostat Tau": "Mirostat Tau", + "MMMM DD, YYYY": "MMMM DD, YYYY", + "MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm", + "MMMM DD, YYYY hh:mm:ss A": "MMMM DD, YYYY hh:mm:ss A", + "Model '{{modelName}}' has been successfully downloaded.": "Modelul '{{modelName}}' a fost descărcat cu succes.", + "Model '{{modelTag}}' is already in queue for downloading.": "Modelul '{{modelTag}}' este deja în coada de descărcare.", + "Model {{modelId}} not found": "Modelul {{modelId}} nu a fost găsit", + "Model {{modelName}} is not vision capable": "Modelul {{modelName}} nu are capacități de viziune", + "Model {{name}} is now {{status}}": "Modelul {{name}} este acum {{status}}", + "Model created successfully!": "Modelul a fost creat cu succes!", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Calea sistemului de fișiere al modelului detectată. Este necesar numele scurt al modelului pentru actualizare, nu se poate continua.", + "Model ID": "ID Model", + "Model not selected": "Modelul nu a fost selectat", + "Model Params": "Parametri Model", + "Model updated successfully": "Modelul a fost actualizat cu succes", + "Model Whitelisting": "Model pe Lista Albă", + "Model(s) Whitelisted": "Model(e) pe Lista Albă", + "Modelfile Content": "Conținutul Fișierului Model", + "Models": "Modele", + "More": "Mai multe", + "Name": "Nume", + "Name Tag": "Etichetă Nume", + "Name your model": "Denumirea modelului", + "New Chat": "Conversație Nouă", + "New Password": "Parolă Nouă", + "No content to speak": "Nu există conținut de vorbit", + "No documents found": "Nu au fost găsite documente", + "No file selected": "Nu a fost selectat niciun fișier", + "No results found": "Nu au fost găsite rezultate", + "No search query generated": "Nu a fost generată nicio interogare de căutare", + "No source available": "Nicio sursă disponibilă", + "No valves to update": "Nu există valve de actualizat", + "None": "Niciunul", + "Not factually correct": "Nu este corect din punct de vedere factual", + "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Notă: Dacă setați un scor minim, căutarea va returna doar documente cu un scor mai mare sau egal cu scorul minim.", + "Notifications": "Notificări", + "November": "Noiembrie", + "num_thread (Ollama)": "num_thread (Ollama)", + "OAuth ID": "ID OAuth", + "October": "Octombrie", + "Off": "Dezactivat", + "Okay, Let's Go!": "Ok, Să Începem!", + "OLED Dark": "Întunecat OLED", + "Ollama": "Ollama", + "Ollama API": "API Ollama", + "Ollama API disabled": "API Ollama dezactivat", + "Ollama API is disabled": "API Ollama este dezactivat", + "Ollama Version": "Versiune Ollama", + "On": "Activat", + "Only": "Doar", + "Only alphanumeric characters and hyphens are allowed in the command string.": "Doar caracterele alfanumerice și cratimele sunt permise în șirul de comandă.", + "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Oops! Țineți-vă bine! Fișierele dvs. sunt încă în cuptorul de procesare. Le pregătim la perfecțiune. Vă rugăm să aveți răbdare și vă vom anunța odată ce sunt gata.", + "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oops! Se pare că URL-ul este invalid. Vă rugăm să verificați din nou și să încercați din nou.", + "Oops! There was an error in the previous response. Please try again or contact admin.": "Oops! A apărut o eroare în răspunsul anterior. Vă rugăm să încercați din nou sau să contactați administratorul.", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! Utilizați o metodă nesuportată (doar frontend). Vă rugăm să serviți WebUI din backend.", + "Open AI (Dall-E)": "Open AI (Dall-E)", + "Open new chat": "Deschide conversație nouă", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Versiunea Open WebUI (v{{OPEN_WEBUI_VERSION}}) este mai mică decât versiunea necesară (v{{REQUIRED_VERSION}})", + "OpenAI": "OpenAI", + "OpenAI API": "API OpenAI", + "OpenAI API Config": "Configurația API OpenAI", + "OpenAI API Key is required.": "Este necesară cheia API OpenAI.", + "OpenAI URL/Key required.": "Este necesar URL-ul/Cheia OpenAI.", + "or": "sau", + "Other": "Altele", + "Password": "Parolă", + "PDF document (.pdf)": "Document PDF (.pdf)", + "PDF Extract Images (OCR)": "Extrage Imagini PDF (OCR)", + "pending": "în așteptare", + "Permission denied when accessing media devices": "Permisiunea refuzată la accesarea dispozitivelor media", + "Permission denied when accessing microphone": "Permisiunea refuzată la accesarea microfonului", + "Permission denied when accessing microphone: {{error}}": "Permisiunea refuzată la accesarea microfonului: {{error}}", + "Personalization": "Personalizare", + "Pin": "Fixează", + "Pinned": "Fixat", + "Pipeline deleted successfully": "Conducta a fost ștearsă cu succes", + "Pipeline downloaded successfully": "Conducta a fost descărcată cu succes", + "Pipelines": "Conducte", + "Pipelines Not Detected": "Conducte Nedetectate", + "Pipelines Valves": "Valvele Conductelor", + "Plain text (.txt)": "Text simplu (.txt)", + "Playground": "Teren de Joacă", + "Please carefully review the following warnings:": "Vă rugăm să revizuiți cu atenție următoarele avertismente:", + "Positive attitude": "Atitudine pozitivă", + "Previous 30 days": "Ultimele 30 de zile", + "Previous 7 days": "Ultimele 7 zile", + "Profile Image": "Imagine de Profil", + "Prompt": "Prompt", + "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (de ex. Spune-mi un fapt amuzant despre Imperiul Roman)", + "Prompt Content": "Conținut Prompt", + "Prompt suggestions": "Sugestii de Prompt", + "Prompts": "Prompturi", + "Pull \"{{searchValue}}\" from Ollama.com": "Extrage \"{{searchValue}}\" de pe Ollama.com", + "Pull a model from Ollama.com": "Extrage un model de pe Ollama.com", + "Query Params": "Parametri Interogare", + "RAG Template": "Șablon RAG", + "Read Aloud": "Citește cu Voce Tare", + "Record voice": "Înregistrează vocea", + "Redirecting you to OpenWebUI Community": "Vă redirecționăm către Comunitatea OpenWebUI", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Referiți-vă la dvs. ca \"Utilizator\" (de ex., \"Utilizatorul învață spaniolă\")", + "Refused when it shouldn't have": "Refuzat când nu ar fi trebuit", + "Regenerate": "Regenerare", + "Release Notes": "Note de Lansare", + "Remove": "Înlătură", + "Remove Model": "Înlătură Modelul", + "Rename": "Redenumește", + "Repeat Last N": "Repetă Ultimele N", + "Request Mode": "Mod de Cerere", + "Reranking Model": "Model de Rearanjare", + "Reranking model disabled": "Modelul de Rearanjare este dezactivat", + "Reranking model set to \"{{reranking_model}}\"": "Modelul de Rearanjare setat la \"{{reranking_model}}\"", + "Reset": "Resetează", + "Reset Upload Directory": "Resetează Directorul de Încărcare", + "Reset Vector Storage": "Resetează Stocarea Vectorilor", + "Response AutoCopy to Clipboard": "Copiere Automată a Răspunsului în Clipboard", + "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notificările de răspuns nu pot fi activate deoarece permisiunile site-ului au fost refuzate. Vă rugăm să vizitați setările browserului pentru a acorda accesul necesar.", + "Role": "Rol", + "Rosé Pine": "Rosé Pine", + "Rosé Pine Dawn": "Rosé Pine Dawn", + "RTL": "RTL", + "Run Llama 2, Code Llama, and other models. Customize and create your own.": "Rulați Llama 2, Code Llama și alte modele. Personalizați și creați-vă propriile modele.", + "Running": "Rulare", + "Save": "Salvează", + "Save & Create": "Salvează & Creează", + "Save & Update": "Salvează & Actualizează", + "Save Tag": "Salvează Eticheta", + "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Salvarea jurnalelor de conversație direct în stocarea browserului dvs. nu mai este suportată. Vă rugăm să luați un moment pentru a descărca și a șterge jurnalele de conversație făcând clic pe butonul de mai jos. Nu vă faceți griji, puteți reimporta ușor jurnalele de conversație în backend prin", + "Scan": "Scanează", + "Scan complete!": "Scanare completă!", + "Scan for documents from {{path}}": "Scanează pentru documente din {{path}}", + "Search": "Caută", + "Search a model": "Caută un model", + "Search Chats": "Caută în Conversații", + "Search Documents": "Caută în Documente", + "Search Functions": "Caută Funcții", + "Search Models": "Caută Modele", + "Search Prompts": "Caută Prompturi", + "Search Query Generation Prompt": "Prompt de Generare Interogare de Căutare", + "Search Query Generation Prompt Length Threshold": "Prag Lungime Prompt de Generare Interogare de Căutare", + "Search Result Count": "Număr Rezultate Căutare", + "Search Tools": "Caută Instrumente", + "Searched {{count}} sites_one": "{{count}} site căutat", + "Searched {{count}} sites_other": "{{count}} alte site-uri căutate", + "Searching \"{{searchQuery}}\"": "Căutare \"{{searchQuery}}\"", + "Searxng Query URL": "URL Interogare Searxng", + "See readme.md for instructions": "Consultați readme.md pentru instrucțiuni", + "See what's new": "Vezi ce e nou", + "Seed": "Sămânță", + "Select a base model": "Selectează un model de bază", + "Select a engine": "Selectează un motor", + "Select a function": "Selectează o funcție", + "Select a mode": "Selectează un mod", + "Select a model": "Selectează un model", + "Select a pipeline": "Selectează o conductă", + "Select a pipeline url": "Selectează un URL de conductă", + "Select a tool": "Selectează un instrument", + "Select an Ollama instance": "Selectează o instanță Ollama", + "Select Documents": "Selectează Documente", + "Select model": "Selectează model", + "Select only one model to call": "Selectează doar un singur model pentru apel", + "Selected model(s) do not support image inputs": "Modelul(e) selectat(e) nu suportă intrări de imagine", + "Send": "Trimite", + "Send a Message": "Trimite un Mesaj", + "Send message": "Trimite mesajul", + "September": "Septembrie", + "Serper API Key": "Cheie API Serper", + "Serply API Key": "Cheie API Serply", + "Serpstack API Key": "Cheie API Serpstack", + "Server connection verified": "Conexiunea la server a fost verificată", + "Set as default": "Setează ca implicit", + "Set Default Model": "Setează Modelul Implicit", + "Set embedding model (e.g. {{model}})": "Setează modelul de încapsulare (de ex. {{model}})", + "Set Image Size": "Setează Dimensiunea Imaginilor", + "Set reranking model (e.g. {{model}})": "Setează modelul de rearanjare (de ex. {{model}})", + "Set Steps": "Setează Pași", + "Set Task Model": "Setează Model de Sarcină", + "Set Voice": "Setează Voce", + "Settings": "Setări", + "Settings saved successfully!": "Setările au fost salvate cu succes!", + "Settings updated successfully": "Setările au fost actualizate cu succes", + "Share": "Partajează", + "Share Chat": "Partajează Conversația", + "Share to OpenWebUI Community": "Partajează cu Comunitatea OpenWebUI", + "short-summary": "scurt-sumar", + "Show": "Afișează", + "Show Admin Details in Account Pending Overlay": "Afișează Detaliile Administratorului în Suprapunerea Contului În Așteptare", + "Show Model": "Afișează Modelul", + "Show shortcuts": "Afișează scurtături", + "Show your support!": "Arată-ți susținerea!", + "Showcased creativity": "Creativitate expusă", + "Sign in": "Autentificare", + "Sign Out": "Deconectare", + "Sign up": "Înregistrare", + "Signing in": "Autentificare", + "Source": "Sursă", + "Speech recognition error: {{error}}": "Eroare de recunoaștere vocală: {{error}}", + "Speech-to-Text Engine": "Motor de Conversie a Vocii în Text", + "Stop Sequence": "Oprește Secvența", + "STT Model": "Model STT", + "STT Settings": "Setări STT", + "Submit": "Trimite", + "Subtitle (e.g. about the Roman Empire)": "Subtitlu (de ex. despre Imperiul Roman)", + "Success": "Succes", + "Successfully updated.": "Actualizat cu succes.", + "Suggested": "Sugerat", + "Support": "Suport", + "Support this plugin:": "Susține acest plugin:", + "System": "Sistem", + "System Prompt": "Prompt de Sistem", + "Tags": "Etichete", + "Tap to interrupt": "Apasă pentru a întrerupe", + "Tavily API Key": "Cheie API Tavily", + "Tell us more:": "Spune-ne mai multe:", + "Temperature": "Temperatură", + "Template": "Șablon", + "Text Completion": "Completare Text", + "Text-to-Speech Engine": "Motor de Conversie a Textului în Vorbire", + "Tfs Z": "Tfs Z", + "Thanks for your feedback!": "Mulțumim pentru feedback!", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Dezvoltatorii din spatele acestui plugin sunt voluntari pasionați din comunitate. Dacă considerați acest plugin util, vă rugăm să luați în considerare contribuția la dezvoltarea sa.", + "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Scorul ar trebui să fie o valoare între 0.0 (0%) și 1.0 (100%).", + "Theme": "Temă", + "Thinking...": "Gândește...", + "This action cannot be undone. Do you wish to continue?": "Această acțiune nu poate fi anulată. Doriți să continuați?", + "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Acest lucru asigură că conversațiile dvs. valoroase sunt salvate în siguranță în baza de date a backend-ului dvs. Mulțumim!", + "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Aceasta este o funcție experimentală, poate să nu funcționeze așa cum vă așteptați și este supusă schimbării în orice moment.", + "This setting does not sync across browsers or devices.": "Această setare nu se sincronizează între browsere sau dispozitive.", + "This will delete": "Aceasta va șterge", + "Thorough explanation": "Explicație detaliată", + "Tika": "Tika", + "Tika Server URL required.": "Este necesar URL-ul serverului Tika.", + "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Sfat: Actualizați mai multe sloturi de variabile consecutiv apăsând tasta tab în câmpul de intrare al conversației după fiecare înlocuire.", + "Title": "Titlu", + "Title (e.g. Tell me a fun fact)": "Titlu (de ex. Spune-mi un fapt amuzant)", + "Title Auto-Generation": "Generare Automată a Titlului", + "Title cannot be an empty string.": "Titlul nu poate fi un șir gol.", + "Title Generation Prompt": "Prompt de Generare a Titlului", + "to": "către", + "To access the available model names for downloading,": "Pentru a accesa numele modelelor disponibile pentru descărcare,", + "To access the GGUF models available for downloading,": "Pentru a accesa modelele GGUF disponibile pentru descărcare,", + "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pentru a accesa WebUI, vă rugăm să contactați administratorul. Administratorii pot gestiona statusurile utilizatorilor din Panoul de Administrare.", + "To add documents here, upload them to the \"Documents\" workspace first.": "Pentru a adăuga documente aici, încărcați-le mai întâi în spațiul de lucru \"Documente\".", + "to chat input.": "către câmpul de intrare al conversației.", + "To select actions here, add them to the \"Functions\" workspace first.": "Pentru a selecta acțiuni aici, adăugați-le mai întâi în spațiul de lucru \"Funcții\".", + "To select filters here, add them to the \"Functions\" workspace first.": "Pentru a selecta filtrele aici, adăugați-le mai întâi în spațiul de lucru \"Funcții\".", + "To select toolkits here, add them to the \"Tools\" workspace first.": "Pentru a selecta kiturile de instrumente aici, adăugați-le mai întâi în spațiul de lucru \"Instrumente\".", + "Today": "Astăzi", + "Toggle settings": "Comută setările", + "Toggle sidebar": "Comută bara laterală", + "Tokens To Keep On Context Refresh (num_keep)": "Tokeni de Păstrat la Reîmprospătarea Contextului (num_keep)", + "Tool created successfully": "Instrumentul a fost creat cu succes", + "Tool deleted successfully": "Instrumentul a fost șters cu succes", + "Tool imported successfully": "Instrumentul a fost importat cu succes", + "Tool updated successfully": "Instrumentul a fost actualizat cu succes", + "Toolkit Description (e.g. A toolkit for performing various operations)": "Descrierea Kiturilor de Instrumente (de ex. Un kit de instrumente pentru efectuarea diferitelor operațiuni)", + "Toolkit ID (e.g. my_toolkit)": "ID Kit de Instrumente (de ex. my_toolkit)", + "Toolkit Name (e.g. My ToolKit)": "Nume Kit de Instrumente (de ex. My ToolKit)", + "Tools": "Instrumente", + "Tools are a function calling system with arbitrary code execution": "Instrumentele sunt un sistem de apelare a funcțiilor cu executare arbitrară a codului", + "Tools have a function calling system that allows arbitrary code execution": "Instrumentele au un sistem de apelare a funcțiilor care permite executarea arbitrară a codului", + "Tools have a function calling system that allows arbitrary code execution.": "Instrumentele au un sistem de apelare a funcțiilor care permite executarea arbitrară a codului.", + "Top K": "Top K", + "Top P": "Top P", + "Trouble accessing Ollama?": "Probleme la accesarea Ollama?", + "TTS Model": "Model TTS", + "TTS Settings": "Setări TTS", + "TTS Voice": "Voce TTS", + "Type": "Tip", + "Type Hugging Face Resolve (Download) URL": "Introduceți URL-ul de Rezolvare (Descărcare) Hugging Face", + "Uh-oh! There was an issue connecting to {{provider}}.": "Uh-oh! A apărut o problemă la conectarea la {{provider}}.", + "UI": "Interfață Utilizator", + "Unknown file type '{{file_type}}'. Proceeding with the file upload anyway.": "Tip de fișier necunoscut '{{file_type}}'. Se continuă totuși cu încărcarea fișierului.", + "Unpin": "Anulează Fixarea", + "Update": "Actualizează", + "Update and Copy Link": "Actualizează și Copiază Link-ul", + "Update password": "Actualizează parola", + "Updated at": "Actualizat la", + "Upload": "Încărcare", + "Upload a GGUF model": "Încarcă un model GGUF", + "Upload Files": "Încarcă Fișiere", + "Upload Pipeline": "Încarcă Conducta", + "Upload Progress": "Progres Încărcare", + "URL Mode": "Mod URL", + "Use '#' in the prompt input to load and select your documents.": "Folosiți '#' în câmpul de intrare al promptului pentru a încărca și selecta documentele dvs.", + "Use Gravatar": "Folosește Gravatar", + "Use Initials": "Folosește Inițialele", + "use_mlock (Ollama)": "use_mlock (Ollama)", + "use_mmap (Ollama)": "use_mmap (Ollama)", + "user": "utilizator", + "User location successfully retrieved.": "Localizarea utilizatorului a fost preluată cu succes.", + "User Permissions": "Permisiuni Utilizator", + "Users": "Utilizatori", + "Utilize": "Utilizează", + "Valid time units:": "Unități de timp valide:", + "Valves": "Valve", + "Valves updated": "Valve actualizate", + "Valves updated successfully": "Valve actualizate cu succes", + "variable": "variabilă", + "variable to have them replaced with clipboard content.": "variabilă pentru a fi înlocuite cu conținutul clipboard-ului.", + "Version": "Versiune", + "Voice": "Voce", + "Warning": "Avertisment", + "Warning:": "Avertisment:", + "Warning: If you update or change your embedding model, you will need to re-import all documents.": "Avertisment: Dacă actualizați sau schimbați modelul de încapsulare, va trebui să reimportați toate documentele.", + "Web": "Web", + "Web API": "API Web", + "Web Loader Settings": "Setări Încărcător Web", + "Web Params": "Parametri Web", + "Web Search": "Căutare Web", + "Web Search Engine": "Motor de Căutare Web", + "Webhook URL": "URL Webhook", + "WebUI Settings": "Setări WebUI", + "WebUI will make requests to": "WebUI va face cereri către", + "What’s New in": "Ce e Nou în", + "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Când istoricul este dezactivat, conversațiile noi din acest browser nu vor apărea în istoricul dvs. pe niciunul dintre dispozitivele dvs.", + "Whisper (Local)": "Whisper (Local)", + "Widescreen Mode": "Mod Ecran Larg", + "Workspace": "Spațiu de Lucru", + "Write a prompt suggestion (e.g. Who are you?)": "Scrieți o sugestie de prompt (de ex. Cine ești?)", + "Write a summary in 50 words that summarizes [topic or keyword].": "Scrieți un rezumat în 50 de cuvinte care rezumă [subiect sau cuvânt cheie].", + "Yesterday": "Ieri", + "You": "Tu", + "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Puteți personaliza interacțiunile dvs. cu LLM-urile adăugând amintiri prin butonul 'Gestionează' de mai jos, făcându-le mai utile și adaptate la dvs.", + "You cannot clone a base model": "Nu puteți clona un model de bază", + "You have no archived conversations.": "Nu aveți conversații arhivate.", + "You have shared this chat": "Ați partajat această conversație", + "You're a helpful assistant.": "Ești un asistent util.", + "You're now logged in.": "Acum ești autentificat.", + "Your account status is currently pending activation.": "Statusul contului dvs. este în așteptare pentru activare.", + "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Întreaga dvs. contribuție va merge direct la dezvoltatorul plugin-ului; Open WebUI nu ia niciun procent. Cu toate acestea, platforma de finanțare aleasă ar putea avea propriile taxe.", + "Youtube": "Youtube", + "Youtube Loader Settings": "Setări Încărcător Youtube" +} \ No newline at end of file