From 7680ac25179aed4d48815e178aa22ac8399c6381 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 19:57:06 +0200 Subject: [PATCH 01/35] Update youtube.py --- .../open_webui/retrieval/loaders/youtube.py | 107 +++++++++++------- 1 file changed, 63 insertions(+), 44 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index f59dd7df5..337436960 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -70,48 +70,67 @@ class YoutubeLoader: self.language = language def load(self) -> List[Document]: - """Load YouTube transcripts into `Document` objects.""" - try: - from youtube_transcript_api import ( - NoTranscriptFound, - TranscriptsDisabled, - YouTubeTranscriptApi, - ) - except ImportError: - raise ImportError( - 'Could not import "youtube_transcript_api" Python package. ' - "Please install it with `pip install youtube-transcript-api`." - ) - - if self.proxy_url: - youtube_proxies = { - "http": self.proxy_url, - "https": self.proxy_url, - } - # Don't log complete URL because it might contain secrets - log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") - else: - youtube_proxies = None - - try: - transcript_list = YouTubeTranscriptApi.list_transcripts( - self.video_id, proxies=youtube_proxies - ) - except Exception as e: - log.exception("Loading YouTube transcript failed") - return [] - - try: - transcript = transcript_list.find_transcript(self.language) - except NoTranscriptFound: - transcript = transcript_list.find_transcript(["en"]) - - transcript_pieces: List[Dict[str, Any]] = transcript.fetch() - - transcript = " ".join( - map( - lambda transcript_piece: transcript_piece.text.strip(" "), - transcript_pieces, - ) + """Load YouTube transcripts into `Document` objects.""" + try: + from youtube_transcript_api import ( + NoTranscriptFound, + TranscriptsDisabled, + YouTubeTranscriptApi, ) - return [Document(page_content=transcript, metadata=self._metadata)] + except ImportError: + raise ImportError( + 'Could not import "youtube_transcript_api" Python package. ' + "Please install it with `pip install youtube-transcript-api`." + ) + + if self.proxy_url: + youtube_proxies = { + "http": self.proxy_url, + "https": self.proxy_url, + } + # Don't log complete URL because it might contain secrets + log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") + else: + youtube_proxies = None + + try: + transcript_list = YouTubeTranscriptApi.list_transcripts( + self.video_id, proxies=youtube_proxies + ) + except Exception as e: + log.exception("Loading YouTube transcript failed") + return [] + + # Try each language in order of priority + last_exception = None + for lang in self.language: + try: + log.debug(f"Attempting to find transcript for language '{lang}'") + transcript = transcript_list.find_transcript([lang]) + log.info(f"Found transcript for language '{lang}'") + + transcript_pieces: List[Dict[str, Any]] = transcript.fetch() + transcript_text = " ".join( + map( + lambda transcript_piece: transcript_piece.text.strip(" "), + transcript_pieces, + ) + ) + return [Document(page_content=transcript_text, metadata=self._metadata)] + except NoTranscriptFound as e: + log.debug(f"No transcript found for language '{lang}'") + last_exception = e + continue + except Exception as e: + # If we hit any other type of exception, log it and re-raise + log.exception(f"Error finding transcript for language '{lang}'") + raise e + + # If all specified languages fail, raise the last exception + # This maintains compatibility with the error handling in the rest of the application + if last_exception: + log.warning(f"No transcript found for any of the specified languages: {', '.join(self.language)}") + raise last_exception + + # This should never happen (we'd have raised an exception above) + return [] From 0a845db8eca7554d6310b7fad4d7360e2db66b91 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 19:57:21 +0200 Subject: [PATCH 02/35] Update youtube.py --- .../open_webui/retrieval/loaders/youtube.py | 122 +++++++++--------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 337436960..c1c8669f1 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -70,67 +70,67 @@ class YoutubeLoader: self.language = language def load(self) -> List[Document]: - """Load YouTube transcripts into `Document` objects.""" - try: - from youtube_transcript_api import ( - NoTranscriptFound, - TranscriptsDisabled, - YouTubeTranscriptApi, - ) - except ImportError: - raise ImportError( - 'Could not import "youtube_transcript_api" Python package. ' - "Please install it with `pip install youtube-transcript-api`." - ) - - if self.proxy_url: - youtube_proxies = { - "http": self.proxy_url, - "https": self.proxy_url, - } - # Don't log complete URL because it might contain secrets - log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") - else: - youtube_proxies = None - - try: - transcript_list = YouTubeTranscriptApi.list_transcripts( - self.video_id, proxies=youtube_proxies - ) - except Exception as e: - log.exception("Loading YouTube transcript failed") - return [] - - # Try each language in order of priority - last_exception = None - for lang in self.language: + """Load YouTube transcripts into `Document` objects.""" try: - log.debug(f"Attempting to find transcript for language '{lang}'") - transcript = transcript_list.find_transcript([lang]) - log.info(f"Found transcript for language '{lang}'") - - transcript_pieces: List[Dict[str, Any]] = transcript.fetch() - transcript_text = " ".join( - map( - lambda transcript_piece: transcript_piece.text.strip(" "), - transcript_pieces, - ) + from youtube_transcript_api import ( + NoTranscriptFound, + TranscriptsDisabled, + YouTubeTranscriptApi, + ) + except ImportError: + raise ImportError( + 'Could not import "youtube_transcript_api" Python package. ' + "Please install it with `pip install youtube-transcript-api`." ) - return [Document(page_content=transcript_text, metadata=self._metadata)] - except NoTranscriptFound as e: - log.debug(f"No transcript found for language '{lang}'") - last_exception = e - continue - except Exception as e: - # If we hit any other type of exception, log it and re-raise - log.exception(f"Error finding transcript for language '{lang}'") - raise e - - # If all specified languages fail, raise the last exception - # This maintains compatibility with the error handling in the rest of the application - if last_exception: - log.warning(f"No transcript found for any of the specified languages: {', '.join(self.language)}") - raise last_exception - # This should never happen (we'd have raised an exception above) - return [] + if self.proxy_url: + youtube_proxies = { + "http": self.proxy_url, + "https": self.proxy_url, + } + # Don't log complete URL because it might contain secrets + log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") + else: + youtube_proxies = None + + try: + transcript_list = YouTubeTranscriptApi.list_transcripts( + self.video_id, proxies=youtube_proxies + ) + except Exception as e: + log.exception("Loading YouTube transcript failed") + return [] + + # Try each language in order of priority + last_exception = None + for lang in self.language: + try: + log.debug(f"Attempting to find transcript for language '{lang}'") + transcript = transcript_list.find_transcript([lang]) + log.info(f"Found transcript for language '{lang}'") + + transcript_pieces: List[Dict[str, Any]] = transcript.fetch() + transcript_text = " ".join( + map( + lambda transcript_piece: transcript_piece.text.strip(" "), + transcript_pieces, + ) + ) + return [Document(page_content=transcript_text, metadata=self._metadata)] + except NoTranscriptFound as e: + log.debug(f"No transcript found for language '{lang}'") + last_exception = e + continue + except Exception as e: + # If we hit any other type of exception, log it and re-raise + log.exception(f"Error finding transcript for language '{lang}'") + raise e + + # If all specified languages fail, raise the last exception + # This maintains compatibility with the error handling in the rest of the application + if last_exception: + log.warning(f"No transcript found for any of the specified languages: {', '.join(self.language)}") + raise last_exception + + # This should never happen (we'd have raised an exception above) + return [] From 0a3817ed860b2f1d1db190ec6a539b037d1f0701 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 20:00:10 +0200 Subject: [PATCH 03/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index c1c8669f1..48347aa09 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -88,8 +88,7 @@ class YoutubeLoader: "http": self.proxy_url, "https": self.proxy_url, } - # Don't log complete URL because it might contain secrets - log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") + log.debug(f"Using proxy URL: {self.proxy_url}...") else: youtube_proxies = None @@ -105,9 +104,8 @@ class YoutubeLoader: last_exception = None for lang in self.language: try: - log.debug(f"Attempting to find transcript for language '{lang}'") transcript = transcript_list.find_transcript([lang]) - log.info(f"Found transcript for language '{lang}'") + log.debug(f"Found transcript for language '{lang}'") transcript_pieces: List[Dict[str, Any]] = transcript.fetch() transcript_text = " ".join( @@ -127,10 +125,8 @@ class YoutubeLoader: raise e # If all specified languages fail, raise the last exception - # This maintains compatibility with the error handling in the rest of the application if last_exception: log.warning(f"No transcript found for any of the specified languages: {', '.join(self.language)}") raise last_exception - # This should never happen (we'd have raised an exception above) return [] From 1a30b3746ed05e9888b038e025075b6e1c17767a Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 20:03:00 +0200 Subject: [PATCH 04/35] Update youtube.py --- .../open_webui/retrieval/loaders/youtube.py | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 48347aa09..0bd286bca 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -88,7 +88,8 @@ class YoutubeLoader: "http": self.proxy_url, "https": self.proxy_url, } - log.debug(f"Using proxy URL: {self.proxy_url}...") + # Don't log complete URL because it might contain secrets + log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") else: youtube_proxies = None @@ -101,12 +102,10 @@ class YoutubeLoader: return [] # Try each language in order of priority - last_exception = None for lang in self.language: try: transcript = transcript_list.find_transcript([lang]) log.debug(f"Found transcript for language '{lang}'") - transcript_pieces: List[Dict[str, Any]] = transcript.fetch() transcript_text = " ".join( map( @@ -115,18 +114,37 @@ class YoutubeLoader: ) ) return [Document(page_content=transcript_text, metadata=self._metadata)] - except NoTranscriptFound as e: + except NoTranscriptFound: log.debug(f"No transcript found for language '{lang}'") - last_exception = e continue except Exception as e: # If we hit any other type of exception, log it and re-raise log.exception(f"Error finding transcript for language '{lang}'") raise e - # If all specified languages fail, raise the last exception - if last_exception: - log.warning(f"No transcript found for any of the specified languages: {', '.join(self.language)}") - raise last_exception + # If all specified languages fail, fall back to English (unless English was already tried) + if "en" not in self.language: + try: + log.debug("Falling back to English transcript") + transcript = transcript_list.find_transcript(["en"]) + transcript_pieces: List[Dict[str, Any]] = transcript.fetch() + transcript_text = " ".join( + map( + lambda transcript_piece: transcript_piece.text.strip(" "), + transcript_pieces, + ) + ) + return [Document(page_content=transcript_text, metadata=self._metadata)] + except NoTranscriptFound: + log.warning("No English transcript found as fallback") + except Exception as e: + log.exception("Error finding English transcript fallback") + raise e - return [] + # If we get here, all languages failed including the English fallback + languages_tried = ", ".join(self.language) + if "en" not in self.language: + languages_tried += ", en (fallback)" + + log.warning(f"No transcript found for any of the specified languages: {languages_tried}") + raise NoTranscriptFound(f"No transcript found for any supported language") From b0d74a59f14d8f9c8fbe6aa2676039523a45ef62 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 20:07:37 +0200 Subject: [PATCH 05/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 0bd286bca..958dcfd61 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -118,8 +118,7 @@ class YoutubeLoader: log.debug(f"No transcript found for language '{lang}'") continue except Exception as e: - # If we hit any other type of exception, log it and re-raise - log.exception(f"Error finding transcript for language '{lang}'") + log.warning(f"Error finding transcript for language '{lang}'") raise e # If all specified languages fail, fall back to English (unless English was already tried) @@ -141,7 +140,7 @@ class YoutubeLoader: log.exception("Error finding English transcript fallback") raise e - # If we get here, all languages failed including the English fallback + # All languages failed languages_tried = ", ".join(self.language) if "en" not in self.language: languages_tried += ", en (fallback)" From 9cf33813813f92dc97ce33c4b89e79dcdc3f3a13 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 20:07:52 +0200 Subject: [PATCH 06/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 958dcfd61..ea8983b31 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -88,8 +88,7 @@ class YoutubeLoader: "http": self.proxy_url, "https": self.proxy_url, } - # Don't log complete URL because it might contain secrets - log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") + log.debug(f"Using proxy URL: {self.proxy_url}...") else: youtube_proxies = None From 791dd24ace6054d1822c4ad76f272c3228337d8c Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 20:08:25 +0200 Subject: [PATCH 07/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index ea8983b31..958dcfd61 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -88,7 +88,8 @@ class YoutubeLoader: "http": self.proxy_url, "https": self.proxy_url, } - log.debug(f"Using proxy URL: {self.proxy_url}...") + # Don't log complete URL because it might contain secrets + log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") else: youtube_proxies = None From 67a612fe2404edd7819717005981070339043932 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Mon, 5 May 2025 20:40:48 +0200 Subject: [PATCH 08/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 958dcfd61..1f78131e2 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -118,7 +118,7 @@ class YoutubeLoader: log.debug(f"No transcript found for language '{lang}'") continue except Exception as e: - log.warning(f"Error finding transcript for language '{lang}'") + log.info(f"Error finding transcript for language '{lang}'") raise e # If all specified languages fail, fall back to English (unless English was already tried) From 5aabe21cbeccf86df7533ebd77495133636da4ad Mon Sep 17 00:00:00 2001 From: Bryan Berns Date: Mon, 5 May 2025 22:08:48 -0400 Subject: [PATCH 09/35] Add Custom Azure TTS URL --- backend/open_webui/config.py | 10 ++- backend/open_webui/main.py | 2 + backend/open_webui/routers/audio.py | 32 +++++---- .../components/admin/Settings/Audio.svelte | 67 ++++++++++++++----- 4 files changed, 77 insertions(+), 34 deletions(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index a6cffeecd..e6851cfe7 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -2689,7 +2689,7 @@ AUDIO_STT_AZURE_BASE_URL = PersistentConfig( AUDIO_STT_AZURE_MAX_SPEAKERS = PersistentConfig( "AUDIO_STT_AZURE_MAX_SPEAKERS", "audio.stt.azure.max_speakers", - os.getenv("AUDIO_STT_AZURE_MAX_SPEAKERS", "3"), + os.getenv("AUDIO_STT_AZURE_MAX_SPEAKERS", ""), ) AUDIO_TTS_OPENAI_API_BASE_URL = PersistentConfig( @@ -2737,7 +2737,13 @@ AUDIO_TTS_SPLIT_ON = PersistentConfig( AUDIO_TTS_AZURE_SPEECH_REGION = PersistentConfig( "AUDIO_TTS_AZURE_SPEECH_REGION", "audio.tts.azure.speech_region", - os.getenv("AUDIO_TTS_AZURE_SPEECH_REGION", "eastus"), + os.getenv("AUDIO_TTS_AZURE_SPEECH_REGION", ""), +) + +AUDIO_TTS_AZURE_SPEECH_BASE_URL = PersistentConfig( + "AUDIO_TTS_AZURE_SPEECH_BASE_URL", + "audio.tts.azure.speech_base_url", + os.getenv("AUDIO_TTS_AZURE_SPEECH_BASE_URL", ""), ) AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT = PersistentConfig( diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index db124bedd..aa066a8c1 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -166,6 +166,7 @@ from open_webui.config import ( AUDIO_TTS_SPLIT_ON, AUDIO_TTS_VOICE, AUDIO_TTS_AZURE_SPEECH_REGION, + AUDIO_TTS_AZURE_SPEECH_BASE_URL, AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT, PLAYWRIGHT_WS_URL, PLAYWRIGHT_TIMEOUT, @@ -852,6 +853,7 @@ app.state.config.TTS_SPLIT_ON = AUDIO_TTS_SPLIT_ON app.state.config.TTS_AZURE_SPEECH_REGION = AUDIO_TTS_AZURE_SPEECH_REGION +app.state.config.TTS_AZURE_SPEECH_BASE_URL = AUDIO_TTS_AZURE_SPEECH_BASE_URL app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT = AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT diff --git a/backend/open_webui/routers/audio.py b/backend/open_webui/routers/audio.py index fba41af4c..981b41d88 100644 --- a/backend/open_webui/routers/audio.py +++ b/backend/open_webui/routers/audio.py @@ -138,6 +138,7 @@ class TTSConfigForm(BaseModel): VOICE: str SPLIT_ON: str AZURE_SPEECH_REGION: str + AZURE_SPEECH_BASE_URL: str AZURE_SPEECH_OUTPUT_FORMAT: str @@ -172,6 +173,7 @@ async def get_audio_config(request: Request, user=Depends(get_admin_user)): "VOICE": request.app.state.config.TTS_VOICE, "SPLIT_ON": request.app.state.config.TTS_SPLIT_ON, "AZURE_SPEECH_REGION": request.app.state.config.TTS_AZURE_SPEECH_REGION, + "AZURE_SPEECH_BASE_URL": request.app.state.config.TTS_AZURE_SPEECH_BASE_URL, "AZURE_SPEECH_OUTPUT_FORMAT": request.app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT, }, "stt": { @@ -202,6 +204,9 @@ async def update_audio_config( request.app.state.config.TTS_VOICE = form_data.tts.VOICE request.app.state.config.TTS_SPLIT_ON = form_data.tts.SPLIT_ON request.app.state.config.TTS_AZURE_SPEECH_REGION = form_data.tts.AZURE_SPEECH_REGION + request.app.state.config.TTS_AZURE_SPEECH_BASE_URL = ( + form_data.tts.AZURE_SPEECH_BASE_URL + ) request.app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT = ( form_data.tts.AZURE_SPEECH_OUTPUT_FORMAT ) @@ -235,6 +240,7 @@ async def update_audio_config( "VOICE": request.app.state.config.TTS_VOICE, "SPLIT_ON": request.app.state.config.TTS_SPLIT_ON, "AZURE_SPEECH_REGION": request.app.state.config.TTS_AZURE_SPEECH_REGION, + "AZURE_SPEECH_BASE_URL": request.app.state.config.TTS_AZURE_SPEECH_BASE_URL, "AZURE_SPEECH_OUTPUT_FORMAT": request.app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT, }, "stt": { @@ -406,7 +412,8 @@ async def speech(request: Request, user=Depends(get_verified_user)): log.exception(e) raise HTTPException(status_code=400, detail="Invalid JSON payload") - region = request.app.state.config.TTS_AZURE_SPEECH_REGION + region = request.app.state.config.TTS_AZURE_SPEECH_REGION or "eastus" + base_url = request.app.state.config.TTS_AZURE_SPEECH_BASE_URL language = request.app.state.config.TTS_VOICE locale = "-".join(request.app.state.config.TTS_VOICE.split("-")[:1]) output_format = request.app.state.config.TTS_AZURE_SPEECH_OUTPUT_FORMAT @@ -420,7 +427,8 @@ async def speech(request: Request, user=Depends(get_verified_user)): timeout=timeout, trust_env=True ) as session: async with session.post( - f"https://{region}.tts.speech.microsoft.com/cognitiveservices/v1", + (base_url or f"https://{region}.tts.speech.microsoft.com") + + "/cognitiveservices/v1", headers={ "Ocp-Apim-Subscription-Key": request.app.state.config.TTS_API_KEY, "Content-Type": "application/ssml+xml", @@ -651,10 +659,10 @@ def transcribe(request: Request, file_path): ) api_key = request.app.state.config.AUDIO_STT_AZURE_API_KEY - region = request.app.state.config.AUDIO_STT_AZURE_REGION + region = request.app.state.config.AUDIO_STT_AZURE_REGION or "eastus" locales = request.app.state.config.AUDIO_STT_AZURE_LOCALES base_url = request.app.state.config.AUDIO_STT_AZURE_BASE_URL - max_speakers = request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS + max_speakers = request.app.state.config.AUDIO_STT_AZURE_MAX_SPEAKERS or 3 # IF NO LOCALES, USE DEFAULTS if len(locales) < 2: @@ -681,12 +689,6 @@ def transcribe(request: Request, file_path): detail="Azure API key is required for Azure STT", ) - if not base_url and not region: - raise HTTPException( - status_code=400, - detail="Azure region or base url is required for Azure STT", - ) - r = None try: # Prepare the request @@ -702,9 +704,8 @@ def transcribe(request: Request, file_path): } url = ( - base_url - or f"https://{region}.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-11-15" - ) + base_url or f"https://{region}.api.cognitive.microsoft.com" + ) + "/speechtotext/transcriptions:transcribe?api-version=2024-11-15" # Use context manager to ensure file is properly closed with open(file_path, "rb") as audio_file: @@ -933,7 +934,10 @@ def get_available_voices(request) -> dict: elif request.app.state.config.TTS_ENGINE == "azure": try: region = request.app.state.config.TTS_AZURE_SPEECH_REGION - url = f"https://{region}.tts.speech.microsoft.com/cognitiveservices/voices/list" + base_url = request.app.state.config.TTS_AZURE_SPEECH_BASE_URL + url = ( + base_url or f"https://{region}.tts.speech.microsoft.com" + ) + "/cognitiveservices/voices/list" headers = { "Ocp-Apim-Subscription-Key": request.app.state.config.TTS_API_KEY } diff --git a/src/lib/components/admin/Settings/Audio.svelte b/src/lib/components/admin/Settings/Audio.svelte index 070ed9b69..60cb00700 100644 --- a/src/lib/components/admin/Settings/Audio.svelte +++ b/src/lib/components/admin/Settings/Audio.svelte @@ -32,6 +32,7 @@ let TTS_VOICE = ''; let TTS_SPLIT_ON: TTS_RESPONSE_SPLIT = TTS_RESPONSE_SPLIT.PUNCTUATION; let TTS_AZURE_SPEECH_REGION = ''; + let TTS_AZURE_SPEECH_BASE_URL = ''; let TTS_AZURE_SPEECH_OUTPUT_FORMAT = ''; let STT_OPENAI_API_BASE_URL = ''; @@ -105,6 +106,7 @@ VOICE: TTS_VOICE, SPLIT_ON: TTS_SPLIT_ON, AZURE_SPEECH_REGION: TTS_AZURE_SPEECH_REGION, + AZURE_SPEECH_BASE_URL: TTS_AZURE_SPEECH_BASE_URL, AZURE_SPEECH_OUTPUT_FORMAT: TTS_AZURE_SPEECH_OUTPUT_FORMAT }, stt: { @@ -149,8 +151,9 @@ TTS_SPLIT_ON = res.tts.SPLIT_ON || TTS_RESPONSE_SPLIT.PUNCTUATION; - TTS_AZURE_SPEECH_OUTPUT_FORMAT = res.tts.AZURE_SPEECH_OUTPUT_FORMAT; TTS_AZURE_SPEECH_REGION = res.tts.AZURE_SPEECH_REGION; + TTS_AZURE_SPEECH_BASE_URL = res.tts.AZURE_SPEECH_BASE_URL; + TTS_AZURE_SPEECH_OUTPUT_FORMAT = res.tts.AZURE_SPEECH_OUTPUT_FORMAT; STT_OPENAI_API_BASE_URL = res.stt.OPENAI_API_BASE_URL; STT_OPENAI_API_KEY = res.stt.OPENAI_API_KEY; @@ -272,16 +275,23 @@ bind:value={STT_AZURE_API_KEY} required /> -
+
+
{$i18n.t('Azure Region')}
+
+
+ +
+
+
+
{$i18n.t('Language Locales')}
@@ -293,16 +303,16 @@ />
- +
-
{$i18n.t('Base URL')}
+
{$i18n.t('Endpoint URL')}
@@ -468,18 +478,39 @@ {:else if TTS_ENGINE === 'azure'}
- - +
+ +
+ +
+
{$i18n.t('Azure Region')}
+
+
+ +
+
+
+ +
+
{$i18n.t('Endpoint URL')}
+
+
+ +
+
{/if} From 853adad8948cd8c0e333354008f58956758060a7 Mon Sep 17 00:00:00 2001 From: Bryan Berns Date: Mon, 5 May 2025 22:12:32 -0400 Subject: [PATCH 10/35] Add Custom Azure TTS URL - Fix Spaces --- src/lib/components/admin/Settings/Audio.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/components/admin/Settings/Audio.svelte b/src/lib/components/admin/Settings/Audio.svelte index 60cb00700..d6b3f2b01 100644 --- a/src/lib/components/admin/Settings/Audio.svelte +++ b/src/lib/components/admin/Settings/Audio.svelte @@ -290,7 +290,7 @@ />
- +
{$i18n.t('Language Locales')}
@@ -303,7 +303,7 @@ />
- +
{$i18n.t('Endpoint URL')}
@@ -498,7 +498,7 @@ />
- +
{$i18n.t('Endpoint URL')}
From 5c055b73a3d20021b539b8b08ded1cdc566e7d4c Mon Sep 17 00:00:00 2001 From: Bryan Berns Date: Mon, 5 May 2025 22:17:18 -0400 Subject: [PATCH 11/35] Add Custom Azure TTS URL - Formatting --- src/lib/components/admin/Settings/Audio.svelte | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/lib/components/admin/Settings/Audio.svelte b/src/lib/components/admin/Settings/Audio.svelte index d6b3f2b01..960f3497a 100644 --- a/src/lib/components/admin/Settings/Audio.svelte +++ b/src/lib/components/admin/Settings/Audio.svelte @@ -478,11 +478,7 @@ {:else if TTS_ENGINE === 'azure'}
- +

