"src/lib/components/chat/Controls/Valves.svelte" did not exist on "665f87e84a4ceb47c0ce9323196fbde1b0a35ffd"
Unverified Commit 4cafea0b authored by Maximilian Pichler's avatar Maximilian Pichler Committed by GitHub
Browse files

Merge branch 'dev' into german-locale

parents cfc9cc8a c7fa024b
......@@ -53,3 +53,134 @@ jobs:
name: compose-logs
path: compose-logs.txt
if-no-files-found: ignore
migration_test:
name: Run Migration Tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
# mysql:
# image: mysql
# env:
# MYSQL_ROOT_PASSWORD: mysql
# MYSQL_DATABASE: mysql
# options: >-
# --health-cmd "mysqladmin ping -h localhost"
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# ports:
# - 3306:3306
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Set up uv
uses: yezz123/setup-uv@v4
with:
uv-venv: venv
- name: Activate virtualenv
run: |
. venv/bin/activate
echo PATH=$PATH >> $GITHUB_ENV
- name: Install dependencies
run: |
uv pip install -r backend/requirements.txt
- name: Test backend with SQLite
id: sqlite
env:
WEBUI_SECRET_KEY: secret-key
GLOBAL_LOG_LEVEL: debug
run: |
cd backend
uvicorn main:app --port "8080" --forwarded-allow-ips '*' &
UVICORN_PID=$!
# Wait up to 20 seconds for the server to start
for i in {1..20}; do
curl -s http://localhost:8080/api/config > /dev/null && break
sleep 1
if [ $i -eq 20 ]; then
echo "Server failed to start"
kill -9 $UVICORN_PID
exit 1
fi
done
# Check that the server is still running after 5 seconds
sleep 5
if ! kill -0 $UVICORN_PID; then
echo "Server has stopped"
exit 1
fi
- name: Test backend with Postgres
if: success() || steps.sqlite.conclusion == 'failure'
env:
WEBUI_SECRET_KEY: secret-key
GLOBAL_LOG_LEVEL: debug
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres
run: |
cd backend
uvicorn main:app --port "8081" --forwarded-allow-ips '*' &
UVICORN_PID=$!
# Wait up to 20 seconds for the server to start
for i in {1..20}; do
curl -s http://localhost:8081/api/config > /dev/null && break
sleep 1
if [ $i -eq 20 ]; then
echo "Server failed to start"
kill -9 $UVICORN_PID
exit 1
fi
done
# Check that the server is still running after 5 seconds
sleep 5
if ! kill -0 $UVICORN_PID; then
echo "Server has stopped"
exit 1
fi
# - name: Test backend with MySQL
# if: success() || steps.sqlite.conclusion == 'failure' || steps.postgres.conclusion == 'failure'
# env:
# WEBUI_SECRET_KEY: secret-key
# GLOBAL_LOG_LEVEL: debug
# DATABASE_URL: mysql://root:mysql@localhost:3306/mysql
# run: |
# cd backend
# uvicorn main:app --port "8083" --forwarded-allow-ips '*' &
# UVICORN_PID=$!
# # Wait up to 20 seconds for the server to start
# for i in {1..20}; do
# curl -s http://localhost:8083/api/config > /dev/null && break
# sleep 1
# if [ $i -eq 20 ]; then
# echo "Server failed to start"
# kill -9 $UVICORN_PID
# exit 1
# fi
# done
# # Check that the server is still running after 5 seconds
# sleep 5
# if ! kill -0 $UVICORN_PID; then
# echo "Server has stopped"
# exit 1
# fi
......@@ -171,6 +171,7 @@ async def fetch_url(url, key):
def merge_models_lists(model_lists):
log.info(f"merge_models_lists {model_lists}")
merged_list = []
for idx, models in enumerate(model_lists):
......@@ -199,14 +200,16 @@ async def get_all_models():
]
responses = await asyncio.gather(*tasks)
log.info(f"get_all_models:responses() {responses}")
models = {
"data": merge_models_lists(
list(
map(
lambda response: (
response["data"]
if response and "data" in response
else None
if (response and "data" in response)
else (response if isinstance(response, list) else None)
),
responses,
)
......
......@@ -168,7 +168,11 @@ except:
STATIC_DIR = str(Path(os.getenv("STATIC_DIR", "./static")).resolve())
shutil.copyfile(f"{FRONTEND_BUILD_DIR}/favicon.png", f"{STATIC_DIR}/favicon.png")
frontend_favicon = f"{FRONTEND_BUILD_DIR}/favicon.png"
if os.path.exists(frontend_favicon):
shutil.copyfile(frontend_favicon, f"{STATIC_DIR}/favicon.png")
else:
logging.warning(f"Frontend favicon not found at {frontend_favicon}")
####################################
# CUSTOM_NAME
......
......@@ -318,11 +318,16 @@ async def get_manifest_json():
app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
app.mount("/cache", StaticFiles(directory=CACHE_DIR), name="cache")
app.mount(
if os.path.exists(FRONTEND_BUILD_DIR):
app.mount(
"/",
SPAStaticFiles(directory=FRONTEND_BUILD_DIR, html=True),
name="spa-static-files",
)
)
else:
log.warning(
f"Frontend build directory not found at '{FRONTEND_BUILD_DIR}'. Serving API only."
)
@app.on_event("shutdown")
......
......@@ -19,8 +19,8 @@ psycopg2-binary
pymysql
bcrypt
litellm==1.35.17
litellm[proxy]==1.35.17
litellm==1.35.28
litellm[proxy]==1.35.28
boto3
......
......@@ -73,7 +73,11 @@ async function* streamLargeDeltasAsRandomChunks(
const chunkSize = Math.min(Math.floor(Math.random() * 3) + 1, content.length);
const chunk = content.slice(0, chunkSize);
yield { done: false, value: chunk };
// Do not sleep if the tab is hidden
// Timers are throttled to 1s in hidden tabs
if (document?.visibilityState !== 'hidden') {
await sleep(5);
}
content = content.slice(chunkSize);
}
}
......
......@@ -38,8 +38,8 @@
/>
{:else}
<img
src={models.length === 1
? `${WEBUI_BASE_URL}/static/favicon.png`
src={$i18n.language === 'dg-DG'
? `/doge.png`
: `${WEBUI_BASE_URL}/static/favicon.png`}
class=" size-12 rounded-full border-[1px] border-gray-200 dark:border-none"
alt="logo"
......
......@@ -325,7 +325,9 @@
{#key message.id}
<div class=" flex w-full message-{message.id}" id="message-{message.id}">
<ProfileImage
src={modelfiles[message.model]?.imageUrl ?? `${WEBUI_BASE_URL}/static/favicon.png`}
src={modelfiles[message.model]?.imageUrl ?? $i18n.language === 'dg-DG'
? `/doge.png`
: `${WEBUI_BASE_URL}/static/favicon.png`}
/>
<div class="w-full overflow-hidden">
......
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "মাইক্রোফোন ব্যবহারের অনুমতি পাওয়া যায়নি: {{error}}",
"Plain text (.txt)": "",
"Playground": "খেলাঘর",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "চ্যাট ইতিহাস সংরক্ষণাগার",
"Profile": "প্রোফাইল",
"Prompt Content": "প্রম্পট কন্টেন্ট",
"Prompt suggestions": "প্রম্পট সাজেশনসমূহ",
"Prompts": "প্রম্পটসমূহ",
......
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "Permís denegat en accedir al micròfon: {{error}}",
"Plain text (.txt)": "",
"Playground": "Zona de Jocs",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "Arxiu d'historial de xat",
"Profile": "Perfil",
"Prompt Content": "Contingut del Prompt",
"Prompt suggestions": "Suggeriments de Prompt",
"Prompts": "Prompts",
......
......@@ -283,11 +283,9 @@
"PDF Extract Images (OCR)": "Text von Bildern aus PDFs extrahieren (OCR)",
"pending": "ausstehend",
"Permission denied when accessing microphone: {{error}}": "Zugriff auf das Mikrofon verweigert: {{error}}",
"Plain text (.txt)": "Nur Text (.txt)",
"Playground": "Playground",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Playground": "Spielplatz",
"Archived Chats": "Archivierte Chats",
"Profile": "Profil",
"Prompt Content": "Prompt-Inhalt",
"Prompt suggestions": "Prompt-Vorschläge",
"Prompts": "Prompts",
......
This diff is collapsed.
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "",
"Plain text (.txt)": "",
"Playground": "",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "",
"Profile": "",
"Prompt Content": "",
"Prompt suggestions": "",
"Prompts": "",
......
......@@ -22,9 +22,9 @@
"Add Tags": "agregar etiquetas",
"Adjusting these settings will apply changes universally to all users.": "Ajustar estas opciones aplicará los cambios universalmente a todos los usuarios.",
"admin": "admin",
"Admin Panel": "Panel de Administrador",
"Admin Panel": "Panel de Administración",
"Admin Settings": "Configuración de Administrador",
"Advanced Parameters": "Parametros Avanzados",
"Advanced Parameters": "Parámetros Avanzados",
"all": "todo",
"All Users": "Todos los Usuarios",
"Allow": "Permitir",
......@@ -41,17 +41,14 @@
"Archive": "",
"Archived Chats": "",
"are allowed - Activate this command by typing": "están permitidos - Active este comando escribiendo",
"Are you sure?": "Esta usted seguro?",
"Attention to detail": "",
"Are you sure?": "¿Está seguro?",
"Audio": "Audio",
"Auto-playback response": "Respuesta de reproducción automática",
"Auto-send input after 3 sec.": "Envía la información entrada automáticamente luego de 3 segundos.",
"AUTOMATIC1111 Base URL": "Dirección URL de AUTOMATIC1111",
"AUTOMATIC1111 Base URL is required.": "La dirección URL de AUTOMATIC1111 es requerida.",
"available!": "¡disponible!",
"Back": "Vuelve atrás",
"Bad Response": "",
"Being lazy": "",
"Back": "Volver",
"Builder Mode": "Modo de Constructor",
"Cancel": "Cancelar",
"Categories": "Categorías",
......@@ -61,14 +58,14 @@
"Chat History is off for this browser.": "El Historial del Chat está apagado para este navegador.",
"Chats": "Chats",
"Check Again": "Verifica de nuevo",
"Check for updates": "Verifica actualizaciones",
"Check for updates": "Verificar actualizaciones",
"Checking for updates...": "Verificando actualizaciones...",
"Choose a model before saving...": "Escoge un modelo antes de guardar los cambios...",
"Chunk Overlap": "Superposición de fragmentos",
"Chunk Params": "Parámetros de fragmentos",
"Chunk Size": "Tamaño de fragmentos",
"Click here for help.": "Presiona aquí para ayuda.",
"Click here to check other modelfiles.": "Presiona aquí para otros modelfiles.",
"Click here for help.": "Presiona aquí para obtener ayuda.",
"Click here to check other modelfiles.": "Presiona aquí para consultar otros modelfiles.",
"Click here to select": "Presiona aquí para seleccionar",
"Click here to select documents.": "Presiona aquí para seleccionar documentos",
"click here.": "Presiona aquí.",
......@@ -82,15 +79,13 @@
"Confirm Password": "Confirmar Contraseña",
"Connections": "Conexiones",
"Content": "Contenido",
"Context Length": "Largura del contexto",
"Continue Response": "",
"Context Length": "Longitud del contexto",
"Conversation Mode": "Modo de Conversación",
"Copied shared chat URL to clipboard!": "",
"Copy": "",
"Copy last code block": "Copia el último bloque de código",
"Copy last response": "Copia la última respuesta",
"Copy Link": "",
"Copying to clipboard was successful!": "¡Copiar al portapapeles fue exitoso!",
"Copying to clipboard was successful!": "¡La copia al portapapeles se ha realizado correctamente!",
"Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "Cree una frase concisa de 3 a 5 palabras como encabezado para la siguiente consulta, respetando estrictamente el límite de 3 a 5 palabras y evitando el uso de la palabra 'título':",
"Create a modelfile": "Crea un modelfile",
"Create Account": "Crear una cuenta",
......@@ -99,7 +94,7 @@
"Current Model": "Modelo Actual",
"Current Password": "Contraseña Actual",
"Custom": "Personalizado",
"Customize Ollama models for a specific purpose": "Personaliza modelos de Ollama para un propósito específico",
"Customize Ollama models for a specific purpose": "Personaliza los modelos de Ollama para un propósito específico",
"Dark": "Oscuro",
"Database": "Base de datos",
"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
......@@ -125,16 +120,15 @@
"Discover a modelfile": "Descubre un modelfile",
"Discover a prompt": "Descubre un Prompt",
"Discover, download, and explore custom prompts": "Descubre, descarga, y explora Prompts personalizados",
"Discover, download, and explore model presets": "Descubra, descargue y explore ajustes preestablecidos de modelos",
"Discover, download, and explore model presets": "Descubre, descarga y explora ajustes preestablecidos de modelos",
"Display the username instead of You in the Chat": "Mostrar el nombre de usuario en lugar de Usted en el chat",
"Document": "Documento",
"Document Settings": "Configuración de Documento",
"Document Settings": "Configuración del Documento",
"Documents": "Documentos",
"does not make any external connections, and your data stays securely on your locally hosted server.": "no realiza ninguna conexión externa y sus datos permanecen seguros en su servidor alojado localmente.",
"Don't Allow": "No Permitir",
"Don't have an account?": "No tienes una cuenta?",
"Don't like the style": "",
"Download": "",
"Don't have an account?": "¿No tienes una cuenta?",
"Download as a File": "Descargar como Archivo",
"Download Database": "Descarga la Base de Datos",
"Drop any files here to add to the conversation": "Suelta cualquier archivo aquí para agregarlo a la conversación",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p.ej. '30s','10m'. Unidades válidas de tiempo son 's', 'm', 'h'.",
......@@ -147,9 +141,10 @@
"Enable Chat History": "Activa el Historial de Chat",
"Enable New Sign Ups": "Habilitar Nuevos Registros",
"Enabled": "Activado",
"Enter {{role}} message here": "Introduzca el mensaje {{role}} aquí",
"Enter {{role}} message here": "Ingrese el mensaje {{role}} aquí",
"Enter API Key": "Ingrese la clave API",
"Enter Chunk Overlap": "Ingresar superposición de fragmentos",
"Enter Chunk Size": "Introduzca el tamaño del fragmento",
"Enter Chunk Size": "Ingrese el tamaño del fragmento",
"Enter Image Size (e.g. 512x512)": "Ingrese el tamaño de la imagen (p.ej. 512x512)",
"Enter LiteLLM API Base URL (litellm_params.api_base)": "Ingrese la URL base de la API LiteLLM (litellm_params.api_base)",
"Enter LiteLLM API Key (litellm_params.api_key)": "Ingrese la clave API LiteLLM (litellm_params.api_key)",
......@@ -158,13 +153,12 @@
"Enter Max Tokens (litellm_params.max_tokens)": "Ingrese tokens máximos (litellm_params.max_tokens)",
"Enter model tag (e.g. {{modelTag}})": "Ingrese la etiqueta del modelo (p.ej. {{modelTag}})",
"Enter Number of Steps (e.g. 50)": "Ingrese el número de pasos (p.ej., 50)",
"Enter Relevance Threshold": "",
"Enter stop sequence": "Introduzca la secuencia de parada",
"Enter Top K": "Introduzca el Top K",
"Enter stop sequence": "Ingrese la secuencia de parada",
"Enter Top K": "Ingrese el Top K",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Ingrese la URL (p.ej., http://127.0.0.1:7860/)",
"Enter Your Email": "Introduce tu correo electrónico",
"Enter Your Full Name": "Introduce tu nombre completo",
"Enter Your Password": "Introduce tu contraseña",
"Enter Your Email": "Ingrese su correo electrónico",
"Enter Your Full Name": "Ingrese su nombre completo",
"Enter Your Password": "Ingrese su contraseña",
"Experimental": "Experimental",
"Export All Chats (All Users)": "Exportar todos los chats (Todos los usuarios)",
"Export Chats": "Exportar Chats",
......@@ -179,8 +173,7 @@
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Se detectó suplantación de huellas: No se pueden usar las iniciales como avatar. Por defecto se utiliza la imagen de perfil predeterminada.",
"Fluidly stream large external response chunks": "Transmita con fluidez grandes fragmentos de respuesta externa",
"Focus chat input": "Enfoca la entrada del chat",
"Followed instructions perfectly": "",
"Format your variables using square brackets like this:": "Formatee sus variables usando corchetes así:",
"Format your variables using square brackets like this:": "Formatea tus variables usando corchetes de la siguiente manera:",
"From (Base Model)": "Desde (Modelo Base)",
"Full Screen Mode": "Modo de Pantalla Completa",
"General": "General",
......@@ -195,14 +188,14 @@
"Hybrid Search": "",
"Image Generation (Experimental)": "Generación de imágenes (experimental)",
"Image Generation Engine": "Motor de generación de imágenes",
"Image Settings": "Configuración de Imágen",
"Image Settings": "Ajustes de la Imágen",
"Images": "Imágenes",
"Import Chats": "Importar chats",
"Import Documents Mapping": "Importar Mapeo de Documentos",
"Import Modelfiles": "Importar Modelfiles",
"Import Prompts": "Importar Prompts",
"Include `--api` flag when running stable-diffusion-webui": "Incluir el indicador `--api` al ejecutar stable-diffusion-webui",
"Interface": "Interface",
"Interface": "Interfaz",
"join our Discord for help.": "Únase a nuestro Discord para obtener ayuda.",
"JSON": "JSON",
"JWT Expiration": "Expiración del JWT",
......@@ -215,7 +208,7 @@
"Listening...": "Escuchando...",
"LLMs can make mistakes. Verify important information.": "Los LLM pueden cometer errores. Verifica la información importante.",
"Made by OpenWebUI Community": "Hecho por la comunidad de OpenWebUI",
"Make sure to enclose them with": "Make sure to enclose them with",
"Make sure to enclose them with": "Asegúrese de adjuntarlos con",
"Manage LiteLLM Models": "Administrar Modelos LiteLLM",
"Manage Models": "Administrar Modelos",
"Manage Ollama Models": "Administrar Modelos Ollama",
......@@ -228,6 +221,8 @@
"MMMM DD, YYYY HH:mm": "",
"Model '{{modelName}}' has been successfully downloaded.": "El modelo '{{modelName}}' se ha descargado correctamente.",
"Model '{{modelTag}}' is already in queue for downloading.": "El modelo '{{modelTag}}' ya está en cola para descargar.",
"Model {{embedding_model}} update complete!": "¡La actualización del modelo {{embedding_model}} fue completada!",
"Model {{embedding_model}} update failed or not required!": "¡La actualización del modelo {{embedding_model}} falló o no es requerida!",
"Model {{modelId}} not found": "El modelo {{modelId}} no fue encontrado",
"Model {{modelName}} already exists.": "El modelo {{modelName}} ya existe.",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Se detectó la ruta del sistema de archivos del modelo. Se requiere el nombre corto del modelo para la actualización, no se puede continuar.",
......@@ -250,53 +245,44 @@
"Name your modelfile": "Nombra tu modelfile",
"New Chat": "Nuevo Chat",
"New Password": "Nueva Contraseña",
"Not factually correct": "",
"Not sure what to add?": "¿No estás seguro de qué añadir?",
"Not sure what to write? Switch to": "¿No estás seguro de qué escribir? Cambia a",
"Notifications": "Notificaciones",
"Not sure what to add?": "¿No sabes qué añadir?",
"Not sure what to write? Switch to": "¿No sabes qué escribir? Cambia a",
"Off": "Desactivado",
"Okay, Let's Go!": "Okay, Let's Go!",
"OLED Dark": "",
"Ollama": "",
"Okay, Let's Go!": "Bien, ¡Vamos!",
"Ollama Base URL": "URL base de Ollama",
"Ollama Version": "Version de Ollama",
"Ollama Version": "Versión de Ollama",
"On": "Activado",
"Only": "Solamente",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Sólo se permiten caracteres alfanuméricos y guiones en la cadena 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.": "¡Ups! ¡Agárrate fuerte! Tus archivos todavía están en el horno de procesamiento. Los estamos cocinando a la perfección. Tenga paciencia y le avisaremos una vez que estén listos.",
"Oops! Looks like the URL is invalid. Please double-check and try again.": "¡Ups! Parece que la URL no es válida. Vuelva a verificar e inténtelo nuevamente.",
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "¡Ups! Estás utilizando un método no compatible (solo frontend). Sirve la WebUI desde el backend.",
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "¡Ups! Estás utilizando un método no compatible (solo frontend). Por favor ejecute la WebUI desde el backend.",
"Open": "Abrir",
"Open AI": "Open AI",
"Open AI (Dall-E)": "Open AI (Dall-E)",
"Open AI": "Abrir AI",
"Open AI (Dall-E)": "Abrir AI (Dall-E)",
"Open new chat": "Abrir nuevo chat",
"OpenAI": "",
"OpenAI API": "OpenAI API",
"OpenAI API Config": "",
"OpenAI API Key is required.": "La Clave de OpenAI API es requerida.",
"OpenAI URL/Key required.": "",
"OpenAI API Key": "Clave de la API de OpenAI",
"OpenAI API Key is required.": "La Clave de la API de OpenAI es requerida.",
"or": "o",
"Other": "",
"Parameters": "Parametros",
"Parameters": "Parámetros",
"Password": "Contraseña",
"PDF document (.pdf)": "",
"PDF Extract Images (OCR)": "Extraer imágenes de PDF (OCR)",
"pending": "pendiente",
"Permission denied when accessing microphone: {{error}}": "Permiso denegado al acceder al micrófono: {{error}}",
"Plain text (.txt)": "",
"Playground": "Playground",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Playground": "Patio de juegos",
"Archived Chats": "Chats archivados",
"Profile": "Perfil",
"Prompt Content": "Contenido del Prompt",
"Prompt suggestions": "Sugerencias de Prompts",
"Prompts": "Prompts",
"Pull a model from Ollama.com": "Halar un modelo de Ollama.com",
"Pull a model from Ollama.com": "Obtener un modelo de Ollama.com",
"Pull Progress": "Progreso de extracción",
"Query Params": "Parámetros de consulta",
"RAG Template": "Plantilla de RAG",
"Raw Format": "Formato en crudo",
"Read Aloud": "",
"Raw Format": "Formato sin procesar",
"Record voice": "Grabar voz",
"Redirecting you to OpenWebUI Community": "Redireccionándote a la comunidad OpenWebUI",
"Refused when it shouldn't have": "",
......@@ -319,14 +305,14 @@
"Save & Update": "Guardar y Actualizar",
"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": "Ya no se admite guardar registros de chat directamente en el almacenamiento de su navegador. Tómese un momento para descargar y eliminar sus registros de chat haciendo clic en el botón a continuación. No te preocupes, puedes volver a importar fácilmente tus registros de chat al backend a través de",
"Scan": "Escanear",
"Scan complete!": "Escaneo completado!",
"Scan complete!": "¡Escaneo completado!",
"Scan for documents from {{path}}": "Escanear en busca de documentos desde {{path}}",
"Search": "Buscar",
"Search a model": "",
"Search Documents": "Buscar Documentos",
"Search Prompts": "Buscar Prompts",
"See readme.md for instructions": "Vea el readme.md para instrucciones",
"See what's new": "Ver qué hay de nuevo",
"See what's new": "Ver las novedades",
"Seed": "Seed",
"Select a mode": "Selecciona un modo",
"Select a model": "Selecciona un modelo",
......@@ -341,9 +327,7 @@
"Set Title Auto-Generation Model": "Establecer modelo de generación automática de títulos",
"Set Voice": "Establecer la voz",
"Settings": "Configuración",
"Settings saved successfully!": "Configuración guardada exitosamente!",
"Share": "",
"Share Chat": "",
"Settings saved successfully!": "¡Configuración guardada exitosamente!",
"Share to OpenWebUI Community": "Compartir con la comunidad OpenWebUI",
"short-summary": "resumen-corto",
"Show": "Mostrar",
......@@ -352,9 +336,8 @@
"Showcased creativity": "",
"sidebar": "barra lateral",
"Sign in": "Iniciar sesión",
"Sign Out": "Desconectar",
"Sign up": "Inscribirse",
"Signing in": "",
"Sign Out": "Cerrar sesión",
"Sign up": "Crear una cuenta",
"Speech recognition error: {{error}}": "Error de reconocimiento de voz: {{error}}",
"Speech-to-Text Engine": "Motor de voz a texto",
"SpeechRecognition API is not supported in this browser.": "La API SpeechRecognition no es compatible con este navegador.",
......@@ -378,8 +361,7 @@
"Theme": "Tema",
"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Esto garantiza que sus valiosas conversaciones se guarden de forma segura en su base de datos en el backend. ¡Gracias!",
"This setting does not sync across browsers or devices.": "Esta configuración no se sincroniza entre navegadores o dispositivos.",
"Thorough explanation": "",
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Consejo: actualice varias variables consecutivamente presionando la tecla tab en la entrada del chat después de cada reemplazo.",
"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Consejo: Actualice múltiples variables consecutivamente presionando la tecla tab en la entrada del chat después de cada reemplazo.",
"Title": "Título",
"Title (e.g. Tell me a fun fact)": "",
"Title Auto-Generation": "Generación automática de títulos",
......@@ -394,16 +376,14 @@
"Top P": "Top P",
"Trouble accessing Ollama?": "¿Problemas para acceder a Ollama?",
"TTS Settings": "Configuración de TTS",
"Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL",
"Uh-oh! There was an issue connecting to {{provider}}.": "¡UH oh! Hubo un problema al conectarse a {{provider}}.",
"Type Hugging Face Resolve (Download) URL": "Escriba la URL (Descarga) de Hugging Face Resolve",
"Uh-oh! There was an issue connecting to {{provider}}.": "¡Uh oh! Hubo un problema al conectarse a {{provider}}.",
"Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Comprenda que actualizar o cambiar su modelo de embedding requiere restablecer la base de datos de vectores y volver a importar todos los documentos. ¡Usted ha sido advertido!",
"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tipo de archivo desconocido '{{file_type}}', pero se acepta y se trata como texto sin formato",
"Update and Copy Link": "",
"Update Embedding Model": "",
"Update embedding model (e.g. {{model}})": "",
"Update password": "Actualiza contraseña",
"Update Reranking Model": "",
"Update reranking model (e.g. {{model}})": "",
"Upload a GGUF model": "Sube un modelo GGUF",
"Update": "Actualizar",
"Update embedding model {{embedding_model}}": "Actualizar modelo de embedding {{embedding_model}}",
"Update password": "Actualizar contraseña",
"Upload a GGUF model": "Subir un modelo GGUF",
"Upload files": "Subir archivos",
"Upload Progress": "Progreso de carga",
"URL Mode": "Modo de URL",
......@@ -424,12 +404,12 @@
"WebUI Add-ons": "WebUI Add-ons",
"WebUI Settings": "Configuración del WebUI",
"WebUI will make requests to": "WebUI realizará solicitudes a",
"What’s New in": "Lo qué hay de nuevo en",
"What’s New in": "Novedades en",
"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Cuando el historial está desactivado, los nuevos chats en este navegador no aparecerán en el historial de ninguno de sus dispositivos..",
"Whisper (Local)": "Whisper (Local)",
"Write a prompt suggestion (e.g. Who are you?)": "Escribe una sugerencia para un prompt (por ejemplo, ¿quién eres?)",
"Write a summary in 50 words that summarizes [topic or keyword].": "Escribe un resumen en 50 palabras que resuma [tema o palabra clave].",
"You": "Usted",
"You're a helpful assistant.": "Eres un asistente útil.",
"You're now logged in.": "Ya has iniciado sesión."
"You're now logged in.": "Has iniciado sesión."
}
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "هنگام دسترسی به میکروفون، اجازه داده نشد: {{error}}",
"Plain text (.txt)": "",
"Playground": "زمین بازی",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "آرشیو تاریخچه چت",
"Profile": "پروفایل",
"Prompt Content": "محتویات پرامپت",
"Prompt suggestions": "پیشنهادات پرامپت",
"Prompts": "پرامپت\u200cها",
......
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "Permission refusée lors de l'accès au microphone : {{error}}",
"Plain text (.txt)": "",
"Playground": "Aire de jeu",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "enregistrement du chat",
"Profile": "Profil",
"Prompt Content": "Contenu du prompt",
"Prompt suggestions": "Suggestions de prompt",
"Prompts": "Prompts",
......
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "Permission refusée lors de l'accès au microphone : {{error}}",
"Plain text (.txt)": "",
"Playground": "Aire de jeu",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "enregistrement du chat",
"Profile": "Profil",
"Prompt Content": "Contenu du prompt",
"Prompt suggestions": "Suggestions de prompt",
"Prompts": "Prompts",
......
......@@ -283,11 +283,9 @@
"PDF Extract Images (OCR)": "Estrazione immagini PDF (OCR)",
"pending": "in sospeso",
"Permission denied when accessing microphone: {{error}}": "Autorizzazione negata durante l'accesso al microfono: {{error}}",
"Plain text (.txt)": "",
"Playground": "Playground",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Playground": "Terreno di gioco",
"Archived Chats": "Chat archiviate",
"Profile": "Profilo",
"Prompt Content": "Contenuto del prompt",
"Prompt suggestions": "Suggerimenti prompt",
"Prompts": "Prompt",
......
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "マイクへのアクセス時に権限が拒否されました: {{error}}",
"Plain text (.txt)": "",
"Playground": "プレイグラウンド",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "チャット記録",
"Profile": "プロフィール",
"Prompt Content": "プロンプトの内容",
"Prompt suggestions": "プロンプトの提案",
"Prompts": "プロンプト",
......
......@@ -285,9 +285,8 @@
"Permission denied when accessing microphone: {{error}}": "ნებართვა უარყოფილია მიკროფონზე წვდომისას: {{error}}",
"Plain text (.txt)": "",
"Playground": "სათამაშო მოედანი",
"Positive attitude": "",
"Profile Image": "",
"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
"Archived Chats": "ჩატის ისტორიის არქივი",
"Profile": "პროფილი",
"Prompt Content": "მოთხოვნის შინაარსი",
"Prompt suggestions": "მოთხოვნის რჩევები",
"Prompts": "მოთხოვნები",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment