diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index dfceaacc1..32c331654 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -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 diff --git a/backend/apps/openai/main.py b/backend/apps/openai/main.py index d9e378303..b5d1e68d6 100644 --- a/backend/apps/openai/main.py +++ b/backend/apps/openai/main.py @@ -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, ) diff --git a/backend/config.py b/backend/config.py index f864062d9..f8dbc4d2a 100644 --- a/backend/config.py +++ b/backend/config.py @@ -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 diff --git a/backend/main.py b/backend/main.py index 1b2772627..91cce711b 100644 --- a/backend/main.py +++ b/backend/main.py @@ -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( - "/", - SPAStaticFiles(directory=FRONTEND_BUILD_DIR, html=True), - name="spa-static-files", -) +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") diff --git a/backend/requirements.txt b/backend/requirements.txt index 336cae17a..4ae93ca0b 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -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 diff --git a/src/lib/apis/streaming/index.ts b/src/lib/apis/streaming/index.ts index 19e4d8fc7..aad42b2b6 100644 --- a/src/lib/apis/streaming/index.ts +++ b/src/lib/apis/streaming/index.ts @@ -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 }; - await sleep(5); + // 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); } } diff --git a/src/lib/components/chat/Messages/Placeholder.svelte b/src/lib/components/chat/Messages/Placeholder.svelte index 7e0a98cb1..d9e04972f 100644 --- a/src/lib/components/chat/Messages/Placeholder.svelte +++ b/src/lib/components/chat/Messages/Placeholder.svelte @@ -38,8 +38,8 @@ /> {:else} logo
diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index 2044e2e5b..0c51da124 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -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": "প্রম্পটসমূহ", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index d845b2e1d..e9c37bd41 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -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", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index c6ab77ca2..06fb0ded1 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -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", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json new file mode 100644 index 000000000..2e672cf96 --- /dev/null +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -0,0 +1,373 @@ +{ + "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' or '-1' for no expire. Much permanent, very wow.", + "(Beta)": "(Beta)", + "(e.g. `sh webui.sh --api`)": "(such e.g. `sh webui.sh --api`)", + "(latest)": "(much latest)", + "{{modelName}} is thinking...": "{{modelName}} is thinkin'...", + "{{webUIName}} Backend Required": "{{webUIName}} Backend Much Required", + "a user": "such user", + "About": "Much About", + "Account": "Account", + "Action": "Action", + "Add a model": "Add a model", + "Add a model tag name": "Add a model tag name", + "Add a short description about what this modelfile does": "Add short description about what this modelfile does", + "Add a short title for this prompt": "Add short title for this prompt", + "Add a tag": "Add such tag", + "Add Docs": "Add Docs", + "Add Files": "Add Files", + "Add message": "Add Prompt", + "add tags": "add tags", + "Adjusting these settings will apply changes universally to all users.": "Adjusting these settings will apply changes to all users. Such universal, very wow.", + "admin": "admin", + "Admin Panel": "Admin Panel", + "Admin Settings": "Admin Settings", + "Advanced Parameters": "Advanced Parameters", + "all": "all", + "All Users": "All Users", + "Allow": "Allow", + "Allow Chat Deletion": "Allow Delete Chats", + "alphanumeric characters and hyphens": "so alpha, many hyphen", + "Already have an account?": "Such account exists?", + "an assistant": "such assistant", + "and": "and", + "API Base URL": "API Base URL", + "API Key": "API Key", + "API RPM": "API RPM", + "are allowed - Activate this command by typing": "are allowed. Activate typing", + "Are you sure?": "Such certainty?", + "Audio": "Audio", + "Auto-playback response": "Auto-playback response", + "Auto-send input after 3 sec.": "Auto-send after 3 sec.", + "AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL", + "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Base URL is required.", + "available!": "available! So excite!", + "Back": "Back", + "Builder Mode": "Builder Mode", + "Cancel": "Cancel", + "Categories": "Categories", + "Change Password": "Change Password", + "Chat": "Chat", + "Chat History": "Chat History", + "Chat History is off for this browser.": "Chat History off for this browser. Such sadness.", + "Chats": "Chats", + "Check Again": "Check Again", + "Check for updates": "Check for updates", + "Checking for updates...": "Checking for updates... Such anticipation...", + "Choose a model before saving...": "Choose model before saving... Wow choose first.", + "Chunk Overlap": "Chunk Overlap", + "Chunk Params": "Chunk Params", + "Chunk Size": "Chunk Size", + "Click here for help.": "Click for help. Much assist.", + "Click here to check other modelfiles.": "Click to check other modelfiles.", + "Click here to select": "Click to select", + "Click here to select documents.": "Click to select documents", + "click here.": "click here. Such click.", + "Click on the user role button to change a user's role.": "Click user role button to change role.", + "Close": "Close", + "Collection": "Collection", + "Command": "Command", + "Confirm Password": "Confirm Password", + "Connections": "Connections", + "Content": "Content", + "Context Length": "Context Length", + "Conversation Mode": "Conversation Mode", + "Copy last code block": "Copy last code block", + "Copy last response": "Copy last response", + "Copying to clipboard was successful!": "Copying to clipboard was success! Very success!", + "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':": "Create short phrase, 3-5 word, as header for query, much strict, avoid 'title':", + "Create a modelfile": "Create modelfile", + "Create Account": "Create Account", + "Created at": "Created at", + "Created by": "Created by", + "Current Model": "Current Model", + "Current Password": "Current Password", + "Custom": "Custom", + "Customize Ollama models for a specific purpose": "Customize Ollama models for purpose", + "Dark": "Dark", + "Database": "Database", + "DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm", + "Default": "Default", + "Default (Automatic1111)": "Default (Automatic1111)", + "Default (Web API)": "Default (Web API)", + "Default model updated": "Default model much updated", + "Default Prompt Suggestions": "Default Prompt Suggestions", + "Default User Role": "Default User Role", + "delete": "delete", + "Delete a model": "Delete a model", + "Delete chat": "Delete chat", + "Delete Chats": "Delete Chats", + "Deleted {{deleteModelTag}}": "Deleted {{deleteModelTag}}", + "Deleted {tagName}": "Deleted {tagName}", + "Description": "Description", + "Notifications": "Notifications", + "Disabled": "Disabled", + "Discover a modelfile": "Discover modelfile", + "Discover a prompt": "Discover a prompt", + "Discover, download, and explore custom prompts": "Discover, download, and explore custom prompts", + "Discover, download, and explore model presets": "Discover, download, and explore model presets", + "Display the username instead of You in the Chat": "Display username instead of You in Chat", + "Document": "Document", + "Document Settings": "Document Settings", + "Documents": "Documents", + "does not make any external connections, and your data stays securely on your locally hosted server.": "does not connect external, data stays safe locally.", + "Don't Allow": "Don't Allow", + "Don't have an account?": "No account? Much sad.", + "Download as a File": "Download as File", + "Download Database": "Download Database", + "Drop any files here to add to the conversation": "Drop files here to add to conversation", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "e.g. '30s','10m'. Much time units are 's', 'm', 'h'.", + "Edit Doc": "Edit Doge", + "Edit User": "Edit Wowser", + "Email": "Email", + "Embedding model: {{embedding_model}}": "Embedding model: {{embedding_model}}", + "Enable Chat History": "Activate Chat Story", + "Enable New Sign Ups": "Enable New Bark Ups", + "Enabled": "So Activated", + "Enter {{role}} message here": "Enter {{role}} bork here", + "Enter API Key": "Enter API Bark", + "Enter Chunk Overlap": "Enter Overlap of Chunks", + "Enter Chunk Size": "Enter Size of Chunk", + "Enter Image Size (e.g. 512x512)": "Enter Size of Wow (e.g. 512x512)", + "Enter LiteLLM API Base URL (litellm_params.api_base)": "Enter Base URL of LiteLLM API (litellm_params.api_base)", + "Enter LiteLLM API Key (litellm_params.api_key)": "Enter API Bark of LiteLLM (litellm_params.api_key)", + "Enter LiteLLM API RPM (litellm_params.rpm)": "Enter RPM of LiteLLM API (litellm_params.rpm)", + "Enter LiteLLM Model (litellm_params.model)": "Enter Model of LiteLLM (litellm_params.model)", + "Enter Max Tokens (litellm_params.max_tokens)": "Enter Maximum Tokens (litellm_params.max_tokens)", + "Enter model tag (e.g. {{modelTag}})": "Enter model doge tag (e.g. {{modelTag}})", + "Enter Number of Steps (e.g. 50)": "Enter Number of Steps (e.g. 50)", + "Enter stop sequence": "Enter stop bark", + "Enter Top K": "Enter Top Wow", + "Enter URL (e.g. http://127.0.0.1:7860/)": "Enter URL (e.g. http://127.0.0.1:7860/)", + "Enter Your Email": "Enter Your Dogemail", + "Enter Your Full Name": "Enter Your Full Wow", + "Enter Your Password": "Enter Your Barkword", + "Experimental": "Much Experiment", + "Export All Chats (All Users)": "Export All Chats (All Doggos)", + "Export Chats": "Export Barks", + "Export Documents Mapping": "Export Mappings of Dogos", + "Export Modelfiles": "Export Modelfiles", + "Export Prompts": "Export Promptos", + "Failed to read clipboard contents": "Failed to read clipboard borks", + "File Mode": "Bark Mode", + "File not found.": "Bark not found.", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Fingerprint dogeing: Unable to use initials as avatar. Defaulting to default doge image.", + "Fluidly stream large external response chunks": "Fluidly wow big chunks", + "Focus chat input": "Focus chat bork", + "Format your variables using square brackets like this:": "Format variables using square brackets like wow:", + "From (Base Model)": "From (Base Wow)", + "Full Screen Mode": "Much Full Bark Mode", + "General": "Woweral", + "General Settings": "General Doge Settings", + "Hello, {{name}}": "Much helo, {{name}}", + "Hide": "Hide", + "Hide Additional Params": "Hide Extra Barkos", + "How can I help you today?": "How can I halp u today?", + "Image Generation (Experimental)": "Image Wow (Much Experiment)", + "Image Generation Engine": "Image Engine", + "Image Settings": "Settings for Wowmage", + "Images": "Wowmages", + "Import Chats": "Import Barks", + "Import Documents Mapping": "Import Doge Mapping", + "Import Modelfiles": "Import Modelfiles", + "Import Prompts": "Import Promptos", + "Include `--api` flag when running stable-diffusion-webui": "Include `--api` flag when running stable-diffusion-webui", + "Interface": "Interface", + "join our Discord for help.": "join our Discord for help.", + "JSON": "JSON", + "JWT Expiration": "JWT Expire", + "JWT Token": "JWT Borken", + "Keep Alive": "Keep Wow", + "Keyboard shortcuts": "Keyboard Barkcuts", + "Language": "Doge Speak", + "Light": "Light", + "Listening...": "Listening...", + "LLMs can make mistakes. Verify important information.": "LLMs can make borks. Verify important info.", + "Made by OpenWebUI Community": "Made by OpenWebUI Community", + "Make sure to enclose them with": "Make sure to enclose them with", + "Manage LiteLLM Models": "Manage LiteLLM Models", + "Manage Models": "Manage Wowdels", + "Manage Ollama Models": "Manage Ollama Wowdels", + "Max Tokens": "Max Tokens", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum of 3 models can be downloaded simultaneously. Please try again later.", + "Mirostat": "Mirostat", + "Mirostat Eta": "Mirostat Eta", + "Mirostat Tau": "Mirostat Tau", + "MMMM DD, YYYY": "MMMM DD, YYYY", + "Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' has been successfully downloaded.", + "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' is already in queue for downloading.", + "Model {{embedding_model}} update complete!": "Model {{embedding_model}} update complete!", + "Model {{embedding_model}} update failed or not required!": "Model {{embedding_model}} update failed or not required!", + "Model {{modelId}} not found": "Model {{modelId}} not found", + "Model {{modelName}} already exists.": "Model {{modelName}} already exists.", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Model filesystem bark detected. Model shortname is required for update, cannot continue.", + "Model Name": "Wowdel Name", + "Model not selected": "Model not selected", + "Model Tag Name": "Wowdel Tag Name", + "Model Whitelisting": "Wowdel Whitelisting", + "Model(s) Whitelisted": "Wowdel(s) Whitelisted", + "Modelfile": "Modelfile", + "Modelfile Advanced Settings": "Modelfile Wow Settings", + "Modelfile Content": "Modelfile Content", + "Modelfiles": "Modelfiles", + "Models": "Wowdels", + "My Documents": "My Doguments", + "My Modelfiles": "My Modelfiles", + "My Prompts": "My Promptos", + "Name": "Name", + "Name Tag": "Name Tag", + "Name your modelfile": "Name your modelfile", + "New Chat": "New Bark", + "New Password": "New Barkword", + "Not sure what to add?": "Not sure what to add?", + "Not sure what to write? Switch to": "Not sure what to write? Switch to", + "Off": "Off", + "Okay, Let's Go!": "Okay, Let's Go!", + "Ollama Base URL": "Ollama Base Bark", + "Ollama Version": "Ollama Version", + "On": "On", + "Only": "Only", + "Only alphanumeric characters and hyphens are allowed in the command string.": "Only wow characters and hyphens are allowed in the bork string.", + "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 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! Looks like the URL is invalid. Please double-check and try again.": "Oops! Looks like the URL is invalid. Please double-check and try again.", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.", + "Open": "Open", + "Open AI": "Open AI", + "Open AI (Dall-E)": "Open AI (Dall-E)", + "Open new chat": "Open new bark", + "OpenAI API": "OpenAI API", + "OpenAI API Key": "OpenAI Bark Key", + "OpenAI API Key is required.": "OpenAI Bark Key is required.", + "or": "or", + "Parameters": "Parametos", + "Password": "Barkword", + "PDF Extract Images (OCR)": "PDF Extract Wowmages (OCR)", + "pending": "pending", + "Permission denied when accessing microphone: {{error}}": "Permission denied when accessing microphone: {{error}}", + "Playground": "Playground", + "Profile": "Profile", + "Prompt Content": "Prompt Content", + "Prompt suggestions": "Prompt wowgestions", + "Prompts": "Promptos", + "Pull a model from Ollama.com": "Pull a wowdel from Ollama.com", + "Pull Progress": "Pull Progress", + "Query Params": "Query Bark", + "RAG Template": "RAG Template", + "Raw Format": "Raw Wowmat", + "Record voice": "Record Bark", + "Redirecting you to OpenWebUI Community": "Redirecting you to OpenWebUI Community", + "Release Notes": "Release Borks", + "Repeat Last N": "Repeat Last N", + "Repeat Penalty": "Repeat Penalty", + "Request Mode": "Request Bark", + "Reset Vector Storage": "Reset Vector Storage", + "Response AutoCopy to Clipboard": "Copy Bark Auto Bark", + "Role": "Role", + "Rosé Pine": "Rosé Pine", + "Rosé Pine Dawn": "Rosé Pine Dawn", + "Save": "Save much wow", + "Save & Create": "Save & Create much create", + "Save & Submit": "Save & Submit very submit", + "Save & Update": "Save & Update much update", + "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": "Saving chat logs in browser storage not support anymore. Pls download and delete your chat logs by click button below. Much easy re-import to backend through", + "Scan": "Scan much scan", + "Scan complete!": "Scan complete! Very wow!", + "Scan for documents from {{path}}": "Scan for documents from {{path}} wow", + "Search": "Search very search", + "Search Documents": "Search Documents much find", + "Search Prompts": "Search Prompts much wow", + "See readme.md for instructions": "See readme.md for instructions wow", + "See what's new": "See what's new so amaze", + "Seed": "Seed very plant", + "Select a mode": "Select a mode very choose", + "Select a model": "Select a model much choice", + "Select an Ollama instance": "Select an Ollama instance very choose", + "Send a Message": "Send a Message much message", + "Send message": "Send message very send", + "Server connection verified": "Server connection verified much secure", + "Set as default": "Set as default very default", + "Set Default Model": "Set Default Model much model", + "Set Image Size": "Set Image Size very size", + "Set Steps": "Set Steps so many steps", + "Set Title Auto-Generation Model": "Set Title Auto-Generation Model very auto-generate", + "Set Voice": "Set Voice so speak", + "Settings": "Settings much settings", + "Settings saved successfully!": "Settings saved successfully! Very success!", + "Share to OpenWebUI Community": "Share to OpenWebUI Community much community", + "short-summary": "short-summary so short", + "Show": "Show much show", + "Show Additional Params": "Show Additional Params very many params", + "Show shortcuts": "Show shortcuts much shortcut", + "sidebar": "sidebar much side", + "Sign in": "Sign in very sign", + "Sign Out": "Sign Out much logout", + "Sign up": "Sign up much join", + "Speech recognition error: {{error}}": "Speech recognition error: {{error}} so error", + "Speech-to-Text Engine": "Speech-to-Text Engine much speak", + "SpeechRecognition API is not supported in this browser.": "SpeechRecognition API is not supported in this browser. Much sad.", + "Stop Sequence": "Stop Sequence much stop", + "STT Settings": "STT Settings very settings", + "Submit": "Submit much submit", + "Success": "Success very success", + "Successfully updated.": "Successfully updated. Very updated.", + "Sync All": "Sync All much sync", + "System": "System very system", + "System Prompt": "System Prompt much prompt", + "Tags": "Tags very tags", + "Temperature": "Temperature very temp", + "Template": "Template much template", + "Text Completion": "Text Completion much complete", + "Text-to-Speech Engine": "Text-to-Speech Engine much speak", + "Tfs Z": "Tfs Z much Z", + "Theme": "Theme much theme", + "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "This ensures that your valuable conversations are securely saved to your backend database. Thank you! Much secure!", + "This setting does not sync across browsers or devices.": "This setting does not sync across browsers or devices. Very not sync.", + "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement. Much tip!", + "Title": "Title very title", + "Title Auto-Generation": "Title Auto-Generation much auto-gen", + "Title Generation Prompt": "Title Generation Prompt very prompt", + "to": "to very to", + "To access the available model names for downloading,": "To access the available model names for downloading, much access", + "To access the GGUF models available for downloading,": "To access the GGUF models available for downloading, much access", + "to chat input.": "to chat input. Very chat.", + "Toggle settings": "Toggle settings much toggle", + "Toggle sidebar": "Toggle sidebar much toggle", + "Top K": "Top K very top", + "Top P": "Top P very top", + "Trouble accessing Ollama?": "Trouble accessing Ollama? Much trouble?", + "TTS Settings": "TTS Settings much settings", + "Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL much download", + "Uh-oh! There was an issue connecting to {{provider}}.": "Uh-oh! There was an issue connecting to {{provider}}. Much uh-oh!", + "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned!": "Understand that updating or changing your embedding model requires reset of the vector database and re-import of all documents. You have been warned! Very understand!", + "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Unknown File Type '{{file_type}}', but accepting and treating as plain text very unknown", + "Update": "Update much update", + "Update embedding model {{embedding_model}}": "Update embedding model {{embedding_model}} much update", + "Update password": "Update password much change", + "Upload a GGUF model": "Upload a GGUF model very upload", + "Upload files": "Upload files very upload", + "Upload Progress": "Upload Progress much progress", + "URL Mode": "URL Mode much mode", + "Use '#' in the prompt input to load and select your documents.": "Use '#' in the prompt input to load and select your documents. Much use.", + "Use Gravatar": "Use Gravatar much avatar", + "Use Initials": "Use Initials much initial", + "user": "user much user", + "User Permissions": "User Permissions much permissions", + "Users": "Users much users", + "Utilize": "Utilize very use", + "Valid time units:": "Valid time units: much time", + "variable": "variable very variable", + "variable to have them replaced with clipboard content.": "variable to have them replaced with clipboard content. Very replace.", + "Version": "Version much version", + "Web": "Web very web", + "WebUI Add-ons": "WebUI Add-ons very add-ons", + "WebUI Settings": "WebUI Settings much settings", + "WebUI will make requests to": "WebUI will make requests to much request", + "What’s New in": "What’s New in much new", + "When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "When history is turned off, new chats on this browser won't appear in your history on any of your devices. Much history.", + "Whisper (Local)": "Whisper (Local) much whisper", + "Write a prompt suggestion (e.g. Who are you?)": "Write a prompt suggestion (e.g. Who are you?) much suggest", + "Write a summary in 50 words that summarizes [topic or keyword].": "Write a summary in 50 words that summarizes [topic or keyword]. Much summarize.", + "You": "You very you", + "You're a helpful assistant.": "You're a helpful assistant. Much helpful.", + "You're now logged in.": "You're now logged in. Much logged." +} diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 6ca2c9215..c0d0929b9 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -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": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 9661a6b46..fb9c7caf9 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -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." } diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 2799254f5..74165c71c 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -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ها", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index 517612934..dc3763d95 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -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", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 7a0b2d2fb..24f25bf4b 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -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", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 091594030..bdfe1f72f 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -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", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 035a83c90..32ba7cac9 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -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": "プロンプト", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index 5643e53eb..9cd623e9e 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -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": "მოთხოვნები", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 88064beb6..d3b49103a 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -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": "프롬프트", diff --git a/src/lib/i18n/locales/languages.json b/src/lib/i18n/locales/languages.json index 515f05e1f..062a61689 100644 --- a/src/lib/i18n/locales/languages.json +++ b/src/lib/i18n/locales/languages.json @@ -94,5 +94,9 @@ { "code": "zh-TW", "title": "Chinese (Traditional)" + }, + { + "code": "dg-DG", + "title": "Doge 🐶" } ] diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 328c3e99f..75d2ba285 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -285,9 +285,8 @@ "Permission denied when accessing microphone: {{error}}": "Toestemming geweigerd bij toegang tot microfoon: {{error}}", "Plain text (.txt)": "", "Playground": "Speeltuin", - "Positive attitude": "", - "Profile Image": "", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Archived Chats": "chatrecord", + "Profile": "Profiel", "Prompt Content": "Prompt Inhoud", "Prompt suggestions": "Prompt suggesties", "Prompts": "Prompts", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 260d9f0c7..571f343d5 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -283,11 +283,9 @@ "PDF Extract Images (OCR)": "Extrair Imagens de PDF (OCR)", "pending": "pendente", "Permission denied when accessing microphone: {{error}}": "Permissão negada ao acessar o microfone: {{error}}", - "Plain text (.txt)": "", - "Playground": "Playground", - "Positive attitude": "", - "Profile Image": "", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Playground": "Parque infantil", + "Archived Chats": "Bate-papos arquivados", + "Profile": "Perfil", "Prompt Content": "Conteúdo do Prompt", "Prompt suggestions": "Sugestões de Prompt", "Prompts": "Prompts", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 89b509c5b..9014fc1ed 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -283,11 +283,9 @@ "PDF Extract Images (OCR)": "Extrair Imagens de PDF (OCR)", "pending": "pendente", "Permission denied when accessing microphone: {{error}}": "Permissão negada ao acessar o microfone: {{error}}", - "Plain text (.txt)": "", - "Playground": "Playground", - "Positive attitude": "", - "Profile Image": "", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Playground": "Parque infantil", + "Archived Chats": "Bate-papos arquivados", + "Profile": "Perfil", "Prompt Content": "Conteúdo do Prompt", "Prompt suggestions": "Sugestões de Prompt", "Prompts": "Prompts", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index ba8c93aff..cd666faa9 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -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": "Промпты", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index a04caf433..e5246c9ad 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -285,9 +285,8 @@ "Permission denied when accessing microphone: {{error}}": "Mikrofona erişim izni reddedildi: {{error}}", "Plain text (.txt)": "", "Playground": "Oyun Alanı", - "Positive attitude": "", - "Profile Image": "", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Archived Chats": "sohbet kaydı", + "Profile": "Profil", "Prompt Content": "Prompt İçeriği", "Prompt suggestions": "Prompt önerileri", "Prompts": "Promptlar", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index ec4e21ca1..41c95bac2 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -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": "Промти", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 2b8035428..b5bf51d86 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -285,9 +285,8 @@ "Permission denied when accessing microphone: {{error}}": "Quyền truy cập micrô bị từ chối: {{error}}", "Plain text (.txt)": "", "Playground": "Thử nghiệm (Playground)", - "Positive attitude": "Thể hiện thái độ tích cực", - "Profile Image": "", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Archived Chats": "bản ghi trò chuyện", + "Profile": "Hồ sơ", "Prompt Content": "Nội dung prompt", "Prompt suggestions": "Gợi ý prompt", "Prompts": "Prompt", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index f2936aed1..1405d32ce 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -283,11 +283,9 @@ "PDF Extract Images (OCR)": "PDF图像处理(使用OCR)", "pending": "待定", "Permission denied when accessing microphone: {{error}}": "访问麦克风时权限被拒绝:{{error}}", - "Plain text (.txt)": "", - "Playground": "Playground", - "Positive attitude": "", - "Profile Image": "", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Playground": "AI 对话游乐场", + "Archived Chats": "聊天记录存档", + "Profile": "个人资料", "Prompt Content": "提示词内容", "Prompt suggestions": "提示词建议", "Prompts": "提示词", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 09ffcbf53..5717ca842 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -285,9 +285,8 @@ "Permission denied when accessing microphone: {{error}}": "存取麥克風時被拒絕權限: {{error}}", "Plain text (.txt)": "", "Playground": "AI 對話遊樂場", - "Positive attitude": "", - "Profile Image": "", - "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "", + "Archived Chats": "聊天記錄存檔", + "Profile": "個人資料", "Prompt Content": "提示詞內容", "Prompt suggestions": "提示詞建議", "Prompts": "提示詞", diff --git a/static/doge.png b/static/doge.png new file mode 100644 index 000000000..66723c6c1 Binary files /dev/null and b/static/doge.png differ