Browse Source

Merge branch 'dev' of https://github.com/open-webui/open-webui into feat/web-search-toggle

Jun Siang Cheah 1 năm trước cách đây
mục cha
commit
77928ae141
85 tập tin đã thay đổi với 3146 bổ sung1486 xóa
  1. 9 9
      .github/dependabot.yml
  2. 1 0
      .github/pull_request_template.md
  3. 22 0
      CHANGELOG.md
  4. 53 17
      README.md
  5. 12 0
      backend/apps/audio/main.py
  6. 70 0
      backend/apps/ollama/main.py
  7. 38 2
      backend/apps/rag/main.py
  8. 18 2
      backend/apps/web/routers/auths.py
  9. 39 23
      backend/config.py
  10. 3 0
      backend/constants.py
  11. 19 1
      backend/main.py
  12. 2 4
      backend/requirements.txt
  13. 1 1
      backend/start.sh
  14. 1 1
      backend/start_windows.bat
  15. 4 3
      backend/utils/misc.py
  16. 0 1
      kubernetes/helm/.helmignore
  17. 0 21
      kubernetes/helm/Chart.yaml
  18. 4 0
      kubernetes/helm/README.md
  19. 0 51
      kubernetes/helm/templates/_helpers.tpl
  20. 0 23
      kubernetes/helm/templates/ollama-service.yaml
  21. 0 98
      kubernetes/helm/templates/ollama-statefulset.yaml
  22. 0 62
      kubernetes/helm/templates/webui-deployment.yaml
  23. 0 33
      kubernetes/helm/templates/webui-ingress.yaml
  24. 0 27
      kubernetes/helm/templates/webui-pvc.yaml
  25. 0 29
      kubernetes/helm/templates/webui-service.yaml
  26. 0 27
      kubernetes/helm/values-minikube.yaml
  27. 0 75
      kubernetes/helm/values.yaml
  28. 2 2
      package-lock.json
  29. 1 1
      package.json
  30. 6 0
      src/app.html
  31. 5 2
      src/lib/apis/audio/index.ts
  32. 1 1
      src/lib/apis/ollama/index.ts
  33. 4 3
      src/lib/apis/openai/index.ts
  34. 6 0
      src/lib/apis/rag/index.ts
  35. 2 4
      src/lib/components/ChangelogModal.svelte
  36. 1 1
      src/lib/components/admin/AddUserModal.svelte
  37. 6 2
      src/lib/components/chat/MessageInput/Documents.svelte
  38. 5 3
      src/lib/components/chat/MessageInput/Suggestions.svelte
  39. 1 1
      src/lib/components/chat/Messages/RateComment.svelte
  40. 528 537
      src/lib/components/chat/Messages/ResponseMessage.svelte
  41. 1 1
      src/lib/components/chat/Messages/Skeleton.svelte
  42. 2 2
      src/lib/components/chat/ModelSelector/Selector.svelte
  43. 37 2
      src/lib/components/chat/Settings/Audio.svelte
  44. 2 2
      src/lib/components/chat/Settings/Models.svelte
  45. 25 0
      src/lib/components/common/ImagePreview.svelte
  46. 1 1
      src/lib/components/common/Tags/TagInput.svelte
  47. 30 2
      src/lib/components/documents/Settings/WebParams.svelte
  48. 41 155
      src/lib/components/layout/Sidebar.svelte
  49. 172 0
      src/lib/components/layout/Sidebar/UserMenu.svelte
  50. 28 2
      src/lib/i18n/locales/ar-BH/translation.json
  51. 28 2
      src/lib/i18n/locales/bg-BG/translation.json
  52. 28 2
      src/lib/i18n/locales/bn-BD/translation.json
  53. 28 2
      src/lib/i18n/locales/ca-ES/translation.json
  54. 56 30
      src/lib/i18n/locales/de-DE/translation.json
  55. 28 2
      src/lib/i18n/locales/dg-DG/translation.json
  56. 28 2
      src/lib/i18n/locales/en-GB/translation.json
  57. 28 2
      src/lib/i18n/locales/en-US/translation.json
  58. 28 2
      src/lib/i18n/locales/es-ES/translation.json
  59. 28 2
      src/lib/i18n/locales/fa-IR/translation.json
  60. 495 0
      src/lib/i18n/locales/fi-FI/translation.json
  61. 28 2
      src/lib/i18n/locales/fr-CA/translation.json
  62. 28 2
      src/lib/i18n/locales/fr-FR/translation.json
  63. 495 0
      src/lib/i18n/locales/hi-IN/translation.json
  64. 28 2
      src/lib/i18n/locales/it-IT/translation.json
  65. 28 2
      src/lib/i18n/locales/ja-JP/translation.json
  66. 28 2
      src/lib/i18n/locales/ka-GE/translation.json
  67. 28 2
      src/lib/i18n/locales/ko-KR/translation.json
  68. 13 5
      src/lib/i18n/locales/languages.json
  69. 28 2
      src/lib/i18n/locales/nl-NL/translation.json
  70. 28 2
      src/lib/i18n/locales/pl-PL/translation.json
  71. 28 2
      src/lib/i18n/locales/pt-BR/translation.json
  72. 28 2
      src/lib/i18n/locales/pt-PT/translation.json
  73. 28 2
      src/lib/i18n/locales/ru-RU/translation.json
  74. 28 2
      src/lib/i18n/locales/sv-SE/translation.json
  75. 28 2
      src/lib/i18n/locales/tr-TR/translation.json
  76. 152 126
      src/lib/i18n/locales/uk-UA/translation.json
  77. 28 2
      src/lib/i18n/locales/vi-VN/translation.json
  78. 62 36
      src/lib/i18n/locales/zh-CN/translation.json
  79. 33 7
      src/lib/i18n/locales/zh-TW/translation.json
  80. 1 0
      src/lib/stores/index.ts
  81. 1 1
      src/routes/(app)/+layout.svelte
  82. 8 0
      src/routes/(app)/+page.svelte
  83. 1 1
      src/routes/(app)/admin/+page.svelte
  84. 2 2
      src/routes/auth/+page.svelte
  85. 8 0
      static/opensearch.xml

+ 9 - 9
.github/dependabot.yml

@@ -1,11 +1,11 @@
 version: 2
 updates:
-- package-ecosystem: pip
-  directory: "/backend"
-  schedule:
-    interval: daily
-    time: "13:00"
-  groups:
-    python-packages:
-      patterns:
-        - "*"
+  - package-ecosystem: pip
+    directory: '/backend'
+    schedule:
+      interval: weekly
+  - package-ecosystem: 'github-actions'
+    directory: '/'
+    schedule:
+      # Check for updates to GitHub Actions every week
+      interval: 'weekly'

+ 1 - 0
.github/pull_request_template.md

@@ -1,5 +1,6 @@
 ## Pull Request Checklist
 
+- [ ] **Target branch:** Pull requests should target the `dev` branch.
 - [ ] **Description:** Briefly describe the changes in this pull request.
 - [ ] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description.
 - [ ] **Documentation:** Have you updated relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs), or other documentation sources?

+ 22 - 0
CHANGELOG.md

@@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [0.1.124] - 2024-05-08
+
+### Added
+
+- **🖼️ Improved Chat Sidebar**: Now conveniently displays time ranges and organizes chats by today, yesterday, and more.
+- **📜 Citations in RAG Feature**: Easily track the context fed to the LLM with added citations in the RAG feature.
+- **🔒 Auth Disable Option**: Introducing the ability to disable authentication. Set 'WEBUI_AUTH' to False to disable authentication. Note: Only applicable for fresh installations without existing users.
+- **📹 Enhanced YouTube RAG Pipeline**: Now supports non-English videos for an enriched experience.
+- **🔊 Specify OpenAI TTS Models**: Customize your TTS experience by specifying OpenAI TTS models.
+- **🔧 Additional Environment Variables**: Discover more environment variables in our comprehensive documentation at Open WebUI Documentation (https://docs.openwebui.com).
+- **🌐 Language Support**: Arabic, Finnish, and Hindi added; Improved support for German, Vietnamese, and Chinese.
+
+### Fixed
+
+- **🛠️ Model Selector Styling**: Addressed styling issues for improved user experience.
+- **⚠️ Warning Messages**: Resolved backend warning messages.
+
+### Changed
+
+- **📝 Title Generation**: Limited output to 50 tokens.
+- **📦 Helm Charts**: Removed Helm charts, now available in a separate repository (https://github.com/open-webui/helm-charts).
+
 ## [0.1.123] - 2024-05-02
 
 ### Added

+ 53 - 17
README.md

@@ -120,22 +120,66 @@ Don't forget to explore our sibling project, [Open WebUI Community](https://open
 > [!TIP]  
 > If you wish to utilize Open WebUI with Ollama included or CUDA acceleration, we recommend utilizing our official images tagged with either `:cuda` or `:ollama`. To enable CUDA, you must install the [Nvidia CUDA container toolkit](https://docs.nvidia.com/dgx/nvidia-container-runtime-upgrade/) on your Linux/WSL system.
 
-**If Ollama is on your computer**, use this command:
+### Installation with Default Configuration
 
-```bash
-docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
-```
+- **If Ollama is on your computer**, use this command:
 
-**If Ollama is on a Different Server**, use this command:
+  ```bash
+  docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
+  ```
 
-To connect to Ollama on another server, change the `OLLAMA_BASE_URL` to the server's URL:
+- **If Ollama is on a Different Server**, use this command:
 
-```bash
-docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
-```
+  To connect to Ollama on another server, change the `OLLAMA_BASE_URL` to the server's URL:
+
+  ```bash
+  docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
+  ```
+
+  - **To run Open WebUI with Nvidia GPU support**, use this command:
+
+  ```bash
+  docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
+  ```
+
+### Installation for OpenAI API Usage Only
+
+- **If you're only using OpenAI API**, use this command:
+
+  ```bash
+  docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
+  ```
+
+### Installing Open WebUI with Bundled Ollama Support
+
+This installation method uses a single container image that bundles Open WebUI with Ollama, allowing for a streamlined setup via a single command. Choose the appropriate command based on your hardware setup:
+
+- **With GPU Support**:
+  Utilize GPU resources by running the following command:
+
+  ```bash
+  docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
+  ```
+
+- **For CPU Only**:
+  If you're not using a GPU, use this command instead:
+
+  ```bash
+  docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
+  ```
+
+Both commands facilitate a built-in, hassle-free installation of both Open WebUI and Ollama, ensuring that you can get everything up and running swiftly.
 
 After installation, you can access Open WebUI at [http://localhost:3000](http://localhost:3000). Enjoy! 😄
 
+### Other Installation Methods
+
+We offer various installation alternatives, including non-Docker native installation methods, Docker Compose, Kustomize, and Helm. Visit our [Open WebUI Documentation](https://docs.openwebui.com/getting-started/) or join our [Discord community](https://discord.gg/5rJgQTnV4s) for comprehensive guidance.
+
+### Troubleshooting
+
+Encountering connection issues? Our [Open WebUI Documentation](https://docs.openwebui.com/troubleshooting/) has got you covered. For further assistance and to join our vibrant community, visit the [Open WebUI Discord](https://discord.gg/5rJgQTnV4s).
+
 #### Open WebUI: Server Connection Error
 
 If you're experiencing connection issues, it’s often due to the WebUI docker container not being able to reach the Ollama server at 127.0.0.1:11434 (host.docker.internal:11434) inside the container . Use the `--network=host` flag in your docker command to resolve this. Note that the port changes from 3000 to 8080, resulting in the link: `http://localhost:8080`.
@@ -146,14 +190,6 @@ If you're experiencing connection issues, it’s often due to the WebUI docker c
 docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main
 ```
 
-### Other Installation Methods
-
-We offer various installation alternatives, including non-Docker methods, Docker Compose, Kustomize, and Helm. Visit our [Open WebUI Documentation](https://docs.openwebui.com/getting-started/) or join our [Discord community](https://discord.gg/5rJgQTnV4s) for comprehensive guidance.
-
-### Troubleshooting
-
-Encountering connection issues? Our [Open WebUI Documentation](https://docs.openwebui.com/getting-started/troubleshooting/) has got you covered. For further assistance and to join our vibrant community, visit the [Open WebUI Discord](https://discord.gg/5rJgQTnV4s).
-
 ### Keeping Your Docker Installation Up-to-Date
 
 In case you want to update your local Docker installation to the latest version, you can do it with [Watchtower](https://containrrr.dev/watchtower/):

+ 12 - 0
backend/apps/audio/main.py

@@ -43,6 +43,8 @@ from config import (
     DEVICE_TYPE,
     AUDIO_OPENAI_API_BASE_URL,
     AUDIO_OPENAI_API_KEY,
+    AUDIO_OPENAI_API_MODEL,
+    AUDIO_OPENAI_API_VOICE,
 )
 
 log = logging.getLogger(__name__)
@@ -60,6 +62,8 @@ app.add_middleware(
 
 app.state.OPENAI_API_BASE_URL = AUDIO_OPENAI_API_BASE_URL
 app.state.OPENAI_API_KEY = AUDIO_OPENAI_API_KEY
+app.state.OPENAI_API_MODEL = AUDIO_OPENAI_API_MODEL
+app.state.OPENAI_API_VOICE = AUDIO_OPENAI_API_VOICE
 
 # setting device type for whisper model
 whisper_device_type = DEVICE_TYPE if DEVICE_TYPE and DEVICE_TYPE == "cuda" else "cpu"
@@ -72,6 +76,8 @@ SPEECH_CACHE_DIR.mkdir(parents=True, exist_ok=True)
 class OpenAIConfigUpdateForm(BaseModel):
     url: str
     key: str
+    model: str
+    speaker: str
 
 
 @app.get("/config")
@@ -79,6 +85,8 @@ async def get_openai_config(user=Depends(get_admin_user)):
     return {
         "OPENAI_API_BASE_URL": app.state.OPENAI_API_BASE_URL,
         "OPENAI_API_KEY": app.state.OPENAI_API_KEY,
+        "OPENAI_API_MODEL": app.state.OPENAI_API_MODEL,
+        "OPENAI_API_VOICE": app.state.OPENAI_API_VOICE,
     }
 
 
@@ -91,11 +99,15 @@ async def update_openai_config(
 
     app.state.OPENAI_API_BASE_URL = form_data.url
     app.state.OPENAI_API_KEY = form_data.key
+    app.state.OPENAI_API_MODEL = form_data.model
+    app.state.OPENAI_API_VOICE = form_data.speaker
 
     return {
         "status": True,
         "OPENAI_API_BASE_URL": app.state.OPENAI_API_BASE_URL,
         "OPENAI_API_KEY": app.state.OPENAI_API_KEY,
+        "OPENAI_API_MODEL": app.state.OPENAI_API_MODEL,
+        "OPENAI_API_VOICE": app.state.OPENAI_API_VOICE,
     }
 
 

+ 70 - 0
backend/apps/ollama/main.py

@@ -25,6 +25,7 @@ import uuid
 import aiohttp
 import asyncio
 import logging
+import time
 from urllib.parse import urlparse
 from typing import Optional, List, Union
 
@@ -1031,6 +1032,75 @@ async def generate_openai_chat_completion(
         )
 
 
+@app.get("/v1/models")
+@app.get("/v1/models/{url_idx}")
+async def get_openai_models(
+    url_idx: Optional[int] = None,
+    user=Depends(get_verified_user),
+):
+    if url_idx == None:
+        models = await get_all_models()
+
+        if app.state.ENABLE_MODEL_FILTER:
+            if user.role == "user":
+                models["models"] = list(
+                    filter(
+                        lambda model: model["name"] in app.state.MODEL_FILTER_LIST,
+                        models["models"],
+                    )
+                )
+
+        return {
+            "data": [
+                {
+                    "id": model["model"],
+                    "object": "model",
+                    "created": int(time.time()),
+                    "owned_by": "openai",
+                }
+                for model in models["models"]
+            ],
+            "object": "list",
+        }
+
+    else:
+        url = app.state.OLLAMA_BASE_URLS[url_idx]
+        try:
+            r = requests.request(method="GET", url=f"{url}/api/tags")
+            r.raise_for_status()
+
+            models = r.json()
+
+            return {
+                "data": [
+                    {
+                        "id": model["model"],
+                        "object": "model",
+                        "created": int(time.time()),
+                        "owned_by": "openai",
+                    }
+                    for model in models["models"]
+                ],
+                "object": "list",
+            }
+
+        except Exception as e:
+            log.exception(e)
+            error_detail = "Open WebUI: Server Connection Error"
+            if r is not None:
+                try:
+                    res = r.json()
+                    if "error" in res:
+                        error_detail = f"Ollama: {res['error']}"
+                except:
+                    error_detail = f"Ollama: {e}"
+
+            raise HTTPException(
+                status_code=r.status_code if r else 500,
+                detail=error_detail,
+            )
+
+
 class UrlForm(BaseModel):
     url: str
 

+ 38 - 2
backend/apps/rag/main.py

@@ -93,6 +93,7 @@ from config import (
     CHUNK_OVERLAP,
     RAG_TEMPLATE,
     ENABLE_RAG_LOCAL_WEB_FETCH,
+    YOUTUBE_LOADER_LANGUAGE,
     RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
 )
 
@@ -126,6 +127,10 @@ app.state.OPENAI_API_KEY = RAG_OPENAI_API_KEY
 app.state.PDF_EXTRACT_IMAGES = PDF_EXTRACT_IMAGES
 
 
+app.state.YOUTUBE_LOADER_LANGUAGE = YOUTUBE_LOADER_LANGUAGE
+app.state.YOUTUBE_LOADER_TRANSLATION = None
+
+
 def update_embedding_model(
     embedding_model: str,
     update_model: bool = False,
@@ -320,6 +325,10 @@ async def get_rag_config(user=Depends(get_admin_user)):
             "chunk_overlap": app.state.CHUNK_OVERLAP,
         },
         "web_loader_ssl_verification": app.state.ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION,
+        "youtube": {
+            "language": app.state.YOUTUBE_LOADER_LANGUAGE,
+            "translation": app.state.YOUTUBE_LOADER_TRANSLATION,
+        },
     }
 
 
@@ -328,10 +337,16 @@ class ChunkParamUpdateForm(BaseModel):
     chunk_overlap: int
 
 
+class YoutubeLoaderConfig(BaseModel):
+    language: List[str]
+    translation: Optional[str] = None
+
+
 class ConfigUpdateForm(BaseModel):
     pdf_extract_images: Optional[bool] = None
     chunk: Optional[ChunkParamUpdateForm] = None
     web_loader_ssl_verification: Optional[bool] = None
+    youtube: Optional[YoutubeLoaderConfig] = None
 
 
 @app.post("/config/update")
@@ -358,6 +373,18 @@ async def update_rag_config(form_data: ConfigUpdateForm, user=Depends(get_admin_
         else app.state.ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION
     )
 
+    app.state.YOUTUBE_LOADER_LANGUAGE = (
+        form_data.youtube.language
+        if form_data.youtube != None
+        else app.state.YOUTUBE_LOADER_LANGUAGE
+    )
+
+    app.state.YOUTUBE_LOADER_TRANSLATION = (
+        form_data.youtube.translation
+        if form_data.youtube != None
+        else app.state.YOUTUBE_LOADER_TRANSLATION
+    )
+
     return {
         "status": True,
         "pdf_extract_images": app.state.PDF_EXTRACT_IMAGES,
@@ -366,6 +393,10 @@ async def update_rag_config(form_data: ConfigUpdateForm, user=Depends(get_admin_
             "chunk_overlap": app.state.CHUNK_OVERLAP,
         },
         "web_loader_ssl_verification": app.state.ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION,
+        "youtube": {
+            "language": app.state.YOUTUBE_LOADER_LANGUAGE,
+            "translation": app.state.YOUTUBE_LOADER_TRANSLATION,
+        },
     }
 
 
@@ -492,7 +523,12 @@ def query_collection_handler(
 @app.post("/youtube")
 def store_youtube_video(form_data: UrlForm, user=Depends(get_current_user)):
     try:
-        loader = YoutubeLoader.from_youtube_url(form_data.url, add_video_info=False)
+        loader = YoutubeLoader.from_youtube_url(
+            form_data.url,
+            add_video_info=True,
+            language=app.state.YOUTUBE_LOADER_LANGUAGE,
+            translation=app.state.YOUTUBE_LOADER_TRANSLATION,
+        )
         data = loader.load()
 
         collection_name = form_data.collection_name
@@ -676,7 +712,7 @@ def store_docs_in_vector_db(docs, collection_name, overwrite: bool = False) -> b
 
         for batch in create_batches(
             api=CHROMA_CLIENT,
-            ids=[str(uuid.uuid1()) for _ in texts],
+            ids=[str(uuid.uuid4()) for _ in texts],
             metadatas=metadatas,
             embeddings=embeddings,
             documents=texts,

+ 18 - 2
backend/apps/web/routers/auths.py

@@ -33,7 +33,7 @@ from utils.utils import (
 from utils.misc import parse_duration, validate_email_format
 from utils.webhook import post_webhook
 from constants import ERROR_MESSAGES, WEBHOOK_MESSAGES
-from config import WEBUI_AUTH_TRUSTED_EMAIL_HEADER
+from config import WEBUI_AUTH, WEBUI_AUTH_TRUSTED_EMAIL_HEADER
 
 router = APIRouter()
 
@@ -118,6 +118,22 @@ async def signin(request: Request, form_data: SigninForm):
                 ),
             )
         user = Auths.authenticate_user_by_trusted_header(trusted_email)
+    elif WEBUI_AUTH == False:
+        admin_email = "admin@localhost"
+        admin_password = "admin"
+
+        if Users.get_user_by_email(admin_email.lower()):
+            user = Auths.authenticate_user(admin_email.lower(), admin_password)
+        else:
+            if Users.get_num_users() != 0:
+                raise HTTPException(400, detail=ERROR_MESSAGES.EXISTING_USERS)
+
+            await signup(
+                request,
+                SignupForm(email=admin_email, password=admin_password, name="User"),
+            )
+
+            user = Auths.authenticate_user(admin_email.lower(), admin_password)
     else:
         user = Auths.authenticate_user(form_data.email.lower(), form_data.password)
 
@@ -147,7 +163,7 @@ async def signin(request: Request, form_data: SigninForm):
 
 @router.post("/signup", response_model=SigninResponse)
 async def signup(request: Request, form_data: SignupForm):
-    if not request.app.state.ENABLE_SIGNUP:
+    if not request.app.state.ENABLE_SIGNUP and WEBUI_AUTH:
         raise HTTPException(
             status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.ACCESS_PROHIBITED
         )

+ 39 - 23
backend/config.py

@@ -76,8 +76,11 @@ WEBUI_NAME = os.environ.get("WEBUI_NAME", "Open WebUI")
 if WEBUI_NAME != "Open WebUI":
     WEBUI_NAME += " (Open WebUI)"
 
+WEBUI_URL = os.environ.get("WEBUI_URL", "http://localhost:3000")
+
 WEBUI_FAVICON_URL = "https://openwebui.com/favicon.png"
 
+
 ####################################
 # ENV (dev,test,prod)
 ####################################
@@ -151,6 +154,23 @@ for version in soup.find_all("h2"):
 
 CHANGELOG = changelog_json
 
+
+####################################
+# WEBUI_VERSION
+####################################
+
+WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.100")
+
+####################################
+# WEBUI_AUTH (Required for security)
+####################################
+
+WEBUI_AUTH = os.environ.get("WEBUI_AUTH", "True").lower() == "true"
+WEBUI_AUTH_TRUSTED_EMAIL_HEADER = os.environ.get(
+    "WEBUI_AUTH_TRUSTED_EMAIL_HEADER", None
+)
+
+
 ####################################
 # DATA/FRONTEND BUILD DIR
 ####################################
@@ -343,7 +363,11 @@ OPENAI_API_BASE_URL = "https://api.openai.com/v1"
 # WEBUI
 ####################################
 
-ENABLE_SIGNUP = os.environ.get("ENABLE_SIGNUP", "True").lower() == "true"
+ENABLE_SIGNUP = (
+    False
+    if WEBUI_AUTH == False
+    else os.environ.get("ENABLE_SIGNUP", "True").lower() == "true"
+)
 DEFAULT_MODELS = os.environ.get("DEFAULT_MODELS", None)
 
 
@@ -400,21 +424,6 @@ WEBHOOK_URL = os.environ.get("WEBHOOK_URL", "")
 
 ENABLE_ADMIN_EXPORT = os.environ.get("ENABLE_ADMIN_EXPORT", "True").lower() == "true"
 
-####################################
-# WEBUI_VERSION
-####################################
-
-WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.100")
-
-####################################
-# WEBUI_AUTH (Required for security)
-####################################
-
-WEBUI_AUTH = True
-WEBUI_AUTH_TRUSTED_EMAIL_HEADER = os.environ.get(
-    "WEBUI_AUTH_TRUSTED_EMAIL_HEADER", None
-)
-
 ####################################
 # WEBUI_SECRET_KEY
 ####################################
@@ -490,13 +499,6 @@ RAG_RERANKING_MODEL_TRUST_REMOTE_CODE = (
     os.environ.get("RAG_RERANKING_MODEL_TRUST_REMOTE_CODE", "").lower() == "true"
 )
 
-# device type embedding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance
-USE_CUDA = os.environ.get("USE_CUDA_DOCKER", "false")
-
-if USE_CUDA.lower() == "true":
-    DEVICE_TYPE = "cuda"
-else:
-    DEVICE_TYPE = "cpu"
 
 if CHROMA_HTTP_HOST != "":
     CHROMA_CLIENT = chromadb.HttpClient(
@@ -516,6 +518,16 @@ else:
         database=CHROMA_DATABASE,
     )
 
+
+# device type embedding models - "cpu" (default), "cuda" (nvidia gpu required) or "mps" (apple silicon) - choosing this right can lead to better performance
+USE_CUDA = os.environ.get("USE_CUDA_DOCKER", "false")
+
+if USE_CUDA.lower() == "true":
+    DEVICE_TYPE = "cuda"
+else:
+    DEVICE_TYPE = "cpu"
+
+
 CHUNK_SIZE = int(os.environ.get("CHUNK_SIZE", "1500"))
 CHUNK_OVERLAP = int(os.environ.get("CHUNK_OVERLAP", "100"))
 
@@ -542,6 +554,8 @@ ENABLE_RAG_LOCAL_WEB_FETCH = (
     os.getenv("ENABLE_RAG_LOCAL_WEB_FETCH", "False").lower() == "true"
 )
 
+YOUTUBE_LOADER_LANGUAGE = os.getenv("YOUTUBE_LOADER_LANGUAGE", "en").split(",")
+
 SEARXNG_QUERY_URL = os.getenv("SEARXNG_QUERY_URL", "")
 GOOGLE_PSE_API_KEY = os.getenv("GOOGLE_PSE_API_KEY", "")
 GOOGLE_PSE_ENGINE_ID = os.getenv("GOOGLE_PSE_ENGINE_ID", "")
@@ -595,6 +609,8 @@ IMAGE_GENERATION_MODEL = os.getenv("IMAGE_GENERATION_MODEL", "")
 
 AUDIO_OPENAI_API_BASE_URL = os.getenv("AUDIO_OPENAI_API_BASE_URL", OPENAI_API_BASE_URL)
 AUDIO_OPENAI_API_KEY = os.getenv("AUDIO_OPENAI_API_KEY", OPENAI_API_KEY)
+AUDIO_OPENAI_API_MODEL = os.getenv("AUDIO_OPENAI_API_MODEL", "tts-1")
+AUDIO_OPENAI_API_VOICE = os.getenv("AUDIO_OPENAI_API_VOICE", "alloy")
 
 ####################################
 # LiteLLM

+ 3 - 0
backend/constants.py

@@ -42,6 +42,9 @@ class ERROR_MESSAGES(str, Enum):
         "The password provided is incorrect. Please check for typos and try again."
     )
     INVALID_TRUSTED_HEADER = "Your provider has not provided a trusted header. Please contact your administrator for assistance."
+
+    EXISTING_USERS = "You can't turn off authentication because there are existing users. If you want to disable WEBUI_AUTH, make sure your web interface doesn't have any existing users and is a fresh installation."
+
     UNAUTHORIZED = "401 Unauthorized"
     ACCESS_PROHIBITED = "You do not have permission to access this resource. Please contact your administrator for assistance."
     ACTION_PROHIBITED = (

+ 19 - 1
backend/main.py

@@ -15,7 +15,7 @@ from fastapi.middleware.wsgi import WSGIMiddleware
 from fastapi.middleware.cors import CORSMiddleware
 from starlette.exceptions import HTTPException as StarletteHTTPException
 from starlette.middleware.base import BaseHTTPMiddleware
-from starlette.responses import StreamingResponse
+from starlette.responses import StreamingResponse, Response
 
 from apps.ollama.main import app as ollama_app
 from apps.openai.main import app as openai_app
@@ -43,6 +43,8 @@ from apps.rag.utils import rag_messages
 from config import (
     CONFIG_DATA,
     WEBUI_NAME,
+    WEBUI_URL,
+    WEBUI_AUTH,
     ENV,
     VERSION,
     CHANGELOG,
@@ -239,6 +241,7 @@ async def get_app_config():
         "status": True,
         "name": WEBUI_NAME,
         "version": VERSION,
+        "auth": WEBUI_AUTH,
         "default_locale": default_locale,
         "images": images_app.state.ENABLED,
         "default_models": webui_app.state.DEFAULT_MODELS,
@@ -350,6 +353,21 @@ async def get_manifest_json():
     }
 
 
+@app.get("/opensearch.xml")
+async def get_opensearch_xml():
+    xml_content = rf"""
+    <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
+    <ShortName>{WEBUI_NAME}</ShortName>
+    <Description>Search {WEBUI_NAME}</Description>
+    <InputEncoding>UTF-8</InputEncoding>
+    <Image width="16" height="16" type="image/x-icon">{WEBUI_URL}/favicon.png</Image>
+    <Url type="text/html" method="get" template="{WEBUI_URL}/?q={"{searchTerms}"}"/>
+    <moz:SearchForm>{WEBUI_URL}</moz:SearchForm>
+    </OpenSearchDescription>
+    """
+    return Response(content=xml_content, media_type="application/xml")
+
+
 app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")
 app.mount("/cache", StaticFiles(directory=CACHE_DIR), name="cache")
 

+ 2 - 4
backend/requirements.txt

@@ -9,7 +9,6 @@ Flask-Cors==4.0.0
 python-socketio==5.11.2
 python-jose==3.3.0
 passlib[bcrypt]==1.7.4
-uuid==1.30
 
 requests==2.31.0
 aiohttp==3.9.5
@@ -19,7 +18,6 @@ psycopg2-binary==2.9.9
 PyMySQL==1.1.0
 bcrypt==4.1.2
 
-litellm==1.35.28
 litellm[proxy]==1.35.28
 
 boto3==1.34.95
@@ -54,9 +52,9 @@ rank-bm25==0.2.2
 
 faster-whisper==1.0.1
 
-PyJWT==2.8.0
 PyJWT[crypto]==2.8.0
 
 black==24.4.2
 langfuse==2.27.3
-youtube-transcript-api
+youtube-transcript-api==0.6.2
+pytube

+ 1 - 1
backend/start.sh

@@ -8,7 +8,7 @@ KEY_FILE=.webui_secret_key
 PORT="${PORT:-8080}"
 HOST="${HOST:-0.0.0.0}"
 if test "$WEBUI_SECRET_KEY $WEBUI_JWT_SECRET_KEY" = " "; then
-  echo "No WEBUI_SECRET_KEY provided"
+  echo "Loading WEBUI_SECRET_KEY from file, not provided as an environment variable."
 
   if ! [ -e "$KEY_FILE" ]; then
     echo "Generating WEBUI_SECRET_KEY"

+ 1 - 1
backend/start_windows.bat

@@ -13,7 +13,7 @@ SET "WEBUI_JWT_SECRET_KEY=%WEBUI_JWT_SECRET_KEY%"
 
 :: Check if WEBUI_SECRET_KEY and WEBUI_JWT_SECRET_KEY are not set
 IF "%WEBUI_SECRET_KEY%%WEBUI_JWT_SECRET_KEY%" == " " (
-    echo No WEBUI_SECRET_KEY provided
+    echo Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
 
     IF NOT EXIST "%KEY_FILE%" (
         echo Generating WEBUI_SECRET_KEY

+ 4 - 3
backend/utils/misc.py

@@ -38,9 +38,10 @@ def calculate_sha256_string(string):
 
 
 def validate_email_format(email: str) -> bool:
-    if not re.match(r"[^@]+@[^@]+\.[^@]+", email):
-        return False
-    return True
+    if email.endswith("@localhost"):
+        return True
+
+    return bool(re.match(r"[^@]+@[^@]+\.[^@]+", email))
 
 
 def sanitize_filename(file_name):

+ 0 - 1
kubernetes/helm/.helmignore

@@ -1 +0,0 @@
-values-minikube.yaml

+ 0 - 21
kubernetes/helm/Chart.yaml

@@ -1,21 +0,0 @@
-apiVersion: v2
-name: open-webui
-version: 1.0.0
-appVersion: "latest"
-
-home: https://www.openwebui.com/
-icon: https://raw.githubusercontent.com/open-webui/open-webui/main/static/favicon.png
-
-description: "Open WebUI: A User-Friendly Web Interface for Chat Interactions 👋"
-keywords:
-- llm
-- chat
-- web-ui
-
-sources:
-- https://github.com/open-webui/open-webui/tree/main/kubernetes/helm
-- https://hub.docker.com/r/ollama/ollama
-- https://github.com/open-webui/open-webui/pkgs/container/open-webui
-
-annotations:
-  licenses: MIT

+ 4 - 0
kubernetes/helm/README.md

@@ -0,0 +1,4 @@
+# Helm Charts
+Open WebUI Helm Charts are now hosted in a separate repo, which can be found here: https://github.com/open-webui/helm-charts 
+
+The charts are released at https://helm.openwebui.com. 

+ 0 - 51
kubernetes/helm/templates/_helpers.tpl

@@ -1,51 +0,0 @@
-{{- define "open-webui.name" -}}
-{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
-{{- end -}}
-
-{{- define "ollama.name" -}}
-ollama
-{{- end -}}
-
-{{- define "ollama.url" -}}
-{{- if .Values.ollama.externalHost }}
-{{- printf .Values.ollama.externalHost }}
-{{- else }}
-{{- printf "http://%s.%s.svc.cluster.local:%d" (include "ollama.name" .) (.Release.Namespace) (.Values.ollama.service.port | int) }}
-{{- end }}
-{{- end }}
-
-{{- define "chart.name" -}}
-{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end }}
-
-{{- define "base.labels" -}}
-helm.sh/chart: {{ include "chart.name" . }}
-{{- if .Chart.AppVersion }}
-app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
-{{- end }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- end }}
-
-{{- define "base.selectorLabels" -}}
-app.kubernetes.io/instance: {{ .Release.Name }}
-{{- end -}}
-
-{{- define "open-webui.selectorLabels" -}}
-{{ include "base.selectorLabels" . }}
-app.kubernetes.io/component: {{ .Chart.Name }}
-{{- end }}
-
-{{- define "open-webui.labels" -}}
-{{ include "base.labels" . }}
-{{ include "open-webui.selectorLabels" . }}
-{{- end }}
-
-{{- define "ollama.selectorLabels" -}}
-{{ include "base.selectorLabels" . }}
-app.kubernetes.io/component: {{ include "ollama.name" . }}
-{{- end }}
-
-{{- define "ollama.labels" -}}
-{{ include "base.labels" . }}
-{{ include "ollama.selectorLabels" . }}
-{{- end }}

+ 0 - 23
kubernetes/helm/templates/ollama-service.yaml

@@ -1,23 +0,0 @@
-{{- if not .Values.ollama.externalHost }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "ollama.name" . }}
-  labels:
-    {{- include "ollama.labels" . | nindent 4 }}
-  {{- with .Values.ollama.service.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  selector:
-    {{- include "ollama.selectorLabels" . | nindent 4 }}
-{{- with .Values.ollama.service }}
-  type: {{ .type }}
-  ports:
-  - protocol: TCP
-    name: http
-    port: {{ .port }}
-    targetPort: http
-{{- end }}
-{{- end }}

+ 0 - 98
kubernetes/helm/templates/ollama-statefulset.yaml

@@ -1,98 +0,0 @@
-{{- if not .Values.ollama.externalHost }}
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
-  name: {{ include "ollama.name" . }}
-  labels:
-    {{- include "ollama.labels" . | nindent 4 }}
-  {{- with .Values.ollama.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  serviceName: {{ include "ollama.name" . }}
-  replicas: {{ .Values.ollama.replicaCount }}
-  selector:
-    matchLabels:
-      {{- include "ollama.selectorLabels" . | nindent 6 }}
-  template:
-    metadata:
-      labels:
-        {{- include "ollama.labels" . | nindent 8 }}
-      {{- with .Values.ollama.podAnnotations }}
-      annotations:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-    spec:
-      enableServiceLinks: false
-      automountServiceAccountToken: false
-      {{- with .Values.ollama.runtimeClassName }}
-      runtimeClassName: {{ . }}
-      {{- end }}
-      containers:
-      - name: {{ include "ollama.name" . }}
-        {{- with .Values.ollama.image }}
-        image: {{ .repository }}:{{ .tag }}
-        imagePullPolicy: {{ .pullPolicy }}
-        {{- end }}
-        tty: true
-        ports:
-        - name: http
-          containerPort: {{ .Values.ollama.service.containerPort }}
-        env:
-        {{- if .Values.ollama.gpu.enabled }}
-          - name: PATH
-            value: /usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
-          - name: LD_LIBRARY_PATH
-            value: /usr/local/nvidia/lib:/usr/local/nvidia/lib64
-          - name: NVIDIA_DRIVER_CAPABILITIES
-            value: compute,utility
-        {{- end }}
-        {{- with .Values.ollama.resources }}
-        resources: {{- toYaml . | nindent 10 }}
-        {{- end }}
-        volumeMounts:
-        - name: data
-          mountPath: /root/.ollama
-      {{- with .Values.ollama.nodeSelector }}
-      nodeSelector:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-      {{- with .Values.ollama.tolerations }}
-      tolerations:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-      volumes:
-      {{- if and .Values.ollama.persistence.enabled .Values.ollama.persistence.existingClaim }}
-      - name: data
-        persistentVolumeClaim:
-          claimName: {{ .Values.ollama.persistence.existingClaim }}
-      {{- else if not .Values.ollama.persistence.enabled }}
-      - name: data
-        emptyDir: {}
-      {{- else if and .Values.ollama.persistence.enabled (not .Values.ollama.persistence.existingClaim) }}
-        []
-  volumeClaimTemplates:
-  - metadata:
-      name: data
-      labels:
-        {{- include "ollama.selectorLabels" . | nindent 8 }}
-      {{- with .Values.ollama.persistence.annotations }}
-      annotations:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-    spec:
-      accessModes:
-        {{- range .Values.ollama.persistence.accessModes }}
-        - {{ . | quote }}
-        {{- end }}
-      resources:
-        requests:
-          storage: {{ .Values.ollama.persistence.size | quote }}
-      storageClassName: {{ .Values.ollama.persistence.storageClass }}
-      {{- with .Values.ollama.persistence.selector }}
-      selector:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-      {{- end }}
-{{- end }}

+ 0 - 62
kubernetes/helm/templates/webui-deployment.yaml

@@ -1,62 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: {{ include "open-webui.name" . }}
-  labels:
-    {{- include "open-webui.labels" . | nindent 4 }}
-  {{- with .Values.webui.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  replicas: {{ .Values.webui.replicaCount }}
-  selector:
-    matchLabels:
-      {{- include "open-webui.selectorLabels" . | nindent 6 }}
-  template:
-    metadata:
-      labels:
-        {{- include "open-webui.labels" . | nindent 8 }}
-      {{- with .Values.webui.podAnnotations }}
-      annotations:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-    spec:
-      enableServiceLinks: false
-      automountServiceAccountToken: false
-      containers:
-      - name: {{ .Chart.Name }}
-        {{- with .Values.webui.image }}
-        image: {{ .repository }}:{{ .tag | default $.Chart.AppVersion }}
-        imagePullPolicy: {{ .pullPolicy }}
-        {{- end }}
-        ports:
-        - name: http
-          containerPort: {{ .Values.webui.service.containerPort }}
-        {{- with .Values.webui.resources }}
-        resources: {{- toYaml . | nindent 10 }}
-        {{- end }}
-        volumeMounts:
-        - name: data
-          mountPath: /app/backend/data
-        env:
-        - name: OLLAMA_BASE_URL
-          value: {{ include "ollama.url" . | quote }}
-        tty: true
-      {{- with .Values.webui.nodeSelector }}
-      nodeSelector:
-        {{- toYaml . | nindent 8 }}
-      {{- end }}
-      volumes:
-      {{- if and .Values.webui.persistence.enabled .Values.webui.persistence.existingClaim }}
-      - name: data
-        persistentVolumeClaim:
-          claimName: {{ .Values.webui.persistence.existingClaim }}
-      {{- else if not .Values.webui.persistence.enabled }}
-      - name: data
-        emptyDir: {}
-      {{- else if and .Values.webui.persistence.enabled (not .Values.webui.persistence.existingClaim) }}
-      - name: data
-        persistentVolumeClaim:
-          claimName: {{ include "open-webui.name" . }}
-      {{- end }}

+ 0 - 33
kubernetes/helm/templates/webui-ingress.yaml

@@ -1,33 +0,0 @@
-{{- if .Values.webui.ingress.enabled }}
-apiVersion: networking.k8s.io/v1
-kind: Ingress
-metadata:
-  name: {{ include "open-webui.name" . }}
-  labels:
-    {{- include "open-webui.labels" . | nindent 4 }}
-  {{- with .Values.webui.ingress.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  {{- with .Values.webui.ingress.class }}
-  ingressClassName: {{ . }}
-  {{- end }}
-  {{- if .Values.webui.ingress.tls }}
-  tls:
-    - hosts:
-      - {{ .Values.webui.ingress.host | quote }}
-      secretName: {{ default (printf "%s-tls" .Release.Name) .Values.webui.ingress.existingSecret }}
-  {{- end }}
-  rules:
-  - host: {{ .Values.webui.ingress.host }}
-    http:
-      paths:
-      - path: /
-        pathType: Prefix
-        backend:
-          service:
-            name: {{ include "open-webui.name" . }}
-            port:
-              name: http
-{{- end }}

+ 0 - 27
kubernetes/helm/templates/webui-pvc.yaml

@@ -1,27 +0,0 @@
-{{- if and .Values.webui.persistence.enabled (not .Values.webui.persistence.existingClaim) }}
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
-  name: {{ include "open-webui.name" . }}
-  labels:
-    {{- include "open-webui.selectorLabels" . | nindent 4 }}
-  {{- with .Values.webui.persistence.annotations }}
-  annotations:
-    {{- toYaml . | nindent 8 }}
-  {{- end }}
-spec:
-  accessModes:
-    {{- range .Values.webui.persistence.accessModes }}
-    - {{ . | quote }}
-    {{- end }}
-  resources:
-    requests:
-      storage: {{ .Values.webui.persistence.size }}
-  {{- if .Values.webui.persistence.storageClass }}
-  storageClassName: {{ .Values.webui.persistence.storageClass }}
-  {{- end }}
-  {{- with .Values.webui.persistence.selector }}
-  selector:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-{{- end }}

+ 0 - 29
kubernetes/helm/templates/webui-service.yaml

@@ -1,29 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "open-webui.name" . }}
-  labels:
-    {{- include "open-webui.labels" . | nindent 4 }}
-    {{- with .Values.webui.service.labels }}
-    {{- toYaml . | nindent 4 }}
-    {{- end }}
-  {{- with .Values.webui.service.annotations }}
-  annotations:
-    {{- toYaml . | nindent 4 }}
-  {{- end }}
-spec:
-  selector:
-    {{- include "open-webui.selectorLabels" . | nindent 4 }}
-  type: {{ .Values.webui.service.type | default "ClusterIP" }}
-  ports:
-  - protocol: TCP
-    name: http
-    port: {{ .Values.webui.service.port }}
-    targetPort: http
-    {{- if .Values.webui.service.nodePort }}
-    nodePort: {{ .Values.webui.service.nodePort | int }}
-    {{- end }}
-  {{- if .Values.webui.service.loadBalancerClass }}
-  loadBalancerClass: {{ .Values.webui.service.loadBalancerClass | quote }}
-  {{- end }}
-

+ 0 - 27
kubernetes/helm/values-minikube.yaml

@@ -1,27 +0,0 @@
-ollama:
-  resources:
-    requests:
-      cpu: "2000m"
-      memory: "2Gi"
-    limits:
-      cpu: "4000m"
-      memory: "4Gi"
-      nvidia.com/gpu: "0"
-  service:
-    type: ClusterIP
-  gpu:
-    enabled: false
-
-webui:
-  resources:
-    requests:
-      cpu: "500m"
-      memory: "500Mi"
-    limits:
-      cpu: "1000m"
-      memory: "1Gi"
-  ingress:
-    enabled: true
-    host: open-webui.minikube.local
-  service:
-    type: NodePort

+ 0 - 75
kubernetes/helm/values.yaml

@@ -1,75 +0,0 @@
-nameOverride: ""
-
-ollama:
-  externalHost: ""
-  annotations: {}
-  podAnnotations: {}
-  replicaCount: 1
-  image:
-    repository: ollama/ollama
-    tag: latest
-    pullPolicy: Always
-  resources: {}
-  persistence:
-    enabled: true
-    size: 30Gi
-    existingClaim: ""
-    accessModes:
-    - ReadWriteOnce
-    storageClass: ""
-    selector: {}
-    annotations: {}
-  nodeSelector: {}
-  # -- If using a special runtime container such as nvidia, set it here.
-  runtimeClassName: ""
-  tolerations:
-  - key: nvidia.com/gpu
-    operator: Exists
-    effect: NoSchedule
-  service:
-    type: ClusterIP
-    annotations: {}
-    port: 80
-    containerPort: 11434
-  gpu:
-    # -- Enable additional ENV values to help Ollama discover GPU usage
-    enabled: false
-
-webui:
-  annotations: {}
-  podAnnotations: {}
-  replicaCount: 1
-  image:
-    repository: ghcr.io/open-webui/open-webui
-    tag: ""
-    pullPolicy: Always
-  resources: {}
-  ingress:
-    enabled: false
-    class: ""
-    # -- Use appropriate annotations for your Ingress controller, e.g., for NGINX:
-    # nginx.ingress.kubernetes.io/rewrite-target: /
-    annotations: {}
-    host: ""
-    tls: false
-    existingSecret: ""
-  persistence:
-    enabled: true
-    size: 2Gi
-    existingClaim: ""
-    # -- If using multiple replicas, you must update accessModes to ReadWriteMany
-    accessModes:
-    - ReadWriteOnce
-    storageClass: ""
-    selector: {}
-    annotations: {}
-  nodeSelector: {}
-  tolerations: []
-  service:
-    type: ClusterIP
-    annotations: {}
-    port: 80
-    containerPort: 8080
-    nodePort: ""
-    labels: {}
-    loadBalancerClass: "" 

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
 	"name": "open-webui",
-	"version": "0.1.123",
+	"version": "0.1.124",
 	"lockfileVersion": 3,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "open-webui",
-			"version": "0.1.123",
+			"version": "0.1.124",
 			"dependencies": {
 				"@sveltejs/adapter-node": "^1.3.1",
 				"async": "^3.2.5",

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 	"name": "open-webui",
-	"version": "0.1.123",
+	"version": "0.1.124",
 	"private": true,
 	"scripts": {
 		"dev": "vite dev --host",

+ 6 - 0
src/app.html

@@ -6,6 +6,12 @@
 		<link rel="manifest" href="%sveltekit.assets%/manifest.json" crossorigin="use-credentials" />
 		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
 		<meta name="robots" content="noindex,nofollow" />
+		<link
+			rel="search"
+			type="application/opensearchdescription+xml"
+			title="Open WebUI"
+			href="/opensearch.xml"
+		/>
 		<script>
 			// On page load or when changing themes, best to add inline in `head` to avoid FOUC
 			(() => {

+ 5 - 2
src/lib/apis/audio/index.ts

@@ -30,6 +30,8 @@ export const getAudioConfig = async (token: string) => {
 type OpenAIConfigForm = {
 	url: string;
 	key: string;
+	model: string;
+	speaker: string;
 };
 
 export const updateAudioConfig = async (token: string, payload: OpenAIConfigForm) => {
@@ -95,7 +97,8 @@ export const transcribeAudio = async (token: string, file: File) => {
 export const synthesizeOpenAISpeech = async (
 	token: string = '',
 	speaker: string = 'alloy',
-	text: string = ''
+	text: string = '',
+	model: string = 'tts-1'
 ) => {
 	let error = null;
 
@@ -106,7 +109,7 @@ export const synthesizeOpenAISpeech = async (
 			'Content-Type': 'application/json'
 		},
 		body: JSON.stringify({
-			model: 'tts-1',
+			model: model,
 			input: text,
 			voice: speaker
 		})

+ 1 - 1
src/lib/apis/ollama/index.ts

@@ -182,7 +182,7 @@ export const generateTitle = async (
 		throw error;
 	}
 
-	return res?.response ?? 'New Chat';
+	return res?.response.replace(/["']/g, '') ?? 'New Chat';
 };
 
 export const generatePrompt = async (token: string = '', model: string, conversation: string) => {

+ 4 - 3
src/lib/apis/openai/index.ts

@@ -239,7 +239,8 @@ export const generateOpenAIChatCompletion = async (
 export const synthesizeOpenAISpeech = async (
 	token: string = '',
 	speaker: string = 'alloy',
-	text: string = ''
+	text: string = '',
+	model: string = 'tts-1'
 ) => {
 	let error = null;
 
@@ -250,7 +251,7 @@ export const synthesizeOpenAISpeech = async (
 			'Content-Type': 'application/json'
 		},
 		body: JSON.stringify({
-			model: 'tts-1',
+			model: model,
 			input: text,
 			voice: speaker
 		})
@@ -316,7 +317,7 @@ export const generateTitle = async (
 		throw error;
 	}
 
-	return res?.choices[0]?.message?.content ?? 'New Chat';
+	return res?.choices[0]?.message?.content.replace(/["']/g, '') ?? 'New Chat';
 };
 
 export const generateSearchQuery = async (

+ 6 - 0
src/lib/apis/rag/index.ts

@@ -32,10 +32,16 @@ type ChunkConfigForm = {
 	chunk_overlap: number;
 };
 
+type YoutubeConfigForm = {
+	language: string[];
+	translation?: string | null;
+};
+
 type RAGConfigForm = {
 	pdf_extract_images?: boolean;
 	chunk?: ChunkConfigForm;
 	web_loader_ssl_verification?: boolean;
+	youtube?: YoutubeConfigForm;
 };
 
 export const updateRAGConfig = async (token: string, payload: RAGConfigForm) => {

+ 2 - 4
src/lib/components/ChangelogModal.svelte

@@ -22,7 +22,7 @@
 </script>
 
 <Modal bind:show>
-	<div class="px-5 py-4 dark:text-gray-300 text-gray-700">
+	<div class="px-5 pt-4 dark:text-gray-300 text-gray-700">
 		<div class="flex justify-between items-start">
 			<div class="text-xl font-bold">
 				{$i18n.t('What’s New in')}
@@ -57,10 +57,8 @@
 		</div>
 	</div>
 
-	<hr class=" dark:border-gray-800" />
-
 	<div class=" w-full p-4 px-5 text-gray-700 dark:text-gray-100">
-		<div class=" overflow-y-scroll max-h-80">
+		<div class=" overflow-y-scroll max-h-80 scrollbar-none">
 			<div class="mb-3">
 				{#if changelog}
 					{#each Object.keys(changelog) as version}

+ 1 - 1
src/lib/components/admin/AddUserModal.svelte

@@ -107,7 +107,7 @@
 
 				reader.readAsText(file);
 			} else {
-				toast.error(`File not found.`);
+				toast.error($i18n.t('File not found.'));
 			}
 		}
 	};

+ 6 - 2
src/lib/components/chat/MessageInput/Documents.svelte

@@ -24,7 +24,7 @@
 					{
 						name: 'All Documents',
 						type: 'collection',
-						title: 'All Documents',
+						title: $i18n.t('All Documents'),
 						collection_names: $documents.map((doc) => doc.collection_name)
 					}
 			  ]
@@ -143,7 +143,11 @@
 						</button>
 					{/each}
 
-					{#if prompt.split(' ')?.at(0)?.substring(1).startsWith('https://www.youtube.com')}
+					{#if prompt
+						.split(' ')
+						.some((s) => s.substring(1).startsWith('https://www.youtube.com') || s
+									.substring(1)
+									.startsWith('https://youtu.be'))}
 						<button
 							class="px-3 py-1.5 rounded-xl w-full text-left bg-gray-100 selected-command-option-button"
 							type="button"

+ 5 - 3
src/lib/components/chat/MessageInput/Suggestions.svelte

@@ -1,6 +1,8 @@
 <script lang="ts">
 	import Bolt from '$lib/components/icons/Bolt.svelte';
-	import { onMount } from 'svelte';
+	import { onMount, getContext } from 'svelte';
+
+	const i18n = getContext('i18n');
 
 	export let submitPrompt: Function;
 	export let suggestionPrompts = [];
@@ -33,7 +35,7 @@
 {#if prompts.length > 0}
 	<div class="mb-2 flex gap-1 text-sm font-medium items-center text-gray-400 dark:text-gray-600">
 		<Bolt />
-		Suggested
+		{$i18n.t('Suggested')}
 	</div>
 {/if}
 
@@ -71,7 +73,7 @@
 						<div
 							class="text-xs text-gray-400 group-hover:text-gray-500 dark:text-gray-600 dark:group-hover:text-gray-500 transition self-center"
 						>
-							Prompt
+							{$i18n.t('Prompt')}
 						</div>
 
 						<div

+ 1 - 1
src/lib/components/chat/Messages/RateComment.svelte

@@ -123,7 +123,7 @@
 				submitHandler();
 			}}
 		>
-			Submit
+			{$i18n.t('Submit')}
 		</button>
 	</div>
 </div>

+ 528 - 537
src/lib/components/chat/Messages/ResponseMessage.svelte

@@ -23,13 +23,13 @@
 		revertSanitizedResponseContent,
 		sanitizeResponseContent
 	} from '$lib/utils';
+	import { WEBUI_BASE_URL } from '$lib/constants';
 
 	import Name from './Name.svelte';
 	import ProfileImage from './ProfileImage.svelte';
 	import Skeleton from './Skeleton.svelte';
 	import CodeBlock from './CodeBlock.svelte';
 	import Image from '$lib/components/common/Image.svelte';
-	import { WEBUI_BASE_URL } from '$lib/constants';
 	import Tooltip from '$lib/components/common/Tooltip.svelte';
 	import RateComment from './RateComment.svelte';
 	import CitationsModal from '$lib/components/chat/Messages/CitationsModal.svelte';
@@ -227,7 +227,8 @@
 					const res = await synthesizeOpenAISpeech(
 						localStorage.token,
 						$settings?.audio?.speaker,
-						sentence
+						sentence,
+						$settings?.audio?.model
 					).catch((error) => {
 						toast.error(error);
 
@@ -352,579 +353,569 @@
 				{/if}
 			</Name>
 
-			{#if message.content === ''}
-				<Skeleton />
-			{:else}
-				{#if message.files}
-					<div class="my-2.5 w-full flex overflow-x-auto gap-2 flex-wrap">
-						{#each message.files as file}
-							<div>
-								{#if file.type === 'image'}
-									<Image src={file.url} />
-								{/if}
-							</div>
-						{/each}
-					</div>
-				{/if}
-				<div
-					class="prose chat-{message.role} w-full max-w-full dark:prose-invert prose-headings:my-0 prose-p:m-0 prose-p:-mb-6 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-img:my-0 prose-ul:-my-4 prose-ol:-my-4 prose-li:-my-3 prose-ul:-mb-6 prose-ol:-mb-8 prose-ol:p-0 prose-li:-mb-4 whitespace-pre-line"
-				>
-					<div>
-						{#if edit === true}
-							<div class=" w-full">
-								<textarea
-									id="message-edit-{message.id}"
-									bind:this={editTextAreaElement}
-									class=" bg-transparent outline-none w-full resize-none"
-									bind:value={editedContent}
-									on:input={(e) => {
-										e.target.style.height = '';
-										e.target.style.height = `${e.target.scrollHeight}px`;
-									}}
-								/>
-
-								<div class=" mt-2 mb-1 flex justify-center space-x-2 text-sm font-medium">
-									<button
-										class="px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
-										on:click={() => {
-											editMessageConfirmHandler();
-										}}
-									>
-										{$i18n.t('Save')}
-									</button>
-
-									<button
-										class=" px-4 py-2 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-100 transition outline outline-1 outline-gray-200 dark:outline-gray-600 rounded-lg"
-										on:click={() => {
-											cancelEditMessage();
-										}}
-									>
-										{$i18n.t('Cancel')}
-									</button>
-								</div>
-							</div>
-						{:else}
-							<div class="w-full">
-								{#if message?.error === true}
-									<div
-										class="flex mt-2 mb-4 space-x-2 border px-4 py-3 border-red-800 bg-red-800/30 font-medium rounded-lg"
-									>
-										<svg
-											xmlns="http://www.w3.org/2000/svg"
-											fill="none"
-											viewBox="0 0 24 24"
-											stroke-width="1.5"
-											stroke="currentColor"
-											class="w-5 h-5 self-center"
-										>
-											<path
-												stroke-linecap="round"
-												stroke-linejoin="round"
-												d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"
-											/>
-										</svg>
-
-										<div class=" self-center">
-											{message.content}
-										</div>
-									</div>
-								{:else}
-									{#each tokens as token}
-										{#if token.type === 'code'}
-											<CodeBlock
-												lang={token.lang}
-												code={revertSanitizedResponseContent(token.text)}
-											/>
-										{:else}
-											{@html marked.parse(token.raw, {
-												...defaults,
-												gfm: true,
-												breaks: true,
-												renderer
-											})}
-										{/if}
-									{/each}
-									<!-- {@html marked(message.content.replaceAll('\\', '\\\\'))} -->
-								{/if}
-							</div>
-						{/if}
-					</div>
+			{#if message.files}
+				<div class="my-2.5 w-full flex overflow-x-auto gap-2 flex-wrap">
+					{#each message.files as file}
+						<div>
+							{#if file.type === 'image'}
+								<Image src={file.url} />
+							{/if}
+						</div>
+					{/each}
 				</div>
+			{/if}
 
-				<!-- if (message.citations) {
-					citations = message.citations.forEach((citation) => {
-						citation.document.forEach((document, index) => {
-							const metadata = citation.metadata?.[index];
-							const source = citation?.source?.name ?? metadata?.source ?? 'N/A';
-		
-							citations[source] = citations[source] || {
-								source: citation.source,
-								document: [],
-								metadata: []
-							};
-		
-							citations[source].document.push(document);
-							citations[source].metadata.push(metadata);
-						});
-					});
-				} -->
-
-				{#if message.citations}
-					<hr class="  dark:border-gray-800" />
-					<div class="my-2.5 w-full flex overflow-x-auto gap-2 flex-wrap">
-						{#each message.citations.reduce((acc, citation) => {
-							citation.document.forEach((document, index) => {
-								const metadata = citation.metadata?.[index];
-								const id = metadata?.source ?? 'N/A';
-
-								const existingSource = acc.find((item) => item.id === id);
-
-								if (existingSource) {
-									existingSource.document.push(document);
-									existingSource.metadata.push(metadata);
-								} else {
-									acc.push( { id: id, source: citation?.source, document: [document], metadata: metadata ? [metadata] : [] } );
-								}
-							});
-							return acc;
-						}, []) as citation, idx}
-							<div class="flex gap-1 text-xs font-semibold">
-								<div>
-									[{idx + 1}]
-								</div>
-
-								<button
-									class="dark:text-gray-500 underline"
-									on:click={() => {
-										showCitationModal = true;
-										selectedCitation = citation;
-									}}
-								>
-									{citation.source.name}
-								</button>
-							</div>
-						{/each}
-					</div>
-				{/if}
+			<div
+				class="prose chat-{message.role} w-full max-w-full dark:prose-invert prose-headings:my-0 prose-p:m-0 prose-p:-mb-6 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-img:my-0 prose-ul:-my-4 prose-ol:-my-4 prose-li:-my-3 prose-ul:-mb-6 prose-ol:-mb-8 prose-ol:p-0 prose-li:-mb-4 whitespace-pre-line"
+			>
+				<div>
+					{#if edit === true}
+						<div class=" w-full">
+							<textarea
+								id="message-edit-{message.id}"
+								bind:this={editTextAreaElement}
+								class=" bg-transparent outline-none w-full resize-none"
+								bind:value={editedContent}
+								on:input={(e) => {
+									e.target.style.height = '';
+									e.target.style.height = `${e.target.scrollHeight}px`;
+								}}
+							/>
 
-				{#if message.done}
-					<div
-						class=" flex justify-start space-x-1 overflow-x-auto buttons text-gray-700 dark:text-gray-500"
-					>
-						{#if siblings.length > 1}
-							<div class="flex self-center min-w-fit">
+							<div class=" mt-2 mb-1 flex justify-center space-x-2 text-sm font-medium">
 								<button
-									class="self-center dark:hover:text-white hover:text-black transition"
+									class="px-4 py-2 bg-emerald-700 hover:bg-emerald-800 text-gray-100 transition rounded-lg"
 									on:click={() => {
-										showPreviousMessage(message);
+										editMessageConfirmHandler();
 									}}
 								>
-									<svg
-										xmlns="http://www.w3.org/2000/svg"
-										viewBox="0 0 20 20"
-										fill="currentColor"
-										class="w-4 h-4"
-									>
-										<path
-											fill-rule="evenodd"
-											d="M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z"
-											clip-rule="evenodd"
-										/>
-									</svg>
+									{$i18n.t('Save')}
 								</button>
 
-								<div class="text-xs font-bold self-center min-w-fit dark:text-gray-100">
-									{siblings.indexOf(message.id) + 1} / {siblings.length}
-								</div>
-
 								<button
-									class="self-center dark:hover:text-white hover:text-black transition"
+									class=" px-4 py-2 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-100 transition outline outline-1 outline-gray-200 dark:outline-gray-600 rounded-lg"
 									on:click={() => {
-										showNextMessage(message);
+										cancelEditMessage();
 									}}
 								>
-									<svg
-										xmlns="http://www.w3.org/2000/svg"
-										viewBox="0 0 20 20"
-										fill="currentColor"
-										class="w-4 h-4"
-									>
-										<path
-											fill-rule="evenodd"
-											d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z"
-											clip-rule="evenodd"
-										/>
-									</svg>
+									{$i18n.t('Cancel')}
 								</button>
 							</div>
-						{/if}
-
-						{#if !readOnly}
-							<Tooltip content={$i18n.t('Edit')} placement="bottom">
-								<button
-									class="{isLastMessage
-										? 'visible'
-										: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition"
-									on:click={() => {
-										editMessageHandler();
-									}}
+						</div>
+					{:else}
+						<div class="w-full">
+							{#if message?.error === true}
+								<div
+									class="flex mt-2 mb-4 space-x-2 border px-4 py-3 border-red-800 bg-red-800/30 font-medium rounded-lg"
 								>
 									<svg
 										xmlns="http://www.w3.org/2000/svg"
 										fill="none"
 										viewBox="0 0 24 24"
-										stroke-width="2"
+										stroke-width="1.5"
 										stroke="currentColor"
-										class="w-4 h-4"
+										class="w-5 h-5 self-center"
 									>
 										<path
 											stroke-linecap="round"
 											stroke-linejoin="round"
-											d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125"
+											d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"
 										/>
 									</svg>
-								</button>
-							</Tooltip>
-						{/if}
-
-						<Tooltip content={$i18n.t('Copy')} placement="bottom">
-							<button
-								class="{isLastMessage
-									? 'visible'
-									: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition copy-response-button"
-								on:click={() => {
-									copyToClipboard(message.content);
-								}}
-							>
-								<svg
-									xmlns="http://www.w3.org/2000/svg"
-									fill="none"
-									viewBox="0 0 24 24"
-									stroke-width="2"
-									stroke="currentColor"
-									class="w-4 h-4"
-								>
-									<path
-										stroke-linecap="round"
-										stroke-linejoin="round"
-										d="M15.666 3.888A2.25 2.25 0 0013.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 01-.75.75H9a.75.75 0 01-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 01-2.25 2.25H6.75A2.25 2.25 0 014.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 011.927-.184"
-									/>
-								</svg>
-							</button>
-						</Tooltip>
-
-						{#if !readOnly}
-							<Tooltip content={$i18n.t('Good Response')} placement="bottom">
-								<button
-									class="{isLastMessage
-										? 'visible'
-										: 'invisible group-hover:visible'} p-1 rounded {message?.annotation?.rating ===
-									1
-										? 'bg-gray-100 dark:bg-gray-800'
-										: ''} dark:hover:text-white hover:text-black transition"
-									on:click={() => {
-										rateMessage(message.id, 1);
-										showRateComment = true;
-
-										window.setTimeout(() => {
-											document.getElementById(`message-feedback-${message.id}`)?.scrollIntoView();
-										}, 0);
-									}}
-								>
-									<svg
-										stroke="currentColor"
-										fill="none"
-										stroke-width="2"
-										viewBox="0 0 24 24"
-										stroke-linecap="round"
-										stroke-linejoin="round"
-										class="w-4 h-4"
-										xmlns="http://www.w3.org/2000/svg"
-									>
-										<path
-											d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"
-										/>
-									</svg>
-								</button>
-							</Tooltip>
 
-							<Tooltip content={$i18n.t('Bad Response')} placement="bottom">
-								<button
-									class="{isLastMessage
-										? 'visible'
-										: 'invisible group-hover:visible'} p-1 rounded {message?.annotation?.rating ===
-									-1
-										? 'bg-gray-100 dark:bg-gray-800'
-										: ''} dark:hover:text-white hover:text-black transition"
-									on:click={() => {
-										rateMessage(message.id, -1);
-										showRateComment = true;
-										window.setTimeout(() => {
-											document.getElementById(`message-feedback-${message.id}`)?.scrollIntoView();
-										}, 0);
-									}}
-								>
-									<svg
-										stroke="currentColor"
-										fill="none"
-										stroke-width="2"
-										viewBox="0 0 24 24"
-										stroke-linecap="round"
-										stroke-linejoin="round"
-										class="w-4 h-4"
-										xmlns="http://www.w3.org/2000/svg"
-									>
-										<path
-											d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"
+									<div class=" self-center">
+										{message.content}
+									</div>
+								</div>
+							{:else if message.content === ''}
+								<Skeleton />
+							{:else}
+								{#each tokens as token}
+									{#if token.type === 'code'}
+										<CodeBlock
+											lang={token.lang}
+											code={revertSanitizedResponseContent(token.text)}
 										/>
-									</svg>
-								</button>
-							</Tooltip>
-						{/if}
-
-						<Tooltip content={$i18n.t('Read Aloud')} placement="bottom">
-							<button
-								id="speak-button-{message.id}"
-								class="{isLastMessage
-									? 'visible'
-									: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition"
-								on:click={() => {
-									if (!loadingSpeech) {
-										toggleSpeakMessage(message);
-									}
-								}}
-							>
-								{#if loadingSpeech}
-									<svg
-										class=" w-4 h-4"
-										fill="currentColor"
-										viewBox="0 0 24 24"
-										xmlns="http://www.w3.org/2000/svg"
-									>
-										<style>
-											.spinner_S1WN {
-												animation: spinner_MGfb 0.8s linear infinite;
-												animation-delay: -0.8s;
+									{:else}
+										{@html marked.parse(token.raw, {
+											...defaults,
+											gfm: true,
+											breaks: true,
+											renderer
+										})}
+									{/if}
+								{/each}
+							{/if}
+
+							{#if message.citations}
+								<div class="mt-1 mb-2 w-full flex gap-1 items-center">
+									{#each message.citations.reduce((acc, citation) => {
+										citation.document.forEach((document, index) => {
+											const metadata = citation.metadata?.[index];
+											const id = metadata?.source ?? 'N/A';
+
+											const existingSource = acc.find((item) => item.id === id);
+
+											if (existingSource) {
+												existingSource.document.push(document);
+												existingSource.metadata.push(metadata);
+											} else {
+												acc.push( { id: id, source: citation?.source, document: [document], metadata: metadata ? [metadata] : [] } );
 											}
+										});
+										return acc;
+									}, []) as citation, idx}
+										<div class="flex gap-1 text-xs font-semibold">
+											<button
+												class="flex dark:text-gray-300 py-1 px-1 bg-gray-50 hover:bg-gray-100 dark:bg-gray-850 dark:hover:bg-gray-800 transition rounded-xl"
+												on:click={() => {
+													showCitationModal = true;
+													selectedCitation = citation;
+												}}
+											>
+												<div class="bg-white dark:bg-gray-700 rounded-full size-4">
+													{idx + 1}
+												</div>
+												<div class="flex-1 mx-2 line-clamp-1">
+													{citation.source.name}
+												</div>
+											</button>
+										</div>
+									{/each}
+								</div>
+							{/if}
 
-											.spinner_Km9P {
-												animation-delay: -0.65s;
-											}
+							{#if message.done || siblings.length > 1}
+								<div
+									class=" flex justify-start space-x-1 overflow-x-auto buttons text-gray-700 dark:text-gray-500"
+								>
+									{#if siblings.length > 1}
+										<div class="flex self-center min-w-fit">
+											<button
+												class="self-center dark:hover:text-white hover:text-black transition"
+												on:click={() => {
+													showPreviousMessage(message);
+												}}
+											>
+												<svg
+													xmlns="http://www.w3.org/2000/svg"
+													viewBox="0 0 20 20"
+													fill="currentColor"
+													class="w-4 h-4"
+												>
+													<path
+														fill-rule="evenodd"
+														d="M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z"
+														clip-rule="evenodd"
+													/>
+												</svg>
+											</button>
+
+											<div class="text-xs font-bold self-center min-w-fit dark:text-gray-100">
+												{siblings.indexOf(message.id) + 1} / {siblings.length}
+											</div>
+
+											<button
+												class="self-center dark:hover:text-white hover:text-black transition"
+												on:click={() => {
+													showNextMessage(message);
+												}}
+											>
+												<svg
+													xmlns="http://www.w3.org/2000/svg"
+													viewBox="0 0 20 20"
+													fill="currentColor"
+													class="w-4 h-4"
+												>
+													<path
+														fill-rule="evenodd"
+														d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z"
+														clip-rule="evenodd"
+													/>
+												</svg>
+											</button>
+										</div>
+									{/if}
 
-											.spinner_JApP {
-												animation-delay: -0.5s;
-											}
+									{#if message.done}
+										{#if !readOnly}
+											<Tooltip content={$i18n.t('Edit')} placement="bottom">
+												<button
+													class="{isLastMessage
+														? 'visible'
+														: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition"
+													on:click={() => {
+														editMessageHandler();
+													}}
+												>
+													<svg
+														xmlns="http://www.w3.org/2000/svg"
+														fill="none"
+														viewBox="0 0 24 24"
+														stroke-width="2"
+														stroke="currentColor"
+														class="w-4 h-4"
+													>
+														<path
+															stroke-linecap="round"
+															stroke-linejoin="round"
+															d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 011.13-1.897L16.863 4.487zm0 0L19.5 7.125"
+														/>
+													</svg>
+												</button>
+											</Tooltip>
+										{/if}
 
-											@keyframes spinner_MGfb {
-												93.75%,
-												100% {
-													opacity: 0.2;
-												}
-											}
-										</style>
-										<circle class="spinner_S1WN" cx="4" cy="12" r="3" />
-										<circle class="spinner_S1WN spinner_Km9P" cx="12" cy="12" r="3" />
-										<circle class="spinner_S1WN spinner_JApP" cx="20" cy="12" r="3" />
-									</svg>
-								{:else if speaking}
-									<svg
-										xmlns="http://www.w3.org/2000/svg"
-										fill="none"
-										viewBox="0 0 24 24"
-										stroke-width="2"
-										stroke="currentColor"
-										class="w-4 h-4"
-									>
-										<path
-											stroke-linecap="round"
-											stroke-linejoin="round"
-											d="M17.25 9.75 19.5 12m0 0 2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6 4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z"
-										/>
-									</svg>
-								{:else}
-									<svg
-										xmlns="http://www.w3.org/2000/svg"
-										fill="none"
-										viewBox="0 0 24 24"
-										stroke-width="2"
-										stroke="currentColor"
-										class="w-4 h-4"
-									>
-										<path
-											stroke-linecap="round"
-											stroke-linejoin="round"
-											d="M19.114 5.636a9 9 0 010 12.728M16.463 8.288a5.25 5.25 0 010 7.424M6.75 8.25l4.72-4.72a.75.75 0 011.28.53v15.88a.75.75 0 01-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.01 9.01 0 012.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75z"
-										/>
-									</svg>
-								{/if}
-							</button>
-						</Tooltip>
+										<Tooltip content={$i18n.t('Copy')} placement="bottom">
+											<button
+												class="{isLastMessage
+													? 'visible'
+													: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition copy-response-button"
+												on:click={() => {
+													copyToClipboard(message.content);
+												}}
+											>
+												<svg
+													xmlns="http://www.w3.org/2000/svg"
+													fill="none"
+													viewBox="0 0 24 24"
+													stroke-width="2"
+													stroke="currentColor"
+													class="w-4 h-4"
+												>
+													<path
+														stroke-linecap="round"
+														stroke-linejoin="round"
+														d="M15.666 3.888A2.25 2.25 0 0013.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 01-.75.75H9a.75.75 0 01-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 01-2.25 2.25H6.75A2.25 2.25 0 014.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 011.927-.184"
+													/>
+												</svg>
+											</button>
+										</Tooltip>
+
+										{#if !readOnly}
+											<Tooltip content={$i18n.t('Good Response')} placement="bottom">
+												<button
+													class="{isLastMessage
+														? 'visible'
+														: 'invisible group-hover:visible'} p-1 rounded {message?.annotation
+														?.rating === 1
+														? 'bg-gray-100 dark:bg-gray-800'
+														: ''} dark:hover:text-white hover:text-black transition"
+													on:click={() => {
+														rateMessage(message.id, 1);
+														showRateComment = true;
+
+														window.setTimeout(() => {
+															document
+																.getElementById(`message-feedback-${message.id}`)
+																?.scrollIntoView();
+														}, 0);
+													}}
+												>
+													<svg
+														stroke="currentColor"
+														fill="none"
+														stroke-width="2"
+														viewBox="0 0 24 24"
+														stroke-linecap="round"
+														stroke-linejoin="round"
+														class="w-4 h-4"
+														xmlns="http://www.w3.org/2000/svg"
+														><path
+															d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"
+														/></svg
+													>
+												</button>
+											</Tooltip>
+
+											<Tooltip content={$i18n.t('Bad Response')} placement="bottom">
+												<button
+													class="{isLastMessage
+														? 'visible'
+														: 'invisible group-hover:visible'} p-1 rounded {message?.annotation
+														?.rating === -1
+														? 'bg-gray-100 dark:bg-gray-800'
+														: ''} dark:hover:text-white hover:text-black transition"
+													on:click={() => {
+														rateMessage(message.id, -1);
+														showRateComment = true;
+														window.setTimeout(() => {
+															document
+																.getElementById(`message-feedback-${message.id}`)
+																?.scrollIntoView();
+														}, 0);
+													}}
+												>
+													<svg
+														stroke="currentColor"
+														fill="none"
+														stroke-width="2"
+														viewBox="0 0 24 24"
+														stroke-linecap="round"
+														stroke-linejoin="round"
+														class="w-4 h-4"
+														xmlns="http://www.w3.org/2000/svg"
+														><path
+															d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"
+														/></svg
+													>
+												</button>
+											</Tooltip>
+										{/if}
 
-						{#if $config.images && !readOnly}
-							<Tooltip content="Generate Image" placement="bottom">
-								<button
-									class="{isLastMessage
-										? 'visible'
-										: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition"
-									on:click={() => {
-										if (!generatingImage) {
-											generateImage(message);
-										}
-									}}
-								>
-									{#if generatingImage}
-										<svg
-											class=" w-4 h-4"
-											fill="currentColor"
-											viewBox="0 0 24 24"
-											xmlns="http://www.w3.org/2000/svg"
-										>
-											<style>
-												.spinner_S1WN {
-													animation: spinner_MGfb 0.8s linear infinite;
-													animation-delay: -0.8s;
-												}
-
-												.spinner_Km9P {
-													animation-delay: -0.65s;
-												}
-
-												.spinner_JApP {
-													animation-delay: -0.5s;
-												}
-
-												@keyframes spinner_MGfb {
-													93.75%,
-													100% {
-														opacity: 0.2;
+										<Tooltip content={$i18n.t('Read Aloud')} placement="bottom">
+											<button
+												id="speak-button-{message.id}"
+												class="{isLastMessage
+													? 'visible'
+													: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition"
+												on:click={() => {
+													if (!loadingSpeech) {
+														toggleSpeakMessage(message);
 													}
-												}
-											</style>
-											<circle class="spinner_S1WN" cx="4" cy="12" r="3" />
-											<circle class="spinner_S1WN spinner_Km9P" cx="12" cy="12" r="3" />
-											<circle class="spinner_S1WN spinner_JApP" cx="20" cy="12" r="3" />
-										</svg>
-									{:else}
-										<svg
-											xmlns="http://www.w3.org/2000/svg"
-											fill="none"
-											viewBox="0 0 24 24"
-											stroke-width="2"
-											stroke="currentColor"
-											class="w-4 h-4"
-										>
-											<path
-												stroke-linecap="round"
-												stroke-linejoin="round"
-												d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"
-											/>
-										</svg>
-									{/if}
-								</button>
-							</Tooltip>
-						{/if}
+												}}
+											>
+												{#if loadingSpeech}
+													<svg
+														class=" w-4 h-4"
+														fill="currentColor"
+														viewBox="0 0 24 24"
+														xmlns="http://www.w3.org/2000/svg"
+														><style>
+															.spinner_S1WN {
+																animation: spinner_MGfb 0.8s linear infinite;
+																animation-delay: -0.8s;
+															}
+															.spinner_Km9P {
+																animation-delay: -0.65s;
+															}
+															.spinner_JApP {
+																animation-delay: -0.5s;
+															}
+															@keyframes spinner_MGfb {
+																93.75%,
+																100% {
+																	opacity: 0.2;
+																}
+															}
+														</style><circle class="spinner_S1WN" cx="4" cy="12" r="3" /><circle
+															class="spinner_S1WN spinner_Km9P"
+															cx="12"
+															cy="12"
+															r="3"
+														/><circle
+															class="spinner_S1WN spinner_JApP"
+															cx="20"
+															cy="12"
+															r="3"
+														/></svg
+													>
+												{:else if speaking}
+													<svg
+														xmlns="http://www.w3.org/2000/svg"
+														fill="none"
+														viewBox="0 0 24 24"
+														stroke-width="2"
+														stroke="currentColor"
+														class="w-4 h-4"
+													>
+														<path
+															stroke-linecap="round"
+															stroke-linejoin="round"
+															d="M17.25 9.75 19.5 12m0 0 2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6 4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z"
+														/>
+													</svg>
+												{:else}
+													<svg
+														xmlns="http://www.w3.org/2000/svg"
+														fill="none"
+														viewBox="0 0 24 24"
+														stroke-width="2"
+														stroke="currentColor"
+														class="w-4 h-4"
+													>
+														<path
+															stroke-linecap="round"
+															stroke-linejoin="round"
+															d="M19.114 5.636a9 9 0 010 12.728M16.463 8.288a5.25 5.25 0 010 7.424M6.75 8.25l4.72-4.72a.75.75 0 011.28.53v15.88a.75.75 0 01-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.01 9.01 0 012.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75z"
+														/>
+													</svg>
+												{/if}
+											</button>
+										</Tooltip>
+
+										{#if $config.images && !readOnly}
+											<Tooltip content="Generate Image" placement="bottom">
+												<button
+													class="{isLastMessage
+														? 'visible'
+														: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition"
+													on:click={() => {
+														if (!generatingImage) {
+															generateImage(message);
+														}
+													}}
+												>
+													{#if generatingImage}
+														<svg
+															class=" w-4 h-4"
+															fill="currentColor"
+															viewBox="0 0 24 24"
+															xmlns="http://www.w3.org/2000/svg"
+															><style>
+																.spinner_S1WN {
+																	animation: spinner_MGfb 0.8s linear infinite;
+																	animation-delay: -0.8s;
+																}
+																.spinner_Km9P {
+																	animation-delay: -0.65s;
+																}
+																.spinner_JApP {
+																	animation-delay: -0.5s;
+																}
+																@keyframes spinner_MGfb {
+																	93.75%,
+																	100% {
+																		opacity: 0.2;
+																	}
+																}
+															</style><circle class="spinner_S1WN" cx="4" cy="12" r="3" /><circle
+																class="spinner_S1WN spinner_Km9P"
+																cx="12"
+																cy="12"
+																r="3"
+															/><circle
+																class="spinner_S1WN spinner_JApP"
+																cx="20"
+																cy="12"
+																r="3"
+															/></svg
+														>
+													{:else}
+														<svg
+															xmlns="http://www.w3.org/2000/svg"
+															fill="none"
+															viewBox="0 0 24 24"
+															stroke-width="2"
+															stroke="currentColor"
+															class="w-4 h-4"
+														>
+															<path
+																stroke-linecap="round"
+																stroke-linejoin="round"
+																d="m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"
+															/>
+														</svg>
+													{/if}
+												</button>
+											</Tooltip>
+										{/if}
 
-						{#if message.info}
-							<Tooltip content={$i18n.t('Generation Info')} placement="bottom">
-								<button
-									class=" {isLastMessage
-										? 'visible'
-										: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition whitespace-pre-wrap"
-									on:click={() => {
-										console.log(message);
-									}}
-									id="info-{message.id}"
-								>
-									<svg
-										xmlns="http://www.w3.org/2000/svg"
-										fill="none"
-										viewBox="0 0 24 24"
-										stroke-width="2"
-										stroke="currentColor"
-										class="w-4 h-4"
-									>
-										<path
-											stroke-linecap="round"
-											stroke-linejoin="round"
-											d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"
-										/>
-									</svg>
-								</button>
-							</Tooltip>
-						{/if}
+										{#if message.info}
+											<Tooltip content={$i18n.t('Generation Info')} placement="bottom">
+												<button
+													class=" {isLastMessage
+														? 'visible'
+														: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition whitespace-pre-wrap"
+													on:click={() => {
+														console.log(message);
+													}}
+													id="info-{message.id}"
+												>
+													<svg
+														xmlns="http://www.w3.org/2000/svg"
+														fill="none"
+														viewBox="0 0 24 24"
+														stroke-width="2"
+														stroke="currentColor"
+														class="w-4 h-4"
+													>
+														<path
+															stroke-linecap="round"
+															stroke-linejoin="round"
+															d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"
+														/>
+													</svg>
+												</button>
+											</Tooltip>
+										{/if}
 
-						{#if isLastMessage && !readOnly}
-							<Tooltip content={$i18n.t('Continue Response')} placement="bottom">
-								<button
-									type="button"
-									class="{isLastMessage
-										? 'visible'
-										: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition regenerate-response-button"
-									on:click={() => {
-										continueGeneration();
+										{#if isLastMessage && !readOnly}
+											<Tooltip content={$i18n.t('Continue Response')} placement="bottom">
+												<button
+													type="button"
+													class="{isLastMessage
+														? 'visible'
+														: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition regenerate-response-button"
+													on:click={() => {
+														continueGeneration();
+													}}
+												>
+													<svg
+														xmlns="http://www.w3.org/2000/svg"
+														fill="none"
+														viewBox="0 0 24 24"
+														stroke-width="2"
+														stroke="currentColor"
+														class="w-4 h-4"
+													>
+														<path
+															stroke-linecap="round"
+															stroke-linejoin="round"
+															d="M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
+														/>
+														<path
+															stroke-linecap="round"
+															stroke-linejoin="round"
+															d="M15.91 11.672a.375.375 0 0 1 0 .656l-5.603 3.113a.375.375 0 0 1-.557-.328V8.887c0-.286.307-.466.557-.327l5.603 3.112Z"
+														/>
+													</svg>
+												</button>
+											</Tooltip>
+
+											<Tooltip content={$i18n.t('Regenerate')} placement="bottom">
+												<button
+													type="button"
+													class="{isLastMessage
+														? 'visible'
+														: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition regenerate-response-button"
+													on:click={regenerateResponse}
+												>
+													<svg
+														xmlns="http://www.w3.org/2000/svg"
+														fill="none"
+														viewBox="0 0 24 24"
+														stroke-width="2"
+														stroke="currentColor"
+														class="w-4 h-4"
+													>
+														<path
+															stroke-linecap="round"
+															stroke-linejoin="round"
+															d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"
+														/>
+													</svg>
+												</button>
+											</Tooltip>
+										{/if}
+									{/if}
+								</div>
+							{/if}
+
+							{#if showRateComment}
+								<RateComment
+									messageId={message.id}
+									bind:show={showRateComment}
+									bind:message
+									on:submit={() => {
+										updateChatMessages();
 									}}
-								>
-									<svg
-										xmlns="http://www.w3.org/2000/svg"
-										fill="none"
-										viewBox="0 0 24 24"
-										stroke-width="2"
-										stroke="currentColor"
-										class="w-4 h-4"
-									>
-										<path
-											stroke-linecap="round"
-											stroke-linejoin="round"
-											d="M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
-										/>
-										<path
-											stroke-linecap="round"
-											stroke-linejoin="round"
-											d="M15.91 11.672a.375.375 0 0 1 0 .656l-5.603 3.113a.375.375 0 0 1-.557-.328V8.887c0-.286.307-.466.557-.327l5.603 3.112Z"
-										/>
-									</svg>
-								</button>
-							</Tooltip>
-
-							<Tooltip content={$i18n.t('Regenerate')} placement="bottom">
-								<button
-									type="button"
-									class="{isLastMessage
-										? 'visible'
-										: 'invisible group-hover:visible'} p-1 rounded dark:hover:text-white hover:text-black transition regenerate-response-button"
-									on:click={regenerateResponse}
-								>
-									<svg
-										xmlns="http://www.w3.org/2000/svg"
-										fill="none"
-										viewBox="0 0 24 24"
-										stroke-width="2"
-										stroke="currentColor"
-										class="w-4 h-4"
-									>
-										<path
-											stroke-linecap="round"
-											stroke-linejoin="round"
-											d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"
-										/>
-									</svg>
-								</button>
-							</Tooltip>
-						{/if}
-					</div>
-				{/if}
-
-				{#if showRateComment}
-					<RateComment
-						messageId={message.id}
-						bind:show={showRateComment}
-						bind:message
-						on:submit={() => {
-							updateChatMessages();
-						}}
-					/>
-				{/if}
-			{/if}
+								/>
+							{/if}
+						</div>
+					{/if}
+				</div>
+			</div>
 		</div>
 	</div>
 {/key}

+ 1 - 1
src/lib/components/chat/Messages/Skeleton.svelte

@@ -1,4 +1,4 @@
-<div class="w-full mt-3">
+<div class="w-full mt-3 mb-4">
 	<div class="animate-pulse flex w-full">
 		<div class="space-y-2 w-full">
 			<div class="h-2 bg-gray-200 dark:bg-gray-600 rounded mr-14" />

+ 2 - 2
src/lib/components/chat/ModelSelector/Selector.svelte

@@ -151,7 +151,7 @@
 
 				models.set(await getModels(localStorage.token));
 			} else {
-				toast.error('Download canceled');
+				toast.error($i18n.t('Download canceled'));
 			}
 
 			delete $MODEL_DOWNLOAD_POOL[sanitizedModelTag];
@@ -368,7 +368,7 @@
 						</div>
 
 						<div class="mr-2 translate-y-0.5">
-							<Tooltip content="Cancel">
+							<Tooltip content={$i18n.t('Cancel')}>
 								<button
 									class="text-gray-800 dark:text-gray-100"
 									on:click={() => {

+ 37 - 2
src/lib/components/chat/Settings/Audio.svelte

@@ -26,6 +26,8 @@
 
 	let voices = [];
 	let speaker = '';
+	let models = [];
+	let model = '';
 
 	const getOpenAIVoices = () => {
 		voices = [
@@ -38,6 +40,10 @@
 		];
 	};
 
+	const getOpenAIVoicesModel = () => {
+		models = [{ name: 'tts-1' }, { name: 'tts-1-hd' }];
+	};
+
 	const getWebAPIVoices = () => {
 		const getVoicesLoop = setInterval(async () => {
 			voices = await speechSynthesis.getVoices();
@@ -78,12 +84,16 @@
 		if (TTSEngine === 'openai') {
 			const res = await updateAudioConfig(localStorage.token, {
 				url: OpenAIUrl,
-				key: OpenAIKey
+				key: OpenAIKey,
+				model: model,
+				speaker: speaker
 			});
 
 			if (res) {
 				OpenAIUrl = res.OPENAI_API_BASE_URL;
 				OpenAIKey = res.OPENAI_API_KEY;
+				model = res.OPENAI_API_MODEL;
+				speaker = res.OPENAI_API_VOICE;
 			}
 		}
 	};
@@ -98,9 +108,11 @@
 		STTEngine = settings?.audio?.STTEngine ?? '';
 		TTSEngine = settings?.audio?.TTSEngine ?? '';
 		speaker = settings?.audio?.speaker ?? '';
+		model = settings?.audio?.model ?? '';
 
 		if (TTSEngine === 'openai') {
 			getOpenAIVoices();
+			getOpenAIVoicesModel();
 		} else {
 			getWebAPIVoices();
 		}
@@ -111,6 +123,8 @@
 			if (res) {
 				OpenAIUrl = res.OPENAI_API_BASE_URL;
 				OpenAIKey = res.OPENAI_API_KEY;
+				model = res.OPENAI_API_MODEL;
+				speaker = res.OPENAI_API_VOICE;
 			}
 		}
 	});
@@ -126,7 +140,8 @@
 			audio: {
 				STTEngine: STTEngine !== '' ? STTEngine : undefined,
 				TTSEngine: TTSEngine !== '' ? TTSEngine : undefined,
-				speaker: speaker !== '' ? speaker : undefined
+				speaker: speaker !== '' ? speaker : undefined,
+				model: model !== '' ? model : undefined
 			}
 		});
 		dispatch('save');
@@ -215,6 +230,7 @@
 							if (e.target.value === 'openai') {
 								getOpenAIVoices();
 								speaker = 'alloy';
+								model = 'tts-1';
 							} else {
 								getWebAPIVoices();
 								speaker = '';
@@ -307,6 +323,25 @@
 					</div>
 				</div>
 			</div>
+			<div>
+				<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Model')}</div>
+				<div class="flex w-full">
+					<div class="flex-1">
+						<input
+							list="model-list"
+							class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
+							bind:value={model}
+							placeholder="Select a model"
+						/>
+
+						<datalist id="model-list">
+							{#each models as model}
+								<option value={model.name} />
+							{/each}
+						</datalist>
+					</div>
+				</div>
+			</div>
 		{/if}
 	</div>
 

+ 2 - 2
src/lib/components/chat/Settings/Models.svelte

@@ -245,7 +245,7 @@
 
 				models.set(await getModels(localStorage.token));
 			} else {
-				toast.error('Download canceled');
+				toast.error($i18n.t('Download canceled'));
 			}
 
 			delete $MODEL_DOWNLOAD_POOL[sanitizedModelTag];
@@ -652,7 +652,7 @@
 													</div>
 												</div>
 
-												<Tooltip content="Cancel">
+												<Tooltip content={$i18n.t('Cancel')}>
 													<button
 														class="text-gray-800 dark:text-gray-100"
 														on:click={() => {

+ 25 - 0
src/lib/components/common/ImagePreview.svelte

@@ -1,8 +1,12 @@
 <script lang="ts">
+	import { onMount } from 'svelte';
+
 	export let show = false;
 	export let src = '';
 	export let alt = '';
 
+	let mounted = false;
+
 	const downloadImage = (url, filename) => {
 		fetch(url)
 			.then((response) => response.blob())
@@ -18,6 +22,27 @@
 			})
 			.catch((error) => console.error('Error downloading image:', error));
 	};
+
+	const handleKeyDown = (event: KeyboardEvent) => {
+		if (event.key === 'Escape') {
+			console.log('Escape');
+			show = false;
+		}
+	};
+
+	onMount(() => {
+		mounted = true;
+	});
+
+	$: if (mounted) {
+		if (show) {
+			window.addEventListener('keydown', handleKeyDown);
+			document.body.style.overflow = 'hidden';
+		} else {
+			window.removeEventListener('keydown', handleKeyDown);
+			document.body.style.overflow = 'unset';
+		}
+	}
 </script>
 
 {#if show}

+ 1 - 1
src/lib/components/common/Tags/TagInput.svelte

@@ -17,7 +17,7 @@
 			tagName = '';
 			showTagInput = false;
 		} else {
-			toast.error('Invalid Tag');
+			toast.error($i18n.t(`Invalid Tag`));
 		}
 	};
 </script>

+ 30 - 2
src/lib/components/documents/Settings/WebParams.svelte

@@ -11,9 +11,16 @@
 
 	let webLoaderSSLVerification = true;
 
+	let youtubeLanguage = 'en';
+	let youtubeTranslation = null;
+
 	const submitHandler = async () => {
 		const res = await updateRAGConfig(localStorage.token, {
-			web_loader_ssl_verification: webLoaderSSLVerification
+			web_loader_ssl_verification: webLoaderSSLVerification,
+			youtube: {
+				language: youtubeLanguage.split(',').map((lang) => lang.trim()),
+				translation: youtubeTranslation
+			}
 		});
 	};
 
@@ -22,6 +29,8 @@
 
 		if (res) {
 			webLoaderSSLVerification = res.web_loader_ssl_verification;
+			youtubeLanguage = res.youtube.language.join(',');
+			youtubeTranslation = res.youtube.translation;
 		}
 	});
 </script>
@@ -36,7 +45,7 @@
 	<div class=" space-y-3 pr-1.5 overflow-y-scroll h-full max-h-[22rem]">
 		<div>
 			<div class=" mb-1 text-sm font-medium">
-				{$i18n.t('Retrieval Augmented Generation Settings')}
+				{$i18n.t('Web Loader Settings')}
 			</div>
 
 			<div>
@@ -61,6 +70,25 @@
 					</button>
 				</div>
 			</div>
+
+			<div class=" mt-2 mb-1 text-sm font-medium">
+				{$i18n.t('Youtube Loader Settings')}
+			</div>
+
+			<div>
+				<div class=" py-0.5 flex w-full justify-between">
+					<div class=" w-20 text-xs font-medium self-center">{$i18n.t('Language')}</div>
+					<div class=" flex-1 self-center">
+						<input
+							class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
+							type="text"
+							placeholder={$i18n.t('Enter language codes')}
+							bind:value={youtubeLanguage}
+							autocomplete="off"
+						/>
+					</div>
+				</div>
+			</div>
 		</div>
 	</div>
 	<div class="flex justify-end pt-3 text-sm font-medium">

+ 41 - 155
src/lib/components/layout/Sidebar.svelte

@@ -22,6 +22,7 @@
 	import ShareChatModal from '../chat/ShareChatModal.svelte';
 	import ArchiveBox from '../icons/ArchiveBox.svelte';
 	import ArchivedChatsModal from './Sidebar/ArchivedChatsModal.svelte';
+	import UserMenu from './Sidebar/UserMenu.svelte';
 
 	const BREAKPOINT = 1024;
 
@@ -134,7 +135,7 @@
 
 	const editChatTitle = async (id, _title) => {
 		if (_title === '') {
-			toast.error('Title cannot be an empty string.');
+			toast.error($i18n.t('Title cannot be an empty string.'));
 		} else {
 			title = _title;
 
@@ -447,7 +448,25 @@
 								? ''
 								: 'pt-5'} pb-0.5"
 						>
-							{chat.time_range}
+							{$i18n.t(chat.time_range)}
+							<!-- localisation keys for time_range to be recognized from the i18next parser (so they don't get automatically removed):
+							{$i18n.t('Today')}
+							{$i18n.t('Yesterday')}
+							{$i18n.t('Previous 7 days')}
+							{$i18n.t('Previous 30 days')}
+							{$i18n.t('January')}
+							{$i18n.t('February')}
+							{$i18n.t('March')}
+							{$i18n.t('April')}
+							{$i18n.t('May')}
+							{$i18n.t('June')}
+							{$i18n.t('July')}
+							{$i18n.t('August')}
+							{$i18n.t('September')}
+							{$i18n.t('October')}
+							{$i18n.t('November')}
+							{$i18n.t('December')}
+							-->
 						</div>
 					{/if}
 
@@ -667,163 +686,30 @@
 
 			<div class="flex flex-col">
 				{#if $user !== undefined}
-					<button
-						class=" flex rounded-xl py-3 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-900 transition"
-						on:click={() => {
-							showDropdown = !showDropdown;
+					<UserMenu
+						role={$user.role}
+						on:show={(e) => {
+							if (e.detail === 'archived-chat') {
+								showArchivedChatsModal = true;
+							}
 						}}
 					>
-						<div class=" self-center mr-3">
-							<img
-								src={$user.profile_image_url}
-								class=" max-w-[30px] object-cover rounded-full"
-								alt="User profile"
-							/>
-						</div>
-						<div class=" self-center font-semibold">{$user.name}</div>
-					</button>
-
-					{#if showDropdown}
-						<div
-							id="dropdownDots"
-							class="absolute z-40 bottom-[70px] rounded-lg shadow w-[240px] bg-white dark:bg-gray-900"
-							transition:fade|slide={{ duration: 100 }}
+						<button
+							class=" flex rounded-xl py-3 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-900 transition"
+							on:click={() => {
+								showDropdown = !showDropdown;
+							}}
 						>
-							<div class="p-1 py-2 w-full">
-								{#if $user.role === 'admin'}
-									<button
-										class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
-										on:click={() => {
-											goto('/admin');
-											showDropdown = false;
-										}}
-									>
-										<div class=" self-center mr-3">
-											<svg
-												xmlns="http://www.w3.org/2000/svg"
-												fill="none"
-												viewBox="0 0 24 24"
-												stroke-width="1.5"
-												stroke="currentColor"
-												class="w-5 h-5"
-											>
-												<path
-													stroke-linecap="round"
-													stroke-linejoin="round"
-													d="M17.982 18.725A7.488 7.488 0 0012 15.75a7.488 7.488 0 00-5.982 2.975m11.963 0a9 9 0 10-11.963 0m11.963 0A8.966 8.966 0 0112 21a8.966 8.966 0 01-5.982-2.275M15 9.75a3 3 0 11-6 0 3 3 0 016 0z"
-												/>
-											</svg>
-										</div>
-										<div class=" self-center font-medium">{$i18n.t('Admin Panel')}</div>
-									</button>
-
-									<button
-										class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
-										on:click={() => {
-											goto('/playground');
-											showDropdown = false;
-										}}
-									>
-										<div class=" self-center mr-3">
-											<svg
-												xmlns="http://www.w3.org/2000/svg"
-												fill="none"
-												viewBox="0 0 24 24"
-												stroke-width="1.5"
-												stroke="currentColor"
-												class="w-5 h-5"
-											>
-												<path
-													stroke-linecap="round"
-													stroke-linejoin="round"
-													d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"
-												/>
-											</svg>
-										</div>
-										<div class=" self-center font-medium">{$i18n.t('Playground')}</div>
-									</button>
-								{/if}
-
-								<button
-									class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
-									on:click={() => {
-										showArchivedChatsModal = true;
-										showDropdown = false;
-									}}
-								>
-									<div class=" self-center mr-3">
-										<ArchiveBox className="size-5" strokeWidth="1.5" />
-									</div>
-									<div class=" self-center font-medium">{$i18n.t('Archived Chats')}</div>
-								</button>
-
-								<button
-									class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
-									on:click={async () => {
-										await showSettings.set(true);
-										showDropdown = false;
-									}}
-								>
-									<div class=" self-center mr-3">
-										<svg
-											xmlns="http://www.w3.org/2000/svg"
-											fill="none"
-											viewBox="0 0 24 24"
-											stroke-width="1.5"
-											stroke="currentColor"
-											class="w-5 h-5"
-										>
-											<path
-												stroke-linecap="round"
-												stroke-linejoin="round"
-												d="M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"
-											/>
-											<path
-												stroke-linecap="round"
-												stroke-linejoin="round"
-												d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
-											/>
-										</svg>
-									</div>
-									<div class=" self-center font-medium">{$i18n.t('Settings')}</div>
-								</button>
-							</div>
-
-							<hr class=" dark:border-gray-800 m-0 p-0" />
-
-							<div class="p-1 py-2 w-full">
-								<button
-									class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
-									on:click={() => {
-										localStorage.removeItem('token');
-										location.href = '/auth';
-										showDropdown = false;
-									}}
-								>
-									<div class=" self-center mr-3">
-										<svg
-											xmlns="http://www.w3.org/2000/svg"
-											viewBox="0 0 20 20"
-											fill="currentColor"
-											class="w-5 h-5"
-										>
-											<path
-												fill-rule="evenodd"
-												d="M3 4.25A2.25 2.25 0 015.25 2h5.5A2.25 2.25 0 0113 4.25v2a.75.75 0 01-1.5 0v-2a.75.75 0 00-.75-.75h-5.5a.75.75 0 00-.75.75v11.5c0 .414.336.75.75.75h5.5a.75.75 0 00.75-.75v-2a.75.75 0 011.5 0v2A2.25 2.25 0 0110.75 18h-5.5A2.25 2.25 0 013 15.75V4.25z"
-												clip-rule="evenodd"
-											/>
-											<path
-												fill-rule="evenodd"
-												d="M6 10a.75.75 0 01.75-.75h9.546l-1.048-.943a.75.75 0 111.004-1.114l2.5 2.25a.75.75 0 010 1.114l-2.5 2.25a.75.75 0 11-1.004-1.114l1.048-.943H6.75A.75.75 0 016 10z"
-												clip-rule="evenodd"
-											/>
-										</svg>
-									</div>
-									<div class=" self-center font-medium">{$i18n.t('Sign Out')}</div>
-								</button>
+							<div class=" self-center mr-3">
+								<img
+									src={$user.profile_image_url}
+									class=" max-w-[30px] object-cover rounded-full"
+									alt="User profile"
+								/>
 							</div>
-						</div>
-					{/if}
+							<div class=" self-center font-semibold">{$user.name}</div>
+						</button>
+					</UserMenu>
 				{/if}
 			</div>
 		</div>

+ 172 - 0
src/lib/components/layout/Sidebar/UserMenu.svelte

@@ -0,0 +1,172 @@
+<script lang="ts">
+	import { DropdownMenu } from 'bits-ui';
+	import { createEventDispatcher, getContext } from 'svelte';
+
+	import { flyAndScale } from '$lib/utils/transitions';
+	import { goto } from '$app/navigation';
+	import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
+	import { showSettings } from '$lib/stores';
+	import { fade, slide } from 'svelte/transition';
+
+	const i18n = getContext('i18n');
+
+	export let show = false;
+	export let role = '';
+
+	const dispatch = createEventDispatcher();
+</script>
+
+<DropdownMenu.Root
+	bind:open={show}
+	onOpenChange={(state) => {
+		dispatch('change', state);
+	}}
+>
+	<DropdownMenu.Trigger>
+		<slot />
+	</DropdownMenu.Trigger>
+
+	<slot name="content">
+		<DropdownMenu.Content
+			class="w-full max-w-[240px] rounded-lg p-1 py-1 border border-gray-850 z-50 bg-gray-900 text-white text-sm"
+			sideOffset={8}
+			side="bottom"
+			align="start"
+			transition={(e) => fade(e, { duration: 100 })}
+		>
+			{#if role === 'admin'}
+				<button
+					class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
+					on:click={() => {
+						goto('/admin');
+						show = false;
+					}}
+				>
+					<div class=" self-center mr-3">
+						<svg
+							xmlns="http://www.w3.org/2000/svg"
+							fill="none"
+							viewBox="0 0 24 24"
+							stroke-width="1.5"
+							stroke="currentColor"
+							class="w-5 h-5"
+						>
+							<path
+								stroke-linecap="round"
+								stroke-linejoin="round"
+								d="M17.982 18.725A7.488 7.488 0 0012 15.75a7.488 7.488 0 00-5.982 2.975m11.963 0a9 9 0 10-11.963 0m11.963 0A8.966 8.966 0 0112 21a8.966 8.966 0 01-5.982-2.275M15 9.75a3 3 0 11-6 0 3 3 0 016 0z"
+							/>
+						</svg>
+					</div>
+					<div class=" self-center font-medium">{$i18n.t('Admin Panel')}</div>
+				</button>
+
+				<button
+					class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
+					on:click={() => {
+						goto('/playground');
+						show = false;
+					}}
+				>
+					<div class=" self-center mr-3">
+						<svg
+							xmlns="http://www.w3.org/2000/svg"
+							fill="none"
+							viewBox="0 0 24 24"
+							stroke-width="1.5"
+							stroke="currentColor"
+							class="w-5 h-5"
+						>
+							<path
+								stroke-linecap="round"
+								stroke-linejoin="round"
+								d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"
+							/>
+						</svg>
+					</div>
+					<div class=" self-center font-medium">{$i18n.t('Playground')}</div>
+				</button>
+			{/if}
+
+			<button
+				class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
+				on:click={() => {
+					dispatch('show', 'archived-chat');
+					show = false;
+				}}
+			>
+				<div class=" self-center mr-3">
+					<ArchiveBox className="size-5" strokeWidth="1.5" />
+				</div>
+				<div class=" self-center font-medium">{$i18n.t('Archived Chats')}</div>
+			</button>
+
+			<button
+				class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
+				on:click={async () => {
+					await showSettings.set(true);
+					show = false;
+				}}
+			>
+				<div class=" self-center mr-3">
+					<svg
+						xmlns="http://www.w3.org/2000/svg"
+						fill="none"
+						viewBox="0 0 24 24"
+						stroke-width="1.5"
+						stroke="currentColor"
+						class="w-5 h-5"
+					>
+						<path
+							stroke-linecap="round"
+							stroke-linejoin="round"
+							d="M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"
+						/>
+						<path
+							stroke-linecap="round"
+							stroke-linejoin="round"
+							d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
+						/>
+					</svg>
+				</div>
+				<div class=" self-center font-medium">{$i18n.t('Settings')}</div>
+			</button>
+
+			<hr class=" dark:border-gray-800 my-2 p-0" />
+
+			<button
+				class="flex rounded-md py-2.5 px-3.5 w-full hover:bg-gray-100 dark:hover:bg-gray-800 transition"
+				on:click={() => {
+					localStorage.removeItem('token');
+					location.href = '/auth';
+					show = false;
+				}}
+			>
+				<div class=" self-center mr-3">
+					<svg
+						xmlns="http://www.w3.org/2000/svg"
+						viewBox="0 0 20 20"
+						fill="currentColor"
+						class="w-5 h-5"
+					>
+						<path
+							fill-rule="evenodd"
+							d="M3 4.25A2.25 2.25 0 015.25 2h5.5A2.25 2.25 0 0113 4.25v2a.75.75 0 01-1.5 0v-2a.75.75 0 00-.75-.75h-5.5a.75.75 0 00-.75.75v11.5c0 .414.336.75.75.75h5.5a.75.75 0 00.75-.75v-2a.75.75 0 011.5 0v2A2.25 2.25 0 0110.75 18h-5.5A2.25 2.25 0 013 15.75V4.25z"
+							clip-rule="evenodd"
+						/>
+						<path
+							fill-rule="evenodd"
+							d="M6 10a.75.75 0 01.75-.75h9.546l-1.048-.943a.75.75 0 111.004-1.114l2.5 2.25a.75.75 0 010 1.114l-2.5 2.25a.75.75 0 11-1.004-1.114l1.048-.943H6.75A.75.75 0 016 10z"
+							clip-rule="evenodd"
+						/>
+					</svg>
+				</div>
+				<div class=" self-center font-medium">{$i18n.t('Sign Out')}</div>
+			</button>
+
+			<!-- <DropdownMenu.Item class="flex items-center px-3 py-2 text-sm  font-medium">
+				<div class="flex items-center">Profile</div>
+			</DropdownMenu.Item> -->
+		</DropdownMenu.Content>
+	</slot>
+</DropdownMenu.Root>

+ 28 - 2
src/lib/i18n/locales/ar-BH/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "اعدادات المشرف",
 	"Advanced Parameters": "التعليمات المتقدمة",
 	"all": "الكل",
+	"All Documents": "",
 	"All Users": "جميع المستخدمين",
 	"Allow": "يسمح",
 	"Allow Chat Deletion": "يستطيع حذف المحادثات",
@@ -41,6 +42,7 @@
 	"API Key created.": "API تم أنشاء المفتاح",
 	"API keys": "API المفاتيح",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "الأرشيف",
 	"Archived Chats": "الأرشيف المحادثات",
 	"are allowed - Activate this command by typing": "مسموح - قم بتنشيط هذا الأمر عن طريق الكتابة",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "انتبه للتفاصيل",
 	"Audio": "صوتي",
+	"August": "",
 	"Auto-playback response": "استجابة التشغيل التلقائي",
 	"Auto-send input after 3 sec.": "إرسال تلقائي للإدخال بعد 3 ثوانٍ.",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 الرابط الرئيسي",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "قاعدة البيانات",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "الإفتراضي",
 	"Default (Automatic1111)": "الإفتراضي (Automatic1111)",
 	"Default (SentenceTransformers)": "الإفتراضي (SentenceTransformers)",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "ليس لديك حساب؟",
 	"Don't like the style": "لا أحب النمط",
 	"Download": "تحميل",
+	"Download canceled": "",
 	"Download Database": "تحميل قاعدة البيانات",
 	"Drop any files here to add to the conversation": "أسقط أية ملفات هنا لإضافتها إلى المحادثة",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "e.g. '30s','10m'. الوحدات الزمنية الصالحة هي 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "أدخل Chunk المتداخل",
 	"Enter Chunk Size": "أدخل Chunk الحجم",
 	"Enter Image Size (e.g. 512x512)": "أدخل حجم الصورة (e.g. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "أدخل عنوان URL الأساسي لواجهة برمجة تطبيقات LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "أدخل مفتاح LiteLLM API (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "أدخل LiteLLM API RPM (litllm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "مطالبات التصدير",
 	"Failed to create API Key.": "فشل في إنشاء مفتاح API.",
 	"Failed to read clipboard contents": "فشل في قراءة محتويات الحافظة",
+	"February": "",
 	"Feel free to add specific details": "لا تتردد في إضافة تفاصيل محددة",
 	"File Mode": "وضع الملف",
 	"File not found.": "لم يتم العثور على الملف.",
@@ -206,6 +213,7 @@
 	"Good Response": "استجابة جيدة",
 	"has no conversations.": "ليس لديه محادثات.",
 	"Hello, {{name}}": "مرحبا, {{name}}",
+	"Help": "",
 	"Hide": "أخفاء",
 	"Hide Additional Params": "إخفاء المعلمات الإضافية",
 	"How can I help you today?": "كيف استطيع مساعدتك اليوم؟",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "قم بتضمين علامة `-api` عند تشغيل Stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "واجهه المستخدم",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "انضم إلى Discord للحصول على المساعدة.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT تجريبي",
 	"JWT Token": "JWT Token",
 	"Keep Alive": "Keep Alive",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "إدارة نماذج LiteLLM",
 	"Manage Models": "إدارة النماذج",
 	"Manage Ollama Models": "إدارة موديلات Ollama",
+	"March": "",
 	"Max Tokens": "Max Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "يمكن تنزيل 3 نماذج كحد أقصى في وقت واحد. الرجاء معاودة المحاولة في وقت لاحق.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "الحد الأدنى من النقاط",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "لست متأكدا ماذا أكتب؟ التبديل إلى",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ملاحظة: إذا قمت بتعيين الحد الأدنى من النقاط، فلن يؤدي البحث إلا إلى إرجاع المستندات التي لها نقاط أكبر من أو تساوي الحد الأدنى من النقاط.",
 	"Notifications": "إشعارات",
+	"November": "",
+	"October": "",
 	"Off": "أغلاق",
 	"Okay, Let's Go!": "حسنا دعنا نذهب!",
 	"OLED Dark": "OLED داكن",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "نص عادي (.txt)",
 	"Playground": "مكان التجربة",
 	"Positive attitude": "موقف ايجابي",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "صورة الملف الشخصي",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "موجه (على سبيل المثال: أخبرني بحقيقة ممتعة عن الإمبراطورية الرومانية)",
 	"Prompt Content": "محتوى عاجل",
 	"Prompt suggestions": "اقتراحات سريعة",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "تم ضبط نموذج إعادة الترتيب على \"{{reranking_model}}\"",
 	"Reset Vector Storage": "إعادة تعيين تخزين المتجهات",
 	"Response AutoCopy to Clipboard": "النسخ التلقائي للاستجابة إلى الحافظة",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "منصب",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "أرسل رسالة.",
 	"Send message": "أرسل رسالة",
+	"September": "",
 	"Server connection verified": "تم التحقق من اتصال الخادم",
 	"Set as default": "الافتراضي",
 	"Set Default Model": "تفعيد الموديل الافتراضي",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "حجم الصورة",
+	"Set Model": "ضبط النموذج",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "ضبط الخطوات",
 	"Set Title Auto-Generation Model": "قم بتعيين نموذج إنشاء العنوان تلقائيًا",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "الترجمة (e.g. about the Roman Empire)",
 	"Success": "نجاح",
 	"Successfully updated.": "تم التحديث بنجاح.",
+	"Suggested": "",
 	"Sync All": "مزامنة الكل",
 	"System": "النظام",
 	"System Prompt": "محادثة النظام",
@@ -417,11 +438,13 @@
 	"Title": "العنوان",
 	"Title (e.g. Tell me a fun fact)": "العناون (e.g. Tell me a fun fact)",
 	"Title Auto-Generation": "توليد تلقائي للعنوان",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "موجه إنشاء العنوان",
 	"to": "الى",
 	"To access the available model names for downloading,": "للوصول إلى أسماء الموديلات المتاحة للتنزيل،",
 	"To access the GGUF models available for downloading,": "للوصول إلى الموديلات GGUF المتاحة للتنزيل،",
 	"to chat input.": "الى كتابة المحادثه",
+	"Today": "",
 	"Toggle settings": "فتح وأغلاق الاعدادات",
 	"Toggle sidebar": "فتح وأغلاق الشريط الجانبي",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "إصدار",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "تحذير: إذا قمت بتحديث أو تغيير نموذج التضمين الخاص بك، فستحتاج إلى إعادة استيراد كافة المستندات.",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "Webhook الرابط",
 	"WebUI Add-ons": "WebUI الأضافات",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "اكتب اقتراحًا سريعًا (على سبيل المثال، من أنت؟)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "اكتب ملخصًا في 50 كلمة يلخص [الموضوع أو الكلمة الرئيسية].",
+	"Yesterday": "",
 	"You": "أنت",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "مساعدك المفيد هنا",
 	"You're now logged in.": "لقد قمت الآن بتسجيل الدخول.",
-	"Youtube": "Youtube"
+	"Youtube": "Youtube",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/bg-BG/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Настройки на Администратор",
 	"Advanced Parameters": "Разширени Параметри",
 	"all": "всички",
+	"All Documents": "",
 	"All Users": "Всички Потребители",
 	"Allow": "Позволи",
 	"Allow Chat Deletion": "Позволи Изтриване на Чат",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "са разрешени - Активирайте тази команда чрез въвеждане",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Аудио",
+	"August": "",
 	"Auto-playback response": "Аувтоматично възпроизвеждане на Отговора",
 	"Auto-send input after 3 sec.": "Аувтоматично изпращане на входа след 3 сек.",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Базов URL",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "База данни",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "По подразбиране",
 	"Default (Automatic1111)": "По подразбиране (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Нямате акаунт?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Сваляне на база данни",
 	"Drop any files here to add to the conversation": "Пускане на файлове тук, за да ги добавите в чата",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр. '30с','10м'. Валидни единици са 'с', 'м', 'ч'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Въведете Chunk Overlap",
 	"Enter Chunk Size": "Въведете Chunk Size",
 	"Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Въведете LiteLLM API Base URL (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Въведете LiteLLM API Key (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Въведете LiteLLM API RPM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Експортване на промптове",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Грешка при четене на съдържанието от клипборда",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Файл Мод",
 	"File not found.": "Файл не е намерен.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Здравей, {{name}}",
+	"Help": "",
 	"Hide": "Скрий",
 	"Hide Additional Params": "Скрий допълнителни параметри",
 	"How can I help you today?": "Как мога да ви помогна днес?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Интерфейс",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "свържете се с нашия Discord за помощ.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT Expiration",
 	"JWT Token": "JWT Token",
 	"Keep Alive": "Keep Alive",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Управление на LiteLLM Моделите",
 	"Manage Models": "Управление на Моделите",
 	"Manage Ollama Models": "Управление на Ollama Моделите",
+	"March": "",
 	"Max Tokens": "Max Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 модели могат да бъдат сваляни едновременно. Моля, опитайте отново по-късно.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Не сте сигурни, какво да напишете? Превключете към",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Десктоп Известия",
+	"November": "",
+	"October": "",
 	"Off": "Изкл.",
 	"Okay, Let's Go!": "ОК, Нека започваме!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Плейграунд",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Съдържание на промпта",
 	"Prompt suggestions": "Промпт предложения",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Ресет Vector Storage",
 	"Response AutoCopy to Clipboard": "Аувтоматично копиране на отговор в клипборда",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Роля",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Изпращане на Съобщение",
 	"Send message": "Изпращане на съобщение",
+	"September": "",
 	"Server connection verified": "Server connection verified",
 	"Set as default": "Задай по подразбиране",
 	"Set Default Model": "Задай Модел По Подразбиране",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Задай Размер на Изображението",
+	"Set Model": "Задай Модел",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Задай Стъпки",
 	"Set Title Auto-Generation Model": "Задай Модел за Автоматично Генериране на Заглавие",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Успех",
 	"Successfully updated.": "Успешно обновено.",
+	"Suggested": "",
 	"Sync All": "Синхронизиране на всички",
 	"System": "Система",
 	"System Prompt": "Системен Промпт",
@@ -417,11 +438,13 @@
 	"Title": "Заглавие",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Автоматично Генериране на Заглавие",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Промпт за Генериране на Заглавие",
 	"to": "в",
 	"To access the available model names for downloading,": "За да получите достъп до наличните имена на модели за изтегляне,",
 	"To access the GGUF models available for downloading,": "За да получите достъп до GGUF моделите, налични за изтегляне,",
 	"to chat input.": "към чат входа.",
+	"Today": "",
 	"Toggle settings": "Toggle settings",
 	"Toggle sidebar": "Toggle sidebar",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Версия",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Уеб",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI Добавки",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Локален)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Напиши предложение за промпт (напр. Кой сте вие?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Напиши описание в 50 знака, което описва [тема или ключова дума].",
+	"Yesterday": "",
 	"You": "Вие",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Вие сте полезен асистент.",
 	"You're now logged in.": "Сега, вие влязохте в системата.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/bn-BD/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "এডমিন সেটিংস",
 	"Advanced Parameters": "এডভান্সড প্যারামিটার্স",
 	"all": "সব",
+	"All Documents": "",
 	"All Users": "সব ইউজার",
 	"Allow": "অনুমোদন",
 	"Allow Chat Deletion": "চ্যাট ডিলিট করতে দিন",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "এপিআই আরপিএম",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "চ্যাট ইতিহাস সংরক্ষণাগার",
 	"are allowed - Activate this command by typing": "অনুমোদিত - কমান্ডটি চালু করার জন্য লিখুন",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "অডিও",
+	"August": "",
 	"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
 	"Auto-send input after 3 sec.": "৩ সেকেন্ড পর ইনপুট সংয়ক্রিয়ভাবে পাঠান",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 বেজ ইউআরএল",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "ডেটাবেজ",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "ডিফল্ট",
 	"Default (Automatic1111)": "ডিফল্ট (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "একাউন্ট নেই?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "ডেটাবেজ ডাউনলোড করুন",
 	"Drop any files here to add to the conversation": "আলোচনায় যুক্ত করার জন্য যে কোন ফাইল এখানে ড্রপ করুন",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "যেমন '30s','10m'. সময়ের অনুমোদিত অনুমোদিত এককগুলি হচ্ছে 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "চাঙ্ক ওভারল্যাপ লিখুন",
 	"Enter Chunk Size": "চাংক সাইজ লিখুন",
 	"Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM এপিআই বেজ ইউআরএল লিখুন (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "LiteLLM এপিআই কোড লিখুন (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM এপিআই RPM দিন (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "প্রম্পটগুলো একপোর্ট করুন",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "ক্লিপবোর্ডের বিষয়বস্তু পড়া সম্ভব হয়নি",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "ফাইল মোড",
 	"File not found.": "ফাইল পাওয়া যায়নি",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "হ্যালো, {{name}}",
+	"Help": "",
 	"Hide": "লুকান",
 	"Hide Additional Params": "অতিরিক্ত প্যারামিটাগুলো লুকান",
 	"How can I help you today?": "আপনাকে আজ কিভাবে সাহায্য করতে পারি?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui চালু করার সময় `--api` ফ্ল্যাগ সংযুক্ত করুন",
 	"Input commands": "",
 	"Interface": "ইন্টারফেস",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT-র মেয়াদ",
 	"JWT Token": "JWT টোকেন",
 	"Keep Alive": "সচল রাখুন",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "LiteLLM মডেল ব্যবস্থাপনা করুন",
 	"Manage Models": "মডেলসমূহ ব্যবস্থাপনা করুন",
 	"Manage Ollama Models": "Ollama মডেলসূহ ব্যবস্থাপনা করুন",
+	"March": "",
 	"Max Tokens": "সর্বোচ্চ টোকন",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "একসঙ্গে সর্বোচ্চ তিনটি মডেল ডাউনলোড করা যায়। দয়া করে পরে আবার চেষ্টা করুন।",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "কী লিখতে হবে নিশ্চিত না? পরিবর্তন করুন:",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "নোটিফিকেশনসমূহ",
+	"November": "",
+	"October": "",
 	"Off": "বন্ধ",
 	"Okay, Let's Go!": "ঠিক আছে, চলুন যাই!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "খেলাঘর",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "প্রম্পট কন্টেন্ট",
 	"Prompt suggestions": "প্রম্পট সাজেশনসমূহ",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "ভেক্টর স্টোরেজ রিসেট করুন",
 	"Response AutoCopy to Clipboard": "রেসপন্সগুলো স্বয়ংক্রিভাবে ক্লিপবোর্ডে কপি হবে",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "পদবি",
 	"Rosé Pine": "রোজ পাইন",
 	"Rosé Pine Dawn": "ভোরের রোজ পাইন",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "একটি মেসেজ পাঠান",
 	"Send message": "মেসেজ পাঠান",
+	"September": "",
 	"Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে",
 	"Set as default": "ডিফল্ট হিসেবে নির্ধারণ করুন",
 	"Set Default Model": "ডিফল্ট মডেল নির্ধারণ করুন",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "ছবির সাইজ নির্ধারণ করুন",
+	"Set Model": "মডেল নির্ধারণ করুন",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "পরবর্তী ধাপসমূহ",
 	"Set Title Auto-Generation Model": "শিরোনাম অটোজেনারেশন মডেন নির্ধারণ করুন",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "সফল",
 	"Successfully updated.": "সফলভাবে আপডেট হয়েছে",
+	"Suggested": "",
 	"Sync All": "সব সিংক্রোনাইজ করুন",
 	"System": "সিস্টেম",
 	"System Prompt": "সিস্টেম প্রম্পট",
@@ -417,11 +438,13 @@
 	"Title": "শিরোনাম",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "স্বয়ংক্রিয় শিরোনামগঠন",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "শিরোনামগঠন প্রম্পট",
 	"to": "প্রতি",
 	"To access the available model names for downloading,": "ডাউনলোডের জন্য এভেইলএবল মডেলের নামগুলো এক্সেস করতে,",
 	"To access the GGUF models available for downloading,": "ডাউলোডের জন্য এভেইলএবল GGUF মডেলগুলো এক্সেস করতে,",
 	"to chat input.": "চ্যাট ইনপুটে",
+	"Today": "",
 	"Toggle settings": "সেটিংস টোগল",
 	"Toggle sidebar": "সাইডবার টোগল",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "ভার্সন",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "ওয়েব",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI এড-অনসমূহ",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (লোকাল)",
 	"Write a prompt suggestion (e.g. Who are you?)": "একটি প্রম্পট সাজেশন লিখুন (যেমন Who are you?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "৫০ শব্দের মধ্যে [topic or keyword] এর একটি সারসংক্ষেপ লিখুন।",
+	"Yesterday": "",
 	"You": "আপনি",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "আপনি একজন উপকারী এসিস্ট্যান্ট",
 	"You're now logged in.": "আপনি এখন লগইন করা অবস্থায় আছেন",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/ca-ES/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Configuració d'Administració",
 	"Advanced Parameters": "Paràmetres Avançats",
 	"all": "tots",
+	"All Documents": "",
 	"All Users": "Tots els Usuaris",
 	"Allow": "Permet",
 	"Allow Chat Deletion": "Permet la Supressió del Xat",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "RPM de l'API",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "Arxiu d'historial de xat",
 	"are allowed - Activate this command by typing": "estan permesos - Activa aquesta comanda escrivint",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Àudio",
+	"August": "",
 	"Auto-playback response": "Resposta de reproducció automàtica",
 	"Auto-send input after 3 sec.": "Enviar entrada automàticament després de 3 segons",
 	"AUTOMATIC1111 Base URL": "URL Base AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Base de Dades",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Per defecte",
 	"Default (Automatic1111)": "Per defecte (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "No tens un compte?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Descarrega Base de Dades",
 	"Drop any files here to add to the conversation": "Deixa qualsevol arxiu aquí per afegir-lo a la conversa",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p. ex. '30s','10m'. Les unitats de temps vàlides són 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Introdueix el Solapament de Blocs",
 	"Enter Chunk Size": "Introdueix la Mida del Bloc",
 	"Enter Image Size (e.g. 512x512)": "Introdueix la Mida de la Imatge (p. ex. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Introdueix l'URL Base de LiteLLM API (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Introdueix la Clau de LiteLLM API (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Introdueix RPM de LiteLLM API (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exporta Prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Mode Arxiu",
 	"File not found.": "Arxiu no trobat.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Hola, {{name}}",
+	"Help": "",
 	"Hide": "Amaga",
 	"Hide Additional Params": "Amaga Paràmetres Addicionals",
 	"How can I help you today?": "Com et puc ajudar avui?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interfície",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "uneix-te al nostre Discord per ajuda.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Expiració de JWT",
 	"JWT Token": "Token JWT",
 	"Keep Alive": "Mantén Actiu",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Gestiona Models LiteLLM",
 	"Manage Models": "Gestiona Models",
 	"Manage Ollama Models": "Gestiona Models Ollama",
+	"March": "",
 	"Max Tokens": "Màxim de Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es poden descarregar un màxim de 3 models simultàniament. Si us plau, prova-ho més tard.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "No estàs segur del que escriure? Canvia a",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notificacions d'Escriptori",
+	"November": "",
+	"October": "",
 	"Off": "Desactivat",
 	"Okay, Let's Go!": "D'acord, Anem!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Zona de Jocs",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Contingut del Prompt",
 	"Prompt suggestions": "Suggeriments de Prompt",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Reinicia l'Emmagatzematge de Vectors",
 	"Response AutoCopy to Clipboard": "Resposta AutoCopiar al Portapapers",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rol",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Albada Rosé Pine",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Envia un Missatge",
 	"Send message": "Envia missatge",
+	"September": "",
 	"Server connection verified": "Connexió al servidor verificada",
 	"Set as default": "Estableix com a predeterminat",
 	"Set Default Model": "Estableix Model Predeterminat",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Estableix Mida de la Imatge",
+	"Set Model": "Estableix Model",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Estableix Passos",
 	"Set Title Auto-Generation Model": "Estableix Model d'Auto-Generació de Títol",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Èxit",
 	"Successfully updated.": "Actualitzat amb èxit.",
+	"Suggested": "",
 	"Sync All": "Sincronitza Tot",
 	"System": "Sistema",
 	"System Prompt": "Prompt del Sistema",
@@ -417,11 +438,13 @@
 	"Title": "Títol",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Auto-Generació de Títol",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt de Generació de Títol",
 	"to": "a",
 	"To access the available model names for downloading,": "Per accedir als noms dels models disponibles per descarregar,",
 	"To access the GGUF models available for downloading,": "Per accedir als models GGUF disponibles per descarregar,",
 	"to chat input.": "a l'entrada del xat.",
+	"Today": "",
 	"Toggle settings": "Commuta configuracions",
 	"Toggle sidebar": "Commuta barra lateral",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Versió",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Complements de WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Escriu una suggerència de prompt (p. ex. Qui ets tu?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Escriu un resum en 50 paraules que resumeixi [tema o paraula clau].",
+	"Yesterday": "",
 	"You": "Tu",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Ets un assistent útil.",
 	"You're now logged in.": "Ara estàs connectat.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 56 - 30
src/lib/i18n/locales/de-DE/translation.json

@@ -14,20 +14,21 @@
 	"Add a model tag name": "Benenne deinen Modell-Tag",
 	"Add a short description about what this modelfile does": "Füge eine kurze Beschreibung hinzu, was dieses Modelfile kann",
 	"Add a short title for this prompt": "Füge einen kurzen Titel für diesen Prompt hinzu",
-	"Add a tag": "Tag hinzufügen",
-	"Add custom prompt": "",
+	"Add a tag": "benenne",
+	"Add custom prompt": "Eigenen Prompt hinzufügen",
 	"Add Docs": "Dokumente hinzufügen",
 	"Add Files": "Dateien hinzufügen",
 	"Add message": "Nachricht eingeben",
 	"Add Model": "Modell hinzufügen",
 	"Add Tags": "Tags hinzufügen",
-	"Add User": "",
+	"Add User": "User hinzufügen",
 	"Adjusting these settings will apply changes universally to all users.": "Das Anpassen dieser Einstellungen wirkt sich universell auf alle Benutzer aus.",
 	"admin": "Administrator",
 	"Admin Panel": "Admin Panel",
 	"Admin Settings": "Admin Einstellungen",
 	"Advanced Parameters": "Erweiterte Parameter",
 	"all": "Alle",
+	"All Documents": "Alle Dokumente",
 	"All Users": "Alle Benutzer",
 	"Allow": "Erlauben",
 	"Allow Chat Deletion": "Chat Löschung erlauben",
@@ -39,15 +40,17 @@
 	"API Base URL": "API Basis URL",
 	"API Key": "API Key",
 	"API Key created.": "API Key erstellt",
-	"API keys": "",
+	"API keys": "API Schlüssel",
 	"API RPM": "API RPM",
+	"April": "April",
 	"Archive": "Archivieren",
 	"Archived Chats": "Archivierte Chats",
 	"are allowed - Activate this command by typing": "sind erlaubt - Aktiviere diesen Befehl, indem du",
 	"Are you sure?": "Bist du sicher?",
-	"Attach file": "",
+	"Attach file": "Datei anhängen",
 	"Attention to detail": "Auge fürs Detail",
 	"Audio": "Audio",
+	"August": "August",
 	"Auto-playback response": "Automatische Wiedergabe der Antwort",
 	"Auto-send input after 3 sec.": "Automatisches Senden der Eingabe nach 3 Sek",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Basis URL",
@@ -55,10 +58,10 @@
 	"available!": "verfügbar!",
 	"Back": "Zurück",
 	"Bad Response": "Schlechte Antwort",
-	"before": "",
+	"before": "bereits geteilt",
 	"Being lazy": "Faul sein",
 	"Builder Mode": "Builder Modus",
-	"Bypass SSL verification for Websites": "",
+	"Bypass SSL verification for Websites": "Bypass SSL-Verifizierung für Websites",
 	"Cancel": "Abbrechen",
 	"Categories": "Kategorien",
 	"Change Password": "Passwort ändern",
@@ -73,12 +76,12 @@
 	"Chunk Overlap": "Chunk Overlap",
 	"Chunk Params": "Chunk Parameter",
 	"Chunk Size": "Chunk Size",
-	"Citation": "",
+	"Citation": "Zitate",
 	"Click here for help.": "Klicke hier für Hilfe.",
 	"Click here to": "Klicke hier, um",
 	"Click here to check other modelfiles.": "Klicke hier, um andere Modelfiles zu überprüfen.",
 	"Click here to select": "Klicke hier um auszuwählen",
-	"Click here to select a csv file.": "",
+	"Click here to select a csv file.": "Klicke hier um eine CSV-Datei auszuwählen.",
 	"Click here to select documents.": "Klicke hier um Dokumente auszuwählen",
 	"click here.": "hier klicken.",
 	"Click on the user role button to change a user's role.": "Klicke auf die Benutzerrollenschaltfläche, um die Rolle eines Benutzers zu ändern.",
@@ -112,9 +115,10 @@
 	"Custom": "Benutzerdefiniert",
 	"Customize Ollama models for a specific purpose": "Ollama-Modelle für einen bestimmten Zweck anpassen",
 	"Dark": "Dunkel",
-	"Dashboard": "",
+	"Dashboard": "Dashboard",
 	"Database": "Datenbank",
 	"DD/MM/YYYY HH:mm": "DD.MM.YYYY HH:mm",
+	"December": "Dezember",
 	"Default": "Standard",
 	"Default (Automatic1111)": "Standard (Automatic1111)",
 	"Default (SentenceTransformers)": "Standard (SentenceTransformers)",
@@ -139,7 +143,7 @@
 	"Discover a prompt": "Einen Prompt entdecken",
 	"Discover, download, and explore custom prompts": "Benutzerdefinierte Prompts entdecken, herunterladen und erkunden",
 	"Discover, download, and explore model presets": "Modellvorgaben entdecken, herunterladen und erkunden",
-	"Display the username instead of You in the Chat": "Den Benutzernamen anstelle von 'Du' im Chat anzeigen",
+	"Display the username instead of You in the Chat": "Den Benutzernamen anstelle von 'du' im Chat anzeigen",
 	"Document": "Dokument",
 	"Document Settings": "Dokumenteinstellungen",
 	"Documents": "Dokumente",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Hast du vielleicht noch kein Konto?",
 	"Don't like the style": "Dir gefällt der Style nicht",
 	"Download": "Herunterladen",
+	"Download canceled": "Download abgebrochen",
 	"Download Database": "Datenbank herunterladen",
 	"Drop any files here to add to the conversation": "Ziehe Dateien in diesen Bereich, um sie an den Chat anzuhängen",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "z.B. '30s','10m'. Gültige Zeiteinheiten sind 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Gib den Chunk Overlap ein",
 	"Enter Chunk Size": "Gib die Chunk Size ein",
 	"Enter Image Size (e.g. 512x512)": "Gib die Bildgröße ein (z.B. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Gib die LiteLLM API BASE URL ein (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Gib den LiteLLM API Key ein (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Gib die LiteLLM API RPM ein (litellm_params.rpm)",
@@ -173,7 +179,7 @@
 	"Enter Max Tokens (litellm_params.max_tokens)": "Gib die maximalen Token ein (litellm_params.max_tokens) an",
 	"Enter model tag (e.g. {{modelTag}})": "Gib den Model-Tag ein",
 	"Enter Number of Steps (e.g. 50)": "Gib die Anzahl an Schritten ein (z.B. 50)",
-	"Enter Score": "",
+	"Enter Score": "Score eingeben",
 	"Enter stop sequence": "Stop-Sequenz eingeben",
 	"Enter Top K": "Gib Top K ein",
 	"Enter URL (e.g. http://127.0.0.1:7860/)": "Gib die URL ein (z.B. http://127.0.0.1:7860/)",
@@ -181,7 +187,7 @@
 	"Enter Your Email": "Gib deine E-Mail-Adresse ein",
 	"Enter Your Full Name": "Gib deinen vollständigen Namen ein",
 	"Enter Your Password": "Gib dein Passwort ein",
-	"Enter Your Role": "",
+	"Enter Your Role": "Gebe deine Rolle ein",
 	"Experimental": "Experimentell",
 	"Export All Chats (All Users)": "Alle Chats exportieren (alle Benutzer)",
 	"Export Chats": "Chats exportieren",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Prompts exportieren",
 	"Failed to create API Key.": "API Key erstellen fehlgeschlagen",
 	"Failed to read clipboard contents": "Fehler beim Lesen des Zwischenablageninhalts",
+	"February": "Februar",
 	"Feel free to add specific details": "Ergänze Details.",
 	"File Mode": "File Modus",
 	"File not found.": "Datei nicht gefunden.",
@@ -206,9 +213,10 @@
 	"Good Response": "Gute Antwort",
 	"has no conversations.": "hat keine Unterhaltungen.",
 	"Hello, {{name}}": "Hallo, {{name}}",
+	"Help": "Hilfe",
 	"Hide": "Verbergen",
 	"Hide Additional Params": "Verstecke zusätzliche Parameter",
-	"How can I help you today?": "Wie kann ich Dir heute helfen?",
+	"How can I help you today?": "Wie kann ich dir heute helfen?",
 	"Hybrid Search": "Hybride Suche",
 	"Image Generation (Experimental)": "Bildgenerierung (experimentell)",
 	"Image Generation Engine": "Bildgenerierungs-Engine",
@@ -218,11 +226,15 @@
 	"Import Documents Mapping": "Dokumentenmapping importieren",
 	"Import Modelfiles": "Modelfiles importieren",
 	"Import Prompts": "Prompts importieren",
-	"Include `--api` flag when running stable-diffusion-webui": "Füge das `--api`-Flag hinzu, wenn Du stable-diffusion-webui nutzt",
-	"Input commands": "",
+	"Include `--api` flag when running stable-diffusion-webui": "Füge das `--api`-Flag hinzu, wenn du stable-diffusion-webui nutzt",
+	"Input commands": "Eingabebefehle",
 	"Interface": "Benutzeroberfläche",
+	"Invalid Tag": "Ungültiger Tag",
+	"January": "Januar",
 	"join our Discord for help.": "Trete unserem Discord bei, um Hilfe zu erhalten.",
 	"JSON": "JSON",
+	"July": "Juli",
+	"June": "Juni",
 	"JWT Expiration": "JWT-Ablauf",
 	"JWT Token": "JWT-Token",
 	"Keep Alive": "Keep Alive",
@@ -237,10 +249,12 @@
 	"Manage LiteLLM Models": "LiteLLM-Modelle verwalten",
 	"Manage Models": "Modelle verwalten",
 	"Manage Ollama Models": "Ollama-Modelle verwalten",
+	"March": "März",
 	"Max Tokens": "Maximale Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es können maximal 3 Modelle gleichzeitig heruntergeladen werden. Bitte versuche es später erneut.",
+	"May": "Mai",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "Fortlaudende Nachrichten in diesem Chat werden nicht automatisch geteilt. Benutzer mit dem Link können den Chat einsehen.",
-	"Minimum Score": "",
+	"Minimum Score": "Mindestscore",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",
 	"Mirostat Tau": "Mirostat Tau",
@@ -274,13 +288,15 @@
 	"No source available": "",
 	"Not factually correct": "Nicht sachlich korrekt.",
 	"Not sure what to add?": "Nicht sicher, was hinzugefügt werden soll?",
-	"Not sure what to write? Switch to": "Nicht sicher, was Du schreiben sollst? Wechsel zu",
+	"Not sure what to write? Switch to": "Nicht sicher, was du schreiben sollst? Wechsel zu",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Desktop-Benachrichtigungen",
+	"November": "November",
+	"October": "Oktober",
 	"Off": "Aus",
 	"Okay, Let's Go!": "Okay, los geht's!",
 	"OLED Dark": "OLED Dunkel",
-	"Ollama": "",
+	"Ollama": "Ollama",
 	"Ollama Base URL": "Ollama Basis URL",
 	"Ollama Version": "Ollama-Version",
 	"On": "Ein",
@@ -288,12 +304,12 @@
 	"Only alphanumeric characters and hyphens are allowed in the command string.": "Nur alphanumerische Zeichen und Bindestriche sind im Befehlsstring erlaubt.",
 	"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.": "Hoppla! Warte noch einen Moment! Die Dateien sind noch im der Verarbeitung. Bitte habe etwas Geduld und wir informieren Dich, sobald sie bereit sind.",
 	"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hoppla! Es sieht so aus, als wäre die URL ungültig. Bitte überprüfe sie und versuche es nochmal.",
-	"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppla! Du verwendest eine nicht unterstützte Methode (nur Frontend). Bitte stelle die WebUI vom Backend aus bereit.",
+	"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hoppla! du verwendest eine nicht unterstützte Methode (nur Frontend). Bitte stelle die WebUI vom Backend aus bereit.",
 	"Open": "Öffne",
 	"Open AI": "Open AI",
 	"Open AI (Dall-E)": "Open AI (Dall-E)",
 	"Open new chat": "Neuen Chat öffnen",
-	"OpenAI": "",
+	"OpenAI": "OpenAI",
 	"OpenAI API": "OpenAI-API",
 	"OpenAI API Config": "OpenAI API Konfiguration",
 	"OpenAI API Key is required.": "OpenAI API Key erforderlich.",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "Nur Text (.txt)",
 	"Playground": "Testumgebung",
 	"Positive attitude": "Positive Einstellung",
+	"Previous 30 days": "Vorherige 30 Tage",
+	"Previous 7 days": "Vorherige 7 Tage",
 	"Profile Image": "Profilbild",
+	"Prompt": "Prompt",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (z.B. Erzähle mir eine interessante Tatsache über das Römische Reich.",
 	"Prompt Content": "Prompt-Inhalt",
 	"Prompt suggestions": "Prompt-Vorschläge",
@@ -333,12 +352,11 @@
 	"Repeat Last N": "Repeat Last N",
 	"Repeat Penalty": "Repeat Penalty",
 	"Request Mode": "Request-Modus",
-	"Reranking Model": "",
-	"Reranking model disabled": "",
+	"Reranking Model": "Reranking Modell",
+	"Reranking model disabled": "Rranking Modell deaktiviert",
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Vektorspeicher zurücksetzen",
 	"Response AutoCopy to Clipboard": "Antwort automatisch in die Zwischenablage kopieren",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rolle",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -346,7 +364,7 @@
 	"Save & Create": "Speichern und erstellen",
 	"Save & Submit": "Speichern und senden",
 	"Save & Update": "Speichern und aktualisieren",
-	"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": "Das direkte Speichern von Chat-Protokollen im Browser-Speicher wird nicht mehr unterstützt. Bitte nimm Dir einen Moment Zeit, um deine Chat-Protokolle herunterzuladen und zu löschen, indem Du auf die Schaltfläche unten klickst. Keine Sorge, Du kannst deine Chat-Protokolle problemlos über das Backend wieder importieren.",
+	"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": "Das direkte Speichern von Chat-Protokollen im Browser-Speicher wird nicht mehr unterstützt. Bitte nimm dir einen Moment Zeit, um deine Chat-Protokolle herunterzuladen und zu löschen, indem du auf die Schaltfläche unten klickst. Keine Sorge, du kannst deine Chat-Protokolle problemlos über das Backend wieder importieren.",
 	"Scan": "Scannen",
 	"Scan complete!": "Scan abgeschlossen!",
 	"Scan for documents from {{path}}": "Dokumente von {{path}} scannen",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Eine Nachricht senden",
 	"Send message": "Nachricht senden",
+	"September": "September",
 	"Server connection verified": "Serververbindung überprüft",
 	"Set as default": "Als Standard festlegen",
 	"Set Default Model": "Standardmodell festlegen",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Bildgröße festlegen",
+	"Set Model": "Modell festlegen",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Schritte festlegen",
 	"Set Title Auto-Generation Model": "Modell für automatische Titelgenerierung festlegen",
@@ -387,7 +407,7 @@
 	"Sign Out": "Abmelden",
 	"Sign up": "Registrieren",
 	"Signing in": "Anmeldung",
-	"Source": "",
+	"Source": "Quellen",
 	"Speech recognition error: {{error}}": "Spracherkennungsfehler: {{error}}",
 	"Speech-to-Text Engine": "Sprache-zu-Text-Engine",
 	"SpeechRecognition API is not supported in this browser.": "Die Spracherkennungs-API wird in diesem Browser nicht unterstützt.",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "Untertitel (z.B. über das Römische Reich)",
 	"Success": "Erfolg",
 	"Successfully updated.": "Erfolgreich aktualisiert.",
+	"Suggested": "Vorgeschlagen",
 	"Sync All": "Alles synchronisieren",
 	"System": "System",
 	"System Prompt": "System-Prompt",
@@ -408,7 +429,7 @@
 	"Text-to-Speech Engine": "Text-zu-Sprache-Engine",
 	"Tfs Z": "Tfs Z",
 	"Thanks for your feedback!": "Danke für dein Feedback",
-	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "",
+	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Der Score sollte ein Wert zwischen 0,0 (0 %) und 1,0 (100 %) sein.",
 	"Theme": "Design",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Dadurch werden deine wertvollen Unterhaltungen sicher in der Backend-Datenbank gespeichert. Vielen Dank!",
 	"This setting does not sync across browsers or devices.": "Diese Einstellung wird nicht zwischen Browsern oder Geräten synchronisiert.",
@@ -417,11 +438,13 @@
 	"Title": "Titel",
 	"Title (e.g. Tell me a fun fact)": "Titel (z.B. Erzähle mir eine lustige Tatsache",
 	"Title Auto-Generation": "Automatische Titelgenerierung",
+	"Title cannot be an empty string.": "Titel darf nicht leer sein.",
 	"Title Generation Prompt": "Prompt für Titelgenerierung",
 	"to": "für",
 	"To access the available model names for downloading,": "Um auf die verfügbaren Modellnamen zum Herunterladen zuzugreifen,",
 	"To access the GGUF models available for downloading,": "Um auf die verfügbaren GGUF Modelle zum Herunterladen zuzugreifen",
 	"to chat input.": "to chat input.",
+	"Today": "Heute",
 	"Toggle settings": "Einstellungen umschalten",
 	"Toggle sidebar": "Seitenleiste umschalten",
 	"Top K": "Top K",
@@ -450,8 +473,9 @@
 	"Version": "Version",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Warnung: Wenn du dein Einbettungsmodell aktualisierst oder änderst, musst du alle Dokumente erneut importieren.",
 	"Web": "Web",
-	"Web Params": "",
-	"Webhook URL": "",
+	"Web Loader Settings": "",
+	"Web Params": "Web Parameter",
+	"Webhook URL": "Webhook URL",
 	"WebUI Add-ons": "WebUI-Add-Ons",
 	"WebUI Settings": "WebUI-Einstellungen",
 	"WebUI will make requests to": "Wenn aktiviert sendet WebUI externe Anfragen an",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Lokal)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Gebe einen Prompt-Vorschlag ein (z.B. Wer bist du?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Schreibe eine kurze Zusammenfassung in 50 Wörtern, die [Thema oder Schlüsselwort] zusammenfasst.",
+	"Yesterday": "Gestern",
 	"You": "Du",
 	"You have no archived conversations.": "Du hast keine archivierten Unterhaltungen.",
 	"You have shared this chat": "Du hast diesen Chat",
 	"You're a helpful assistant.": "Du bist ein hilfreicher Assistent.",
 	"You're now logged in.": "Du bist nun eingeloggt.",
-	"Youtube": ""
+	"Youtube": "YouTube",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/dg-DG/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Admin Settings",
 	"Advanced Parameters": "Advanced Parameters",
 	"all": "all",
+	"All Documents": "",
 	"All Users": "All Users",
 	"Allow": "Allow",
 	"Allow Chat Deletion": "Allow Delete Chats",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "are allowed. Activate typing",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
+	"August": "",
 	"Auto-playback response": "Auto-playback response",
 	"Auto-send input after 3 sec.": "Auto-send after 3 sec.",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Database",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Default",
 	"Default (Automatic1111)": "Default (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "No account? Much sad.",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"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'.",
@@ -166,6 +171,7 @@
 	"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 language codes": "",
 	"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)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Export Promptos",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Failed to read clipboard borks",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Bark Mode",
 	"File not found.": "Bark not found.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Much helo, {{name}}",
+	"Help": "",
 	"Hide": "Hide",
 	"Hide Additional Params": "Hide Extra Barkos",
 	"How can I help you today?": "How can I halp u today?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Include `--api` flag when running stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interface",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "join our Discord for help.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT Expire",
 	"JWT Token": "JWT Borken",
 	"Keep Alive": "Keep Wow",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Manage LiteLLM Models",
 	"Manage Models": "Manage Wowdels",
 	"Manage Ollama Models": "Manage Ollama Wowdels",
+	"March": "",
 	"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.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Not sure what to write? Switch to",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notifications",
+	"November": "",
+	"October": "",
 	"Off": "Off",
 	"Okay, Let's Go!": "Okay, Let's Go!",
 	"OLED Dark": "OLED Dark",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Playground",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Prompt Content",
 	"Prompt suggestions": "Prompt wowgestions",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Reset Vector Storage",
 	"Response AutoCopy to Clipboard": "Copy Bark Auto Bark",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Role",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Send a Message much message",
 	"Send message": "Send message very send",
+	"September": "",
 	"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 embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Set Image Size very size",
+	"Set Model": "Set Model so speak",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Set Steps so many steps",
 	"Set Title Auto-Generation Model": "Set Title Auto-Generation Model very auto-generate",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Success very success",
 	"Successfully updated.": "Successfully updated. Very updated.",
+	"Suggested": "",
 	"Sync All": "Sync All much sync",
 	"System": "System very system",
 	"System Prompt": "System Prompt much prompt",
@@ -417,11 +438,13 @@
 	"Title": "Title very title",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Title Auto-Generation much auto-gen",
+	"Title cannot be an empty string.": "",
 	"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.",
+	"Today": "",
 	"Toggle settings": "Toggle settings much toggle",
 	"Toggle sidebar": "Toggle sidebar much toggle",
 	"Top K": "Top K very top",
@@ -450,6 +473,7 @@
 	"Version": "Version much version",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web very web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI Add-ons very add-ons",
@@ -460,10 +484,12 @@
 	"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.",
+	"Yesterday": "",
 	"You": "You very you",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "You're a helpful assistant. Much helpful.",
 	"You're now logged in.": "You're now logged in. Much logged.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/en-GB/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "",
 	"Advanced Parameters": "",
 	"all": "",
+	"All Documents": "",
 	"All Users": "",
 	"Allow": "",
 	"Allow Chat Deletion": "",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "",
+	"August": "",
 	"Auto-playback response": "",
 	"Auto-send input after 3 sec.": "",
 	"AUTOMATIC1111 Base URL": "",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "",
 	"DD/MM/YYYY HH:mm": "",
+	"December": "",
 	"Default": "",
 	"Default (Automatic1111)": "",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "",
 	"Drop any files here to add to the conversation": "",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "",
 	"Enter Chunk Size": "",
 	"Enter Image Size (e.g. 512x512)": "",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "",
@@ -190,6 +196,7 @@
 	"Export Prompts": "",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "",
 	"File not found.": "",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "",
+	"Help": "",
 	"Hide": "",
 	"Hide Additional Params": "",
 	"How can I help you today?": "",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Input commands": "",
 	"Interface": "",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "",
 	"JSON": "",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "",
 	"JWT Token": "",
 	"Keep Alive": "",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "",
 	"Manage Models": "",
 	"Manage Ollama Models": "",
+	"March": "",
 	"Max Tokens": "",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "",
+	"November": "",
+	"October": "",
 	"Off": "",
 	"Okay, Let's Go!": "",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "",
 	"Prompt suggestions": "",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "",
 	"Response AutoCopy to Clipboard": "",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "",
 	"Rosé Pine": "",
 	"Rosé Pine Dawn": "",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "",
 	"Send message": "",
+	"September": "",
 	"Server connection verified": "",
 	"Set as default": "",
 	"Set Default Model": "",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "",
+	"Set Model": "",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "",
 	"Set Title Auto-Generation Model": "",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "",
 	"Successfully updated.": "",
+	"Suggested": "",
 	"Sync All": "",
 	"System": "",
 	"System Prompt": "",
@@ -417,11 +438,13 @@
 	"Title": "",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "",
 	"to": "",
 	"To access the available model names for downloading,": "",
 	"To access the GGUF models available for downloading,": "",
 	"to chat input.": "",
+	"Today": "",
 	"Toggle settings": "",
 	"Toggle sidebar": "",
 	"Top K": "",
@@ -450,6 +473,7 @@
 	"Version": "",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "",
 	"Write a prompt suggestion (e.g. Who are you?)": "",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "",
+	"Yesterday": "",
 	"You": "",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "",
 	"You're now logged in.": "",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/en-US/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "",
 	"Advanced Parameters": "",
 	"all": "",
+	"All Documents": "",
 	"All Users": "",
 	"Allow": "",
 	"Allow Chat Deletion": "",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "",
+	"August": "",
 	"Auto-playback response": "",
 	"Auto-send input after 3 sec.": "",
 	"AUTOMATIC1111 Base URL": "",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "",
 	"DD/MM/YYYY HH:mm": "",
+	"December": "",
 	"Default": "",
 	"Default (Automatic1111)": "",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "",
 	"Drop any files here to add to the conversation": "",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "",
 	"Enter Chunk Size": "",
 	"Enter Image Size (e.g. 512x512)": "",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "",
@@ -190,6 +196,7 @@
 	"Export Prompts": "",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "",
 	"File not found.": "",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "",
+	"Help": "",
 	"Hide": "",
 	"Hide Additional Params": "",
 	"How can I help you today?": "",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Input commands": "",
 	"Interface": "",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "",
 	"JSON": "",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "",
 	"JWT Token": "",
 	"Keep Alive": "",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "",
 	"Manage Models": "",
 	"Manage Ollama Models": "",
+	"March": "",
 	"Max Tokens": "",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "",
+	"November": "",
+	"October": "",
 	"Off": "",
 	"Okay, Let's Go!": "",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "",
 	"Prompt suggestions": "",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "",
 	"Response AutoCopy to Clipboard": "",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "",
 	"Rosé Pine": "",
 	"Rosé Pine Dawn": "",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "",
 	"Send message": "",
+	"September": "",
 	"Server connection verified": "",
 	"Set as default": "",
 	"Set Default Model": "",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "",
+	"Set Model": "",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "",
 	"Set Title Auto-Generation Model": "",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "",
 	"Successfully updated.": "",
+	"Suggested": "",
 	"Sync All": "",
 	"System": "",
 	"System Prompt": "",
@@ -417,11 +438,13 @@
 	"Title": "",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "",
 	"to": "",
 	"To access the available model names for downloading,": "",
 	"To access the GGUF models available for downloading,": "",
 	"to chat input.": "",
+	"Today": "",
 	"Toggle settings": "",
 	"Toggle sidebar": "",
 	"Top K": "",
@@ -450,6 +473,7 @@
 	"Version": "",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "",
 	"Write a prompt suggestion (e.g. Who are you?)": "",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "",
+	"Yesterday": "",
 	"You": "",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "",
 	"You're now logged in.": "",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/es-ES/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Configuración de Administrador",
 	"Advanced Parameters": "Parámetros Avanzados",
 	"all": "todo",
+	"All Documents": "",
 	"All Users": "Todos los Usuarios",
 	"Allow": "Permitir",
 	"Allow Chat Deletion": "Permitir Borrar Chats",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "RPM de la API",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "Chats archivados",
 	"are allowed - Activate this command by typing": "están permitidos - Active este comando escribiendo",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
+	"August": "",
 	"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",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Base de datos",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Por defecto",
 	"Default (Automatic1111)": "Por defecto (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "¿No tienes una cuenta?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"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'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Ingresar superposición de fragmentos",
 	"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 language codes": "",
 	"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)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Ingrese el RPM de la API LiteLLM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exportar Prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "No se pudo leer el contenido del portapapeles",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Modo de archivo",
 	"File not found.": "Archivo no encontrado.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Hola, {{name}}",
+	"Help": "",
 	"Hide": "Esconder",
 	"Hide Additional Params": "Esconde los Parámetros Adicionales",
 	"How can I help you today?": "¿Cómo puedo ayudarte hoy?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Incluir el indicador `--api` al ejecutar stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interfaz",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "Únase a nuestro Discord para obtener ayuda.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Expiración del JWT",
 	"JWT Token": "Token JWT",
 	"Keep Alive": "Mantener Vivo",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Administrar Modelos LiteLLM",
 	"Manage Models": "Administrar Modelos",
 	"Manage Ollama Models": "Administrar Modelos Ollama",
+	"March": "",
 	"Max Tokens": "Máximo de Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Se pueden descargar un máximo de 3 modelos simultáneamente. Por favor, inténtelo de nuevo más tarde.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "¿No sabes qué escribir? Cambia a",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "",
+	"November": "",
+	"October": "",
 	"Off": "Desactivado",
 	"Okay, Let's Go!": "Bien, ¡Vamos!",
 	"OLED Dark": "OLED oscuro",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Patio de juegos",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Contenido del Prompt",
 	"Prompt suggestions": "Sugerencias de Prompts",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Restablecer almacenamiento vectorial",
 	"Response AutoCopy to Clipboard": "Copiar respuesta automáticamente al portapapeles",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rol",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Enviar un Mensaje",
 	"Send message": "Enviar Mensaje",
+	"September": "",
 	"Server connection verified": "Conexión del servidor verificada",
 	"Set as default": "Establecer por defecto",
 	"Set Default Model": "Establecer modelo predeterminado",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Establecer tamaño de imagen",
+	"Set Model": "Establecer el modelo",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Establecer Pasos",
 	"Set Title Auto-Generation Model": "Establecer modelo de generación automática de títulos",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Éxito",
 	"Successfully updated.": "Actualizado exitosamente.",
+	"Suggested": "",
 	"Sync All": "Sincronizar todo",
 	"System": "Sistema",
 	"System Prompt": "Prompt del sistema",
@@ -417,11 +438,13 @@
 	"Title": "Título",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Generación automática de títulos",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt de generación de título",
 	"to": "para",
 	"To access the available model names for downloading,": "Para acceder a los nombres de modelos disponibles para descargar,",
 	"To access the GGUF models available for downloading,": "Para acceder a los modelos GGUF disponibles para descargar,",
 	"to chat input.": "a la entrada del chat.",
+	"Today": "",
 	"Toggle settings": "Alternar configuración",
 	"Toggle sidebar": "Alternar barra lateral",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Versión",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI Add-ons",
@@ -460,10 +484,12 @@
 	"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].",
+	"Yesterday": "",
 	"You": "Usted",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Eres un asistente útil.",
 	"You're now logged in.": "Has iniciado sesión.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/fa-IR/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "تنظیمات مدیریت",
 	"Advanced Parameters": "پارامترهای پیشرفته",
 	"all": "همه",
+	"All Documents": "",
 	"All Users": "همه کاربران",
 	"Allow": "اجازه دادن",
 	"Allow Chat Deletion": "اجازه حذف گپ",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "آرشیو تاریخچه چت",
 	"are allowed - Activate this command by typing": "مجاز هستند - این دستور را با تایپ کردن این فعال کنید:",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "صدا",
+	"August": "",
 	"Auto-playback response": "پخش خودکار پاسخ ",
 	"Auto-send input after 3 sec.": "به طور خودکار ورودی را پس از 3 ثانیه ارسال کن.",
 	"AUTOMATIC1111 Base URL": "پایه URL AUTOMATIC1111 ",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "پایگاه داده",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "پیشفرض",
 	"Default (Automatic1111)": "پیشفرض (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "حساب کاربری ندارید؟",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "دانلود پایگاه داده",
 	"Drop any files here to add to the conversation": "هر فایلی را اینجا رها کنید تا به مکالمه اضافه شود",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "به طور مثال '30s','10m'. واحد\u200cهای زمانی معتبر 's', 'm', 'h' هستند.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "مقدار Chunk Overlap را وارد کنید",
 	"Enter Chunk Size": "مقدار Chunk Size را وارد کنید",
 	"Enter Image Size (e.g. 512x512)": "اندازه تصویر را وارد کنید (مثال: 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "URL پایه مربوط به LiteLLM API را وارد کنید (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "کلید API مربوط به LiteLLM را وارد کنید (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "RPM API مربوط به LiteLLM را وارد کنید (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "اکسپورت از پرامپت\u200cها",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "خواندن محتوای کلیپ بورد ناموفق بود",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "حالت فایل",
 	"File not found.": "فایل یافت نشد.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "سلام، {{name}}",
+	"Help": "",
 	"Hide": "پنهان",
 	"Hide Additional Params": "پنهان کردن پارامترهای اضافه",
 	"How can I help you today?": "امروز چطور می توانم کمک تان کنم؟",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "فلگ `--api` را هنکام اجرای stable-diffusion-webui استفاده کنید.",
 	"Input commands": "",
 	"Interface": "رابط",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "برای کمک به دیسکورد ما بپیوندید.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT انقضای",
 	"JWT Token": "JWT توکن",
 	"Keep Alive": "Keep Alive",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Manage LiteLLM Models",
 	"Manage Models": "مدیریت مدل\u200cها",
 	"Manage Ollama Models": "مدیریت مدل\u200cهای اولاما",
+	"March": "",
 	"Max Tokens": "حداکثر توکن",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "حداکثر 3 مدل را می توان به طور همزمان دانلود کرد. لطفاً بعداً دوباره امتحان کنید.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "مطمئن نیستید چه بنویسید؟ تغییر به",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "اعلان",
+	"November": "",
+	"October": "",
 	"Off": "خاموش",
 	"Okay, Let's Go!": "باشه، بزن بریم!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "زمین بازی",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "محتویات پرامپت",
 	"Prompt suggestions": "پیشنهادات پرامپت",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "بازنشانی ذخیره سازی برداری",
 	"Response AutoCopy to Clipboard": "کپی خودکار پاسخ به کلیپ بورد",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "نقش",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "ارسال یک پیام",
 	"Send message": "ارسال پیام",
+	"September": "",
 	"Server connection verified": "اتصال سرور تأیید شد",
 	"Set as default": "تنظیم به عنوان پیشفرض",
 	"Set Default Model": "تنظیم مدل پیش فرض",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "تنظیم اندازه تصویر",
+	"Set Model": "تنظیم مدل",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "تنظیم گام\u200cها",
 	"Set Title Auto-Generation Model": "تنظیم مدل تولید خودکار عنوان",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "موفقیت",
 	"Successfully updated.": "با موفقیت به روز شد",
+	"Suggested": "",
 	"Sync All": "همگام سازی همه",
 	"System": "سیستم",
 	"System Prompt": "پرامپت سیستم",
@@ -417,11 +438,13 @@
 	"Title": "عنوان",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "تولید خودکار عنوان",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "پرامپت تولید عنوان",
 	"to": "به",
 	"To access the available model names for downloading,": "برای دسترسی به نام مدل های موجود برای دانلود،",
 	"To access the GGUF models available for downloading,": "برای دسترسی به مدل\u200cهای GGUF موجود برای دانلود،",
 	"to chat input.": "در ورودی گپ.",
+	"Today": "",
 	"Toggle settings": "نمایش/عدم نمایش تنظیمات",
 	"Toggle sidebar": "نمایش/عدم نمایش نوار کناری",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "نسخه",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "وب",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI افزونه\u200cهای",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "ویسپر (محلی)",
 	"Write a prompt suggestion (e.g. Who are you?)": "یک پیشنهاد پرامپت بنویسید (مثلاً شما کی هستید؟)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "خلاصه ای در 50 کلمه بنویسید که [موضوع یا کلمه کلیدی] را خلاصه کند.",
+	"Yesterday": "",
 	"You": "شما",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "تو یک دستیار سودمند هستی.",
 	"You're now logged in.": "شما اکنون وارد شده\u200cاید.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 495 - 0
src/lib/i18n/locales/fi-FI/translation.json

@@ -0,0 +1,495 @@
+{
+	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' tai '-1' jottei vanhene.",
+	"(Beta)": "(Beta)",
+	"(e.g. `sh webui.sh --api`)": "(esim. `sh webui.sh --api`)",
+	"(latest)": "(uusin)",
+	"{{modelName}} is thinking...": "{{modelName}} miettii...",
+	"{{user}}'s Chats": "{{user}}:n keskustelut",
+	"{{webUIName}} Backend Required": "{{webUIName}} backend vaaditaan",
+	"a user": "käyttäjä",
+	"About": "Tietoja",
+	"Account": "Tili",
+	"Accurate information": "Tarkkaa tietoa",
+	"Add a model": "Lisää malli",
+	"Add a model tag name": "Lisää mallitagi",
+	"Add a short description about what this modelfile does": "Lisää lyhyt kuvaus siitä, mitä tämä mallitiedosto tekee",
+	"Add a short title for this prompt": "Lisää lyhyt otsikko tälle kehotteelle",
+	"Add a tag": "Lisää tagi",
+	"Add custom prompt": "Lisää mukautettu kehote",
+	"Add Docs": "Lisää asiakirjoja",
+	"Add Files": "Lisää tiedostoja",
+	"Add message": "Lisää viesti",
+	"Add Model": "Lisää malli",
+	"Add Tags": "Lisää tageja",
+	"Add User": "Lisää käyttäjä",
+	"Adjusting these settings will apply changes universally to all users.": "Näiden asetusten säätäminen vaikuttaa kaikkiin käyttäjiin.",
+	"admin": "hallinta",
+	"Admin Panel": "Hallintapaneeli",
+	"Admin Settings": "Hallinta-asetukset",
+	"Advanced Parameters": "Edistyneet parametrit",
+	"all": "kaikki",
+	"All Documents": "Kaikki asiakirjat",
+	"All Users": "Kaikki käyttäjät",
+	"Allow": "Salli",
+	"Allow Chat Deletion": "Salli keskustelujen poisto",
+	"alphanumeric characters and hyphens": "kirjaimia, numeroita ja väliviivoja",
+	"Already have an account?": "Onko sinulla jo tili?",
+	"an assistant": "avustaja",
+	"and": "ja",
+	"and create a new shared link.": "ja luo uusi jaettu linkki.",
+	"API Base URL": "APIn perus-URL",
+	"API Key": "API-avain",
+	"API Key created.": "API-avain luotu.",
+	"API keys": "API-avaimet",
+	"API RPM": "API RPM",
+	"April": "huhtikuu",
+	"Archive": "Arkisto",
+	"Archived Chats": "Arkistoidut keskustelut",
+	"are allowed - Activate this command by typing": "ovat sallittuja - Aktivoi tämä komento kirjoittamalla",
+	"Are you sure?": "Oletko varma?",
+	"Attach file": "Liitä tiedosto",
+	"Attention to detail": "Huomio yksityiskohtiin",
+	"Audio": "Ääni",
+	"August": "elokuu",
+	"Auto-playback response": "Soita vastaus automaattisesti",
+	"Auto-send input after 3 sec.": "Lähetä syöte automaattisesti 3 sekunnin kuluttua",
+	"AUTOMATIC1111 Base URL": "AUTOMATIC1111-perus-URL",
+	"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111-perus-URL vaaditaan.",
+	"available!": "saatavilla!",
+	"Back": "Takaisin",
+	"Bad Response": "Epäkelpo vastaus",
+	"before": "ennen",
+	"Being lazy": "Oli laiska",
+	"Builder Mode": "Rakentajan tila",
+	"Bypass SSL verification for Websites": "Ohita SSL-varmennus verkkosivustoille",
+	"Cancel": "Peruuta",
+	"Categories": "Kategoriat",
+	"Change Password": "Vaihda salasana",
+	"Chat": "Keskustelu",
+	"Chat History": "Keskusteluhistoria",
+	"Chat History is off for this browser.": "Keskusteluhistoria on pois päältä tällä selaimella.",
+	"Chats": "Keskustelut",
+	"Check Again": "Tarkista uudelleen",
+	"Check for updates": "Tarkista päivitykset",
+	"Checking for updates...": "Tarkistetaan päivityksiä...",
+	"Choose a model before saving...": "Valitse malli ennen tallentamista...",
+	"Chunk Overlap": "Osien päällekkäisyys",
+	"Chunk Params": "Osien parametrit",
+	"Chunk Size": "Osien koko",
+	"Citation": "Sitaatti",
+	"Click here for help.": "Klikkaa tästä saadaksesi apua.",
+	"Click here to": "Klikkaa tästä",
+	"Click here to check other modelfiles.": "Klikkaa tästä nähdäksesi muita mallitiedostoja.",
+	"Click here to select": "Klikkaa tästä valitaksesi",
+	"Click here to select a csv file.": "Klikkaa tästä valitaksesi CSV-tiedosto.",
+	"Click here to select documents.": "Klikkaa tästä valitaksesi asiakirjoja.",
+	"click here.": "klikkaa tästä.",
+	"Click on the user role button to change a user's role.": "Klikkaa käyttäjän roolipainiketta vaihtaaksesi käyttäjän roolia.",
+	"Close": "Sulje",
+	"Collection": "Kokoelma",
+	"ComfyUI": "ComfyUI",
+	"ComfyUI Base URL": "ComfyUI-perus-URL",
+	"ComfyUI Base URL is required.": "ComfyUI-perus-URL vaaditaan.",
+	"Command": "Komento",
+	"Confirm Password": "Vahvista salasana",
+	"Connections": "Yhteydet",
+	"Content": "Sisältö",
+	"Context Length": "Kontekstin pituus",
+	"Continue Response": "Jatka vastausta",
+	"Conversation Mode": "Keskustelutila",
+	"Copied shared chat URL to clipboard!": "Jaettu keskustelulinkki kopioitu leikepöydälle!",
+	"Copy": "Kopioi",
+	"Copy last code block": "Kopioi viimeisin koodilohko",
+	"Copy last response": "Kopioi viimeisin vastaus",
+	"Copy Link": "Kopioi linkki",
+	"Copying to clipboard was successful!": "Kopioiminen leikepöydälle onnistui!",
+	"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':": "Luo tiivis, 3-5 sanan lause otsikoksi seuraavalle kyselylle, noudattaen tiukasti 3-5 sanan rajoitusta ja välttäen sanan 'otsikko' käyttöä:",
+	"Create a modelfile": "Luo mallitiedosto",
+	"Create Account": "Luo tili",
+	"Create new key": "Luo uusi avain",
+	"Create new secret key": "Luo uusi salainen avain",
+	"Created at": "Luotu",
+	"Created At": "Luotu",
+	"Current Model": "Nykyinen malli",
+	"Current Password": "Nykyinen salasana",
+	"Custom": "Mukautettu",
+	"Customize Ollama models for a specific purpose": "Mukauta Ollama-malleja tiettyyn tarkoitukseen",
+	"Dark": "Tumma",
+	"Dashboard": "Kojelauta",
+	"Database": "Tietokanta",
+	"DD/MM/YYYY HH:mm": "DD.MM.YYYY HH:mm",
+	"December": "joulukuu",
+	"Default": "Oletus",
+	"Default (Automatic1111)": "Oletus (AUTOMATIC1111)",
+	"Default (SentenceTransformers)": "Oletus (SentenceTransformers)",
+	"Default (Web API)": "Oletus (web-API)",
+	"Default model updated": "Oletusmalli päivitetty",
+	"Default Prompt Suggestions": "Oletuskehotteiden ehdotukset",
+	"Default User Role": "Oletuskäyttäjärooli",
+	"delete": "poista",
+	"Delete": "Poista",
+	"Delete a model": "Poista malli",
+	"Delete chat": "Poista keskustelu",
+	"Delete Chat": "Poista keskustelu",
+	"Delete Chats": "Poista keskustelut",
+	"delete this link": "poista tämä linkki",
+	"Delete User": "Poista käyttäjä",
+	"Deleted {{deleteModelTag}}": "Poistettu {{deleteModelTag}}",
+	"Deleted {{tagName}}": "Poistettu {{tagName}}",
+	"Description": "Kuvaus",
+	"Didn't fully follow instructions": "Ei noudattanut ohjeita täysin",
+	"Disabled": "Poistettu käytöstä",
+	"Discover a modelfile": "Löydä mallitiedosto",
+	"Discover a prompt": "Löydä kehote",
+	"Discover, download, and explore custom prompts": "Löydä ja lataa mukautettuja kehotteita",
+	"Discover, download, and explore model presets": "Löydä ja lataa mallien esiasetuksia",
+	"Display the username instead of You in the Chat": "Näytä käyttäjänimi keskustelussa",
+	"Document": "Asiakirja",
+	"Document Settings": "Asiakirja-asetukset",
+	"Documents": "Asiakirjat",
+	"does not make any external connections, and your data stays securely on your locally hosted server.": "ei tee ulkoisia yhteyksiä, ja tietosi pysyvät turvallisesti paikallisesti isännöidyllä palvelimellasi.",
+	"Don't Allow": "Älä salli",
+	"Don't have an account?": "Eikö sinulla ole tiliä?",
+	"Don't like the style": "En pidä tyylistä",
+	"Download": "Lataa",
+	"Download canceled": "Lataus peruutettu",
+	"Download Database": "Lataa tietokanta",
+	"Drop any files here to add to the conversation": "Pudota tiedostoja tähän lisätäksesi ne keskusteluun",
+	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "esim. '30s', '10m'. Kelpoiset aikayksiköt ovat 's', 'm', 'h'.",
+	"Edit": "Muokkaa",
+	"Edit Doc": "Muokkaa asiakirjaa",
+	"Edit User": "Muokkaa käyttäjää",
+	"Email": "Sähköposti",
+	"Embedding Model": "Upotusmalli",
+	"Embedding Model Engine": "Upotusmallin moottori",
+	"Embedding model set to \"{{embedding_model}}\"": "\"{{embedding_model}}\" valittu upotusmalliksi",
+	"Enable Chat History": "Ota keskusteluhistoria käyttöön",
+	"Enable New Sign Ups": "Salli uudet rekisteröitymiset",
+	"Enabled": "Käytössä",
+	"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Varmista, että CSV-tiedostossasi on 4 saraketta seuraavassa järjestyksessä: Nimi, Sähköposti, Salasana, Rooli.",
+	"Enter {{role}} message here": "Kirjoita {{role}} viesti tähän",
+	"Enter Chunk Overlap": "Syötä osien päällekkäisyys",
+	"Enter Chunk Size": "Syötä osien koko",
+	"Enter Image Size (e.g. 512x512)": "Syötä kuvan koko (esim. 512x512)",
+	"Enter language codes": "",
+	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Syötä LiteLLM-APIn perus-URL (litellm_params.api_base)",
+	"Enter LiteLLM API Key (litellm_params.api_key)": "Syötä LiteLLM-APIn avain (litellm_params.api_key)",
+	"Enter LiteLLM API RPM (litellm_params.rpm)": "Syötä LiteLLM-APIn RPM (litellm_params.rpm)",
+	"Enter LiteLLM Model (litellm_params.model)": "Syötä LiteLLM-malli (litellm_params.model)",
+	"Enter Max Tokens (litellm_params.max_tokens)": "Syötä maksimitokenit (litellm_params.max_tokens)",
+	"Enter model tag (e.g. {{modelTag}})": "Syötä mallitagi (esim. {{modelTag}})",
+	"Enter Number of Steps (e.g. 50)": "Syötä askelien määrä (esim. 50)",
+	"Enter Score": "Syötä pisteet",
+	"Enter stop sequence": "Syötä lopetussekvenssi",
+	"Enter Top K": "Syötä Top K",
+	"Enter URL (e.g. http://127.0.0.1:7860/)": "Syötä URL (esim. http://127.0.0.1:7860/)",
+	"Enter URL (e.g. http://localhost:11434)": "Syötä URL (esim. http://localhost:11434)",
+	"Enter Your Email": "Syötä sähköpostiosoitteesi",
+	"Enter Your Full Name": "Syötä koko nimesi",
+	"Enter Your Password": "Syötä salasanasi",
+	"Enter Your Role": "Syötä roolisi",
+	"Experimental": "Kokeellinen",
+	"Export All Chats (All Users)": "Vie kaikki keskustelut (kaikki käyttäjät)",
+	"Export Chats": "Vie keskustelut",
+	"Export Documents Mapping": "Vie asiakirjakartoitus",
+	"Export Modelfiles": "Vie mallitiedostot",
+	"Export Prompts": "Vie kehotteet",
+	"Failed to create API Key.": "API-avaimen luonti epäonnistui.",
+	"Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui",
+	"February": "helmikuu",
+	"Feel free to add specific details": "Voit lisätä tarkempia tietoja",
+	"File Mode": "Tiedostotila",
+	"File not found.": "Tiedostoa ei löytynyt.",
+	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Sormenjäljen väärentäminen havaittu: Ei voi käyttää alkukirjaimia avatarina. Käytetään oletusprofiilikuvaa.",
+	"Fluidly stream large external response chunks": "Virtaa suuria ulkoisia vastausosia joustavasti",
+	"Focus chat input": "Fokusoi syöttökenttään",
+	"Followed instructions perfectly": "Noudatti ohjeita täydellisesti",
+	"Format your variables using square brackets like this:": "Muotoile muuttujat hakasulkeilla näin:",
+	"From (Base Model)": "Lähde (perusmalli)",
+	"Full Screen Mode": "Koko näytön tila",
+	"General": "Yleinen",
+	"General Settings": "Yleisasetukset",
+	"Generation Info": "Generointitiedot",
+	"Good Response": "Hyvä vastaus",
+	"has no conversations.": "ei ole keskusteluja.",
+	"Hello, {{name}}": "Terve, {{name}}",
+	"Help": "Apua",
+	"Hide": "Piilota",
+	"Hide Additional Params": "Piilota lisäparametrit",
+	"How can I help you today?": "Kuinka voin auttaa tänään?",
+	"Hybrid Search": "Hybridihaku",
+	"Image Generation (Experimental)": "Kuvagenerointi (kokeellinen)",
+	"Image Generation Engine": "Kuvagenerointimoottori",
+	"Image Settings": "Kuva-asetukset",
+	"Images": "Kuvat",
+	"Import Chats": "Tuo keskustelut",
+	"Import Documents Mapping": "Tuo asiakirjakartoitus",
+	"Import Modelfiles": "Tuo mallitiedostoja",
+	"Import Prompts": "Tuo kehotteita",
+	"Include `--api` flag when running stable-diffusion-webui": "Sisällytä `--api`-parametri suorittaessasi stable-diffusion-webui",
+	"Input commands": "Syötä komennot",
+	"Interface": "Käyttöliittymä",
+	"Invalid Tag": "Virheellinen tagi",
+	"January": "tammikuu",
+	"join our Discord for help.": "liity Discordiimme saadaksesi apua.",
+	"JSON": "JSON",
+	"July": "heinäkuu",
+	"June": "kesäkuu",
+	"JWT Expiration": "JWT:n vanheneminen",
+	"JWT Token": "JWT-token",
+	"Keep Alive": "Pysy aktiivisena",
+	"Keyboard shortcuts": "Pikanäppäimet",
+	"Language": "Kieli",
+	"Last Active": "Viimeksi aktiivinen",
+	"Light": "Vaalea",
+	"Listening...": "Kuunnellaan...",
+	"LLMs can make mistakes. Verify important information.": "Kielimallit voivat tehdä virheitä. Varmista tärkeät tiedot.",
+	"Made by OpenWebUI Community": "Tehnyt OpenWebUI-yhteisö",
+	"Make sure to enclose them with": "Varmista, että suljet ne",
+	"Manage LiteLLM Models": "Hallitse LiteLLM-malleja",
+	"Manage Models": "Hallitse malleja",
+	"Manage Ollama Models": "Hallitse Ollama-malleja",
+	"March": "maaliskuu",
+	"Max Tokens": "Maksimitokenit",
+	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Enintään 3 mallia voidaan ladata samanaikaisesti. Yritä myöhemmin uudelleen.",
+	"May": "toukokuu",
+	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "Viestejä, jotka lähetät luotuasi linkin, ei jaeta. Käyttäjät, joilla on tämä osoite voivat tarkastella jaettua keskustelua.",
+	"Minimum Score": "Vähimmäispisteet",
+	"Mirostat": "Mirostat",
+	"Mirostat Eta": "Mirostat Eta",
+	"Mirostat Tau": "Mirostat Tau",
+	"MMMM DD, YYYY": "DD MMMM YYYY",
+	"MMMM DD, YYYY HH:mm": "DD MMMM YYYY, HH:mm",
+	"Model '{{modelName}}' has been successfully downloaded.": "Malli '{{modelName}}' ladattiin onnistuneesti.",
+	"Model '{{modelTag}}' is already in queue for downloading.": "Malli '{{modelTag}}' on jo jonossa ladattavaksi.",
+	"Model {{modelId}} not found": "Mallia {{modelId}} ei löytynyt",
+	"Model {{modelName}} already exists.": "Malli {{modelName}} on jo olemassa.",
+	"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Mallin tiedostojärjestelmäpolku havaittu. Mallin lyhytnimi vaaditaan päivitykseen, ei voi jatkaa.",
+	"Model Name": "Mallin nimi",
+	"Model not selected": "Mallia ei valittu",
+	"Model Tag Name": "Mallitagin nimi",
+	"Model Whitelisting": "Mallin sallimislista",
+	"Model(s) Whitelisted": "Malli(t) sallittu",
+	"Modelfile": "Mallitiedosto",
+	"Modelfile Advanced Settings": "Mallitiedoston edistyneet asetukset",
+	"Modelfile Content": "Mallitiedoston sisältö",
+	"Modelfiles": "Mallitiedostot",
+	"Models": "Mallit",
+	"More": "Lisää",
+	"My Documents": "Omat asiakirjat",
+	"My Modelfiles": "Omat mallitiedostot",
+	"My Prompts": "Omat kehotteet",
+	"Name": "Nimi",
+	"Name Tag": "Nimitagi",
+	"Name your modelfile": "Nimeä mallitiedostosi",
+	"New Chat": "Uusi keskustelu",
+	"New Password": "Uusi salasana",
+	"No results found": "Ei tuloksia",
+	"No source available": "Ei lähdettä saatavilla",
+	"Not factually correct": "Ei faktisesti oikein",
+	"Not sure what to add?": "Etkö ole varma, mitä lisätä?",
+	"Not sure what to write? Switch to": "Et ole varma, mitä kirjoittaa? Vaihda",
+	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Huom: Jos asetat vähimmäispisteet, haku palauttaa vain asiakirjat, joiden pisteet ovat suurempia tai yhtä suuria kuin vähimmäispistemäärä.",
+	"Notifications": "Ilmoitukset",
+	"November": "marraskuu",
+	"October": "lokakuu",
+	"Off": "Pois",
+	"Okay, Let's Go!": "Eikun menoksi!",
+	"OLED Dark": "OLED-tumma",
+	"Ollama": "Ollama",
+	"Ollama Base URL": "Ollama-perus-URL",
+	"Ollama Version": "Ollama-versio",
+	"On": "Päällä",
+	"Only": "Vain",
+	"Only alphanumeric characters and hyphens are allowed in the command string.": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja komentosarjassa.",
+	"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.": "Hetki pieni, tiedostosi ovat yhä leivinuunissa. Odota kärsivällisesti, ja ilmoitamme, kun ne ovat valmiita.",
+	"Oops! Looks like the URL is invalid. Please double-check and try again.": "Hups! Näyttää siltä, että URL on virheellinen. Tarkista se ja yritä uudelleen.",
+	"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hupsista! Käytät ei-tuettua menetelmää. WebUI pitää palvella backendista.",
+	"Open": "Avaa",
+	"Open AI": "Open AI",
+	"Open AI (Dall-E)": "Open AI (Dall-E)",
+	"Open new chat": "Avaa uusi keskustelu",
+	"OpenAI": "OpenAI",
+	"OpenAI API": "OpenAI API",
+	"OpenAI API Config": "OpenAI API -asetukset",
+	"OpenAI API Key is required.": "OpenAI API -avain vaaditaan.",
+	"OpenAI URL/Key required.": "OpenAI URL/ -avain vaaditaan.",
+	"or": "tai",
+	"Other": "Muu",
+	"Overview": "Yleiskatsaus",
+	"Parameters": "Parametrit",
+	"Password": "Salasana",
+	"PDF document (.pdf)": "PDF-tiedosto (.pdf)",
+	"PDF Extract Images (OCR)": "PDF-tiedoston kuvien erottelu (OCR)",
+	"pending": "odottaa",
+	"Permission denied when accessing microphone: {{error}}": "Mikrofonin käyttöoikeus evätty: {{error}}",
+	"Plain text (.txt)": "Pelkkä teksti (.txt)",
+	"Playground": "Leikkipaikka",
+	"Positive attitude": "Positiivinen asenne",
+	"Previous 30 days": "Edelliset 30 päivää",
+	"Previous 7 days": "Edelliset 7 päivää",
+	"Profile Image": "Profiilikuva",
+	"Prompt": "Kehote",
+	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Kehote (esim. Kerro hauska fakta Turusta)",
+	"Prompt Content": "Kehotteen sisältö",
+	"Prompt suggestions": "Kehotteen ehdotukset",
+	"Prompts": "Kehotteet",
+	"Pull \"{{searchValue}}\" from Ollama.com": "Lataa \"{{searchValue}}\" Ollama.comista",
+	"Pull a model from Ollama.com": "Lataa malli Ollama.comista",
+	"Pull Progress": "Latauksen eteneminen",
+	"Query Params": "Kyselyparametrit",
+	"RAG Template": "RAG-malline",
+	"Raw Format": "Raaka muoto",
+	"Read Aloud": "Lue ääneen",
+	"Record voice": "Nauhoita ääni",
+	"Redirecting you to OpenWebUI Community": "Ohjataan sinut OpenWebUI-yhteisöön",
+	"Refused when it shouldn't have": "Kieltäytyi, vaikka ei olisi pitänyt",
+	"Regenerate": "Uudelleenluo",
+	"Release Notes": "Julkaisutiedot",
+	"Remove": "Poista",
+	"Remove Model": "Poista malli",
+	"Rename": "Nimeä uudelleen",
+	"Repeat Last N": "Viimeinen N -toisto",
+	"Repeat Penalty": "Toistosakko",
+	"Request Mode": "Pyyntötila",
+	"Reranking Model": "Uudelleenpisteytysmalli",
+	"Reranking model disabled": "Uudelleenpisteytysmalli poistettu käytöstä",
+	"Reranking model set to \"{{reranking_model}}\"": "\"{{reranking_model}}\" valittu uudelleenpisteytysmalliksi",
+	"Reset Vector Storage": "Tyhjennä vektorivarasto",
+	"Response AutoCopy to Clipboard": "Vastauksen automaattikopiointi leikepöydälle",
+	"Role": "Rooli",
+	"Rosé Pine": "Rosee-mänty",
+	"Rosé Pine Dawn": "Aamuinen Rosee-mänty",
+	"Save": "Tallenna",
+	"Save & Create": "Tallenna ja luo",
+	"Save & Submit": "Tallenna ja lähetä",
+	"Save & Update": "Tallenna ja päivitä",
+	"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": "Keskustelulokien tallentaminen suoraan selaimen tallennustilaan ei ole enää tuettua. Lataa ja poista keskustelulokit napsauttamalla alla olevaa painiketta. Älä huoli, voit helposti tuoda keskustelulokit takaisin backendiin",
+	"Scan": "Skannaa",
+	"Scan complete!": "Skannaus valmis!",
+	"Scan for documents from {{path}}": "Skannaa asiakirjoja polusta {{path}}",
+	"Search": "Haku",
+	"Search a model": "Hae mallia",
+	"Search Documents": "Hae asiakirjoja",
+	"Search Prompts": "Hae kehotteita",
+	"See readme.md for instructions": "Katso lisää ohjeita readme.md:stä",
+	"See what's new": "Katso, mitä uutta",
+	"Seed": "Siemen",
+	"Select a mode": "Valitse tila",
+	"Select a model": "Valitse malli",
+	"Select an Ollama instance": "Valitse Ollama-instanssi",
+	"Select model": "Valitse malli",
+	"Send a Message": "Lähetä viesti",
+	"Send message": "Lähetä viesti",
+	"September": "syyskuu",
+	"Server connection verified": "Palvelinyhteys varmennettu",
+	"Set as default": "Aseta oletukseksi",
+	"Set Default Model": "Aseta oletusmalli",
+	"Set embedding model (e.g. {{model}})": "Aseta upotusmalli (esim. {{model}})",
+	"Set Image Size": "Aseta kuvan koko",
+	"Set Model": "",
+	"Set reranking model (e.g. {{model}})": "Aseta uudelleenpisteytysmalli (esim. {{model}})",
+	"Set Steps": "Aseta askelmäärä",
+	"Set Title Auto-Generation Model": "Aseta otsikon automaattisen luonnin malli",
+	"Set Voice": "Aseta puheääni",
+	"Settings": "Asetukset",
+	"Settings saved successfully!": "Asetukset tallennettu onnistuneesti!",
+	"Share": "Jaa",
+	"Share Chat": "Jaa keskustelu",
+	"Share to OpenWebUI Community": "Jaa OpenWebUI-yhteisöön",
+	"short-summary": "lyhyt-yhteenveto",
+	"Show": "Näytä",
+	"Show Additional Params": "Näytä lisäparametrit",
+	"Show shortcuts": "Näytä pikanäppäimet",
+	"Showcased creativity": "Näytti luovuutta",
+	"sidebar": "sivupalkki",
+	"Sign in": "Kirjaudu sisään",
+	"Sign Out": "Kirjaudu ulos",
+	"Sign up": "Rekisteröidy",
+	"Signing in": "Kirjaudutaan sisään",
+	"Source": "Lähde",
+	"Speech recognition error: {{error}}": "Puheentunnistusvirhe: {{error}}",
+	"Speech-to-Text Engine": "Puheentunnistusmoottori",
+	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition-rajapinta ei ole tuettu tässä selaimessa.",
+	"Stop Sequence": "Lopetussekvenssi",
+	"STT Settings": "Puheentunnistusasetukset",
+	"Submit": "Lähetä",
+	"Subtitle (e.g. about the Roman Empire)": "Alaotsikko (esim. Rooman valtakunnasta)",
+	"Success": "Onnistui",
+	"Successfully updated.": "Päivitetty onnistuneesti.",
+	"Suggested": "Suositeltu",
+	"Sync All": "Synkronoi kaikki",
+	"System": "Järjestelmä",
+	"System Prompt": "Järjestelmäkehote",
+	"Tags": "Tagit",
+	"Tell us more:": "Kerro lisää:",
+	"Temperature": "Lämpötila",
+	"Template": "Malline",
+	"Text Completion": "Tekstin täydennys",
+	"Text-to-Speech Engine": "Puhemoottori",
+	"Tfs Z": "TFS Z",
+	"Thanks for your feedback!": "Kiitos palautteestasi!",
+	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Pisteytyksen tulee olla arvo välillä 0.0 (0%) ja 1.0 (100%).",
+	"Theme": "Teema",
+	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tämä varmistaa, että arvokkaat keskustelusi tallennetaan turvallisesti backend-tietokantaasi. Kiitos!",
+	"This setting does not sync across browsers or devices.": "Tämä asetus ei synkronoidu selainten tai laitteiden välillä.",
+	"Thorough explanation": "Perusteellinen selitys",
+	"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Vinkki: Päivitä useita muuttujapaikkoja peräkkäin painamalla tabulaattoria keskustelusyötteessä jokaisen korvauksen jälkeen.",
+	"Title": "Otsikko",
+	"Title (e.g. Tell me a fun fact)": "Otsikko (esim. Kerro hauska fakta)",
+	"Title Auto-Generation": "Otsikon automaattinen luonti",
+	"Title cannot be an empty string.": "Otsikko ei voi olla tyhjä.",
+	"Title Generation Prompt": "Otsikon luontikehote",
+	"to": "->",
+	"To access the available model names for downloading,": "Päästäksesi käsiksi ladattavissa oleviin mallinimiin,",
+	"To access the GGUF models available for downloading,": "Päästäksesi käsiksi ladattavissa oleviin GGUF-malleihin,",
+	"to chat input.": "keskustelusyötteeseen.",
+	"Today": "Tänään",
+	"Toggle settings": "Kytke asetukset",
+	"Toggle sidebar": "Kytke sivupalkki",
+	"Top K": "Top K",
+	"Top P": "Top P",
+	"Trouble accessing Ollama?": "Ongelmia Ollama-yhteydessä?",
+	"TTS Settings": "Puheentuottamisasetukset",
+	"Type Hugging Face Resolve (Download) URL": "Kirjoita Hugging Face -resolve-osoite",
+	"Uh-oh! There was an issue connecting to {{provider}}.": "Voi ei! Yhteysongelma {{provider}}:n kanssa.",
+	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Tuntematon tiedostotyyppi '{{file_type}}', mutta hyväksytään ja käsitellään pelkkänä tekstinä",
+	"Update and Copy Link": "Päivitä ja kopioi linkki",
+	"Update password": "Päivitä salasana",
+	"Upload a GGUF model": "Lataa GGUF-malli",
+	"Upload files": "Lataa tiedostoja",
+	"Upload Progress": "Latauksen eteneminen",
+	"URL Mode": "URL-tila",
+	"Use '#' in the prompt input to load and select your documents.": "Käytä '#' syötteessä ladataksesi ja valitaksesi asiakirjoja.",
+	"Use Gravatar": "Käytä Gravataria",
+	"Use Initials": "Käytä alkukirjaimia",
+	"user": "käyttäjä",
+	"User Permissions": "Käyttäjäoikeudet",
+	"Users": "Käyttäjät",
+	"Utilize": "Käytä",
+	"Valid time units:": "Kelvolliset aikayksiköt:",
+	"variable": "muuttuja",
+	"variable to have them replaced with clipboard content.": "muuttuja korvataan leikepöydän sisällöllä.",
+	"Version": "Versio",
+	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Varoitus: Jos päivität tai vaihdat upotusmallia, sinun on tuotava kaikki asiakirjat uudelleen.",
+	"Web": "Web",
+	"Web Loader Settings": "",
+	"Web Params": "Web-parametrit",
+	"Webhook URL": "Webhook-URL",
+	"WebUI Add-ons": "WebUI-lisäosat",
+	"WebUI Settings": "WebUI-asetukset",
+	"WebUI will make requests to": "WebUI tekee pyyntöjä",
+	"What’s New in": "Mitä uutta",
+	"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Kun historia on pois päältä, uudet keskustelut tässä selaimessa eivät näy historiassasi millään laitteellasi.",
+	"Whisper (Local)": "Whisper (paikallinen)",
+	"Write a prompt suggestion (e.g. Who are you?)": "Kirjoita ehdotettu kehote (esim. Kuka olet?)",
+	"Write a summary in 50 words that summarizes [topic or keyword].": "Kirjoita 50 sanan yhteenveto, joka tiivistää [aihe tai avainsana].",
+	"Yesterday": "Eilen",
+	"You": "Sinä",
+	"You have no archived conversations.": "Sinulla ei ole arkistoituja keskusteluja.",
+	"You have shared this chat": "Olet jakanut tämän keskustelun",
+	"You're a helpful assistant.": "Olet avulias apulainen.",
+	"You're now logged in.": "Olet nyt kirjautunut sisään.",
+	"Youtube": "Youtube",
+	"Youtube Loader Settings": ""
+}

+ 28 - 2
src/lib/i18n/locales/fr-CA/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Paramètres d'administration",
 	"Advanced Parameters": "Paramètres avancés",
 	"all": "tous",
+	"All Documents": "",
 	"All Users": "Tous les utilisateurs",
 	"Allow": "Autoriser",
 	"Allow Chat Deletion": "Autoriser la suppression des discussions",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "RPM API",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "enregistrement du chat",
 	"are allowed - Activate this command by typing": "sont autorisés - Activez cette commande en tapant",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
+	"August": "",
 	"Auto-playback response": "Réponse en lecture automatique",
 	"Auto-send input after 3 sec.": "Envoyer automatiquement l'entrée après 3 sec.",
 	"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Base de données",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Par défaut",
 	"Default (Automatic1111)": "Par défaut (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Vous n'avez pas de compte ?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Télécharger la base de données",
 	"Drop any files here to add to the conversation": "Déposez n'importe quel fichier ici pour les ajouter à la conversation",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "p. ex. '30s', '10m'. Les unités de temps valides sont 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Entrez le chevauchement de bloc",
 	"Enter Chunk Size": "Entrez la taille du bloc",
 	"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (p. ex. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Entrez l'URL de base de l'API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Entrez la clé API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Entrez le RPM de l'API LiteLLM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exporter les prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Mode fichier",
 	"File not found.": "Fichier introuvable.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Bonjour, {{name}}",
+	"Help": "",
 	"Hide": "Cacher",
 	"Hide Additional Params": "Cacher les paramètres supplémentaires",
 	"How can I help you today?": "Comment puis-je vous aider aujourd'hui ?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Inclure l'indicateur `--api` lors de l'exécution de stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interface",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "rejoignez notre Discord pour obtenir de l'aide.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Expiration du JWT",
 	"JWT Token": "Jeton JWT",
 	"Keep Alive": "Garder actif",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Gérer les modèles LiteLLM",
 	"Manage Models": "Gérer les modèles",
 	"Manage Ollama Models": "Gérer les modèles Ollama",
+	"March": "",
 	"Max Tokens": "Tokens maximaux",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé simultanément. Veuillez réessayer plus tard.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Pas sûr de quoi écrire ? Changez pour",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notifications de bureau",
+	"November": "",
+	"October": "",
 	"Off": "Éteint",
 	"Okay, Let's Go!": "Okay, Allons-y !",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Aire de jeu",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Contenu du prompt",
 	"Prompt suggestions": "Suggestions de prompt",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Réinitialiser le stockage vectoriel",
 	"Response AutoCopy to Clipboard": "Copie automatique de la réponse vers le presse-papiers",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rôle",
 	"Rosé Pine": "Pin Rosé",
 	"Rosé Pine Dawn": "Aube Pin Rosé",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Envoyer un message",
 	"Send message": "Envoyer un message",
+	"September": "",
 	"Server connection verified": "Connexion au serveur vérifiée",
 	"Set as default": "Définir par défaut",
 	"Set Default Model": "Définir le modèle par défaut",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Définir la taille de l'image",
+	"Set Model": "Configurer le modèle",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Définir les étapes",
 	"Set Title Auto-Generation Model": "Définir le modèle de génération automatique de titre",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Succès",
 	"Successfully updated.": "Mis à jour avec succès.",
+	"Suggested": "",
 	"Sync All": "Synchroniser tout",
 	"System": "Système",
 	"System Prompt": "Prompt Système",
@@ -417,11 +438,13 @@
 	"Title": "Titre",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Génération automatique de titre",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt de génération de titre",
 	"to": "à",
 	"To access the available model names for downloading,": "Pour accéder aux noms de modèles disponibles pour le téléchargement,",
 	"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles pour le téléchargement,",
 	"to chat input.": "à l'entrée du chat.",
+	"Today": "",
 	"Toggle settings": "Basculer les paramètres",
 	"Toggle sidebar": "Basculer la barre latérale",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Version",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Add-ons WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Rédigez une suggestion de prompt (p. ex. Qui êtes-vous ?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Rédigez un résumé en 50 mots qui résume [sujet ou mot-clé].",
+	"Yesterday": "",
 	"You": "You",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Vous êtes un assistant utile",
 	"You're now logged in.": "Vous êtes maintenant connecté.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/fr-FR/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Paramètres d'administration",
 	"Advanced Parameters": "Paramètres avancés",
 	"all": "tous",
+	"All Documents": "",
 	"All Users": "Tous les utilisateurs",
 	"Allow": "Autoriser",
 	"Allow Chat Deletion": "Autoriser la suppression du chat",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "RPM API",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "enregistrement du chat",
 	"are allowed - Activate this command by typing": "sont autorisés - Activez cette commande en tapant",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
+	"August": "",
 	"Auto-playback response": "Réponse en lecture automatique",
 	"Auto-send input after 3 sec.": "Envoyer automatiquement l'entrée après 3 sec.",
 	"AUTOMATIC1111 Base URL": "URL de base AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Base de données",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Par défaut",
 	"Default (Automatic1111)": "Par défaut (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Vous n'avez pas de compte ?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Télécharger la base de données",
 	"Drop any files here to add to the conversation": "Déposez des fichiers ici pour les ajouter à la conversation",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "par ex. '30s', '10m'. Les unités de temps valides sont 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Entrez le chevauchement de bloc",
 	"Enter Chunk Size": "Entrez la taille du bloc",
 	"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (p. ex. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Entrez l'URL de base de l'API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Entrez la clé API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Entrez le RPM de l'API LiteLLM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exporter les prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Mode fichier",
 	"File not found.": "Fichier non trouvé.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Bonjour, {{name}}",
+	"Help": "",
 	"Hide": "Cacher",
 	"Hide Additional Params": "Hide additional params",
 	"How can I help you today?": "Comment puis-je vous aider aujourd'hui ?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Inclure le drapeau `--api` lors de l'exécution de stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interface",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "rejoignez notre Discord pour obtenir de l'aide.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Expiration JWT",
 	"JWT Token": "Jeton JWT",
 	"Keep Alive": "Garder en vie",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Gérer les modèles LiteLLM",
 	"Manage Models": "Gérer les modèles",
 	"Manage Ollama Models": "Gérer les modèles Ollama",
+	"March": "",
 	"Max Tokens": "Tokens maximaux",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé simultanément. Veuillez réessayer plus tard.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Vous ne savez pas quoi écrire ? Basculer vers",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notifications de bureau",
+	"November": "",
+	"October": "",
 	"Off": "Désactivé",
 	"Okay, Let's Go!": "D'accord, allons-y !",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Aire de jeu",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Contenu du prompt",
 	"Prompt suggestions": "Suggestions de prompt",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Réinitialiser le stockage de vecteur",
 	"Response AutoCopy to Clipboard": "Copie automatique de la réponse dans le presse-papiers",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rôle",
 	"Rosé Pine": "Pin Rosé",
 	"Rosé Pine Dawn": "Aube Pin Rosé",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Envoyer un message",
 	"Send message": "Envoyer un message",
+	"September": "",
 	"Server connection verified": "Connexion au serveur vérifiée",
 	"Set as default": "Définir par défaut",
 	"Set Default Model": "Définir le modèle par défaut",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Définir la taille de l'image",
+	"Set Model": "Définir le modèle",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Définir les étapes",
 	"Set Title Auto-Generation Model": "Définir le modèle de génération automatique de titre",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Succès",
 	"Successfully updated.": "Mis à jour avec succès.",
+	"Suggested": "",
 	"Sync All": "Synchroniser tout",
 	"System": "Système",
 	"System Prompt": "Invite de système",
@@ -417,11 +438,13 @@
 	"Title": "Titre",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Génération automatique de titre",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt de génération de titre",
 	"to": "à",
 	"To access the available model names for downloading,": "Pour accéder aux noms de modèles disponibles pour le téléchargement,",
 	"To access the GGUF models available for downloading,": "Pour accéder aux modèles GGUF disponibles pour le téléchargement,",
 	"to chat input.": "à l'entrée du chat.",
+	"Today": "",
 	"Toggle settings": "Basculer les paramètres",
 	"Toggle sidebar": "Basculer la barre latérale",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Version",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Add-ons WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Écrivez un prompt (e.x. Qui est-tu ?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Ecrivez un résumé en 50 mots [sujet ou mot-clé]",
+	"Yesterday": "",
 	"You": "You",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Vous êtes un assistant utile",
 	"You're now logged in.": "Vous êtes maintenant connecté.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 495 - 0
src/lib/i18n/locales/hi-IN/translation.json

@@ -0,0 +1,495 @@
+{
+	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' or '-1' बिना किसी समाप्ति के",
+	"(Beta)": "(Beta)",
+	"(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)",
+	"(latest)": "(latest)",
+	"{{modelName}} is thinking...": "{{modelName}} सोच रहा है...",
+	"{{user}}'s Chats": "{{user}} की चैट",
+	"{{webUIName}} Backend Required": "{{webUIName}} बैकएंड आवश्यक",
+	"a user": "एक उपयोगकर्ता",
+	"About": "हमारे बारे में",
+	"Account": "खाता",
+	"Accurate information": "सटीक जानकारी",
+	"Add a model": "एक मॉडल जोड़ें",
+	"Add a model tag name": "एक मॉडल टैग नाम जोड़ें",
+	"Add a short description about what this modelfile does": "यह मॉडलफ़ाइल क्या करती है इसके बारे में एक संक्षिप्त विवरण जोड़ें",
+	"Add a short title for this prompt": "इस संकेत के लिए एक संक्षिप्त शीर्षक जोड़ें",
+	"Add a tag": "एक टैग जोड़े",
+	"Add custom prompt": "",
+	"Add Docs": "दस्तावेज़ जोड़ें",
+	"Add Files": "फाइलें जोड़ें",
+	"Add message": "संदेश डालें",
+	"Add Model": "मॉडल जोड़ें",
+	"Add Tags": "टैगों को जोड़ें",
+	"Add User": "उपयोगकर्ता जोड़ें",
+	"Adjusting these settings will apply changes universally to all users.": "इन सेटिंग्स को समायोजित करने से परिवर्तन सभी उपयोगकर्ताओं पर सार्वभौमिक रूप से लागू होंगे।",
+	"admin": "व्यवस्थापक",
+	"Admin Panel": "व्यवस्थापक पैनल",
+	"Admin Settings": "व्यवस्थापक सेटिंग्स",
+	"Advanced Parameters": "उन्नत पैरामीटर",
+	"all": "सभी",
+	"All Documents": "",
+	"All Users": "सभी उपयोगकर्ता",
+	"Allow": "अनुमति दें",
+	"Allow Chat Deletion": "चैट हटाने की अनुमति दें",
+	"alphanumeric characters and hyphens": "अल्फ़ान्यूमेरिक वर्ण और हाइफ़न",
+	"Already have an account?": "क्या आपके पास पहले से एक खाता मौजूद है?",
+	"an assistant": "एक सहायक",
+	"and": "और",
+	"and create a new shared link.": "",
+	"API Base URL": "एपीआई बेस यूआरएल",
+	"API Key": "एपीआई कुंजी",
+	"API Key created.": "एपीआई कुंजी बनाई गई",
+	"API keys": "एपीआई कुंजियाँ",
+	"API RPM": "",
+	"April": "",
+	"Archive": "पुरालेख",
+	"Archived Chats": "संग्रहीत चैट",
+	"are allowed - Activate this command by typing": "अनुमति है - टाइप करके इस कमांड को सक्रिय करें",
+	"Are you sure?": "क्या आपको यकीन है?",
+	"Attach file": "",
+	"Attention to detail": "विस्तार पर ध्यान",
+	"Audio": "ऑडियो",
+	"August": "",
+	"Auto-playback response": "ऑटो-प्लेबैक प्रतिक्रिया",
+	"Auto-send input after 3 sec.": "3 सेकंड के बाद स्वचालित रूप से इनपुट भेजें।",
+	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 बेस यूआरएल",
+	"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 का बेस यूआरएल आवश्यक है।",
+	"available!": "उपलब्ध!",
+	"Back": "पीछे",
+	"Bad Response": "ख़राब प्रतिक्रिया",
+	"before": "",
+	"Being lazy": "आलसी होना",
+	"Builder Mode": "बिल्डर मोड",
+	"Bypass SSL verification for Websites": "",
+	"Cancel": "रद्द करें",
+	"Categories": "श्रेणियाँ",
+	"Change Password": "पासवर्ड बदलें",
+	"Chat": "चैट करें",
+	"Chat History": "चैट का इतिहास",
+	"Chat History is off for this browser.": "इस ब्राउज़र के लिए चैट इतिहास बंद है।",
+	"Chats": "सभी चैट",
+	"Check Again": "फिर से जाँचो",
+	"Check for updates": "अपडेट के लिए जाँच",
+	"Checking for updates...": "अपडेट के लिए जांच कर रहा है...",
+	"Choose a model before saving...": "सहेजने से पहले एक मॉडल चुनें...",
+	"Chunk Overlap": "चंक ओवरलैप",
+	"Chunk Params": "चंक पैरामीटर्स",
+	"Chunk Size": "चंक आकार",
+	"Citation": "",
+	"Click here for help.": "सहायता के लिए यहां क्लिक करें।",
+	"Click here to": "",
+	"Click here to check other modelfiles.": "अन्य मॉडल फ़ाइलों की जांच के लिए यहां क्लिक करें।",
+	"Click here to select": "चयन करने के लिए यहां क्लिक करें।",
+	"Click here to select a csv file.": "सीएसवी फ़ाइल का चयन करने के लिए यहां क्लिक करें।",
+	"Click here to select documents.": "दस्तावेज़ चुनने के लिए यहां क्लिक करें।",
+	"click here.": "यहाँ क्लिक करें।",
+	"Click on the user role button to change a user's role.": "उपयोगकर्ता की भूमिका बदलने के लिए उपयोगकर्ता भूमिका बटन पर क्लिक करें।",
+	"Close": "बंद करना",
+	"Collection": "संग्रह",
+	"ComfyUI": "ComfyUI",
+	"ComfyUI Base URL": "ComfyUI बेस यूआरएल",
+	"ComfyUI Base URL is required.": "ComfyUI का बेस यूआरएल आवश्यक है",
+	"Command": "कमांड",
+	"Confirm Password": "पासवर्ड की पुष्टि कीजिये",
+	"Connections": "सम्बन्ध",
+	"Content": "सामग्री",
+	"Context Length": "प्रसंग की लंबाई",
+	"Continue Response": "प्रतिक्रिया जारी रखें",
+	"Conversation Mode": "बातचीत का मॉड",
+	"Copied shared chat URL to clipboard!": "साझा चैट URL को क्लिपबोर्ड पर कॉपी किया गया!",
+	"Copy": "कॉपी",
+	"Copy last code block": "अंतिम कोड ब्लॉक कॉपी करें",
+	"Copy last response": "अंतिम प्रतिक्रिया कॉपी करें",
+	"Copy Link": "लिंक को कॉपी करें",
+	"Copying to clipboard was successful!": "क्लिपबोर्ड पर कॉपी बनाना सफल रहा!",
+	"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':": "निम्नलिखित क्वेरी के लिए हेडर के रूप में एक संक्षिप्त, 3-5 शब्द वाक्यांश बनाएं, 3-5 शब्द सीमा का सख्ती से पालन करें और 'शीर्षक' शब्द के उपयोग से बचें:",
+	"Create a modelfile": "एक मॉडल फ़ाइल बनाएं",
+	"Create Account": "खाता बनाएं",
+	"Create new key": "",
+	"Create new secret key": "",
+	"Created at": "किस समय बनाया गया",
+	"Created At": "किस समय बनाया गया",
+	"Current Model": "वर्तमान मॉडल",
+	"Current Password": "वर्तमान पासवर्ड",
+	"Custom": "कस्टम संस्करण",
+	"Customize Ollama models for a specific purpose": "किसी विशिष्ट उद्देश्य के लिए ओलामा मॉडल को अनुकूलित करें",
+	"Dark": "",
+	"Dashboard": "",
+	"Database": "डेटाबेस",
+	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
+	"Default": "डिफ़ॉल्ट",
+	"Default (Automatic1111)": "डिफ़ॉल्ट (Automatic1111)",
+	"Default (SentenceTransformers)": "डिफ़ॉल्ट (SentenceTransformers)",
+	"Default (Web API)": "डिफ़ॉल्ट (Web API)",
+	"Default model updated": "डिफ़ॉल्ट मॉडल अपडेट किया गया",
+	"Default Prompt Suggestions": "डिफ़ॉल्ट प्रॉम्प्ट सुझाव",
+	"Default User Role": "डिफ़ॉल्ट उपयोगकर्ता भूमिका",
+	"delete": "डिलीट",
+	"Delete": "डिलीट",
+	"Delete a model": "एक मॉडल हटाएँ",
+	"Delete chat": "चैट हटाएं",
+	"Delete Chat": "चैट हटाएं",
+	"Delete Chats": "चैट हटाएं",
+	"delete this link": "",
+	"Delete User": "उपभोक्ता मिटायें",
+	"Deleted {{deleteModelTag}}": "{{deleteModelTag}} हटा दिया गया",
+	"Deleted {{tagName}}": "{{tagName}} हटा दिया गया",
+	"Description": "विवरण",
+	"Didn't fully follow instructions": "निर्देशों का पूरी तरह से पालन नहीं किया",
+	"Disabled": "",
+	"Discover a modelfile": "मॉडल फ़ाइल खोजें",
+	"Discover a prompt": "प्रॉम्प्ट खोजें",
+	"Discover, download, and explore custom prompts": "कस्टम प्रॉम्प्ट को खोजें, डाउनलोड करें और एक्सप्लोर करें",
+	"Discover, download, and explore model presets": "मॉडल प्रीसेट खोजें, डाउनलोड करें और एक्सप्लोर करें",
+	"Display the username instead of You in the Chat": "चैट में 'आप' के स्थान पर उपयोगकर्ता नाम प्रदर्शित करें",
+	"Document": "दस्तावेज़",
+	"Document Settings": "दस्तावेज़ सेटिंग्स",
+	"Documents": "दस्तावेज़",
+	"does not make any external connections, and your data stays securely on your locally hosted server.": "कोई बाहरी कनेक्शन नहीं बनाता है, और आपका डेटा आपके स्थानीय रूप से होस्ट किए गए सर्वर पर सुरक्षित रूप से रहता है।",
+	"Don't Allow": "अनुमति न दें",
+	"Don't have an account?": "कोई खाता नहीं है?",
+	"Don't like the style": "शैली पसंद नहीं है",
+	"Download": "डाउनलोड",
+	"Download canceled": "",
+	"Download Database": "डेटाबेस डाउनलोड करें",
+	"Drop any files here to add to the conversation": "बातचीत में जोड़ने के लिए कोई भी फ़ाइल यहां छोड़ें",
+	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "जैसे '30s', '10m', मान्य समय इकाइयाँ 's', 'm', 'h' हैं।",
+	"Edit": "संपादित करें",
+	"Edit Doc": "दस्तावेज़ संपादित करें",
+	"Edit User": "यूजर को संपादित करो",
+	"Email": "ईमेल",
+	"Embedding Model": "",
+	"Embedding Model Engine": "एंबेडिंग मॉडल इंजन",
+	"Embedding model set to \"{{embedding_model}}\"": "एम्बेडिंग मॉडल को \"{{embedding_model}}\" पर सेट किया गया",
+	"Enable Chat History": "चैट इतिहास सक्रिय करें",
+	"Enable New Sign Ups": "नए साइन अप सक्रिय करें",
+	"Enabled": "सक्रिय",
+	"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "सुनिश्चित करें कि आपकी CSV फ़ाइल में इस क्रम में 4 कॉलम शामिल हैं: नाम, ईमेल, पासवर्ड, भूमिका।",
+	"Enter {{role}} message here": "यहां {{role}} संदेश दर्ज करें",
+	"Enter Chunk Overlap": "चंक ओवरलैप दर्ज करें",
+	"Enter Chunk Size": "खंड आकार दर्ज करें",
+	"Enter Image Size (e.g. 512x512)": "छवि का आकार दर्ज करें (उदा. 512x512)",
+	"Enter language codes": "",
+	"Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM API Base URL दर्ज करें (litellm_params.api_base)",
+	"Enter LiteLLM API Key (litellm_params.api_key)": "LiteLLM API Key दर्ज करें (litellm_params.api_key)",
+	"Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM API RPM दर्ज करें (litellm_params.rpm) ",
+	"Enter LiteLLM Model (litellm_params.model)": "LiteLLM Model दर्ज करें (litellm_params.model)",
+	"Enter Max Tokens (litellm_params.max_tokens)": "Max Tokens दर्ज करें (litellm_params.max_tokens)",
+	"Enter model tag (e.g. {{modelTag}})": "Model tag दर्ज करें (उदा. {{modelTag}})",
+	"Enter Number of Steps (e.g. 50)": "चरणों की संख्या दर्ज करें (उदा. 50)",
+	"Enter Score": "स्कोर दर्ज करें",
+	"Enter stop sequence": "स्टॉप अनुक्रम दर्ज करें",
+	"Enter Top K": "शीर्ष K दर्ज करें",
+	"Enter URL (e.g. http://127.0.0.1:7860/)": "यूआरएल दर्ज करें (उदा. http://127.0.0.1:7860/)",
+	"Enter URL (e.g. http://localhost:11434)": "",
+	"Enter Your Email": "अपना ईमेल दर्ज करें",
+	"Enter Your Full Name": "अपना पूरा नाम भरें",
+	"Enter Your Password": "अपना पासवर्ड भरें",
+	"Enter Your Role": "अपनी भूमिका दर्ज करें",
+	"Experimental": "प्रयोगात्मक",
+	"Export All Chats (All Users)": "सभी चैट निर्यात करें (सभी उपयोगकर्ताओं की)",
+	"Export Chats": "चैट निर्यात करें",
+	"Export Documents Mapping": "निर्यात दस्तावेज़ मैपिंग",
+	"Export Modelfiles": "मॉडल फ़ाइलें निर्यात करें",
+	"Export Prompts": "प्रॉम्प्ट निर्यात करें",
+	"Failed to create API Key.": "एपीआई कुंजी बनाने में विफल.",
+	"Failed to read clipboard contents": "क्लिपबोर्ड सामग्री पढ़ने में विफल",
+	"February": "",
+	"Feel free to add specific details": "विशिष्ट विवरण जोड़ने के लिए स्वतंत्र महसूस करें",
+	"File Mode": "फ़ाइल मोड",
+	"File not found.": "फ़ाइल प्राप्त नहीं हुई।",
+	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "फ़िंगरप्रिंट स्पूफ़िंग का पता चला: प्रारंभिक अक्षरों को अवतार के रूप में उपयोग करने में असमर्थ। प्रोफ़ाइल छवि को डिफ़ॉल्ट पर डिफ़ॉल्ट किया जा रहा है.",
+	"Fluidly stream large external response chunks": "बड़े बाह्य प्रतिक्रिया खंडों को तरल रूप से प्रवाहित करें",
+	"Focus chat input": "चैट इनपुट पर फ़ोकस करें",
+	"Followed instructions perfectly": "निर्देशों का पूर्णतः पालन किया",
+	"Format your variables using square brackets like this:": "वर्गाकार कोष्ठकों का उपयोग करके अपने चरों को इस प्रकार प्रारूपित करें :",
+	"From (Base Model)": "(बेस मॉडल) से ",
+	"Full Screen Mode": "पूर्ण स्क्रीन मोड",
+	"General": "सामान्य",
+	"General Settings": "सामान्य सेटिंग्स",
+	"Generation Info": "जनरेशन की जानकारी",
+	"Good Response": "अच्छी प्रतिक्रिया",
+	"has no conversations.": "कोई बातचीत नहीं है",
+	"Hello, {{name}}": "नमस्ते, {{name}}",
+	"Help": "",
+	"Hide": "छुपाएं",
+	"Hide Additional Params": "अतिरिक्त पैरामीटर छिपाएँ",
+	"How can I help you today?": "आज मैं आपकी कैसे मदद कर सकता हूँ?",
+	"Hybrid Search": "हाइब्रिड खोज",
+	"Image Generation (Experimental)": "छवि निर्माण (प्रायोगिक)",
+	"Image Generation Engine": "छवि निर्माण इंजन",
+	"Image Settings": "छवि सेटिंग्स",
+	"Images": "इमेजिस",
+	"Import Chats": "चैट आयात करें",
+	"Import Documents Mapping": "दस्तावेज़ मैपिंग आयात करें",
+	"Import Modelfiles": "मॉडल फ़ाइलें आयात करें",
+	"Import Prompts": "प्रॉम्प्ट आयात करें",
+	"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui चलाते समय `--api` ध्वज शामिल करें",
+	"Input commands": "",
+	"Interface": "इंटरफेस",
+	"Invalid Tag": "",
+	"January": "",
+	"join our Discord for help.": "मदद के लिए हमारे डिस्कोर्ड में शामिल हों।",
+	"JSON": "",
+	"July": "",
+	"June": "",
+	"JWT Expiration": "JWT समाप्ति",
+	"JWT Token": "",
+	"Keep Alive": "क्रियाशील रहो",
+	"Keyboard shortcuts": "कीबोर्ड शॉर्टकट",
+	"Language": "भाषा",
+	"Last Active": "पिछली बार सक्रिय",
+	"Light": "",
+	"Listening...": "सुन रहा हूँ...",
+	"LLMs can make mistakes. Verify important information.": "एलएलएम गलतियाँ कर सकते हैं। महत्वपूर्ण जानकारी सत्यापित करें.",
+	"Made by OpenWebUI Community": "OpenWebUI समुदाय द्वारा निर्मित",
+	"Make sure to enclose them with": "उन्हें संलग्न करना सुनिश्चित करें",
+	"Manage LiteLLM Models": "LiteLLM मॉडल प्रबंधित करें",
+	"Manage Models": "मॉडल प्रबंधित करें",
+	"Manage Ollama Models": "Ollama मॉडल प्रबंधित करें",
+	"March": "",
+	"Max Tokens": "अधिकतम टोकन",
+	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "अधिकतम 3 मॉडल एक साथ डाउनलोड किये जा सकते हैं। कृपया बाद में पुन: प्रयास करें।",
+	"May": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Minimum Score": "न्यूनतम स्कोर",
+	"Mirostat": "",
+	"Mirostat Eta": "",
+	"Mirostat Tau": "",
+	"MMMM DD, YYYY": "",
+	"MMMM DD, YYYY HH:mm": "",
+	"Model '{{modelName}}' has been successfully downloaded.": "मॉडल '{{modelName}}' सफलतापूर्वक डाउनलोड हो गया है।",
+	"Model '{{modelTag}}' is already in queue for downloading.": "मॉडल '{{modelTag}}' पहले से ही डाउनलोड करने के लिए कतार में है।",
+	"Model {{modelId}} not found": "मॉडल {{modelId}} नहीं मिला",
+	"Model {{modelName}} already exists.": "मॉडल {{modelName}} पहले से मौजूद है।",
+	"Model filesystem path detected. Model shortname is required for update, cannot continue.": "मॉडल फ़ाइल सिस्टम पथ का पता चला. अद्यतन के लिए मॉडल संक्षिप्त नाम आवश्यक है, जारी नहीं रखा जा सकता।",
+	"Model Name": "मॉडल नाम",
+	"Model not selected": "मॉडल चयनित नहीं है",
+	"Model Tag Name": "मॉडल टैग नाम",
+	"Model Whitelisting": "मॉडल श्वेतसूचीकरण करें",
+	"Model(s) Whitelisted": "मॉडल श्वेतसूची में है",
+	"Modelfile": "मॉडल फ़ाइल",
+	"Modelfile Advanced Settings": "मॉडल फ़ाइल उन्नत सेटिंग्स",
+	"Modelfile Content": "मॉडल फ़ाइल सामग्री",
+	"Modelfiles": "मॉडल फ़ाइलें",
+	"Models": "सभी मॉडल",
+	"More": "और..",
+	"My Documents": "मेरे दस्तावेज़",
+	"My Modelfiles": "मेरी मॉडल फ़ाइलें",
+	"My Prompts": "मेरे प्रॉम्प्ट",
+	"Name": "नाम",
+	"Name Tag": "नाम टैग",
+	"Name your modelfile": "अपनी मॉडलफ़ाइल को नाम दें",
+	"New Chat": "नई चैट",
+	"New Password": "नया पासवर्ड",
+	"No results found": "",
+	"No source available": "",
+	"Not factually correct": "तथ्यात्मक रूप से सही नहीं है",
+	"Not sure what to add?": "निश्चित नहीं कि क्या जोड़ें?",
+	"Not sure what to write? Switch to": "मैं आश्वस्त नहीं हूं कि क्या लिखना है? स्विच करें",
+	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ध्यान दें: यदि आप न्यूनतम स्कोर निर्धारित करते हैं, तो खोज केवल न्यूनतम स्कोर से अधिक या उसके बराबर स्कोर वाले दस्तावेज़ वापस लाएगी।",
+	"Notifications": "सूचनाएं",
+	"November": "",
+	"October": "",
+	"Off": "बंद",
+	"Okay, Let's Go!": "ठीक है, चलिए चलते हैं!",
+	"OLED Dark": "",
+	"Ollama": "",
+	"Ollama Base URL": "",
+	"Ollama Version": "",
+	"On": "चालू",
+	"Only": "केवल",
+	"Only alphanumeric characters and hyphens are allowed in the command 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! 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.": "उफ़! आप एक असमर्थित विधि (केवल फ्रंटएंड) का उपयोग कर रहे हैं। कृपया बैकएंड से WebUI सर्वे करें।",
+	"Open": "खोलें",
+	"Open AI": "",
+	"Open AI (Dall-E)": "",
+	"Open new chat": "नई चैट खोलें",
+	"OpenAI": "",
+	"OpenAI API": "",
+	"OpenAI API Config": "",
+	"OpenAI API Key is required.": "OpenAI API कुंजी आवश्यक है",
+	"OpenAI URL/Key required.": "OpenAI URL/Key आवश्यक है।",
+	"or": "या",
+	"Other": "अन्य",
+	"Overview": "",
+	"Parameters": "पैरामीटर",
+	"Password": "पासवर्ड",
+	"PDF document (.pdf)": "PDF दस्तावेज़ (.pdf)",
+	"PDF Extract Images (OCR)": "PDF छवियाँ निकालें (OCR)",
+	"pending": "लंबित",
+	"Permission denied when accessing microphone: {{error}}": "माइक्रोफ़ोन तक पहुँचने पर अनुमति अस्वीकृत: {{error}}",
+	"Plain text (.txt)": "सादा पाठ (.txt)",
+	"Playground": "कार्यक्षेत्र",
+	"Positive attitude": "सकारात्मक रवैया",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
+	"Profile Image": "प्रोफ़ाइल छवि",
+	"Prompt": "",
+	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "प्रॉम्प्ट (उदाहरण के लिए मुझे रोमन साम्राज्य के बारे में एक मजेदार तथ्य बताएं)",
+	"Prompt Content": "प्रॉम्प्ट सामग्री",
+	"Prompt suggestions": "प्रॉम्प्ट सुझाव",
+	"Prompts": "प्रॉम्प्ट",
+	"Pull \"{{searchValue}}\" from Ollama.com": "",
+	"Pull a model from Ollama.com": "Ollama.com से एक मॉडल खींचें",
+	"Pull Progress": "प्रगति खींचें",
+	"Query Params": "क्वेरी पैरामीटर",
+	"RAG Template": "RAG टेम्पलेट",
+	"Raw Format": "कच्चा प्रारूप",
+	"Read Aloud": "जोर से पढ़ें",
+	"Record voice": "आवाज रिकॉर्ड करना",
+	"Redirecting you to OpenWebUI Community": "आपको OpenWebUI समुदाय पर पुनर्निर्देशित किया जा रहा है",
+	"Refused when it shouldn't have": "जब ऐसा नहीं होना चाहिए था तो मना कर दिया",
+	"Regenerate": "पुनः जेनरेट",
+	"Release Notes": "रिलीज नोट्स",
+	"Remove": "हटा दें",
+	"Remove Model": "",
+	"Rename": "",
+	"Repeat Last N": "अंतिम N दोहराएँ",
+	"Repeat Penalty": "पुन: दंड",
+	"Request Mode": "अनुरोध मोड",
+	"Reranking Model": "",
+	"Reranking model disabled": "पुनर्रैंकिंग मॉडल अक्षम किया गया",
+	"Reranking model set to \"{{reranking_model}}\"": "रीरैंकिंग मॉडल को \"{{reranking_model}}\" पर \u200b\u200bसेट किया गया",
+	"Reset Vector Storage": "वेक्टर संग्रहण रीसेट करें",
+	"Response AutoCopy to Clipboard": "क्लिपबोर्ड पर प्रतिक्रिया ऑटोकॉपी",
+	"Role": "भूमिका",
+	"Rosé Pine": "",
+	"Rosé Pine Dawn": "",
+	"Save": "सहेजें",
+	"Save & Create": "सहेजें और बनाएं",
+	"Save & Submit": "सहेजें और सबमिट करें",
+	"Save & 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": "चैट लॉग को सीधे आपके ब्राउज़र के स्टोरेज में सहेजना अब समर्थित नहीं है। कृपया नीचे दिए गए बटन पर क्लिक करके डाउनलोड करने और अपने चैट लॉग को हटाने के लिए कुछ समय दें। चिंता न करें, आप आसानी से अपने चैट लॉग को बैकएंड पर पुनः आयात कर सकते हैं",
+	"Scan": "स्कैन",
+	"Scan complete!": "स्कैन पूरा हुआ!",
+	"Scan for documents from {{path}}": "{{path}} से दस्तावेज़ों को स्कैन करें",
+	"Search": "खोजें",
+	"Search a model": "एक मॉडल खोजें",
+	"Search Documents": "दस्तावेज़ खोजें",
+	"Search Prompts": "प्रॉम्प्ट खोजें",
+	"See readme.md for instructions": "निर्देशों के लिए readme.md देखें",
+	"See what's new": "देखें, क्या नया है",
+	"Seed": "सीड्\u200c",
+	"Select a mode": "एक मोड चुनें",
+	"Select a model": "एक मॉडल चुनें",
+	"Select an Ollama instance": "एक Ollama Instance चुनें",
+	"Select model": "",
+	"Send a Message": "एक संदेश भेजो",
+	"Send message": "मेसेज भेजें",
+	"September": "",
+	"Server connection verified": "सर्वर कनेक्शन सत्यापित",
+	"Set as default": "डिफाल्ट के रूप में सेट",
+	"Set Default Model": "डिफ़ॉल्ट मॉडल सेट करें",
+	"Set embedding model (e.g. {{model}})": "",
+	"Set Image Size": "छवि का आकार सेट करें",
+	"Set Model": "",
+	"Set reranking model (e.g. {{model}})": "",
+	"Set Steps": "चरण निर्धारित करें",
+	"Set Title Auto-Generation Model": "शीर्षक ऑटो-जेनरेशन मॉडल सेट करें",
+	"Set Voice": "आवाज सेट करें",
+	"Settings": "सेटिंग्स",
+	"Settings saved successfully!": "सेटिंग्स सफलतापूर्वक सहेजी गईं!",
+	"Share": "साझा करें",
+	"Share Chat": "चैट साझा करें",
+	"Share to OpenWebUI Community": "OpenWebUI समुदाय में साझा करें",
+	"short-summary": "संक्षिप्त सारांश",
+	"Show": "दिखाओ",
+	"Show Additional Params": "अतिरिक्त पैरामीटर दिखाएँ",
+	"Show shortcuts": "शॉर्टकट दिखाएँ",
+	"Showcased creativity": "रचनात्मकता का प्रदर्शन किया",
+	"sidebar": "साइड बार",
+	"Sign in": "साइन इन",
+	"Sign Out": "साइन आउट",
+	"Sign up": "साइन अप",
+	"Signing in": "साइन इन हो रहा है",
+	"Source": "",
+	"Speech recognition error: {{error}}": "वाक् पहचान त्रुटि: {{error}}",
+	"Speech-to-Text Engine": "वाक्-से-पाठ इंजन",
+	"SpeechRecognition API is not supported in this browser.": "इस ब्राउज़र में SpeechRecognition API समर्थित नहीं है",
+	"Stop Sequence": "अनुक्रम रोकें",
+	"STT Settings": "STT सेटिंग्स ",
+	"Submit": "सबमिट करें",
+	"Subtitle (e.g. about the Roman Empire)": "उपशीर्षक (जैसे रोमन साम्राज्य के बारे में)",
+	"Success": "संपन्न",
+	"Successfully updated.": "सफलतापूर्वक उत्परिवर्तित।",
+	"Suggested": "",
+	"Sync All": "सभी को सिंक करें",
+	"System": "सिस्टम",
+	"System Prompt": "सिस्टम प्रॉम्प्ट",
+	"Tags": "टैग",
+	"Tell us more:": "हमें और अधिक बताएँ:",
+	"Temperature": "टेंपेरेचर",
+	"Template": "टेम्पलेट",
+	"Text Completion": "पाठ समापन",
+	"Text-to-Speech Engine": "टेक्स्ट-टू-स्पीच इंजन",
+	"Tfs Z": "",
+	"Thanks for your feedback!": "आपकी प्रतिक्रिया के लिए धन्यवाद!",
+	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "स्कोर का मान 0.0 (0%) और 1.0 (100%) के बीच होना चाहिए।",
+	"Theme": "थीम",
+	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "यह सुनिश्चित करता है कि आपकी मूल्यवान बातचीत आपके बैकएंड डेटाबेस में सुरक्षित रूप से सहेजी गई है। धन्यवाद!",
+	"This setting does not sync across browsers or devices.": "यह सेटिंग सभी ब्राउज़रों या डिवाइसों में समन्वयित नहीं होती है",
+	"Thorough explanation": "विस्तृत व्याख्या",
+	"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "टिप: प्रत्येक प्रतिस्थापन के बाद चैट इनपुट में टैब कुंजी दबाकर लगातार कई वैरिएबल स्लॉट अपडेट करें।",
+	"Title": "शीर्षक",
+	"Title (e.g. Tell me a fun fact)": "शीर्षक (उदा. मुझे एक मज़ेदार तथ्य बताएं)",
+	"Title Auto-Generation": "शीर्षक ऑटो-जेनरेशन",
+	"Title cannot be an empty string.": "",
+	"Title Generation Prompt": "शीर्षक जनरेशन प्रॉम्प्ट",
+	"to": "",
+	"To access the available model names for downloading,": "डाउनलोड करने के लिए उपलब्ध मॉडल नामों तक पहुंचने के लिए,",
+	"To access the GGUF models available for downloading,": "डाउनलोडिंग के लिए उपलब्ध GGUF मॉडल तक पहुँचने के लिए,",
+	"to chat input.": "इनपुट चैट करने के लिए.",
+	"Today": "",
+	"Toggle settings": "सेटिंग्स टॉगल करें",
+	"Toggle sidebar": "साइडबार टॉगल करें",
+	"Top K": "शीर्ष  K",
+	"Top P": "शीर्ष  P",
+	"Trouble accessing Ollama?": "Ollama तक पहुँचने में परेशानी हो रही है?",
+	"TTS Settings": "TTS सेटिंग्स",
+	"Type Hugging Face Resolve (Download) URL": "हगिंग फेस रिज़ॉल्व (डाउनलोड) यूआरएल टाइप करें",
+	"Uh-oh! There was an issue connecting to {{provider}}.": "उह ओह! {{provider}} से कनेक्ट करने में एक समस्या थी।",
+	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "अज्ञात फ़ाइल प्रकार '{{file_type}}', लेकिन स्वीकार करना और सादे पाठ के रूप में व्यवहार करना",
+	"Update and Copy Link": "अपडेट करें और लिंक कॉपी करें",
+	"Update password": "पासवर्ड अपडेट करें",
+	"Upload a GGUF model": "GGUF मॉडल अपलोड करें",
+	"Upload files": "फाइलें अपलोड करें",
+	"Upload Progress": "प्रगति अपलोड करें",
+	"URL Mode": "",
+	"Use '#' in the prompt input to load and select your documents.": "अपने दस्तावेज़ों को लोड करने और चुनने के लिए शीघ्र इनपुट में '#' का उपयोग करें।",
+	"Use Gravatar": "Gravatar का प्रयोग करें",
+	"Use Initials": "प्रथमाक्षर का प्रयोग करें",
+	"user": "उपयोगकर्ता",
+	"User Permissions": "उपयोगकर्ता अनुमतियाँ",
+	"Users": "उपयोगकर्ताओं",
+	"Utilize": "उपयोग करें",
+	"Valid time units:": "मान्य समय इकाइयाँ:",
+	"variable": "",
+	"variable to have them replaced with clipboard content.": "उन्हें क्लिपबोर्ड सामग्री से बदलने के लिए वेरिएबल।",
+	"Version": "संस्करण",
+	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "चेतावनी: यदि आप अपने एम्बेडिंग मॉडल को अपडेट या बदलते हैं, तो आपको सभी दस्तावेज़ों को फिर से आयात करने की आवश्यकता होगी।",
+	"Web": "वेब",
+	"Web Loader Settings": "",
+	"Web Params": "",
+	"Webhook URL": "",
+	"WebUI Add-ons": "",
+	"WebUI Settings": "WebUI सेटिंग्स",
+	"WebUI will make requests to": "WebUI अनुरोध करेगा",
+	"What’s New in": "इसमें नया क्या है",
+	"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "जब इतिहास बंद हो जाता है, तो इस ब्राउज़र पर नई चैट आपके किसी भी डिवाइस पर इतिहास में दिखाई नहीं देंगी।",
+	"Whisper (Local)": "Whisper (स्थानीय)",
+	"Write a prompt suggestion (e.g. Who are you?)": "एक त्वरित सुझाव लिखें (जैसे कि आप कौन हैं?)",
+	"Write a summary in 50 words that summarizes [topic or keyword].": "50 शब्दों में एक सारांश लिखें जो [विषय या कीवर्ड] का सारांश प्रस्तुत करता हो।",
+	"Yesterday": "",
+	"You": "आप",
+	"You have no archived conversations.": "",
+	"You have shared this chat": "",
+	"You're a helpful assistant.": "आप एक सहायक सहायक हैं",
+	"You're now logged in.": "अब आप लॉग इन हो गए हैं",
+	"Youtube": "",
+	"Youtube Loader Settings": ""
+}

+ 28 - 2
src/lib/i18n/locales/it-IT/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Impostazioni amministratore",
 	"Advanced Parameters": "Parametri avanzati",
 	"all": "tutti",
+	"All Documents": "",
 	"All Users": "Tutti gli utenti",
 	"Allow": "Consenti",
 	"Allow Chat Deletion": "Consenti l'eliminazione della chat",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "Chat archiviate",
 	"are allowed - Activate this command by typing": "sono consentiti - Attiva questo comando digitando",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
+	"August": "",
 	"Auto-playback response": "Riproduzione automatica della risposta",
 	"Auto-send input after 3 sec.": "Invio automatico dell'input dopo 3 secondi.",
 	"AUTOMATIC1111 Base URL": "URL base AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Database",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Predefinito",
 	"Default (Automatic1111)": "Predefinito (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Non hai un account?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Scarica database",
 	"Drop any files here to add to the conversation": "Trascina qui i file da aggiungere alla conversazione",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "ad esempio '30s','10m'. Le unità di tempo valide sono 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Inserisci la sovrapposizione chunk",
 	"Enter Chunk Size": "Inserisci la dimensione chunk",
 	"Enter Image Size (e.g. 512x512)": "Inserisci la dimensione dell'immagine (ad esempio 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Inserisci l'URL base dell'API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Inserisci la chiave API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Inserisci LiteLLM API RPM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Esporta prompt",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Impossibile leggere il contenuto degli appunti",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Modalità file",
 	"File not found.": "File non trovato.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Ciao, {{name}}",
+	"Help": "",
 	"Hide": "Nascondi",
 	"Hide Additional Params": "Nascondi parametri aggiuntivi",
 	"How can I help you today?": "Come posso aiutarti oggi?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Input commands": "",
 	"Interface": "Interfaccia",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "unisciti al nostro Discord per ricevere aiuto.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Scadenza JWT",
 	"JWT Token": "Token JWT",
 	"Keep Alive": "Mantieni attivo",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Gestisci modelli LiteLLM",
 	"Manage Models": "Gestisci modelli",
 	"Manage Ollama Models": "Gestisci modelli Ollama",
+	"March": "",
 	"Max Tokens": "Max token",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "È possibile scaricare un massimo di 3 modelli contemporaneamente. Riprova più tardi.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Non sei sicuro di cosa scrivere? Passa a",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notifiche desktop",
+	"November": "",
+	"October": "",
 	"Off": "Disattivato",
 	"Okay, Let's Go!": "Ok, andiamo!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Terreno di gioco",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Contenuto del prompt",
 	"Prompt suggestions": "Suggerimenti prompt",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Reimposta archivio vettoriale",
 	"Response AutoCopy to Clipboard": "Copia automatica della risposta negli appunti",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Ruolo",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Invia un messaggio",
 	"Send message": "Invia messaggio",
+	"September": "",
 	"Server connection verified": "Connessione al server verificata",
 	"Set as default": "Imposta come predefinito",
 	"Set Default Model": "Imposta modello predefinito",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Imposta dimensione immagine",
+	"Set Model": "Imposta modello",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Imposta passaggi",
 	"Set Title Auto-Generation Model": "Imposta modello di generazione automatica del titolo",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Successo",
 	"Successfully updated.": "Aggiornato con successo.",
+	"Suggested": "",
 	"Sync All": "Sincronizza tutto",
 	"System": "Sistema",
 	"System Prompt": "Prompt di sistema",
@@ -417,11 +438,13 @@
 	"Title": "Titolo",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Generazione automatica del titolo",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt di generazione del titolo",
 	"to": "a",
 	"To access the available model names for downloading,": "Per accedere ai nomi dei modelli disponibili per il download,",
 	"To access the GGUF models available for downloading,": "Per accedere ai modelli GGUF disponibili per il download,",
 	"to chat input.": "all'input della chat.",
+	"Today": "",
 	"Toggle settings": "Attiva/disattiva impostazioni",
 	"Toggle sidebar": "Attiva/disattiva barra laterale",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Versione",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Componenti aggiuntivi WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (locale)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Scrivi un suggerimento per il prompt (ad esempio Chi sei?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Scrivi un riassunto in 50 parole che riassume [argomento o parola chiave].",
+	"Yesterday": "",
 	"You": "Tu",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Sei un assistente utile.",
 	"You're now logged in.": "Ora hai effettuato l'accesso.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/ja-JP/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "管理者設定",
 	"Advanced Parameters": "詳細パラメーター",
 	"all": "すべて",
+	"All Documents": "",
 	"All Users": "すべてのユーザー",
 	"Allow": "許可",
 	"Allow Chat Deletion": "チャットの削除を許可",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "チャット記録",
 	"are allowed - Activate this command by typing": "が許可されています - 次のように入力してこのコマンドをアクティブ化します",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "オーディオ",
+	"August": "",
 	"Auto-playback response": "応答の自動再生",
 	"Auto-send input after 3 sec.": "3 秒後に自動的に出力を送信",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 ベース URL",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "データベース",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "デフォルト",
 	"Default (Automatic1111)": "デフォルト (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "アカウントをお持ちではありませんか?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "データベースをダウンロード",
 	"Drop any files here to add to the conversation": "会話を追加するには、ここにファイルをドロップしてください",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例: '30秒'、'10分'。有効な時間単位は '秒'、'分'、'時間' です。",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "チャンクオーバーラップを入力してください",
 	"Enter Chunk Size": "チャンクサイズを入力してください",
 	"Enter Image Size (e.g. 512x512)": "画像サイズを入力してください (例: 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM API ベース URL を入力してください (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "LiteLLM API キーを入力してください (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM API RPM を入力してください (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "プロンプトをエクスポート",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "クリップボードの内容を読み取れませんでした",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "ファイルモード",
 	"File not found.": "ファイルが見つかりません。",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "こんにちは、{{name}} さん",
+	"Help": "",
 	"Hide": "非表示",
 	"Hide Additional Params": "追加パラメーターを非表示",
 	"How can I help you today?": "今日はどのようにお手伝いしましょうか?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Input commands": "",
 	"Interface": "インターフェース",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "ヘルプについては、Discord に参加してください。",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT 有効期限",
 	"JWT Token": "JWT トークン",
 	"Keep Alive": "キープアライブ",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "LiteLLM モデルを管理",
 	"Manage Models": "モデルを管理",
 	"Manage Ollama Models": "Ollama モデルを管理",
+	"March": "",
 	"Max Tokens": "最大トークン数",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "同時にダウンロードできるモデルは最大 3 つです。後でもう一度お試しください。",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "ミロスタット",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "何を書けばよいかわからない? 次に切り替える",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "デスクトップ通知",
+	"November": "",
+	"October": "",
 	"Off": "オフ",
 	"Okay, Let's Go!": "OK、始めましょう!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "プレイグラウンド",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "プロンプトの内容",
 	"Prompt suggestions": "プロンプトの提案",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "ベクトルストレージをリセット",
 	"Response AutoCopy to Clipboard": "クリップボードへの応答の自動コピー",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "役割",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "メッセージを送信",
 	"Send message": "メッセージを送信",
+	"September": "",
 	"Server connection verified": "サーバー接続が確認されました",
 	"Set as default": "デフォルトに設定",
 	"Set Default Model": "デフォルトモデルを設定",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "画像サイズを設定",
+	"Set Model": "モデルを設定",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "ステップを設定",
 	"Set Title Auto-Generation Model": "タイトル自動生成モデルを設定",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "成功",
 	"Successfully updated.": "正常に更新されました。",
+	"Suggested": "",
 	"Sync All": "すべてを同期",
 	"System": "システム",
 	"System Prompt": "システムプロンプト",
@@ -417,11 +438,13 @@
 	"Title": "タイトル",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "タイトル自動生成",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "タイトル生成プロンプト",
 	"to": "まで",
 	"To access the available model names for downloading,": "ダウンロード可能なモデル名にアクセスするには、",
 	"To access the GGUF models available for downloading,": "ダウンロード可能な GGUF モデルにアクセスするには、",
 	"to chat input.": "チャット入力へ。",
+	"Today": "",
 	"Toggle settings": "設定を切り替え",
 	"Toggle sidebar": "サイドバーを切り替え",
 	"Top K": "トップ K",
@@ -450,6 +473,7 @@
 	"Version": "バージョン",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "ウェブ",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI アドオン",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (ローカル)",
 	"Write a prompt suggestion (e.g. Who are you?)": "プロンプトの提案を書いてください (例: あなたは誰ですか?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "[トピックまたはキーワード] を要約する 50 語の概要を書いてください。",
+	"Yesterday": "",
 	"You": "あなた",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "あなたは役に立つアシスタントです。",
 	"You're now logged in.": "ログインしました。",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/ka-GE/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "ადმინისტრატორის ხელსაწყოები",
 	"Advanced Parameters": "დამატებითი პარამეტრები",
 	"all": "ყველა",
+	"All Documents": "",
 	"All Users": "ყველა მომხმარებელი",
 	"Allow": "ნების დართვა",
 	"Allow Chat Deletion": "მიმოწერის წაშლის დაშვება",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "ჩატის ისტორიის არქივი",
 	"are allowed - Activate this command by typing": "დაშვებულია - ბრძანების გასააქტიურებლად აკრიფეთ:",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "ხმოვანი",
+	"August": "",
 	"Auto-playback response": "ავტომატური დაკვრის პასუხი",
 	"Auto-send input after 3 sec.": "შეყვანის ავტომატური გაგზავნა 3 წამის შემდეგ ",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 საბაზისო მისამართი",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "მონაცემთა ბაზა",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "დეფოლტი",
 	"Default (Automatic1111)": "დეფოლტ (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "არ გაქვს ანგარიში?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "გადმოწერე მონაცემთა ბაზა",
 	"Drop any files here to add to the conversation": "გადაიტანეთ ფაილები აქ, რათა დაამატოთ ისინი მიმოწერაში",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "მაგალითად, '30წ', '10მ'. მოქმედი დროის ერთეულები: 'წ', 'წთ', 'სთ'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "შეიყვანეთ ნაწილის გადახურვა",
 	"Enter Chunk Size": "შეიყვანე ბლოკის ზომა",
 	"Enter Image Size (e.g. 512x512)": "შეიყვანეთ სურათის ზომა (მაგ. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "შეიყვანეთ LiteLLM API ბაზის მისამართი (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "შეიყვანეთ LiteLLM API გასაღები (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "შეიყვანეთ LiteLLM API RPM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "მოთხოვნების ექსპორტი",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "ბუფერში შიგთავსის წაკითხვა ვერ მოხერხდა",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "ფაილური რეჟიმი",
 	"File not found.": "ფაილი ვერ მოიძებნა",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "გამარჯობა, {{name}}",
+	"Help": "",
 	"Hide": "დამალვა",
 	"Hide Additional Params": "დამატებითი პარამეტრების დამალვა",
 	"How can I help you today?": "როგორ შემიძლია დაგეხმარო დღეს?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "ჩართეთ `--api` დროშა stable-diffusion-webui-ის გაშვებისას",
 	"Input commands": "",
 	"Interface": "ინტერფეისი",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "შეუერთდით ჩვენს Discord-ს დახმარებისთვის",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT-ის ვადა",
 	"JWT Token": "JWT ტოკენი",
 	"Keep Alive": "აქტიურად დატოვება",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "LiteLLM მოდელების მართვა",
 	"Manage Models": "მოდელების მართვა",
 	"Manage Ollama Models": "Ollama მოდელების მართვა",
+	"March": "",
 	"Max Tokens": "მაქსიმალური ტოკენები",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "მაქსიმუმ 3 მოდელის ჩამოტვირთვა შესაძლებელია ერთდროულად. Გთხოვთ სცადოთ მოგვიანებით.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "მიროსტატი",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "არ იცი რა დაწერო? გადართვა:",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "შეტყობინება",
+	"November": "",
+	"October": "",
 	"Off": "გამორთვა",
 	"Okay, Let's Go!": "კარგი, წავედით!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "სათამაშო მოედანი",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "მოთხოვნის შინაარსი",
 	"Prompt suggestions": "მოთხოვნის რჩევები",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "ვექტორული მეხსიერების გადატვირთვა",
 	"Response AutoCopy to Clipboard": "პასუხის ავტომატური კოპირება ბუფერში",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "როლი",
 	"Rosé Pine": "ვარდისფერი ფიჭვის ხე",
 	"Rosé Pine Dawn": "ვარდისფერი ფიჭვის გარიჟრაჟი",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "შეტყობინების გაგზავნა",
 	"Send message": "შეტყობინების გაგზავნა",
+	"September": "",
 	"Server connection verified": "სერვერთან კავშირი დადასტურებულია",
 	"Set as default": "დეფოლტად დაყენება",
 	"Set Default Model": "დეფოლტ მოდელის დაყენება",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "სურათის ზომის დაყენება",
+	"Set Model": "მოდელის დაყენება",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "ნაბიჯების დაყენება",
 	"Set Title Auto-Generation Model": "სათაურის ავტომატური გენერაციის მოდელის დაყენება",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "წარმატება",
 	"Successfully updated.": "წარმატებით განახლდა",
+	"Suggested": "",
 	"Sync All": "სინქრონიზაცია",
 	"System": "სისტემა",
 	"System Prompt": "სისტემური მოთხოვნა",
@@ -417,11 +438,13 @@
 	"Title": "სათაური",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "სათაურის ავტო-გენერაცია",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "სათაურის გენერაციის მოთხოვნა ",
 	"to": "ში",
 	"To access the available model names for downloading,": "ჩამოტვირთვისთვის ხელმისაწვდომი მოდელების სახელებზე წვდომისთვის",
 	"To access the GGUF models available for downloading,": "ჩასატვირთად ხელმისაწვდომი GGUF მოდელებზე წვდომისთვის",
 	"to chat input.": "ჩატში",
+	"Today": "",
 	"Toggle settings": "პარამეტრების გადართვა",
 	"Toggle sidebar": "გვერდითი ზოლის გადართვა",
 	"Top K": "ტოპ K",
@@ -450,6 +473,7 @@
 	"Version": "ვერსია",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "ვები",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI დანამატები",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "ჩურჩული (ადგილობრივი)",
 	"Write a prompt suggestion (e.g. Who are you?)": "დაწერეთ მოკლე წინადადება (მაგ. ვინ ხარ?",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "დაწერეთ რეზიუმე 50 სიტყვით, რომელიც აჯამებს [თემას ან საკვანძო სიტყვას].",
+	"Yesterday": "",
 	"You": "თქვენ",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "თქვენ სასარგებლო ასისტენტი ხართ.",
 	"You're now logged in.": "თქვენ შესული ხართ.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/ko-KR/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "관리자 설정",
 	"Advanced Parameters": "고급 매개변수",
 	"all": "모두",
+	"All Documents": "",
 	"All Users": "모든 사용자",
 	"Allow": "허용",
 	"Allow Chat Deletion": "채팅 삭제 허용",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "채팅 기록 아카이브",
 	"are allowed - Activate this command by typing": "허용됩니다 - 이 명령을 활성화하려면 입력하세요.",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "오디오",
+	"August": "",
 	"Auto-playback response": "응답 자동 재생",
 	"Auto-send input after 3 sec.": "3초 후 입력 자동 전송",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "데이터베이스",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "기본값",
 	"Default (Automatic1111)": "기본값 (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "계정이 없으신가요?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "데이터베이스 다운로드",
 	"Drop any files here to add to the conversation": "대화에 추가할 파일을 여기에 드롭하세요.",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "예: '30s','10m'. 유효한 시간 단위는 's', 'm', 'h'입니다.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "청크 오버랩 입력",
 	"Enter Chunk Size": "청크 크기 입력",
 	"Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM API 기본 URL 입력(litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "LiteLLM API 키 입력(litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM API RPM 입력(litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "프롬프트 내보내기",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "클립보드 내용을 읽는 데 실패했습니다.",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "파일 모드",
 	"File not found.": "파일을 찾을 수 없습니다.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "안녕하세요, {{name}}",
+	"Help": "",
 	"Hide": "숨기기",
 	"Hide Additional Params": "추가 매개변수 숨기기",
 	"How can I help you today?": "오늘 어떻게 도와드릴까요?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Input commands": "",
 	"Interface": "인터페이스",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT 만료",
 	"JWT Token": "JWT 토큰",
 	"Keep Alive": "계속 유지하기",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "LiteLLM 모델 관리",
 	"Manage Models": "모델 관리",
 	"Manage Ollama Models": "Ollama 모델 관리",
+	"March": "",
 	"Max Tokens": "최대 토큰 수",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "최대 3개의 모델을 동시에 다운로드할 수 있습니다. 나중에 다시 시도하세요.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "무엇을 쓸지 모르겠나요? 전환하세요.",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "알림",
+	"November": "",
+	"October": "",
 	"Off": "끄기",
 	"Okay, Let's Go!": "그렇습니다, 시작합시다!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "놀이터",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "프롬프트 내용",
 	"Prompt suggestions": "프롬프트 제안",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "벡터 스토리지 초기화",
 	"Response AutoCopy to Clipboard": "응답 자동 클립보드 복사",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "역할",
 	"Rosé Pine": "로제 파인",
 	"Rosé Pine Dawn": "로제 파인 던",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "메시지 보내기",
 	"Send message": "메시지 보내기",
+	"September": "",
 	"Server connection verified": "서버 연결 확인됨",
 	"Set as default": "기본값으로 설정",
 	"Set Default Model": "기본 모델 설정",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "이미지 크기 설정",
+	"Set Model": "모델 설정",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "단계 설정",
 	"Set Title Auto-Generation Model": "제목 자동 생성 모델 설정",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "성공",
 	"Successfully updated.": "성공적으로 업데이트되었습니다.",
+	"Suggested": "",
 	"Sync All": "모두 동기화",
 	"System": "시스템",
 	"System Prompt": "시스템 프롬프트",
@@ -417,11 +438,13 @@
 	"Title": "제목",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "제목 자동 생성",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "제목 생성 프롬프트",
 	"to": "~까지",
 	"To access the available model names for downloading,": "다운로드 가능한 모델명을 확인하려면,",
 	"To access the GGUF models available for downloading,": "다운로드 가능한 GGUF 모델을 확인하려면,",
 	"to chat input.": "채팅 입력으로.",
+	"Today": "",
 	"Toggle settings": "설정 전환",
 	"Toggle sidebar": "사이드바 전환",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "버전",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "웹",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI 애드온",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "위스퍼 (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "프롬프트 제안 작성 (예: 당신은 누구인가요?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "[주제 또는 키워드]에 대한 50단어 요약문 작성.",
+	"Yesterday": "",
 	"You": "당신",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "당신은 유용한 어시스턴트입니다.",
 	"You're now logged in.": "로그인되었습니다.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 13 - 5
src/lib/i18n/locales/languages.json

@@ -3,6 +3,10 @@
 		"code": "en-US",
 		"title": "English (US)"
 	},
+	{
+		"code": "en-GB",
+		"title": "English (GB)"
+	},
 	{
 		"code": "ar-BH",
 		"title": "العربية (AR)"
@@ -13,7 +17,7 @@
 	},
 	{
 		"code": "bn-BD",
-		"title": "Banlga (বাংলা)"
+		"title": "Bangla (বাংলা)"
 	},
 	{
 		"code": "ca-ES",
@@ -23,10 +27,6 @@
 		"code": "de-DE",
 		"title": "Deutsch"
 	},
-	{
-		"code": "en-GB",
-		"title": "English (GB)"
-	},
 	{
 		"code": "es-ES",
 		"title": "Spanish"
@@ -35,6 +35,10 @@
 		"code": "fa-IR",
 		"title": "فارسی (Farsi)"
 	},
+	{
+		"code": "fi-FI",
+		"title": "Finnish"
+	},
 	{
 		"code": "fr-CA",
 		"title": "French (Canada)"
@@ -43,6 +47,10 @@
 		"code": "fr-FR",
 		"title": "French (France)"
 	},
+	{
+		"code": "hi-IN",
+		"title": "Hindi (हिंदी)"
+	},
 	{
 		"code": "it-IT",
 		"title": "Italian"

+ 28 - 2
src/lib/i18n/locales/nl-NL/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Administratieve Settings",
 	"Advanced Parameters": "Geavanceerde Parameters",
 	"all": "alle",
+	"All Documents": "",
 	"All Users": "Alle Gebruikers",
 	"Allow": "Toestaan",
 	"Allow Chat Deletion": "Sta Chat Verwijdering toe",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "chatrecord",
 	"are allowed - Activate this command by typing": "zijn toegestaan - Activeer deze commando door te typen",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
+	"August": "",
 	"Auto-playback response": "Automatisch afspelen van antwoord",
 	"Auto-send input after 3 sec.": "Automatisch verzenden van input na 3 sec.",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Database",
 	"DD/MM/YYYY HH:mm": "YYYY/MM/DD HH:mm",
+	"December": "",
 	"Default": "Standaard",
 	"Default (Automatic1111)": "Standaard (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Heb je geen account?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Download Database",
 	"Drop any files here to add to the conversation": "Sleep bestanden hier om toe te voegen aan het gesprek",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "bijv. '30s', '10m'. Geldige tijdseenheden zijn 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Voeg Chunk Overlap toe",
 	"Enter Chunk Size": "Voeg Chunk Size toe",
 	"Enter Image Size (e.g. 512x512)": "Voeg afbeelding formaat toe (Bijv. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Voeg LiteLLM API Base URL toe (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Voeg LiteLLM API Sleutel toe (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Voeg LiteLLM API RPM toe (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exporteer Prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Kan klembord inhoud niet lezen",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Bestandsmodus",
 	"File not found.": "Bestand niet gevonden.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Hallo, {{name}}",
+	"Help": "",
 	"Hide": "Verberg",
 	"Hide Additional Params": "Verberg Extra Params",
 	"How can I help you today?": "Hoe kan ik je vandaag helpen?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Voeg `--api` vlag toe bij het uitvoeren van stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interface",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "join onze Discord voor hulp.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT Expiration",
 	"JWT Token": "JWT Token",
 	"Keep Alive": "Houd Actief",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Beheer LiteLLM Modellen",
 	"Manage Models": "Beheer Modellen",
 	"Manage Ollama Models": "Beheer Ollama Modellen",
+	"March": "",
 	"Max Tokens": "Max Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximaal 3 modellen kunnen tegelijkertijd worden gedownload. Probeer het later opnieuw.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Niet zeker wat te schrijven? Schakel over naar",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Desktop Notificaties",
+	"November": "",
+	"October": "",
 	"Off": "Uit",
 	"Okay, Let's Go!": "Okay, Laten we gaan!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Speeltuin",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Prompt Inhoud",
 	"Prompt suggestions": "Prompt suggesties",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Reset Vector Opslag",
 	"Response AutoCopy to Clipboard": "Antwoord Automatisch Kopiëren naar Klembord",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rol",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Stuur een Bericht",
 	"Send message": "Stuur bericht",
+	"September": "",
 	"Server connection verified": "Server verbinding geverifieerd",
 	"Set as default": "Stel in als standaard",
 	"Set Default Model": "Stel Standaard Model in",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Stel Afbeelding Grootte in",
+	"Set Model": "Stel die model op",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Stel Stappen in",
 	"Set Title Auto-Generation Model": "Stel Titel Auto-Generatie Model in",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Succes",
 	"Successfully updated.": "Succesvol bijgewerkt.",
+	"Suggested": "",
 	"Sync All": "Synchroniseer Alles",
 	"System": "Systeem",
 	"System Prompt": "Systeem Prompt",
@@ -417,11 +438,13 @@
 	"Title": "Titel",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Titel Auto-Generatie",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Titel Generatie Prompt",
 	"to": "naar",
 	"To access the available model names for downloading,": "Om de beschikbare modelnamen voor downloaden te openen,",
 	"To access the GGUF models available for downloading,": "Om toegang te krijgen tot de GGUF modellen die beschikbaar zijn voor downloaden,",
 	"to chat input.": "naar chat input.",
+	"Today": "",
 	"Toggle settings": "Wissel instellingen",
 	"Toggle sidebar": "Wissel sidebar",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Versie",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI Add-ons",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Fluister (Lokaal)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Schrijf een prompt suggestie (bijv. Wie ben je?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Schrijf een samenvatting in 50 woorden die [onderwerp of trefwoord] samenvat.",
+	"Yesterday": "",
 	"You": "Jij",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Jij bent een behulpzame assistent.",
 	"You're now logged in.": "Je bent nu ingelogd.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/pl-PL/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Ustawienia administratora",
 	"Advanced Parameters": "Zaawansowane parametry",
 	"all": "wszyscy",
+	"All Documents": "",
 	"All Users": "Wszyscy użytkownicy",
 	"Allow": "Pozwól",
 	"Allow Chat Deletion": "Pozwól na usuwanie czatu",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "Pakiet API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "są dozwolone - Aktywuj to polecenie, wpisując",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Dźwięk",
+	"August": "",
 	"Auto-playback response": "Odtwarzanie automatyczne odpowiedzi",
 	"Auto-send input after 3 sec.": "Wysyłanie automatyczne po 3 sek.",
 	"AUTOMATIC1111 Base URL": "Podstawowy adres URL AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Baza danych",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Domyślny",
 	"Default (Automatic1111)": "Domyślny (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Nie masz konta?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Pobierz bazę danych",
 	"Drop any files here to add to the conversation": "Upuść pliki tutaj, aby dodać do rozmowy",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "np. '30s', '10m'. Poprawne jednostki czasu to 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Wprowadź zakchodzenie bloku",
 	"Enter Chunk Size": "Wprowadź rozmiar bloku",
 	"Enter Image Size (e.g. 512x512)": "Wprowadź rozmiar obrazu (np. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Wprowadź bazowy adres URL LiteLLM API (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Wprowadź klucz API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Wprowadź API LiteLLM RPM(litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Eksportuj prompty",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Nie udało się odczytać zawartości schowka",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Tryb pliku",
 	"File not found.": "Plik nie został znaleziony.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Witaj, {{name}}",
+	"Help": "",
 	"Hide": "Ukryj",
 	"Hide Additional Params": "Ukryj dodatkowe parametry",
 	"How can I help you today?": "Jak mogę Ci dzisiaj pomóc?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interfejs",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "Dołącz do naszego Discorda po pomoc.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Wygaśnięcie JWT",
 	"JWT Token": "Token JWT",
 	"Keep Alive": "Zachowaj łączność",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Zarządzaj modelami LiteLLM",
 	"Manage Models": "Zarządzaj modelami",
 	"Manage Ollama Models": "Zarządzaj modelami Ollama",
+	"March": "",
 	"Max Tokens": "Maksymalna liczba tokenów",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksymalnie 3 modele można pobierać jednocześnie. Spróbuj ponownie później.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Nie wiesz, co napisać? Przełącz się na",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Powiadomienia",
+	"November": "",
+	"October": "",
 	"Off": "Wyłączony",
 	"Okay, Let's Go!": "Okej, zaczynamy!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Plac zabaw",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Zawartość prompta",
 	"Prompt suggestions": "Sugestie prompta",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Resetuj przechowywanie wektorów",
 	"Response AutoCopy to Clipboard": "Automatyczne kopiowanie odpowiedzi do schowka",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rola",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Wyślij Wiadomość",
 	"Send message": "Wyślij wiadomość",
+	"September": "",
 	"Server connection verified": "Połączenie z serwerem zweryfikowane",
 	"Set as default": "Ustaw jako domyślne",
 	"Set Default Model": "Ustaw domyślny model",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Ustaw rozmiar obrazu",
+	"Set Model": "Ustaw model",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Ustaw kroki",
 	"Set Title Auto-Generation Model": "Ustaw model automatycznego generowania tytułów",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Sukces",
 	"Successfully updated.": "Pomyślnie zaktualizowano.",
+	"Suggested": "",
 	"Sync All": "Synchronizuj wszystko",
 	"System": "System",
 	"System Prompt": "Prompt systemowy",
@@ -417,11 +438,13 @@
 	"Title": "Tytuł",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Automatyczne generowanie tytułu",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt generowania tytułu",
 	"to": "do",
 	"To access the available model names for downloading,": "Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,",
 	"To access the GGUF models available for downloading,": "Aby uzyskać dostęp do dostępnych modeli GGUF do pobrania,",
 	"to chat input.": "do pola wprowadzania czatu.",
+	"Today": "",
 	"Toggle settings": "Przełącz ustawienia",
 	"Toggle sidebar": "Przełącz panel boczny",
 	"Top K": "Najlepsze K",
@@ -450,6 +473,7 @@
 	"Version": "Wersja",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Sieć",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Dodatki do interfejsu WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Lokalnie)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Napisz sugestię do polecenia (np. Kim jesteś?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Napisz podsumowanie w 50 słowach, które podsumowuje [temat lub słowo kluczowe].",
+	"Yesterday": "",
 	"You": "Ty",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Jesteś pomocnym asystentem.",
 	"You're now logged in.": "Jesteś teraz zalogowany.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/pt-BR/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Configurações do Administrador",
 	"Advanced Parameters": "Parâmetros Avançados",
 	"all": "todos",
+	"All Documents": "",
 	"All Users": "Todos os Usuários",
 	"Allow": "Permitir",
 	"Allow Chat Deletion": "Permitir Exclusão de Bate-papo",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "Bate-papos arquivados",
 	"are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Áudio",
+	"August": "",
 	"Auto-playback response": "Reprodução automática da resposta",
 	"Auto-send input after 3 sec.": "Enviar entrada automaticamente após 3 segundos.",
 	"AUTOMATIC1111 Base URL": "URL Base do AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Banco de dados",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Padrão",
 	"Default (Automatic1111)": "Padrão (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Não tem uma conta?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Baixar Banco de Dados",
 	"Drop any files here to add to the conversation": "Solte os arquivos aqui para adicionar à conversa",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Digite a Sobreposição de Fragmento",
 	"Enter Chunk Size": "Digite o Tamanho do Fragmento",
 	"Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Digite a URL Base da API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Digite a Chave da API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Digite o RPM da API LiteLLM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exportar Prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Modo de Arquivo",
 	"File not found.": "Arquivo não encontrado.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Olá, {{name}}",
+	"Help": "",
 	"Hide": "Ocultar",
 	"Hide Additional Params": "Ocultar Parâmetros Adicionais",
 	"How can I help you today?": "Como posso ajudá-lo hoje?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interface",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Expiração JWT",
 	"JWT Token": "Token JWT",
 	"Keep Alive": "Manter Vivo",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Gerenciar Modelos LiteLLM",
 	"Manage Models": "Gerenciar Modelos",
 	"Manage Ollama Models": "Gerenciar Modelos Ollama",
+	"March": "",
 	"Max Tokens": "Máximo de Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Tente novamente mais tarde.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Não tem certeza do que escrever? Mude para",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notificações da Área de Trabalho",
+	"November": "",
+	"October": "",
 	"Off": "Desligado",
 	"Okay, Let's Go!": "Ok, Vamos Lá!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Parque infantil",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Conteúdo do Prompt",
 	"Prompt suggestions": "Sugestões de Prompt",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Redefinir Armazenamento de Vetor",
 	"Response AutoCopy to Clipboard": "Cópia Automática da Resposta para a Área de Transferência",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Função",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Enviar uma Mensagem",
 	"Send message": "Enviar mensagem",
+	"September": "",
 	"Server connection verified": "Conexão com o servidor verificada",
 	"Set as default": "Definir como padrão",
 	"Set Default Model": "Definir Modelo Padrão",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Definir Tamanho da Imagem",
+	"Set Model": "Definir Modelo",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Definir Etapas",
 	"Set Title Auto-Generation Model": "Definir Modelo de Geração Automática de Título",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Sucesso",
 	"Successfully updated.": "Atualizado com sucesso.",
+	"Suggested": "",
 	"Sync All": "Sincronizar Tudo",
 	"System": "Sistema",
 	"System Prompt": "Prompt do Sistema",
@@ -417,11 +438,13 @@
 	"Title": "Título",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Geração Automática de Título",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt de Geração de Título",
 	"to": "para",
 	"To access the available model names for downloading,": "Para acessar os nomes de modelo disponíveis para download,",
 	"To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,",
 	"to chat input.": "para a entrada de bate-papo.",
+	"Today": "",
 	"Toggle settings": "Alternar configurações",
 	"Toggle sidebar": "Alternar barra lateral",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Versão",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Complementos WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Escreva uma sugestão de prompt (por exemplo, Quem é você?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].",
+	"Yesterday": "",
 	"You": "Você",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Você é um assistente útil.",
 	"You're now logged in.": "Você está conectado agora.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/pt-PT/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Configurações do Administrador",
 	"Advanced Parameters": "Parâmetros Avançados",
 	"all": "todos",
+	"All Documents": "",
 	"All Users": "Todos os Usuários",
 	"Allow": "Permitir",
 	"Allow Chat Deletion": "Permitir Exclusão de Bate-papo",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "Bate-papos arquivados",
 	"are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Áudio",
+	"August": "",
 	"Auto-playback response": "Reprodução automática da resposta",
 	"Auto-send input after 3 sec.": "Enviar entrada automaticamente após 3 segundos.",
 	"AUTOMATIC1111 Base URL": "URL Base do AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Banco de dados",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Padrão",
 	"Default (Automatic1111)": "Padrão (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Não tem uma conta?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Baixar Banco de Dados",
 	"Drop any files here to add to the conversation": "Solte os arquivos aqui para adicionar à conversa",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "por exemplo, '30s', '10m'. Unidades de tempo válidas são 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Digite a Sobreposição de Fragmento",
 	"Enter Chunk Size": "Digite o Tamanho do Fragmento",
 	"Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Digite a URL Base da API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Digite a Chave da API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Digite o RPM da API LiteLLM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exportar Prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Modo de Arquivo",
 	"File not found.": "Arquivo não encontrado.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Olá, {{name}}",
+	"Help": "",
 	"Hide": "Ocultar",
 	"Hide Additional Params": "Ocultar Parâmetros Adicionais",
 	"How can I help you today?": "Como posso ajudá-lo hoje?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Interface",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Expiração JWT",
 	"JWT Token": "Token JWT",
 	"Keep Alive": "Manter Vivo",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Gerenciar Modelos LiteLLM",
 	"Manage Models": "Gerenciar Modelos",
 	"Manage Ollama Models": "Gerenciar Modelos Ollama",
+	"March": "",
 	"Max Tokens": "Máximo de Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Tente novamente mais tarde.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Não tem certeza do que escrever? Mude para",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notificações da Área de Trabalho",
+	"November": "",
+	"October": "",
 	"Off": "Desligado",
 	"Okay, Let's Go!": "Ok, Vamos Lá!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Parque infantil",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Conteúdo do Prompt",
 	"Prompt suggestions": "Sugestões de Prompt",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Redefinir Armazenamento de Vetor",
 	"Response AutoCopy to Clipboard": "Cópia Automática da Resposta para a Área de Transferência",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Função",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Enviar uma Mensagem",
 	"Send message": "Enviar mensagem",
+	"September": "",
 	"Server connection verified": "Conexão com o servidor verificada",
 	"Set as default": "Definir como padrão",
 	"Set Default Model": "Definir Modelo Padrão",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Definir Tamanho da Imagem",
+	"Set Model": "Definir Modelo",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Definir Etapas",
 	"Set Title Auto-Generation Model": "Definir Modelo de Geração Automática de Título",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Sucesso",
 	"Successfully updated.": "Atualizado com sucesso.",
+	"Suggested": "",
 	"Sync All": "Sincronizar Tudo",
 	"System": "Sistema",
 	"System Prompt": "Prompt do Sistema",
@@ -417,11 +438,13 @@
 	"Title": "Título",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Geração Automática de Título",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt de Geração de Título",
 	"to": "para",
 	"To access the available model names for downloading,": "Para acessar os nomes de modelo disponíveis para download,",
 	"To access the GGUF models available for downloading,": "Para acessar os modelos GGUF disponíveis para download,",
 	"to chat input.": "para a entrada de bate-papo.",
+	"Today": "",
 	"Toggle settings": "Alternar configurações",
 	"Toggle sidebar": "Alternar barra lateral",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Versão",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Complementos WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Escreva uma sugestão de prompt (por exemplo, Quem é você?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Escreva um resumo em 50 palavras que resuma [tópico ou palavra-chave].",
+	"Yesterday": "",
 	"You": "Você",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Você é um assistente útil.",
 	"You're now logged in.": "Você está conectado agora.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/ru-RU/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Настройки админ",
 	"Advanced Parameters": "Расширенные Параметры",
 	"all": "всё",
+	"All Documents": "",
 	"All Users": "Все пользователи",
 	"Allow": "Разрешить",
 	"Allow Chat Deletion": "Дозволять удаление чат",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "запис на чат",
 	"are allowed - Activate this command by typing": "разрешено - активируйте эту команду вводом",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Аудио",
+	"August": "",
 	"Auto-playback response": "Автоматическое воспроизведение ответа",
 	"Auto-send input after 3 sec.": "Автоматическая отправка ввода через 3 секунды.",
 	"AUTOMATIC1111 Base URL": "Базовый адрес URL AUTOMATIC1111",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "База данных",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "По умолчанию",
 	"Default (Automatic1111)": "По умолчанию (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "у вас не есть аккаунт?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Загрузить базу данных",
 	"Drop any files here to add to the conversation": "Перетащите сюда файлы, чтобы добавить их в разговор",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "например, '30с','10м'. Допустимые единицы времени: 'с', 'м', 'ч'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Введите перекрытие фрагмента",
 	"Enter Chunk Size": "Введите размер фрагмента",
 	"Enter Image Size (e.g. 512x512)": "Введите размер изображения (например, 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Введите базовый URL API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Введите ключ API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Введите RPM API LiteLLM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Экспортировать промты",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Режим файла",
 	"File not found.": "Файл не найден.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Привет, {{name}}",
+	"Help": "",
 	"Hide": "Скрыть",
 	"Hide Additional Params": "Скрыть дополнительные параметры",
 	"How can I help you today?": "Чем я могу помочь вам сегодня?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Интерфейс",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "присоединяйтесь к нашему Discord для помощи.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "Истечение срока JWT",
 	"JWT Token": "Токен JWT",
 	"Keep Alive": "Поддерживать активность",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Управление моделями LiteLLM",
 	"Manage Models": "Управление моделями",
 	"Manage Ollama Models": "Управление моделями Ollama",
+	"March": "",
 	"Max Tokens": "Максимальное количество токенов",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимальное количество моделей для загрузки одновременно - 3. Пожалуйста, попробуйте позже.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Не уверены, что написать? Переключитесь на",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Уведомления на рабочем столе",
+	"November": "",
+	"October": "",
 	"Off": "Выключено.",
 	"Okay, Let's Go!": "Давайте начнём!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Площадка",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Содержание промпта",
 	"Prompt suggestions": "Предложения промптов",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Сбросить векторное хранилище",
 	"Response AutoCopy to Clipboard": "Автоматическое копирование ответа в буфер обмена",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Роль",
 	"Rosé Pine": "Розовое сосновое дерево",
 	"Rosé Pine Dawn": "Розовое сосновое дерево рассвет",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Отправить сообщение",
 	"Send message": "Отправить сообщение",
+	"September": "",
 	"Server connection verified": "Соединение с сервером проверено",
 	"Set as default": "Установить по умолчанию",
 	"Set Default Model": "Установить модель по умолчанию",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Установить размер изображения",
+	"Set Model": "Установить модель",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Установить шаги",
 	"Set Title Auto-Generation Model": "Установить модель автогенерации заголовков",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Успех",
 	"Successfully updated.": "Успешно обновлено.",
+	"Suggested": "",
 	"Sync All": "Синхронизировать все",
 	"System": "Система",
 	"System Prompt": "Системный промпт",
@@ -417,11 +438,13 @@
 	"Title": "Заголовок",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Автогенерация заголовка",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Промпт для генерации заголовка",
 	"to": "в",
 	"To access the available model names for downloading,": "Чтобы получить доступ к доступным для загрузки именам моделей,",
 	"To access the GGUF models available for downloading,": "Чтобы получить доступ к моделям GGUF, доступным для загрузки,",
 	"to chat input.": "в чате.",
+	"Today": "",
 	"Toggle settings": "Переключить настройки",
 	"Toggle sidebar": "Переключить боковую панель",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Версия",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Веб",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Дополнения для WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Шепот (локальный)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Напишите предложение промпта (например, Кто вы?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Напишите резюме в 50 словах, которое кратко описывает [тему или ключевое слово].",
+	"Yesterday": "",
 	"You": "Вы",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Вы полезный ассистент.",
 	"You're now logged in.": "Вы вошли в систему.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/sv-SE/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Administratörsinställningar",
 	"Advanced Parameters": "Avancerade parametrar",
 	"all": "alla",
+	"All Documents": "",
 	"All Users": "Alla användare",
 	"Allow": "Tillåt",
 	"Allow Chat Deletion": "Tillåt chattborttagning",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "är tillåtna - Aktivera detta kommando genom att skriva",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "Ljud",
+	"August": "",
 	"Auto-playback response": "Automatisk uppspelning",
 	"Auto-send input after 3 sec.": "Skicka automatiskt indata efter 3 sek.",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 bas-URL",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Databas",
 	"DD/MM/YYYY HH:mm": "DD/MM/ÅÅÅÅ TT:mm",
+	"December": "",
 	"Default": "Standard",
 	"Default (Automatic1111)": "Standard (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Har du inte ett konto?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Ladda ner databas",
 	"Drop any files here to add to the conversation": "Släpp filer här för att lägga till i konversationen",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "t.ex. '30s', '10m'. Giltiga tidsenheter är 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Ange Chunk-överlappning",
 	"Enter Chunk Size": "Ange Chunk-storlek",
 	"Enter Image Size (e.g. 512x512)": "Ange bildstorlek (t.ex. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Ange LiteLLM API-bas-URL (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Ange LiteLLM API-nyckel (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Ange LiteLLM API RPM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Exportera prompts",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Misslyckades med att läsa urklippsinnehåll",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "Fil-läge",
 	"File not found.": "Fil hittades inte.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Hej, {{name}}",
+	"Help": "",
 	"Hide": "Dölj",
 	"Hide Additional Params": "Dölj ytterligare parametrar",
 	"How can I help you today?": "Hur kan jag hjälpa dig idag?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Inkludera `--api`-flagga när du kör stabil-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Gränssnitt",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "gå med i vår Discord för hjälp.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT-utgång",
 	"JWT Token": "JWT-token",
 	"Keep Alive": "Håll vid liv",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Hantera LiteLLM-modeller",
 	"Manage Models": "Hantera modeller",
 	"Manage Ollama Models": "Hantera Ollama-modeller",
+	"March": "",
 	"Max Tokens": "Max antal tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Högst 3 modeller kan laddas ner samtidigt. Vänligen försök igen senare.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Inte säker på vad du ska skriva? Växla till",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Notifikationer",
+	"November": "",
+	"October": "",
 	"Off": "Av",
 	"Okay, Let's Go!": "Okej, nu kör vi!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Lekplats",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Promptinnehåll",
 	"Prompt suggestions": "Förslag",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Återställ vektorlager",
 	"Response AutoCopy to Clipboard": "Svara AutoCopy till urklipp",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Roll",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Skicka ett meddelande",
 	"Send message": "Skicka meddelande",
+	"September": "",
 	"Server connection verified": "Serveranslutning verifierad",
 	"Set as default": "Ange som standard",
 	"Set Default Model": "Ange standardmodell",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Ange bildstorlek",
+	"Set Model": "Ställ in modell",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Ange steg",
 	"Set Title Auto-Generation Model": "Ange modell för automatisk generering av titel",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Framgång",
 	"Successfully updated.": "Uppdaterades framgångsrikt.",
+	"Suggested": "",
 	"Sync All": "Synkronisera allt",
 	"System": "System",
 	"System Prompt": "Systemprompt",
@@ -417,11 +438,13 @@
 	"Title": "Titel",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Automatisk generering av titel",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Titelgenereringsprompt",
 	"to": "till",
 	"To access the available model names for downloading,": "För att komma åt de tillgängliga modellnamnen för nedladdning,",
 	"To access the GGUF models available for downloading,": "För att komma åt de GGUF-modeller som finns tillgängliga för nedladdning,",
 	"to chat input.": "till chattinmatning.",
+	"Today": "",
 	"Toggle settings": "Växla inställningar",
 	"Toggle sidebar": "Växla sidofält",
 	"Top K": "Topp K",
@@ -450,6 +473,7 @@
 	"Version": "Version",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Webb",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI-tillägg",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (lokal)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Skriv ett förslag (t.ex. Vem är du?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Skriv en sammanfattning på 50 ord som sammanfattar [ämne eller nyckelord].",
+	"Yesterday": "",
 	"You": "Du",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Du är en hjälpsam assistent.",
 	"You're now logged in.": "Du är nu inloggad.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 28 - 2
src/lib/i18n/locales/tr-TR/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Yönetici Ayarları",
 	"Advanced Parameters": "Gelişmiş Parametreler",
 	"all": "tümü",
+	"All Documents": "",
 	"All Users": "Tüm Kullanıcılar",
 	"Allow": "İzin ver",
 	"Allow Chat Deletion": "Sohbet Silmeye İzin Ver",
@@ -41,6 +42,7 @@
 	"API Key created.": "API Anahtarı oluşturuldu.",
 	"API keys": "API anahtarları",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "Arşiv",
 	"Archived Chats": "Arşivlenmiş Sohbetler",
 	"are allowed - Activate this command by typing": "izin verilir - Bu komutu yazarak etkinleştirin",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "Ayrıntılara dikkat",
 	"Audio": "Ses",
+	"August": "",
 	"Auto-playback response": "Yanıtı otomatik oynatma",
 	"Auto-send input after 3 sec.": "3 saniye sonra otomatik olarak gönder",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Temel URL",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Veritabanı",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Varsayılan",
 	"Default (Automatic1111)": "Varsayılan (Automatic1111)",
 	"Default (SentenceTransformers)": "Varsayılan (SentenceTransformers)",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Hesabınız yok mu?",
 	"Don't like the style": "Tarzını beğenmedim",
 	"Download": "İndir",
+	"Download canceled": "",
 	"Download Database": "Veritabanını İndir",
 	"Drop any files here to add to the conversation": "Sohbete eklemek istediğiniz dosyaları buraya bırakın",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "örn. '30s', '10m'. Geçerli zaman birimleri 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Chunk Örtüşmesini Girin",
 	"Enter Chunk Size": "Chunk Boyutunu Girin",
 	"Enter Image Size (e.g. 512x512)": "Görüntü Boyutunu Girin (örn. 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM API Ana URL'sini Girin (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "LiteLLM API Anahtarını Girin (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM API RPM'ini Girin (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Promptları Dışa Aktar",
 	"Failed to create API Key.": "API Anahtarı oluşturulamadı.",
 	"Failed to read clipboard contents": "Pano içeriği okunamadı",
+	"February": "",
 	"Feel free to add specific details": "Spesifik ayrıntılar eklemekten çekinmeyin",
 	"File Mode": "Dosya Modu",
 	"File not found.": "Dosya bulunamadı.",
@@ -206,6 +213,7 @@
 	"Good Response": "İyi Yanıt",
 	"has no conversations.": "hiç konuşması yok.",
 	"Hello, {{name}}": "Merhaba, {{name}}",
+	"Help": "",
 	"Hide": "Gizle",
 	"Hide Additional Params": "Ek Parametreleri Gizle",
 	"How can I help you today?": "Bugün size nasıl yardımcı olabilirim?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui çalıştırılırken `--api` bayrağını dahil edin",
 	"Input commands": "",
 	"Interface": "Arayüz",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "yardım için Discord'umuza katılın.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT Bitişi",
 	"JWT Token": "JWT Token",
 	"Keep Alive": "Canlı Tut",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "LiteLLM Modellerini Yönet",
 	"Manage Models": "Modelleri Yönet",
 	"Manage Ollama Models": "Ollama Modellerini Yönet",
+	"March": "",
 	"Max Tokens": "Maksimum Token",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Aynı anda en fazla 3 model indirilebilir. Lütfen daha sonra tekrar deneyin.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "Minimum Skor",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Ne yazacağınızdan emin değil misiniz? Şuraya geçin",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Not: Minimum bir skor belirlerseniz, arama yalnızca minimum skora eşit veya daha yüksek bir skora sahip belgeleri getirecektir.",
 	"Notifications": "Bildirimler",
+	"November": "",
+	"October": "",
 	"Off": "Kapalı",
 	"Okay, Let's Go!": "Tamam, Hadi Başlayalım!",
 	"OLED Dark": "OLED Koyu",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "Düz metin (.txt)",
 	"Playground": "Oyun Alanı",
 	"Positive attitude": "Olumlu yaklaşım",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "Profil Fotoğrafı",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (örn. Roma İmparatorluğu hakkında ilginç bir bilgi verin)",
 	"Prompt Content": "Prompt İçeriği",
 	"Prompt suggestions": "Prompt önerileri",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "Yeniden sıralama modeli \"{{reranking_model}}\" olarak ayarlandı",
 	"Reset Vector Storage": "Vektör Depolamayı Sıfırla",
 	"Response AutoCopy to Clipboard": "Yanıtı Panoya Otomatik Kopyala",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Rol",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Bir Mesaj Gönder",
 	"Send message": "Mesaj gönder",
+	"September": "",
 	"Server connection verified": "Sunucu bağlantısı doğrulandı",
 	"Set as default": "Varsayılan olarak ayarla",
 	"Set Default Model": "Varsayılan Modeli Ayarla",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Görüntü Boyutunu Ayarla",
+	"Set Model": "Model Ayarla",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Adımları Ayarla",
 	"Set Title Auto-Generation Model": "Otomatik Başlık Oluşturma Modelini Ayarla",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "Alt başlık (örn. Roma İmparatorluğu hakkında)",
 	"Success": "Başarılı",
 	"Successfully updated.": "Başarıyla güncellendi.",
+	"Suggested": "",
 	"Sync All": "Tümünü Senkronize Et",
 	"System": "Sistem",
 	"System Prompt": "Sistem Promptu",
@@ -417,11 +438,13 @@
 	"Title": "Başlık",
 	"Title (e.g. Tell me a fun fact)": "Başlık (e.g. Bana ilginç bir bilgi ver)",
 	"Title Auto-Generation": "Otomatik Başlık Oluşturma",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Başlık Oluşturma Promptu",
 	"to": "için",
 	"To access the available model names for downloading,": "İndirilebilir mevcut model adlarına erişmek için,",
 	"To access the GGUF models available for downloading,": "İndirilebilir mevcut GGUF modellerine erişmek için,",
 	"to chat input.": "sohbet girişine.",
+	"Today": "",
 	"Toggle settings": "Ayarları Aç/Kapat",
 	"Toggle sidebar": "Kenar Çubuğunu Aç/Kapat",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Sürüm",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Uyarı: Gömme modelinizi günceller veya değiştirirseniz, tüm belgeleri yeniden içe aktarmanız gerekecektir.",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "Webhook URL",
 	"WebUI Add-ons": "WebUI Eklentileri",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Yerel)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Bir prompt önerisi yazın (örn. Sen kimsin?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "[Konuyu veya anahtar kelimeyi] özetleyen 50 kelimelik bir özet yazın.",
+	"Yesterday": "",
 	"You": "Siz",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Sen yardımcı bir asistansın.",
 	"You're now logged in.": "Şimdi oturum açtınız.",
-	"Youtube": "Youtube"
+	"Youtube": "Youtube",
+	"Youtube Loader Settings": ""
 }

+ 152 - 126
src/lib/i18n/locales/uk-UA/translation.json

@@ -4,30 +4,31 @@
 	"(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)",
 	"(latest)": "(остання)",
 	"{{modelName}} is thinking...": "{{modelName}} думає...",
-	"{{user}}'s Chats": "",
-	"{{webUIName}} Backend Required": "Необхідний бекенд {{webUIName}}",
+	"{{user}}'s Chats": "Чати {{user}}а",
+	"{{webUIName}} Backend Required": "Необхідно підключення бекенду {{webUIName}}",
 	"a user": "користувача",
 	"About": "Про програму",
 	"Account": "Обліковий запис",
-	"Accurate information": "",
+	"Accurate information": "Точна інформація",
 	"Add a model": "Додати модель",
 	"Add a model tag name": "Додати ім'я тегу моделі",
 	"Add a short description about what this modelfile does": "Додати короткий опис того, що робить цей файл моделі",
 	"Add a short title for this prompt": "Додати коротку назву для цього промту",
 	"Add a tag": "Додайте тег",
-	"Add custom prompt": "",
+	"Add custom prompt": "Додати користувацьку підказку",
 	"Add Docs": "Додати документи",
 	"Add Files": "Додати файли",
 	"Add message": "Додати повідомлення",
-	"Add Model": "",
+	"Add Model": "Додати модель",
 	"Add Tags": "додати теги",
-	"Add User": "",
+	"Add User": "Додати користувача",
 	"Adjusting these settings will apply changes universally to all users.": "Зміни в цих налаштуваннях будуть застосовані для всіх користувачів.",
 	"admin": "адмін",
 	"Admin Panel": "Панель адміністратора",
 	"Admin Settings": "Налаштування адміністратора",
 	"Advanced Parameters": "Розширені параметри",
 	"all": "всі",
+	"All Documents": "Усі документи",
 	"All Users": "Всі користувачі",
 	"Allow": "Дозволити",
 	"Allow Chat Deletion": "Дозволити видалення чату",
@@ -35,30 +36,32 @@
 	"Already have an account?": "Вже є обліковий запис?",
 	"an assistant": "асистента",
 	"and": "та",
-	"and create a new shared link.": "",
-	"API Base URL": "Базова адреса URL API",
+	"and create a new shared link.": "і створіть нове спільне посилання.",
+	"API Base URL": "URL-адреса API",
 	"API Key": "Ключ API",
-	"API Key created.": "",
-	"API keys": "",
+	"API Key created.": "Ключ API створено.",
+	"API keys": "Ключі API",
 	"API RPM": "API RPM",
-	"Archive": "",
-	"Archived Chats": "запис чату",
+	"April": "Квітень",
+	"Archive": "Архів",
+	"Archived Chats": "Архівовані чати",
 	"are allowed - Activate this command by typing": "дозволено - активізуйте цю команду набором",
 	"Are you sure?": "Ви впевнені?",
-	"Attach file": "",
-	"Attention to detail": "",
+	"Attach file": "Прикріпити файл",
+	"Attention to detail": "Увага до деталей",
 	"Audio": "Аудіо",
+	"August": "Серпень",
 	"Auto-playback response": "Автоматичне відтворення відповіді",
-	"Auto-send input after 3 sec.": "Автоматична відправка вводу через 3 сек.",
-	"AUTOMATIC1111 Base URL": "Базова адреса URL AUTOMATIC1111",
-	"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Необхідна URL-адреса.",
+	"Auto-send input after 3 sec.": "Автоматична відправка через 3 сек.",
+	"AUTOMATIC1111 Base URL": "URL-адреса AUTOMATIC1111",
+	"AUTOMATIC1111 Base URL is required.": "Необхідна URL-адреса AUTOMATIC1111.",
 	"available!": "доступно!",
 	"Back": "Назад",
-	"Bad Response": "",
-	"before": "",
-	"Being lazy": "",
+	"Bad Response": "Неправильна відповідь",
+	"before": "до того, як",
+	"Being lazy": "Не поспішати",
 	"Builder Mode": "Режим конструктора",
-	"Bypass SSL verification for Websites": "",
+	"Bypass SSL verification for Websites": "Обхід SSL-перевірки для веб-сайтів",
 	"Cancel": "Скасувати",
 	"Categories": "Категорії",
 	"Change Password": "Змінити пароль",
@@ -73,67 +76,68 @@
 	"Chunk Overlap": "Перекриття фрагментів",
 	"Chunk Params": "Параметри фрагментів",
 	"Chunk Size": "Розмір фрагменту",
-	"Citation": "",
+	"Citation": "Цитування",
 	"Click here for help.": "Клацніть тут, щоб отримати допомогу.",
-	"Click here to": "",
+	"Click here to": "Натисніть тут, щоб",
 	"Click here to check other modelfiles.": "Клацніть тут, щоб перевірити інші файли моделей.",
 	"Click here to select": "Натисніть тут, щоб вибрати",
-	"Click here to select a csv file.": "",
+	"Click here to select a csv file.": "Натисніть тут, щоб вибрати csv-файл.",
 	"Click here to select documents.": "Натисніть тут, щоб вибрати документи.",
 	"click here.": "клацніть тут.",
 	"Click on the user role button to change a user's role.": "Натисніть кнопку ролі користувача, щоб змінити роль користувача.",
 	"Close": "Закрити",
 	"Collection": "Колекція",
-	"ComfyUI": "",
-	"ComfyUI Base URL": "",
-	"ComfyUI Base URL is required.": "",
+	"ComfyUI": "ComfyUI",
+	"ComfyUI Base URL": "URL-адреса ComfyUI",
+	"ComfyUI Base URL is required.": "Необхідно вказати URL-адресу ComfyUI.",
 	"Command": "Команда",
 	"Confirm Password": "Підтвердіть пароль",
 	"Connections": "З'єднання",
 	"Content": "Зміст",
 	"Context Length": "Довжина контексту",
-	"Continue Response": "",
+	"Continue Response": "Продовжити відповідь",
 	"Conversation Mode": "Режим розмови",
-	"Copied shared chat URL to clipboard!": "",
-	"Copy": "",
+	"Copied shared chat URL to clipboard!": "Скопійовано URL-адресу спільного чату в буфер обміну!",
+	"Copy": "Копіювати",
 	"Copy last code block": "Копіювати останній блок коду",
 	"Copy last response": "Копіювати останню відповідь",
-	"Copy Link": "",
+	"Copy Link": "Копіювати посилання",
 	"Copying to clipboard was successful!": "Копіювання в буфер обміну виконано успішно!",
 	"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 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 a modelfile": "Створити файл моделі",
 	"Create Account": "Створити обліковий запис",
-	"Create new key": "",
-	"Create new secret key": "",
-	"Created at": "Створено",
-	"Created At": "",
+	"Create new key": "Створити новий ключ",
+	"Create new secret key": "Створити новий секретний ключ",
+	"Created at": "Створено у",
+	"Created At": "Створено у",
 	"Current Model": "Поточна модель",
 	"Current Password": "Поточний пароль",
 	"Custom": "Налаштувати",
 	"Customize Ollama models for a specific purpose": "Налаштувати моделі Ollama для конкретної мети",
 	"Dark": "Темна",
-	"Dashboard": "",
+	"Dashboard": "Панель управління",
 	"Database": "База даних",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "Грудень",
 	"Default": "За замовчуванням",
 	"Default (Automatic1111)": "За замовчуванням (Automatic1111)",
-	"Default (SentenceTransformers)": "",
+	"Default (SentenceTransformers)": "За замовчуванням (SentenceTransformers)",
 	"Default (Web API)": "За замовчуванням (Web API)",
 	"Default model updated": "Модель за замовчуванням оновлено",
 	"Default Prompt Suggestions": "Пропозиції промтів замовчуванням",
 	"Default User Role": "Роль користувача за замовчуванням",
 	"delete": "видалити",
-	"Delete": "",
+	"Delete": "Видалити",
 	"Delete a model": "Видалити модель",
 	"Delete chat": "Видалити чат",
-	"Delete Chat": "",
+	"Delete Chat": "Видалити чат",
 	"Delete Chats": "Видалити чати",
-	"delete this link": "",
-	"Delete User": "",
+	"delete this link": "видалити це посилання",
+	"Delete User": "Видалити користувача",
 	"Deleted {{deleteModelTag}}": "Видалено {{deleteModelTag}}",
-	"Deleted {{tagName}}": "",
+	"Deleted {{tagName}}": "Видалено {{tagName}}",
 	"Description": "Опис",
-	"Didn't fully follow instructions": "",
+	"Didn't fully follow instructions": "Не повністю дотримувалися інструкцій",
 	"Disabled": "Вимкнено",
 	"Discover a modelfile": "Знайти файл моделі",
 	"Discover a prompt": "Знайти промт",
@@ -146,70 +150,74 @@
 	"does not make any external connections, and your data stays securely on your locally hosted server.": "не встановлює жодних зовнішніх з'єднань, і ваші дані залишаються в безпеці на вашому локальному сервері.",
 	"Don't Allow": "Не дозволяти",
 	"Don't have an account?": "Немає облікового запису?",
-	"Don't like the style": "",
-	"Download": "",
+	"Don't like the style": "Не подобається стиль",
+	"Download": "Завантажити",
+	"Download canceled": "Завантаження скасовано",
 	"Download Database": "Завантажити базу даних",
 	"Drop any files here to add to the conversation": "Перетягніть сюди файли, щоб додати до розмови",
-	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр. '30s','10m'. Дійсні одиниці часу: 'с', 'хв', 'г'.",
-	"Edit": "",
+	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "напр., '30s','10m'. Дійсні одиниці часу: 'с', 'хв', 'г'.",
+	"Edit": "Редагувати",
 	"Edit Doc": "Редагувати документ",
 	"Edit User": "Редагувати користувача",
 	"Email": "Електронна пошта",
-	"Embedding Model": "",
-	"Embedding Model Engine": "",
-	"Embedding model set to \"{{embedding_model}}\"": "",
+	"Embedding Model": "Модель вбудовування",
+	"Embedding Model Engine": "Двигун модели встраивания ",
+	"Embedding model set to \"{{embedding_model}}\"": "Встановлена модель вбудовування \"{{embedding_model}}\"",
 	"Enable Chat History": "Увімкнути історію чату",
 	"Enable New Sign Ups": "Дозволити нові реєстрації",
 	"Enabled": "Увімкнено",
-	"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "",
+	"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Переконайтеся, що ваш CSV-файл містить 4 колонки в такому порядку: Ім'я, Email, Пароль, Роль.",
 	"Enter {{role}} message here": "Введіть повідомлення {{role}} тут",
 	"Enter Chunk Overlap": "Введіть перекриття фрагменту",
 	"Enter Chunk Size": "Введіть розмір фрагменту",
-	"Enter Image Size (e.g. 512x512)": "Введіть розмір зображення (напр. 512x512)",
+	"Enter Image Size (e.g. 512x512)": "Введіть розмір зображення (напр., 512x512)",
+	"Enter language codes": "Введіть мовні коди",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Введіть URL-адресу API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Введіть ключ API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Введіть RPM API LiteLLM (litellm_params.rpm)",
 	"Enter LiteLLM Model (litellm_params.model)": "Введіть модель LiteLLM (litellm_params.model)",
 	"Enter Max Tokens (litellm_params.max_tokens)": "Введіть максимальну кількість токенів (litellm_params.max_tokens)",
-	"Enter model tag (e.g. {{modelTag}})": "Введіть тег моделі (напр. {{modelTag}})",
-	"Enter Number of Steps (e.g. 50)": "Введіть кількість кроків (напр. 50)",
-	"Enter Score": "",
+	"Enter model tag (e.g. {{modelTag}})": "Введіть тег моделі (напр., {{modelTag}})",
+	"Enter Number of Steps (e.g. 50)": "Введіть кількість кроків (напр., 50)",
+	"Enter Score": "Введіть бал",
 	"Enter stop sequence": "Введіть символ зупинки",
 	"Enter Top K": "Введіть Top K",
-	"Enter URL (e.g. http://127.0.0.1:7860/)": "Введіть URL-адресу (напр. http://127.0.0.1:7860/)",
-	"Enter URL (e.g. http://localhost:11434)": "",
+	"Enter URL (e.g. http://127.0.0.1:7860/)": "Введіть URL-адресу (напр., http://127.0.0.1:7860/)",
+	"Enter URL (e.g. http://localhost:11434)": "Введіть URL-адресу (напр., http://localhost:11434)",
 	"Enter Your Email": "Введіть вашу електронну пошту",
 	"Enter Your Full Name": "Введіть ваше ім'я",
 	"Enter Your Password": "Введіть ваш пароль",
-	"Enter Your Role": "",
+	"Enter Your Role": "Введіть вашу роль",
 	"Experimental": "Експериментальне",
 	"Export All Chats (All Users)": "Експортувати всі чати (всі користувачі)",
 	"Export Chats": "Експортувати чати",
 	"Export Documents Mapping": "Експортувати відображення документів",
 	"Export Modelfiles": "Експортувати файл моделі",
 	"Export Prompts": "Експортувати промти",
-	"Failed to create API Key.": "",
+	"Failed to create API Key.": "Не вдалося створити API ключ.",
 	"Failed to read clipboard contents": "Не вдалося прочитати вміст буфера обміну",
-	"Feel free to add specific details": "",
+	"February": "Лютий",
+	"Feel free to add specific details": "Не соромтеся додавати конкретні деталі",
 	"File Mode": "Файловий режим",
 	"File not found.": "Файл не знайдено.",
-	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "",
+	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Виявлено підробку відбитків: Неможливо використовувати ініціали як аватар. Повернення до зображення профілю за замовчуванням.",
 	"Fluidly stream large external response chunks": "Плавно передавати великі фрагменти зовнішніх відповідей",
 	"Focus chat input": "Фокус вводу чату",
-	"Followed instructions perfectly": "",
+	"Followed instructions perfectly": "Бездоганно дотримувався інструкцій",
 	"Format your variables using square brackets like this:": "Форматуйте свої змінні квадратними дужками так:",
 	"From (Base Model)": "Від (базова модель)",
 	"Full Screen Mode": "Режим повного екрану",
 	"General": "Загальні",
 	"General Settings": "Загальні налаштування",
-	"Generation Info": "",
-	"Good Response": "",
-	"has no conversations.": "",
+	"Generation Info": "Інформація про генерацію",
+	"Good Response": "Гарна відповідь",
+	"has no conversations.": "не має розмов.",
 	"Hello, {{name}}": "Привіт, {{name}}",
+	"Help": "Допоможіть",
 	"Hide": "Приховати",
 	"Hide Additional Params": "Приховати додаткові параметри",
 	"How can I help you today?": "Чим я можу допомогти вам сьогодні?",
-	"Hybrid Search": "",
+	"Hybrid Search": "Гібридний пошук",
 	"Image Generation (Experimental)": "Генерування зображень (експериментально)",
 	"Image Generation Engine": "Механізм генерації зображень",
 	"Image Settings": "Налаштування зображення",
@@ -219,16 +227,20 @@
 	"Import Modelfiles": "Імпортувати файл моделі",
 	"Import Prompts": "Імпортувати промти",
 	"Include `--api` flag when running stable-diffusion-webui": "Включіть прапор `--api` при запуску stable-diffusion-webui",
-	"Input commands": "",
+	"Input commands": "Команди вводу",
 	"Interface": "Інтерфейс",
+	"Invalid Tag": "Недійсний тег",
+	"January": "Січень",
 	"join our Discord for help.": "приєднуйтеся до нашого Discord для допомоги.",
 	"JSON": "JSON",
+	"July": "Липень",
+	"June": "Червень",
 	"JWT Expiration": "Термін дії JWT",
 	"JWT Token": "Токен JWT",
 	"Keep Alive": "Зберегти активність",
 	"Keyboard shortcuts": "Клавіатурні скорочення",
 	"Language": "Мова",
-	"Last Active": "",
+	"Last Active": "Остання активність",
 	"Light": "Світла",
 	"Listening...": "Слухаю...",
 	"LLMs can make mistakes. Verify important information.": "LLMs можуть помилятися. Перевірте важливу інформацію.",
@@ -237,20 +249,22 @@
 	"Manage LiteLLM Models": "Керування моделями LiteLLM",
 	"Manage Models": "Керування моделями",
 	"Manage Ollama Models": "Керування моделями Ollama",
+	"March": "Березень",
 	"Max Tokens": "Максимальна кількість токенів",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 моделі можна завантажити одночасно. Будь ласка, спробуйте пізніше.",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
-	"Minimum Score": "",
+	"May": "Травень",
+	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "Повідомлення, які ви надсилаєте після створення посилання, не будуть опубліковані. Користувачі з URL-адресою зможуть переглядати спільний чат.",
+	"Minimum Score": "Мінімальний бал",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",
 	"Mirostat Tau": "Mirostat Tau",
 	"MMMM DD, YYYY": "MMMM DD, YYYY",
-	"MMMM DD, YYYY HH:mm": "",
+	"MMMM DD, YYYY HH:mm": "MMMM DD, YYYY HH:mm",
 	"Model '{{modelName}}' has been successfully downloaded.": "Модель '{{modelName}}' успішно завантажено.",
 	"Model '{{modelTag}}' is already in queue for downloading.": "Модель '{{modelTag}}' вже знаходиться в черзі на завантаження.",
 	"Model {{modelId}} not found": "Модель {{modelId}} не знайдено",
 	"Model {{modelName}} already exists.": "Модель {{modelName}} вже існує.",
-	"Model filesystem path detected. Model shortname is required for update, cannot continue.": "",
+	"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Виявлено шлях до файлової системи моделі. Для оновлення потрібно вказати коротке ім'я моделі, не вдасться продовжити.",
 	"Model Name": "Назва моделі",
 	"Model not selected": "Модель не вибрана",
 	"Model Tag Name": "Ім'я тегу моделі",
@@ -261,7 +275,7 @@
 	"Modelfile Content": "Вміст файлу моделі",
 	"Modelfiles": "Файли моделей",
 	"Models": "Моделі",
-	"More": "",
+	"More": "Більше",
 	"My Documents": "Мої документи",
 	"My Modelfiles": "Мої файли моделей",
 	"My Prompts": "Мої промти",
@@ -270,18 +284,20 @@
 	"Name your modelfile": "Назвіть свій файл моделі",
 	"New Chat": "Новий чат",
 	"New Password": "Новий пароль",
-	"No results found": "",
-	"No source available": "",
-	"Not factually correct": "",
+	"No results found": "Не знайдено жодного результату",
+	"No source available": "Джерело не доступне",
+	"Not factually correct": "Не відповідає дійсності",
 	"Not sure what to add?": "Не впевнений, що додати?",
 	"Not sure what to write? Switch to": "Не впевнений, що писати? Переключитися на",
-	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
+	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Примітка: Якщо ви встановите мінімальну кількість балів, пошук поверне лише документи з кількістю балів, більшою або рівною мінімальній кількості балів.",
 	"Notifications": "Сповіщення",
+	"November": "Листопад",
+	"October": "Жовтень",
 	"Off": "Вимк",
 	"Okay, Let's Go!": "Гаразд, давайте почнемо!",
-	"OLED Dark": "",
-	"Ollama": "",
-	"Ollama Base URL": "Основна URL-адреса Ollama",
+	"OLED Dark": "Темний OLED",
+	"Ollama": "Ollama",
+	"Ollama Base URL": "URL-адреса Ollama",
 	"Ollama Version": "Версія Ollama",
 	"On": "Увімк",
 	"Only": "Тільки",
@@ -293,52 +309,54 @@
 	"Open AI": "Open AI",
 	"Open AI (Dall-E)": "Open AI (Dall-E)",
 	"Open new chat": "Відкрити новий чат",
-	"OpenAI": "",
+	"OpenAI": "OpenAI",
 	"OpenAI API": "API OpenAI",
-	"OpenAI API Config": "",
+	"OpenAI API Config": "Конфігурація OpenAI API",
 	"OpenAI API Key is required.": "Потрібен ключ OpenAI API.",
-	"OpenAI URL/Key required.": "",
+	"OpenAI URL/Key required.": "Потрібен OpenAI URL/ключ.",
 	"or": "або",
-	"Other": "",
-	"Overview": "",
+	"Other": "Інше",
+	"Overview": "Огляд",
 	"Parameters": "Параметри",
 	"Password": "Пароль",
-	"PDF document (.pdf)": "",
+	"PDF document (.pdf)": "PDF документ (.pdf)",
 	"PDF Extract Images (OCR)": "Розпізнавання зображень з PDF (OCR)",
 	"pending": "на розгляді",
 	"Permission denied when accessing microphone: {{error}}": "Доступ до мікрофона заборонено: {{error}}",
-	"Plain text (.txt)": "",
+	"Plain text (.txt)": "Простий текст (.txt)",
 	"Playground": "Майданчик",
-	"Positive attitude": "",
-	"Profile Image": "",
-	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
+	"Positive attitude": "Позитивне ставлення",
+	"Previous 30 days": "Попередні 30 днів",
+	"Previous 7 days": "Попередні 7 днів",
+	"Profile Image": "Зображення профілю",
+	"Prompt": "Підказка",
+	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Підказка (напр., розкажіть мені цікавий факт про Римську імперію)",
 	"Prompt Content": "Зміст промту",
 	"Prompt suggestions": "Швидкі промти",
 	"Prompts": "Промти",
-	"Pull \"{{searchValue}}\" from Ollama.com": "",
+	"Pull \"{{searchValue}}\" from Ollama.com": "Завантажити \"{{searchValue}}\" з Ollama.com»",
 	"Pull a model from Ollama.com": "Завантажити модель з Ollama.com",
 	"Pull Progress": "Прогрес завантаження",
 	"Query Params": "Параметри запиту",
 	"RAG Template": "Шаблон RAG",
 	"Raw Format": "Необроблений формат",
-	"Read Aloud": "",
+	"Read Aloud": "Читати вголос",
 	"Record voice": "Записати голос",
 	"Redirecting you to OpenWebUI Community": "Перенаправляємо вас до спільноти OpenWebUI",
-	"Refused when it shouldn't have": "",
-	"Regenerate": "",
+	"Refused when it shouldn't have": "Відмовив, коли не мав би",
+	"Regenerate": "Регенерувати",
 	"Release Notes": "Нотатки до випуску",
-	"Remove": "",
-	"Remove Model": "",
-	"Rename": "",
+	"Remove": "Видалити",
+	"Remove Model": "Видалити модель",
+	"Rename": "Перейменувати",
 	"Repeat Last N": "Повторити останні N",
 	"Repeat Penalty": "Штраф за повторення",
 	"Request Mode": "Режим запиту",
-	"Reranking Model": "",
-	"Reranking model disabled": "",
-	"Reranking model set to \"{{reranking_model}}\"": "",
+	"Reranking Model": "Модель переранжування",
+	"Reranking model disabled": "Модель переранжування вимкнена",
+	"Reranking model set to \"{{reranking_model}}\"": "Модель переранжування встановлено на \"{{reranking_model}}\"",
 	"Reset Vector Storage": "Скинути векторне сховище",
 	"Response AutoCopy to Clipboard": "Автокопіювання відповіді в буфер обміну",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Роль",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -351,7 +369,7 @@
 	"Scan complete!": "Сканування завершено!",
 	"Scan for documents from {{path}}": "Сканування документів з {{path}}",
 	"Search": "Пошук",
-	"Search a model": "",
+	"Search a model": "Шукати модель",
 	"Search Documents": "Пошук документів",
 	"Search Prompts": "Пошук промтів",
 	"See readme.md for instructions": "Див. readme.md для інструкцій",
@@ -360,68 +378,73 @@
 	"Select a mode": "Оберіть режим",
 	"Select a model": "Виберіть модель",
 	"Select an Ollama instance": "Виберіть екземпляр Ollama",
-	"Select model": "",
+	"Select model": "Вибрати модель",
 	"Send a Message": "Надіслати повідомлення",
 	"Send message": "Надіслати повідомлення",
+	"September": "Вересень",
 	"Server connection verified": "З'єднання з сервером підтверджено",
 	"Set as default": "Встановити за замовчуванням",
 	"Set Default Model": "Встановити модель за замовчуванням",
-	"Set embedding model (e.g. {{model}})": "",
+	"Set embedding model (e.g. {{model}})": "Встановити модель вбудовування (напр, {{model}})",
 	"Set Image Size": "Встановити розмір зображення",
-	"Set reranking model (e.g. {{model}})": "",
+	"Set Model": "Встановити модель",
+	"Set reranking model (e.g. {{model}})": "Встановити модель переранжування (напр., {{model}})",
 	"Set Steps": "Встановити кроки",
 	"Set Title Auto-Generation Model": "Встановити модель автогенерації заголовків",
 	"Set Voice": "Встановити голос",
 	"Settings": "Налаштування",
 	"Settings saved successfully!": "Налаштування успішно збережено!",
-	"Share": "",
-	"Share Chat": "",
+	"Share": "Поділитися",
+	"Share Chat": "Поділитися чатом",
 	"Share to OpenWebUI Community": "Поділитися зі спільнотою OpenWebUI",
 	"short-summary": "короткий зміст",
 	"Show": "Показати",
 	"Show Additional Params": "Показати додаткові параметри",
 	"Show shortcuts": "Показати клавіатурні скорочення",
-	"Showcased creativity": "",
+	"Showcased creativity": "Продемонстрований креатив",
 	"sidebar": "бокова панель",
 	"Sign in": "Увійти",
 	"Sign Out": "Вийти",
 	"Sign up": "Зареєструватися",
-	"Signing in": "",
-	"Source": "",
+	"Signing in": "Увійдіть в систему",
+	"Source": "Джерело",
 	"Speech recognition error: {{error}}": "Помилка розпізнавання мови: {{error}}",
 	"Speech-to-Text Engine": "Система розпізнавання мови",
 	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API не підтримується в цьому браузері.",
 	"Stop Sequence": "Символ зупинки",
 	"STT Settings": "Налаштування STT",
 	"Submit": "Надіслати",
-	"Subtitle (e.g. about the Roman Empire)": "",
+	"Subtitle (e.g. about the Roman Empire)": "Підзаголовок (напр., про Римську імперію)",
 	"Success": "Успіх",
 	"Successfully updated.": "Успішно оновлено.",
+	"Suggested": "Запропоновано",
 	"Sync All": "Синхронізувати все",
 	"System": "Система",
 	"System Prompt": "Системний промт",
 	"Tags": "Теги",
-	"Tell us more:": "",
+	"Tell us more:": "Розкажи нам більше:",
 	"Temperature": "Температура",
 	"Template": "Шаблон",
 	"Text Completion": "Завершення тексту",
 	"Text-to-Speech Engine": "Система синтезу мови",
 	"Tfs Z": "Tfs Z",
-	"Thanks for your feedback!": "",
-	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "",
+	"Thanks for your feedback!": "Дякуємо за ваш відгук!",
+	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Оцінка повинна бути в діапазоні від 0.0 (0%) до 1.0 (100%).",
 	"Theme": "Тема",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Це забезпечує збереження ваших цінних розмов у безпечному бекенд-сховищі. Дякуємо!",
 	"This setting does not sync across browsers or devices.": "Це налаштування не синхронізується між браузерами або пристроями.",
-	"Thorough explanation": "",
+	"Thorough explanation": "Детальне пояснення",
 	"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "Порада: Оновіть кілька слотів змінних послідовно, натискаючи клавішу табуляції у вікні чату після кожної заміни.",
 	"Title": "Заголовок",
-	"Title (e.g. Tell me a fun fact)": "",
+	"Title (e.g. Tell me a fun fact)": "Заголовок (напр., Розкажіть мені цікавий факт)",
 	"Title Auto-Generation": "Автогенерація заголовків",
+	"Title cannot be an empty string.": "Заголовок не може бути порожнім рядком.",
 	"Title Generation Prompt": "Промт для генерування заголовків",
 	"to": "в",
 	"To access the available model names for downloading,": "Щоб отримати доступ до назв доступних для завантаження моделей,",
 	"To access the GGUF models available for downloading,": "Щоб отримати доступ до моделей GGUF, які можна завантажити,,",
 	"to chat input.": "в чаті.",
+	"Today": "Сьогодні",
 	"Toggle settings": "Переключити налаштування",
 	"Toggle sidebar": "Переключити бокову панель",
 	"Top K": "Top K",
@@ -431,15 +454,15 @@
 	"Type Hugging Face Resolve (Download) URL": "Введіть URL ресурсу Hugging Face Resolve (завантаження)",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "Ой! Виникла проблема при підключенні до {{provider}}.",
 	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Невідомий тип файлу '{{file_type}}', але приймається та обробляється як звичайний текст",
-	"Update and Copy Link": "",
+	"Update and Copy Link": "Оновлення та копіювання посилання",
 	"Update password": "Оновити пароль",
 	"Upload a GGUF model": "Завантажити GGUF модель",
 	"Upload files": "Завантажити файли",
 	"Upload Progress": "Прогрес завантаження",
-	"URL Mode": "Режим URL",
+	"URL Mode": "Режим URL-адреси",
 	"Use '#' in the prompt input to load and select your documents.": "Для введення промтів до веб-сторінок (URL) або вибору документів, будь ласка, використовуйте символ '#'.",
 	"Use Gravatar": "Змінити аватар",
-	"Use Initials": "",
+	"Use Initials": "Використовувати ініціали",
 	"user": "користувач",
 	"User Permissions": "Права користувача",
 	"Users": "Користувачі",
@@ -448,22 +471,25 @@
 	"variable": "змінна",
 	"variable to have them replaced with clipboard content.": "змінна, щоб замінити їх вмістом буфера обміну.",
 	"Version": "Версія",
-	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
+	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Попередження: Якщо ви оновлюєте або змінюєте модель вбудовування, вам потрібно буде повторно імпортувати всі документи.",
 	"Web": "Веб",
-	"Web Params": "",
-	"Webhook URL": "",
+	"Web Loader Settings": "Налаштування веб-завантажувача",
+	"Web Params": "Налаштування веб-завантажувача",
+	"Webhook URL": "URL веб-запиту",
 	"WebUI Add-ons": "Додатки WebUI",
 	"WebUI Settings": "Налаштування WebUI",
 	"WebUI will make requests to": "WebUI буде робити запити до",
 	"What’s New in": "Що нового в",
 	"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "Коли історія вимкнена, нові чати в цьому браузері не будуть відображатися в історії на жодному з ваших пристроїв.",
 	"Whisper (Local)": "Whisper (локально)",
-	"Write a prompt suggestion (e.g. Who are you?)": "Напишіть промт (напр. Хто ти?)",
+	"Write a prompt suggestion (e.g. Who are you?)": "Напишіть промт (напр., Хто ти?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Напишіть стислий зміст у 50 слів, який узагальнює [тема або ключове слово].",
+	"Yesterday": "Вчора",
 	"You": "Ви",
-	"You have no archived conversations.": "",
-	"You have shared this chat": "",
+	"You have no archived conversations.": "У вас немає архівованих розмов.",
+	"You have shared this chat": "Ви поділилися цим чатом",
 	"You're a helpful assistant.": "Ви корисний асистент.",
 	"You're now logged in.": "Ви увійшли в систему.",
-	"Youtube": ""
+	"Youtube": "Youtube",
+	"Youtube Loader Settings": "Налаштування завантажувача Youtube"
 }

+ 28 - 2
src/lib/i18n/locales/vi-VN/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "Cài đặt hệ thống",
 	"Advanced Parameters": "Các tham số Nâng cao",
 	"all": "tất cả",
+	"All Documents": "",
 	"All Users": "Danh sách người sử dụng",
 	"Allow": "Cho phép",
 	"Allow Chat Deletion": "Cho phép Xóa nội dung chat",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "bản ghi trò chuyện",
 	"are allowed - Activate this command by typing": "được phép - Kích hoạt lệnh này bằng cách gõ",
@@ -48,6 +50,7 @@
 	"Attach file": "",
 	"Attention to detail": "Có sự chú ý đến chi tiết của vấn đề",
 	"Audio": "Âm thanh",
+	"August": "",
 	"Auto-playback response": "Tự động phát lại phản hồi (Auto-playback)",
 	"Auto-send input after 3 sec.": "Tự động gửi đầu vào sau 3 giây.",
 	"AUTOMATIC1111 Base URL": "Đường dẫn kết nối tới AUTOMATIC1111 (Base URL)",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "Cơ sở dữ liệu",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "Mặc định",
 	"Default (Automatic1111)": "Mặc định (Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "Không có tài khoản?",
 	"Don't like the style": "Không thích phong cách trả lời",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "Tải xuống Cơ sở dữ liệu",
 	"Drop any files here to add to the conversation": "Thả bất kỳ tệp nào ở đây để thêm vào nội dung chat",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "vd: '30s','10m'. Đơn vị thời gian hợp lệ là 's', 'm', 'h'.",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "Nhập Chunk chồng lấn (overlap)",
 	"Enter Chunk Size": "Nhập Kích thước Chunk",
 	"Enter Image Size (e.g. 512x512)": "Nhập Kích thước ảnh (vd: 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "Nhập URL Cơ bản API LiteLLM (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "Nhập Khóa API LiteLLM (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "Nhập RPM API LiteLLM (litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "Tải các prompt về máy",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "Không thể đọc nội dung clipboard",
+	"February": "",
 	"Feel free to add specific details": "Mô tả chi tiết về chất lượng của câu hỏi và phương án trả lời",
 	"File Mode": "Chế độ Tệp văn bản",
 	"File not found.": "Không tìm thấy tệp.",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "Xin chào, {{name}}",
+	"Help": "",
 	"Hide": "Ẩn",
 	"Hide Additional Params": "Ẩn Các tham số bổ sung",
 	"How can I help you today?": "Tôi có thể giúp gì cho bạn hôm nay?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "Bao gồm flag `--api` khi chạy stable-diffusion-webui",
 	"Input commands": "",
 	"Interface": "Giao diện",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "tham gia Discord của chúng tôi để được trợ giúp.",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT Hết hạn",
 	"JWT Token": "Token JWT",
 	"Keep Alive": "Giữ kết nối",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "Quản lý mô hình với LiteLLM",
 	"Manage Models": "Quản lý mô hình",
 	"Manage Ollama Models": "Quản lý mô hình với Ollama",
+	"March": "",
 	"Max Tokens": "Max Tokens",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Tối đa 3 mô hình có thể được tải xuống cùng lúc. Vui lòng thử lại sau.",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "Không chắc phải viết gì? Chuyển sang",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "Thông báo trên máy tính (Notification)",
+	"November": "",
+	"October": "",
 	"Off": "Tắt",
 	"Okay, Let's Go!": "Được rồi, Bắt đầu thôi!",
 	"OLED Dark": "",
@@ -310,7 +326,10 @@
 	"Plain text (.txt)": "",
 	"Playground": "Thử nghiệm (Playground)",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "Nội dung prompt",
 	"Prompt suggestions": "Gợi ý prompt",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "Cài đặt lại Vector Storage",
 	"Response AutoCopy to Clipboard": "Tự động Sao chép Phản hồi vào clipboard",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Vai trò",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "Gửi yêu cầu",
 	"Send message": "Gửi yêu cầu",
+	"September": "",
 	"Server connection verified": "Kết nối máy chủ đã được xác minh",
 	"Set as default": "Đặt làm mặc định",
 	"Set Default Model": "Đặt Mô hình Mặc định",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "Đặt Kích thước ảnh",
+	"Set Model": "Thiết lập mô hình",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "Đặt Số Bước",
 	"Set Title Auto-Generation Model": "Đặt tiêu đề tự động",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "Thành công",
 	"Successfully updated.": "Đã cập nhật thành công.",
+	"Suggested": "",
 	"Sync All": "Đồng bộ hóa Tất cả",
 	"System": "Hệ thống",
 	"System Prompt": "Prompt Hệ thống (System Prompt)",
@@ -417,11 +438,13 @@
 	"Title": "Tiêu đề",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Tự động Tạo Tiêu đề",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "Prompt tạo tiêu đề",
 	"to": "đến",
 	"To access the available model names for downloading,": "Để truy cập các tên mô hình có sẵn để tải xuống,",
 	"To access the GGUF models available for downloading,": "Để truy cập các mô hình GGUF có sẵn để tải xuống,",
 	"to chat input.": "đến đầu vào trò chuyện.",
+	"Today": "",
 	"Toggle settings": "Bật/tắt cài đặt",
 	"Toggle sidebar": "Bật/tắt thanh bên",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "Version",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "Web",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "Tiện ích WebUI",
@@ -460,10 +484,12 @@
 	"Whisper (Local)": "Whisper (Local)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Hãy viết một prompt (vd: Bạn là ai?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Viết một tóm tắt trong vòng 50 từ cho [chủ đề hoặc từ khóa].",
+	"Yesterday": "",
 	"You": "Bạn",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Bạn là một trợ lý hữu ích.",
 	"You're now logged in.": "Bạn đã đăng nhập.",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 62 - 36
src/lib/i18n/locales/zh-CN/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "管理员设置",
 	"Advanced Parameters": "高级参数",
 	"all": "所有",
+	"All Documents": "",
 	"All Users": "所有用户",
 	"Allow": "允许",
 	"Allow Chat Deletion": "允许删除聊天记录",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "聊天记录存档",
 	"are allowed - Activate this command by typing": "允许 - 通过输入来激活这个命令",
@@ -48,8 +50,9 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "音频",
+	"August": "",
 	"Auto-playback response": "自动播放回应",
-	"Auto-send input after 3 sec.": "3秒后自动发送输入",
+	"Auto-send input after 3 sec.": "3 秒后自动发送输入",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基础 URL",
 	"AUTOMATIC1111 Base URL is required.": "需要 AUTOMATIC1111 基础 URL。",
 	"available!": "可用!",
@@ -70,9 +73,9 @@
 	"Check for updates": "检查更新",
 	"Checking for updates...": "正在检查更新...",
 	"Choose a model before saving...": "保存前选择一个模型...",
-	"Chunk Overlap": "块重叠(Chunk Overlap)",
-	"Chunk Params": "块参数(Chunk Params)",
-	"Chunk Size": "块大小(Chunk Size)",
+	"Chunk Overlap": "块重叠 (Chunk Overlap)",
+	"Chunk Params": "块参数 (Chunk Params)",
+	"Chunk Size": "块大小 (Chunk Size)",
 	"Citation": "",
 	"Click here for help.": "点击这里获取帮助。",
 	"Click here to": "",
@@ -100,7 +103,7 @@
 	"Copy last response": "复制最后一次回复",
 	"Copy Link": "",
 	"Copying to clipboard was successful!": "复制到剪贴板成功!",
-	"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':": "为以下查询创建一个简洁的、3-5个词的短语作为标题,严格遵守3-5个词的限制并避免使用“标题”一词:",
+	"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':": "为以下查询创建一个简洁的、3-5 个词的短语作为标题,严格遵守 3-5 个词的限制并避免使用“标题”一词:",
 	"Create a modelfile": "创建模型文件",
 	"Create Account": "创建账户",
 	"Create new key": "",
@@ -110,11 +113,12 @@
 	"Current Model": "当前模型",
 	"Current Password": "当前密码",
 	"Custom": "自定义",
-	"Customize Ollama models for a specific purpose": "定制特定用途的Ollama模型",
+	"Customize Ollama models for a specific purpose": "定制特定用途的 Ollama 模型",
 	"Dark": "暗色",
 	"Dashboard": "",
 	"Database": "数据库",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "默认",
 	"Default (Automatic1111)": "默认(Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "没有账户?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "下载数据库",
 	"Drop any files here to add to the conversation": "拖动文件到此处以添加到对话中",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如 '30s','10m'。有效的时间单位是's', 'm', 'h'。",
@@ -163,16 +168,17 @@
 	"Enabled": "启用",
 	"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "",
 	"Enter {{role}} message here": "在此处输入 {{role}} 信息",
-	"Enter Chunk Overlap": "输入块重叠(Chunk Overlap)",
-	"Enter Chunk Size": "输入块大小(Chunk Size)",
-	"Enter Image Size (e.g. 512x512)": "输入图片大小(例如 512x512)",
+	"Enter Chunk Overlap": "输入块重叠 (Chunk Overlap)",
+	"Enter Chunk Size": "输入块大小 (Chunk Size)",
+	"Enter Image Size (e.g. 512x512)": "输入图片大小 (例如 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "输入 LiteLLM API 基本 URL (litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "输入 LiteLLM API 密匙 (litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "输入 LiteLLM API 速率限制 (litellm_params.rpm)",
 	"Enter LiteLLM Model (litellm_params.model)": "输入 LiteLLM 模型 (litellm_params.model)",
 	"Enter Max Tokens (litellm_params.max_tokens)": "输入模型的 Max Tokens (litellm_params.max_tokens)",
-	"Enter model tag (e.g. {{modelTag}})": "输入模型标签(例如{{modelTag}})",
-	"Enter Number of Steps (e.g. 50)": "输入步数(例如50)",
+	"Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如{{modelTag}})",
+	"Enter Number of Steps (e.g. 50)": "输入步数 (例如 50)",
 	"Enter Score": "",
 	"Enter stop sequence": "输入停止序列",
 	"Enter Top K": "输入 Top K",
@@ -190,6 +196,7 @@
 	"Export Prompts": "导出提示词",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "无法读取剪贴板内容",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "文件模式",
 	"File not found.": "文件未找到。",
@@ -206,6 +213,7 @@
 	"Good Response": "",
 	"has no conversations.": "",
 	"Hello, {{name}}": "你好,{{name}}",
+	"Help": "",
 	"Hide": "隐藏",
 	"Hide Additional Params": "隐藏额外参数",
 	"How can I help you today?": "我今天能帮你做什么?",
@@ -218,27 +226,33 @@
 	"Import Documents Mapping": "导入文档映射",
 	"Import Modelfiles": "导入模型文件",
 	"Import Prompts": "导入提示",
-	"Include `--api` flag when running stable-diffusion-webui": "运行stable-diffusion-webui时包含`--api`标志",
+	"Include `--api` flag when running stable-diffusion-webui": "运行 stable-diffusion-webui 时包含 `--api` 标志",
 	"Input commands": "",
 	"Interface": "界面",
-	"join our Discord for help.": "加入我们的Discord寻求帮助。",
+	"Invalid Tag": "",
+	"January": "",
+	"join our Discord for help.": "加入我们的 Discord 寻求帮助。",
 	"JSON": "JSON",
-	"JWT Expiration": "JWT过期",
-	"JWT Token": "JWT令牌",
+	"July": "",
+	"June": "",
+	"JWT Expiration": "JWT 过期",
+	"JWT Token": "JWT 令牌",
 	"Keep Alive": "保持活动",
 	"Keyboard shortcuts": "键盘快捷键",
 	"Language": "语言",
 	"Last Active": "",
 	"Light": "浅色",
 	"Listening...": "监听中...",
-	"LLMs can make mistakes. Verify important information.": "LLM可能会生成错误信息,请验证重要信息。",
-	"Made by OpenWebUI Community": "由OpenWebUI社区制作",
+	"LLMs can make mistakes. Verify important information.": "LLM 可能会生成错误信息,请验证重要信息。",
+	"Made by OpenWebUI Community": "由 OpenWebUI 社区制作",
 	"Make sure to enclose them with": "确保将它们包含在内",
-	"Manage LiteLLM Models": "管理LiteLLM模型",
+	"Manage LiteLLM Models": "管理 LiteLLM 模型",
 	"Manage Models": "管理模型",
-	"Manage Ollama Models": "管理Ollama模型",
+	"Manage Ollama Models": "管理 Ollama 模型",
+	"March": "",
 	"Max Tokens": "最大令牌数",
-	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可以同时下载3个模型,请稍后重试。",
+	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可以同时下载 3 个模型,请稍后重试。",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "不确定写什么?切换到",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "桌面通知",
+	"November": "",
+	"October": "",
 	"Off": "关闭",
 	"Okay, Let's Go!": "好的,我们开始吧!",
 	"OLED Dark": "",
@@ -285,7 +301,7 @@
 	"Ollama Version": "Ollama 版本",
 	"On": "开",
 	"Only": "仅",
-	"Only alphanumeric characters and hyphens are allowed in the command string.": "命令字符串中只允许使用英文字母,数字(0-9)以及连字符(-)。",
+	"Only alphanumeric characters and hyphens are allowed in the command string.": "命令字符串中只允许使用英文字母,数字 (0-9) 以及连字符 (-)。",
 	"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.": "哎呀!看起来 URL 无效。请仔细检查后再试一次。",
 	"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "哎呀!您正在使用不支持的方法(仅限前端)。请从后端提供 WebUI。",
@@ -304,13 +320,16 @@
 	"Parameters": "参数",
 	"Password": "密码",
 	"PDF document (.pdf)": "",
-	"PDF Extract Images (OCR)": "PDF图像处理(使用OCR)",
+	"PDF Extract Images (OCR)": "PDF 图像处理 (使用 OCR)",
 	"pending": "待定",
 	"Permission denied when accessing microphone: {{error}}": "访问麦克风时权限被拒绝:{{error}}",
 	"Plain text (.txt)": "",
 	"Playground": "AI 对话游乐场",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "提示词内容",
 	"Prompt suggestions": "提示词建议",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "重置向量存储",
 	"Response AutoCopy to Clipboard": "自动复制回答到剪贴板",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "角色",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine Dawn": "Rosé Pine Dawn",
@@ -359,15 +377,17 @@
 	"Seed": "种子",
 	"Select a mode": "选择一个模式",
 	"Select a model": "选择一个模型",
-	"Select an Ollama instance": "选择一个Ollama实例",
+	"Select an Ollama instance": "选择一个 Ollama 实例",
 	"Select model": "",
 	"Send a Message": "发送消息",
 	"Send message": "发送消息",
+	"September": "",
 	"Server connection verified": "已验证服务器连接",
 	"Set as default": "设为默认",
 	"Set Default Model": "设置默认模型",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "设置图片大小",
+	"Set Model": "设置模型",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "设置步骤",
 	"Set Title Auto-Generation Model": "设置标题自动生成模型",
@@ -376,7 +396,7 @@
 	"Settings saved successfully!": "设置已保存",
 	"Share": "",
 	"Share Chat": "",
-	"Share to OpenWebUI Community": "分享到OpenWebUI社区",
+	"Share to OpenWebUI Community": "分享到 OpenWebUI 社区",
 	"short-summary": "简短总结",
 	"Show": "显示",
 	"Show Additional Params": "显示额外参数",
@@ -390,13 +410,14 @@
 	"Source": "",
 	"Speech recognition error: {{error}}": "语音识别错误:{{error}}",
 	"Speech-to-Text Engine": "语音转文字引擎",
-	"SpeechRecognition API is not supported in this browser.": "此浏览器不支持SpeechRecognition API。",
+	"SpeechRecognition API is not supported in this browser.": "此浏览器不支持 SpeechRecognition API。",
 	"Stop Sequence": "停止序列",
 	"STT Settings": "语音转文字设置",
 	"Submit": "提交",
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "成功",
 	"Successfully updated.": "成功更新。",
+	"Suggested": "",
 	"Sync All": "同步所有",
 	"System": "系统",
 	"System Prompt": "系统提示",
@@ -413,32 +434,34 @@
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "这确保了您宝贵的对话被安全保存到后端数据库中。谢谢!",
 	"This setting does not sync across browsers or devices.": "此设置不会在浏览器或设备之间同步。",
 	"Thorough explanation": "",
-	"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "提示:在每次替换后,在聊天输入中按Tab键可以连续更新多个变量。",
+	"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "提示:在每次替换后,在聊天输入中按 Tab 键可以连续更新多个变量。",
 	"Title": "标题",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "标题自动生成",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "自动生成标题的提示词",
 	"to": "到",
 	"To access the available model names for downloading,": "要访问可下载的模型名称,",
-	"To access the GGUF models available for downloading,": "要访问可下载的GGUF模型,",
+	"To access the GGUF models available for downloading,": "要访问可下载的 GGUF 模型,",
 	"to chat input.": "到聊天输入。",
+	"Today": "",
 	"Toggle settings": "切换设置",
 	"Toggle sidebar": "切换侧边栏",
 	"Top K": "Top K",
 	"Top P": "Top P",
-	"Trouble accessing Ollama?": "访问Ollama时遇到问题?",
+	"Trouble accessing Ollama?": "访问 Ollama 时遇到问题?",
 	"TTS Settings": "文本转语音设置",
-	"Type Hugging Face Resolve (Download) URL": "输入Hugging Face解析(下载)URL",
+	"Type Hugging Face Resolve (Download) URL": "输入 Hugging Face 解析(下载)URL",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "哎呀!连接到{{provider}}时出现问题。",
 	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "未知文件类型'{{file_type}}',将视为纯文本进行处理",
 	"Update and Copy Link": "",
 	"Update password": "更新密码",
-	"Upload a GGUF model": "上传一个GGUF模型",
+	"Upload a GGUF model": "上传一个 GGUF 模型",
 	"Upload files": "上传文件",
 	"Upload Progress": "上传进度",
-	"URL Mode": "URL模式",
+	"URL Mode": "URL 模式",
 	"Use '#' in the prompt input to load and select your documents.": "在提示输入中使用'#'来加载和选择你的文档。",
-	"Use Gravatar": "使用Gravatar",
+	"Use Gravatar": "使用 Gravatar",
 	"Use Initials": "",
 	"user": "用户",
 	"User Permissions": "用户权限",
@@ -450,20 +473,23 @@
 	"Version": "版本",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "网页",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI 插件",
 	"WebUI Settings": "WebUI 设置",
-	"WebUI will make requests to": "WebUI将请求",
+	"WebUI will make requests to": "WebUI 将请求",
 	"What’s New in": "最新变化",
 	"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "当历史记录被关闭时,这个浏览器上的新聊天不会出现在你任何设备的历史记录中。",
 	"Whisper (Local)": "Whisper(本地)",
 	"Write a prompt suggestion (e.g. Who are you?)": "写一个提示建议(例如:你是谁?)",
-	"Write a summary in 50 words that summarizes [topic or keyword].": "用50个字写一个总结[主题或关键词]。",
+	"Write a summary in 50 words that summarizes [topic or keyword].": "用 50 个字写一个总结 [主题或关键词]。",
+	"Yesterday": "",
 	"You": "你",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "你是一个有帮助的助手。",
 	"You're now logged in.": "已登录。",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 33 - 7
src/lib/i18n/locales/zh-TW/translation.json

@@ -28,6 +28,7 @@
 	"Admin Settings": "管理設定",
 	"Advanced Parameters": "進階參數",
 	"all": "所有",
+	"All Documents": "",
 	"All Users": "所有使用者",
 	"Allow": "允許",
 	"Allow Chat Deletion": "允許刪除聊天紀錄",
@@ -41,6 +42,7 @@
 	"API Key created.": "",
 	"API keys": "",
 	"API RPM": "API RPM",
+	"April": "",
 	"Archive": "",
 	"Archived Chats": "聊天記錄存檔",
 	"are allowed - Activate this command by typing": "是允許的 - 透過輸入",
@@ -48,8 +50,9 @@
 	"Attach file": "",
 	"Attention to detail": "",
 	"Audio": "音訊",
+	"August": "",
 	"Auto-playback response": "自動播放回答",
-	"Auto-send input after 3 sec.": "3秒後自動傳送輸入內容",
+	"Auto-send input after 3 sec.": "3 秒後自動傳送輸入內容",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基本 URL",
 	"AUTOMATIC1111 Base URL is required.": "需要 AUTOMATIC1111 基本 URL",
 	"available!": "可以使用!",
@@ -115,6 +118,7 @@
 	"Dashboard": "",
 	"Database": "資料庫",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"December": "",
 	"Default": "預設",
 	"Default (Automatic1111)": "預設(Automatic1111)",
 	"Default (SentenceTransformers)": "",
@@ -148,6 +152,7 @@
 	"Don't have an account?": "還沒有註冊帳號?",
 	"Don't like the style": "",
 	"Download": "",
+	"Download canceled": "",
 	"Download Database": "下載資料庫",
 	"Drop any files here to add to the conversation": "拖拽文件到此處以新增至對話",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如 '30s', '10m'。有效的時間單位為 's', 'm', 'h'。",
@@ -166,6 +171,7 @@
 	"Enter Chunk Overlap": "輸入 Chunk Overlap",
 	"Enter Chunk Size": "輸入 Chunk 大小",
 	"Enter Image Size (e.g. 512x512)": "輸入圖片大小(例如 512x512)",
+	"Enter language codes": "",
 	"Enter LiteLLM API Base URL (litellm_params.api_base)": "輸入 LiteLLM API 基本 URL(litellm_params.api_base)",
 	"Enter LiteLLM API Key (litellm_params.api_key)": "輸入 LiteLLM API 金鑰(litellm_params.api_key)",
 	"Enter LiteLLM API RPM (litellm_params.rpm)": "輸入 LiteLLM API RPM(litellm_params.rpm)",
@@ -190,6 +196,7 @@
 	"Export Prompts": "匯出提示詞",
 	"Failed to create API Key.": "",
 	"Failed to read clipboard contents": "無法讀取剪貼簿內容",
+	"February": "",
 	"Feel free to add specific details": "",
 	"File Mode": "檔案模式",
 	"File not found.": "找不到檔案。",
@@ -205,7 +212,8 @@
 	"Generation Info": "",
 	"Good Response": "",
 	"has no conversations.": "",
-	"Hello, {{name}}": "你好, {{name}}",
+	"Hello, {{name}}": "你好,{{name}}",
+	"Help": "",
 	"Hide": "隱藏",
 	"Hide Additional Params": "隱藏額外參數",
 	"How can I help you today?": "今天能為你做什麼?",
@@ -221,8 +229,12 @@
 	"Include `--api` flag when running stable-diffusion-webui": "在運行 stable-diffusion-webui 時加上 `--api` 標誌",
 	"Input commands": "",
 	"Interface": "介面",
+	"Invalid Tag": "",
+	"January": "",
 	"join our Discord for help.": "加入我們的 Discord 尋找幫助。",
 	"JSON": "JSON",
+	"July": "",
+	"June": "",
 	"JWT Expiration": "JWT 過期時間",
 	"JWT Token": "JWT Token",
 	"Keep Alive": "保持活躍",
@@ -237,8 +249,10 @@
 	"Manage LiteLLM Models": "管理 LiteLLM 模型",
 	"Manage Models": "管理模組",
 	"Manage Ollama Models": "管理 Ollama 模型",
+	"March": "",
 	"Max Tokens": "最大 Token 數",
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可以同時下載 3 個模型。請稍後再試。",
+	"May": "",
 	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
@@ -277,6 +291,8 @@
 	"Not sure what to write? Switch to": "不確定要寫什麼?切換到",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "",
 	"Notifications": "桌面通知",
+	"November": "",
+	"October": "",
 	"Off": "關閉",
 	"Okay, Let's Go!": "好的,啟動吧!",
 	"OLED Dark": "",
@@ -306,11 +322,14 @@
 	"PDF document (.pdf)": "",
 	"PDF Extract Images (OCR)": "PDF 圖像擷取(OCR 光學文字辨識)",
 	"pending": "待審查",
-	"Permission denied when accessing microphone: {{error}}": "存取麥克風時被拒絕權限: {{error}}",
+	"Permission denied when accessing microphone: {{error}}": "存取麥克風時被拒絕權限{{error}}",
 	"Plain text (.txt)": "",
 	"Playground": "AI 對話遊樂場",
 	"Positive attitude": "",
+	"Previous 30 days": "",
+	"Previous 7 days": "",
 	"Profile Image": "",
+	"Prompt": "",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
 	"Prompt Content": "提示詞內容",
 	"Prompt suggestions": "提示詞建議",
@@ -338,7 +357,6 @@
 	"Reranking model set to \"{{reranking_model}}\"": "",
 	"Reset Vector Storage": "重置向量儲存空間",
 	"Response AutoCopy to Clipboard": "自動複製回答到剪貼簿",
-	"Retrieval Augmented Generation Settings": "",
 	"Role": "Role",
 	"Rosé Pine": "玫瑰松",
 	"Rosé Pine Dawn": "黎明玫瑰松",
@@ -363,11 +381,13 @@
 	"Select model": "",
 	"Send a Message": "傳送訊息",
 	"Send message": "傳送訊息",
+	"September": "",
 	"Server connection verified": "已驗證伺服器連線",
 	"Set as default": "設為預設",
 	"Set Default Model": "設定預設模型",
 	"Set embedding model (e.g. {{model}})": "",
 	"Set Image Size": "設定圖片大小",
+	"Set Model": "設定模型",
 	"Set reranking model (e.g. {{model}})": "",
 	"Set Steps": "設定步數",
 	"Set Title Auto-Generation Model": "設定自動生成標題用模型",
@@ -388,7 +408,7 @@
 	"Sign up": "註冊",
 	"Signing in": "",
 	"Source": "",
-	"Speech recognition error: {{error}}": "語音識別錯誤: {{error}}",
+	"Speech recognition error: {{error}}": "語音識別錯誤{{error}}",
 	"Speech-to-Text Engine": "語音轉文字引擎",
 	"SpeechRecognition API is not supported in this browser.": "此瀏覽器不支持 SpeechRecognition API。",
 	"Stop Sequence": "停止序列",
@@ -397,6 +417,7 @@
 	"Subtitle (e.g. about the Roman Empire)": "",
 	"Success": "成功",
 	"Successfully updated.": "更新成功。",
+	"Suggested": "",
 	"Sync All": "全部同步",
 	"System": "系統",
 	"System Prompt": "系統提示詞",
@@ -417,11 +438,13 @@
 	"Title": "標題",
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "自動生成標題",
+	"Title cannot be an empty string.": "",
 	"Title Generation Prompt": "自動生成標題的提示詞",
 	"to": "到",
 	"To access the available model names for downloading,": "若想查看可供下載的模型名稱,",
 	"To access the GGUF models available for downloading,": "若想查看可供下載的 GGUF 模型名稱,",
 	"to chat input.": "到聊天輸入框來啟動此命令。",
+	"Today": "",
 	"Toggle settings": "切換設定",
 	"Toggle sidebar": "切換側邊欄",
 	"Top K": "Top K",
@@ -450,6 +473,7 @@
 	"Version": "版本",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "",
 	"Web": "網頁",
+	"Web Loader Settings": "",
 	"Web Params": "",
 	"Webhook URL": "",
 	"WebUI Add-ons": "WebUI 擴充套件",
@@ -459,11 +483,13 @@
 	"When history is turned off, new chats on this browser won't appear in your history on any of your devices.": "當歷史被關閉時,這個瀏覽器上的新聊天將不會出現在任何裝置的歷史記錄中。",
 	"Whisper (Local)": "Whisper(本機)",
 	"Write a prompt suggestion (e.g. Who are you?)": "寫一個提示詞建議(例如:你是誰?)",
-	"Write a summary in 50 words that summarizes [topic or keyword].": "寫一個50字的摘要來概括[主題或關鍵詞]。",
+	"Write a summary in 50 words that summarizes [topic or keyword].": "寫一個 50 字的摘要來概括 [主題或關鍵詞]。",
+	"Yesterday": "",
 	"You": "你",
 	"You have no archived conversations.": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "你是一位善於協助他人的助手。",
 	"You're now logged in.": "已登入。",
-	"Youtube": ""
+	"Youtube": "",
+	"Youtube Loader Settings": ""
 }

+ 1 - 0
src/lib/stores/index.ts

@@ -102,6 +102,7 @@ type AudioSettings = {
 	STTEngine?: string;
 	TTSEngine?: string;
 	speaker?: string;
+	model?: string;
 };
 
 type TitleSettings = {

+ 1 - 1
src/routes/(app)/+layout.svelte

@@ -177,7 +177,7 @@
 </script>
 
 <div class=" hidden lg:flex fixed bottom-0 right-0 px-3 py-3 z-10">
-	<Tooltip content="Help" placement="left">
+	<Tooltip content={$i18n.t('Help')} placement="left">
 		<button
 			id="show-shortcuts-button"
 			bind:this={showShortcutsButtonElement}

+ 8 - 0
src/routes/(app)/+page.svelte

@@ -136,6 +136,14 @@
 			selectedModels = [''];
 		}
 
+		if ($page.url.searchParams.get('q')) {
+			prompt = $page.url.searchParams.get('q') ?? '';
+			if (prompt) {
+				await tick();
+				submitPrompt(prompt);
+			}
+		}
+
 		selectedModels = selectedModels.map((modelId) =>
 			$models.map((m) => m.id).includes(modelId) ? modelId : ''
 		);

+ 1 - 1
src/routes/(app)/admin/+page.svelte

@@ -140,7 +140,7 @@
 							</div>
 						</div>
 
-						<div class="px-5 flex text-sm gap-2.5">
+						<div class="px-6 flex text-sm gap-2.5">
 							<div class="py-3 border-b font-medium text-gray-100 cursor-pointer">
 								{$i18n.t('Overview')}
 							</div>

+ 2 - 2
src/routes/auth/+page.svelte

@@ -60,7 +60,7 @@
 			await goto('/');
 		}
 		loaded = true;
-		if ($config?.trusted_header_auth ?? false) {
+		if (($config?.trusted_header_auth ?? false) || $config?.auth === false) {
 			await signInHandler();
 		}
 	});
@@ -97,7 +97,7 @@
 		</div> -->
 
 		<div class="w-full sm:max-w-md px-10 min-h-screen flex flex-col text-center">
-			{#if $config?.trusted_header_auth ?? false}
+			{#if ($config?.trusted_header_auth ?? false) || $config?.auth === false}
 				<div class=" my-auto pb-10 w-full">
 					<div
 						class="flex items-center justify-center gap-3 text-xl sm:text-2xl text-center font-bold dark:text-gray-200"

+ 8 - 0
static/opensearch.xml

@@ -0,0 +1,8 @@
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Open WebUI</ShortName>
+<Description>Search Open WebUI</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16" type="image/x-icon">http://localhost:5137/favicon.png</Image>
+<Url type="text/html" method="get" template="http://localhost:5137/?q={searchTerms}"/>
+<moz:SearchForm>http://localhost:5137</moz:SearchForm>
+</OpenSearchDescription>