From 5e1cb76b93ea3b632ca0ddf9cbe308fd8ecd1d4d Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 May 2025 16:16:58 +0200 Subject: [PATCH 12/35] Update youtube.py --- .../open_webui/retrieval/loaders/youtube.py | 36 ++++++------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 1f78131e2..67b3715fd 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -101,8 +101,16 @@ class YoutubeLoader: log.exception("Loading YouTube transcript failed") return [] + # Make a copy of the language list to avoid modifying the original + languages_to_try = list(self.language) + + # Add English as fallback, if not already in the list + if "en" not in languages_to_try: + log.debug("Adding English as fallback language") + languages_to_try.append("en") + # Try each language in order of priority - for lang in self.language: + for lang in languages_to_try: try: transcript = transcript_list.find_transcript([lang]) log.debug(f"Found transcript for language '{lang}'") @@ -120,30 +128,8 @@ class YoutubeLoader: except Exception as e: log.info(f"Error finding transcript for language '{lang}'") raise e - - # If all specified languages fail, fall back to English (unless English was already tried) - if "en" not in self.language: - try: - log.debug("Falling back to English transcript") - transcript = transcript_list.find_transcript(["en"]) - transcript_pieces: List[Dict[str, Any]] = transcript.fetch() - transcript_text = " ".join( - map( - lambda transcript_piece: transcript_piece.text.strip(" "), - transcript_pieces, - ) - ) - return [Document(page_content=transcript_text, metadata=self._metadata)] - except NoTranscriptFound: - log.warning("No English transcript found as fallback") - except Exception as e: - log.exception("Error finding English transcript fallback") - raise e - - # All languages failed - languages_tried = ", ".join(self.language) - if "en" not in self.language: - languages_tried += ", en (fallback)" + # If we get here, all languages failed including the English fallback + languages_tried = ", ".join(languages_to_try) log.warning(f"No transcript found for any of the specified languages: {languages_tried}") raise NoTranscriptFound(f"No transcript found for any supported language") From a129e0954ec7be642d57df816c98bd8a05c99d87 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 May 2025 16:22:40 +0200 Subject: [PATCH 13/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 67b3715fd..88938d0f2 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -64,6 +64,7 @@ class YoutubeLoader: self._metadata = {"source": video_id} self.language = language self.proxy_url = proxy_url + # If language is string, convert to list if isinstance(language, str): self.language = [language] else: @@ -100,7 +101,7 @@ class YoutubeLoader: except Exception as e: log.exception("Loading YouTube transcript failed") return [] - + # Make a copy of the language list to avoid modifying the original languages_to_try = list(self.language) @@ -129,7 +130,7 @@ class YoutubeLoader: log.info(f"Error finding transcript for language '{lang}'") raise e - # If we get here, all languages failed including the English fallback + # If we get here, all languages failed languages_tried = ", ".join(languages_to_try) log.warning(f"No transcript found for any of the specified languages: {languages_tried}") - raise NoTranscriptFound(f"No transcript found for any supported language") + raise NoTranscriptFound(f"No transcript found for any supported language. Add additional supported languages and verify whether the video has any transcripts.") From c69278c13c366777806a6272d83bd0851992c340 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 May 2025 16:24:27 +0200 Subject: [PATCH 14/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 88938d0f2..17b1fad60 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -64,7 +64,7 @@ class YoutubeLoader: self._metadata = {"source": video_id} self.language = language self.proxy_url = proxy_url - # If language is string, convert to list + # Ensure language is a list if isinstance(language, str): self.language = [language] else: From f65dc715f91ce94750934e457ac14dbebab084e9 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 May 2025 16:30:18 +0200 Subject: [PATCH 15/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 17b1fad60..7fa0247da 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -83,7 +83,7 @@ class YoutubeLoader: 'Could not import "youtube_transcript_api" Python package. ' "Please install it with `pip install youtube-transcript-api`." ) - + if self.proxy_url: youtube_proxies = { "http": self.proxy_url, @@ -93,7 +93,7 @@ class YoutubeLoader: log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") else: youtube_proxies = None - + try: transcript_list = YouTubeTranscriptApi.list_transcripts( self.video_id, proxies=youtube_proxies @@ -101,11 +101,11 @@ class YoutubeLoader: except Exception as e: log.exception("Loading YouTube transcript failed") return [] - + # Make a copy of the language list to avoid modifying the original languages_to_try = list(self.language) - # Add English as fallback, if not already in the list + # Add English as fallback if not already in the list if "en" not in languages_to_try: log.debug("Adding English as fallback language") languages_to_try.append("en") @@ -129,8 +129,8 @@ class YoutubeLoader: except Exception as e: log.info(f"Error finding transcript for language '{lang}'") raise e - + # If we get here, all languages failed languages_tried = ", ".join(languages_to_try) - log.warning(f"No transcript found for any of the specified languages: {languages_tried}") - raise NoTranscriptFound(f"No transcript found for any supported language. Add additional supported languages and verify whether the video has any transcripts.") + log.warning(f"No transcript found for any of the specified languages: {languages_tried}. Verify if the video has transcripts, add more languages if needed.") + raise NoTranscriptFound(f"No transcript found for any supported language. Verify if the video has transcripts, add more languages if needed.") From d7927506f12be656bcc1c452281c8f8733ea7baa Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 May 2025 17:06:21 +0200 Subject: [PATCH 16/35] Update youtube.py --- .../open_webui/retrieval/loaders/youtube.py | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 7fa0247da..1fa2b635c 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -62,13 +62,17 @@ class YoutubeLoader: _video_id = _parse_video_id(video_id) self.video_id = _video_id if _video_id is not None else video_id self._metadata = {"source": video_id} - self.language = language self.proxy_url = proxy_url + # Ensure language is a list if isinstance(language, str): self.language = [language] else: - self.language = language + self.language = list(language) # Make a copy to avoid modifying the original + + # Add English as fallback if not already in the list + if "en" not in self.language: + self.language.append("en") def load(self) -> List[Document]: """Load YouTube transcripts into `Document` objects.""" @@ -83,7 +87,7 @@ class YoutubeLoader: 'Could not import "youtube_transcript_api" Python package. ' "Please install it with `pip install youtube-transcript-api`." ) - + if self.proxy_url: youtube_proxies = { "http": self.proxy_url, @@ -102,16 +106,8 @@ class YoutubeLoader: log.exception("Loading YouTube transcript failed") return [] - # Make a copy of the language list to avoid modifying the original - languages_to_try = list(self.language) - - # Add English as fallback if not already in the list - if "en" not in languages_to_try: - log.debug("Adding English as fallback language") - languages_to_try.append("en") - # Try each language in order of priority - for lang in languages_to_try: + for lang in self.language: try: transcript = transcript_list.find_transcript([lang]) log.debug(f"Found transcript for language '{lang}'") @@ -129,8 +125,8 @@ class YoutubeLoader: except Exception as e: log.info(f"Error finding transcript for language '{lang}'") raise e - + # If we get here, all languages failed - languages_tried = ", ".join(languages_to_try) - log.warning(f"No transcript found for any of the specified languages: {languages_tried}. Verify if the video has transcripts, add more languages if needed.") - raise NoTranscriptFound(f"No transcript found for any supported language. Verify if the video has transcripts, add more languages if needed.") + languages_tried = ", ".join(self.language) + log.warning(f"No transcript found for any of the specified languages: {languages_tried}") + raise NoTranscriptFound(f"No transcript found for any supported language") From 87dcbd198c3aed00e22c11dcc0e591f72126a057 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 May 2025 17:11:03 +0200 Subject: [PATCH 17/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 1fa2b635c..70153f8cf 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -68,7 +68,7 @@ class YoutubeLoader: if isinstance(language, str): self.language = [language] else: - self.language = list(language) # Make a copy to avoid modifying the original + self.language = list(language) # Add English as fallback if not already in the list if "en" not in self.language: From 1dcbec71ec054f79f570cd95da5a4031568a63fe Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 6 May 2025 17:14:00 +0200 Subject: [PATCH 18/35] Update youtube.py --- backend/open_webui/retrieval/loaders/youtube.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 70153f8cf..763d73094 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -128,5 +128,5 @@ class YoutubeLoader: # If we get here, all languages failed languages_tried = ", ".join(self.language) - log.warning(f"No transcript found for any of the specified languages: {languages_tried}") - raise NoTranscriptFound(f"No transcript found for any supported language") + log.warning(f"No transcript found for any of the specified languages: {languages_tried}. Verify if the video has transcripts, add more languages if needed.") + raise NoTranscriptFound(f"No transcript found for any supported language. Verify if the video has transcripts, add more languages if needed.") From 6c957f2407888786e93ae0fa80fba569a12f9588 Mon Sep 17 00:00:00 2001 From: toriset Date: Tue, 6 May 2025 18:17:52 +0300 Subject: [PATCH 19/35] Fixed mis-use of set_image_model in automatic1111 Image generation A custom model parameter would always throw an error.. :/ --- backend/open_webui/routers/images.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index 5d2f9809a..b8bb110f5 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -623,7 +623,7 @@ async def image_generations( or request.app.state.config.IMAGE_GENERATION_ENGINE == "" ): if form_data.model: - set_image_model(form_data.model) + set_image_model(request, form_data.model) data = { "prompt": form_data.prompt, From 53f2ab1676435f2577620d404704e085ee5a4e0b Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 6 May 2025 20:15:09 +0400 Subject: [PATCH 20/35] chore: wording --- CODE_OF_CONDUCT.md | 6 +++--- backend/open_webui/main.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index eb54b4894..59285aa42 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -2,13 +2,13 @@ ## Our Pledge -As members, contributors, and leaders of this community, we pledge to make participation in our open-source project a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. +As members, contributors, and leaders of this community, we pledge to make participation in our project a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socioeconomic status, nationality, personal appearance, race, religion, or sexual identity and orientation. We are committed to creating and maintaining an open, respectful, and professional environment where positive contributions and meaningful discussions can flourish. By participating in this project, you agree to uphold these values and align your behavior to the standards outlined in this Code of Conduct. ## Why These Standards Are Important -Open-source projects rely on a community of volunteers dedicating their time, expertise, and effort toward a shared goal. These projects are inherently collaborative but also fragile, as the success of the project depends on the goodwill, energy, and productivity of those involved. +Projects rely on a community of volunteers dedicating their time, expertise, and effort toward a shared goal. These projects are inherently collaborative but also fragile, as the success of the project depends on the goodwill, energy, and productivity of those involved. Maintaining a positive and respectful environment is essential to safeguarding the integrity of this project and protecting contributors' efforts. Behavior that disrupts this atmosphere—whether through hostility, entitlement, or unprofessional conduct—can severely harm the morale and productivity of the community. **Strict enforcement of these standards ensures a safe and supportive space for meaningful collaboration.** @@ -79,7 +79,7 @@ This approach ensures that disruptive behaviors are addressed swiftly and decisi ## Why Zero Tolerance Is Necessary -Open-source projects thrive on collaboration, goodwill, and mutual respect. Toxic behaviors—such as entitlement, hostility, or persistent negativity—threaten not just individual contributors but the health of the project as a whole. Allowing such behaviors to persist robs contributors of their time, energy, and enthusiasm for the work they do. +Projects thrive on collaboration, goodwill, and mutual respect. Toxic behaviors—such as entitlement, hostility, or persistent negativity—threaten not just individual contributors but the health of the project as a whole. Allowing such behaviors to persist robs contributors of their time, energy, and enthusiasm for the work they do. By enforcing a zero-tolerance policy, we ensure that the community remains a safe, welcoming space for all participants. These measures are not about harshness—they are about protecting contributors and fostering a productive environment where innovation can thrive. diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index db124bedd..766161b89 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -437,7 +437,7 @@ print( ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝ -v{VERSION} - building the best open-source AI user interface. +v{VERSION} - building the best AI user interface. {f"Commit: {WEBUI_BUILD_HASH}" if WEBUI_BUILD_HASH != "dev-build" else ""} https://github.com/open-webui/open-webui """ From 62e57a4cf551f79ce1ed7832c1e1bc61da49d992 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 00:54:53 +0400 Subject: [PATCH 21/35] refac: auth endpoint --- backend/open_webui/routers/auths.py | 41 ++++++++++++++++------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/backend/open_webui/routers/auths.py b/backend/open_webui/routers/auths.py index 5798d045b..acc456d20 100644 --- a/backend/open_webui/routers/auths.py +++ b/backend/open_webui/routers/auths.py @@ -82,28 +82,31 @@ async def get_session_user( token = auth_token.credentials data = decode_token(token) - expires_at = data.get("exp") + expires_at = None - if (expires_at is not None) and int(time.time()) > expires_at: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail=ERROR_MESSAGES.INVALID_TOKEN, + if data: + expires_at = data.get("exp") + + if (expires_at is not None) and int(time.time()) > expires_at: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.INVALID_TOKEN, + ) + + # Set the cookie token + response.set_cookie( + key="token", + value=token, + expires=( + datetime.datetime.fromtimestamp(expires_at, datetime.timezone.utc) + if expires_at + else None + ), + httponly=True, # Ensures the cookie is not accessible via JavaScript + samesite=WEBUI_AUTH_COOKIE_SAME_SITE, + secure=WEBUI_AUTH_COOKIE_SECURE, ) - # Set the cookie token - response.set_cookie( - key="token", - value=token, - expires=( - datetime.datetime.fromtimestamp(expires_at, datetime.timezone.utc) - if expires_at - else None - ), - httponly=True, # Ensures the cookie is not accessible via JavaScript - samesite=WEBUI_AUTH_COOKIE_SAME_SITE, - secure=WEBUI_AUTH_COOKIE_SECURE, - ) - user_permissions = get_permissions( user.id, request.app.state.config.USER_PERMISSIONS ) From ace3303ff56dc78baae3b2b7d12831e3d529ebf6 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 01:11:28 +0400 Subject: [PATCH 22/35] enh: `TOOL_SERVER_CONNECTIONS` env var support --- backend/open_webui/config.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index e6851cfe7..5c617f190 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -921,11 +921,19 @@ OPENAI_API_BASE_URL = "https://api.openai.com/v1" # TOOL_SERVERS #################################### +try: + tool_server_connections = json.loads( + os.environ.get("TOOL_SERVER_CONNECTIONS", "[]") + ) +except Exception as e: + log.exception(f"Error loading TOOL_SERVER_CONNECTIONS: {e}") + tool_server_connections = [] + TOOL_SERVER_CONNECTIONS = PersistentConfig( "TOOL_SERVER_CONNECTIONS", "tool_server.connections", - [], + tool_server_connections, ) #################################### @@ -1002,6 +1010,7 @@ if default_prompt_suggestions == []: "content": "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?", }, ] + DEFAULT_PROMPT_SUGGESTIONS = PersistentConfig( "DEFAULT_PROMPT_SUGGESTIONS", "ui.prompt_suggestions", From 45e9d052404ba31113fadcf98ac8f44bdd2fc2fe Mon Sep 17 00:00:00 2001 From: Tiancong Li Date: Wed, 7 May 2025 05:16:44 +0800 Subject: [PATCH 23/35] i18n: update zh-TW --- src/lib/i18n/locales/zh-TW/translation.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index a8b7ecf2c..12d3dbf5c 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -105,7 +105,7 @@ "Are you sure you want to delete this channel?": "您確定要刪除此頻道嗎?", "Are you sure you want to delete this message?": "您確定要刪除此訊息嗎?", "Are you sure you want to unarchive all archived chats?": "您確定要解除封存所有封存的對話記錄嗎?", - "Are you sure you want to update this user's role to **{{ROLE}}**?": "", + "Are you sure you want to update this user's role to **{{ROLE}}**?": "您確定要將此使用者的角色更新為「{{ROLE}}」嗎?", "Are you sure?": "您確定嗎?", "Arena Models": "競技場模型", "Artifacts": "成品", @@ -405,7 +405,7 @@ "Enable New Sign Ups": "允許新使用者註冊", "Enabled": "已啟用", "Enforce Temporary Chat": "強制使用臨時對話", - "Enhance": "", + "Enhance": "增強", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "請確認您的 CSV 檔案包含以下 4 個欄位,並按照此順序排列:姓名、電子郵件、密碼、角色。", "Enter {{role}} message here": "在此輸入 {{role}} 訊息", "Enter a detail about yourself for your LLMs to recall": "輸入有關您的詳細資訊,讓您的大型語言模型可以回想起來", @@ -505,7 +505,7 @@ "ERROR": "錯誤", "Error accessing Google Drive: {{error}}": "存取 Google Drive 時發生錯誤:{{error}}", "Error accessing media devices.": "存取媒體裝置時發生錯誤。", - "Error starting recording.": "", + "Error starting recording.": "啟動錄製時發生錯誤。", "Error uploading file: {{error}}": "上傳檔案時發生錯誤:{{error}}", "Evaluations": "評估", "Exa API Key": "Exa API 金鑰", @@ -669,7 +669,7 @@ "Instant Auto-Send After Voice Transcription": "語音轉錄後立即自動傳送", "Integration": "整合", "Interface": "介面", - "Invalid file content": "", + "Invalid file content": "檔案內容無效", "Invalid file format.": "無效檔案格式。", "Invalid JSON schema": "無效的 JSON schema", "Invalid Tag": "無效標籤", @@ -792,7 +792,7 @@ "Mojeek Search API Key": "Mojeek 搜尋 API 金鑰", "more": "更多", "More": "更多", - "My Notes": "", + "My Notes": "我的筆記", "Name": "名稱", "Name your knowledge base": "命名您的知識庫", "Native": "原生", @@ -827,7 +827,7 @@ "Not helpful": "沒有幫助", "Note deleted successfully": "筆記已成功刪除", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:如果您設定了最低分數,則搜尋只會回傳分數大於或等於最低分數的文件。", - "Notes": "注意", + "Notes": "筆記", "Notification Sound": "通知聲音", "Notification Webhook": "通知 Webhook", "Notifications": "通知", @@ -848,7 +848,7 @@ "Only alphanumeric characters and hyphens are allowed": "只允許使用英文字母、數字和連字號", "Only alphanumeric characters and hyphens are allowed in the command string.": "命令字串中只允許使用英文字母、數字和連字號。", "Only collections can be edited, create a new knowledge base to edit/add documents.": "只能編輯集合,請建立新的知識以編輯或新增文件。", - "Only markdown files are allowed": "", + "Only markdown files are allowed": "僅允許 Markdown 檔案", "Only select users and groups with permission can access": "只有具有權限的選定使用者和群組可以存取", "Oops! Looks like the URL is invalid. Please double-check and try again.": "哎呀!這個 URL 似乎無效。請仔細檢查並再試一次。", "Oops! There are files still uploading. Please wait for the upload to complete.": "哎呀!還有檔案正在上傳。請等候上傳完畢。", From 369f46169114d1dbe7fa24d8c51b081041bd3bc9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 01:48:54 +0400 Subject: [PATCH 24/35] refac --- src/lib/components/chat/Chat.svelte | 38 ++++++++++++--------- src/lib/components/chat/MessageInput.svelte | 3 +- src/lib/components/chat/Placeholder.svelte | 8 +++++ src/lib/components/chat/Suggestions.svelte | 6 ++-- 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 9f8f1d326..094cfc99f 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -142,7 +142,6 @@ $: if (chatIdProp) { (async () => { loading = true; - console.log(chatIdProp); prompt = ''; files = []; @@ -150,22 +149,25 @@ webSearchEnabled = false; imageGenerationEnabled = false; + if (localStorage.getItem(`chat-input${chatIdProp ? `-${chatIdProp}` : ''}`)) { + try { + const input = JSON.parse( + localStorage.getItem(`chat-input${chatIdProp ? `-${chatIdProp}` : ''}`) + ); + + prompt = input.prompt; + files = input.files; + selectedToolIds = input.selectedToolIds; + webSearchEnabled = input.webSearchEnabled; + imageGenerationEnabled = input.imageGenerationEnabled; + + console.log('chat-input', input); + } catch (e) {} + } + if (chatIdProp && (await loadChat())) { await tick(); loading = false; - - if (localStorage.getItem(`chat-input-${chatIdProp}`)) { - try { - const input = JSON.parse(localStorage.getItem(`chat-input-${chatIdProp}`)); - - prompt = input.prompt; - files = input.files; - selectedToolIds = input.selectedToolIds; - webSearchEnabled = input.webSearchEnabled; - imageGenerationEnabled = input.imageGenerationEnabled; - } catch (e) {} - } - window.setTimeout(() => scrollToBottom(), 0); const chatInput = document.getElementById('chat-input'); chatInput?.focus(); @@ -416,9 +418,12 @@ } } - if (localStorage.getItem(`chat-input-${chatIdProp}`)) { + if (localStorage.getItem(`chat-input${chatIdProp ? `-${chatIdProp}` : ''}`)) { try { - const input = JSON.parse(localStorage.getItem(`chat-input-${chatIdProp}`)); + const input = JSON.parse( + localStorage.getItem(`chat-input${chatIdProp ? `-${chatIdProp}` : ''}`) + ); + console.log('chat-input', input); prompt = input.prompt; files = input.files; selectedToolIds = input.selectedToolIds; @@ -2040,6 +2045,7 @@ {stopResponse} {createMessagePair} onChange={(input) => { + console.log(input); if (input.prompt !== null) { localStorage.setItem(`chat-input-${$chatId}`, JSON.stringify(input)); } else { diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index bcf28f61c..babb5e565 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -89,7 +89,8 @@ files, selectedToolIds, imageGenerationEnabled, - webSearchEnabled + webSearchEnabled, + codeInterpreterEnabled }); let showTools = false; diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index 545d43c44..ad7bd5009 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -201,6 +201,14 @@ {stopResponse} {createMessagePair} placeholder={$i18n.t('How can I help you today?')} + onChange={(input) => { + console.log('input', input); + if (input.prompt !== null) { + localStorage.setItem(`chat-input`, JSON.stringify(input)); + } else { + localStorage.removeItem(`chat-input`); + } + }} on:upload={(e) => { dispatch('upload', e.detail); }} diff --git a/src/lib/components/chat/Suggestions.svelte b/src/lib/components/chat/Suggestions.svelte index 746e13e51..5cf7567da 100644 --- a/src/lib/components/chat/Suggestions.svelte +++ b/src/lib/components/chat/Suggestions.svelte @@ -2,7 +2,7 @@ import Fuse from 'fuse.js'; import Bolt from '$lib/components/icons/Bolt.svelte'; import { onMount, getContext, createEventDispatcher } from 'svelte'; - import { WEBUI_NAME } from '$lib/stores'; + import { settings, WEBUI_NAME } from '$lib/stores'; import { WEBUI_VERSION } from '$lib/constants'; const i18n = getContext('i18n'); @@ -72,7 +72,9 @@
{$WEBUI_NAME} ‧ v{WEBUI_VERSION}
From 96618967bd96d9548951a807c5d360fc1707abff Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 02:00:10 +0400 Subject: [PATCH 25/35] refac --- src/lib/components/chat/Chat.svelte | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 094cfc99f..d578f3d63 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -91,7 +91,7 @@ export let chatIdProp = ''; - let loading = false; + let loading = true; const eventTarget = new EventTarget(); let controlPane; @@ -160,8 +160,7 @@ selectedToolIds = input.selectedToolIds; webSearchEnabled = input.webSearchEnabled; imageGenerationEnabled = input.imageGenerationEnabled; - - console.log('chat-input', input); + codeInterpreterEnabled = input.codeInterpreterEnabled; } catch (e) {} } @@ -401,6 +400,7 @@ }; onMount(async () => { + loading = true; console.log('mounted'); window.addEventListener('message', onMessageHandler); $socket?.on('chat-events', chatEventHandler); @@ -429,15 +429,20 @@ selectedToolIds = input.selectedToolIds; webSearchEnabled = input.webSearchEnabled; imageGenerationEnabled = input.imageGenerationEnabled; + codeInterpreterEnabled = input.codeInterpreterEnabled; } catch (e) { prompt = ''; files = []; selectedToolIds = []; webSearchEnabled = false; imageGenerationEnabled = false; + codeInterpreterEnabled = false; } } + loading = false; + await tick(); + showControls.subscribe(async (value) => { if (controlPane && !$mobile) { try { @@ -2045,11 +2050,13 @@ {stopResponse} {createMessagePair} onChange={(input) => { - console.log(input); if (input.prompt !== null) { - localStorage.setItem(`chat-input-${$chatId}`, JSON.stringify(input)); + localStorage.setItem( + `chat-input${$chatId ? `-${$chatId}` : ''}`, + JSON.stringify(input) + ); } else { - localStorage.removeItem(`chat-input-${$chatId}`); + localStorage.removeItem(`chat-input${$chatId ? `-${$chatId}` : ''}`); } }} on:upload={async (e) => { From 6359cb55febed2006dd8f87e3f8018ade90c1889 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 02:01:03 +0400 Subject: [PATCH 26/35] chore: format --- .../open_webui/retrieval/loaders/youtube.py | 20 +++++++++++-------- backend/open_webui/utils/oauth.py | 2 +- src/lib/i18n/locales/ar-BH/translation.json | 5 +++-- src/lib/i18n/locales/ar/translation.json | 5 +++-- src/lib/i18n/locales/bg-BG/translation.json | 5 +++-- src/lib/i18n/locales/bn-BD/translation.json | 5 +++-- src/lib/i18n/locales/bo-TB/translation.json | 5 +++-- src/lib/i18n/locales/ca-ES/translation.json | 5 +++-- src/lib/i18n/locales/ceb-PH/translation.json | 5 +++-- src/lib/i18n/locales/cs-CZ/translation.json | 5 +++-- src/lib/i18n/locales/da-DK/translation.json | 5 +++-- src/lib/i18n/locales/de-DE/translation.json | 5 +++-- src/lib/i18n/locales/dg-DG/translation.json | 5 +++-- src/lib/i18n/locales/el-GR/translation.json | 5 +++-- src/lib/i18n/locales/en-GB/translation.json | 5 +++-- src/lib/i18n/locales/en-US/translation.json | 5 +++-- src/lib/i18n/locales/es-ES/translation.json | 5 +++-- src/lib/i18n/locales/et-EE/translation.json | 5 +++-- src/lib/i18n/locales/eu-ES/translation.json | 5 +++-- src/lib/i18n/locales/fa-IR/translation.json | 5 +++-- src/lib/i18n/locales/fi-FI/translation.json | 5 +++-- src/lib/i18n/locales/fr-CA/translation.json | 5 +++-- src/lib/i18n/locales/fr-FR/translation.json | 5 +++-- src/lib/i18n/locales/he-IL/translation.json | 5 +++-- src/lib/i18n/locales/hi-IN/translation.json | 5 +++-- src/lib/i18n/locales/hr-HR/translation.json | 5 +++-- src/lib/i18n/locales/hu-HU/translation.json | 5 +++-- src/lib/i18n/locales/id-ID/translation.json | 5 +++-- src/lib/i18n/locales/ie-GA/translation.json | 5 +++-- src/lib/i18n/locales/it-IT/translation.json | 5 +++-- src/lib/i18n/locales/ja-JP/translation.json | 5 +++-- src/lib/i18n/locales/ka-GE/translation.json | 5 +++-- src/lib/i18n/locales/ko-KR/translation.json | 5 +++-- src/lib/i18n/locales/lt-LT/translation.json | 5 +++-- src/lib/i18n/locales/ms-MY/translation.json | 5 +++-- src/lib/i18n/locales/nb-NO/translation.json | 5 +++-- src/lib/i18n/locales/nl-NL/translation.json | 5 +++-- src/lib/i18n/locales/pa-IN/translation.json | 5 +++-- src/lib/i18n/locales/pl-PL/translation.json | 5 +++-- src/lib/i18n/locales/pt-BR/translation.json | 5 +++-- src/lib/i18n/locales/pt-PT/translation.json | 5 +++-- src/lib/i18n/locales/ro-RO/translation.json | 5 +++-- src/lib/i18n/locales/ru-RU/translation.json | 5 +++-- src/lib/i18n/locales/sk-SK/translation.json | 5 +++-- src/lib/i18n/locales/sr-RS/translation.json | 5 +++-- src/lib/i18n/locales/sv-SE/translation.json | 5 +++-- src/lib/i18n/locales/th-TH/translation.json | 5 +++-- src/lib/i18n/locales/tk-TW/translation.json | 5 +++-- src/lib/i18n/locales/tr-TR/translation.json | 5 +++-- src/lib/i18n/locales/uk-UA/translation.json | 5 +++-- src/lib/i18n/locales/ur-PK/translation.json | 5 +++-- src/lib/i18n/locales/vi-VN/translation.json | 5 +++-- src/lib/i18n/locales/zh-CN/translation.json | 5 +++-- src/lib/i18n/locales/zh-TW/translation.json | 5 +++-- 54 files changed, 169 insertions(+), 113 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/youtube.py b/backend/open_webui/retrieval/loaders/youtube.py index 763d73094..d908cc8cb 100644 --- a/backend/open_webui/retrieval/loaders/youtube.py +++ b/backend/open_webui/retrieval/loaders/youtube.py @@ -63,13 +63,13 @@ class YoutubeLoader: self.video_id = _video_id if _video_id is not None else video_id self._metadata = {"source": video_id} self.proxy_url = proxy_url - + # Ensure language is a list if isinstance(language, str): self.language = [language] else: self.language = list(language) - + # Add English as fallback if not already in the list if "en" not in self.language: self.language.append("en") @@ -87,7 +87,7 @@ class YoutubeLoader: 'Could not import "youtube_transcript_api" Python package. ' "Please install it with `pip install youtube-transcript-api`." ) - + if self.proxy_url: youtube_proxies = { "http": self.proxy_url, @@ -97,7 +97,7 @@ class YoutubeLoader: log.debug(f"Using proxy URL: {self.proxy_url[:14]}...") else: youtube_proxies = None - + try: transcript_list = YouTubeTranscriptApi.list_transcripts( self.video_id, proxies=youtube_proxies @@ -105,7 +105,7 @@ class YoutubeLoader: except Exception as e: log.exception("Loading YouTube transcript failed") return [] - + # Try each language in order of priority for lang in self.language: try: @@ -125,8 +125,12 @@ class YoutubeLoader: except Exception as e: log.info(f"Error finding transcript for language '{lang}'") raise e - + # If we get here, all languages failed languages_tried = ", ".join(self.language) - log.warning(f"No transcript found for any of the specified languages: {languages_tried}. Verify if the video has transcripts, add more languages if needed.") - raise NoTranscriptFound(f"No transcript found for any supported language. Verify if the video has transcripts, add more languages if needed.") + log.warning( + f"No transcript found for any of the specified languages: {languages_tried}. Verify if the video has transcripts, add more languages if needed." + ) + raise NoTranscriptFound( + f"No transcript found for any supported language. Verify if the video has transcripts, add more languages if needed." + ) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index 2ad134ff7..efb287dbf 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -158,7 +158,7 @@ class OAuthManager: nested_claims = oauth_claim.split(".") for nested_claim in nested_claims: claim_data = claim_data.get(nested_claim, {}) - + if isinstance(claim_data, list): user_oauth_groups = claim_data elif isinstance(claim_data, str): diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 8917c0bf8..97e3392ce 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "( `sh webui.sh --api`مثال)", "(latest)": "(الأخير)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ نماذج }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "استجابة خطاء", "Banners": "لافتات", "Base Model (From)": "النموذج الأساسي (من)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "قبل", "Being lazy": "كون كسول", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "تعديل", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "تأكد من أن ملف CSV الخاص بك يتضمن 4 أعمدة بهذا الترتيب: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json index 5172d2ee8..735171b1f 100644 --- a/src/lib/i18n/locales/ar/translation.json +++ b/src/lib/i18n/locales/ar/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(مثال: `sh webui.sh --api --api-auth اسم_المستخدم_كلمة_المرور`)", "(e.g. `sh webui.sh --api`)": "(مثال: تشغيل الأمر: `sh webui.sh --api`)", "(latest)": "(أحدث)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "النماذج: {{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "رد سيئ", "Banners": "لافتات", "Base Model (From)": "النموذج الأساسي (من)", - "Base URL": "", "Batch Size (num_batch)": "حجم الدفعة (num_batch)", "before": "قبل", "Being lazy": "كونك كسولاً", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "مثال: أدوات لتنفيذ عمليات متنوعة", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "تعديل", "Edit Arena Model": "تعديل نموذج Arena", "Edit Channel": "تعديل القناة", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "تفعيل أخذ عينات Mirostat للتحكم في درجة التعقيد.", "Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة", "Enabled": "مفعل", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "تأكد من أن ملف CSV الخاص بك يتضمن 4 أعمدة بهذا الترتيب: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 0bbffc6b9..f72bb308c 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(напр. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(напр. `sh webui.sh --api`)", "(latest)": "(последна)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Невалиден отговор от API", "Banners": "Банери", "Base Model (From)": "Базов модел (от)", - "Base URL": "", "Batch Size (num_batch)": "Размер на партидата (num_batch)", "before": "преди", "Being lazy": "Да бъдеш мързелив", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "напр. Инструменти за извършване на различни операции", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Редактиране", "Edit Arena Model": "Редактиране на Arena модел", "Edit Channel": "Редактиране на канал", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Включване на нови регистрации", "Enabled": "Активирано", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Уверете се, че вашият CSV файл включва 4 колони в следния ред: Име, Имейл, Парола, Роля.", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index a4f4f78ba..08e5d82b1 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(যেমন `sh webui.sh --api`)", "(latest)": "(সর্বশেষ)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ মডেল}}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "খারাপ প্রতিক্রিয়া", "Banners": "ব্যানার", "Base Model (From)": "বেস মডেল (থেকে)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "পূর্ববর্তী", "Being lazy": "অলস হওয়া", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "এডিট করুন", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "নতুন সাইনআপ চালু করুন", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "আপনার সিএসভি ফাইলটিতে এই ক্রমে 4 টি কলাম অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন: নাম, ইমেল, পাসওয়ার্ড, ভূমিকা।.", diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json index 99e3a8acb..6f40b29b0 100644 --- a/src/lib/i18n/locales/bo-TB/translation.json +++ b/src/lib/i18n/locales/bo-TB/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(དཔེར་ན། `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(དཔེར་ན། `sh webui.sh --api`)", "(latest)": "(ཆེས་གསར།)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "ལན་ངན་པ།", "Banners": "དར་ཆ།", "Base Model (From)": "གཞི་རྩའི་དཔེ་དབྱིབས། (ནས།)", - "Base URL": "", "Batch Size (num_batch)": "ཚན་ཆུང་ཆེ་ཆུང་། (num_batch)", "before": "སྔོན།", "Being lazy": "ལེ་ལོ་བྱེད་པ།", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "དཔེར་ན། ལས་ཀ་སྣ་ཚོགས་སྒྲུབ་བྱེད་ཀྱི་ལག་ཆ།", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "ཞུ་དག", "Edit Arena Model": "Arena དཔེ་དབྱིབས་ཞུ་དག", "Edit Channel": "བགྲོ་གླེང་ཞུ་དག", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "རྙོག་འཛིང་ཚད་ཚོད་འཛིན་གྱི་ཆེད་དུ་ Mirostat མ་དཔེ་འདེམས་པ་སྒུལ་བསྐྱོད་བྱེད་པ།", "Enable New Sign Ups": "ཐོ་འགོད་གསར་པ་སྒུལ་བསྐྱོད་བྱེད་པ།", "Enabled": "སྒུལ་བསྐྱོད་བྱས་ཡོད།", + "Endpoint URL": "", "Enforce Temporary Chat": "གནས་སྐབས་ཁ་བརྡ་བཙན་བཀོལ་བྱེད་པ།", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ཁྱེད་ཀྱི་ CSV ཡིག་ཆར་གོ་རིམ་འདི་ལྟར། མིང་། ཡིག་ཟམ། གསང་གྲངས། གནས་ཚད། སྟར་པ་ ༤ ཚུད་ཡོད་པ་ཁག་ཐེག་བྱེད་རོགས།", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 7f52339bf..8afeee176 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(p. ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(p. ex. `sh webui.sh --api`)", "(latest)": "(últim)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} eines disponibles", @@ -140,7 +140,6 @@ "Bad Response": "Resposta errònia", "Banners": "Banners", "Base Model (From)": "Model base (des de)", - "Base URL": "", "Batch Size (num_batch)": "Mida del lot (num_batch)", "before": "abans", "Being lazy": "Essent mandrós", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "p. ex. Eines per dur a terme operacions", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "p. ex. en-US, ja-JP, ca-ES (deixa-ho en blanc per detecció automàtica)", + "e.g., westus (leave blank for eastus)": "", "Edit": "Editar", "Edit Arena Model": "Editar model de l'Arena", "Edit Channel": "Editar el canal", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Permetre el mostreig de Mirostat per controlar la perplexitat", "Enable New Sign Ups": "Permetre nous registres", "Enabled": "Habilitat", + "Endpoint URL": "", "Enforce Temporary Chat": "Forçar els xats temporals", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Assegura't que els teus fitxers CSV inclouen 4 columnes en aquest ordre: Nom, Correu electrònic, Contrasenya, Rol.", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index dec073e15..a126b71b5 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(pananglitan `sh webui.sh --api`)", "(latest)": "", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", - "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "I-enable ang bag-ong mga rehistro", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index 8b8148679..ff1adb4ad 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(např. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(např. `sh webui.sh --api`)", "(latest)": "Nejnovější", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Špatná odezva", "Banners": "Bannery", "Base Model (From)": "Základní model (z)", - "Base URL": "", "Batch Size (num_batch)": "Batch size (num_batch)", "before": "před", "Being lazy": "", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Upravit", "Edit Arena Model": "Upravit Arena Model", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Povolit nové registrace", "Enabled": "Povoleno", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Ujistěte se, že váš CSV soubor obsahuje 4 sloupce v tomto pořadí: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index 72b022fa5..00291ea10 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(f.eks. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(f.eks. `sh webui.sh --api`)", "(latest)": "(seneste)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ modeller }}", "{{COUNT}} Available Tools": "{{COUNT}} Tilgængelige Værktøj", @@ -140,7 +140,6 @@ "Bad Response": "Problem i response", "Banners": "Bannere", "Base Model (From)": "Base Model (Fra)", - "Base URL": "", "Batch Size (num_batch)": "Batch størrelse (num_batch)", "before": "før", "Being lazy": "At være doven", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Rediger", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktiver nye signups", "Enabled": "Aktiveret", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Sørg for at din CSV-fil indeholder 4 kolonner in denne rækkefølge: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 2591ce5d7..7452630e6 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(z. B. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(z. B. `sh webui.sh --api`)", "(latest)": "(neueste)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ Modelle }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Schlechte Antwort", "Banners": "Banner", "Base Model (From)": "Basismodell (From)", - "Base URL": "", "Batch Size (num_batch)": "Stapelgröße (num_batch)", "before": "bereits geteilt", "Being lazy": "Faulheit", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "z. B. Werkzeuge für verschiedene Operationen", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "z. B. en-US,de-DE (freilassen für automatische Erkennung)", + "e.g., westus (leave blank for eastus)": "", "Edit": "Bearbeiten", "Edit Arena Model": "Arena-Modell bearbeiten", "Edit Channel": "Kanal bearbeiten", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Registrierung erlauben", "Enabled": "Aktiviert", + "Endpoint URL": "", "Enforce Temporary Chat": "Temporären Chat erzwingen", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Stellen Sie sicher, dass Ihre CSV-Datei 4 Spalten in dieser Reihenfolge enthält: Name, E-Mail, Passwort, Rolle.", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index 92b7866bc..355134294 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(such e.g. `sh webui.sh --api`)", "(latest)": "(much latest)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", - "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Enable New Bark Ups", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index 40a421710..62cd6c9c7 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(π.χ. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(π.χ. `sh webui.sh --api`)", "(latest)": "(τελευταίο)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Κακή Απάντηση", "Banners": "Προβολές", "Base Model (From)": "Βασικό Μοντέλο (Από)", - "Base URL": "", "Batch Size (num_batch)": "Μέγεθος Παρτίδας (num_batch)", "before": "πριν", "Being lazy": "Τρώλακας", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "π.χ. Εργαλεία για την εκτέλεση διάφορων λειτουργιών", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Επεξεργασία", "Edit Arena Model": "Επεξεργασία Μοντέλου Arena", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Ενεργοποίηση Νέων Εγγραφών", "Enabled": "Ενεργοποιημένο", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Βεβαιωθείτε ότι το αρχείο CSV σας περιλαμβάνει 4 στήλες με αυτή τη σειρά: Όνομα, Email, Κωδικός, Ρόλος.", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index bdb174111..306bcc7cd 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "", "(latest)": "", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", - "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index bdb174111..306bcc7cd 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "", "(latest)": "", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", - "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index db1aaa440..4a1d4a4c7 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(p.ej. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(p.ej. `sh webui.sh --api`)", "(latest)": "(último)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Mala Respuesta", "Banners": "Banners", "Base Model (From)": "Modelo Base (desde)", - "Base URL": "", "Batch Size (num_batch)": "Tamaño de Lote (num_batch)", "before": "antes", "Being lazy": "Ser perezoso", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "p.ej. Herramientas para realizar varias operaciones", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "p. ej., en-US,ja-JP (dejar en blanco para detectar automáticamente)", + "e.g., westus (leave blank for eastus)": "", "Edit": "Editar", "Edit Arena Model": "Editar Modelo en Arena", "Edit Channel": "Editar Canal", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Algoritmo de decodificación de texto neuronal que controla activamente el proceso generativo para mantener la perplejidad del texto generado en un valor deseado. Previene las trampas de aburrimiento (por excesivas repeticiones) y de incoherencia (por generación de excesivo texto).", "Enable New Sign Ups": "Habilitar Registros de Nuevos Usuarios", "Enabled": "Habilitado", + "Endpoint URL": "", "Enforce Temporary Chat": "Forzar el uso de Chat Temporal", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Asegúrese de que su archivo CSV incluya 4 columnas en este orden: Nombre, Correo Electrónico, Contraseña, Rol.", diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json index b7d956baa..282c341fd 100644 --- a/src/lib/i18n/locales/et-EE/translation.json +++ b/src/lib/i18n/locales/et-EE/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(nt `sh webui.sh --api --api-auth kasutajanimi_parool`)", "(e.g. `sh webui.sh --api`)": "(nt `sh webui.sh --api`)", "(latest)": "(uusim)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ mudelid }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Halb vastus", "Banners": "Bännerid", "Base Model (From)": "Baas mudel (Allikas)", - "Base URL": "", "Batch Size (num_batch)": "Partii suurus (num_batch)", "before": "enne", "Being lazy": "Laisklemine", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "nt tööriistad mitmesuguste operatsioonide teostamiseks", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Muuda", "Edit Arena Model": "Muuda Areena mudelit", "Edit Channel": "Muuda kanalit", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Luba Mirostat'i valim perplekssuse juhtimiseks.", "Enable New Sign Ups": "Luba uued registreerimised", "Enabled": "Lubatud", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Veenduge, et teie CSV-fail sisaldab 4 veergu selles järjekorras: Nimi, E-post, Parool, Roll.", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index ef6b0c75b..ffa420ec9 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(adib. `sh webui.sh --api --api-auth erabiltzaile_pasahitza`)", "(e.g. `sh webui.sh --api`)": "(adib. `sh webui.sh --api`)", "(latest)": "(azkena)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Erantzun Txarra", "Banners": "Bannerrak", "Base Model (From)": "Oinarrizko Eredua (Nondik)", - "Base URL": "", "Batch Size (num_batch)": "Batch Tamaina (num_batch)", "before": "aurretik", "Being lazy": "Alferra izatea", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "adib. Hainbat eragiketa egiteko tresnak", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Editatu", "Edit Arena Model": "Editatu Arena Eredua", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Gaitu Izena Emate Berriak", "Enabled": "Gaituta", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Ziurtatu zure CSV fitxategiak 4 zutabe dituela ordena honetan: Izena, Posta elektronikoa, Pasahitza, Rola.", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 56960e284..b298a6139 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(مثال: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)", "(latest)": "(آخرین)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} ابزار موجود", @@ -140,7 +140,6 @@ "Bad Response": "پاسخ خوب نیست", "Banners": "بنر", "Base Model (From)": "مدل پایه (از)", - "Base URL": "", "Batch Size (num_batch)": "اندازه دسته (num_batch)", "before": "قبل", "Being lazy": "حالت سازنده", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "مثلا ابزارهایی برای انجام عملیات مختلف", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "مثلا en-US,ja-JP (برای تشخیص خودکار خالی بگذارید)", + "e.g., westus (leave blank for eastus)": "", "Edit": "ویرایش", "Edit Arena Model": "ویرایش مدل آرنا", "Edit Channel": "ویرایش کانال", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "فعال\u200cسازی نمونه\u200cبرداری میروستات برای کنترل سردرگمی", "Enable New Sign Ups": "فعال کردن ثبت نام\u200cهای جدید", "Enabled": "فعال شده", + "Endpoint URL": "", "Enforce Temporary Chat": "اجبار چت موقت", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "اطمینان حاصل کنید که فایل CSV شما شامل چهار ستون در این ترتیب است: نام، ایمیل، رمز عبور، نقش.", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index a0d696e15..fae02283a 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(esim. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(esim. `sh webui.sh --api`)", "(latest)": "(uusin)", - "(leave blank for Azure Commercial URL auto-generation)": "(jätä tyhjäksi Azure Commercial verkko-osoitteen automaattista luontia varten)", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ mallit }}", "{{COUNT}} Available Tools": "{{COUNT}} työkalua saatavilla", @@ -140,7 +140,6 @@ "Bad Response": "Huono vastaus", "Banners": "Bannerit", "Base Model (From)": "Perusmalli (alkaen)", - "Base URL": "Perus verkko-osoite", "Batch Size (num_batch)": "Erän koko (num_batch)", "before": "ennen", "Being lazy": "Oli laiska", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "esim. työkaluja erilaisten toimenpiteiden suorittamiseen", "e.g., 3, 4, 5 (leave blank for default)": "esim. 3, 4, 5 (jätä tyhjäksi, jos haluat oletusarvon)", "e.g., en-US,ja-JP (leave blank for auto-detect)": "esim. en-US,ja-JP (Tyhjäksi jättämällä, automaattinen tunnistus)", + "e.g., westus (leave blank for eastus)": "", "Edit": "Muokkaa", "Edit Arena Model": "Muokkaa Arena-mallia", "Edit Channel": "Muokkaa kanavaa", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Salli uudet rekisteröitymiset", "Enabled": "Käytössä", + "Endpoint URL": "", "Enforce Temporary Chat": "Pakota väliaikaiset keskustelut", "Enhance": "Paranna", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Varmista, että CSV-tiedostossasi on 4 saraketta tässä järjestyksessä: Nimi, Sähköposti, Salasana, Rooli.", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index a6b8e8fa7..9902ce1e8 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(par ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(par exemple `sh webui.sh --api`)", "(latest)": "(dernier)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modèles }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Mauvaise réponse", "Banners": "Banniers", "Base Model (From)": "Modèle de base (à partir de)", - "Base URL": "", "Batch Size (num_batch)": "Taille du lot (num_batch)", "before": "avant", "Being lazy": "Être fainéant", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Modifier", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Activer les nouvelles inscriptions", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Vérifiez que votre fichier CSV comprenne les 4 colonnes dans cet ordre : Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index e9efb8551..e7140249f 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(par ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(par exemple `sh webui.sh --api`)", "(latest)": "(dernière version)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "Nombre d'outils disponibles {{COUNT}}", @@ -140,7 +140,6 @@ "Bad Response": "Mauvaise réponse", "Banners": "Bannières", "Base Model (From)": "Modèle de base (à partir de)", - "Base URL": "", "Batch Size (num_batch)": "Batch Size (num_batch)", "before": "avant", "Being lazy": "Être fainéant", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "par ex. Outils pour effectuer diverses opérations", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "par ex., en-US, ja-JP (laisser vide pour détection automatique)", + "e.g., westus (leave blank for eastus)": "", "Edit": "Modifier", "Edit Arena Model": "Modifier le modèle d'arène", "Edit Channel": "Modifier le canal", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Activer l'échantillonnage Mirostat pour contrôler Perplexité.", "Enable New Sign Ups": "Activer les nouvelles inscriptions", "Enabled": "Activé", + "Endpoint URL": "", "Enforce Temporary Chat": "Imposer les discussions temporaires", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Vérifiez que votre fichier CSV comprenne les 4 colonnes dans cet ordre : Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index a4d07343d..ff425d4df 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(למשל `sh webui.sh --api`)", "(latest)": "(האחרון)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ דגמים }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "תגובה שגויה", "Banners": "באנרים", "Base Model (From)": "דגם בסיס (מ)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "לפני", "Being lazy": "להיות עצלן", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "ערוך", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "אפשר הרשמות חדשות", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ודא שקובץ ה-CSV שלך כולל 4 עמודות בסדר הבא: שם, דוא\"ל, סיסמה, תפקיד.", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 3d53349a7..8b5c9c6dc 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(e.g. `sh webui.sh --api`)", "(latest)": "(latest)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ मॉडल }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "ख़राब प्रतिक्रिया", "Banners": "बैनर", "Base Model (From)": "बेस मॉडल (से)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "पहले", "Being lazy": "आलसी होना", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "संपादित करें", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "नए साइन अप सक्रिय करें", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "सुनिश्चित करें कि आपकी CSV फ़ाइल में इस क्रम में 4 कॉलम शामिल हैं: नाम, ईमेल, पासवर्ड, भूमिका।", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index e248eff57..dd22b57f4 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(npr. `sh webui.sh --api`)", "(latest)": "(najnovije)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modeli }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Loš odgovor", "Banners": "Baneri", "Base Model (From)": "Osnovni model (Od)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "prije", "Being lazy": "Biti lijen", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Uredi", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Omogući nove prijave", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Provjerite da vaša CSV datoteka uključuje 4 stupca u ovom redoslijedu: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index 056e7c0c2..2de08218b 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(pl. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(pl. `sh webui.sh --api`)", "(latest)": "(legújabb)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ modellek }}", "{{COUNT}} Available Tools": "{{COUNT}} Elérhető eszköz", @@ -140,7 +140,6 @@ "Bad Response": "Rossz válasz", "Banners": "Bannerek", "Base Model (From)": "Alap modell (Forrás)", - "Base URL": "", "Batch Size (num_batch)": "Köteg méret (num_batch)", "before": "előtt", "Being lazy": "Lustaság", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "pl. Eszközök különböző műveletek elvégzéséhez", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Szerkesztés", "Edit Arena Model": "Arena modell szerkesztése", "Edit Channel": "Csatorna szerkesztése", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Engedélyezd a Mirostat mintavételezést a perplexitás szabályozásához.", "Enable New Sign Ups": "Új regisztrációk engedélyezése", "Enabled": "Engedélyezve", + "Endpoint URL": "", "Enforce Temporary Chat": "Ideiglenes csevegés kikényszerítése", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Győződj meg róla, hogy a CSV fájl tartalmazza ezt a 4 oszlopot ebben a sorrendben: Név, Email, Jelszó, Szerep.", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index b11a217a4..a4b4e6ce4 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(contoh: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(contoh: `sh webui.sh --api`)", "(latest)": "(terbaru)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Respons Buruk", "Banners": "Spanduk", "Base Model (From)": "Model Dasar (Dari)", - "Base URL": "", "Batch Size (num_batch)": "Ukuran Batch (num_batch)", "before": "sebelum", "Being lazy": "Menjadi malas", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Edit", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktifkan Pendaftaran Baru", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Pastikan file CSV Anda menyertakan 4 kolom dengan urutan sebagai berikut: Nama, Email, Kata Sandi, Peran.", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 45f86682e..099526511 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(m.sh. `sh webui.sh --api --api-auth username_password `)", "(e.g. `sh webui.sh --api`)": "(m.sh. `sh webui.sh --api`)", "(latest)": "(is déanaí)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} Uirlisí ar Fáil", @@ -140,7 +140,6 @@ "Bad Response": "Droch-fhreagra", "Banners": "Meirgí", "Base Model (From)": "Múnla Bonn (Ó)", - "Base URL": "", "Batch Size (num_batch)": "Méid Baisc (num_batch)", "before": "roimh", "Being lazy": "A bheith leisciúil", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "m.sh. Uirlisí chun oibríochtaí éagsúla a dhéanamh", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "m.sh., en-US, ja-JP (fág bán le haghaidh uathbhraite)", + "e.g., westus (leave blank for eastus)": "", "Edit": "Cuir in eagar", "Edit Arena Model": "Cuir Samhail Airéine in Eagar", "Edit Channel": "Cuir Cainéal in Eagar", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Cumasaigh sampláil Mirostat chun seachrán a rialú.", "Enable New Sign Ups": "Cumasaigh Clárúcháin Nua", "Enabled": "Cumasaithe", + "Endpoint URL": "", "Enforce Temporary Chat": "Cuir Comhrá Sealadach i bhfeidhm", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Déan cinnte go bhfuil 4 cholún san ord seo i do chomhad CSV: Ainm, Ríomhphost, Pasfhocal, Ról.", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 762062530..90e052abf 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(p.e. `sh webui.sh --api`)", "(latest)": "(ultima)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modelli }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Risposta non valida", "Banners": "Banner", "Base Model (From)": "Modello base (da)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "prima", "Being lazy": "Essere pigri", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Modifica", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Abilita nuove iscrizioni", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Assicurati che il tuo file CSV includa 4 colonne in questo ordine: Nome, Email, Password, Ruolo.", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 57e61d638..9995aff6a 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例: `sh webui.sh --api`)", "(latest)": "(最新)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ モデル }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "応答が悪い", "Banners": "バナー", "Base Model (From)": "ベースモデル (From)", - "Base URL": "", "Batch Size (num_batch)": "バッチサイズ (num_batch)", "before": "より前", "Being lazy": "怠惰な", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "編集", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "新規登録を有効にする", "Enabled": "有効", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSVファイルに4つの列が含まれていることを確認してください: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index fa40e819a..48a68bfe9 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(მაგ: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(მაგ: `sh webui.sh --api`)", "(latest)": "(უახლესი)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ მოდელები }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "არასწორი პასუხი", "Banners": "ბანერები", "Base Model (From)": "საბაზისო მოდელი (საიდან)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "მითითებულ დრომდე", "Being lazy": "ზარმაცობა", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "ჩასწორება", "Edit Arena Model": "არენის მოდელის ჩასწორება", "Edit Channel": "არხის ჩასწორება", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "ახალი რეგისტრაციების ჩართვა", "Enabled": "ჩართულია", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "დარწმუნდით, რომ თქვენი CSV-ფაილი შეიცავს 4 ველს ამ მიმდევრობით: სახელი, ელფოსტა, პაროლი, როლი.", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 9f1809a15..d4198d4b5 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(예: `sh webui.sh --api --api-auth 사용자이름_비밀번호`)", "(e.g. `sh webui.sh --api`)": "(예: `sh webui.sh --api`)", "(latest)": "(최근)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "사용 가능한 도구 {{COUNT}}개", @@ -140,7 +140,6 @@ "Bad Response": "잘못된 응답", "Banners": "배너", "Base Model (From)": "기본 모델(시작)", - "Base URL": "", "Batch Size (num_batch)": "배치 크기 (num_batch)", "before": "이전", "Being lazy": "게으름 피우기", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "예: 다양한 작업을 수행하는 도구", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "예: en-US, ja-JP (자동 감지를 위해 비워 두세요)", + "e.g., westus (leave blank for eastus)": "", "Edit": "편집", "Edit Arena Model": "아레나 모델 편집", "Edit Channel": "채널 편집", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "퍼플렉서티 제어를 위해 Mirostat 샘플링 활성화", "Enable New Sign Ups": "새 회원가입 활성화", "Enabled": "활성화됨", + "Endpoint URL": "", "Enforce Temporary Chat": "임시 채팅 강제 적용", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV 파일에 이름, 이메일, 비밀번호, 역할 4개의 열이 순서대로 포함되어 있는지 확인하세요.", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index cfda7c594..9446c6676 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(pvz. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(pvz. `sh webui.sh --api`)", "(latest)": "(naujausias)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Neteisingas atsakymas", "Banners": "Baneriai", "Base Model (From)": "Bazinis modelis", - "Base URL": "", "Batch Size (num_batch)": "Batch dydis", "before": "prieš", "Being lazy": "Būvimas tingiu", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Redaguoti", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktyvuoti naujas registracijas", "Enabled": "Leisti", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Įsitikinkite, kad CSV failas turi 4 kolonas šiuo eiliškumu: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 2dd5e01c4..438df1708 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(contoh `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(contoh `sh webui.sh --api`)", "(latest)": "(terkini)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Maklumbalas Salah", "Banners": "Sepanduk", "Base Model (From)": "Model Asas (Dari)", - "Base URL": "", "Batch Size (num_batch)": "Saiz Kumpulan (num_batch)", "before": "sebelum,", "Being lazy": "Menjadi Malas", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Edit", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Benarkan Pendaftaran Baharu", "Enabled": "Dibenarkan", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "astikan fail CSV anda mengandungi 4 lajur dalam susunan ini: Nama, E-mel, Kata Laluan, Peranan.", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index e0db76637..130fb9496 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(f.eks. `sh webui.sh --api --api-auth brukernavn_passord`)", "(e.g. `sh webui.sh --api`)": "(f.eks. `sh webui.sh --api`)", "(latest)": "(siste)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modeller }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Dårlig svar", "Banners": "Bannere", "Base Model (From)": "Grunnmodell (fra)", - "Base URL": "", "Batch Size (num_batch)": "Batchstørrelse (num_batch)", "before": "før", "Being lazy": "Er lat", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "f.eks. Verktøy for å gjøre ulike handlinger", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Rediger", "Edit Arena Model": "Rediger Arena-modell", "Edit Channel": "Rediger kanal", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktiver nye registreringer", "Enabled": "Aktivert", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Sørg for at CSV-filen din inkluderer fire kolonner i denne rekkefølgen: Navn, E-post, Passord, Rolle.", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 22e1af3bb..a2ceab8c7 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(bv. `sh webui.sh --api --api-auth gebruikersnaam_wachtwoord`)", "(e.g. `sh webui.sh --api`)": "(bv. `sh webui.sh --api`)", "(latest)": "(nieuwste)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ modellen }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Ongeldig antwoord", "Banners": "Banners", "Base Model (From)": "Basismodel (Vanaf)", - "Base URL": "", "Batch Size (num_batch)": "Batchgrootte (num_batch)", "before": "voor", "Being lazy": "Lui zijn", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "Gereedschappen om verschillende bewerkingen uit te voeren", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Wijzig", "Edit Arena Model": "Bewerk arenamodel", "Edit Channel": "Bewerk kanaal", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Mirostat-sampling in om perplexiteit te controleren inschakelen.", "Enable New Sign Ups": "Schakel nieuwe registraties in", "Enabled": "Ingeschakeld", + "Endpoint URL": "", "Enforce Temporary Chat": "Tijdelijke chat afdwingen", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Zorg ervoor dat uw CSV-bestand de volgende vier kolommen in deze volgorde bevat: Naam, E-mail, Wachtwoord, Rol.", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index ffb4f0d4e..fb03157bd 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(ਉਦਾਹਰਣ ਦੇ ਤੌਰ ਤੇ `sh webui.sh --api`)", "(latest)": "(ਤਾਜ਼ਾ)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ ਮਾਡਲ }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "ਖਰਾਬ ਜਵਾਬ", "Banners": "ਬੈਨਰ", "Base Model (From)": "ਬੇਸ ਮਾਡਲ (ਤੋਂ)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "ਪਹਿਲਾਂ", "Being lazy": "ਆਲਸੀ ਹੋਣਾ", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "ਸੰਪਾਦਨ ਕਰੋ", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "ਨਵੇਂ ਸਾਈਨ ਅਪ ਯੋਗ ਕਰੋ", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਤੁਹਾਡੀ CSV ਫਾਈਲ ਵਿੱਚ ਇਸ ਕ੍ਰਮ ਵਿੱਚ 4 ਕਾਲਮ ਹਨ: ਨਾਮ, ਈਮੇਲ, ਪਾਸਵਰਡ, ਭੂਮਿਕਾ।", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 98290c7af..7c99f677a 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(np. `sh webui.sh --api --api-auth username_password`)>", "(e.g. `sh webui.sh --api`)": "(np. `sh webui.sh --api`)", "(latest)": "(najnowszy)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modele }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Nieprawidłowa odpowiedź", "Banners": "Bannery", "Base Model (From)": "Model bazowy (od)", - "Base URL": "", "Batch Size (num_batch)": "Rozmiar partii (num_batch)", "before": "przed", "Being lazy": "Jest leniwy.", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "np. Narzędzia do wykonywania różnych operacji", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Edytuj", "Edit Arena Model": "Edytuj model arenę", "Edit Channel": "Edytuj kanał", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Włącz nowe rejestracje", "Enabled": "Włączone", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Upewnij się, że twój plik CSV zawiera dokładnie 4 kolumny w następującej kolejności: Nazwa, Email, Hasło, Rola.", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index a45e87e01..796a16127 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(por exemplo, `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(por exemplo, `sh webui.sh --api`)", "(latest)": "(último)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Resposta Ruim", "Banners": "Banners", "Base Model (From)": "Modelo Base (De)", - "Base URL": "", "Batch Size (num_batch)": "Tamanho do Lote (num_batch)", "before": "antes", "Being lazy": "Sendo preguiçoso", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "Exemplo: Ferramentas para executar operações diversas", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Editar", "Edit Arena Model": "Editar Arena de Modelos", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Ativar Novos Cadastros", "Enabled": "Ativado", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Certifique-se de que seu arquivo CSV inclua 4 colunas nesta ordem: Nome, Email, Senha, Função.", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index 639e67d97..7d5fd4c1d 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "(por exemplo, `sh webui.sh --api`)", "(latest)": "(mais recente)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modelos }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Resposta má", "Banners": "Estandartes", "Base Model (From)": "Modelo Base (De)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "antes", "Being lazy": "Ser preguiçoso", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Editar", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Ativar Novas Inscrições", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Confirme que o seu ficheiro CSV inclui 4 colunas nesta ordem: Nome, E-mail, Senha, Função.", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 24a7f3a0b..9fc741b8a 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(de ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(de ex. `sh webui.sh --api`)", "(latest)": "(ultimul)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modele }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Răspuns Greșit", "Banners": "Bannere", "Base Model (From)": "Model de Bază (De la)", - "Base URL": "", "Batch Size (num_batch)": "Dimensiune Lot (num_batch)", "before": "înainte", "Being lazy": "Fiind leneș", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Editează", "Edit Arena Model": "Editați Modelul Arena", "Edit Channel": "Editează canalul", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Activează Înscrierile Noi", "Enabled": "Activat", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Asigurați-vă că fișierul CSV include 4 coloane în această ordine: Nume, Email, Parolă, Rol.", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index c513775ea..2a049b9cf 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(например, `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(например, `sh webui.sh --api`)", "(latest)": "(последняя)", - "(leave blank for Azure Commercial URL auto-generation)": "(оставьте поле пустым для автоматической генерации коммерческого URL-адреса Azure)", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ модели }}", "{{COUNT}} Available Tools": "{{COUNT}} доступных инструментов", @@ -140,7 +140,6 @@ "Bad Response": "Плохой ответ", "Banners": "Баннеры", "Base Model (From)": "Базовая модель (от)", - "Base URL": "Базовый URL адрес", "Batch Size (num_batch)": "Размер партии (num_batch)", "before": "до", "Being lazy": "Лениво", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "например, инструменты для выполнения различных операций", "e.g., 3, 4, 5 (leave blank for default)": "например, 3, 4, 5 (оставьте поле пустым по умолчанию)", "e.g., en-US,ja-JP (leave blank for auto-detect)": "например, en-US,ja-JP (оставьте поле пустым для автоматического определения)", + "e.g., westus (leave blank for eastus)": "", "Edit": "Редактировать", "Edit Arena Model": "Изменить модель арены", "Edit Channel": "Редактировать канал", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Включите выборку Mirostat для контроля путаницы.", "Enable New Sign Ups": "Разрешить новые регистрации", "Enabled": "Включено", + "Endpoint URL": "", "Enforce Temporary Chat": "Принудительный временный чат", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Убедитесь, что ваш CSV-файл включает в себя 4 столбца в следующем порядке: Имя, Электронная почта, Пароль, Роль.", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index cec5d4c54..0393e1349 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(napr. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(napr. `sh webui.sh --api`)", "(latest)": "Najnovšie", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Zlá odozva", "Banners": "Bannery", "Base Model (From)": "Základný model (z)", - "Base URL": "", "Batch Size (num_batch)": "Veľkosť batchu (num_batch)", "before": "pred", "Being lazy": "", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Upraviť", "Edit Arena Model": "Upraviť Arena Model", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Povoliť nové registrácie", "Enabled": "Povolené", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Uistite sa, že váš CSV súbor obsahuje 4 stĺpce v tomto poradí: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 709cdb04b..b75cadcd7 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(нпр. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(нпр. `sh webui.sh --api`)", "(latest)": "(најновије)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ модели }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Лош одговор", "Banners": "Барјаке", "Base Model (From)": "Основни модел (од)", - "Base URL": "", "Batch Size (num_batch)": "", "before": "пре", "Being lazy": "Бити лењ", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Измени", "Edit Arena Model": "Измени модел арене", "Edit Channel": "Измени канал", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Омогући нове пријаве", "Enabled": "Омогућено", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Уверите се да ваша CSV датотека укључује 4 колоне у овом редоследу: Име, Е-пошта, Лозинка, Улога.", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 76fe56661..6565fc5f7 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(t.ex. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(t.ex. `sh webui.sh --api`)", "(latest)": "(senaste)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ modeller }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Felaktig respons", "Banners": "Banners", "Base Model (From)": "Basmodell (Från)", - "Base URL": "", "Batch Size (num_batch)": "Batchstorlek (num_batch)", "before": "före", "Being lazy": "Lägg till", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Redigera", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktivera nya registreringar", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Se till att din CSV-fil innehåller fyra kolumner i denna ordning: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 69aae71e3..8d4fc86a6 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(เช่น `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(เช่น `sh webui.sh --api`)", "(latest)": "(ล่าสุด)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "การตอบสนองที่ไม่ดี", "Banners": "แบนเนอร์", "Base Model (From)": "โมเดลพื้นฐาน (จาก)", - "Base URL": "", "Batch Size (num_batch)": "ขนาดชุด (num_batch)", "before": "ก่อน", "Being lazy": "ขี้เกียจ", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "แก้ไข", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "เปิดใช้งานการสมัครใหม่", "Enabled": "เปิดใช้งาน", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "ตรวจสอบว่าไฟล์ CSV ของคุณมี 4 คอลัมน์ในลำดับนี้: ชื่อ, อีเมล, รหัสผ่าน, บทบาท", diff --git a/src/lib/i18n/locales/tk-TW/translation.json b/src/lib/i18n/locales/tk-TW/translation.json index c1bc2b3f2..363afaaf7 100644 --- a/src/lib/i18n/locales/tk-TW/translation.json +++ b/src/lib/i18n/locales/tk-TW/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "", "(e.g. `sh webui.sh --api`)": "", "(latest)": "", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "", "Banners": "", "Base Model (From)": "", - "Base URL": "", "Batch Size (num_batch)": "", "before": "", "Being lazy": "", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "", "Edit Arena Model": "", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "", "Enabled": "", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index 9926f1e2e..1b4d25f4c 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(örn. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(örn. `sh webui.sh --api`)", "(latest)": "(en son)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Kötü Yanıt", "Banners": "Afişler", "Base Model (From)": "Temel Model ('den)", - "Base URL": "", "Batch Size (num_batch)": "Yığın Boyutu (num_batch)", "before": "önce", "Being lazy": "Tembelleşiyor", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": " örn.Çeşitli işlemleri gerçekleştirmek için araçlar", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Düzenle", "Edit Arena Model": "Arena Modelini Düzenle", "Edit Channel": "Kanalı Düzenle", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Yeni Kayıtları Etkinleştir", "Enabled": "Etkin", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV dosyanızın şu sırayla 4 sütun içerdiğinden emin olun: İsim, E-posta, Şifre, Rol.", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index df8247344..851b9cc32 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(напр. `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(напр. `sh webui.sh --api`)", "(latest)": "(остання)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "Неправильна відповідь", "Banners": "Прапори", "Base Model (From)": "Базова модель (від)", - "Base URL": "", "Batch Size (num_batch)": "Розмір партії (num_batch)", "before": "до того, як", "Being lazy": "Не поспішати", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "напр., Інструменти для виконання різних операцій", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Редагувати", "Edit Arena Model": "Редагувати модель Arena", "Edit Channel": "Редагувати канал", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Увімкнути вибірку Mirostat для контролю перплексії.", "Enable New Sign Ups": "Дозволити нові реєстрації", "Enabled": "Увімкнено", + "Endpoint URL": "", "Enforce Temporary Chat": "Застосувати тимчасовий чат", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Переконайтеся, що ваш CSV-файл містить 4 колонки в такому порядку: Ім'я, Email, Пароль, Роль.", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index e6de5acda..f49abcc18 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(مثال کے طور پر: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(مثال کے طور پر: `sh webui.sh --api`)", "(latest)": "(تازہ ترین)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "", "{{ models }}": "{{ ماڈلز }}", "{{COUNT}} Available Tools": "", @@ -140,7 +140,6 @@ "Bad Response": "غلط جواب", "Banners": "بینرز", "Base Model (From)": "بیس ماڈل (سے)", - "Base URL": "", "Batch Size (num_batch)": "بیچ سائز (num_batch)", "before": "پہلے", "Being lazy": "سستی کر رہا ہے", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "ترمیم کریں", "Edit Arena Model": "ایرینا ماڈل میں ترمیم کریں", "Edit Channel": "", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "نئے سائن اپس کو فعال کریں", "Enabled": "فعال کردیا گیا ہے", + "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "یقینی بنائیں کہ آپ کی CSV فائل میں 4 کالم اس ترتیب میں شامل ہوں: نام، ای میل، پاس ورڈ، کردار", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index 6ea53db8d..b4a920478 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(vd: `sh webui.sh --api --api-auth tên_người_dùng_mật_khẩu`)", "(e.g. `sh webui.sh --api`)": "(vd: `sh webui.sh --api`)", "(latest)": "(mới nhất)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ mô hình }}", "{{COUNT}} Available Tools": "{{COUNT}} Công cụ có sẵn", @@ -140,7 +140,6 @@ "Bad Response": "Trả lời KHÔNG tốt", "Banners": "Biểu ngữ", "Base Model (From)": "Mô hình cơ sở (từ)", - "Base URL": "", "Batch Size (num_batch)": "Kích thước Lô (num_batch)", "before": "trước", "Being lazy": "Lười biếng", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "vd: Các công cụ để thực hiện các hoạt động khác nhau", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "", + "e.g., westus (leave blank for eastus)": "", "Edit": "Chỉnh sửa", "Edit Arena Model": "Chỉnh sửa Mô hình Arena", "Edit Channel": "Chỉnh sửa Kênh", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "Bật lấy mẫu Mirostat để kiểm soát perplexity.", "Enable New Sign Ups": "Cho phép đăng ký mới", "Enabled": "Đã bật", + "Endpoint URL": "", "Enforce Temporary Chat": "Bắt buộc Chat nháp", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Đảm bảo tệp CSV của bạn bao gồm 4 cột theo thứ tự sau: Name, Email, Password, Role.", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 50421f2d4..8c1c2d29b 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)", "(latest)": "(最新版)", - "(leave blank for Azure Commercial URL auto-generation)": "", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} 个可用工具", @@ -140,7 +140,6 @@ "Bad Response": "点踩此回答", "Banners": "公告横幅", "Base Model (From)": "基础模型 (来自)", - "Base URL": "", "Batch Size (num_batch)": "批大小 (num_batch)", "before": "对话", "Being lazy": "懒惰", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "例如:用于执行各种操作的工具", "e.g., 3, 4, 5 (leave blank for default)": "", "e.g., en-US,ja-JP (leave blank for auto-detect)": "例如,'en-US,ja-JP'(留空以便自动检测)", + "e.g., westus (leave blank for eastus)": "", "Edit": "编辑", "Edit Arena Model": "编辑竞技场模型", "Edit Channel": "编辑频道", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "启用 Mirostat 采样以控制困惑度", "Enable New Sign Ups": "允许新用户注册", "Enabled": "启用", + "Endpoint URL": "", "Enforce Temporary Chat": "强制临时聊天", "Enhance": "", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "确保您的 CSV 文件按以下顺序包含 4 列: 姓名、电子邮箱、密码、角色。", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 12d3dbf5c..6ca49ce76 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -4,7 +4,7 @@ "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如:`sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例如:`sh webui.sh --api`)", "(latest)": "(最新版)", - "(leave blank for Azure Commercial URL auto-generation)": "(留空以自動產生 Azure Commercial URL)", + "(leave blank for to use commercial endpoint)": "", "(Ollama)": "(Ollama)", "{{ models }}": "{{ models }}", "{{COUNT}} Available Tools": "{{COUNT}} 個可用工具", @@ -140,7 +140,6 @@ "Bad Response": "錯誤回應", "Banners": "橫幅", "Base Model (From)": "基礎模型(來自)", - "Base URL": "Base URL", "Batch Size (num_batch)": "批次大小(num_batch)", "before": "之前", "Being lazy": "懶惰模式", @@ -377,6 +376,7 @@ "e.g. Tools for performing various operations": "例如:用於執行各種操作的工具", "e.g., 3, 4, 5 (leave blank for default)": "例如:3、4、5(留空使用預設值)", "e.g., en-US,ja-JP (leave blank for auto-detect)": "例如:en-US, ja-JP(留空以自動偵測)", + "e.g., westus (leave blank for eastus)": "", "Edit": "編輯", "Edit Arena Model": "編輯競技場模型", "Edit Channel": "編輯頻道", @@ -404,6 +404,7 @@ "Enable Mirostat sampling for controlling perplexity.": "啟用 Mirostat 取樣以控制 perplexity。", "Enable New Sign Ups": "允許新使用者註冊", "Enabled": "已啟用", + "Endpoint URL": "", "Enforce Temporary Chat": "強制使用臨時對話", "Enhance": "增強", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "請確認您的 CSV 檔案包含以下 4 個欄位,並按照此順序排列:姓名、電子郵件、密碼、角色。", From ad1486c8bdd1bd233bd677a37e46e101cb64df0c Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 02:06:18 +0400 Subject: [PATCH 27/35] refac --- src/lib/components/layout/Sidebar/ChatItem.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lib/components/layout/Sidebar/ChatItem.svelte b/src/lib/components/layout/Sidebar/ChatItem.svelte index 9e1476310..74787d3c5 100644 --- a/src/lib/components/layout/Sidebar/ChatItem.svelte +++ b/src/lib/components/layout/Sidebar/ChatItem.svelte @@ -256,7 +256,10 @@ } confirmEdit = false; + } else { + chatTitle = title; } + generating = false; }; From c667d27c387ce1dd26c876c1bf38f1020aded103 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 02:37:23 +0400 Subject: [PATCH 28/35] refac --- backend/open_webui/utils/middleware.py | 7 ++++--- src/lib/components/chat/Placeholder.svelte | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 11c07cc1b..ec2949677 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1430,11 +1430,12 @@ async def process_chat_response( if after_tag: content_blocks[-1]["content"] = after_tag + tag_content_handler( + content_type, tags, after_tag, content_blocks + ) - content = after_tag break - - if content and content_blocks[-1]["type"] == content_type: + elif content_blocks[-1]["type"] == content_type: start_tag = content_blocks[-1]["start_tag"] end_tag = content_blocks[-1]["end_tag"] # Match end tag e.g., diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index ad7bd5009..bcf26d35d 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -202,7 +202,6 @@ {createMessagePair} placeholder={$i18n.t('How can I help you today?')} onChange={(input) => { - console.log('input', input); if (input.prompt !== null) { localStorage.setItem(`chat-input`, JSON.stringify(input)); } else { From ed5de96d1d445f4946e8219743b865cb18bb906b Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 02:41:33 +0400 Subject: [PATCH 29/35] fix: tool servers ui settings can be bypassed with search --- src/lib/components/chat/SettingsModal.svelte | 32 ++++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/lib/components/chat/SettingsModal.svelte b/src/lib/components/chat/SettingsModal.svelte index ed2e9eb7a..08b7899f7 100644 --- a/src/lib/components/chat/SettingsModal.svelte +++ b/src/lib/components/chat/SettingsModal.svelte @@ -123,16 +123,28 @@ 'alwaysonwebsearch' ] }, - { - id: 'connections', - title: 'Connections', - keywords: [] - }, - { - id: 'tools', - title: 'Tools', - keywords: [] - }, + ...($user?.role === 'admin' || + ($user?.role === 'user' && $config?.features?.enable_direct_connections) + ? [ + { + id: 'connections', + title: 'Connections', + keywords: [] + } + ] + : []), + + ...($user?.role === 'admin' || + ($user?.role === 'user' && $user?.permissions?.features?.direct_tool_servers) + ? [ + { + id: 'tools', + title: 'Tools', + keywords: [] + } + ] + : []), + { id: 'personalization', title: 'Personalization', From 803b39b00cbf011bdeb06f406f9d6af43c338d7e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 02:45:00 +0400 Subject: [PATCH 30/35] refac --- backend/open_webui/routers/users.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index 50014a5f6..a2bfbf665 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -21,7 +21,7 @@ from fastapi import APIRouter, Depends, HTTPException, Request, status from pydantic import BaseModel from open_webui.utils.auth import get_admin_user, get_password_hash, get_verified_user -from open_webui.utils.access_control import get_permissions +from open_webui.utils.access_control import get_permissions, has_permission log = logging.getLogger(__name__) @@ -205,9 +205,22 @@ async def get_user_settings_by_session_user(user=Depends(get_verified_user)): @router.post("/user/settings/update", response_model=UserSettings) async def update_user_settings_by_session_user( - form_data: UserSettings, user=Depends(get_verified_user) + request: Request, form_data: UserSettings, user=Depends(get_verified_user) ): - user = Users.update_user_settings_by_id(user.id, form_data.model_dump()) + updated_user_settings = form_data.model_dump() + if ( + user.role != "admin" + and "toolServers" in updated_user_settings.get("ui").keys() + and not has_permission( + user.id, + "features.direct_tool_servers", + request.app.state.config.USER_PERMISSIONS, + ) + ): + # If the user is not an admin and does not have permission to use tool servers, remove the key + updated_user_settings["ui"].pop("toolServers", None) + + user = Users.update_user_settings_by_id(user.id, updated_user_settings) if user: return user.settings else: From d62353c140c7a49f10056b0ca34fd4faff20e0f4 Mon Sep 17 00:00:00 2001 From: Serkan Sakar Date: Wed, 7 May 2025 00:56:20 +0200 Subject: [PATCH 31/35] enh: add presence_penalty parameter to openai --- backend/open_webui/utils/middleware.py | 3 +++ backend/open_webui/utils/payload.py | 1 + 2 files changed, 4 insertions(+) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index ec2949677..2ab73292c 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -672,6 +672,9 @@ def apply_params_to_form_data(form_data, model): if "frequency_penalty" in params and params["frequency_penalty"] is not None: form_data["frequency_penalty"] = params["frequency_penalty"] + if "presence_penalty" in params and params["presence_penalty"] is not None: + form_data["presence_penalty"] = params["presence_penalty"] + if "reasoning_effort" in params and params["reasoning_effort"] is not None: form_data["reasoning_effort"] = params["reasoning_effort"] diff --git a/backend/open_webui/utils/payload.py b/backend/open_webui/utils/payload.py index 5f8aafb78..d43dfd789 100644 --- a/backend/open_webui/utils/payload.py +++ b/backend/open_webui/utils/payload.py @@ -59,6 +59,7 @@ def apply_model_params_to_body_openai(params: dict, form_data: dict) -> dict: "top_p": float, "max_tokens": int, "frequency_penalty": float, + "presence_penalty": float, "reasoning_effort": str, "seed": lambda x: x, "stop": lambda x: [bytes(s, "utf-8").decode("unicode_escape") for s in x], From 3a6a05cef1d6203b8cd48fe3bfdc6d9f9c031dfc Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 03:05:49 +0400 Subject: [PATCH 32/35] doc: changelog --- CHANGELOG.md | 20 ++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fad0cd24..5c0c4de1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.6.7] - 2025-05-07 + +### Added + +- 🌐 **Custom Azure TTS API URL Support Added**: You can now define a custom Azure Text-to-Speech endpoint—enabling flexibility for enterprise deployments and regional compliance. +- ⚙️ **TOOL_SERVER_CONNECTIONS Environment Variable Suppor**: Easily configure and deploy tool servers via environment variables, streamlining setup and enabling faster enterprise provisioning. +- 👥 **Enhanced OAuth Group Handling as String or List**: OAuth group data can now be passed as either a list or a comma-separated string, improving compatibility with varied identity provider formats and reducing onboarding friction. + +### Fixed + +- 🧠 **Embedding with Ollama Proxy Endpoints Restored**: Fixed an issue where missing API config broke embedding for proxied Ollama models—ensuring consistent performance and compatibility. +- 🔐 **OIDC OAuth Login Issue Resolved**: Users can once again sign in seamlessly using OpenID Connect-based OAuth, eliminating login interruptions and improving reliability. +- 📝 **Notes Feature Access Fixed for Non-Admins**: Fixed an issue preventing non-admin users from accessing the Notes feature, restoring full cross-role collaboration capabilities. +- 🖼️ **Tika Loader Image Extraction Problem Resolved**: Ensured TikaLoader now processes 'extract_images' parameter correctly, restoring complete file extraction functionality in document workflows. +- 🎨 **Automatic1111 Image Model Setting Applied Properly**: Fixed an issue where switching to a specific image model via the UI wasn’t reflected in generation, re-enabling full visual creativity control. +- 🏷️ **Multiple XML Tags in Messages Now Parsed Correctly**: Fixed parsing issues when messages included multiple XML-style tags, ensuring clean and unbroken rendering of rich content in chats. +- 🖌️ **OpenAI Image Generation Issues Resolved**: Resolved broken image output when using OpenAI’s image generation, ensuring fully functional visual creation workflows. +- 🔎 **Tool Server Settings UI Privacy Restored**: Prevented restricted users from accessing tool server settings via search—restoring tight permissions control and safeguarding sensitive configurations. +- 🎧 **WebM Audio Transcription Now Supported**: Fixed an issue where WebM files failed during audio transcription—these formats are now fully supported, ensuring smoother voice note workflows and broader file compatibility. + ## [0.6.6] - 2025-05-05 ### Added diff --git a/package-lock.json b/package-lock.json index b5145a90b..4ebe758d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-webui", - "version": "0.6.6", + "version": "0.6.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-webui", - "version": "0.6.6", + "version": "0.6.7", "dependencies": { "@azure/msal-browser": "^4.5.0", "@codemirror/lang-javascript": "^6.2.2", diff --git a/package.json b/package.json index ce1cb2545..efd0f2cf3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-webui", - "version": "0.6.6", + "version": "0.6.7", "private": true, "scripts": { "dev": "npm run pyodide:fetch && vite dev --host", From 176a7fc98642ead85aa743bd6a3f1ae32bad5798 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 12:52:55 +0400 Subject: [PATCH 33/35] refac --- src/lib/components/chat/Chat.svelte | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index d578f3d63..5d11ce940 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -440,8 +440,10 @@ } } - loading = false; - await tick(); + if (!chatIdProp) { + loading = false; + await tick(); + } showControls.subscribe(async (value) => { if (controlPane && !$mobile) { From b1fb298bee709b71371a3d9625902351c99178f1 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 13:09:41 +0400 Subject: [PATCH 34/35] enh: contributions stats script --- Caddyfile.localhost | 64 ------------------------------------- contribution_stats.py | 74 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 64 deletions(-) delete mode 100644 Caddyfile.localhost create mode 100644 contribution_stats.py diff --git a/Caddyfile.localhost b/Caddyfile.localhost deleted file mode 100644 index 80728eedf..000000000 --- a/Caddyfile.localhost +++ /dev/null @@ -1,64 +0,0 @@ -# Run with -# caddy run --envfile ./example.env --config ./Caddyfile.localhost -# -# This is configured for -# - Automatic HTTPS (even for localhost) -# - Reverse Proxying to Ollama API Base URL (http://localhost:11434/api) -# - CORS -# - HTTP Basic Auth API Tokens (uncomment basicauth section) - - -# CORS Preflight (OPTIONS) + Request (GET, POST, PATCH, PUT, DELETE) -(cors-api) { - @match-cors-api-preflight method OPTIONS - handle @match-cors-api-preflight { - header { - Access-Control-Allow-Origin "{http.request.header.origin}" - Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" - Access-Control-Allow-Headers "Origin, Accept, Authorization, Content-Type, X-Requested-With" - Access-Control-Allow-Credentials "true" - Access-Control-Max-Age "3600" - defer - } - respond "" 204 - } - - @match-cors-api-request { - not { - header Origin "{http.request.scheme}://{http.request.host}" - } - header Origin "{http.request.header.origin}" - } - handle @match-cors-api-request { - header { - Access-Control-Allow-Origin "{http.request.header.origin}" - Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" - Access-Control-Allow-Headers "Origin, Accept, Authorization, Content-Type, X-Requested-With" - Access-Control-Allow-Credentials "true" - Access-Control-Max-Age "3600" - defer - } - } -} - -# replace localhost with example.com or whatever -localhost { - ## HTTP Basic Auth - ## (uncomment to enable) - # basicauth { - # # see .example.env for how to generate tokens - # {env.OLLAMA_API_ID} {env.OLLAMA_API_TOKEN_DIGEST} - # } - - handle /api/* { - # Comment to disable CORS - import cors-api - - reverse_proxy localhost:11434 - } - - # Same-Origin Static Web Server - file_server { - root ./build/ - } -} diff --git a/contribution_stats.py b/contribution_stats.py new file mode 100644 index 000000000..efd3f5567 --- /dev/null +++ b/contribution_stats.py @@ -0,0 +1,74 @@ +import os +import subprocess +from collections import Counter + +CONFIG_FILE_EXTENSIONS = (".json", ".yml", ".yaml", ".ini", ".conf", ".toml") + + +def is_text_file(filepath): + # Check for binary file by scanning for null bytes. + try: + with open(filepath, "rb") as f: + chunk = f.read(4096) + if b"\0" in chunk: + return False + return True + except Exception: + return False + + +def should_skip_file(path): + base = os.path.basename(path) + # Skip dotfiles and dotdirs + if base.startswith("."): + return True + # Skip config files by extension + if base.lower().endswith(CONFIG_FILE_EXTENSIONS): + return True + return False + + +def get_tracked_files(): + try: + output = subprocess.check_output(["git", "ls-files"], text=True) + files = output.strip().split("\n") + files = [f for f in files if f and os.path.isfile(f)] + return files + except subprocess.CalledProcessError: + print("Error: Are you in a git repository?") + return [] + + +def main(): + files = get_tracked_files() + email_counter = Counter() + total_lines = 0 + + for file in files: + if should_skip_file(file): + continue + if not is_text_file(file): + continue + try: + blame = subprocess.check_output( + ["git", "blame", "-e", file], text=True, errors="replace" + ) + for line in blame.splitlines(): + # The email always inside <> + if "<" in line and ">" in line: + try: + email = line.split("<")[1].split(">")[0].strip() + except Exception: + continue + email_counter[email] += 1 + total_lines += 1 + except subprocess.CalledProcessError: + continue + + for email, lines in email_counter.most_common(): + percent = (lines / total_lines * 100) if total_lines else 0 + print(f"{email}: {lines} {percent:.2f}%") + + +if __name__ == "__main__": + main() From a38f3c7617caad7af2a13c75bcea2eb9e247b813 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 7 May 2025 13:10:24 +0400 Subject: [PATCH 35/35] refac --- contribution_stats.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribution_stats.py b/contribution_stats.py index efd3f5567..3caa4738e 100644 --- a/contribution_stats.py +++ b/contribution_stats.py @@ -67,7 +67,7 @@ def main(): for email, lines in email_counter.most_common(): percent = (lines / total_lines * 100) if total_lines else 0 - print(f"{email}: {lines} {percent:.2f}%") + print(f"{email}: {lines}/{total_lines} {percent:.2f}%") if __name__ == "__main__":