forked from open-webui/open-webui
		
	main #2
					 14 changed files with 126 additions and 76 deletions
				
			
		|  | @ -216,7 +216,7 @@ | ||||||
| 					// Event triggered when an error occurs | 					// Event triggered when an error occurs | ||||||
| 					speechRecognition.onerror = function (event) { | 					speechRecognition.onerror = function (event) { | ||||||
| 						console.log(event); | 						console.log(event); | ||||||
| 						toast.error(`Speech recognition error: ${event.error}`); | 						toast.error($i18n.t(`Speech recognition error: {{error}}`, { error: event.error })); | ||||||
| 						isRecording = false; | 						isRecording = false; | ||||||
| 					}; | 					}; | ||||||
| 				} else { | 				} else { | ||||||
|  |  | ||||||
|  | @ -111,7 +111,9 @@ | ||||||
| 					toast.error(error.error); | 					toast.error(error.error); | ||||||
| 				} | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				toast.error($i18n.t('Uh-oh! There was an issue connecting to llama.')); | 				toast.error( | ||||||
|  | 					$i18n.t('Uh-oh! There was an issue connecting to {{provider}}.', { provider: 'llama' }) | ||||||
|  | 				); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -115,7 +115,11 @@ | ||||||
| 						on:change={(e) => { | 						on:change={(e) => { | ||||||
| 							if (e.target.value !== '') { | 							if (e.target.value !== '') { | ||||||
| 								navigator.mediaDevices.getUserMedia({ audio: true }).catch(function (err) { | 								navigator.mediaDevices.getUserMedia({ audio: true }).catch(function (err) { | ||||||
| 									toast.error(`Permission denied when accessing microphone: ${err}`); | 									toast.error( | ||||||
|  | 										$i18n.t(`Permission denied when accessing microphone: {{error}}`, { | ||||||
|  | 											error: err | ||||||
|  | 										}) | ||||||
|  | 									); | ||||||
| 									STTEngine = ''; | 									STTEngine = ''; | ||||||
| 								}); | 								}); | ||||||
| 							} | 							} | ||||||
|  |  | ||||||
|  | @ -79,7 +79,7 @@ | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			enableImageGeneration = false; | 			enableImageGeneration = false; | ||||||
| 			toast.error('AUTOMATIC1111_BASE_URL not provided'); | 			toast.error($i18n.t('{{item}} not provided', { item: 'AUTOMATIC1111_BASE_URL' })); | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -56,11 +56,17 @@ | ||||||
| 	const pullModelHandler = async () => { | 	const pullModelHandler = async () => { | ||||||
| 		const sanitizedModelTag = modelTag.trim(); | 		const sanitizedModelTag = modelTag.trim(); | ||||||
| 		if (modelDownloadStatus[sanitizedModelTag]) { | 		if (modelDownloadStatus[sanitizedModelTag]) { | ||||||
| 			toast.error(`Model '${sanitizedModelTag}' is already in queue for downloading.`); | 			toast.error( | ||||||
|  | 				$i18n.t(`Model '{{modelTag}}' is already in queue for downloading.`, { | ||||||
|  | 					modelTag: sanitizedModelTag | ||||||
|  | 				}) | ||||||
|  | 			); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 		if (Object.keys(modelDownloadStatus).length === 3) { | 		if (Object.keys(modelDownloadStatus).length === 3) { | ||||||
| 			toast.error('Maximum of 3 models can be downloaded simultaneously. Please try again later.'); | 			toast.error( | ||||||
|  | 				$i18n.t('Maximum of 3 models can be downloaded simultaneously. Please try again later.') | ||||||
|  | 			); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | @ -78,10 +84,10 @@ | ||||||
| 				if (!data.success) { | 				if (!data.success) { | ||||||
| 					toast.error(data.error); | 					toast.error(data.error); | ||||||
| 				} else { | 				} else { | ||||||
| 					toast.success($i18n.t(`Model '${modelName}' has been successfully downloaded.`)); | 					toast.success($i18n.t(`Model '{{modelName}}' has been successfully downloaded.`, {modelName})); | ||||||
| 
 | 
 | ||||||
| 					const notification = new Notification($WEBUI_NAME, { | 					const notification = new Notification($WEBUI_NAME, { | ||||||
| 						body: `Model '${modelName}' has been successfully downloaded.`, | 						body: $i18n.t(`Model '{{modelName}}' has been successfully downloaded.`, {modelName}), | ||||||
| 						icon: `${WEBUI_BASE_URL}/static/favicon.png` | 						icon: `${WEBUI_BASE_URL}/static/favicon.png` | ||||||
| 					}); | 					}); | ||||||
| 
 | 
 | ||||||
|  | @ -243,7 +249,7 @@ | ||||||
| 		}); | 		}); | ||||||
| 
 | 
 | ||||||
| 		if (res) { | 		if (res) { | ||||||
| 			toast.success($i18n.t(`Deleted ${deleteModelTag}`)); | 			toast.success($i18n.t(`Deleted {{deleteModelTag}}`, {deleteModelTag})); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		deleteModelTag = ''; | 		deleteModelTag = ''; | ||||||
|  | @ -327,7 +333,7 @@ | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			toast.error(`Model ${liteLLMModelName} already exists.`); | 			toast.error($i18n.t(`Model {{modelName}} already exists.`, { modelName: liteLLMModelName })); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		liteLLMModelName = ''; | 		liteLLMModelName = ''; | ||||||
|  |  | ||||||
|  | @ -73,7 +73,7 @@ | ||||||
| 			inputFiles = null; | 			inputFiles = null; | ||||||
| 			document.getElementById('upload-doc-input').value = ''; | 			document.getElementById('upload-doc-input').value = ''; | ||||||
| 		} else { | 		} else { | ||||||
| 			toast.error(`File not found.`); | 			toast.error($i18n.t(`File not found.`)); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		show = false; | 		show = false; | ||||||
|  |  | ||||||
|  | @ -61,7 +61,7 @@ | ||||||
| 	"Delete a model": "Delete a model", | 	"Delete a model": "Delete a model", | ||||||
| 	"Delete chat": "Delete chat", | 	"Delete chat": "Delete chat", | ||||||
| 	"Delete Chats": "Delete Chats", | 	"Delete Chats": "Delete Chats", | ||||||
| 	"Deleted ${deleteModelTag}`": "Deleted ${deleteModelTag}`", | 	"Deleted {{deleteModelTag}}": "Deleted {{deleteModelTag}}", | ||||||
| 	"delete": "delete", | 	"delete": "delete", | ||||||
| 	"Deleted {tagName}": "Deleted {tagName}", | 	"Deleted {tagName}": "Deleted {tagName}", | ||||||
| 	"Description": "Description", | 	"Description": "Description", | ||||||
|  | @ -105,6 +105,7 @@ | ||||||
| 	"Import Modelfiles": "Import Modelfiles", | 	"Import Modelfiles": "Import Modelfiles", | ||||||
| 	"Import Prompts": "Import Prompts", | 	"Import Prompts": "Import Prompts", | ||||||
| 	"Interface": "Interface", | 	"Interface": "Interface", | ||||||
|  | 	"{{item}} not provided": "{{item}} not provided", | ||||||
| 	"join our Discord for help.": "join our Discord for help.", | 	"join our Discord for help.": "join our Discord for help.", | ||||||
| 	"JSON": "JSON", | 	"JSON": "JSON", | ||||||
| 	"JWT Expiration": "JWT Expiration", | 	"JWT Expiration": "JWT Expiration", | ||||||
|  | @ -120,17 +121,22 @@ | ||||||
| 	"LLMs can make mistakes. Verify important information.": "LLMs can make mistakes. Verify important information.", | 	"LLMs can make mistakes. Verify important information.": "LLMs can make mistakes. Verify important information.", | ||||||
| 	"Made by OpenWebUI Community": "Made by OpenWebUI Community", | 	"Made by OpenWebUI Community": "Made by OpenWebUI Community", | ||||||
| 	"Manage LiteLLM Models": "Manage LiteLLM Models", | 	"Manage LiteLLM Models": "Manage LiteLLM Models", | ||||||
|  | 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum of 3 models can be downloaded simultaneously. Please try again later.", | ||||||
| 	"Max Tokens": "Max Tokens", | 	"Max Tokens": "Max Tokens", | ||||||
| 	"Mirostat Eta": "Mirostat Eta", | 	"Mirostat Eta": "Mirostat Eta", | ||||||
| 	"Mirostat": "Mirostat", | 	"Mirostat": "Mirostat", | ||||||
| 	"Mirostat Tau": "Mirostat Tau", | 	"Mirostat Tau": "Mirostat Tau", | ||||||
| 	"Model '${modelName}' has been successfully downloaded.`": "Model '${modelName}' has been successfully downloaded.`", | 	"Model '{{modelName}}' has been successfully downloaded.`": "Model '{{modelName}}' has been successfully downloaded.`", | ||||||
| 	"Modelfile Advanced Settings": "Modelfile Advanced Settings", | 	"Modelfile Advanced Settings": "Modelfile Advanced Settings", | ||||||
| 	"Modelfile Content": "Modelfile Content", | 	"Modelfile Content": "Modelfile Content", | ||||||
| 	"Modelfile": "Modelfile", | 	"Modelfile": "Modelfile", | ||||||
| 	"Modelfiles": "Modelfiles", | 	"Modelfiles": "Modelfiles", | ||||||
|  | 	"Model {{modelId}} not found": "Model {{modelId}} not found", | ||||||
|  | 	"Model {{modelName}} already exists.": "Model {{modelName}} already exists.", | ||||||
|  | 	"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' is already in queue for downloading.", | ||||||
| 	"{{modelName}} is thinking...": "{{modelName}} is thinking...", | 	"{{modelName}} is thinking...": "{{modelName}} is thinking...", | ||||||
| 	"Model Name": "Model Name", | 	"Model Name": "Model Name", | ||||||
|  | 	"Model not selected": "Model not selected", | ||||||
| 	"Models": "Models", | 	"Models": "Models", | ||||||
| 	"Model Tag Name": "Model Tag Name", | 	"Model Tag Name": "Model Tag Name", | ||||||
| 	"My Documents": "My Documents", | 	"My Documents": "My Documents", | ||||||
|  | @ -146,7 +152,9 @@ | ||||||
| 	"Okay, Let's Go!": "Okay, Let's Go!", | 	"Okay, Let's Go!": "Okay, Let's Go!", | ||||||
| 	"Ollama API URL": "Ollama API URL", | 	"Ollama API URL": "Ollama API URL", | ||||||
| 	"Ollama Version": "Ollama Version", | 	"Ollama Version": "Ollama Version", | ||||||
|  | 	"Only alphanumeric characters and hyphens are allowed in the command string.": "Only alphanumeric characters and hyphens are allowed in the command string.", | ||||||
| 	"On": "On", | 	"On": "On", | ||||||
|  | 	"Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.": "Oops! Hold tight! Your files are still in the processing oven. We're cooking them up to perfection. Please be patient and we'll let you know once they're ready.", | ||||||
| 	"OpenAI API": "OpenAI API", | 	"OpenAI API": "OpenAI API", | ||||||
| 	"Open AI": "Open AI", | 	"Open AI": "Open AI", | ||||||
| 	"Open new chat": "Open new chat", | 	"Open new chat": "Open new chat", | ||||||
|  | @ -154,6 +162,7 @@ | ||||||
| 	"Parameters": "Parameters", | 	"Parameters": "Parameters", | ||||||
| 	"Password": "Password", | 	"Password": "Password", | ||||||
| 	"Pending": "Pending", | 	"Pending": "Pending", | ||||||
|  | 	"Permission denied when accessing microphone: {{error}}": "Permission denied when accessing microphone: {{error}}", | ||||||
| 	"Profile": "Profile", | 	"Profile": "Profile", | ||||||
| 	"Prompt Content": "Prompt Content", | 	"Prompt Content": "Prompt Content", | ||||||
| 	"Prompts": "Prompts", | 	"Prompts": "Prompts", | ||||||
|  | @ -198,6 +207,7 @@ | ||||||
| 	"Show shortcuts": "Show shortcuts", | 	"Show shortcuts": "Show shortcuts", | ||||||
| 	"Sign Out": "Sign Out", | 	"Sign Out": "Sign Out", | ||||||
| 	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API is not supported in this browser.", | 	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API is not supported in this browser.", | ||||||
|  | 	"Speech recognition error: {{error}}": "Speech recognition error: {{error}}", | ||||||
| 	"Speech-to-Text Engine": "Speech-to-Text Engine", | 	"Speech-to-Text Engine": "Speech-to-Text Engine", | ||||||
| 	"Stop Sequence": "Stop Sequence", | 	"Stop Sequence": "Stop Sequence", | ||||||
| 	"STT Settings": "STT Settings", | 	"STT Settings": "STT Settings", | ||||||
|  | @ -222,7 +232,7 @@ | ||||||
| 	"Top K": "Top K", | 	"Top K": "Top K", | ||||||
| 	"Top P": "Top P", | 	"Top P": "Top P", | ||||||
| 	"TTS Settings": "TTS Settings", | 	"TTS Settings": "TTS Settings", | ||||||
| 	"Uh-oh! There was an issue connecting to llama.": "Uh-oh! There was an issue connecting to llama.", | 	"Uh-oh! There was an issue connecting to {{provider}}.": "Uh-oh! There was an issue connecting to {{provider}}.", | ||||||
| 	"Upload a GGUF model": "Upload a GGUF model", | 	"Upload a GGUF model": "Upload a GGUF model", | ||||||
| 	"Upload files": "Upload files", | 	"Upload files": "Upload files", | ||||||
| 	"Upload Progress": "Upload Progress", | 	"Upload Progress": "Upload Progress", | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| 	"Add Docs": "اضافه کردن اسناد", | 	"Add Docs": "اضافه کردن اسناد", | ||||||
| 	"Add Files": "اضافه کردن فایلها", | 	"Add Files": "اضافه کردن فایلها", | ||||||
| 	"Add LiteLLM Model": "اضافه کردن مدل LiteLLM", | 	"Add LiteLLM Model": "اضافه کردن مدل LiteLLM", | ||||||
| 	"add tags": "add tags", | 	"add tags": "اضافه کردن تگها", | ||||||
| 	"Admin": "مدیریت", | 	"Admin": "مدیریت", | ||||||
| 	"Admin Panel": "پنل مدیریت", | 	"Admin Panel": "پنل مدیریت", | ||||||
| 	"Admin Settings": "تنظیمات مدیریت", | 	"Admin Settings": "تنظیمات مدیریت", | ||||||
|  | @ -14,12 +14,12 @@ | ||||||
| 	"Advanced Parameters": "پارامترهای پیشرفته", | 	"Advanced Parameters": "پارامترهای پیشرفته", | ||||||
| 	"all": "همه", | 	"all": "همه", | ||||||
| 	"Allow": "اجازه دادن", | 	"Allow": "اجازه دادن", | ||||||
| 	"Allow Chat Deletion": "اجازه حذف چت", | 	"Allow Chat Deletion": "اجازه حذف گپ", | ||||||
| 	"API Base URL": "API Base URL", | 	"API Base URL": "API Base URL", | ||||||
| 	"API Key": "API Key", | 	"API Key": "API Key", | ||||||
| 	"API RPM": "API RPM", | 	"API RPM": "API RPM", | ||||||
| 	"Audio": "صدا", | 	"Audio": "صدا", | ||||||
| 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 Base URL", | 	"AUTOMATIC1111 Base URL": "پایه URL AUTOMATIC1111 ", | ||||||
| 	"Auto-playback response": "پخش خودکار پاسخ ", | 	"Auto-playback response": "پخش خودکار پاسخ ", | ||||||
| 	"Auto-send input after 3 sec.": "به طور خودکار ورودی را پس از 3 ثانیه ارسال کن.", | 	"Auto-send input after 3 sec.": "به طور خودکار ورودی را پس از 3 ثانیه ارسال کن.", | ||||||
| 	"Back": "بازگشت", | 	"Back": "بازگشت", | ||||||
|  | @ -28,15 +28,15 @@ | ||||||
| 	"Categories": "دستهبندیها", | 	"Categories": "دستهبندیها", | ||||||
| 	"Change Password": "تغییر رمز عبور", | 	"Change Password": "تغییر رمز عبور", | ||||||
| 	"Chat History": "تاریخچهی گفتگو", | 	"Chat History": "تاریخچهی گفتگو", | ||||||
| 	"Chat History is off for this browser.": "سابقه چت برای این مرورگر خاموش است.", | 	"Chat History is off for this browser.": "سابقه گپ برای این مرورگر خاموش است.", | ||||||
| 	"Chats": "چتها", | 	"Chats": "گپها", | ||||||
| 	"Check Again": "Check Again", | 	"Check Again": "چک مجدد", | ||||||
| 	"Choose a model before saving...": "قبل از ذخیره یک مدل را انتخاب کنید...", | 	"Choose a model before saving...": "قبل از ذخیره یک مدل را انتخاب کنید...", | ||||||
| 	"Chunk Overlap": "همپوشانی تکه", | 	"Chunk Overlap": "همپوشانی تکه", | ||||||
| 	"Chunk Params": "پارامترهای تکه", | 	"Chunk Params": "پارامترهای تکه", | ||||||
| 	"Chunk Size": "اندازه تکه", | 	"Chunk Size": "اندازه تکه", | ||||||
| 	"click here.": "اینجا کلیک کنید.", | 	"click here.": "اینجا کلیک کنید.", | ||||||
| 	"Click here to check other modelfiles.": "Click here to check other modelfiles.", | 	"Click here to check other modelfiles.": "برای بررسی سایر فایلهای مدل اینجا را کلیک کنید.", | ||||||
| 	"Collection": "مجموعه", | 	"Collection": "مجموعه", | ||||||
| 	"Command": "دستور", | 	"Command": "دستور", | ||||||
| 	"Confirm Password": "تایید رمز عبور", | 	"Confirm Password": "تایید رمز عبور", | ||||||
|  | @ -47,7 +47,7 @@ | ||||||
| 	"Copying to clipboard was successful!": "کپی کردن در کلیپ بورد با موفقیت انجام شد!", | 	"Copying to clipboard was successful!": "کپی کردن در کلیپ بورد با موفقیت انجام شد!", | ||||||
| 	"Copy last code block": "کپی آخرین بلوک کد", | 	"Copy last code block": "کپی آخرین بلوک کد", | ||||||
| 	"Copy last response": "کپی آخرین پاسخ", | 	"Copy last response": "کپی آخرین پاسخ", | ||||||
| 	"Create a modelfile": "Create a modelfile", | 	"Create a modelfile": "ایجاد یک فایل مدل", | ||||||
| 	"Current Password": "رمز عبور فعلی", | 	"Current Password": "رمز عبور فعلی", | ||||||
| 	"Custom": "دلخواه", | 	"Custom": "دلخواه", | ||||||
| 	"Customize Ollama models for a specific purpose": "Customize Ollama models for a specific purpose", | 	"Customize Ollama models for a specific purpose": "Customize Ollama models for a specific purpose", | ||||||
|  | @ -59,26 +59,26 @@ | ||||||
| 	"Default User Role": "Default User Role", | 	"Default User Role": "Default User Role", | ||||||
| 	"Default (Web API)": "Default (Web API)", | 	"Default (Web API)": "Default (Web API)", | ||||||
| 	"Delete a model": "حذف یک مدل", | 	"Delete a model": "حذف یک مدل", | ||||||
| 	"Delete chat": "حذف چت", | 	"Delete chat": "حذف گپ", | ||||||
| 	"Delete Chats": "حذف چتها", | 	"Delete Chats": "حذف گپها", | ||||||
| 	"Deleted ${deleteModelTag}`": "Deleted ${deleteModelTag}`", | 	"Deleted {{deleteModelTag}}": "{{deleteModelTag}} پاک شد", | ||||||
| 	"delete": "حذف", | 	"delete": "حذف", | ||||||
| 	"Deleted {tagName}": "{tagName} حذف شد", | 	"Deleted {tagName}": "{tagName} حذف شد", | ||||||
| 	"Description": "توضیحات", | 	"Description": "توضیحات", | ||||||
| 	"Disabled": "غیرفعال", | 	"Disabled": "غیرفعال", | ||||||
| 	"Discover a modelfile": "Discover a modelfile", | 	"Discover a modelfile": "فایل مدل را کشف کنید", | ||||||
| 	"Discover a prompt": "Discover a prompt", | 	"Discover a prompt": "یک اعلان را کشف کنید", | ||||||
| 	"Discover, download, and explore custom prompts": "Discover, download, and explore custom prompts", | 	"Discover, download, and explore custom prompts": "درخواستهای سفارشی را کشف، دانلود و کاوش کنید", | ||||||
| 	"Discover, download, and explore model presets": "Discover, download, and explore model presets", | 	"Discover, download, and explore model presets": "پیش تنظیمات مدل را کشف، دانلود و کاوش کنید", | ||||||
| 	"Document": "سند", | 	"Document": "سند", | ||||||
| 	"Documents": "اسناد", | 	"Documents": "اسناد", | ||||||
| 	"Document Settings": "تنظیمات سند", | 	"Document Settings": "تنظیمات سند", | ||||||
| 	"Don't Allow": "Don't Allow", | 	"Don't Allow": "اجازه نده", | ||||||
| 	"Download as a File": "دانلود به صورت فایل", | 	"Download as a File": "دانلود به صورت فایل", | ||||||
| 	"Download Database": "دانلود پایگاه داده", | 	"Download Database": "دانلود پایگاه داده", | ||||||
| 	"Edit Doc": "ویرایش سند", | 	"Edit Doc": "ویرایش سند", | ||||||
| 	"Edit User": "ویرایش کاربر", | 	"Edit User": "ویرایش کاربر", | ||||||
| 	"Email": "Email", | 	"Email": "ایمیل", | ||||||
| 	"Enabled": "فعال", | 	"Enabled": "فعال", | ||||||
| 	"Enable New Sign Ups": "Enable New Sign Ups", | 	"Enable New Sign Ups": "Enable New Sign Ups", | ||||||
| 	"Experimental": "Experimental", | 	"Experimental": "Experimental", | ||||||
|  | @ -105,6 +105,7 @@ | ||||||
| 	"Import Modelfiles": "Import Modelfiles", | 	"Import Modelfiles": "Import Modelfiles", | ||||||
| 	"Import Prompts": "Import Prompts", | 	"Import Prompts": "Import Prompts", | ||||||
| 	"Interface": "رابط", | 	"Interface": "رابط", | ||||||
|  | 	"{{item}} not provided": "{{item}} not provided", | ||||||
| 	"join our Discord for help.": "برای کمک به Discord ما بپیوندید.", | 	"join our Discord for help.": "برای کمک به Discord ما بپیوندید.", | ||||||
| 	"JSON": "JSON", | 	"JSON": "JSON", | ||||||
| 	"JWT Expiration": "JWT Expiration", | 	"JWT Expiration": "JWT Expiration", | ||||||
|  | @ -118,19 +119,24 @@ | ||||||
| 	"LiteLLM API Key": "LiteLLM API Key", | 	"LiteLLM API Key": "LiteLLM API Key", | ||||||
| 	"LiteLLM API RPM": "LiteLLM API RPM", | 	"LiteLLM API RPM": "LiteLLM API RPM", | ||||||
| 	"LLMs can make mistakes. Verify important information.": "مدلهای زبانی بزرگ میتوانند اشتباه کنند. اطلاعات مهم را راستیآزمایی کنید.", | 	"LLMs can make mistakes. Verify important information.": "مدلهای زبانی بزرگ میتوانند اشتباه کنند. اطلاعات مهم را راستیآزمایی کنید.", | ||||||
| 	"Made by OpenWebUI Community": "Made by OpenWebUI Community", | 	"Made by OpenWebUI Community": "ساخته شده توسط OpenWebUI Community", | ||||||
| 	"Manage LiteLLM Models": "Manage LiteLLM Models", | 	"Manage LiteLLM Models": "Manage LiteLLM Models", | ||||||
| 	"Max Tokens": "Max Tokens", | 	"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "حداکثر 3 مدل را می توان به طور همزمان دانلود کرد. لطفاً بعداً دوباره امتحان کنید.", | ||||||
|  | 	"Max Tokens": "حداکثر توکن", | ||||||
| 	"Mirostat Eta": "Mirostat Eta", | 	"Mirostat Eta": "Mirostat Eta", | ||||||
| 	"Mirostat": "Mirostat", | 	"Mirostat": "Mirostat", | ||||||
| 	"Mirostat Tau": "Mirostat Tau", | 	"Mirostat Tau": "Mirostat Tau", | ||||||
| 	"Model '${modelName}' has been successfully downloaded.`": "Model '${modelName}' has been successfully downloaded.`", | 	"Model '{{modelName}}' has been successfully downloaded.`": "Model '{{modelName}}' has been successfully downloaded.`", | ||||||
| 	"Modelfile Advanced Settings": "Modelfile Advanced Settings", | 	"Modelfile Advanced Settings": "تنظیمات پیشرفته فایلمدل", | ||||||
| 	"Modelfile Content": "Modelfile Content", | 	"Modelfile Content": "محتویات فایلمدل", | ||||||
| 	"Modelfile": "فایل مدل", | 	"Modelfile": "فایل مدل", | ||||||
| 	"Modelfiles": "فایلهای مدل", | 	"Modelfiles": "فایلهای مدل", | ||||||
|  | 	"Model {{modelId}} not found": "Model {{modelId}} not found", | ||||||
|  | 	"Model {{modelName}} already exists.": "Model {{modelName}} already exists.", | ||||||
|  | 	"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' is already in queue for downloading.", | ||||||
| 	"{{modelName}} is thinking...": "{{modelName}} در حال فکر کردن است...", | 	"{{modelName}} is thinking...": "{{modelName}} در حال فکر کردن است...", | ||||||
| 	"Model Name": "نام مدل", | 	"Model Name": "نام مدل", | ||||||
|  | 	"Model not selected": "Model not selected", | ||||||
| 	"Models": "مدلها", | 	"Models": "مدلها", | ||||||
| 	"Model Tag Name": "Model Tag Name", | 	"Model Tag Name": "Model Tag Name", | ||||||
| 	"My Documents": "اسناد من", | 	"My Documents": "اسناد من", | ||||||
|  | @ -138,22 +144,25 @@ | ||||||
| 	"My Prompts": "درخواستهای من", | 	"My Prompts": "درخواستهای من", | ||||||
| 	"Name": "نام", | 	"Name": "نام", | ||||||
| 	"Name Tag": "Name Tag", | 	"Name Tag": "Name Tag", | ||||||
| 	"New Chat": "چت جدید", | 	"New Chat": "گپ جدید", | ||||||
| 	"New Password": "رمز عبور جدید", | 	"New Password": "رمز عبور جدید", | ||||||
| 	"Notification": "اعلان", | 	"Notification": "اعلان", | ||||||
| 	"Not sure what to write? Switch to": "Not sure what to write? Switch to", | 	"Not sure what to write? Switch to": "مطمئن نیستید چه بنویسید؟ تغییر به", | ||||||
| 	"Off": "خاموش", | 	"Off": "خاموش", | ||||||
| 	"Okay, Let's Go!": "Okay, Let's Go!", | 	"Okay, Let's Go!": "Okay, Let's Go!", | ||||||
| 	"Ollama API URL": "Ollama API URL", | 	"Ollama API URL": "Ollama API URL", | ||||||
| 	"Ollama Version": "نسخه Ollama", | 	"Ollama Version": "نسخه Ollama", | ||||||
|  | 	"Only alphanumeric characters and hyphens are allowed in the command string.": "فقط کاراکترهای الفبایی و خط فاصله در رشته فرمان مجاز هستند.", | ||||||
| 	"On": "روشن", | 	"On": "روشن", | ||||||
|  | 	"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.": "اوه! فایل های شما هنوز در فر پردازش هستند. ما آنها را کامل می پزیم. لطفا صبور باشید، به محض آماده شدن به شما اطلاع خواهیم داد.", | ||||||
| 	"OpenAI API": "OpenAI API", | 	"OpenAI API": "OpenAI API", | ||||||
| 	"Open AI": "Open AI", | 	"Open AI": "Open AI", | ||||||
| 	"Open new chat": "Open new chat", | 	"Open new chat": "باز کردن گپ جدید", | ||||||
| 	"or": "روشن", | 	"or": "روشن", | ||||||
| 	"Parameters": "پارامترها", | 	"Parameters": "پارامترها", | ||||||
| 	"Password": "رمز عبور", | 	"Password": "رمز عبور", | ||||||
| 	"Pending": "Pending", | 	"Pending": "Pending", | ||||||
|  | 	"Permission denied when accessing microphone: {{error}}": "Permission denied when accessing microphone: {{error}}", | ||||||
| 	"Profile": "پروفایل", | 	"Profile": "پروفایل", | ||||||
| 	"Prompt Content": "محتویات درخواست", | 	"Prompt Content": "محتویات درخواست", | ||||||
| 	"Prompts": "درخواستها", | 	"Prompts": "درخواستها", | ||||||
|  | @ -195,9 +204,10 @@ | ||||||
| 	"Set Title Auto-Generation Model": "Set Title Auto-Generation Model", | 	"Set Title Auto-Generation Model": "Set Title Auto-Generation Model", | ||||||
| 	"Set Voice": "Set Voice", | 	"Set Voice": "Set Voice", | ||||||
| 	"Share to OpenWebUI Community": "Share to OpenWebUI Community", | 	"Share to OpenWebUI Community": "Share to OpenWebUI Community", | ||||||
| 	"Show shortcuts": "Show shortcuts", | 	"Show shortcuts": "نمایش میانبرها", | ||||||
| 	"Sign Out": "خروج", | 	"Sign Out": "خروج", | ||||||
| 	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API is not supported in this browser.", | 	"SpeechRecognition API is not supported in this browser.": "SpeechRecognition API is not supported in this browser.", | ||||||
|  | 	"Speech recognition error: {{error}}": "Speech recognition error: {{error}}", | ||||||
| 	"Speech-to-Text Engine": "Speech-to-Text Engine", | 	"Speech-to-Text Engine": "Speech-to-Text Engine", | ||||||
| 	"Stop Sequence": "Stop Sequence", | 	"Stop Sequence": "Stop Sequence", | ||||||
| 	"STT Settings": "STT Settings", | 	"STT Settings": "STT Settings", | ||||||
|  | @ -212,28 +222,28 @@ | ||||||
| 	"Text-to-Speech Engine": "Text-to-Speech Engine", | 	"Text-to-Speech Engine": "Text-to-Speech Engine", | ||||||
| 	"Tfs Z": "Tfs Z", | 	"Tfs Z": "Tfs Z", | ||||||
| 	"Theme": "قالب", | 	"Theme": "قالب", | ||||||
| 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "This ensures that your valuable conversations are securely saved to your backend database. Thank you!", | 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "این تضمین می کند که مکالمات ارزشمند شما به طور ایمن در پایگاه داده بکند ذخیره می شود. تشکر!", | ||||||
| 	"Title Auto-Generation": "Title Auto-Generation", | 	"Title Auto-Generation": "تولید خودکار عنوان", | ||||||
| 	"Title Generation Prompt": "Title Generation Prompt", | 	"Title Generation Prompt": "درخواست تولید عنوان", | ||||||
| 	"Title": "عنوان", | 	"Title": "عنوان", | ||||||
| 	"To access the available model names for downloading,": "To access the available model names for downloading,", | 	"To access the available model names for downloading,": "برای دسترسی به نام مدل های موجود برای دانلود،", | ||||||
| 	"Toggle settings": "Toggle settings", | 	"Toggle settings": "Toggle settings", | ||||||
| 	"Toggle sidebar": "Toggle sidebar", | 	"Toggle sidebar": "Toggle sidebar", | ||||||
| 	"Top K": "Top K", | 	"Top K": "Top K", | ||||||
| 	"Top P": "Top P", | 	"Top P": "Top P", | ||||||
| 	"TTS Settings": "TTS Settings", | 	"TTS Settings": "تنظیمات TTS", | ||||||
| 	"Uh-oh! There was an issue connecting to llama.": "Uh-oh! There was an issue connecting to llama.", | 	"Uh-oh! There was an issue connecting to {{provider}}.": "اوه اوه! مشکلی در اتصال به {{provider}} وجود داشت.", | ||||||
| 	"Upload a GGUF model": "Upload a GGUF model", | 	"Upload a GGUF model": "بارگذاری یک مدل GGUF", | ||||||
| 	"Upload files": "Upload files", | 	"Upload files": "بارگذاری فایلها", | ||||||
| 	"Upload Progress": "Upload Progress", | 	"Upload Progress": "میزان پیشرفت بارگذاری", | ||||||
| 	"URL Mode": "URL Mode", | 	"URL Mode": "URL Mode", | ||||||
| 	"User Permissions": "User Permissions", | 	"User Permissions": "مجوزهای کاربر", | ||||||
| 	"Users": "کاربران", | 	"Users": "کاربران", | ||||||
| 	"User": "کاربر", | 	"User": "کاربر", | ||||||
| 	"WebUI Add-ons": "WebUI Add-ons", | 	"WebUI Add-ons": "WebUI Add-ons", | ||||||
| 	"{{webui_name}} Backend Required": "{{webui_name}} Backend Required", | 	"{{webui_name}} Backend Required": "{{webui_name}} Backend Required", | ||||||
| 	"WebUI Settings": "WebUI Settings", | 	"WebUI Settings": "تنظیمات WebUI", | ||||||
| 	"Web": "Web", | 	"Web": "وب", | ||||||
| 	"Whisper (Local)": "Whisper (Local)", | 	"Whisper (Local)": "Whisper (Local)", | ||||||
| 	"You're now logged in.": "شما اکنون وارد شدهاید." | 	"You're now logged in.": "شما اکنون وارد شدهاید." | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -241,7 +241,7 @@ | ||||||
| 										location.href = '/'; | 										location.href = '/'; | ||||||
| 									}} | 									}} | ||||||
| 								> | 								> | ||||||
| 									Check Again | 									{$i18n.t('Check Again')} | ||||||
| 								</button> | 								</button> | ||||||
| 
 | 
 | ||||||
| 								<button | 								<button | ||||||
|  |  | ||||||
|  | @ -156,7 +156,7 @@ | ||||||
| 		); | 		); | ||||||
| 
 | 
 | ||||||
| 		if (selectedModels.includes('')) { | 		if (selectedModels.includes('')) { | ||||||
| 			toast.error('Model not selected'); | 			toast.error($i18n.t('Model not selected')); | ||||||
| 		} else if (messages.length != 0 && messages.at(-1).done != true) { | 		} else if (messages.length != 0 && messages.at(-1).done != true) { | ||||||
| 			// Response not done | 			// Response not done | ||||||
| 			console.log('wait'); | 			console.log('wait'); | ||||||
|  | @ -166,7 +166,7 @@ | ||||||
| 		) { | 		) { | ||||||
| 			// Upload not done | 			// Upload not done | ||||||
| 			toast.error( | 			toast.error( | ||||||
| 				`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.` | 				$i18n.t(`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.`) | ||||||
| 			); | 			); | ||||||
| 		} else { | 		} else { | ||||||
| 			// Reset chat message textarea height | 			// Reset chat message textarea height | ||||||
|  | @ -317,7 +317,7 @@ | ||||||
| 						await sendPromptOllama(model, prompt, responseMessageId, _chatId); | 						await sendPromptOllama(model, prompt, responseMessageId, _chatId); | ||||||
| 					} | 					} | ||||||
| 				} else { | 				} else { | ||||||
| 					toast.error(`Model ${modelId} not found`); | 					toast.error($i18n.t(`Model {{modelId}} not found`, { modelId })); | ||||||
| 				} | 				} | ||||||
| 			}) | 			}) | ||||||
| 		); | 		); | ||||||
|  | @ -511,12 +511,12 @@ | ||||||
| 					responseMessage.content = error.error; | 					responseMessage.content = error.error; | ||||||
| 				} | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				toast.error(`Uh-oh! There was an issue connecting to Ollama.`); | 				toast.error($i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {provider: 'Ollama'})); | ||||||
| 				responseMessage.content = `Uh-oh! There was an issue connecting to Ollama.`; | 				responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {provider: 'Ollama'}); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			responseMessage.error = true; | 			responseMessage.error = true; | ||||||
| 			responseMessage.content = `Uh-oh! There was an issue connecting to Ollama.`; | 			responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {provider: 'Ollama'}); | ||||||
| 			responseMessage.done = true; | 			responseMessage.done = true; | ||||||
| 			messages = messages; | 			messages = messages; | ||||||
| 		} | 		} | ||||||
|  | @ -678,12 +678,12 @@ | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				toast.error(`Uh-oh! There was an issue connecting to ${model}.`); | 				toast.error($i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {provider: model})); | ||||||
| 				responseMessage.content = `Uh-oh! There was an issue connecting to ${model}.`; | 				responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {provider: model}}); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			responseMessage.error = true; | 			responseMessage.error = true; | ||||||
| 			responseMessage.content = `Uh-oh! There was an issue connecting to ${model}.`; | 			responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, {provider: model}); | ||||||
| 			responseMessage.done = true; | 			responseMessage.done = true; | ||||||
| 			messages = messages; | 			messages = messages; | ||||||
| 		} | 		} | ||||||
|  | @ -747,7 +747,7 @@ | ||||||
| 					); | 					); | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			toast.error(`Model ${modelId} not found`); | 			toast.error($i18n.t(`Model {{modelId}} not found`, { modelId })); | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| 	import { v4 as uuidv4 } from 'uuid'; | 	import { v4 as uuidv4 } from 'uuid'; | ||||||
| 	import { toast } from 'svelte-sonner'; | 	import { toast } from 'svelte-sonner'; | ||||||
| 
 | 
 | ||||||
