Browse Source

merged conflicts in PL locale

Jannik Streidl 1 year ago
parent
commit
e31cf08188
47 changed files with 988 additions and 257 deletions
  1. 33 21
      backend/apps/images/main.py
  2. 4 0
      backend/apps/litellm/main.py
  3. 15 8
      backend/apps/ollama/main.py
  4. 74 64
      backend/apps/web/routers/chats.py
  5. 3 1
      backend/main.py
  6. 2 2
      cypress/e2e/chat.cy.ts
  7. 19 6
      src/lib/apis/chats/index.ts
  8. 4 1
      src/lib/components/chat/MessageInput.svelte
  9. 15 5
      src/lib/components/chat/ModelSelector/Selector.svelte
  10. 52 0
      src/lib/components/chat/ShortcutsModal.svelte
  11. 21 3
      src/lib/components/chat/Tags.svelte
  12. 1 1
      src/lib/components/common/ImagePreview.svelte
  13. 35 21
      src/lib/components/layout/Sidebar.svelte
  14. 7 1
      src/lib/components/layout/Sidebar/ChatMenu.svelte
  15. 447 0
      src/lib/i18n/locales/ar-BH/translation.json
  16. 4 0
      src/lib/i18n/locales/bg-BG/translation.json
  17. 4 0
      src/lib/i18n/locales/bn-BD/translation.json
  18. 4 0
      src/lib/i18n/locales/ca-ES/translation.json
  19. 4 0
      src/lib/i18n/locales/de-DE/translation.json
  20. 4 0
      src/lib/i18n/locales/dg-DG/translation.json
  21. 4 0
      src/lib/i18n/locales/en-GB/translation.json
  22. 4 0
      src/lib/i18n/locales/en-US/translation.json
  23. 4 0
      src/lib/i18n/locales/es-ES/translation.json
  24. 4 0
      src/lib/i18n/locales/fa-IR/translation.json
  25. 4 0
      src/lib/i18n/locales/fr-CA/translation.json
  26. 4 0
      src/lib/i18n/locales/fr-FR/translation.json
  27. 4 0
      src/lib/i18n/locales/it-IT/translation.json
  28. 4 0
      src/lib/i18n/locales/ja-JP/translation.json
  29. 4 0
      src/lib/i18n/locales/ka-GE/translation.json
  30. 4 0
      src/lib/i18n/locales/ko-KR/translation.json
  31. 4 0
      src/lib/i18n/locales/languages.json
  32. 4 0
      src/lib/i18n/locales/nl-NL/translation.json
  33. 4 0
      src/lib/i18n/locales/pl-PL/translation.json
  34. 4 0
      src/lib/i18n/locales/pt-BR/translation.json
  35. 4 0
      src/lib/i18n/locales/pt-PT/translation.json
  36. 4 0
      src/lib/i18n/locales/ru-RU/translation.json
  37. 4 0
      src/lib/i18n/locales/sv-SE/translation.json
  38. 83 79
      src/lib/i18n/locales/tr-TR/translation.json
  39. 4 0
      src/lib/i18n/locales/uk-UA/translation.json
  40. 4 0
      src/lib/i18n/locales/vi-VN/translation.json
  41. 4 0
      src/lib/i18n/locales/zh-CN/translation.json
  42. 4 0
      src/lib/i18n/locales/zh-TW/translation.json
  43. 39 17
      src/lib/utils/index.ts
  44. 3 3
      src/routes/(app)/+layout.svelte
  45. 1 1
      src/routes/(app)/playground/+page.svelte
  46. 25 22
      src/routes/auth/+page.svelte
  47. 1 1
      src/routes/s/[id]/+page.svelte

+ 33 - 21
backend/apps/images/main.py

@@ -317,19 +317,31 @@ class GenerateImageForm(BaseModel):
 
 
 def save_b64_image(b64_str):
 def save_b64_image(b64_str):
     try:
     try:
-        header, encoded = b64_str.split(",", 1)
-        mime_type = header.split(";")[0]
+        image_id = str(uuid.uuid4())
 
 
-        img_data = base64.b64decode(encoded)
+        if "," in b64_str:
+            header, encoded = b64_str.split(",", 1)
+            mime_type = header.split(";")[0]
 
 
-        image_id = str(uuid.uuid4())
-        image_format = mimetypes.guess_extension(mime_type)
+            img_data = base64.b64decode(encoded)
+            image_format = mimetypes.guess_extension(mime_type)
+
+            image_filename = f"{image_id}{image_format}"
+            file_path = IMAGE_CACHE_DIR / f"{image_filename}"
+            with open(file_path, "wb") as f:
+                f.write(img_data)
+            return image_filename
+        else:
+            image_filename = f"{image_id}.png"
+            file_path = IMAGE_CACHE_DIR.joinpath(image_filename)
+
+            img_data = base64.b64decode(b64_str)
+
+            # Write the image data to a file
+            with open(file_path, "wb") as f:
+                f.write(img_data)
+            return image_filename
 
 
-        image_filename = f"{image_id}{image_format}"
-        file_path = IMAGE_CACHE_DIR / f"{image_filename}"
-        with open(file_path, "wb") as f:
-            f.write(img_data)
-        return image_filename
     except Exception as e:
     except Exception as e:
         log.exception(f"Error saving image: {e}")
         log.exception(f"Error saving image: {e}")
         return None
         return None
@@ -348,18 +360,20 @@ def save_url_image(url):
             if not image_format:
             if not image_format:
                 raise ValueError("Could not determine image type from MIME type")
                 raise ValueError("Could not determine image type from MIME type")
 
 
-            file_path = IMAGE_CACHE_DIR.joinpath(f"{image_id}{image_format}")
+            image_filename = f"{image_id}{image_format}"
+
+            file_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}")
             with open(file_path, "wb") as image_file:
             with open(file_path, "wb") as image_file:
                 for chunk in r.iter_content(chunk_size=8192):
                 for chunk in r.iter_content(chunk_size=8192):
                     image_file.write(chunk)
                     image_file.write(chunk)
-            return image_id, image_format
+            return image_filename
         else:
         else:
             log.error(f"Url does not point to an image.")
             log.error(f"Url does not point to an image.")
-            return None, None
+            return None
 
 
     except Exception as e:
     except Exception as e:
         log.exception(f"Error saving image: {e}")
         log.exception(f"Error saving image: {e}")
-        return None, None
+        return None
 
 
 
 
 @app.post("/generations")
 @app.post("/generations")
@@ -400,7 +414,7 @@ def generate_image(
             for image in res["data"]:
             for image in res["data"]:
                 image_filename = save_b64_image(image["b64_json"])
                 image_filename = save_b64_image(image["b64_json"])
                 images.append({"url": f"/cache/image/generations/{image_filename}"})
                 images.append({"url": f"/cache/image/generations/{image_filename}"})
-                file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_id}.json")
+                file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
 
 
                 with open(file_body_path, "w") as f:
                 with open(file_body_path, "w") as f:
                     json.dump(data, f)
                     json.dump(data, f)
@@ -435,11 +449,9 @@ def generate_image(
             images = []
             images = []
 
 
             for image in res["data"]:
             for image in res["data"]:
-                image_id, image_format = save_url_image(image["url"])
-                images.append(
-                    {"url": f"/cache/image/generations/{image_id}{image_format}"}
-                )
-                file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_id}.json")
+                image_filename = save_url_image(image["url"])
+                images.append({"url": f"/cache/image/generations/{image_filename}"})
+                file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
 
 
                 with open(file_body_path, "w") as f:
                 with open(file_body_path, "w") as f:
                     json.dump(data.model_dump(exclude_none=True), f)
                     json.dump(data.model_dump(exclude_none=True), f)
@@ -477,7 +489,7 @@ def generate_image(
             for image in res["images"]:
             for image in res["images"]:
                 image_filename = save_b64_image(image)
                 image_filename = save_b64_image(image)
                 images.append({"url": f"/cache/image/generations/{image_filename}"})
                 images.append({"url": f"/cache/image/generations/{image_filename}"})
-                file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_id}.json")
+                file_body_path = IMAGE_CACHE_DIR.joinpath(f"{image_filename}.json")
 
 
                 with open(file_body_path, "w") as f:
                 with open(file_body_path, "w") as f:
                     json.dump({**data, "info": res["info"]}, f)
                     json.dump({**data, "info": res["info"]}, f)

+ 4 - 0
backend/apps/litellm/main.py

@@ -36,6 +36,10 @@ from config import (
     LITELLM_PROXY_HOST,
     LITELLM_PROXY_HOST,
 )
 )
 
 
+import warnings
+
+warnings.simplefilter("ignore")
+
 from litellm.utils import get_llm_provider
 from litellm.utils import get_llm_provider
 
 
 import asyncio
 import asyncio

+ 15 - 8
backend/apps/ollama/main.py

@@ -31,7 +31,12 @@ from typing import Optional, List, Union
 
 
 from apps.web.models.users import Users
 from apps.web.models.users import Users
 from constants import ERROR_MESSAGES
 from constants import ERROR_MESSAGES
-from utils.utils import decode_token, get_current_user, get_admin_user
+from utils.utils import (
+    decode_token,
+    get_current_user,
+    get_verified_user,
+    get_admin_user,
+)
 
 
 
 
 from config import (
 from config import (
@@ -164,7 +169,7 @@ async def get_all_models():
 @app.get("/api/tags")
 @app.get("/api/tags")
 @app.get("/api/tags/{url_idx}")
 @app.get("/api/tags/{url_idx}")
 async def get_ollama_tags(
 async def get_ollama_tags(
-    url_idx: Optional[int] = None, user=Depends(get_current_user)
+    url_idx: Optional[int] = None, user=Depends(get_verified_user)
 ):
 ):
     if url_idx == None:
     if url_idx == None:
         models = await get_all_models()
         models = await get_all_models()
@@ -563,7 +568,7 @@ async def delete_model(
 
 
 
 
 @app.post("/api/show")
 @app.post("/api/show")
-async def show_model_info(form_data: ModelNameForm, user=Depends(get_current_user)):
+async def show_model_info(form_data: ModelNameForm, user=Depends(get_verified_user)):
     if form_data.name not in app.state.MODELS:
     if form_data.name not in app.state.MODELS:
         raise HTTPException(
         raise HTTPException(
             status_code=400,
             status_code=400,
@@ -612,7 +617,7 @@ class GenerateEmbeddingsForm(BaseModel):
 async def generate_embeddings(
 async def generate_embeddings(
     form_data: GenerateEmbeddingsForm,
     form_data: GenerateEmbeddingsForm,
     url_idx: Optional[int] = None,
     url_idx: Optional[int] = None,
-    user=Depends(get_current_user),
+    user=Depends(get_verified_user),
 ):
 ):
     if url_idx == None:
     if url_idx == None:
         model = form_data.model
         model = form_data.model
@@ -730,7 +735,7 @@ class GenerateCompletionForm(BaseModel):
 async def generate_completion(
 async def generate_completion(
     form_data: GenerateCompletionForm,
     form_data: GenerateCompletionForm,
     url_idx: Optional[int] = None,
     url_idx: Optional[int] = None,
-    user=Depends(get_current_user),
+    user=Depends(get_verified_user),
 ):
 ):
 
 
     if url_idx == None:
     if url_idx == None:
@@ -833,7 +838,7 @@ class GenerateChatCompletionForm(BaseModel):
 async def generate_chat_completion(
 async def generate_chat_completion(
     form_data: GenerateChatCompletionForm,
     form_data: GenerateChatCompletionForm,
     url_idx: Optional[int] = None,
     url_idx: Optional[int] = None,
-    user=Depends(get_current_user),
+    user=Depends(get_verified_user),
 ):
 ):
 
 
     if url_idx == None:
     if url_idx == None:
@@ -942,7 +947,7 @@ class OpenAIChatCompletionForm(BaseModel):
 async def generate_openai_chat_completion(
 async def generate_openai_chat_completion(
     form_data: OpenAIChatCompletionForm,
     form_data: OpenAIChatCompletionForm,
     url_idx: Optional[int] = None,
     url_idx: Optional[int] = None,
-    user=Depends(get_current_user),
+    user=Depends(get_verified_user),
 ):
 ):
 
 
     if url_idx == None:
     if url_idx == None:
@@ -1241,7 +1246,9 @@ def upload_model(file: UploadFile = File(...), url_idx: Optional[int] = None):
 
 
 
 
 @app.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE"])
 @app.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE"])
-async def deprecated_proxy(path: str, request: Request, user=Depends(get_current_user)):
+async def deprecated_proxy(
+    path: str, request: Request, user=Depends(get_verified_user)
+):
     url = app.state.OLLAMA_BASE_URLS[0]
     url = app.state.OLLAMA_BASE_URLS[0]
     target_url = f"{url}/{path}"
     target_url = f"{url}/{path}"
 
 

+ 74 - 64
backend/apps/web/routers/chats.py

@@ -93,6 +93,31 @@ async def get_archived_session_user_chat_list(
     return Chats.get_archived_chat_list_by_user_id(user.id, skip, limit)
     return Chats.get_archived_chat_list_by_user_id(user.id, skip, limit)
 
 
 
 
+############################
+# GetSharedChatById
+############################
+
+
+@router.get("/share/{share_id}", response_model=Optional[ChatResponse])
+async def get_shared_chat_by_id(share_id: str, user=Depends(get_current_user)):
+    if user.role == "pending":
+        raise HTTPException(
+            status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
+        )
+
+    if user.role == "user":
+        chat = Chats.get_chat_by_share_id(share_id)
+    elif user.role == "admin":
+        chat = Chats.get_chat_by_id(share_id)
+
+    if chat:
+        return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
+    else:
+        raise HTTPException(
+            status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
+        )
+
+
 ############################
 ############################
 # GetChats
 # GetChats
 ############################
 ############################
@@ -141,6 +166,55 @@ async def create_new_chat(form_data: ChatForm, user=Depends(get_current_user)):
         )
         )
 
 
 
 
+############################
+# GetChatsByTags
+############################
+
+
+class TagNameForm(BaseModel):
+    name: str
+    skip: Optional[int] = 0
+    limit: Optional[int] = 50
+
+
+@router.post("/tags", response_model=List[ChatTitleIdResponse])
+async def get_user_chat_list_by_tag_name(
+    form_data: TagNameForm, user=Depends(get_current_user)
+):
+
+    print(form_data)
+    chat_ids = [
+        chat_id_tag.chat_id
+        for chat_id_tag in Tags.get_chat_ids_by_tag_name_and_user_id(
+            form_data.name, user.id
+        )
+    ]
+
+    chats = Chats.get_chat_list_by_chat_ids(chat_ids, form_data.skip, form_data.limit)
+
+    if len(chats) == 0:
+        Tags.delete_tag_by_tag_name_and_user_id(form_data.name, user.id)
+
+    return chats
+
+
+############################
+# GetAllTags
+############################
+
+
+@router.get("/tags/all", response_model=List[TagModel])
+async def get_all_tags(user=Depends(get_current_user)):
+    try:
+        tags = Tags.get_tags_by_user_id(user.id)
+        return tags
+    except Exception as e:
+        log.exception(e)
+        raise HTTPException(
+            status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
+        )
+
+
 ############################
 ############################
 # GetChatById
 # GetChatById
 ############################
 ############################
@@ -274,70 +348,6 @@ async def delete_shared_chat_by_id(id: str, user=Depends(get_current_user)):
         )
         )
 
 
 
 
-############################
-# GetSharedChatById
-############################
-
-
-@router.get("/share/{share_id}", response_model=Optional[ChatResponse])
-async def get_shared_chat_by_id(share_id: str, user=Depends(get_current_user)):
-    if user.role == "pending":
-        raise HTTPException(
-            status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
-        )
-
-    if user.role == "user":
-        chat = Chats.get_chat_by_share_id(share_id)
-    elif user.role == "admin":
-        chat = Chats.get_chat_by_id(share_id)
-
-    if chat:
-        return ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)})
-    else:
-        raise HTTPException(
-            status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND
-        )
-
-
-############################
-# GetAllTags
-############################
-
-
-@router.get("/tags/all", response_model=List[TagModel])
-async def get_all_tags(user=Depends(get_current_user)):
-    try:
-        tags = Tags.get_tags_by_user_id(user.id)
-        return tags
-    except Exception as e:
-        log.exception(e)
-        raise HTTPException(
-            status_code=status.HTTP_400_BAD_REQUEST, detail=ERROR_MESSAGES.DEFAULT()
-        )
-
-
-############################
-# GetChatsByTags
-############################
-
-
-@router.get("/tags/tag/{tag_name}", response_model=List[ChatTitleIdResponse])
-async def get_user_chat_list_by_tag_name(
-    tag_name: str, user=Depends(get_current_user), skip: int = 0, limit: int = 50
-):
-    chat_ids = [
-        chat_id_tag.chat_id
-        for chat_id_tag in Tags.get_chat_ids_by_tag_name_and_user_id(tag_name, user.id)
-    ]
-
-    chats = Chats.get_chat_list_by_chat_ids(chat_ids, skip, limit)
-
-    if len(chats) == 0:
-        Tags.delete_tag_by_tag_name_and_user_id(tag_name, user.id)
-
-    return chats
-
-
 ############################
 ############################
 # GetChatTagsById
 # GetChatTagsById
 ############################
 ############################

+ 3 - 1
backend/main.py

@@ -25,6 +25,8 @@ from apps.litellm.main import (
     start_litellm_background,
     start_litellm_background,
     shutdown_litellm_background,
     shutdown_litellm_background,
 )
 )
+
+
 from apps.audio.main import app as audio_app
 from apps.audio.main import app as audio_app
 from apps.images.main import app as images_app
 from apps.images.main import app as images_app
 from apps.rag.main import app as rag_app
 from apps.rag.main import app as rag_app
@@ -74,7 +76,7 @@ class SPAStaticFiles(StaticFiles):
 
 
 
 
 print(
 print(
-    f"""
+    rf"""
   ___                    __        __   _     _   _ ___ 
   ___                    __        __   _     _   _ ___ 
  / _ \ _ __   ___ _ __   \ \      / /__| |__ | | | |_ _|
  / _ \ _ __   ___ _ __   \ \      / /__| |__ | | | |_ _|
 | | | | '_ \ / _ \ '_ \   \ \ /\ / / _ \ '_ \| | | || | 
 | | | | '_ \ / _ \ '_ \   \ \ /\ / / _ \ '_ \| | | || | 

+ 2 - 2
cypress/e2e/chat.cy.ts

@@ -21,14 +21,14 @@ describe('Settings', () => {
 			// Click on the model selector
 			// Click on the model selector
 			cy.get('button[aria-label="Select a model"]').click();
 			cy.get('button[aria-label="Select a model"]').click();
 			// Select the first model
 			// Select the first model
-			cy.get('div[role="option"][data-value]').first().click();
+			cy.get('button[aria-label="model-item"]').first().click();
 		});
 		});
 
 
 		it('user can perform text chat', () => {
 		it('user can perform text chat', () => {
 			// Click on the model selector
 			// Click on the model selector
 			cy.get('button[aria-label="Select a model"]').click();
 			cy.get('button[aria-label="Select a model"]').click();
 			// Select the first model
 			// Select the first model
-			cy.get('div[role="option"][data-value]').first().click();
+			cy.get('button[aria-label="model-item"]').first().click();
 			// Type a message
 			// Type a message
 			cy.get('#chat-textarea').type('Hi, what can you do? A single sentence only please.', {
 			cy.get('#chat-textarea').type('Hi, what can you do? A single sentence only please.', {
 				force: true
 				force: true

+ 19 - 6
src/lib/apis/chats/index.ts

@@ -1,4 +1,5 @@
 import { WEBUI_API_BASE_URL } from '$lib/constants';
 import { WEBUI_API_BASE_URL } from '$lib/constants';
+import { getTimeRange } from '$lib/utils';
 
 
 export const createNewChat = async (token: string, chat: object) => {
 export const createNewChat = async (token: string, chat: object) => {
 	let error = null;
 	let error = null;
@@ -59,7 +60,10 @@ export const getChatList = async (token: string = '') => {
 		throw error;
 		throw error;
 	}
 	}
 
 
-	return res;
+	return res.map((chat) => ({
+		...chat,
+		time_range: getTimeRange(chat.updated_at)
+	}));
 };
 };
 
 
 export const getChatListByUserId = async (token: string = '', userId: string) => {
 export const getChatListByUserId = async (token: string = '', userId: string) => {
@@ -90,7 +94,10 @@ export const getChatListByUserId = async (token: string = '', userId: string) =>
 		throw error;
 		throw error;
 	}
 	}
 
 
-	return res;
+	return res.map((chat) => ({
+		...chat,
+		time_range: getTimeRange(chat.updated_at)
+	}));
 };
 };
 
 
 export const getArchivedChatList = async (token: string = '') => {
 export const getArchivedChatList = async (token: string = '') => {
@@ -220,13 +227,16 @@ export const getAllChatTags = async (token: string) => {
 export const getChatListByTagName = async (token: string = '', tagName: string) => {
 export const getChatListByTagName = async (token: string = '', tagName: string) => {
 	let error = null;
 	let error = null;
 
 
-	const res = await fetch(`${WEBUI_API_BASE_URL}/chats/tags/tag/${tagName}`, {
-		method: 'GET',
+	const res = await fetch(`${WEBUI_API_BASE_URL}/chats/tags`, {
+		method: 'POST',
 		headers: {
 		headers: {
 			Accept: 'application/json',
 			Accept: 'application/json',
 			'Content-Type': 'application/json',
 			'Content-Type': 'application/json',
 			...(token && { authorization: `Bearer ${token}` })
 			...(token && { authorization: `Bearer ${token}` })
-		}
+		},
+		body: JSON.stringify({
+			name: tagName
+		})
 	})
 	})
 		.then(async (res) => {
 		.then(async (res) => {
 			if (!res.ok) throw await res.json();
 			if (!res.ok) throw await res.json();
@@ -245,7 +255,10 @@ export const getChatListByTagName = async (token: string = '', tagName: string)
 		throw error;
 		throw error;
 	}
 	}
 
 
-	return res;
+	return res.map((chat) => ({
+		...chat,
+		time_range: getTimeRange(chat.updated_at)
+	}));
 };
 };
 
 
 export const getChatById = async (token: string, id: string) => {
 export const getChatById = async (token: string, id: string) => {

+ 4 - 1
src/lib/components/chat/MessageInput.svelte

@@ -411,7 +411,9 @@
 
 
 {#if dragged}
 {#if dragged}
 	<div
 	<div
-		class="fixed lg:w-[calc(100%-260px)] w-full h-full flex z-50 touch-none pointer-events-none"
+		class="fixed {$showSidebar
+			? 'left-0 lg:left-[260px] lg:w-[calc(100%-260px)]'
+			: 'left-0'}  w-full h-full flex z-50 touch-none pointer-events-none"
 		id="dropzone"
 		id="dropzone"
 		role="region"
 		role="region"
 		aria-label="Drag and Drop Container"
 		aria-label="Drag and Drop Container"
@@ -763,6 +765,7 @@
 								bind:value={prompt}
 								bind:value={prompt}
 								on:keypress={(e) => {
 								on:keypress={(e) => {
 									if (
 									if (
+										window.innerWidth > 1024 ||
 										!(
 										!(
 											'ontouchstart' in window ||
 											'ontouchstart' in window ||
 											navigator.maxTouchPoints > 0 ||
 											navigator.maxTouchPoints > 0 ||

+ 15 - 5
src/lib/components/chat/ModelSelector/Selector.svelte

@@ -25,7 +25,9 @@
 
 
 	export let items = [{ value: 'mango', label: 'Mango' }];
 	export let items = [{ value: 'mango', label: 'Mango' }];
 
 
-	export let className = 'max-w-lg';
+	export let className = ' w-[32rem]';
+
+	let show = false;
 
 
 	let selectedModel = '';
 	let selectedModel = '';
 	$: selectedModel = items.find((item) => item.value === value) ?? '';
 	$: selectedModel = items.find((item) => item.value === value) ?? '';
@@ -181,6 +183,7 @@
 </script>
 </script>
 
 
 <DropdownMenu.Root
 <DropdownMenu.Root
+	bind:open={show}
 	onOpenChange={async () => {
 	onOpenChange={async () => {
 		searchValue = '';
 		searchValue = '';
 		window.setTimeout(() => document.getElementById('model-search-input')?.focus(), 0);
 		window.setTimeout(() => document.getElementById('model-search-input')?.focus(), 0);
@@ -199,7 +202,7 @@
 		</div>
 		</div>
 	</DropdownMenu.Trigger>
 	</DropdownMenu.Trigger>
 	<DropdownMenu.Content
 	<DropdownMenu.Content
-		class=" z-40 w-full {className} justify-start rounded-lg  bg-white dark:bg-gray-900 dark:text-white shadow-lg border border-gray-300/30 dark:border-gray-700/50  outline-none "
+		class=" z-40 {className} max-w-[calc(100vw-1rem)] justify-start rounded-lg  bg-white dark:bg-gray-900 dark:text-white shadow-lg border border-gray-300/30 dark:border-gray-700/50  outline-none "
 		transition={flyAndScale}
 		transition={flyAndScale}
 		side={'bottom-start'}
 		side={'bottom-start'}
 		sideOffset={4}
 		sideOffset={4}
@@ -214,6 +217,7 @@
 						bind:value={searchValue}
 						bind:value={searchValue}
 						class="w-full text-sm bg-transparent outline-none"
 						class="w-full text-sm bg-transparent outline-none"
 						placeholder={searchPlaceholder}
 						placeholder={searchPlaceholder}
+						autocomplete="off"
 					/>
 					/>
 				</div>
 				</div>
 
 
@@ -222,10 +226,13 @@
 
 
 			<div class="px-3 my-2 max-h-72 overflow-y-auto scrollbar-none">
 			<div class="px-3 my-2 max-h-72 overflow-y-auto scrollbar-none">
 				{#each filteredItems as item}
 				{#each filteredItems as item}
-					<DropdownMenu.Item
-						class="flex w-full font-medium line-clamp-1 select-none items-center rounded-button py-2 pl-3 pr-1.5 text-sm  text-gray-700 dark:text-gray-100  outline-none transition-all duration-75 hover:bg-gray-100 dark:hover:bg-gray-850 rounded-lg cursor-pointer data-[highlighted]:bg-muted"
+					<button
+						aria-label="model-item"
+						class="flex w-full text-left font-medium line-clamp-1 select-none items-center rounded-button py-2 pl-3 pr-1.5 text-sm text-gray-700 dark:text-gray-100 outline-none transition-all duration-75 hover:bg-gray-100 dark:hover:bg-gray-850 rounded-lg cursor-pointer data-[highlighted]:bg-muted"
 						on:click={() => {
 						on:click={() => {
 							value = item.value;
 							value = item.value;
+
+							show = false;
 						}}
 						}}
 					>
 					>
 						<div class="flex items-center gap-2">
 						<div class="flex items-center gap-2">
@@ -294,7 +301,7 @@
 								<Check />
 								<Check />
 							</div>
 							</div>
 						{/if}
 						{/if}
-					</DropdownMenu.Item>
+					</button>
 				{:else}
 				{:else}
 					<div>
 					<div>
 						<div class="block px-3 py-2 text-sm text-gray-700 dark:text-gray-100">
 						<div class="block px-3 py-2 text-sm text-gray-700 dark:text-gray-100">
@@ -392,6 +399,9 @@
 					</div>
 					</div>
 				{/each}
 				{/each}
 			</div>
 			</div>
+
+			<div class="hidden w-[42rem]" />
+			<div class="hidden w-[32rem]" />
 		</slot>
 		</slot>
 	</DropdownMenu.Content>
 	</DropdownMenu.Content>
 </DropdownMenu.Root>
 </DropdownMenu.Root>

+ 52 - 0
src/lib/components/chat/ShortcutsModal.svelte

@@ -209,6 +209,58 @@
 				</div>
 				</div>
 			</div>
 			</div>
 		</div>
 		</div>
+
+		<div class=" flex justify-between dark:text-gray-300 px-5">
+			<div class=" text-lg font-medium self-center">{$i18n.t('Input commands')}</div>
+		</div>
+
+		<div class="flex flex-col md:flex-row w-full p-5 md:space-x-4 dark:text-gray-200">
+			<div class=" flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6">
+				<div class="flex flex-col space-y-3 w-full self-start">
+					<div class="w-full flex justify-between items-center">
+						<div class=" text-sm">
+							{$i18n.t('Attach file')}
+						</div>
+
+						<div class="flex space-x-1 text-xs">
+							<div
+								class=" h-fit py-1 px-2 flex items-center justify-center rounded border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
+							>
+								#
+							</div>
+						</div>
+					</div>
+
+					<div class="w-full flex justify-between items-center">
+						<div class=" text-sm">
+							{$i18n.t('Add custom prompt')}
+						</div>
+
+						<div class="flex space-x-1 text-xs">
+							<div
+								class=" h-fit py-1 px-2 flex items-center justify-center rounded border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
+							>
+								/
+							</div>
+						</div>
+					</div>
+
+					<div class="w-full flex justify-between items-center">
+						<div class=" text-sm">
+							{$i18n.t('Select model')}
+						</div>
+
+						<div class="flex space-x-1 text-xs">
+							<div
+								class=" h-fit py-1 px-2 flex items-center justify-center rounded border border-black/10 capitalize text-gray-600 dark:border-white/10 dark:text-gray-300"
+							>
+								@
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
 	</div>
 	</div>
 </Modal>
 </Modal>
 
 

+ 21 - 3
src/lib/components/chat/Tags.svelte

@@ -3,11 +3,15 @@
 		addTagById,
 		addTagById,
 		deleteTagById,
 		deleteTagById,
 		getAllChatTags,
 		getAllChatTags,
+		getChatList,
+		getChatListByTagName,
 		getTagsById,
 		getTagsById,
 		updateChatById
 		updateChatById
 	} from '$lib/apis/chats';
 	} from '$lib/apis/chats';
-	import { tags as _tags } from '$lib/stores';
-	import { onMount } from 'svelte';
+	import { tags as _tags, chats } from '$lib/stores';
+	import { createEventDispatcher, onMount } from 'svelte';
+
+	const dispatch = createEventDispatcher();
 
 
 	import Tags from '../common/Tags.svelte';
 	import Tags from '../common/Tags.svelte';
 
 
@@ -39,7 +43,21 @@
 			tags: tags
 			tags: tags
 		});
 		});
 
 
-		_tags.set(await getAllChatTags(localStorage.token));
+		console.log($_tags);
+
+		await _tags.set(await getAllChatTags(localStorage.token));
+
+		console.log($_tags);
+
+		if ($_tags.map((t) => t.name).includes(tagName)) {
+			await chats.set(await getChatListByTagName(localStorage.token, tagName));
+
+			if ($chats.find((chat) => chat.id === chatId)) {
+				dispatch('close');
+			}
+		} else {
+			await chats.set(await getChatList(localStorage.token));
+		}
 	};
 	};
 
 
 	onMount(async () => {
 	onMount(async () => {

+ 1 - 1
src/lib/components/common/ImagePreview.svelte

@@ -51,7 +51,7 @@
 				<button
 				<button
 					class=" p-5"
 					class=" p-5"
 					on:click={() => {
 					on:click={() => {
-						downloadImage(src, 'Image.png');
+						downloadImage(src, src.substring(src.lastIndexOf('/') + 1));
 					}}
 					}}
 				>
 				>
 					<svg
 					<svg

+ 35 - 21
src/lib/components/layout/Sidebar.svelte

@@ -44,6 +44,28 @@
 	let showDropdown = false;
 	let showDropdown = false;
 	let isEditing = false;
 	let isEditing = false;
 
 
+	let filteredChatList = [];
+
+	$: filteredChatList = $chats.filter((chat) => {
+		if (search === '') {
+			return true;
+		} else {
+			let title = chat.title.toLowerCase();
+			const query = search.toLowerCase();
+
+			let contentMatches = false;
+			// Access the messages within chat.chat.messages
+			if (chat.chat && chat.chat.messages && Array.isArray(chat.chat.messages)) {
+				contentMatches = chat.chat.messages.some((message) => {
+					// Check if message.content exists and includes the search query
+					return message.content && message.content.toLowerCase().includes(query);
+				});
+			}
+
+			return title.includes(query) || contentMatches;
+		}
+	});
+
 	onMount(async () => {
 	onMount(async () => {
 		showSidebar.set(window.innerWidth > BREAKPOINT);
 		showSidebar.set(window.innerWidth > BREAKPOINT);
 		await chats.set(await getChatList(localStorage.token));
 		await chats.set(await getChatList(localStorage.token));
@@ -418,25 +440,17 @@
 			{/if}
 			{/if}
 
 
 			<div class="pl-2 my-2 flex-1 flex flex-col space-y-1 overflow-y-auto scrollbar-none">
 			<div class="pl-2 my-2 flex-1 flex flex-col space-y-1 overflow-y-auto scrollbar-none">
-				{#each $chats.filter((chat) => {
-					if (search === '') {
-						return true;
-					} else {
-						let title = chat.title.toLowerCase();
-						const query = search.toLowerCase();
-
-						let contentMatches = false;
-						// Access the messages within chat.chat.messages
-						if (chat.chat && chat.chat.messages && Array.isArray(chat.chat.messages)) {
-							contentMatches = chat.chat.messages.some((message) => {
-								// Check if message.content exists and includes the search query
-								return message.content && message.content.toLowerCase().includes(query);
-							});
-						}
-
-						return title.includes(query) || contentMatches;
-					}
-				}) as chat, i}
+				{#each filteredChatList as chat, idx}
+					{#if idx === 0 || (idx > 0 && chat.time_range !== filteredChatList[idx - 1].time_range)}
+						<div
+							class="w-full pl-2.5 text-xs text-gray-500 dark:text-gray-500 font-medium {idx === 0
+								? ''
+								: 'pt-5'} pb-0.5"
+						>
+							{chat.time_range}
+						</div>
+					{/if}
+
 					<div class=" w-full pr-2 relative group">
 					<div class=" w-full pr-2 relative group">
 						{#if chatTitleEditId === chat.id}
 						{#if chatTitleEditId === chat.id}
 							<div
 							<div
@@ -836,12 +850,12 @@
 					>
 					>
 						<div class="flex h-6 w-6 flex-col items-center">
 						<div class="flex h-6 w-6 flex-col items-center">
 							<div
 							<div
-								class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[0.15rem] {show
+								class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[0.15rem] {$showSidebar
 									? 'group-hover:rotate-[15deg]'
 									? 'group-hover:rotate-[15deg]'
 									: 'group-hover:rotate-[-15deg]'}"
 									: 'group-hover:rotate-[-15deg]'}"
 							/>
 							/>
 							<div
 							<div
-								class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[-0.15rem] {show
+								class="h-3 w-1 rounded-full bg-[#0f0f0f] dark:bg-white rotate-0 translate-y-[-0.15rem] {$showSidebar
 									? 'group-hover:rotate-[-15deg]'
 									? 'group-hover:rotate-[-15deg]'
 									: 'group-hover:rotate-[15deg]'}"
 									: 'group-hover:rotate-[15deg]'}"
 							/>
 							/>

+ 7 - 1
src/lib/components/layout/Sidebar/ChatMenu.svelte

@@ -75,7 +75,13 @@
 			<hr class="border-gray-100 dark:border-gray-800 mt-2.5 mb-1.5" />
 			<hr class="border-gray-100 dark:border-gray-800 mt-2.5 mb-1.5" />
 
 
 			<div class="flex p-1">
 			<div class="flex p-1">
-				<Tags {chatId} />
+				<Tags
+					{chatId}
+					on:close={() => {
+						show = false;
+						onClose();
+					}}
+				/>
 			</div>
 			</div>
 		</DropdownMenu.Content>
 		</DropdownMenu.Content>
 	</div>
 	</div>

+ 447 - 0
src/lib/i18n/locales/ar-BH/translation.json

@@ -0,0 +1,447 @@
+{
+	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "",
+	"(Beta)": "(تجريبي)",
+	"(e.g. `sh webui.sh --api`)": "(مثال `sh webui.sh --api`)",
+	"(latest)": "(الأخير)",
+	"{{modelName}} is thinking...": "{{modelName}} ...يفكر",
+	"{{user}}'s Chats": "{{user}}' الدردشات",
+	"{{webUIName}} Backend Required": "",
+	"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 Users": "جميع المستخدمين",
+	"Allow": "يسمح",
+	"Allow Chat Deletion": "يستطيع حذف المحادثات",
+	"alphanumeric characters and hyphens": "الأحرف الأبجدية الرقمية والواصلات",
+	"Already have an account?": "هل تملك حساب ؟",
+	"an assistant": "مساعد",
+	"and": "و",
+	"API Base URL": "API الرابط الرئيسي",
+	"API Key": "API مفتاح",
+	"API Key created.": "API تم أنشاء المفتاح",
+	"API keys": "API المفاتيح",
+	"API RPM": "API RPM",
+	"Archive": "الأرشيف",
+	"Archived Chats": "الأرشيف المحادثات",
+	"are allowed - Activate this command by typing": "مسموح - قم بتنشيط هذا الأمر عن طريق الكتابة",
+	"Are you sure?": "هل أنت متأكد ؟",
+	"Attach file": "",
+	"Attention to detail": "انتبه للتفاصيل",
+	"Audio": "صوتي",
+	"Auto-playback response": "استجابة التشغيل التلقائي",
+	"Auto-send input after 3 sec.": "إرسال تلقائي للإدخال بعد 3 ثوانٍ.",
+	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 الرابط الرئيسي",
+	"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 الرابط مطلوب",
+	"available!": "متاح",
+	"Back": "خلف",
+	"Bad Response": "استجابة خطاء",
+	"Being lazy": "كون كسول",
+	"Builder Mode": "بناء الموديل",
+	"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 تداخل",
+	"Chunk Params": "Chunk المتغيرات",
+	"Chunk Size": "Chunk حجم",
+	"Click here for help.": "أضغط هنا للمساعدة",
+	"Click here to check other modelfiles.": "انقر هنا للتحقق من ملفات الموديلات الأخرى.",
+	"Click here to select": "أضغط هنا للاختيار",
+	"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",
+	"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": "إنشاء حساب",
+	"Created at": "أنشئت في",
+	"Created At": "أنشئت من",
+	"Current Model": "الموديل المختار",
+	"Current Password": "كلمة السر الحالية",
+	"Custom": "مخصص",
+	"Customize Ollama models for a specific purpose": "تخصيص الموديل Ollama لغرض محدد",
+	"Dark": "مظلم",
+	"Database": "قاعدة البيانات",
+	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
+	"Default": "الإفتراضي",
+	"Default (Automatic1111)": "الإفتراضي (Automatic1111)",
+	"Default (SentenceTransformers)": "الإفتراضي (SentenceTransformers)",
+	"Default (Web API)": "الإفتراضي (Web API)",
+	"Default model updated": "الإفتراضي تحديث الموديل",
+	"Default Prompt Suggestions": "الإفتراضي Prompt الاقتراحات",
+	"Default User Role": "الإفتراضي صلاحيات المستخدم",
+	"delete": "حذف",
+	"Delete": "حذف.",
+	"Delete a model": "حذف الموديل",
+	"Delete chat": "حذف المحادثه",
+	"Delete Chat": "حذف المحادثه.",
+	"Delete Chats": "حذ المحادثات",
+	"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 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'.",
+	"Edit": "تعديل",
+	"Edit Doc": "تعديل الملف",
+	"Edit User": "تعديل المستخدم",
+	"Email": "البريد",
+	"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 أعمدة بهذا الترتيب: Name, Email, Password, Role.",
+	"Enter {{role}} message here": "أدخل رسالة {{role}} هنا",
+	"Enter Chunk Overlap": "أدخل Chunk المتداخل",
+	"Enter Chunk Size": "أدخل Chunk الحجم",
+	"Enter Image Size (e.g. 512x512)": "أدخل حجم الصورة (e.g. 512x512)",
+	"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)",
+	"Enter LiteLLM Model (litellm_params.model)": "أدخل LiteLLM الموديل (litellm_params.model)",
+	"Enter Max Tokens (litellm_params.max_tokens)": "أدخل أكثر Tokens (litellm_params.max_tokens)",
+	"Enter model tag (e.g. {{modelTag}})": "أدخل الموديل تاق (e.g. {{modelTag}})",
+	"Enter Number of Steps (e.g. 50)": "أدخل عدد الخطوات (e.g. 50)",
+	"Enter Score": "أدخل النتيجة",
+	"Enter stop sequence": "أدخل تسلسل التوقف",
+	"Enter Top K": "Enter Top K",
+	"Enter URL (e.g. http://127.0.0.1:7860/)": "الرابط (e.g. http://127.0.0.1:7860/)",
+	"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.": "فشل في إنشاء مفتاح API.",
+	"Failed to read clipboard contents": "فشل في قراءة محتويات الحافظة",
+	"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}}",
+	"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": "قم بتضمين علامة `-api` عند تشغيل Stable-diffusion-webui",
+	"Input commands": "",
+	"Interface": "واجهه المستخدم",
+	"join our Discord for help.": "انضم إلى Discord للحصول على المساعدة.",
+	"JSON": "JSON",
+	"JWT Expiration": "JWT تجريبي",
+	"JWT Token": "JWT Token",
+	"Keep Alive": "Keep Alive",
+	"Keyboard shortcuts": "اختصارات لوحة المفاتيح",
+	"Language": "اللغة",
+	"Last Active": "آخر نشاط",
+	"Light": "فاتح",
+	"Listening...": "جاري الاستماع...",
+	"LLMs can make mistakes. Verify important information.": "يمكن أن يرتكب LLM الأخطاء. التحقق من المعلومات الهامة.",
+	"Made by OpenWebUI Community": "تم إنشاؤه بواسطة مجتمع OpenWebUI",
+	"Make sure to enclose them with": "تأكد من إرفاقها",
+	"Manage LiteLLM Models": "إدارة نماذج LiteLLM",
+	"Manage Models": "إدارة النماذج",
+	"Manage Ollama Models": "إدارة موديلات Ollama",
+	"Max Tokens": "Max Tokens",
+	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "يمكن تنزيل 3 نماذج كحد أقصى في وقت واحد. الرجاء معاودة المحاولة في وقت لاحق.",
+	"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",
+	"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": "كلمة المرور الجديدة",
+	"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": "إشعارات",
+	"Off": "أغلاق",
+	"Okay, Let's Go!": "حسنا دعنا نذهب!",
+	"OLED Dark": "OLED داكن",
+	"Ollama": "Ollama",
+	"Ollama Base URL": "Ollama الرابط الافتراضي",
+	"Ollama Version": "Ollama الاصدار",
+	"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.": "خطاء! يبدو أن عنوان URL غير صالح. يرجى التحقق مرة أخرى والمحاولة مرة أخرى.",
+	"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "خطاء! أنت تستخدم طريقة غير مدعومة (الواجهة الأمامية فقط). يرجى تقديم واجهة WebUI من الواجهة الخلفية.",
+	"Open": "فتح",
+	"Open AI": "فتح AI",
+	"Open AI (Dall-E)": "فتح AI (Dall-E)",
+	"Open new chat": "فتح محادثة جديده",
+	"OpenAI": "OpenAI",
+	"OpenAI API": "OpenAI API",
+	"OpenAI API Config": "OpenAI API إعدادات",
+	"OpenAI API Key is required.": "مطلوب مفتاح OpenAI API.",
+	"OpenAI URL/Key required.": "مطلوب عنوان URL/مفتاح OpenAI.",
+	"or": "أو",
+	"Other": "آخر",
+	"Parameters": "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": "موقف ايجابي",
+	"Profile Image": "صورة الملف الشخصي",
+	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "موجه (على سبيل المثال: أخبرني بحقيقة ممتعة عن الإمبراطورية الرومانية)",
+	"Prompt Content": "محتوى عاجل",
+	"Prompt suggestions": "اقتراحات سريعة",
+	"Prompts": "حث",
+	"Pull a model from Ollama.com": "سحب الموديل من Ollama.com",
+	"Pull Progress": "سحب التقدم",
+	"Query Params": "Query Params",
+	"RAG Template": "RAG تنمبلت",
+	"Raw Format": "Raw فورمات",
+	"Read Aloud": "أقراء لي",
+	"Record voice": "سجل صوت",
+	"Redirecting you to OpenWebUI Community": "إعادة توجيهك إلى مجتمع OpenWebUI",
+	"Refused when it shouldn't have": "رفض عندما لا ينبغي أن يكون",
+	"Regenerate": "تجديد",
+	"Release Notes": "ملاحظات الإصدار",
+	"Remove": "إزالة",
+	"Repeat Last N": "كرر آخر N",
+	"Repeat Penalty": "كرر المخالفة",
+	"Request Mode": "وضع الطلب",
+	"Reranking model disabled": "تم تعطيل نموذج إعادة الترتيب",
+	"Reranking model set to \"{{reranking_model}}\"": "تم ضبط نموذج إعادة الترتيب على \"{{reranking_model}}\"",
+	"Reset Vector Storage": "إعادة تعيين تخزين المتجهات",
+	"Response AutoCopy to Clipboard": "النسخ التلقائي للاستجابة إلى الحافظة",
+	"Role": "منصب",
+	"Rosé Pine": "Rosé Pine",
+	"Rosé Pine Dawn": "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": "Seed",
+	"Select a mode": "أختار موديل",
+	"Select a model": "أختار الموديل",
+	"Select an Ollama instance": "أختار سيرفر Ollama",
+	"Select model": "",
+	"Send a Message": "أرسل رسالة.",
+	"Send message": "أرسل رسالة",
+	"Server connection verified": "تم التحقق من اتصال الخادم",
+	"Set as default": "الافتراضي",
+	"Set Default Model": "تفعيد الموديل الافتراضي",
+	"Set Image Size": "حجم الصورة",
+	"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": "جاري الدخول",
+	"Speech recognition error: {{error}}": "خطأ في التعرف على الكلام: {{error}}",
+	"Speech-to-Text Engine": "محرك تحويل الكلام إلى نص",
+	"SpeechRecognition API is not supported in this browser.": "API SpeechRecognition غير مدعومة في هذا المتصفح.",
+	"Stop Sequence": "وقف التسلسل",
+	"STT Settings": "STT اعدادات",
+	"Submit": "إرسال",
+	"Subtitle (e.g. about the Roman Empire)": "الترجمة (e.g. about the Roman Empire)",
+	"Success": "نجاح",
+	"Successfully updated.": "تم التحديث بنجاح.",
+	"Sync All": "مزامنة الكل",
+	"System": "النظام",
+	"System Prompt": "محادثة النظام",
+	"Tags": "الوسوم",
+	"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%).": "يجب أن تكون النتيجة قيمة تتراوح بين 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.": "ملاحضة: قم بتحديث عدة فتحات متغيرة على التوالي عن طريق الضغط على مفتاح tab في مدخلات الدردشة بعد كل استبدال.",
+	"Title": "العنوان",
+	"Title (e.g. Tell me a fun fact)": "العناون (e.g. Tell me a fun fact)",
+	"Title Auto-Generation": "توليد تلقائي للعنوان",
+	"Title Generation Prompt": "موجه إنشاء العنوان",
+	"to": "الى",
+	"To access the available model names for downloading,": "للوصول إلى أسماء الموديلات المتاحة للتنزيل،",
+	"To access the GGUF models available for downloading,": "للوصول إلى الموديلات GGUF المتاحة للتنزيل،",
+	"to chat input.": "الى كتابة المحادثه",
+	"Toggle settings": "فتح وأغلاق الاعدادات",
+	"Toggle sidebar": "فتح وأغلاق الشريط الجانبي",
+	"Top K": "Top K",
+	"Top P": "Top P",
+	"Trouble accessing Ollama?": "هل تواجه مشكلة في الوصول إلى Olma؟",
+	"TTS Settings": "TTS اعدادات",
+	"Type Hugging Face Resolve (Download) URL": "اكتب عنوان 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 Embedding Model": "تحديث الموديل التضمين",
+	"Update embedding model (e.g. {{model}})": "تحديث الموديلات التضمين (e.g. {{model}})",
+	"Update password": "تحديث كلمة المرور",
+	"Update Reranking Model": "تحديث الموديل إعادة الترتيب",
+	"Update reranking model (e.g. {{model}})": "تحديث الموديل إعادة الترتيب (e.g. {{model}})",
+	"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": "أستخدم 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",
+	"Webhook URL": "Webhook الرابط",
+	"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 (Local)",
+	"Write a prompt suggestion (e.g. Who are you?)": "اكتب اقتراحًا سريعًا (على سبيل المثال، من أنت؟)",
+	"Write a summary in 50 words that summarizes [topic or keyword].": "اكتب ملخصًا في 50 كلمة يلخص [الموضوع أو الكلمة الرئيسية].",
+	"You": "أنت",
+	"You're a helpful assistant.": "مساعدك المفيد هنا",
+	"You're now logged in.": "لقد قمت الآن بتسجيل الدخول.",
+	"Youtube": "Youtube"
+}

+ 4 - 0
src/lib/i18n/locales/bg-BG/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Добавяне на кратко описание за това какво прави този модфайл",
 	"Add a short description about what this modelfile does": "Добавяне на кратко описание за това какво прави този модфайл",
 	"Add a short title for this prompt": "Добавяне на кратко заглавие за този промпт",
 	"Add a short title for this prompt": "Добавяне на кратко заглавие за този промпт",
 	"Add a tag": "Добавяне на таг",
 	"Add a tag": "Добавяне на таг",
+	"Add custom prompt": "",
 	"Add Docs": "Добавяне на Документи",
 	"Add Docs": "Добавяне на Документи",
 	"Add Files": "Добавяне на Файлове",
 	"Add Files": "Добавяне на Файлове",
 	"Add message": "Добавяне на съобщение",
 	"Add message": "Добавяне на съобщение",
@@ -44,6 +45,7 @@
 	"Archived Chats": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "са разрешени - Активирайте тази команда чрез въвеждане",
 	"are allowed - Activate this command by typing": "са разрешени - Активирайте тази команда чрез въвеждане",
 	"Are you sure?": "Сигурни ли сте?",
 	"Are you sure?": "Сигурни ли сте?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Аудио",
 	"Audio": "Аудио",
 	"Auto-playback response": "Аувтоматично възпроизвеждане на Отговора",
 	"Auto-playback response": "Аувтоматично възпроизвеждане на Отговора",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Импортване на модфайлове",
 	"Import Modelfiles": "Импортване на модфайлове",
 	"Import Prompts": "Импортване на промптове",
 	"Import Prompts": "Импортване на промптове",
 	"Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Включете флага `--api`, когато стартирате stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Интерфейс",
 	"Interface": "Интерфейс",
 	"join our Discord for help.": "свържете се с нашия Discord за помощ.",
 	"join our Discord for help.": "свържете се с нашия Discord за помощ.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -350,6 +353,7 @@
 	"Select a mode": "Изберете режим",
 	"Select a mode": "Изберете режим",
 	"Select a model": "Изберете модел",
 	"Select a model": "Изберете модел",
 	"Select an Ollama instance": "Изберете Ollama инстанция",
 	"Select an Ollama instance": "Изберете Ollama инстанция",
+	"Select model": "",
 	"Send a Message": "Изпращане на Съобщение",
 	"Send a Message": "Изпращане на Съобщение",
 	"Send message": "Изпращане на съобщение",
 	"Send message": "Изпращане на съобщение",
 	"Server connection verified": "Server connection verified",
 	"Server connection verified": "Server connection verified",

+ 4 - 0
src/lib/i18n/locales/bn-BD/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "এই মডেলফাইলটির সম্পর্কে সংক্ষিপ্ত বিবরণ যোগ করুন",
 	"Add a short description about what this modelfile does": "এই মডেলফাইলটির সম্পর্কে সংক্ষিপ্ত বিবরণ যোগ করুন",
 	"Add a short title for this prompt": "এই প্রম্পটের জন্য একটি সংক্ষিপ্ত টাইটেল যোগ করুন",
 	"Add a short title for this prompt": "এই প্রম্পটের জন্য একটি সংক্ষিপ্ত টাইটেল যোগ করুন",
 	"Add a tag": "একটি ট্যাগ যোগ করুন",
 	"Add a tag": "একটি ট্যাগ যোগ করুন",
+	"Add custom prompt": "",
 	"Add Docs": "ডকুমেন্ট যোগ করুন",
 	"Add Docs": "ডকুমেন্ট যোগ করুন",
 	"Add Files": "ফাইল যোগ করুন",
 	"Add Files": "ফাইল যোগ করুন",
 	"Add message": "মেসেজ যোগ করুন",
 	"Add message": "মেসেজ যোগ করুন",
@@ -44,6 +45,7 @@
 	"Archived Chats": "চ্যাট ইতিহাস সংরক্ষণাগার",
 	"Archived Chats": "চ্যাট ইতিহাস সংরক্ষণাগার",
 	"are allowed - Activate this command by typing": "অনুমোদিত - কমান্ডটি চালু করার জন্য লিখুন",
 	"are allowed - Activate this command by typing": "অনুমোদিত - কমান্ডটি চালু করার জন্য লিখুন",
 	"Are you sure?": "আপনি নিশ্চিত?",
 	"Are you sure?": "আপনি নিশ্চিত?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "অডিও",
 	"Audio": "অডিও",
 	"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
 	"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "মডেলফাইলগুলো ইমপোর্ট করুন",
 	"Import Modelfiles": "মডেলফাইলগুলো ইমপোর্ট করুন",
 	"Import Prompts": "প্রম্পটগুলো ইমপোর্ট করুন",
 	"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": "ইন্টারফেস",
 	"Interface": "ইন্টারফেস",
 	"join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন",
 	"join our Discord for help.": "সাহায্যের জন্য আমাদের Discord-এ যুক্ত হোন",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "একটি মডেল নির্বাচন করুন",
 	"Select a mode": "একটি মডেল নির্বাচন করুন",
 	"Select a model": "একটি মডেল নির্বাচন করুন",
 	"Select a model": "একটি মডেল নির্বাচন করুন",
 	"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
 	"Select an Ollama instance": "একটি Ollama ইন্সট্যান্স নির্বাচন করুন",
+	"Select model": "",
 	"Send a Message": "একটি মেসেজ পাঠান",
 	"Send a Message": "একটি মেসেজ পাঠান",
 	"Send message": "মেসেজ পাঠান",
 	"Send message": "মেসেজ পাঠান",
 	"Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে",
 	"Server connection verified": "সার্ভার কানেকশন যাচাই করা হয়েছে",

+ 4 - 0
src/lib/i18n/locales/ca-ES/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Afegeix una descripció curta del que fa aquest arxiu de model",
 	"Add a short description about what this modelfile does": "Afegeix una descripció curta del que fa aquest arxiu de model",
 	"Add a short title for this prompt": "Afegeix un títol curt per aquest prompt",
 	"Add a short title for this prompt": "Afegeix un títol curt per aquest prompt",
 	"Add a tag": "Afegeix una etiqueta",
 	"Add a tag": "Afegeix una etiqueta",
+	"Add custom prompt": "",
 	"Add Docs": "Afegeix Documents",
 	"Add Docs": "Afegeix Documents",
 	"Add Files": "Afegeix Arxius",
 	"Add Files": "Afegeix Arxius",
 	"Add message": "Afegeix missatge",
 	"Add message": "Afegeix missatge",
@@ -44,6 +45,7 @@
 	"Archived Chats": "Arxiu d'historial de xat",
 	"Archived Chats": "Arxiu d'historial de xat",
 	"are allowed - Activate this command by typing": "estan permesos - Activa aquesta comanda escrivint",
 	"are allowed - Activate this command by typing": "estan permesos - Activa aquesta comanda escrivint",
 	"Are you sure?": "Estàs segur?",
 	"Are you sure?": "Estàs segur?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Àudio",
 	"Audio": "Àudio",
 	"Auto-playback response": "Resposta de reproducció automàtica",
 	"Auto-playback response": "Resposta de reproducció automàtica",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importa Fitxers de Model",
 	"Import Modelfiles": "Importa Fitxers de Model",
 	"Import Prompts": "Importa Prompts",
 	"Import Prompts": "Importa Prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclou la bandera `--api` quan executis stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Interfície",
 	"Interface": "Interfície",
 	"join our Discord for help.": "uneix-te al nostre Discord per ajuda.",
 	"join our Discord for help.": "uneix-te al nostre Discord per ajuda.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Selecciona un mode",
 	"Select a mode": "Selecciona un mode",
 	"Select a model": "Selecciona un model",
 	"Select a model": "Selecciona un model",
 	"Select an Ollama instance": "Selecciona una instància d'Ollama",
 	"Select an Ollama instance": "Selecciona una instància d'Ollama",
+	"Select model": "",
 	"Send a Message": "Envia un Missatge",
 	"Send a Message": "Envia un Missatge",
 	"Send message": "Envia missatge",
 	"Send message": "Envia missatge",
 	"Server connection verified": "Connexió al servidor verificada",
 	"Server connection verified": "Connexió al servidor verificada",

+ 4 - 0
src/lib/i18n/locales/de-DE/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Füge eine kurze Beschreibung hinzu, was dieses Modelfile kann",
 	"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 short title for this prompt": "Füge einen kurzen Titel für diesen Prompt hinzu",
 	"Add a tag": "Tag hinzufügen",
 	"Add a tag": "Tag hinzufügen",
+	"Add custom prompt": "",
 	"Add Docs": "Dokumente hinzufügen",
 	"Add Docs": "Dokumente hinzufügen",
 	"Add Files": "Dateien hinzufügen",
 	"Add Files": "Dateien hinzufügen",
 	"Add message": "Nachricht eingeben",
 	"Add message": "Nachricht eingeben",
@@ -44,6 +45,7 @@
 	"Archived Chats": "Archivierte Chats",
 	"Archived Chats": "Archivierte Chats",
 	"are allowed - Activate this command by typing": "sind erlaubt - Aktiviere diesen Befehl, indem du",
 	"are allowed - Activate this command by typing": "sind erlaubt - Aktiviere diesen Befehl, indem du",
 	"Are you sure?": "Bist du sicher?",
 	"Are you sure?": "Bist du sicher?",
+	"Attach file": "",
 	"Attention to detail": "Auge fürs Detail",
 	"Attention to detail": "Auge fürs Detail",
 	"Audio": "Audio",
 	"Audio": "Audio",
 	"Auto-playback response": "Automatische Wiedergabe der Antwort",
 	"Auto-playback response": "Automatische Wiedergabe der Antwort",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Modelfiles importieren",
 	"Import Modelfiles": "Modelfiles importieren",
 	"Import Prompts": "Prompts 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",
 	"Include `--api` flag when running stable-diffusion-webui": "Füge das `--api`-Flag hinzu, wenn Du stable-diffusion-webui nutzt",
+	"Input commands": "",
 	"Interface": "Benutzeroberfläche",
 	"Interface": "Benutzeroberfläche",
 	"join our Discord for help.": "Trete unserem Discord bei, um Hilfe zu erhalten.",
 	"join our Discord for help.": "Trete unserem Discord bei, um Hilfe zu erhalten.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Einen Modus auswählen",
 	"Select a mode": "Einen Modus auswählen",
 	"Select a model": "Ein Modell auswählen",
 	"Select a model": "Ein Modell auswählen",
 	"Select an Ollama instance": "Eine Ollama Instanz auswählen",
 	"Select an Ollama instance": "Eine Ollama Instanz auswählen",
+	"Select model": "",
 	"Send a Message": "Eine Nachricht senden",
 	"Send a Message": "Eine Nachricht senden",
 	"Send message": "Nachricht senden",
 	"Send message": "Nachricht senden",
 	"Server connection verified": "Serververbindung überprüft",
 	"Server connection verified": "Serververbindung überprüft",

+ 4 - 0
src/lib/i18n/locales/dg-DG/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Add short description about what this modelfile does",
 	"Add a short description about what this modelfile does": "Add short description about what this modelfile does",
 	"Add a short title for this prompt": "Add short title for this prompt",
 	"Add a short title for this prompt": "Add short title for this prompt",
 	"Add a tag": "Add such tag",
 	"Add a tag": "Add such tag",
+	"Add custom prompt": "",
 	"Add Docs": "Add Docs",
 	"Add Docs": "Add Docs",
 	"Add Files": "Add Files",
 	"Add Files": "Add Files",
 	"Add message": "Add Prompt",
 	"Add message": "Add Prompt",
@@ -44,6 +45,7 @@
 	"Archived Chats": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "are allowed. Activate typing",
 	"are allowed - Activate this command by typing": "are allowed. Activate typing",
 	"Are you sure?": "Such certainty?",
 	"Are you sure?": "Such certainty?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
 	"Audio": "Audio",
 	"Auto-playback response": "Auto-playback response",
 	"Auto-playback response": "Auto-playback response",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Import Modelfiles",
 	"Import Modelfiles": "Import Modelfiles",
 	"Import Prompts": "Import Promptos",
 	"Import Prompts": "Import Promptos",
 	"Include `--api` flag when running stable-diffusion-webui": "Include `--api` flag when running stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Include `--api` flag when running stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Interface",
 	"Interface": "Interface",
 	"join our Discord for help.": "join our Discord for help.",
 	"join our Discord for help.": "join our Discord for help.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Select a mode very choose",
 	"Select a mode": "Select a mode very choose",
 	"Select a model": "Select a model much choice",
 	"Select a model": "Select a model much choice",
 	"Select an Ollama instance": "Select an Ollama instance very choose",
 	"Select an Ollama instance": "Select an Ollama instance very choose",
+	"Select model": "",
 	"Send a Message": "Send a Message much message",
 	"Send a Message": "Send a Message much message",
 	"Send message": "Send message very send",
 	"Send message": "Send message very send",
 	"Server connection verified": "Server connection verified much secure",
 	"Server connection verified": "Server connection verified much secure",

+ 4 - 0
src/lib/i18n/locales/en-GB/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "",
 	"Add a short description about what this modelfile does": "",
 	"Add a short title for this prompt": "",
 	"Add a short title for this prompt": "",
 	"Add a tag": "",
 	"Add a tag": "",
+	"Add custom prompt": "",
 	"Add Docs": "",
 	"Add Docs": "",
 	"Add Files": "",
 	"Add Files": "",
 	"Add message": "",
 	"Add message": "",
@@ -44,6 +45,7 @@
 	"Archived Chats": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "",
 	"are allowed - Activate this command by typing": "",
 	"Are you sure?": "",
 	"Are you sure?": "",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "",
 	"Audio": "",
 	"Auto-playback response": "",
 	"Auto-playback response": "",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "",
 	"Import Modelfiles": "",
 	"Import Prompts": "",
 	"Import Prompts": "",
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Include `--api` flag when running stable-diffusion-webui": "",
+	"Input commands": "",
 	"Interface": "",
 	"Interface": "",
 	"join our Discord for help.": "",
 	"join our Discord for help.": "",
 	"JSON": "",
 	"JSON": "",
@@ -354,6 +357,7 @@
 	"Select a mode": "",
 	"Select a mode": "",
 	"Select a model": "",
 	"Select a model": "",
 	"Select an Ollama instance": "",
 	"Select an Ollama instance": "",
+	"Select model": "",
 	"Send a Message": "",
 	"Send a Message": "",
 	"Send message": "",
 	"Send message": "",
 	"Server connection verified": "",
 	"Server connection verified": "",

+ 4 - 0
src/lib/i18n/locales/en-US/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "",
 	"Add a short description about what this modelfile does": "",
 	"Add a short title for this prompt": "",
 	"Add a short title for this prompt": "",
 	"Add a tag": "",
 	"Add a tag": "",
+	"Add custom prompt": "",
 	"Add Docs": "",
 	"Add Docs": "",
 	"Add Files": "",
 	"Add Files": "",
 	"Add message": "",
 	"Add message": "",
@@ -44,6 +45,7 @@
 	"Archived Chats": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "",
 	"are allowed - Activate this command by typing": "",
 	"Are you sure?": "",
 	"Are you sure?": "",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "",
 	"Audio": "",
 	"Auto-playback response": "",
 	"Auto-playback response": "",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "",
 	"Import Modelfiles": "",
 	"Import Prompts": "",
 	"Import Prompts": "",
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Include `--api` flag when running stable-diffusion-webui": "",
+	"Input commands": "",
 	"Interface": "",
 	"Interface": "",
 	"join our Discord for help.": "",
 	"join our Discord for help.": "",
 	"JSON": "",
 	"JSON": "",
@@ -351,6 +354,7 @@
 	"Select a mode": "",
 	"Select a mode": "",
 	"Select a model": "",
 	"Select a model": "",
 	"Select an Ollama instance": "",
 	"Select an Ollama instance": "",
+	"Select model": "",
 	"Send a Message": "",
 	"Send a Message": "",
 	"Send message": "",
 	"Send message": "",
 	"Server connection verified": "",
 	"Server connection verified": "",

+ 4 - 0
src/lib/i18n/locales/es-ES/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Agregue una descripción corta de lo que este modelfile hace",
 	"Add a short description about what this modelfile does": "Agregue una descripción corta de lo que este modelfile hace",
 	"Add a short title for this prompt": "Agregue un título corto para este Prompt",
 	"Add a short title for this prompt": "Agregue un título corto para este Prompt",
 	"Add a tag": "Agregar una etiqueta",
 	"Add a tag": "Agregar una etiqueta",
+	"Add custom prompt": "",
 	"Add Docs": "Agregar Documentos",
 	"Add Docs": "Agregar Documentos",
 	"Add Files": "Agregar Archivos",
 	"Add Files": "Agregar Archivos",
 	"Add message": "Agregar Prompt",
 	"Add message": "Agregar Prompt",
@@ -44,6 +45,7 @@
 	"Archived Chats": "Chats archivados",
 	"Archived Chats": "Chats archivados",
 	"are allowed - Activate this command by typing": "están permitidos - Active este comando escribiendo",
 	"are allowed - Activate this command by typing": "están permitidos - Active este comando escribiendo",
 	"Are you sure?": "¿Está seguro?",
 	"Are you sure?": "¿Está seguro?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
 	"Audio": "Audio",
 	"Auto-playback response": "Respuesta de reproducción automática",
 	"Auto-playback response": "Respuesta de reproducción automática",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importar Modelfiles",
 	"Import Modelfiles": "Importar Modelfiles",
 	"Import Prompts": "Importar Prompts",
 	"Import Prompts": "Importar Prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Incluir el indicador `--api` al ejecutar stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Incluir el indicador `--api` al ejecutar stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Interfaz",
 	"Interface": "Interfaz",
 	"join our Discord for help.": "Únase a nuestro Discord para obtener ayuda.",
 	"join our Discord for help.": "Únase a nuestro Discord para obtener ayuda.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Selecciona un modo",
 	"Select a mode": "Selecciona un modo",
 	"Select a model": "Selecciona un modelo",
 	"Select a model": "Selecciona un modelo",
 	"Select an Ollama instance": "Seleccione una instancia de Ollama",
 	"Select an Ollama instance": "Seleccione una instancia de Ollama",
+	"Select model": "",
 	"Send a Message": "Enviar un Mensaje",
 	"Send a Message": "Enviar un Mensaje",
 	"Send message": "Enviar Mensaje",
 	"Send message": "Enviar Mensaje",
 	"Server connection verified": "Conexión del servidor verificada",
 	"Server connection verified": "Conexión del servidor verificada",

+ 4 - 0
src/lib/i18n/locales/fa-IR/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "توضیح کوتاهی در مورد کاری که این فایل\u200cمدل انجام می دهد اضافه کنید",
 	"Add a short description about what this modelfile does": "توضیح کوتاهی در مورد کاری که این فایل\u200cمدل انجام می دهد اضافه کنید",
 	"Add a short title for this prompt": "یک عنوان کوتاه برای این درخواست اضافه کنید",
 	"Add a short title for this prompt": "یک عنوان کوتاه برای این درخواست اضافه کنید",
 	"Add a tag": "اضافه کردن یک تگ",
 	"Add a tag": "اضافه کردن یک تگ",
+	"Add custom prompt": "",
 	"Add Docs": "اضافه کردن اسناد",
 	"Add Docs": "اضافه کردن اسناد",
 	"Add Files": "اضافه کردن فایل\u200cها",
 	"Add Files": "اضافه کردن فایل\u200cها",
 	"Add message": "اضافه کردن پیغام",
 	"Add message": "اضافه کردن پیغام",
@@ -44,6 +45,7 @@
 	"Archived Chats": "آرشیو تاریخچه چت",
 	"Archived Chats": "آرشیو تاریخچه چت",
 	"are allowed - Activate this command by typing": "مجاز هستند - این دستور را با تایپ کردن این فعال کنید:",
 	"are allowed - Activate this command by typing": "مجاز هستند - این دستور را با تایپ کردن این فعال کنید:",
 	"Are you sure?": "آیا مطمئن هستید؟",
 	"Are you sure?": "آیا مطمئن هستید؟",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "صدا",
 	"Audio": "صدا",
 	"Auto-playback response": "پخش خودکار پاسخ ",
 	"Auto-playback response": "پخش خودکار پاسخ ",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "ایمپورت فایل\u200cهای مدل",
 	"Import Modelfiles": "ایمپورت فایل\u200cهای مدل",
 	"Import Prompts": "ایمپورت پرامپت\u200cها",
 	"Import Prompts": "ایمپورت پرامپت\u200cها",
 	"Include `--api` flag when running stable-diffusion-webui": "فلگ `--api` را هنکام اجرای stable-diffusion-webui استفاده کنید.",
 	"Include `--api` flag when running stable-diffusion-webui": "فلگ `--api` را هنکام اجرای stable-diffusion-webui استفاده کنید.",
+	"Input commands": "",
 	"Interface": "رابط",
 	"Interface": "رابط",
 	"join our Discord for help.": "برای کمک به دیسکورد ما بپیوندید.",
 	"join our Discord for help.": "برای کمک به دیسکورد ما بپیوندید.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "یک حالت انتخاب کنید",
 	"Select a mode": "یک حالت انتخاب کنید",
 	"Select a model": "انتخاب یک مدل",
 	"Select a model": "انتخاب یک مدل",
 	"Select an Ollama instance": "انتخاب یک نمونه از اولاما",
 	"Select an Ollama instance": "انتخاب یک نمونه از اولاما",
+	"Select model": "",
 	"Send a Message": "ارسال یک پیام",
 	"Send a Message": "ارسال یک پیام",
 	"Send message": "ارسال پیام",
 	"Send message": "ارسال پیام",
 	"Server connection verified": "اتصال سرور تأیید شد",
 	"Server connection verified": "اتصال سرور تأیید شد",

+ 4 - 0
src/lib/i18n/locales/fr-CA/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Ajouter une courte description de ce que fait ce fichier de modèle",
 	"Add a short description about what this modelfile does": "Ajouter une courte description de ce que fait ce fichier de modèle",
 	"Add a short title for this prompt": "Ajouter un court titre pour ce prompt",
 	"Add a short title for this prompt": "Ajouter un court titre pour ce prompt",
 	"Add a tag": "Ajouter un tag",
 	"Add a tag": "Ajouter un tag",
+	"Add custom prompt": "",
 	"Add Docs": "Ajouter des documents",
 	"Add Docs": "Ajouter des documents",
 	"Add Files": "Ajouter des fichiers",
 	"Add Files": "Ajouter des fichiers",
 	"Add message": "Ajouter un message",
 	"Add message": "Ajouter un message",
@@ -44,6 +45,7 @@
 	"Archived Chats": "enregistrement du chat",
 	"Archived Chats": "enregistrement du chat",
 	"are allowed - Activate this command by typing": "sont autorisés - Activez cette commande en tapant",
 	"are allowed - Activate this command by typing": "sont autorisés - Activez cette commande en tapant",
 	"Are you sure?": "Êtes-vous sûr ?",
 	"Are you sure?": "Êtes-vous sûr ?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
 	"Audio": "Audio",
 	"Auto-playback response": "Réponse en lecture automatique",
 	"Auto-playback response": "Réponse en lecture automatique",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importer les fichiers de modèle",
 	"Import Modelfiles": "Importer les fichiers de modèle",
 	"Import Prompts": "Importer les prompts",
 	"Import Prompts": "Importer les prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclure l'indicateur `--api` lors de l'exécution de stable-diffusion-webui",
 	"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",
 	"Interface": "Interface",
 	"join our Discord for help.": "rejoignez notre Discord pour obtenir de l'aide.",
 	"join our Discord for help.": "rejoignez notre Discord pour obtenir de l'aide.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Sélectionnez un mode",
 	"Select a mode": "Sélectionnez un mode",
 	"Select a model": "Sélectionnez un modèle",
 	"Select a model": "Sélectionnez un modèle",
 	"Select an Ollama instance": "Sélectionner une instance Ollama",
 	"Select an Ollama instance": "Sélectionner une instance Ollama",
+	"Select model": "",
 	"Send a Message": "Envoyer un message",
 	"Send a Message": "Envoyer un message",
 	"Send message": "Envoyer un message",
 	"Send message": "Envoyer un message",
 	"Server connection verified": "Connexion au serveur vérifiée",
 	"Server connection verified": "Connexion au serveur vérifiée",

+ 4 - 0
src/lib/i18n/locales/fr-FR/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Ajouter une courte description de ce que fait ce fichier de modèle",
 	"Add a short description about what this modelfile does": "Ajouter une courte description de ce que fait ce fichier de modèle",
 	"Add a short title for this prompt": "Ajouter un court titre pour ce prompt",
 	"Add a short title for this prompt": "Ajouter un court titre pour ce prompt",
 	"Add a tag": "Ajouter un tag",
 	"Add a tag": "Ajouter un tag",
+	"Add custom prompt": "",
 	"Add Docs": "Ajouter des documents",
 	"Add Docs": "Ajouter des documents",
 	"Add Files": "Ajouter des fichiers",
 	"Add Files": "Ajouter des fichiers",
 	"Add message": "Ajouter un message",
 	"Add message": "Ajouter un message",
@@ -44,6 +45,7 @@
 	"Archived Chats": "enregistrement du chat",
 	"Archived Chats": "enregistrement du chat",
 	"are allowed - Activate this command by typing": "sont autorisés - Activez cette commande en tapant",
 	"are allowed - Activate this command by typing": "sont autorisés - Activez cette commande en tapant",
 	"Are you sure?": "Êtes-vous sûr ?",
 	"Are you sure?": "Êtes-vous sûr ?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
 	"Audio": "Audio",
 	"Auto-playback response": "Réponse en lecture automatique",
 	"Auto-playback response": "Réponse en lecture automatique",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importer les fichiers de modèle",
 	"Import Modelfiles": "Importer les fichiers de modèle",
 	"Import Prompts": "Importer les prompts",
 	"Import Prompts": "Importer les prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclure le drapeau `--api` lors de l'exécution de stable-diffusion-webui",
 	"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",
 	"Interface": "Interface",
 	"join our Discord for help.": "rejoignez notre Discord pour obtenir de l'aide.",
 	"join our Discord for help.": "rejoignez notre Discord pour obtenir de l'aide.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Sélectionnez un mode",
 	"Select a mode": "Sélectionnez un mode",
 	"Select a model": "Sélectionner un modèle",
 	"Select a model": "Sélectionner un modèle",
 	"Select an Ollama instance": "Sélectionner une instance Ollama",
 	"Select an Ollama instance": "Sélectionner une instance Ollama",
+	"Select model": "",
 	"Send a Message": "Envoyer un message",
 	"Send a Message": "Envoyer un message",
 	"Send message": "Envoyer un message",
 	"Send message": "Envoyer un message",
 	"Server connection verified": "Connexion au serveur vérifiée",
 	"Server connection verified": "Connexion au serveur vérifiée",

+ 4 - 0
src/lib/i18n/locales/it-IT/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Aggiungi una breve descrizione di ciò che fa questo file modello",
 	"Add a short description about what this modelfile does": "Aggiungi una breve descrizione di ciò che fa questo file modello",
 	"Add a short title for this prompt": "Aggiungi un titolo breve per questo prompt",
 	"Add a short title for this prompt": "Aggiungi un titolo breve per questo prompt",
 	"Add a tag": "Aggiungi un tag",
 	"Add a tag": "Aggiungi un tag",
+	"Add custom prompt": "",
 	"Add Docs": "Aggiungi documenti",
 	"Add Docs": "Aggiungi documenti",
 	"Add Files": "Aggiungi file",
 	"Add Files": "Aggiungi file",
 	"Add message": "Aggiungi messaggio",
 	"Add message": "Aggiungi messaggio",
@@ -44,6 +45,7 @@
 	"Archived Chats": "Chat archiviate",
 	"Archived Chats": "Chat archiviate",
 	"are allowed - Activate this command by typing": "sono consentiti - Attiva questo comando digitando",
 	"are allowed - Activate this command by typing": "sono consentiti - Attiva questo comando digitando",
 	"Are you sure?": "Sei sicuro?",
 	"Are you sure?": "Sei sicuro?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
 	"Audio": "Audio",
 	"Auto-playback response": "Riproduzione automatica della risposta",
 	"Auto-playback response": "Riproduzione automatica della risposta",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importa file modello",
 	"Import Modelfiles": "Importa file modello",
 	"Import Prompts": "Importa prompt",
 	"Import Prompts": "Importa prompt",
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Include `--api` flag when running stable-diffusion-webui": "",
+	"Input commands": "",
 	"Interface": "Interfaccia",
 	"Interface": "Interfaccia",
 	"join our Discord for help.": "unisciti al nostro Discord per ricevere aiuto.",
 	"join our Discord for help.": "unisciti al nostro Discord per ricevere aiuto.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -354,6 +357,7 @@
 	"Select a mode": "Seleziona una modalità",
 	"Select a mode": "Seleziona una modalità",
 	"Select a model": "Seleziona un modello",
 	"Select a model": "Seleziona un modello",
 	"Select an Ollama instance": "Seleziona un'istanza Ollama",
 	"Select an Ollama instance": "Seleziona un'istanza Ollama",
+	"Select model": "",
 	"Send a Message": "Invia un messaggio",
 	"Send a Message": "Invia un messaggio",
 	"Send message": "Invia messaggio",
 	"Send message": "Invia messaggio",
 	"Server connection verified": "Connessione al server verificata",
 	"Server connection verified": "Connessione al server verificata",

+ 4 - 0
src/lib/i18n/locales/ja-JP/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "このモデルファイルの機能に関する簡単な説明を追加",
 	"Add a short description about what this modelfile does": "このモデルファイルの機能に関する簡単な説明を追加",
 	"Add a short title for this prompt": "このプロンプトの短いタイトルを追加",
 	"Add a short title for this prompt": "このプロンプトの短いタイトルを追加",
 	"Add a tag": "タグを追加",
 	"Add a tag": "タグを追加",
+	"Add custom prompt": "",
 	"Add Docs": "ドキュメントを追加",
 	"Add Docs": "ドキュメントを追加",
 	"Add Files": "ファイルを追加",
 	"Add Files": "ファイルを追加",
 	"Add message": "メッセージを追加",
 	"Add message": "メッセージを追加",
@@ -44,6 +45,7 @@
 	"Archived Chats": "チャット記録",
 	"Archived Chats": "チャット記録",
 	"are allowed - Activate this command by typing": "が許可されています - 次のように入力してこのコマンドをアクティブ化します",
 	"are allowed - Activate this command by typing": "が許可されています - 次のように入力してこのコマンドをアクティブ化します",
 	"Are you sure?": "よろしいですか?",
 	"Are you sure?": "よろしいですか?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "オーディオ",
 	"Audio": "オーディオ",
 	"Auto-playback response": "応答の自動再生",
 	"Auto-playback response": "応答の自動再生",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "モデルファイルをインポート",
 	"Import Modelfiles": "モデルファイルをインポート",
 	"Import Prompts": "プロンプトをインポート",
 	"Import Prompts": "プロンプトをインポート",
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Include `--api` flag when running stable-diffusion-webui": "",
+	"Input commands": "",
 	"Interface": "インターフェース",
 	"Interface": "インターフェース",
 	"join our Discord for help.": "ヘルプについては、Discord に参加してください。",
 	"join our Discord for help.": "ヘルプについては、Discord に参加してください。",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -354,6 +357,7 @@
 	"Select a mode": "モードを選択",
 	"Select a mode": "モードを選択",
 	"Select a model": "モデルを選択",
 	"Select a model": "モデルを選択",
 	"Select an Ollama instance": "Ollama インスタンスを選択",
 	"Select an Ollama instance": "Ollama インスタンスを選択",
+	"Select model": "",
 	"Send a Message": "メッセージを送信",
 	"Send a Message": "メッセージを送信",
 	"Send message": "メッセージを送信",
 	"Send message": "メッセージを送信",
 	"Server connection verified": "サーバー接続が確認されました",
 	"Server connection verified": "サーバー接続が確認されました",

+ 4 - 0
src/lib/i18n/locales/ka-GE/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "დაამატე მოკლე აღწერა იმის შესახებ, თუ რას აკეთებს ეს მოდელური ფაილი",
 	"Add a short description about what this modelfile does": "დაამატე მოკლე აღწერა იმის შესახებ, თუ რას აკეთებს ეს მოდელური ფაილი",
 	"Add a short title for this prompt": "დაამატე მოკლე სათაური ამ მოთხოვნისთვის",
 	"Add a short title for this prompt": "დაამატე მოკლე სათაური ამ მოთხოვნისთვის",
 	"Add a tag": "დაამატე ტეგი",
 	"Add a tag": "დაამატე ტეგი",
+	"Add custom prompt": "",
 	"Add Docs": "დოკუმენტის დამატება",
 	"Add Docs": "დოკუმენტის დამატება",
 	"Add Files": "ფაილების დამატება",
 	"Add Files": "ფაილების დამატება",
 	"Add message": "შეტყობინების დამატება",
 	"Add message": "შეტყობინების დამატება",
@@ -44,6 +45,7 @@
 	"Archived Chats": "ჩატის ისტორიის არქივი",
 	"Archived Chats": "ჩატის ისტორიის არქივი",
 	"are allowed - Activate this command by typing": "დაშვებულია - ბრძანების გასააქტიურებლად აკრიფეთ:",
 	"are allowed - Activate this command by typing": "დაშვებულია - ბრძანების გასააქტიურებლად აკრიფეთ:",
 	"Are you sure?": "დარწმუნებული ხარ?",
 	"Are you sure?": "დარწმუნებული ხარ?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "ხმოვანი",
 	"Audio": "ხმოვანი",
 	"Auto-playback response": "ავტომატური დაკვრის პასუხი",
 	"Auto-playback response": "ავტომატური დაკვრის პასუხი",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "მოდელური ფაილების იმპორტი",
 	"Import Modelfiles": "მოდელური ფაილების იმპორტი",
 	"Import Prompts": "მოთხოვნების იმპორტი",
 	"Import Prompts": "მოთხოვნების იმპორტი",
 	"Include `--api` flag when running stable-diffusion-webui": "ჩართეთ `--api` დროშა stable-diffusion-webui-ის გაშვებისას",
 	"Include `--api` flag when running stable-diffusion-webui": "ჩართეთ `--api` დროშა stable-diffusion-webui-ის გაშვებისას",
+	"Input commands": "",
 	"Interface": "ინტერფეისი",
 	"Interface": "ინტერფეისი",
 	"join our Discord for help.": "შეუერთდით ჩვენს Discord-ს დახმარებისთვის",
 	"join our Discord for help.": "შეუერთდით ჩვენს Discord-ს დახმარებისთვის",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "რეჟიმის არჩევა",
 	"Select a mode": "რეჟიმის არჩევა",
 	"Select a model": "მოდელის არჩევა",
 	"Select a model": "მოდელის არჩევა",
 	"Select an Ollama instance": "",
 	"Select an Ollama instance": "",
+	"Select model": "",
 	"Send a Message": "შეტყობინების გაგზავნა",
 	"Send a Message": "შეტყობინების გაგზავნა",
 	"Send message": "შეტყობინების გაგზავნა",
 	"Send message": "შეტყობინების გაგზავნა",
 	"Server connection verified": "სერვერთან კავშირი დადასტურებულია",
 	"Server connection verified": "სერვერთან კავშირი დადასტურებულია",

+ 4 - 0
src/lib/i18n/locales/ko-KR/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "이 모델파일이 하는 일에 대한 간단한 설명 추가",
 	"Add a short description about what this modelfile does": "이 모델파일이 하는 일에 대한 간단한 설명 추가",
 	"Add a short title for this prompt": "이 프롬프트에 대한 간단한 제목 추가",
 	"Add a short title for this prompt": "이 프롬프트에 대한 간단한 제목 추가",
 	"Add a tag": "태그 추가",
 	"Add a tag": "태그 추가",
+	"Add custom prompt": "",
 	"Add Docs": "문서 추가",
 	"Add Docs": "문서 추가",
 	"Add Files": "파일 추가",
 	"Add Files": "파일 추가",
 	"Add message": "메시지 추가",
 	"Add message": "메시지 추가",
@@ -44,6 +45,7 @@
 	"Archived Chats": "채팅 기록 아카이브",
 	"Archived Chats": "채팅 기록 아카이브",
 	"are allowed - Activate this command by typing": "허용됩니다 - 이 명령을 활성화하려면 입력하세요.",
 	"are allowed - Activate this command by typing": "허용됩니다 - 이 명령을 활성화하려면 입력하세요.",
 	"Are you sure?": "확실합니까?",
 	"Are you sure?": "확실합니까?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "오디오",
 	"Audio": "오디오",
 	"Auto-playback response": "응답 자동 재생",
 	"Auto-playback response": "응답 자동 재생",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "모델파일 가져오기",
 	"Import Modelfiles": "모델파일 가져오기",
 	"Import Prompts": "프롬프트 가져오기",
 	"Import Prompts": "프롬프트 가져오기",
 	"Include `--api` flag when running stable-diffusion-webui": "",
 	"Include `--api` flag when running stable-diffusion-webui": "",
+	"Input commands": "",
 	"Interface": "인터페이스",
 	"Interface": "인터페이스",
 	"join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.",
 	"join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "모드 선택",
 	"Select a mode": "모드 선택",
 	"Select a model": "모델 선택",
 	"Select a model": "모델 선택",
 	"Select an Ollama instance": "Ollama 인스턴스 선택",
 	"Select an Ollama instance": "Ollama 인스턴스 선택",
+	"Select model": "",
 	"Send a Message": "메시지 보내기",
 	"Send a Message": "메시지 보내기",
 	"Send message": "메시지 보내기",
 	"Send message": "메시지 보내기",
 	"Server connection verified": "서버 연결 확인됨",
 	"Server connection verified": "서버 연결 확인됨",

+ 4 - 0
src/lib/i18n/locales/languages.json

@@ -3,6 +3,10 @@
 		"code": "en-US",
 		"code": "en-US",
 		"title": "English (US)"
 		"title": "English (US)"
 	},
 	},
+	{
+		"code": "ar-BH",
+		"title": "العربية (AR)"
+	},
 	{
 	{
 		"code": "bg-BG",
 		"code": "bg-BG",
 		"title": "Bulgarian (BG)"
 		"title": "Bulgarian (BG)"

+ 4 - 0
src/lib/i18n/locales/nl-NL/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Voeg een korte beschrijving toe over wat dit modelfile doet",
 	"Add a short description about what this modelfile does": "Voeg een korte beschrijving toe over wat dit modelfile doet",
 	"Add a short title for this prompt": "Voeg een korte titel toe voor deze prompt",
 	"Add a short title for this prompt": "Voeg een korte titel toe voor deze prompt",
 	"Add a tag": "Voeg een tag toe",
 	"Add a tag": "Voeg een tag toe",
+	"Add custom prompt": "",
 	"Add Docs": "Voeg Docs toe",
 	"Add Docs": "Voeg Docs toe",
 	"Add Files": "Voege Bestanden toe",
 	"Add Files": "Voege Bestanden toe",
 	"Add message": "Voeg bericht toe",
 	"Add message": "Voeg bericht toe",
@@ -44,6 +45,7 @@
 	"Archived Chats": "chatrecord",
 	"Archived Chats": "chatrecord",
 	"are allowed - Activate this command by typing": "zijn toegestaan - Activeer deze commando door te typen",
 	"are allowed - Activate this command by typing": "zijn toegestaan - Activeer deze commando door te typen",
 	"Are you sure?": "Zeker weten?",
 	"Are you sure?": "Zeker weten?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Audio",
 	"Audio": "Audio",
 	"Auto-playback response": "Automatisch afspelen van antwoord",
 	"Auto-playback response": "Automatisch afspelen van antwoord",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importeer Modelfiles",
 	"Import Modelfiles": "Importeer Modelfiles",
 	"Import Prompts": "Importeer Prompts",
 	"Import Prompts": "Importeer Prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Voeg `--api` vlag toe bij het uitvoeren van stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Voeg `--api` vlag toe bij het uitvoeren van stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Interface",
 	"Interface": "Interface",
 	"join our Discord for help.": "join onze Discord voor hulp.",
 	"join our Discord for help.": "join onze Discord voor hulp.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Selecteer een modus",
 	"Select a mode": "Selecteer een modus",
 	"Select a model": "Selecteer een model",
 	"Select a model": "Selecteer een model",
 	"Select an Ollama instance": "Selecteer een Ollama instantie",
 	"Select an Ollama instance": "Selecteer een Ollama instantie",
+	"Select model": "",
 	"Send a Message": "Stuur een Bericht",
 	"Send a Message": "Stuur een Bericht",
 	"Send message": "Stuur bericht",
 	"Send message": "Stuur bericht",
 	"Server connection verified": "Server verbinding geverifieerd",
 	"Server connection verified": "Server verbinding geverifieerd",

+ 4 - 0
src/lib/i18n/locales/pl-PL/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Dodaj krótki opis tego, co robi ten plik modelu",
 	"Add a short description about what this modelfile does": "Dodaj krótki opis tego, co robi ten plik modelu",
 	"Add a short title for this prompt": "Dodaj krótki tytuł tego polecenia",
 	"Add a short title for this prompt": "Dodaj krótki tytuł tego polecenia",
 	"Add a tag": "Dodaj tag",
 	"Add a tag": "Dodaj tag",
+	"Add custom prompt": "",
 	"Add Docs": "Dodaj dokumenty",
 	"Add Docs": "Dodaj dokumenty",
 	"Add Files": "Dodaj pliki",
 	"Add Files": "Dodaj pliki",
 	"Add message": "Dodaj wiadomość",
 	"Add message": "Dodaj wiadomość",
@@ -44,6 +45,7 @@
 	"Archived Chats": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "są dozwolone - Aktywuj to polecenie, wpisując",
 	"are allowed - Activate this command by typing": "są dozwolone - Aktywuj to polecenie, wpisując",
 	"Are you sure?": "Jesteś pewien?",
 	"Are you sure?": "Jesteś pewien?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Dźwięk",
 	"Audio": "Dźwięk",
 	"Auto-playback response": "Odtwarzanie automatyczne odpowiedzi",
 	"Auto-playback response": "Odtwarzanie automatyczne odpowiedzi",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importuj pliki modeli",
 	"Import Modelfiles": "Importuj pliki modeli",
 	"Import Prompts": "Importuj prompty",
 	"Import Prompts": "Importuj prompty",
 	"Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Dołącz flagę `--api` podczas uruchamiania stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Interfejs",
 	"Interface": "Interfejs",
 	"join our Discord for help.": "Dołącz do naszego Discorda po pomoc.",
 	"join our Discord for help.": "Dołącz do naszego Discorda po pomoc.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Wybierz tryb",
 	"Select a mode": "Wybierz tryb",
 	"Select a model": "Wybierz model",
 	"Select a model": "Wybierz model",
 	"Select an Ollama instance": "Wybierz instancję Ollama",
 	"Select an Ollama instance": "Wybierz instancję Ollama",
+	"Select model": "",
 	"Send a Message": "Wyślij Wiadomość",
 	"Send a Message": "Wyślij Wiadomość",
 	"Send message": "Wyślij wiadomość",
 	"Send message": "Wyślij wiadomość",
 	"Server connection verified": "Połączenie z serwerem zweryfikowane",
 	"Server connection verified": "Połączenie z serwerem zweryfikowane",

+ 4 - 0
src/lib/i18n/locales/pt-BR/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Adicione uma breve descrição sobre o que este arquivo de modelo faz",
 	"Add a short description about what this modelfile does": "Adicione uma breve descrição sobre o que este arquivo de modelo faz",
 	"Add a short title for this prompt": "Adicione um título curto para este prompt",
 	"Add a short title for this prompt": "Adicione um título curto para este prompt",
 	"Add a tag": "Adicionar uma tag",
 	"Add a tag": "Adicionar uma tag",
+	"Add custom prompt": "",
 	"Add Docs": "Adicionar Documentos",
 	"Add Docs": "Adicionar Documentos",
 	"Add Files": "Adicionar Arquivos",
 	"Add Files": "Adicionar Arquivos",
 	"Add message": "Adicionar mensagem",
 	"Add message": "Adicionar mensagem",
@@ -44,6 +45,7 @@
 	"Archived Chats": "Bate-papos arquivados",
 	"Archived Chats": "Bate-papos arquivados",
 	"are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando",
 	"are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando",
 	"Are you sure?": "Tem certeza?",
 	"Are you sure?": "Tem certeza?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Áudio",
 	"Audio": "Áudio",
 	"Auto-playback response": "Reprodução automática da resposta",
 	"Auto-playback response": "Reprodução automática da resposta",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importar Arquivos de Modelo",
 	"Import Modelfiles": "Importar Arquivos de Modelo",
 	"Import Prompts": "Importar Prompts",
 	"Import Prompts": "Importar Prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Interface",
 	"Interface": "Interface",
 	"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
 	"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Selecione um modo",
 	"Select a mode": "Selecione um modo",
 	"Select a model": "Selecione um modelo",
 	"Select a model": "Selecione um modelo",
 	"Select an Ollama instance": "Selecione uma instância Ollama",
 	"Select an Ollama instance": "Selecione uma instância Ollama",
+	"Select model": "",
 	"Send a Message": "Enviar uma Mensagem",
 	"Send a Message": "Enviar uma Mensagem",
 	"Send message": "Enviar mensagem",
 	"Send message": "Enviar mensagem",
 	"Server connection verified": "Conexão com o servidor verificada",
 	"Server connection verified": "Conexão com o servidor verificada",

+ 4 - 0
src/lib/i18n/locales/pt-PT/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Adicione uma breve descrição sobre o que este arquivo de modelo faz",
 	"Add a short description about what this modelfile does": "Adicione uma breve descrição sobre o que este arquivo de modelo faz",
 	"Add a short title for this prompt": "Adicione um título curto para este prompt",
 	"Add a short title for this prompt": "Adicione um título curto para este prompt",
 	"Add a tag": "Adicionar uma tag",
 	"Add a tag": "Adicionar uma tag",
+	"Add custom prompt": "",
 	"Add Docs": "Adicionar Documentos",
 	"Add Docs": "Adicionar Documentos",
 	"Add Files": "Adicionar Arquivos",
 	"Add Files": "Adicionar Arquivos",
 	"Add message": "Adicionar mensagem",
 	"Add message": "Adicionar mensagem",
@@ -44,6 +45,7 @@
 	"Archived Chats": "Bate-papos arquivados",
 	"Archived Chats": "Bate-papos arquivados",
 	"are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando",
 	"are allowed - Activate this command by typing": "são permitidos - Ative este comando digitando",
 	"Are you sure?": "Tem certeza?",
 	"Are you sure?": "Tem certeza?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Áudio",
 	"Audio": "Áudio",
 	"Auto-playback response": "Reprodução automática da resposta",
 	"Auto-playback response": "Reprodução automática da resposta",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Importar Arquivos de Modelo",
 	"Import Modelfiles": "Importar Arquivos de Modelo",
 	"Import Prompts": "Importar Prompts",
 	"Import Prompts": "Importar Prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Inclua a flag `--api` ao executar stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Interface",
 	"Interface": "Interface",
 	"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
 	"join our Discord for help.": "junte-se ao nosso Discord para obter ajuda.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -354,6 +357,7 @@
 	"Select a mode": "Selecione um modo",
 	"Select a mode": "Selecione um modo",
 	"Select a model": "Selecione um modelo",
 	"Select a model": "Selecione um modelo",
 	"Select an Ollama instance": "Selecione uma instância Ollama",
 	"Select an Ollama instance": "Selecione uma instância Ollama",
+	"Select model": "",
 	"Send a Message": "Enviar uma Mensagem",
 	"Send a Message": "Enviar uma Mensagem",
 	"Send message": "Enviar mensagem",
 	"Send message": "Enviar mensagem",
 	"Server connection verified": "Conexão com o servidor verificada",
 	"Server connection verified": "Conexão com o servidor verificada",

+ 4 - 0
src/lib/i18n/locales/ru-RU/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Добавьте краткое описание, что делает этот моделфайл",
 	"Add a short description about what this modelfile does": "Добавьте краткое описание, что делает этот моделфайл",
 	"Add a short title for this prompt": "Добавьте краткий заголовок для этого ввода",
 	"Add a short title for this prompt": "Добавьте краткий заголовок для этого ввода",
 	"Add a tag": "Добавьте тэг",
 	"Add a tag": "Добавьте тэг",
+	"Add custom prompt": "",
 	"Add Docs": "Добавьте документы",
 	"Add Docs": "Добавьте документы",
 	"Add Files": "Добавьте файлы",
 	"Add Files": "Добавьте файлы",
 	"Add message": "Добавьте сообщение",
 	"Add message": "Добавьте сообщение",
@@ -44,6 +45,7 @@
 	"Archived Chats": "запис на чат",
 	"Archived Chats": "запис на чат",
 	"are allowed - Activate this command by typing": "разрешено - активируйте эту команду вводом",
 	"are allowed - Activate this command by typing": "разрешено - активируйте эту команду вводом",
 	"Are you sure?": "Вы уверены?",
 	"Are you sure?": "Вы уверены?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Аудио",
 	"Audio": "Аудио",
 	"Auto-playback response": "Автоматическое воспроизведение ответа",
 	"Auto-playback response": "Автоматическое воспроизведение ответа",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Импорт файлов модели",
 	"Import Modelfiles": "Импорт файлов модели",
 	"Import Prompts": "Импорт подсказок",
 	"Import Prompts": "Импорт подсказок",
 	"Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Интерфейс",
 	"Interface": "Интерфейс",
 	"join our Discord for help.": "присоединяйтесь к нашему Discord для помощи.",
 	"join our Discord for help.": "присоединяйтесь к нашему Discord для помощи.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -354,6 +357,7 @@
 	"Select a mode": "Выберите режим",
 	"Select a mode": "Выберите режим",
 	"Select a model": "Выберите модель",
 	"Select a model": "Выберите модель",
 	"Select an Ollama instance": "Выберите экземпляр Ollama",
 	"Select an Ollama instance": "Выберите экземпляр Ollama",
+	"Select model": "",
 	"Send a Message": "Отправить сообщение",
 	"Send a Message": "Отправить сообщение",
 	"Send message": "Отправить сообщение",
 	"Send message": "Отправить сообщение",
 	"Server connection verified": "Соединение с сервером проверено",
 	"Server connection verified": "Соединение с сервером проверено",

+ 4 - 0
src/lib/i18n/locales/sv-SE/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Lägg till en kort beskrivning av vad den här modelfilen gör",
 	"Add a short description about what this modelfile does": "Lägg till en kort beskrivning av vad den här modelfilen gör",
 	"Add a short title for this prompt": "Lägg till en kort titel för denna prompt",
 	"Add a short title for this prompt": "Lägg till en kort titel för denna prompt",
 	"Add a tag": "Lägg till en tagg",
 	"Add a tag": "Lägg till en tagg",
+	"Add custom prompt": "",
 	"Add Docs": "Lägg till dokument",
 	"Add Docs": "Lägg till dokument",
 	"Add Files": "Lägg till filer",
 	"Add Files": "Lägg till filer",
 	"Add message": "Lägg till meddelande",
 	"Add message": "Lägg till meddelande",
@@ -43,6 +44,7 @@
 	"Archived Chats": "",
 	"Archived Chats": "",
 	"are allowed - Activate this command by typing": "är tillåtna - Aktivera detta kommando genom att skriva",
 	"are allowed - Activate this command by typing": "är tillåtna - Aktivera detta kommando genom att skriva",
 	"Are you sure?": "Är du säker?",
 	"Are you sure?": "Är du säker?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Ljud",
 	"Audio": "Ljud",
 	"Auto-playback response": "Automatisk uppspelning",
 	"Auto-playback response": "Automatisk uppspelning",
@@ -206,6 +208,7 @@
 	"Import Modelfiles": "Importera modelfiler",
 	"Import Modelfiles": "Importera modelfiler",
 	"Import Prompts": "Importera prompts",
 	"Import Prompts": "Importera prompts",
 	"Include `--api` flag when running stable-diffusion-webui": "Inkludera `--api`-flagga när du kör stabil-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Inkludera `--api`-flagga när du kör stabil-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Gränssnitt",
 	"Interface": "Gränssnitt",
 	"join our Discord for help.": "gå med i vår Discord för hjälp.",
 	"join our Discord for help.": "gå med i vår Discord för hjälp.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -337,6 +340,7 @@
 	"Select a mode": "Välj ett läge",
 	"Select a mode": "Välj ett läge",
 	"Select a model": "Välj en modell",
 	"Select a model": "Välj en modell",
 	"Select an Ollama instance": "Välj en Ollama-instans",
 	"Select an Ollama instance": "Välj en Ollama-instans",
+	"Select model": "",
 	"Send a Message": "Skicka ett meddelande",
 	"Send a Message": "Skicka ett meddelande",
 	"Send message": "Skicka meddelande",
 	"Send message": "Skicka meddelande",
 	"Server connection verified": "Serveranslutning verifierad",
 	"Server connection verified": "Serveranslutning verifierad",

+ 83 - 79
src/lib/i18n/locales/tr-TR/translation.json

@@ -4,23 +4,24 @@
 	"(e.g. `sh webui.sh --api`)": "(örn. `sh webui.sh --api`)",
 	"(e.g. `sh webui.sh --api`)": "(örn. `sh webui.sh --api`)",
 	"(latest)": "(en son)",
 	"(latest)": "(en son)",
 	"{{modelName}} is thinking...": "{{modelName}} düşünüyor...",
 	"{{modelName}} is thinking...": "{{modelName}} düşünüyor...",
-	"{{user}}'s Chats": "",
+	"{{user}}'s Chats": "{{user}} Sohbetleri",
 	"{{webUIName}} Backend Required": "{{webUIName}} Arkayüz Gerekli",
 	"{{webUIName}} Backend Required": "{{webUIName}} Arkayüz Gerekli",
 	"a user": "bir kullanıcı",
 	"a user": "bir kullanıcı",
 	"About": "Hakkında",
 	"About": "Hakkında",
 	"Account": "Hesap",
 	"Account": "Hesap",
-	"Accurate information": "",
+	"Accurate information": "Doğru bilgi",
 	"Add a model": "Bir model ekleyin",
 	"Add a model": "Bir model ekleyin",
 	"Add a model tag name": "Bir model etiket adı ekleyin",
 	"Add a model tag name": "Bir model etiket adı ekleyin",
 	"Add a short description about what this modelfile does": "Bu model dosyasının ne yaptığı hakkında kısa bir açıklama ekleyin",
 	"Add a short description about what this modelfile does": "Bu model dosyasının ne yaptığı hakkında kısa bir açıklama ekleyin",
 	"Add a short title for this prompt": "Bu prompt için kısa bir başlık ekleyin",
 	"Add a short title for this prompt": "Bu prompt için kısa bir başlık ekleyin",
 	"Add a tag": "Bir etiket ekleyin",
 	"Add a tag": "Bir etiket ekleyin",
+	"Add custom prompt": "",
 	"Add Docs": "Dökümanlar Ekle",
 	"Add Docs": "Dökümanlar Ekle",
 	"Add Files": "Dosyalar Ekle",
 	"Add Files": "Dosyalar Ekle",
 	"Add message": "Mesaj ekle",
 	"Add message": "Mesaj ekle",
-	"Add Model": "",
-	"Add Tags": "etiketler ekle",
-	"Add User": "",
+	"Add Model": "Model Ekle",
+	"Add Tags": "Etiketler ekle",
+	"Add User": "Kullanıcı Ekle",
 	"Adjusting these settings will apply changes universally to all users.": "Bu ayarları ayarlamak değişiklikleri tüm kullanıcılara evrensel olarak uygular.",
 	"Adjusting these settings will apply changes universally to all users.": "Bu ayarları ayarlamak değişiklikleri tüm kullanıcılara evrensel olarak uygular.",
 	"admin": "yönetici",
 	"admin": "yönetici",
 	"Admin Panel": "Yönetici Paneli",
 	"Admin Panel": "Yönetici Paneli",
@@ -37,14 +38,15 @@
 	"and create a new shared link.": "",
 	"and create a new shared link.": "",
 	"API Base URL": "API Temel URL",
 	"API Base URL": "API Temel URL",
 	"API Key": "API Anahtarı",
 	"API Key": "API Anahtarı",
-	"API Key created.": "",
-	"API keys": "",
+	"API Key created.": "API Anahtarı oluşturuldu.",
+	"API keys": "API anahtarları",
 	"API RPM": "API RPM",
 	"API RPM": "API RPM",
-	"Archive": "",
-	"Archived Chats": "sohbet kaydı",
+	"Archive": "Arşiv",
+	"Archived Chats": "Arşivlenmiş Sohbetler",
 	"are allowed - Activate this command by typing": "izin verilir - Bu komutu yazarak etkinleştirin",
 	"are allowed - Activate this command by typing": "izin verilir - Bu komutu yazarak etkinleştirin",
 	"Are you sure?": "Emin misiniz?",
 	"Are you sure?": "Emin misiniz?",
-	"Attention to detail": "",
+	"Attach file": "",
+	"Attention to detail": "Ayrıntılara dikkat",
 	"Audio": "Ses",
 	"Audio": "Ses",
 	"Auto-playback response": "Yanıtı otomatik oynatma",
 	"Auto-playback response": "Yanıtı otomatik oynatma",
 	"Auto-send input after 3 sec.": "3 saniye sonra otomatik olarak gönder",
 	"Auto-send input after 3 sec.": "3 saniye sonra otomatik olarak gönder",
@@ -52,9 +54,9 @@
 	"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Temel URL gereklidir.",
 	"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 Temel URL gereklidir.",
 	"available!": "mevcut!",
 	"available!": "mevcut!",
 	"Back": "Geri",
 	"Back": "Geri",
-	"Bad Response": "",
+	"Bad Response": "Kötü Yanıt",
 	"before": "",
 	"before": "",
-	"Being lazy": "",
+	"Being lazy": "Tembelleşiyor",
 	"Builder Mode": "Oluşturucu Modu",
 	"Builder Mode": "Oluşturucu Modu",
 	"Cancel": "İptal",
 	"Cancel": "İptal",
 	"Categories": "Kategoriler",
 	"Categories": "Kategoriler",
@@ -74,15 +76,15 @@
 	"Click here to": "",
 	"Click here to": "",
 	"Click here to check other modelfiles.": "Diğer model dosyalarını kontrol etmek için buraya tıklayın.",
 	"Click here to check other modelfiles.": "Diğer model dosyalarını kontrol etmek için buraya tıklayın.",
 	"Click here to select": "Seçmek için buraya tıklayın",
 	"Click here to select": "Seçmek için buraya tıklayın",
-	"Click here to select a csv file.": "",
+	"Click here to select a csv file.": "Bir CSV dosyası seçmek için buraya tıklayın.",
 	"Click here to select documents.": "Belgeleri seçmek için buraya tıklayın.",
 	"Click here to select documents.": "Belgeleri seçmek için buraya tıklayın.",
 	"click here.": "buraya tıklayın.",
 	"click here.": "buraya tıklayın.",
 	"Click on the user role button to change a user's role.": "Bir kullanıcının rolünü değiştirmek için kullanıcı rolü düğmesine tıklayın.",
 	"Click on the user role button to change a user's role.": "Bir kullanıcının rolünü değiştirmek için kullanıcı rolü düğmesine tıklayın.",
 	"Close": "Kapat",
 	"Close": "Kapat",
 	"Collection": "Koleksiyon",
 	"Collection": "Koleksiyon",
-	"ComfyUI": "",
-	"ComfyUI Base URL": "",
-	"ComfyUI Base URL is required.": "",
+	"ComfyUI": "ComfyUI",
+	"ComfyUI Base URL": "ComfyUI Temel URL",
+	"ComfyUI Base URL is required.": "ComfyUI Temel URL gerekli.",
 	"Command": "Komut",
 	"Command": "Komut",
 	"Confirm Password": "Parolayı Onayla",
 	"Confirm Password": "Parolayı Onayla",
 	"Connections": "Bağlantılar",
 	"Connections": "Bağlantılar",
@@ -90,11 +92,11 @@
 	"Context Length": "Bağlam Uzunluğu",
 	"Context Length": "Bağlam Uzunluğu",
 	"Continue Response": "",
 	"Continue Response": "",
 	"Conversation Mode": "Sohbet Modu",
 	"Conversation Mode": "Sohbet Modu",
-	"Copied shared chat URL to clipboard!": "",
-	"Copy": "",
+	"Copied shared chat URL to clipboard!": "Paylaşılan sohbet URL'si panoya kopyalandı!",
+	"Copy": "Kopyala",
 	"Copy last code block": "Son kod bloğunu kopyala",
 	"Copy last code block": "Son kod bloğunu kopyala",
 	"Copy last response": "Son yanıtı kopyala",
 	"Copy last response": "Son yanıtı kopyala",
-	"Copy Link": "",
+	"Copy Link": "Bağlantıyı Kopyala",
 	"Copying to clipboard was successful!": "Panoya kopyalama başarılı!",
 	"Copying to clipboard was successful!": "Panoya kopyalama başarılı!",
 	"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':": "Aşağıdaki sorgu için başlık olarak 3-5 kelimelik kısa ve öz bir ifade oluşturun, 3-5 kelime sınırına kesinlikle uyun ve 'başlık' kelimesini kullanmaktan kaçının:",
 	"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':": "Aşağıdaki sorgu için başlık olarak 3-5 kelimelik kısa ve öz bir ifade oluşturun, 3-5 kelime sınırına kesinlikle uyun ve 'başlık' kelimesini kullanmaktan kaçının:",
 	"Create a modelfile": "Bir model dosyası oluştur",
 	"Create a modelfile": "Bir model dosyası oluştur",
@@ -102,7 +104,7 @@
 	"Create new key": "",
 	"Create new key": "",
 	"Create new secret key": "",
 	"Create new secret key": "",
 	"Created at": "Oluşturulma tarihi",
 	"Created at": "Oluşturulma tarihi",
-	"Created At": "",
+	"Created At": "Şu Tarihte Oluşturuldu:",
 	"Current Model": "Mevcut Model",
 	"Current Model": "Mevcut Model",
 	"Current Password": "Mevcut Parola",
 	"Current Password": "Mevcut Parola",
 	"Custom": "Özel",
 	"Custom": "Özel",
@@ -113,23 +115,23 @@
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
 	"DD/MM/YYYY HH:mm": "DD/MM/YYYY HH:mm",
 	"Default": "Varsayılan",
 	"Default": "Varsayılan",
 	"Default (Automatic1111)": "Varsayılan (Automatic1111)",
 	"Default (Automatic1111)": "Varsayılan (Automatic1111)",
-	"Default (SentenceTransformers)": "",
+	"Default (SentenceTransformers)": "Varsayılan (SentenceTransformers)",
 	"Default (Web API)": "Varsayılan (Web API)",
 	"Default (Web API)": "Varsayılan (Web API)",
 	"Default model updated": "Varsayılan model güncellendi",
 	"Default model updated": "Varsayılan model güncellendi",
 	"Default Prompt Suggestions": "Varsayılan Prompt Önerileri",
 	"Default Prompt Suggestions": "Varsayılan Prompt Önerileri",
 	"Default User Role": "Varsayılan Kullanıcı Rolü",
 	"Default User Role": "Varsayılan Kullanıcı Rolü",
 	"delete": "sil",
 	"delete": "sil",
-	"Delete": "",
+	"Delete": "Sil",
 	"Delete a model": "Bir modeli sil",
 	"Delete a model": "Bir modeli sil",
 	"Delete chat": "Sohbeti sil",
 	"Delete chat": "Sohbeti sil",
-	"Delete Chat": "",
+	"Delete Chat": "Sohbeti Sil",
 	"Delete Chats": "Sohbetleri Sil",
 	"Delete Chats": "Sohbetleri Sil",
 	"delete this link": "",
 	"delete this link": "",
-	"Delete User": "",
+	"Delete User": "Kullanıcıyı Sil",
 	"Deleted {{deleteModelTag}}": "{{deleteModelTag}} silindi",
 	"Deleted {{deleteModelTag}}": "{{deleteModelTag}} silindi",
-	"Deleted {{tagName}}": "",
+	"Deleted {{tagName}}": "{{tagName}} silindi",
 	"Description": "Açıklama",
 	"Description": "Açıklama",
-	"Didn't fully follow instructions": "",
+	"Didn't fully follow instructions": "Talimatları tam olarak takip etmedi",
 	"Disabled": "Devre Dışı",
 	"Disabled": "Devre Dışı",
 	"Discover a modelfile": "Bir model dosyası keşfedin",
 	"Discover a modelfile": "Bir model dosyası keşfedin",
 	"Discover a prompt": "Bir prompt keşfedin",
 	"Discover a prompt": "Bir prompt keşfedin",
@@ -142,21 +144,21 @@
 	"does not make any external connections, and your data stays securely on your locally hosted server.": "herhangi bir harici bağlantı yapmaz ve verileriniz güvenli bir şekilde yerel olarak barındırılan sunucunuzda kalır.",
 	"does not make any external connections, and your data stays securely on your locally hosted server.": "herhangi bir harici bağlantı yapmaz ve verileriniz güvenli bir şekilde yerel olarak barındırılan sunucunuzda kalır.",
 	"Don't Allow": "İzin Verme",
 	"Don't Allow": "İzin Verme",
 	"Don't have an account?": "Hesabınız yok mu?",
 	"Don't have an account?": "Hesabınız yok mu?",
-	"Don't like the style": "",
-	"Download": "",
+	"Don't like the style": "Tarzını beğenmedim",
+	"Download": "İndir",
 	"Download Database": "Veritabanını İndir",
 	"Download Database": "Veritabanını İndir",
 	"Drop any files here to add to the conversation": "Sohbete eklemek istediğiniz dosyaları buraya bırakın",
 	"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'.",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "örn. '30s', '10m'. Geçerli zaman birimleri 's', 'm', 'h'.",
-	"Edit": "",
+	"Edit": "Düzenle",
 	"Edit Doc": "Belgeyi Düzenle",
 	"Edit Doc": "Belgeyi Düzenle",
 	"Edit User": "Kullanıcıyı Düzenle",
 	"Edit User": "Kullanıcıyı Düzenle",
 	"Email": "E-posta",
 	"Email": "E-posta",
-	"Embedding Model Engine": "",
-	"Embedding model set to \"{{embedding_model}}\"": "",
+	"Embedding Model Engine": "Gömme Modeli Motoru",
+	"Embedding model set to \"{{embedding_model}}\"": "Gömme modeli \"{{embedding_model}}\" olarak ayarlandı",
 	"Enable Chat History": "Sohbet Geçmişini Etkinleştir",
 	"Enable Chat History": "Sohbet Geçmişini Etkinleştir",
 	"Enable New Sign Ups": "Yeni Kayıtları Etkinleştir",
 	"Enable New Sign Ups": "Yeni Kayıtları Etkinleştir",
 	"Enabled": "Etkin",
 	"Enabled": "Etkin",
-	"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 dosyanızın şu sırayla 4 sütun içerdiğinden emin olun: İsim, E-posta, Şifre, Rol.",
 	"Enter {{role}} message here": "Buraya {{role}} mesajını girin",
 	"Enter {{role}} message here": "Buraya {{role}} mesajını girin",
 	"Enter Chunk Overlap": "Chunk Örtüşmesini Girin",
 	"Enter Chunk Overlap": "Chunk Örtüşmesini Girin",
 	"Enter Chunk Size": "Chunk Boyutunu Girin",
 	"Enter Chunk Size": "Chunk Boyutunu Girin",
@@ -168,7 +170,7 @@
 	"Enter Max Tokens (litellm_params.max_tokens)": "Maksimum Token Sayısını Girin (litellm_params.max_tokens)",
 	"Enter Max Tokens (litellm_params.max_tokens)": "Maksimum Token Sayısını Girin (litellm_params.max_tokens)",
 	"Enter model tag (e.g. {{modelTag}})": "Model etiketini girin (örn. {{modelTag}})",
 	"Enter model tag (e.g. {{modelTag}})": "Model etiketini girin (örn. {{modelTag}})",
 	"Enter Number of Steps (e.g. 50)": "Adım Sayısını Girin (örn. 50)",
 	"Enter Number of Steps (e.g. 50)": "Adım Sayısını Girin (örn. 50)",
-	"Enter Score": "",
+	"Enter Score": "Skoru Girin",
 	"Enter stop sequence": "Durdurma dizisini girin",
 	"Enter stop sequence": "Durdurma dizisini girin",
 	"Enter Top K": "Top K'yı girin",
 	"Enter Top K": "Top K'yı girin",
 	"Enter URL (e.g. http://127.0.0.1:7860/)": "URL'yi Girin (örn. http://127.0.0.1:7860/)",
 	"Enter URL (e.g. http://127.0.0.1:7860/)": "URL'yi Girin (örn. http://127.0.0.1:7860/)",
@@ -176,35 +178,35 @@
 	"Enter Your Email": "E-postanızı Girin",
 	"Enter Your Email": "E-postanızı Girin",
 	"Enter Your Full Name": "Tam Adınızı Girin",
 	"Enter Your Full Name": "Tam Adınızı Girin",
 	"Enter Your Password": "Parolanızı Girin",
 	"Enter Your Password": "Parolanızı Girin",
-	"Enter Your Role": "",
+	"Enter Your Role": "Rolünüzü Girin",
 	"Experimental": "Deneysel",
 	"Experimental": "Deneysel",
 	"Export All Chats (All Users)": "Tüm Sohbetleri Dışa Aktar (Tüm Kullanıcılar)",
 	"Export All Chats (All Users)": "Tüm Sohbetleri Dışa Aktar (Tüm Kullanıcılar)",
 	"Export Chats": "Sohbetleri Dışa Aktar",
 	"Export Chats": "Sohbetleri Dışa Aktar",
 	"Export Documents Mapping": "Belge Eşlemesini Dışa Aktar",
 	"Export Documents Mapping": "Belge Eşlemesini Dışa Aktar",
 	"Export Modelfiles": "Model Dosyalarını Dışa Aktar",
 	"Export Modelfiles": "Model Dosyalarını Dışa Aktar",
 	"Export Prompts": "Promptları Dışa Aktar",
 	"Export Prompts": "Promptları Dışa Aktar",
-	"Failed to create API Key.": "",
+	"Failed to create API Key.": "API Anahtarı oluşturulamadı.",
 	"Failed to read clipboard contents": "Pano içeriği okunamadı",
 	"Failed to read clipboard contents": "Pano içeriği okunamadı",
-	"Feel free to add specific details": "",
+	"Feel free to add specific details": "Spesifik ayrıntılar eklemekten çekinmeyin",
 	"File Mode": "Dosya Modu",
 	"File Mode": "Dosya Modu",
 	"File not found.": "Dosya bulunamadı.",
 	"File not found.": "Dosya bulunamadı.",
 	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Parmak izi sahteciliği tespit edildi: Avatar olarak baş harfler kullanılamıyor. Varsayılan profil resmine dönülüyor.",
 	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Parmak izi sahteciliği tespit edildi: Avatar olarak baş harfler kullanılamıyor. Varsayılan profil resmine dönülüyor.",
 	"Fluidly stream large external response chunks": "Büyük harici yanıt chunklarını akıcı bir şekilde yayınlayın",
 	"Fluidly stream large external response chunks": "Büyük harici yanıt chunklarını akıcı bir şekilde yayınlayın",
 	"Focus chat input": "Sohbet girişine odaklan",
 	"Focus chat input": "Sohbet girişine odaklan",
-	"Followed instructions perfectly": "",
+	"Followed instructions perfectly": "Talimatları mükemmel şekilde takip etti",
 	"Format your variables using square brackets like this:": "Değişkenlerinizi şu şekilde kare parantezlerle biçimlendirin:",
 	"Format your variables using square brackets like this:": "Değişkenlerinizi şu şekilde kare parantezlerle biçimlendirin:",
 	"From (Base Model)": "(Temel Model)'den",
 	"From (Base Model)": "(Temel Model)'den",
 	"Full Screen Mode": "Tam Ekran Modu",
 	"Full Screen Mode": "Tam Ekran Modu",
 	"General": "Genel",
 	"General": "Genel",
 	"General Settings": "Genel Ayarlar",
 	"General Settings": "Genel Ayarlar",
-	"Generation Info": "",
-	"Good Response": "",
-	"has no conversations.": "",
+	"Generation Info": "Üretim Bilgisi",
+	"Good Response": "İyi Yanıt",
+	"has no conversations.": "hiç konuşması yok.",
 	"Hello, {{name}}": "Merhaba, {{name}}",
 	"Hello, {{name}}": "Merhaba, {{name}}",
 	"Hide": "Gizle",
 	"Hide": "Gizle",
 	"Hide Additional Params": "Ek Parametreleri Gizle",
 	"Hide Additional Params": "Ek Parametreleri Gizle",
 	"How can I help you today?": "Bugün size nasıl yardımcı olabilirim?",
 	"How can I help you today?": "Bugün size nasıl yardımcı olabilirim?",
-	"Hybrid Search": "",
+	"Hybrid Search": "Karma Arama",
 	"Image Generation (Experimental)": "Görüntü Oluşturma (Deneysel)",
 	"Image Generation (Experimental)": "Görüntü Oluşturma (Deneysel)",
 	"Image Generation Engine": "Görüntü Oluşturma Motoru",
 	"Image Generation Engine": "Görüntü Oluşturma Motoru",
 	"Image Settings": "Görüntü Ayarları",
 	"Image Settings": "Görüntü Ayarları",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Model Dosyalarını İçe Aktar",
 	"Import Modelfiles": "Model Dosyalarını İçe Aktar",
 	"Import Prompts": "Promptları İçe Aktar",
 	"Import Prompts": "Promptları İçe Aktar",
 	"Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui çalıştırılırken `--api` bayrağını dahil edin",
 	"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",
 	"Interface": "Arayüz",
 	"join our Discord for help.": "yardım için Discord'umuza katılın.",
 	"join our Discord for help.": "yardım için Discord'umuza katılın.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -222,7 +225,7 @@
 	"Keep Alive": "Canlı Tut",
 	"Keep Alive": "Canlı Tut",
 	"Keyboard shortcuts": "Klavye kısayolları",
 	"Keyboard shortcuts": "Klavye kısayolları",
 	"Language": "Dil",
 	"Language": "Dil",
-	"Last Active": "",
+	"Last Active": "Son Aktivite",
 	"Light": "Açık",
 	"Light": "Açık",
 	"Listening...": "Dinleniyor...",
 	"Listening...": "Dinleniyor...",
 	"LLMs can make mistakes. Verify important information.": "LLM'ler hata yapabilir. Önemli bilgileri doğrulayın.",
 	"LLMs can make mistakes. Verify important information.": "LLM'ler hata yapabilir. Önemli bilgileri doğrulayın.",
@@ -239,7 +242,7 @@
 	"Mirostat Eta": "Mirostat Eta",
 	"Mirostat Eta": "Mirostat Eta",
 	"Mirostat Tau": "Mirostat Tau",
 	"Mirostat Tau": "Mirostat Tau",
 	"MMMM DD, YYYY": "DD MMMM YYYY",
 	"MMMM DD, YYYY": "DD MMMM YYYY",
-	"MMMM DD, YYYY HH:mm": "",
+	"MMMM DD, YYYY HH:mm": "DD MMMM YYYY HH:mm",
 	"Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' başarıyla indirildi.",
 	"Model '{{modelName}}' has been successfully downloaded.": "'{{modelName}}' başarıyla indirildi.",
 	"Model '{{modelTag}}' is already in queue for downloading.": "'{{modelTag}}' zaten indirme sırasında.",
 	"Model '{{modelTag}}' is already in queue for downloading.": "'{{modelTag}}' zaten indirme sırasında.",
 	"Model {{modelId}} not found": "{{modelId}} bulunamadı",
 	"Model {{modelId}} not found": "{{modelId}} bulunamadı",
@@ -255,7 +258,7 @@
 	"Modelfile Content": "Model Dosyası İçeriği",
 	"Modelfile Content": "Model Dosyası İçeriği",
 	"Modelfiles": "Model Dosyaları",
 	"Modelfiles": "Model Dosyaları",
 	"Models": "Modeller",
 	"Models": "Modeller",
-	"More": "",
+	"More": "Daha Fazla",
 	"My Documents": "Belgelerim",
 	"My Documents": "Belgelerim",
 	"My Modelfiles": "Model Dosyalarım",
 	"My Modelfiles": "Model Dosyalarım",
 	"My Prompts": "Promptlarım",
 	"My Prompts": "Promptlarım",
@@ -268,12 +271,12 @@
 	"Not factually correct": "",
 	"Not factually correct": "",
 	"Not sure what to add?": "Ne ekleyeceğinizden emin değil misiniz?",
 	"Not sure what to add?": "Ne ekleyeceğinizden emin değil misiniz?",
 	"Not sure what to write? Switch to": "Ne yazacağınızdan emin değil misiniz? Şuraya geçin",
 	"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.": "",
+	"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",
 	"Notifications": "Bildirimler",
 	"Off": "Kapalı",
 	"Off": "Kapalı",
 	"Okay, Let's Go!": "Tamam, Hadi Başlayalım!",
 	"Okay, Let's Go!": "Tamam, Hadi Başlayalım!",
 	"OLED Dark": "OLED Koyu",
 	"OLED Dark": "OLED Koyu",
-	"Ollama": "",
+	"Ollama": "Ollama",
 	"Ollama Base URL": "Ollama Temel URL",
 	"Ollama Base URL": "Ollama Temel URL",
 	"Ollama Version": "Ollama Sürümü",
 	"Ollama Version": "Ollama Sürümü",
 	"On": "Açık",
 	"On": "Açık",
@@ -286,25 +289,25 @@
 	"Open AI": "Open AI",
 	"Open AI": "Open AI",
 	"Open AI (Dall-E)": "Open AI (Dall-E)",
 	"Open AI (Dall-E)": "Open AI (Dall-E)",
 	"Open new chat": "Yeni sohbet aç",
 	"Open new chat": "Yeni sohbet aç",
-	"OpenAI": "",
+	"OpenAI": "OpenAI",
 	"OpenAI API": "OpenAI API",
 	"OpenAI API": "OpenAI API",
-	"OpenAI API Config": "",
+	"OpenAI API Config": "OpenAI API Konfigürasyonu",
 	"OpenAI API Key is required.": "OpenAI API Anahtarı gereklidir.",
 	"OpenAI API Key is required.": "OpenAI API Anahtarı gereklidir.",
-	"OpenAI URL/Key required.": "",
+	"OpenAI URL/Key required.": "OpenAI URL/Anahtar gereklidir.",
 	"or": "veya",
 	"or": "veya",
-	"Other": "",
+	"Other": "Diğer",
 	"Overview": "",
 	"Overview": "",
 	"Parameters": "Parametreler",
 	"Parameters": "Parametreler",
 	"Password": "Parola",
 	"Password": "Parola",
-	"PDF document (.pdf)": "",
+	"PDF document (.pdf)": "PDF belgesi (.pdf)",
 	"PDF Extract Images (OCR)": "PDF Görüntülerini Çıkart (OCR)",
 	"PDF Extract Images (OCR)": "PDF Görüntülerini Çıkart (OCR)",
 	"pending": "beklemede",
 	"pending": "beklemede",
 	"Permission denied when accessing microphone: {{error}}": "Mikrofona erişim izni reddedildi: {{error}}",
 	"Permission denied when accessing microphone: {{error}}": "Mikrofona erişim izni reddedildi: {{error}}",
-	"Plain text (.txt)": "",
+	"Plain text (.txt)": "Düz metin (.txt)",
 	"Playground": "Oyun Alanı",
 	"Playground": "Oyun Alanı",
-	"Positive attitude": "",
-	"Profile Image": "",
-	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "",
+	"Positive attitude": "Olumlu yaklaşım",
+	"Profile Image": "Profil Fotoğrafı",
+	"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 Content": "Prompt İçeriği",
 	"Prompt suggestions": "Prompt önerileri",
 	"Prompt suggestions": "Prompt önerileri",
 	"Prompts": "Promptlar",
 	"Prompts": "Promptlar",
@@ -314,20 +317,20 @@
 	"Query Params": "Sorgu Parametreleri",
 	"Query Params": "Sorgu Parametreleri",
 	"RAG Template": "RAG Şablonu",
 	"RAG Template": "RAG Şablonu",
 	"Raw Format": "Ham Format",
 	"Raw Format": "Ham Format",
-	"Read Aloud": "",
+	"Read Aloud": "Sesli Oku",
 	"Record voice": "Ses kaydı yap",
 	"Record voice": "Ses kaydı yap",
 	"Redirecting you to OpenWebUI Community": "OpenWebUI Topluluğuna yönlendiriliyorsunuz",
 	"Redirecting you to OpenWebUI Community": "OpenWebUI Topluluğuna yönlendiriliyorsunuz",
-	"Refused when it shouldn't have": "",
-	"Regenerate": "",
+	"Refused when it shouldn't have": "Reddedilmemesi gerekirken reddedildi",
+	"Regenerate": "Tekrar Oluştur",
 	"Release Notes": "Sürüm Notları",
 	"Release Notes": "Sürüm Notları",
-	"Remove": "",
+	"Remove": "Kaldır",
 	"Remove Model": "",
 	"Remove Model": "",
 	"Rename": "",
 	"Rename": "",
 	"Repeat Last N": "Son N'yi Tekrar Et",
 	"Repeat Last N": "Son N'yi Tekrar Et",
 	"Repeat Penalty": "Tekrar Cezası",
 	"Repeat Penalty": "Tekrar Cezası",
 	"Request Mode": "İstek Modu",
 	"Request Mode": "İstek Modu",
-	"Reranking model disabled": "",
-	"Reranking model set to \"{{reranking_model}}\"": "",
+	"Reranking model disabled": "Yeniden sıralama modeli devre dışı bırakıldı",
+	"Reranking model set to \"{{reranking_model}}\"": "Yeniden sıralama modeli \"{{reranking_model}}\" olarak ayarlandı",
 	"Reset Vector Storage": "Vektör Depolamayı Sıfırla",
 	"Reset Vector Storage": "Vektör Depolamayı Sıfırla",
 	"Response AutoCopy to Clipboard": "Yanıtı Panoya Otomatik Kopyala",
 	"Response AutoCopy to Clipboard": "Yanıtı Panoya Otomatik Kopyala",
 	"Role": "Rol",
 	"Role": "Rol",
@@ -342,7 +345,7 @@
 	"Scan complete!": "Tarama tamamlandı!",
 	"Scan complete!": "Tarama tamamlandı!",
 	"Scan for documents from {{path}}": "{{path}} dizininden belgeleri tarayın",
 	"Scan for documents from {{path}}": "{{path}} dizininden belgeleri tarayın",
 	"Search": "Ara",
 	"Search": "Ara",
-	"Search a model": "",
+	"Search a model": "Bir model ara",
 	"Search Documents": "Belgeleri Ara",
 	"Search Documents": "Belgeleri Ara",
 	"Search Prompts": "Prompt Ara",
 	"Search Prompts": "Prompt Ara",
 	"See readme.md for instructions": "Yönergeler için readme.md dosyasına bakın",
 	"See readme.md for instructions": "Yönergeler için readme.md dosyasına bakın",
@@ -351,6 +354,7 @@
 	"Select a mode": "Bir mod seç",
 	"Select a mode": "Bir mod seç",
 	"Select a model": "Bir model seç",
 	"Select a model": "Bir model seç",
 	"Select an Ollama instance": "Bir Ollama örneği seçin",
 	"Select an Ollama instance": "Bir Ollama örneği seçin",
+	"Select model": "",
 	"Send a Message": "Bir Mesaj Gönder",
 	"Send a Message": "Bir Mesaj Gönder",
 	"Send message": "Mesaj gönder",
 	"Send message": "Mesaj gönder",
 	"Server connection verified": "Sunucu bağlantısı doğrulandı",
 	"Server connection verified": "Sunucu bağlantısı doğrulandı",
@@ -362,8 +366,8 @@
 	"Set Voice": "Ses Ayarla",
 	"Set Voice": "Ses Ayarla",
 	"Settings": "Ayarlar",
 	"Settings": "Ayarlar",
 	"Settings saved successfully!": "Ayarlar başarıyla kaydedildi!",
 	"Settings saved successfully!": "Ayarlar başarıyla kaydedildi!",
-	"Share": "",
-	"Share Chat": "",
+	"Share": "Paylaş",
+	"Share Chat": "Sohbeti Paylaş",
 	"Share to OpenWebUI Community": "OpenWebUI Topluluğu ile Paylaş",
 	"Share to OpenWebUI Community": "OpenWebUI Topluluğu ile Paylaş",
 	"short-summary": "kısa-özet",
 	"short-summary": "kısa-özet",
 	"Show": "Göster",
 	"Show": "Göster",
@@ -374,35 +378,35 @@
 	"Sign in": "Oturum aç",
 	"Sign in": "Oturum aç",
 	"Sign Out": "Çıkış Yap",
 	"Sign Out": "Çıkış Yap",
 	"Sign up": "Kaydol",
 	"Sign up": "Kaydol",
-	"Signing in": "",
+	"Signing in": "Oturum açma",
 	"Speech recognition error: {{error}}": "Konuşma tanıma hatası: {{error}}",
 	"Speech recognition error: {{error}}": "Konuşma tanıma hatası: {{error}}",
 	"Speech-to-Text Engine": "Konuşmadan Metne Motoru",
 	"Speech-to-Text Engine": "Konuşmadan Metne Motoru",
 	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API bu tarayıcıda desteklenmiyor.",
 	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API bu tarayıcıda desteklenmiyor.",
 	"Stop Sequence": "Diziyi Durdur",
 	"Stop Sequence": "Diziyi Durdur",
 	"STT Settings": "STT Ayarları",
 	"STT Settings": "STT Ayarları",
 	"Submit": "Gönder",
 	"Submit": "Gönder",
-	"Subtitle (e.g. about the Roman Empire)": "",
+	"Subtitle (e.g. about the Roman Empire)": "Alt başlık (örn. Roma İmparatorluğu hakkında)",
 	"Success": "Başarılı",
 	"Success": "Başarılı",
 	"Successfully updated.": "Başarıyla güncellendi.",
 	"Successfully updated.": "Başarıyla güncellendi.",
 	"Sync All": "Tümünü Senkronize Et",
 	"Sync All": "Tümünü Senkronize Et",
 	"System": "Sistem",
 	"System": "Sistem",
 	"System Prompt": "Sistem Promptu",
 	"System Prompt": "Sistem Promptu",
 	"Tags": "Etiketler",
 	"Tags": "Etiketler",
-	"Tell us more:": "",
+	"Tell us more:": "Bize daha fazlasını anlat:",
 	"Temperature": "Temperature",
 	"Temperature": "Temperature",
 	"Template": "Şablon",
 	"Template": "Şablon",
 	"Text Completion": "Metin Tamamlama",
 	"Text Completion": "Metin Tamamlama",
 	"Text-to-Speech Engine": "Metinden Sese Motoru",
 	"Text-to-Speech Engine": "Metinden Sese Motoru",
 	"Tfs Z": "Tfs Z",
 	"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!": "Geri bildiriminiz için teşekkürler!",
+	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Puan 0.0 (%0) ile 1.0 (%100) arasında bir değer olmalıdır.",
 	"Theme": "Tema",
 	"Theme": "Tema",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Bu, önemli konuşmalarınızın güvenli bir şekilde arkayüz veritabanınıza kaydedildiğini garantiler. Teşekkür ederiz!",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Bu, önemli konuşmalarınızın güvenli bir şekilde arkayüz veritabanınıza kaydedildiğini garantiler. Teşekkür ederiz!",
 	"This setting does not sync across browsers or devices.": "Bu ayar tarayıcılar veya cihazlar arasında senkronize edilmez.",
 	"This setting does not sync across browsers or devices.": "Bu ayar tarayıcılar veya cihazlar arasında senkronize edilmez.",
-	"Thorough explanation": "",
+	"Thorough explanation": "Kapsamlı açıklama",
 	"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "İpucu: Her değiştirmeden sonra sohbet girişinde tab tuşuna basarak birden fazla değişken yuvasını art arda güncelleyin.",
 	"Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "İpucu: Her değiştirmeden sonra sohbet girişinde tab tuşuna basarak birden fazla değişken yuvasını art arda güncelleyin.",
 	"Title": "Başlık",
 	"Title": "Başlık",
-	"Title (e.g. Tell me a fun fact)": "",
+	"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 Auto-Generation": "Otomatik Başlık Oluşturma",
 	"Title Generation Prompt": "Başlık Oluşturma Promptu",
 	"Title Generation Prompt": "Başlık Oluşturma Promptu",
 	"to": "için",
 	"to": "için",
@@ -418,12 +422,12 @@
 	"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (Download) URL'sini Yazın",
 	"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (Download) URL'sini Yazın",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "Ah! {{provider}}'a bağlanırken bir sorun oluştu.",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "Ah! {{provider}}'a bağlanırken bir sorun oluştu.",
 	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Bilinmeyen Dosya Türü '{{file_type}}', ancak düz metin olarak kabul ediliyor ve işleniyor",
 	"Unknown File Type '{{file_type}}', but accepting and treating as plain text": "Bilinmeyen Dosya Türü '{{file_type}}', ancak düz metin olarak kabul ediliyor ve işleniyor",
-	"Update and Copy Link": "",
-	"Update Embedding Model": "",
-	"Update embedding model (e.g. {{model}})": "",
+	"Update and Copy Link": "Güncelle ve Bağlantıyı Kopyala",
+	"Update Embedding Model": "Gömme Modelini Güncelle",
+	"Update embedding model (e.g. {{model}})": "Gömme modelini güncelle (örn. {{model}})",
 	"Update password": "Parolayı Güncelle",
 	"Update password": "Parolayı Güncelle",
-	"Update Reranking Model": "",
-	"Update reranking model (e.g. {{model}})": "",
+	"Update Reranking Model": "Yeniden Sıralama Modelini Güncelle",
+	"Update reranking model (e.g. {{model}})": "Yeniden sıralama modelini güncelleyin (örn. {{model}})",
 	"Upload a GGUF model": "Bir GGUF modeli yükle",
 	"Upload a GGUF model": "Bir GGUF modeli yükle",
 	"Upload files": "Dosyaları Yükle",
 	"Upload files": "Dosyaları Yükle",
 	"Upload Progress": "Yükleme İlerlemesi",
 	"Upload Progress": "Yükleme İlerlemesi",
@@ -439,9 +443,9 @@
 	"variable": "değişken",
 	"variable": "değişken",
 	"variable to have them replaced with clipboard content.": "panodaki içerikle değiştirilmesi için değişken.",
 	"variable to have them replaced with clipboard content.": "panodaki içerikle değiştirilmesi için değişken.",
 	"Version": "Sürüm",
 	"Version": "Sürüm",
-	"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.": "Uyarı: Gömme modelinizi günceller veya değiştirirseniz, tüm belgeleri yeniden içe aktarmanız gerekecektir.",
 	"Web": "Web",
 	"Web": "Web",
-	"Webhook URL": "",
+	"Webhook URL": "Webhook URL",
 	"WebUI Add-ons": "WebUI Eklentileri",
 	"WebUI Add-ons": "WebUI Eklentileri",
 	"WebUI Settings": "WebUI Ayarları",
 	"WebUI Settings": "WebUI Ayarları",
 	"WebUI will make requests to": "WebUI, isteklerde bulunacak:",
 	"WebUI will make requests to": "WebUI, isteklerde bulunacak:",
@@ -455,5 +459,5 @@
 	"You have shared this chat": "",
 	"You have shared this chat": "",
 	"You're a helpful assistant.": "Sen yardımcı bir asistansın.",
 	"You're a helpful assistant.": "Sen yardımcı bir asistansın.",
 	"You're now logged in.": "Şimdi oturum açtınız.",
 	"You're now logged in.": "Şimdi oturum açtınız.",
-	"Youtube": ""
+	"Youtube": "Youtube"
 }
 }

+ 4 - 0
src/lib/i18n/locales/uk-UA/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Додати короткий опис того, що робить цей файл моделі",
 	"Add a short description about what this modelfile does": "Додати короткий опис того, що робить цей файл моделі",
 	"Add a short title for this prompt": "Додати коротку назву для цього промту",
 	"Add a short title for this prompt": "Додати коротку назву для цього промту",
 	"Add a tag": "Додайте тег",
 	"Add a tag": "Додайте тег",
+	"Add custom prompt": "",
 	"Add Docs": "Додати документи",
 	"Add Docs": "Додати документи",
 	"Add Files": "Додати файли",
 	"Add Files": "Додати файли",
 	"Add message": "Додати повідомлення",
 	"Add message": "Додати повідомлення",
@@ -44,6 +45,7 @@
 	"Archived Chats": "запис чату",
 	"Archived Chats": "запис чату",
 	"are allowed - Activate this command by typing": "дозволено - активізуйте цю команду набором",
 	"are allowed - Activate this command by typing": "дозволено - активізуйте цю команду набором",
 	"Are you sure?": "Ви впевнені?",
 	"Are you sure?": "Ви впевнені?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "Аудіо",
 	"Audio": "Аудіо",
 	"Auto-playback response": "Автоматичне відтворення відповіді",
 	"Auto-playback response": "Автоматичне відтворення відповіді",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Імпортувати файл моделі",
 	"Import Modelfiles": "Імпортувати файл моделі",
 	"Import Prompts": "Імпортувати промти",
 	"Import Prompts": "Імпортувати промти",
 	"Include `--api` flag when running stable-diffusion-webui": "Включіть прапор `--api` при запуску stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Включіть прапор `--api` при запуску stable-diffusion-webui",
+	"Input commands": "",
 	"Interface": "Інтерфейс",
 	"Interface": "Інтерфейс",
 	"join our Discord for help.": "приєднуйтеся до нашого Discord для допомоги.",
 	"join our Discord for help.": "приєднуйтеся до нашого Discord для допомоги.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -354,6 +357,7 @@
 	"Select a mode": "Оберіть режим",
 	"Select a mode": "Оберіть режим",
 	"Select a model": "Виберіть модель",
 	"Select a model": "Виберіть модель",
 	"Select an Ollama instance": "Виберіть екземпляр Ollama",
 	"Select an Ollama instance": "Виберіть екземпляр Ollama",
+	"Select model": "",
 	"Send a Message": "Надіслати повідомлення",
 	"Send a Message": "Надіслати повідомлення",
 	"Send message": "Надіслати повідомлення",
 	"Send message": "Надіслати повідомлення",
 	"Server connection verified": "З'єднання з сервером підтверджено",
 	"Server connection verified": "З'єднання з сервером підтверджено",

+ 4 - 0
src/lib/i18n/locales/vi-VN/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "Thêm mô tả ngắn về việc tệp mô tả mô hình (modelfile) này làm gì",
 	"Add a short description about what this modelfile does": "Thêm mô tả ngắn về việc tệp mô tả mô hình (modelfile) này làm gì",
 	"Add a short title for this prompt": "Thêm tiêu đề ngắn cho prompt này",
 	"Add a short title for this prompt": "Thêm tiêu đề ngắn cho prompt này",
 	"Add a tag": "Thêm thẻ (tag)",
 	"Add a tag": "Thêm thẻ (tag)",
+	"Add custom prompt": "",
 	"Add Docs": "Thêm tài liệu",
 	"Add Docs": "Thêm tài liệu",
 	"Add Files": "Thêm tệp",
 	"Add Files": "Thêm tệp",
 	"Add message": "Thêm tin nhắn",
 	"Add message": "Thêm tin nhắn",
@@ -44,6 +45,7 @@
 	"Archived Chats": "bản ghi trò chuyện",
 	"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õ",
 	"are allowed - Activate this command by typing": "được phép - Kích hoạt lệnh này bằng cách gõ",
 	"Are you sure?": "Bạn có chắc chắn không?",
 	"Are you sure?": "Bạn có chắc chắn không?",
+	"Attach file": "",
 	"Attention to detail": "Có sự chú ý đến chi tiết của vấn đề",
 	"Attention to detail": "Có sự chú ý đến chi tiết của vấn đề",
 	"Audio": "Âm thanh",
 	"Audio": "Âm thanh",
 	"Auto-playback response": "Tự động phát lại phản hồi (Auto-playback)",
 	"Auto-playback response": "Tự động phát lại phản hồi (Auto-playback)",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "Nạp tệp mô tả",
 	"Import Modelfiles": "Nạp tệp mô tả",
 	"Import Prompts": "Nạp các prompt lên hệ thống",
 	"Import Prompts": "Nạp các prompt lên hệ thống",
 	"Include `--api` flag when running stable-diffusion-webui": "Bao gồm flag `--api` khi chạy stable-diffusion-webui",
 	"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",
 	"Interface": "Giao diện",
 	"join our Discord for help.": "tham gia Discord của chúng tôi để được trợ giúp.",
 	"join our Discord for help.": "tham gia Discord của chúng tôi để được trợ giúp.",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "Chọn một chế độ",
 	"Select a mode": "Chọn một chế độ",
 	"Select a model": "Chọn mô hình",
 	"Select a model": "Chọn mô hình",
 	"Select an Ollama instance": "Chọn một thực thể Ollama",
 	"Select an Ollama instance": "Chọn một thực thể Ollama",
+	"Select model": "",
 	"Send a Message": "Gửi yêu cầu",
 	"Send a Message": "Gửi yêu cầu",
 	"Send message": "Gửi yêu cầu",
 	"Send message": "Gửi yêu cầu",
 	"Server connection verified": "Kết nối máy chủ đã được xác minh",
 	"Server connection verified": "Kết nối máy chủ đã được xác minh",

+ 4 - 0
src/lib/i18n/locales/zh-CN/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "为这个模型文件添加一段简短的描述",
 	"Add a short description about what this modelfile does": "为这个模型文件添加一段简短的描述",
 	"Add a short title for this prompt": "为这个提示词添加一个简短的标题",
 	"Add a short title for this prompt": "为这个提示词添加一个简短的标题",
 	"Add a tag": "添加标签",
 	"Add a tag": "添加标签",
+	"Add custom prompt": "",
 	"Add Docs": "添加文档",
 	"Add Docs": "添加文档",
 	"Add Files": "添加文件",
 	"Add Files": "添加文件",
 	"Add message": "添加消息",
 	"Add message": "添加消息",
@@ -44,6 +45,7 @@
 	"Archived Chats": "聊天记录存档",
 	"Archived Chats": "聊天记录存档",
 	"are allowed - Activate this command by typing": "允许 - 通过输入来激活这个命令",
 	"are allowed - Activate this command by typing": "允许 - 通过输入来激活这个命令",
 	"Are you sure?": "你确定吗?",
 	"Are you sure?": "你确定吗?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "音频",
 	"Audio": "音频",
 	"Auto-playback response": "自动播放回应",
 	"Auto-playback response": "自动播放回应",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "导入模型文件",
 	"Import Modelfiles": "导入模型文件",
 	"Import Prompts": "导入提示",
 	"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": "界面",
 	"Interface": "界面",
 	"join our Discord for help.": "加入我们的Discord寻求帮助。",
 	"join our Discord for help.": "加入我们的Discord寻求帮助。",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "选择一个模式",
 	"Select a mode": "选择一个模式",
 	"Select a model": "选择一个模型",
 	"Select a model": "选择一个模型",
 	"Select an Ollama instance": "选择一个Ollama实例",
 	"Select an Ollama instance": "选择一个Ollama实例",
+	"Select model": "",
 	"Send a Message": "发送消息",
 	"Send a Message": "发送消息",
 	"Send message": "发送消息",
 	"Send message": "发送消息",
 	"Server connection verified": "已验证服务器连接",
 	"Server connection verified": "已验证服务器连接",

+ 4 - 0
src/lib/i18n/locales/zh-TW/translation.json

@@ -15,6 +15,7 @@
 	"Add a short description about what this modelfile does": "為這個 Modelfile 添加一段簡短的描述",
 	"Add a short description about what this modelfile does": "為這個 Modelfile 添加一段簡短的描述",
 	"Add a short title for this prompt": "為這個提示詞添加一個簡短的標題",
 	"Add a short title for this prompt": "為這個提示詞添加一個簡短的標題",
 	"Add a tag": "新增標籤",
 	"Add a tag": "新增標籤",
+	"Add custom prompt": "",
 	"Add Docs": "新增文件",
 	"Add Docs": "新增文件",
 	"Add Files": "新增檔案",
 	"Add Files": "新增檔案",
 	"Add message": "新增訊息",
 	"Add message": "新增訊息",
@@ -44,6 +45,7 @@
 	"Archived Chats": "聊天記錄存檔",
 	"Archived Chats": "聊天記錄存檔",
 	"are allowed - Activate this command by typing": "是允許的 - 透過輸入",
 	"are allowed - Activate this command by typing": "是允許的 - 透過輸入",
 	"Are you sure?": "你確定嗎?",
 	"Are you sure?": "你確定嗎?",
+	"Attach file": "",
 	"Attention to detail": "",
 	"Attention to detail": "",
 	"Audio": "音訊",
 	"Audio": "音訊",
 	"Auto-playback response": "自動播放回答",
 	"Auto-playback response": "自動播放回答",
@@ -214,6 +216,7 @@
 	"Import Modelfiles": "匯入 Modelfiles",
 	"Import Modelfiles": "匯入 Modelfiles",
 	"Import Prompts": "匯入提示詞",
 	"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": "介面",
 	"Interface": "介面",
 	"join our Discord for help.": "加入我們的 Discord 尋找幫助。",
 	"join our Discord for help.": "加入我們的 Discord 尋找幫助。",
 	"JSON": "JSON",
 	"JSON": "JSON",
@@ -351,6 +354,7 @@
 	"Select a mode": "選擇模式",
 	"Select a mode": "選擇模式",
 	"Select a model": "選擇一個模型",
 	"Select a model": "選擇一個模型",
 	"Select an Ollama instance": "選擇 Ollama 實例",
 	"Select an Ollama instance": "選擇 Ollama 實例",
+	"Select model": "",
 	"Send a Message": "傳送訊息",
 	"Send a Message": "傳送訊息",
 	"Send message": "傳送訊息",
 	"Send message": "傳送訊息",
 	"Server connection verified": "已驗證伺服器連線",
 	"Server connection verified": "已驗證伺服器連線",

+ 39 - 17
src/lib/utils/index.ts

@@ -472,29 +472,20 @@ export const blobToFile = (blob, fileName) => {
 	return file;
 	return file;
 };
 };
 
 
-// promptTemplate replaces any occurrences of the following in the template with the prompt
-// {{prompt}} will be replaced with the prompt
-// {{prompt:start:<length>}} will be replaced with the first <length> characters of the prompt
-// {{prompt:end:<length>}} will be replaced with the last <length> characters of the prompt
-// Character length is used as we don't have the ability to tokenize the prompt
 export const promptTemplate = (template: string, prompt: string) => {
 export const promptTemplate = (template: string, prompt: string) => {
+	prompt = prompt.replace(/{{prompt}}|{{prompt:start:\d+}}|{{prompt:end:\d+}}/g, '');
+
 	template = template.replace(/{{prompt}}/g, prompt);
 	template = template.replace(/{{prompt}}/g, prompt);
 
 
 	// Replace all instances of {{prompt:start:<length>}} with the first <length> characters of the prompt
 	// Replace all instances of {{prompt:start:<length>}} with the first <length> characters of the prompt
-	const startRegex = /{{prompt:start:(\d+)}}/g;
-	let startMatch: RegExpMatchArray | null;
-	while ((startMatch = startRegex.exec(template)) !== null) {
-		const length = parseInt(startMatch[1]);
-		template = template.replace(startMatch[0], prompt.substring(0, length));
-	}
+	template = template.replace(/{{prompt:start:(\d+)}}/g, (match, length) =>
+		prompt.substring(0, parseInt(length))
+	);
 
 
 	// Replace all instances of {{prompt:end:<length>}} with the last <length> characters of the prompt
 	// Replace all instances of {{prompt:end:<length>}} with the last <length> characters of the prompt
-	const endRegex = /{{prompt:end:(\d+)}}/g;
-	let endMatch: RegExpMatchArray | null;
-	while ((endMatch = endRegex.exec(template)) !== null) {
-		const length = parseInt(endMatch[1]);
-		template = template.replace(endMatch[0], prompt.substring(prompt.length - length));
-	}
+	template = template.replace(/{{prompt:end:(\d+)}}/g, (match, length) =>
+		prompt.slice(-parseInt(length))
+	);
 
 
 	return template;
 	return template;
 };
 };
@@ -520,3 +511,34 @@ export const approximateToHumanReadable = (nanoseconds: number) => {
 
 
 	return results.reverse().join(' ');
 	return results.reverse().join(' ');
 };
 };
+
+export const getTimeRange = (timestamp) => {
+	const now = new Date();
+	const date = new Date(timestamp * 1000); // Convert Unix timestamp to milliseconds
+
+	// Calculate the difference in milliseconds
+	const diffTime = now.getTime() - date.getTime();
+	const diffDays = diffTime / (1000 * 3600 * 24);
+
+	const nowDate = now.getDate();
+	const nowMonth = now.getMonth();
+	const nowYear = now.getFullYear();
+
+	const dateDate = date.getDate();
+	const dateMonth = date.getMonth();
+	const dateYear = date.getFullYear();
+
+	if (nowYear === dateYear && nowMonth === dateMonth && nowDate === dateDate) {
+		return 'Today';
+	} else if (nowYear === dateYear && nowMonth === dateMonth && nowDate - dateDate === 1) {
+		return 'Yesterday';
+	} else if (diffDays <= 7) {
+		return 'Previous 7 days';
+	} else if (diffDays <= 30) {
+		return 'Previous 30 days';
+	} else if (nowYear === dateYear) {
+		return date.toLocaleString('default', { month: 'long' });
+	} else {
+		return date.getFullYear().toString();
+	}
+};

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

@@ -201,11 +201,11 @@
 	>
 	>
 		{#if loaded}
 		{#if loaded}
 			{#if !['user', 'admin'].includes($user.role)}
 			{#if !['user', 'admin'].includes($user.role)}
-				<div class="fixed w-full h-full flex z-50">
+				<div class="fixed w-full h-full flex z-[999]">
 					<div
 					<div
-						class="absolute w-full h-full backdrop-blur-md bg-white/20 dark:bg-gray-900/50 flex justify-center"
+						class="absolute w-full h-full backdrop-blur-lg bg-white/10 dark:bg-gray-900/50 flex justify-center"
 					>
 					>
-						<div class="m-auto pb-44 flex flex-col justify-center">
+						<div class="m-auto pb-10 flex flex-col justify-center">
 							<div class="max-w-md">
 							<div class="max-w-md">
 								<div class="text-center dark:text-white text-2xl font-medium z-50">
 								<div class="text-center dark:text-white text-2xl font-medium z-50">
 									Account Activation Pending<br /> Contact Admin for WebUI Access
 									Account Activation Pending<br /> Contact Admin for WebUI Access

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

@@ -330,7 +330,7 @@
 												info: model
 												info: model
 											}))}
 											}))}
 										bind:value={selectedModelId}
 										bind:value={selectedModelId}
-										className="max-w-2xl"
+										className="w-[42rem]"
 									/>
 									/>
 								</div>
 								</div>
 							</div>
 							</div>

+ 25 - 22
src/routes/auth/+page.svelte

@@ -81,7 +81,7 @@
 		</div>
 		</div>
 	</div>
 	</div>
 
 
-	<div class=" bg-white dark:bg-gray-900 min-h-screen w-full flex justify-center font-mona">
+	<div class=" bg-white dark:bg-gray-950 min-h-screen w-full flex justify-center font-mona">
 		<!-- <div class="hidden lg:flex lg:flex-1 px-10 md:px-16 w-full bg-yellow-50 justify-center">
 		<!-- <div class="hidden lg:flex lg:flex-1 px-10 md:px-16 w-full bg-yellow-50 justify-center">
 			<div class=" my-auto pb-16 text-left">
 			<div class=" my-auto pb-16 text-left">
 				<div>
 				<div>
@@ -96,7 +96,7 @@
 			</div>
 			</div>
 		</div> -->
 		</div> -->
 
 
-		<div class="w-full sm:max-w-lg px-4 min-h-screen flex flex-col">
+		<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}
 				<div class=" my-auto pb-10 w-full">
 				<div class=" my-auto pb-10 w-full">
 					<div
 					<div
@@ -114,27 +114,29 @@
 					</div>
 					</div>
 				</div>
 				</div>
 			{:else}
 			{:else}
-				<div class=" my-auto pb-10 w-full">
+				<div class="  my-auto pb-10 w-full dark:text-gray-100">
 					<form
 					<form
-						class=" flex flex-col justify-center bg-white py-6 sm:py-16 px-6 sm:px-16 rounded-2xl"
+						class=" flex flex-col justify-center"
 						on:submit|preventDefault={() => {
 						on:submit|preventDefault={() => {
 							submitHandler();
 							submitHandler();
 						}}
 						}}
 					>
 					>
-						<div class=" text-xl sm:text-2xl font-bold">
-							{mode === 'signin' ? $i18n.t('Sign in') : $i18n.t('Sign up')}
-							{$i18n.t('to')}
-							{$WEBUI_NAME}
-						</div>
-
-						{#if mode === 'signup'}
-							<div class=" mt-1 text-xs font-medium text-gray-500">
-								ⓘ {$WEBUI_NAME}
-								{$i18n.t(
-									'does not make any external connections, and your data stays securely on your locally hosted server.'
-								)}
+						<div class="mb-1">
+							<div class=" text-2xl font-bold">
+								{mode === 'signin' ? $i18n.t('Sign in') : $i18n.t('Sign up')}
+								{$i18n.t('to')}
+								{$WEBUI_NAME}
 							</div>
 							</div>
-						{/if}
+
+							{#if mode === 'signup'}
+								<div class=" mt-1 text-xs font-medium text-gray-500">
+									ⓘ {$WEBUI_NAME}
+									{$i18n.t(
+										'does not make any external connections, and your data stays securely on your locally hosted server.'
+									)}
+								</div>
+							{/if}
+						</div>
 
 
 						<div class="flex flex-col mt-4">
 						<div class="flex flex-col mt-4">
 							{#if mode === 'signup'}
 							{#if mode === 'signup'}
@@ -143,14 +145,14 @@
 									<input
 									<input
 										bind:value={name}
 										bind:value={name}
 										type="text"
 										type="text"
-										class=" border px-4 py-2.5 rounded-2xl w-full text-sm"
+										class=" px-5 py-3 rounded-2xl w-full text-sm outline-none border dark:border-none dark:bg-gray-900"
 										autocomplete="name"
 										autocomplete="name"
 										placeholder={$i18n.t('Enter Your Full Name')}
 										placeholder={$i18n.t('Enter Your Full Name')}
 										required
 										required
 									/>
 									/>
 								</div>
 								</div>
 
 
-								<hr class=" my-3" />
+								<hr class=" my-3 dark:border-gray-900" />
 							{/if}
 							{/if}
 
 
 							<div class="mb-2">
 							<div class="mb-2">
@@ -158,7 +160,7 @@
 								<input
 								<input
 									bind:value={email}
 									bind:value={email}
 									type="email"
 									type="email"
-									class=" border px-4 py-2.5 rounded-2xl w-full text-sm"
+									class=" px-5 py-3 rounded-2xl w-full text-sm outline-none border dark:border-none dark:bg-gray-900"
 									autocomplete="email"
 									autocomplete="email"
 									placeholder={$i18n.t('Enter Your Email')}
 									placeholder={$i18n.t('Enter Your Email')}
 									required
 									required
@@ -167,10 +169,11 @@
 
 
 							<div>
 							<div>
 								<div class=" text-sm font-semibold text-left mb-1">{$i18n.t('Password')}</div>
 								<div class=" text-sm font-semibold text-left mb-1">{$i18n.t('Password')}</div>
+
 								<input
 								<input
 									bind:value={password}
 									bind:value={password}
 									type="password"
 									type="password"
-									class=" border px-4 py-2.5 rounded-2xl w-full text-sm"
+									class=" px-5 py-3 rounded-2xl w-full text-sm outline-none border dark:border-none dark:bg-gray-900"
 									placeholder={$i18n.t('Enter Your Password')}
 									placeholder={$i18n.t('Enter Your Password')}
 									autocomplete="current-password"
 									autocomplete="current-password"
 									required
 									required
@@ -180,7 +183,7 @@
 
 
 						<div class="mt-5">
 						<div class="mt-5">
 							<button
 							<button
-								class=" bg-gray-900 hover:bg-gray-800 w-full rounded-full text-white font-semibold text-sm py-3 transition"
+								class=" bg-gray-900 hover:bg-gray-800 w-full rounded-2xl text-white font-semibold text-sm py-3 transition"
 								type="submit"
 								type="submit"
 							>
 							>
 								{mode === 'signin' ? $i18n.t('Sign in') : $i18n.t('Create Account')}
 								{mode === 'signin' ? $i18n.t('Sign in') : $i18n.t('Create Account')}

+ 1 - 1
src/routes/s/[id]/+page.svelte

@@ -138,7 +138,7 @@
 		class="min-h-screen max-h-screen w-full flex flex-col text-gray-700 dark:text-gray-100 bg-white dark:bg-gray-900"
 		class="min-h-screen max-h-screen w-full flex flex-col text-gray-700 dark:text-gray-100 bg-white dark:bg-gray-900"
 	>
 	>
 		<div class="flex flex-col flex-auto justify-center py-8">
 		<div class="flex flex-col flex-auto justify-center py-8">
-			<div class="px-3 w-full max-w-3xl mx-auto">
+			<div class="px-3 w-full max-w-5xl mx-auto">
 				<div>
 				<div>
 					<div class=" text-3xl font-semibold line-clamp-1">
 					<div class=" text-3xl font-semibold line-clamp-1">
 						{title}
 						{title}