From 83fad5e9f7e83aab396193e48ccb202b01f062bc Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 9 Mar 2026 18:45:33 -0500 Subject: [PATCH 001/221] refac --- src/lib/components/chat/FileNav.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib/components/chat/FileNav.svelte b/src/lib/components/chat/FileNav.svelte index 81ee750a2..34da5272d 100644 --- a/src/lib/components/chat/FileNav.svelte +++ b/src/lib/components/chat/FileNav.svelte @@ -172,6 +172,9 @@ if (terminal && terminal.url !== prevTerminalUrl) { prevTerminalUrl = terminal.url; + loading = true; + error = null; + entries = []; (async () => { // Discover server features (terminal enabled/disabled) const config = await getTerminalConfig(terminal.url, terminal.key); @@ -531,6 +534,7 @@ }); if (!handledDisplayFile) { + loading = true; if (savedPath === '/') { const rawCwd = await getCwd(terminal.url, terminal.key); const cwd = rawCwd ? normalizePath(rawCwd) : null; From 8970923940745a5912967ac490db7ef3242ba3ad Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 9 Mar 2026 19:08:32 -0500 Subject: [PATCH 002/221] refac --- src/lib/components/chat/MessageInput.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 4664940d3..9bd8f13d9 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -82,7 +82,7 @@ import InputVariablesModal from './MessageInput/InputVariablesModal.svelte'; import Voice from '../icons/Voice.svelte'; - import Cloud from '../icons/Cloud.svelte'; + import Terminal from '../icons/Terminal.svelte'; import IntegrationsMenu from './MessageInput/IntegrationsMenu.svelte'; import TerminalMenu from './MessageInput/TerminalMenu.svelte'; import Component from '../icons/Component.svelte'; @@ -1756,7 +1756,7 @@ ? 'm-1' : 'focus:outline-hidden rounded-full'}" > - + + + + +
From 8da29566a1f81c38e80009bdea3ce4d9be860605 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 11 Mar 2026 15:22:51 -0500 Subject: [PATCH 012/221] refac: safer tool server handling --- backend/open_webui/routers/tools.py | 12 +++++++++--- backend/open_webui/utils/tools.py | 13 ++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/routers/tools.py b/backend/open_webui/routers/tools.py index 351c491bd..0569414d4 100644 --- a/backend/open_webui/routers/tools.py +++ b/backend/open_webui/routers/tools.py @@ -88,9 +88,15 @@ async def get_tools( # OpenAPI Tool Servers server_access_grants = {} for server in await get_tool_servers(request): - connection = request.app.state.config.TOOL_SERVER_CONNECTIONS[ - server.get("idx", 0) - ] + server_idx = server.get("idx", 0) + connections = request.app.state.config.TOOL_SERVER_CONNECTIONS + if server_idx >= len(connections): + log.warning( + f"Tool server index {server_idx} out of range " + f"(have {len(connections)} connections), skipping server {server.get('id')}" + ) + continue + connection = connections[server_idx] server_config = connection.get("config", {}) server_id = f"server:{server.get('id')}" diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index e525a8284..e60544261 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -275,11 +275,14 @@ async def get_tools( continue tool_server_idx = tool_server_data.get("idx", 0) - tool_server_connection = ( - request.app.state.config.TOOL_SERVER_CONNECTIONS[ - tool_server_idx - ] - ) + connections = request.app.state.config.TOOL_SERVER_CONNECTIONS + if tool_server_idx >= len(connections): + log.warning( + f"Tool server index {tool_server_idx} out of range " + f"(have {len(connections)} connections), skipping server {server_id}" + ) + continue + tool_server_connection = connections[tool_server_idx] # Check access control for tool server if not has_connection_access( From 035b981e11a549c6226ac0346f3747f454767ae2 Mon Sep 17 00:00:00 2001 From: Lorenzo Maffioli <63981558+lorenzophys@users.noreply.github.com> Date: Wed, 11 Mar 2026 21:27:06 +0100 Subject: [PATCH 013/221] feat(otel): introduce an environment variable to control the export interval of otel metrics (#22529) --- backend/open_webui/env.py | 3 +++ backend/open_webui/utils/telemetry/metrics.py | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 30334d9c0..7cd3898ea 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -1007,6 +1007,9 @@ def parse_section(section): ).lower() OTEL_BASIC_AUTH_USERNAME = os.environ.get("OTEL_BASIC_AUTH_USERNAME", "") OTEL_BASIC_AUTH_PASSWORD = os.environ.get("OTEL_BASIC_AUTH_PASSWORD", "") +OTEL_METRICS_EXPORT_INTERVAL_MILLIS = int( + os.environ.get("OTEL_METRICS_EXPORT_INTERVAL_MILLIS", "10000") +) OTEL_METRICS_BASIC_AUTH_USERNAME = os.environ.get( "OTEL_METRICS_BASIC_AUTH_USERNAME", OTEL_BASIC_AUTH_USERNAME diff --git a/backend/open_webui/utils/telemetry/metrics.py b/backend/open_webui/utils/telemetry/metrics.py index cafe779d8..5ff1129b0 100644 --- a/backend/open_webui/utils/telemetry/metrics.py +++ b/backend/open_webui/utils/telemetry/metrics.py @@ -44,11 +44,10 @@ OTEL_METRICS_BASIC_AUTH_PASSWORD, OTEL_METRICS_OTLP_SPAN_EXPORTER, OTEL_METRICS_EXPORTER_OTLP_INSECURE, + OTEL_METRICS_EXPORT_INTERVAL_MILLIS, ) from open_webui.models.users import Users -_EXPORT_INTERVAL_MILLIS = 10_000 # 10 seconds - def _build_meter_provider(resource: Resource) -> MeterProvider: """Return a configured MeterProvider.""" @@ -67,7 +66,7 @@ def _build_meter_provider(resource: Resource) -> MeterProvider: OTLPHttpMetricExporter( endpoint=OTEL_METRICS_EXPORTER_OTLP_ENDPOINT, headers=headers ), - export_interval_millis=_EXPORT_INTERVAL_MILLIS, + export_interval_millis=OTEL_METRICS_EXPORT_INTERVAL_MILLIS, ) ] else: @@ -78,7 +77,7 @@ def _build_meter_provider(resource: Resource) -> MeterProvider: insecure=OTEL_METRICS_EXPORTER_OTLP_INSECURE, headers=headers, ), - export_interval_millis=_EXPORT_INTERVAL_MILLIS, + export_interval_millis=OTEL_METRICS_EXPORT_INTERVAL_MILLIS, ) ] From cee645017dbbee005e41aa67133e74f2aaa48b3d Mon Sep 17 00:00:00 2001 From: alifurkanstahl <180474740+alifurkanstahl@users.noreply.github.com> Date: Wed, 11 Mar 2026 21:27:24 +0100 Subject: [PATCH 014/221] i18n(tr-TR): improve Turkish translations - increase coverage and fix typos/terminology errors (#22544) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * i18n: complete Turkish translations for {{}} placeholder strings * i18n(tr-TR): fix multiple translation errors * i18n(tr-TR): add missing translations for Y section * i18n(tr-TR): add missing translations for Model section * i18n(tr-TR): add missing Turkish translations for Image section * i18n(tr-TR): translate Knowledge section strings in Turkish * i18n(tr-TR): translate upload-related strings in Turkish * 18n: translate Invalid error messages to Turkish. * i18n(tr-TR):add Turkish translations for Enter input fields * i18n(tr-TR): add missing translations for "No" strings * i18n(tr-TR): replace "istem" with "prompt" for consistency * i18n(tr-TR): standardize "ID" terminology in Turkish translations * i18n(tr-TR): add missing translations for "S" strings * i18n(tr-TR): add missing translations for basic UI and navigation element * i18n(tr-TR): add missing translations for C-D sections * i18n(tr-TR): add missing translations for E-F sections * i18n(tr-TR): standardize "Chunk" terminology to "Parça" --------- Co-authored-by: MSI I9 12900KS RTX --- src/lib/i18n/locales/tr-TR/translation.json | 762 ++++++++++---------- 1 file changed, 381 insertions(+), 381 deletions(-) diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index c442363e6..6dd6a8839 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -19,18 +19,18 @@ "{{COUNT}} Rows": "{{COUNT}} satır", "{{COUNT}} Sources": "{{COUNT}} kaynak", "{{COUNT}} words": "{{COUNT}} kelime", - "{{COUNT}}d_time_ago": "", - "{{COUNT}}h_time_ago": "", - "{{COUNT}}m_time_ago": "", - "{{COUNT}}w_time_ago": "", - "{{COUNT}}y_time_ago": "", - "{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "", + "{{COUNT}}d_time_ago": "{{COUNT}} gün önce", + "{{COUNT}}h_time_ago": "{{COUNT}} saat önce", + "{{COUNT}}m_time_ago": "{{COUNT}} dakika önce", + "{{COUNT}}w_time_ago": "{{COUNT}} hafta önce", + "{{COUNT}}y_time_ago": "{{COUNT}} yıl önce", + "{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "{{LOCALIZED_DATE}} tarihinde saat {{LOCALIZED_TIME}}", "{{model}} download has been canceled": "{{model}} indirme işlemi iptal edildi", "{{modelName}} profile image": "{{modelName}} profil resmi", "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}}, {{REACTION}} ile tepki verdi", "{{user}}'s Chats": "{{user}}'ın Sohbetleri", "{{webUIName}} Backend Required": "{{webUIName}} Arka-uç Gerekli", - "*Prompt node ID(s) are required for image generation": "*Görüntü oluşturma için düğüm kimlikleri gereklidir", + "*Prompt node ID(s) are required for image generation": "*Görüntü oluşturma için düğüm ID'leri gereklidir", "1 Source": "1 Kaynak", "1m_time_ago": "1 dk önce", "A collaboration channel where people join as members": "İnsanların üye olarak katıldığı bir iş birliği kanalı", @@ -254,8 +254,8 @@ "by {{name}}": "{{name}} tarafından", "By {{name}}": "{{name}} Tarafından", "Bypass Embedding and Retrieval": "", - "Bypass Web Loader": "", - "Cache Base Model List": "", + "Bypass Web Loader": "Web Yükleyicisini Atla", + "Cache Base Model List": "Temel Model Listesini Önbelleğe Al", "Calendar": "Takvim", "Call": "Arama", "Call feature is not supported when using Web STT engine": "Web STT motoru kullanılırken arama özelliği desteklenmiyor", @@ -281,9 +281,9 @@ "Channels": "Kanallar", "Character": "Karakter", "Character limit for autocomplete generation input": "Otomatik tamamlama üretimi girişi için karakter sınırı", - "Chart new frontiers": "", + "Chart new frontiers": "Yeni ufuklar çiz", "Chat": "Sohbet", - "Chat archived.": "", + "Chat archived.": "Sohbet arşivlendi.", "Chat Background Image": "Sohbet Arka Plan Resmi", "Chat Bubble UI": "Sohbet Balonu Arayüzü", "Chat Completions": "Sohbet Tamamlamaları", @@ -302,10 +302,10 @@ "Check for updates": "Güncellemeleri kontrol et", "Checking for updates...": "Güncellemeler kontrol ediliyor...", "Choose a model before saving...": "Kaydetmeden önce bir model seçin...", - "Chunk Min Size Target": "", - "Chunk Overlap": "Chunk Çakışması", - "Chunk Size": "Chunk Boyutu", - "Chunks smaller than this threshold will be merged with neighboring chunks when possible. Set to 0 to disable merging.": "", + "Chunk Min Size Target": "Parça Minimum Boyut Hedefi", + "Chunk Overlap": "Parça Çakışması", + "Chunk Size": "Parça Boyutu", + "Chunks smaller than this threshold will be merged with neighboring chunks when possible. Set to 0 to disable merging.": "Bu eşiğin altındaki parçalar mümkün olduğunda komşu parçalarla birleştirilir. Birleştirmeyi devre dışı bırakmak için 0 yapın.", "Ciphers": "Şifreler", "Citation": "Alıntı", "Citations": "Alıntılar", @@ -319,7 +319,7 @@ "Click here to": "Şunu yapmak için buraya tıklayın:", "Click here to download user import template file.": "Kullanıcı içe aktarma şablon dosyasını indirmek için buraya tıklayın.", "Click here to learn more about faster-whisper and see the available models.": "faster-whisper hakkında daha fazla bilgi edinmek ve mevcut modelleri görmek için buraya tıklayın.", - "Click here to see available models.": "Erişilebilir Modelleri Görmek İçin Buraya Tıklayın", + "Click here to see available models.": "Erişilebilir modelleri görmek için buraya tıklayın", "Click here to select": "Seçmek için buraya tıklayın", "Click here to select a csv file.": "Bir CSV dosyası seçmek için buraya tıklayın.", "Click here to select a py file.": "Bir py dosyası seçmek için buraya tıklayın.", @@ -341,18 +341,18 @@ "Close Modal": "Pencereyi kapat", "Close settings modal": "Ayarlar penceresini kapat", "Close Sidebar": "Kenar çubuğunu kapat", - "cloud": "", + "cloud": "bulut", "CMU ARCTIC speaker embedding name": "", - "Code Block": "", - "Code Editor": "", + "Code Block": "Kod Bloğu", + "Code Editor": "Kod Düzenleyici", "Code execution": "Kod yürütme", - "Code Execution": "", - "Code Execution Engine": "", - "Code Execution Timeout": "", + "Code Execution": "Kod Yürütme", + "Code Execution Engine": "Kod Yürütme Motoru", + "Code Execution Timeout": "Kod Yürütme Zaman Aşımı", "Code formatted successfully": "Kod başarıyla biçimlendirildi", "Code Interpreter": "Kod Yorumlayıcısı", "Code Interpreter Engine": "Kod Yorumlama Motoru", - "Code Interpreter Prompt Template": "Kod Yorumlama İstem Şablonu", + "Code Interpreter Prompt Template": "Kod Yorumlama Prompt Şablonu", "Collaboration channel where people join as members": "İnsanların üye olarak katıldığı bir iş birliği kanalı", "Collapse": "Daralt", "Collection": "Koleksiyon", @@ -364,17 +364,17 @@ "ComfyUI Base URL is required.": "ComfyUI Temel URL gerekli.", "ComfyUI Workflow": "ComfyUI İş Akışı", "ComfyUI Workflow Nodes": "ComfyUI İş Akışı Düğümleri", - "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma separated Node Ids (e.g. 1 or 1,2)": "Virgülle ayrılmış Node ID'leri (örn. 1 veya 1,2)", "command": "komut", "Command": "Komut", "Comment": "Yorum", - "Commit Message": "", + "Commit Message": "Commit Mesajı", "Community Reviews": "Topluluk İncelemeleri", "Completions": "Tamamlamalar", "Compress Images in Channels": "Kanallarda Görselleri Sıkıştır", "Concurrent Requests": "Eşzamanlı İstekler", - "Config": "", - "Config imported successfully": "", + "Config": "Yapılandırma", + "Config imported successfully": "Yapılandırma başarıyla içe aktarıldı", "Configure": "Yapılandırma", "Confirm": "Onayla", "Confirm Password": "Parolayı Onayla", @@ -384,7 +384,7 @@ "Connect to an AI provider to start chatting": "Sohbete başlamak için bir AI sağlayıcısına bağlanın", "Connect to Open Terminal instances to browse files and use them as always-on tools. Only one can be active at a time.": "Dosyalara göz atmak ve bunları her zaman açık araçlar olarak kullanmak için Open Terminal örneklerine bağlanın. Aynı anda yalnızca biri etkin olabilir.", "Connect to Open Terminal instances. All users will have access to file browsing and terminal tools through these servers.": "Open Terminal örneklerine bağlanın. Tüm kullanıcılar bu sunucular üzerinden dosya gezintisine ve terminal araçlarına erişebilecek.", - "Connect to your own OpenAI compatible API endpoints.": "", + "Connect to your own OpenAI compatible API endpoints.": "Kendi OpenAI uyumlu API uç noktalarınıza bağlanın.", "Connect to your own OpenAPI compatible external tool servers.": "Kendi OpenAPI uyumlu harici araç sunucularınıza bağlanın.", "Connection failed": "Bağlantı başarısız", "Connection successful": "Bağlantı başarılı", @@ -396,7 +396,7 @@ "Contact Admin for WebUI Access": "WebUI Erişimi için Yöneticiyle İletişime Geçin", "Content": "İçerik", "Content Extraction Engine": "İçerik Çıkarma Motoru", - "Content lengths (character counts only)": "", + "Content lengths (character counts only)": "İçerik uzunlukları (sadece karakter sayısı)", "Continue Response": "Yanıta Devam Et", "Continue with {{provider}}": "{{provider}} ile devam et", "Continue with Email": "E-posta ile devam edin", @@ -414,15 +414,15 @@ "Copy API Key": "API Anahtarını Kopyala", "Copy content": "İçeriği kopyala", "Copy Formatted Text": "Biçimlenirilmiş Metni Kopyala", - "Copy Last Code Block": "", - "Copy Last Response": "", + "Copy Last Code Block": "Son Kod Bloğunu Kopyala", + "Copy Last Response": "Son Yanıtı Kopyala", "Copy link": "Bağlantıyı kopyala", "Copy Link": "Bağlantıyı Kopyala", - "Copy Prompt": "", + "Copy Prompt": "Prompt'u Kopyala", "Copy Share Link": "", "Copy to clipboard": "Panoya kopyala", - "Copy Token": "", - "Copy URL": "", + "Copy Token": "Token'ı Kopyala", + "Copy URL": "URL'yi Kopyala", "Copying to clipboard was successful!": "Panoya kopyalama başarılı!", "CORS must be properly configured by the provider to allow requests from Open WebUI.": "Open WebUI’dan gelen isteklerin kabul edilebilmesi için sağlayıcının CORS yapılandırmasının doğru şekilde yapılmış olması gerekir.", "Could not read file.": "Dosya okunamadı.", @@ -454,19 +454,19 @@ "Custom": "Özel", "Custom description enabled": "Özel açıklama etkin", "Custom Gender": "Özel Cinsiyet", - "Custom Parameter Name": "", - "Custom Parameter Value": "", + "Custom Parameter Name": "Özel Parametre Adı", + "Custom Parameter Value": "Özel Parametre Değeri", "Daily Messages": "Günlük Mesajlar", "Danger Zone": "Tehlikeli Bölge", "Dark": "Koyu", "Data Controls": "Veri Kontrolleri", "Database": "Veritabanı", - "Datalab Marker API": "", + "Datalab Marker API": "Datalab Marker API", "DD/MM/YYYY": "GG/AA/YYYY", - "DDGS Backend": "", + "DDGS Backend": "DDGS Backend", "December": "Aralık", "Decrease UI Scale": "Arayüz Ölçeğini Küçült", - "Deepgram": "", + "Deepgram": "Deepgram", "Default": "Varsayılan", "Default (Open AI)": "Varsayılan (Open AI)", "Default (SentenceTransformers)": "Varsayılan (SentenceTransformers)", @@ -483,11 +483,11 @@ "Default Prompt Suggestions": "Varsayılan Prompt Önerileri", "Default to 389 or 636 if TLS is enabled": "TLS etkinse 389 veya 636'ya varsayılan olarak", "Default to ALL": "TÜMÜ'nü varsayılan olarak", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Odaklanmış ve ilgili içerik çıkarımı için varsayılan olarak bölümlenmiş alma kullanılır, çoğu durum için bu önerilir.", "Default User Role": "Varsayılan Kullanıcı Rolü", "Defaults": "Varsayılanlar", "Delete": "Sil", - "Delete {{name}}": "", + "Delete {{name}}": "{{name}} öğesini sil", "Delete a model": "Bir modeli sil", "Delete All": "Tümünü Sil", "Delete All Chats": "Tüm Sohbetleri Sil", @@ -511,7 +511,7 @@ "Deleted {{deleteModelTag}}": "{{deleteModelTag}} silindi", "Deleted {{name}}": "{{name}} silindi", "Deleted User": "Kullanıcı Silindi", - "Deployment names are required for Azure OpenAI": "", + "Deployment names are required for Azure OpenAI": "Azure OpenAI için dağıtım adları gereklidir", "Desc": "Azalan", "Describe the edit...": "Düzenlemeyi açıklayın...", "Describe the image...": "Görseli açıklayın...", @@ -519,7 +519,7 @@ "Describe your knowledge base and objectives": "Bilgi tabanınızı ve hedeflerinizi açıklayın", "Description": "Açıklama", "Detect Artifacts Automatically": "Eserleri Otomatik Algıla", - "Dictate": "", + "Dictate": "Dikte Et", "Didn't fully follow instructions": "Talimatları tam olarak takip etmedi", "Direct": "Doğrudan", "Direct Connections": "Doğrudan Bağlantılar", @@ -529,8 +529,8 @@ "Directory selection was cancelled": "Dizin seçimi iptal edildi", "Disable All": "Tümünü Devre Dışı Bırak", "Disable Code Interpreter": "Kod Yorumlayıcıyı Devre Dışı Bırak", - "Disable Image Extraction": "", - "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "", + "Disable Image Extraction": "Görsel Çıkarmayı Devre Dışı Bırak", + "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "PDF'den görsel çıkarmayı devre dışı bırakır. LLM Kullan etkinse görseller otomatik olarak altyazılanır. Varsayılan olarak False.", "Disabled": "Devre Dışı", "Discover a function": "Bir fonksiyon keşfedin", "Discover a model": "Bir model keşfedin", @@ -555,12 +555,12 @@ "Do not install tools from sources you do not fully trust.": "Tamamen güvenmediğiniz kaynaklardan araçlar yüklemeyin.", "Do you want to sync your usage stats with Open WebUI Community?": "Kullanım istatistiklerinizi Open WebUI Community ile senkronize etmek istiyor musunuz?", "Docling": "Docling", - "Docling Parameters": "", - "Docling Server URL required.": "", + "Docling Parameters": "Docling Parametreleri", + "Docling Server URL required.": "Docling Sunucu URL'si gereklidir.", "Document": "Belge", - "Document Intelligence": "", - "Document Intelligence endpoint required.": "", - "Document Intelligence Model": "", + "Document Intelligence": "Document Intelligence", + "Document Intelligence endpoint required.": "Document Intelligence uç noktası gereklidir.", + "Document Intelligence Model": "Document Intelligence Modeli", "Documentation": "Dökümantasyon", "Documents": "Belgeler", "does not make any external connections, and your data stays securely on your locally hosted server.": "herhangi bir harici bağlantı yapmaz ve verileriniz güvenli bir şekilde yerel olarak barındırılan sunucunuzda kalır.", @@ -580,18 +580,18 @@ "Downloading stats...": "İstatistikler indiriliyor...", "Draw": "Çiz", "Drop any files here to upload": "Yüklemek için dosyaları buraya bırakın", - "Drop files here": "", + "Drop files here": "Dosyaları buraya bırakın", "Drop files here to upload": "Yüklemek için dosyaları buraya bırakın", - "DuckDuckGo": "", + "DuckDuckGo": "DuckDuckGo", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "örn. '30s', '10m'. Geçerli zaman birimleri 's', 'm', 'h'.", "e.g. 'low', 'medium', 'high'": "örn. 'low', 'medium', 'high'", "e.g. \"json\" or a JSON schema": "örn. \"json\" veya JSON şablonu", "e.g. 60": "örn. 60", "e.g. A filter to remove profanity from text": "örn. Metinden küfürleri kaldırmak için bir filtre", "e.g. about the Roman Empire": "örn. Roma İmparatorluğu hakkında", - "e.g. alloy, echo, shimmer": "", - "e.g. Code Review Guidelines": "", - "e.g. code-review-guidelines": "", + "e.g. alloy, echo, shimmer": "örn. alloy, echo, shimmer", + "e.g. Code Review Guidelines": "örn. Kod İnceleme Yönergeleri", + "e.g. code-review-guidelines": "örn. kod-inceleme-yönergeleri", "e.g. en": "örn. en", "e.g. My Filter": "örn. Benim Filtrem", "e.g. My Tools": "örn. Benim Araçlarım", @@ -601,11 +601,11 @@ "e.g. Step-by-step instructions for code reviews": "örn. Kod incelemeleri için adım adım talimatlar", "e.g. Tell me a fun fact": "örn. Bana eğlenceli bir bilgi söyle", "e.g. Tell me a fun fact about the Roman Empire": "örn. Bana Roma İmparatorluğu hakkında eğlenceli bir bilgi söyle", - "e.g. Tools for performing various operations": " örn.Çeşitli işlemleri gerçekleştirmek için araçlar", + "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)": "örn. 3, 4, 5 (öntanımlı değer için boş bırakın)", - "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "", + "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "örn. audio/wav,audio/mpeg,video/* (varsayılan için boş bırakın)", "e.g., en-US,ja-JP (leave blank for auto-detect)": "örn. en-US, ja-JP (otomatik tanıma için boş bırakın)", - "e.g., westus (leave blank for eastus)": "ö", + "e.g., westus (leave blank for eastus)": "örn. westus (öntanımlı değer için eastus)", "Edit": "Düzenle", "Edit Arena Model": "Arena Modelini Düzenle", "Edit Channel": "Kanalı Düzenle", @@ -615,16 +615,16 @@ "Edit Image": "Görseli Düzenle", "Edit Last Message": "Son Mesajı Düzenle", "Edit Memory": "Belleği Düzenle", - "Edit Prompt": "", + "Edit Prompt": "Prompt'u Düzenle", "Edit Terminal Connection": "Terminal Bağlantısını Düzenle", "Edit User": "Kullanıcıyı Düzenle", "Edit User Group": "Kullanıcı Grubunu Düzenle", - "Edit workflow.json content": "", + "Edit workflow.json content": "workflow.json içeriğini düzenle", "edited": "düzenlendi", "Edited": "Düzenlendi", "Editing": "Düzenleniyor", - "Eject": "", - "Eject model": "", + "Eject": "Çıkar", + "Eject model": "Modeli çıkar", "ElevenLabs": "ElevenLabs", "Email": "E-posta", "Embark on adventures": "Maceralara atıl", @@ -633,9 +633,9 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Gömme Modeli", "Embedding Model Engine": "Gömme Modeli Motoru", - "Empty message": "", + "Empty message": "Boş mesaj", "Enable All": "Tümünü Etkinleştir", - "Enable API Keys": "", + "Enable API Keys": "API Anahtarlarını Etkinleştir", "Enable autocomplete generation for chat messages": "Sohbet mesajları için otomatik tamamlama üretimini etkinleştir", "Enable Code Execution": "Kod Çalıştırmayı Etkinleştir", "Enable Code Interpreter": "Kod Yorumlayıcıyı Etkinleştir", @@ -648,7 +648,7 @@ "Enable New Sign Ups": "Yeni Kayıtları Etkinleştir", "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Etkin", - "End Tag": "", + "End Tag": "Bitiş Etiketi", "Endpoint URL": "Uçnokta URL", "Enforce Temporary Chat": "Geçici Sohbete Zorla", "Enhance": "İyileştir", @@ -656,11 +656,11 @@ "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV dosyanızın şu sırayla 4 sütun içerdiğinden emin olun: İsim, E-posta, Şifre, Rol.", "Enter {{role}} message here": "Buraya {{role}} mesajını girin", "Enter a detail about yourself for your LLMs to recall": "LLM'lerinizin hatırlaması için kendiniz hakkında bir bilgi girin", - "Enter a title for the pending user info overlay. Leave empty for default.": "", - "Enter a watermark for the response. Leave empty for none.": "", - "Enter additional headers in JSON format": "", - "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "", - "Enter additional parameters in JSON format": "", + "Enter a title for the pending user info overlay. Leave empty for default.": "Bekleyen kullanıcı bilgi katmanı için bir başlık girin. Varsayılan için boş bırakın.", + "Enter a watermark for the response. Leave empty for none.": "Yanıt için bir filigran girin. Yoksa boş bırakın.", + "Enter additional headers in JSON format": "JSON formatında ek başlıklar girin", + "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "JSON formatında ek başlıklar girin (örn. {\"X-Custom-Header\": \"value\"})", + "Enter additional parameters in JSON format": "JSON formatında ek parametreler girin", "Enter api auth string (e.g. username:password)": "Api auth dizesini girin (örn. kullanıcı adı:parola)", "Enter Application DN": "Uygulama DN'sini Girin", "Enter Application DN Password": "Uygulama DN Parolasını Girin", @@ -669,50 +669,50 @@ "Enter Bocha Search API Key": "Bocha Search API Anahtarını Girin", "Enter Brave Search API Key": "Brave Search API Anahtarını Girin", "Enter certificate path": "Sertifika yolunu girin", - "Enter Chunk Min Size Target": "", - "Enter Chunk Overlap": "Chunk Örtüşmesini Girin", - "Enter Chunk Size": "Chunk Boyutunu Girin", - "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "", - "Enter content for the pending user info overlay. Leave empty for default.": "", - "Enter coordinates (e.g. 51.505, -0.09)": "", - "Enter Datalab Marker API Base URL": "", - "Enter Datalab Marker API Key": "", + "Enter Chunk Min Size Target": "Parça Minimum Boyut Hedefini Girin", + "Enter Chunk Overlap": "Parça Çakışmasını Girin", + "Enter Chunk Size": "Parça Boyutunu Girin", + "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Virgülle ayrılmış \"token:bias_value\" çiftlerini girin (örnek: 5432:100, 413:-100)", + "Enter content for the pending user info overlay. Leave empty for default.": "Bekleyen kullanıcı bilgi katmanı için içerik girin. Varsayılan için boş bırakın.", + "Enter coordinates (e.g. 51.505, -0.09)": "Koordinatları girin (örn. 51.505, -0.09)", + "Enter Datalab Marker API Base URL": "Datalab Marker API Taban URL'sini Girin", + "Enter Datalab Marker API Key": "Datalab Marker API Anahtarını Girin", "Enter description": "Açıklama girin", - "Enter Docling API Key": "", - "Enter Docling Server URL": "", - "Enter Document Intelligence Endpoint": "", - "Enter Document Intelligence Key": "", - "Enter Document Intelligence Model": "", - "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "", - "Enter Exa API Key": "", - "Enter External Document Loader API Key": "", - "Enter External Document Loader URL": "", + "Enter Docling API Key": "Docling API Anahtarını Girin", + "Enter Docling Server URL": "Docling Sunucu URL'sini Girin", + "Enter Document Intelligence Endpoint": "Document Intelligence Endpoint'ini Girin", + "Enter Document Intelligence Key": "Document Intelligence Anahtarını Girin", + "Enter Document Intelligence Model": "Document Intelligence Modelini Girin", + "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "Virgülle ayrılmış alan adlarını girin (örn., example.com,site.org,!excludedsite.com)", + "Enter Exa API Key": "Exa API Anahtarını Girin", + "Enter External Document Loader API Key": "Harici Belge Yükleyici API Anahtarını Girin", + "Enter External Document Loader URL": "Harici Belge Yükleyici URL'sini Girin", "Enter External Web Loader API Key": "Harici Web Yükleyici API Anahtarını Girin", "Enter External Web Loader URL": "Harici Web Yükleyici URL'sini Girin", "Enter External Web Search API Key": "Harici Web Arama API Anahtarını Girin", "Enter External Web Search URL": "Harici Web Arama URL'sini Girin", - "Enter Firecrawl API Base URL": "", - "Enter Firecrawl API Key": "", - "Enter Firecrawl Timeout": "", - "Enter folder name": "", - "Enter function name filter list (e.g. func1, !func2)": "", + "Enter Firecrawl API Base URL": "Firecrawl API Taban URL'sini Girin", + "Enter Firecrawl API Key": "Firecrawl API Anahtarını Girin", + "Enter Firecrawl Timeout": "Firecrawl Zaman Aşımını Girin", + "Enter folder name": "Klasör adını girin", + "Enter function name filter list (e.g. func1, !func2)": "Fonksiyon adı filtre listesini girin (örn. func1, !func2)", "Enter Github Raw URL": "Github Raw URL'sini girin", "Enter Google PSE API Key": "Google PSE API Anahtarını Girin", "Enter Google PSE Engine Id": "Google PSE Engine Id'sini Girin", "Enter hex color (e.g. #FF0000)": "", "Enter Image Size (e.g. 512x512)": "Görüntü Boyutunu Girin (örn. 512x512)", - "Enter Jina API Base URL": "", + "Enter Jina API Base URL": "Jina API Taban URL'sini Girin", "Enter Jina API Key": "Jina API Anahtarını Girin", - "Enter JSON config (e.g., {\"disable_links\": true})": "", - "Enter Jupyter Password": "", - "Enter Jupyter Token": "", - "Enter Jupyter URL": "", + "Enter JSON config (e.g., {\"disable_links\": true})": "JSON yapılandırması girin (örn., {\"disable_links\": true})", + "Enter Jupyter Password": "Jupyter Parolasını Girin", + "Enter Jupyter Token": "Jupyter Token'ını Girin", + "Enter Jupyter URL": "Jupyter URL'sini Girin", "Enter Kagi Search API Key": "Kagi Search API Anahtarını Girin", "Enter Key Behavior": "Enter Tuşu Davranışı", "Enter language codes": "Dil kodlarını girin", - "Enter MinerU API Key": "", - "Enter Mistral API Base URL": "", - "Enter Mistral API Key": "", + "Enter MinerU API Key": "MinerU API Anahtarını Girin", + "Enter Mistral API Base URL": "Mistral API Taban URL'sini Girin", + "Enter Mistral API Key": "Mistral API Anahtarını Girin", "Enter Model ID": "Model ID'sini Girin", "Enter model tag (e.g. {{modelTag}})": "Model etiketini girin (örn. {{modelTag}})", "Enter Mojeek Search API Key": "Mojeek Search API Anahtarını Girin", @@ -723,17 +723,17 @@ "Enter Perplexity API Key": "Perplexity API Anahtarını Girin", "Enter Perplexity Search API URL": "Perplexity Search API URL'sini Girin", "Enter Playwright Timeout": "Playwright Zaman Aşımını Girin", - "Enter Playwright WebSocket URL": "", - "Enter proxy URL (e.g. https://user:password@host:port)": "", - "Enter reasoning effort": "", + "Enter Playwright WebSocket URL": "Playwright WebSocket URL'sini Girin", + "Enter proxy URL (e.g. https://user:password@host:port)": "Vekil sunucu URL'sini girin (örn. https://user:password@host:port)", + "Enter reasoning effort": "Muhakeme çabasını girin", "Enter Score": "Skoru Girin", "Enter SearchApi API Key": "Arama-API Anahtarını Girin", "Enter SearchApi Engine": "Arama-API Motorunu Girin", "Enter Searxng Query URL": "Searxng Sorgu URL'sini girin", "Enter Searxng search language": "Searxng arama dilini girin", - "Enter Seed": " Tohum(seed) Girin", - "Enter SerpApi API Key": "", - "Enter SerpApi Engine": "", + "Enter Seed": "Tohum(seed) Girin", + "Enter SerpApi API Key": "SerpApi API Anahtarını Girin", + "Enter SerpApi Engine": "SerpApi Motorunu Girin", "Enter Serper API Key": "Serper API Anahtarını Girin", "Enter Serply API Key": "Serply API Anahtarını Girin", "Enter Serpstack API Key": "Serpstack API Anahtarını Girin", @@ -747,17 +747,17 @@ "Enter system prompt": "Sistem promptunu girin", "Enter system prompt here": "Sistem promptunu buraya girin.", "Enter Tavily API Key": "Tavily API Anahtarını Girin", - "Enter Tavily Extract Depth": "", - "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "", + "Enter Tavily Extract Depth": "Tavily Çıkarma Derinliğini Girin", + "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUI'nizin herkese açık URL'sini girin. Bu URL, bildirimlerdeki bağlantıları oluşturmak için kullanılacaktır.", "Enter the URL of the function to import": "İçe aktarılacak fonksiyonun URL'sini girin", "Enter the URL to import": "İçe aktarılacak URL'yi girin", "Enter Tika Server URL": "Tika Sunucu URL'sini Girin", "Enter timeout in seconds": "Zaman aşımını saniye cinsinden girin", "Enter to Send": "Göndermek için Enter", "Enter Top K": "Top K'yı girin", - "Enter Top K Reranker": "", + "Enter Top K Reranker": "Top K Yeniden Sıralayıcıyı Girin", "Enter URL (e.g. http://127.0.0.1:7860/)": "URL'yi Girin (örn. http://127.0.0.1:7860/)", - "Enter URL (e.g. http://localhost:11434)": "URL'yi Girin (e.g. http://localhost:11434)", + "Enter URL (e.g. http://localhost:11434)": "URL'yi Girin (örn. http://localhost:11434)", "Enter value": "Bir değer girin", "Enter value (true/false)": "Bir değer girin (true/false)", "Enter Yacy Password": "Yacy Parolasını Girin", @@ -779,17 +779,17 @@ "Enter Your Role": "Rolünüzü Girin", "Enter Your Username": "Kullanıcı Adınızı Girin", "Enter your webhook URL": "Webhook URL'nizi girin", - "Entra ID": "", + "Entra ID": "Entra ID", "Error": "Hata", "ERROR": "HATA", "Error accessing directory": "Dizine erişilirken hata oluştu", "Error accessing Google Drive: {{error}}": "Google Drive'a erişim hatası: {{error}}", "Error accessing media devices.": "Medya cihazlarına erişirken hata oluştu.", "Error starting recording.": "Kayıt başlatılırken hata oluştu.", - "Error unloading model: {{error}}": "", + "Error unloading model: {{error}}": "Model bellekten boşaltılırken hata: {{error}}", "Error uploading file: {{error}}": "Dosya yüklenirken hata oluştu: {{error}}", - "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Hata: '{{modelId}}' kimliğine sahip bir model zaten mevcut. Devam etmek için lütfen farklı bir kimlik seçin.", - "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Hata: Model kimliği boş olamaz. Devam etmek için lütfen geçerli bir kimlik girin.", + "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Hata: '{{modelId}}' ID'sine sahip bir model zaten mevcut. Devam etmek için lütfen farklı bir ID seçin.", + "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Hata: Model ID'si boş olamaz. Devam etmek için lütfen geçerli bir ID girin.", "Evaluations": "Değerlendirmeler", "Exa API Key": "Exa API Anahtarı", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Örnek: (&(objectClass=inetOrgPerson)(uid=%s))", @@ -799,9 +799,9 @@ "Example: sAMAccountName or uid or userPrincipalName": "Örnek: sAMAccountName or uid or userPrincipalName", "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "", "Exclude": "Hariç tut", - "Execute code": "", - "Execute code for analysis": "", - "Executing **{{NAME}}**...": "", + "Execute code": "Kodu çalıştır", + "Execute code for analysis": "Kodu analiz için çalıştır", + "Executing **{{NAME}}**...": "**{{NAME}}** yürütülüyor...", "Expand": "Genişlet", "Experimental": "Deneysel", "Explain": "Açıkla", @@ -813,7 +813,7 @@ "Export Chats": "Sohbetleri Dışa Aktar", "Export Config": "Yapılandırmayı Dışa Aktar", "Export Models": "Modelleri Dışa Aktar", - "Export Prompts": "", + "Export Prompts": "Promptları Dışa Aktar", "Export to CSV": "CSV'ye Aktar", "Export Tools": "Araçları Dışa Aktar", "Export Users": "Kullanıcıları Dışa Aktar", @@ -827,10 +827,10 @@ "Fade Effect for Streaming Text": "Akış Metni için Solma Efekti", "Failed to add file.": "Dosya eklenemedi.", "Failed to add members": "Üyeler eklenemedi", - "Failed to archive chat.": "", + "Failed to archive chat.": "Sohbet arşivlenemedi.", "Failed to attach file": "Dosya eklenemedi", "Failed to clear status": "Durum temizlenemedi", - "Failed to connect to {{URL}} OpenAPI tool server": "", + "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI araç sunucusuna bağlanılamadı", "Failed to connect to {{URL}} terminal server": "{{URL}} terminal sunucusuna bağlanılamadı", "Failed to copy link": "Bağlantı kopyalanamadı", "Failed to create API Key.": "API Anahtarı oluşturulamadı.", @@ -842,17 +842,17 @@ "Failed to generate title": "Başlık oluşturulamadı", "Failed to import models": "Modeller içe aktarılamadı", "Failed to load chat preview": "Sohbet ön izlemesi yüklenemedi", - "Failed to load DOCX file. Please try downloading it instead.": "", + "Failed to load DOCX file. Please try downloading it instead.": "DOCX dosyası yüklenemedi. Lütfen bunun yerine indirmeyi deneyin.", "Failed to load Excel/CSV file. Please try downloading it instead.": "Excel/CSV dosyası yüklenemedi. Lütfen bunun yerine indirmeyi deneyin.", "Failed to load file content.": "Dosya içeriği yüklenemedi.", "Failed to load Interface settings": "Arayüz ayarları yüklenemedi", - "Failed to load PPTX file. Please try downloading it instead.": "", + "Failed to load PPTX file. Please try downloading it instead.": "PPTX dosyası yüklenemedi. Lütfen bunun yerine indirmeyi deneyin.", "Failed to move chat": "Sohbet taşınamadı", - "Failed to process URL: {{url}}": "", + "Failed to process URL: {{url}}": "URL işlenemedi: {{url}}", "Failed to read clipboard contents": "Pano içeriği okunamadı", "Failed to remove member": "Üye kaldırılamadı", - "Failed to render diagram": "", - "Failed to render visualization": "", + "Failed to render diagram": "Diyagram oluşturulamadı", + "Failed to render visualization": "Görselleştirme oluşturulamadı", "Failed to save connections": "Bağlantılar kaydedilemedi", "Failed to save conversation": "Sohbet kaydedilemedi", "Failed to save models configuration": "Modeller yapılandırması kaydedilemedi", @@ -889,7 +889,7 @@ "File uploaded!": "Dosya yüklendi!", "Filename": "Dosya adı", "Files": "Dosyalar", - "Filter": "", + "Filter": "Filtre", "Filter is now globally disabled": "Filtre artık global olarak devre dışı", "Filter is now globally enabled": "Filtre artık global olarak devrede", "Filters": "Filtreler", @@ -898,47 +898,47 @@ "Firecrawl API Key": "Firecrawl API Anahtarı", "Firecrawl Timeout (s)": "Firecrawl Zaman Aşımı (s)", "Floating Quick Actions": "Yüzen Hızlı Eylemler", - "Focus Chat Input": "", + "Focus Chat Input": "Sohbet Girişine Odaklan", "Folder": "Klasör", "Folder Background Image": "Klasör Arka Plan Resmi", - "Folder created successfully": "", + "Folder created successfully": "Klasör başarıyla oluşturuldu", "Folder deleted successfully": "Klasör başarıyla silindi", - "Folder Max File Count": "", - "Folder name": "", + "Folder Max File Count": "Klasör Maksimum Dosya Sayısı", + "Folder name": "Klasör adı", "Folder Name": "Klasör Adı", "Folder name cannot be empty.": "Klasör adı boş olamaz.", "Folder name updated successfully": "Klasör adı başarıyla güncellendi", - "Folder options": "", + "Folder options": "Klasör seçenekleri", "Folder updated successfully": "Klasör başarıyla güncellendi", "Folders": "Klasörler", - "Follow up": "", - "Follow Up Generation": "", - "Follow Up Generation Prompt": "", - "Follow up: {{question}}": "", - "Follow-Up Auto-Generation": "Devam İstemlerini Otomatik Oluşturma", + "Follow up": "Takip", + "Follow Up Generation": "Takip Oluşturma", + "Follow Up Generation Prompt": "Takip Oluşturma Prompt'u", + "Follow up: {{question}}": "Takip sorusu: {{question}}", + "Follow-Up Auto-Generation": "Devam Prompt'larını Otomatik Oluşturma", "Followed instructions perfectly": "Talimatları mükemmel şekilde takip etti", "for placeholders": "", - "Force OCR": "", - "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "", + "Force OCR": "OCR Zorla", + "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "PDF'nin tüm sayfalarında OCR zorla. PDF'lerinizde iyi metin varsa bu daha kötü sonuçlara yol açabilir. Varsayılan olarak False.", "Forge new paths": "Yeni yollar açın", "Form": "Form", - "Format Lines": "", - "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "", - "Formatting may be inconsistent from source.": "", - "Forwards system user OAuth access token to authenticate": "", - "Forwards system user session credentials to authenticate": "", - "Full Context Mode": "", + "Format Lines": "Satırları Biçimlendir", + "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "Çıktıdaki satırları biçimlendir. Varsayılan olarak False. True olarak ayarlanırsa, satırlar satır içi matematik ve stilleri algılamak için biçimlendirilecektir.", + "Formatting may be inconsistent from source.": "Biçimlendirme kaynaktan tutarsız olabilir.", + "Forwards system user OAuth access token to authenticate": "Kimlik doğrulamak için sistem kullanıcı OAuth erişim belirtecini iletir", + "Forwards system user session credentials to authenticate": "Kimlik doğrulamak için sistem kullanıcı oturum kimlik bilgilerini iletir", + "Full Context Mode": "Tam Bağlam Modu", "Function": "Fonksiyon", "Function Calling": "Fonksiyon Çağırma", "Function created successfully": "Fonksiyon başarıyla oluşturuldu", "Function deleted successfully": "Fonksiyon başarıyla silindi", "Function Description": "Fonksiyon Açıklaması", - "Function ID": "", - "Function imported successfully": "", + "Function ID": "Fonksiyon ID'si", + "Function imported successfully": "Fonksiyon başarıyla içe aktarıldı", "Function is now globally disabled": "Fonksiyon artık global olarak devre dışı", "Function is now globally enabled": "Fonksiyon artık global olarak aktif", "Function Name": "Fonksiyon Adı", - "Function Name Filter List": "", + "Function Name Filter List": "Fonksiyon Adı Filtre Listesi", "Function updated successfully": "Fonksiyon başarıyla güncellendi", "Functions": "Fonksiyonlar", "Functions allow arbitrary code execution.": "Fonksiyonlar keyfi kod yürütülmesine izin verir.", @@ -959,7 +959,7 @@ "Generating search query": "Arama sorgusu oluşturma", "Generating...": "Oluşturuluyor...", "Get current time and perform date/time calculations": "", - "Get information on {{name}} in the UI": "", + "Get information on {{name}} in the UI": "{{name}} hakkında arayüzde bilgi alın", "Get started": "Başlayın", "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} ile başlayın", "Global": "Evrensel", @@ -991,7 +991,7 @@ "Help the community discover great models": "", "Hex Color": "", "Hex Color - Leave empty for default color": "", - "Hidden": "", + "Hidden": "Gizli", "Hide": "Gizle", "Hide All": "", "Hide from Sidebar": "", @@ -999,7 +999,7 @@ "High": "", "High Contrast Mode": "Yüksek Kontrast Modu", "History": "", - "Home": "", + "Home": "Ana Sayfa", "Host": "Ana bilgisayar", "Hourly Messages": "", "How can I help you today?": "Bugün size nasıl yardımcı olabilirim?", @@ -1019,17 +1019,17 @@ "Image Compression": "Görüntü Sıkıştırma", "Image Compression Height": "Görüntü Sıkıştırma Yüksekliği", "Image Compression Width": "Görüntü Sıkıştırma Genişliği", - "Image Edit": "", - "Image Edit Engine": "", + "Image Edit": "Görüntü Düzenleme", + "Image Edit Engine": "Görüntü Düzenleme Motoru", "Image Generation": "Görüntü Oluşturma", "Image Generation Engine": "Görüntü Oluşturma Motoru", "Image Max Compression Size": "Görüntü Maksimum Sıkıştırma Boyutu", - "Image Max Compression Size height": "", - "Image Max Compression Size width": "", - "Image Prompt Generation": "", - "Image Prompt Generation Prompt": "", - "Image Size": "", - "Images": "", + "Image Max Compression Size height": "Görüntü Maksimum Sıkıştırma Boyutu yüksekliği", + "Image Max Compression Size width": "Görüntü Maksimum Sıkıştırma Boyutu genişliği", + "Image Prompt Generation": "Görüntü Prompt Oluşturma", + "Image Prompt Generation Prompt": "Görüntü Prompt Oluşturma Promptu", + "Image Size": "Görüntü Boyutu", + "Images": "Görüntüler", "Import": "İçe Aktar", "Import Chats": "Sohbetleri İçe Aktar", "Import Config": "", @@ -1054,24 +1054,24 @@ "Input Key (e.g. text, unet_name, steps)": "", "Input Variables": "", "Insert": "", - "Insert Follow-Up Prompt to Input": "Devam İstemini Girdiye Ekle", - "Insert Prompt as Rich Text": "İstemi Zengin Metin Olarak Ekle", - "Insert Suggestion Prompt to Input": "Öneri İstemini Girdiye Ekle", + "Insert Follow-Up Prompt to Input": "Devam Prompt'unu Girdiye Ekle", + "Insert Prompt as Rich Text": "Prompt'u Zengin Metin Olarak Ekle", + "Insert Suggestion Prompt to Input": "Öneri Prompt'unu Girdiye Ekle", "Install from Github URL": "Github URL'sinden yükleyin", "Instant Auto-Send After Voice Transcription": "Ses Transkripsiyonundan Sonra Anında Otomatik Gönder", "Integration": "", "Integrations": "", "Interface": "Arayüz", "Interface Settings Access": "", - "Invalid file content": "", + "Invalid file content": "Geçersiz dosya içeriği", "Invalid file format.": "Geçersiz dosya biçimi.", - "Invalid JSON file": "", - "Invalid JSON format for ComfyUI Edit Workflow.": "", - "Invalid JSON format for ComfyUI Workflow.": "", - "Invalid JSON format for Parameters": "", - "Invalid JSON format in {{NAME}}": "", - "Invalid JSON format in Additional Config": "", - "Invalid JSON format in MinerU Parameters": "", + "Invalid JSON file": "Geçersiz JSON dosyası", + "Invalid JSON format for ComfyUI Edit Workflow.": "ComfyUI Düzenleme İş Akışı için geçersiz JSON formatı.", + "Invalid JSON format for ComfyUI Workflow.": "ComfyUI İş Akışı için geçersiz JSON formatı.", + "Invalid JSON format for Parameters": "Parametreler için geçersiz JSON formatı", + "Invalid JSON format in {{NAME}}": "{{NAME}} içinde geçersiz JSON formatı", + "Invalid JSON format in Additional Config": "Ek Yapılandırma içinde geçersiz JSON formatı", + "Invalid JSON format in MinerU Parameters": "MinerU Parametreleri içinde geçersiz JSON formatı", "is typing...": "yazıyor...", "Italic": "", "January": "Ocak", @@ -1088,7 +1088,7 @@ "JWT Expiration": "JWT Bitişi", "JWT Token": "JWT Token", "Kagi Search API Key": "Kagi Arama API Anahtarı", - "Keep Follow-Up Prompts in Chat": "Devam İstemlerini Sohbette Tut", + "Keep Follow-Up Prompts in Chat": "Devam Prompt'larını Sohbette Tut", "Keep in Sidebar": "", "Key": "Anahtar", "Key is required": "Anahtar gerekli", @@ -1096,15 +1096,15 @@ "Keyboard Shortcuts": "", "Knowledge": "Bilgi", "Knowledge Access": "Bilgi Erişimi", - "Knowledge Base": "", + "Knowledge Base": "Bilgi Tabanı", "Knowledge created successfully.": "Bilgi başarıyla oluşturuldu.", "Knowledge deleted successfully.": "Bilgi başarıyla silindi.", - "Knowledge Description": "", - "Knowledge exported successfully": "", - "Knowledge Name": "", - "Knowledge Public Sharing": "", + "Knowledge Description": "Bilgi Açıklaması", + "Knowledge exported successfully": "Bilgi başarıyla dışa aktarıldı", + "Knowledge Name": "Bilgi Adı", + "Knowledge Public Sharing": "Bilginin Herkese Açık Paylaşımı", "Knowledge reset successfully.": "Bilgi başarıyla sıfırlandı.", - "Knowledge Sharing": "", + "Knowledge Sharing": "Bilgi Paylaşımı", "Knowledge updated successfully": "Bilgi başarıyla güncellendi", "Kokoro.js (Browser)": "", "Kokoro.js Dtype": "", @@ -1127,7 +1127,7 @@ "Learn more about Open Terminal": "Open Terminal hakkında daha fazla bilgi edinin", "Learn more about OpenAPI tool servers.": "OpenAPI araç sunucuları hakkında daha fazla bilgi edinin.", "Learn more about Voxtral transcription.": "", - "Leave a public review for {{modelName}}": "", + "Leave a public review for {{modelName}}": "{{modelName}} için herkese açık değerlendirme yapın", "Leave empty for no compression": "", "Leave empty for unlimited": "Sınırsız için boş bırakınız", "Leave empty to include all models from \"{{url}}\" endpoint": "", @@ -1183,7 +1183,7 @@ "Max Upload Count": "Maksimum Yükleme Sayısı", "Max Upload Size": "Maksimum Yükleme Boyutu", "Maximum number of files allowed per folder.": "", - "Maximum number of files per folder is {{max}}.": "", + "Maximum number of files per folder is {{max}}.": "Klasör başına maksimum dosya sayısı {{max}}.", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Aynı anda en fazla 3 model indirilebilir. Lütfen daha sonra tekrar deneyin.", "May": "Mayıs", "MBR": "", @@ -1198,7 +1198,7 @@ "Memories accessible by LLMs will be shown here.": "LLM'ler tarafından erişilebilen bellekler burada gösterilecektir.", "Memory": "Bellek", "Memory added successfully": "Bellek başarıyla eklendi", - "Memory cleared successfully": "Bellek başarıyle temizlendi", + "Memory cleared successfully": "Bellek başarıyla temizlendi", "Memory deleted successfully": "Bellek başarıyla silindi", "Memory updated successfully": "Bellek başarıyla güncellendi", "Merge Responses": "Yanıtları Birleştir", @@ -1229,61 +1229,61 @@ "Model accepts file inputs": "Model dosya girdilerini kabul eder", "Model accepts image inputs": "Model görüntü girdilerini kabul eder", "Model can execute code and perform calculations": "Model kod çalıştırabilir ve hesaplamalar yapabilir", - "Model can generate images based on text prompts": "", + "Model can generate images based on text prompts": "Model, metin promptlarına göre görsel oluşturabilir", "Model can search the web for information": "Model bilgileri aramak için web'de arama yapabilir", "Model Capabilities": "Model Yetenekleri", "Model created successfully!": "Model başarıyla oluşturuldu!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Model dosya sistemi yolu algılandı. Güncelleme için model kısa adı gerekli, devam edilemiyor.", "Model Filtering": "Model Filtreleme", "Model ID": "Model ID", - "Model ID is required.": "", - "Model IDs": "Model Kimlikleri", + "Model ID is required.": "Model ID'si gereklidir.", + "Model IDs": "Model ID'leri", "Model Name": "Model Adı", - "Model name already exists, please choose a different one": "", - "Model Name is required.": "", - "Model names and usage frequency": "", - "Model not found": "", + "Model name already exists, please choose a different one": "Model adı zaten mevcut, lütfen farklı bir ad seçin", + "Model Name is required.": "Model adı gereklidir.", + "Model names and usage frequency": "Model adları ve kullanım sıklığı", + "Model not found": "Model bulunamadı", "Model not selected": "Model seçilmedi", - "Model Parameters": "", + "Model Parameters": "Model Parametreleri", "Model Params": "Model Parametreleri", "Model Permissions": "Model İzinleri", - "Model responses or outputs": "", - "Model unloaded successfully": "", + "Model responses or outputs": "Model yanıtları veya çıktıları", + "Model unloaded successfully": "Model bellekten başarıyla boşaltıldı", "Model updated successfully": "Model başarıyla güncellendi", - "Model Usage": "", - "Model(s) do not support file upload": "", + "Model Usage": "Model Kullanımı", + "Model(s) do not support file upload": "Model(ler) dosya yüklemeyi desteklemiyor", "Modelfile Content": "Model Dosyası İçeriği", "Models": "Modeller", "Models Access": "Modellere Erişim", "Models configuration saved successfully": "Modellerin yapılandırması başarıyla kaydedildi", - "Models imported successfully": "", - "Models Public Sharing": "", - "Models Sharing": "", + "Models imported successfully": "Modeller başarıyla içe aktarıldı", + "Models Public Sharing": "Modellerin Herkese Açık Paylaşımı", + "Models Sharing": "Model Paylaşımı", "Mojeek": "", "Mojeek Search API Key": "Mojeek Search API Anahtarı", "More": "Daha Fazla", "More Concise": "", "More options": "", "More Options": "", - "Move": "", - "Moved {{name}}": "", + "Move": "Taşı", + "Moved {{name}}": "{{name}} taşındı", "My Terminal": "Terminalim", "Name": "Ad", "Name and ID are required, please fill them out": "", "Name your knowledge base": "Bilgi tabanınıza bir ad verin", "Native": "", - "New": "", + "New": "Yeni", "New Button": "", "New Chat": "Yeni Sohbet", "New File": "", "New Folder": "Yeni Klasör", - "New Function": "", + "New Function": "Yeni Fonksiyon", "New Group": "", "New Knowledge": "", - "New Model": "", + "New Model": "Yeni Model", "New Note": "", "New Password": "Yeni Parola", - "New Prompt": "", + "New Prompt": "Yeni Prompt", "New Skill": "Yeni Yetenek", "New Temporary Chat": "", "New Terminal": "Yeni Terminal", @@ -1291,59 +1291,59 @@ "New Webhook": "", "new-channel": "yeni-kanal", "Next message": "", - "No access grants. Private to you.": "", - "No activity data": "", - "No authentication": "", - "No chats found": "", - "No chats found for this user.": "", - "No chats found.": "", + "No access grants. Private to you.": "Erişim izni yok. Size özel.", + "No activity data": "Aktivite verisi yok", + "No authentication": "Kimlik doğrulama yok", + "No chats found": "Sohbet bulunamadı", + "No chats found for this user.": "Bu kullanıcı için sohbet bulunamadı.", + "No chats found.": "Sohbet bulunamadı.", "No content": "İçerik yok", "No content found": "İçerik bulunamadı", "No content to speak": "Konuşacak içerik yok", - "No conversation to save": "", - "No data": "", - "No data found": "", + "No conversation to save": "Kaydedilecek sohbet yok", + "No data": "Veri yok", + "No data found": "Veri bulunamadı", "No distance available": "Mesafe mevcut değil", - "No expiration can pose security risks.": "", - "No feedback found": "", + "No expiration can pose security risks.": "Son kullanma tarihi olmaması güvenlik riskleri oluşturabilir.", + "No feedback found": "Geri bildirim bulunamadı", "No file selected": "Hiçbir dosya seçilmedi", - "No files found": "", - "No files in this knowledge base.": "", - "No files yet. Upload files or run Python code to create them.": "", - "No functions found": "", - "No groups found": "", - "No history available": "", + "No files found": "Dosya bulunamadı", + "No files in this knowledge base.": "Bu bilgi tabanında dosya yok.", + "No files yet. Upload files or run Python code to create them.": "Henüz dosya yok. Dosya yükleyin veya oluşturmak için Python kodu çalıştırın.", + "No functions found": "Fonksiyon bulunamadı", + "No groups found": "Grup bulunamadı", + "No history available": "Geçmiş mevcut değil", "No HTML, CSS, or JavaScript content found.": "HTML, CSS veya JavaScript içeriği bulunamadı.", - "No inference engine with management support found": "", - "No kernel": "", - "No knowledge bases found.": "", + "No inference engine with management support found": "Yönetim desteği olan çıkarım motoru bulunamadı", + "No kernel": "Kernel yok", + "No knowledge bases found.": "Bilgi tabanı bulunamadı.", "No knowledge found": "Bilgi bulunamadı", "No memories to clear": "Temizlenecek bellek yok", "No model IDs": "Model ID yok", - "No models available": "", + "No models available": "Kullanılabilir model yok", "No models found": "Model bulunamadı", "No models selected": "Model seçilmedi", "No Notes": "Not Yok", - "No notes found": "", - "No one": "", - "No pinned messages": "", - "No prompts found": "", + "No notes found": "Not bulunamadı", + "No one": "Hiç kimse", + "No pinned messages": "Sabitlenmiş mesaj yok", + "No prompts found": "Prompt bulunamadı", "No results": "Sonuç bulunamadı", "No results found": "Sonuç bulunamadı", "No search query generated": "Hiç arama sorgusu oluşturulmadı", - "No servers detected": "", + "No servers detected": "Sunucu algılanmadı", "No skills found": "Yetenek bulunamadı", "No source available": "Kaynak mevcut değil", - "No sources found": "", - "No suggestion prompts": "Önerilen istem yok", + "No sources found": "Kaynak bulunamadı", + "No suggestion prompts": "Önerilen prompt yok", "No Terminal connection configured.": "Yapılandırılmış Terminal bağlantısı yok.", "No terminal connections configured.": "Yapılandırılmış terminal bağlantısı yok.", - "No tool server connections configured.": "", - "No tools found": "", + "No tool server connections configured.": "Yapılandırılmış araç sunucusu bağlantısı yok.", + "No tools found": "Araç bulunamadı", "No users were found.": "Kullanıcı bulunamadı.", "No valves": "", - "No valves to update": "Güncellenecek valvler yok", - "No webhooks yet": "", + "No valves to update": "Güncellenecek valfler yok", + "No webhooks yet": "Henüz webhook yok", "Node Ids": "", "None": "Yok", "Not factually correct": "Gerçeklere göre doğru değil", @@ -1384,10 +1384,10 @@ "Only markdown files are allowed": "Yalnızca markdown biçimli dosyalar kullanılabilir", "Only select users and groups with permission can access": "İzinli kullanıcılar ve gruplar yalnızca erişebilir", "Only sync new/updated chats": "", - "Oops! Looks like the URL is invalid. Please double-check and try again.": "Hop! URL geçersiz gibi görünüyor. Lütfen tekrar kontrol edin ve yeniden deneyin.", - "Oops! There are files still uploading. Please wait for the upload to complete.": "Hop! Hala yüklenen dosyalar var. Yüklemenin tamamlanmasını bekleyin.", - "Oops! There was an error in the previous response.": "Hop! Önceki yanıtta bir hata oluştu.", - "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hop! Desteklenmeyen bir yöntem kullanıyorsunuz (yalnızca önyüz). Lütfen WebUI'yi arkayüzden sunun.", + "Oops! Looks like the URL is invalid. Please double-check and try again.": "Hay aksi! URL geçersiz gibi görünüyor. Lütfen tekrar kontrol edin ve yeniden deneyin.", + "Oops! There are files still uploading. Please wait for the upload to complete.": "Hay aksi! Hala yüklenen dosyalar var. Yüklemenin tamamlanmasını bekleyin.", + "Oops! There was an error in the previous response.": "Hay aksi! Önceki yanıtta bir hata oluştu.", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Hay aksi! Desteklenmeyen bir yöntem kullanıyorsunuz (yalnızca önyüz). Lütfen WebUI'yi arka uçtan sunun.", "Open file": "Dosyayı aç", "Open in full screen": "Tam ekranda aç", "Open link": "", @@ -1395,12 +1395,12 @@ "Open Modal To Manage Floating Quick Actions": "Yüzen hızlı eylemleri yönetmek için pencereyi aç", "Open Modal To Manage Image Compression": "Görüntü sıkıştırmayı yönetmek için pencereyi aç", "Open Model Selector": "", - "Open Settings": "", - "Open Sidebar": "", + "Open Settings": "Ayarları Aç", + "Open Sidebar": "Kenar Çubuğunu Aç", "Open Terminal": "Terminali Aç", "Open User Profile Menu": "", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI OpenAPI tarafından sağlanan araçları kullanabilir", - "Open WebUI uses faster-whisper internally.": "Open WebUI, dahili olarak daha hızlı-fısıltı kullanır.", + "Open WebUI uses faster-whisper internally.": "Open WebUI, dahili olarak faster-whisper kullanır.", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI, SpeechT5 ve CMU Arctic konuşmacı gömme kullanır.", "Open WebUI version": "", "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open-WebUI sürümü (v{{OPEN_WEBUI_VERSION}}) gerekli sürümden (v{{REQUIRED_VERSION}}) düşük", @@ -1416,7 +1416,7 @@ "OpenAPI Spec": "", "openapi.json URL or Path": "", "optional": "", - "Optional": "", + "Optional": "İsteğe Bağlı", "or": "veya", "Ordered List": "", "Other": "Diğer", @@ -1462,14 +1462,14 @@ "Pipelines": "", "Pipelines are a plugin system with arbitrary code execution —": "Pipelines, keyfi kod çalıştırmaya izin veren bir eklenti sistemidir —", "Pipelines Not Detected": "Pipeline Tespit Edilmedi", - "Pipelines Valves": "Pipeline Valvleri", + "Pipelines Valves": "Pipeline Valfleri", "Plain text (.md)": "Düz Metin (.md)", "Plain text (.txt)": "Düz metin (.txt)", "Playground": "Oyun Alanı", "Playwright Timeout (ms)": "Playwright Zamanaşımı (ms)", "Playwright WebSocket URL": "Playwright WebSocket URL", "Please carefully review the following warnings:": "Lütfen aşağıdaki uyarıları dikkatlice inceleyin:", - "Please do not close the settings page while loading the model.": "Lütfen model yüklenirken ayarlar sayfasını kapatmayınız", + "Please do not close the settings page while loading the model.": "Lütfen model yüklenirken ayarlar sayfasını kapatmayınız.", "Please enter a message or attach a file.": "", "Please enter a prompt": "Lütfen bir prompt girin", "Please enter a valid ID": "Lütfen geçerli bir ID girin", @@ -1493,7 +1493,7 @@ "Prefix ID": "", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", - "Preview": "", + "Preview": "Önizleme", "Previous 30 days": "Önceki 30 gün", "Previous 7 days": "Önceki 7 gün", "Previous message": "", @@ -1501,19 +1501,19 @@ "Private conversation between selected users": "", "Production version updated": "", "Profile": "Profil", - "Prompt": "İstem", + "Prompt": "Prompt", "Prompt Autocompletion": "", - "Prompt Content": "İstem İçeriği", + "Prompt Content": "Prompt İçeriği", "Prompt created successfully": "Prompt başarıyla oluşturuldu", "Prompt Name": "", "Prompt Suggestions": "", "Prompt updated successfully": "Prompt başarıyla güncellendi", - "Prompts": "İstemler", - "Prompts Access": "İstemlere Erişim", + "Prompts": "Prompt'lar", + "Prompts Access": "Prompt'lara Erişim", "Prompts Public Sharing": "", "Prompts Sharing": "", "Provider Type": "", - "Public": "", + "Public": "Herkese Açık", "Pull \"{{searchValue}}\" from Ollama.com": "Ollama.com'dan \"{{searchValue}}\" çekin", "Pull a model from Ollama.com": "Ollama.com'dan bir model çekin", "Pull Model": "", @@ -1522,7 +1522,7 @@ "Querying": "", "Quick Actions": "Hızlı Eylemler", "RAG Template": "RAG Şablonu", - "Rate {{rating}} out of 10": "", + "Rate {{rating}} out of 10": "{{rating}}/10 puan", "Rating": "Derecelendirme", "Re-rank models by topic similarity": "Konu benzerliğine göre modelleri yeniden sırala", "Read": "Oku", @@ -1539,7 +1539,7 @@ "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Kendinizden \"User\" olarak bahsedin (örneğin, \"User İspanyolca öğreniyor\")", "Reference Chats": "", - "Refresh": "", + "Refresh": "Yenile", "Refused when it shouldn't have": "Reddedilmemesi gerekirken reddedildi", "Regenerate": "Tekrar Oluştur", "Regenerate Menu": "Yeniden Oluşturma Menüsü", @@ -1557,7 +1557,7 @@ "Relevance Threshold": "İlgi Eşiği", "Remember Dismissal": "", "Remove": "Kaldır", - "Remove {{MODELID}} from list.": "", + "Remove {{MODELID}} from list.": "{{MODELID}} modelini listeden kaldır.", "Remove action": "", "Remove file": "", "Remove File": "", @@ -1590,9 +1590,9 @@ "RESULT": "Sonuç", "Retrieval": "", "Retrieval Query Generation": "Alıntı Sorgu Oluşturma", - "Retrieved {{count}} sources": "", - "Retrieved {{count}} sources_one": "", - "Retrieved {{count}} sources_other": "", + "Retrieved {{count}} sources": "{{count}} kaynak alındı", + "Retrieved {{count}} sources_one": "{{count}} kaynak alındı", + "Retrieved {{count}} sources_other": "{{count}} kaynak alındı", "Retrieved 1 source": "", "Rich Text Input for Chat": "Sohbet için Zengin Metin Girişi", "Role": "Rol", @@ -1606,7 +1606,7 @@ "Save & Create": "Kaydet ve Oluştur", "Save & Update": "Kaydet ve Güncelle", "Save As Copy": "Kopya Olarak Kaydet", - "Save Chat": "", + "Save Chat": "Sohbeti Kaydet", "Saved": "Kaydedildi", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Sohbet kayıtlarının doğrudan tarayıcınızın depolama alanına kaydedilmesi artık desteklenmemektedir. Lütfen aşağıdaki butona tıklayarak sohbet kayıtlarınızı indirmek ve silmek için bir dakikanızı ayırın. Endişelenmeyin, sohbet günlüklerinizi arkayüze kolayca yeniden aktarabilirsiniz:", "Scroll On Branch Change": "Dal Değişiminde Kaydır", @@ -1636,7 +1636,7 @@ "Search Prompts": "Prompt Ara", "Search Result Count": "Arama Sonucu Sayısı", "Search Skills": "Yetenekleri Ara", - "Search the internet": "İNternette Ara", + "Search the internet": "İnternette Ara", "Search the web and fetch URLs": "Web'de ara ve URL'leri getir", "Search Tools": "Arama Araçları", "Search, view, and manage user notes": "Kullanıcı notlarını ara, görüntüle ve yönet", @@ -1653,9 +1653,9 @@ "See what's new": "Yeniliklere göz atın", "Seed": "Seed", "Select": "Seç", - "Select {{modelName}} model": "", + "Select {{modelName}} model": "{{modelName}} modelini seç", "Select a base model": "Bir temel model seç", - "Select a base model (e.g. llama3, gpt-4o)": "", + "Select a base model (e.g. llama3, gpt-4o)": "Bir temel model seçin (örn. llama3, gpt-4o)", "Select a conversation to preview": "Bir sohbeti önizlemek için seç", "Select a engine": "Bir motor seç", "Select a function": "Bir fonksiyon seç", @@ -1663,35 +1663,35 @@ "Select a language": "Bir dil seç", "Select a mode": "Bir mod seç", "Select a model": "Bir model seç", - "Select a model (optional)": "", + "Select a model (optional)": "Bir model seçin (isteğe bağlı)", "Select a pipeline": "Bir pipeline seç", "Select a pipeline url": "Bir pipeline URL'si seç", - "Select a reranking model engine": "", - "Select a role": "", - "Select a theme": "", + "Select a reranking model engine": "Bir yeniden sıralama modeli motoru seçin", + "Select a role": "Bir rol seçin", + "Select a theme": "Bir tema seçin", "Select a tool": "Bir araç seç", - "Select a voice": "", + "Select a voice": "Bir ses seçin", "Select an auth method": "Yetkilendirme yöntemi seç", - "Select an embedding model engine": "", - "Select an engine": "", - "Select an Ollama instance": "", - "Select an option": "", - "Select an output format": "", - "Select dtype": "", + "Select an embedding model engine": "Bir gömme modeli motoru seçin", + "Select an engine": "Bir motor seçin", + "Select an Ollama instance": "Bir Ollama sunucusu seçin", + "Select an option": "Bir seçenek seçin", + "Select an output format": "Bir çıktı formatı seçin", + "Select dtype": "dtype seçin", "Select Engine": "Motor Seç", - "Select how to split message text for TTS requests": "", + "Select how to split message text for TTS requests": "TTS istekleri için mesaj metninin nasıl bölüneceğini seçin", "Select Knowledge": "Bilgi Seç", - "Select Method": "", + "Select Method": "Yöntem Seçin", "Select only one model to call": "Arama için sadece bir model seç", - "Select view": "", - "Selected model: {{modelName}}": "", + "Select view": "Görünüm seçin", + "Selected model: {{modelName}}": "Seçilen model: {{modelName}}", "Selected model(s) do not support image inputs": "Seçilen model(ler) görüntü girişlerini desteklemiyor", - "Selected Models": "", - "semantic": "", + "Selected Models": "Seçilen Modeller", + "semantic": "semantik", "Send": "Gönder", "Send a Message": "Bir Mesaj Gönder", "Send message": "Mesaj gönder", - "Send now": "", + "Send now": "Şimdi gönder", "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "İsteğe `stream_options: { include_usage: true }` gönderir.\nDesteklenen sağlayıcılar, ayarlandığında yanıtta token kullanım bilgilerini döndürecektir.", "September": "Eylül", "SerpApi API Key": "SerpApi API Anahtarı", @@ -1700,60 +1700,60 @@ "Serply API Key": "Serply API Anahtarı", "Serpstack API Key": "Serpstack API Anahtarı", "Server connection verified": "Sunucu bağlantısı doğrulandı", - "Session": "", + "Session": "Oturum", "Set as default": "Varsayılan olarak ayarla", - "Set as Production": "", + "Set as Production": "Prodüksiyon Olarak Ayarla", "Set embedding model": "Gömme modelini ayarla", "Set embedding model (e.g. {{model}})": "Gömme modelini ayarlayın (örn. {{model}})", "Set reranking model (e.g. {{model}})": "Yeniden sıralama modelini ayarlayın (örn. {{model}})", - "Set the default models that are automatically selected for all users when a new chat is created.": "", - "Set the models that are automatically pinned to the sidebar for all users.": "", - "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "", - "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "", + "Set the default models that are automatically selected for all users when a new chat is created.": "Yeni bir sohbet oluşturulduğunda tüm kullanıcılar için otomatik olarak seçilen varsayılan modelleri ayarlayın.", + "Set the models that are automatically pinned to the sidebar for all users.": "Tüm kullanıcılar için kenar çubuğuna otomatik olarak sabitlenen modelleri ayarlayın.", + "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "GPU'ya boşaltılacak katman sayısını ayarlayın. Bu değerin artırılması, GPU hızlandırması için optimize edilmiş modeller için performansı önemli ölçüde iyileştirebilir, ancak aynı zamanda daha fazla güç ve GPU kaynağı tüketebilir.", + "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "Hesaplama için kullanılan işçi iş parçacığı sayısını ayarlayın. Bu seçenek, gelen istekleri eşzamanlı olarak işlemek için kaç iş parçacığı kullanılacağını kontrol eder. Bu değerin artırılması yüksek eşzamanlılık iş yüklerinde performansı iyileştirebilir, ancak aynı zamanda daha fazla CPU kaynağı tüketebilir.", "Set Voice": "Ses Ayarla", - "Set whisper model": "Fısıltı modelini ayarla", - "Set your status": "", - "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets how far back for the model to look back to prevent repetition.": "", - "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "", - "Sets the size of the context window used to generate the next token.": "", + "Set whisper model": "Whisper modelini ayarla", + "Set your status": "Durumunuzu ayarlayın", + "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "En az bir kez ortaya çıkan tokenlere karşı düz bir sapma ayarlar. Daha yüksek bir değer (örneğin, 1.5) tekrarları daha güçlü cezalandırırken, daha düşük bir değer (örneğin, 0.9) daha hoşgörülü olacaktır. 0 olduğunda devre dışıdır.", + "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Tekrarları cezalandırmak için tokenlere karşı ölçeklenebilir bir sapma ayarlar, kaç kez ortaya çıktıklarına dayanarak. Daha yüksek bir değer (örneğin, 1.5) tekrarları daha güçlü cezalandırırken, daha düşük bir değer (örneğin, 0.9) daha hoşgörülü olacaktır. 0 olduğunda devre dışıdır.", + "Sets how far back for the model to look back to prevent repetition.": "Modelin tekrarı önlemek için ne kadar geriye bakması gerektiğini ayarlar.", + "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "Oluşturma için kullanılacak rastgele sayı tohumunu ayarlar. Bunun belirli bir sayıya ayarlanması, modelin aynı prompt için aynı metni oluşturmasını sağlar.", + "Sets the size of the context window used to generate the next token.": "Sonraki tokeni oluşturmak için kullanılan bağlam penceresinin boyutunu ayarlar.", "Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "Kullanılacak durma dizilerini ayarlar. Bu desenle karşılaşıldığında, LLM metin oluşturmayı durduracak ve geri dönecektir. Birden çok durma deseni, bir modelfile'da birden çok ayrı durma parametresi belirterek ayarlanabilir.", - "Setting": "", + "Setting": "Ayar", "Settings": "Ayarlar", - "Settings Permissions": "", + "Settings Permissions": "Ayarlar İzinleri", "Settings saved successfully!": "Ayarlar başarıyla kaydedildi!", "Share": "Paylaş", "Share Chat": "Sohbeti Paylaş", - "Share link copied to clipboard.": "", + "Share link copied to clipboard.": "Bağlantı panoya kopyalandı.", "Share to Open WebUI Community": "OpenWebUI Topluluğu ile Paylaş", - "Share your background and interests": "", - "Shared Chats": "", - "Shared with you": "", - "Sharing Permissions": "", + "Share your background and interests": "Arka planınızı ve ilgi alanlarınızı paylaşın", + "Shared Chats": "Paylaşılan Sohbetler", + "Shared with you": "Sizinle paylaşılan", + "Sharing Permissions": "Paylaşım İzinleri", "Show": "Göster", "Show \"What's New\" modal on login": "Girişte \"Yenilikler\" modalını göster", "Show Admin Details in Account Pending Overlay": "Yönetici Ayrıntılarını Hesap Bekliyor Ekranında Göster", - "Show All": "", - "Show all ({{COUNT}} characters)": "", - "Show Files": "", + "Show All": "Tümünü Göster", + "Show all ({{COUNT}} characters)": "Tümünü göster ({{COUNT}} karakter)", + "Show Files": "Dosyaları Göster", "Show Formatting Toolbar": "Biçimlendirme Araç Çubuğunu Göster", - "Show image preview": "", + "Show image preview": "Görsel önizlemesini göster", "Show Model": "Modeli Göster", - "Show Shortcuts": "", + "Show Shortcuts": "Kısayolları Göster", "Show your support!": "Desteğinizi gösterin!", "Showcased creativity": "Sergilenen yaratıcılık", - "Showing all messages (user + assistant) per user.": "", + "Showing all messages (user + assistant) per user.": "Kullanıcı başına tüm mesajları (kullanıcı + asistan) gösteriliyor.", "Sign in": "Oturum aç", "Sign in to {{WEBUI_NAME}}": "{{WEBUI_NAME}}'e giriş yap", "Sign in to {{WEBUI_NAME}} with LDAP": "LDAP ile {{WEBUI_NAME}}'e giriş yap", "Sign Out": "Çıkış Yap", "Sign up": "Kaydol", "Sign up to {{WEBUI_NAME}}": "{{WEBUI_NAME}}'e kaydol", - "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "", + "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "LLM kullanarak tabloları, formları, satır içi matematiği ve düzen algılamasını iyileştirerek doğruluğu önemli ölçüde artırır. Gecikmeyi artırır. Varsayılan olarak False.", "Signing in to {{WEBUI_NAME}}": "{{WEBUI_NAME}}'e giriş yapılıyor", - "Single": "", - "Sink List": "", + "Single": "Tekil", + "Sink List": "Listeyi Aşağı Taşı", "sk-1234": "sk-1234", "Skill created successfully": "Yetenek başarıyla oluşturuldu", "Skill deleted successfully": "Yetenek başarıyla silindi", @@ -1767,14 +1767,14 @@ "Skills Access": "Yeteneklere Erişim", "Skills Public Sharing": "Yeteneklerin Herkese Açık Paylaşımı", "Skills Sharing": "Yeteneklerin Paylaşımı", - "Skip Cache": "", - "Skip the cache and re-run the inference. Defaults to False.": "", - "Something went wrong :/": "", - "Sonar": "", - "Sonar Deep Research": "", - "Sonar Pro": "", - "Sonar Reasoning": "", - "Sonar Reasoning Pro": "", + "Skip Cache": "Önbelleği Atla", + "Skip the cache and re-run the inference. Defaults to False.": "Önbelleği atlayın ve çıkarımı yeniden çalıştırın. Varsayılan olarak False.", + "Something went wrong :/": "Bir şeyler yanlış gitti :/", + "Sonar": "Sonar", + "Sonar Deep Research": "Sonar Deep Research", + "Sonar Pro": "Sonar Pro", + "Sonar Reasoning": "Sonar Reasoning", + "Sonar Reasoning Pro": "Sonar Reasoning Pro", "Sort": "Sırala", "Sort by": "Şuna göre sırala", "Sougou Search API sID": "Sougou Search API sID'si", @@ -1782,52 +1782,52 @@ "Source": "Kaynak", "Speech Playback Speed": "Konuşma Oynatma Hızı", "Speech recognition error: {{error}}": "Konuşma tanıma hatası: {{error}}", - "Speech-to-Text": "", + "Speech-to-Text": "Konuşmadan Metne", "Speech-to-Text Engine": "Konuşmadan Metne Motoru", - "Speech-to-Text Language": "", - "Split documents by markdown headers before applying character/token splitting.": "", - "Start a new conversation": "", + "Speech-to-Text Language": "Konuşmadan Metne Dili", + "Split documents by markdown headers before applying character/token splitting.": "Karakter/token bölme işlemi uygulamadan önce belgeleri markdown başlıklarına göre bölün.", + "Start a new conversation": "Yeni bir konuşma başlat", "Start of the channel": "Kanalın başlangıcı", - "Start Tag": "", - "Starting kernel...": "", - "Status": "", - "Status cleared successfully": "", - "Status updated successfully": "", - "Status Updates": "", + "Start Tag": "Başlangıç Etiketi", + "Starting kernel...": "Kernel başlatılıyor...", + "Status": "Durum", + "Status cleared successfully": "Durum başarıyla temizlendi", + "Status updated successfully": "Durum başarıyla güncellendi", + "Status Updates": "Durum Güncellemeleri", "STDOUT/STDERR": "STDOUT/STDERR", - "Steps": "", + "Steps": "Adımlar", "Stop": "Durdur", - "Stop Download": "", - "Stop Generating": "", + "Stop Download": "İndirmeyi Durdur", + "Stop Generating": "Oluşturmayı Durdur", "Stop Sequence": "Diziyi Durdur", "Stream Chat Response": "Akış Sohbet Yanıtı", - "Stream Delta Chunk Size": "", - "Streamable HTTP": "", - "Strikethrough": "", - "Strip Existing OCR": "", - "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "", + "Stream Delta Chunk Size": "Akış Delta Parça Boyutu", + "Streamable HTTP": "Akışlanabilir HTTP", + "Strikethrough": "Üstü Çizili", + "Strip Existing OCR": "Mevcut OCR'ı Kaldır", + "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "PDF'den mevcut OCR metnini çıkarın ve OCR'ı yeniden çalıştırın. OCR Zorla etkinleştirilirse yok sayılır. Varsayılan olarak False.", "STT Model": "STT Modeli", "STT Settings": "STT Ayarları", "Stylized PDF Export": "Biçimlendirilmiş PDF Dışa Aktarımı", - "Submit question": "", - "Submit suggestion": "", - "Subtitle": "", + "Submit question": "Soru gönder", + "Submit suggestion": "Öneri gönder", + "Subtitle": "Altyazı", "Success": "Başarılı", - "Successfully imported {{userCount}} users.": "", + "Successfully imported {{userCount}} users.": "{{userCount}} kullanıcı başarıyla içe aktarıldı.", "Successfully updated.": "Başarıyla güncellendi.", - "Suggest a change": "", + "Suggest a change": "Bir değişiklik öner", "Suggested": "Önerilen", "Support": "Destek", "Support this plugin:": "Bu eklentiyi destekleyin:", - "Supported MIME Types": "", - "Sync": "", - "Sync Complete!": "", + "Supported MIME Types": "Desteklenen MIME Türleri", + "Sync": "Eşitle", + "Sync Complete!": "Eşitleme Tamamlandı!", "Sync directory": "Dizini senkronize et", - "Sync Failed": "", - "Sync Usage Stats": "", - "Syncing stats...": "", - "Syncing...": "", - "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "", + "Sync Failed": "Eşitleme Başarısız", + "Sync Usage Stats": "Kullanım İstatistiklerini Eşitle", + "Syncing stats...": "İstatistikler eşitleniyor...", + "Syncing...": "Eşitleniyor...", + "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "Sadece son eşitleme zaman damganızdan sonraki güncellemelere sahip sohbetleri eşitler. Tüm sohbetleri yeniden eşitlemek için devre dışı bırakın.", "System": "Sistem", "System Instructions": "Sistem Talimatları", "System Prompt": "Sistem Promptu", @@ -1877,7 +1877,7 @@ "There was an error syncing your stats. Please try again.": "", "Thinking...": "Düşünüyor...", "This action cannot be undone. Do you wish to continue?": "Bu eylem geri alınamaz. Devam etmek istiyor musunuz?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Bu kanal {{createdAt}} tarihinde oluşturuldu. Bu, {{channelName}} kanalının en başıdır.", "This chat won't appear in history and your messages will not be saved.": "", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Bu, önemli konuşmalarınızın güvenli bir şekilde arkayüz veritabanınıza kaydedildiğini garantiler. Teşekkür ederiz!", "This feature is currently experimental and may not work as expected.": "", @@ -1912,7 +1912,7 @@ "Title Auto-Generation": "Otomatik Başlık Oluşturma", "Title cannot be an empty string.": "Başlık boş bir dize olamaz.", "Title Generation": "Başlık Oluşturma", - "Title Generation Prompt": "Başlık Oluşturma İstemi", + "Title Generation Prompt": "Başlık Oluşturma Prompt'u", "TLS": "TLS", "To access the available model names for downloading,": "İndirilebilir mevcut model adlarına erişmek için,", "To access the GGUF models available for downloading,": "İndirilebilir mevcut GGUF modellerine erişmek için,", @@ -1923,8 +1923,8 @@ "To select toolkits here, add them to the \"Tools\" workspace first.": "Araçları burada seçmek için öncelikle bunları \"Araçlar\" çalışma alanına ekleyin.", "Toast notifications for new updates": "", "Today": "Bugün", - "Today at {{LOCALIZED_TIME}}": "", - "Toggle {{COUNT}} sources": "", + "Today at {{LOCALIZED_TIME}}": "Bugün saat {{LOCALIZED_TIME}}", + "Toggle {{COUNT}} sources": "{{COUNT}} kaynağı aç/kapat", "Toggle 1 source": "", "Toggle Dictation": "", "Toggle Sidebar": "", @@ -1973,7 +1973,7 @@ "Underline": "", "Unknown": "Bilinmeyen", "Unknown User": "", - "Unloads {{FROM_NOW}}": "", + "Unloads {{FROM_NOW}}": "{{FROM_NOW}} sonra modeli bellekten boşaltır", "Unlock mysteries": "", "Unpin": "Sabitlemeyi Kaldır", "Unravel secrets": "", @@ -1996,14 +1996,14 @@ "Upload directory": "Dizini yükle", "Upload files": "Dosyaları yükle", "Upload Files": "Dosyaları Yükle", - "Upload Model": "", + "Upload Model": "Model Yükle", "Upload Pipeline": "Pipeline Yükle", - "Upload profile image": "", + "Upload profile image": "Profil resmi yükle", "Upload Progress": "Yükleme İlerlemesi", - "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", - "Uploaded files or images": "", - "Uploading file...": "", - "Uploading...": "", + "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Yükleme İlerlemesi: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", + "Uploaded files or images": "Yüklenen dosyalar veya görüntüler", + "Uploading file...": "Dosya yükleniyor...", + "Uploading...": "Yükleniyor...", "URL": "URL", "URL is required": "URL gerekli", "URL Mode": "URL Modu", @@ -2035,9 +2035,9 @@ "Using the default arena model with all models. Click the plus button to add custom models.": "Tüm modellerle varsayılan arena modelini kullanıyor. Özel modeller eklemek için artı düğmesine tıklayın.", "Valid time units:": "Geçerli zaman birimleri:", "Validate certificate": "", - "Valves": "Valvler", - "Valves updated": "Valvler güncellendi", - "Valves updated successfully": "Valvler başarıyla güncellendi", + "Valves": "Valfler", + "Valves updated": "Valfler güncellendi", + "Valves updated successfully": "Valfler başarıyla güncellendi", "variable": "değişken", "Verify Connection": "Bağlantıyı Doğrula", "Verify SSL Certificate": "SSL Sertifikasını Doğrula", @@ -2045,11 +2045,11 @@ "Version {{selectedVersion}} of {{totalVersions}}": "Sürüm {{selectedVersion}} / {{totalVersions}}", "Version deleted": "", "View Replies": "Yanıtları Görüntüle", - "View Result from **{{NAME}}**": "", - "View source: {{name}}": "", - "View source: {{title}}": "", + "View Result from **{{NAME}}**": "**{{NAME}}** sonucunu görüntüle", + "View source: {{name}}": "Kaynağı görüntüle: {{name}}", + "View source: {{title}}": "Kaynağı görüntüle: {{title}}", "Visibility": "Görünürlük", - "Visible": "", + "Visible": "Görünür", "Visible to all users": "", "Vision": "", "Voice": "Ses", @@ -2098,10 +2098,10 @@ "Workspace": "Çalışma Alanı", "Workspace Permissions": "Çalışma Alanı İzinleri", "Write": "Yaz", - "Write a summary in 50 words that summarizes {{topic}}.": "[Konuyu veya anahtar kelimeyi] özetleyen 50 kelimelik bir özet yazın.", + "Write a summary in 50 words that summarizes {{topic}}.": "{{topic}} konusunu özetleyen 50 kelimelik bir özet yazın.", "Write something...": "Bir şeyler yazın...", - "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Modelinizin sistem istemi (system prompt) içeriğini buraya yazın\nörn.: Super Mario Bros’tan Mario’sunuz ve bir asistan olarak hareket ediyorsunuz.", - "Yacy Instance URL": "", + "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Modelinizin sistem promptu içeriğini buraya yazın\nörn.: Super Mario Bros’tan Mario’sunuz ve bir asistan olarak hareket ediyorsunuz.", + "Yacy Instance URL": "Yacy Instance URL", "Yacy Password": "Yacy Parolası", "Yacy Username": "Yacy Kullanıcı Adı", "Yahoo": "Yahoo", @@ -2110,35 +2110,35 @@ "Yandex Web Search config": "Yandex Web Arama Yapılandırması", "Yandex Web Search URL": "Yandex Web Arama URL'si", "Yesterday": "Dün", - "Yesterday at {{LOCALIZED_TIME}}": "", + "Yesterday at {{LOCALIZED_TIME}}": "Dün saat {{LOCALIZED_TIME}}", "You": "Sen", - "You are currently using a trial license. Please contact support to upgrade your license.": "", + "You are currently using a trial license. Please contact support to upgrade your license.": "Şu anda deneme lisansı kullanıyorsunuz. Lisansınızı yükseltmek için lütfen destek ile iletişime geçin.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Aynı anda en fazla {{maxCount}} dosya ile sohbet edebilirsiniz.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Aşağıdaki 'Yönet' düğmesi aracılığıyla bellekler ekleyerek LLM'lerle etkileşimlerinizi kişiselleştirebilir, onları daha yararlı ve size özel hale getirebilirsiniz.", "You cannot upload an empty file.": "Boş bir dosya yükleyemezsiniz.", - "You do not have permission to edit this model": "", - "You do not have permission to edit this prompt.": "", + "You do not have permission to edit this model": "Bu modeli düzenleme izniniz yok.", + "You do not have permission to edit this prompt.": "Bu promptu düzenleme izniniz yok.", "You do not have permission to edit this skill.": "Bu yeteneği düzenleme izniniz yok.", - "You do not have permission to edit this tool": "", - "You do not have permission to make this public": "", - "You do not have permission to send messages in this channel.": "", - "You do not have permission to send messages in this thread.": "", - "You do not have permission to upload files to this knowledge base.": "", + "You do not have permission to edit this tool": "Bu aracı düzenleme izniniz yok.", + "You do not have permission to make this public": "Bunu herkese açma izniniz yok.", + "You do not have permission to send messages in this channel.": "Bu kanalda mesaj gönderme izniniz yok.", + "You do not have permission to send messages in this thread.": "Bu konuda mesaj gönderme izniniz yok.", + "You do not have permission to upload files to this knowledge base.": "Bu bilgi tabanına dosya yükleme izniniz yok.", "You do not have permission to upload files.": "Dosya yüklemek için izniniz yok.", - "You do not have permission to upload web content.": "", + "You do not have permission to upload web content.": "Web içeriği yükleme izniniz yok.", "You have no archived conversations.": "Arşivlenmiş sohbetleriniz yok.", - "You have no shared conversations.": "", + "You have no shared conversations.": "Paylaştığınız sohbet yok.", "You have shared this chat": "Bu sohbeti paylaştınız", - "You.com API Key": "", + "You.com API Key": "You.com API Anahtarı", "You're a helpful assistant.": "Sen yardımsever bir asistansın.", "You're now logged in.": "Şimdi giriş yaptınız.", "Your Account": "Hesabınız", "Your account status is currently pending activation.": "Hesap durumunuz şu anda etkinleştirilmeyi bekliyor.", - "Your browser does not support the audio tag.": "", - "Your browser does not support the video tag.": "", + "Your browser does not support the audio tag.": "Tarayıcınız ses etiketini desteklemiyor.", + "Your browser does not support the video tag.": "Tarayıcınız video etiketini desteklemiyor.", "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Tüm katkınız doğrudan eklenti geliştiricisine gidecektir; Open WebUI herhangi bir yüzde almaz. Ancak seçilen finansman platformunun kendi ücretleri olabilir.", - "Your message text or inputs": "", - "Your usage stats have been successfully synced.": "", + "Your message text or inputs": "Mesaj metniniz veya girdileriniz", + "Your usage stats have been successfully synced.": "Kullanım istatistikleriniz başarıyla eşitlendi.", "YouTube": "Youtube", "Youtube Language": "Youtube Dili", "Youtube Proxy URL": "Youtube Vekil URL'si" From 3a6b5ebb5f3920309aa0edbdeca8765c05855efc Mon Sep 17 00:00:00 2001 From: Shamil Date: Wed, 11 Mar 2026 23:28:39 +0300 Subject: [PATCH 015/221] refac: modernize type hints and imports in access_control module (#22594) --- .../utils/access_control/__init__.py | 57 +++++++++---------- .../open_webui/utils/access_control/files.py | 7 ++- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/backend/open_webui/utils/access_control/__init__.py b/backend/open_webui/utils/access_control/__init__.py index a228bbd6a..b2fb9ece1 100644 --- a/backend/open_webui/utils/access_control/__init__.py +++ b/backend/open_webui/utils/access_control/__init__.py @@ -1,15 +1,21 @@ -from typing import Optional, Set, Union, List, Dict, Any -from open_webui.models.users import Users, UserModel -from open_webui.models.groups import Groups - +import json +from typing import Any +from open_webui.models.users import UserModel +from open_webui.models.groups import Groups +from open_webui.models.access_grants import ( + has_public_read_access_grant, + has_user_access_grant, + strip_user_access_grants, +) from open_webui.config import DEFAULT_USER_PERMISSIONS -import json + +from sqlalchemy.orm import Session def fill_missing_permissions( - permissions: Dict[str, Any], default_permissions: Dict[str, Any] -) -> Dict[str, Any]: + permissions: dict[str, Any], default_permissions: dict[str, Any] +) -> dict[str, Any]: """ Recursively fills in missing properties in the permissions dictionary using the default permissions as a template. @@ -27,9 +33,9 @@ def fill_missing_permissions( def get_permissions( user_id: str, - default_permissions: Dict[str, Any], - db: Optional[Any] = None, -) -> Dict[str, Any]: + default_permissions: dict[str, Any], + db: Session | None = None, +) -> dict[str, Any]: """ Get all permissions for a user by combining the permissions of all groups the user is a member of. If a permission is defined in multiple groups, the most permissive value is used (True > False). @@ -37,8 +43,8 @@ def get_permissions( """ def combine_permissions( - permissions: Dict[str, Any], group_permissions: Dict[str, Any] - ) -> Dict[str, Any]: + permissions: dict[str, Any], group_permissions: dict[str, Any] + ) -> dict[str, Any]: """Combine permissions from multiple groups by taking the most permissive value.""" for key, value in group_permissions.items(): if isinstance(value, dict): @@ -72,8 +78,8 @@ def combine_permissions( def has_permission( user_id: str, permission_key: str, - default_permissions: Dict[str, Any] = {}, - db: Optional[Any] = None, + default_permissions: dict[str, Any] = {}, + db: Session | None = None, ) -> bool: """ Check if a user has a specific permission by checking the group permissions @@ -82,7 +88,7 @@ def has_permission( Permission keys can be hierarchical and separated by dots ('.'). """ - def get_permission(permissions: Dict[str, Any], keys: List[str]) -> bool: + def get_permission(permissions: dict[str, Any], keys: list[str]) -> bool: """Traverse permissions dict using a list of keys (from dot-split permission_key).""" for key in keys: if key not in permissions: @@ -110,9 +116,9 @@ def get_permission(permissions: Dict[str, Any], keys: List[str]) -> bool: def has_access( user_id: str, permission: str = "read", - access_grants: Optional[list] = None, - user_group_ids: Optional[Set[str]] = None, - db: Optional[Any] = None, + access_grants: list | None = None, + user_group_ids: set[str] | None = None, + db: Session | None = None, ) -> bool: """ Check if a user has the specified permission using an in-memory access_grants list. @@ -156,7 +162,7 @@ def has_access( def has_connection_access( user: UserModel, connection: dict, - user_group_ids: Optional[Set[str]] = None, + user_group_ids: set[str] | None = None, ) -> bool: """ Check if a user can access a server connection (tool server, terminal, etc.) @@ -194,7 +200,7 @@ def migrate_access_control( if access_control is None and ac_key not in data: return - grants: List[Dict[str, str]] = [] + grants: list[dict[str, str]] = [] if access_control and isinstance(access_control, dict): for perm in ["read", "write"]: perm_data = access_control.get(perm, {}) @@ -221,20 +227,13 @@ def migrate_access_control( data.pop(ac_key, None) -from open_webui.models.access_grants import ( - has_public_read_access_grant, - has_user_access_grant, - strip_user_access_grants, -) - - def filter_allowed_access_grants( - default_permissions: Dict[str, Any], + default_permissions: dict[str, Any], user_id: str, user_role: str, access_grants: list, public_permission_key: str, - db: Optional[Any] = None, + db: Session | None = None, ) -> list: """ Checks if the user has the required permissions to grant access to a resource. diff --git a/backend/open_webui/utils/access_control/files.py b/backend/open_webui/utils/access_control/files.py index e3d52b0f5..c69f3dfa9 100644 --- a/backend/open_webui/utils/access_control/files.py +++ b/backend/open_webui/utils/access_control/files.py @@ -1,5 +1,4 @@ import logging -from typing import Optional, Any from open_webui.models.users import UserModel from open_webui.models.files import Files @@ -10,14 +9,16 @@ from open_webui.models.models import Models from open_webui.models.access_grants import AccessGrants +from sqlalchemy.orm import Session + log = logging.getLogger(__name__) def has_access_to_file( - file_id: Optional[str], + file_id: str | None, access_type: str, user: UserModel, - db: Optional[Any] = None, + db: Session | None = None, ) -> bool: """ Check if a user has the specified access to a file through any of: From 865880a0b172a44c160f40772f0665bd4d0ea219 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 11 Mar 2026 15:30:57 -0500 Subject: [PATCH 016/221] refac: allow emoji unselect from folder --- .../components/chat/Placeholder/FolderTitle.svelte | 5 +++-- src/lib/components/common/EmojiPicker.svelte | 11 +++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lib/components/chat/Placeholder/FolderTitle.svelte b/src/lib/components/chat/Placeholder/FolderTitle.svelte index 24e289521..d2546f595 100644 --- a/src/lib/components/chat/Placeholder/FolderTitle.svelte +++ b/src/lib/components/chat/Placeholder/FolderTitle.svelte @@ -76,7 +76,7 @@ const updateIconHandler = async (iconName) => { const res = await updateFolderById(localStorage.token, folder.id, { meta: { - icon: iconName + icon: iconName ?? '' } }).catch((error) => { toast.error(`${error}`); @@ -84,7 +84,7 @@ }); if (res) { - folder.meta = { ...folder.meta, icon: iconName }; + folder.meta = { ...folder.meta, icon: iconName ?? '' }; toast.success($i18n.t('Folder updated successfully')); @@ -167,6 +167,7 @@
{}} + selected={folder?.meta?.icon ?? null} onSubmit={(name) => { console.log(name); updateIconHandler(name); diff --git a/src/lib/components/common/EmojiPicker.svelte b/src/lib/components/common/EmojiPicker.svelte index 624bb7be1..84233845c 100644 --- a/src/lib/components/common/EmojiPicker.svelte +++ b/src/lib/components/common/EmojiPicker.svelte @@ -19,6 +19,7 @@ export let side = 'top'; export let align = 'start'; export let user = null; + export let selected = null; let show = false; let emojis = emojiShortCodes; @@ -97,7 +98,11 @@ // Handle emoji selection function selectEmoji(emoji) { const selectedCode = emoji.shortCodes[0]; - onSubmit(selectedCode); + if (selected === selectedCode) { + onSubmit(null); + } else { + onSubmit(selectedCode); + } show = false; } @@ -131,6 +136,8 @@ bind:value={search} />
+ +
{#if emojiRows.length === 0} @@ -155,7 +162,7 @@ placement="top" >
diff --git a/src/lib/components/workspace/common/MemberSelector.svelte b/src/lib/components/workspace/common/MemberSelector.svelte index 2ec541352..f4acad13f 100644 --- a/src/lib/components/workspace/common/MemberSelector.svelte +++ b/src/lib/components/workspace/common/MemberSelector.svelte @@ -21,6 +21,7 @@ export let includeGroups = true; export let includeUsers = true; export let pagination = false; + export let includeSessionUser = false; export let groupIds = []; export let userIds = []; @@ -245,7 +246,7 @@
{#each users as user, userIdx (user.id)} - {#if user?.id !== $_user?.id} + {#if includeSessionUser || user?.id !== $_user?.id} {/if} @@ -667,7 +668,7 @@ on:click={() => filePreviewRef?.resetPdfView()} aria-label={$i18n.t('Reset view')} > - + {/if} diff --git a/src/lib/components/icons/ZoomReset.svelte b/src/lib/components/icons/ZoomReset.svelte new file mode 100644 index 000000000..3b132ee05 --- /dev/null +++ b/src/lib/components/icons/ZoomReset.svelte @@ -0,0 +1,22 @@ + + + From ee0d9b791523399951b22b7765c19e5034fb36a2 Mon Sep 17 00:00:00 2001 From: Athanasios Oikonomou Date: Thu, 12 Mar 2026 23:58:02 +0200 Subject: [PATCH 024/221] feat: knowledge - clickable file icon opens content (#22629) Replaces the static document icon with an interactive button that opens the file content in a new tab via the files API endpoint. --- .../Knowledge/KnowledgeBase/Files.svelte | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte index 9d4213023..56646f57d 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte @@ -11,6 +11,8 @@ import { capitalizeFirstLetter, formatFileSize } from '$lib/utils'; + import { WEBUI_BASE_URL } from '$lib/constants'; + import Tooltip from '$lib/components/common/Tooltip.svelte'; import DocumentPage from '$lib/components/icons/DocumentPage.svelte'; import XMark from '$lib/components/icons/XMark.svelte'; @@ -31,6 +33,25 @@ ? '' : 'hover:bg-gray-100 dark:hover:bg-gray-850'}" > +
+ {#if file?.status !== 'uploading'} + + + + {:else} + + {/if} +
+