| 	import { onMount, tick } from 'svelte'; | 	import { onMount, tick, getContext } from 'svelte'; | ||||||
| 	import { goto } from '$app/navigation'; | 	import { goto } from '$app/navigation'; | ||||||
| 	import { page } from '$app/stores'; | 	import { page } from '$app/stores'; | ||||||
| 
 | 
 | ||||||
|  | @ -40,6 +40,8 @@ | ||||||
| 	import { RAGTemplate } from '$lib/utils/rag'; | 	import { RAGTemplate } from '$lib/utils/rag'; | ||||||
| 	import { LITELLM_API_BASE_URL, OPENAI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; | 	import { LITELLM_API_BASE_URL, OPENAI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; | ||||||
| 
 | 
 | ||||||
|  | 	const i18n = getContext('i18n'); | ||||||
|  | 
 | ||||||
| 	let loaded = false; | 	let loaded = false; | ||||||
| 
 | 
 | ||||||
| 	let stopResponseFlag = false; | 	let stopResponseFlag = false; | ||||||
|  | @ -172,7 +174,7 @@ | ||||||
| 		console.log('submitPrompt', $chatId); | 		console.log('submitPrompt', $chatId); | ||||||
| 
 | 
 | ||||||
| 		if (selectedModels.includes('')) { | 		if (selectedModels.includes('')) { | ||||||
| 			toast.error('Model not selected'); | 			toast.error($i18n.t('Model not selected')); | ||||||
| 		} else if (messages.length != 0 && messages.at(-1).done != true) { | 		} else if (messages.length != 0 && messages.at(-1).done != true) { | ||||||
| 			// Response not done | 			// Response not done | ||||||
| 			console.log('wait'); | 			console.log('wait'); | ||||||
|  | @ -330,7 +332,7 @@ | ||||||
| 						await sendPromptOllama(model, prompt, responseMessageId, _chatId); | 						await sendPromptOllama(model, prompt, responseMessageId, _chatId); | ||||||
| 					} | 					} | ||||||
| 				} else { | 				} else { | ||||||
| 					toast.error(`Model ${modelId} not found`); | 					toast.error($i18n.t(`Model {{modelId}} not found`, { modelId })); | ||||||
| 				} | 				} | ||||||
| 			}) | 			}) | ||||||
| 		); | 		); | ||||||
|  | @ -524,12 +526,18 @@ | ||||||
| 					responseMessage.content = error.error; | 					responseMessage.content = error.error; | ||||||
| 				} | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				toast.error(`Uh-oh! There was an issue connecting to Ollama.`); | 				toast.error( | ||||||
| 				responseMessage.content = `Uh-oh! There was an issue connecting to Ollama.`; | 					$i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, { provider: 'Ollama' }) | ||||||
|  | 				); | ||||||
|  | 				responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, { | ||||||
|  | 					provider: 'Ollama' | ||||||
|  | 				}); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			responseMessage.error = true; | 			responseMessage.error = true; | ||||||
| 			responseMessage.content = `Uh-oh! There was an issue connecting to Ollama.`; | 			responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, { | ||||||
|  | 				provider: 'Ollama' | ||||||
|  | 			}); | ||||||
| 			responseMessage.done = true; | 			responseMessage.done = true; | ||||||
| 			messages = messages; | 			messages = messages; | ||||||
| 		} | 		} | ||||||
|  | @ -691,12 +699,18 @@ | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				toast.error(`Uh-oh! There was an issue connecting to ${model}.`); | 				toast.error( | ||||||
| 				responseMessage.content = `Uh-oh! There was an issue connecting to ${model}.`; | 					$i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, { provider: model }) | ||||||
|  | 				); | ||||||
|  | 				responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, { | ||||||
|  | 					provider: model | ||||||
|  | 				}); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			responseMessage.error = true; | 			responseMessage.error = true; | ||||||
| 			responseMessage.content = `Uh-oh! There was an issue connecting to ${model}.`; | 			responseMessage.content = $i18n.t(`Uh-oh! There was an issue connecting to {{provider}}.`, { | ||||||
|  | 				provider: model | ||||||
|  | 			}); | ||||||
| 			responseMessage.done = true; | 			responseMessage.done = true; | ||||||
| 			messages = messages; | 			messages = messages; | ||||||
| 		} | 		} | ||||||
|  | @ -746,7 +760,7 @@ | ||||||
| 					); | 					); | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			toast.error(`Model ${modelId} not found`); | 			toast.error($i18n.t(`Model {{modelId}} not found`, { modelId })); | ||||||
| 		} | 		} | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -123,7 +123,7 @@ | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 				} else { | 				} else { | ||||||
| 					toast.error(`File not found.`); | 					toast.error($i18n.t(`File not found.`)); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -38,7 +38,9 @@ | ||||||
| 				await goto('/prompts'); | 				await goto('/prompts'); | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			toast.error('Only alphanumeric characters and hyphens are allowed in the command string.'); | 			toast.error( | ||||||
|  | 				$i18n.t('Only alphanumeric characters and hyphens are allowed in the command string.') | ||||||
|  | 			); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		loading = false; | 		loading = false; | ||||||
|  |  | ||||||
|  | @ -36,7 +36,9 @@ | ||||||
| 				await goto('/prompts'); | 				await goto('/prompts'); | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			toast.error('Only alphanumeric characters and hyphens are allowed in the command string.'); | 			toast.error( | ||||||
|  | 				$i18n.t('Only alphanumeric characters and hyphens are allowed in the command string.') | ||||||
|  | 			); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		loading = false; | 		loading = false; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue