Ver código fonte

Merge branch 'dev' into feat/rtl-layout-chat-support

Ido Henri Mamia 11 meses atrás
pai
commit
27c59d985f
46 arquivos alterados com 703 adições e 87 exclusões
  1. 4 4
      backend/apps/litellm/main.py
  2. 10 7
      backend/apps/ollama/main.py
  3. 32 9
      backend/apps/openai/main.py
  4. 2 2
      backend/apps/rag/main.py
  5. 8 0
      backend/config.py
  6. 13 13
      backend/main.py
  7. 67 0
      src/lib/apis/openai/index.ts
  8. 2 2
      src/lib/components/chat/MessageInput.svelte
  9. 4 1
      src/lib/components/chat/Messages/CodeBlock.svelte
  10. 7 2
      src/lib/components/chat/Messages/ProfileImage.svelte
  11. 18 13
      src/lib/components/chat/Settings/Connections.svelte
  12. 1 1
      src/lib/components/chat/ShareChatModal.svelte
  13. 1 1
      src/lib/components/common/Switch.svelte
  14. 1 1
      src/lib/i18n/locales/ar-BH/translation.json
  15. 1 1
      src/lib/i18n/locales/bg-BG/translation.json
  16. 1 1
      src/lib/i18n/locales/bn-BD/translation.json
  17. 1 1
      src/lib/i18n/locales/ca-ES/translation.json
  18. 1 1
      src/lib/i18n/locales/de-DE/translation.json
  19. 1 1
      src/lib/i18n/locales/dg-DG/translation.json
  20. 1 1
      src/lib/i18n/locales/en-GB/translation.json
  21. 1 1
      src/lib/i18n/locales/en-US/translation.json
  22. 1 1
      src/lib/i18n/locales/es-ES/translation.json
  23. 1 1
      src/lib/i18n/locales/fa-IR/translation.json
  24. 1 1
      src/lib/i18n/locales/fi-FI/translation.json
  25. 1 1
      src/lib/i18n/locales/fr-CA/translation.json
  26. 1 1
      src/lib/i18n/locales/fr-FR/translation.json
  27. 1 1
      src/lib/i18n/locales/he-IL/translation.json
  28. 1 1
      src/lib/i18n/locales/hi-IN/translation.json
  29. 1 1
      src/lib/i18n/locales/it-IT/translation.json
  30. 1 1
      src/lib/i18n/locales/ja-JP/translation.json
  31. 1 1
      src/lib/i18n/locales/ka-GE/translation.json
  32. 1 1
      src/lib/i18n/locales/ko-KR/translation.json
  33. 4 0
      src/lib/i18n/locales/languages.json
  34. 1 1
      src/lib/i18n/locales/nl-NL/translation.json
  35. 494 0
      src/lib/i18n/locales/pa-IN/translation.json
  36. 1 1
      src/lib/i18n/locales/pl-PL/translation.json
  37. 1 1
      src/lib/i18n/locales/pt-BR/translation.json
  38. 1 1
      src/lib/i18n/locales/pt-PT/translation.json
  39. 1 1
      src/lib/i18n/locales/ru-RU/translation.json
  40. 1 1
      src/lib/i18n/locales/sv-SE/translation.json
  41. 1 1
      src/lib/i18n/locales/tr-TR/translation.json
  42. 1 1
      src/lib/i18n/locales/uk-UA/translation.json
  43. 1 1
      src/lib/i18n/locales/vi-VN/translation.json
  44. 1 1
      src/lib/i18n/locales/zh-CN/translation.json
  45. 1 1
      src/lib/i18n/locales/zh-TW/translation.json
  46. 6 2
      src/routes/(app)/admin/+page.svelte

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

@@ -75,6 +75,10 @@ with open(LITELLM_CONFIG_DIR, "r") as file:
     litellm_config = yaml.safe_load(file)
 
 
+app.state.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER.value
+app.state.MODEL_FILTER_LIST = MODEL_FILTER_LIST.value
+
+
 app.state.ENABLE = ENABLE_LITELLM
 app.state.CONFIG = litellm_config
 
@@ -151,10 +155,6 @@ async def shutdown_litellm_background():
         background_process = None
 
 
-app.state.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER
-app.state.MODEL_FILTER_LIST = MODEL_FILTER_LIST
-
-
 @app.get("/")
 async def get_status():
     return {"status": True}

+ 10 - 7
backend/apps/ollama/main.py

@@ -64,8 +64,8 @@ app.add_middleware(
 
 app.state.config = AppConfig()
 
-app.state.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER
-app.state.MODEL_FILTER_LIST = MODEL_FILTER_LIST
+app.state.config.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER
+app.state.config.MODEL_FILTER_LIST = MODEL_FILTER_LIST
 
 app.state.config.OLLAMA_BASE_URLS = OLLAMA_BASE_URLS
 app.state.MODELS = {}
@@ -124,8 +124,9 @@ async def cancel_ollama_request(request_id: str, user=Depends(get_current_user))
 
 
 async def fetch_url(url):
+    timeout = aiohttp.ClientTimeout(total=5)
     try:
-        async with aiohttp.ClientSession() as session:
+        async with aiohttp.ClientSession(timeout=timeout) as session:
             async with session.get(url) as response:
                 return await response.json()
     except Exception as e:
@@ -177,11 +178,12 @@ async def get_ollama_tags(
     if url_idx == None:
         models = await get_all_models()
 
-        if app.state.ENABLE_MODEL_FILTER:
+        if app.state.config.ENABLE_MODEL_FILTER:
             if user.role == "user":
                 models["models"] = list(
                     filter(
-                        lambda model: model["name"] in app.state.MODEL_FILTER_LIST,
+                        lambda model: model["name"]
+                        in app.state.config.MODEL_FILTER_LIST,
                         models["models"],
                     )
                 )
@@ -1045,11 +1047,12 @@ async def get_openai_models(
     if url_idx == None:
         models = await get_all_models()
 
-        if app.state.ENABLE_MODEL_FILTER:
+        if app.state.config.ENABLE_MODEL_FILTER:
             if user.role == "user":
                 models["models"] = list(
                     filter(
-                        lambda model: model["name"] in app.state.MODEL_FILTER_LIST,
+                        lambda model: model["name"]
+                        in app.state.config.MODEL_FILTER_LIST,
                         models["models"],
                     )
                 )

+ 32 - 9
backend/apps/openai/main.py

@@ -21,6 +21,7 @@ from utils.utils import (
 )
 from config import (
     SRC_LOG_LEVELS,
+    ENABLE_OPENAI_API,
     OPENAI_API_BASE_URLS,
     OPENAI_API_KEYS,
     CACHE_DIR,
@@ -46,11 +47,14 @@ app.add_middleware(
     allow_headers=["*"],
 )
 
+
 app.state.config = AppConfig()
 
-app.state.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER
-app.state.MODEL_FILTER_LIST = MODEL_FILTER_LIST
+app.state.config.ENABLE_MODEL_FILTER = ENABLE_MODEL_FILTER
+app.state.config.MODEL_FILTER_LIST = MODEL_FILTER_LIST
+
 
+app.state.config.ENABLE_OPENAI_API = ENABLE_OPENAI_API
 app.state.config.OPENAI_API_BASE_URLS = OPENAI_API_BASE_URLS
 app.state.config.OPENAI_API_KEYS = OPENAI_API_KEYS
 
@@ -68,6 +72,21 @@ async def check_url(request: Request, call_next):
     return response
 
 
+@app.get("/config")
+async def get_config(user=Depends(get_admin_user)):
+    return {"ENABLE_OPENAI_API": app.state.config.ENABLE_OPENAI_API}
+
+
+class OpenAIConfigForm(BaseModel):
+    enable_openai_api: Optional[bool] = None
+
+
+@app.post("/config/update")
+async def update_config(form_data: OpenAIConfigForm, user=Depends(get_admin_user)):
+    app.state.config.ENABLE_OPENAI_API = form_data.enable_openai_api
+    return {"ENABLE_OPENAI_API": app.state.config.ENABLE_OPENAI_API}
+
+
 class UrlsUpdateForm(BaseModel):
     urls: List[str]
 
@@ -164,11 +183,15 @@ async def speech(request: Request, user=Depends(get_verified_user)):
 
 
 async def fetch_url(url, key):
+    timeout = aiohttp.ClientTimeout(total=5)
     try:
-        headers = {"Authorization": f"Bearer {key}"}
-        async with aiohttp.ClientSession() as session:
-            async with session.get(url, headers=headers) as response:
-                return await response.json()
+        if key != "":
+            headers = {"Authorization": f"Bearer {key}"}
+            async with aiohttp.ClientSession(timeout=timeout) as session:
+                async with session.get(url, headers=headers) as response:
+                    return await response.json()
+        else:
+            return None
     except Exception as e:
         # Handle connection error here
         log.error(f"Connection error: {e}")
@@ -200,7 +223,7 @@ async def get_all_models():
     if (
         len(app.state.config.OPENAI_API_KEYS) == 1
         and app.state.config.OPENAI_API_KEYS[0] == ""
-    ):
+    ) or not app.state.config.ENABLE_OPENAI_API:
         models = {"data": []}
     else:
         tasks = [
@@ -237,11 +260,11 @@ async def get_all_models():
 async def get_models(url_idx: Optional[int] = None, user=Depends(get_current_user)):
     if url_idx == None:
         models = await get_all_models()
-        if app.state.ENABLE_MODEL_FILTER:
+        if app.state.config.ENABLE_MODEL_FILTER:
             if user.role == "user":
                 models["data"] = list(
                     filter(
-                        lambda model: model["id"] in app.state.MODEL_FILTER_LIST,
+                        lambda model: model["id"] in app.state.config.MODEL_FILTER_LIST,
                         models["data"],
                     )
                 )

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

@@ -433,12 +433,12 @@ async def update_query_settings(
     form_data: QuerySettingsForm, user=Depends(get_admin_user)
 ):
     app.state.config.RAG_TEMPLATE = (
-        form_data.template if form_data.template else RAG_TEMPLATE,
+        form_data.template if form_data.template else RAG_TEMPLATE
     )
     app.state.config.TOP_K = form_data.k if form_data.k else 4
     app.state.config.RELEVANCE_THRESHOLD = form_data.r if form_data.r else 0.0
     app.state.config.ENABLE_RAG_HYBRID_SEARCH = (
-        form_data.hybrid if form_data.hybrid else False,
+        form_data.hybrid if form_data.hybrid else False
     )
     return {
         "status": True,

+ 8 - 0
backend/config.py

@@ -417,6 +417,14 @@ OLLAMA_BASE_URLS = PersistentConfig(
 # OPENAI_API
 ####################################
 
+
+ENABLE_OPENAI_API = PersistentConfig(
+    "ENABLE_OPENAI_API",
+    "openai.enable",
+    os.environ.get("ENABLE_OPENAI_API", "True").lower() == "true",
+)
+
+
 OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")
 OPENAI_API_BASE_URL = os.environ.get("OPENAI_API_BASE_URL", "")
 

+ 13 - 13
backend/main.py

@@ -118,15 +118,15 @@ origins = ["*"]
 
 
 # Custom middleware to add security headers
-class SecurityHeadersMiddleware(BaseHTTPMiddleware):
-    async def dispatch(self, request: Request, call_next):
-        response: Response = await call_next(request)
-        response.headers["Cross-Origin-Opener-Policy"] = "same-origin"
-        response.headers["Cross-Origin-Embedder-Policy"] = "require-corp"
-        return response
+# class SecurityHeadersMiddleware(BaseHTTPMiddleware):
+#     async def dispatch(self, request: Request, call_next):
+#         response: Response = await call_next(request)
+#         response.headers["Cross-Origin-Opener-Policy"] = "same-origin"
+#         response.headers["Cross-Origin-Embedder-Policy"] = "require-corp"
+#         return response
 
 
-app.add_middleware(SecurityHeadersMiddleware)
+# app.add_middleware(SecurityHeadersMiddleware)
 
 
 class RAGMiddleware(BaseHTTPMiddleware):
@@ -289,14 +289,14 @@ class ModelFilterConfigForm(BaseModel):
 async def update_model_filter_config(
     form_data: ModelFilterConfigForm, user=Depends(get_admin_user)
 ):
-    app.state.config.ENABLE_MODEL_FILTER, form_data.enabled
-    app.state.config.MODEL_FILTER_LIST, form_data.models
+    app.state.config.ENABLE_MODEL_FILTER = form_data.enabled
+    app.state.config.MODEL_FILTER_LIST = form_data.models
 
-    ollama_app.state.ENABLE_MODEL_FILTER = app.state.config.ENABLE_MODEL_FILTER
-    ollama_app.state.MODEL_FILTER_LIST = app.state.config.MODEL_FILTER_LIST
+    ollama_app.state.config.ENABLE_MODEL_FILTER = app.state.config.ENABLE_MODEL_FILTER
+    ollama_app.state.config.MODEL_FILTER_LIST = app.state.config.MODEL_FILTER_LIST
 
-    openai_app.state.ENABLE_MODEL_FILTER = app.state.config.ENABLE_MODEL_FILTER
-    openai_app.state.MODEL_FILTER_LIST = app.state.config.MODEL_FILTER_LIST
+    openai_app.state.config.ENABLE_MODEL_FILTER = app.state.config.ENABLE_MODEL_FILTER
+    openai_app.state.config.MODEL_FILTER_LIST = app.state.config.MODEL_FILTER_LIST
 
     litellm_app.state.ENABLE_MODEL_FILTER = app.state.config.ENABLE_MODEL_FILTER
     litellm_app.state.MODEL_FILTER_LIST = app.state.config.MODEL_FILTER_LIST

+ 67 - 0
src/lib/apis/openai/index.ts

@@ -1,6 +1,73 @@
 import { OPENAI_API_BASE_URL } from '$lib/constants';
 import { promptTemplate } from '$lib/utils';
 
+export const getOpenAIConfig = async (token: string = '') => {
+	let error = null;
+
+	const res = await fetch(`${OPENAI_API_BASE_URL}/config`, {
+		method: 'GET',
+		headers: {
+			Accept: 'application/json',
+			'Content-Type': 'application/json',
+			...(token && { authorization: `Bearer ${token}` })
+		}
+	})
+		.then(async (res) => {
+			if (!res.ok) throw await res.json();
+			return res.json();
+		})
+		.catch((err) => {
+			console.log(err);
+			if ('detail' in err) {
+				error = err.detail;
+			} else {
+				error = 'Server connection failed';
+			}
+			return null;
+		});
+
+	if (error) {
+		throw error;
+	}
+
+	return res;
+};
+
+export const updateOpenAIConfig = async (token: string = '', enable_openai_api: boolean) => {
+	let error = null;
+
+	const res = await fetch(`${OPENAI_API_BASE_URL}/config/update`, {
+		method: 'POST',
+		headers: {
+			Accept: 'application/json',
+			'Content-Type': 'application/json',
+			...(token && { authorization: `Bearer ${token}` })
+		},
+		body: JSON.stringify({
+			enable_openai_api: enable_openai_api
+		})
+	})
+		.then(async (res) => {
+			if (!res.ok) throw await res.json();
+			return res.json();
+		})
+		.catch((err) => {
+			console.log(err);
+			if ('detail' in err) {
+				error = err.detail;
+			} else {
+				error = 'Server connection failed';
+			}
+			return null;
+		});
+
+	if (error) {
+		throw error;
+	}
+
+	return res;
+};
+
 export const getOpenAIUrls = async (token: string = '') => {
 	let error = null;
 

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

@@ -585,7 +585,7 @@
 					/>
 					<form
 						dir={$settings?.chatDirection}
-						class=" flex flex-col relative w-full rounded-3xl px-1.5 border border-gray-100 dark:border-gray-850 bg-white dark:bg-gray-900 dark:text-gray-100"
+						class=" flex flex-col relative w-full rounded-3xl px-1.5 bg-gray-50 dark:bg-gray-850 dark:text-gray-100"
 						on:submit|preventDefault={() => {
 							submitPrompt(prompt, user);
 						}}
@@ -755,7 +755,7 @@
 							<textarea
 								id="chat-textarea"
 								bind:this={chatTextAreaElement}
-								class="scrollbar-hidden dark:bg-gray-900 dark:text-gray-100 outline-none w-full py-3 px-3 {fileUploadEnabled
+								class="scrollbar-hidden bg-gray-50 dark:bg-gray-850 dark:text-gray-100 outline-none w-full py-3 px-3 {fileUploadEnabled
 									? ''
 									: ' pl-4'} rounded-xl resize-none h-[48px]"
 								placeholder={chatInputPlaceholder !== ''

+ 4 - 1
src/lib/components/chat/Messages/CodeBlock.svelte

@@ -308,7 +308,10 @@ __builtins__.input = input`);
 				class="language-{lang} rounded-t-none whitespace-pre">{@html highlightedCode || code}</code
 			></pre>
 
-		<div id="plt-canvas-{id}" class="bg-[#202123] text-white" />
+		<div
+			id="plt-canvas-{id}"
+			class="bg-[#202123] text-white max-w-full overflow-x-auto scrollbar-hidden"
+		/>
 
 		{#if executing}
 			<div class="bg-[#202123] text-white px-4 py-4 rounded-b-lg">

+ 7 - 2
src/lib/components/chat/Messages/ProfileImage.svelte

@@ -1,13 +1,18 @@
 <script lang="ts">
 	import { settings } from '$lib/stores';
-
+	import { WEBUI_BASE_URL } from '$lib/constants';
+  
 	export let src = '/user.png';
 </script>
 
 <div class={$settings?.chatDirection === 'LTR' ? "mr-3" : "ml-3"}>
 	<img
 		crossorigin="anonymous"
-		{src}
+		src={src.startsWith(WEBUI_BASE_URL) ||
+		src.startsWith('https://www.gravatar.com/avatar/') ||
+		src.startsWith('data:')
+			? src
+			: `/user.png`}
 		class=" w-8 object-cover rounded-full"
 		alt="profile"
 		draggable="false"

+ 18 - 13
src/lib/components/chat/Settings/Connections.svelte

@@ -5,28 +5,27 @@
 
 	import { getOllamaUrls, getOllamaVersion, updateOllamaUrls } from '$lib/apis/ollama';
 	import {
+		getOpenAIConfig,
 		getOpenAIKeys,
 		getOpenAIUrls,
+		updateOpenAIConfig,
 		updateOpenAIKeys,
 		updateOpenAIUrls
 	} from '$lib/apis/openai';
 	import { toast } from 'svelte-sonner';
+	import Switch from '$lib/components/common/Switch.svelte';
 
 	const i18n = getContext('i18n');
 
 	export let getModels: Function;
 
 	// External
-	let OLLAMA_BASE_URL = '';
 	let OLLAMA_BASE_URLS = [''];
 
-	let OPENAI_API_KEY = '';
-	let OPENAI_API_BASE_URL = '';
-
 	let OPENAI_API_KEYS = [''];
 	let OPENAI_API_BASE_URLS = [''];
 
-	let showOpenAI = false;
+	let ENABLE_OPENAI_API = false;
 
 	const updateOpenAIHandler = async () => {
 		OPENAI_API_BASE_URLS = await updateOpenAIUrls(localStorage.token, OPENAI_API_BASE_URLS);
@@ -52,6 +51,10 @@
 	onMount(async () => {
 		if ($user.role === 'admin') {
 			OLLAMA_BASE_URLS = await getOllamaUrls(localStorage.token);
+
+			const config = await getOpenAIConfig(localStorage.token);
+			ENABLE_OPENAI_API = config.ENABLE_OPENAI_API;
+
 			OPENAI_API_BASE_URLS = await getOpenAIUrls(localStorage.token);
 			OPENAI_API_KEYS = await getOpenAIKeys(localStorage.token);
 		}
@@ -70,16 +73,18 @@
 			<div class="mt-2 space-y-2 pr-1.5">
 				<div class="flex justify-between items-center text-sm">
 					<div class="  font-medium">{$i18n.t('OpenAI API')}</div>
-					<button
-						class=" text-xs font-medium text-gray-500"
-						type="button"
-						on:click={() => {
-							showOpenAI = !showOpenAI;
-						}}>{showOpenAI ? $i18n.t('Hide') : $i18n.t('Show')}</button
-					>
+
+					<div class="mt-1">
+						<Switch
+							bind:state={ENABLE_OPENAI_API}
+							on:change={async () => {
+								updateOpenAIConfig(localStorage.token, ENABLE_OPENAI_API);
+							}}
+						/>
+					</div>
 				</div>
 
-				{#if showOpenAI}
+				{#if ENABLE_OPENAI_API}
 					<div class="flex flex-col gap-1">
 						{#each OPENAI_API_BASE_URLS as url, idx}
 							<div class="flex w-full gap-2">

+ 1 - 1
src/lib/components/chat/ShareChatModal.svelte

@@ -128,7 +128,7 @@
 						{$i18n.t('and create a new shared link.')}
 					{:else}
 						{$i18n.t(
-							"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat."
+							"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat."
 						)}
 					{/if}
 				</div>

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

@@ -14,7 +14,7 @@
 	}}
 	class="flex h-5 min-h-5 w-9 shrink-0 cursor-pointer items-center rounded-full px-[3px] transition  {state
 		? ' bg-emerald-600'
-		: 'bg-gray-200 dark:bg-transparent'}  outline outline-gray-100 dark:outline-gray-800"
+		: 'bg-gray-200 dark:bg-transparent'} outline outline-1 outline-gray-100 dark:outline-gray-800"
 >
 	<Switch.Thumb
 		class="pointer-events-none block size-4 shrink-0 rounded-full bg-white transition-transform data-[state=checked]:translate-x-3.5 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:shadow-mini "

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "يمكن تنزيل 3 نماذج كحد أقصى في وقت واحد. الرجاء معاودة المحاولة في وقت لاحق.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "لن تتم مشاركة الرسائل التي ترسلها بعد إنشاء الرابط الخاص بك. سيتمكن المستخدمون الذين لديهم عنوان URL من عرض الدردشة المشتركة.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "الحد الأدنى من النقاط",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 модели могат да бъдат сваляни едновременно. Моля, опитайте отново по-късно.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "একসঙ্গে সর্বোচ্চ তিনটি মডেল ডাউনলোড করা যায়। দয়া করে পরে আবার চেষ্টা করুন।",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es poden descarregar un màxim de 3 models simultàniament. Si us plau, prova-ho més tard.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Eta de Mirostat",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es können maximal 3 Modelle gleichzeitig heruntergeladen werden. Bitte versuche es später erneut.",
 	"May": "Mai",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "Fortlaudende Nachrichten in diesem Chat werden nicht automatisch geteilt. Benutzer mit dem Link können den Chat einsehen.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "Mindestscore",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum of 3 models can be downloaded simultaneously. Please try again later.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "",
 	"Mirostat Eta": "",

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

@@ -258,7 +258,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "",
 	"Mirostat Eta": "",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Se pueden descargar un máximo de 3 modelos simultáneamente. Por favor, inténtelo de nuevo más tarde.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "حداکثر 3 مدل را می توان به طور همزمان دانلود کرد. لطفاً بعداً دوباره امتحان کنید.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Enintään 3 mallia voidaan ladata samanaikaisesti. Yritä myöhemmin uudelleen.",
 	"May": "toukokuu",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "Viestejä, jotka lähetät luotuasi linkin, ei jaeta. Käyttäjät, joilla on tämä osoite voivat tarkastella jaettua keskustelua.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "Vähimmäispisteet",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé simultanément. Veuillez réessayer plus tard.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé simultanément. Veuillez réessayer plus tard.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

+ 1 - 1
src/lib/i18n/locales/he-IL/translation.json

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "ניתן להוריד מקסימום 3 מודלים בו זמנית. אנא נסה שוב מאוחר יותר.",
 	"May": "מאי",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "הודעות שתשלח לאחר יצירת הקישור שלך לא ישותפו. משתמשים עם הכתובת URL יוכלו לצפות בצ'אט המשותף.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "ציון מינימלי",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "अधिकतम 3 मॉडल एक साथ डाउनलोड किये जा सकते हैं। कृपया बाद में पुन: प्रयास करें।",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "न्यूनतम स्कोर",
 	"Mirostat": "",
 	"Mirostat Eta": "",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "È possibile scaricare un massimo di 3 modelli contemporaneamente. Riprova più tardi.",
 	"May": "Maggio",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "I messaggi che invii dopo aver creato il tuo link non verranno condivisi. Gli utenti con l'URL potranno visualizzare la chat condivisa.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "Punteggio minimo",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "同時にダウンロードできるモデルは最大 3 つです。後でもう一度お試しください。",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "ミロスタット",
 	"Mirostat Eta": "ミロスタット Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "მაქსიმუმ 3 მოდელის ჩამოტვირთვა შესაძლებელია ერთდროულად. Გთხოვთ სცადოთ მოგვიანებით.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "მიროსტატი",
 	"Mirostat Eta": "მიროსტატი ეტა",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "최대 3개의 모델을 동시에 다운로드할 수 있습니다. 나중에 다시 시도하세요.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -75,6 +75,10 @@
 		"code": "nl-NL",
 		"title": "Dutch (Netherlands)"
 	},
+	{
+		"code": "pa-IN",
+		"title": "Punjabi (India)"
+	},
 	{
 		"code": "pl-PL",
 		"title": "Polish"

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximaal 3 modellen kunnen tegelijkertijd worden gedownload. Probeer het later opnieuw.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

+ 494 - 0
src/lib/i18n/locales/pa-IN/translation.json

@@ -0,0 +1,494 @@
+{
+  "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'ਸ', 'ਮ', 'ਘੰ', 'ਦ', 'ਹਫ਼ਤਾ' ਜਾਂ '-1' ਬਿਨਾ ਮਿਆਦ ਦੇ।",
+  "(Beta)": "(ਬੀਟਾ)",
+  "(e.g. `sh webui.sh --api`)": "(ਉਦਾਹਰਣ ਦੇ ਤੌਰ ਤੇ `sh webui.sh --api`)",
+  "(latest)": "(ਤਾਜ਼ਾ)",
+  "{{modelName}} is thinking...": "{{modelName}} ਸੋਚ ਰਿਹਾ ਹੈ...",
+  "{{user}}'s Chats": "{{user}} ਦੀਆਂ ਗੱਲਾਂ",
+  "{{webUIName}} Backend Required": "{{webUIName}} ਬੈਕਐਂਡ ਲੋੜੀਂਦਾ ਹੈ",
+  "a user": "ਇੱਕ ਉਪਭੋਗਤਾ",
+  "About": "ਬਾਰੇ",
+  "Account": "ਖਾਤਾ",
+  "Accurate information": "ਸਹੀ ਜਾਣਕਾਰੀ",
+  "Add a model": "ਇੱਕ ਮਾਡਲ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add a model tag name": "ਇੱਕ ਮਾਡਲ ਟੈਗ ਨਾਮ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add a short description about what this modelfile does": "ਇਸ ਮਾਡਲਫਾਈਲ ਦੇ ਕੀ ਕਰਨ ਬਾਰੇ ਇੱਕ ਛੋਟੀ ਵਰਣਨਾ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add a short title for this prompt": "ਇਸ ਪ੍ਰੰਪਟ ਲਈ ਇੱਕ ਛੋਟਾ ਸਿਰਲੇਖ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add a tag": "ਇੱਕ ਟੈਗ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add custom prompt": "ਕਸਟਮ ਪ੍ਰੰਪਟ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add Docs": "ਡਾਕੂਮੈਂਟ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add Files": "ਫਾਈਲਾਂ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add message": "ਸੁਨੇਹਾ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add Model": "ਮਾਡਲ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add Tags": "ਟੈਗ ਸ਼ਾਮਲ ਕਰੋ",
+  "Add User": "ਉਪਭੋਗਤਾ ਸ਼ਾਮਲ ਕਰੋ",
+  "Adjusting these settings will apply changes universally to all users.": "ਇਹ ਸੈਟਿੰਗਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਨਾਲ ਸਾਰੇ ਉਪਭੋਗਤਾਵਾਂ ਲਈ ਬਦਲਾਅ ਲਾਗੂ ਹੋਣਗੇ।",
+  "admin": "ਪ੍ਰਬੰਧਕ",
+  "Admin Panel": "ਪ੍ਰਬੰਧਕ ਪੈਨਲ",
+  "Admin Settings": "ਪ੍ਰਬੰਧਕ ਸੈਟਿੰਗਾਂ",
+  "Advanced Parameters": "ਉੱਚ ਸਤਰ ਦੇ ਪੈਰਾਮੀਟਰ",
+  "all": "ਸਾਰੇ",
+  "All Documents": "ਸਾਰੇ ਡਾਕੂਮੈਂਟ",
+  "All Users": "ਸਾਰੇ ਉਪਭੋਗਤਾ",
+  "Allow": "ਅਨੁਮਤੀ",
+  "Allow Chat Deletion": "ਗੱਲਬਾਤ ਮਿਟਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ",
+  "alphanumeric characters and hyphens": "ਅਲਫ਼ਾਨਯੂਮੈਰਿਕ ਅੱਖਰ ਅਤੇ ਹਾਈਫਨ",
+  "Already have an account?": "ਪਹਿਲਾਂ ਹੀ ਖਾਤਾ ਹੈ?",
+  "an assistant": "ਇੱਕ ਸਹਾਇਕ",
+  "and": "ਅਤੇ",
+  "and create a new shared link.": "ਅਤੇ ਇੱਕ ਨਵਾਂ ਸਾਂਝਾ ਲਿੰਕ ਬਣਾਓ।",
+  "API Base URL": "API ਬੇਸ URL",
+  "API Key": "API ਕੁੰਜੀ",
+  "API Key created.": "API ਕੁੰਜੀ ਬਣਾਈ ਗਈ।",
+  "API keys": "API ਕੁੰਜੀਆਂ",
+  "API RPM": "API RPM",
+  "April": "ਅਪ੍ਰੈਲ",
+  "Archive": "ਆਰਕਾਈਵ",
+  "Archived Chats": "ਆਰਕਾਈਵ ਕੀਤੀਆਂ ਗੱਲਾਂ",
+  "are allowed - Activate this command by typing": "ਅਨੁਮਤ ਹਨ - ਇਸ ਕਮਾਂਡ ਨੂੰ ਟਾਈਪ ਕਰਕੇ ਸਰਗਰਮ ਕਰੋ",
+  "Are you sure?": "ਕੀ ਤੁਸੀਂ ਯਕੀਨਨ ਹੋ?",
+  "Attach file": "ਫਾਈਲ ਜੋੜੋ",
+  "Attention to detail": "ਵੇਰਵੇ 'ਤੇ ਧਿਆਨ",
+  "Audio": "ਆਡੀਓ",
+  "August": "ਅਗਸਤ",
+  "Auto-playback response": "ਆਟੋ-ਪਲੇਬੈਕ ਜਵਾਬ",
+  "Auto-send input after 3 sec.": "3 ਸਕਿੰਟ ਬਾਅਦ ਆਟੋ-ਭੇਜੋ ਇਨਪੁਟ",
+  "AUTOMATIC1111 Base URL": "AUTOMATIC1111 ਬੇਸ URL",
+  "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 ਬੇਸ URL ਦੀ ਲੋੜ ਹੈ।",
+  "available!": "ਉਪਲਬਧ ਹੈ!",
+  "Back": "ਵਾਪਸ",
+  "Bad Response": "ਖਰਾਬ ਜਵਾਬ",
+  "before": "ਪਹਿਲਾਂ",
+  "Being lazy": "ਆਲਸੀ ਹੋਣਾ",
+  "Builder Mode": "ਬਿਲਡਰ ਮੋਡ",
+  "Bypass SSL verification for Websites": "ਵੈਬਸਾਈਟਾਂ ਲਈ SSL ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਬਾਈਪਾਸ ਕਰੋ",
+  "Cancel": "ਰੱਦ ਕਰੋ",
+  "Categories": "ਸ਼੍ਰੇਣੀਆਂ",
+  "Change Password": "ਪਾਸਵਰਡ ਬਦਲੋ",
+  "Chat": "ਗੱਲਬਾਤ",
+  "Chat Bubble UI": "ਗੱਲਬਾਤ ਬਬਲ UI",
+  "Chat History": "ਗੱਲਬਾਤ ਦਾ ਇਤਿਹਾਸ",
+  "Chat History is off for this browser.": "ਇਸ ਬ੍ਰਾਊਜ਼ਰ ਲਈ ਗੱਲਬਾਤ ਦਾ ਇਤਿਹਾਸ ਬੰਦ ਹੈ।",
+  "Chats": "ਗੱਲਾਂ",
+  "Check Again": "ਮੁੜ ਜਾਂਚ ਕਰੋ",
+  "Check for updates": "ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਕਰੋ",
+  "Checking for updates...": "ਅੱਪਡੇਟ ਲਈ ਜਾਂਚ ਰਿਹਾ ਹੈ...",
+  "Choose a model before saving...": "ਸੰਭਾਲਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਮਾਡਲ ਚੁਣੋ...",
+  "Chunk Overlap": "ਚੰਕ ਓਵਰਲੈਪ",
+  "Chunk Params": "ਚੰਕ ਪੈਰਾਮੀਟਰ",
+  "Chunk Size": "ਚੰਕ ਆਕਾਰ",
+  "Citation": "ਹਵਾਲਾ",
+  "Click here for help.": "ਮਦਦ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
+  "Click here to": "ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ",
+  "Click here to check other modelfiles.": "ਹੋਰ ਮਾਡਲਫਾਈਲਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
+  "Click here to select": "ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ",
+  "Click here to select a csv file.": "CSV ਫਾਈਲ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
+  "Click here to select documents.": "ਡਾਕੂਮੈਂਟ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
+  "click here.": "ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।",
+  "Click on the user role button to change a user's role.": "ਉਪਭੋਗਤਾ ਦੀ ਭੂਮਿਕਾ ਬਦਲਣ ਲਈ ਉਪਭੋਗਤਾ ਭੂਮਿਕਾ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ।",
+  "Close": "ਬੰਦ ਕਰੋ",
+  "Collection": "ਸੰਗ੍ਰਹਿ",
+  "ComfyUI": "ਕੰਫੀਯੂਆਈ",
+  "ComfyUI Base URL": "ਕੰਫੀਯੂਆਈ ਬੇਸ URL",
+  "ComfyUI Base URL is required.": "ਕੰਫੀਯੂਆਈ ਬੇਸ URL ਦੀ ਲੋੜ ਹੈ।",
+  "Command": "ਕਮਾਂਡ",
+  "Confirm Password": "ਪਾਸਵਰਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ",
+  "Connections": "ਕਨੈਕਸ਼ਨ",
+  "Content": "ਸਮੱਗਰੀ",
+  "Context Length": "ਸੰਦਰਭ ਲੰਬਾਈ",
+  "Continue Response": "ਜਵਾਬ ਜਾਰੀ ਰੱਖੋ",
+  "Conversation Mode": "ਗੱਲਬਾਤ ਮੋਡ",
+  "Copied shared chat URL to clipboard!": "ਸਾਂਝੇ ਕੀਤੇ ਗੱਲਬਾਤ URL ਨੂੰ ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰ ਦਿੱਤਾ!",
+  "Copy": "ਕਾਪੀ ਕਰੋ",
+  "Copy last code block": "ਆਖਰੀ ਕੋਡ ਬਲਾਕ ਨੂੰ ਕਾਪੀ ਕਰੋ",
+  "Copy last response": "ਆਖਰੀ ਜਵਾਬ ਨੂੰ ਕਾਪੀ ਕਰੋ",
+  "Copy Link": "ਲਿੰਕ ਕਾਪੀ ਕਰੋ",
+  "Copying to clipboard was successful!": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰਨਾ ਸਫਲ ਰਿਹਾ!",
+  "Create a concise, 3-5 word phrase as a header for the following query, strictly adhering to the 3-5 word limit and avoiding the use of the word 'title':": "ਹੇਠਾਂ ਦਿੱਤੀ ਪੁੱਛਗਿੱਛ ਲਈ ਇੱਕ ਛੋਟਾ, 3-5 ਸ਼ਬਦਾਂ ਦਾ ਵਾਕ ਬਣਾਓ, 3-5 ਸ਼ਬਦਾਂ ਦੀ ਸੀਮਾ ਦਾ ਪਾਲਣ ਕਰਦੇ ਹੋਏ ਅਤੇ 'ਸਿਰਲੇਖ' ਸ਼ਬਦ ਦੇ ਇਸਤੇਮਾਲ ਤੋਂ ਬਚਦੇ ਹੋਏ:",
+  "Create a modelfile": "ਇੱਕ ਮਾਡਲਫਾਈਲ ਬਣਾਓ",
+  "Create Account": "ਖਾਤਾ ਬਣਾਓ",
+  "Create new key": "ਨਵੀਂ ਕੁੰਜੀ ਬਣਾਓ",
+  "Create new secret key": "ਨਵੀਂ ਗੁਪਤ ਕੁੰਜੀ ਬਣਾਓ",
+  "Created at": "ਤੇ ਬਣਾਇਆ ਗਿਆ",
+  "Created At": "ਤੇ ਬਣਾਇਆ ਗਿਆ",
+  "Current Model": "ਮੌਜੂਦਾ ਮਾਡਲ",
+  "Current Password": "ਮੌਜੂਦਾ ਪਾਸਵਰਡ",
+  "Custom": "ਕਸਟਮ",
+  "Customize Ollama models for a specific purpose": "ਇੱਕ ਖਾਸ ਉਦੇਸ਼ ਲਈ ਓਲਾਮਾ ਮਾਡਲਾਂ ਨੂੰ ਕਸਟਮਾਈਜ਼ ਕਰੋ",
+  "Dark": "ਗੂੜ੍ਹਾ",
+  "Dashboard": "ਡੈਸ਼ਬੋਰਡ",
+  "Database": "ਡਾਟਾਬੇਸ",
+  "December": "ਦਸੰਬਰ",
+  "Default": "ਮੂਲ",
+  "Default (Automatic1111)": "ਮੂਲ (Automatic1111)",
+  "Default (SentenceTransformers)": "ਮੂਲ (ਸੈਂਟੈਂਸਟ੍ਰਾਂਸਫਾਰਮਰਸ)",
+  "Default (Web API)": "ਮੂਲ (ਵੈਬ API)",
+  "Default model updated": "ਮੂਲ ਮਾਡਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ",
+  "Default Prompt Suggestions": "ਮੂਲ ਪ੍ਰੰਪਟ ਸੁਝਾਅ",
+  "Default User Role": "ਮੂਲ ਉਪਭੋਗਤਾ ਭੂਮਿਕਾ",
+  "delete": "ਮਿਟਾਓ",
+  "Delete": "ਮਿਟਾਓ",
+  "Delete a model": "ਇੱਕ ਮਾਡਲ ਮਿਟਾਓ",
+  "Delete chat": "ਗੱਲਬਾਤ ਮਿਟਾਓ",
+  "Delete Chat": "ਗੱਲਬਾਤ ਮਿਟਾਓ",
+  "Delete Chats": "ਗੱਲਾਂ ਮਿਟਾਓ",
+  "delete this link": "ਇਸ ਲਿੰਕ ਨੂੰ ਮਿਟਾਓ",
+  "Delete User": "ਉਪਭੋਗਤਾ ਮਿਟਾਓ",
+  "Deleted {{deleteModelTag}}": "{{deleteModelTag}} ਮਿਟਾਇਆ ਗਿਆ",
+  "Deleted {{tagName}}": "{{tagName}} ਮਿਟਾਇਆ ਗਿਆ",
+  "Description": "ਵਰਣਨਾ",
+  "Didn't fully follow instructions": "ਹਦਾਇਤਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਫਾਲੋ ਨਹੀਂ ਕੀਤਾ",
+  "Disabled": "ਅਯੋਗ",
+  "Discover a modelfile": "ਇੱਕ ਮਾਡਲਫਾਈਲ ਖੋਜੋ",
+  "Discover a prompt": "ਇੱਕ ਪ੍ਰੰਪਟ ਖੋਜੋ",
+  "Discover, download, and explore custom prompts": "ਕਸਟਮ ਪ੍ਰੰਪਟਾਂ ਨੂੰ ਖੋਜੋ, ਡਾਊਨਲੋਡ ਕਰੋ ਅਤੇ ਪੜਚੋਲ ਕਰੋ",
+  "Discover, download, and explore model presets": "ਮਾਡਲ ਪ੍ਰੀਸੈਟਾਂ ਨੂੰ ਖੋਜੋ, ਡਾਊਨਲੋਡ ਕਰੋ ਅਤੇ ਪੜਚੋਲ ਕਰੋ",
+  "Display the username instead of You in the Chat": "ਗੱਲਬਾਤ 'ਚ ਤੁਹਾਡੇ ਸਥਾਨ 'ਤੇ ਉਪਭੋਗਤਾ ਨਾਮ ਦਿਖਾਓ",
+  "Document": "ਡਾਕੂਮੈਂਟ",
+  "Document Settings": "ਡਾਕੂਮੈਂਟ ਸੈਟਿੰਗਾਂ",
+  "Documents": "ਡਾਕੂਮੈਂਟ",
+  "does not make any external connections, and your data stays securely on your locally hosted server.": "ਕੋਈ ਬਾਹਰੀ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਬਣਾਉਂਦਾ, ਅਤੇ ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ ਸਥਾਨਕ ਸਰਵਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਰਹਿੰਦਾ ਹੈ।",
+  "Don't Allow": "ਆਗਿਆ ਨਾ ਦਿਓ",
+  "Don't have an account?": "ਖਾਤਾ ਨਹੀਂ ਹੈ?",
+  "Don't like the style": "ਸਟਾਈਲ ਪਸੰਦ ਨਹੀਂ ਹੈ",
+  "Download": "ਡਾਊਨਲੋਡ",
+  "Download canceled": "ਡਾਊਨਲੋਡ ਰੱਦ ਕੀਤਾ ਗਿਆ",
+  "Download Database": "ਡਾਟਾਬੇਸ ਡਾਊਨਲੋਡ ਕਰੋ",
+  "Drop any files here to add to the conversation": "ਗੱਲਬਾਤ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਕੋਈ ਵੀ ਫਾਈਲ ਇੱਥੇ ਛੱਡੋ",
+  "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "ਉਦਾਹਰਣ ਲਈ '30ਸ','10ਮਿ'. ਸਹੀ ਸਮਾਂ ਇਕਾਈਆਂ ਹਨ 'ਸ', 'ਮ', 'ਘੰ'.",
+  "Edit": "ਸੰਪਾਦਨ ਕਰੋ",
+  "Edit Doc": "ਡਾਕੂਮੈਂਟ ਸੰਪਾਦਨ ਕਰੋ",
+  "Edit User": "ਉਪਭੋਗਤਾ ਸੰਪਾਦਨ ਕਰੋ",
+  "Email": "ਈਮੇਲ",
+  "Embedding Model": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ",
+  "Embedding Model Engine": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਇੰਜਣ",
+  "Embedding model set to \"{{embedding_model}}\"": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਨੂੰ \"{{embedding_model}}\" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ",
+  "Enable Chat History": "ਗੱਲਬਾਤ ਦਾ ਇਤਿਹਾਸ ਯੋਗ ਕਰੋ",
+  "Enable New Sign Ups": "ਨਵੇਂ ਸਾਈਨ ਅਪ ਯੋਗ ਕਰੋ",
+  "Enabled": "ਯੋਗ ਕੀਤਾ ਗਿਆ",
+  "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਤੁਹਾਡੀ CSV ਫਾਈਲ ਵਿੱਚ ਇਸ ਕ੍ਰਮ ਵਿੱਚ 4 ਕਾਲਮ ਹਨ: ਨਾਮ, ਈਮੇਲ, ਪਾਸਵਰਡ, ਭੂਮਿਕਾ।",
+  "Enter {{role}} message here": "{{role}} ਸੁਨੇਹਾ ਇੱਥੇ ਦਰਜ ਕਰੋ",
+  "Enter Chunk Overlap": "ਚੰਕ ਓਵਰਲੈਪ ਦਰਜ ਕਰੋ",
+  "Enter Chunk Size": "ਚੰਕ ਆਕਾਰ ਦਰਜ ਕਰੋ",
+  "Enter Image Size (e.g. 512x512)": "ਚਿੱਤਰ ਆਕਾਰ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 512x512)",
+  "Enter language codes": "ਭਾਸ਼ਾ ਕੋਡ ਦਰਜ ਕਰੋ",
+  "Enter LiteLLM API Base URL (litellm_params.api_base)": "LiteLLM API ਬੇਸ URL (litellm_params.api_base) ਦਰਜ ਕਰੋ",
+  "Enter LiteLLM API Key (litellm_params.api_key)": "LiteLLM API ਕੁੰਜੀ (litellm_params.api_key) ਦਰਜ ਕਰੋ",
+  "Enter LiteLLM API RPM (litellm_params.rpm)": "LiteLLM API RPM (litellm_params.rpm) ਦਰਜ ਕਰੋ",
+  "Enter LiteLLM Model (litellm_params.model)": "LiteLLM ਮਾਡਲ (litellm_params.model) ਦਰਜ ਕਰੋ",
+  "Enter Max Tokens (litellm_params.max_tokens)": "ਅਧਿਕਤਮ ਟੋਕਨ ਦਰਜ ਕਰੋ (litellm_params.max_tokens)",
+  "Enter model tag (e.g. {{modelTag}})": "ਮਾਡਲ ਟੈਗ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ {{modelTag}})",
+  "Enter Number of Steps (e.g. 50)": "ਕਦਮਾਂ ਦੀ ਗਿਣਤੀ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 50)",
+  "Enter Score": "ਸਕੋਰ ਦਰਜ ਕਰੋ",
+  "Enter stop sequence": "ਰੋਕਣ ਦਾ ਕ੍ਰਮ ਦਰਜ ਕਰੋ",
+  "Enter Top K": "ਸਿਖਰ K ਦਰਜ ਕਰੋ",
+  "Enter URL (e.g. http://127.0.0.1:7860/)": "URL ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ http://127.0.0.1:7860/)",
+  "Enter URL (e.g. http://localhost:11434)": "URL ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ http://localhost:11434)",
+  "Enter Your Email": "ਆਪਣੀ ਈਮੇਲ ਦਰਜ ਕਰੋ",
+  "Enter Your Full Name": "ਆਪਣਾ ਪੂਰਾ ਨਾਮ ਦਰਜ ਕਰੋ",
+  "Enter Your Password": "ਆਪਣਾ ਪਾਸਵਰਡ ਦਰਜ ਕਰੋ",
+  "Enter Your Role": "ਆਪਣੀ ਭੂਮਿਕਾ ਦਰਜ ਕਰੋ",
+  "Experimental": "ਪਰਮਾਣੂਕ੍ਰਿਤ",
+  "Export All Chats (All Users)": "ਸਾਰੀਆਂ ਗੱਲਾਂ ਨਿਰਯਾਤ ਕਰੋ (ਸਾਰੇ ਉਪਭੋਗਤਾ)",
+  "Export Chats": "ਗੱਲਾਂ ਨਿਰਯਾਤ ਕਰੋ",
+  "Export Documents Mapping": "ਡਾਕੂਮੈਂਟ ਮੈਪਿੰਗ ਨਿਰਯਾਤ ਕਰੋ",
+  "Export Modelfiles": "ਮਾਡਲਫਾਈਲਾਂ ਨਿਰਯਾਤ ਕਰੋ",
+  "Export Prompts": "ਪ੍ਰੰਪਟ ਨਿਰਯਾਤ ਕਰੋ",
+  "Failed to create API Key.": "API ਕੁੰਜੀ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ।",
+  "Failed to read clipboard contents": "ਕਲਿੱਪਬੋਰਡ ਸਮੱਗਰੀ ਪੜ੍ਹਣ ਵਿੱਚ ਅਸਫਲ",
+  "February": "ਫਰਵਰੀ",
+  "Feel free to add specific details": "ਖੁੱਲ੍ਹੇ ਦਿਲ ਨਾਲ ਖਾਸ ਵੇਰਵੇ ਸ਼ਾਮਲ ਕਰੋ",
+  "File Mode": "ਫਾਈਲ ਮੋਡ",
+  "File not found.": "ਫਾਈਲ ਨਹੀਂ ਮਿਲੀ।",
+  "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "ਫਿੰਗਰਪ੍ਰਿੰਟ ਸਪੂਫਿੰਗ ਪਾਈ ਗਈ: ਅਵਤਾਰ ਵਜੋਂ ਸ਼ੁਰੂਆਤੀ ਅੱਖਰ ਵਰਤਣ ਵਿੱਚ ਅਸਮਰੱਥ। ਮੂਲ ਪ੍ਰੋਫਾਈਲ ਚਿੱਤਰ 'ਤੇ ਡਿਫਾਲਟ।",
+  "Fluidly stream large external response chunks": "ਵੱਡੇ ਬਾਹਰੀ ਜਵਾਬ ਚੰਕਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸਟ੍ਰੀਮ ਕਰੋ",
+  "Focus chat input": "ਗੱਲਬਾਤ ਇਨਪੁਟ 'ਤੇ ਧਿਆਨ ਦਿਓ",
+  "Followed instructions perfectly": "ਹਦਾਇਤਾਂ ਨੂੰ ਬਿਲਕੁਲ ਫਾਲੋ ਕੀਤਾ",
+  "Format your variables using square brackets like this:": "ਤੁਹਾਡੀਆਂ ਵੈਰੀਏਬਲਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਵਰਤੋਂ: [ ]",
+  "From (Base Model)": "ਤੋਂ (ਮੂਲ ਮਾਡਲ)",
+  "Full Screen Mode": "ਪੂਰੀ ਸਕਰੀਨ ਮੋਡ",
+  "General": "ਆਮ",
+  "General Settings": "ਆਮ ਸੈਟਿੰਗਾਂ",
+  "Generation Info": "ਜਨਰੇਸ਼ਨ ਜਾਣਕਾਰੀ",
+  "Good Response": "ਵਧੀਆ ਜਵਾਬ",
+  "h:mm a": "ਹ:ਮਿੰਟ ਪੂਃ",
+  "has no conversations.": "ਕੋਈ ਗੱਲਬਾਤ ਨਹੀਂ ਹੈ।",
+  "Hello, {{name}}": "ਸਤ ਸ੍ਰੀ ਅਕਾਲ, {{name}}",
+  "Help": "ਮਦਦ",
+  "Hide": "ਲੁਕਾਓ",
+  "Hide Additional Params": "ਵਾਧੂ ਪੈਰਾਮੀਟਰ ਲੁਕਾਓ",
+  "How can I help you today?": "ਮੈਂ ਅੱਜ ਤੁਹਾਡੀ ਕਿਵੇਂ ਮਦਦ ਕਰ ਸਕਦਾ ਹਾਂ?",
+  "Hybrid Search": "ਹਾਈਬ੍ਰਿਡ ਖੋਜ",
+  "Image Generation (Experimental)": "ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ (ਪਰਮਾਣੂਕ੍ਰਿਤ)",
+  "Image Generation Engine": "ਚਿੱਤਰ ਜਨਰੇਸ਼ਨ ਇੰਜਣ",
+  "Image Settings": "ਚਿੱਤਰ ਸੈਟਿੰਗਾਂ",
+  "Images": "ਚਿੱਤਰ",
+  "Import Chats": "ਗੱਲਾਂ ਆਯਾਤ ਕਰੋ",
+  "Import Documents Mapping": "ਡਾਕੂਮੈਂਟ ਮੈਪਿੰਗ ਆਯਾਤ ਕਰੋ",
+  "Import Modelfiles": "ਮਾਡਲਫਾਈਲਾਂ ਆਯਾਤ ਕਰੋ",
+  "Import Prompts": "ਪ੍ਰੰਪਟ ਆਯਾਤ ਕਰੋ",
+  "Include `--api` flag when running stable-diffusion-webui": "ਸਟੇਬਲ-ਡਿਫਿਊਸ਼ਨ-ਵੈਬਯੂਆਈ ਚਲਾਉਣ ਸਮੇਂ `--api` ਝੰਡਾ ਸ਼ਾਮਲ ਕਰੋ",
+  "Input commands": "ਇਨਪੁਟ ਕਮਾਂਡਾਂ",
+  "Interface": "ਇੰਟਰਫੇਸ",
+  "Invalid Tag": "ਗਲਤ ਟੈਗ",
+  "January": "ਜਨਵਰੀ",
+  "join our Discord for help.": "ਮਦਦ ਲਈ ਸਾਡੇ ਡਿਸਕੋਰਡ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ।",
+  "JSON": "JSON",
+  "July": "ਜੁਲਾਈ",
+  "June": "ਜੂਨ",
+  "JWT Expiration": "JWT ਮਿਆਦ ਖਤਮ",
+  "JWT Token": "JWT ਟੋਕਨ",
+  "Keep Alive": "ਜੀਵਿਤ ਰੱਖੋ",
+  "Keyboard shortcuts": "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕਟ",
+  "Language": "ਭਾਸ਼ਾ",
+  "Last Active": "ਆਖਰੀ ਸਰਗਰਮ",
+  "Light": "ਹਲਕਾ",
+  "Listening...": "ਸੁਣ ਰਿਹਾ ਹੈ...",
+  "LLMs can make mistakes. Verify important information.": "LLMs ਗਲਤੀਆਂ ਕਰ ਸਕਦੇ ਹਨ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ।",
+  "Made by OpenWebUI Community": "ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ",
+  "Make sure to enclose them with": "ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਉਨ੍ਹਾਂ ਨੂੰ ਘੇਰੋ",
+  "Manage LiteLLM Models": "LiteLLM ਮਾਡਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ",
+  "Manage Models": "ਮਾਡਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ",
+  "Manage Ollama Models": "ਓਲਾਮਾ ਮਾਡਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ",
+  "March": "ਮਾਰਚ",
+  "Max Tokens": "ਅਧਿਕਤਮ ਟੋਕਨ",
+  "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਵੱਧ ਤੋਂ ਵੱਧ 3 ਮਾਡਲ ਡਾਊਨਲੋਡ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
+  "May": "ਮਈ",
+  "Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "ਤੁਹਾਡੇ ਲਿੰਕ ਬਣਾਉਣ ਤੋਂ ਬਾਅਦ ਭੇਜੇ ਗਏ ਸੁਨੇਹੇ ਸਾਂਝੇ ਨਹੀਂ ਕੀਤੇ ਜਾਣਗੇ। URL ਵਾਲੇ ਉਪਭੋਗਤਾ ਸਾਂਝੀ ਗੱਲਬਾਤ ਦੇਖ ਸਕਣਗੇ।",
+  "Minimum Score": "ਘੱਟੋ-ਘੱਟ ਸਕੋਰ",
+  "Mirostat": "ਮਿਰੋਸਟੈਟ",
+  "Mirostat Eta": "ਮਿਰੋਸਟੈਟ ਈਟਾ",
+  "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": "ਹੋਰ",
+  "Name": "ਨਾਮ",
+  "Name Tag": "ਨਾਮ ਟੈਗ",
+  "Name your modelfile": "ਆਪਣੀ ਮਾਡਲਫਾਈਲ ਦਾ ਨਾਮ ਰੱਖੋ",
+  "New Chat": "ਨਵੀਂ ਗੱਲਬਾਤ",
+  "New Password": "ਨਵਾਂ ਪਾਸਵਰਡ",
+  "No results found": "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ",
+  "No source available": "ਕੋਈ ਸਰੋਤ ਉਪਲਬਧ ਨਹੀਂ",
+  "Not factually correct": "ਤੱਥਕ ਰੂਪ ਵਿੱਚ ਸਹੀ ਨਹੀਂ",
+  "Not sure what to add?": "ਕੀ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ ਇਹ ਯਕੀਨੀ ਨਹੀਂ?",
+  "Not sure what to write? Switch to": "ਕੀ ਲਿਖਣਾ ਹੈ ਇਹ ਯਕੀਨੀ ਨਹੀਂ? ਬਦਲੋ",
+  "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "ਨੋਟ: ਜੇ ਤੁਸੀਂ ਘੱਟੋ-ਘੱਟ ਸਕੋਰ ਸੈੱਟ ਕਰਦੇ ਹੋ, ਤਾਂ ਖੋਜ ਸਿਰਫ਼ ਉਹੀ ਡਾਕੂਮੈਂਟ ਵਾਪਸ ਕਰੇਗੀ ਜਿਨ੍ਹਾਂ ਦਾ ਸਕੋਰ ਘੱਟੋ-ਘੱਟ ਸਕੋਰ ਦੇ ਬਰਾਬਰ ਜਾਂ ਵੱਧ ਹੋਵੇ।",
+  "Notifications": "ਸੂਚਨਾਵਾਂ",
+  "November": "ਨਵੰਬਰ",
+  "October": "ਅਕਤੂਬਰ",
+  "Off": "ਬੰਦ",
+  "Okay, Let's Go!": "ਠੀਕ ਹੈ, ਚੱਲੋ ਚੱਲੀਏ!",
+  "OLED Dark": "OLED ਗੂੜ੍ਹਾ",
+  "Ollama": "ਓਲਾਮਾ",
+  "Ollama Base URL": "ਓਲਾਮਾ ਬੇਸ URL",
+  "Ollama Version": "ਓਲਾਮਾ ਵਰਜਨ",
+  "On": "ਚਾਲੂ",
+  "Only": "ਸਿਰਫ਼",
+  "Only alphanumeric characters and hyphens are allowed in the command string.": "ਕਮਾਂਡ ਸਤਰ ਵਿੱਚ ਸਿਰਫ਼ ਅਲਫ਼ਾਨਯੂਮੈਰਿਕ ਅੱਖਰ ਅਤੇ ਹਾਈਫਨ ਦੀ ਆਗਿਆ ਹੈ।",
+  "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "ਓਹੋ! ਥੋੜਾ ਸਬਰ ਕਰੋ! ਤੁਹਾਡੀਆਂ ਫਾਈਲਾਂ ਅਜੇ ਵੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਹਨ। ਅਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ ਕਰ ਰਹੇ ਹਾਂ। ਕਿਰਪਾ ਕਰਕੇ ਧੀਰਜ ਰੱਖੋ ਅਤੇ ਅਸੀਂ ਤੁਹਾਨੂੰ ਦੱਸਾਂਗੇ ਜਦੋਂ ਉਹ ਤਿਆਰ ਹੋ ਜਾਣਗੇ।",
+  "Oops! Looks like the URL is invalid. Please double-check and try again.": "ਓਹੋ! ਲੱਗਦਾ ਹੈ ਕਿ URL ਗਲਤ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਜਾਂਚ ਕਰੋ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
+  "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "ਓਹੋ! ਤੁਸੀਂ ਇੱਕ ਅਣਸਮਰਥਿਤ ਢੰਗ ਵਰਤ ਰਹੇ ਹੋ (ਸਿਰਫ਼ ਫਰੰਟਐਂਡ)। ਕਿਰਪਾ ਕਰਕੇ ਵੈਬਯੂਆਈ ਨੂੰ ਬੈਕਐਂਡ ਤੋਂ ਸਰਵ ਕਰੋ।",
+  "Open": "ਖੋਲ੍ਹੋ",
+  "Open AI": "ਓਪਨ ਏਆਈ",
+  "Open AI (Dall-E)": "ਓਪਨ ਏਆਈ (ਡਾਲ-ਈ)",
+  "Open new chat": "ਨਵੀਂ ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ",
+  "OpenAI": "ਓਪਨਏਆਈ",
+  "OpenAI API": "ਓਪਨਏਆਈ API",
+  "OpenAI API Config": "ਓਪਨਏਆਈ API ਕਨਫਿਗ",
+  "OpenAI API Key is required.": "ਓਪਨਏਆਈ API ਕੁੰਜੀ ਦੀ ਲੋੜ ਹੈ।",
+  "OpenAI URL/Key required.": "ਓਪਨਏਆਈ URL/ਕੁੰਜੀ ਦੀ ਲੋੜ ਹੈ।",
+  "or": "ਜਾਂ",
+  "Other": "ਹੋਰ",
+  "Overview": "ਸੰਖੇਪ",
+  "Parameters": "ਪੈਰਾਮੀਟਰ",
+  "Password": "ਪਾਸਵਰਡ",
+  "PDF document (.pdf)": "PDF ਡਾਕੂਮੈਂਟ (.pdf)",
+  "PDF Extract Images (OCR)": "PDF ਚਿੱਤਰ ਕੱਢੋ (OCR)",
+  "pending": "ਬਕਾਇਆ",
+  "Permission denied when accessing microphone: {{error}}": "ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਤੱਕ ਪਹੁੰਚਣ ਸਮੇਂ ਆਗਿਆ ਰੱਦ ਕੀਤੀ ਗਈ: {{error}}",
+  "Plain text (.txt)": "ਸਧਾਰਨ ਪਾਠ (.txt)",
+  "Playground": "ਖੇਡ ਦਾ ਮੈਦਾਨ",
+  "Positive attitude": "ਸਕਾਰਾਤਮਕ ਰਵੱਈਆ",
+  "Previous 30 days": "ਪਿਛਲੇ 30 ਦਿਨ",
+  "Previous 7 days": "ਪਿਛਲੇ 7 ਦਿਨ",
+  "Profile Image": "ਪ੍ਰੋਫਾਈਲ ਚਿੱਤਰ",
+  "Prompt": "ਪ੍ਰੰਪਟ",
+  "Prompt (e.g. Tell me a fun fact about the Roman Empire)": "ਪ੍ਰੰਪਟ (ਉਦਾਹਰਣ ਲਈ ਮੈਨੂੰ ਰੋਮਨ ਸਾਮਰਾਜ ਬਾਰੇ ਇੱਕ ਮਜ਼ੇਦਾਰ ਤੱਥ ਦੱਸੋ)",
+  "Prompt Content": "ਪ੍ਰੰਪਟ ਸਮੱਗਰੀ",
+  "Prompt suggestions": "ਪ੍ਰੰਪਟ ਸੁਝਾਅ",
+  "Prompts": "ਪ੍ਰੰਪਟ",
+  "Pull \"{{searchValue}}\" from Ollama.com": "ਓਲਾਮਾ.ਕਾਮ ਤੋਂ \"{{searchValue}}\" ਖਿੱਚੋ",
+  "Pull a model from Ollama.com": "ਓਲਾਮਾ.ਕਾਮ ਤੋਂ ਇੱਕ ਮਾਡਲ ਖਿੱਚੋ",
+  "Pull Progress": "ਪ੍ਰਗਤੀ ਖਿੱਚੋ",
+  "Query Params": "ਪ੍ਰਸ਼ਨ ਪੈਰਾਮੀਟਰ",
+  "RAG Template": "RAG ਟੈਮਪਲੇਟ",
+  "Raw Format": "ਕੱਚਾ ਫਾਰਮੈਟ",
+  "Read Aloud": "ਜੋਰ ਨਾਲ ਪੜ੍ਹੋ",
+  "Record voice": "ਆਵਾਜ਼ ਰਿਕਾਰਡ ਕਰੋ",
+  "Redirecting you to OpenWebUI Community": "ਤੁਹਾਨੂੰ ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਵੱਲ ਰੀਡਾਇਰੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ",
+  "Refused when it shouldn't have": "ਜਦੋਂ ਇਹ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਸੀ ਤਾਂ ਇਨਕਾਰ ਕੀਤਾ",
+  "Regenerate": "ਮੁੜ ਬਣਾਓ",
+  "Release Notes": "ਰਿਲੀਜ਼ ਨੋਟਸ",
+  "Remove": "ਹਟਾਓ",
+  "Remove Model": "ਮਾਡਲ ਹਟਾਓ",
+  "Rename": "ਨਾਮ ਬਦਲੋ",
+  "Repeat Last N": "ਆਖਰੀ N ਨੂੰ ਦੁਹਰਾਓ",
+  "Repeat Penalty": "ਪੈਨਲਟੀ ਦੁਹਰਾਓ",
+  "Request Mode": "ਬੇਨਤੀ ਮੋਡ",
+  "Reranking Model": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ",
+  "Reranking model disabled": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ ਅਯੋਗ ਕੀਤਾ ਗਿਆ",
+  "Reranking model set to \"{{reranking_model}}\"": "ਮਾਡਲ ਮੁੜ ਰੈਂਕਿੰਗ ਨੂੰ \"{{reranking_model}}\" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ",
+  "Reset Vector Storage": "ਵੈਕਟਰ ਸਟੋਰੇਜ ਨੂੰ ਰੀਸੈਟ ਕਰੋ",
+  "Response AutoCopy to Clipboard": "ਜਵਾਬ ਆਟੋ ਕਾਪੀ ਕਲਿੱਪਬੋਰਡ 'ਤੇ",
+  "Role": "ਭੂਮਿਕਾ",
+  "Rosé Pine": "ਰੋਜ਼ ਪਾਈਨ",
+  "Rosé Pine Dawn": "ਰੋਜ਼ ਪਾਈਨ ਡਾਨ",
+  "Save": "ਸੰਭਾਲੋ",
+  "Save & Create": "ਸੰਭਾਲੋ ਅਤੇ ਬਣਾਓ",
+  "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": "ਬੀਜ",
+  "Select a mode": "ਇੱਕ ਮੋਡ ਚੁਣੋ",
+  "Select a model": "ਇੱਕ ਮਾਡਲ ਚੁਣੋ",
+  "Select an Ollama instance": "ਇੱਕ ਓਲਾਮਾ ਇੰਸਟੈਂਸ ਚੁਣੋ",
+  "Select model": "ਮਾਡਲ ਚੁਣੋ",
+  "Send": "ਭੇਜੋ",
+  "Send a Message": "ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ",
+  "Send message": "ਸੁਨੇਹਾ ਭੇਜੋ",
+  "September": "ਸਤੰਬਰ",
+  "Server connection verified": "ਸਰਵਰ ਕਨੈਕਸ਼ਨ ਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਗਈ",
+  "Set as default": "ਮੂਲ ਵਜੋਂ ਸੈੱਟ ਕਰੋ",
+  "Set Default Model": "ਮੂਲ ਮਾਡਲ ਸੈੱਟ ਕਰੋ",
+  "Set embedding model (e.g. {{model}})": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਸੈੱਟ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ {{model}})",
+  "Set Image Size": "ਚਿੱਤਰ ਆਕਾਰ ਸੈੱਟ ਕਰੋ",
+  "Set Model": "ਮਾਡਲ ਸੈੱਟ ਕਰੋ",
+  "Set reranking model (e.g. {{model}})": "ਮੁੜ ਰੈਂਕਿੰਗ ਮਾਡਲ ਸੈੱਟ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ {{model}})",
+  "Set Steps": "ਕਦਮ ਸੈੱਟ ਕਰੋ",
+  "Set Title Auto-Generation Model": "ਸਿਰਲੇਖ ਆਟੋ-ਜਨਰੇਸ਼ਨ ਮਾਡਲ ਸੈੱਟ ਕਰੋ",
+  "Set Voice": "ਆਵਾਜ਼ ਸੈੱਟ ਕਰੋ",
+  "Settings": "ਸੈਟਿੰਗਾਂ",
+  "Settings saved successfully!": "ਸੈਟਿੰਗਾਂ ਸਫਲਤਾਪੂਰਵਕ ਸੰਭਾਲੀਆਂ ਗਈਆਂ!",
+  "Share": "ਸਾਂਝਾ ਕਰੋ",
+  "Share Chat": "ਗੱਲਬਾਤ ਸਾਂਝੀ ਕਰੋ",
+  "Share to OpenWebUI Community": "ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਨਾਲ ਸਾਂਝਾ ਕਰੋ",
+  "short-summary": "ਛੋਟੀ-ਸੰਖੇਪ",
+  "Show": "ਦਿਖਾਓ",
+  "Show Additional Params": "ਵਾਧੂ ਪੈਰਾਮੀਟਰ ਦਿਖਾਓ",
+  "Show shortcuts": "ਸ਼ਾਰਟਕਟ ਦਿਖਾਓ",
+  "Showcased creativity": "ਸਿਰਜਣਾਤਮਕਤਾ ਦਿਖਾਈ",
+  "sidebar": "ਸਾਈਡਬਾਰ",
+  "Sign in": "ਸਾਈਨ ਇਨ ਕਰੋ",
+  "Sign Out": "ਸਾਈਨ ਆਊਟ ਕਰੋ",
+  "Sign up": "ਰਜਿਸਟਰ ਕਰੋ",
+  "Signing in": "ਸਾਈਨ ਇਨ ਕਰ ਰਿਹਾ ਹੈ",
+  "Source": "ਸਰੋਤ",
+  "Speech recognition error: {{error}}": "ਬੋਲ ਪਛਾਣ ਗਲਤੀ: {{error}}",
+  "Speech-to-Text Engine": "ਬੋਲ-ਤੋਂ-ਪਾਠ ਇੰਜਣ",
+  "SpeechRecognition API is not supported in this browser.": "ਇਸ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ SpeechRecognition API ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ।",
+  "Stop Sequence": "ਰੋਕੋ ਕ੍ਰਮ",
+  "STT Settings": "STT ਸੈਟਿੰਗਾਂ",
+  "Submit": "ਜਮ੍ਹਾਂ ਕਰੋ",
+  "Subtitle (e.g. about the Roman Empire)": "ਉਪਸਿਰਲੇਖ (ਉਦਾਹਰਣ ਲਈ ਰੋਮਨ ਸਾਮਰਾਜ ਬਾਰੇ)",
+  "Success": "ਸਫਲਤਾ",
+  "Successfully updated.": "ਸਫਲਤਾਪੂਰਵਕ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ।",
+  "Suggested": "ਸੁਝਾਇਆ ਗਿਆ",
+  "Sync All": "ਸਾਰੇ ਸਿੰਕ ਕਰੋ",
+  "System": "ਸਿਸਟਮ",
+  "System Prompt": "ਸਿਸਟਮ ਪ੍ਰੰਪਟ",
+  "Tags": "ਟੈਗ",
+  "Tell us more:": "ਸਾਨੂੰ ਹੋਰ ਦੱਸੋ:",
+  "Temperature": "ਤਾਪਮਾਨ",
+  "Template": "ਟੈਮਪਲੇਟ",
+  "Text Completion": "ਪਾਠ ਪੂਰਨਤਾ",
+  "Text-to-Speech Engine": "ਪਾਠ-ਤੋਂ-ਬੋਲ ਇੰਜਣ",
+  "Tfs Z": "Tfs Z",
+  "Thanks for your feedback!": "ਤੁਹਾਡੇ ਫੀਡਬੈਕ ਲਈ ਧੰਨਵਾਦ!",
+  "The score should be a value between 0.0 (0%) and 1.0 (100%).": "ਸਕੋਰ 0.0 (0%) ਅਤੇ 1.0 (100%) ਦੇ ਵਿਚਕਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।",
+  "Theme": "ਥੀਮ",
+  "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਡੀਆਂ ਕੀਮਤੀ ਗੱਲਾਂ ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਡਾਟਾਬੇਸ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਤੌਰ 'ਤੇ ਸੰਭਾਲੀਆਂ ਗਈਆਂ ਹਨ। ਧੰਨਵਾਦ!",
+  "This setting does not sync across browsers or devices.": "ਇਹ ਸੈਟਿੰਗ ਬ੍ਰਾਊਜ਼ਰ ਜਾਂ ਡਿਵਾਈਸਾਂ ਵਿੱਚ ਸਿੰਕ ਨਹੀਂ ਹੁੰਦੀ।",
+  "Thorough explanation": "ਵਿਸਥਾਰ ਨਾਲ ਵਿਆਖਿਆ",
+  "Tip: Update multiple variable slots consecutively by pressing the tab key in the chat input after each replacement.": "ਸਲਾਹ: ਹਰ ਬਦਲਾਅ ਦੇ ਬਾਅਦ ਗੱਲਬਾਤ ਇਨਪੁਟ ਵਿੱਚ ਟੈਬ ਕੀ ਦਬਾ ਕੇ ਲਗਾਤਾਰ ਕਈ ਵੈਰੀਏਬਲ ਸਲਾਟਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ।",
+  "Title": "ਸਿਰਲੇਖ",
+  "Title (e.g. Tell me a fun fact)": "ਸਿਰਲੇਖ (ਉਦਾਹਰਣ ਲਈ ਮੈਨੂੰ ਇੱਕ ਮਜ਼ੇਦਾਰ ਤੱਥ ਦੱਸੋ)",
+  "Title Auto-Generation": "ਸਿਰਲੇਖ ਆਟੋ-ਜਨਰੇਸ਼ਨ",
+  "Title cannot be an empty string.": "ਸਿਰਲੇਖ ਖਾਲੀ ਸਤਰ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
+  "Title Generation Prompt": "ਸਿਰਲੇਖ ਜਨਰੇਸ਼ਨ ਪ੍ਰੰਪਟ",
+  "to": "ਨੂੰ",
+  "To access the available model names for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ ਮਾਡਲ ਨਾਮਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",
+  "To access the GGUF models available for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ GGUF ਮਾਡਲਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",
+  "to chat input.": "ਗੱਲਬਾਤ ਇਨਪੁਟ ਲਈ।",
+  "Today": "ਅੱਜ",
+  "Toggle settings": "ਸੈਟਿੰਗਾਂ ਟੌਗਲ ਕਰੋ",
+  "Toggle sidebar": "ਸਾਈਡਬਾਰ ਟੌਗਲ ਕਰੋ",
+  "Top K": "ਸਿਖਰ K",
+  "Top P": "ਸਿਖਰ P",
+  "Trouble accessing Ollama?": "ਓਲਾਮਾ ਤੱਕ ਪਹੁੰਚਣ ਵਿੱਚ ਮੁਸ਼ਕਲ?",
+  "TTS Settings": "TTS ਸੈਟਿੰਗਾਂ",
+  "Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (ਡਾਊਨਲੋਡ) URL ਟਾਈਪ ਕਰੋ",
+  "Uh-oh! There was an issue connecting to {{provider}}.": "ਓਹੋ! {{provider}} ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਆਈ।",
+  "Unknown File Type '{{file_type}}', but accepting and treating as plain text": "ਅਣਜਾਣ ਫਾਈਲ ਕਿਸਮ '{{file_type}}', ਪਰ ਸਧਾਰਨ ਪਾਠ ਵਜੋਂ ਸਵੀਕਾਰ ਕਰਦੇ ਹੋਏ",
+  "Update and Copy Link": "ਅੱਪਡੇਟ ਕਰੋ ਅਤੇ ਲਿੰਕ ਕਾਪੀ ਕਰੋ",
+  "Update password": "ਪਾਸਵਰਡ ਅੱਪਡੇਟ ਕਰੋ",
+  "Upload a GGUF model": "ਇੱਕ GGUF ਮਾਡਲ ਅਪਲੋਡ ਕਰੋ",
+  "Upload files": "ਫਾਈਲਾਂ ਅਪਲੋਡ ਕਰੋ",
+  "Upload Progress": "ਅਪਲੋਡ ਪ੍ਰਗਤੀ",
+  "URL Mode": "URL ਮੋਡ",
+  "Use '#' in the prompt input to load and select your documents.": "ਆਪਣੇ ਡਾਕੂਮੈਂਟ ਲੋਡ ਅਤੇ ਚੁਣਨ ਲਈ ਪ੍ਰੰਪਟ ਇਨਪੁਟ ਵਿੱਚ '#' ਵਰਤੋ।",
+  "Use Gravatar": "ਗ੍ਰਾਵਾਟਾਰ ਵਰਤੋ",
+  "Use Initials": "ਸ਼ੁਰੂਆਤੀ ਅੱਖਰ ਵਰਤੋ",
+  "user": "ਉਪਭੋਗਤਾ",
+  "User Permissions": "ਉਪਭੋਗਤਾ ਅਧਿਕਾਰ",
+  "Users": "ਉਪਭੋਗਤਾ",
+  "Utilize": "ਵਰਤੋਂ",
+  "Valid time units:": "ਵੈਧ ਸਮਾਂ ਇਕਾਈਆਂ:",
+  "variable": "ਵੈਰੀਏਬਲ",
+  "variable to have them replaced with clipboard content.": "ਕਲਿੱਪਬੋਰਡ ਸਮੱਗਰੀ ਨਾਲ ਬਦਲਣ ਲਈ ਵੈਰੀਏਬਲ।",
+  "Version": "ਵਰਜਨ",
+  "Warning: If you update or change your embedding model, you will need to re-import all documents.": "ਚੇਤਾਵਨੀ: ਜੇ ਤੁਸੀਂ ਆਪਣਾ ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਅੱਪਡੇਟ ਜਾਂ ਬਦਲਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਸਾਰੇ ਡਾਕੂਮੈਂਟ ਮੁੜ ਆਯਾਤ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।",
+  "Web": "ਵੈਬ",
+  "Web Loader Settings": "ਵੈਬ ਲੋਡਰ ਸੈਟਿੰਗਾਂ",
+  "Web Params": "ਵੈਬ ਪੈਰਾਮੀਟਰ",
+  "Webhook URL": "ਵੈਬਹੁੱਕ URL",
+  "WebUI Add-ons": "ਵੈਬਯੂਆਈ ਐਡ-ਆਨ",
+  "WebUI Settings": "ਵੈਬਯੂਆਈ ਸੈਟਿੰਗਾਂ",
+  "WebUI will make requests to": "ਵੈਬਯੂਆਈ ਬੇਨਤੀਆਂ ਕਰੇਗਾ",
+  "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)": "ਵਿਸਪਰ (ਸਥਾਨਕ)",
+  "Workspace": "ਕਾਰਜਸਥਲ",
+  "Write a prompt suggestion (e.g. Who are you?)": "ਇੱਕ ਪ੍ਰੰਪਟ ਸੁਝਾਅ ਲਿਖੋ (ਉਦਾਹਰਣ ਲਈ ਤੁਸੀਂ ਕੌਣ ਹੋ?)",
+  "Write a summary in 50 words that summarizes [topic or keyword].": "50 ਸ਼ਬਦਾਂ ਵਿੱਚ ਇੱਕ ਸੰਖੇਪ ਲਿਖੋ ਜੋ [ਵਿਸ਼ਾ ਜਾਂ ਕੁੰਜੀ ਸ਼ਬਦ] ਨੂੰ ਸੰਖੇਪ ਕਰਦਾ ਹੈ।",
+  "Yesterday": "ਕੱਲ੍ਹ",
+  "You": "ਤੁਸੀਂ",
+  "You have no archived conversations.": "ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਆਰਕਾਈਵ ਕੀਤੀਆਂ ਗੱਲਾਂ ਨਹੀਂ ਹਨ।",
+  "You have shared this chat": "ਤੁਸੀਂ ਇਹ ਗੱਲਬਾਤ ਸਾਂਝੀ ਕੀਤੀ ਹੈ",
+  "You're a helpful assistant.": "ਤੁਸੀਂ ਇੱਕ ਮਦਦਗਾਰ ਸਹਾਇਕ ਹੋ।",
+  "You're now logged in.": "ਤੁਸੀਂ ਹੁਣ ਲੌਗ ਇਨ ਹੋ ਗਏ ਹੋ।",
+  "Youtube": "ਯੂਟਿਊਬ",
+  "Youtube Loader Settings": "ਯੂਟਿਊਬ ਲੋਡਰ ਸੈਟਿੰਗਾਂ"
+}

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksymalnie 3 modele można pobierać jednocześnie. Spróbuj ponownie później.",
 	"May": "Maj",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "WIadomości, które wyślesz po utworzeniu linku nie będą udostępnione. Użytkownicy z URL-em będą mogli zobaczyć udostępniony czat.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "Minimalny wynik",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Tente novamente mais tarde.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Tente novamente mais tarde.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимальное количество моделей для загрузки одновременно - 3. Пожалуйста, попробуйте позже.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Högst 3 modeller kan laddas ner samtidigt. Vänligen försök igen senare.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Aynı anda en fazla 3 model indirilebilir. Lütfen daha sonra tekrar deneyin.",
 	"May": "Mayıs",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "Bağlantınızı oluşturduktan sonra gönderdiğiniz mesajlar paylaşılmayacaktır. URL'ye sahip kullanıcılar paylaşılan sohbeti görüntüleyebilecektir.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "Minimum Skor",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 моделі можна завантажити одночасно. Будь ласка, спробуйте пізніше.",
 	"May": "Травень",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "Повідомлення, які ви надсилаєте після створення посилання, не будуть опубліковані. Користувачі з URL-адресою зможуть переглядати спільний чат.",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "Мінімальний бал",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Tối đa 3 mô hình có thể được tải xuống cùng lúc. Vui lòng thử lại sau.",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可以同时下载 3 个模型,请稍后重试。",
 	"May": "五月",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "创建链接后发送的信息不会被共享。拥有 URL 的用户可以查看共享的聊天内容。",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "最低分",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -256,7 +256,7 @@
 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可以同時下載 3 個模型。請稍後再試。",
 	"May": "",
 	"Memory": "",
-	"Messages you send after creating your link won't be shared. Users with the URL will beable to view the shared chat.": "",
+	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "",
 	"Minimum Score": "",
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",

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

@@ -1,5 +1,5 @@
 <script>
-	import { WEBUI_API_BASE_URL } from '$lib/constants';
+	import { WEBUI_BASE_URL } from '$lib/constants';
 	import { WEBUI_NAME, config, user, showSidebar } from '$lib/stores';
 	import { goto } from '$app/navigation';
 	import { onMount, getContext } from 'svelte';
@@ -264,7 +264,11 @@
 									<div class="flex flex-row w-max">
 										<img
 											class=" rounded-full w-6 h-6 object-cover mr-2.5"
-											src={user.profile_image_url}
+											src={user.profile_image_url.startsWith(WEBUI_BASE_URL) ||
+											user.profile_image_url.startsWith('https://www.gravatar.com/avatar/') ||
+											user.profile_image_url.startsWith('data:')
+												? user.profile_image_url
+												: `/user.png`}
 											alt="user"
 										/>