From fecbeac7d185c7372f84312dcc24fcf75cec5f8d Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 17:34:44 +0200 Subject: [PATCH 001/583] Merge pull request #30354 from Classic298/i18n-en-us-fallback fix: keep en-US as the last i18n fallback when a stored locale has no bundle --- src/lib/i18n/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/index.ts b/src/lib/i18n/index.ts index 7e6ea80300..548e6709e8 100644 --- a/src/lib/i18n/index.ts +++ b/src/lib/i18n/index.ts @@ -76,7 +76,7 @@ export const initI18n = (defaultLocale?: string, value: I18nOverrides = {}) => { const detectionOrder = defaultLocale ? ['querystring', 'localStorage'] : ['querystring', 'localStorage', 'navigator']; - const fallbackDefaultLocale = defaultLocale ? [defaultLocale] : ['en-US']; + const fallbackDefaultLocale = defaultLocale ? [defaultLocale, 'en-US'] : ['en-US']; return i18next .use(resourcesToBackend(loadResource)) From 6f6792d4848bd47be6abd6860f594e643f9de4ba Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 17:34:57 +0200 Subject: [PATCH 002/583] fix: pass MCP tool images to the model, not only to the UI (#30358) When an MCP tool returns an image (e.g. a Home Assistant camera snapshot), the snapshot shows up in the tool call section but the model never sees it: it answers that there is no image. Only images arriving as inline data URIs were attached to the model request; MCP images are uploaded to Files first and their file URL was treated as display-only. Now an image file item with a file URL is attached to the model request as an input_image part in addition to staying in the tool call's displayed files. The existing URL-to-base64 step already resolves file URLs, so the model receives the image bytes; verified on a running instance with a mock MCP server and a mock upstream (the second upstream request carries the byte-identical JPEG). Inline data-URI images keep their existing model-only handling. Fixes #30327 --- backend/open_webui/utils/middleware.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 82346043b4..0cb0f2b6d9 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -3487,6 +3487,8 @@ async def drain_approved_tool_calls(request, form_data, user, model, metadata) - output_parts.append({'type': 'input_image', 'image_url': image_url}) else: display_files.append(file_item) + if file_item.get('type') == 'image' and file_item.get('url'): + output_parts.append({'type': 'input_image', 'image_url': file_item['url']}) output.append( { @@ -5858,7 +5860,7 @@ async def streaming_chat_response_handler(response, ctx): frontend_output = [] for item in full_output() if snapshot else full_output()[output_start:]: if item.get('type') == 'function_call_output': - # input_image parts are base64 data URIs only for the LLM, via convert_output_to_messages + # input_image parts are for the LLM only, via convert_output_to_messages item = { **item, 'output': [ @@ -6127,8 +6129,7 @@ async def streaming_chat_response_handler(response, ctx): ) result_status_by_call_id[result.get('tool_call_id', '')] = local_output_status - # Separate image data URIs (for LLM via input_image) from - # other files (for frontend display via files attribute). + # Data-URI images: LLM only. File-URL images: LLM and frontend. Other files: frontend. display_files = [] for file_item in result.get('files', []): if file_item.get('type') == 'image' and file_item.get('url', '').startswith('data:'): @@ -6136,8 +6137,9 @@ async def streaming_chat_response_handler(response, ctx): image_url = await store_tool_result_image(request, file_item['url'], metadata, user) output_parts.append({'type': 'input_image', 'image_url': image_url}) else: - # Frontend display (MCP images, audio, etc.) display_files.append(file_item) + if file_item.get('type') == 'image' and file_item.get('url'): + output_parts.append({'type': 'input_image', 'image_url': file_item['url']}) output.append( { From f956f7adc0cd4f1f2d3c2de6b7eec8895ccb0a6b Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 17:35:05 +0200 Subject: [PATCH 003/583] fix: send only the file name to Docling instead of the full storage path (#30357) With the Docling content extraction engine, every conversion request carried the server's full internal upload path (for example /app/backend/data/uploads/_report.pdf) as the multipart file name. Docling only needs a bare file name, and a hosted Docling instance has no business learning where Open WebUI keeps its files on disk. The loader now sends the base name of the stored file, which is what the MinerU, Datalab and Mistral loaders already do. Nothing else in the request or the parsed result changes, verified against a capturing mock server before and after. Fixes #30352 --- backend/open_webui/retrieval/loaders/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/loaders/main.py b/backend/open_webui/retrieval/loaders/main.py index 74221f1aea..db25c479b7 100644 --- a/backend/open_webui/retrieval/loaders/main.py +++ b/backend/open_webui/retrieval/loaders/main.py @@ -273,7 +273,7 @@ class DoclingLoader: f'{self.url}/v1/convert/file', files={ 'files': ( - self.file_path, + os.path.basename(self.file_path), f, self.mime_type or 'application/octet-stream', ) From 6b36f620cf6eda7df58e04f1aed4e86cf1e52062 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 17:35:14 +0200 Subject: [PATCH 004/583] fix: stop KeyError 'model' traceback on every new chat from initial title generation (#30356) Every new saved chat logged "Error generating initial chat title" with a KeyError: 'model' traceback. The title itself was already generated and saved by then, so the log was misleading, and the memory settings played no part in it. The error was silently logged at debug level since v0.10.0 and became visible in v0.11.4 when the title path switched to log.exception. The initial title task runs the shared background handler with a context that has no resolved model, which the memory review step read unconditionally. It now reads it with a default of None, which the memory review already accepts. The title path never carries an assistant message, so the review stops before doing any work there, and the main completion path keeps reviewing memory exactly once per turn with the real model. Fixes #30339 --- backend/open_webui/utils/middleware.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 0cb0f2b6d9..523c8bff8b 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -4041,7 +4041,7 @@ async def background_tasks_handler(ctx): await review_memory_after_turn( request=request, user=user, - model=ctx['model'], + model=ctx.get('model'), metadata=metadata, form_data=form_data, assistant_message=ctx.get('assistant_message') or {}, From 0a2e9a42e7f20fc76b5c4f118030fdafe0256d42 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 17:35:59 +0200 Subject: [PATCH 005/583] fix: detect the real image type of bare base64 generated images (#30359) Generated images that come back as bare base64 (OpenAI b64_json, Gemini bytesBase64Encoded and inlineData, Automatic1111) were always stored as generated-image.png with content type image/png, even when the provider returned JPEG or WebP, for example with {"output_format": "jpeg"} in the OpenAI extra params. The image still rendered because browsers read the bytes, but the download name, the served Content-Type and the type sent along on a later image edit were wrong. Bare base64 carries no format, so the type is now read from the bytes with Pillow, the same way the file already inspects images elsewhere. A response that is not an image at all now fails the generation instead of storing a broken png. The file extension comes from the module's own extension map first, because the Python 3.11 Docker image has no mime database entry for WebP and would otherwise name the file generated-imageNone. Fixes #29948 --- backend/open_webui/routers/images.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index 8c6e772896..c894f2c651 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -509,8 +509,9 @@ async def get_image_data(data: str, headers=None, trusted_base_url: str | None = mime_type = header.split(';')[0].lstrip('data:') img_data = base64.b64decode(encoded) else: - mime_type = 'image/png' img_data = base64.b64decode(data) + with Image.open(io.BytesIO(img_data)) as image: + mime_type = Image.MIME.get(image.format, 'image/png') return img_data, mime_type except Exception as e: log.exception(f'Error loading image data: {e}') @@ -520,7 +521,7 @@ async def get_image_data(data: str, headers=None, trusted_base_url: str | None = async def upload_image(request, image_data, content_type, metadata, user, db=None): if image_data is None or content_type is None: raise ValueError('Failed to retrieve image data from the generation backend') - image_format = mimetypes.guess_extension(content_type) + image_format = IMAGE_FILE_EXTENSIONS.get(content_type.lower()) or mimetypes.guess_extension(content_type) or '.png' file = UploadFile( file=io.BytesIO(image_data), filename=f'generated-image{image_format}', # will be converted to a unique ID on upload_file From 69fcad0c044b20e73259e471764f67ea801ee4fa Mon Sep 17 00:00:00 2001 From: Badar Rahman Date: Tue, 22 Sep 2026 22:36:35 +0700 Subject: [PATCH 006/583] i18n: complete Indonesian (id-ID) translations (#30328) Co-authored-by: DarRahman --- src/lib/i18n/locales/id-ID/translation.json | 5847 ++++++++++--------- 1 file changed, 2925 insertions(+), 2922 deletions(-) diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index 1a21ba94d6..a843242c37 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -1,636 +1,638 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1 untuk tanpa batas, atau bilangan bulat positif untuk batas tertentu", "(latest)": "(terbaru)", - "(leave blank for to use commercial endpoint)": "", - "[Last] dddd [at] h:mm A": "", - "[Today at] h:mm A": "", - "[Yesterday at] h:mm A": "", + "(leave blank for to use commercial endpoint)": "(kosongkan untuk menggunakan endpoint komersial)", + "[Last] dddd [at] h:mm A": "[dddd lalu pukul] h:mm A", + "[Today at] h:mm A": "[Hari ini pukul] h:mm A", + "[Yesterday at] h:mm A": "[Kemarin pukul] h:mm A", "{{ models }}": "{{ models }}", - "{{count}} added lines_other": "", - "{{COUNT}} Available Skills": "", - "{{COUNT}} Available Tools": "", - "{{COUNT}} characters": "", - "{{COUNT}} document(s) selected.": "", - "{{COUNT}} extracted lines": "", + "{{count}} added lines_one": "{{count}} baris ditambahkan", + "{{count}} added lines_other": "{{count}} baris ditambahkan", + "{{COUNT}} Available Skills": "{{COUNT}} Keterampilan Tersedia", + "{{COUNT}} Available Tools": "{{COUNT}} Alat Tersedia", + "{{COUNT}} characters": "{{COUNT}} karakter", + "{{COUNT}} document(s) selected.": "{{COUNT}} dokumen dipilih.", + "{{COUNT}} extracted lines": "{{COUNT}} baris diekstrak", "{{count}} files_one": "{{count}} berkas", - "{{count}} files_other": "", - "{{COUNT}} files": "", + "{{count}} files_other": "{{count}} berkas", + "{{COUNT}} files": "{{COUNT}} berkas", "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "{{count}} berkas dipilih. Hanya berkas baru dan yang dimodifikasi yang akan diunggah. Berkas yang dihapus akan disingkirkan. Struktur folder akan disinkronkan. Lanjutkan?", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "{{count}} berkas dipilih. Hanya berkas baru dan yang dimodifikasi yang akan diunggah. Berkas yang dihapus akan disingkirkan. Struktur folder akan dicerminkan. Lanjutkan?", "{{count}} filters_one": "{{count}} filter", - "{{count}} filters_other": "", + "{{count}} filters_other": "{{count}} filter", "{{count}} groups_one": "{{count}} grup", - "{{count}} groups_other": "", - "{{COUNT}} hidden lines": "", - "{{COUNT}} members": "", + "{{count}} groups_other": "{{count}} grup", + "{{COUNT}} hidden lines": "{{COUNT}} baris tersembunyi", + "{{COUNT}} members": "{{COUNT}} anggota", "{{count}} of {{total}} accessible_one": "{{count}} dari {{total}} dapat diakses", - "{{count}} of {{total}} accessible_other": "", - "{{COUNT}} pipeline(s) selected": "", - "{{count}} removed lines_other": "", - "{{COUNT}} Replies": "", - "{{COUNT}} Rows": "", + "{{count}} of {{total}} accessible_other": "{{count}} dari {{total}} dapat diakses", + "{{COUNT}} pipeline(s) selected": "{{COUNT}} pipeline dipilih", + "{{count}} removed lines_one": "{{count}} baris dihapus", + "{{count}} removed lines_other": "{{count}} baris dihapus", + "{{COUNT}} Replies": "{{COUNT}} Balasan", + "{{COUNT}} Rows": "{{COUNT}} Baris", "{{count}} selected_one": "{{count}} dipilih", - "{{count}} selected_other": "", - "{{COUNT}} Sources": "", + "{{count}} selected_other": "{{count}} dipilih", + "{{COUNT}} Sources": "{{COUNT}} Sumber", "{{count}} users_one": "{{count}} pengguna", - "{{count}} users_other": "", - "{{COUNT}} words": "", - "{{COUNT}}d_time_ago": "", - "{{COUNT}}h_time_ago": "", - "{{COUNT}}m_time_ago": "", - "{{COUNT}}w_time_ago": "", - "{{COUNT}}y_time_ago": "", - "{{label}} contains invalid JSON": "", - "{{label}} must be a JSON object": "", - "{{model}} download has been canceled": "", - "{{modelName}} profile image": "", - "{{NAMES}} reacted with {{REACTION}}": "", - "{{page}} / {{totalPages}} ({{rows}} rows)": "", - "{{percent}}% full": "", + "{{count}} users_other": "{{count}} pengguna", + "{{COUNT}} words": "{{COUNT}} kata", + "{{COUNT}}d_time_ago": "{{COUNT}} hari lalu", + "{{COUNT}}h_time_ago": "{{COUNT}} jam lalu", + "{{COUNT}}m_time_ago": "{{COUNT}} menit lalu", + "{{COUNT}}w_time_ago": "{{COUNT}} minggu lalu", + "{{COUNT}}y_time_ago": "{{COUNT}} tahun lalu", + "{{label}} contains invalid JSON": "{{label}} berisi JSON tidak valid", + "{{label}} must be a JSON object": "{{label}} harus berupa objek JSON", + "{{model}} download has been canceled": "Pengunduhan {{model}} telah dibatalkan", + "{{modelName}} profile image": "Gambar profil {{modelName}}", + "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} bereaksi dengan {{REACTION}}", + "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} baris)", + "{{percent}}% full": "{{percent}}% penuh", "{{user}}'s Chats": "Obrolan {{user}}", "{{webUIName}} Backend Required": "{{webUIName}} Diperlukan Backend", - "* (all domains)": "", - "*Prompt node ID(s) are required for image generation": "", - "*required": "", - "1 file": "", - "1 group": "", - "1 hour before": "", - "1 Source": "", - "1 user": "", - "10 minutes before": "", - "15 minutes before": "", - "1m_time_ago": "", - "30 minutes before": "", - "5 minutes before": "", - "A chat run failed.": "", - "A chat run finished successfully.": "", - "A collaboration channel where people join as members": "", - "A discussion channel where access is controlled by groups and permissions": "", - "A new version (v{{LATEST_VERSION}}) is now available.": "", - "A private conversation between you and selected users": "", + "* (all domains)": "* (semua domain)", + "*Prompt node ID(s) are required for image generation": "*ID node prompt diperlukan untuk pembuatan gambar", + "*required": "*wajib diisi", + "1 file": "1 berkas", + "1 group": "1 grup", + "1 hour before": "1 jam sebelumnya", + "1 Source": "1 Sumber", + "1 user": "1 pengguna", + "10 minutes before": "10 menit sebelumnya", + "15 minutes before": "15 menit sebelumnya", + "1m_time_ago": "1 mnt lalu", + "30 minutes before": "30 menit sebelumnya", + "5 minutes before": "5 menit sebelumnya", + "A chat run failed.": "Proses obrolan gagal.", + "A chat run finished successfully.": "Proses obrolan berhasil selesai.", + "A collaboration channel where people join as members": "Saluran kolaborasi tempat pengguna bergabung sebagai anggota", + "A discussion channel where access is controlled by groups and permissions": "Saluran diskusi dengan akses yang dikontrol oleh grup dan izin", + "A new version (v{{LATEST_VERSION}}) is now available.": "Versi baru (v{{LATEST_VERSION}}) kini tersedia.", + "A private conversation between you and selected users": "Percakapan pribadi antara Anda dan pengguna yang dipilih", "a user": "seorang pengguna", - "about the Roman Empire": "", - "Accept Autocomplete Generation\nJump to Prompt Variable": "", - "Access": "", - "Access Control": "", - "Access Grants": "", - "Access level": "", - "Access List": "", - "Access prohibited": "", - "Access updated": "", - "Accessible to all users": "", + "about the Roman Empire": "tentang Kekaisaran Romawi", + "Accept Autocomplete Generation\nJump to Prompt Variable": "Terima Pembuatan Pelengkapan Otomatis\nLompat ke Variabel Prompt", + "Access": "Akses", + "Access Control": "Kontrol Akses", + "Access Grants": "Izin Akses", + "Access level": "Tingkat akses", + "Access List": "Daftar Akses", + "Access prohibited": "Akses dilarang", + "Access updated": "Akses diperbarui", + "Accessible to all users": "Dapat diakses oleh semua pengguna", "Account Activation Pending": "Aktivasi Akun Tertunda", "Accurate information": "Informasi yang akurat", - "Action": "", - "Actions": "", - "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "", + "Action": "Tindakan", + "Actions": "Tindakan", + "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktifkan perintah ini dengan mengetik \"/{{COMMAND}}\" pada input obrolan.", "Active": "Aktif", "Active Users": "Pengguna Aktif", - "Activity": "", + "Activity": "Aktivitas", "Add": "Tambah", - "Add a model ID": "", - "Add a preference, fact, or instruction about you": "", + "Add a model ID": "Tambahkan ID model", + "Add a preference, fact, or instruction about you": "Tambahkan preferensi, fakta, atau instruksi tentang Anda", "Add a short description about what this model does": "Tambahkan deskripsi singkat tentang apa yang dilakukan model ini", "Add a tag": "Menambahkan tag", - "Add a tag...": "", - "Add Access": "", - "Add Arena Model": "", - "Add Connection": "", - "Add Content": "", - "Add content here": "", - "Add Custom Parameter": "", - "Add Custom Prompt": "", - "Add description": "", - "Add Details": "", - "Add durable context for future chats": "", + "Add a tag...": "Tambahkan tag...", + "Add Access": "Tambah Akses", + "Add Arena Model": "Tambah Model Arena", + "Add Connection": "Tambah Koneksi", + "Add Content": "Tambah Konten", + "Add content here": "Tambahkan konten di sini", + "Add Custom Parameter": "Tambah Parameter Kustom", + "Add Custom Prompt": "Tambah Prompt Kustom", + "Add description": "Tambahkan deskripsi", + "Add Details": "Tambah Detail", + "Add durable context for future chats": "Tambahkan konteks permanen untuk obrolan mendatang", "Add Files": "Menambahkan File", - "Add Image": "", - "Add Knowledge Connection": "", - "Add location": "", - "Add Member": "", - "Add Members": "", + "Add Image": "Tambah Gambar", + "Add Knowledge Connection": "Tambah Koneksi Pengetahuan", + "Add location": "Tambahkan lokasi", + "Add Member": "Tambah Anggota", + "Add Members": "Tambah Anggota", "Add Memory": "Menambahkan Memori", - "Add prompt suggestion": "", - "Add Reaction": "", - "Add tag": "", - "Add Tag": "", - "Add Terminal": "", - "Add Terminal Connection": "", - "Add text content": "", - "Add to favorites": "", - "Add translation": "", + "Add prompt suggestion": "Tambahkan saran prompt", + "Add Reaction": "Tambah Reaksi", + "Add tag": "Tambahkan tag", + "Add Tag": "Tambah Tag", + "Add Terminal": "Tambah Terminal", + "Add Terminal Connection": "Tambah Koneksi Terminal", + "Add text content": "Tambahkan konten teks", + "Add to favorites": "Tambahkan ke favorit", + "Add translation": "Tambah terjemahan", "Add User": "Tambah Pengguna", - "Add User Group": "", - "Add User Variable": "", - "Add webhook": "", - "Add webpage": "", - "Add your Open Terminal URL and API key in Settings → Integrations.": "", - "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "", - "Additional feedback comments": "", + "Add User Group": "Tambah Grup Pengguna", + "Add User Variable": "Tambah Variabel Pengguna", + "Add webhook": "Tambah webhook", + "Add webpage": "Tambah halaman web", + "Add your Open Terminal URL and API key in Settings → Integrations.": "Tambahkan URL Open Terminal dan kunci API Anda di Pengaturan → Integrasi.", + "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Opsi konfigurasi tambahan untuk marker. Ini harus berupa string JSON dengan pasangan kunci-nilai. Contoh: '{\"key\": \"value\"}'. Kunci yang didukung meliputi: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level", + "Additional feedback comments": "Komentar masukan tambahan", "admin": "admin", "Admin": "Admin", "Admin Panel": "Panel Admin", - "Admin-managed service account": "", + "Admin-managed service account": "Akun layanan yang dikelola admin", "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Admin memiliki akses ke semua alat setiap saat; pengguna memerlukan alat yang ditetapkan per model di ruang kerja.", - "Advanced": "", + "Advanced": "Lanjutan", "Advanced Params": "Parameter Lanjutan", - "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "", - "AI": "", - "All": "", - "All chats have been unarchived.": "", - "All day": "", - "All events": "", - "All models are now hidden": "", - "All models are now visible": "", - "All models deleted successfully": "", - "All rights reserved.": "", - "All shared chats have been unshared.": "", - "All Sources": "", - "All time": "", - "All Users": "", - "All users and system events": "", - "Allow": "", - "Allow {{NAME}}?": "", - "Allow browser notifications for completed responses.": "", - "Allow Call": "", - "Allow Chat Controls": "", - "Allow Chat Delete": "", - "Allow Chat Edit": "", - "Allow Chat Export": "", - "Allow Chat Import": "", - "Allow Chat Params": "", - "Allow Chat Share": "", - "Allow Chat System Prompt": "", - "Allow Chat Valves": "", - "Allow Continue Response": "", - "Allow Delete Messages": "", - "Allow File Upload": "", - "Allow Multiple Models in Chat": "", - "Allow public write access": "", - "Allow Rate Response": "", - "Allow Regenerate Response": "", - "Allow Sharing With Groups": "", - "Allow Sharing With Users": "", - "Allow Speech to Text": "", - "Allow Temporary Chat": "", - "Allow Text to Speech": "", - "Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "", - "Allow Tool Call": "", - "Allow Web Upload": "", + "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "Setelah mengubah model embedding, indeks ulang pengetahuan, pencarian pengetahuan, dan vektor memori agar perubahan diterapkan.", + "AI": "AI", + "All": "Semua", + "All chats have been unarchived.": "Semua obrolan telah batal diarsipkan.", + "All day": "Sepanjang hari", + "All events": "Semua peristiwa", + "All models are now hidden": "Semua model sekarang disembunyikan", + "All models are now visible": "Semua model sekarang terlihat", + "All models deleted successfully": "Semua model berhasil dihapus", + "All rights reserved.": "Hak cipta dilindungi undang-undang.", + "All shared chats have been unshared.": "Semua obrolan bersama telah dibatalkan pembagiannya.", + "All Sources": "Semua Sumber", + "All time": "Sepanjang waktu", + "All Users": "Semua Pengguna", + "All users and system events": "Semua pengguna dan peristiwa sistem", + "Allow": "Izinkan", + "Allow {{NAME}}?": "Izinkan {{NAME}}?", + "Allow browser notifications for completed responses.": "Izinkan notifikasi peramban untuk respons yang selesai.", + "Allow Call": "Izinkan Panggilan", + "Allow Chat Controls": "Izinkan Kontrol Obrolan", + "Allow Chat Delete": "Izinkan Hapus Obrolan", + "Allow Chat Edit": "Izinkan Edit Obrolan", + "Allow Chat Export": "Izinkan Ekspor Obrolan", + "Allow Chat Import": "Izinkan Impor Obrolan", + "Allow Chat Params": "Izinkan Parameter Obrolan", + "Allow Chat Share": "Izinkan Bagikan Obrolan", + "Allow Chat System Prompt": "Izinkan Prompt Sistem Obrolan", + "Allow Chat Valves": "Izinkan Valve Obrolan", + "Allow Continue Response": "Izinkan Lanjutkan Respons", + "Allow Delete Messages": "Izinkan Hapus Pesan", + "Allow File Upload": "Izinkan Unggah Berkas", + "Allow Multiple Models in Chat": "Izinkan Banyak Model dalam Obrolan", + "Allow public write access": "Izinkan akses tulis publik", + "Allow Rate Response": "Izinkan Beri Nilai Respons", + "Allow Regenerate Response": "Izinkan Buat Ulang Respons", + "Allow Sharing With Groups": "Izinkan Berbagi dengan Grup", + "Allow Sharing With Users": "Izinkan Berbagi dengan Pengguna", + "Allow Speech to Text": "Izinkan Ucapan ke Teks", + "Allow Temporary Chat": "Izinkan Obrolan Sementara", + "Allow Text to Speech": "Izinkan Teks ke Ucapan", + "Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "Izinkan AI untuk mendelegasikan tugas ke sub-agen. Setiap sub-agen membuat obrolan nyata dengan akses alat penuh. Menggunakan panggilan LLM tambahan.", + "Allow Tool Call": "Izinkan Panggilan Alat", + "Allow Web Upload": "Izinkan Unggahan Web", "Already have an account?": "Sudah memiliki akun?", - "Also bound to {{action}}": "", - "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "", - "Always": "", - "Amazing": "", + "Also bound to {{action}}": "Juga terikat ke {{action}}", + "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "Alternatif untuk top_p, dan bertujuan untuk memastikan keseimbangan antara kualitas dan variasi. Parameter p mewakili probabilitas minimum agar sebuah token dipertimbangkan, relatif terhadap probabilitas token yang paling mungkin. Misalnya, dengan p=0,05 dan token yang paling mungkin memiliki probabilitas 0,9, logit dengan nilai kurang dari 0,045 akan disaring.", + "Always": "Selalu", + "Amazing": "Luar biasa", "an assistant": "asisten", - "Analytics": "", - "Analyzed": "", - "Analyzing...": "", - "and {{COUNT}} more": "", + "Analytics": "Analitik", + "Analyzed": "Dianalisis", + "Analyzing...": "Menganalisis...", + "and {{COUNT}} more": "dan {{COUNT}} lainnya", "and create a new shared link.": "dan membuat tautan bersama baru.", - "Anyone": "", - "Anyone with the link can view": "", + "Anyone": "Siapa saja", + "Anyone with the link can view": "Siapa saja yang memiliki tautan dapat melihat", "API Base URL": "URL Dasar API", "API Key": "Kunci API", - "API Key / Token": "", + "API Key / Token": "Kunci API / Token", "API Key created.": "Kunci API dibuat.", - "API Key deleted.": "", - "API Keys": "", - "API Type": "", - "API Version": "", - "API Version is required": "", - "App navigation": "", - "applies to all users with the \"user\" role": "", + "API Key deleted.": "Kunci API dihapus.", + "API Keys": "Kunci API", + "API Type": "Jenis API", + "API Version": "Versi API", + "API Version is required": "Versi API wajib diisi", + "App navigation": "Navigasi aplikasi", + "applies to all users with the \"user\" role": "berlaku untuk semua pengguna dengan peran \"user\"", "April": "April", "Archive": "Arsipkan", - "archived-chat-export": "", - "Are you sure you want to archive all chats? This action cannot be undone.": "", - "Are you sure you want to clear all memories? This action cannot be undone.": "", - "Are you sure you want to delete \"{{NAME}}\"?": "", - "Are you sure you want to delete **{{modelName}}**?": "", - "Are you sure you want to delete all chats? This action cannot be undone.": "", - "Are you sure you want to delete this channel?": "", - "Are you sure you want to delete this connection? This action cannot be undone.": "", - "Are you sure you want to delete this directory?": "", - "Are you sure you want to delete this memory? This action cannot be undone.": "", - "Are you sure you want to delete this message?": "", - "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", - "Are you sure you want to delete this webhook? This action cannot be undone.": "", - "Are you sure you want to delete this?": "", - "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "", - "Are you sure you want to unarchive all archived chats?": "", - "Are you sure you want to unshare all shared chats? This will remove all share links.": "", - "Artifacts": "", - "Asc": "", - "Ask": "", - "Ask a question": "", - "Ask a test question": "", - "Ask for approval": "", - "Ask this knowledge source a test question": "", - "Assistant": "", - "Assistant messages": "", - "at": "", - "At time of event": "", - "Attach File From Knowledge": "", - "Attach Files": "", - "Attach Knowledge": "", - "Attach Notes": "", - "Attach Webpage": "", + "archived-chat-export": "ekspor-obrolan-diarsipkan", + "Are you sure you want to archive all chats? This action cannot be undone.": "Apakah Anda yakin ingin mengarsipkan semua obrolan? Tindakan ini tidak dapat dibatalkan.", + "Are you sure you want to clear all memories? This action cannot be undone.": "Apakah Anda yakin ingin membersihkan semua memori? Tindakan ini tidak dapat dibatalkan.", + "Are you sure you want to delete \"{{NAME}}\"?": "Apakah Anda yakin ingin menghapus \"{{NAME}}\"?", + "Are you sure you want to delete **{{modelName}}**?": "Apakah Anda yakin ingin menghapus **{{modelName}}**?", + "Are you sure you want to delete all chats? This action cannot be undone.": "Apakah Anda yakin ingin menghapus semua obrolan? Tindakan ini tidak dapat dibatalkan.", + "Are you sure you want to delete this channel?": "Apakah Anda yakin ingin menghapus saluran ini?", + "Are you sure you want to delete this connection? This action cannot be undone.": "Apakah Anda yakin ingin menghapus koneksi ini? Tindakan ini tidak dapat dibatalkan.", + "Are you sure you want to delete this directory?": "Apakah Anda yakin ingin menghapus direktori ini?", + "Are you sure you want to delete this memory? This action cannot be undone.": "Apakah Anda yakin ingin menghapus memori ini? Tindakan ini tidak dapat dibatalkan.", + "Are you sure you want to delete this message?": "Apakah Anda yakin ingin menghapus pesan ini?", + "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Apakah Anda yakin ingin menghapus versi ini? Versi turunan akan ditautkan kembali ke induk versi ini.", + "Are you sure you want to delete this webhook? This action cannot be undone.": "Apakah Anda yakin ingin menghapus webhook ini? Tindakan ini tidak dapat dibatalkan.", + "Are you sure you want to delete this?": "Apakah Anda yakin ingin menghapus ini?", + "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "Apakah Anda yakin ingin mengatur ulang semua izin ke nilai default? Anda masih perlu menyimpan untuk menerapkan perubahan.", + "Are you sure you want to unarchive all archived chats?": "Apakah Anda yakin ingin membatalkan pengarsipan semua obrolan yang diarsipkan?", + "Are you sure you want to unshare all shared chats? This will remove all share links.": "Apakah Anda yakin ingin membatalkan berbagi semua obrolan yang dibagikan? Ini akan menghapus semua tautan berbagi.", + "Artifacts": "Artefak", + "Asc": "Menaik", + "Ask": "Tanya", + "Ask a question": "Ajukan pertanyaan", + "Ask a test question": "Ajukan pertanyaan uji coba", + "Ask for approval": "Minta persetujuan", + "Ask this knowledge source a test question": "Ajukan pertanyaan uji coba ke sumber pengetahuan ini", + "Assistant": "Asisten", + "Assistant messages": "Pesan asisten", + "at": "pada", + "At time of event": "Pada saat kejadian", + "Attach File From Knowledge": "Lampirkan Berkas Dari Pengetahuan", + "Attach Files": "Lampirkan Berkas", + "Attach Knowledge": "Lampirkan Pengetahuan", + "Attach Notes": "Lampirkan Catatan", + "Attach Webpage": "Lampirkan Halaman Web", "Attention to detail": "Perhatian terhadap detail", - "Audio player": "", + "Audio player": "Pemutar audio", "August": "Agustus", - "Auth": "", - "Auth Mode": "", - "Auth required": "", - "Authenticate": "", - "Authorize OAuth": "", - "Auto": "", - "Auto (Random)": "", - "Automatic": "", - "Automatic Delivery": "", - "Automatic Events": "", - "Automatic1111": "", + "Auth": "Autentikasi", + "Auth Mode": "Mode Autentikasi", + "Auth required": "Autentikasi diperlukan", + "Authenticate": "Autentikasi", + "Authorize OAuth": "Otorisasi OAuth", + "Auto": "Otomatis", + "Auto (Random)": "Otomatis (Acak)", + "Automatic": "Otomatis", + "Automatic Delivery": "Pengiriman Otomatis", + "Automatic Events": "Peristiwa Otomatis", + "Automatic1111": "Automatic1111", "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 URL Dasar diperlukan.", - "Automation": "", - "Automation created": "", - "Automation Menu": "", - "Automation title": "", - "Automation triggered": "", - "Automation updated": "", - "Automations": "", - "Available list": "", - "Available models": "", - "Available Skills": "", - "Available Tools": "", - "Available variables": "", + "Automation": "Otomatisasi", + "Automation created": "Otomatisasi dibuat", + "Automation Menu": "Menu Otomatisasi", + "Automation title": "Judul otomatisasi", + "Automation triggered": "Otomatisasi dipicu", + "Automation updated": "Otomatisasi diperbarui", + "Automations": "Otomatisasi", + "Available list": "Daftar yang tersedia", + "Available models": "Model yang tersedia", + "Available Skills": "Keahlian yang Tersedia", + "Available Tools": "Alat yang Tersedia", + "Available variables": "Variabel yang tersedia", "available!": "tersedia!", - "Average messages per active day": "", - "Average tokens per chat": "", + "Average messages per active day": "Rata-rata pesan per hari aktif", + "Average tokens per chat": "Rata-rata token per obrolan", "Away": "Tidak di tempat", - "Awful": "", - "Azure AI Speech": "", + "Awful": "Sangat Buruk", + "Azure AI Speech": "Azure AI Speech", "Azure OpenAI": "Azure OpenAI", "Back": "Kembali", - "Background Image": "", - "Background image must be at most 25 megapixels.": "", - "Background image must be at most 5 MiB.": "", - "Background image must be PNG, JPEG, WebP, or GIF.": "", - "Background image preview": "", - "Background sub-agent finished": "", - "background sub-agents": "", + "Background Image": "Gambar Latar Belakang", + "Background image must be at most 25 megapixels.": "Gambar latar belakang maksimal 25 megapiksel.", + "Background image must be at most 5 MiB.": "Gambar latar belakang maksimal 5 MiB.", + "Background image must be PNG, JPEG, WebP, or GIF.": "Gambar latar belakang harus berupa PNG, JPEG, WebP, atau GIF.", + "Background image preview": "Pratinjau gambar latar belakang", + "Background sub-agent finished": "Sub-agen latar belakang selesai", + "background sub-agents": "sub-agen latar belakang", "Bad Response": "Respons Buruk", "Base Model (From)": "Model Dasar (Dari)", - "Base Model is required.": "", - "Base Models": "", - "Basic text only": "", - "Basics": "", - "Bearer": "", + "Base Model is required.": "Model Dasar wajib diisi.", + "Base Models": "Model Dasar", + "Basic text only": "Hanya teks dasar", + "Basics": "Dasar", + "Bearer": "Bearer", "before": "sebelum", "Being lazy": "Menjadi malas", - "Bing": "", - "Bold": "", - "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", - "Brave": "", - "Bullet List": "", - "Button ID": "", - "Button Label": "", - "Button Prompt": "", - "By": "", - "by {{name}}": "", - "By {{name}}": "", - "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "", - "Calendar": "", - "Calendar created": "", - "Calendar deleted": "", - "Calendar name": "", - "Calendars": "", - "Calendars Public Sharing": "", + "Bing": "Bing", + "Bold": "Tebal", + "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Meningkatkan atau mengurangi bobot token tertentu untuk respons terbatas. Nilai bias akan dibatasi antara -100 dan 100 (inklusif). (Bawaan: tidak ada)", + "Brave": "Brave", + "Bullet List": "Daftar Poin", + "Button ID": "ID Tombol", + "Button Label": "Label Tombol", + "Button Prompt": "Prompt Tombol", + "By": "Oleh", + "by {{name}}": "oleh {{name}}", + "By {{name}}": "Oleh {{name}}", + "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "Dengan mendukung proyek ini melalui sponsor atau lisensi enterprise, Anda membantu kami tetap mandiri, merilis fitur baru lebih cepat, meningkatkan stabilitas, dan mengembangkan Open WebUI untuk jangka panjang.", + "Calendar": "Kalender", + "Calendar created": "Kalender berhasil dibuat", + "Calendar deleted": "Kalender berhasil dihapus", + "Calendar name": "Nama kalender", + "Calendars": "Kalender", + "Calendars Public Sharing": "Berbagi Publik Kalender", "Call": "Panggilan", "Call feature is not supported when using Web STT engine": "Fitur panggilan tidak didukung saat menggunakan mesin Web STT", "Camera": "Kamera", "Cancel": "Batal", - "Cancel download of {{model}}": "", - "Cannot create an empty note.": "", - "Cannot delete the production version": "", - "Capture": "", - "Capture Audio": "", - "Change folder icon": "", - "Change User Role": "", - "Channel": "", - "Channel deleted successfully": "", - "Channel is required": "", - "Channel Name": "", - "Channel name cannot be empty.": "", - "Channel name must be less than 128 characters": "", - "Channel Type": "", - "Channel updated successfully": "", - "Channels": "", - "Character": "", + "Cancel download of {{model}}": "Batalkan unduhan {{model}}", + "Cannot create an empty note.": "Tidak dapat membuat catatan kosong.", + "Cannot delete the production version": "Tidak dapat menghapus versi produksi", + "Capture": "Tangkap", + "Capture Audio": "Tangkap Audio", + "Change folder icon": "Ubah ikon folder", + "Change User Role": "Ubah Peran Pengguna", + "Channel": "Saluran", + "Channel deleted successfully": "Saluran berhasil dihapus", + "Channel is required": "Saluran wajib diisi", + "Channel Name": "Nama Saluran", + "Channel name cannot be empty.": "Nama saluran tidak boleh kosong.", + "Channel name must be less than 128 characters": "Nama saluran harus kurang dari 128 karakter", + "Channel Type": "Tipe Saluran", + "Channel updated successfully": "Saluran berhasil diperbarui", + "Channels": "Saluran", + "Character": "Karakter", "Chat": "Obrolan", - "Chat actions": "", - "Chat archived.": "", - "Chat Completions": "", - "Chat Conversation": "", - "Chat deleted.": "", - "Chat exported successfully": "", - "Chat failed": "", - "Chat finished": "", - "Chat forked": "", - "Chat history": "", - "Chat ID": "", - "Chat is too short to compact": "", - "Chat Menu": "", - "Chat moved successfully": "", - "Chat Permissions": "", - "Chat unarchived.": "", - "Chat unshared successfully.": "", - "Chat Uploads": "", - "Chat Variables": "", - "Chat Variables have conflicting model definitions": "", - "chats": "", + "Chat actions": "Tindakan obrolan", + "Chat archived.": "Obrolan diarsipkan.", + "Chat Completions": "Penyelesaian Obrolan", + "Chat Conversation": "Percakapan Obrolan", + "Chat deleted.": "Obrolan dihapus.", + "Chat exported successfully": "Obrolan berhasil diekspor", + "Chat failed": "Obrolan gagal", + "Chat finished": "Obrolan selesai", + "Chat forked": "Obrolan dicabangkan", + "Chat history": "Riwayat obrolan", + "Chat ID": "ID Obrolan", + "Chat is too short to compact": "Obrolan terlalu pendek untuk dipadatkan", + "Chat Menu": "Menu Obrolan", + "Chat moved successfully": "Obrolan berhasil dipindahkan", + "Chat Permissions": "Izin Obrolan", + "Chat unarchived.": "Obrolan batal diarsipkan.", + "Chat unshared successfully.": "Berbagi obrolan berhasil dibatalkan.", + "Chat Uploads": "Unggahan Obrolan", + "Chat Variables": "Variabel Obrolan", + "Chat Variables have conflicting model definitions": "Variabel Obrolan memiliki definisi model yang bertentangan", + "chats": "obrolan", "Chats": "Obrolan", - "Chats Open Sharing": "", - "Chats Public Sharing": "", + "Chats Open Sharing": "Berbagi Obrolan Terbuka", + "Chats Public Sharing": "Berbagi Obrolan Publik", "Check Again": "Periksa Lagi", - "Check OAuth Discovery": "", - "Check what is running in this chat.": "", + "Check OAuth Discovery": "Periksa Penemuan OAuth", + "Check what is running in this chat.": "Periksa apa yang sedang berjalan di obrolan ini.", "Checking for updates...": "Memeriksa pembaruan...", "Choose a model before saving...": "Pilih model sebelum menyimpan...", - "Choose channel": "", - "Choose folder": "", + "Choose channel": "Pilih saluran", + "Choose folder": "Pilih folder", "Citation": "Kutipan", - "Citations": "", - "Clear": "", - "Clear filters to reorder": "", - "Clear Memory": "", - "Clear search": "", - "Clear status": "", - "click here": "", - "Click here for filter guides.": "", + "Citations": "Sitiran", + "Clear": "Bersihkan", + "Clear filters to reorder": "Bersihkan filter untuk mengurutkan ulang", + "Clear Memory": "Bersihkan Memori", + "Clear search": "Bersihkan pencarian", + "Clear status": "Bersihkan status", + "click here": "klik di sini", + "Click here for filter guides.": "Klik di sini untuk panduan filter.", "Click here for help.": "Klik di sini untuk bantuan.", "Click here to": "Klik di sini untuk", "Click here to download user import template file.": "Klik di sini untuk mengunduh file templat impor pengguna.", - "Click here to learn more about faster-whisper and see the available models.": "", - "Click here to see available models.": "", + "Click here to learn more about faster-whisper and see the available models.": "Klik di sini untuk mempelajari lebih lanjut tentang faster-whisper dan melihat model yang tersedia.", + "Click here to see available models.": "Klik di sini untuk melihat model yang tersedia.", "Click here to select": "Klik di sini untuk memilih", "Click here to select a csv file.": "Klik di sini untuk memilih file csv.", "click here.": "Klik di sini.", "Click on the user role button to change a user's role.": "Klik tombol peran pengguna untuk mengubah peran pengguna.", - "Click to connect": "", - "Click to copy ID": "", - "Click to rebind": "", - "Client ID": "", - "Client Secret": "", + "Click to connect": "Klik untuk menghubungkan", + "Click to copy ID": "Klik untuk menyalin ID", + "Click to rebind": "Klik untuk mengaitkan ulang", + "Client ID": "ID Klien", + "Client Secret": "Rahasia Klien", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Izin menulis papan klip ditolak. Periksa pengaturan peramban Anda untuk memberikan akses yang diperlukan.", "Clone": "Kloning", - "Clone Chat": "", - "Clone of {{TITLE}}": "", + "Clone Chat": "Duplikat Obrolan", + "Clone of {{TITLE}}": "Duplikat dari {{TITLE}}", "Close": "Tutup", - "Close Banner": "", - "Close chat controls": "", - "Close citation modal": "", - "Close Configure Connection Modal": "", - "Close embed": "", - "Close feedback": "", - "Close modal": "", - "Close Modal": "", - "Close Sidebar": "", - "Close terminal": "", - "cloud": "", - "CMU ARCTIC speaker embedding name": "", - "Code Block": "", - "Code Editor": "", - "Code execution": "", + "Close Banner": "Tutup Spanduk", + "Close chat controls": "Tutup kontrol obrolan", + "Close citation modal": "Tutup modal sitiran", + "Close Configure Connection Modal": "Tutup Modal Konfigurasi Koneksi", + "Close embed": "Tutup sematan", + "Close feedback": "Tutup umpan balik", + "Close modal": "Tutup modal", + "Close Modal": "Tutup Modal", + "Close Sidebar": "Tutup Bilah Sisi", + "Close terminal": "Tutup terminal", + "cloud": "cloud", + "CMU ARCTIC speaker embedding name": "Nama sematan pembicara CMU ARCTIC", + "Code Block": "Blok Kode", + "Code Editor": "Editor Kode", + "Code execution": "Eksekusi kode", "Code formatted successfully": "Kode berhasil diformat", - "Code Interpreter": "", - "Collaboration channel where people join as members": "", - "Collapse": "", + "Code Interpreter": "Interpreter Kode", + "Collaboration channel where people join as members": "Saluran kolaborasi tempat orang bergabung sebagai anggota", + "Collapse": "Ciutkan", "Collection": "Koleksi", - "Collection Field": "", - "Collections": "", - "Color": "", + "Collection Field": "Bidang Koleksi", + "Collections": "Koleksi", + "Color": "Warna", "ComfyUI": "ComfyUI", "ComfyUI Base URL is required.": "URL Dasar ComfyUI diperlukan.", - "Comma separated Node Ids (e.g. 1 or 1,2)": "", - "Comma-separated group names": "", - "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "", - "command": "", + "Comma separated Node Ids (e.g. 1 or 1,2)": "ID Node dipisahkan koma (mis. 1 atau 1,2)", + "Comma-separated group names": "Nama grup dipisahkan koma", + "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "Parameter permintaan tingkat atas yang dipisahkan koma yang dapat diterima upstream ini tanpa terjemahan. Gunakan * untuk mengizinkan semua parameter passthrough yang ditangkap.", + "command": "perintah", "Command": "Perintah", - "Commands": "", - "Comment": "", - "Commit Message": "", - "Community Reviews": "", - "Compact": "", - "Compact: shorten older messages so this chat can keep going.": "", - "Compacting context": "", - "Compacting context...": "", - "Compare": "", - "Comparing with knowledge base...": "", - "Completions": "", - "Compress uploaded images before sending or storage.": "", + "Commands": "Perintah", + "Comment": "Komentar", + "Commit Message": "Pesan Commit", + "Community Reviews": "Ulasan Komunitas", + "Compact": "Padatkan", + "Compact: shorten older messages so this chat can keep going.": "Padatkan: persingkat pesan lama agar obrolan ini dapat terus berlanjut.", + "Compacting context": "Memadatkan konteks", + "Compacting context...": "Memadatkan konteks...", + "Compare": "Bandingkan", + "Comparing with knowledge base...": "Membandingkan dengan basis pengetahuan...", + "Completions": "Penyelesaian", + "Compress uploaded images before sending or storage.": "Kompres gambar yang diunggah sebelum dikirim atau disimpan.", "Computing checksums ({{count}} files)_one": "Menghitung checksum ({{count}} berkas)", - "Computing checksums ({{count}} files)_other": "", - "Config imported successfully": "", - "Configure": "", + "Computing checksums ({{count}} files)_other": "Menghitung checksum ({{count}} berkas)", + "Config imported successfully": "Konfigurasi berhasil diimpor", + "Configure": "Konfigurasikan", "Confirm": "Konfirmasi", "Confirm Password": "Konfirmasi Kata Sandi", - "Confirm Prompt from Embed": "", - "Confirm recording": "", + "Confirm Prompt from Embed": "Konfirmasi Prompt dari Sematan", + "Confirm recording": "Konfirmasi rekaman", "Confirm your action": "Konfirmasi tindakan Anda", - "Confirm your new password": "", - "Confirm Your Password": "", - "Connect to an AI provider to start chatting": "", - "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "", - "Connect to your own OpenAPI compatible external tool servers.": "", - "Connected": "", - "Connected ({{type}})": "", - "Connection failed": "", - "Connection lost. Reconnecting...": "", - "Connection successful": "", - "Connection Type": "", - "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "", - "Connections saved successfully": "", - "Connections settings updated": "", + "Confirm your new password": "Konfirmasikan kata sandi baru Anda", + "Confirm Your Password": "Konfirmasikan Kata Sandi Anda", + "Connect to an AI provider to start chatting": "Hubungkan ke penyedia AI untuk mulai mengobrol", + "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "Hubungkan ke instans Open Terminal. Admin dan pengguna yang diberi akses dapat menggunakan penjelajahan berkas dan alat terminal melalui server ini.", + "Connect to your own OpenAPI compatible external tool servers.": "Hubungkan ke server alat eksternal yang kompatibel dengan OpenAPI milik Anda.", + "Connected": "Terhubung", + "Connected ({{type}})": "Terhubung ({{type}})", + "Connection failed": "Koneksi gagal", + "Connection lost. Reconnecting...": "Koneksi terputus. Menghubungkan kembali...", + "Connection successful": "Koneksi berhasil", + "Connection Type": "Jenis Koneksi", + "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Koneksi yang dikelola melalui Panel Admin disarankan untuk penggunaan sehari-hari. Koneksi langsung menyediakan akses mudah ke titik akhir Anda sendiri, tetapi mengandalkan sesi peramban agar permintaan tetap berjalan, sehingga lebih cocok untuk pengujian dan penggunaan sementara.", + "Connections saved successfully": "Koneksi berhasil disimpan", + "Connections settings updated": "Pengaturan koneksi diperbarui", "Contact Admin for WebUI Access": "Hubungi Admin untuk Akses WebUI", "Content": "Konten", - "Content Field": "", - "Content lengths (character counts only)": "", - "Content matches": "", - "Context": "", - "Context compacted": "", - "Context compaction failed": "", - "Context compaction is disabled": "", - "Context usage": "", - "Continue": "", + "Content Field": "Bidang Konten", + "Content lengths (character counts only)": "Panjang konten (hanya jumlah karakter)", + "Content matches": "Kecocokan konten", + "Context": "Konteks", + "Context compacted": "Konteks dipadatkan", + "Context compaction failed": "Pemadatan konteks gagal", + "Context compaction is disabled": "Pemadatan konteks dinonaktifkan", + "Context usage": "Penggunaan konteks", + "Continue": "Lanjutkan", "Continue Response": "Lanjutkan Tanggapan", "Continue with {{provider}}": "Lanjutkan dengan {{provider}}", - "Continue with Email": "", - "Continue with LDAP": "", - "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "", - "Controls": "", - "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "", - "Conversation saved successfully": "", - "Copied": "", - "Copied link to clipboard": "", + "Continue with Email": "Lanjutkan dengan Email", + "Continue with LDAP": "Lanjutkan dengan LDAP", + "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "Kendalikan pengulangan urutan token dalam teks yang dihasilkan. Nilai yang lebih tinggi (misalnya, 1.5) akan memberikan penalti pengulangan lebih ketat, sedangkan nilai yang lebih rendah (misalnya, 1.1) akan lebih longgar. Pada nilai 1, fitur dinonaktifkan.", + "Controls": "Kontrol", + "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "Mengontrol keseimbangan antara koherensi dan keberagaman hasil keluaran. Nilai yang lebih rendah akan menghasilkan teks yang lebih fokus dan koheren.", + "Conversation saved successfully": "Percakapan berhasil disimpan", + "Copied": "Disalin", + "Copied link to clipboard": "Tautan disalin ke papan klip", "Copied shared chat URL to clipboard!": "Menyalin URL obrolan bersama ke papan klip!", - "Copied to clipboard": "", + "Copied to clipboard": "Disalin ke papan klip", "Copy": "Menyalin", - "Copy API Key": "", - "Copy content": "", - "Copy default": "", - "Copy Last Code Block": "", - "Copy Last Response": "", - "Copy link": "", + "Copy API Key": "Salin Kunci API", + "Copy content": "Salin konten", + "Copy default": "Salin bawaan", + "Copy Last Code Block": "Salin Blok Kode Terakhir", + "Copy Last Response": "Salin Respons Terakhir", + "Copy link": "Salin tautan", "Copy Link": "Salin Tautan", - "Copy Path": "", - "Copy Prompt": "", - "Copy Share Link": "", - "Copy to clipboard": "", - "Copy Token": "", - "Copy URL": "", + "Copy Path": "Salin Jalur", + "Copy Prompt": "Salin Prompt", + "Copy Share Link": "Salin Tautan Berbagi", + "Copy to clipboard": "Salin ke papan klip", + "Copy Token": "Salin Token", + "Copy URL": "Salin URL", "Copying to clipboard was successful!": "Penyalinan ke papan klip berhasil!", - "Copyright (c)": "", - "CORS must be properly configured by the provider to allow requests from Open WebUI.": "", - "Could not check for updates": "", - "Could not load release notes.": "", - "Could not read file.": "", - "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "", - "Couldn't find your language?": "", - "CPU": "", - "Create": "", - "Create a knowledge base": "", + "Copyright (c)": "Hak Cipta (c)", + "CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS harus dikonfigurasi dengan benar oleh penyedia untuk mengizinkan permintaan dari Open WebUI.", + "Could not check for updates": "Tidak dapat memeriksa pembaruan", + "Could not load release notes.": "Tidak dapat memuat catatan rilis.", + "Could not read file.": "Tidak dapat membaca berkas.", + "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Bisakah Anda mulai dengan menanyakan kapan saya paling sering menunda-nunda pekerjaan, lalu memberi saran untuk mengatasinya?", + "Couldn't find your language?": "Tidak menemukan bahasa Anda?", + "CPU": "CPU", + "Create": "Buat", + "Create a knowledge base": "Buat basis pengetahuan", "Create a model": "Buat model", - "Create a new note": "", - "Create a reusable terminal skill from this chat.": "", + "Create a new note": "Buat catatan baru", + "Create a reusable terminal skill from this chat.": "Buat keahlian terminal yang dapat digunakan kembali dari obrolan ini.", "Create Account": "Buat Akun", - "Create Admin Account": "", - "Create announcements shown to users in the app.": "", - "Create Channel": "", - "Create Folder": "", - "Create Knowledge": "", - "Create Model": "", + "Create Admin Account": "Buat Akun Admin", + "Create announcements shown to users in the app.": "Buat pengumuman yang ditampilkan kepada pengguna di aplikasi.", + "Create Channel": "Buat Saluran", + "Create Folder": "Buat Folder", + "Create Knowledge": "Buat Pengetahuan", + "Create Model": "Buat Model", "Create new key": "Buat kunci baru", - "Create Prompt": "", - "Create scheduled prompts that run automatically on a recurring basis.": "", - "Create skill": "", - "Create skill: create a reusable terminal skill from this chat.": "", - "Create your first note from the Create menu.": "", - "Created": "", + "Create Prompt": "Buat Prompt", + "Create scheduled prompts that run automatically on a recurring basis.": "Buat prompt terjadwal yang berjalan secara otomatis berulang kali.", + "Create skill": "Buat keahlian", + "Create skill: create a reusable terminal skill from this chat.": "Buat keahlian: buat keahlian terminal yang dapat digunakan kembali dari obrolan ini.", + "Create your first note from the Create menu.": "Buat catatan pertama Anda dari menu Buat.", + "Created": "Dibuat", "Created at": "Dibuat di", "Created At": "Dibuat di", "Created by": "Dibuat oleh", - "Created by you": "", - "Created on {{date}}": "", + "Created by you": "Dibuat oleh Anda", + "Created on {{date}}": "Dibuat pada {{date}}", "CSV Import": "Impor CSV", - "CSV: Name,Email": "", - "Ctrl+Enter to Send": "", - "Cumulative": "", - "Current": "", - "Current branch": "", + "CSV: Name,Email": "CSV: Nama,Email", + "Ctrl+Enter to Send": "Ctrl+Enter untuk Mengirim", + "Cumulative": "Kumulatif", + "Current": "Saat Ini", + "Current branch": "Cabang saat ini", "Current Model": "Model Saat Ini", - "Current streak": "", + "Current streak": "Runtunan saat ini", "Custom": "Kustom", - "Custom color": "", - "Custom description enabled": "", - "Custom Gender": "", - "Custom Parameter Name": "", - "Custom Parameter Value": "", - "Custom permissions": "", - "Custom range": "", - "Daily": "", - "Daily at": "", - "Daily Messages": "", + "Custom color": "Warna kustom", + "Custom description enabled": "Deskripsi kustom diaktifkan", + "Custom Gender": "Jenis Kelamin Kustom", + "Custom Parameter Name": "Nama Parameter Kustom", + "Custom Parameter Value": "Nilai Parameter Kustom", + "Custom permissions": "Izin kustom", + "Custom range": "Rentang kustom", + "Daily": "Harian", + "Daily at": "Setiap hari pukul", + "Daily Messages": "Pesan Harian", "Dark": "Gelap", - "Data": "", + "Data": "Data", "Database": "Basis data", - "Datalab Marker API": "", - "Date is required": "", - "Date Modified": "", - "Day": "", - "DD/MM/YYYY": "", + "Datalab Marker API": "API Datalab Marker", + "Date is required": "Tanggal wajib diisi", + "Date Modified": "Tanggal Dimodifikasi", + "Day": "Hari", + "DD/MM/YYYY": "DD/MM/YYYY", "December": "Desember", - "Deepgram": "", + "Deepgram": "Deepgram", "Default": "Default", - "Default (Open AI)": "", + "Default (Open AI)": "Bawaan (Open AI)", "Default (SentenceTransformers)": "Default (Pengubah Kalimat)", - "Default action buttons will be used.": "", - "Default description enabled": "", - "Default Filters": "", - "Default Interface Settings": "", + "Default action buttons will be used.": "Tombol tindakan bawaan akan digunakan.", + "Default description enabled": "Deskripsi bawaan diaktifkan", + "Default Filters": "Filter Bawaan", + "Default Interface Settings": "Pengaturan Antarmuka Bawaan", "Default Model": "Model Default", "Default model updated": "Model default diperbarui", - "Default permissions": "", - "Default permissions updated successfully": "", + "Default permissions": "Izin bawaan", + "Default permissions updated successfully": "Izin bawaan berhasil diperbarui", "Default Prompt Suggestions": "Saran Permintaan Default", - "Default to 389 or 636 if TLS is enabled": "", - "Default to ALL": "", - "Default to memberOf": "", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", - "Default webhook": "", + "Default to 389 or 636 if TLS is enabled": "Bawaan ke 389 atau 636 jika TLS diaktifkan", + "Default to ALL": "Bawaan ke SEMUA", + "Default to memberOf": "Bawaan ke memberOf", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Bawaan ke pengambilan tersegmentasi untuk ekstraksi konten yang fokus dan relevan, disarankan untuk sebagian besar kasus.", + "Default webhook": "Webhook bawaan", "Delete": "Menghapus", - "Delete {{name}}": "", + "Delete {{name}}": "Hapus {{name}}", "Delete a model": "Menghapus model", - "Delete All": "", - "Delete all contents inside this directory": "", - "Delete all contents inside this folder": "", - "Delete API Key?": "", - "Delete automation?": "", - "Delete calendar": "", - "Delete Calendar": "", + "Delete All": "Hapus Semua", + "Delete all contents inside this directory": "Hapus semua konten di dalam direktori ini", + "Delete all contents inside this folder": "Hapus semua konten di dalam folder ini", + "Delete API Key?": "Hapus Kunci API?", + "Delete automation?": "Hapus otomatisasi?", + "Delete calendar": "Hapus kalender", + "Delete Calendar": "Hapus Kalender", "Delete Chat": "Menghapus Obrolan", "Delete chat?": "Menghapus obrolan?", - "Delete directory?": "", - "Delete Event": "", - "Delete File": "", - "Delete folder?": "", + "Delete directory?": "Hapus direktori?", + "Delete Event": "Hapus Acara", + "Delete File": "Hapus Berkas", + "Delete folder?": "Hapus folder?", "Delete function?": "Fungsi hapus?", - "Delete Memory?": "", - "Delete Message": "", - "Delete message?": "", - "Delete Model": "", - "Delete note?": "", + "Delete Memory?": "Hapus Memori?", + "Delete Message": "Hapus Pesan", + "Delete message?": "Hapus pesan?", + "Delete Model": "Hapus Model", + "Delete note?": "Hapus catatan?", "Delete prompt?": "Perintah hapus?", - "Delete skill?": "", + "Delete skill?": "Hapus keahlian?", "delete this link": "hapus tautan ini", "Delete tool?": "Hapus alat?", "Delete User": "Menghapus Pengguna", - "Delete Version": "", - "Deleted": "", + "Delete Version": "Hapus Versi", + "Deleted": "Dihapus", "Deleted {{deleteModelTag}}": "Menghapus {{deleteModelTag}}", "Deleted {{name}}": "Menghapus {{name}}", - "Deleted {{ok}} of {{total}} items": "", - "Deleted User": "", - "Denied {{NAME}}": "", - "Deny": "", - "Deny Tool Call": "", - "Deployment names are required for Azure OpenAI": "", - "Desc": "", - "Describe the edit...": "", - "Describe the image...": "", - "Describe what changed...": "", - "Describe your knowledge base and objectives": "", + "Deleted {{ok}} of {{total}} items": "Dihapus {{ok}} dari {{total}} item", + "Deleted User": "Pengguna Dihapus", + "Denied {{NAME}}": "Ditolak {{NAME}}", + "Deny": "Tolak", + "Deny Tool Call": "Tolak Pemanggilan Alat", + "Deployment names are required for Azure OpenAI": "Nama deployment wajib diisi untuk Azure OpenAI", + "Desc": "Menurun", + "Describe the edit...": "Jelaskan pengeditan...", + "Describe the image...": "Jelaskan gambar...", + "Describe what changed...": "Jelaskan apa yang berubah...", + "Describe your knowledge base and objectives": "Jelaskan basis pengetahuan dan tujuan Anda", "Description": "Deskripsi", - "Description ({{language}})": "", - "Deselect": "", - "Destination": "", - "Detected Variables": "", - "Dictate": "", + "Description ({{language}})": "Deskripsi ({{language}})", + "Deselect": "Batal pilih", + "Destination": "Tujuan", + "Detected Variables": "Variabel Terdeteksi", + "Dictate": "Dikte", "Didn't fully follow instructions": "Tidak sepenuhnya mengikuti instruksi", - "Diff settings": "", - "Direct": "", - "Direct Message": "", - "Direct Tool Servers": "", - "Directory created.": "", - "Directory deleted.": "", - "Directory moved.": "", - "Directory name": "", - "Directory renamed.": "", - "Directory selection was cancelled": "", - "Disable all": "", - "Disable All": "", - "Disable Code Interpreter": "", + "Diff settings": "Pengaturan diff", + "Direct": "Langsung", + "Direct Message": "Pesan Langsung", + "Direct Tool Servers": "Server Alat Langsung", + "Directory created.": "Direktori dibuat.", + "Directory deleted.": "Direktori dihapus.", + "Directory moved.": "Direktori dipindahkan.", + "Directory name": "Nama direktori", + "Directory renamed.": "Direktori diganti nama.", + "Directory selection was cancelled": "Pemilihan direktori dibatalkan", + "Disable all": "Nonaktifkan semua", + "Disable All": "Nonaktifkan Semua", + "Disable Code Interpreter": "Nonaktifkan Code Interpreter", "Disabled": "Dinonaktifkan", - "Disconnect OAuth": "", + "Disconnect OAuth": "Putuskan OAuth", "Discover a function": "Menemukan sebuah fungsi", "Discover a model": "Menemukan sebuah model", "Discover a prompt": "Temukan petunjuk", @@ -639,2124 +641,2125 @@ "Discover, download, and explore custom prompts": "Temukan, unduh, dan jelajahi prompt khusus", "Discover, download, and explore custom tools": "Menemukan, mengunduh, dan menjelajahi alat khusus", "Discover, download, and explore model presets": "Menemukan, mengunduh, dan menjelajahi preset model", - "Discussion channel where access is based on groups and permissions": "", - "Dismiss": "", - "Dismiss notification": "", - "Display": "", - "Do not install functions from sources you do not fully trust.": "", - "Do not install tools from sources you do not fully trust.": "", - "Do you want to sync your usage stats with Open WebUI Community?": "", - "Docling": "", - "Docling Parameters": "", - "Docling Server URL required.": "", + "Discussion channel where access is based on groups and permissions": "Saluran diskusi tempat akses ditentukan berdasarkan grup dan izin", + "Dismiss": "Abaikan", + "Dismiss notification": "Abaikan notifikasi", + "Display": "Tampilan", + "Do not install functions from sources you do not fully trust.": "Jangan pasang fungsi dari sumber yang tidak Anda percayai sepenuhnya.", + "Do not install tools from sources you do not fully trust.": "Jangan pasang alat dari sumber yang tidak Anda percayai sepenuhnya.", + "Do you want to sync your usage stats with Open WebUI Community?": "Apakah Anda ingin menyinkronkan statistik penggunaan dengan Komunitas Open WebUI?", + "Docling": "Docling", + "Docling Parameters": "Parameter Docling", + "Docling Server URL required.": "URL Server Docling wajib diisi.", "Document": "Dokumen", - "Document ID Field": "", - "Document Intelligence": "", - "Document Intelligence endpoint required.": "", + "Document ID Field": "Kolom ID Dokumen", + "Document Intelligence": "Document Intelligence", + "Document Intelligence endpoint required.": "Endpoint Document Intelligence wajib diisi.", "Documentation": "Dokumentasi", "does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat koneksi eksternal apa pun, dan data Anda tetap aman di server yang dihosting secara lokal.", - "Don't fetch random pipelines from sources you don't trust.": "", + "Don't fetch random pipelines from sources you don't trust.": "Jangan mengambil pipeline acak dari sumber yang tidak Anda percayai.", "Don't have an account?": "Tidak memiliki akun?", "Don't like the style": "Tidak suka gayanya", "Done": "Selesai", "Download": "Unduh", - "Download \"{{searchValue}}\"": "", - "Download \"{{searchValue}}\" from {{provider}}": "", - "Download as JSON": "", - "Download as SVG": "", + "Download \"{{searchValue}}\"": "Unduh \"{{searchValue}}\"", + "Download \"{{searchValue}}\" from {{provider}}": "Unduh \"{{searchValue}}\" dari {{provider}}", + "Download as JSON": "Unduh sebagai JSON", + "Download as SVG": "Unduh sebagai SVG", "Download canceled": "Unduh dibatalkan", - "Download CSV Template": "", - "Download failed": "", - "Download Model": "", - "Downloading \"{{name}}\"": "", - "Downloading \"{{searchValue}}\"": "", - "Downloading stats...": "", - "Drag and Drop Container": "", - "Drag to reorder": "", - "Draw": "", - "Drop any files here to upload": "", - "Drop files here": "", - "Drop to upload": "", - "DuckDuckGo": "", + "Download CSV Template": "Unduh Templat CSV", + "Download failed": "Pengunduhan gagal", + "Download Model": "Unduh Model", + "Downloading \"{{name}}\"": "Mengunduh \"{{name}}\"", + "Downloading \"{{searchValue}}\"": "Mengunduh \"{{searchValue}}\"", + "Downloading stats...": "Mengunduh statistik...", + "Drag and Drop Container": "Wadah Seret dan Lepas", + "Drag to reorder": "Seret untuk mengurutkan ulang", + "Draw": "Gambar", + "Drop any files here to upload": "Lepaskan file apa pun di sini untuk mengunggah", + "Drop files here": "Lepaskan file di sini", + "Drop to upload": "Lepaskan untuk mengunggah", + "DuckDuckGo": "DuckDuckGo", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "misalnya '30-an', '10m'. Satuan waktu yang valid adalah 's', 'm', 'h'.", - "e.g. 'low', 'medium', 'high'": "", - "e.g. \"json\" or a JSON schema": "", - "e.g. 60": "", - "e.g. A filter to remove profanity from text": "", - "e.g. about the Roman Empire": "", - "e.g. alloy, echo, shimmer": "", - "e.g. Code Review Guidelines": "", - "e.g. code-review-guidelines": "", - "e.g. en": "", - "e.g. My Filter": "", - "e.g. My Tools": "", - "e.g. my_filter": "", - "e.g. my_tools": "", - "e.g. pdf, docx, txt": "", - "e.g. Step-by-step instructions for code reviews": "", - "e.g. Tell me a fun fact": "", - "e.g. Tell me a fun fact about the Roman Empire": "", - "e.g. Tools for performing various operations": "", - "e.g., 3, 4, 5 (leave blank for default)": "", - "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", - "e.g., westus (leave blank for eastus)": "", + "e.g. 'low', 'medium', 'high'": "mis. 'low', 'medium', 'high'", + "e.g. \"json\" or a JSON schema": "mis. \"json\" atau skema JSON", + "e.g. 60": "mis. 60", + "e.g. A filter to remove profanity from text": "mis. Filter untuk menghapus kata tidak senonoh dari teks", + "e.g. about the Roman Empire": "mis. tentang Kekaisaran Romawi", + "e.g. alloy, echo, shimmer": "mis. alloy, echo, shimmer", + "e.g. Code Review Guidelines": "mis. Panduan Tinjauan Kode", + "e.g. code-review-guidelines": "mis. code-review-guidelines", + "e.g. en": "mis. en", + "e.g. My Filter": "mis. Filter Saya", + "e.g. My Tools": "mis. Alat Saya", + "e.g. my_filter": "mis. my_filter", + "e.g. my_tools": "mis. my_tools", + "e.g. pdf, docx, txt": "mis. pdf, docx, txt", + "e.g. Step-by-step instructions for code reviews": "mis. Petunjuk langkah demi langkah untuk tinjauan kode", + "e.g. Tell me a fun fact": "mis. Beri tahu saya fakta menarik", + "e.g. Tell me a fun fact about the Roman Empire": "mis. Beri tahu saya fakta menarik tentang Kekaisaran Romawi", + "e.g. Tools for performing various operations": "mis. Alat untuk melakukan berbagai operasi", + "e.g., 3, 4, 5 (leave blank for default)": "mis., 3, 4, 5 (biarkan kosong untuk default)", + "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "mis., audio/wav,audio/mpeg,video/* (biarkan kosong untuk default)", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "mis., en-US,ja-JP (biarkan kosong untuk deteksi otomatis)", + "e.g., westus (leave blank for eastus)": "mis., westus (biarkan kosong untuk eastus)", "Edit": "Edit", - "Edit Arena Model": "", - "Edit Channel": "", - "Edit Connection": "", - "Edit Default Permissions": "", - "Edit Folder": "", - "Edit Knowledge Connection": "", - "Edit Last Message": "", + "Edit Arena Model": "Edit Model Arena", + "Edit Channel": "Edit Saluran", + "Edit Connection": "Edit Koneksi", + "Edit Default Permissions": "Edit Izin Default", + "Edit Folder": "Edit Folder", + "Edit Knowledge Connection": "Edit Koneksi Pengetahuan", + "Edit Last Message": "Edit Pesan Terakhir", "Edit Memory": "Edit Memori", - "Edit Prompt": "", - "Edit Terminal Connection": "", + "Edit Prompt": "Edit Prompt", + "Edit Terminal Connection": "Edit Koneksi Terminal", "Edit User": "Edit Pengguna", - "Edit User Group": "", - "Edit User Variable": "", - "Edit webhook": "", - "edited": "", - "Editing language": "", - "Eject": "", - "Eject model": "", - "ElevenLabs": "", + "Edit User Group": "Edit Grup Pengguna", + "Edit User Variable": "Edit Variabel Pengguna", + "Edit webhook": "Edit webhook", + "edited": "diedit", + "Editing language": "Bahasa pengeditan", + "Eject": "Keluarkan", + "Eject model": "Keluarkan model", + "ElevenLabs": "ElevenLabs", "Email": "Email", - "Embedded content": "", - "Emoji": "", - "Emoji graphics provided by": "", - "Emojis": "", - "Empty": "", - "Empty message": "", - "Enable All": "", - "Enable all ({{COUNT}})": "", - "Enable Code Interpreter": "", - "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "", - "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "", - "Enable Mirostat sampling for controlling perplexity.": "", + "Embedded content": "Konten tersemat", + "Emoji": "Emoji", + "Emoji graphics provided by": "Grafik emoji disediakan oleh", + "Emojis": "Emoji", + "Empty": "Kosong", + "Empty message": "Pesan kosong", + "Enable All": "Aktifkan Semua", + "Enable all ({{COUNT}})": "Aktifkan semua ({{COUNT}})", + "Enable Code Interpreter": "Aktifkan Code Interpreter", + "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Aktifkan Penguncian Memori (mlock) untuk mencegah data model dialihkan keluar dari RAM. Opsi ini mengunci halaman kerja model ke dalam RAM, memastikan bahwa data tidak akan dialihkan ke disk. Hal ini dapat membantu menjaga performa dengan menghindari page fault dan memastikan akses data yang cepat.", + "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Aktifkan Pemetaan Memori (mmap) untuk memuat data model. Opsi ini memungkinkan sistem menggunakan penyimpanan disk sebagai ekstensi RAM dengan memperlakukan berkas disk seolah-olah berada di RAM. Hal ini dapat meningkatkan performa model dengan mempercepat akses data. Namun, opsi ini mungkin tidak berfungsi dengan baik di semua sistem dan dapat menghabiskan ruang disk dalam jumlah yang signifikan.", + "Enable Mirostat sampling for controlling perplexity.": "Aktifkan pengambilan sampel Mirostat untuk mengontrol perplexity.", "Enabled": "Diaktifkan", - "End call": "", - "End Tag": "", - "Endpoint": "", - "Enforce Temporary Chat": "", - "Enhance": "", - "Enhance this note and update it.": "", + "End call": "Akhiri panggilan", + "End Tag": "Tag Akhir", + "Endpoint": "Endpoint", + "Enforce Temporary Chat": "Wajibkan Obrolan Sementara", + "Enhance": "Tingkatkan", + "Enhance this note and update it.": "Tingkatkan catatan ini dan perbarui.", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Pastikan file CSV Anda menyertakan 4 kolom dengan urutan sebagai berikut: Nama, Email, Kata Sandi, Peran.", "Enter {{role}} message here": "Masukkan pesan {{role}} di sini", - "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.": "Masukkan judul untuk hamparan info pengguna yang tertunda. Biarkan kosong untuk default.", + "Enter a watermark for the response. Leave empty for none.": "Masukkan tanda air untuk respons. Biarkan kosong jika tidak ada.", + "Enter additional headers in JSON format": "Masukkan header tambahan dalam format JSON", + "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "Masukkan header tambahan dalam format JSON (cth. {\"X-Custom-Header\": \"value\"}", + "Enter additional parameters in JSON format": "Masukkan parameter tambahan dalam format JSON", "Enter api auth string (e.g. username:password)": "Masukkan string pengesahan API (misalnya nama pengguna: kata sandi)", - "Enter Application DN": "", - "Enter Application DN Password": "", - "Enter Bing Search V7 Endpoint": "", - "Enter Bing Search V7 Subscription Key": "", - "Enter Bocha Search API Key": "", + "Enter Application DN": "Masukkan DN Aplikasi", + "Enter Application DN Password": "Masukkan Kata Sandi DN Aplikasi", + "Enter Bing Search V7 Endpoint": "Masukkan Endpoint Bing Search V7", + "Enter Bing Search V7 Subscription Key": "Masukkan Kunci Langganan Bing Search V7", + "Enter Bocha Search API Key": "Masukkan Kunci API Bocha Search", "Enter Brave Search API Key": "Masukkan Kunci API Pencarian Berani", - "Enter certificate path": "", - "Enter Chunk Min Size Target": "", + "Enter certificate path": "Enter certificate path", + "Enter Chunk Min Size Target": "Masukkan Target Ukuran Minimum Potongan", "Enter Chunk Overlap": "Masukkan Tumpang Tindih Chunk", "Enter Chunk Size": "Masukkan Ukuran Potongan", - "Enter Client ID": "", - "Enter Client Secret": "", - "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 description": "", - "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 External Web Loader API Key": "", - "Enter External Web Loader URL": "", - "Enter External Web Search API Key": "", - "Enter External Web Search URL": "", - "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 GitHub Raw URL": "", + "Enter Client ID": "Masukkan ID Klien", + "Enter Client Secret": "Masukkan Rahasia Klien", + "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Masukkan pasangan \"token:bias_value\" yang dipisahkan tanda koma (contoh: 5432:100, 413:-100)", + "Enter content for the pending user info overlay. Leave empty for default.": "Masukkan konten untuk hamparan info pengguna yang tertunda. Biarkan kosong untuk default.", + "Enter coordinates (e.g. 51.505, -0.09)": "Masukkan koordinat (cth. 51.505, -0.09)", + "Enter Datalab Marker API Base URL": "Masukkan URL Dasar API Datalab Marker", + "Enter Datalab Marker API Key": "Masukkan Kunci API Datalab Marker", + "Enter description": "Masukkan deskripsi", + "Enter Docling API Key": "Masukkan Kunci API Docling", + "Enter Docling Server URL": "Masukkan URL Server Docling", + "Enter Document Intelligence Endpoint": "Masukkan Endpoint Document Intelligence", + "Enter Document Intelligence Key": "Masukkan Kunci Document Intelligence", + "Enter Document Intelligence Model": "Masukkan Model Document Intelligence", + "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "Masukkan domain yang dipisahkan tanda koma (cth. example.com,site.org,!excludedsite.com)", + "Enter Exa API Key": "Masukkan Kunci API Exa", + "Enter External Document Loader API Key": "Masukkan Kunci API External Document Loader", + "Enter External Document Loader URL": "Masukkan URL External Document Loader", + "Enter External Web Loader API Key": "Masukkan Kunci API External Web Loader", + "Enter External Web Loader URL": "Masukkan URL External Web Loader", + "Enter External Web Search API Key": "Masukkan Kunci API External Web Search", + "Enter External Web Search URL": "Masukkan URL External Web Search", + "Enter Firecrawl API Base URL": "Masukkan URL Dasar API Firecrawl", + "Enter Firecrawl API Key": "Masukkan Kunci API Firecrawl", + "Enter Firecrawl Timeout": "Masukkan Batas Waktu Firecrawl", + "Enter folder name": "Masukkan nama folder", + "Enter function name filter list (e.g. func1, !func2)": "Masukkan daftar filter nama fungsi (cth. func1, !func2)", + "Enter GitHub Raw URL": "Masukkan URL Raw GitHub", "Enter Google PSE API Key": "Masukkan Kunci API Google PSE", "Enter Google PSE Engine Id": "Masukkan Id Mesin Google PSE", - "Enter hex color (e.g. #FF0000)": "", + "Enter hex color (e.g. #FF0000)": "Masukkan kode warna hex (cth. #FF0000)", "Enter Image Size (e.g. 512x512)": "Masukkan Ukuran Gambar (mis. 512x512)", - "Enter Jina API Base URL": "", - "Enter Jina API Key": "", - "Enter JSON config (e.g., {\"disable_links\": true})": "", - "Enter Jupyter Password": "", - "Enter Jupyter Token": "", - "Enter Jupyter URL": "", - "Enter Kagi Search API Key": "", - "Enter language": "", + "Enter Jina API Base URL": "Masukkan URL Dasar API Jina", + "Enter Jina API Key": "Masukkan Kunci API Jina", + "Enter JSON config (e.g., {\"disable_links\": true})": "Masukkan konfigurasi JSON (contoh: {\"disable_links\": true})", + "Enter Jupyter Password": "Masukkan Kata Sandi Jupyter", + "Enter Jupyter Token": "Masukkan Token Jupyter", + "Enter Jupyter URL": "Masukkan URL Jupyter", + "Enter Kagi Search API Key": "Masukkan Kunci API Kagi Search", + "Enter language": "Masukkan bahasa", "Enter language codes": "Masukkan kode bahasa", - "Enter Linkup API Key": "", - "Enter Microsoft Web IQ API Base URL": "", - "Enter Microsoft Web IQ API Key": "", - "Enter MinerU API Key": "", - "Enter Mistral API Base URL": "", - "Enter Mistral API Key": "", + "Enter Linkup API Key": "Masukkan Kunci API Linkup", + "Enter Microsoft Web IQ API Base URL": "Masukkan URL Dasar API Microsoft Web IQ", + "Enter Microsoft Web IQ API Key": "Masukkan Kunci API Microsoft Web IQ", + "Enter MinerU API Key": "Masukkan Kunci API MinerU", + "Enter Mistral API Base URL": "Masukkan URL Dasar API Mistral", + "Enter Mistral API Key": "Masukkan Kunci API Mistral", "Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (misalnya {{modelTag}})", - "Enter Mojeek Search API Key": "", - "Enter name": "", - "Enter New Password": "", + "Enter Mojeek Search API Key": "Masukkan Kunci API Mojeek Search", + "Enter name": "Masukkan nama", + "Enter New Password": "Masukkan Kata Sandi Baru", "Enter Number of Steps (e.g. 50)": "Masukkan Jumlah Langkah (mis. 50)", - "Enter Ollama Cloud API Key": "", - "Enter OpenSERP Base URL": "", - "Enter PaddleOCR-vl API Base URL": "", - "Enter PaddleOCR-vl API Token": "", - "Enter Perplexity API Key": "", - "Enter Perplexity Search API URL": "", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", - "Enter prompt here.": "", - "Enter proxy URL (e.g. https://user:password@host:port)": "", - "Enter reasoning effort": "", - "Enter Redirect URI": "", + "Enter Ollama Cloud API Key": "Masukkan Kunci API Ollama Cloud", + "Enter OpenSERP Base URL": "Masukkan URL Dasar OpenSERP", + "Enter PaddleOCR-vl API Base URL": "Masukkan URL Dasar API PaddleOCR-vl", + "Enter PaddleOCR-vl API Token": "Masukkan Token API PaddleOCR-vl", + "Enter Perplexity API Key": "Masukkan Kunci API Perplexity", + "Enter Perplexity Search API URL": "Masukkan URL API Perplexity Search", + "Enter Playwright Timeout": "Masukkan Batas Waktu Playwright", + "Enter Playwright WebSocket URL": "Masukkan URL WebSocket Playwright", + "Enter prompt here.": "Masukkan prompt di sini.", + "Enter proxy URL (e.g. https://user:password@host:port)": "Masukkan URL proksi (contoh: https://user:password@host:port)", + "Enter reasoning effort": "Masukkan tingkat upaya penalaran", + "Enter Redirect URI": "Masukkan URI Pengalihan", "Enter Score": "Masukkan Skor", - "Enter SearchApi API Key": "", - "Enter SearchApi Engine": "", + "Enter SearchApi API Key": "Masukkan Kunci API SearchApi", + "Enter SearchApi Engine": "Masukkan Mesin SearchApi", "Enter Searxng Query URL": "Masukkan URL Kueri Searxng", - "Enter Searxng search language": "", - "Enter Seed": "", - "Enter SerpApi API Key": "", - "Enter SerpApi Engine": "", + "Enter Searxng search language": "Masukkan bahasa pencarian Searxng", + "Enter Seed": "Masukkan Seed", + "Enter SerpApi API Key": "Masukkan Kunci API SerpApi", + "Enter SerpApi Engine": "Masukkan Mesin SerpApi", "Enter Serper API Key": "Masukkan Kunci API Serper", - "Enter SERPHouse API Key": "", + "Enter SERPHouse API Key": "Masukkan Kunci API SERPHouse", "Enter Serply API Key": "Masukkan Kunci API Serply", "Enter Serpstack API Key": "Masukkan Kunci API Serpstack", - "Enter server host": "", - "Enter server label": "", - "Enter server port": "", - "Enter skill instructions in markdown...": "", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", - "Enter Staan API Key": "", + "Enter server host": "Masukkan host server", + "Enter server label": "Masukkan label server", + "Enter server port": "Masukkan port server", + "Enter skill instructions in markdown...": "Masukkan instruksi keahlian dalam markdown...", + "Enter Sougou Search API sID": "Masukkan sID API Sougou Search", + "Enter Sougou Search API SK": "Masukkan SK API Sougou Search", + "Enter Staan API Key": "Masukkan Kunci API Staan", "Enter stop sequence": "Masukkan urutan berhenti", - "Enter system prompt": "", - "Enter system prompt here": "", + "Enter system prompt": "Masukkan prompt sistem", + "Enter system prompt here": "Masukkan prompt sistem di sini", "Enter Tavily API Key": "Masukkan Kunci API Tavily", - "Enter Tavily Extract Depth": "", - "Enter the URL of the function to import": "", - "Enter the URL to import": "", - "Enter Tika Server URL": "", - "Enter to Send": "", - "Enter token threshold": "", - "Enter Tokenizer Model": "", + "Enter Tavily Extract Depth": "Masukkan Kedalaman Ekstraksi Tavily", + "Enter the URL of the function to import": "Masukkan URL fungsi yang akan diimpor", + "Enter the URL to import": "Masukkan URL untuk diimpor", + "Enter Tika Server URL": "Masukkan URL Server Tika", + "Enter to Send": "Enter untuk Mengirim", + "Enter token threshold": "Masukkan ambang batas token", + "Enter Tokenizer Model": "Masukkan Model Tokenizer", "Enter Top K": "Masukkan Top K", - "Enter Top K Reranker": "", + "Enter Top K Reranker": "Masukkan Top K Reranker", "Enter URL (e.g. http://127.0.0.1:7860/)": "Masukkan URL (mis. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Masukkan URL (mis. http://localhost:11434)", - "Enter value": "", - "Enter value (true/false)": "", - "Enter Yacy Password": "", - "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", - "Enter Yacy Username": "", - "Enter Yandex Web Search API Key": "", - "Enter Yandex Web Search URL": "", - "Enter You.com API Key": "", + "Enter value": "Masukkan nilai", + "Enter value (true/false)": "Masukkan nilai (true/false)", + "Enter Yacy Password": "Masukkan Kata Sandi Yacy", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Masukkan URL Yacy (contoh: http://yacy.example.com:8090)", + "Enter Yacy Username": "Masukkan Nama Pengguna Yacy", + "Enter Yandex Web Search API Key": "Masukkan Kunci API Pencarian Web Yandex", + "Enter Yandex Web Search URL": "Masukkan URL Pencarian Web Yandex", + "Enter You.com API Key": "Masukkan Kunci API You.com", "Enter your code here...": "Masukkan kode Anda di sini...", - "Enter your current password": "", + "Enter your current password": "Masukkan kata sandi Anda saat ini", "Enter Your Email": "Masukkan Email Anda", "Enter Your Full Name": "Masukkan Nama Lengkap Anda", - "Enter your gender": "", - "Enter your message": "", - "Enter your name": "", - "Enter Your Name": "", - "Enter your new password": "", + "Enter your gender": "Masukkan jenis kelamin Anda", + "Enter your message": "Masukkan pesan Anda", + "Enter your name": "Masukkan nama Anda", + "Enter Your Name": "Masukkan Nama Anda", + "Enter your new password": "Masukkan kata sandi baru Anda", "Enter Your Password": "Masukkan Kata Sandi Anda", "Enter Your Role": "Masukkan Peran Anda", - "Enter Your Username": "", - "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "", - "Enterprise licensing": "", - "Entra ID": "", - "Environment Variables": "", - "Ephemeral": "", + "Enter Your Username": "Masukkan Nama Pengguna Anda", + "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "Lisensi Enterprise juga mencakup dukungan khusus, opsi kustomisasi, dan lainnya, dengan sebagian kecil biaya dari membangun dan mengelola tumpukan ini secara internal.", + "Enterprise licensing": "Lisensi Enterprise", + "Entra ID": "Entra ID", + "Environment Variables": "Variabel Lingkungan", + "Ephemeral": "Sementara", "Error": "Kesalahan", - "ERROR": "", - "Error accessing directory": "", - "Error accessing Google Drive: {{error}}": "", - "Error accessing media devices.": "", - "Error deleting model: {{error}}": "", - "Error previewing file: {{error}}": "", - "Error starting recording.": "", - "Error unloading model: {{error}}": "", - "Error uploading file: {{error}}": "", - "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "", - "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "", - "Evaluations": "", - "Event": "", - "Event created": "", - "Event deleted": "", - "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "", - "Event title": "", - "Event updated": "", + "ERROR": "GALAT", + "Error accessing directory": "Galat saat mengakses direktori", + "Error accessing Google Drive: {{error}}": "Galat saat mengakses Google Drive: {{error}}", + "Error accessing media devices.": "Galat saat mengakses perangkat media.", + "Error deleting model: {{error}}": "Galat saat menghapus model: {{error}}", + "Error previewing file: {{error}}": "Galat saat mempratinjau berkas: {{error}}", + "Error starting recording.": "Galat saat memulai perekaman.", + "Error unloading model: {{error}}": "Galat saat melepas model: {{error}}", + "Error uploading file: {{error}}": "Galat saat mengunggah berkas: {{error}}", + "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Galat: Model dengan ID '{{modelId}}' sudah ada. Silakan pilih ID lain untuk melanjutkan.", + "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Galat: ID model tidak boleh kosong. Silakan masukkan ID yang valid untuk melanjutkan.", + "Evaluations": "Evaluasi", + "Event": "Peristiwa", + "Event created": "Peristiwa dibuat", + "Event deleted": "Peristiwa dihapus", + "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "Nama peristiwa dapat berubah seiring perkembangan Open WebUI. Gunakan pola luas seperti user.* untuk integrasi yang harus tetap berjalan di berbagai peristiwa terkait yang baru.", + "Event title": "Judul peristiwa", + "Event updated": "Peristiwa diperbarui", "Every {{count}} hours_one": "Setiap {{count}} jam", - "Every {{count}} hours_other": "", + "Every {{count}} hours_other": "Setiap {{count}} jam", "Every {{count}} minutes_one": "Setiap {{count}} menit", - "Every {{count}} minutes_other": "", - "Every minute": "", - "Example": "", - "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", - "Example: ALL": "", - "Example: mail": "", - "Example: ou=users,dc=foo,dc=example": "", - "Example: sAMAccountName or uid or userPrincipalName": "", - "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "", - "Exclude": "", - "Execute code for analysis": "", - "Executing {{NAME}}...": "", - "Expand": "", - "Expand input": "", - "Experience": "", + "Every {{count}} minutes_other": "Setiap {{count}} menit", + "Every minute": "Setiap menit", + "Example": "Contoh", + "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Contoh: (&(objectClass=inetOrgPerson)(uid=%s))", + "Example: ALL": "Contoh: ALL", + "Example: mail": "Contoh: mail", + "Example: ou=users,dc=foo,dc=example": "Contoh: ou=users,dc=foo,dc=example", + "Example: sAMAccountName or uid or userPrincipalName": "Contoh: sAMAccountName atau uid atau userPrincipalName", + "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Melebihi jumlah kursi pada lisensi Anda. Silakan hubungi dukungan untuk menambah jumlah kursi.", + "Exclude": "Kecualikan", + "Execute code for analysis": "Jalankan kode untuk analisis", + "Executing {{NAME}}...": "Menjalankan {{NAME}}...", + "Expand": "Perluas", + "Expand input": "Perluas input", + "Experience": "Pengalaman", "Experimental": "Percobaan", - "Explain": "", - "Explain options trading": "", - "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "", - "Explored": "", - "Exploring": "", + "Explain": "Jelaskan", + "Explain options trading": "Jelaskan perdagangan opsi", + "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Jelaskan perdagangan opsi dengan istilah sederhana jika saya terbiasa dengan jual beli saham.", + "Explored": "Dijelajahi", + "Exploring": "Menjelajahi", "Export": "Ekspor", - "Export as CSV": "", - "Export as JSON": "", + "Export as CSV": "Ekspor sebagai CSV", + "Export as JSON": "Ekspor sebagai JSON", "Export chat (.json)": "Ekspor obrolan (.json)", - "Export JSON": "", - "Export Models": "", - "Export Prompts": "", - "Export Skills": "", - "Export to CSV": "", - "Export Tools": "", - "External": "", - "External connection not found.": "", - "External Document Loader URL required.": "", - "External Knowledge Source": "", - "External vectors must be generated with the same embedding model configured in Open WebUI.": "", - "Extract action items from this note.": "", - "Extracted text lines": "", - "Extracting text and comparing…": "", - "Failed to add file.": "", - "Failed to add members": "", - "Failed to archive chat.": "", - "Failed to clear status": "", - "Failed to compare files.": "", - "Failed to connect to {{URL}} OpenAPI tool server": "", - "Failed to connect to {{URL}} terminal server": "", - "Failed to copy link": "", + "Export JSON": "Ekspor JSON", + "Export Models": "Ekspor Model", + "Export Prompts": "Ekspor Prompt", + "Export Skills": "Ekspor Keahlian", + "Export to CSV": "Ekspor ke CSV", + "Export Tools": "Ekspor Alat", + "External": "Eksternal", + "External connection not found.": "Koneksi eksternal tidak ditemukan.", + "External Document Loader URL required.": "URL Pemuat Dokumen Eksternal diperlukan.", + "External Knowledge Source": "Sumber Pengetahuan Eksternal", + "External vectors must be generated with the same embedding model configured in Open WebUI.": "Vektor eksternal harus dibuat dengan model embedding yang sama yang dikonfigurasikan di Open WebUI.", + "Extract action items from this note.": "Ekstrak butir tindakan dari catatan ini.", + "Extracted text lines": "Baris teks yang diekstrak", + "Extracting text and comparing…": "Mengekstrak teks dan membandingkan…", + "Failed to add file.": "Gagal menambahkan berkas.", + "Failed to add members": "Gagal menambahkan anggota", + "Failed to archive chat.": "Gagal mengarsipkan obrolan.", + "Failed to clear status": "Gagal menghapus status", + "Failed to compare files.": "Gagal membandingkan berkas.", + "Failed to connect to {{URL}} OpenAPI tool server": "Gagal terhubung ke server alat OpenAPI {{URL}}", + "Failed to connect to {{URL}} terminal server": "Gagal terhubung ke server terminal {{URL}}", + "Failed to copy link": "Gagal menyalin tautan", "Failed to create API Key.": "Gagal membuat API Key.", - "Failed to create chat": "", - "Failed to delete calendar": "", - "Failed to delete note": "", - "Failed to delete webhook": "", - "Failed to disconnect": "", - "Failed to download image": "", - "Failed to extract content from the file: {{error}}": "", - "Failed to extract content from the file.": "", - "Failed to fetch models": "", - "Failed to fork chat": "", - "Failed to generate title": "", - "Failed to import models": "", - "Failed to load chat": "", - "Failed to load chat preview": "", - "Failed to load DOCX file. Please try downloading it instead.": "", - "Failed to load Excel/CSV file. Please try downloading it instead.": "", - "Failed to load file content.": "", - "Failed to load folder": "", - "Failed to load Interface settings": "", - "Failed to load policy: {{error}}": "", - "Failed to load PPTX file. Please try downloading it instead.": "", - "Failed to load usage": "", - "Failed to load valves": "", - "Failed to move chat": "", - "Failed to open database": "", - "Failed to process URL: {{url}}": "", + "Failed to create chat": "Gagal membuat obrolan", + "Failed to delete calendar": "Gagal menghapus kalender", + "Failed to delete note": "Gagal menghapus catatan", + "Failed to delete webhook": "Gagal menghapus webhook", + "Failed to disconnect": "Gagal memutuskan koneksi", + "Failed to download image": "Gagal mengunduh gambar", + "Failed to extract content from the file: {{error}}": "Gagal mengekstrak konten dari berkas: {{error}}", + "Failed to extract content from the file.": "Gagal mengekstrak konten dari berkas.", + "Failed to fetch models": "Gagal mengambil model", + "Failed to fork chat": "Gagal mencabangkan obrolan", + "Failed to generate title": "Gagal membuat judul", + "Failed to import models": "Gagal mengimpor model", + "Failed to load chat": "Gagal memuat obrolan", + "Failed to load chat preview": "Gagal memuat pratinjau obrolan", + "Failed to load DOCX file. Please try downloading it instead.": "Gagal memuat berkas DOCX. Silakan coba unduh berkas.", + "Failed to load Excel/CSV file. Please try downloading it instead.": "Gagal memuat berkas Excel/CSV. Silakan coba unduh berkas.", + "Failed to load file content.": "Gagal memuat isi berkas.", + "Failed to load folder": "Gagal memuat folder", + "Failed to load Interface settings": "Gagal memuat pengaturan antarmuka", + "Failed to load policy: {{error}}": "Gagal memuat kebijakan: {{error}}", + "Failed to load PPTX file. Please try downloading it instead.": "Gagal memuat berkas PPTX. Silakan coba unduh sebagai gantinya.", + "Failed to load usage": "Gagal memuat penggunaan", + "Failed to load valves": "Gagal memuat katup", + "Failed to move chat": "Gagal memindahkan obrolan", + "Failed to open database": "Gagal membuka basis data", + "Failed to process URL: {{url}}": "Gagal memproses URL: {{url}}", "Failed to read clipboard contents": "Gagal membaca konten papan klip", - "Failed to refresh terminals: {{error}}": "", - "Failed to remove member": "", - "Failed to render diagram": "", - "Failed to render visualization": "", - "Failed to save chat variables": "", - "Failed to save connections": "", + "Failed to refresh terminals: {{error}}": "Gagal menyegarkan terminal: {{error}}", + "Failed to remove member": "Gagal menghapus anggota", + "Failed to render diagram": "Gagal merender diagram", + "Failed to render visualization": "Gagal merender visualisasi", + "Failed to save chat variables": "Gagal menyimpan variabel obrolan", + "Failed to save connections": "Gagal menyimpan koneksi", "Failed to save conversation": "Gagal menyimpan percakapan", - "Failed to save model": "", - "Failed to save models configuration": "", - "Failed to save policy: {{error}}": "", - "Failed to save terminal servers": "", - "Failed to save webhook": "", - "Failed to search files": "", - "Failed to unshare chat.": "", + "Failed to save model": "Gagal menyimpan model", + "Failed to save models configuration": "Gagal menyimpan konfigurasi model", + "Failed to save policy: {{error}}": "Gagal menyimpan kebijakan: {{error}}", + "Failed to save terminal servers": "Gagal menyimpan server terminal", + "Failed to save webhook": "Gagal menyimpan webhook", + "Failed to search files": "Gagal mencari berkas", + "Failed to unshare chat.": "Gagal membatalkan pembagian obrolan.", "Failed to update settings": "Gagal memperbarui pengaturan", - "Failed to update status": "", - "Failed to update webhook": "", - "Failed to upload background image.": "", - "Failed to upload file.": "", - "Features Permissions": "", + "Failed to update status": "Gagal memperbarui status", + "Failed to update webhook": "Gagal memperbarui webhook", + "Failed to upload background image.": "Gagal mengunggah gambar latar belakang.", + "Failed to upload file.": "Gagal mengunggah berkas.", + "Features Permissions": "Izin Fitur", "February": "Februari", - "Feedback": "", - "Feedback Activity": "", - "Feedback deleted successfully": "", - "Feedback Details": "", + "Feedback": "Umpan Balik", + "Feedback Activity": "Aktivitas Umpan Balik", + "Feedback deleted successfully": "Umpan balik berhasil dihapus", + "Feedback Details": "Detail Umpan Balik", "Feel free to add specific details": "Jangan ragu untuk menambahkan detail spesifik", - "Female": "", - "Fetch page contents without proxy environment variables.": "", + "Female": "Perempuan", + "Fetch page contents without proxy environment variables.": "Ambil konten halaman tanpa variabel lingkungan proksi.", "File": "Berkas", - "File added successfully.": "", - "File browser": "", - "File content": "", - "File content updated successfully.": "", - "File deleted successfully.": "", - "File differences": "", + "File added successfully.": "Berkas berhasil ditambahkan.", + "File browser": "Peramban berkas", + "File content": "Konten berkas", + "File content updated successfully.": "Konten berkas berhasil diperbarui.", + "File deleted successfully.": "Berkas berhasil dihapus.", + "File differences": "Perbedaan berkas", "File Mode": "Mode File", - "File moved.": "", - "File name": "", + "File moved.": "Berkas berhasil dipindahkan.", + "File name": "Nama berkas", "File not found.": "File tidak ditemukan.", - "File removed successfully.": "", - "File renamed.": "", - "File size should not exceed {{maxSize}} MB.": "", - "File uploaded successfully": "", - "Filename": "", - "Filename matches": "", - "Files": "", - "Filesystem": "", - "Fill the required fields first.": "", - "Fill the source fields and test query first.": "", - "Filter": "", + "File removed successfully.": "Berkas berhasil dihapus.", + "File renamed.": "Nama berkas berhasil diubah.", + "File size should not exceed {{maxSize}} MB.": "Ukuran berkas tidak boleh melebihi {{maxSize}} MB.", + "File uploaded successfully": "Berkas berhasil diunggah", + "Filename": "Nama berkas", + "Filename matches": "Kecocokan nama berkas", + "Files": "Berkas", + "Filesystem": "Sistem berkas", + "Fill the required fields first.": "Isi kolom yang wajib diisi terlebih dahulu.", + "Fill the source fields and test query first.": "Isi kolom sumber dan kueri pengujian terlebih dahulu.", + "Filter": "Filter", "Filter is now globally disabled": "Filter sekarang dinonaktifkan secara global", "Filter is now globally enabled": "Filter sekarang diaktifkan secara global", "Filters": "Filter", "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Pemalsuan sidik jari terdeteksi: Tidak dapat menggunakan inisial sebagai avatar. Default ke gambar profil default.", - "Focus Chat Input": "", - "Folder": "", - "Folder Background Image": "", - "Folder created successfully": "", - "Folder deleted successfully": "", - "Folder name": "", - "Folder Name": "", - "Folder name cannot be empty.": "", - "Folder name updated successfully": "", - "Folder options": "", - "Folder updated successfully": "", - "Folders": "", - "Folders Sharing": "", - "Follow up": "", - "Follow up: {{question}}": "", + "Focus Chat Input": "Fokuskan Input Obrolan", + "Folder": "Folder", + "Folder Background Image": "Gambar Latar Belakang Folder", + "Folder created successfully": "Folder berhasil dibuat", + "Folder deleted successfully": "Folder berhasil dihapus", + "Folder name": "Nama folder", + "Folder Name": "Nama Folder", + "Folder name cannot be empty.": "Nama folder tidak boleh kosong.", + "Folder name updated successfully": "Nama folder berhasil diperbarui", + "Folder options": "Opsi folder", + "Folder updated successfully": "Folder berhasil diperbarui", + "Folders": "Folder", + "Folders Sharing": "Berbagi Folder", + "Follow up": "Tindak lanjut", + "Follow up: {{question}}": "Tindak lanjut: {{question}}", "Followed instructions perfectly": "Mengikuti instruksi dengan sempurna", - "for placeholders": "", - "for what to do with my kids' art": "", - "Fork": "", - "Fork chat": "", - "Fork the current chat branch into a new chat.": "", - "Fork: fork the current chat branch into a new chat.": "", - "Forking chat...": "", + "for placeholders": "untuk placeholder", + "for what to do with my kids' art": "tentang apa yang harus dilakukan dengan karya seni anak-anak saya", + "Fork": "Fork", + "Fork chat": "Fork obrolan", + "Fork the current chat branch into a new chat.": "Fork cabang obrolan saat ini ke obrolan baru.", + "Fork: fork the current chat branch into a new chat.": "Fork: fork cabang obrolan saat ini ke obrolan baru.", + "Forking chat...": "Membuat fork obrolan...", "Form": "Formulir", - "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "", - "Formatting": "", - "Formatting may be inconsistent from source.": "", - "Forward": "", - "Forward cookies": "", - "Forward cookies from your Open WebUI request to this server.": "", - "Forwards system user OAuth access token to authenticate": "", - "Forwards system user session credentials to authenticate": "", - "Fr_day_of_week": "", - "from {{provider}}": "", - "Full access": "", + "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Format Markdown saat Anda mengetik dan menempel. Nonaktifkan untuk mempertahankan karakter Markdown dan menempel teks biasa. Pemformatan yang ada tetap dipertahankan.", + "Formatting": "Pemformatan", + "Formatting may be inconsistent from source.": "Pemformatan mungkin tidak konsisten dari sumber.", + "Forward": "Teruskan", + "Forward cookies": "Teruskan cookie", + "Forward cookies from your Open WebUI request to this server.": "Teruskan cookie dari permintaan Open WebUI Anda ke server ini.", + "Forwards system user OAuth access token to authenticate": "Meneruskan token akses OAuth pengguna sistem untuk mengautentikasi", + "Forwards system user session credentials to authenticate": "Meneruskan kredensial sesi pengguna sistem untuk mengautentikasi", + "Fr_day_of_week": "Jum", + "from {{provider}}": "dari {{provider}}", + "Full access": "Akses penuh", "Function created successfully": "Fungsi berhasil dibuat", "Function deleted successfully": "Fungsi berhasil dihapus", - "Function Description": "", - "Function ID": "", - "Function imported successfully": "", - "Function is now globally disabled": "", - "Function is now globally enabled": "", - "Function Menu": "", - "Function Name": "", - "Function Name Filter List": "", - "Function starter": "", + "Function Description": "Deskripsi Fungsi", + "Function ID": "ID Fungsi", + "Function imported successfully": "Fungsi berhasil diimpor", + "Function is now globally disabled": "Fungsi sekarang dinonaktifkan secara global", + "Function is now globally enabled": "Fungsi sekarang diaktifkan secara global", + "Function Menu": "Menu Fungsi", + "Function Name": "Nama Fungsi", + "Function Name Filter List": "Daftar Filter Nama Fungsi", + "Function starter": "Starter fungsi", "Function updated successfully": "Fungsi berhasil diperbarui", "Functions": "Fungsi", - "Functions allow arbitrary code execution.": "", - "Functions can execute arbitrary code.": "", + "Functions allow arbitrary code execution.": "Fungsi memungkinkan eksekusi kode arbitrer.", + "Functions can execute arbitrary code.": "Fungsi dapat mengeksekusi kode arbitrer.", "Functions imported successfully": "Fungsi berhasil diimpor", - "Gemini": "", - "Gemini API Key is required.": "", + "Gemini": "Gemini", + "Gemini API Key is required.": "Kunci API Gemini diperlukan.", "General": "Umum", - "Generate": "", - "Generate an image": "", - "Generate message pair": "", - "Generate Message Pair": "", - "Generated Image": "", - "Generated images will appear here": "", + "Generate": "Hasilkan", + "Generate an image": "Buat gambar", + "Generate message pair": "Buat pasangan pesan", + "Generate Message Pair": "Buat Pasangan Pesan", + "Generated Image": "Gambar yang Dihasilkan", + "Generated images will appear here": "Gambar yang dibuat akan muncul di sini", "Generating search query": "Membuat kueri penelusuran", - "Generating...": "", - "Get information on {{name}} in the UI": "", - "Get started": "", - "Get started with {{WEBUI_NAME}}": "", - "Give me ideas": "", - "give me tips": "", + "Generating...": "Membuat...", + "Get information on {{name}} in the UI": "Dapatkan informasi tentang {{name}} di UI", + "Get started": "Mulai", + "Get started with {{WEBUI_NAME}}": "Mulai dengan {{WEBUI_NAME}}", + "Give me ideas": "Beri saya ide", + "give me tips": "beri saya kiat", "Global": "Global", "Good Response": "Respons yang Baik", - "Google": "", - "Google Drive": "", - "Gravatar": "", - "Grid": "", - "Grokipedia": "", - "group": "", - "Group": "", - "Group Channel": "", - "Group created successfully": "", - "Group deleted successfully": "", - "Group Description": "", - "Group Name": "", - "Group updated successfully": "", - "groups": "", - "Groups": "", - "H1": "", - "H2": "", - "H3": "", - "Headers": "", - "Headers must be a valid JSON object": "", - "Height": "", + "Google": "Google", + "Google Drive": "Google Drive", + "Gravatar": "Gravatar", + "Grid": "Kisi", + "Grokipedia": "Grokipedia", + "group": "grup", + "Group": "Grup", + "Group Channel": "Saluran Grup", + "Group created successfully": "Grup berhasil dibuat", + "Group deleted successfully": "Grup berhasil dihapus", + "Group Description": "Deskripsi Grup", + "Group Name": "Nama Grup", + "Group updated successfully": "Grup berhasil diperbarui", + "groups": "grup", + "Groups": "Grup", + "H1": "H1", + "H2": "H2", + "H3": "H3", + "Headers": "Header", + "Headers must be a valid JSON object": "Header harus berupa objek JSON yang valid", + "Height": "Tinggi", "Hello, {{name}}": "Halo, {{name}}", "Help": "Bantuan", - "Help me study": "", - "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "", - "Help the community discover great models": "", - "Help us translate Open WebUI!": "", - "Hex Color": "", - "Hex Color - Leave empty for default color": "", - "Hidden": "", + "Help me study": "Bantu saya belajar", + "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Bantu saya belajar kosakata: buat kalimat rumpang untuk saya lengkapi, dan saya akan mencoba memilih opsi yang tepat.", + "Help the community discover great models": "Bantu komunitas menemukan model hebat", + "Help us translate Open WebUI!": "Bantu kami menerjemahkan Open WebUI!", + "Hex Color": "Warna Hex", + "Hex Color - Leave empty for default color": "Warna Hex - Biarkan kosong untuk warna bawaan", + "Hidden": "Tersembunyi", "Hide": "Sembunyikan", - "Hide All": "", - "Hide from Sidebar": "", - "Hide Hidden Files": "", - "Hide Model": "", - "Hide whitespace": "", - "High": "", - "History": "", - "Home": "", - "Horizontal Layout": "", - "Hourly": "", - "Hourly Messages": "", + "Hide All": "Sembunyikan Semua", + "Hide from Sidebar": "Sembunyikan dari Bilah Sisi", + "Hide Hidden Files": "Sembunyikan Berkas Tersembunyi", + "Hide Model": "Sembunyikan Model", + "Hide whitespace": "Sembunyikan spasi kosong", + "High": "Tinggi", + "History": "Riwayat", + "Home": "Beranda", + "Horizontal Layout": "Tata Letak Horizontal", + "Hourly": "Per Jam", + "Hourly Messages": "Pesan Per Jam", "How can I help you today?": "Ada yang bisa saya bantu hari ini?", - "How would you rate this response?": "", - "HTML": "", - "HTML Preview": "", - "http://localhost:8000": "", - "https://mineru.net/api/v4": "", - "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "", - "ID": "", - "ID cannot contain \":\" or \"|\" characters": "", - "ID copied to clipboard": "", - "Identity audit": "", - "Idle only": "", - "Idle Timeout": "", - "if I'm familiar with buying and selling stocks": "", - "Image": "", - "Image Generation": "", - "Image Max Compression Size": "", - "Image Max Compression Size height": "", - "Image Max Compression Size width": "", - "Image unavailable": "", - "image/*, video/*": "", - "Images": "", - "Import": "", - "Import CSV": "", - "Import From Link": "", - "Import JSON": "", - "Import Models": "", - "Import Prompts": "", - "Import Skills": "", - "Import successful": "", - "Import Tools": "", - "Import txt/md": "", - "Imported automations successfully": "", - "Imported notes successfully": "", - "Importing...": "", - "Inactive": "", - "Include": "", - "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "", + "How would you rate this response?": "Bagaimana Anda menilai respons ini?", + "HTML": "HTML", + "HTML Preview": "Pratinjau HTML", + "http://localhost:8000": "http://localhost:8000", + "https://mineru.net/api/v4": "https://mineru.net/api/v4", + "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Saya menyatakan bahwa saya telah membaca dan memahami konsekuensi dari tindakan saya. Saya menyadari risiko yang terkait dengan mengeksekusi kode arbitrer dan telah memverifikasi keandalan sumbernya.", + "ID": "ID", + "ID cannot contain \":\" or \"|\" characters": "ID tidak boleh memuat karakter \":\" atau \"|\"", + "ID copied to clipboard": "ID disalin ke papan klip", + "Identity audit": "Audit identitas", + "Idle only": "Hanya saat tidak aktif", + "Idle Timeout": "Batas Waktu Tidak Aktif", + "if I'm familiar with buying and selling stocks": "jika saya terbiasa jual beli saham", + "Image": "Gambar", + "Image Generation": "Pembuatan Gambar", + "Image Max Compression Size": "Ukuran Kompresi Maksimum Gambar", + "Image Max Compression Size height": "Tinggi Ukuran Kompresi Maksimum Gambar", + "Image Max Compression Size width": "Lebar Ukuran Kompresi Maksimum Gambar", + "Image unavailable": "Gambar tidak tersedia", + "image/*, video/*": "image/*, video/*", + "Images": "Gambar", + "Import": "Impor", + "Import CSV": "Impor CSV", + "Import From Link": "Impor Dari Tautan", + "Import JSON": "Impor JSON", + "Import Models": "Impor Model", + "Import Prompts": "Impor Prompt", + "Import Skills": "Impor Keterampilan", + "Import successful": "Impor berhasil", + "Import Tools": "Impor Alat", + "Import txt/md": "Impor txt/md", + "Imported automations successfully": "Otomatisasi berhasil diimpor", + "Imported notes successfully": "Catatan berhasil diimpor", + "Importing...": "Mengimpor...", + "Inactive": "Tidak Aktif", + "Include": "Sertakan", + "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "Memengaruhi seberapa cepat algoritma merespons umpan balik dari teks yang dihasilkan. Learning rate yang lebih rendah akan menghasilkan penyesuaian yang lebih lambat, sedangkan learning rate yang lebih tinggi membuat algoritma lebih responsif.", "Info": "Info", - "Initials": "", - "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", - "Inline": "", - "Input": "", - "Input Key (e.g. text, unet_name, steps)": "", - "Input needed": "", - "Input Variables": "", - "Insert into note": "", - "Instructions": "", - "Integrations": "", - "Interface Settings Access": "", - "Invalid background image.": "", - "Invalid file format.": "", - "Invalid format.": "", - "Invalid JSON": "", - "Invalid JSON file": "", - "Invalid JSON format": "", - "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": "", - "is typing...": "", - "Italic": "", + "Initials": "Inisial", + "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Sisipkan seluruh konten sebagai konteks untuk pemrosesan menyeluruh, ini disarankan untuk kueri kompleks.", + "Inline": "Inline", + "Input": "Input", + "Input Key (e.g. text, unet_name, steps)": "Kunci Input (cth. text, unet_name, steps)", + "Input needed": "Input diperlukan", + "Input Variables": "Variabel Input", + "Insert into note": "Sisipkan ke catatan", + "Instructions": "Instruksi", + "Integrations": "Integrasi", + "Interface Settings Access": "Akses Pengaturan Antarmuka", + "Invalid background image.": "Gambar latar tidak valid.", + "Invalid file format.": "Format berkas tidak valid.", + "Invalid format.": "Format tidak valid.", + "Invalid JSON": "JSON tidak valid", + "Invalid JSON file": "Berkas JSON tidak valid", + "Invalid JSON format": "Format JSON tidak valid", + "Invalid JSON format for ComfyUI Edit Workflow.": "Format JSON tidak valid untuk Alur Kerja Edit ComfyUI.", + "Invalid JSON format for ComfyUI Workflow.": "Format JSON tidak valid untuk Alur Kerja ComfyUI.", + "Invalid JSON format for Parameters": "Format JSON tidak valid untuk Parameter", + "Invalid JSON format in {{NAME}}": "Format JSON tidak valid pada {{NAME}}", + "Invalid JSON format in Additional Config": "Format JSON tidak valid pada Konfigurasi Tambahan", + "Invalid JSON format in MinerU Parameters": "Format JSON tidak valid pada Parameter MinerU", + "is typing...": "sedang mengetik...", + "Italic": "Miring", "January": "Januari", "join our Discord for help.": "bergabunglah dengan Discord kami untuk mendapatkan bantuan.", "JSON": "JSON", - "JSON Base64": "", - "JSON parse error: {{error}}": "", + "JSON Base64": "JSON Base64", + "JSON parse error: {{error}}": "Kesalahan penguraian JSON: {{error}}", "JSON Preview": "Pratinjau JSON", - "JSON Spec": "", + "JSON Spec": "Spesifikasi JSON", "July": "Juli", "June": "Juni", - "Keep current webhook URL": "", - "Keep in Sidebar": "", - "Key": "", - "Key is required": "", - "key_name": "", - "Keyboard": "", + "Keep current webhook URL": "Pertahankan URL webhook saat ini", + "Keep in Sidebar": "Pertahankan di Bilah Sisi", + "Key": "Kunci", + "Key is required": "Kunci wajib diisi", + "key_name": "key_name", + "Keyboard": "Papan Ketik", "Knowledge": "Pengetahuan", - "Knowledge Access": "", - "Knowledge Base": "", - "Knowledge base has been reset": "", - "Knowledge base not found.": "", - "Knowledge created successfully.": "", - "Knowledge deleted successfully.": "", - "Knowledge Description": "", - "Knowledge exported successfully": "", - "Knowledge Name": "", - "Knowledge Public Sharing": "", - "Knowledge Sharing": "", - "Knowledge source created.": "", - "Knowledge source updated.": "", - "Knowledge updated successfully": "", - "Kokoro.js (Browser)": "", - "Last 24 hours": "", - "Last 30 days": "", - "Last 7 days": "", - "Last 90 days": "", + "Knowledge Access": "Akses Pengetahuan", + "Knowledge Base": "Basis Pengetahuan", + "Knowledge base has been reset": "Basis pengetahuan telah disetel ulang", + "Knowledge base not found.": "Basis pengetahuan tidak ditemukan.", + "Knowledge created successfully.": "Pengetahuan berhasil dibuat.", + "Knowledge deleted successfully.": "Pengetahuan berhasil dihapus.", + "Knowledge Description": "Deskripsi Pengetahuan", + "Knowledge exported successfully": "Pengetahuan berhasil diekspor", + "Knowledge Name": "Nama Pengetahuan", + "Knowledge Public Sharing": "Berbagi Pengetahuan Publik", + "Knowledge Sharing": "Berbagi Pengetahuan", + "Knowledge source created.": "Sumber pengetahuan dibuat.", + "Knowledge source updated.": "Sumber pengetahuan diperbarui.", + "Knowledge updated successfully": "Pengetahuan berhasil diperbarui", + "Kokoro.js (Browser)": "Kokoro.js (Peramban)", + "Last 24 hours": "24 jam terakhir", + "Last 30 days": "30 hari terakhir", + "Last 7 days": "7 hari terakhir", + "Last 90 days": "90 hari terakhir", "Last Active": "Terakhir Aktif", "Last Modified": "Terakhir Dimodifikasi", - "Last reply": "", - "Last run": "", - "Leaderboard": "", - "Learn More": "", - "Learn more about Open Terminal": "", - "Learn more about OpenAPI tool servers.": "", - "Learn more about Voxtral transcription.": "", - "Leave a public review for {{modelName}}": "", - "Leave empty for no compression": "", - "Leave empty for unlimited": "", - "Leave empty to include all models from \"{{url}}\" endpoint": "", - "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "", - "Leave empty to include all models from \"{{url}}/models\" endpoint": "", - "Leave empty to include all models or select specific models": "", - "Leave empty to use first admin user": "", - "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "", - "Leave empty to use the default prompt, or enter a custom prompt": "", - "Legacy": "", - "lexical": "", - "License Error": "", - "license purchased by": "", - "Lifecycle JSON": "", - "Lifetime tokens": "", - "Lift List": "", + "Last reply": "Balasan terakhir", + "Last run": "Terakhir dijalankan", + "Leaderboard": "Papan Peringkat", + "Learn More": "Pelajari Lebih Lanjut", + "Learn more about Open Terminal": "Pelajari lebih lanjut tentang Open Terminal", + "Learn more about OpenAPI tool servers.": "Pelajari lebih lanjut tentang server alat OpenAPI.", + "Learn more about Voxtral transcription.": "Pelajari lebih lanjut tentang transkripsi Voxtral.", + "Leave a public review for {{modelName}}": "Tinggalkan ulasan publik untuk {{modelName}}", + "Leave empty for no compression": "Biarkan kosong untuk tanpa kompresi", + "Leave empty for unlimited": "Biarkan kosong untuk tanpa batas", + "Leave empty to include all models from \"{{url}}\" endpoint": "Biarkan kosong untuk menyertakan semua model dari endpoint \"{{url}}\"", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Biarkan kosong untuk menyertakan semua model dari endpoint \"{{url}}/api/tags\"", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "Biarkan kosong untuk menyertakan semua model dari endpoint \"{{url}}/models\"", + "Leave empty to include all models or select specific models": "Biarkan kosong untuk menyertakan semua model atau pilih model tertentu", + "Leave empty to use first admin user": "Biarkan kosong untuk menggunakan pengguna admin pertama", + "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "Biarkan kosong untuk menggunakan konfigurasi default, atau masukkan JSON yang valid (lihat https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)", + "Leave empty to use the default prompt, or enter a custom prompt": "Biarkan kosong untuk menggunakan prompt default, atau masukkan prompt kustom", + "Legacy": "Warisan", + "lexical": "leksikal", + "License Error": "Kesalahan Lisensi", + "license purchased by": "lisensi dibeli oleh", + "Lifecycle JSON": "JSON Siklus Hidup", + "Lifetime tokens": "Token seumur hidup", + "Lift List": "Daftar Angkat", "Light": "Cahaya", - "List": "", + "List": "Daftar", "Listening...": "Mendengarkan", - "LiteLLM": "", - "Live": "", - "llama.cpp": "", + "LiteLLM": "LiteLLM", + "Live": "Langsung", + "llama.cpp": "llama.cpp", "LLMs can make mistakes. Verify important information.": "LLM dapat membuat kesalahan. Verifikasi informasi penting.", - "LM Studio": "", - "Load Model": "", - "Loaded": "", - "Loading": "", - "Loading Kokoro.js...": "", - "Loading policy...": "", - "Loading release notes...": "", + "LM Studio": "LM Studio", + "Load Model": "Muat Model", + "Loaded": "Dimuat", + "Loading": "Memuat", + "Loading Kokoro.js...": "Memuat Kokoro.js...", + "Loading policy...": "Memuat kebijakan...", + "Loading release notes...": "Memuat catatan rilis...", "Loading...": "Memuat...", - "local": "", - "Local": "", - "Location": "", - "Location access not allowed": "", - "Longest active chat": "", - "Longest streak": "", - "Lost": "", - "Low": "", + "local": "lokal", + "Local": "Lokal", + "Location": "Lokasi", + "Location access not allowed": "Akses lokasi tidak diizinkan", + "Longest active chat": "Obrolan aktif terlama", + "Longest streak": "Runtutan terpanjang", + "Lost": "Hilang", + "Low": "Rendah", "LTR": "LTR", "Made by Open WebUI Community": "Dibuat oleh Komunitas OpenWebUI", - "Make Default": "", - "Make password visible in the user interface": "", - "Make Private": "", - "Make Public": "", - "Male": "", + "Make Default": "Jadikan Default", + "Make password visible in the user interface": "Tampilkan kata sandi di antarmuka pengguna", + "Make Private": "Jadikan Pribadi", + "Make Public": "Jadikan Publik", + "Male": "Laki-laki", "Manage": "Mengelola", - "Manage Connections": "", - "Manage Models": "", - "Manage Ollama": "", - "Mapped Source": "", + "Manage Connections": "Kelola Koneksi", + "Manage Models": "Kelola Model", + "Manage Ollama": "Kelola Ollama", + "Mapped Source": "Sumber yang Dipetakan", "March": "Maret", - "Mark all as read": "", - "Mark as unread": "", - "Markdown": "", - "Market": "", - "Matching tabs: {{count}}_other": "", - "Max Snippets": "", - "Max tokens to retrieve (1024-32768, default 8192)": "", - "Maximum extra snippets returned per result. Set to 0 to disable them.": "", - "Maximum number of files per folder is {{max}}.": "", + "Mark all as read": "Tandai semua sebagai dibaca", + "Mark as unread": "Tandai sebagai belum dibaca", + "Markdown": "Markdown", + "Market": "Pasar", + "Matching tabs: {{count}}_one": "Tab yang cocok: {{count}}", + "Matching tabs: {{count}}_other": "Tab yang cocok: {{count}}", + "Max Snippets": "Cuplikan Maksimum", + "Max tokens to retrieve (1024-32768, default 8192)": "Token maksimum untuk diambil (1024-32768, default 8192)", + "Maximum extra snippets returned per result. Set to 0 to disable them.": "Jumlah cuplikan tambahan maksimum yang dikembalikan per hasil. Atur ke 0 untuk menonaktifkannya.", + "Maximum number of files per folder is {{max}}.": "Jumlah berkas maksimum per folder adalah {{max}}.", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimal 3 model dapat diunduh secara bersamaan. Silakan coba lagi nanti.", "May": "Mei", - "MBR": "", - "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "", - "Medium": "", - "Member removed successfully": "", - "members": "", - "Members": "", - "Members added successfully": "", - "Memories": "", + "MBR": "MBR", + "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Dukungan MCP bersifat eksperimental dan spesifikasinya sering berubah, yang dapat menyebabkan ketidakcocokan. Dukungan spesifikasi OpenAPI dikelola langsung oleh tim Open WebUI, menjadikannya opsi yang lebih andal untuk kompatibilitas.", + "Medium": "Sedang", + "Member removed successfully": "Anggota berhasil dihapus", + "members": "anggota", + "Members": "Anggota", + "Members added successfully": "Anggota berhasil ditambahkan", + "Memories": "Memori", "Memory": "Memori", "Memory added successfully": "Memori berhasil ditambahkan", "Memory cleared successfully": "Memori berhasil dihapus", "Memory deleted successfully": "Memori berhasil dihapus", "Memory updated successfully": "Memori berhasil diperbarui", - "Merge Responses": "", + "Merge Responses": "Gabungkan Respons", "Merged Response": "Tanggapan yang Digabungkan", - "Message": "", - "Message counts and response timestamps": "", - "Message counts are based on assistant responses.": "", - "Message rating should be enabled to use this feature": "", - "Message text...": "", - "messages": "", - "Messages": "", + "Message": "Pesan", + "Message counts and response timestamps": "Jumlah pesan dan stempel waktu respons", + "Message counts are based on assistant responses.": "Jumlah pesan didasarkan pada respons asisten.", + "Message rating should be enabled to use this feature": "Penilaian pesan harus diaktifkan untuk menggunakan fitur ini", + "Message text...": "Teks pesan...", + "messages": "pesan", + "Messages": "Pesan", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Pesan yang Anda kirim setelah membuat tautan tidak akan dibagikan. Pengguna yang memiliki URL tersebut akan dapat melihat obrolan yang dibagikan.", - "Metadata Field": "", - "Microsoft OneDrive": "", - "Microsoft OneDrive (personal)": "", - "Microsoft OneDrive (work/school)": "", - "min": "", - "MinerU": "", - "MinerU API Key required for Cloud API mode.": "", - "Mistral OCR": "", - "Mistral OCR API Key required.": "", - "MistralAI": "", - "Mo_day_of_week": "", - "Model": "", + "Metadata Field": "Kolom Metadata", + "Microsoft OneDrive": "Microsoft OneDrive", + "Microsoft OneDrive (personal)": "Microsoft OneDrive (pribadi)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive (kantor/sekolah)", + "min": "mnt", + "MinerU": "MinerU", + "MinerU API Key required for Cloud API mode.": "Kunci API MinerU diperlukan untuk mode Cloud API.", + "Mistral OCR": "Mistral OCR", + "Mistral OCR API Key required.": "Kunci API Mistral OCR diperlukan.", + "MistralAI": "MistralAI", + "Mo_day_of_week": "Sen", + "Model": "Model", "Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' telah berhasil diunduh.", "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' sudah berada dalam antrean untuk diunduh.", - "Model {{modelName}} deleted successfully": "", + "Model {{modelName}} deleted successfully": "Model {{modelName}} berhasil dihapus", "Model {{modelName}} is not vision capable": "Model {{modelName}} tidak dapat dilihat", "Model {{name}} is now {{status}}": "Model {{name}} sekarang menjadi {{status}}", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", - "Model added to pinned models": "", - "Model added to selected models": "", + "Model {{name}} is now hidden": "Model {{name}} sekarang disembunyikan", + "Model {{name}} is now visible": "Model {{name}} sekarang terlihat", + "Model added to pinned models": "Model ditambahkan ke model yang disematkan", + "Model added to selected models": "Model ditambahkan ke model yang dipilih", "Model created successfully!": "Model berhasil dibuat!", - "Model deleted successfully": "", - "Model download started": "", + "Model deleted successfully": "Model berhasil dihapus", + "Model download started": "Pengunduhan model dimulai", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Jalur sistem berkas model terdeteksi. Nama pendek model diperlukan untuk pembaruan, tidak dapat dilanjutkan.", - "Model Filtering": "", + "Model Filtering": "Penyaringan Model", "Model ID": "ID Model", - "Model ID cannot contain whitespace.": "", - "Model ID is already added": "", - "Model ID is required.": "", - "Model IDs": "", - "Model is now private": "", - "Model is now public": "", - "Model list refreshed": "", - "Model loaded successfully": "", - "Model Name": "", - "Model name already exists, please choose a different one": "", - "Model Name is required.": "", - "Model names and usage frequency": "", - "Model not found": "", + "Model ID cannot contain whitespace.": "ID Model tidak boleh mengandung spasi.", + "Model ID is already added": "ID Model sudah ditambahkan", + "Model ID is required.": "ID Model diperlukan.", + "Model IDs": "ID Model", + "Model is now private": "Model sekarang bersifat privat", + "Model is now public": "Model sekarang bersifat publik", + "Model list refreshed": "Daftar model diperbarui", + "Model loaded successfully": "Model berhasil dimuat", + "Model Name": "Nama Model", + "Model name already exists, please choose a different one": "Nama model sudah ada, silakan pilih nama lain", + "Model Name is required.": "Nama Model diperlukan.", + "Model names and usage frequency": "Nama model dan frekuensi penggunaan", + "Model not found": "Model tidak ditemukan", "Model not selected": "Model tidak dipilih", - "Model order saved successfully": "", + "Model order saved successfully": "Urutan model berhasil disimpan", "Model Params": "Parameter Model", - "Model Permissions": "", - "model profile": "", - "Model providers": "", - "Model removed from pinned models": "", - "Model removed from selected models": "", - "Model responses or outputs": "", - "Model unloaded successfully": "", + "Model Permissions": "Izin Model", + "model profile": "profil model", + "Model providers": "Penyedia model", + "Model removed from pinned models": "Model dihapus dari model yang disematkan", + "Model removed from selected models": "Model dihapus dari model yang dipilih", + "Model responses or outputs": "Respons atau keluaran model", + "Model unloaded successfully": "Model berhasil dilepas", "Model updated successfully": "Model berhasil diperbarui", - "Model Usage": "", - "Model: show or switch the current model.": "", - "Model(s) do not support file upload": "", + "Model Usage": "Penggunaan Model", + "Model: show or switch the current model.": "Model: tampilkan atau beralih model saat ini.", + "Model(s) do not support file upload": "Model tidak mendukung unggah berkas", "Modelfile Content": "Konten File Model", - "modelfile profile": "", + "modelfile profile": "profil modelfile", "Models": "Model", - "Models Access": "", - "Models configuration saved successfully": "", - "Models imported successfully": "", - "Models Public Sharing": "", - "Models Sharing": "", - "Modified": "", - "Mojeek": "", - "Monday – Friday": "", - "Month": "", - "Monthly": "", + "Models Access": "Akses Model", + "Models configuration saved successfully": "Konfigurasi model berhasil disimpan", + "Models imported successfully": "Model berhasil diimpor", + "Models Public Sharing": "Berbagi Model Publik", + "Models Sharing": "Berbagi Model", + "Modified": "Diubah", + "Mojeek": "Mojeek", + "Monday – Friday": "Senin – Jumat", + "Month": "Bulan", + "Monthly": "Bulanan", "More": "Lainnya", - "More Concise": "", - "More options": "", - "More Options": "", - "Move": "", - "Moved {{name}}": "", - "Multipart Upload": "", - "Mute": "", - "Muted": "", - "My Terminal": "", + "More Concise": "Lebih Ringkas", + "More options": "Opsi lainnya", + "More Options": "Opsi Lainnya", + "Move": "Pindahkan", + "Moved {{name}}": "{{name}} dipindahkan", + "Multipart Upload": "Unggah Multipart", + "Mute": "Bisukan", + "Muted": "Dibisukan", + "My Terminal": "Terminal Saya", "Name": "Nama", - "Name and description are required": "", - "Name and ID are required, please fill them out": "", - "Name is required": "", - "Name your knowledge base": "", - "Name, prompt, and model are required": "", - "Native": "", - "Navigate to Next Chat": "", - "Navigate to Previous Chat": "", - "Never": "", - "New": "", - "New Button": "", - "New calendar": "", - "New Calendar": "", - "New chat": "", + "Name and description are required": "Nama dan deskripsi wajib diisi", + "Name and ID are required, please fill them out": "Nama dan ID wajib diisi, silakan lengkapi", + "Name is required": "Nama wajib diisi", + "Name your knowledge base": "Beri nama basis pengetahuan Anda", + "Name, prompt, and model are required": "Nama, prompt, dan model wajib diisi", + "Native": "Bawaan", + "Navigate to Next Chat": "Beralih ke Obrolan Berikutnya", + "Navigate to Previous Chat": "Beralih ke Obrolan Sebelumnya", + "Never": "Tidak Pernah", + "New": "Baru", + "New Button": "Tombol Baru", + "New calendar": "Kalender baru", + "New Calendar": "Kalender Baru", + "New chat": "Obrolan baru", "New Chat": "Obrolan Baru", - "New directory": "", - "New Directory": "", - "New File": "", - "New Folder": "", - "New Function": "", - "New Group": "", - "New Note": "", + "New directory": "Direktori baru", + "New Directory": "Direktori Baru", + "New File": "Berkas Baru", + "New Folder": "Folder Baru", + "New Function": "Fungsi Baru", + "New Group": "Grup Baru", + "New Note": "Catatan Baru", "New Password": "Kata Sandi Baru", - "New Temporary Chat": "", - "New Terminal": "", - "New Tool": "", - "New Webhook": "", - "new-channel": "", - "Next": "", - "Next message": "", - "Next month": "", - "Next page": "", - "Next run": "", - "Next version": "", - "No access grants. Private to you.": "", - "No actions found": "", - "No activity data": "", - "No additional headers are sent unless configured.": "", - "No authentication": "", - "No automations found": "", - "No channels": "", - "No chat alerts": "", - "No chat history": "", - "No chat to compact": "", - "No chat to fork": "", - "No chats": "", - "No chats found": "", - "No chats found for this user.": "", - "No chats found.": "", - "No content": "", - "No content available": "", - "No content found": "", + "New Temporary Chat": "Obrolan Sementara Baru", + "New Terminal": "Terminal Baru", + "New Tool": "Alat Baru", + "New Webhook": "Webhook Baru", + "new-channel": "saluran-baru", + "Next": "Berikutnya", + "Next message": "Pesan berikutnya", + "Next month": "Bulan berikutnya", + "Next page": "Halaman berikutnya", + "Next run": "Eksekusi berikutnya", + "Next version": "Versi berikutnya", + "No access grants. Private to you.": "Tidak ada izin akses. Pribadi untuk Anda.", + "No actions found": "Tidak ada tindakan ditemukan", + "No activity data": "Tidak ada data aktivitas", + "No additional headers are sent unless configured.": "Tidak ada header tambahan yang dikirim kecuali dikonfigurasi.", + "No authentication": "Tanpa autentikasi", + "No automations found": "Tidak ada otomatisasi ditemukan", + "No channels": "Tidak ada saluran", + "No chat alerts": "Tidak ada pemberitahuan obrolan", + "No chat history": "Tidak ada riwayat obrolan", + "No chat to compact": "Tidak ada obrolan untuk dipadatkan", + "No chat to fork": "Tidak ada obrolan untuk dicabangkan", + "No chats": "Tidak ada obrolan", + "No chats found": "Tidak ada obrolan ditemukan", + "No chats found for this user.": "Tidak ada obrolan ditemukan untuk pengguna ini.", + "No chats found.": "Tidak ada obrolan ditemukan.", + "No content": "Tidak ada konten", + "No content available": "Tidak ada konten yang tersedia", + "No content found": "Tidak ada konten ditemukan", "No content to speak": "Tidak ada konten untuk dibicarakan", - "No conversation to save": "", - "No data": "", - "No description": "", - "No distance available": "", - "No event webhooks configured.": "", - "No expiration can pose security risks.": "", - "No external knowledge sources configured.": "", - "No feedback found": "", + "No conversation to save": "Tidak ada percakapan untuk disimpan", + "No data": "Tidak ada data", + "No description": "Tidak ada deskripsi", + "No distance available": "Tidak ada jarak yang tersedia", + "No event webhooks configured.": "Tidak ada webhook acara yang dikonfigurasi.", + "No expiration can pose security risks.": "Tanpa kedaluwarsa dapat menimbulkan risiko keamanan.", + "No external knowledge sources configured.": "Tidak ada sumber pengetahuan eksternal yang dikonfigurasi.", + "No feedback found": "Tidak ada umpan balik ditemukan", "No file selected": "Tidak ada file yang dipilih", - "No files found": "", - "No files in this knowledge base.": "", - "No files yet. Upload files or run Python code to create them.": "", - "No filters found": "", - "No folders": "", - "No functions found": "", - "No groups found": "", - "No history available": "", - "No HTML, CSS, or JavaScript content found.": "", - "No inference engine with management support found": "", - "No kernel": "", - "No knowledge bases accessible": "", - "No knowledge bases found.": "", - "No knowledge found": "", - "No limit": "", - "No matches": "", - "No model data": "", - "No model IDs": "", - "No model usage found": "", - "No models accessible": "", - "No models available": "", - "No models found": "", - "No Notes": "", - "No notes found": "", - "No notification targets configured.": "", - "No one": "", - "No output items": "", - "No pinned messages": "", - "No prompts found": "", - "No Repeat": "", + "No files found": "Tidak ada berkas ditemukan", + "No files in this knowledge base.": "Tidak ada berkas di basis pengetahuan ini.", + "No files yet. Upload files or run Python code to create them.": "Belum ada berkas. Unggah berkas atau jalankan kode Python untuk membuatnya.", + "No filters found": "Tidak ada filter ditemukan", + "No folders": "Tidak ada folder", + "No functions found": "Tidak ada fungsi ditemukan", + "No groups found": "Tidak ada grup ditemukan", + "No history available": "Tidak ada riwayat yang tersedia", + "No HTML, CSS, or JavaScript content found.": "Tidak ada konten HTML, CSS, atau JavaScript yang ditemukan.", + "No inference engine with management support found": "Tidak ada mesin inferensi dengan dukungan manajemen yang ditemukan", + "No kernel": "Tidak ada kernel", + "No knowledge bases accessible": "Tidak ada basis pengetahuan yang dapat diakses", + "No knowledge bases found.": "Basis pengetahuan tidak ditemukan.", + "No knowledge found": "Pengetahuan tidak ditemukan", + "No limit": "Tanpa batas", + "No matches": "Tidak ada kecocokan", + "No model data": "Tidak ada data model", + "No model IDs": "Tidak ada ID model", + "No model usage found": "Penggunaan model tidak ditemukan", + "No models accessible": "Tidak ada model yang dapat diakses", + "No models available": "Tidak ada model yang tersedia", + "No models found": "Model tidak ditemukan", + "No Notes": "Tidak Ada Catatan", + "No notes found": "Catatan tidak ditemukan", + "No notification targets configured.": "Tidak ada target notifikasi yang dikonfigurasi.", + "No one": "Tak seorang pun", + "No output items": "Tidak ada item keluaran", + "No pinned messages": "Tidak ada pesan tersemat", + "No prompts found": "Prompt tidak ditemukan", + "No Repeat": "Jangan Ulangi", "No results": "Tidak ada hasil yang ditemukan", "No results found": "Tidak ada hasil yang ditemukan", - "No runs yet": "", + "No runs yet": "Belum ada eksekusi", "No search query generated": "Tidak ada permintaan pencarian yang dibuat", - "No servers detected": "", - "No skills found": "", + "No servers detected": "Server tidak terdeteksi", + "No skills found": "Keahlian tidak ditemukan", "No source available": "Tidak ada sumber yang tersedia", - "No sources found": "", + "No sources found": "Sumber tidak ditemukan", "No suggestion prompts": "Tidak ada prompt saran", - "No Terminal connection configured.": "", - "No terminal connections configured.": "", - "No text differences": "", - "No tool server connections configured.": "", - "No tools accessible": "", - "No tools found": "", - "No usage data found": "", - "No user variables configured.": "", - "No users were found.": "", - "No valves": "", + "No Terminal connection configured.": "Koneksi Terminal tidak dikonfigurasi.", + "No terminal connections configured.": "Koneksi terminal tidak dikonfigurasi.", + "No text differences": "Tidak ada perbedaan teks", + "No tool server connections configured.": "Koneksi server alat tidak dikonfigurasi.", + "No tools accessible": "Tidak ada alat yang dapat diakses", + "No tools found": "Alat tidak ditemukan", + "No usage data found": "Data penggunaan tidak ditemukan", + "No user variables configured.": "Variabel pengguna tidak dikonfigurasi.", + "No users were found.": "Pengguna tidak ditemukan.", + "No valves": "Tidak ada katup", "No valves to update": "Tidak ada katup untuk diperbarui", - "No webhooks yet": "", - "Node Ids": "", + "No webhooks yet": "Belum ada webhook", + "Node Ids": "ID Node", "None": "Tidak ada", - "Not configured": "", + "Not configured": "Tidak dikonfigurasi", "Not factually correct": "Tidak benar secara faktual", - "Not helpful": "", - "Not Registered": "", - "Not scheduled": "", - "Note": "", - "Note deleted successfully": "", - "Note Menu": "", - "Notes": "", - "Notes Public Sharing": "", - "Notes Sharing": "", - "Nothing to compact": "", + "Not helpful": "Tidak membantu", + "Not Registered": "Tidak Terdaftar", + "Not scheduled": "Tidak dijadwalkan", + "Note": "Catatan", + "Note deleted successfully": "Catatan berhasil dihapus", + "Note Menu": "Menu Catatan", + "Notes": "Catatan", + "Notes Public Sharing": "Berbagi Catatan Publik", + "Notes Sharing": "Berbagi Catatan", + "Nothing to compact": "Tidak ada yang perlu dipadatkan", "November": "November", - "OAuth": "", - "OAuth 2.1": "", - "OAuth 2.1 (Static)": "", - "OAuth discovery successful": "", + "OAuth": "OAuth", + "OAuth 2.1": "OAuth 2.1", + "OAuth 2.1 (Static)": "OAuth 2.1 (Statis)", + "OAuth discovery successful": "Penemuan OAuth berhasil", "OAuth ID": "ID OAuth", - "OAuth Resource Parameter": "", - "OAuth Scopes": "", - "OAuth Server URL": "", - "OAuth session disconnected": "", + "OAuth Resource Parameter": "Parameter Sumber Daya OAuth", + "OAuth Scopes": "Cakupan OAuth", + "OAuth Server URL": "URL Server OAuth", + "OAuth session disconnected": "Sesi OAuth terputus", "October": "Oktober", - "of a website's sticky header": "", + "of a website's sticky header": "dari header tetap situs web", "Off": "Mati", "Okay, Let's Go!": "Oke, Ayo Kita Pergi!", "OLED Dark": "OLED Gelap", "Ollama": "Ollama", - "Ollama API settings updated": "", - "Omit": "", + "Ollama API settings updated": "Pengaturan API Ollama diperbarui", + "Omit": "Abaikan", "On": "Aktif", - "Once": "", - "Only active during Voice Mode.": "", - "Only active when \"Paste Large Text as File\" setting is toggled on.": "", - "Only active when a tool call is waiting for approval.": "", - "Only active when the chat input is in focus and an LLM is generating a response.": "", - "Only active when the chat input is in focus.": "", - "Only alphanumeric characters and hyphens are allowed": "", + "Once": "Sekali", + "Only active during Voice Mode.": "Hanya aktif selama Mode Suara.", + "Only active when \"Paste Large Text as File\" setting is toggled on.": "Hanya aktif saat pengaturan \"Tempel Teks Panjang sebagai Berkas\" diaktifkan.", + "Only active when a tool call is waiting for approval.": "Hanya aktif saat panggilan alat menunggu persetujuan.", + "Only active when the chat input is in focus and an LLM is generating a response.": "Hanya aktif saat input obrolan fokus dan LLM sedang menghasilkan respons.", + "Only active when the chat input is in focus.": "Hanya aktif saat input obrolan sedang fokus.", + "Only alphanumeric characters and hyphens are allowed": "Hanya karakter alfanumerik dan tanda hubung yang diizinkan", "Only alphanumeric characters and hyphens are allowed in the command string.": "Hanya karakter alfanumerik dan tanda hubung yang diizinkan dalam string perintah.", - "Only can be triggered when the chat input is in focus.": "", - "Only collections can be edited, create a new knowledge base to edit/add documents.": "", - "Only install functions from sources you trust.": "", - "Only install tools from sources you trust.": "", - "Only invited users can access": "", - "Only select users and groups with permission can access": "", - "Only sync new/updated chats": "", - "Only when away": "", + "Only can be triggered when the chat input is in focus.": "Hanya dapat dipicu saat input obrolan sedang fokus.", + "Only collections can be edited, create a new knowledge base to edit/add documents.": "Hanya koleksi yang dapat diedit, buat basis pengetahuan baru untuk mengedit/menambahkan dokumen.", + "Only install functions from sources you trust.": "Hanya pasang fungsi dari sumber yang Anda percayai.", + "Only install tools from sources you trust.": "Hanya pasang alat dari sumber yang Anda percayai.", + "Only invited users can access": "Hanya pengguna yang diundang yang dapat mengakses", + "Only select users and groups with permission can access": "Hanya pengguna dan grup terpilih dengan izin yang dapat mengakses", + "Only sync new/updated chats": "Hanya sinkronkan obrolan baru/yang diperbarui", + "Only when away": "Hanya saat tidak di tempat", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Sepertinya URL tidak valid. Mohon periksa ulang dan coba lagi.", "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Anda menggunakan metode yang tidak didukung (hanya untuk frontend). Silakan sajikan WebUI dari backend.", - "Open": "", - "Open automation": "", - "Open create menu": "", - "Open file": "", - "Open Folder": "", - "Open in full screen": "", - "Open in new tab": "", - "Open link": "", - "Open modal to configure connection": "", - "Open Model Selector": "", - "Open note": "", - "Open Settings": "", - "Open settings.": "", - "Open Sidebar": "", - "Open terminal": "", - "Open the changelog modal after sign-in when enabled.": "", - "Open User Profile Menu": "", - "Open WebUI can use tools provided by any OpenAPI server.": "", - "Open WebUI version": "", - "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "", + "Open": "Buka", + "Open automation": "Buka otomatisasi", + "Open create menu": "Buka menu buat", + "Open file": "Buka berkas", + "Open Folder": "Buka Folder", + "Open in full screen": "Buka dalam layar penuh", + "Open in new tab": "Buka di tab baru", + "Open link": "Buka tautan", + "Open modal to configure connection": "Buka modal untuk mengonfigurasi koneksi", + "Open Model Selector": "Buka Pemilih Model", + "Open note": "Buka catatan", + "Open Settings": "Buka Pengaturan", + "Open settings.": "Buka pengaturan.", + "Open Sidebar": "Buka Bilah Sisi", + "Open terminal": "Buka terminal", + "Open the changelog modal after sign-in when enabled.": "Buka modal log perubahan setelah masuk jika diaktifkan.", + "Open User Profile Menu": "Buka Menu Profil Pengguna", + "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI dapat menggunakan alat yang disediakan oleh server OpenAPI mana pun.", + "Open WebUI version": "Versi Open WebUI", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Versi Open WebUI (v{{OPEN_WEBUI_VERSION}}) lebih rendah dari versi yang diperlukan (v{{REQUIRED_VERSION}})", "OpenAI": "OpenAI", "OpenAI API Key is required.": "Diperlukan Kunci API OpenAI.", - "OpenAI API settings updated": "", + "OpenAI API settings updated": "Pengaturan API OpenAI diperbarui", "OpenAI URL/Key required.": "Diperlukan URL/Kunci OpenAI.", - "OpenAPI Spec": "", - "openapi.json URL or Path": "", - "optional": "", - "Optional": "", + "OpenAPI Spec": "Spesifikasi OpenAPI", + "openapi.json URL or Path": "URL atau Jalur openapi.json", + "optional": "opsional", + "Optional": "Opsional", "or": "atau", - "Orchestrator": "", - "Ordered List": "", - "Original": "", + "Orchestrator": "Orkestrator", + "Ordered List": "Daftar Berurutan", + "Original": "Asli", "Other": "Lainnya", - "out of": "", - "Output": "", - "OUTPUT": "", - "Overcome procrastination": "", - "Overview": "", - "PaddleOCR-vl": "", - "PaddleOCR-vl API URL required.": "", - "page": "", - "Page": "", - "Parameters": "", - "Parent message not found": "", - "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "", - "Passthrough params": "", + "out of": "dari", + "Output": "Keluaran", + "OUTPUT": "KELUARAN", + "Overcome procrastination": "Atasi prokrastinasi", + "Overview": "Ikhtisar", + "PaddleOCR-vl": "PaddleOCR-vl", + "PaddleOCR-vl API URL required.": "URL API PaddleOCR-vl diperlukan.", + "page": "halaman", + "Page": "Halaman", + "Parameters": "Parameter", + "Parent message not found": "Pesan induk tidak ditemukan", + "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "Berpartisipasilah dalam papan peringkat dan evaluasi komunitas! Menyinkronkan statistik penggunaan agregat membantu mendorong penelitian dan penyempurnaan pada Open WebUI. Privasi Anda adalah yang utama: tidak ada konten pesan yang dibagikan.", + "Passthrough params": "Parameter passthrough", "Password": "Kata sandi", - "Password updated. Please sign in again.": "", - "Passwords do not match.": "", - "Path": "", - "Path copied": "", - "Paused": "", + "Password updated. Please sign in again.": "Kata sandi diperbarui. Silakan masuk kembali.", + "Passwords do not match.": "Kata sandi tidak cocok.", + "Path": "Jalur", + "Path copied": "Jalur disalin", + "Paused": "Dijeda", "PDF document (.pdf)": "Dokumen PDF (.pdf)", - "pdf, docx, pptx, xlsx": "", - "Peak tokens": "", + "pdf, docx, pptx, xlsx": "pdf, docx, pptx, xlsx", + "Peak tokens": "Token puncak", "pending": "tertunda", - "Pending": "", - "Per automation": "", - "Per chat": "", + "Pending": "Tertunda", + "Per automation": "Per otomatisasi", + "Per chat": "Per obrolan", "Permission denied when accessing media devices": "Izin ditolak saat mengakses perangkat media", "Permission denied when accessing microphone": "Izin ditolak saat mengakses mikrofon", "Permission denied when accessing microphone: {{error}}": "Izin ditolak saat mengakses mikrofon: {{error}}", - "Permissions": "", - "Permissions reset to defaults": "", - "Persistent": "", - "Personal": "", - "Pin": "", - "Pin to Sidebar": "", - "Pinned": "", - "Pinned Messages": "", - "Pipe": "", + "Permissions": "Izin", + "Permissions reset to defaults": "Izin diatur ulang ke default", + "Persistent": "Persisten", + "Personal": "Pribadi", + "Pin": "Sematkan", + "Pin to Sidebar": "Sematkan ke Bilah Samping", + "Pinned": "Disematkan", + "Pinned Messages": "Pesan Tersemat", + "Pipe": "Pipe", "Pipeline deleted successfully": "Pipeline berhasil dihapus", "Pipeline downloaded successfully": "Saluran pipa berhasil diunduh", - "Pipelines are a plugin system with arbitrary code execution.": "", + "Pipelines are a plugin system with arbitrary code execution.": "Pipelines adalah sistem plugin dengan eksekusi kode arbitrer.", "Pipelines Not Detected": "Saluran Pipa Tidak Terdeteksi", - "Plain text (.md)": "", + "Plain text (.md)": "Teks biasa (.md)", "Plain text (.txt)": "Teks biasa (.txt)", "Playground": "Taman bermain", - "Playground Chat": "", - "Please carefully review the following warnings:": "", - "Please connect all required integrations before sending a message": "", - "Please do not close the settings page while loading the model.": "", - "Please enter a message or attach a file.": "", - "Please enter a prompt": "", - "Please enter a valid ID": "", - "Please enter a valid JSON spec": "", - "Please enter a valid path": "", - "Please enter a valid URL": "", - "Please enter a valid URL.": "", - "Please enter Client ID and Client Secret": "", - "Please fill in all fields.": "", - "Please register the OAuth client": "", - "Please save the connection before authorizing OAuth": "", - "Please save the connection to persist the OAuth client information and do not change the ID": "", - "Please select a model.": "", - "Please select a reason": "", - "Please select a valid JSON file": "", - "Please select at least one user for Direct Message channel.": "", - "Please wait until all files are uploaded.": "", - "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "", - "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "", - "Policy ID": "", - "Policy ID is required": "", - "Policy is still loading": "", - "Ports": "", + "Playground Chat": "Obrolan Playground", + "Please carefully review the following warnings:": "Harap tinjau peringatan berikut secara saksama:", + "Please connect all required integrations before sending a message": "Harap hubungkan semua integrasi yang diperlukan sebelum mengirim pesan", + "Please do not close the settings page while loading the model.": "Harap jangan tutup halaman pengaturan saat memuat model.", + "Please enter a message or attach a file.": "Harap masukkan pesan atau lampirkan file.", + "Please enter a prompt": "Harap masukkan prompt", + "Please enter a valid ID": "Harap masukkan ID yang valid", + "Please enter a valid JSON spec": "Harap masukkan spesifikasi JSON yang valid", + "Please enter a valid path": "Harap masukkan jalur yang valid", + "Please enter a valid URL": "Harap masukkan URL yang valid", + "Please enter a valid URL.": "Harap masukkan URL yang valid.", + "Please enter Client ID and Client Secret": "Harap masukkan Client ID dan Client Secret", + "Please fill in all fields.": "Harap isi semua kolom.", + "Please register the OAuth client": "Harap daftarkan klien OAuth", + "Please save the connection before authorizing OAuth": "Harap simpan koneksi sebelum mengotorisasi OAuth", + "Please save the connection to persist the OAuth client information and do not change the ID": "Silakan simpan koneksi untuk mempertahankan informasi klien OAuth dan jangan ubah ID", + "Please select a model.": "Silakan pilih model.", + "Please select a reason": "Silakan pilih alasan", + "Please select a valid JSON file": "Silakan pilih berkas JSON yang valid", + "Please select at least one user for Direct Message channel.": "Silakan pilih setidaknya satu pengguna untuk saluran Pesan Langsung.", + "Please wait until all files are uploaded.": "Harap tunggu hingga semua berkas terunggah.", + "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP, atau GIF. Hingga 5 MiB dan 25 megapiksel.", + "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Perubahan kebijakan berlaku untuk terminal yang baru diprovisikan. Muat ulang terminal yang cocok untuk menerapkannya ke terminal yang ada.", + "Policy ID": "ID Kebijakan", + "Policy ID is required": "ID Kebijakan wajib diisi", + "Policy is still loading": "Kebijakan masih dimuat", + "Ports": "Port", "Positive attitude": "Sikap positif", - "Prefer not to say": "", - "Preferences": "", - "Prefix ID": "", - "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", - "Preparing {{NAME}}...": "", - "Preparing download...": "", - "Press keys...": "", - "Prevent File Creation": "", - "Preview": "", - "Preview Access": "", - "Preview failed": "", - "Previous": "", + "Prefer not to say": "Memilih untuk tidak menyebutkan", + "Preferences": "Preferensi", + "Prefix ID": "Prefiks ID", + "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefiks ID digunakan untuk menghindari konflik dengan koneksi lain dengan menambahkan awalan ke ID model - biarkan kosong untuk menonaktifkan", + "Preparing {{NAME}}...": "Menyiapkan {{NAME}}...", + "Preparing download...": "Menyiapkan unduhan...", + "Press keys...": "Tekan tombol...", + "Prevent File Creation": "Cegah Pembuatan Berkas", + "Preview": "Pratinjau", + "Preview Access": "Akses Pratinjau", + "Preview failed": "Pratinjau gagal", + "Previous": "Sebelumnya", "Previous 30 days": "30 hari sebelumnya", "Previous 7 days": "7 hari sebelumnya", - "Previous message": "", - "Previous month": "", - "Previous page": "", - "Previous version": "", - "Private": "", - "Private conversation between selected users": "", - "Production version updated": "", + "Previous message": "Pesan sebelumnya", + "Previous month": "Bulan sebelumnya", + "Previous page": "Halaman sebelumnya", + "Previous version": "Versi sebelumnya", + "Private": "Pribadi", + "Private conversation between selected users": "Percakapan pribadi antara pengguna yang dipilih", + "Production version updated": "Versi produksi diperbarui", "Profile": "Profil", - "Prompt": "", + "Prompt": "Prompt", "Prompt Content": "Konten yang Diminta", - "Prompt created successfully": "", - "Prompt Menu": "", - "Prompt Name": "", - "Prompt updated successfully": "", + "Prompt created successfully": "Prompt berhasil dibuat", + "Prompt Menu": "Menu Prompt", + "Prompt Name": "Nama Prompt", + "Prompt updated successfully": "Prompt berhasil diperbarui", "Prompts": "Prompt", - "Prompts Access": "", - "Prompts Public Sharing": "", - "Prompts Sharing": "", - "Provider": "", - "Public": "", + "Prompts Access": "Akses Prompt", + "Prompts Public Sharing": "Berbagi Publik Prompt", + "Prompts Sharing": "Berbagi Prompt", + "Provider": "Penyedia", + "Public": "Publik", "Pull \"{{searchValue}}\" from Ollama.com": "Tarik \"{{searchValue}}\" dari Ollama.com", "Pull a model from Ollama.com": "Tarik model dari Ollama.com", - "Pull Model": "", - "Pyodide file browser": "", - "Quality": "", - "Query failed": "", - "Querying": "", - "Queued messages": "", - "Quick Actions": "", - "Ran {{COUNT}} analyses": "", - "Ran {{COUNT}} analysis": "", - "Rate {{rating}} out of 10": "", - "Rating": "", - "Read": "", + "Pull Model": "Tarik Model", + "Pyodide file browser": "Peramban berkas Pyodide", + "Quality": "Kualitas", + "Query failed": "Kueri gagal", + "Querying": "Mengueri", + "Queued messages": "Pesan dalam antrean", + "Quick Actions": "Tindakan Cepat", + "Ran {{COUNT}} analyses": "Menjalankan {{COUNT}} analisis", + "Ran {{COUNT}} analysis": "Menjalankan {{COUNT}} analisis", + "Rate {{rating}} out of 10": "Beri nilai {{rating}} dari 10", + "Rating": "Penilaian", + "Read": "Baca", "Read Aloud": "Baca dengan Keras", - "Read more →": "", - "Read only": "", - "Read Only": "", - "Read the docs": "", - "Read-only": "", - "Read-Only Access": "", - "Reason": "", - "Reasoning text...": "", - "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "", - "Receives matching events across the instance, including system/config events and events associated with any user.": "", - "Receives matching events that are not associated with a user.": "", - "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "", - "Recently Used": "", - "Recommended": "", - "Reconnected": "", - "Record": "", + "Read more →": "Baca selengkapnya →", + "Read only": "Hanya baca", + "Read Only": "Hanya Baca", + "Read the docs": "Baca dokumentasi", + "Read-only": "Hanya-baca", + "Read-Only Access": "Akses Hanya-Baca", + "Reason": "Alasan", + "Reasoning text...": "Teks penalaran...", + "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "Bangun ulang berkas pengetahuan, pencarian pengetahuan, dan vektor memori menggunakan model embedding saat ini.", + "Receives matching events across the instance, including system/config events and events associated with any user.": "Menerima peristiwa yang cocok di seluruh instans, termasuk peristiwa sistem/konfigurasi dan peristiwa yang terkait dengan pengguna mana pun.", + "Receives matching events that are not associated with a user.": "Menerima peristiwa yang cocok yang tidak terkait dengan pengguna.", + "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "Menerima peristiwa terkait pengguna yang cocok hanya jika aktor, subjek pengguna, atau data pengguna cocok dengan pengguna ini atau anggota grup saat ini. Peristiwa sistem/konfigurasi tidak dikirim.", + "Recently Used": "Baru Saja Digunakan", + "Recommended": "Direkomendasikan", + "Reconnected": "Terhubung kembali", + "Record": "Rekam", "Record voice": "Rekam suara", "Redirecting you to Open WebUI Community": "Mengarahkan Anda ke Komunitas OpenWebUI", - "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.": "", - "Reference Chats": "", - "Refresh": "", + "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.": "Mengurangi kemungkinan menghasilkan teks yang tidak masuk akal. Nilai yang lebih tinggi (misalnya 100) akan memberikan jawaban yang lebih beragam, sedangkan nilai yang lebih rendah (misalnya 10) akan lebih konservatif.", + "Reference Chats": "Obrolan Referensi", + "Refresh": "Segarkan", "Refresh requested: {{count}} terminal(s)_one": "Permintaan muat ulang: {{count}} terminal", - "Refresh requested: {{count}} terminal(s)_other": "", - "Refresh Terminals": "", - "Refreshing...": "", + "Refresh requested: {{count}} terminal(s)_other": "Penyegaran diminta: {{count}} terminal", + "Refresh Terminals": "Segarkan Terminal", + "Refreshing...": "Menyegarkan...", "Refused when it shouldn't have": "Menolak ketika seharusnya tidak", "Regenerate": "Regenerasi", - "Regenerate Response": "", - "Region and language of the search results, e.g. en-us.": "", - "Register Again": "", - "Register Client": "", - "Registered": "", - "registered to": "", - "Registration failed": "", - "Registration successful": "", - "Reindex Embedding Data": "", + "Regenerate Response": "Buat Ulang Tanggapan", + "Region and language of the search results, e.g. en-us.": "Wilayah dan bahasa hasil pencarian, mis. en-us.", + "Register Again": "Daftar Lagi", + "Register Client": "Daftarkan Klien", + "Registered": "Terdaftar", + "registered to": "terdaftar untuk", + "Registration failed": "Pendaftaran gagal", + "Registration successful": "Pendaftaran berhasil", + "Reindex Embedding Data": "Indeks Ulang Data Embedding", "Release Notes": "Catatan Rilis", - "Releases": "", - "Relevance": "", - "Remember Dismissal": "", - "Reminder": "", + "Releases": "Rilis", + "Relevance": "Relevansi", + "Remember Dismissal": "Ingat Pengabaian", + "Reminder": "Pengingat", "Remove": "Hapus", - "Remove {{MODELID}} from list.": "", - "Remove action": "", - "Remove file": "", - "Remove File": "", - "Remove from favorites": "", - "Remove image": "", - "Remove Pinned Model": "", - "Remove prompt suggestion": "", - "Remove Selected Model": "", + "Remove {{MODELID}} from list.": "Hapus {{MODELID}} dari daftar.", + "Remove action": "Hapus tindakan", + "Remove file": "Hapus berkas", + "Remove File": "Hapus Berkas", + "Remove from favorites": "Hapus dari favorit", + "Remove image": "Hapus gambar", + "Remove Pinned Model": "Hapus Model yang Disematkan", + "Remove prompt suggestion": "Hapus saran prompt", + "Remove Selected Model": "Hapus Model yang Dipilih", "Removing {{count}} stale files..._one": "Menghapus {{count}} berkas usang...", - "Removing {{count}} stale files..._other": "", + "Removing {{count}} stale files..._other": "Menghapus {{count}} berkas usang...", "Rename": "Ganti nama", - "Renamed to {{name}}": "", - "Reorder": "", - "Repeat": "", - "Replace": "", - "Reply": "", - "Reply in Thread": "", - "Reply to thread...": "", - "Replying to {{NAME}}": "", - "required": "", - "Research Knowledge": "", + "Renamed to {{name}}": "Dinamai ulang menjadi {{name}}", + "Reorder": "Ubah Urutan", + "Repeat": "Ulangi", + "Replace": "Ganti", + "Reply": "Balas", + "Reply in Thread": "Balas di Utas", + "Reply to thread...": "Balas ke utas...", + "Replying to {{NAME}}": "Membalas {{NAME}}", + "required": "wajib", + "Research Knowledge": "Riset Pengetahuan", "Reset": "Atur Ulang", - "Reset All Models": "", - "Reset all permissions to their initial configuration values": "", - "Reset Defaults": "", - "Reset group permissions to match the current default user permissions": "", - "Reset knowledge base?": "", - "Reset persisted files": "", - "Reset to Defaults": "", - "Reset view": "", - "Reset zoom": "", - "Resize panel": "", - "Response": "", + "Reset All Models": "Atur Ulang Semua Model", + "Reset all permissions to their initial configuration values": "Atur ulang semua izin ke nilai konfigurasi awal", + "Reset Defaults": "Atur Ulang Default", + "Reset group permissions to match the current default user permissions": "Atur ulang izin grup agar sesuai dengan izin pengguna default saat ini", + "Reset knowledge base?": "Atur ulang basis pengetahuan?", + "Reset persisted files": "Atur ulang berkas tersimpan", + "Reset to Defaults": "Atur Ulang ke Default", + "Reset view": "Atur ulang tampilan", + "Reset zoom": "Atur ulang perbesaran", + "Resize panel": "Ubah ukuran panel", + "Response": "Respons", "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notifikasi respons tidak dapat diaktifkan karena izin situs web telah ditolak. Silakan kunjungi pengaturan browser Anda untuk memberikan akses yang diperlukan.", - "Responses": "", - "Restart": "", - "Result": "", + "Responses": "Respons", + "Restart": "Mulai Ulang", + "Result": "Hasil", "RESULT": "HASIL", - "Retrieved {{count}} sources": "", + "Retrieved {{count}} sources": "Mengambil {{count}} sumber", "Retrieved {{count}} sources_one": "Mengambil {{count}} sumber", - "Retrieved {{count}} sources_other": "", - "Retrieved 1 source": "", - "Retry": "", - "Rewrite the selected text.": "", + "Retrieved {{count}} sources_other": "Mengambil {{count}} sumber", + "Retrieved 1 source": "Mengambil 1 sumber", + "Retry": "Coba Lagi", + "Rewrite the selected text.": "Tulis ulang teks yang dipilih.", "Role": "Peran", "RTL": "RTL", - "Run": "", - "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "", - "Run All": "", - "Run cell (⌘+Enter)": "", - "Run now": "", - "Run Now": "", - "Run tools without asking for approval.": "", + "Run": "Jalankan", + "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "Jalankan AI sesuai keinginan Anda. Hubungkan model apa pun, perluas dengan kode, dan lindungi hal penting tanpa kompromi. Model Anda, data Anda, mesin Anda, di mana pun Anda membukanya.", + "Run All": "Jalankan Semua", + "Run cell (⌘+Enter)": "Jalankan sel (⌘+Enter)", + "Run now": "Jalankan sekarang", + "Run Now": "Jalankan Sekarang", + "Run tools without asking for approval.": "Jalankan alat tanpa meminta persetujuan.", "Running": "Berjalan", - "Running Open WebUI for a team?": "", + "Running Open WebUI for a team?": "Menjalankan Open WebUI untuk tim?", "Running...": "Berjalan...", - "runs": "", - "Runs": "", - "Sa_day_of_week": "", + "runs": "eksekusi", + "Runs": "Eksekusi", + "Sa_day_of_week": "Sab", "Save": "Simpan", "Save & Create": "Simpan & Buat", "Save & Update": "Simpan & Perbarui", - "Save As Copy": "", - "Save Chat": "", - "Saved": "", - "Saving...": "", - "Schedule": "", - "Scheduled time must be in the future": "", - "Screen Share": "", - "Scroll to bottom": "", - "Scroll to Top": "", + "Save As Copy": "Simpan sebagai Salinan", + "Save Chat": "Simpan Obrolan", + "Saved": "Tersimpan", + "Saving...": "Menyimpan...", + "Schedule": "Jadwal", + "Scheduled time must be in the future": "Waktu terjadwal harus di masa mendatang", + "Screen Share": "Bagikan Layar", + "Scroll to bottom": "Gulir ke bawah", + "Scroll to Top": "Gulir ke Atas", "Search": "Cari", "Search a model": "Mencari model", - "Search actions": "", - "Search all emojis": "", - "Search Automations": "", - "Search channels": "", + "Search actions": "Cari tindakan", + "Search all emojis": "Cari semua emoji", + "Search Automations": "Cari Otomatisasi", + "Search channels": "Cari saluran", "Search Chats": "Cari Obrolan", - "Search Collection": "", - "Search Files": "", - "Search files and contents": "", - "Search filters": "", - "Search folders": "", - "search for archived chats": "", - "search for folders": "", - "search for pinned chats": "", - "search for shared chats": "", - "search for tags": "", + "Search Collection": "Cari Koleksi", + "Search Files": "Cari Berkas", + "Search files and contents": "Cari berkas dan konten", + "Search filters": "Cari filter", + "Search folders": "Cari folder", + "search for archived chats": "cari obrolan terarsip", + "search for folders": "cari folder", + "search for pinned chats": "cari obrolan tersemat", + "search for shared chats": "cari obrolan yang dibagikan", + "search for tags": "cari tag", "Search Functions": "Fungsi Pencarian", - "Search Groups": "", - "Search In Models": "", - "Search Knowledge": "", - "Search Memories": "", + "Search Groups": "Cari Grup", + "Search In Models": "Cari di Model", + "Search Knowledge": "Cari Pengetahuan", + "Search Memories": "Cari Memori", "Search Models": "Cari Model", - "Search Notes": "", - "Search options": "", - "Search or add pattern": "", + "Search Notes": "Cari Catatan", + "Search options": "Cari opsi", + "Search or add pattern": "Cari atau tambah pola", "Search Prompts": "Perintah Pencarian", - "Search skills": "", - "Search Skills": "", - "Search the internet": "", - "Search tools": "", + "Search skills": "Cari keterampilan", + "Search Skills": "Cari Keterampilan", + "Search the internet": "Cari di internet", + "Search tools": "Cari alat", "Search Tools": "Alat Pencarian", - "Search translations": "", - "Search users or groups": "", - "Searched {{count}} sites": "", - "Searching": "", + "Search translations": "Cari terjemahan", + "Search users or groups": "Cari pengguna atau grup", + "Searched {{count}} sites": "Menelusuri {{count}} situs", + "Searching": "Mencari", "Searching \"{{searchQuery}}\"": "Mencari \"{{searchQuery}}\"", - "Searching Knowledge for \"{{searchQuery}}\"": "", - "Searching the web": "", + "Searching Knowledge for \"{{searchQuery}}\"": "Mencari Pengetahuan untuk \"{{searchQuery}}\"", + "Searching the web": "Mencari di web", "See readme.md for instructions": "Lihat readme.md untuk instruksi", - "Select": "", - "Select {{modelName}} model": "", - "Select {{name}}": "", - "Select a base model (e.g. llama3, gpt-4o)": "", - "Select a conversation to preview": "", + "Select": "Pilih", + "Select {{modelName}} model": "Pilih model {{modelName}}", + "Select {{name}}": "Pilih {{name}}", + "Select a base model (e.g. llama3, gpt-4o)": "Pilih model dasar (mis. llama3, gpt-4o)", + "Select a conversation to preview": "Pilih percakapan untuk pratinjau", "Select a engine": "Pilih mesin", "Select a function": "Memilih fungsi", - "Select a group": "", - "Select a language": "", - "Select a mode": "", + "Select a group": "Pilih grup", + "Select a language": "Pilih bahasa", + "Select a mode": "Pilih mode", "Select a model": "Pilih model", - "Select a model (optional)": "", + "Select a model (optional)": "Pilih model (opsional)", "Select a pipeline": "Pilih saluran pipa", "Select a pipeline url": "Pilih url saluran pipa", - "Select a reranking model engine": "", - "Select a role": "", - "Select a theme": "", + "Select a reranking model engine": "Pilih mesin model reranking", + "Select a role": "Pilih peran", + "Select a theme": "Pilih tema", "Select a tool": "Pilih alat", - "Select a voice": "", - "Select Action": "", - "Select All": "", - "Select an auth method": "", - "Select an embedding model engine": "", - "Select an engine": "", - "Select an instance": "", - "Select an Ollama instance": "", - "Select an option": "", - "Select an output format": "", - "Select dtype": "", - "Select Engine": "", - "Select Filter": "", - "Select how to split message text for TTS requests": "", - "Select Knowledge": "", - "Select Method": "", - "Select model": "", + "Select a voice": "Pilih suara", + "Select Action": "Pilih Tindakan", + "Select All": "Pilih Semua", + "Select an auth method": "Pilih metode autentikasi", + "Select an embedding model engine": "Pilih mesin model embedding", + "Select an engine": "Pilih mesin", + "Select an instance": "Pilih instans", + "Select an Ollama instance": "Pilih instans Ollama", + "Select an option": "Pilih opsi", + "Select an output format": "Pilih format keluaran", + "Select dtype": "Pilih dtype", + "Select Engine": "Pilih Mesin", + "Select Filter": "Pilih Filter", + "Select how to split message text for TTS requests": "Pilih cara memisahkan teks pesan untuk permintaan TTS", + "Select Knowledge": "Pilih Pengetahuan", + "Select Method": "Pilih Metode", + "Select model": "Pilih model", "Select only one model to call": "Pilih hanya satu model untuk dipanggil", - "Select options": "", - "Select Skill": "", - "Select Tool": "", - "Select view": "", - "Selected": "", - "Selected model: {{modelName}}": "", + "Select options": "Pilih opsi", + "Select Skill": "Pilih Keterampilan", + "Select Tool": "Pilih Alat", + "Select view": "Pilih tampilan", + "Selected": "Dipilih", + "Selected model: {{modelName}}": "Model yang dipilih: {{modelName}}", "Selected model(s) do not support image inputs": "Model yang dipilih tidak mendukung input gambar", - "Selected models define incompatible Chat Variables.": "", - "semantic": "", + "Selected models define incompatible Chat Variables.": "Model yang dipilih menentukan Variabel Obrolan yang tidak kompatibel.", + "semantic": "semantik", "Send": "Kirim", "Send a Message": "Kirim Pesan", - "Send events for": "", + "Send events for": "Kirim peristiwa untuk", "Send message": "Kirim pesan", - "Send now": "", - "Send Test": "", + "Send now": "Kirim sekarang", + "Send Test": "Kirim Uji Coba", "September": "September", - "Server connection failed": "", + "Server connection failed": "Koneksi server gagal", "Server connection verified": "Koneksi server diverifikasi", - "Service Account": "", - "Services": "", - "Session": "", - "Session expired. Please sign in again.": "", - "Set a local zoom level for the app interface.": "", + "Service Account": "Akun Layanan", + "Services": "Layanan", + "Session": "Sesi", + "Session expired. Please sign in again.": "Sesi telah kedaluwarsa. Silakan masuk kembali.", + "Set a local zoom level for the app interface.": "Atur tingkat perbesaran lokal untuk antarmuka aplikasi.", "Set as default": "Ditetapkan sebagai default", - "Set as Pinned Model": "", - "Set as Production": "", - "Set as Selected Model": "", - "Set embedding model": "", + "Set as Pinned Model": "Tetapkan sebagai Model yang Disematkan", + "Set as Production": "Tetapkan sebagai Produksi", + "Set as Selected Model": "Tetapkan sebagai Model Terpilih", + "Set embedding model": "Atur model embedding", "Set embedding model (e.g. {{model}})": "Tetapkan model penyematan (mis. {{model}})", "Set reranking model (e.g. {{model}})": "Tetapkan model pemeringkatan ulang (mis. {{model}})", - "Set system-wide interface defaults for every account. Personal settings override these defaults.": "", - "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 whisper model": "", - "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 size of the context window used to generate the next token.": "", - "Setting": "", + "Set system-wide interface defaults for every account. Personal settings override these defaults.": "Atur default antarmuka seluruh sistem untuk setiap akun. Pengaturan pribadi akan menimpa default ini.", + "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.": "Atur jumlah layer yang akan dialihkan ke GPU. Meningkatkan nilai ini dapat meningkatkan performa secara signifikan untuk model yang dioptimalkan untuk akselerasi GPU, tetapi juga dapat menghabiskan lebih banyak daya dan sumber daya GPU.", + "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.": "Atur jumlah worker thread yang digunakan untuk komputasi. Opsi ini menentukan berapa banyak thread yang digunakan untuk memproses permintaan masuk secara bersamaan. Meningkatkan nilai ini dapat meningkatkan performa pada beban kerja konkurensi tinggi, tetapi juga dapat menghabiskan lebih banyak sumber daya CPU.", + "Set whisper model": "Atur model whisper", + "Set your status": "Atur status Anda", + "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.": "Menetapkan bias tetap terhadap token yang telah muncul setidaknya sekali. Nilai yang lebih tinggi (misalnya, 1,5) akan memberikan penalti pengulangan yang lebih kuat, sedangkan nilai yang lebih rendah (misalnya, 0,9) akan lebih longgar. Pada nilai 0, fitur ini dinonaktifkan.", + "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.": "Menetapkan bias berskala terhadap token untuk memberikan penalti pada pengulangan berdasarkan frekuensi kemunculannya. Nilai yang lebih tinggi (misalnya, 1,5) akan memberikan penalti pengulangan yang lebih kuat, sedangkan nilai yang lebih rendah (misalnya, 0,9) akan lebih longgar. Pada nilai 0, fitur ini dinonaktifkan.", + "Sets how far back for the model to look back to prevent repetition.": "Menetapkan seberapa jauh model melihat ke belakang untuk mencegah pengulangan.", + "Sets the size of the context window used to generate the next token.": "Menetapkan ukuran jendela konteks yang digunakan untuk menghasilkan token berikutnya.", + "Setting": "Pengaturan", "Settings": "Pengaturan", - "settings configured": "", - "Settings Permissions": "", + "settings configured": "pengaturan dikonfigurasi", + "Settings Permissions": "Izin Pengaturan", "Settings saved successfully!": "Pengaturan berhasil disimpan!", - "Settings: open settings.": "", - "settings.admin.analytics.title": "", - "settings.admin.audio.additionalParameters.description": "", - "settings.admin.audio.additionalParameters.label": "", - "settings.admin.audio.languageLocales.label": "", - "settings.admin.audio.maxSpeakers.label": "", - "settings.admin.audio.mistralSttModel.description": "", + "Settings: open settings.": "Pengaturan: buka pengaturan.", + "settings.admin.analytics.title": "Analitik", + "settings.admin.audio.additionalParameters.description": "Masukkan parameter permintaan TTS tambahan yang kompatibel dengan OpenAI dalam bentuk JSON.", + "settings.admin.audio.additionalParameters.label": "Parameter Tambahan", + "settings.admin.audio.languageLocales.label": "Lokal Bahasa", + "settings.admin.audio.maxSpeakers.label": "Maksimal Pembicara", + "settings.admin.audio.mistralSttModel.description": "Biarkan kosong untuk menggunakan model default (voxtral-mini-latest).", "settings.admin.audio.mistralSttModel.label": "Model STT", - "settings.admin.audio.outputFormat.label": "", - "settings.admin.audio.requestFormat.description": "", - "settings.admin.audio.requestFormat.label": "", - "settings.admin.audio.responseSplitting.description": "", - "settings.admin.audio.responseSplitting.label": "", - "settings.admin.audio.sections.speechToText.title": "", - "settings.admin.audio.sections.textToSpeech.title": "", - "settings.admin.audio.speechToTextEngine.description": "", + "settings.admin.audio.outputFormat.label": "Format output", + "settings.admin.audio.requestFormat.description": "Pilih bagaimana audio dikirim ke endpoint yang kompatibel dengan OpenAI.", + "settings.admin.audio.requestFormat.label": "Format Permintaan", + "settings.admin.audio.responseSplitting.description": "Atur cara pemisahan teks pesan untuk permintaan TTS. 'Tanda baca' memisahkan menjadi kalimat, 'paragraf' memisahkan menjadi paragraf, dan 'tidak ada' mempertahankan pesan sebagai satu teks utuh.", + "settings.admin.audio.responseSplitting.label": "Pemisahan Respons", + "settings.admin.audio.sections.speechToText.title": "Ucapan-ke-Teks", + "settings.admin.audio.sections.textToSpeech.title": "Teks-ke-Ucapan", + "settings.admin.audio.speechToTextEngine.description": "Pilih penyedia transkripsi yang digunakan untuk input audio.", "settings.admin.audio.speechToTextEngine.label": "Mesin Pengenal Ucapan ke Teks", "settings.admin.audio.sttAzureApiKey.label": "Kunci API", - "settings.admin.audio.sttAzureBaseUrl.label": "", - "settings.admin.audio.sttAzureRegion.label": "", + "settings.admin.audio.sttAzureBaseUrl.label": "URL Endpoint", + "settings.admin.audio.sttAzureRegion.label": "Wilayah Azure", "settings.admin.audio.sttDeepgramApiKey.label": "Kunci API", "settings.admin.audio.sttMistralApiBaseUrl.label": "URL Dasar API", "settings.admin.audio.sttMistralApiKey.label": "Kunci API", - "settings.admin.audio.sttModel.description": "", + "settings.admin.audio.sttModel.description": "Biarkan kolom model kosong untuk menggunakan model bawaan.", "settings.admin.audio.sttModel.label": "Model STT", "settings.admin.audio.sttOpenaiApiBaseUrl.label": "URL Dasar API", "settings.admin.audio.sttOpenaiApiKey.label": "Kunci API", - "settings.admin.audio.sttWhisperModel.description": "", + "settings.admin.audio.sttWhisperModel.description": "Open WebUI menggunakan faster-whisper secara internal.", "settings.admin.audio.sttWhisperModel.label": "Model STT", - "settings.admin.audio.supportedMimeTypes.description": "", - "settings.admin.audio.supportedMimeTypes.label": "", - "settings.admin.audio.textToSpeechEngine.description": "", + "settings.admin.audio.supportedMimeTypes.description": "Tipe MIME audio atau video yang dipisahkan dengan koma yang diterima untuk diunggah.", + "settings.admin.audio.supportedMimeTypes.label": "Tipe MIME yang Didukung", + "settings.admin.audio.textToSpeechEngine.description": "Pilih penyedia ucapan yang digunakan untuk output audio asisten.", "settings.admin.audio.textToSpeechEngine.label": "Mesin Teks-ke-Suara", "settings.admin.audio.title": "Audio", "settings.admin.audio.ttsApiKey.label": "Kunci API", - "settings.admin.audio.ttsAzureSpeechBaseUrl.label": "", - "settings.admin.audio.ttsAzureSpeechRegion.label": "", + "settings.admin.audio.ttsAzureSpeechBaseUrl.label": "URL Endpoint", + "settings.admin.audio.ttsAzureSpeechRegion.label": "Wilayah Azure", "settings.admin.audio.ttsMistralApiBaseUrl.label": "URL Dasar API", "settings.admin.audio.ttsMistralApiKey.label": "Kunci API", - "settings.admin.audio.ttsModel.description": "", + "settings.admin.audio.ttsModel.description": "Open WebUI menggunakan SpeechT5 dan embedding penutur CMU Arctic.", "settings.admin.audio.ttsModel.label": "Model TTS", "settings.admin.audio.ttsOpenaiApiBaseUrl.label": "URL Dasar API", "settings.admin.audio.ttsOpenaiApiKey.label": "Kunci API", "settings.admin.audio.ttsVoice.label": "Suara TTS", - "settings.admin.audio.updateModel.label": "", - "settings.admin.audio.useChatCompletionsApi.description": "", - "settings.admin.audio.useChatCompletionsApi.label": "", - "settings.admin.authentication.adminContactEmail.description": "", - "settings.admin.authentication.adminContactEmail.label": "", - "settings.admin.authentication.adminDetails.description": "", - "settings.admin.authentication.adminDetails.label": "", - "settings.admin.authentication.adminRoles.description": "", - "settings.admin.authentication.adminRoles.label": "", - "settings.admin.authentication.allowedDomains.description": "", - "settings.admin.authentication.allowedDomains.label": "", - "settings.admin.authentication.allowedEndpoints.description": "", - "settings.admin.authentication.allowedEndpoints.label": "", - "settings.admin.authentication.allowedRoles.description": "", - "settings.admin.authentication.allowedRoles.label": "", - "settings.admin.authentication.apiKeyEndpointRestrictions.description": "", - "settings.admin.authentication.apiKeyEndpointRestrictions.label": "", - "settings.admin.authentication.apiKeys.description": "", - "settings.admin.authentication.apiKeys.label": "", - "settings.admin.authentication.applicationDn.description": "", - "settings.admin.authentication.applicationDn.label": "", - "settings.admin.authentication.applicationDnPassword.description": "", - "settings.admin.authentication.applicationDnPassword.label": "", - "settings.admin.authentication.attributeForMail.description": "", - "settings.admin.authentication.attributeForMail.label": "", - "settings.admin.authentication.attributeForUsername.description": "", - "settings.admin.authentication.attributeForUsername.label": "", - "settings.admin.authentication.autoRedirect.description": "", - "settings.admin.authentication.autoRedirect.label": "", - "settings.admin.authentication.blockedGroups.description": "", - "settings.admin.authentication.blockedGroups.label": "", - "settings.admin.authentication.certificatePath.description": "", - "settings.admin.authentication.certificatePath.label": "", - "settings.admin.authentication.ciphers.description": "", - "settings.admin.authentication.ciphers.label": "", - "settings.admin.authentication.clientId.description": "", - "settings.admin.authentication.clientId.label": "", - "settings.admin.authentication.clientSecret.description": "", - "settings.admin.authentication.clientSecret.label": "", - "settings.admin.authentication.defaultGroup.description": "", - "settings.admin.authentication.defaultGroup.label": "", - "settings.admin.authentication.defaultUserRole.description": "", + "settings.admin.audio.updateModel.label": "Perbarui model", + "settings.admin.audio.useChatCompletionsApi.description": "Gunakan endpoint /v1/chat/completions alih-alih /v1/audio/transcriptions untuk akurasi yang berpotensi lebih baik.", + "settings.admin.audio.useChatCompletionsApi.label": "Gunakan API Chat Completions", + "settings.admin.authentication.adminContactEmail.description": "Email yang ditampilkan pada overlay akun yang tertunda.", + "settings.admin.authentication.adminContactEmail.label": "Email Kontak Admin", + "settings.admin.authentication.adminDetails.description": "Tampilkan detail kontak admin saat akun sedang menunggu persetujuan.", + "settings.admin.authentication.adminDetails.label": "Detail Admin", + "settings.admin.authentication.adminRoles.description": "Peran penyedia yang memberikan akses admin.", + "settings.admin.authentication.adminRoles.label": "Peran Admin", + "settings.admin.authentication.allowedDomains.description": "Domain email yang diizinkan untuk masuk dengan OAuth.", + "settings.admin.authentication.allowedDomains.label": "Domain yang Diizinkan", + "settings.admin.authentication.allowedEndpoints.description": "Jalur API yang dipisahkan dengan koma yang dapat diakses oleh kunci API.", + "settings.admin.authentication.allowedEndpoints.label": "Endpoint yang Diizinkan", + "settings.admin.authentication.allowedRoles.description": "Peran penyedia yang diizinkan untuk masuk.", + "settings.admin.authentication.allowedRoles.label": "Peran yang Diizinkan", + "settings.admin.authentication.apiKeyEndpointRestrictions.description": "Batasi kunci API hanya pada endpoint yang dikonfigurasi.", + "settings.admin.authentication.apiKeyEndpointRestrictions.label": "Pembatasan Endpoint Kunci API", + "settings.admin.authentication.apiKeys.description": "Izinkan pengguna membuat kunci API untuk akses terprogram.", + "settings.admin.authentication.apiKeys.label": "Kunci API", + "settings.admin.authentication.applicationDn.description": "Bind DN yang digunakan untuk pencarian direktori.", + "settings.admin.authentication.applicationDn.label": "DN Aplikasi", + "settings.admin.authentication.applicationDnPassword.description": "Kata sandi untuk bind DN.", + "settings.admin.authentication.applicationDnPassword.label": "Kata Sandi DN Aplikasi", + "settings.admin.authentication.attributeForMail.description": "Atribut LDAP yang digunakan sebagai alamat email pengguna.", + "settings.admin.authentication.attributeForMail.label": "Atribut untuk Email", + "settings.admin.authentication.attributeForUsername.description": "Atribut LDAP yang digunakan sebagai nama pengguna.", + "settings.admin.authentication.attributeForUsername.label": "Atribut untuk Nama Pengguna", + "settings.admin.authentication.autoRedirect.description": "Arahkan pengguna langsung ke penyedia OAuth dari halaman masuk.", + "settings.admin.authentication.autoRedirect.label": "Pengalihan Otomatis", + "settings.admin.authentication.blockedGroups.description": "Grup penyedia yang diblokir untuk masuk.", + "settings.admin.authentication.blockedGroups.label": "Grup yang Diblokir", + "settings.admin.authentication.certificatePath.description": "Berkas sertifikat yang digunakan untuk verifikasi TLS.", + "settings.admin.authentication.certificatePath.label": "Jalur Sertifikat", + "settings.admin.authentication.ciphers.description": "Daftar cipher TLS untuk koneksi LDAP.", + "settings.admin.authentication.ciphers.label": "Cipher", + "settings.admin.authentication.clientId.description": "Pengidentifikasi klien OAuth dari penyedia.", + "settings.admin.authentication.clientId.label": "ID Klien", + "settings.admin.authentication.clientSecret.description": "Rahasia klien OAuth dari penyedia.", + "settings.admin.authentication.clientSecret.label": "Rahasia Klien", + "settings.admin.authentication.defaultGroup.description": "Grup yang ditetapkan untuk pengguna baru secara bawaan.", + "settings.admin.authentication.defaultGroup.label": "Grup Bawaan", + "settings.admin.authentication.defaultUserRole.description": "Peran yang ditetapkan untuk pengguna baru saat membuat akun.", "settings.admin.authentication.defaultUserRole.label": "Peran Pengguna Default", - "settings.admin.authentication.emailClaim.description": "", - "settings.admin.authentication.emailClaim.label": "", - "settings.admin.authentication.enableGroupCreation.description": "", - "settings.admin.authentication.enableGroupCreation.label": "", - "settings.admin.authentication.enableGroupManagement.description": "", - "settings.admin.authentication.enableGroupManagement.label": "", - "settings.admin.authentication.enableOauthGroupCreation.description": "", - "settings.admin.authentication.enableOauthGroupCreation.label": "", - "settings.admin.authentication.enableOauthGroupManagement.description": "", - "settings.admin.authentication.enableOauthGroupManagement.label": "", - "settings.admin.authentication.groupAttribute.description": "", - "settings.admin.authentication.groupAttribute.label": "", - "settings.admin.authentication.groupClaim.description": "", - "settings.admin.authentication.groupClaim.label": "", - "settings.admin.authentication.host.description": "", - "settings.admin.authentication.host.label": "", - "settings.admin.authentication.jwtExpiration.description": "", + "settings.admin.authentication.emailClaim.description": "Klaim yang digunakan sebagai alamat email pengguna.", + "settings.admin.authentication.emailClaim.label": "Klaim Email", + "settings.admin.authentication.enableGroupCreation.description": "Buat grup yang belum ada dari grup LDAP.", + "settings.admin.authentication.enableGroupCreation.label": "Buat Grup Otomatis", + "settings.admin.authentication.enableGroupManagement.description": "Petakan grup LDAP ke grup Open WebUI.", + "settings.admin.authentication.enableGroupManagement.label": "Pemetaan Grup", + "settings.admin.authentication.enableOauthGroupCreation.description": "Buat grup yang belum ada dari klaim OAuth.", + "settings.admin.authentication.enableOauthGroupCreation.label": "Buat Grup Otomatis", + "settings.admin.authentication.enableOauthGroupManagement.description": "Petakan klaim OAuth ke grup Open WebUI.", + "settings.admin.authentication.enableOauthGroupManagement.label": "Pemetaan Grup", + "settings.admin.authentication.groupAttribute.description": "Atribut LDAP yang berisi keanggotaan grup pengguna.", + "settings.admin.authentication.groupAttribute.label": "Atribut Grup", + "settings.admin.authentication.groupClaim.description": "Klaim yang berisi grup penyedia.", + "settings.admin.authentication.groupClaim.label": "Klaim Grup", + "settings.admin.authentication.host.description": "Nama host atau alamat IP server LDAP.", + "settings.admin.authentication.host.label": "Host", + "settings.admin.authentication.jwtExpiration.description": "Satuan waktu yang valid: 's', 'm', 'h', 'd', 'w' atau '-1' untuk tanpa batas waktu.", "settings.admin.authentication.jwtExpiration.label": "Kedaluwarsa JWT", - "settings.admin.authentication.label.description": "", - "settings.admin.authentication.label.label": "", - "settings.admin.authentication.ldap.description": "", - "settings.admin.authentication.ldap.label": "", - "settings.admin.authentication.loginForm.description": "", - "settings.admin.authentication.loginForm.label": "", - "settings.admin.authentication.mergeAccountsByEmail.description": "", - "settings.admin.authentication.mergeAccountsByEmail.label": "", - "settings.admin.authentication.newSignUps.description": "", - "settings.admin.authentication.newSignUps.label": "", - "settings.admin.authentication.oauthOidc.description": "", - "settings.admin.authentication.oauthOidc.label": "", - "settings.admin.authentication.oauthSignup.description": "", - "settings.admin.authentication.oauthSignup.label": "", - "settings.admin.authentication.pendingUserOverlayContent.description": "", - "settings.admin.authentication.pendingUserOverlayContent.label": "", - "settings.admin.authentication.pendingUserOverlayTitle.description": "", - "settings.admin.authentication.pendingUserOverlayTitle.label": "", - "settings.admin.authentication.pictureClaim.description": "", - "settings.admin.authentication.pictureClaim.label": "", - "settings.admin.authentication.port.description": "", - "settings.admin.authentication.port.label": "", - "settings.admin.authentication.providerName.description": "", - "settings.admin.authentication.providerName.label": "", - "settings.admin.authentication.providerUrl.description": "", - "settings.admin.authentication.providerUrl.label": "", - "settings.admin.authentication.redirectUri.description": "", - "settings.admin.authentication.redirectUri.label": "", - "settings.admin.authentication.roleMapping.description": "", - "settings.admin.authentication.roleMapping.label": "", - "settings.admin.authentication.rolesClaim.description": "", - "settings.admin.authentication.rolesClaim.label": "", - "settings.admin.authentication.scopes.description": "", - "settings.admin.authentication.scopes.label": "", - "settings.admin.authentication.searchBase.description": "", - "settings.admin.authentication.searchBase.label": "", - "settings.admin.authentication.searchFilters.description": "", - "settings.admin.authentication.searchFilters.label": "", - "settings.admin.authentication.sections.ldap.title": "", - "settings.admin.authentication.sections.oauthOidc.title": "", - "settings.admin.authentication.sections.pendingAccounts.title": "", - "settings.admin.authentication.sections.userAccess.title": "", - "settings.admin.authentication.subClaim.description": "", - "settings.admin.authentication.subClaim.label": "", - "settings.admin.authentication.title": "", - "settings.admin.authentication.tls.description": "", - "settings.admin.authentication.tls.label": "", - "settings.admin.authentication.updateEmail.description": "", - "settings.admin.authentication.updateEmail.label": "", - "settings.admin.authentication.updateName.description": "", - "settings.admin.authentication.updateName.label": "", - "settings.admin.authentication.updatePicture.description": "", - "settings.admin.authentication.updatePicture.label": "", - "settings.admin.authentication.usernameClaim.description": "", - "settings.admin.authentication.usernameClaim.label": "", - "settings.admin.authentication.validateCertificate.description": "", - "settings.admin.authentication.validateCertificate.label": "", - "settings.admin.codeExecution.codeExecutionEngine.description": "", - "settings.admin.codeExecution.codeExecutionEngine.label": "", - "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "", - "settings.admin.codeExecution.codeExecutionJupyterAuth.label": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "", - "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "", - "settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "", - "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "", - "settings.admin.codeExecution.codeExecutionJupyterUrl.label": "", - "settings.admin.codeExecution.codeInterpreterEngine.description": "", - "settings.admin.codeExecution.codeInterpreterEngine.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "", - "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "", - "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "", - "settings.admin.codeExecution.enableCodeExecution.description": "", - "settings.admin.codeExecution.enableCodeExecution.label": "", - "settings.admin.codeExecution.enableCodeInterpreter.description": "", - "settings.admin.codeExecution.enableCodeInterpreter.label": "", - "settings.admin.codeExecution.sections.codeExecution.title": "", - "settings.admin.codeExecution.sections.codeInterpreter.title": "", - "settings.admin.codeExecution.title": "", - "settings.admin.connections.addConnection.label": "", - "settings.admin.connections.cacheBaseModelList.description": "", - "settings.admin.connections.cacheBaseModelList.label": "", - "settings.admin.connections.directConnections.description": "", - "settings.admin.connections.directConnections.label": "", - "settings.admin.connections.directIntegrations.description": "", - "settings.admin.connections.directIntegrations.label": "", + "settings.admin.authentication.label.description": "Nama tampilan untuk koneksi LDAP ini.", + "settings.admin.authentication.label.label": "Label", + "settings.admin.authentication.ldap.description": "Izinkan pengguna untuk mengautentikasi dengan direktori LDAP.", + "settings.admin.authentication.ldap.label": "LDAP", + "settings.admin.authentication.loginForm.description": "Tampilkan formulir masuk email dan kata sandi pada halaman masuk. Konfigurasikan SSO atau LDAP sebelum menonaktifkannya. Menonaktifkan ini juga memblokir pendaftaran lokal; akses API kata sandi tidak berubah.", + "settings.admin.authentication.loginForm.label": "Formulir Masuk", + "settings.admin.authentication.mergeAccountsByEmail.description": "Tautkan proses masuk OAuth ke akun yang sudah ada dengan email yang sama.", + "settings.admin.authentication.mergeAccountsByEmail.label": "Gabungkan Akun berdasarkan Email", + "settings.admin.authentication.newSignUps.description": "Izinkan pengguna baru untuk membuat akun.", + "settings.admin.authentication.newSignUps.label": "Pendaftaran Baru", + "settings.admin.authentication.oauthOidc.description": "Izinkan pengguna untuk mengautentikasi dengan penyedia OAuth / OIDC.", + "settings.admin.authentication.oauthOidc.label": "OAuth / OIDC", + "settings.admin.authentication.oauthSignup.description": "Izinkan pengguna membuat akun melalui OAuth.", + "settings.admin.authentication.oauthSignup.label": "Pendaftaran OAuth", + "settings.admin.authentication.pendingUserOverlayContent.description": "Pesan khusus yang ditampilkan saat akun menunggu persetujuan.", + "settings.admin.authentication.pendingUserOverlayContent.label": "Konten Hamparan Pengguna Tertunda", + "settings.admin.authentication.pendingUserOverlayTitle.description": "Judul khusus yang ditampilkan saat akun menunggu persetujuan.", + "settings.admin.authentication.pendingUserOverlayTitle.label": "Judul Hamparan Pengguna Tertunda", + "settings.admin.authentication.pictureClaim.description": "Klaim yang digunakan sebagai URL foto profil.", + "settings.admin.authentication.pictureClaim.label": "Klaim Foto Profil", + "settings.admin.authentication.port.description": "Port server LDAP.", + "settings.admin.authentication.port.label": "Port", + "settings.admin.authentication.providerName.description": "Nama tampilan yang ditampilkan untuk penyedia OAuth.", + "settings.admin.authentication.providerName.label": "Nama Penyedia", + "settings.admin.authentication.providerUrl.description": "URL penemuan OpenID untuk penyedia ini.", + "settings.admin.authentication.providerUrl.label": "URL Penyedia", + "settings.admin.authentication.redirectUri.description": "URI panggilan balik yang terdaftar pada penyedia.", + "settings.admin.authentication.redirectUri.label": "URI Pengalihan", + "settings.admin.authentication.roleMapping.description": "Petakan klaim OAuth ke peran Open WebUI.", + "settings.admin.authentication.roleMapping.label": "Pemetaan Peran", + "settings.admin.authentication.rolesClaim.description": "Klaim yang memuat peran penyedia.", + "settings.admin.authentication.rolesClaim.label": "Klaim Peran", + "settings.admin.authentication.scopes.description": "Cakupan OAuth yang diminta saat masuk.", + "settings.admin.authentication.scopes.label": "Cakupan", + "settings.admin.authentication.searchBase.description": "DN dasar yang digunakan saat mencari pengguna.", + "settings.admin.authentication.searchBase.label": "Basis Pencarian", + "settings.admin.authentication.searchFilters.description": "Filter LDAP yang digunakan untuk mencocokkan pengguna yang masuk.", + "settings.admin.authentication.searchFilters.label": "Filter Pencarian", + "settings.admin.authentication.sections.ldap.title": "LDAP", + "settings.admin.authentication.sections.oauthOidc.title": "OAuth / OIDC", + "settings.admin.authentication.sections.pendingAccounts.title": "Akun Tertunda", + "settings.admin.authentication.sections.userAccess.title": "Akses Pengguna", + "settings.admin.authentication.subClaim.description": "Klaim yang digunakan sebagai pengidentifikasi pengguna yang stabil.", + "settings.admin.authentication.subClaim.label": "Klaim Sub", + "settings.admin.authentication.title": "Autentikasi", + "settings.admin.authentication.tls.description": "Gunakan TLS saat menyambung ke server LDAP.", + "settings.admin.authentication.tls.label": "TLS", + "settings.admin.authentication.updateEmail.description": "Perbarui email akun dari OAuth saat masuk.", + "settings.admin.authentication.updateEmail.label": "Perbarui Email", + "settings.admin.authentication.updateName.description": "Perbarui nama akun dari OAuth saat masuk.", + "settings.admin.authentication.updateName.label": "Perbarui Nama", + "settings.admin.authentication.updatePicture.description": "Perbarui foto profil dari OAuth saat masuk.", + "settings.admin.authentication.updatePicture.label": "Perbarui Foto", + "settings.admin.authentication.usernameClaim.description": "Klaim yang digunakan sebagai nama tampilan.", + "settings.admin.authentication.usernameClaim.label": "Klaim Nama Pengguna", + "settings.admin.authentication.validateCertificate.description": "Verifikasi sertifikat server LDAP saat TLS diaktifkan.", + "settings.admin.authentication.validateCertificate.label": "Validasi Sertifikat", + "settings.admin.codeExecution.codeExecutionEngine.description": "Pilih runtime yang digunakan untuk blok kode yang dihasilkan.", + "settings.admin.codeExecution.codeExecutionEngine.label": "Mesin Eksekusi Kode", + "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "Pilih cara Open WebUI mengautentikasi ke server Jupyter.", + "settings.admin.codeExecution.codeExecutionJupyterAuth.label": "Autentikasi Jupyter", + "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "Kredensial yang digunakan untuk autentikasi ke server Jupyter.", + "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "Kata Sandi Jupyter", + "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "Token Jupyter", + "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "Waktu eksekusi maksimum dalam detik sebelum eksekusi dihentikan.", + "settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "Batas Waktu Eksekusi Kode", + "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "Hubungkan eksekusi kode ke titik akhir server Jupyter.", + "settings.admin.codeExecution.codeExecutionJupyterUrl.label": "URL Jupyter", + "settings.admin.codeExecution.codeInterpreterEngine.description": "Pilih runtime yang digunakan oleh alat penafsir kode.", + "settings.admin.codeExecution.codeInterpreterEngine.label": "Mesin Penafsir Kode", + "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "Pilih cara Open WebUI mengautentikasi ke server Jupyter.", + "settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "Autentikasi Jupyter", + "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "Kredensial yang digunakan untuk autentikasi ke server Jupyter.", + "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "Kata Sandi Jupyter", + "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "Token Jupyter", + "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "Waktu eksekusi maksimum dalam detik sebelum eksekusi dihentikan.", + "settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "Batas Waktu Eksekusi Kode", + "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "Hubungkan interpreter kode ke endpoint server Jupyter.", + "settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "URL Jupyter", + "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "Biarkan kosong untuk menggunakan prompt bawaan, atau masukkan prompt kustom.", + "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "Templat Prompt Interpreter Kode", + "settings.admin.codeExecution.enableCodeExecution.description": "Izinkan model menjalankan kode yang dihasilkan dan mengembalikan hasil eksekusi.", + "settings.admin.codeExecution.enableCodeExecution.label": "Aktifkan Eksekusi Kode", + "settings.admin.codeExecution.enableCodeInterpreter.description": "Izinkan model menggunakan alat interpreter kode selama obrolan.", + "settings.admin.codeExecution.enableCodeInterpreter.label": "Aktifkan Interpreter Kode", + "settings.admin.codeExecution.sections.codeExecution.title": "Eksekusi Kode", + "settings.admin.codeExecution.sections.codeInterpreter.title": "Interpreter Kode", + "settings.admin.codeExecution.title": "Eksekusi Kode", + "settings.admin.connections.addConnection.label": "Tambah Koneksi", + "settings.admin.connections.cacheBaseModelList.description": "Tembolok Daftar Model Dasar mempercepat akses dengan hanya mengambil model dasar saat startup atau saat pengaturan disimpan—lebih cepat, tetapi mungkin tidak menampilkan perubahan model dasar terbaru.", + "settings.admin.connections.cacheBaseModelList.label": "Tembolokkan Daftar Model Dasar", + "settings.admin.connections.directConnections.description": "Koneksi Langsung memungkinkan pengguna terhubung ke endpoint API mereka sendiri yang kompatibel dengan OpenAI.", + "settings.admin.connections.directConnections.label": "Koneksi Langsung", + "settings.admin.connections.directIntegrations.description": "Tampilkan tab Integrasi untuk pengguna yang memiliki izin mengelola koneksi alat dan terminal mereka sendiri, termasuk admin. Menyembunyikannya tidak akan menonaktifkan koneksi yang ada.", + "settings.admin.connections.directIntegrations.label": "Integrasi Langsung", "settings.admin.connections.manageOllamaApiConnections.description": "Kesulitan mengakses Ollama?", - "settings.admin.connections.manageOllamaApiConnections.label": "", - "settings.admin.connections.manageOpenaiApiConnections.label": "", + "settings.admin.connections.manageOllamaApiConnections.label": "Kelola Koneksi API Ollama", + "settings.admin.connections.manageOpenaiApiConnections.label": "Kelola Koneksi API OpenAI", "settings.admin.connections.ollamaApi.label": "API Ollama", "settings.admin.connections.openaiApi.label": "API OpenAI", - "settings.admin.connections.refreshModels.label": "", - "settings.admin.connections.sections.userConnections.title": "", + "settings.admin.connections.refreshModels.label": "Segarkan", + "settings.admin.connections.sections.userConnections.title": "Koneksi Pengguna", "settings.admin.connections.title": "Koneksi", - "settings.admin.db.allChats.description": "", - "settings.admin.db.allChats.label": "", - "settings.admin.db.database.description": "", + "settings.admin.db.allChats.description": "Unduh riwayat obrolan semua pengguna sebagai JSON.", + "settings.admin.db.allChats.label": "Semua Obrolan", + "settings.admin.db.database.description": "Unduh basis data aplikasi jika didukung.", "settings.admin.db.database.label": "Basis data", - "settings.admin.db.exportConfig.description": "", - "settings.admin.db.exportConfig.label": "", - "settings.admin.db.importConfig.description": "", - "settings.admin.db.importConfig.label": "", - "settings.admin.db.sections.config.title": "", + "settings.admin.db.exportConfig.description": "Unduh konfigurasi admin saat ini sebagai JSON.", + "settings.admin.db.exportConfig.label": "Ekspor Konfigurasi", + "settings.admin.db.importConfig.description": "Impor konfigurasi admin dari berkas ekspor JSON.", + "settings.admin.db.importConfig.label": "Impor Konfigurasi", + "settings.admin.db.sections.config.title": "Konfigurasi", "settings.admin.db.sections.export.title": "Ekspor", "settings.admin.db.title": "Basis data", - "settings.admin.db.users.description": "", + "settings.admin.db.users.description": "Unduh semua pengguna sebagai CSV.", "settings.admin.db.users.label": "Pengguna", - "settings.admin.documents.additionalConfig.description": "", - "settings.admin.documents.additionalConfig.label": "", - "settings.admin.documents.allowedFileExtensions.description": "", - "settings.admin.documents.allowedFileExtensions.label": "", - "settings.admin.documents.apiMode.description": "", - "settings.admin.documents.apiMode.label": "", - "settings.admin.documents.apiTimeout.description": "", - "settings.admin.documents.apiTimeout.label": "", - "settings.admin.documents.apiToken.description": "", - "settings.admin.documents.apiToken.label": "", - "settings.admin.documents.apiUrl.description": "", - "settings.admin.documents.apiUrl.label": "", - "settings.admin.documents.asyncEmbeddingProcessing.description": "", - "settings.admin.documents.asyncEmbeddingProcessing.label": "", - "settings.admin.documents.azureopenaikey.description": "", + "settings.admin.documents.additionalConfig.description": "Opsi JSON yang diteruskan ke Marker untuk perilaku penguraian tingkat lanjut.", + "settings.admin.documents.additionalConfig.label": "Konfigurasi Tambahan", + "settings.admin.documents.allowedFileExtensions.description": "Ekstensi unggahan yang dipisahkan koma. Biarkan kosong untuk semua jenis berkas.", + "settings.admin.documents.allowedFileExtensions.label": "Ekstensi Berkas yang Diizinkan", + "settings.admin.documents.apiMode.description": "Pilih mode API MinerU lokal atau cloud.", + "settings.admin.documents.apiMode.label": "Mode API", + "settings.admin.documents.apiTimeout.description": "Waktu maksimum dalam detik untuk menunggu respons API MinerU.", + "settings.admin.documents.apiTimeout.label": "Batas Waktu API", + "settings.admin.documents.apiToken.description": "Token API yang dikirim ke PaddleOCR-vl.", + "settings.admin.documents.apiToken.label": "Token API", + "settings.admin.documents.apiUrl.description": "Endpoint API MinerU untuk mode yang dipilih.", + "settings.admin.documents.apiUrl.label": "URL API", + "settings.admin.documents.asyncEmbeddingProcessing.description": "Jalankan tugas embedding secara asinkron untuk mempercepat pemrosesan.", + "settings.admin.documents.asyncEmbeddingProcessing.label": "Pemrosesan Embedding Asinkron", + "settings.admin.documents.azureopenaikey.description": "Kunci API Azure OpenAI.", "settings.admin.documents.azureopenaikey.label": "Kunci API", - "settings.admin.documents.azureopenaiurl.description": "", + "settings.admin.documents.azureopenaiurl.description": "Endpoint Azure OpenAI yang digunakan untuk embedding.", "settings.admin.documents.azureopenaiurl.label": "URL Dasar API", - "settings.admin.documents.bm25Weight.description": "", - "settings.admin.documents.bm25Weight.label": "", - "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "", - "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "", - "settings.admin.documents.chunkMinSizeTarget.description": "", - "settings.admin.documents.chunkMinSizeTarget.label": "", - "settings.admin.documents.chunkOverlap.description": "", + "settings.admin.documents.bm25Weight.description": "Seimbangkan pembobotan semantik dan leksikal untuk pencarian hibrida.", + "settings.admin.documents.bm25Weight.label": "Bobot BM25", + "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "Sisipkan seluruh konten sebagai konteks untuk pemrosesan menyeluruh.", + "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "Lewati Embedding dan Pengambilan", + "settings.admin.documents.chunkMinSizeTarget.description": "Gabungkan potongan yang lebih kecil dari ambang batas ini jika memungkinkan. Atur ke 0 untuk menonaktifkan penggabungan.", + "settings.admin.documents.chunkMinSizeTarget.label": "Target Ukuran Minimum Potongan", + "settings.admin.documents.chunkOverlap.description": "Tumpang tindih yang dipertahankan antar potongan yang berdekatan.", "settings.admin.documents.chunkOverlap.label": "Tumpang Tindih Potongan", - "settings.admin.documents.chunkSize.description": "", + "settings.admin.documents.chunkSize.description": "Ukuran maksimum untuk setiap potongan teks.", "settings.admin.documents.chunkSize.label": "Ukuran Potongan", - "settings.admin.documents.contentExtractionEngine.description": "", - "settings.admin.documents.contentExtractionEngine.label": "", - "settings.admin.documents.datalabMarkerApiBaseUrl.description": "", + "settings.admin.documents.contentExtractionEngine.description": "Pilih cara penguraian dokumen yang diunggah sebelum pengindeksan.", + "settings.admin.documents.contentExtractionEngine.label": "Mesin Ekstraksi Konten", + "settings.admin.documents.datalabMarkerApiBaseUrl.description": "Endpoint layanan Datalab Marker yang digunakan untuk penguraian dokumen.", "settings.admin.documents.datalabMarkerApiBaseUrl.label": "URL Dasar API", - "settings.admin.documents.datalabMarkerApiKey.description": "", + "settings.admin.documents.datalabMarkerApiKey.description": "Kunci API yang digunakan untuk autentikasi dengan Datalab Marker.", "settings.admin.documents.datalabMarkerApiKey.label": "Kunci API", - "settings.admin.documents.disableImageExtraction.description": "", - "settings.admin.documents.disableImageExtraction.label": "", - "settings.admin.documents.doclingApiKey.description": "", + "settings.admin.documents.disableImageExtraction.description": "Jangan ekstrak gambar dari PDF selama pemrosesan Marker.", + "settings.admin.documents.disableImageExtraction.label": "Nonaktifkan Ekstraksi Gambar", + "settings.admin.documents.doclingApiKey.description": "Kunci API yang dikirim ke Docling.", "settings.admin.documents.doclingApiKey.label": "Kunci API", - "settings.admin.documents.doclingParams.description": "", - "settings.admin.documents.doclingParams.label": "", - "settings.admin.documents.doclingServerUrl.description": "", - "settings.admin.documents.doclingServerUrl.label": "", - "settings.admin.documents.documentIntelligenceKey.description": "", - "settings.admin.documents.documentIntelligenceKey.label": "", - "settings.admin.documents.documentIntelligenceModel.description": "", - "settings.admin.documents.documentIntelligenceModel.label": "", - "settings.admin.documents.documentLoaderUrl.description": "", - "settings.admin.documents.documentLoaderUrl.label": "", - "settings.admin.documents.embeddingBatchSize.description": "", + "settings.admin.documents.doclingParams.description": "Parameter Docling tambahan dalam format JSON.", + "settings.admin.documents.doclingParams.label": "Parameter", + "settings.admin.documents.doclingServerUrl.description": "Endpoint layanan Docling yang digunakan untuk penguraian.", + "settings.admin.documents.doclingServerUrl.label": "URL Server Docling", + "settings.admin.documents.documentIntelligenceKey.description": "Kredensial yang digunakan untuk Document Intelligence.", + "settings.admin.documents.documentIntelligenceKey.label": "Kunci", + "settings.admin.documents.documentIntelligenceModel.description": "Nama model yang digunakan oleh Document Intelligence.", + "settings.admin.documents.documentIntelligenceModel.label": "Model Document Intelligence", + "settings.admin.documents.documentLoaderUrl.description": "Endpoint layanan eksternal yang digunakan untuk memuat konten dokumen.", + "settings.admin.documents.documentLoaderUrl.label": "URL Pemuat Dokumen", + "settings.admin.documents.embeddingBatchSize.description": "Jumlah item yang diproses per batch embedding.", "settings.admin.documents.embeddingBatchSize.label": "Menyematkan Ukuran Batch", - "settings.admin.documents.embeddingConcurrentRequests.description": "", - "settings.admin.documents.embeddingConcurrentRequests.label": "", - "settings.admin.documents.embeddingModel.description": "", + "settings.admin.documents.embeddingConcurrentRequests.description": "Maksimum permintaan embedding bersamaan. Atur ke 0 untuk tanpa batas.", + "settings.admin.documents.embeddingConcurrentRequests.label": "Permintaan Embedding Bersamaan", + "settings.admin.documents.embeddingModel.description": "Model yang digunakan untuk menghasilkan embedding. Indeks ulang pengetahuan setelah mengubah ini.", "settings.admin.documents.embeddingModel.label": "Model Penyematan", - "settings.admin.documents.embeddingModelEngine.description": "", + "settings.admin.documents.embeddingModelEngine.description": "Penyedia yang digunakan untuk menghasilkan embedding dokumen.", "settings.admin.documents.embeddingModelEngine.label": "Mesin Model Penyematan", - "settings.admin.documents.endpoint.description": "", - "settings.admin.documents.endpoint.label": "", - "settings.admin.documents.enrichHybridSearchText.description": "", - "settings.admin.documents.enrichHybridSearchText.label": "", - "settings.admin.documents.externalDocumentLoaderApiKey.description": "", + "settings.admin.documents.endpoint.description": "Endpoint Document Intelligence yang digunakan untuk penguraian.", + "settings.admin.documents.endpoint.label": "Endpoint", + "settings.admin.documents.enrichHybridSearchText.description": "Tambahkan nama file, judul, bagian, dan cuplikan untuk meningkatkan pemanggilan leksikal.", + "settings.admin.documents.enrichHybridSearchText.label": "Perkaya Teks Pencarian Hibrida", + "settings.admin.documents.externalDocumentLoaderApiKey.description": "Kunci API yang dikirim ke pemuat dokumen eksternal.", "settings.admin.documents.externalDocumentLoaderApiKey.label": "Kunci API", - "settings.admin.documents.fileExtensions.description": "", - "settings.admin.documents.fileExtensions.label": "", - "settings.admin.documents.forceOcr.description": "", - "settings.admin.documents.forceOcr.label": "", - "settings.admin.documents.formatLines.description": "", - "settings.admin.documents.formatLines.label": "", - "settings.admin.documents.fullContextMode.description": "", - "settings.admin.documents.fullContextMode.label": "", - "settings.admin.documents.googleDrive.description": "", - "settings.admin.documents.googleDrive.label": "", - "settings.admin.documents.headers.description": "", - "settings.admin.documents.headers.label": "", - "settings.admin.documents.headerVariables.label": "", - "settings.admin.documents.hybridSearch.description": "", + "settings.admin.documents.fileExtensions.description": "Ekstensi yang dipisahkan koma yang harus ditangani MinerU.", + "settings.admin.documents.fileExtensions.label": "Ekstensi File", + "settings.admin.documents.forceOcr.description": "Jalankan OCR pada semua halaman PDF, termasuk halaman dengan teks tersemat.", + "settings.admin.documents.forceOcr.label": "Paksa OCR", + "settings.admin.documents.formatLines.description": "Format baris untuk mendeteksi gaya dan rumus matematika sebaris.", + "settings.admin.documents.formatLines.label": "Format Baris", + "settings.admin.documents.fullContextMode.description": "Sisipkan seluruh dokumen sebagai konteks untuk pemrosesan menyeluruh.", + "settings.admin.documents.fullContextMode.label": "Mode Konteks Penuh", + "settings.admin.documents.googleDrive.description": "Izinkan Google Drive sebagai sumber dokumen.", + "settings.admin.documents.googleDrive.label": "Google Drive", + "settings.admin.documents.headers.description": "Header JSON tambahan yang dikirim ke pemuat dokumen eksternal.", + "settings.admin.documents.headers.label": "Header", + "settings.admin.documents.headerVariables.label": "Variabel header", + "settings.admin.documents.hybridSearch.description": "Gabungkan pengambilan semantik dan kata kunci.", "settings.admin.documents.hybridSearch.label": "Pencarian Hibrida", - "settings.admin.documents.imageCompressionHeight.description": "", - "settings.admin.documents.imageCompressionHeight.label": "", - "settings.admin.documents.imageCompressionWidth.description": "", - "settings.admin.documents.imageCompressionWidth.label": "", - "settings.admin.documents.markdownHeaderTextSplitter.description": "", - "settings.admin.documents.markdownHeaderTextSplitter.label": "", - "settings.admin.documents.maxUploadCount.description": "", - "settings.admin.documents.maxUploadCount.label": "", - "settings.admin.documents.maxUploadSize.description": "", - "settings.admin.documents.maxUploadSize.label": "", - "settings.admin.documents.mineruApiKey.description": "", + "settings.admin.documents.imageCompressionHeight.description": "Tinggi piksel untuk mengompresi gambar. Biarkan kosong jika tanpa kompresi.", + "settings.admin.documents.imageCompressionHeight.label": "Tinggi Kompresi Gambar", + "settings.admin.documents.imageCompressionWidth.description": "Lebar piksel untuk mengompresi gambar. Biarkan kosong jika tanpa kompresi.", + "settings.admin.documents.imageCompressionWidth.label": "Lebar Kompresi Gambar", + "settings.admin.documents.markdownHeaderTextSplitter.description": "Bagi dokumen berdasarkan tajuk markdown sebelum pemisahan karakter atau token.", + "settings.admin.documents.markdownHeaderTextSplitter.label": "Pemisah Teks Tajuk Markdown", + "settings.admin.documents.maxUploadCount.description": "Jumlah maksimum berkas yang dapat digunakan sekaligus dalam percakapan.", + "settings.admin.documents.maxUploadCount.label": "Jumlah Unggahan Maksimum", + "settings.admin.documents.maxUploadSize.description": "Ukuran berkas maksimum dalam MB. Kosongkan untuk tanpa batas.", + "settings.admin.documents.maxUploadSize.label": "Ukuran Unggahan Maksimum", + "settings.admin.documents.mineruApiKey.description": "Kunci API yang digunakan untuk mode cloud MinerU.", "settings.admin.documents.mineruApiKey.label": "Kunci API", - "settings.admin.documents.mineruParams.description": "", - "settings.admin.documents.mineruParams.label": "", - "settings.admin.documents.mistralOcrApiBaseUrl.description": "", + "settings.admin.documents.mineruParams.description": "Parameter penguraian lanjutan MinerU dalam format JSON.", + "settings.admin.documents.mineruParams.label": "Parameter", + "settings.admin.documents.mistralOcrApiBaseUrl.description": "Titik akhir layanan Mistral OCR.", "settings.admin.documents.mistralOcrApiBaseUrl.label": "URL Dasar API", - "settings.admin.documents.mistralOcrApiKey.description": "", + "settings.admin.documents.mistralOcrApiKey.description": "Kunci API yang dikirim ke Mistral OCR.", "settings.admin.documents.mistralOcrApiKey.label": "Kunci API", - "settings.admin.documents.ollamakey.description": "", + "settings.admin.documents.ollamakey.description": "Kunci API opsional untuk permintaan Ollama.", "settings.admin.documents.ollamakey.label": "Kunci API", - "settings.admin.documents.ollamaurl.description": "", + "settings.admin.documents.ollamaurl.description": "Titik akhir Ollama yang digunakan untuk embedding.", "settings.admin.documents.ollamaurl.label": "URL Dasar API", - "settings.admin.documents.onedrive.description": "", - "settings.admin.documents.onedrive.label": "", - "settings.admin.documents.openaikey.description": "", + "settings.admin.documents.onedrive.description": "Izinkan OneDrive sebagai sumber dokumen.", + "settings.admin.documents.onedrive.label": "OneDrive", + "settings.admin.documents.openaikey.description": "Kunci API untuk permintaan embedding.", "settings.admin.documents.openaikey.label": "Kunci API", - "settings.admin.documents.openaiurl.description": "", + "settings.admin.documents.openaiurl.description": "Titik akhir embedding yang kompatibel dengan OpenAI.", "settings.admin.documents.openaiurl.label": "URL Dasar API", - "settings.admin.documents.outputFormat.description": "", - "settings.admin.documents.outputFormat.label": "", - "settings.admin.documents.paddleocrVlBaseUrl.description": "", + "settings.admin.documents.outputFormat.description": "Format keluaran teks yang dihasilkan oleh Marker.", + "settings.admin.documents.outputFormat.label": "Format Keluaran", + "settings.admin.documents.paddleocrVlBaseUrl.description": "Titik akhir layanan PaddleOCR-vl.", "settings.admin.documents.paddleocrVlBaseUrl.label": "URL Dasar API", - "settings.admin.documents.paginate.description": "", - "settings.admin.documents.paginate.label": "", - "settings.admin.documents.pdfExtractImagesOcr.description": "", + "settings.admin.documents.paginate.description": "Pisahkan keluaran per halaman dengan penanda halaman.", + "settings.admin.documents.paginate.label": "Paginasi", + "settings.admin.documents.pdfExtractImagesOcr.description": "Ekstrak gambar dari PDF agar OCR dapat memproses halaman yang hanya berisi gambar.", "settings.admin.documents.pdfExtractImagesOcr.label": "Ekstrak Gambar PDF (OCR)", - "settings.admin.documents.pdfLoaderMode.description": "", - "settings.admin.documents.pdfLoaderMode.label": "", - "settings.admin.documents.ragExternalRerankerApiKey.description": "", + "settings.admin.documents.pdfLoaderMode.description": "Mode halaman membuat satu dokumen per halaman. Mode tunggal mempertahankan halaman tetap menyatu untuk pemotongan lintas batas.", + "settings.admin.documents.pdfLoaderMode.label": "Mode Pemuat PDF", + "settings.admin.documents.ragExternalRerankerApiKey.description": "Kunci API yang dikirim ke peringkat ulang eksternal.", "settings.admin.documents.ragExternalRerankerApiKey.label": "Kunci API", - "settings.admin.documents.ragExternalRerankerUrl.description": "", + "settings.admin.documents.ragExternalRerankerUrl.description": "Titik akhir peringkat ulang eksternal.", "settings.admin.documents.ragExternalRerankerUrl.label": "URL Dasar API", - "settings.admin.documents.ragTemplate.description": "", + "settings.admin.documents.ragTemplate.description": "Templat prompt yang digunakan saat konteks yang diambil disisipkan.", "settings.admin.documents.ragTemplate.label": "Templat RAG", - "settings.admin.documents.reindex.label": "", - "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "", - "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "", - "settings.admin.documents.relevanceThreshold.description": "", - "settings.admin.documents.relevanceThreshold.label": "", - "settings.admin.documents.rerankingBatchSize.description": "", - "settings.admin.documents.rerankingBatchSize.label": "", - "settings.admin.documents.rerankingEngine.description": "", - "settings.admin.documents.rerankingEngine.label": "", - "settings.admin.documents.rerankingModel.description": "", + "settings.admin.documents.reindex.label": "Indeks Ulang", + "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "Bangun ulang vektor untuk berkas pengetahuan, pencarian pengetahuan, dan memori yang ada.", + "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "Indeks Ulang Vektor Pengetahuan dan Memori", + "settings.admin.documents.relevanceThreshold.description": "Hanya kembalikan dokumen dengan skor lebih besar dari atau sama dengan nilai ini.", + "settings.admin.documents.relevanceThreshold.label": "Ambang Relevansi", + "settings.admin.documents.rerankingBatchSize.description": "Jumlah hasil yang diproses per batch pemeringkatan ulang.", + "settings.admin.documents.rerankingBatchSize.label": "Ukuran Batch Pemeringkatan Ulang", + "settings.admin.documents.rerankingEngine.description": "Penyedia yang digunakan untuk memeringkat ulang hasil pencarian hibrida.", + "settings.admin.documents.rerankingEngine.label": "Mesin Pemeringkat Ulang", + "settings.admin.documents.rerankingModel.description": "Model yang digunakan untuk memeringkat ulang hasil yang diambil.", "settings.admin.documents.rerankingModel.label": "Model Pemeringkatan Ulang", - "settings.admin.documents.resetUploadDirectory.description": "", + "settings.admin.documents.resetUploadDirectory.description": "Hapus berkas yang diunggah dari direktori unggahan.", "settings.admin.documents.resetUploadDirectory.label": "Setel Ulang Direktori Unggahan", - "settings.admin.documents.resetVectorStorageKnowledge.description": "", - "settings.admin.documents.resetVectorStorageKnowledge.label": "", - "settings.admin.documents.sections.contentExtraction.title": "", - "settings.admin.documents.sections.dangerZone.title": "", - "settings.admin.documents.sections.embedding.title": "", - "settings.admin.documents.sections.files.title": "", - "settings.admin.documents.sections.integration.title": "", - "settings.admin.documents.sections.retrieval.title": "", - "settings.admin.documents.skipCache.description": "", - "settings.admin.documents.skipCache.label": "", - "settings.admin.documents.stripExistingOcr.description": "", - "settings.admin.documents.stripExistingOcr.label": "", - "settings.admin.documents.supportedMediaMimeTypes.description": "", - "settings.admin.documents.supportedMediaMimeTypes.label": "", - "settings.admin.documents.textSplitter.description": "", - "settings.admin.documents.textSplitter.label": "", - "settings.admin.documents.tikaServerUrl.description": "", - "settings.admin.documents.tikaServerUrl.label": "", - "settings.admin.documents.tikaServerVersion.description": "", - "settings.admin.documents.tikaServerVersion.label": "", - "settings.admin.documents.title": "", - "settings.admin.documents.tokenizerModel.description": "", - "settings.admin.documents.tokenizerModel.label": "", - "settings.admin.documents.topK.description": "", + "settings.admin.documents.resetVectorStorageKnowledge.description": "Hapus penyimpanan vektor dan data pengindeksan pengetahuan.", + "settings.admin.documents.resetVectorStorageKnowledge.label": "Atur Ulang Penyimpanan Vektor/Pengetahuan", + "settings.admin.documents.sections.contentExtraction.title": "Ekstraksi Konten", + "settings.admin.documents.sections.dangerZone.title": "Zona Bahaya", + "settings.admin.documents.sections.embedding.title": "Embedding", + "settings.admin.documents.sections.files.title": "Berkas", + "settings.admin.documents.sections.integration.title": "Integrasi", + "settings.admin.documents.sections.retrieval.title": "Pengambilan", + "settings.admin.documents.skipCache.description": "Lewati hasil Marker yang disimpan dalam cache dan jalankan ulang inferensi.", + "settings.admin.documents.skipCache.label": "Lewati Cache", + "settings.admin.documents.stripExistingOcr.description": "Hapus teks OCR yang ada dan jalankan ulang OCR saat Paksa OCR nonaktif.", + "settings.admin.documents.stripExistingOcr.label": "Hapus OCR yang Ada", + "settings.admin.documents.supportedMediaMimeTypes.description": "Tipe MIME unggahan media yang dapat diproses oleh mesin ekstraksi konten.", + "settings.admin.documents.supportedMediaMimeTypes.label": "Tipe MIME Media yang Didukung", + "settings.admin.documents.textSplitter.description": "Pilih cara teks yang diekstraksi dibagi sebelum pengindeksan.", + "settings.admin.documents.textSplitter.label": "Pemisah Teks", + "settings.admin.documents.tikaServerUrl.description": "Titik akhir server Tika yang digunakan untuk ekstraksi konten.", + "settings.admin.documents.tikaServerUrl.label": "URL Server Tika", + "settings.admin.documents.tikaServerVersion.description": "Pilih versi API server Tika.", + "settings.admin.documents.tikaServerVersion.label": "Versi Server Tika", + "settings.admin.documents.title": "Dokumen", + "settings.admin.documents.tokenizerModel.description": "Model tokenizer yang digunakan untuk pemisahan token transformer.", + "settings.admin.documents.tokenizerModel.label": "Model Tokenizer", + "settings.admin.documents.topK.description": "Jumlah maksimum potongan yang diambil dan dikembalikan ke model.", "settings.admin.documents.topK.label": "K atas", - "settings.admin.documents.topKReranker.description": "", - "settings.admin.documents.topKReranker.label": "", - "settings.admin.documents.updateEmbeddingModel.label": "", - "settings.admin.documents.useBase64.description": "", - "settings.admin.documents.useBase64.label": "", - "settings.admin.documents.useLlm.description": "", - "settings.admin.documents.useLlm.label": "", - "settings.admin.documents.version.description": "", + "settings.admin.documents.topKReranker.description": "Jumlah maksimum hasil hibrida yang dikirim ke reranker.", + "settings.admin.documents.topKReranker.label": "Top K Reranker", + "settings.admin.documents.updateEmbeddingModel.label": "Perbarui model embedding", + "settings.admin.documents.useBase64.description": "Kirim PDF sebagai data URL base64 alih-alih mengunggah terlebih dahulu.", + "settings.admin.documents.useBase64.label": "Gunakan Base64", + "settings.admin.documents.useLlm.description": "Gunakan LLM untuk meningkatkan deteksi tabel, formulir, matematika, dan tata letak.", + "settings.admin.documents.useLlm.label": "Gunakan LLM", + "settings.admin.documents.version.description": "Versi API Azure OpenAI.", "settings.admin.documents.version.label": "Versi", - "settings.admin.evaluations.addArenaModel.label": "", - "settings.admin.evaluations.arenaModels.description": "", - "settings.admin.evaluations.arenaModels.label": "", + "settings.admin.evaluations.addArenaModel.label": "Tambah Model Arena", + "settings.admin.evaluations.arenaModels.description": "Penilaian pesan harus diaktifkan untuk menggunakan fitur ini", + "settings.admin.evaluations.arenaModels.label": "Model Arena", "settings.admin.evaluations.sections.models.title": "Model", - "settings.admin.evaluations.title": "", - "settings.admin.general.addBanner.label": "", - "settings.admin.general.automations.description": "", - "settings.admin.general.automations.label": "", + "settings.admin.evaluations.title": "Evaluasi", + "settings.admin.general.addBanner.label": "Tambah banner", + "settings.admin.general.automations.description": "Izinkan pengguna membuat dan menjalankan otomatisasi.", + "settings.admin.general.automations.label": "Otomatisasi", "settings.admin.general.banners.label": "Spanduk", - "settings.admin.general.calendar.description": "", - "settings.admin.general.calendar.label": "", - "settings.admin.general.channels.description": "", - "settings.admin.general.channels.label": "", + "settings.admin.general.calendar.description": "Izinkan pengguna mengakses fitur kalender.", + "settings.admin.general.calendar.label": "Kalender", + "settings.admin.general.channels.description": "Izinkan pengguna menggunakan saluran untuk percakapan bersama.", + "settings.admin.general.channels.label": "Saluran", "settings.admin.general.checkForUpdates.label": "Memeriksa pembaruan", - "settings.admin.general.communitySharing.description": "", - "settings.admin.general.communitySharing.label": "", - "settings.admin.general.events.events.label": "", - "settings.admin.general.events.webhooks.description": "", - "settings.admin.general.events.webhooks.label": "", - "settings.admin.general.folderMaxFileCount.description": "", - "settings.admin.general.folderMaxFileCount.label": "", - "settings.admin.general.folders.description": "", - "settings.admin.general.folders.label": "", - "settings.admin.general.help.description": "", + "settings.admin.general.communitySharing.description": "Izinkan pengguna membagikan obrolan dengan komunitas Open WebUI.", + "settings.admin.general.communitySharing.label": "Berbagi Komunitas", + "settings.admin.general.events.events.label": "Peristiwa", + "settings.admin.general.events.webhooks.description": "Kirim peristiwa produk sebagai JSON ke layanan eksternal. Tujuan obrolan menerima pesan yang dapat dibaca.", + "settings.admin.general.events.webhooks.label": "Webhook", + "settings.admin.general.folderMaxFileCount.description": "Jumlah maksimum berkas yang diizinkan per folder.", + "settings.admin.general.folderMaxFileCount.label": "Jumlah Berkas Maksimum Folder", + "settings.admin.general.folders.description": "Izinkan pengguna mengatur obrolan ke dalam folder.", + "settings.admin.general.folders.label": "Folder", + "settings.admin.general.help.description": "Pelajari cara menggunakan Open WebUI dan dapatkan dukungan dari komunitas.", "settings.admin.general.help.label": "Bantuan", - "settings.admin.general.license.label": "", - "settings.admin.general.memories.description": "", - "settings.admin.general.memories.label": "", - "settings.admin.general.memorySystemContext.description": "", - "settings.admin.general.memorySystemContext.label": "", - "settings.admin.general.messageRating.description": "", - "settings.admin.general.messageRating.label": "", - "settings.admin.general.modelResponseMode.description": "", - "settings.admin.general.modelResponseMode.label": "", - "settings.admin.general.notes.description": "", - "settings.admin.general.notes.label": "", - "settings.admin.general.responseWatermark.description": "", - "settings.admin.general.responseWatermark.label": "", - "settings.admin.general.sections.features.title": "", + "settings.admin.general.license.label": "Lisensi", + "settings.admin.general.memories.description": "Izinkan pengguna menyimpan memori untuk respons yang lebih dipersonalisasi.", + "settings.admin.general.memories.label": "Memori", + "settings.admin.general.memorySystemContext.description": "Sertakan memori yang disimpan dalam konteks sistem.", + "settings.admin.general.memorySystemContext.label": "Konteks Sistem Memori", + "settings.admin.general.messageRating.description": "Izinkan pengguna menilai respons asisten.", + "settings.admin.general.messageRating.label": "Penilaian Pesan", + "settings.admin.general.modelResponseMode.description": "Pilih lokasi pengiriman respons model untuk sebutan di saluran tingkat root.", + "settings.admin.general.modelResponseMode.label": "Mode Respons Model", + "settings.admin.general.notes.description": "Izinkan pengguna membuat dan mengelola catatan.", + "settings.admin.general.notes.label": "Catatan", + "settings.admin.general.responseWatermark.description": "Tambahkan tanda air pada respons asisten jika dikonfigurasi.", + "settings.admin.general.responseWatermark.label": "Tanda Air Respons", + "settings.admin.general.sections.features.title": "Fitur", "settings.admin.general.sections.ui.title": "UI", "settings.admin.general.seeWhatSNew.label": "Lihat apa yang baru", "settings.admin.general.title": "Umum", - "settings.admin.general.translations.addTranslation.label": "", - "settings.admin.general.translations.uiTranslations.label": "", - "settings.admin.general.userStatus.description": "", - "settings.admin.general.userStatus.label": "", - "settings.admin.general.userWebhooks.description": "", - "settings.admin.general.userWebhooks.label": "", + "settings.admin.general.translations.addTranslation.label": "Tambah terjemahan", + "settings.admin.general.translations.uiTranslations.label": "Terjemahan UI", + "settings.admin.general.userStatus.description": "Tampilkan informasi status pengguna di aplikasi.", + "settings.admin.general.userStatus.label": "Status Pengguna", + "settings.admin.general.userWebhooks.description": "Izinkan pengguna mengonfigurasi webhook dari akun mereka.", + "settings.admin.general.userWebhooks.label": "Webhook Pengguna", "settings.admin.general.version.label": "Versi", - "settings.admin.general.webuiUrl.description": "", - "settings.admin.general.webuiUrl.label": "", - "settings.admin.images.apiAuthString.description": "", - "settings.admin.images.apiAuthString.label": "", - "settings.admin.images.automatic1111BaseUrl.description": "", - "settings.admin.images.automatic1111BaseUrl.label": "", - "settings.admin.images.automatic1111Params.description": "", - "settings.admin.images.automatic1111Params.label": "", - "settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "", - "settings.admin.images.comfyuiApiKey.description": "", + "settings.admin.general.webuiUrl.description": "Masukkan URL publik WebUI Anda. URL ini akan digunakan untuk menghasilkan tautan dalam notifikasi.", + "settings.admin.general.webuiUrl.label": "URL WebUI", + "settings.admin.images.apiAuthString.description": "Berikan nama pengguna dan kata sandi --api-auth jika diperlukan.", + "settings.admin.images.apiAuthString.label": "String Autentikasi API", + "settings.admin.images.automatic1111BaseUrl.description": "Hubungkan ke server stable-diffusion-webui yang berjalan dengan flag `--api`.", + "settings.admin.images.automatic1111BaseUrl.label": "URL Dasar", + "settings.admin.images.automatic1111Params.description": "Kirim parameter JSON tambahan pada setiap permintaan AUTOMATIC1111.", + "settings.admin.images.automatic1111Params.label": "Parameter Tambahan", + "settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "Klik di sini untuk mengunggah berkas workflow.json.", + "settings.admin.images.comfyuiApiKey.description": "Gunakan kunci API jika server ComfyUI Anda memerlukannya.", "settings.admin.images.comfyuiApiKey.label": "Kunci API", - "settings.admin.images.comfyuiBaseUrl.description": "", - "settings.admin.images.comfyuiBaseUrl.label": "", - "settings.admin.images.comfyuiComfyuiWorkflow.description": "", - "settings.admin.images.comfyuiComfyuiWorkflow.label": "", - "settings.admin.images.editingWorkflowNodes.description": "", - "settings.admin.images.editingWorkflowNodes.label": "", - "settings.admin.images.editWorkflowJsonContent.label": "", - "settings.admin.images.geminiEndpointMethod.description": "", - "settings.admin.images.geminiEndpointMethod.label": "", - "settings.admin.images.generationWorkflowNodes.description": "", - "settings.admin.images.generationWorkflowNodes.label": "", - "settings.admin.images.imageEdit.description": "", - "settings.admin.images.imageEdit.label": "", - "settings.admin.images.imageEditEngine.description": "", - "settings.admin.images.imageEditEngine.label": "", - "settings.admin.images.imageEditModel.label": "", - "settings.admin.images.imageEditSize.label": "", - "settings.admin.images.imageGeneration.description": "", - "settings.admin.images.imageGeneration.label": "", - "settings.admin.images.imageGenerationEngine.description": "", + "settings.admin.images.comfyuiBaseUrl.description": "Hubungkan ke server ComfyUI yang digunakan untuk pembuatan gambar.", + "settings.admin.images.comfyuiBaseUrl.label": "URL Dasar", + "settings.admin.images.comfyuiComfyuiWorkflow.description": "Unggah berkas workflow.json yang diekspor dalam format API dari ComfyUI.", + "settings.admin.images.comfyuiComfyuiWorkflow.label": "Alur Kerja ComfyUI", + "settings.admin.images.editingWorkflowNodes.description": "Petakan input simpul alur kerja yang digunakan untuk pengeditan gambar.", + "settings.admin.images.editingWorkflowNodes.label": "Simpul Alur Kerja ComfyUI", + "settings.admin.images.editWorkflowJsonContent.label": "Edit konten workflow.json", + "settings.admin.images.geminiEndpointMethod.description": "Pilih metode endpoint Gemini yang akan dipanggil.", + "settings.admin.images.geminiEndpointMethod.label": "Metode Endpoint Gemini", + "settings.admin.images.generationWorkflowNodes.description": "Petakan input simpul alur kerja yang digunakan untuk pembuatan gambar.", + "settings.admin.images.generationWorkflowNodes.label": "Simpul Alur Kerja ComfyUI", + "settings.admin.images.imageEdit.description": "Izinkan pengguna mengedit gambar yang sudah ada.", + "settings.admin.images.imageEdit.label": "Edit Gambar", + "settings.admin.images.imageEditEngine.description": "Pilih penyedia yang digunakan untuk pengeditan gambar.", + "settings.admin.images.imageEditEngine.label": "Mesin Pengeditan Gambar", + "settings.admin.images.imageEditModel.label": "Model", + "settings.admin.images.imageEditSize.label": "Ukuran Gambar", + "settings.admin.images.imageGeneration.description": "Izinkan pengguna membuat gambar dari prompt.", + "settings.admin.images.imageGeneration.label": "Pembuatan Gambar", + "settings.admin.images.imageGenerationEngine.description": "Pilih penyedia yang digunakan untuk pembuatan gambar.", "settings.admin.images.imageGenerationEngine.label": "Mesin Pembuat Gambar", - "settings.admin.images.imageGenerationModel.label": "", - "settings.admin.images.imagePromptGeneration.description": "", - "settings.admin.images.imagePromptGeneration.label": "", - "settings.admin.images.imagesEditComfyuiApiKey.description": "", + "settings.admin.images.imageGenerationModel.label": "Model", + "settings.admin.images.imagePromptGeneration.description": "Buat prompt gambar sebelum mengirim permintaan.", + "settings.admin.images.imagePromptGeneration.label": "Pembuatan Prompt Gambar", + "settings.admin.images.imagesEditComfyuiApiKey.description": "Gunakan kunci API jika server ComfyUI Anda memerlukannya.", "settings.admin.images.imagesEditComfyuiApiKey.label": "Kunci API", - "settings.admin.images.imagesEditComfyuiBaseUrl.description": "", - "settings.admin.images.imagesEditComfyuiBaseUrl.label": "", - "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "", + "settings.admin.images.imagesEditComfyuiBaseUrl.description": "Hubungkan ke server ComfyUI yang digunakan untuk pengeditan gambar.", + "settings.admin.images.imagesEditComfyuiBaseUrl.label": "URL Dasar", + "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "URL Dasar", "settings.admin.images.imagesEditGeminiApiKey.label": "Kunci API", "settings.admin.images.imagesEditOpenaiApiBaseUrl.label": "URL Dasar API", "settings.admin.images.imagesEditOpenaiApiKey.label": "Kunci API", - "settings.admin.images.imagesEditOpenaiApiVersion.label": "", - "settings.admin.images.imagesGeminiApiBaseUrl.description": "", - "settings.admin.images.imagesGeminiApiBaseUrl.label": "", - "settings.admin.images.imagesGeminiApiKey.description": "", + "settings.admin.images.imagesEditOpenaiApiVersion.label": "Versi API", + "settings.admin.images.imagesGeminiApiBaseUrl.description": "Timpa endpoint pembuatan gambar Gemini.", + "settings.admin.images.imagesGeminiApiBaseUrl.label": "URL Dasar", + "settings.admin.images.imagesGeminiApiKey.description": "Gunakan kunci API Gemini untuk pembuatan gambar.", "settings.admin.images.imagesGeminiApiKey.label": "Kunci API", - "settings.admin.images.imageSize.label": "", + "settings.admin.images.imageSize.label": "Ukuran Gambar", "settings.admin.images.imagesOpenaiApiBaseUrl.label": "URL Dasar API", "settings.admin.images.imagesOpenaiApiKey.label": "Kunci API", - "settings.admin.images.imagesOpenaiApiParams.description": "", - "settings.admin.images.imagesOpenaiApiParams.label": "", - "settings.admin.images.imagesOpenaiApiVersion.label": "", - "settings.admin.images.sections.createImage.title": "", - "settings.admin.images.sections.editImage.title": "", + "settings.admin.images.imagesOpenaiApiParams.description": "Kirim parameter JSON tambahan pada setiap permintaan pembuatan gambar.", + "settings.admin.images.imagesOpenaiApiParams.label": "Parameter Tambahan", + "settings.admin.images.imagesOpenaiApiVersion.label": "Versi API", + "settings.admin.images.sections.createImage.title": "Buat Gambar", + "settings.admin.images.sections.editImage.title": "Edit Gambar", "settings.admin.images.serverConnectionVerified.label": "Koneksi server diverifikasi", - "settings.admin.images.steps.label": "", - "settings.admin.images.title": "", - "settings.admin.images.verifyConnection.label": "", - "settings.admin.integrations.addConnection.label": "", - "settings.admin.integrations.externalKnowledge.addConnection.label": "", - "settings.admin.integrations.externalKnowledge.title": "", - "settings.admin.integrations.externalToolServers.label": "", - "settings.admin.integrations.mcp.label": "", - "settings.admin.integrations.openApi.label": "", - "settings.admin.integrations.openTerminal.label": "", + "settings.admin.images.steps.label": "Langkah", + "settings.admin.images.title": "Gambar", + "settings.admin.images.verifyConnection.label": "verifikasi koneksi", + "settings.admin.integrations.addConnection.label": "Tambah Koneksi", + "settings.admin.integrations.externalKnowledge.addConnection.label": "Tambah Koneksi", + "settings.admin.integrations.externalKnowledge.title": "Sumber Pengetahuan Eksternal", + "settings.admin.integrations.externalToolServers.label": "Server Alat Eksternal", + "settings.admin.integrations.mcp.label": "MCP", + "settings.admin.integrations.openApi.label": "OpenAPI", + "settings.admin.integrations.openTerminal.label": "Buka Terminal", "settings.admin.integrations.sections.knowledge.title": "Pengetahuan", - "settings.admin.integrations.sections.terminal.title": "", + "settings.admin.integrations.sections.terminal.title": "Terminal", "settings.admin.integrations.sections.tools.title": "Alat", - "settings.admin.integrations.title": "", - "settings.admin.interface.autocompleteGeneration.description": "", - "settings.admin.interface.autocompleteGeneration.label": "", - "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "", - "settings.admin.interface.autocompleteGenerationInputMaxLength.label": "", - "settings.admin.interface.autocompleteGenerationPrompt.description": "", - "settings.admin.interface.autocompleteGenerationPrompt.label": "", - "settings.admin.interface.availableVariables.label": "", - "settings.admin.interface.contextCompaction.description": "", - "settings.admin.interface.contextCompaction.label": "", - "settings.admin.interface.contextCompactionModel.description": "", - "settings.admin.interface.contextCompactionModel.label": "", - "settings.admin.interface.contextCompactionPrompt.description": "", - "settings.admin.interface.contextCompactionPrompt.label": "", - "settings.admin.interface.externalTaskModel.label": "", - "settings.admin.interface.followUpGeneration.description": "", - "settings.admin.interface.followUpGeneration.label": "", - "settings.admin.interface.followUpGenerationPrompt.description": "", - "settings.admin.interface.followUpGenerationPrompt.label": "", - "settings.admin.interface.imagePromptGenerationPrompt.description": "", - "settings.admin.interface.imagePromptGenerationPrompt.label": "", - "settings.admin.interface.localTaskModel.label": "", - "settings.admin.interface.promptTemplate.description": "", - "settings.admin.interface.promptTemplate.label": "", - "settings.admin.interface.queryGenerationPrompt.description": "", - "settings.admin.interface.queryGenerationPrompt.label": "", - "settings.admin.interface.retainedMessages.description": "", - "settings.admin.interface.retainedMessages.label": "", - "settings.admin.interface.retrievalQueryGeneration.description": "", - "settings.admin.interface.retrievalQueryGeneration.label": "", + "settings.admin.integrations.title": "Integrasi", + "settings.admin.interface.autocompleteGeneration.description": "Sarankan pelengkapan saat pengguna mengetik pesan obrolan.", + "settings.admin.interface.autocompleteGeneration.label": "Pembuatan Pelengkapan Otomatis", + "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "Batasi panjang teks draf yang dikirim untuk pembuatan saran.", + "settings.admin.interface.autocompleteGenerationInputMaxLength.label": "Panjang Maksimum Input Pelengkapan Otomatis", + "settings.admin.interface.autocompleteGenerationPrompt.description": "Memandu pelengkapan sebaris saat pengguna mengetik pesan.", + "settings.admin.interface.autocompleteGenerationPrompt.label": "Prompt Pembuatan Pelengkapan Otomatis", + "settings.admin.interface.availableVariables.label": "Variabel yang tersedia", + "settings.admin.interface.contextCompaction.description": "Ringkas riwayat obrolan lama saat konteks percakapan membesar.", + "settings.admin.interface.contextCompaction.label": "Pemadatan Konteks", + "settings.admin.interface.contextCompactionModel.description": "Pilih model khusus untuk ringkasan pemadatan konteks. Model Saat Ini mengikuti model obrolan yang aktif.", + "settings.admin.interface.contextCompactionModel.label": "Model Pemadatan Konteks", + "settings.admin.interface.contextCompactionPrompt.description": "Mengontrol bagaimana pesan lama ditulis ulang menjadi ringkasan yang berjalan.", + "settings.admin.interface.contextCompactionPrompt.label": "Prompt Pemadatan Konteks", + "settings.admin.interface.externalTaskModel.label": "Model Tugas Eksternal", + "settings.admin.interface.followUpGeneration.description": "Tampilkan saran pertanyaan lanjutan setelah respons asisten.", + "settings.admin.interface.followUpGeneration.label": "Pembuatan Pertanyaan Lanjutan", + "settings.admin.interface.followUpGenerationPrompt.description": "Memandu saran yang ditampilkan setelah respons asisten.", + "settings.admin.interface.followUpGenerationPrompt.label": "Prompt Pembuatan Pertanyaan Lanjutan", + "settings.admin.interface.imagePromptGenerationPrompt.description": "Menulis ulang maksud pengguna menjadi prompt pembuatan gambar.", + "settings.admin.interface.imagePromptGenerationPrompt.label": "Prompt Pembuatan Prompt Gambar", + "settings.admin.interface.localTaskModel.label": "Model Tugas Lokal", + "settings.admin.interface.promptTemplate.description": "Menentukan perilaku yang digunakan untuk percakapan lisan.", + "settings.admin.interface.promptTemplate.label": "Templat Prompt", + "settings.admin.interface.queryGenerationPrompt.description": "Prompt bersama untuk penulisan ulang kueri pengambilan dan pencarian web.", + "settings.admin.interface.queryGenerationPrompt.label": "Prompt Pembuatan Kueri", + "settings.admin.interface.retainedMessages.description": "Persentase pesan terbaru yang disimpan setelah pesan lama diringkas.", + "settings.admin.interface.retainedMessages.label": "Pesan yang Disimpan", + "settings.admin.interface.retrievalQueryGeneration.description": "Tulis ulang permintaan pengguna untuk pengambilan pengetahuan.", + "settings.admin.interface.retrievalQueryGeneration.label": "Pembuatan Kueri Pengambilan", "settings.admin.interface.sections.chat.title": "Obrolan", - "settings.admin.interface.sections.generation.title": "", - "settings.admin.interface.sections.tasks.title": "", - "settings.admin.interface.tagsGeneration.description": "", - "settings.admin.interface.tagsGeneration.label": "", - "settings.admin.interface.tagsGenerationPrompt.description": "", - "settings.admin.interface.tagsGenerationPrompt.label": "", - "settings.admin.interface.taskModel.description": "", - "settings.admin.interface.taskModel.label": "", - "settings.admin.interface.taskModelParameters.label": "", + "settings.admin.interface.sections.generation.title": "Generasi", + "settings.admin.interface.sections.tasks.title": "Tugas", + "settings.admin.interface.tagsGeneration.description": "Buat tag obrolan dari konten percakapan.", + "settings.admin.interface.tagsGeneration.label": "Pembuatan Tag", + "settings.admin.interface.tagsGenerationPrompt.description": "Mengontrol cara tag obrolan disimpulkan.", + "settings.admin.interface.tagsGenerationPrompt.label": "Prompt Pembuatan Tag", + "settings.admin.interface.taskModel.description": "Pilih model cadangan untuk tugas latar belakang. Model Saat Ini mengikuti model obrolan yang aktif.", + "settings.admin.interface.taskModel.label": "Model Tugas", + "settings.admin.interface.taskModelParameters.label": "Parameter Model Tugas", "settings.admin.interface.title": "Antarmuka", - "settings.admin.interface.titleGeneration.description": "", - "settings.admin.interface.titleGeneration.label": "", - "settings.admin.interface.titleGenerationPrompt.description": "", + "settings.admin.interface.titleGeneration.description": "Izinkan penamaan otomatis untuk obrolan baru.", + "settings.admin.interface.titleGeneration.label": "Pembuatan Judul", + "settings.admin.interface.titleGenerationPrompt.description": "Menentukan label singkat yang dihasilkan untuk setiap obrolan.", "settings.admin.interface.titleGenerationPrompt.label": "Perintah Pembuatan Judul", - "settings.admin.interface.tokenCap.description": "", - "settings.admin.interface.tokenCap.label": "", - "settings.admin.interface.tokenThreshold.description": "", - "settings.admin.interface.tokenThreshold.label": "", - "settings.admin.interface.toolPermissions.description": "", - "settings.admin.interface.toolPermissions.label": "", - "settings.admin.interface.toolsFunctionCallingPrompt.description": "", - "settings.admin.interface.toolsFunctionCallingPrompt.label": "", - "settings.admin.interface.voiceModePrompt.description": "", - "settings.admin.interface.voiceModePrompt.label": "", - "settings.admin.interface.webSearchQueryGeneration.description": "", - "settings.admin.interface.webSearchQueryGeneration.label": "", - "settings.admin.models.builtinTools.automations.description": "", - "settings.admin.models.builtinTools.automations.label": "", - "settings.admin.models.builtinTools.calendar.description": "", - "settings.admin.models.builtinTools.calendar.label": "", - "settings.admin.models.builtinTools.channels.description": "", - "settings.admin.models.builtinTools.channels.label": "", - "settings.admin.models.builtinTools.chats.description": "", - "settings.admin.models.builtinTools.chats.label": "", - "settings.admin.models.builtinTools.codeInterpreter.description": "", - "settings.admin.models.builtinTools.codeInterpreter.label": "", - "settings.admin.models.builtinTools.files.description": "", - "settings.admin.models.builtinTools.files.label": "", - "settings.admin.models.builtinTools.imageGeneration.description": "", - "settings.admin.models.builtinTools.imageGeneration.label": "", - "settings.admin.models.builtinTools.knowledge.description": "", - "settings.admin.models.builtinTools.knowledge.label": "", - "settings.admin.models.builtinTools.memory.description": "", + "settings.admin.interface.tokenCap.description": "Ambang batas pemadatan konteks khusus model tidak boleh melebihi batas token ini.", + "settings.admin.interface.tokenCap.label": "Batas Token", + "settings.admin.interface.tokenThreshold.description": "Pesan lama dirangkum ketika perkiraan konteks melebihi batas token ini.", + "settings.admin.interface.tokenThreshold.label": "Ambang Batas Token", + "settings.admin.interface.toolPermissions.description": "Tampilkan Akses penuh dan Minta persetujuan pada menu input obrolan.", + "settings.admin.interface.toolPermissions.label": "Izin Alat", + "settings.admin.interface.toolsFunctionCallingPrompt.description": "Memandu cara asisten memformat pemanggilan alat dan fungsi.", + "settings.admin.interface.toolsFunctionCallingPrompt.label": "Prompt Pemanggilan Fungsi Alat", + "settings.admin.interface.voiceModePrompt.description": "Terapkan instruksi khusus suara saat mode suara aktif.", + "settings.admin.interface.voiceModePrompt.label": "Prompt Mode Suara", + "settings.admin.interface.webSearchQueryGeneration.description": "Tulis ulang permintaan pengguna menjadi kueri pencarian web.", + "settings.admin.interface.webSearchQueryGeneration.label": "Pembuatan Kueri Pencarian Web", + "settings.admin.models.builtinTools.automations.description": "Buat dan kelola otomatisasi terjadwal", + "settings.admin.models.builtinTools.automations.label": "Otomatisasi", + "settings.admin.models.builtinTools.calendar.description": "Daftar kalender, cari, buat, perbarui, dan hapus acara kalender", + "settings.admin.models.builtinTools.calendar.label": "Kalender", + "settings.admin.models.builtinTools.channels.description": "Cari saluran dan pesan saluran", + "settings.admin.models.builtinTools.channels.label": "Saluran", + "settings.admin.models.builtinTools.chats.description": "Cari dan lihat riwayat obrolan pengguna", + "settings.admin.models.builtinTools.chats.label": "Riwayat Obrolan", + "settings.admin.models.builtinTools.codeInterpreter.description": "Jalankan kode", + "settings.admin.models.builtinTools.codeInterpreter.label": "Interpreter Kode", + "settings.admin.models.builtinTools.files.description": "Daftar, cari, dan baca berkas yang dilampirkan ke obrolan saat ini", + "settings.admin.models.builtinTools.files.label": "Berkas", + "settings.admin.models.builtinTools.imageGeneration.description": "Hasilkan dan edit gambar", + "settings.admin.models.builtinTools.imageGeneration.label": "Pembuatan Gambar", + "settings.admin.models.builtinTools.knowledge.description": "Jelajahi dan kueri basis pengetahuan", + "settings.admin.models.builtinTools.knowledge.label": "Basis Pengetahuan", + "settings.admin.models.builtinTools.memory.description": "Cari dan kelola memori pengguna", "settings.admin.models.builtinTools.memory.label": "Memori", - "settings.admin.models.builtinTools.notes.description": "", - "settings.admin.models.builtinTools.notes.label": "", - "settings.admin.models.builtinTools.notifications.description": "", + "settings.admin.models.builtinTools.notes.description": "Cari, lihat, dan kelola catatan pengguna", + "settings.admin.models.builtinTools.notes.label": "Catatan", + "settings.admin.models.builtinTools.notifications.description": "Kirim notifikasi ke target webhook yang dikonfigurasi", "settings.admin.models.builtinTools.notifications.label": "Pemberitahuan", - "settings.admin.models.builtinTools.subagents.description": "", - "settings.admin.models.builtinTools.subagents.label": "", - "settings.admin.models.builtinTools.tasks.description": "", - "settings.admin.models.builtinTools.tasks.label": "", - "settings.admin.models.builtinTools.time.description": "", - "settings.admin.models.builtinTools.time.label": "", - "settings.admin.models.builtinTools.title": "", - "settings.admin.models.builtinTools.userInput.description": "", - "settings.admin.models.builtinTools.userInput.label": "", - "settings.admin.models.builtinTools.webSearch.description": "", + "settings.admin.models.builtinTools.subagents.description": "Delegasikan pekerjaan terfokus ke sub-agen paralel", + "settings.admin.models.builtinTools.subagents.label": "Sub-agen", + "settings.admin.models.builtinTools.tasks.description": "Pecah permintaan rumit menjadi langkah-langkah yang dapat dilacak", + "settings.admin.models.builtinTools.tasks.label": "Manajemen Tugas", + "settings.admin.models.builtinTools.time.description": "Dapatkan waktu saat ini dan lakukan perhitungan tanggal/waktu", + "settings.admin.models.builtinTools.time.label": "Waktu & Perhitungan", + "settings.admin.models.builtinTools.title": "Alat Bawaan", + "settings.admin.models.builtinTools.userInput.description": "Jeda respons untuk mengajukan pertanyaan klarifikasi kepada pengguna", + "settings.admin.models.builtinTools.userInput.label": "Tanya Pengguna", + "settings.admin.models.builtinTools.webSearch.description": "Cari di web dan ambil URL", "settings.admin.models.builtinTools.webSearch.label": "Pencarian Web", - "settings.admin.models.capabilities.builtinTools.description": "", - "settings.admin.models.capabilities.builtinTools.label": "", - "settings.admin.models.capabilities.citations.description": "", - "settings.admin.models.capabilities.citations.label": "", - "settings.admin.models.capabilities.codeInterpreter.description": "", - "settings.admin.models.capabilities.codeInterpreter.label": "", - "settings.admin.models.capabilities.fileContext.description": "", - "settings.admin.models.capabilities.fileContext.label": "", - "settings.admin.models.capabilities.fileUpload.description": "", - "settings.admin.models.capabilities.fileUpload.label": "", - "settings.admin.models.capabilities.imageGeneration.description": "", - "settings.admin.models.capabilities.imageGeneration.label": "", - "settings.admin.models.capabilities.memory.description": "", + "settings.admin.models.capabilities.builtinTools.description": "Suntikkan alat sistem secara otomatis dalam mode pemanggilan fungsi bawaan (cth., stempel waktu, memori, riwayat obrolan, catatan, dll.)", + "settings.admin.models.capabilities.builtinTools.label": "Alat Bawaan", + "settings.admin.models.capabilities.citations.description": "Menampilkan sitasi dalam respons", + "settings.admin.models.capabilities.citations.label": "Sitasi", + "settings.admin.models.capabilities.codeInterpreter.description": "Model dapat mengeksekusi kode dan melakukan perhitungan", + "settings.admin.models.capabilities.codeInterpreter.label": "Interpreter Kode", + "settings.admin.models.capabilities.fileContext.description": "Suntikkan konten berkas ke dalam konteks percakapan", + "settings.admin.models.capabilities.fileContext.label": "Konteks Berkas", + "settings.admin.models.capabilities.fileUpload.description": "Model menerima input berkas", + "settings.admin.models.capabilities.fileUpload.label": "Unggah Berkas", + "settings.admin.models.capabilities.imageGeneration.description": "Model dapat menghasilkan gambar berdasarkan prompt teks", + "settings.admin.models.capabilities.imageGeneration.label": "Pembuatan Gambar", + "settings.admin.models.capabilities.memory.description": "Suntikkan memori tersimpan ke dalam konteks percakapan", "settings.admin.models.capabilities.memory.label": "Memori", - "settings.admin.models.capabilities.statusUpdates.description": "", - "settings.admin.models.capabilities.statusUpdates.label": "", - "settings.admin.models.capabilities.terminal.description": "", - "settings.admin.models.capabilities.terminal.label": "", + "settings.admin.models.capabilities.statusUpdates.description": "Menampilkan pembaruan status (cth., progres pencarian web) dalam respons", + "settings.admin.models.capabilities.statusUpdates.label": "Pembaruan Status", + "settings.admin.models.capabilities.terminal.description": "Model dapat mengakses Open Terminal untuk eksekusi perintah dan pengelolaan berkas", + "settings.admin.models.capabilities.terminal.label": "Terminal", "settings.admin.models.capabilities.title": "Kemampuan", - "settings.admin.models.capabilities.usage.description": "", - "settings.admin.models.capabilities.usage.label": "", - "settings.admin.models.capabilities.vision.description": "", - "settings.admin.models.capabilities.vision.label": "", - "settings.admin.models.capabilities.webSearch.description": "", + "settings.admin.models.capabilities.usage.description": "Mengirimkan `stream_options: { include_usage: true }` dalam permintaan.\nPenyedia yang didukung akan mengembalikan informasi penggunaan token dalam respons jika diatur.", + "settings.admin.models.capabilities.usage.label": "Penggunaan", + "settings.admin.models.capabilities.vision.description": "Model menerima input gambar", + "settings.admin.models.capabilities.vision.label": "Visi", + "settings.admin.models.capabilities.webSearch.description": "Model dapat mencari informasi di web", "settings.admin.models.capabilities.webSearch.label": "Pencarian Web", - "settings.admin.models.defaultFeatures.codeInterpreter.description": "", - "settings.admin.models.defaultFeatures.codeInterpreter.label": "", - "settings.admin.models.defaultFeatures.imageGeneration.description": "", - "settings.admin.models.defaultFeatures.imageGeneration.label": "", - "settings.admin.models.defaultFeatures.title": "", - "settings.admin.models.defaultFeatures.webSearch.description": "", + "settings.admin.models.defaultFeatures.codeInterpreter.description": "Model dapat mengeksekusi kode dan melakukan perhitungan", + "settings.admin.models.defaultFeatures.codeInterpreter.label": "Interpreter Kode", + "settings.admin.models.defaultFeatures.imageGeneration.description": "Model dapat menghasilkan gambar berdasarkan prompt teks", + "settings.admin.models.defaultFeatures.imageGeneration.label": "Pembuatan Gambar", + "settings.admin.models.defaultFeatures.title": "Fitur Bawaan", + "settings.admin.models.defaultFeatures.webSearch.description": "Model dapat mencari informasi di web", "settings.admin.models.defaultFeatures.webSearch.label": "Pencarian Web", - "settings.admin.models.defaults.modelCapabilities.label": "", - "settings.admin.models.defaults.modelDefaults.label": "", - "settings.admin.models.defaults.modelParameters.label": "", - "settings.admin.models.defaults.promptSuggestions.label": "", - "settings.admin.models.disableAllModels.label": "", - "settings.admin.models.enableAllModels.label": "", + "settings.admin.models.defaults.modelCapabilities.label": "Kemampuan Model", + "settings.admin.models.defaults.modelDefaults.label": "Setelan Bawaan Model", + "settings.admin.models.defaults.modelParameters.label": "Parameter Model", + "settings.admin.models.defaults.promptSuggestions.label": "Saran Prompt", + "settings.admin.models.disableAllModels.label": "Nonaktifkan Semua", + "settings.admin.models.enableAllModels.label": "Aktifkan Semua", "settings.admin.models.exportModels.label": "Ekspor", - "settings.admin.models.hideAllModels.label": "", - "settings.admin.models.importModels.label": "", + "settings.admin.models.hideAllModels.label": "Sembunyikan Semua", + "settings.admin.models.importModels.label": "Impor", "settings.admin.models.manageModels.label": "Mengelola", "settings.admin.models.resetModels.label": "Atur Ulang", - "settings.admin.models.showAllModels.label": "", + "settings.admin.models.showAllModels.label": "Tampilkan Semua", "settings.admin.models.title": "Model", - "settings.admin.pipelines.githubUrl.label": "", - "settings.admin.pipelines.install.label": "", - "settings.admin.pipelines.installing.label": "", - "settings.admin.pipelines.pipeline.description": "", - "settings.admin.pipelines.pipeline.label": "", - "settings.admin.pipelines.pipelineUrl.description": "", - "settings.admin.pipelines.pipelineUrl.label": "", - "settings.admin.pipelines.sections.pipelines.title": "", + "settings.admin.pipelines.githubUrl.label": "URL GitHub", + "settings.admin.pipelines.install.label": "Instal", + "settings.admin.pipelines.installing.label": "Menginstal", + "settings.admin.pipelines.pipeline.description": "Pilih pipeline yang terpasang untuk dikonfigurasi atau dihapus.", + "settings.admin.pipelines.pipeline.label": "Pipeline", + "settings.admin.pipelines.pipelineUrl.description": "Pilih server Pipelines yang akan dikelola.", + "settings.admin.pipelines.pipelineUrl.label": "URL Pipeline", + "settings.admin.pipelines.sections.pipelines.title": "Pipelines", "settings.admin.pipelines.sections.source.title": "Sumber", "settings.admin.pipelines.sections.valves.title": "Katup", - "settings.admin.pipelines.selectAPyFile.label": "", - "settings.admin.pipelines.title": "", - "settings.admin.pipelines.uploadPipeline.description": "", + "settings.admin.pipelines.selectAPyFile.label": "Pilih berkas .py", + "settings.admin.pipelines.title": "Pipeline", + "settings.admin.pipelines.uploadPipeline.description": "Unggah berkas pipeline Python lokal ke server yang dipilih.", "settings.admin.pipelines.uploadPipeline.label": "Unggah Pipeline", - "settings.admin.subagents.enableBackgroundSubAgents.description": "", - "settings.admin.subagents.enableBackgroundSubAgents.label": "", - "settings.admin.subagents.enableSubAgents.label": "", - "settings.admin.subagents.maxBackground.label": "", - "settings.admin.subagents.maxConcurrent.label": "", - "settings.admin.subagents.maxIterations.label": "", - "settings.admin.subagents.maxOutput.label": "", - "settings.admin.subagents.systemPrompt.description": "", - "settings.admin.subagents.systemPrompt.label": "", - "settings.admin.subagents.title": "", - "settings.admin.web.bingSearchV7Endpoint.label": "", - "settings.admin.web.bingSearchV7SubscriptionKey.label": "", - "settings.admin.web.bochaSearchApiKey.label": "", + "settings.admin.subagents.enableBackgroundSubAgents.description": "Izinkan sub-agen yang didelegasikan untuk terus berjalan saat obrolan utama berlanjut.", + "settings.admin.subagents.enableBackgroundSubAgents.label": "Aktifkan sub-agen latar belakang", + "settings.admin.subagents.enableSubAgents.label": "Aktifkan sub-agen", + "settings.admin.subagents.maxBackground.label": "Maksimum latar belakang", + "settings.admin.subagents.maxConcurrent.label": "Maksimum konkuren", + "settings.admin.subagents.maxIterations.label": "Maksimum iterasi", + "settings.admin.subagents.maxOutput.label": "Maksimum output", + "settings.admin.subagents.systemPrompt.description": "Biarkan kosong untuk bawaan sistem.", + "settings.admin.subagents.systemPrompt.label": "Prompt sistem", + "settings.admin.subagents.title": "Sub-agen", + "settings.admin.web.bingSearchV7Endpoint.label": "Endpoint Bing Search V7", + "settings.admin.web.bingSearchV7SubscriptionKey.label": "Kunci Langganan Bing Search V7", + "settings.admin.web.bochaSearchApiKey.label": "Kunci API Bocha Search", "settings.admin.web.braveSearchApiKey.label": "Kunci API Pencarian Berani", - "settings.admin.web.bypassEmbeddingAndRetrieval.description": "", - "settings.admin.web.bypassEmbeddingAndRetrieval.label": "", - "settings.admin.web.bypassWebLoader.description": "", - "settings.admin.web.bypassWebLoader.label": "", - "settings.admin.web.concurrentRequests.description": "", + "settings.admin.web.bypassEmbeddingAndRetrieval.description": "Masukkan seluruh konten sebagai konteks untuk pemrosesan menyeluruh.", + "settings.admin.web.bypassEmbeddingAndRetrieval.label": "Lewati Penyematan dan Pengambilan", + "settings.admin.web.bypassWebLoader.description": "Gunakan hasil pencarian tanpa mengambil konten halaman.", + "settings.admin.web.bypassWebLoader.label": "Lewati Web Loader", + "settings.admin.web.concurrentRequests.description": "Batasi permintaan web loader paralel.", "settings.admin.web.concurrentRequests.label": "Permintaan Bersamaan", - "settings.admin.web.contextTokens.label": "", - "settings.admin.web.ddgsBackend.label": "", - "settings.admin.web.domainFilterList.description": "", - "settings.admin.web.domainFilterList.label": "", - "settings.admin.web.exaApiKey.label": "", - "settings.admin.web.externalWebLoaderApiKey.label": "", - "settings.admin.web.externalWebLoaderUrl.label": "", - "settings.admin.web.externalWebSearchApiKey.label": "", - "settings.admin.web.externalWebSearchUrl.label": "", - "settings.admin.web.fetchUrlContentLengthLimit.description": "", - "settings.admin.web.fetchUrlContentLengthLimit.label": "", - "settings.admin.web.firecrawlApiBaseUrl.label": "", - "settings.admin.web.firecrawlApiKey.label": "", - "settings.admin.web.firecrawlTimeoutS.label": "", + "settings.admin.web.contextTokens.label": "Token Konteks", + "settings.admin.web.ddgsBackend.label": "Backend DDGS", + "settings.admin.web.domainFilterList.description": "Batasi atau kecualikan domain menggunakan daftar yang dipisahkan koma.", + "settings.admin.web.domainFilterList.label": "Daftar Filter Domain", + "settings.admin.web.exaApiKey.label": "Kunci API Exa", + "settings.admin.web.externalWebLoaderApiKey.label": "Kunci API Web Loader Eksternal", + "settings.admin.web.externalWebLoaderUrl.label": "URL Web Loader Eksternal", + "settings.admin.web.externalWebSearchApiKey.label": "Kunci API Pencarian Web Eksternal", + "settings.admin.web.externalWebSearchUrl.label": "URL Pencarian Web Eksternal", + "settings.admin.web.fetchUrlContentLengthLimit.description": "Batas maksimum karakter yang dikembalikan dari URL yang diambil. Biarkan kosong tanpa batas.", + "settings.admin.web.fetchUrlContentLengthLimit.label": "Batas Panjang Konten Pengambilan URL", + "settings.admin.web.firecrawlApiBaseUrl.label": "URL Dasar API Firecrawl", + "settings.admin.web.firecrawlApiKey.label": "Kunci API Firecrawl", + "settings.admin.web.firecrawlTimeoutS.label": "Batas Waktu Firecrawl (detik)", "settings.admin.web.googlePseApiKey.label": "Kunci API Google PSE", "settings.admin.web.googlePseEngineId.label": "Id Mesin Google PSE", - "settings.admin.web.jinaApiBaseUrl.label": "", - "settings.admin.web.jinaApiKey.label": "", - "settings.admin.web.kagiSearchApiKey.label": "", + "settings.admin.web.jinaApiBaseUrl.label": "URL Dasar API Jina", + "settings.admin.web.jinaApiKey.label": "Kunci API Jina", + "settings.admin.web.kagiSearchApiKey.label": "Kunci API Kagi Search", "settings.admin.web.language.label": "Bahasa", - "settings.admin.web.linkupApiKey.label": "", - "settings.admin.web.maxContentLength.description": "", - "settings.admin.web.maxContentLength.label": "", - "settings.admin.web.microsoftWebIqApiBaseUrl.label": "", - "settings.admin.web.microsoftWebIqApiKey.label": "", - "settings.admin.web.mojeekSearchApiKey.label": "", - "settings.admin.web.ollamaCloudApiKey.label": "", - "settings.admin.web.openserpUrl.label": "", - "settings.admin.web.parameters.label": "", - "settings.admin.web.perplexityApiKey.label": "", - "settings.admin.web.perplexityModel.label": "", - "settings.admin.web.perplexitySearchApiUrl.label": "", - "settings.admin.web.perplexitySearchContextUsage.label": "", - "settings.admin.web.playwrightTimeoutMs.label": "", - "settings.admin.web.playwrightWebsocketUrl.label": "", - "settings.admin.web.searchapiApiKey.label": "", - "settings.admin.web.searchapiEngine.label": "", - "settings.admin.web.searchLimits.description": "", - "settings.admin.web.searchLimits.label": "", - "settings.admin.web.searchResultCount.description": "", + "settings.admin.web.linkupApiKey.label": "Kunci API Linkup", + "settings.admin.web.maxContentLength.description": "Batas maksimum karakter per hasil pencarian Exa. Biarkan kosong tanpa batas.", + "settings.admin.web.maxContentLength.label": "Panjang Konten Maksimum", + "settings.admin.web.microsoftWebIqApiBaseUrl.label": "URL Dasar API Microsoft Web IQ", + "settings.admin.web.microsoftWebIqApiKey.label": "Kunci API Microsoft Web IQ", + "settings.admin.web.mojeekSearchApiKey.label": "Kunci API Mojeek Search", + "settings.admin.web.ollamaCloudApiKey.label": "Kunci API Ollama Cloud", + "settings.admin.web.openserpUrl.label": "URL OpenSERP", + "settings.admin.web.parameters.label": "Parameter", + "settings.admin.web.perplexityApiKey.label": "Kunci API Perplexity", + "settings.admin.web.perplexityModel.label": "Model Perplexity", + "settings.admin.web.perplexitySearchApiUrl.label": "URL API Pencarian Perplexity", + "settings.admin.web.perplexitySearchContextUsage.label": "Penggunaan Konteks Pencarian Perplexity", + "settings.admin.web.playwrightTimeoutMs.label": "Batas Waktu Playwright (ms)", + "settings.admin.web.playwrightWebsocketUrl.label": "URL WebSocket Playwright", + "settings.admin.web.searchapiApiKey.label": "Kunci API SearchApi", + "settings.admin.web.searchapiEngine.label": "Mesin SearchApi", + "settings.admin.web.searchLimits.description": "Kontrol volume hasil dan permintaan pencarian paralel.", + "settings.admin.web.searchLimits.label": "Batas Pencarian", + "settings.admin.web.searchResultCount.description": "Batasi kueri pencarian bersamaan. 0 = tanpa batas (default). Atur ke 1 untuk eksekusi berurutan (disarankan untuk API dengan batas laju ketat seperti paket gratis Brave).", "settings.admin.web.searchResultCount.label": "Jumlah Hasil Pencarian", "settings.admin.web.searxngQueryUrl.label": "URL Kueri Pencarian Searxng", - "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "", - "settings.admin.web.sections.loader.title": "", + "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "Bahasa pencarian Searxng (all, en, es, de, fr, dll.)", + "settings.admin.web.sections.loader.title": "Pemuat", "settings.admin.web.sections.search.title": "Cari", - "settings.admin.web.serpapiApiKey.label": "", - "settings.admin.web.serpapiEngine.label": "", + "settings.admin.web.serpapiApiKey.label": "Kunci API SerpApi", + "settings.admin.web.serpapiEngine.label": "Mesin SerpApi", "settings.admin.web.serperApiKey.label": "Kunci API Serper", - "settings.admin.web.serphouseApiKey.label": "", - "settings.admin.web.serphouseDomain.label": "", + "settings.admin.web.serphouseApiKey.label": "Kunci API SERPHouse", + "settings.admin.web.serphouseDomain.label": "Domain SERPHouse", "settings.admin.web.serplyApiKey.label": "Kunci API Serply", "settings.admin.web.serpstackApiKey.label": "Kunci API Serpstack", - "settings.admin.web.sougouSearchApiSid.label": "", - "settings.admin.web.sougouSearchApiSk.label": "", + "settings.admin.web.sougouSearchApiSid.label": "sID API Sougou Search", + "settings.admin.web.sougouSearchApiSk.label": "SK API Sougou Search", "settings.admin.web.tavilyApiKey.label": "Kunci API Tavily", - "settings.admin.web.tavilyExtractDepth.label": "", - "settings.admin.web.timeout.description": "", - "settings.admin.web.timeout.label": "", + "settings.admin.web.tavilyExtractDepth.label": "Kedalaman Ekstraksi Tavily", + "settings.admin.web.timeout.description": "Waktu maksimum untuk menunggu saat memuat konten web.", + "settings.admin.web.timeout.label": "Batas Waktu", "settings.admin.web.title": "Pencarian Web", - "settings.admin.web.trustProxyEnvironment.description": "", - "settings.admin.web.trustProxyEnvironment.label": "", - "settings.admin.web.verifySslCertificate.description": "", - "settings.admin.web.verifySslCertificate.label": "", - "settings.admin.web.webLoaderEngine.description": "", - "settings.admin.web.webLoaderEngine.label": "", - "settings.admin.web.webSearch.description": "", + "settings.admin.web.trustProxyEnvironment.description": "Gunakan variabel lingkungan proksi untuk mengambil konten halaman.", + "settings.admin.web.trustProxyEnvironment.label": "Percayai Lingkungan Proksi", + "settings.admin.web.verifySslCertificate.description": "Validasi sertifikat SSL saat mengambil konten web.", + "settings.admin.web.verifySslCertificate.label": "Verifikasi Sertifikat SSL", + "settings.admin.web.webLoaderEngine.description": "Pilih cara halaman hasil web diambil dan dibaca.", + "settings.admin.web.webLoaderEngine.label": "Mesin Pemuat Web", + "settings.admin.web.webSearch.description": "Izinkan pengguna mencari di web dari obrolan.", "settings.admin.web.webSearch.label": "Pencarian Web", - "settings.admin.web.webSearchConfirmation.description": "", - "settings.admin.web.webSearchConfirmation.label": "", - "settings.admin.web.webSearchConfirmationContent.description": "", - "settings.admin.web.webSearchConfirmationContent.label": "", - "settings.admin.web.webSearchEngine.description": "", + "settings.admin.web.webSearchConfirmation.description": "Wajibkan pengguna mengonfirmasi sebelum menggunakan Pencarian Web.", + "settings.admin.web.webSearchConfirmation.label": "Konfirmasi Pencarian Web", + "settings.admin.web.webSearchConfirmationContent.description": "Pesan yang ditampilkan sebelum pencarian web dijalankan.", + "settings.admin.web.webSearchConfirmationContent.label": "Konten Konfirmasi Pencarian Web", + "settings.admin.web.webSearchEngine.description": "Pilih penyedia yang digunakan untuk kueri pencarian web.", "settings.admin.web.webSearchEngine.label": "Mesin Pencari Web", - "settings.admin.web.yacyInstanceUrl.label": "", - "settings.admin.web.yacyPassword.label": "", - "settings.admin.web.yacyUsername.label": "", - "settings.admin.web.yandexWebSearchApiKey.label": "", - "settings.admin.web.yandexWebSearchConfig.label": "", - "settings.admin.web.yandexWebSearchUrl.label": "", - "settings.admin.web.youComApiKey.label": "", - "settings.admin.web.youtubeLanguage.description": "", - "settings.admin.web.youtubeLanguage.label": "", - "settings.admin.web.youtubeProxyUrl.description": "", - "settings.admin.web.youtubeProxyUrl.label": "", + "settings.admin.web.yacyInstanceUrl.label": "URL Instans Yacy", + "settings.admin.web.yacyPassword.label": "Kata Sandi Yacy", + "settings.admin.web.yacyUsername.label": "Nama Pengguna Yacy", + "settings.admin.web.yandexWebSearchApiKey.label": "Kunci API Yandex Web Search", + "settings.admin.web.yandexWebSearchConfig.label": "Konfigurasi Yandex Web Search", + "settings.admin.web.yandexWebSearchUrl.label": "URL Yandex Web Search", + "settings.admin.web.youComApiKey.label": "Kunci API You.com", + "settings.admin.web.youtubeLanguage.description": "Kode bahasa transkrip pilihan, dipisahkan dengan koma.", + "settings.admin.web.youtubeLanguage.label": "Bahasa Youtube", + "settings.admin.web.youtubeProxyUrl.description": "URL proksi yang digunakan untuk permintaan pemuat Youtube.", + "settings.admin.web.youtubeProxyUrl.label": "URL Proksi Youtube", "settings.personal.about.checkForUpdates.label": "Memeriksa pembaruan", - "settings.personal.about.sections.community.title": "", + "settings.personal.about.sections.community.title": "Komunitas", "settings.personal.about.sections.ollamaVersion.title": "Versi Ollama", "settings.personal.about.sections.version.title": "Versi", - "settings.personal.about.seeWhatSNew.description": "", + "settings.personal.about.seeWhatSNew.description": "Lihat versi terinstal dan periksa pembaruan rilis.", "settings.personal.about.seeWhatSNew.label": "Lihat apa yang baru", "settings.personal.about.title": "Tentang", - "settings.personal.account.apiKey.description": "", + "settings.personal.account.apiKey.description": "Buat, salin, atau rotasi kunci API Anda.", "settings.personal.account.apiKey.label": "Kunci API", - "settings.personal.account.bio.description": "", - "settings.personal.account.bio.label": "", - "settings.personal.account.birthDate.description": "", - "settings.personal.account.birthDate.label": "", - "settings.personal.account.changePassword.description": "", + "settings.personal.account.bio.description": "Tambahkan konteks profil opsional yang terlihat di tempat profil ditampilkan.", + "settings.personal.account.bio.label": "Bio", + "settings.personal.account.birthDate.description": "Atur tanggal lahir yang disimpan pada profil Anda.", + "settings.personal.account.birthDate.label": "Tanggal Lahir", + "settings.personal.account.changePassword.description": "Perbarui kata sandi yang digunakan untuk masuk dengan email dan kata sandi.", "settings.personal.account.changePassword.label": "Ubah Kata Sandi", "settings.personal.account.confirmPassword.label": "Konfirmasi Kata Sandi", "settings.personal.account.createNewSecretKey.label": "Buat kunci rahasia baru", "settings.personal.account.currentPassword.label": "Kata Sandi Saat Ini", - "settings.personal.account.gender.description": "", - "settings.personal.account.gender.label": "", - "settings.personal.account.jwtToken.description": "", + "settings.personal.account.gender.description": "Pilih jenis kelamin yang disimpan di profil Anda.", + "settings.personal.account.gender.label": "Jenis Kelamin", + "settings.personal.account.jwtToken.description": "Salin token sesi saat ini untuk permintaan terautentikasi.", "settings.personal.account.jwtToken.label": "Token JWT", - "settings.personal.account.name.description": "", + "settings.personal.account.name.description": "Atur nama tampilan yang muncul di seluruh akun Anda.", "settings.personal.account.name.label": "Nama", "settings.personal.account.newPassword.label": "Kata Sandi Baru", - "settings.personal.account.secrets.description": "", - "settings.personal.account.secrets.label": "", + "settings.personal.account.secrets.description": "Tampilkan atau sembunyikan rahasia akun yang sensitif.", + "settings.personal.account.secrets.label": "Rahasia", "settings.personal.account.sections.apiKeys.title": "Kunci API", "settings.personal.account.sections.password.title": "Kata sandi", "settings.personal.account.sections.profile.title": "Profil", @@ -2764,754 +2767,754 @@ "settings.personal.account.updatePassword.label": "Perbarui kata sandi", "settings.personal.archivedChats.exportArchivedChats.label": "Ekspor", "settings.personal.archivedChats.title": "Obrolan yang Diarsipkan", - "settings.personal.archivedChats.unarchiveAll.label": "", - "settings.personal.audio.allowNonLocalVoices.description": "", + "settings.personal.archivedChats.unarchiveAll.label": "Batalkan Arsip Semua", + "settings.personal.audio.allowNonLocalVoices.description": "Sertakan suara yang tidak disediakan oleh layanan ucapan lokal.", "settings.personal.audio.allowNonLocalVoices.label": "Izinkan suara non-lokal", - "settings.personal.audio.autoPlaybackResponse.description": "", + "settings.personal.audio.autoPlaybackResponse.description": "Putar respons asisten secara otomatis.", "settings.personal.audio.autoPlaybackResponse.label": "Respons pemutaran otomatis", - "settings.personal.audio.browserVoice.description": "", + "settings.personal.audio.browserVoice.description": "Pilih suara peramban yang digunakan untuk output suara.", "settings.personal.audio.browserVoice.label": "Mengatur Suara", - "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "", + "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "Kirim input suara tertranskripsi segera setelah pengenalan ucapan selesai.", "settings.personal.audio.instantAutoSendAfterVoiceTranscription.label": "Kirim Otomatis Instan Setelah Transkripsi Suara", - "settings.personal.audio.kokoroJsDtype.description": "", - "settings.personal.audio.kokoroJsDtype.label": "", - "settings.personal.audio.kokoroVoice.description": "", + "settings.personal.audio.kokoroJsDtype.description": "Pilih presisi model lokal yang digunakan oleh Kokoro.js.", + "settings.personal.audio.kokoroJsDtype.label": "Kokoro.js Dtype", + "settings.personal.audio.kokoroVoice.description": "Pilih suara Kokoro.js yang digunakan untuk output suara.", "settings.personal.audio.kokoroVoice.label": "Mengatur Suara", - "settings.personal.audio.language.description": "", + "settings.personal.audio.language.description": "Atur bahasa pengenalan ucapan atau biarkan kosong untuk mendeteksi secara otomatis.", "settings.personal.audio.language.label": "Bahasa", "settings.personal.audio.sections.sttSettings.title": "Pengaturan STT", "settings.personal.audio.sections.ttsSettings.title": "Pengaturan TTS", "settings.personal.audio.sections.voice.title": "Suara", - "settings.personal.audio.serviceVoice.description": "", + "settings.personal.audio.serviceVoice.description": "Pilih suara layanan text-to-speech yang dikonfigurasi.", "settings.personal.audio.serviceVoice.label": "Mengatur Suara", - "settings.personal.audio.speechPlaybackSpeed.description": "", - "settings.personal.audio.speechPlaybackSpeed.label": "", - "settings.personal.audio.speechToTextEngine.description": "", + "settings.personal.audio.speechPlaybackSpeed.description": "Sesuaikan kecepatan pemutaran respons suara.", + "settings.personal.audio.speechPlaybackSpeed.label": "Kecepatan Pemutaran Suara", + "settings.personal.audio.speechToTextEngine.description": "Pilih mesin yang digunakan untuk mentranskripsikan input suara.", "settings.personal.audio.speechToTextEngine.label": "Mesin Pengenal Ucapan ke Teks", - "settings.personal.audio.textToSpeechEngine.description": "", + "settings.personal.audio.textToSpeechEngine.description": "Pilih mesin yang digunakan untuk membacakan respons asisten.", "settings.personal.audio.textToSpeechEngine.label": "Mesin Teks-ke-Suara", "settings.personal.audio.title": "Audio", - "settings.personal.connections.addConnection.description": "", - "settings.personal.connections.addConnection.label": "", - "settings.personal.connections.sections.directConnections.title": "", + "settings.personal.connections.addConnection.description": "Hubungkan ke endpoint API kompatibel OpenAI milik Anda sendiri.", + "settings.personal.connections.addConnection.label": "Tambah Koneksi", + "settings.personal.connections.sections.directConnections.title": "Koneksi Langsung", "settings.personal.connections.title": "Koneksi", - "settings.personal.dataControls.archiveAll.label": "", - "settings.personal.dataControls.archiveAllChats.description": "", + "settings.personal.dataControls.archiveAll.label": "Arsipkan Semua", + "settings.personal.dataControls.archiveAllChats.description": "Pindahkan setiap obrolan ke arsip setelah konfirmasi.", "settings.personal.dataControls.archiveAllChats.label": "Arsipkan Semua Obrolan", - "settings.personal.dataControls.deleteAllChats.description": "", + "settings.personal.dataControls.deleteAllChats.description": "Hapus permanen setiap obrolan setelah konfirmasi.", "settings.personal.dataControls.deleteAllChats.label": "Menghapus Semua Obrolan", - "settings.personal.dataControls.exportChats.description": "", + "settings.personal.dataControls.exportChats.description": "Unduh riwayat obrolan Anda sebagai ekspor JSON.", "settings.personal.dataControls.exportChats.label": "Ekspor Obrolan", - "settings.personal.dataControls.importChats.description": "", + "settings.personal.dataControls.importChats.description": "Impor riwayat obrolan dari file ekspor JSON.", "settings.personal.dataControls.importChats.label": "Impor Obrolan", - "settings.personal.dataControls.manageFiles.description": "", - "settings.personal.dataControls.manageFiles.label": "", + "settings.personal.dataControls.manageFiles.description": "Buka pengelola file untuk file yang diunggah.", + "settings.personal.dataControls.manageFiles.label": "Kelola File", "settings.personal.dataControls.sections.chats.title": "Obrolan", - "settings.personal.dataControls.sections.files.title": "", - "settings.personal.dataControls.sharedChats.description": "", - "settings.personal.dataControls.sharedChats.label": "", - "settings.personal.dataControls.title": "", - "settings.personal.general.language.description": "", + "settings.personal.dataControls.sections.files.title": "File", + "settings.personal.dataControls.sharedChats.description": "Tinjau dan kelola obrolan yang telah Anda bagikan.", + "settings.personal.dataControls.sharedChats.label": "Obrolan yang Dibagikan", + "settings.personal.dataControls.title": "Kontrol Data", + "settings.personal.general.language.description": "Pilih bahasa yang digunakan untuk teks antarmuka.", "settings.personal.general.language.label": "Bahasa", - "settings.personal.general.modelParameters.description": "", - "settings.personal.general.modelParameters.label": "", - "settings.personal.general.parameters.contextCompactionThreshold.description": "", - "settings.personal.general.parameters.contextCompactionThreshold.label": "", - "settings.personal.general.parameters.format.label": "", - "settings.personal.general.parameters.frequencyPenalty.label": "", - "settings.personal.general.parameters.functionCalling.description": "", - "settings.personal.general.parameters.functionCalling.label": "", - "settings.personal.general.parameters.keepAlive.label": "", - "settings.personal.general.parameters.logitBias.label": "", - "settings.personal.general.parameters.maxTokens.label": "", - "settings.personal.general.parameters.minP.label": "", - "settings.personal.general.parameters.mirostat.label": "", - "settings.personal.general.parameters.mirostatEta.label": "", - "settings.personal.general.parameters.mirostatTau.label": "", - "settings.personal.general.parameters.numBatch.label": "", - "settings.personal.general.parameters.numCtx.label": "", - "settings.personal.general.parameters.numGpu.label": "", - "settings.personal.general.parameters.numKeep.label": "", - "settings.personal.general.parameters.numThread.label": "", - "settings.personal.general.parameters.ollama.description": "", + "settings.personal.general.modelParameters.description": "Tampilkan atau sembunyikan parameter generasi kustom.", + "settings.personal.general.modelParameters.label": "Parameter model", + "settings.personal.general.parameters.contextCompactionThreshold.description": "Tetapkan ambang batas token pemadatan konteks khusus model. Jika disetel, ini menimpa ambang batas global hingga batas maksimal global.", + "settings.personal.general.parameters.contextCompactionThreshold.label": "Ambang Batas Pemadatan Konteks", + "settings.personal.general.parameters.format.label": "format", + "settings.personal.general.parameters.frequencyPenalty.label": "frequency_penalty", + "settings.personal.general.parameters.functionCalling.description": "Mode native (default) memanfaatkan kemampuan pemanggilan alat bawaan model. Mode legacy bekerja dengan lebih banyak model dengan memanggil alat sekali sebelum eksekusi melalui injeksi prompt.", + "settings.personal.general.parameters.functionCalling.label": "Pemanggilan Fungsi", + "settings.personal.general.parameters.keepAlive.label": "keep_alive", + "settings.personal.general.parameters.logitBias.label": "logit_bias", + "settings.personal.general.parameters.maxTokens.label": "max_tokens", + "settings.personal.general.parameters.minP.label": "min_p", + "settings.personal.general.parameters.mirostat.label": "mirostat", + "settings.personal.general.parameters.mirostatEta.label": "mirostat_eta", + "settings.personal.general.parameters.mirostatTau.label": "mirostat_tau", + "settings.personal.general.parameters.numBatch.label": "num_batch", + "settings.personal.general.parameters.numCtx.label": "num_ctx", + "settings.personal.general.parameters.numGpu.label": "num_gpu", + "settings.personal.general.parameters.numKeep.label": "num_keep", + "settings.personal.general.parameters.numThread.label": "num_thread", + "settings.personal.general.parameters.ollama.description": "Opsi ini mengaktifkan atau menonaktifkan fitur penalaran di Ollama, yang memungkinkan model berpikir sebelum menghasilkan respons. Saat diaktifkan, model membutuhkan waktu sejenak untuk memproses konteks percakapan dan menghasilkan respons yang lebih matang.", "settings.personal.general.parameters.ollama.label": "Ollama", - "settings.personal.general.parameters.presencePenalty.label": "", - "settings.personal.general.parameters.reasoningEffort.description": "", - "settings.personal.general.parameters.reasoningEffort.label": "", - "settings.personal.general.parameters.reasoningTags.description": "", - "settings.personal.general.parameters.reasoningTags.label": "", - "settings.personal.general.parameters.repeatLastN.label": "", - "settings.personal.general.parameters.repeatPenalty.label": "", - "settings.personal.general.parameters.seed.description": "", + "settings.personal.general.parameters.presencePenalty.label": "presence_penalty", + "settings.personal.general.parameters.reasoningEffort.description": "Membatasi upaya penalaran untuk model penalaran. Hanya berlaku untuk model penalaran dari penyedia tertentu yang mendukung fitur ini.", + "settings.personal.general.parameters.reasoningEffort.label": "Upaya Penalaran", + "settings.personal.general.parameters.reasoningTags.description": "Aktifkan, nonaktifkan, atau sesuaikan tag penalaran yang digunakan oleh model. \"Diaktifkan\" menggunakan tag default, \"Dinonaktifkan\" mematikan tag penalaran, dan \"Kustom\" memungkinkan Anda menentukan tag awal dan akhir sendiri.", + "settings.personal.general.parameters.reasoningTags.label": "Tag Penalaran", + "settings.personal.general.parameters.repeatLastN.label": "repeat_last_n", + "settings.personal.general.parameters.repeatPenalty.label": "repeat_penalty", + "settings.personal.general.parameters.seed.description": "Menetapkan seed angka acak untuk pembuatan respons. Mengaturnya ke angka tertentu akan membuat model menghasilkan teks yang sama untuk prompt yang sama.", "settings.personal.general.parameters.seed.label": "Benih", - "settings.personal.general.parameters.stopSequence.description": "", + "settings.personal.general.parameters.stopSequence.description": "Menetapkan urutan henti yang digunakan. Saat pola ini ditemukan, LLM akan berhenti menghasilkan teks. Beberapa pola henti dapat diatur dengan menentukan beberapa parameter stop terpisah dalam modelfile.", "settings.personal.general.parameters.stopSequence.label": "Hentikan Urutan", - "settings.personal.general.parameters.streamChatResponse.description": "", - "settings.personal.general.parameters.streamChatResponse.label": "", - "settings.personal.general.parameters.streamDeltaChunkSize.description": "", - "settings.personal.general.parameters.streamDeltaChunkSize.label": "", - "settings.personal.general.parameters.temperature.description": "", + "settings.personal.general.parameters.streamChatResponse.description": "Saat diaktifkan, model merespons setiap pesan obrolan secara real-time segera setelah pengguna mengirim pesan. Mode ini berguna untuk obrolan langsung, tetapi dapat memengaruhi performa pada perangkat keras yang lebih lambat.", + "settings.personal.general.parameters.streamChatResponse.label": "Streaming Respons Obrolan", + "settings.personal.general.parameters.streamDeltaChunkSize.description": "Ukuran potongan delta stream untuk model. Memperbesar ukuran potongan membuat model merespons dengan potongan teks yang lebih besar sekaligus.", + "settings.personal.general.parameters.streamDeltaChunkSize.label": "Ukuran Chunk Delta Stream", + "settings.personal.general.parameters.temperature.description": "Suhu model. Menaikkan suhu membuat jawaban model lebih kreatif.", "settings.personal.general.parameters.temperature.label": "Suhu", - "settings.personal.general.parameters.tfsZ.label": "", - "settings.personal.general.parameters.think.label": "", - "settings.personal.general.parameters.topK.label": "", - "settings.personal.general.parameters.topP.label": "", - "settings.personal.general.parameters.useMlock.label": "", - "settings.personal.general.parameters.useMmap.label": "", + "settings.personal.general.parameters.tfsZ.label": "tfs_z", + "settings.personal.general.parameters.think.label": "think", + "settings.personal.general.parameters.topK.label": "top_k", + "settings.personal.general.parameters.topP.label": "top_p", + "settings.personal.general.parameters.useMlock.label": "use_mlock", + "settings.personal.general.parameters.useMmap.label": "use_mmap", "settings.personal.general.sections.advancedParameters.title": "Parameter Lanjutan", - "settings.personal.general.sections.systemPrompt.description": "", + "settings.personal.general.sections.systemPrompt.description": "Atur prompt sistem default untuk obrolan baru.", "settings.personal.general.sections.systemPrompt.title": "Permintaan Sistem", "settings.personal.general.sections.webuiSettings.title": "Pengaturan WebUI", - "settings.personal.general.theme.description": "", + "settings.personal.general.theme.description": "Pilih tema warna yang digunakan antarmuka.", "settings.personal.general.theme.label": "Tema", "settings.personal.general.title": "Umum", - "settings.personal.interface.accessibilityMode.description": "", - "settings.personal.interface.accessibilityMode.label": "", - "settings.personal.interface.allowUserLocation.description": "", + "settings.personal.interface.accessibilityMode.description": "Aktifkan peningkatan visual yang berfokus pada aksesibilitas.", + "settings.personal.interface.accessibilityMode.label": "Mode Aksesibilitas", + "settings.personal.interface.allowUserLocation.description": "Bagikan lokasi Anda saat ini dengan fitur yang membutuhkannya.", "settings.personal.interface.allowUserLocation.label": "Izinkan Lokasi Pengguna", - "settings.personal.interface.allowVoiceInterruptionInCall.description": "", + "settings.personal.interface.allowVoiceInterruptionInCall.description": "Izinkan suara memotong ucapan asisten selama panggilan suara.", "settings.personal.interface.allowVoiceInterruptionInCall.label": "Izinkan Gangguan Suara dalam Panggilan", - "settings.personal.interface.alwaysCollapseCodeBlocks.description": "", - "settings.personal.interface.alwaysCollapseCodeBlocks.label": "", - "settings.personal.interface.alwaysExpandDetails.description": "", - "settings.personal.interface.alwaysExpandDetails.label": "", - "settings.personal.interface.android.label": "", - "settings.personal.interface.autoCopyResponseToClipboard.description": "", + "settings.personal.interface.alwaysCollapseCodeBlocks.description": "Ciutkan blok kode secara default.", + "settings.personal.interface.alwaysCollapseCodeBlocks.label": "Selalu Ciutkan Blok Kode", + "settings.personal.interface.alwaysExpandDetails.description": "Buka blok rincian secara default.", + "settings.personal.interface.alwaysExpandDetails.label": "Selalu Perluas Rincian", + "settings.personal.interface.android.label": "Android", + "settings.personal.interface.autoCopyResponseToClipboard.description": "Salin respons asisten terbaru ke papan klip secara otomatis setelah selesai.", "settings.personal.interface.autoCopyResponseToClipboard.label": "Tanggapan Salin Otomatis ke Papan Klip", - "settings.personal.interface.chatBackgroundImage.description": "", + "settings.personal.interface.chatBackgroundImage.description": "Unggah atau atur ulang gambar latar belakang konten obrolan.", "settings.personal.interface.chatBackgroundImage.label": "Gambar Latar Belakang Obrolan", - "settings.personal.interface.chatBubbleUi.description": "", + "settings.personal.interface.chatBubbleUi.description": "Tampilkan pesan dalam wadah gelembung yang ringkas.", "settings.personal.interface.chatBubbleUi.label": "UI Gelembung Obrolan", - "settings.personal.interface.chatDirection.description": "", + "settings.personal.interface.chatDirection.description": "Pilih arah teks: otomatis, kiri-ke-kanan, atau kanan-ke-kiri.", "settings.personal.interface.chatDirection.label": "Arah obrolan", - "settings.personal.interface.chatHoverPreviews.description": "", - "settings.personal.interface.chatHoverPreviews.label": "", - "settings.personal.interface.chatTagsAutoGeneration.description": "", - "settings.personal.interface.chatTagsAutoGeneration.label": "", - "settings.personal.interface.compressImagesInChannels.description": "", - "settings.personal.interface.compressImagesInChannels.label": "", - "settings.personal.interface.copyFormattedText.description": "", - "settings.personal.interface.copyFormattedText.label": "", - "settings.personal.interface.decreaseUiScale.label": "", - "settings.personal.interface.defaultUploadMode.description": "", - "settings.personal.interface.defaultUploadMode.label": "", - "settings.personal.interface.detectArtifactsAutomatically.description": "", - "settings.personal.interface.detectArtifactsAutomatically.label": "", - "settings.personal.interface.displayChatTitleInTab.description": "", - "settings.personal.interface.displayChatTitleInTab.label": "", - "settings.personal.interface.displayEmojiInCall.description": "", + "settings.personal.interface.chatHoverPreviews.description": "Tampilkan pratinjau mengambang dari pesan terbaru saat mengarahkan kursor ke obrolan di bilah sisi.", + "settings.personal.interface.chatHoverPreviews.label": "Pratinjau Hover Obrolan", + "settings.personal.interface.chatTagsAutoGeneration.description": "Buat tag untuk obrolan secara otomatis.", + "settings.personal.interface.chatTagsAutoGeneration.label": "Pembuatan Tag Obrolan Otomatis", + "settings.personal.interface.compressImagesInChannels.description": "Terapkan kompresi gambar untuk unggahan di saluran juga.", + "settings.personal.interface.compressImagesInChannels.label": "Kompres Gambar di Saluran", + "settings.personal.interface.copyFormattedText.description": "Salin konten berformat kaya alih-alih teks biasa.", + "settings.personal.interface.copyFormattedText.label": "Salin Teks Berformat", + "settings.personal.interface.decreaseUiScale.label": "Perkecil Skala UI", + "settings.personal.interface.defaultUploadMode.description": "Lampirkan berkas dengan konten lengkap atau pengambilan terfokus secara bawaan.", + "settings.personal.interface.defaultUploadMode.label": "Mode Unggah Bawaan", + "settings.personal.interface.detectArtifactsAutomatically.description": "Deteksi artefak yang dihasilkan dan tampilkan di ruang kerja artefak.", + "settings.personal.interface.detectArtifactsAutomatically.label": "Deteksi Artefak Otomatis", + "settings.personal.interface.displayChatTitleInTab.description": "Gunakan judul obrolan aktif sebagai judul tab peramban.", + "settings.personal.interface.displayChatTitleInTab.label": "Tampilkan Judul Obrolan di Tab", + "settings.personal.interface.displayEmojiInCall.description": "Tampilkan umpan balik emoji di antarmuka panggilan.", "settings.personal.interface.displayEmojiInCall.label": "Menampilkan Emoji dalam Panggilan", - "settings.personal.interface.displayMultiModelResponsesInTabs.description": "", - "settings.personal.interface.displayMultiModelResponsesInTabs.label": "", - "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "", + "settings.personal.interface.displayMultiModelResponsesInTabs.description": "Kelompokkan respons multi-model ke dalam tab.", + "settings.personal.interface.displayMultiModelResponsesInTabs.label": "Tampilkan Respons Multi-model di Tab", + "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "Tampilkan label nama pengguna alih-alih Anda di gelembung obrolan.", "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "Menampilkan nama pengguna, bukan Anda di Obrolan", - "settings.personal.interface.enableMessageQueue.description": "", - "settings.personal.interface.enableMessageQueue.label": "", - "settings.personal.interface.enterKeyBehavior.description": "", - "settings.personal.interface.enterKeyBehavior.label": "", - "settings.personal.interface.fadeEffectForStreamingText.description": "", - "settings.personal.interface.fadeEffectForStreamingText.label": "", - "settings.personal.interface.floatingQuickActions.label": "", - "settings.personal.interface.followUpAutoGeneration.description": "", - "settings.personal.interface.followUpAutoGeneration.label": "", - "settings.personal.interface.fontFamily.description": "", - "settings.personal.interface.fontFamily.label": "", - "settings.personal.interface.hapticFeedback.label": "", - "settings.personal.interface.iframeSandboxAllowDownloads.description": "", - "settings.personal.interface.iframeSandboxAllowDownloads.label": "", - "settings.personal.interface.iframeSandboxAllowForms.description": "", - "settings.personal.interface.iframeSandboxAllowForms.label": "", - "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "", - "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "", - "settings.personal.interface.iframeSandboxAllowScripts.description": "", - "settings.personal.interface.iframeSandboxAllowScripts.label": "", - "settings.personal.interface.imageCompression.label": "", - "settings.personal.interface.increaseUiScale.label": "", - "settings.personal.interface.insertFollowUpPromptToInput.description": "", - "settings.personal.interface.insertFollowUpPromptToInput.label": "", - "settings.personal.interface.insertPromptAsRichText.description": "", - "settings.personal.interface.insertPromptAsRichText.label": "", - "settings.personal.interface.insertSuggestionPromptToInput.description": "", - "settings.personal.interface.insertSuggestionPromptToInput.label": "", - "settings.personal.interface.keepFollowUpPromptsInChat.description": "", - "settings.personal.interface.keepFollowUpPromptsInChat.label": "", - "settings.personal.interface.landingPageMode.description": "", - "settings.personal.interface.landingPageMode.label": "", - "settings.personal.interface.openModalToManageFloatingQuickActions.label": "", - "settings.personal.interface.openModalToManageImageCompression.label": "", - "settings.personal.interface.pasteLargeTextAsFile.description": "", - "settings.personal.interface.pasteLargeTextAsFile.label": "", - "settings.personal.interface.promptAutocompletion.description": "", - "settings.personal.interface.promptAutocompletion.label": "", - "settings.personal.interface.regenerateMenu.description": "", - "settings.personal.interface.regenerateMenu.label": "", - "settings.personal.interface.renderMarkdownInAssistantMessages.description": "", - "settings.personal.interface.renderMarkdownInAssistantMessages.label": "", - "settings.personal.interface.renderMarkdownInPreviews.description": "", - "settings.personal.interface.renderMarkdownInPreviews.label": "", - "settings.personal.interface.renderMarkdownInUserMessages.description": "", - "settings.personal.interface.renderMarkdownInUserMessages.label": "", - "settings.personal.interface.responseAutoScroll.description": "", - "settings.personal.interface.responseAutoScroll.label": "", - "settings.personal.interface.richTextInputForChat.description": "", - "settings.personal.interface.richTextInputForChat.label": "", - "settings.personal.interface.scrollOnBranchChange.description": "", - "settings.personal.interface.scrollOnBranchChange.label": "", - "settings.personal.interface.sections.artifacts.title": "", + "settings.personal.interface.enableMessageQueue.description": "Antrekan pesan keluar alih-alih memotong respons aktif.", + "settings.personal.interface.enableMessageQueue.label": "Aktifkan Antrean Pesan", + "settings.personal.interface.enterKeyBehavior.description": "Pilih apakah Enter langsung mengirim pesan atau menggunakan Ctrl+Enter.", + "settings.personal.interface.enterKeyBehavior.label": "Perilaku Tombol Enter", + "settings.personal.interface.fadeEffectForStreamingText.description": "Beri efek memudar pada teks streaming saat tiba.", + "settings.personal.interface.fadeEffectForStreamingText.label": "Efek Memudar untuk Teks Streaming", + "settings.personal.interface.floatingQuickActions.label": "Tindakan Cepat Melayang", + "settings.personal.interface.followUpAutoGeneration.description": "Hasilkan saran prompt lanjutan setelah respons.", + "settings.personal.interface.followUpAutoGeneration.label": "Pembuatan Otomatis Prompt Lanjutan", + "settings.personal.interface.fontFamily.description": "Gunakan keluarga font lokal untuk antarmuka aplikasi.", + "settings.personal.interface.fontFamily.label": "Keluarga Font", + "settings.personal.interface.hapticFeedback.label": "Umpan Balik Haptik", + "settings.personal.interface.iframeSandboxAllowDownloads.description": "Izinkan unduhan di dalam iframe sandbox.", + "settings.personal.interface.iframeSandboxAllowDownloads.label": "Sandbox iframe Izinkan Unduhan", + "settings.personal.interface.iframeSandboxAllowForms.description": "Izinkan formulir di dalam iframe artefak sandbox.", + "settings.personal.interface.iframeSandboxAllowForms.label": "Sandbox iframe Izinkan Formulir", + "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "Izinkan artefak mengakses API peramban same-origin di dalam sandbox.", + "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "Sandbox iframe Izinkan Same Origin", + "settings.personal.interface.iframeSandboxAllowScripts.description": "Izinkan skrip di dalam iframe sandbox.", + "settings.personal.interface.iframeSandboxAllowScripts.label": "Sandbox iframe Izinkan Skrip", + "settings.personal.interface.imageCompression.label": "Kompresi Gambar", + "settings.personal.interface.increaseUiScale.label": "Tingkatkan Skala UI", + "settings.personal.interface.insertFollowUpPromptToInput.description": "Sisipkan prompt lanjutan yang dipilih langsung ke kolom input.", + "settings.personal.interface.insertFollowUpPromptToInput.label": "Sisipkan Prompt Lanjutan ke Input", + "settings.personal.interface.insertPromptAsRichText.description": "Tempel prompt yang disisipkan sebagai teks kaya jika memungkinkan.", + "settings.personal.interface.insertPromptAsRichText.label": "Sisipkan Prompt sebagai Teks Kaya", + "settings.personal.interface.insertSuggestionPromptToInput.description": "Masukkan teks saran yang dipilih ke kolom input.", + "settings.personal.interface.insertSuggestionPromptToInput.label": "Sisipkan Prompt Saran ke Input", + "settings.personal.interface.keepFollowUpPromptsInChat.description": "Tetap tampilkan prompt lanjutan yang dihasilkan di dalam obrolan.", + "settings.personal.interface.keepFollowUpPromptsInChat.label": "Pertahankan Prompt Lanjutan di Obrolan", + "settings.personal.interface.landingPageMode.description": "Pilih apakah aplikasi terbuka ke tampilan beranda default atau obrolan.", + "settings.personal.interface.landingPageMode.label": "Mode Halaman Arahan", + "settings.personal.interface.openModalToManageFloatingQuickActions.label": "Buka Modal untuk Mengelola Tindakan Cepat Melayang", + "settings.personal.interface.openModalToManageImageCompression.label": "Buka Modal untuk Mengelola Kompresi Gambar", + "settings.personal.interface.pasteLargeTextAsFile.description": "Ubah teks panjang yang ditempel menjadi lampiran berkas.", + "settings.personal.interface.pasteLargeTextAsFile.label": "Tempel Teks Panjang sebagai Berkas", + "settings.personal.interface.promptAutocompletion.description": "Sarankan pelengkapan saat menyusun prompt.", + "settings.personal.interface.promptAutocompletion.label": "Pelengkapan Otomatis Prompt", + "settings.personal.interface.regenerateMenu.description": "Tampilkan menu tindakan buat ulang untuk respons asisten.", + "settings.personal.interface.regenerateMenu.label": "Menu Buat Ulang", + "settings.personal.interface.renderMarkdownInAssistantMessages.description": "Format sintaksis Markdown dalam respons asisten.", + "settings.personal.interface.renderMarkdownInAssistantMessages.label": "Render Markdown di Pesan Asisten", + "settings.personal.interface.renderMarkdownInPreviews.description": "Format Markdown dalam pratinjau dan antarmuka konten ringkas.", + "settings.personal.interface.renderMarkdownInPreviews.label": "Render Markdown di Pratinjau", + "settings.personal.interface.renderMarkdownInUserMessages.description": "Format sintaksis Markdown dalam pesan Anda.", + "settings.personal.interface.renderMarkdownInUserMessages.label": "Render Markdown di Pesan Pengguna", + "settings.personal.interface.responseAutoScroll.description": "Ikuti respons asisten saat dibuat.", + "settings.personal.interface.responseAutoScroll.label": "Gulir Otomatis Respons", + "settings.personal.interface.richTextInputForChat.description": "Gunakan penyusun teks kaya alih-alih area teks biasa.", + "settings.personal.interface.richTextInputForChat.label": "Input Teks Kaya untuk Obrolan", + "settings.personal.interface.scrollOnBranchChange.description": "Gulir ke cabang aktif saat beralih cabang respons.", + "settings.personal.interface.scrollOnBranchChange.label": "Gulir Saat Penggantian Cabang", + "settings.personal.interface.sections.artifacts.title": "Artefak", "settings.personal.interface.sections.chat.title": "Obrolan", "settings.personal.interface.sections.file.title": "Berkas", - "settings.personal.interface.sections.input.title": "", + "settings.personal.interface.sections.input.title": "Input", "settings.personal.interface.sections.ui.title": "UI", "settings.personal.interface.sections.voice.title": "Suara", - "settings.personal.interface.showFilesOnTerminalSelect.description": "", - "settings.personal.interface.showFilesOnTerminalSelect.label": "", - "settings.personal.interface.showFormattingToolbar.description": "", - "settings.personal.interface.showFormattingToolbar.label": "", - "settings.personal.interface.stylizedPdfExport.description": "", - "settings.personal.interface.stylizedPdfExport.label": "", - "settings.personal.interface.temporaryChatByDefault.description": "", - "settings.personal.interface.temporaryChatByDefault.label": "", - "settings.personal.interface.terminalFileDisplay.description": "", - "settings.personal.interface.terminalFileDisplay.label": "", - "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "", - "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "", + "settings.personal.interface.showFilesOnTerminalSelect.description": "Buka penjelajah berkas setelah memilih terminal.", + "settings.personal.interface.showFilesOnTerminalSelect.label": "Tampilkan Berkas saat Terminal Dipilih", + "settings.personal.interface.showFormattingToolbar.description": "Tampilkan bilah pemformatan pada penyusun teks kaya.", + "settings.personal.interface.showFormattingToolbar.label": "Tampilkan Bilah Alat Pemformatan", + "settings.personal.interface.stylizedPdfExport.description": "Gunakan pemformatan bergaya saat mengekspor obrolan ke PDF.", + "settings.personal.interface.stylizedPdfExport.label": "Ekspor PDF Bergaya", + "settings.personal.interface.temporaryChatByDefault.description": "Mulai obrolan baru sebagai obrolan sementara secara default.", + "settings.personal.interface.temporaryChatByDefault.label": "Obrolan Sementara secara Default", + "settings.personal.interface.terminalFileDisplay.description": "Pilih lokasi default kemunculan hasil display_file terminal.", + "settings.personal.interface.terminalFileDisplay.label": "Tampilan Berkas Terminal", + "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "Izinkan pratinjau terminal mengakses API browser same-origin.", + "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "Izinkan Same-Origin pada Pratinjau Terminal", "settings.personal.interface.title": "Antarmuka", - "settings.personal.interface.titleAutoGeneration.description": "", + "settings.personal.interface.titleAutoGeneration.description": "Hasilkan judul obrolan secara otomatis dari konten percakapan.", "settings.personal.interface.titleAutoGeneration.label": "Pembuatan Judul Secara Otomatis", - "settings.personal.interface.toastNotificationsForNewUpdates.description": "", - "settings.personal.interface.toastNotificationsForNewUpdates.label": "", - "settings.personal.interface.uiScale.label": "", - "settings.personal.interface.webSearchInChat.description": "", - "settings.personal.interface.webSearchInChat.label": "", - "settings.personal.interface.widescreenMode.description": "", + "settings.personal.interface.toastNotificationsForNewUpdates.description": "Tampilkan notifikasi toast pembaruan kepada admin saat versi baru tersedia.", + "settings.personal.interface.toastNotificationsForNewUpdates.label": "Notifikasi Toast untuk Pembaruan Baru", + "settings.personal.interface.uiScale.label": "Skala UI", + "settings.personal.interface.webSearchInChat.description": "Atur ketersediaan pencarian web untuk obrolan baru.", + "settings.personal.interface.webSearchInChat.label": "Pencarian Web di Obrolan", + "settings.personal.interface.widescreenMode.description": "Gunakan tata letak obrolan yang lebih lebar pada layar besar.", "settings.personal.interface.widescreenMode.label": "Mode Layar Lebar", - "settings.personal.notifications.addNotificationTarget.label": "", - "settings.personal.notifications.browserNotifications.label": "", - "settings.personal.notifications.notificationSound.label": "", - "settings.personal.notifications.notificationTargets.label": "", + "settings.personal.notifications.addNotificationTarget.label": "Tambah Target Notifikasi", + "settings.personal.notifications.browserNotifications.label": "Notifikasi Browser", + "settings.personal.notifications.notificationSound.label": "Suara Notifikasi", + "settings.personal.notifications.notificationTargets.label": "Target Notifikasi", "settings.personal.notifications.title": "Pemberitahuan", "settings.personal.personalization.clearMemory.label": "Menghapus memori", "settings.personal.personalization.manageMemories.label": "Mengelola", "settings.personal.personalization.memory.description": "Anda dapat mempersonalisasi interaksi Anda dengan LLM dengan menambahkan kenangan melalui tombol 'Kelola' di bawah ini, sehingga lebih bermanfaat dan disesuaikan untuk Anda.", "settings.personal.personalization.memory.label": "Memori", "settings.personal.personalization.noResultsFound.description": "Memori yang dapat diakses oleh LLM akan ditampilkan di sini.", - "settings.personal.personalization.savedMemories.label": "", + "settings.personal.personalization.savedMemories.label": "Memori Tersimpan", "settings.personal.personalization.sections.memory.title": "Memori", "settings.personal.personalization.title": "Personalisasi", - "settings.personal.shortcuts.acceptAutocomplete.label": "", - "settings.personal.shortcuts.addPrompt.label": "", - "settings.personal.shortcuts.allowToolCall.label": "", - "settings.personal.shortcuts.attachFile.label": "", - "settings.personal.shortcuts.closeModal.label": "", + "settings.personal.shortcuts.acceptAutocomplete.label": "Terima Pembuatan Pelengkapan Otomatis\\nLompat ke Variabel Prompt", + "settings.personal.shortcuts.addPrompt.label": "Tambah Prompt Kustom", + "settings.personal.shortcuts.allowToolCall.label": "Izinkan Panggilan Alat", + "settings.personal.shortcuts.attachFile.label": "Lampirkan Berkas dari Pengetahuan", + "settings.personal.shortcuts.closeModal.label": "Tutup Modal", "settings.personal.shortcuts.command.label": "Perintah", - "settings.personal.shortcuts.copyLastCodeBlock.label": "", - "settings.personal.shortcuts.copyLastResponse.label": "", + "settings.personal.shortcuts.copyLastCodeBlock.label": "Salin Blok Kode Terakhir", + "settings.personal.shortcuts.copyLastResponse.label": "Salin Respons Terakhir", "settings.personal.shortcuts.deleteChat.label": "Menghapus Obrolan", - "settings.personal.shortcuts.denyToolCall.label": "", - "settings.personal.shortcuts.enableKeyboardShortcuts.description": "", - "settings.personal.shortcuts.enableKeyboardShortcuts.label": "", - "settings.personal.shortcuts.focusInput.label": "", - "settings.personal.shortcuts.generateMessagePair.label": "", - "settings.personal.shortcuts.navigateChatDown.label": "", - "settings.personal.shortcuts.navigateChatUp.label": "", - "settings.personal.shortcuts.navigatePromptHistoryUp.label": "", + "settings.personal.shortcuts.denyToolCall.label": "Tolak Panggilan Alat", + "settings.personal.shortcuts.enableKeyboardShortcuts.description": "Saat dinonaktifkan, pintasan keyboard tidak akan memicu aksi apa pun.", + "settings.personal.shortcuts.enableKeyboardShortcuts.label": "Aktifkan Pintasan Keyboard", + "settings.personal.shortcuts.focusInput.label": "Fokuskan Input Obrolan", + "settings.personal.shortcuts.generateMessagePair.label": "Hasilkan Pasangan Pesan", + "settings.personal.shortcuts.navigateChatDown.label": "Beralih ke Obrolan Berikutnya", + "settings.personal.shortcuts.navigateChatUp.label": "Beralih ke Obrolan Sebelumnya", + "settings.personal.shortcuts.navigatePromptHistoryUp.label": "Sunting Pesan Terakhir", "settings.personal.shortcuts.newChat.label": "Obrolan Baru", - "settings.personal.shortcuts.newTemporaryChat.label": "", - "settings.personal.shortcuts.openModelSelector.label": "", - "settings.personal.shortcuts.openSettings.label": "", - "settings.personal.shortcuts.preventFileCreation.label": "", - "settings.personal.shortcuts.regenerateResponse.label": "", - "settings.personal.shortcuts.resetDefaults.label": "", + "settings.personal.shortcuts.newTemporaryChat.label": "Obrolan Sementara Baru", + "settings.personal.shortcuts.openModelSelector.label": "Buka Pemilih Model", + "settings.personal.shortcuts.openSettings.label": "Buka Pengaturan", + "settings.personal.shortcuts.preventFileCreation.label": "Cegah Pembuatan Berkas", + "settings.personal.shortcuts.regenerateResponse.label": "Buat Ulang Respons", + "settings.personal.shortcuts.resetDefaults.label": "Setel Ulang ke Default", "settings.personal.shortcuts.search.label": "Cari", - "settings.personal.shortcuts.showShortcuts.label": "", - "settings.personal.shortcuts.stopGenerating.label": "", - "settings.personal.shortcuts.talkToModel.label": "", - "settings.personal.shortcuts.title": "", - "settings.personal.shortcuts.toggleControls.label": "", - "settings.personal.shortcuts.toggleDictation.label": "", - "settings.personal.shortcuts.toggleMute.label": "", - "settings.personal.shortcuts.toggleSidebar.label": "", - "settings.personal.tools.addConnection.description": "", - "settings.personal.tools.addConnection.label": "", - "settings.personal.tools.openApi.label": "", - "settings.personal.tools.sections.externalToolServers.title": "", - "settings.personal.tools.terminals.addConnection.description": "", - "settings.personal.tools.terminals.addConnection.label": "", - "settings.personal.tools.terminals.sections.openTerminal.title": "", - "settings.personal.tools.title": "", - "settings.personal.usage.sections.activity.title": "", - "settings.personal.usage.sections.activityInsights.title": "", - "settings.personal.usage.sections.mostUsedTools.title": "", - "settings.personal.usage.sections.overview.title": "", - "settings.personal.usage.sections.topModels.title": "", - "settings.personal.usage.title": "", + "settings.personal.shortcuts.showShortcuts.label": "Tampilkan Pintasan", + "settings.personal.shortcuts.stopGenerating.label": "Hentikan Pembuatan", + "settings.personal.shortcuts.talkToModel.label": "Bicara dengan Model", + "settings.personal.shortcuts.title": "Papan Ketik", + "settings.personal.shortcuts.toggleControls.label": "Alihkan Kontrol", + "settings.personal.shortcuts.toggleDictation.label": "Alihkan Dikte", + "settings.personal.shortcuts.toggleMute.label": "Alihkan Senyap", + "settings.personal.shortcuts.toggleSidebar.label": "Alihkan Bilah Sisi", + "settings.personal.tools.addConnection.description": "Hubungkan ke server alat eksternal yang kompatibel dengan OpenAPI milik Anda.", + "settings.personal.tools.addConnection.label": "Tambah Koneksi", + "settings.personal.tools.openApi.label": "OpenAPI", + "settings.personal.tools.sections.externalToolServers.title": "Server Alat Eksternal", + "settings.personal.tools.terminals.addConnection.description": "Hubungkan ke instans Open Terminal untuk menelusuri berkas dan menggunakannya sebagai alat yang selalu aktif. Hanya satu yang dapat aktif dalam satu waktu.", + "settings.personal.tools.terminals.addConnection.label": "Tambah Koneksi", + "settings.personal.tools.terminals.sections.openTerminal.title": "Open Terminal", + "settings.personal.tools.title": "Integrasi", + "settings.personal.usage.sections.activity.title": "Aktivitas", + "settings.personal.usage.sections.activityInsights.title": "Wawasan aktivitas", + "settings.personal.usage.sections.mostUsedTools.title": "Alat paling sering digunakan", + "settings.personal.usage.sections.overview.title": "Ringkasan", + "settings.personal.usage.sections.topModels.title": "Model teratas", + "settings.personal.usage.title": "Penggunaan", "Share": "Berbagi", "Share Chat": "Bagikan Obrolan", - "Share link copied to clipboard.": "", + "Share link copied to clipboard.": "Tautan bagikan disalin ke papan klip.", "Share to Open WebUI Community": "Bagikan ke Komunitas OpenWebUI", - "Share your background and interests": "", - "Shared": "", - "Shared Chats": "", - "Shared with you": "", - "Sharing Permissions": "", - "Shell": "", - "Shorten older messages so this chat can keep going.": "", + "Share your background and interests": "Bagikan latar belakang dan minat Anda", + "Shared": "Dibagikan", + "Shared Chats": "Obrolan Dibagikan", + "Shared with you": "Dibagikan kepada Anda", + "Sharing Permissions": "Izin Berbagi", + "Shell": "Shell", + "Shorten older messages so this chat can keep going.": "Perpendek pesan lama agar obrolan ini dapat terus berlanjut.", "Show": "Tampilkan", - "Show \"What's New\" Modal on Login": "", - "Show All": "", - "Show all ({{COUNT}} characters)": "", - "Show Files": "", - "Show Hidden Files": "", - "Show image preview": "", - "Show me a code snippet": "", - "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "", - "Show Model": "", - "Show more": "", - "Show or switch the current model.": "", - "Show Shortcuts": "", - "Show the floating quick-action toolbar in chat.": "", + "Show \"What's New\" Modal on Login": "Tampilkan Modal \"Apa yang Baru\" saat Masuk", + "Show All": "Tampilkan Semua", + "Show all ({{COUNT}} characters)": "Tampilkan semua ({{COUNT}} karakter)", + "Show Files": "Tampilkan Berkas", + "Show Hidden Files": "Tampilkan Berkas Tersembunyi", + "Show image preview": "Tampilkan pratinjau gambar", + "Show me a code snippet": "Tunjukkan cuplikan kode", + "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Tunjukkan cuplikan kode sticky header situs web dalam CSS dan JavaScript.", + "Show Model": "Tampilkan Model", + "Show more": "Tampilkan lebih banyak", + "Show or switch the current model.": "Tampilkan atau beralih model saat ini.", + "Show Shortcuts": "Tampilkan Pintasan", + "Show the floating quick-action toolbar in chat.": "Tampilkan bilah alat tindakan cepat mengambang di obrolan.", "Show your support!": "Tunjukkan dukungan Anda!", "Showcased creativity": "Menampilkan kreativitas", - "Sidebar": "", + "Sidebar": "Bilah Samping", "Sign in": "Masuk", - "Sign in to {{WEBUI_NAME}}": "", - "Sign in to {{WEBUI_NAME}} with LDAP": "", + "Sign in to {{WEBUI_NAME}}": "Masuk ke {{WEBUI_NAME}}", + "Sign in to {{WEBUI_NAME}} with LDAP": "Masuk ke {{WEBUI_NAME}} dengan LDAP", "Sign Out": "Keluar", "Sign up": "Daftar", - "Sign up to {{WEBUI_NAME}}": "", - "Signing in to {{WEBUI_NAME}}": "", - "simultaneous sub-agents": "", - "Single": "", - "Sink List": "", - "Size": "", - "sk-1234": "", - "Skill created successfully": "", - "Skill deleted successfully": "", - "Skill Description": "", - "Skill ID": "", - "Skill imported successfully": "", - "Skill Instructions": "", - "Skill Menu": "", - "Skill Name": "", - "Skill updated successfully": "", - "Skills": "", - "Skills Access": "", - "Skills Public Sharing": "", - "Skills Sharing": "", - "Skip to main content": "", - "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "", - "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "", - "Something went wrong :/": "", - "Sonar": "", - "Sonar Deep Research": "", - "Sonar Pro": "", - "Sonar Reasoning": "", - "Sonar Reasoning Pro": "", - "Sort": "", + "Sign up to {{WEBUI_NAME}}": "Daftar ke {{WEBUI_NAME}}", + "Signing in to {{WEBUI_NAME}}": "Sedang masuk ke {{WEBUI_NAME}}", + "simultaneous sub-agents": "sub-agen simultan", + "Single": "Tunggal", + "Sink List": "Daftar Sink", + "Size": "Ukuran", + "sk-1234": "sk-1234", + "Skill created successfully": "Keahlian berhasil dibuat", + "Skill deleted successfully": "Keahlian berhasil dihapus", + "Skill Description": "Deskripsi Keahlian", + "Skill ID": "ID Keahlian", + "Skill imported successfully": "Keahlian berhasil diimpor", + "Skill Instructions": "Instruksi Keahlian", + "Skill Menu": "Menu Keahlian", + "Skill Name": "Nama Keahlian", + "Skill updated successfully": "Keahlian berhasil diperbarui", + "Skills": "Keahlian", + "Skills Access": "Akses Keahlian", + "Skills Public Sharing": "Berbagi Publik Keahlian", + "Skills Sharing": "Berbagi Keahlian", + "Skip to main content": "Lewati ke konten utama", + "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "Slim memerlukan layanan eksternal untuk embedding, penyimpanan vektor, dan ekstraksi dokumen. Berkas teks dasar dapat dibaca secara lokal.", + "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "Slim memerlukan penyedia wicara eksternal. Model wicara lokal dan konversi audio tidak tersedia.", + "Something went wrong :/": "Terjadi kesalahan :/", + "Sonar": "Sonar", + "Sonar Deep Research": "Sonar Deep Research", + "Sonar Pro": "Sonar Pro", + "Sonar Reasoning": "Sonar Reasoning", + "Sonar Reasoning Pro": "Sonar Reasoning Pro", + "Sort": "Urutkan", "Source": "Sumber", - "Specific users or groups": "", + "Specific users or groups": "Pengguna atau grup tertentu", "Speech recognition error: {{error}}": "Kesalahan pengenalan suara: {{error}}", - "Speech-to-Text Language": "", - "Sponsor on GitHub": "", - "Staan API Key": "", - "Start a new conversation": "", + "Speech-to-Text Language": "Bahasa Ucapan-ke-Teks", + "Sponsor on GitHub": "Sponsori di GitHub", + "Staan API Key": "Kunci API Staan", + "Start a new conversation": "Mulai percakapan baru", "Start of the channel": "Awal saluran", - "Start Tag": "", - "Start the chat to use this terminal.": "", + "Start Tag": "Tag Awal", + "Start the chat to use this terminal.": "Mulai obrolan untuk menggunakan terminal ini.", "Starting in {{count}} minutes_one": "Mulai dalam {{count}} menit", - "Starting in {{count}} minutes_other": "", - "Starting in 1 minute": "", - "Starting kernel...": "", - "Starting now": "", - "Status": "", - "Status cleared successfully": "", - "Status updated successfully": "", - "Status: check what is running in this chat.": "", + "Starting in {{count}} minutes_other": "Dimulai dalam {{count}} menit", + "Starting in 1 minute": "Dimulai dalam 1 menit", + "Starting kernel...": "Memulai kernel...", + "Starting now": "Mulai sekarang", + "Status": "Status", + "Status cleared successfully": "Status berhasil dibersihkan", + "Status updated successfully": "Status berhasil diperbarui", + "Status: check what is running in this chat.": "Status: periksa apa yang sedang berjalan di obrolan ini.", "STDOUT/STDERR": "STDOUT/STDERR", - "Stop": "", - "Stop before each tool call until you allow or deny it.": "", - "Stop camera": "", - "Stop Download": "", - "Stop Generating": "", - "Storage": "", - "Streamable HTTP": "", - "Strikethrough": "", - "Su_day_of_week": "", - "Submit answers": "", - "Submit question": "", - "Submit suggestion": "", - "Subtitle": "", + "Stop": "Berhenti", + "Stop before each tool call until you allow or deny it.": "Berhenti sebelum setiap pemanggilan alat sampai Anda mengizinkan atau menolaknya.", + "Stop camera": "Hentikan kamera", + "Stop Download": "Hentikan Unduhan", + "Stop Generating": "Hentikan Pembuatan", + "Storage": "Penyimpanan", + "Streamable HTTP": "HTTP Dapat Dialirkan", + "Strikethrough": "Coretan", + "Su_day_of_week": "Min", + "Submit answers": "Kirim jawaban", + "Submit question": "Kirim pertanyaan", + "Submit suggestion": "Kirim saran", + "Subtitle": "Subjudul", "Success": "Berhasil", - "Successfully imported {{userCount}} users.": "", - "Suggest a change": "", + "Successfully imported {{userCount}} users.": "Berhasil mengimpor {{userCount}} pengguna.", + "Suggest a change": "Sarankan perubahan", "Suggested": "Disarankan", - "Suggested prompts": "", - "Summarize this note.": "", - "Support": "", - "Support this plugin:": "", - "Swap": "", - "Switch camera": "", - "Switch to JSON editor": "", - "Switch to visual editor": "", - "Sync": "", - "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", - "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", - "Sync Complete!": "", - "Sync directory": "", - "Sync Failed": "", - "Sync Usage Stats": "", - "Syncing stats...": "", - "Syncing...": "", - "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "", + "Suggested prompts": "Prompt yang disarankan", + "Summarize this note.": "Ringkas catatan ini.", + "Support": "Dukungan", + "Support this plugin:": "Dukung plugin ini:", + "Swap": "Tukar", + "Switch camera": "Ganti kamera", + "Switch to JSON editor": "Beralih ke editor JSON", + "Switch to visual editor": "Beralih ke editor visual", + "Sync": "Sinkronisasi", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "Sinkronkan direktori lokal dengan basis pengetahuan ini. Hanya berkas baru dan yang dimodifikasi yang akan diunggah. Struktur direktori akan dicerminkan.", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "Sinkronisasi selesai: {{added}} ditambahkan, {{modified}} diubah, {{deleted}} dihapus, {{unmodified}} tidak diubah", + "Sync Complete!": "Sinkronisasi Selesai!", + "Sync directory": "Sinkronkan direktori", + "Sync Failed": "Sinkronisasi Gagal", + "Sync Usage Stats": "Sinkronkan Statistik Penggunaan", + "Syncing stats...": "Menyinkronkan statistik...", + "Syncing...": "Menyinkronkan...", + "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "Hanya menyinkronkan obrolan yang memiliki pembaruan setelah tanda waktu sinkronisasi terakhir Anda. Nonaktifkan untuk menyinkronkan ulang semua obrolan.", "System": "Sistem", - "System events only": "", - "System Instructions": "", + "System events only": "Hanya peristiwa sistem", + "System Instructions": "Instruksi Sistem", "System Prompt": "Permintaan Sistem", - "Table": "", - "Tag": "", - "Tags": "", - "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "", - "Talk to Model": "", + "Table": "Tabel", + "Tag": "Tag", + "Tags": "Tag", + "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "Tail free sampling digunakan untuk mengurangi dampak token dengan probabilitas lebih rendah dari keluaran. Nilai yang lebih tinggi (misal: 2.0) akan mengurangi dampak lebih banyak, sedangkan nilai 1.0 menonaktifkan pengaturan ini.", + "Talk to Model": "Bicara dengan Model", "Tap to interrupt": "Ketuk untuk menyela", - "Target ID": "", - "Target ID for notify": "", - "Task List": "", - "Tasks": "", - "tasks completed": "", - "Tell me a fun fact": "", - "Tell me a random fun fact about the Roman Empire": "", + "Target ID": "ID Target", + "Target ID for notify": "ID Target untuk notifikasi", + "Task List": "Daftar Tugas", + "Tasks": "Tugas", + "tasks completed": "tugas selesai", + "Tell me a fun fact": "Beri tahu saya fakta menarik", + "Tell me a random fun fact about the Roman Empire": "Beri tahu saya fakta menarik acak tentang Kekaisaran Romawi", "Tell us more:": "Beri tahu kami lebih lanjut:", - "Temporary": "", - "Temporary Chat": "", - "Temporary: toggle temporary chat for this new chat.": "", - "Terminal": "", - "Terminal Contexts": "", - "Terminal servers saved": "", - "Test": "", - "Test must pass before a source is created.": "", - "Test notification sent.": "", - "Test Query": "", - "Test returned no results.": "", - "Test succeeded.": "", - "Test the source before creating it.": "", - "Test the source before saving it.": "", - "Th_day_of_week": "", + "Temporary": "Sementara", + "Temporary Chat": "Obrolan Sementara", + "Temporary: toggle temporary chat for this new chat.": "Sementara: beralih ke obrolan sementara untuk obrolan baru ini.", + "Terminal": "Terminal", + "Terminal Contexts": "Konteks Terminal", + "Terminal servers saved": "Server terminal disimpan", + "Test": "Uji", + "Test must pass before a source is created.": "Pengujian harus berhasil sebelum sumber dibuat.", + "Test notification sent.": "Notifikasi uji terkirim.", + "Test Query": "Uji Kueri", + "Test returned no results.": "Pengujian tidak mengembalikan hasil.", + "Test succeeded.": "Pengujian berhasil.", + "Test the source before creating it.": "Uji sumber sebelum membuatnya.", + "Test the source before saving it.": "Uji sumber sebelum menyimpannya.", + "Th_day_of_week": "Hari_ke_dalam_minggu", "Thanks for your feedback!": "Terima kasih atas umpan balik Anda!", - "The Application Account DN you bind with for search": "", - "The base to search for users": "", - "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "", - "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "", - "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "", - "The format to return a response in. Format can be json or a JSON schema.": "", - "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "", - "The LDAP attribute that maps to the mail that users use to sign in.": "", - "The LDAP attribute that maps to the username that users use to sign in.": "", - "The notify tool always sends to an enabled target, regardless of automatic event settings.": "", - "The passwords you entered don't quite match. Please double-check and try again.": "", + "The Application Account DN you bind with for search": "DN Akun Aplikasi yang Anda kaitkan untuk pencarian", + "The base to search for users": "Basis untuk mencari pengguna", + "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "Ukuran batch menentukan berapa banyak permintaan teks yang diproses bersamaan sekaligus. Ukuran batch yang lebih besar dapat meningkatkan performa dan kecepatan model, tetapi juga membutuhkan lebih banyak memori.", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Pengembang di balik plugin ini adalah sukarelawan yang berdedikasi dari komunitas. Jika Anda merasa plugin ini bermanfaat, pertimbangkan untuk berkontribusi pada pengembangannya.", + "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Papan peringkat evaluasi didasarkan pada sistem peringkat Elo dan diperbarui secara real-time.", + "The format to return a response in. Format can be json or a JSON schema.": "Format untuk mengembalikan respons. Format dapat berupa json atau skema JSON.", + "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "Bahasa audio input. Memberikan bahasa input dalam format ISO-639-1 (misalnya en) akan meningkatkan akurasi dan latensi. Biarkan kosong untuk mendeteksi bahasa secara otomatis.", + "The LDAP attribute that maps to the mail that users use to sign in.": "Atribut LDAP yang memetakan email yang digunakan pengguna untuk masuk.", + "The LDAP attribute that maps to the username that users use to sign in.": "Atribut LDAP yang memetakan nama pengguna yang digunakan pengguna untuk masuk.", + "The notify tool always sends to an enabled target, regardless of automatic event settings.": "Alat notifikasi selalu mengirim ke target yang diaktifkan, terlepas dari pengaturan peristiwa otomatis.", + "The passwords you entered don't quite match. Please double-check and try again.": "Kata sandi yang Anda masukkan tidak cocok. Silakan periksa kembali dan coba lagi.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Nilai yang diberikan haruslah nilai antara 0,0 (0%) dan 1,0 (100%).", - "There was an error syncing your stats. Please try again.": "", - "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "", - "thinking, output_config": "", + "There was an error syncing your stats. Please try again.": "Terjadi kesalahan saat menyinkronkan statistik Anda. Silakan coba lagi.", + "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "Pengaturan ini dibaca dari variabel lingkungan dan tidak dapat diedit di sini selama {{ENV_VAR}} dinonaktifkan.", + "thinking, output_config": "thinking, output_config", "Thinking...": "Berpikir", "This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak dapat dibatalkan. Apakah Anda ingin melanjutkan?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", - "This chat won't appear in history and your messages will not be saved.": "", - "This folder is empty": "", - "This is a default user permission and will remain enabled.": "", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Saluran ini dibuat pada {{createdAt}}. Ini adalah awal mula dari saluran {{channelName}}.", + "This chat won't appear in history and your messages will not be saved.": "Obrolan ini tidak akan muncul di riwayat dan pesan Anda tidak akan disimpan.", + "This folder is empty": "Folder ini kosong", + "This is a default user permission and will remain enabled.": "Ini adalah izin pengguna bawaan dan akan tetap aktif.", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ini adalah fitur eksperimental, mungkin tidak berfungsi seperti yang diharapkan dan dapat berubah sewaktu-waktu.", - "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "", - "This model is not publicly available. Please select another model.": "", - "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "", - "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", - "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This response was generated by \"{{model}}\"": "", - "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", + "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "Basis pengetahuan ini mengambil data dari sumber yang terhubung. Open WebUI dapat membuat kueri ke dalamnya, tetapi tidak dapat mengunggah, menyinkronkan, mengedit, menghapus, mengatur ulang, atau mengindeks ulang data sumbernya.", + "This model is not publicly available. Please select another model.": "Model ini tidak tersedia untuk publik. Silakan pilih model lain.", + "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Opsi ini mengontrol berapa lama model akan tetap dimuat ke dalam memori setelah permintaan (default: 5m)", + "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Opsi ini mengontrol berapa banyak token yang dipertahankan saat memperbarui konteks. Misalnya, jika diatur ke 2, 2 token terakhir dari konteks percakapan akan dipertahankan. Mempertahankan konteks dapat membantu menjaga kesinambungan percakapan, tetapi dapat mengurangi kemampuan untuk merespons topik baru.", + "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Opsi ini menetapkan jumlah token maksimum yang dapat dihasilkan model dalam responsnya. Meningkatkan batas ini memungkinkan model memberikan jawaban yang lebih panjang, tetapi juga dapat meningkatkan kemungkinan dihasilkannya konten yang tidak membantu atau tidak relevan.", + "This response was generated by \"{{model}}\"": "Respons ini dibuat oleh \"{{model}}\"", + "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Templat ini berisi beberapa placeholder konteks ([context] atau {{CONTEXT}}). Konteks akan disisipkan pada setiap kemunculan.", "This will delete": "Ini akan menghapus", - "This will delete {{NAME}} and all its contents.": "", - "This will delete all models including custom models and cannot be undone.": "", - "This will delete the cached model and cannot be undone.": "", - "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", - "This will revoke the current API key.": "", + "This will delete {{NAME}} and all its contents.": "Ini akan menghapus {{NAME}} dan seluruh isinya.", + "This will delete all models including custom models and cannot be undone.": "Ini akan menghapus semua model termasuk model kustom dan tidak dapat dibatalkan.", + "This will delete the cached model and cannot be undone.": "Ini akan menghapus model dalam cache dan tidak dapat dibatalkan.", + "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Ini akan menghapus kalender \"{{name}}\" dan semua acaranya secara permanen. Tindakan ini tidak dapat dibatalkan.", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "Ini akan menghapus semua file dan direktori dari basis pengetahuan ini. Tindakan ini tidak dapat dibatalkan.", + "This will revoke the current API key.": "Ini akan mencabut kunci API saat ini.", "Thorough explanation": "Penjelasan menyeluruh", - "Thought": "", - "Thought for {{DURATION}}": "", - "Thought for {{DURATION}} seconds": "", - "Thought for less than a second": "", + "Thought": "Berpikir", + "Thought for {{DURATION}}": "Berpikir selama {{DURATION}}", + "Thought for {{DURATION}} seconds": "Berpikir selama {{DURATION}} detik", + "Thought for less than a second": "Berpikir kurang dari satu detik", "Thread": "Utas", - "Through": "", - "Thumbs up/down ratings from users on model responses": "", - "Tika": "", - "Tika 3.x": "", - "Tika 4.x": "", - "Tika Server URL required.": "", - "Tiktoken": "", - "Time": "", - "Timeout": "", - "Timer": "", + "Through": "Melalui", + "Thumbs up/down ratings from users on model responses": "Penilaian suka/tidak suka dari pengguna terhadap respons model", + "Tika": "Tika", + "Tika 3.x": "Tika 3.x", + "Tika 4.x": "Tika 4.x", + "Tika Server URL required.": "URL Server Tika wajib diisi.", + "Tiktoken": "Tiktoken", + "Time": "Waktu", + "Timeout": "Batas Waktu", + "Timer": "Timer", "Title": "Judul", "Title cannot be an empty string.": "Judul tidak boleh berupa string kosong.", - "Title is required": "", + "Title is required": "Judul wajib diisi", "To access the available model names for downloading,": "Untuk mengakses nama model yang tersedia untuk diunduh,", "To access the GGUF models available for downloading,": "Untuk mengakses model GGUF yang tersedia untuk diunduh,", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Untuk mengakses WebUI, hubungi administrator. Admin dapat mengelola status pengguna dari Panel Admin.", - "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "", - "To learn more about available endpoints, visit our documentation.": "", - "To learn more about SpeechT5,": "", - "To see the available CMU Arctic speaker embeddings,": "", - "To select actions here, add them to the \"Functions\" workspace first.": "", - "To select default filters here, enable toggleable filters for this model first.": "", - "To select filters here, add them to the \"Functions\" workspace first.": "", - "To select skills here, add them to the \"Skills\" workspace first.": "", - "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "", + "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Untuk melampirkan basis pengetahuan di sini, tambahkan ke ruang kerja \"Pengetahuan\" terlebih dahulu.", + "To learn more about available endpoints, visit our documentation.": "Untuk mempelajari lebih lanjut tentang endpoint yang tersedia, kunjungi dokumentasi kami.", + "To learn more about SpeechT5,": "Untuk mempelajari lebih lanjut tentang SpeechT5,", + "To see the available CMU Arctic speaker embeddings,": "Untuk melihat embedding penutur CMU Arctic yang tersedia,", + "To select actions here, add them to the \"Functions\" workspace first.": "Untuk memilih tindakan di sini, tambahkan ke ruang kerja \"Fungsi\" terlebih dahulu.", + "To select default filters here, enable toggleable filters for this model first.": "Untuk memilih filter default di sini, aktifkan filter yang dapat dialihkan untuk model ini terlebih dahulu.", + "To select filters here, add them to the \"Functions\" workspace first.": "Untuk memilih filter di sini, tambahkan ke ruang kerja \"Fungsi\" terlebih dahulu.", + "To select skills here, add them to the \"Skills\" workspace first.": "Untuk memilih keterampilan di sini, tambahkan ke ruang kerja \"Keterampilan\" terlebih dahulu.", + "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "Untuk memilih toolkit di sini, tambahkan ke ruang kerja \"Alat\" atau aktifkan server alat terlebih dahulu.", "Today": "Hari ini", - "Today at": "", - "Toggle {{COUNT}} sources": "", - "Toggle 1 source": "", - "Toggle Controls": "", - "Toggle details": "", - "Toggle Dictation": "", - "Toggle Mute": "", - "Toggle Sidebar": "", - "Toggle status history": "", - "Toggle temporary chat for this new chat.": "", - "Toggle whether current connection is active.": "", - "Token": "", - "Token activity": "", - "Token counts are estimates and may not reflect actual API usage": "", - "tokens": "", - "Tokens": "", - "Too verbose": "", - "tool": "", + "Today at": "Hari ini pukul", + "Toggle {{COUNT}} sources": "Alihkan {{COUNT}} sumber", + "Toggle 1 source": "Alihkan 1 sumber", + "Toggle Controls": "Alihkan Kontrol", + "Toggle details": "Alihkan detail", + "Toggle Dictation": "Alihkan Dikte", + "Toggle Mute": "Alihkan Senyap", + "Toggle Sidebar": "Alihkan Bilah Sisi", + "Toggle status history": "Alihkan riwayat status", + "Toggle temporary chat for this new chat.": "Alihkan obrolan sementara untuk obrolan baru ini.", + "Toggle whether current connection is active.": "Alihkan apakah koneksi saat ini aktif.", + "Token": "Token", + "Token activity": "Aktivitas token", + "Token counts are estimates and may not reflect actual API usage": "Jumlah token adalah perkiraan dan mungkin tidak mencerminkan penggunaan API sebenarnya", + "tokens": "token", + "Tokens": "Token", + "Too verbose": "Terlalu panjang", + "tool": "alat", "Tool created successfully": "Alat berhasil dibuat", "Tool deleted successfully": "Alat berhasil dihapus", - "Tool Description": "", - "Tool ID": "", + "Tool Description": "Deskripsi Alat", + "Tool ID": "ID Alat", "Tool imported successfully": "Alat berhasil diimpor", - "tool loops per sub-agent": "", - "Tool Menu": "", - "Tool Name": "", - "Tool Permissions": "", - "Tool Servers": "", + "tool loops per sub-agent": "perulangan alat per sub-agen", + "Tool Menu": "Menu Alat", + "Tool Name": "Nama Alat", + "Tool Permissions": "Izin Alat", + "Tool Servers": "Server Alat", "Tool updated successfully": "Alat berhasil diperbarui", "Tools": "Alat", - "Tools Access": "", - "Tools can execute arbitrary code.": "", - "Tools have a function calling system that allows arbitrary code execution.": "", - "Tools Public Sharing": "", - "Tools Sharing": "", - "Top": "", - "Total chats": "", - "Transformers": "", - "Translation key": "", - "Trial License": "", - "Try adjusting your search or filter to find what you are looking for.": "", - "Try Again": "", + "Tools Access": "Akses Alat", + "Tools can execute arbitrary code.": "Alat dapat mengeksekusi kode arbitrer.", + "Tools have a function calling system that allows arbitrary code execution.": "Alat memiliki sistem pemanggilan fungsi yang memungkinkan eksekusi kode arbitrer.", + "Tools Public Sharing": "Berbagi Publik Alat", + "Tools Sharing": "Berbagi Alat", + "Top": "Atas", + "Total chats": "Total obrolan", + "Transformers": "Transformers", + "Translation key": "Kunci terjemahan", + "Trial License": "Lisensi Uji Coba", + "Try adjusting your search or filter to find what you are looking for.": "Coba sesuaikan pencarian atau filter Anda untuk menemukan yang Anda cari.", + "Try Again": "Coba Lagi", "TTS Voice": "Suara TTS", - "Tu_day_of_week": "", + "Tu_day_of_week": "Sel", "Type": "Ketik", - "Type a model ref": "", - "Type here...": "", + "Type a model ref": "Ketik referensi model", + "Type here...": "Ketik di sini...", "Type Hugging Face Resolve (Download) URL": "Ketik Hugging Face Resolve (Unduh) URL", - "Type your answer": "", - "Uh-oh! There was an issue with the response.": "", - "Unarchive": "", - "Unarchive Chat": "", - "Unassigned": "", - "Underline": "", - "unknown": "", - "Unknown": "", - "Unknown User": "", - "Unload Model": "", - "Unloads {{FROM_NOW}}": "", - "Unmute": "", - "Unpin": "", - "Unpin from Sidebar": "", - "Unread": "", - "Unshare All": "", - "Unshare All Shared Chats": "", - "Unshare Chat": "", - "Unsupported file type.": "", - "Untagged": "", - "Untitled": "", + "Type your answer": "Ketik jawaban Anda", + "Uh-oh! There was an issue with the response.": "Ups! Terjadi masalah dengan respons.", + "Unarchive": "Batal Arsipkan", + "Unarchive Chat": "Batal Arsipkan Obrolan", + "Unassigned": "Tidak Ditetapkan", + "Underline": "Garis Bawah", + "unknown": "tidak diketahui", + "Unknown": "Tidak Diketahui", + "Unknown User": "Pengguna Tidak Dikenal", + "Unload Model": "Lepas Model", + "Unloads {{FROM_NOW}}": "Dilepas {{FROM_NOW}}", + "Unmute": "Batal Bisukan", + "Unpin": "Lepas Sematan", + "Unpin from Sidebar": "Lepas Sematan dari Bilah Sisi", + "Unread": "Belum Dibaca", + "Unshare All": "Batalkan Semua Berbagi", + "Unshare All Shared Chats": "Batalkan Berbagi Semua Obrolan", + "Unshare Chat": "Batalkan Berbagi Obrolan", + "Unsupported file type.": "Jenis berkas tidak didukung.", + "Untagged": "Tanpa Tag", + "Untitled": "Tanpa Judul", "Update": "Memperbarui", - "Update All Models": "", + "Update All Models": "Perbarui Semua Model", "Update and Copy Link": "Perbarui dan Salin Tautan", - "Update for the latest features and improvements.": "", - "Update your status": "", - "Updated": "", + "Update for the latest features and improvements.": "Perbarui untuk fitur dan peningkatan terbaru.", + "Update your status": "Perbarui status Anda", + "Updated": "Diperbarui", "Updated at": "Diperbarui di", - "Updated At": "", - "Updating \"{{modelId}}\"": "", - "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "", + "Updated At": "Diperbarui Pada", + "Updating \"{{modelId}}\"": "Memperbarui \"{{modelId}}\"", + "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Tingkatkan ke paket berlisensi untuk kemampuan lebih lanjut, termasuk tema dan merek kustom, serta dukungan khusus.", "Upload": "Unggah", "Upload a GGUF model": "Unggah model GGUF", - "Upload Audio": "", - "Upload directory": "", - "Upload failed": "", - "Upload failed for {{failed}} of {{total}} files.": "", - "Upload files": "", + "Upload Audio": "Unggah Audio", + "Upload directory": "Unggah direktori", + "Upload failed": "Unggahan gagal", + "Upload failed for {{failed}} of {{total}} files.": "Unggahan gagal untuk {{failed}} dari {{total}} berkas.", + "Upload files": "Unggah berkas", "Upload Files": "Unggah File", - "Upload Folder": "", - "Upload Model": "", - "Upload Photo": "", - "Upload profile image": "", + "Upload Folder": "Unggah Folder", + "Upload Model": "Unggah Model", + "Upload Photo": "Unggah Foto", + "Upload profile image": "Unggah gambar profil", "Upload Progress": "Kemajuan Unggah", - "Uploaded files or images": "", - "Uploading": "", - "Uploading {{current}}/{{total}}: {{file}}": "", - "Uploading...": "", - "URL": "", - "URL is required": "", + "Uploaded files or images": "Berkas atau gambar yang diunggah", + "Uploading": "Mengunggah", + "Uploading {{current}}/{{total}}: {{file}}": "Mengunggah {{current}}/{{total}}: {{file}}", + "Uploading...": "Mengunggah...", + "URL": "URL", + "URL is required": "URL wajib diisi", "URL Mode": "Mode URL", - "Use": "", - "Use a valid event name or pattern like user.*": "", - "Use default": "", - "Use device vibration feedback on supported Android devices.": "", - "Use discovered scopes": "", - "Use groups to organize your users and assign permissions.": "", - "Use segmented retrieval for focused and relevant content extraction.": "", - "Use segmented retrieval for focused and relevant context.": "", - "Use segmented retrieval for focused context.": "", - "Use these in model system prompts as {{example}}.": "", - "Use Web Search?": "", + "Use": "Gunakan", + "Use a valid event name or pattern like user.*": "Gunakan nama event atau pola yang valid seperti user.*", + "Use default": "Gunakan bawaan", + "Use device vibration feedback on supported Android devices.": "Gunakan umpan balik getaran perangkat pada perangkat Android yang didukung.", + "Use discovered scopes": "Gunakan cakupan yang ditemukan", + "Use groups to organize your users and assign permissions.": "Gunakan grup untuk mengatur pengguna dan menetapkan izin.", + "Use segmented retrieval for focused and relevant content extraction.": "Gunakan pengambilan tersegmentasi untuk ekstraksi konten yang terfokus dan relevan.", + "Use segmented retrieval for focused and relevant context.": "Gunakan pengambilan tersegmentasi untuk konteks yang terfokus dan relevan.", + "Use segmented retrieval for focused context.": "Gunakan pengambilan tersegmentasi untuk konteks yang terfokus.", + "Use these in model system prompts as {{example}}.": "Gunakan ini dalam prompt sistem model sebagai {{example}}.", + "Use Web Search?": "Gunakan Pencarian Web?", "user": "pengguna", - "User": "", - "User Activity": "", - "User Count": "", - "User Groups": "", + "User": "Pengguna", + "User Activity": "Aktivitas Pengguna", + "User Count": "Jumlah Pengguna", + "User Groups": "Grup Pengguna", "User location successfully retrieved.": "Lokasi pengguna berhasil diambil.", - "User menu": "", - "User messages": "", - "User not found.": "", - "User Preview": "", - "User ratings (thumbs up/down)": "", - "User Variables": "", - "User Webhooks": "", - "Username": "", - "users": "", + "User menu": "Menu pengguna", + "User messages": "Pesan pengguna", + "User not found.": "Pengguna tidak ditemukan.", + "User Preview": "Pratinjau Pengguna", + "User ratings (thumbs up/down)": "Penilaian pengguna (jempol ke atas/bawah)", + "User Variables": "Variabel Pengguna", + "User Webhooks": "Webhook Pengguna", + "Username": "Nama Pengguna", + "users": "pengguna", "Users": "Pengguna", - "Uses DefaultAzureCredential to authenticate": "", - "Uses defaults": "", - "Uses OAuth 2.1 Dynamic Client Registration": "", - "Using Entire Document": "", - "Using Focused Retrieval": "", - "Using the default arena model with all models. Click the plus button to add custom models.": "", - "Value": "", + "Uses DefaultAzureCredential to authenticate": "Menggunakan DefaultAzureCredential untuk autentikasi", + "Uses defaults": "Menggunakan bawaan", + "Uses OAuth 2.1 Dynamic Client Registration": "Menggunakan Registrasi Klien Dinamis OAuth 2.1", + "Using Entire Document": "Menggunakan Seluruh Dokumen", + "Using Focused Retrieval": "Menggunakan Pengambilan Terfokus", + "Using the default arena model with all models. Click the plus button to add custom models.": "Menggunakan model arena bawaan dengan semua model. Klik tombol tambah untuk menambahkan model kustom.", + "Value": "Nilai", "Valves": "Katup", "Valves updated": "Katup diperbarui", "Valves updated successfully": "Katup berhasil diperbarui", "variable": "variabel", - "Variable key": "", - "Variable keys must be unique.": "", - "Variable keys must use lowercase snake case.": "", - "Variable value": "", - "Vector Field": "", - "Verify Connection": "", - "Version {{selectedVersion}} of {{totalVersions}}": "", - "Version deleted": "", - "Vertical Layout": "", - "Video player": "", - "View channel": "", - "View chat": "", - "View Replies": "", - "View Result from {{NAME}}": "", - "View source: {{name}}": "", - "View source: {{title}}": "", - "Viewport Pinned": "", - "Viewport Unpinned": "", - "Visibility": "", - "Visible": "", - "Visible to all users": "", - "Visual": "", - "vocabulary for a college entrance exam": "", + "Variable key": "Kunci variabel", + "Variable keys must be unique.": "Kunci variabel harus unik.", + "Variable keys must use lowercase snake case.": "Kunci variabel harus menggunakan snake case huruf kecil.", + "Variable value": "Nilai variabel", + "Vector Field": "Bidang Vektor", + "Verify Connection": "Verifikasi Koneksi", + "Version {{selectedVersion}} of {{totalVersions}}": "Versi {{selectedVersion}} dari {{totalVersions}}", + "Version deleted": "Versi dihapus", + "Vertical Layout": "Tata Letak Vertikal", + "Video player": "Pemutar video", + "View channel": "Lihat saluran", + "View chat": "Lihat obrolan", + "View Replies": "Lihat Balasan", + "View Result from {{NAME}}": "Lihat Hasil dari {{NAME}}", + "View source: {{name}}": "Lihat sumber: {{name}}", + "View source: {{title}}": "Lihat sumber: {{title}}", + "Viewport Pinned": "Viewport Disematkan", + "Viewport Unpinned": "Penyematan Viewport Dilepas", + "Visibility": "Visibilitas", + "Visible": "Terlihat", + "Visible to all users": "Terlihat untuk semua pengguna", + "Visual": "Visual", + "vocabulary for a college entrance exam": "kosakata untuk ujian masuk perguruan tinggi", "Voice": "Suara", - "Voice Input": "", - "Voice mode": "", - "Wait for the current response to finish before compacting.": "", - "Wait for the current response to finish before forking.": "", - "Waiting for upload": "", - "Waiting for upload...": "", + "Voice Input": "Input Suara", + "Voice mode": "Mode suara", + "Wait for the current response to finish before compacting.": "Tunggu respons saat ini selesai sebelum memadatkan.", + "Wait for the current response to finish before forking.": "Tunggu respons saat ini selesai sebelum mencabangkan.", + "Waiting for upload": "Menunggu unggahan", + "Waiting for upload...": "Menunggu unggahan...", "Warning": "Peringatan", "Warning:": "Peringatan:", - "Warning: Enabling this will allow users to run scheduled prompts automatically.": "", - "Warning: Enabling this will allow users to upload arbitrary code on the server.": "", - "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "", - "We_day_of_week": "", + "Warning: Enabling this will allow users to run scheduled prompts automatically.": "Peringatan: Mengaktifkan ini akan memungkinkan pengguna menjalankan perintah terjadwal secara otomatis.", + "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Peringatan: Mengaktifkan ini akan mengizinkan pengguna mengunggah kode arbitrer ke server.", + "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Peringatan: Eksekusi Jupyter mengaktifkan eksekusi kode arbitrer, menimbulkan risiko keamanan yang parah—lanjutkan dengan sangat hati-hati.", + "We_day_of_week": "Rab", "Web": "Web", "Web API": "API Web", "Web Search": "Pencarian Web", - "Webhook": "", - "Webhook deleted": "", - "Webhook Name": "", - "Webhook saved": "", - "Webhooks": "", - "Webpage URLs": "", - "WebUI will make requests to \"{{url}}\"": "", - "WebUI will make requests to \"{{url}}/api/chat\"": "", - "WebUI will make requests to \"{{url}}/chat/completions\"": "", - "Week": "", - "Week of": "", - "Weekly": "", - "Weekly at": "", - "Welcome to your AI home.": "", - "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "", - "What are you trying to achieve?": "", - "What are you working on?": "", - "What is NOT shared:": "", - "What is shared:": "", + "Webhook": "Webhook", + "Webhook deleted": "Webhook dihapus", + "Webhook Name": "Nama Webhook", + "Webhook saved": "Webhook disimpan", + "Webhooks": "Webhook", + "Webpage URLs": "URL Halaman Web", + "WebUI will make requests to \"{{url}}\"": "WebUI akan membuat permintaan ke \"{{url}}\"", + "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI akan membuat permintaan ke \"{{url}}/api/chat\"", + "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI akan membuat permintaan ke \"{{url}}/chat/completions\"", + "Week": "Minggu", + "Week of": "Minggu dari", + "Weekly": "Mingguan", + "Weekly at": "Mingguan pada", + "Welcome to your AI home.": "Selamat datang di beranda AI Anda.", + "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Apa 5 ide kreatif yang bisa saya lakukan dengan karya seni anak-anak saya? Saya tidak ingin membuangnya, tetapi barang-barang ini membuat sangat berantakan.", + "What are you trying to achieve?": "Apa yang ingin Anda capai?", + "What are you working on?": "Apa yang sedang Anda kerjakan?", + "What is NOT shared:": "Yang TIDAK dibagikan:", + "What is shared:": "Yang dibagikan:", "What's New in": "Apa yang Baru di", - "What's on your mind?": "", - "When": "", + "What's on your mind?": "Apa yang Anda pikirkan?", + "When": "Kapan", "Whisper (Local)": "Bisikan (Lokal)", - "Who can share to this group": "", - "Why?": "", - "Width": "", - "Wikipedia": "", - "Won": "", - "Working Directory": "", - "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "", + "Who can share to this group": "Siapa yang dapat membagikan ke grup ini", + "Why?": "Mengapa?", + "Width": "Lebar", + "Wikipedia": "Wikipedia", + "Won": "Won", + "Working Directory": "Direktori Kerja", + "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Bekerja bersama dengan top-k. Nilai yang lebih tinggi (misalnya, 0.95) akan menghasilkan teks yang lebih beragam, sedangkan nilai yang lebih rendah (misalnya, 0.5) akan menghasilkan teks yang lebih fokus dan konservatif.", "Workspace": "Ruang Kerja", - "Workspace Models": "", - "Workspace Permissions": "", - "Write": "", - "Write a summary in 50 words that summarizes {{topic}}.": "Tulis ringkasan dalam 50 kata yang merangkum [topik atau kata kunci].", - "Write something...": "", + "Workspace Models": "Model Ruang Kerja", + "Workspace Permissions": "Izin Ruang Kerja", + "Write": "Tulis", + "Write a summary in 50 words that summarizes {{topic}}.": "Tulis ringkasan dalam 50 kata yang merangkum {{topic}}.", + "Write something...": "Tulis sesuatu...", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Tulis konten system prompt model Anda di sini\nmis.: Anda adalah Mario dari Super Mario Bros dan bertindak sebagai asisten.", - "Yahoo": "", - "Yandex": "", - "Yearly": "", + "Yahoo": "Yahoo", + "Yandex": "Yandex", + "Yearly": "Tahunan", "Yesterday": "Kemarin", "You": "Anda", - "You are a sub-agent...": "", - "You are currently using a trial license. Please contact support to upgrade your license.": "", - "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "", - "You cannot upload an empty file.": "", - "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 skill.": "", - "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 upload files.": "", - "You do not have permission to upload web content.": "", - "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "", + "You are a sub-agent...": "Anda adalah sub-agen...", + "You are currently using a trial license. Please contact support to upgrade your license.": "Anda sedang menggunakan lisensi uji coba. Silakan hubungi dukungan untuk meningkatkan lisensi Anda.", + "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Anda hanya dapat mengobrol dengan maksimal {{maxCount}} berkas sekaligus.", + "You cannot upload an empty file.": "Anda tidak dapat mengunggah berkas kosong.", + "You do not have permission to edit this model": "Anda tidak memiliki izin untuk mengedit model ini", + "You do not have permission to edit this prompt.": "Anda tidak memiliki izin untuk mengedit prompt ini.", + "You do not have permission to edit this skill.": "Anda tidak memiliki izin untuk mengedit keahlian ini.", + "You do not have permission to edit this tool": "Anda tidak memiliki izin untuk mengedit alat ini", + "You do not have permission to make this public": "Anda tidak memiliki izin untuk mempublikasikan ini", + "You do not have permission to send messages in this channel.": "Anda tidak memiliki izin untuk mengirim pesan di saluran ini.", + "You do not have permission to send messages in this thread.": "Anda tidak memiliki izin untuk mengirim pesan di utas ini.", + "You do not have permission to upload files to this knowledge base.": "Anda tidak memiliki izin untuk mengunggah berkas ke basis pengetahuan ini.", + "You do not have permission to upload files.": "Anda tidak memiliki izin untuk mengunggah berkas.", + "You do not have permission to upload web content.": "Anda tidak memiliki izin untuk mengunggah konten web.", + "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "Anda memiliki lebih dari 50 pengguna, yang biasanya berarti ruang kerja ini mendukung penggunaan organisasi. Open WebUI bebas digunakan apa adanya, tanpa batasan atau limit tersembunyi, dan kami ingin tetap mempertahankannya seperti itu.", "You have no archived conversations.": "Anda tidak memiliki percakapan yang diarsipkan.", - "You have no shared conversations.": "", + "You have no shared conversations.": "Anda tidak memiliki percakapan yang dibagikan.", "You have shared this chat": "Anda telah membagikan obrolan ini", "You're a helpful assistant.": "Anda adalah asisten yang membantu.", "You're now logged in.": "Anda sekarang sudah masuk.", "Your account status is currently pending activation.": "Status akun Anda saat ini sedang menunggu aktivasi.", - "Your browser does not support the audio tag.": "", - "Your browser does not support the video tag.": "", - "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.": "", - "Your message text or inputs": "", - "Your query will be sent to the configured web search provider.": "", - "Your usage stats have been successfully synced.": "", + "Your browser does not support the audio tag.": "Peramban Anda tidak mendukung tag audio.", + "Your browser does not support the video tag.": "Peramban Anda tidak mendukung tag video.", + "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.": "Seluruh kontribusi Anda akan langsung disalurkan ke pengembang plugin; Open WebUI tidak memotong persentase apa pun. Namun, platform pendanaan yang dipilih mungkin memiliki biaya tersendiri.", + "Your message text or inputs": "Teks pesan atau masukan Anda", + "Your query will be sent to the configured web search provider.": "Kueri Anda akan dikirim ke penyedia pencarian web yang telah dikonfigurasi.", + "Your usage stats have been successfully synced.": "Statistik penggunaan Anda telah berhasil disinkronkan.", "YouTube": "Youtube", - "YouTube video player": "", - "Zoom in": "", - "Zoom out": "" + "YouTube video player": "Pemutar video YouTube", + "Zoom in": "Perbesar", + "Zoom out": "Perkecil" } From 845b791609c9df26763a59cfe3b7147a130f4816 Mon Sep 17 00:00:00 2001 From: MiRHaDi Date: Tue, 22 Sep 2026 19:07:48 +0330 Subject: [PATCH 007/583] i18n: translate Persian counters and preserve prompt variable (#30329) --- src/lib/i18n/locales/fa-IR/translation.json | 66 ++++++++++----------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 078eb8af3a..06ea6b0149 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -6,36 +6,36 @@ "[Today at] h:mm A": "[امروز در] h:mm A", "[Yesterday at] h:mm A": "[دیروز در] h:mm A", "{{ models }}": "{{ models }}", - "{{count}} added lines_one": "", - "{{count}} added lines_other": "", + "{{count}} added lines_one": "{{count}} خط اضافه‌شده", + "{{count}} added lines_other": "{{count}} خط اضافه‌شده", "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} ابزار موجود", "{{COUNT}} characters": "{{COUNT}} نویسه", "{{COUNT}} document(s) selected.": "", "{{COUNT}} extracted lines": "{{COUNT}} خط استخراج شده", - "{{count}} files_one": "", - "{{count}} files_other": "", + "{{count}} files_one": "{{count}} فایل", + "{{count}} files_other": "{{count}} فایل", "{{COUNT}} files": "", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", - "{{count}} filters_one": "", - "{{count}} filters_other": "", - "{{count}} groups_one": "", - "{{count}} groups_other": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "{{count}} فایل انتخاب شده است. فقط فایل‌های جدید و تغییریافته بارگذاری می‌شوند. فایل‌های حذف‌شده از مقصد نیز حذف می‌شوند. ساختار پوشه‌ها در مقصد بازتاب داده می‌شود. ادامه می‌دهید؟", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "{{count}} فایل انتخاب شده است. فقط فایل‌های جدید و تغییریافته بارگذاری می‌شوند. فایل‌های حذف‌شده از مقصد نیز حذف می‌شوند. ساختار پوشه‌ها در مقصد بازتاب داده می‌شود. ادامه می‌دهید؟", + "{{count}} filters_one": "{{count}} فیلتر", + "{{count}} filters_other": "{{count}} فیلتر", + "{{count}} groups_one": "{{count}} گروه", + "{{count}} groups_other": "{{count}} گروه", "{{COUNT}} hidden lines": "{{COUNT}} خط پنهان", "{{COUNT}} members": "", - "{{count}} of {{total}} accessible_one": "", - "{{count}} of {{total}} accessible_other": "", + "{{count}} of {{total}} accessible_one": "{{count}} مورد از {{total}} مورد قابل دسترسی است", + "{{count}} of {{total}} accessible_other": "{{count}} مورد از {{total}} مورد قابل دسترسی است", "{{COUNT}} pipeline(s) selected": "", - "{{count}} removed lines_one": "", - "{{count}} removed lines_other": "", + "{{count}} removed lines_one": "{{count}} خط حذف‌شده", + "{{count}} removed lines_other": "{{count}} خط حذف‌شده", "{{COUNT}} Replies": "{{COUNT}} پاسخ", "{{COUNT}} Rows": "", - "{{count}} selected_one": "", - "{{count}} selected_other": "", + "{{count}} selected_one": "{{count}} مورد انتخاب‌شده", + "{{count}} selected_other": "{{count}} مورد انتخاب‌شده", "{{COUNT}} Sources": "{{COUNT}} منبع", - "{{count}} users_one": "", - "{{count}} users_other": "", + "{{count}} users_one": "{{count}} کاربر", + "{{count}} users_other": "{{count}} کاربر", "{{COUNT}} words": "{{COUNT}} کلمه", "{{COUNT}}d_time_ago": "", "{{COUNT}}h_time_ago": "", @@ -430,8 +430,8 @@ "Comparing with knowledge base...": "", "Completions": "تکمیل\u200cها", "Compress uploaded images before sending or storage.": "", - "Computing checksums ({{count}} files)_one": "", - "Computing checksums ({{count}} files)_other": "", + "Computing checksums ({{count}} files)_one": "در حال محاسبهٔ مجموع کنترلی ({{count}} فایل)", + "Computing checksums ({{count}} files)_other": "در حال محاسبهٔ مجموع کنترلی ({{count}} فایل)", "Config imported successfully": "پیکربندی با موفقیت وارد شد", "Configure": "پیکربندی", "Confirm": "تایید", @@ -902,10 +902,10 @@ "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "", "Event title": "", "Event updated": "", - "Every {{count}} hours_one": "", - "Every {{count}} hours_other": "", - "Every {{count}} minutes_one": "", - "Every {{count}} minutes_other": "", + "Every {{count}} hours_one": "هر {{count}} ساعت", + "Every {{count}} hours_other": "هر {{count}} ساعت", + "Every {{count}} minutes_one": "هر {{count}} دقیقه", + "Every {{count}} minutes_other": "هر {{count}} دقیقه", "Every minute": "", "Example": "", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "مثال: (&(objectClass=inetOrgPerson)(uid=%s))", @@ -1310,8 +1310,8 @@ "Mark as unread": "", "Markdown": "مارک\u200cداون", "Market": "", - "Matching tabs: {{count}}_one": "", - "Matching tabs: {{count}}_other": "", + "Matching tabs: {{count}}_one": "زبانه‌های منطبق: {{count}}", + "Matching tabs: {{count}}_other": "زبانه‌های منطبق: {{count}}", "Max Snippets": "", "Max tokens to retrieve (1024-32768, default 8192)": "", "Maximum extra snippets returned per result. Set to 0 to disable them.": "", @@ -1759,8 +1759,8 @@ "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.": "احتمال تولید محتوای بی\u200cمعنی را کاهش می\u200cدهد. مقدار بالاتر (مثلاً 100) پاسخ\u200cهای متنوع\u200cتری می\u200cدهد، در حالی که مقدار پایین\u200cتر (مثلاً 10) محافظه\u200cکارانه\u200cتر خواهد بود.", "Reference Chats": "چت\u200cهای مرجع", "Refresh": "", - "Refresh requested: {{count}} terminal(s)_one": "", - "Refresh requested: {{count}} terminal(s)_other": "", + "Refresh requested: {{count}} terminal(s)_one": "درخواست تازه‌سازی برای {{count}} ترمینال ارسال شد", + "Refresh requested: {{count}} terminal(s)_other": "درخواست تازه‌سازی برای {{count}} ترمینال ارسال شد", "Refresh Terminals": "", "Refreshing...": "", "Refused when it shouldn't have": "رد شده زمانی که باید نباشد", @@ -1789,8 +1789,8 @@ "Remove Pinned Model": "", "Remove prompt suggestion": "", "Remove Selected Model": "", - "Removing {{count}} stale files..._one": "", - "Removing {{count}} stale files..._other": "", + "Removing {{count}} stale files..._one": "در حال حذف {{count}} فایل منسوخ‌شده...", + "Removing {{count}} stale files..._other": "در حال حذف {{count}} فایل منسوخ‌شده...", "Rename": "تغییر نام", "Renamed to {{name}}": "", "Reorder": "", @@ -3121,8 +3121,8 @@ "Start of the channel": "آغاز کانال", "Start Tag": "تگ شروع", "Start the chat to use this terminal.": "", - "Starting in {{count}} minutes_one": "", - "Starting in {{count}} minutes_other": "", + "Starting in {{count}} minutes_one": "شروع تا {{count}} دقیقهٔ دیگر", + "Starting in {{count}} minutes_other": "شروع تا {{count}} دقیقهٔ دیگر", "Starting in 1 minute": "", "Starting kernel...": "", "Starting now": "", @@ -3478,7 +3478,7 @@ "Workspace Models": "", "Workspace Permissions": "مجوزهای محیط کار", "Write": "نوشتن", - "Write a summary in 50 words that summarizes {{topic}}.": "خلاصه ای در 50 کلمه بنویسید که [موضوع یا کلمه کلیدی] را خلاصه کند.", + "Write a summary in 50 words that summarizes {{topic}}.": "خلاصه‌ای ۵۰ کلمه‌ای دربارهٔ {{topic}} بنویسید.", "Write something...": "چیزی بنویسید...", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "محتوای پرامپت سیستمی مدل خود را اینجا بنویسید\nمثال: شما ماریو از بازی Super Mario Bros هستید و به عنوان دستیار عمل می\u200cکنید.", "Yahoo": "", From f2702e1f0f295c75cf0904bf8ff0fa07cdadc6d5 Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Tue, 22 Sep 2026 11:37:59 -0400 Subject: [PATCH 008/583] fix: fall back to the user's system prompt when the chat's own is cleared (#30333) --- src/lib/components/chat/Chat.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index fd0e1bbac1..95e4e95a49 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -3489,7 +3489,7 @@ // Only temp chats need conversation messages (persisted chats load from DB). let messages: any[] = [ params?.system || $settings.system - ? { role: 'system', content: `${params?.system ?? $settings?.system ?? ''}` } + ? { role: 'system', content: `${params?.system || $settings?.system || ''}` } : undefined ].filter(Boolean); From e93a59f4dd8eea5b1df55b4e6dcc57465887b95d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 22 Sep 2026 13:13:22 -0400 Subject: [PATCH 009/583] refac Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com> --- backend/open_webui/models/access_grants.py | 75 +++++++++++++++++----- backend/open_webui/routers/channels.py | 12 ++++ backend/open_webui/routers/notes.py | 30 ++++++++- backend/open_webui/socket/main.py | 25 +++++++- 4 files changed, 121 insertions(+), 21 deletions(-) diff --git a/backend/open_webui/models/access_grants.py b/backend/open_webui/models/access_grants.py index 03a7ef7202..49cb83a180 100644 --- a/backend/open_webui/models/access_grants.py +++ b/backend/open_webui/models/access_grants.py @@ -686,8 +686,7 @@ class AccessGrantsTable: Get all users who have the specified permission on a resource. Returns a list of UserModel instances. """ - from open_webui.models.groups import Groups - from open_webui.models.users import UserModel, Users + from open_webui.models.users import Users async with get_async_db_context(db) as db: result = await db.execute( @@ -699,27 +698,69 @@ class AccessGrantsTable: ) grants = result.scalars().all() - # Check for public access - for grant in grants: - if grant.principal_type == 'user' and grant.principal_id == '*': - result = await Users.get_users(filter={'roles': ['!pending']}, db=db) - return result.get('users', []) - - user_ids_with_access = set() - - for grant in grants: - if grant.principal_type == 'user': - user_ids_with_access.add(grant.principal_id) - elif grant.principal_type == 'group': - group_user_ids = await Groups.get_group_user_ids_by_id(grant.principal_id, db=db) - if group_user_ids: - user_ids_with_access.update(group_user_ids) + user_ids_with_access = await self.get_user_ids_by_access_grants(grants, permission, db=db) if not user_ids_with_access: return [] return await Users.get_users_by_user_ids(list(user_ids_with_access), db=db) + async def get_user_ids_by_access_grants( + self, + access_grants: list[AccessGrantModel], + permission: str = 'read', + db: AsyncSession | None = None, + ) -> set[str]: + """Get user IDs with the specified permission, including public and group grants.""" + from open_webui.models.groups import Groups + from open_webui.models.users import Users + + async with get_async_db_context(db) as db: + user_ids = set() + group_ids = [] + for grant in access_grants: + if grant.permission != permission: + continue + if grant.principal_type == PRINCIPAL_TYPE_USER: + if grant.principal_id == WILDCARD_PRINCIPAL_ID: + result = await Users.get_users(filter={'roles': ['!pending']}, db=db) + return {user.id for user in result.get('users', [])} + user_ids.add(grant.principal_id) + elif grant.principal_type == PRINCIPAL_TYPE_GROUP: + group_ids.append(grant.principal_id) + + if group_ids: + group_user_ids = await Groups.get_group_user_ids_by_ids(group_ids, db=db) + for members in group_user_ids.values(): + user_ids.update(members) + return user_ids + + async def get_revoked_user_ids_by_resource( + self, + resource_type: str, + resource_id: str, + previous_access_grants: list[AccessGrantModel], + permission: str = 'read', + db: AsyncSession | None = None, + ) -> set[str]: + """Get user IDs that lost the specified permission after a resource's grants changed.""" + async with get_async_db_context(db) as db: + access_grants = await self.get_grants_by_resource(resource_type, resource_id, db=db) + previous_principals = { + (grant.principal_type, grant.principal_id) + for grant in previous_access_grants + if grant.permission == permission + } + principals = { + (grant.principal_type, grant.principal_id) for grant in access_grants if grant.permission == permission + } + if previous_principals <= principals or (PRINCIPAL_TYPE_USER, WILDCARD_PRINCIPAL_ID) in principals: + return set() + + previous_user_ids = await self.get_user_ids_by_access_grants(previous_access_grants, permission, db=db) + user_ids = await self.get_user_ids_by_access_grants(access_grants, permission, db=db) + return previous_user_ids - user_ids + def has_permission_filter( self, db, diff --git a/backend/open_webui/routers/channels.py b/backend/open_webui/routers/channels.py index de25739c92..80e243c8ae 100644 --- a/backend/open_webui/routers/channels.py +++ b/backend/open_webui/routers/channels.py @@ -40,6 +40,7 @@ from open_webui.socket.main import ( emit_to_users, enter_room_for_users, get_user_ids_from_room, + leave_room_for_users, sio, ) from open_webui.utils.access_control import filter_allowed_access_grants, has_permission @@ -731,8 +732,18 @@ async def update_channel_by_id( 'sharing.public_channels', ) + previous_access_grants = channel.access_grants + try: channel = await Channels.update_channel_by_id(id, form_data, db=db) + # Group and DM channels use membership instead of access grants. + if form_data.access_grants is not None and channel.type not in ['group', 'dm']: + revoked_user_ids = await AccessGrants.get_revoked_user_ids_by_resource( + 'channel', id, previous_access_grants, db=db + ) + revoked_user_ids.discard(channel.user_id) + await leave_room_for_users(f'channel:{id}', list(revoked_user_ids)) + await publish_event( request, EVENTS.CHANNEL_UPDATED, @@ -769,6 +780,7 @@ async def delete_channel_by_id( try: await Channels.delete_channel_by_id(id, db=db) + await sio.close_room(f'channel:{id}') await publish_event( request, EVENTS.CHANNEL_DELETED, diff --git a/backend/open_webui/routers/notes.py b/backend/open_webui/routers/notes.py index a84dd3f94e..e44a311f45 100644 --- a/backend/open_webui/routers/notes.py +++ b/backend/open_webui/routers/notes.py @@ -11,7 +11,7 @@ from open_webui.config import ( from open_webui.constants import ERROR_MESSAGES from open_webui.events import EVENTS, publish_event from open_webui.internal.db import get_async_session -from open_webui.models.access_grants import AccessGrants +from open_webui.models.access_grants import AccessGrantModel, AccessGrants from open_webui.models.chats import ChatForm, ChatResponse, Chats from open_webui.models.config import Config from open_webui.models.groups import Groups @@ -23,7 +23,7 @@ from open_webui.models.notes import ( NoteUserResponse, ) from open_webui.models.users import UserResponse, Users -from open_webui.socket.main import sio +from open_webui.socket.main import leave_room_for_users, sio from open_webui.utils.access_control import ( filter_allowed_access_grants, has_permission, @@ -46,6 +46,23 @@ def _truncate_note_data(data: Optional[dict], max_length: int = 1000) -> Optiona return {'content': {'md': md[:max_length]}} +async def leave_note_rooms_for_revoked_users( + note: NoteModel, previous_access_grants: list[AccessGrantModel], db: AsyncSession | None = None +): + revoked_user_ids = await AccessGrants.get_revoked_user_ids_by_resource( + 'note', note.id, previous_access_grants, db=db + ) + revoked_user_ids.discard(note.user_id) + if not revoked_user_ids: + return + + users = await Users.get_users_by_user_ids(list(revoked_user_ids), db=db) + # Admins retain access to notes regardless of grants. + user_ids = [user.id for user in users if user.role != 'admin'] + for room in [f'note:{note.id}', f'doc_note:{note.id}']: + await leave_room_for_users(room, user_ids) + + ############################ # GetNotes ############################ @@ -564,8 +581,13 @@ async def update_note_by_id( db=db, ) + previous_access_grants = note.access_grants + try: note = await Notes.update_note_by_id(id, form_data, db=db) + if form_data.access_grants is not None: + await leave_note_rooms_for_revoked_users(note, previous_access_grants, db=db) + pinned_note_ids = await Notes.get_pinned_note_ids(user.id, db=db) note.is_pinned = note.id in pinned_note_ids @@ -644,6 +666,7 @@ async def update_note_access_by_id( ) await AccessGrants.set_access_grants('note', id, form_data.access_grants, db=db) + await leave_note_rooms_for_revoked_users(note, note.access_grants, db=db) note = await Notes.get_note_by_id(id, db=db) pinned_note_ids = await Notes.get_pinned_note_ids(user.id, db=db) @@ -744,6 +767,9 @@ async def delete_note_by_id( try: note = await Notes.delete_note_by_id(id, db=db) + for room in [f'note:{id}', f'doc_note:{id}']: + await sio.close_room(room) + await publish_event( request, EVENTS.NOTE_DELETED, diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 2e0969ab2e..659dc3da49 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -343,8 +343,20 @@ def get_session_ids_from_room(room): def get_session_ids_by_user_id(user_id: str) -> list[str]: """Get known session IDs for a user across the local rooms and shared session pool.""" - session_ids = set(get_session_ids_from_room(f'user:{user_id}')) - session_ids.update(sid for sid, entry in SESSION_POOL.items() if entry and entry.get('id') == user_id) + return get_session_ids_by_user_ids([user_id]) + + +def get_session_ids_by_user_ids(user_ids: list[str]) -> list[str]: + """Get known session IDs for users across the local rooms and shared session pool.""" + if not user_ids: + return [] + + user_ids = set(user_ids) + session_ids = set() + for user_id in user_ids: + session_ids.update(get_session_ids_from_room(f'user:{user_id}')) + for batch in get_session_pool_batches(): + session_ids.update(sid for sid, user in batch if user and user.get('id') in user_ids) return list(session_ids) @@ -385,6 +397,15 @@ async def enter_room_for_users(room: str, user_ids: list[str]): log.debug('Failed to make users %s join room %s: %s', user_ids, room, e) +async def leave_room_for_users(room: str, user_ids: list[str]): + """Make all sessions of each user leave a room, including sessions on other workers.""" + for sid in get_session_ids_by_user_ids(user_ids): + try: + await sio.leave_room(sid, room) + except Exception as e: + log.debug('Failed to make session %s leave room %s: %s', sid, room, e) + + async def disconnect_user_sessions(user_id: str): """Disconnect all Socket.IO sessions belonging to a user. From fe56ab24f31e2905f48560d560ec8e72f1a5779c Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 20:48:45 +0200 Subject: [PATCH 010/583] fix: page Chroma get() so hybrid search works on collections over 32k chunks (#30368) With Chroma as the vector DB, hybrid search on a knowledge base with more than 32766 chunks fails with HTTP 400 "Error querying knowledge base". The legacy hybrid path fetches the whole collection to build the BM25 index, and Chroma's unbounded collection.get() binds one SQLite variable per row, so any collection above SQLite's 32766 variable limit raises "too many SQL variables" (reproduced on chromadb 1.5.9 with both PersistentClient and HttpClient). Vector-only search on the same collection works, which makes it look like a hybrid-search bug. The Chroma adapter now reads the collection in pages of 10000 rows via limit/offset and concatenates them into the same GetResult shape as before. Verified on a 90000-row collection: every row returned exactly once with documents and metadata aligned to ids, page order stable across page sizes, empty and exactly-one-page collections unchanged, and query_doc_with_hybrid_search returns results where it previously raised. The tests repo unit suite is identical before and after. Fixes #30351 --- .../open_webui/retrieval/vector/dbs/chroma.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/retrieval/vector/dbs/chroma.py b/backend/open_webui/retrieval/vector/dbs/chroma.py index 2c51aeca93..5c5d9602e8 100755 --- a/backend/open_webui/retrieval/vector/dbs/chroma.py +++ b/backend/open_webui/retrieval/vector/dbs/chroma.py @@ -28,6 +28,8 @@ from open_webui.retrieval.vector.utils import process_metadata log = logging.getLogger(__name__) +GET_PAGE_SIZE = 10000 + class ChromaClient(VectorDBBase): def __init__(self): @@ -131,12 +133,18 @@ class ChromaClient(VectorDBBase): # Get all the items in the collection. collection = self.client.get_collection(name=collection_name, embedding_function=None) if collection: - result = collection.get() + ids, documents, metadatas = [], [], [] + # Unpaged get() exceeds SQLite's bind-variable limit on large collections + for offset in range(0, collection.count(), GET_PAGE_SIZE): + page = collection.get(limit=GET_PAGE_SIZE, offset=offset) + ids.extend(page['ids']) + documents.extend(page['documents']) + metadatas.extend(page['metadatas']) return GetResult( **{ - 'ids': [result['ids']], - 'documents': [result['documents']], - 'metadatas': [result['metadatas']], + 'ids': [ids], + 'documents': [documents], + 'metadatas': [metadatas], } ) return None From 1a74a9f46c31e7bcf05ad38610a8a5c0fc9aaf1e Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 20:48:56 +0200 Subject: [PATCH 011/583] perf: per-room channel delivery for the socket.io Redis manager (#28818) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworked from the ground up after the feedback that the registry implementation did not land. The Redis room registry and its whole recovery protocol (heartbeats, liveness keys, pruning, distrust windows, cache invalidation) are gone; the change is now ~105 lines with no state kept outside the process. With WEBSOCKET_MANAGER=redis every emit is published on one shared channel and every instance JSON-decodes every message: a 16 instance fleet decodes each streamed token delta 16 times and 15 discard it. py-spy across a loaded fleet (16 instances, ~4000 users) puts ~31% of all active CPU samples in the pubsub listener parse chain, the largest bucket. Room-targeted emits are now published on a per-room channel instead; every instance keeps one static pattern subscription covering all room channels and drops messages for rooms without local members by channel name, paying a set lookup instead of a JSON parse. No state leaves the process, so recovery paths and loss windows are identical to the stock manager; acks and control messages stay on the shared channel and sio.call works across instances unchanged. This is the delivery scheme the official socket.io Redis adapter for Node.js ships by default. Enabled by default; WEBSOCKET_REDIS_ROOM_CHANNELS=false restores shared-channel-only delivery. All instances must run the same mode, so the switch rides the full-stop upgrade this release already requires for its migration; in a mixed fleet, room emits from updated instances would not reach not-yet-updated ones. Verified end to end with two instances on a real Redis: cross-instance token streams delivered with the shared channel completely silent. Ref #28173. - [x] By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. > [!NOTE] > Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in. --- backend/open_webui/env.py | 6 ++ backend/open_webui/socket/main.py | 5 +- .../open_webui/socket/redis_room_channels.py | 82 +++++++++++++++++++ 3 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 backend/open_webui/socket/redis_room_channels.py diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index fe5f8efb21..dc160e1592 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -493,6 +493,12 @@ else: WEBSOCKET_REDIS_URL = os.getenv('WEBSOCKET_REDIS_URL', REDIS_URL) WEBSOCKET_REDIS_CLUSTER = os.getenv('WEBSOCKET_REDIS_CLUSTER', str(REDIS_CLUSTER)).lower() == 'true' +# publishes room-targeted emits on per-room redis channels so instances skip +# messages for rooms without local members; must be identical across the fleet +# (toggle with a full restart, not a rolling one), set false for the previous +# shared-channel-only delivery +WEBSOCKET_REDIS_ROOM_CHANNELS = os.getenv('WEBSOCKET_REDIS_ROOM_CHANNELS', 'True').lower() == 'true' + websocket_redis_lock_timeout = os.getenv('WEBSOCKET_REDIS_LOCK_TIMEOUT', '60') try: diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 659dc3da49..796c08b9cf 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -24,6 +24,7 @@ from open_webui.env import ( WEBSOCKET_REDIS_CLUSTER, WEBSOCKET_REDIS_LOCK_TIMEOUT, WEBSOCKET_REDIS_OPTIONS, + WEBSOCKET_REDIS_ROOM_CHANNELS, WEBSOCKET_REDIS_URL, WEBSOCKET_SENTINEL_HOSTS, WEBSOCKET_SENTINEL_PORT, @@ -38,6 +39,7 @@ from open_webui.models.chats import Chats from open_webui.models.folders import Folders from open_webui.models.notes import Notes, NoteUpdateForm from open_webui.models.users import UserNameResponse, Users +from open_webui.socket.redis_room_channels import AsyncRedisRoomChannelManager from open_webui.socket.utils import CachedRedisDict, RedisDict, RedisLock, YdocManager from open_webui.tasks import ( REDIS_PUBSUB_MAX_RECONNECT_INTERVAL, @@ -93,7 +95,8 @@ if WEBSOCKET_MANAGER == 'redis': if sentinel_hosts else WEBSOCKET_REDIS_URL ) - redis_manager = socketio.AsyncRedisManager(ws_redis_url, redis_options=WEBSOCKET_REDIS_OPTIONS, json=SOCKETIO_JSON) + manager_class = AsyncRedisRoomChannelManager if WEBSOCKET_REDIS_ROOM_CHANNELS else socketio.AsyncRedisManager + redis_manager = manager_class(ws_redis_url, redis_options=WEBSOCKET_REDIS_OPTIONS, json=SOCKETIO_JSON) sio = socketio.AsyncServer( cors_allowed_origins=SOCKETIO_CORS_ORIGINS, async_mode='asgi', diff --git a/backend/open_webui/socket/redis_room_channels.py b/backend/open_webui/socket/redis_room_channels.py new file mode 100644 index 0000000000..715ccc1ea9 --- /dev/null +++ b/backend/open_webui/socket/redis_room_channels.py @@ -0,0 +1,82 @@ +"""Per-room redis channels let instances skip the decode and packet encode for rooms with no local members.""" + +import asyncio + +from socketio import AsyncRedisManager + + +class AsyncRedisRoomChannelManager(AsyncRedisManager): + name = 'aioredisroomchannel' + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._local_room_channels = set() + + # collision-free while namespaces contain no '#' (socket.io default '/'); rooms may contain '#' + def _room_channel(self, namespace, room): + return f'{self.channel}#{namespace}#{room}'.encode() + + def basic_enter_room(self, sid, namespace, room, eio_sid=None): + super().basic_enter_room(sid, namespace, room, eio_sid=eio_sid) + if room is not None: + self._local_room_channels.add(self._room_channel(namespace, room)) + + def basic_leave_room(self, sid, namespace, room): + super().basic_leave_room(sid, namespace, room) + if room is not None and room not in self.rooms.get(namespace, {}): + self._local_room_channels.discard(self._room_channel(namespace, room)) + + async def _publish(self, data): + if data.get('method') == 'emit' and isinstance(data.get('room'), str): + channel = self._room_channel(data['namespace'], data['room']) + else: + channel = self.channel + _, error = self._get_redis_module_and_error() + for retries_left in range(1, -1, -1): # 2 attempts + try: + if not self.connected: + self._redis_connect() + return await self.redis.publish(channel, self.json.dumps(data)) + except error as exc: + if retries_left > 0: + self._get_logger().error('Cannot publish to redis... retrying', extra={'redis_exception': str(exc)}) + self.connected = False + else: + self._get_logger().error( + 'Cannot publish to redis... giving up', extra={'redis_exception': str(exc)} + ) + break + + async def _redis_listen_with_retries(self): + _, error = self._get_redis_module_and_error() + retry_sleep = 1 + subscribed = False + while True: + try: + if not subscribed: + self._redis_connect() + await self.pubsub.subscribe(self.channel) + await self.pubsub.psubscribe(f'{self.channel}#*') + retry_sleep = 1 + async for message in self.pubsub.listen(): + yield message + except error as exc: + self._get_logger().error( + f'Cannot receive from redis... retrying in {retry_sleep} secs', + extra={'redis_exception': str(exc)}, + ) + subscribed = False + await asyncio.sleep(retry_sleep) + retry_sleep *= 2 + if retry_sleep > 60: + retry_sleep = 60 + + async def _listen(self): + main_channel = self.channel.encode() + async for message in self._redis_listen_with_retries(): + if 'data' not in message: + continue + if (message['type'] == 'message' and message['channel'] == main_channel) or ( + message['type'] == 'pmessage' and message['channel'] in self._local_room_channels + ): + yield message['data'] From d603b5799532c60f99f9954f8821ae9d9aeca014 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 22:46:58 +0200 Subject: [PATCH 012/583] fix: FireFox regional setting (#30377) * fix: keep en-US as the last i18n fallback when a stored locale has no bundle Settings labels rendered as raw keys such as settings.admin.connections.title instead of "Connections" from the second page load on, while every other label looked fine. On the first visit the language detector saves whatever the browser reports into localStorage, including bare codes like "en" that have no locale bundle. The same value is saved by ?lang=en or DEFAULT_LOCALE=en. On the next load that stored value became the only fallback language, so the missing bundle left nothing to fall back to. Plain keys still looked right because the key is the English text; only the settings.* keys have a distinct value. en-US now stays at the end of the fallback list whenever a stored locale is passed in. The stored locale keeps precedence, real locales are unaffected, and the en-US bundle was already loaded for every language for the settings merge, so there is no extra request. Fixes #30348 * fix: match browser language codes to a locale bundle Firefox reports German, Dutch and Polish as bare codes (de, nl, pl), both Chrome and Firefox report Japanese as ja, and Chrome in Latin America reports es-419. No bundle is keyed by any of these. The page layout used to match them on the first visit, but since 67ac1a4e9 (0.11.4) awaits the i18n init, the detector has already cached the raw code by the time that check runs, so it never does. Those users get an English interface, a language dropdown with nothing selected and English date formats, and the cached code keeps them there. The detector now maps a reported code onto a bundle before anything else sees it. A code we ship stays as it is, matched case-insensitively. Otherwise the language's xx-XX bundle is used when there is one, so de and de-AT become de-DE, es-419 becomes es-ES, and fr becomes fr-FR even though fr-CA comes first in the list. A bare code with no xx-XX bundle takes the first one for its language, so ja becomes ja-JP. Any other regional code passes through untouched, so zh-HK is not sent to Simplified zh-CN, and no locale that works today changes. Restoring the layout check would leave every browser that cached a raw code under 0.11.4 stuck. Matching in the detector migrates them on their next load, because the matched code is what gets cached. {{USER_LANGUAGE}} reports that matched code too, so es-419 users now send es-ES. Verified against the real bundles on first and repeat loads, including the untouched cases fr-CA, pt-BR, zh-TW, zh-HK, ar-BH, en-GB and uz-Latn-UZ. --- src/lib/i18n/index.ts | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/lib/i18n/index.ts b/src/lib/i18n/index.ts index 548e6709e8..48872052ba 100644 --- a/src/lib/i18n/index.ts +++ b/src/lib/i18n/index.ts @@ -6,6 +6,7 @@ import { writable } from 'svelte/store'; import type { I18nOverrides } from '$lib/utils/translationDictionary'; import { assembleSettingsTranslations } from './settings-translations'; +import languages from './locales/languages.json'; let overrides: I18nOverrides = {}; @@ -71,6 +72,19 @@ const createIsLoadingStore = (i18n: i18nType) => { return isLoading; }; +const languageCodes = languages.map(({ code }) => code); + +const toBundleCode = (code: string) => { + const ownBundle = languageCodes.find((bundle) => bundle.toLowerCase() === code.toLowerCase()); + if (ownBundle) return ownBundle; + const baseLanguage = code.split('-')[0].toLowerCase(); + const primaryBundle = `${baseLanguage}-${baseLanguage.toUpperCase()}`; + if (languageCodes.includes(primaryBundle)) return primaryBundle; + // the first sibling of a regional code can be another script (zh-HK would get zh-CN) + if (code.includes('-')) return code; + return languageCodes.find((bundle) => bundle.startsWith(`${baseLanguage}-`)) ?? code; +}; + export const initI18n = (defaultLocale?: string, value: I18nOverrides = {}) => { overrides = value; const detectionOrder = defaultLocale @@ -87,7 +101,8 @@ export const initI18n = (defaultLocale?: string, value: I18nOverrides = {}) => { order: detectionOrder, caches: ['localStorage'], lookupQuerystring: 'lang', - lookupLocalStorage: 'locale' + lookupLocalStorage: 'locale', + convertDetectedLanguage: toBundleCode }, fallbackLng: { fr: ['fr-FR'], @@ -106,10 +121,7 @@ export const initI18n = (defaultLocale?: string, value: I18nOverrides = {}) => { const i18n = createI18nStore(i18next); const isLoadingStore = createIsLoadingStore(i18next); -export const getLanguages = async () => { - const languages = (await import(`./locales/languages.json`)).default; - return languages; -}; +export const getLanguages = async () => languages; export const changeLanguage = (lang: string) => { document.documentElement.setAttribute('lang', lang); return i18next.changeLanguage(lang); From 15f350b4175f45243c79a9e010f3280cf3671b0f Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 22:47:09 +0200 Subject: [PATCH 013/583] fix: keep an open chat's tools when clicking a folder name (#30376) Clicking a folder name in the sidebar while a chat was open switched that chat to the folder's default model for a moment before the page changed. That reset its tools and skills to the folder model's set and saved them as the chat's draft, so on returning to the chat the folder model's tools were shown and sent with the next message. The same happened to a chat just started from the home page. The folder's default model is now only applied while the chat has no messages yet, the same rule new chats already follow when a folder page opens. Folder pages, new chats in a folder and editing a folder's default model behave as before. Verified in a browser against a mock upstream: on dev the next request after the folder click carried the folder model's tool_ids and skill_ids; with the fix it carries the chat's own model's set, for both an existing chat and one started from the home page. Fixes #30226 --- src/lib/components/chat/Chat.svelte | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 95e4e95a49..5141fed098 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1593,7 +1593,12 @@ const selectedFolderSubscribe = selectedFolder.subscribe(async (folder) => { await tick(); - if (folder?.data?.model_ids && !equal(selectedModels, folder.data.model_ids)) { + // Folder default models apply to new chats only. + if ( + !history.currentId && + folder?.data?.model_ids && + !equal(selectedModels, folder.data.model_ids) + ) { selectedModels = folder.data.model_ids; console.log('Set selectedModels from folder data:', selectedModels); From 2f926354095d308d4daf4c25e7b074d962c1513a Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 22:47:20 +0200 Subject: [PATCH 014/583] fix: keep the model system prompt on Ollama tool-call follow-ups (#30375) With native function calling on an Ollama model, every request sent after a tool result was missing the model's system prompt, so the final answer ignored the model's instructions. Only other system content, such as the attached knowledge tag, was left. OpenAI connections were not affected. Tool-call follow-ups are rebuilt from the chat's message list and skip the router's system prompt step, because the first request is expected to have already added it to that list. The OpenAI path does add it there, but the Ollama path converts the messages into a copy first and adds the prompt only to the copy, so the follow-ups never see it. The model system prompt is now applied to the messages before the Ollama conversion, and the Ollama router is told to skip it for that request so it is not added twice. Ollama now behaves the same as the OpenAI path. Direct calls to /ollama/api/chat still get the prompt from the router as before. Checked baseline against patched: first request and follow-up for plain, custom and arena Ollama models, with and without a chat system prompt, with template variables and on the OpenAI path. The prompt is now present exactly once on every Ollama follow-up, and nothing else changed. Fixes #30161 --- backend/open_webui/utils/chat.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/chat.py b/backend/open_webui/utils/chat.py index 5d5f6f60c4..c97985dde4 100644 --- a/backend/open_webui/utils/chat.py +++ b/backend/open_webui/utils/chat.py @@ -33,7 +33,7 @@ from open_webui.utils.filter import ( ) from open_webui.utils.json_codec import JSONCodec from open_webui.utils.models import check_model_access, get_all_models -from open_webui.utils.payload import convert_payload_openai_to_ollama +from open_webui.utils.payload import apply_system_prompt_to_body, convert_payload_openai_to_ollama from open_webui.utils.response import ( convert_response_ollama_to_openai, convert_streaming_response_ollama_to_openai, @@ -281,6 +281,14 @@ async def generate_chat_completion( # Below does not require bypass_filter because this is the only route the uses this function and it is already bypassing the filter return await generate_function_chat_completion(request, form_data, user=user, models=models) if model.get('owned_by') == 'ollama': + # Apply before Ollama conversion so tool follow-ups keep the model system prompt + if not bypass_system_prompt: + model_info = await Models.get_model_by_id(form_data['model']) + if model_info: + system = model_info.params.model_dump().get('system') + form_data = await apply_system_prompt_to_body(system, form_data, metadata, user) + request.state.bypass_system_prompt = True + # Using /ollama/api/chat endpoint form_data = convert_payload_openai_to_ollama(form_data) response = await generate_ollama_chat_completion( From 24c01bd76db65978c015dd0f489eec076769d75c Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 22 Sep 2026 22:57:10 +0200 Subject: [PATCH 015/583] fix: stop voice call hanging in "speaking" when TTS fails (#30372) When the configured TTS provider fails during a voice call, the text answer arrives but the overlay stays in "speaking" with no audio and no error until the user taps to interrupt. The sentence that failed never reaches the audio cache, so the playback loop re-queues it every 200 ms forever. A failed sentence now marks its message as failed. The playback loop drops that message's unplayed sentences, the rest of the turn requests no more TTS, and the overlay returns to listening once the text finishes. The OpenAI-compatible path now shows the provider error once per turn, the same way Read Aloud and the Kokoro path already do. The next turn tries TTS again. Failure is tracked per message so an outage (the report shows 16 parallel requests all failing) costs one toast and no further requests. The trade-off is that a one-off failure mutes the rest of that reply. Verified with the real fetch/playback code in a harness: base loops forever with no toast; with the fix, one toast, the loop ends, later sentences are not requested, a new turn plays normally, and a late failure from a previous turn does not affect the next one. Fixes #30052 --- .../chat/MessageInput/CallOverlay.svelte | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/MessageInput/CallOverlay.svelte b/src/lib/components/chat/MessageInput/CallOverlay.svelte index 6227c20359..b4379b57f9 100644 --- a/src/lib/components/chat/MessageInput/CallOverlay.svelte +++ b/src/lib/components/chat/MessageInput/CallOverlay.svelte @@ -379,6 +379,7 @@ }; let finishedMessages = {}; + let failedMessages = {}; let currentMessageId = null; let currentUtterance: SpeechSynthesisUtterance | null = null; @@ -502,7 +503,9 @@ const emojiCache = new Map(); const fetchAudio = async (content) => { - if (!audioCache.has(content)) { + const id = currentMessageId; + + if (!audioCache.has(content) && !failedMessages[id]) { try { // Set the emoji for the content if needed if ($settings?.showEmojiInCall ?? false) { @@ -535,6 +538,10 @@ const res = await synthesizeOpenAISpeech(localStorage.token, getVoiceId(), content).catch( (error) => { console.error(error); + if (!failedMessages[id]) { + failedMessages[id] = true; + toast.error(`${error}`); + } return null; } ); @@ -550,6 +557,10 @@ } catch (error) { console.error('Error synthesizing speech:', error); } + + if (!audioCache.has(content)) { + failedMessages[id] = true; + } } return audioCache.get(content); @@ -591,7 +602,7 @@ } else { await speakSpeechSynthesisHandler(content); } - } else { + } else if (!failedMessages[id]) { // If not available in the cache, push it back to the queue and delay messages[id].unshift(content); // Re-queue the content at the start console.log(`Audio for "${content}" not yet available in the cache, re-queued...`); From d66e5dc403c0d999d05f3445d68ecb313c9b5eee Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Wed, 23 Sep 2026 15:46:22 +0200 Subject: [PATCH 016/583] fix: make the admin analytics tab scrollable inside the settings modal (#30429) The analytics dashboard renders inside the settings modal, whose tab area clips overflowing content. Unlike the other tabs, analytics had no scroll area of its own, so on any instance with more than a handful of models or users the bottom of the model and user ranking tables was cut off and could not be reached. The analytics wrapper now scrolls vertically, using the same scroll classes as the other settings tabs. Verified in a browser with 30 models and 45 users at 1400x900, 1280x720 and 700x900: before, wheel scrolling moved nothing; after, both tables scroll to their last row with a single scrollbar and no horizontal overflow. Fixes #30428 --- src/lib/components/admin/Analytics.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/admin/Analytics.svelte b/src/lib/components/admin/Analytics.svelte index bd33b3c372..da69de19e1 100644 --- a/src/lib/components/admin/Analytics.svelte +++ b/src/lib/components/admin/Analytics.svelte @@ -18,7 +18,7 @@ {#if loaded} -
+
{/if} From 9db1a518d3e43b05c3bb9a94e3d0b01cbeabed3d Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Wed, 23 Sep 2026 15:46:31 +0200 Subject: [PATCH 017/583] fix: refresh an expiring OAuth token once when requests race (#30426) With an OIDC provider that rotates refresh tokens, sending a chat to a system_oauth connection often logged the user's OAuth session out. Two requests reached the refresh at the same time and both sent the same refresh token. The provider rejected the second one with invalid_grant, and Open WebUI deleted the session, so every following request lost its token until the user logged in again. Refreshes now take a per-session lock. A request that waited for another one re-reads the session and uses the token that was just stored, so the provider sees one refresh per rotation. Tested with real sqlite sessions and a rotating mock provider: 2 and 5 concurrent callers now cause 1 refresh, all callers get the new token and the session is kept (before: one refresh per caller, all callers got nothing, session deleted). Single refresh, failed refresh and valid-token paths are unchanged. The lock is per process, so deployments with several workers or replicas can still race across processes. Fixes #30416 --- backend/open_webui/utils/oauth.py | 35 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index ca8e3a1d75..fc7bf7cabc 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -1333,6 +1333,7 @@ class OAuthManager: self.app = app self._clients = {} + self._refresh_locks: dict[str, asyncio.Lock] = {} for name, provider_config in OAUTH_PROVIDERS.items(): if 'register' not in provider_config: @@ -1428,23 +1429,29 @@ class OAuthManager: Returns: dict: Refreshed token data, or None if refresh failed """ - try: - # Perform the actual refresh - refreshed_token = await self._perform_token_refresh(session) + async with self._refresh_locks.setdefault(session.id, asyncio.Lock()): + # Another request may have refreshed while we waited; its refresh token is now spent + current_session = await OAuthSessions.get_session_by_id(session.id) + if current_session and current_session.token != session.token: + return current_session.token - if refreshed_token: - # Update the session with new token data - session = await OAuthSessions.update_session_by_id(session.id, refreshed_token) - log.info('Successfully refreshed token for session %s', session.id) - return session.token - else: - log.error(f'Failed to refresh token for session {session.id}') + try: + # Perform the actual refresh + refreshed_token = await self._perform_token_refresh(session) + + if refreshed_token: + # Update the session with new token data + session = await OAuthSessions.update_session_by_id(session.id, refreshed_token) + log.info('Successfully refreshed token for session %s', session.id) + return session.token + else: + log.error(f'Failed to refresh token for session {session.id}') + return None + + except Exception as e: + log.error(f'Error refreshing token for session {session.id}: {e}') return None - except Exception as e: - log.error(f'Error refreshing token for session {session.id}: {e}') - return None - async def _perform_token_refresh(self, session) -> dict: """ Perform the actual OAuth token refresh. From abd60d33feae41931f4a8071dd8fd05911a51f60 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Wed, 23 Sep 2026 15:47:04 +0200 Subject: [PATCH 018/583] fix: evaluate automation schedules on Windows with PostgreSQL (#30424) Since 0.11.4, creating or editing an automation on Windows with PostgreSQL fails with a 400, and the scheduler logs NotImplementedError on every tick, so automations do not work at all on that setup. Schedules are now evaluated in a worker subprocess so a pathological rule can be killed after the 2s budget. On Windows with PostgreSQL, Open WebUI switches to the selector event loop that psycopg needs, and that loop cannot spawn subprocesses. When spawning fails there, the evaluation now reruns on a Proactor event loop in a worker thread. The subprocess, the 2s budget and the kill on timeout all stay the same, and the global loop policy psycopg depends on is untouched. Falling back to a plain thread was considered and rejected: a thread cannot be stopped, so a costly rule would keep burning CPU after the timeout. Verified with a loop that refuses subprocesses: base raises NotImplementedError, the fix returns the same results as base, still times out a pathological rule at 2s with the worker killed, and leaves no processes or loops behind under repeated and concurrent calls. Other platforms take the unchanged path. Fixes #30400 --- backend/open_webui/utils/recurrence.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/utils/recurrence.py b/backend/open_webui/utils/recurrence.py index d5c2b6b1f2..c4817eca07 100644 --- a/backend/open_webui/utils/recurrence.py +++ b/backend/open_webui/utils/recurrence.py @@ -1,11 +1,14 @@ """Recurrence calculations isolated from application/DB imports for worker processes.""" +import asyncio import logging from datetime import datetime, timedelta +from functools import partial from typing import Optional from zoneinfo import ZoneInfo -from anyio import fail_after, to_process +import anyio +from anyio import fail_after, to_process, to_thread from dateutil.rrule import HOURLY, MINUTELY, SECONDLY, rruleset, rrulestr from open_webui.constants import ERROR_MESSAGES @@ -101,6 +104,12 @@ async def _get_next_occurrences(s: str, now: datetime, n: int) -> list[datetime] return await to_process.run_sync(_next_occurrences, s, now, n, cancellable=True) except TimeoutError as e: raise RecurrenceEvaluationTimeout('Schedule took too long to evaluate; simplify its recurrence rule.') from e + except NotImplementedError: + # Windows' SelectorEventLoop (required by psycopg) cannot spawn subprocesses. + run_on_proactor_loop = partial( + anyio.run, _get_next_occurrences, s, now, n, backend_options={'loop_factory': asyncio.ProactorEventLoop} + ) + return await to_thread.run_sync(run_on_proactor_loop) async def validate_rrule(s: str, tz: str = None) -> None: From c86c46e0348371ae299eb8a42a065777e5800823 Mon Sep 17 00:00:00 2001 From: Aleix Dorca Date: Thu, 24 Sep 2026 05:29:51 +0200 Subject: [PATCH 019/583] i18n: Update catalan translation.json (#30415) * Update catalan translation.json * i18n: Update catalan translation.json and typos --- src/lib/i18n/locales/ca-ES/translation.json | 184 ++++++++++---------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 83470d31f9..3d171cc5f4 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -6,9 +6,9 @@ "[Today at] h:mm A": "[Avui a les] h:mm A", "[Yesterday at] h:mm A": "[Ahir a les] h:mm A", "{{ models }}": "{{ models }}", - "{{count}} added lines_one": "", - "{{count}} added lines_many": "", - "{{count}} added lines_other": "", + "{{count}} added lines_one": "{{count}} línia afegida", + "{{count}} added lines_many": "{{count}} línies afegides", + "{{count}} added lines_other": "{{count}} línies afegides", "{{COUNT}} Available Skills": "{{COUNT}} habilitats disponibles", "{{COUNT}} Available Tools": "{{COUNT}} eines disponibles", "{{COUNT}} characters": "{{COUNT}} caràcters", @@ -33,9 +33,9 @@ "{{count}} of {{total}} accessible_many": "{{count}} de {{total}} accessibles", "{{count}} of {{total}} accessible_other": "{{count}} de {{total}} accessibles", "{{COUNT}} pipeline(s) selected": "Pipelines seleccionades: {{COUNT}}", - "{{count}} removed lines_one": "", - "{{count}} removed lines_many": "", - "{{count}} removed lines_other": "", + "{{count}} removed lines_one": "{{count}} línia eliminada", + "{{count}} removed lines_many": "{{count}} línies eliminades", + "{{count}} removed lines_other": "{{count}} línies eliminades", "{{COUNT}} Replies": "{{COUNT}} respostes", "{{COUNT}} Rows": "{{COUNT}} files", "{{count}} selected_one": "{{count}} seleccionat", @@ -80,7 +80,7 @@ "A new version (v{{LATEST_VERSION}}) is now available.": "Hi ha una nova versió disponible (v{{LATEST_VERSION}}).", "A private conversation between you and selected users": "Una conversa privada entre tu i els usuaris seleccionats", "a user": "un usuari", - "about the Roman Empire": "", + "about the Roman Empire": "sobre l'Imperi Romà", "Accept Autocomplete Generation\nJump to Prompt Variable": "Accepta la generació d'autocompleció\nVés a la variable de la indicació", "Access": "Accés", "Access Control": "Control d'accés", @@ -282,11 +282,11 @@ "Azure AI Speech": "Azure AI Speech", "Azure OpenAI": "Azure OpenAI", "Back": "Enrere", - "Background Image": "", - "Background image must be at most 25 megapixels.": "", - "Background image must be at most 5 MiB.": "", - "Background image must be PNG, JPEG, WebP, or GIF.": "", - "Background image preview": "", + "Background Image": "Imatge de fons", + "Background image must be at most 25 megapixels.": "La imatge de fons ha de tenir com a màxim 25 megapíxels.", + "Background image must be at most 5 MiB.": "La imatge de fons ha de tenir com a màxim 5 MiB.", + "Background image must be PNG, JPEG, WebP, or GIF.": "La imatge de fons ha de ser PNG, JPEG, WebP o GIF.", + "Background image preview": "Vista prèvia de la imatge de fons", "Background sub-agent finished": "El subagent en segon pla ha acabat", "background sub-agents": "subagents en segon pla", "Bad Response": "Resposta errònia", @@ -353,7 +353,7 @@ "Chat Menu": "Menú del xat", "Chat moved successfully": "El xat s'ha mogut correctament", "Chat Permissions": "Permisos del xat", - "Chat unarchived.": "", + "Chat unarchived.": "S'ha desarxivat el xat.", "Chat unshared successfully.": "El xat s'ha deixat de compartir correctament", "Chat Uploads": "Càrregues de xat", "Chat Variables": "Variables de xat", @@ -460,7 +460,7 @@ "Connection lost. Reconnecting...": "Connexió perduda. Reconnectant...", "Connection successful": "Connexió correcta", "Connection Type": "Tipus de connexió", - "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "", + "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Es recomanen les connexions gestionades mitjançant el tauler d'administració per a l'ús diari. Les connexions directes proporcionen un accés còmode als vostres propis punts finals, però confien en la sessió del vostre navegador per mantenir les sol·licituds en funcionament, cosa que les fa més adequades per a proves i ús temporal.", "Connections saved successfully": "Les connexions s'han desat correctament", "Connections settings updated": "Les preferències de les connexions s'han actualitzat", "Contact Admin for WebUI Access": "Posa't en contacte amb l'administrador per accedir a WebUI", @@ -506,14 +506,14 @@ "Could not check for updates": "No s'ha pogut comprovar si hi ha actualitzacions", "Could not load release notes.": "No s'han pogut carregar les notes de la versió.", "Could not read file.": "No s'ha pogut llegir l'arxiu", - "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "", + "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Podries començar preguntant-me sobre els casos en què poso més tard i després donar-me alguns suggeriments per superar-ho?", "Couldn't find your language?": "No trobes el teu idioma?", "CPU": "CPU", "Create": "Crear", "Create a knowledge base": "Crear una base de coneixement", "Create a model": "Crear un model", "Create a new note": "Crear una nova nota", - "Create a reusable terminal skill from this chat.": "", + "Create a reusable terminal skill from this chat.": "Crea una habilitat de terminal reutilitzable des d'aquest xat.", "Create Account": "Crear un compte", "Create Admin Account": "Crear un compte d'Administrador", "Create announcements shown to users in the app.": "Crear anuncis que es mostren als usuaris a l'aplicació.", @@ -524,8 +524,8 @@ "Create new key": "Crear una nova clau", "Create Prompt": "Crear un missatge", "Create scheduled prompts that run automatically on a recurring basis.": "Crea sol·licituds programades que s'executin automàticament de manera recurrent.", - "Create skill": "", - "Create skill: create a reusable terminal skill from this chat.": "", + "Create skill": "Crea habilitat", + "Create skill: create a reusable terminal skill from this chat.": "Crea habilitat: crea una habilitat de terminal reutilitzable des d'aquest xat.", "Create your first note from the Create menu.": "Crear la teva primera nota des del menú Crea.", "Created": "Creat", "Created at": "Creat el", @@ -628,7 +628,7 @@ "Detected Variables": "Variables detectades", "Dictate": "Dictar", "Didn't fully follow instructions": "No s'han seguit les instruccions completament", - "Diff settings": "", + "Diff settings": "Configuració de la diferència", "Direct": "Directe", "Direct Message": "Missatge directe", "Direct Tool Servers": "Servidors d'eines directes", @@ -852,7 +852,7 @@ "Enter skill instructions in markdown...": "Introdueix les instruccions de l'habilitat en format markdown...", "Enter Sougou Search API sID": "Introdueix el sID de l'API de Sougou Search", "Enter Sougou Search API SK": "Introdueix l'SK de l'API de Sougou Search", - "Enter Staan API Key": "", + "Enter Staan API Key": "Introdueix la clau de l'API de Staan", "Enter stop sequence": "Introdueix la seqüència de parada", "Enter system prompt": "Introdueix la indicació de sistema", "Enter system prompt here": "Entra la indicació de sistema aquí", @@ -934,8 +934,8 @@ "Experience": "Experiència d'usuari", "Experimental": "Experimental", "Explain": "Explicar", - "Explain options trading": "", - "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "", + "Explain options trading": "Explica'm el comerç d'opcions", + "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Explica'm el comerç d'opcions en termes senzills si estic familiaritzat amb la compra i venda d'accions.", "Explored": "Explorat", "Exploring": "Explorant", "Export": "Exportar", @@ -954,8 +954,8 @@ "External Knowledge Source": "Font de coneixement extern", "External vectors must be generated with the same embedding model configured in Open WebUI.": "Els vectors externs s'han de generar amb el mateix model d'incrustació configurat a Open WebUI.", "Extract action items from this note.": "Extreure elements d'acció d'aquesta nota.", - "Extracted text lines": "", - "Extracting text and comparing…": "", + "Extracted text lines": "Línies de text extretes", + "Extracting text and comparing…": "S'està extreent text i comparant...", "Failed to add file.": "No s'ha pogut afegir l'arxiu.", "Failed to add members": "No s'han pogut afegir els membres", "Failed to archive chat.": "No s'ha pogut arxivar el xat", @@ -999,7 +999,7 @@ "Failed to save chat variables": "No s'han pogut desar les variables del xat", "Failed to save connections": "No s'han pogut desar les connexions", "Failed to save conversation": "No s'ha pogut desar la conversa", - "Failed to save model": "", + "Failed to save model": "No s'ha pogut desar el model", "Failed to save models configuration": "No s'ha pogut desar la configuració dels models", "Failed to save policy: {{error}}": "No s'ha pogut desar la política: {{error}}", "Failed to save terminal servers": "No s'han pogut desar els servidors de terminal", @@ -1009,7 +1009,7 @@ "Failed to update settings": "No s'han pogut actualitzar les preferències", "Failed to update status": "No s'ha pogut actualitzar l'estat", "Failed to update webhook": "No s'ha pogut actualitzar el webhook", - "Failed to upload background image.": "", + "Failed to upload background image.": "No s'ha pogut carregar la imatge de fons.", "Failed to upload file.": "No s'ha pogut pujar l'arxiu.", "Features Permissions": "Permisos de les característiques", "February": "Febrer", @@ -1026,7 +1026,7 @@ "File content": "Contingut de l'arxiu", "File content updated successfully.": "El contingut de l'arxiu s'ha actualitzat correctament.", "File deleted successfully.": "L'arxiu s'ha eliminat correctament", - "File differences": "", + "File differences": "Diferències de fitxers", "File Mode": "Mode d'arxiu", "File moved.": "Arxius moguts", "File name": "Nom d'arxiu", @@ -1063,15 +1063,15 @@ "Follow up: {{question}}": "Continuació: {{question}}", "Followed instructions perfectly": "S'han seguit les instruccions perfectament", "for placeholders": "per a marcadors de posició", - "for what to do with my kids' art": "", + "for what to do with my kids' art": "per saber què fer amb l'art dels meus fills", "Fork": "Bifurcar", "Fork chat": "Bifurcar el xat", "Fork the current chat branch into a new chat.": "Bifurcar la branca actual del xat en un xat nou.", "Fork: fork the current chat branch into a new chat.": "Bifurcar: bifurcar la branca actual del xat en un xat nou.", "Forking chat...": "S'està bifurcant el xat...", "Form": "Formulari", - "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "", - "Formatting": "", + "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Formata el Markdown mentre escrivis i enganxes. Desactiva-ho per mantenir els caràcters de Markdown i enganxar text pla. El formatat existent es conserva.", + "Formatting": "Formatatge", "Formatting may be inconsistent from source.": "La formatació pot ser inconsistent amb l'origen", "Forward": "Endavant", "Forward cookies": "Reenviar galetes", @@ -1111,8 +1111,8 @@ "Get information on {{name}} in the UI": "Obtenir informació de {{name}} a l'interfície d'usuari", "Get started": "Començar", "Get started with {{WEBUI_NAME}}": "Comença amb {{WEBUI_NAME}}", - "Give me ideas": "", - "give me tips": "", + "Give me ideas": "Dona'm idees", + "give me tips": "dona'm consells", "Global": "Global", "Good Response": "Bona resposta", "Google": "Google", @@ -1138,8 +1138,8 @@ "Height": "Alçada", "Hello, {{name}}": "Hola, {{name}}", "Help": "Ajuda", - "Help me study": "", - "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "", + "Help me study": "Ajuda'm a estudiar", + "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Ajuda'm a estudiar vocabulari: escriu una frase perquè ompli el buit, i intentaré triar l'opció correcta.", "Help the community discover great models": "Ajuda la comunitat a descobrir models", "Help us translate Open WebUI!": "Ajuda'ns a traduir Open WebUI!", "Hex Color": "Color hexadecimal", @@ -1150,7 +1150,7 @@ "Hide from Sidebar": "Amagar de la barra lateral", "Hide Hidden Files": "Amaga els fitxers ocults", "Hide Model": "Amagar el model", - "Hide whitespace": "", + "Hide whitespace": "Amaga els espais en blanc", "High": "Alt", "History": "Historial", "Home": "Inici", @@ -1170,7 +1170,7 @@ "Identity audit": "Auditoria d'identitat", "Idle only": "Només inactiu", "Idle Timeout": "Temps d'espera d'inactivitat", - "if I'm familiar with buying and selling stocks": "", + "if I'm familiar with buying and selling stocks": "si estic familiaritzat amb la compra i venda d'accions", "Image": "Imatge", "Image Generation": "Generació d'imatges", "Image Max Compression Size": "Mida màxima de la compressió d'imatges", @@ -1207,7 +1207,7 @@ "Instructions": "Instruccions", "Integrations": "Integracions", "Interface Settings Access": "Accés a la configuració de la interfície", - "Invalid background image.": "", + "Invalid background image.": "Imatge de fons no vàlida.", "Invalid file format.": "Format d'arxiu no vàlid.", "Invalid format.": "Format no vàlid.", "Invalid JSON": "JSON no vàlid", @@ -1321,13 +1321,13 @@ "Mark all as read": "Marcar-ho tot com a llegit", "Mark as unread": "Marcar-ho com a no llegit", "Markdown": "Markdown", - "Market": "", - "Matching tabs: {{count}}_one": "", - "Matching tabs: {{count}}_many": "", - "Matching tabs: {{count}}_other": "", - "Max Snippets": "", + "Market": "Mercat", + "Matching tabs: {{count}}_one": "Pestanya coincident: {{count}}", + "Matching tabs: {{count}}_many": "Pestanyes coincidents: {{count}}", + "Matching tabs: {{count}}_other": "Pestanyes coincidents: {{count}}", + "Max Snippets": "Max Fragments", "Max tokens to retrieve (1024-32768, default 8192)": "Nombre màxim de tokens a obtenir (1024-32768, per defecte 8192)", - "Maximum extra snippets returned per result. Set to 0 to disable them.": "", + "Maximum extra snippets returned per result. Set to 0 to disable them.": "Màxim de fragments addicionals retornats per resultat. Establir-lo a 0 per desactivar-los.", "Maximum number of files per folder is {{max}}.": "El nombre màxim de fitxers per carpeta és {{max}}.", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es poden descarregar un màxim de 3 models simultàniament. Si us plau, prova-ho més tard.", "May": "Maig", @@ -1381,7 +1381,7 @@ "Model filesystem path detected. Model shortname is required for update, cannot continue.": "S'ha detectat el camí del sistema de fitxers del model. És necessari un nom curt del model per actualitzar, no es pot continuar.", "Model Filtering": "Filtrat de models", "Model ID": "Identificador del model", - "Model ID cannot contain whitespace.": "", + "Model ID cannot contain whitespace.": "L'identificador del model no pot contenir espais en blanc.", "Model ID is already added": "L'identificador del model ja s'ha afegit", "Model ID is required.": "L'ID del model és necessari", "Model IDs": "Identificadors del model", @@ -1535,7 +1535,7 @@ "No suggestion prompts": "Cap prompt suggerit", "No Terminal connection configured.": "No hi ha cap configuració de terminal configurada.", "No terminal connections configured.": "No hi ha connexions de terminal configurades.", - "No text differences": "", + "No text differences": "Sense diferències de text", "No tool server connections configured.": "No hi ha connexions a servidors d'eines configurades.", "No tools accessible": "No hi ha eines accessibles", "No tools found": "No s'han trobat eines", @@ -1570,7 +1570,7 @@ "OAuth Server URL": "URL del servidor OAuth", "OAuth session disconnected": "Sessió OAuth desconnectada", "October": "Octubre", - "of a website's sticky header": "", + "of a website's sticky header": "de la capçalera d'un lloc web", "Off": "Desactivat", "Okay, Let's Go!": "D'acord, som-hi!", "OLED Dark": "OLED Fosc", @@ -1632,7 +1632,7 @@ "out of": "de", "Output": "Sortida", "OUTPUT": "SORTIDA", - "Overcome procrastination": "", + "Overcome procrastination": "Superar la procrastinació", "Overview": "Vista general", "PaddleOCR-vl": "PaddleOCR-vl", "PaddleOCR-vl API URL required.": "URL de l'API PaddleOCR-vl necessària", @@ -1695,7 +1695,7 @@ "Please select a valid JSON file": "Si us plau, selecciona un arxiu JSON vàlid", "Please select at least one user for Direct Message channel.": "Selecciona com a mínim un usuari per al canal de missatge directe.", "Please wait until all files are uploaded.": "Si us plau, espera fins que s'hagin carregat tots els fitxers.", - "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "", + "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP o GIF. Fins a 5 MiB i 25 megapíxels.", "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Els canvis de política s'apliquen als nous terminals subministrats. Actualitza els terminals coincidents per aplicar-los als terminals existents.", "Policy ID": "ID de política", "Policy ID is required": "L'identificador de la política és obligatori", @@ -1780,7 +1780,7 @@ "Refused when it shouldn't have": "Refusat quan no hauria d'haver estat", "Regenerate": "Regenerar", "Regenerate Response": "Tornar a generar la resposta", - "Region and language of the search results, e.g. en-us.": "", + "Region and language of the search results, e.g. en-us.": "Regió i idioma dels resultats de la cerca, p. ex. en-us.", "Register Again": "Registrar de nou", "Register Client": "Registrar client", "Registered": "Registrat", @@ -1810,7 +1810,7 @@ "Renamed to {{name}}": "S'ha reanomenat a {{name}}", "Reorder": "Reordenar", "Repeat": "Repetir", - "Replace": "", + "Replace": "Substituir", "Reply": "Respondre", "Reply in Thread": "Respondre al fil", "Reply to thread...": "Respondre al fil...", @@ -1909,8 +1909,8 @@ "Searching the web": "Cercant la web...", "See readme.md for instructions": "Consulta l'arxiu readme.md per obtenir instruccions", "Select": "Escollir", - "Select {{modelName}} model": "Selecciona el model {{modelName}}", - "Select {{name}}": "", + "Select {{modelName}} model": "Seleccionar el model {{modelName}}", + "Select {{name}}": "Seleccionar {{name}}", "Select a base model (e.g. llama3, gpt-4o)": "Seleccionar un model base (p. ex. llama3, gpt-4o)", "Select a conversation to preview": "Seleccionar una conversa a previsualitzar", "Select a engine": "Seleccionar un motor", @@ -1932,7 +1932,7 @@ "Select an auth method": "Seleccionar un mètode d'autenticació", "Select an embedding model engine": "Seleccionar un motor d'incrustació", "Select an engine": "Seleccionar un motor", - "Select an instance": "Selecciona una instància", + "Select an instance": "Seleccionar una instància", "Select an Ollama instance": "Seleccionar una instància d'Ollama", "Select an option": "Seleccionar una opció", "Select an output format": "Seleccionar un format de sortida", @@ -2186,8 +2186,8 @@ "settings.admin.connections.cacheBaseModelList.label": "Llista de models base en memòria cau", "settings.admin.connections.directConnections.description": "Les connexions directes permeten als usuaris connectar-se als seus propis endpoints d'API compatibles amb OpenAI.", "settings.admin.connections.directConnections.label": "Connexions directes", - "settings.admin.connections.directIntegrations.description": "", - "settings.admin.connections.directIntegrations.label": "", + "settings.admin.connections.directIntegrations.description": "Les connexions gestionades mitjançant el Panell d'Administració són recomanables per a l'ús quotidià. Les connexions directes proporcionen un accés còmode als vostres propis punts de connexió, però depenen de la sessió del navegador per mantenir les sol·licituds en execució, cosa que les fa més adequades per a proves i ús temporal.", + "settings.admin.connections.directIntegrations.label": "Integracions directes", "settings.admin.connections.manageOllamaApiConnections.description": "Problemes en accedir a Ollama?", "settings.admin.connections.manageOllamaApiConnections.label": "Gestionar les connexions a l'API d'Ollama", "settings.admin.connections.manageOpenaiApiConnections.label": "Gestionar les connexions a l'API d'OpenAI", @@ -2361,7 +2361,7 @@ "settings.admin.documents.textSplitter.label": "Separador de text", "settings.admin.documents.tikaServerUrl.description": "Punt final del servidor Tika utilitzat per a l'extracció de contingut.", "settings.admin.documents.tikaServerUrl.label": "URL del servidor Tika", - "settings.admin.documents.tikaServerVersion.description": "Selecciona la versió de l'API del servidor Tika.", + "settings.admin.documents.tikaServerVersion.description": "Seleccionar la versió de l'API del servidor Tika.", "settings.admin.documents.tikaServerVersion.label": "Versió del servidor Tika", "settings.admin.documents.title": "Documents", "settings.admin.documents.tokenizerModel.description": "Model tokenitzador utilitzat per a la divisió de tokens del transformador.", @@ -2686,8 +2686,8 @@ "settings.admin.web.kagiSearchApiKey.label": "Clau API de Kagi Search", "settings.admin.web.language.label": "Idioma", "settings.admin.web.linkupApiKey.label": "Clau API de Linkup", - "settings.admin.web.maxContentLength.description": "", - "settings.admin.web.maxContentLength.label": "", + "settings.admin.web.maxContentLength.description": "Mida màxima del contingut retornat pels resultats de la cerca web, en caràcters.", + "settings.admin.web.maxContentLength.label": "Longitud màxima del contingut", "settings.admin.web.microsoftWebIqApiBaseUrl.label": "URL de base de l'API Microsoft Web IQ", "settings.admin.web.microsoftWebIqApiKey.label": "Clau de l'API de Microsoft Web IQ", "settings.admin.web.mojeekSearchApiKey.label": "Clau API de Mojeek Search", @@ -2836,31 +2836,31 @@ "settings.personal.general.modelParameters.label": "Paràmetres del model", "settings.personal.general.parameters.contextCompactionThreshold.description": "Establir un llindar de tokens per a la compactació de context específic del model. Quan s'estableix, anul·la el llindar global fins al límit global.", "settings.personal.general.parameters.contextCompactionThreshold.label": "Llindar de compactació del context", - "settings.personal.general.parameters.format.label": "", - "settings.personal.general.parameters.frequencyPenalty.label": "", + "settings.personal.general.parameters.format.label": "Format", + "settings.personal.general.parameters.frequencyPenalty.label": "Penalització de freqüència", "settings.personal.general.parameters.functionCalling.description": "El mode natiu (per defecte) aprofita les capacitats de trucada d'eines integrades del model. El mode heretat funciona amb una gamma més àmplia de models trucant a les eines una vegada abans de l'execució mitjançant una injecció ràpida.", "settings.personal.general.parameters.functionCalling.label": "Crida a funcions", - "settings.personal.general.parameters.keepAlive.label": "", - "settings.personal.general.parameters.logitBias.label": "", - "settings.personal.general.parameters.maxTokens.label": "", - "settings.personal.general.parameters.minP.label": "", - "settings.personal.general.parameters.mirostat.label": "", - "settings.personal.general.parameters.mirostatEta.label": "", - "settings.personal.general.parameters.mirostatTau.label": "", - "settings.personal.general.parameters.numBatch.label": "", - "settings.personal.general.parameters.numCtx.label": "", - "settings.personal.general.parameters.numGpu.label": "", - "settings.personal.general.parameters.numKeep.label": "", - "settings.personal.general.parameters.numThread.label": "", + "settings.personal.general.parameters.keepAlive.label": "Keep Alive", + "settings.personal.general.parameters.logitBias.label": "Biaix de logits", + "settings.personal.general.parameters.maxTokens.label": "Màxim de tokens", + "settings.personal.general.parameters.minP.label": "Min P", + "settings.personal.general.parameters.mirostat.label": "Mirostat", + "settings.personal.general.parameters.mirostatEta.label": "Mirostat Eta", + "settings.personal.general.parameters.mirostatTau.label": "Mirostat Tau", + "settings.personal.general.parameters.numBatch.label": "Num Batch", + "settings.personal.general.parameters.numCtx.label": "Num Ctx", + "settings.personal.general.parameters.numGpu.label": "Num GPU", + "settings.personal.general.parameters.numKeep.label": "Num Keep", + "settings.personal.general.parameters.numThread.label": "Num Thread", "settings.personal.general.parameters.ollama.description": "Aquesta opció activa o desactiva l'ús de la funció de raonament a Ollama, que permet que el model pensi abans de generar una resposta. Quan està activada, el model pot trigar una estona en processar el context de la conversa i generar una resposta més reflexiva.", "settings.personal.general.parameters.ollama.label": "Ollama", - "settings.personal.general.parameters.presencePenalty.label": "", + "settings.personal.general.parameters.presencePenalty.label": "Penalització de presència", "settings.personal.general.parameters.reasoningEffort.description": "Restringeix l'esforç de raonament dels models de raonament. Només aplicable a models de raonament de proveïdors específics que donen suport a l'esforç de raonament.", "settings.personal.general.parameters.reasoningEffort.label": "Esforç de raonament", "settings.personal.general.parameters.reasoningTags.description": "Activar, desactivar o personalitzar les etiquetes de raonament que utilitza el model. \"Activat\" utilitza etiquetes predeterminades, \"Desactivat\" desactiva les etiquetes de raonament i \"Personalitzat\" permet especificar les etiquetes d'inici i finalització.", "settings.personal.general.parameters.reasoningTags.label": "Etiqueta de raonament", - "settings.personal.general.parameters.repeatLastN.label": "", - "settings.personal.general.parameters.repeatPenalty.label": "", + "settings.personal.general.parameters.repeatLastN.label": "Repetir darrers N", + "settings.personal.general.parameters.repeatPenalty.label": "Penalització de repetició", "settings.personal.general.parameters.seed.description": "Estableix la llavor del nombre aleatori que s'utilitzarà per a la generació. Establir-ho a un número específic farà que el model generi el mateix text per a la mateixa sol·licitud.", "settings.personal.general.parameters.seed.label": "Llavor", "settings.personal.general.parameters.stopSequence.description": "Establir les seqüències d'aturada a utilitzar. Quan es trobi aquest patró, el LLM deixarà de generar text. Es poden establir diversos patrons de parada especificant diversos paràmetres de parada separats en un fitxer model.", @@ -2871,12 +2871,12 @@ "settings.personal.general.parameters.streamDeltaChunkSize.label": "Mida del fragment Delta del flux", "settings.personal.general.parameters.temperature.description": "La temperatura del model. Augmentar la temperatura farà que el model respongui de manera més creativa.", "settings.personal.general.parameters.temperature.label": "Temperatura", - "settings.personal.general.parameters.tfsZ.label": "", - "settings.personal.general.parameters.think.label": "", - "settings.personal.general.parameters.topK.label": "", - "settings.personal.general.parameters.topP.label": "", - "settings.personal.general.parameters.useMlock.label": "", - "settings.personal.general.parameters.useMmap.label": "", + "settings.personal.general.parameters.tfsZ.label": "TFS Z", + "settings.personal.general.parameters.think.label": "Think", + "settings.personal.general.parameters.topK.label": "Top K", + "settings.personal.general.parameters.topP.label": "Top P", + "settings.personal.general.parameters.useMlock.label": "Utilitzar mlock", + "settings.personal.general.parameters.useMmap.label": "Utilitzar mmap", "settings.personal.general.sections.advancedParameters.title": "Paràmetres avançats", "settings.personal.general.sections.systemPrompt.description": "Establir la sol·licitud predeterminada del sistema per a nous xats.", "settings.personal.general.sections.systemPrompt.title": "Indicació del Sistema", @@ -3017,7 +3017,7 @@ "settings.personal.personalization.savedMemories.label": "Memòria desada", "settings.personal.personalization.sections.memory.title": "Memòria", "settings.personal.personalization.title": "Personalització", - "settings.personal.shortcuts.acceptAutocomplete.label": "", + "settings.personal.shortcuts.acceptAutocomplete.label": "Acceptar autocompletat", "settings.personal.shortcuts.addPrompt.label": "Afegir indicació personalitzada", "settings.personal.shortcuts.allowToolCall.label": "Permetre la crida a l'eina", "settings.personal.shortcuts.attachFile.label": "Adjuntar arxiu del coneixement", @@ -3082,8 +3082,8 @@ "Show Files": "Mostra els arxius", "Show Hidden Files": "Mostra els fitxers ocults", "Show image preview": "Mostrar la previsualització de la imatge", - "Show me a code snippet": "", - "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "", + "Show me a code snippet": "Mostra'm un fragment de codi", + "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Mostra'm un fragment de codi de la capçalera d'un lloc web en CSS i JavaScript.", "Show Model": "Mostrar el model", "Show more": "Mostrar-ne més", "Show or switch the current model.": "Mostrar o canviar el model actual.", @@ -3132,7 +3132,7 @@ "Speech recognition error: {{error}}": "Error de reconeixement de veu: {{error}}", "Speech-to-Text Language": "Llengua de Veu-a-Text", "Sponsor on GitHub": "Patrocina a GitHub", - "Staan API Key": "", + "Staan API Key": "Clau de l'API de Staan", "Start a new conversation": "Iniciar una nova conversa", "Start of the channel": "Inici del canal", "Start Tag": "Etiqueta d'inici", @@ -3169,7 +3169,7 @@ "Summarize this note.": "Resumeix aquesta nota.", "Support": "Dona suport", "Support this plugin:": "Dona suport a aquest complement:", - "Swap": "", + "Swap": "Intercanviar", "Switch camera": "Canviar la càmera", "Switch to JSON editor": "Canviar a l'editor JSON", "Switch to visual editor": "Canviar a l'editor visual", @@ -3198,8 +3198,8 @@ "Task List": "Llista de tasques", "Tasks": "Tasques", "tasks completed": "tasques completades", - "Tell me a fun fact": "", - "Tell me a random fun fact about the Roman Empire": "", + "Tell me a fun fact": "Explica'm una dada divertida", + "Tell me a random fun fact about the Roman Empire": "Explica'm una dada divertida aleatòria sobre l'Imperi Romà", "Tell us more:": "Dona'ns més informació:", "Temporary": "Temporal", "Temporary Chat": "Xat temporal", @@ -3335,7 +3335,7 @@ "Type Hugging Face Resolve (Download) URL": "Escriu la URL de Resolució (Descàrrega) de Hugging Face", "Type your answer": "Escriu la teva resposta", "Uh-oh! There was an issue with the response.": "Vaja! Hi ha hagut una incidència amb la resposta.", - "Unarchive": "", + "Unarchive": "Desarxivar", "Unarchive Chat": "Desarxivar xat", "Unassigned": "Sense assignar", "Underline": "Subratllat", @@ -3372,7 +3372,7 @@ "Upload failed for {{failed}} of {{total}} files.": "Arxius que no s'han pogut pujar: {{failed}} de {{total}}.", "Upload files": "Pujar fitxers", "Upload Files": "Pujar fitxers", - "Upload Folder": "", + "Upload Folder": "Pujar carpeta", "Upload Model": "Pujar model", "Upload Photo": "Carrega la foto", "Upload profile image": "Pujar imatge de perfil", @@ -3444,7 +3444,7 @@ "Visible": "Visible", "Visible to all users": "Visible per a tots els usuaris", "Visual": "Visual", - "vocabulary for a college entrance exam": "", + "vocabulary for a college entrance exam": "vocabulari per a un examen d'accés a la universitat", "Voice": "Veu", "Voice Input": "Entrada de veu", "Voice mode": "Mode de veu", @@ -3475,7 +3475,7 @@ "Weekly": "Cada setmana", "Weekly at": "Setmanalment a les", "Welcome to your AI home.": "Benvingut a la teva IA.", - "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "", + "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Quines són 5 coses creatives que podria fer amb l'art dels meus fills? No vull llençar-los, però també és massa desordre.", "What are you trying to achieve?": "Què intentes aconseguir?", "What are you working on?": "En què estàs treballant?", "What is NOT shared:": "Què no es comparteix", From 53c7ed33708b1d01d6748ff5b5fd5d91435edd30 Mon Sep 17 00:00:00 2001 From: CosmicFlavour <146029698+CosmicFlavour@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:30:05 +0200 Subject: [PATCH 020/583] i18n: add missing french translation in fr_FR (#30403) --- src/lib/i18n/locales/fr-FR/translation.json | 2288 +++++++++---------- 1 file changed, 1144 insertions(+), 1144 deletions(-) diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 61dac839ad..b9a6b546a2 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -6,88 +6,88 @@ "[Today at] h:mm A": "[Aujourd'hui à] H[h]mm", "[Yesterday at] h:mm A": "[Hier à] H[h]mm", "{{ models }}": "{{ models }}", - "{{count}} added lines_one": "", - "{{count}} added lines_many": "", - "{{count}} added lines_other": "", - "{{COUNT}} Available Skills": "", + "{{count}} added lines_one": "{{count}} ligne ajoutée", + "{{count}} added lines_many": "{{count}} lignes ajoutées", + "{{count}} added lines_other": "{{count}} lignes ajoutées", + "{{COUNT}} Available Skills": "{{COUNT}} compétences disponibles", "{{COUNT}} Available Tools": "{{COUNT}} outils disponibles ", "{{COUNT}} characters": "{{COUNT}} caractères", - "{{COUNT}} document(s) selected.": "", + "{{COUNT}} document(s) selected.": "{{COUNT}} document(s) sélectionné(s).", "{{COUNT}} extracted lines": "{{COUNT}} lignes extraites", - "{{count}} files_one": "", - "{{count}} files_many": "", - "{{count}} files_other": "", + "{{count}} files_one": "{{count}} fichier", + "{{count}} files_many": "{{count}} fichiers", + "{{count}} files_other": "{{count}} fichiers", "{{COUNT}} files": "{{COUNT}} fichiers", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", - "{{count}} filters_one": "", - "{{count}} filters_many": "", - "{{count}} filters_other": "", - "{{count}} groups_one": "", - "{{count}} groups_many": "", - "{{count}} groups_other": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "{{count}} fichier sélectionné. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. Les fichiers supprimés seront retirés. La structure des dossiers sera reproduite. Continuer ?", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "{{count}} fichiers sélectionnés. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. Les fichiers supprimés seront retirés. La structure des dossiers sera reproduite. Continuer ?", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "{{count}} fichiers sélectionnés. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. Les fichiers supprimés seront retirés. La structure des dossiers sera reproduite. Continuer ?", + "{{count}} filters_one": "{{count}} filtre", + "{{count}} filters_many": "{{count}} filtres", + "{{count}} filters_other": "{{count}} filtres", + "{{count}} groups_one": "{{count}} groupe", + "{{count}} groups_many": "{{count}} groupes", + "{{count}} groups_other": "{{count}} groupes", "{{COUNT}} hidden lines": "Nombres de lignes cachées {{COUNT}}", "{{COUNT}} members": "{{COUNT}} membres", - "{{count}} of {{total}} accessible_one": "", - "{{count}} of {{total}} accessible_many": "", - "{{count}} of {{total}} accessible_other": "", - "{{COUNT}} pipeline(s) selected": "", - "{{count}} removed lines_one": "", - "{{count}} removed lines_many": "", - "{{count}} removed lines_other": "", + "{{count}} of {{total}} accessible_one": "{{count}} sur {{total}} accessible", + "{{count}} of {{total}} accessible_many": "{{count}} sur {{total}} accessibles", + "{{count}} of {{total}} accessible_other": "{{count}} sur {{total}} accessibles", + "{{COUNT}} pipeline(s) selected": "{{COUNT}} pipeline(s) sélectionné(s)", + "{{count}} removed lines_one": "{{count}} ligne supprimée", + "{{count}} removed lines_many": "{{count}} lignes supprimées", + "{{count}} removed lines_other": "{{count}} lignes supprimées", "{{COUNT}} Replies": "{{COUNT}} réponses", "{{COUNT}} Rows": "{{COUNT}} lignes", - "{{count}} selected_one": "", - "{{count}} selected_many": "", - "{{count}} selected_other": "", + "{{count}} selected_one": "{{count}} sélectionné", + "{{count}} selected_many": "{{count}} sélectionnés", + "{{count}} selected_other": "{{count}} sélectionnés", "{{COUNT}} Sources": "{{COUNT}} Sources", - "{{count}} users_one": "", - "{{count}} users_many": "", - "{{count}} users_other": "", + "{{count}} users_one": "{{count}} utilisateur", + "{{count}} users_many": "{{count}} utilisateurs", + "{{count}} users_other": "{{count}} utilisateurs", "{{COUNT}} words": "{{COUNT}} mots", "{{COUNT}}d_time_ago": "{{COUNT}}j", "{{COUNT}}h_time_ago": "{{COUNT}}h", "{{COUNT}}m_time_ago": "{{COUNT}}min", "{{COUNT}}w_time_ago": "{{COUNT}}sem", "{{COUNT}}y_time_ago": "{{COUNT}}a", - "{{label}} contains invalid JSON": "", - "{{label}} must be a JSON object": "", + "{{label}} contains invalid JSON": "{{label}} contient un JSON invalide", + "{{label}} must be a JSON object": "{{label}} doit être un objet JSON", "{{model}} download has been canceled": "Le téléchargement de {{model}} a été annulé", "{{modelName}} profile image": "Image de profil de {{modelName}}", "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} a réagi avec {{REACTION}}", - "{{page}} / {{totalPages}} ({{rows}} rows)": "", - "{{percent}}% full": "", + "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} lignes)", + "{{percent}}% full": "{{percent}}% plein", "{{user}}'s Chats": "Conversations de {{user}}", "{{webUIName}} Backend Required": "Backend {{webUIName}} requis", - "* (all domains)": "", + "* (all domains)": "* (tous les domaines)", "*Prompt node ID(s) are required for image generation": "*Les ID de noeud du prompt sont nécessaires pour la génération d'image", - "*required": "", - "1 file": "", - "1 group": "", + "*required": "*requis", + "1 file": "1 fichier", + "1 group": "1 groupe", "1 hour before": "1 heure avant", "1 Source": "1 Source", - "1 user": "", + "1 user": "1 utilisateur", "10 minutes before": "10 minutes avant", "15 minutes before": "15 minutes avant", "1m_time_ago": "1min", "30 minutes before": "30 minutes avant", "5 minutes before": "5 minutes avant", - "A chat run failed.": "", - "A chat run finished successfully.": "", + "A chat run failed.": "Une exécution de conversation a échoué.", + "A chat run finished successfully.": "Une exécution de conversation s'est terminée avec succès.", "A collaboration channel where people join as members": "Un canal collaboratif où les membres rejoignent librement", "A discussion channel where access is controlled by groups and permissions": "Un canal de discussion où l'accès est contrôlé par les groupes et les permissions", "A new version (v{{LATEST_VERSION}}) is now available.": "Une nouvelle version (v{{LATEST_VERSION}}) est disponible.", "A private conversation between you and selected users": "Une conversation privée entre vous et les utilisateurs sélectionnés", "a user": "un utilisateur", - "about the Roman Empire": "", + "about the Roman Empire": "à propos de l'Empire romain", "Accept Autocomplete Generation\nJump to Prompt Variable": "Accepter l'autocomplétion\nRenseigner les variables du prompt", "Access": "Accès", "Access Control": "Contrôle d'accès", "Access Grants": "Droits d'accès", - "Access level": "", + "Access level": "Niveau d'accès", "Access List": "Liste des accès", - "Access prohibited": "", + "Access prohibited": "Accès interdit", "Access updated": "Accès mis à jour", "Accessible to all users": "Accessible à tous les utilisateurs", "Account Activation Pending": "Activation du compte en attente", @@ -100,7 +100,7 @@ "Activity": "Activité", "Add": "Ajouter", "Add a model ID": "Ajouter un ID de modèle", - "Add a preference, fact, or instruction about you": "", + "Add a preference, fact, or instruction about you": "Ajoutez une préférence, un fait ou une instruction vous concernant", "Add a short description about what this model does": "Ajoutez une brève description de ce que fait ce modèle.", "Add a tag": "Ajouter un tag", "Add a tag...": "Ajouter un tag...", @@ -113,15 +113,15 @@ "Add Custom Prompt": "Ajouter un prompt personnalisé", "Add description": "Ajouter une description", "Add Details": "Ajouter des détails", - "Add durable context for future chats": "", + "Add durable context for future chats": "Ajouter un contexte durable pour les futures conversations", "Add Files": "Ajouter des fichiers", "Add Image": "Ajouter une image", - "Add Knowledge Connection": "", + "Add Knowledge Connection": "Ajouter une connexion de connaissances", "Add location": "Ajouter un lieu", "Add Member": "Ajouter un membre", "Add Members": "Ajouter des membres", "Add Memory": "Ajouter un souvenir", - "Add prompt suggestion": "", + "Add prompt suggestion": "Ajouter une suggestion de prompt", "Add Reaction": "Ajouter une réaction", "Add tag": "Ajouter un tag", "Add Tag": "Ajouter un tag", @@ -129,11 +129,11 @@ "Add Terminal Connection": "Ajouter une connexion à un terminal", "Add text content": "Ajouter du contenu textuel", "Add to favorites": "Ajouter aux favoris", - "Add translation": "", + "Add translation": "Ajouter une traduction", "Add User": "Ajouter un utilisateur", "Add User Group": "Ajouter un groupe d'utilisateurs", - "Add User Variable": "", - "Add webhook": "", + "Add User Variable": "Ajouter une variable utilisateur", + "Add webhook": "Ajouter un webhook", "Add webpage": "Ajouter une page web", "Add your Open Terminal URL and API key in Settings → Integrations.": "Ajoutez votre URL Open Terminal et votre clé API dans Réglages → Intégrations.", "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Options de configuration supplémentaires pour Marker. Cela doit être un JSON avec des paires clé-valeur. Par exemple, '{\"key\": \"value\"}'. Les clés supportées incluent : disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level", @@ -141,27 +141,27 @@ "admin": "administrateur", "Admin": "Administrateur", "Admin Panel": "Panneau d'administration", - "Admin-managed service account": "", + "Admin-managed service account": "Compte de service géré par l'administrateur", "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Les administrateurs ont accès à tous les outils en permanence ; les utilisateurs doivent se voir attribuer des outils pour chaque modèle dans l'espace de travail.", "Advanced": "Avancé", "Advanced Params": "Réglages avancés", - "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "", - "AI": "", + "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "Après avoir changé le modèle d'embedding, réindexez les connaissances, la recherche de connaissances et les vecteurs de mémoire pour que les modifications prennent effet.", + "AI": "IA", "All": "Tout", "All chats have been unarchived.": "Toutes les conversations ont été désarchivées.", "All day": "Toute la journée", - "All events": "", + "All events": "Tous les événements", "All models are now hidden": "Tous les modèles sont maintenant masqués", "All models are now visible": "Tous les modèles sont maintenant visibles", "All models deleted successfully": "Tous les modèles supprimés avec succès", - "All rights reserved.": "", - "All shared chats have been unshared.": "", - "All Sources": "", + "All rights reserved.": "Tous droits réservés.", + "All shared chats have been unshared.": "Toutes les conversations partagées ont été désactivées.", + "All Sources": "Toutes les sources", "All time": "Toute la période", "All Users": "Tous les utilisateurs", - "All users and system events": "", - "Allow": "", - "Allow {{NAME}}?": "", + "All users and system events": "Tous les utilisateurs et événements système", + "Allow": "Autoriser", + "Allow {{NAME}}?": "Autoriser {{NAME}} ?", "Allow browser notifications for completed responses.": "Autoriser les notifications du navigateur lorsque les réponses sont terminées.", "Allow Call": "Autoriser les appels", "Allow Chat Controls": "Autoriser les contrôles de la conversation", @@ -186,10 +186,10 @@ "Allow Temporary Chat": "Autoriser la conversation temporaire", "Allow Text to Speech": "Autoriser la synthèse vocale", "Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "Autoriser l'IA à déléguer des tâches à des sous-agents. Chaque sous-agent crée une véritable conversation avec un accès complet aux outils. Consomme des appels LLM supplémentaires.", - "Allow Tool Call": "", + "Allow Tool Call": "Autoriser l'appel d'outil", "Allow Web Upload": "Autoriser le téléversement depuis le web", "Already have an account?": "Avez-vous déjà un compte ?", - "Also bound to {{action}}": "", + "Also bound to {{action}}": "Également lié à {{action}}", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "Alternative à top_p, et vise à assurer un équilibre entre qualité et variété. Le paramètre p représente la probabilité minimale pour qu'un token soit considéré, par rapport à la probabilité du token le plus probable. Par exemple, avec p=0.05 et le token le plus probable ayant une probabilité de 0.9, les logits d'une valeur inférieure à 0.045 sont filtrés.", "Always": "Toujours", "Amazing": "Incroyable", @@ -200,17 +200,17 @@ "and {{COUNT}} more": "et {{COUNT}} autres", "and create a new shared link.": "et créer un nouveau lien partagé.", "Anyone": "Tout le monde", - "Anyone with the link can view": "", + "Anyone with the link can view": "Toute personne disposant du lien peut voir", "API Base URL": "URL de base de l'API", "API Key": "Clé API", - "API Key / Token": "", + "API Key / Token": "Clé API / Jeton", "API Key created.": "Clé API générée.", - "API Key deleted.": "", + "API Key deleted.": "Clé API supprimée.", "API Keys": "Clés API", "API Type": "Type d'API", "API Version": "Version de l'API", "API Version is required": "Version de l'API requise", - "App navigation": "", + "App navigation": "Navigation dans l'application", "applies to all users with the \"user\" role": "s'applique à tous les utilisateurs ayant le rôle « utilisateur »", "April": "Avril", "Archive": "Archiver", @@ -222,25 +222,25 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer toutes les conversations ? Cette action est irréversible.", "Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?", "Are you sure you want to delete this connection? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer cette connexion ? Cette action est irréversible.", - "Are you sure you want to delete this directory?": "", + "Are you sure you want to delete this directory?": "Êtes-vous sûr de vouloir supprimer ce répertoire ?", "Are you sure you want to delete this memory? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer ce souvenir ? Cette action est irréversible.", "Are you sure you want to delete this message?": "Êtes-vous sûr de vouloir supprimer ce message ?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Êtes-vous sûr de vouloir supprimer cette version ? Les versions enfants seront rattachées à la version parente.", - "Are you sure you want to delete this webhook? This action cannot be undone.": "", + "Are you sure you want to delete this webhook? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer ce webhook ? Cette action est irréversible.", "Are you sure you want to delete this?": "Êtes-vous sûr de vouloir supprimer ceci ?", - "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "", + "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "Êtes-vous sûr de vouloir réinitialiser toutes les autorisations à leurs valeurs par défaut ? Vous devrez enregistrer pour appliquer les modifications.", "Are you sure you want to unarchive all archived chats?": "Êtes-vous sûr de vouloir désarchiver toutes les conversations ?", - "Are you sure you want to unshare all shared chats? This will remove all share links.": "", + "Are you sure you want to unshare all shared chats? This will remove all share links.": "Êtes-vous sûr de vouloir désactiver le partage de toutes les conversations ? Cela supprimera tous les liens de partage.", "Artifacts": "Artéfacts", "Asc": "Croissant", "Ask": "Demander", "Ask a question": "Posez votre question", - "Ask a test question": "", - "Ask for approval": "", - "Ask this knowledge source a test question": "", + "Ask a test question": "Poser une question de test", + "Ask for approval": "Demander une approbation", + "Ask this knowledge source a test question": "Poser une question de test à cette source de connaissances", "Assistant": "Assistant", - "Assistant messages": "", - "at": "", + "Assistant messages": "Messages de l'assistant", + "at": "à", "At time of event": "Au moment de l'événement", "Attach File From Knowledge": "Joindre un fichier depuis les connaissances", "Attach Files": "Joindre des fichiers", @@ -248,53 +248,53 @@ "Attach Notes": "Joindre une note", "Attach Webpage": "Joindre une page web", "Attention to detail": "Attention aux détails", - "Audio player": "", + "Audio player": "Lecteur audio", "August": "Août", "Auth": "Auth", - "Auth Mode": "", - "Auth required": "", + "Auth Mode": "Mode d'authentification", + "Auth required": "Authentification requise", "Authenticate": "Authentifier", - "Authorize OAuth": "", + "Authorize OAuth": "Autoriser OAuth", "Auto": "Automatique", "Auto (Random)": "Auto (Aléatoire)", - "Automatic": "", - "Automatic Delivery": "", - "Automatic Events": "", + "Automatic": "Automatique", + "Automatic Delivery": "Livraison automatique", + "Automatic Events": "Événements automatiques", "Automatic1111": "Automatic1111", "AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.", "Automation": "Automatisation", "Automation created": "Automatisation créée", - "Automation Menu": "", + "Automation Menu": "Menu d'automatisation", "Automation title": "Titre de l'automatisation", "Automation triggered": "Automatisation déclenchée", "Automation updated": "Automatisation mise à jour", "Automations": "Automatisations", "Available list": "Liste disponible", "Available models": "Modèles disponibles", - "Available Skills": "", + "Available Skills": "Compétences disponibles", "Available Tools": "Outils disponibles", - "Available variables": "", + "Available variables": "Variables disponibles", "available!": "disponible !", - "Average messages per active day": "", - "Average tokens per chat": "", + "Average messages per active day": "Nombre moyen de messages par jour actif", + "Average tokens per chat": "Nombre moyen de tokens par conversation", "Away": "Absent", "Awful": "Horrible", "Azure AI Speech": "Azure AI Speech", "Azure OpenAI": "Azure OpenAI", "Back": "Retour en arrière", - "Background Image": "", - "Background image must be at most 25 megapixels.": "", - "Background image must be at most 5 MiB.": "", - "Background image must be PNG, JPEG, WebP, or GIF.": "", - "Background image preview": "", - "Background sub-agent finished": "", - "background sub-agents": "", + "Background Image": "Image d'arrière-plan", + "Background image must be at most 25 megapixels.": "L'image d'arrière-plan doit faire au maximum 25 mégapixels.", + "Background image must be at most 5 MiB.": "L'image d'arrière-plan doit faire au maximum 5 MiO.", + "Background image must be PNG, JPEG, WebP, or GIF.": "L'image d'arrière-plan doit être au format PNG, JPEG, WebP ou GIF.", + "Background image preview": "Aperçu de l'image d'arrière-plan", + "Background sub-agent finished": "Sous-agent en arrière-plan terminé", + "background sub-agents": "sous-agents en arrière-plan", "Bad Response": "Mauvaise réponse", "Base Model (From)": "Modèle de base (à partir de)", - "Base Model is required.": "", - "Base Models": "", - "Basic text only": "", - "Basics": "", + "Base Model is required.": "Le modèle de base est requis.", + "Base Models": "Modèles de base", + "Basic text only": "Texte simple uniquement", + "Basics": "Bases", "Bearer": "Bearer", "before": "avant", "Being lazy": "Être fainéant", @@ -306,10 +306,10 @@ "Button ID": "ID du bouton", "Button Label": "Étiquette du bouton", "Button Prompt": "Invite du bouton", - "By": "", + "By": "Par", "by {{name}}": "par {{name}}", "By {{name}}": "Par {{name}}", - "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "", + "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "En soutenant le projet via un parrainage ou une licence entreprise, vous nous aidez à rester indépendants, à livrer de nouvelles fonctionnalités plus rapidement, à améliorer la stabilité et à faire grandir Open WebUI sur le long terme.", "Calendar": "Calendrier", "Calendar created": "Calendrier créé", "Calendar deleted": "Calendrier supprimé", @@ -329,7 +329,7 @@ "Change User Role": "Changer le rôle de l'utilisateur", "Channel": "Canal", "Channel deleted successfully": "Canal supprimé avec succès", - "Channel is required": "", + "Channel is required": "Un canal est requis", "Channel Name": "Nom du canal", "Channel name cannot be empty.": "Le nom du canal ne peut pas être vide.", "Channel name must be less than 128 characters": "Le nom du canal doit faire moins de 128 caractères", @@ -338,41 +338,41 @@ "Channels": "Canaux", "Character": "Caractère", "Chat": "Conversation", - "Chat actions": "", + "Chat actions": "Actions de conversation", "Chat archived.": "Conversation archivée.", "Chat Completions": "Chat Completions", "Chat Conversation": "Conversation par chat", "Chat deleted.": "Conversation supprimée.", "Chat exported successfully": "Conversation exportée avec succès", - "Chat failed": "", - "Chat finished": "", - "Chat forked": "", - "Chat history": "", + "Chat failed": "Échec de la conversation", + "Chat finished": "Conversation terminée", + "Chat forked": "Conversation dupliquée", + "Chat history": "Historique des conversations", "Chat ID": "ID de chat", - "Chat is too short to compact": "", - "Chat Menu": "", + "Chat is too short to compact": "La conversation est trop courte pour être compactée", + "Chat Menu": "Menu des conversations", "Chat moved successfully": "Conversation déplacée avec succès", "Chat Permissions": "Autorisations de la conversation", - "Chat unarchived.": "", + "Chat unarchived.": "Conversation désarchivée.", "Chat unshared successfully.": "Conversation non partagée avec succès.", - "Chat Uploads": "", - "Chat Variables": "", - "Chat Variables have conflicting model definitions": "", + "Chat Uploads": "Téléversements de conversations", + "Chat Variables": "Variables de conversation", + "Chat Variables have conflicting model definitions": "Les variables de conversation ont des définitions de modèle en conflit", "chats": "conversations", "Chats": "Conversations", - "Chats Open Sharing": "", + "Chats Open Sharing": "Partage ouvert des conversations", "Chats Public Sharing": "Partage public des conversations", "Check Again": "Vérifiez à nouveau.", - "Check OAuth Discovery": "", - "Check what is running in this chat.": "", + "Check OAuth Discovery": "Vérifier la découverte OAuth", + "Check what is running in this chat.": "Vérifier ce qui s'exécute dans cette conversation.", "Checking for updates...": "Recherche de mises à jour...", "Choose a model before saving...": "Choisissez un modèle avant de sauvegarder...", - "Choose channel": "", - "Choose folder": "", + "Choose channel": "Choisir un canal", + "Choose folder": "Choisir un dossier", "Citation": "Citation", "Citations": "Citations", - "Clear": "", - "Clear filters to reorder": "", + "Clear": "Effacer", + "Clear filters to reorder": "Effacer les filtres pour réorganiser", "Clear Memory": "Effacer la mémoire", "Clear search": "Effacer la recherche", "Clear status": "Effacer le statut", @@ -389,9 +389,9 @@ "Click on the user role button to change a user's role.": "Cliquez sur le bouton de rôle d'utilisateur pour modifier son rôle.", "Click to connect": "Cliquez pour vous connecter", "Click to copy ID": "Cliquez pour copier l'ID", - "Click to rebind": "", - "Client ID": "", - "Client Secret": "", + "Click to rebind": "Cliquez pour réassocier", + "Client ID": "ID client", + "Client Secret": "Secret client", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les réglages de votre navigateur pour accorder l'accès nécessaire.", "Clone": "Cloner", "Clone Chat": "Dupliquer la conversation", @@ -401,12 +401,12 @@ "Close chat controls": "Fermer les contrôles de la conversation", "Close citation modal": "Fermer la fenêtre de citation", "Close Configure Connection Modal": "Fermer la fenêtre de configuration de la connexion", - "Close embed": "", + "Close embed": "Fermer l'embed", "Close feedback": "Fermer la fenêtre d'évaluation", "Close modal": "Fermer la fenêtre", "Close Modal": "Fermer la fenêtre", "Close Sidebar": "Fermer la barre latérale", - "Close terminal": "", + "Close terminal": "Fermer le terminal", "cloud": "cloud", "CMU ARCTIC speaker embedding name": "Nom de l'embedding de locuteur CMU Arctic", "Code Block": "Bloc de code", @@ -417,63 +417,63 @@ "Collaboration channel where people join as members": "Canal collaboratif où les membres rejoignent librement", "Collapse": "Réduire", "Collection": "Collection", - "Collection Field": "", + "Collection Field": "Champ de collection", "Collections": "Collections", "Color": "Couleur", "ComfyUI": "ComfyUI", "ComfyUI Base URL is required.": "L'URL de base ComfyUI est requise.", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID de nœud séparés par des virgules (Ex : 1 ou 1,2)", - "Comma-separated group names": "", - "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "", + "Comma-separated group names": "Noms de groupes séparés par des virgules", + "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "Paramètres de requête de niveau supérieur séparés par des virgules que cet amont peut recevoir sans traduction. Utilisez * pour autoriser tous les paramètres de passage.", "command": "commande", "Command": "Commande", - "Commands": "", + "Commands": "Commandes", "Comment": "Commentaire", "Commit Message": "Description de la modification", "Community Reviews": "Avis de la communauté", - "Compact": "", - "Compact: shorten older messages so this chat can keep going.": "", - "Compacting context": "", - "Compacting context...": "", - "Compare": "", - "Comparing with knowledge base...": "", + "Compact": "Compacter", + "Compact: shorten older messages so this chat can keep going.": "Compacter : raccourcir les anciens messages pour que cette conversation puisse continuer.", + "Compacting context": "Compaction du contexte", + "Compacting context...": "Compaction du contexte en cours...", + "Compare": "Comparer", + "Comparing with knowledge base...": "Comparaison avec la base de connaissances...", "Completions": "Complétions", - "Compress uploaded images before sending or storage.": "", - "Computing checksums ({{count}} files)_one": "", - "Computing checksums ({{count}} files)_many": "", - "Computing checksums ({{count}} files)_other": "", + "Compress uploaded images before sending or storage.": "Compresser les images téléversées avant l'envoi ou le stockage.", + "Computing checksums ({{count}} files)_one": "Calcul des sommes de contrôle ({{count}} fichier)", + "Computing checksums ({{count}} files)_many": "Calcul des sommes de contrôle ({{count}} fichiers)", + "Computing checksums ({{count}} files)_other": "Calcul des sommes de contrôle ({{count}} fichiers)", "Config imported successfully": "Configuration importée avec succès", "Configure": "Configurer", "Confirm": "Confirmer", "Confirm Password": "Confirmer le mot de passe", "Confirm Prompt from Embed": "Confirmer le prompt de l'embed", - "Confirm recording": "", + "Confirm recording": "Confirmer l'enregistrement", "Confirm your action": "Confirmer votre action", "Confirm your new password": "Confirmer votre nouveau mot de passe", "Confirm Your Password": "Confirmez votre mot de passe", "Connect to an AI provider to start chatting": "Connectez-vous à un fournisseur d'IA pour commencer à discuter", - "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "", + "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "Se connecter à des instances Open Terminal. Les administrateurs et les utilisateurs autorisés peuvent utiliser les outils de navigation de fichiers et de terminal via ces serveurs.", "Connect to your own OpenAPI compatible external tool servers.": "Connectez-vous à vos serveurs d'outils externes.", - "Connected": "", + "Connected": "Connecté", "Connected ({{type}})": "Connecté ({{type}})", "Connection failed": "Échec de la connexion", "Connection lost. Reconnecting...": "Connexion perdue. Reconnexion...", "Connection successful": "Connexion réussie", "Connection Type": "Type de connexion", - "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "", + "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Les connexions gérées via le Panneau d'administration sont recommandées pour un usage quotidien. Les connexions directes offrent un accès pratique à vos propres points de terminaison, mais dépendent de votre session navigateur pour maintenir les requêtes actives, ce qui les rend mieux adaptées aux tests et à un usage temporaire.", "Connections saved successfully": "Connexions enregistrées avec succès", "Connections settings updated": "Réglages de connexion mis à jour", "Contact Admin for WebUI Access": "Contacter l'administrateur pour obtenir l'accès à WebUI", "Content": "Contenu", - "Content Field": "", + "Content Field": "Champ de contenu", "Content lengths (character counts only)": "Longueur du contenu (nombre de caractères uniquement)", - "Content matches": "", - "Context": "", - "Context compacted": "", - "Context compaction failed": "", - "Context compaction is disabled": "", - "Context usage": "", - "Continue": "", + "Content matches": "Correspondances de contenu", + "Context": "Contexte", + "Context compacted": "Contexte compacté", + "Context compaction failed": "Échec de la compaction du contexte", + "Context compaction is disabled": "La compaction du contexte est désactivée", + "Context usage": "Utilisation du contexte", + "Continue": "Continuer", "Continue Response": "Continuer la réponse", "Continue with {{provider}}": "Continuer avec {{provider}}", "Continue with Email": "Continuer avec l'email", @@ -489,7 +489,7 @@ "Copy": "Copier", "Copy API Key": "Copier la clé API", "Copy content": "Copier le contenu", - "Copy default": "", + "Copy default": "Copier par défaut", "Copy Last Code Block": "Copier le dernier bloc de code", "Copy Last Response": "Copier la dernière réponse", "Copy link": "Copier le lien", @@ -501,62 +501,62 @@ "Copy Token": "Copier le jeton", "Copy URL": "Copier l'URL", "Copying to clipboard was successful!": "La copie dans le presse-papiers a réussi !", - "Copyright (c)": "", + "Copyright (c)": "Copyright (c)", "CORS must be properly configured by the provider to allow requests from Open WebUI.": "Le réglage CORS doit être correctement configuré par le fournisseur pour autoriser les requêtes provenant de l'Open WebUI.", - "Could not check for updates": "", - "Could not load release notes.": "", + "Could not check for updates": "Impossible de vérifier les mises à jour", + "Could not load release notes.": "Impossible de charger les notes de mise à jour.", "Could not read file.": "Impossible de lire le fichier.", - "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "", - "Couldn't find your language?": "", + "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Pourriez-vous commencer par me demander quelles sont les situations où je procrastine le plus, puis me donner des suggestions pour les surmonter ?", + "Couldn't find your language?": "Votre langue n'est pas disponible ?", "CPU": "CPU", "Create": "Créer", "Create a knowledge base": "Créer une base de connaissances", "Create a model": "Créer un modèle", "Create a new note": "Créer une nouvelle note", - "Create a reusable terminal skill from this chat.": "", + "Create a reusable terminal skill from this chat.": "Créer une compétence de terminal réutilisable à partir de cette conversation.", "Create Account": "Créer un compte", "Create Admin Account": "Créer un compte administrateur", - "Create announcements shown to users in the app.": "", + "Create announcements shown to users in the app.": "Créer des annonces affichées aux utilisateurs dans l'application.", "Create Channel": "Créer un canal", "Create Folder": "Créer un dossier", "Create Knowledge": "Créer une connaissance", "Create Model": "Créer le modèle", "Create new key": "Créer une nouvelle clé", - "Create Prompt": "", + "Create Prompt": "Créer un prompt", "Create scheduled prompts that run automatically on a recurring basis.": "Créer des invites planifiées qui s'exécutent automatiquement de manière récurrente.", - "Create skill": "", - "Create skill: create a reusable terminal skill from this chat.": "", - "Create your first note from the Create menu.": "", - "Created": "", + "Create skill": "Créer une compétence", + "Create skill: create a reusable terminal skill from this chat.": "Créer une compétence : créer une compétence de terminal réutilisable à partir de cette conversation.", + "Create your first note from the Create menu.": "Créez votre première note depuis le menu Créer.", + "Created": "Créé", "Created at": "Créé le", "Created At": "Créé le", "Created by": "Créé par", "Created by you": "Créé par vous", "Created on {{date}}": "Créé le {{date}}", "CSV Import": "Import CSV", - "CSV: Name,Email": "", + "CSV: Name,Email": "CSV : Nom,Email", "Ctrl+Enter to Send": "Ctrl+Enter pour envoyer", - "Cumulative": "", - "Current": "", - "Current branch": "", + "Cumulative": "Cumulatif", + "Current": "Actuel", + "Current branch": "Branche actuelle", "Current Model": "Modèle actuel", - "Current streak": "", + "Current streak": "Série actuelle", "Custom": "Sur mesure", "Custom color": "Couleur personnalisée", "Custom description enabled": "Description personnalisée activée", "Custom Gender": "Genre personnalisé", "Custom Parameter Name": "Nom du réglage personnalisé", "Custom Parameter Value": "Valeur du réglage personnalisé", - "Custom permissions": "", - "Custom range": "", + "Custom permissions": "Permissions personnalisées", + "Custom range": "Plage personnalisée", "Daily": "Journalier", - "Daily at": "", + "Daily at": "Quotidien à", "Daily Messages": "Messages par jour", "Dark": "Sombre", - "Data": "", + "Data": "Données", "Database": "Base de données", "Datalab Marker API": "API Datalab Marker", - "Date is required": "", + "Date is required": "La date est requise", "Date Modified": "Modifié le", "Day": "Jour", "DD/MM/YYYY": "DD/MM/YYYY", @@ -568,7 +568,7 @@ "Default action buttons will be used.": "Les boutons d'action par défaut seront utilisés", "Default description enabled": "Description par défaut activée", "Default Filters": "Filtres par défaut", - "Default Interface Settings": "", + "Default Interface Settings": "Paramètres d'interface par défaut", "Default Model": "Modèle standard", "Default model updated": "Modèle par défaut mis à jour", "Default permissions": "Autorisations par défaut", @@ -576,22 +576,22 @@ "Default Prompt Suggestions": "Suggestions de prompts par défaut", "Default to 389 or 636 if TLS is enabled": "Par défaut à 389 ou 636 si TLS est activé", "Default to ALL": "Par défaut à TOUS", - "Default to memberOf": "", + "Default to memberOf": "Par défaut à memberOf", "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "La recherche segmentée par défaut permet d'extraire un contenu ciblé et pertinent, ce qui est recommandé dans la plupart des cas.", - "Default webhook": "", + "Default webhook": "Webhook par défaut", "Delete": "Supprimer", "Delete {{name}}": "Supprimer {{name}}", "Delete a model": "Supprimer un modèle", "Delete All": "Tout supprimer", - "Delete all contents inside this directory": "", + "Delete all contents inside this directory": "Supprimer tout le contenu de ce répertoire", "Delete all contents inside this folder": "Supprimer tout le contenu de ce dossier", - "Delete API Key?": "", + "Delete API Key?": "Supprimer la clé API ?", "Delete automation?": "Supprimer l'automation ?", "Delete calendar": "Supprimer le calendrier", "Delete Calendar": "Supprimer le calendrier", "Delete Chat": "Supprimer la Conversation", "Delete chat?": "Supprimer la conversation ?", - "Delete directory?": "", + "Delete directory?": "Supprimer le répertoire ?", "Delete Event": "Supprimer l'événement", "Delete File": "Supprimer le fichier", "Delete folder?": "Supprimer le dossier ?", @@ -612,9 +612,9 @@ "Deleted {{name}}": "Supprimé {{name}}", "Deleted {{ok}} of {{total}} items": "Supprimé {{ok}} sur {{total}} éléments", "Deleted User": "Utilisateur supprimé", - "Denied {{NAME}}": "", - "Deny": "", - "Deny Tool Call": "", + "Denied {{NAME}}": "Refusé {{NAME}}", + "Deny": "Refuser", + "Deny Tool Call": "Refuser l'appel d'outil", "Deployment names are required for Azure OpenAI": "Les noms de déploiement sont requis pour Azure OpenAI", "Desc": "Décroissant", "Describe the edit...": "Décrivez la modification...", @@ -622,23 +622,23 @@ "Describe what changed...": "Décrivez ce qui a changé...", "Describe your knowledge base and objectives": "Décrivez votre base de connaissances et vos objectifs", "Description": "Description", - "Description ({{language}})": "", + "Description ({{language}})": "Description ({{language}})", "Deselect": "Désélectionner", - "Destination": "", - "Detected Variables": "", + "Destination": "Destination", + "Detected Variables": "Variables détectées", "Dictate": "Dicter", "Didn't fully follow instructions": "N'a pas entièrement respecté les instructions", - "Diff settings": "", + "Diff settings": "Paramètres de diff", "Direct": "Direct", "Direct Message": "Message direct", "Direct Tool Servers": "Serveur d'outils directs", - "Directory created.": "", - "Directory deleted.": "", - "Directory moved.": "", - "Directory name": "", - "Directory renamed.": "", + "Directory created.": "Répertoire créé.", + "Directory deleted.": "Répertoire supprimé.", + "Directory moved.": "Répertoire déplacé.", + "Directory name": "Nom du répertoire", + "Directory renamed.": "Répertoire renommé.", "Directory selection was cancelled": "La sélection du répertoire a été annulée", - "Disable all": "", + "Disable all": "Désactiver tout", "Disable All": "Désactiver tout", "Disable Code Interpreter": "Désactiver l'interpréteur de code", "Disabled": "Désactivé", @@ -652,8 +652,8 @@ "Discover, download, and explore custom tools": "Découvrez, téléchargez et explorez des outils personnalisés", "Discover, download, and explore model presets": "Découvrir, télécharger et explorer des préréglages de modèles", "Discussion channel where access is based on groups and permissions": "Canal de discussion où l'accès est basé sur les groupes et les permissions", - "Dismiss": "", - "Dismiss notification": "", + "Dismiss": "Ignorer", + "Dismiss notification": "Ignorer la notification", "Display": "Afficher", "Do not install functions from sources you do not fully trust.": "N'installez pas de fonctions provenant de sources auxquelles vous ne faites pas entièrement confiance.", "Do not install tools from sources you do not fully trust.": "N'installez pas d'outils provenant de sources auxquelles vous ne faites pas entièrement confiance.", @@ -662,33 +662,33 @@ "Docling Parameters": "Paramètres Docling", "Docling Server URL required.": "URL du serveur Docling requise.", "Document": "Document", - "Document ID Field": "", + "Document ID Field": "Champ ID du document", "Document Intelligence": "Document Intelligence", "Document Intelligence endpoint required.": "Endpoint Document Intelligence requis.", "Documentation": "Documentation", "does not make any external connections, and your data stays securely on your locally hosted server.": "n'établit aucune connexion externe et garde vos données en sécurité sur votre serveur local.", - "Don't fetch random pipelines from sources you don't trust.": "", + "Don't fetch random pipelines from sources you don't trust.": "Ne récupérez pas de pipelines aléatoires depuis des sources non fiables.", "Don't have an account?": "Vous n'avez pas de compte ?", "Don't like the style": "N'apprécie pas le style", "Done": "Terminé", "Download": "Télécharger", - "Download \"{{searchValue}}\"": "", - "Download \"{{searchValue}}\" from {{provider}}": "", + "Download \"{{searchValue}}\"": "Télécharger \"{{searchValue}}\"", + "Download \"{{searchValue}}\" from {{provider}}": "Télécharger \"{{searchValue}}\" depuis {{provider}}", "Download as JSON": "Télécharger au format JSON", "Download as SVG": "Télécharger au format SVG", "Download canceled": "Téléchargement annulé", - "Download CSV Template": "", - "Download failed": "", - "Download Model": "", - "Downloading \"{{name}}\"": "", - "Downloading \"{{searchValue}}\"": "", + "Download CSV Template": "Télécharger le modèle CSV", + "Download failed": "Échec du téléchargement", + "Download Model": "Télécharger le modèle", + "Downloading \"{{name}}\"": "Téléchargement de \"{{name}}\"", + "Downloading \"{{searchValue}}\"": "Téléchargement de \"{{searchValue}}\"", "Downloading stats...": "Téléchargement des statistiques...", - "Drag and Drop Container": "", - "Drag to reorder": "", + "Drag and Drop Container": "Conteneur glisser-déposer", + "Drag to reorder": "Glisser pour réorganiser", "Draw": "Match nul", "Drop any files here to upload": "Déposez des fichiers ici pour les téléverser", "Drop files here": "Déposez des fichiers ici", - "Drop to upload": "", + "Drop to upload": "Déposer pour téléverser", "DuckDuckGo": "DuckDuckGo", "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "par ex. '30s', '10 min'. Les unités de temps valides sont 's', 'm', 'h'.", "e.g. 'low', 'medium', 'high'": "par ex. « low », « medium », « high »", @@ -719,40 +719,40 @@ "Edit Connection": "Modifier la connexion", "Edit Default Permissions": "Modifier les autorisations par défaut", "Edit Folder": "Modifier le dossier", - "Edit Knowledge Connection": "", + "Edit Knowledge Connection": "Modifier la connexion de connaissances", "Edit Last Message": "Modifier le dernier message", "Edit Memory": "Modifier la mémoire", "Edit Prompt": "Modifier le prompt", "Edit Terminal Connection": "Modifier la connexion à un terminal", "Edit User": "Modifier l'utilisateur", "Edit User Group": "Modifier le groupe d'utilisateurs", - "Edit User Variable": "", - "Edit webhook": "", + "Edit User Variable": "Modifier la variable utilisateur", + "Edit webhook": "Modifier le webhook", "edited": "édité", - "Editing language": "", + "Editing language": "Modification de la langue", "Eject": "Ejecte", "Eject model": "Éjecter le modèle", "ElevenLabs": "ElevenLabs", "Email": "E-mail", - "Embedded content": "", - "Emoji": "", - "Emoji graphics provided by": "", - "Emojis": "", - "Empty": "", + "Embedded content": "Contenu intégré", + "Emoji": "Emoji", + "Emoji graphics provided by": "Graphiques emoji fournis par", + "Emojis": "Emojis", + "Empty": "Vide", "Empty message": "Message vide", "Enable All": "Activer tout", - "Enable all ({{COUNT}})": "", + "Enable all ({{COUNT}})": "Activer tout ({{COUNT}})", "Enable Code Interpreter": "Autoriser l'interprétation de code", "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activer le verrouillage de la mémoire (mlock) pour empêcher les données du modèle d'être échangées de la RAM. Cette option verrouille l'ensemble de pages de travail du modèle en RAM, garantissant qu'elles ne seront pas échangées vers le disque. Cela peut aider à maintenir les performances en évitant les défauts de page et en assurant un accès rapide aux données.", "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Activer le mappage de la mémoire (mmap) pour charger les données du modèle. Cette option permet au système d'utiliser le stockage disque comme une extension de la RAM en traitant les fichiers disque comme s'ils étaient en RAM. Cela peut améliorer les performances du modèle en permettant un accès plus rapide aux données. Cependant, cela peut ne pas fonctionner correctement avec tous les systèmes et peut consommer une quantité significative d'espace disque.", "Enable Mirostat sampling for controlling perplexity.": "Activer l'échantillonnage Mirostat pour contrôler Perplexité.", "Enabled": "Activé", - "End call": "", + "End call": "Terminer l'appel", "End Tag": "Tag de fin", - "Endpoint": "", + "Endpoint": "Point de terminaison", "Enforce Temporary Chat": "Imposer les discussions temporaires", "Enhance": "Améliore", - "Enhance this note and update it.": "", + "Enhance this note and update it.": "Améliorez cette note et mettez-la à jour.", "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Vérifiez que votre fichier CSV comprenne les 4 colonnes dans cet ordre : Name, Email, Password, Role.", "Enter {{role}} message here": "Entrez le message {{role}} ici", "Enter a title for the pending user info overlay. Leave empty for default.": "Entrez un titre pour l'interface utilisateur en attente. Laissez vide pour le défaut.", @@ -823,7 +823,7 @@ "Enter New Password": "Entrez votre nouveau mots de passe", "Enter Number of Steps (e.g. 50)": "Entrez le nombre d'étapes (par ex. 50)", "Enter Ollama Cloud API Key": "Entrez la clé API Ollama Cloud", - "Enter OpenSERP Base URL": "", + "Enter OpenSERP Base URL": "Entrez l'URL de base d'OpenSERP", "Enter PaddleOCR-vl API Base URL": "Entrez l'URL de base de l'API PaddleOCR-vl", "Enter PaddleOCR-vl API Token": "Entrez le token de l'API PaddleOCR-vl", "Enter Perplexity API Key": "Entrez la clé API Perplexity", @@ -852,7 +852,7 @@ "Enter skill instructions in markdown...": "Entrez les instructions du skill au format markdown...", "Enter Sougou Search API sID": "Entrez le sID pour l'API Search de Sougou", "Enter Sougou Search API SK": "Entrez la SK pour l'API Search de Sougou", - "Enter Staan API Key": "", + "Enter Staan API Key": "Entrez la clé API Staan", "Enter stop sequence": "Entrez la séquence d'arrêt", "Enter system prompt": "Entrez le prompt système", "Enter system prompt here": "Entrez le prompt système ici", @@ -888,8 +888,8 @@ "Enter Your Password": "Entrez votre mot de passe", "Enter Your Role": "Entrez votre rôle", "Enter Your Username": "Entrez votre nom d'utilisateur", - "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "", - "Enterprise licensing": "", + "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "Les licences entreprise incluent également un support dédié, des options de personnalisation et bien plus, pour une fraction du coût de la construction et de la maintenance de cette pile en interne.", + "Enterprise licensing": "Licences entreprise", "Entra ID": "Entra ID", "Environment Variables": "Variables d'environnement", "Ephemeral": "Éphémère", @@ -899,27 +899,27 @@ "Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}", "Error accessing media devices.": "Erreur lors de l'accès aux dispositifs medias", "Error deleting model: {{error}}": "Erreur lors de la suppression du modèle : {{error}}", - "Error previewing file: {{error}}": "", + "Error previewing file: {{error}}": "Erreur de prévisualisation du fichier : {{error}}", "Error starting recording.": "Erreur lors du démarrage de l'enregistrement", "Error unloading model: {{error}}": "Erreur lors du déchargement du modèle : {{error}}", "Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}", "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Erreur : Un modèle avec l'ID '{{modelId}}' existe déjà. Veuillez sélectionner un ID différent pour continuer.", "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Erreur : l'ID du modèle ne peut pas être vide. Veuillez saisir un ID valide pour continuer.", "Evaluations": "Évaluations", - "Event": "", + "Event": "Événement", "Event created": "Événement créé", "Event deleted": "Événement supprimé", - "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "", + "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "Les noms des événements peuvent changer à mesure qu'Open WebUI évolue. Utilisez des motifs larges comme user.* pour les intégrations qui doivent continuer à travers les nouveaux événements liés.", "Event title": "Titre de l'événement", "Event updated": "Événement mis à jour", - "Every {{count}} hours_one": "", - "Every {{count}} hours_many": "", - "Every {{count}} hours_other": "", - "Every {{count}} minutes_one": "", - "Every {{count}} minutes_many": "", - "Every {{count}} minutes_other": "", - "Every minute": "", - "Example": "", + "Every {{count}} hours_one": "Toutes les {{count}} heures", + "Every {{count}} hours_many": "Toutes les {{count}} heures", + "Every {{count}} hours_other": "Toutes les {{count}} heures", + "Every {{count}} minutes_one": "Toutes les {{count}} minutes", + "Every {{count}} minutes_many": "Toutes les {{count}} minutes", + "Every {{count}} minutes_other": "Toutes les {{count}} minutes", + "Every minute": "Chaque minute", + "Example": "Exemple", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemple: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Exemple: TOUS", "Example: mail": "Exemple: mail", @@ -928,34 +928,34 @@ "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Le nombre de sièges de votre licence est dépassé. Veuillez contacter le support pour augmenter le nombre de sièges.", "Exclude": "Exclure", "Execute code for analysis": "Exécuter le code pour l'analyse", - "Executing {{NAME}}...": "", + "Executing {{NAME}}...": "Exécution de {{NAME}}...", "Expand": "Développer", - "Expand input": "", - "Experience": "", + "Expand input": "Étendre la zone de saisie", + "Experience": "Expérience", "Experimental": "Expérimental", "Explain": "Explique", - "Explain options trading": "", - "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "", + "Explain options trading": "Expliquer le trading d'options", + "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Expliquer le trading d'options en termes simples si je connais l'achat et la vente d'actions.", "Explored": "Exploré", "Exploring": "Explorer", "Export": "Exporter", "Export as CSV": "Exporter au format CSV", "Export as JSON": "Exporter au format JSON", "Export chat (.json)": "Exporter la conversation (.json)", - "Export JSON": "", + "Export JSON": "Exporter en JSON", "Export Models": "Exporter les modèles", "Export Prompts": "Exporter les prompts", - "Export Skills": "", + "Export Skills": "Exporter les compétences", "Export to CSV": "Exporter en CSV", "Export Tools": "Exporter les outils", "External": "Externe", - "External connection not found.": "", + "External connection not found.": "Connexion externe introuvable.", "External Document Loader URL required.": "URL du chargeur de document externe requis", - "External Knowledge Source": "", - "External vectors must be generated with the same embedding model configured in Open WebUI.": "", - "Extract action items from this note.": "", - "Extracted text lines": "", - "Extracting text and comparing…": "", + "External Knowledge Source": "Source de connaissances externe", + "External vectors must be generated with the same embedding model configured in Open WebUI.": "Les vecteurs externes doivent être générés avec le même modèle d'embedding configuré dans Open WebUI.", + "Extract action items from this note.": "Extraire les éléments d'action de cette note.", + "Extracted text lines": "Lignes de texte extraites", + "Extracting text and comparing…": "Extraction du texte et comparaison…", "Failed to add file.": "Échec de l'ajout du fichier.", "Failed to add members": "Échec de l'ajout des membres", "Failed to archive chat.": "Échec de l'archivage de la conversation.", @@ -982,14 +982,14 @@ "Failed to load DOCX file. Please try downloading it instead.": "Échec du chargement du fichier DOCX. Essayez plutôt de le télécharger.", "Failed to load Excel/CSV file. Please try downloading it instead.": "Échec du chargement du fichier Excel/CSV. Essayez plutôt de le télécharger.", "Failed to load file content.": "Échec du chargement du contenu du fichier", - "Failed to load folder": "", + "Failed to load folder": "Échec du chargement du dossier", "Failed to load Interface settings": "Échec du chargement des réglages de l'interface", "Failed to load policy: {{error}}": "Échec du chargement de la politique : {{error}}", "Failed to load PPTX file. Please try downloading it instead.": "Échec du chargement du fichier PPTX. Essayez plutôt de le télécharger.", "Failed to load usage": "Échec du chargement des données d'utilisation", - "Failed to load valves": "", + "Failed to load valves": "Échec du chargement des vannes", "Failed to move chat": "Échec du déplacement du chat", - "Failed to open database": "", + "Failed to open database": "Échec de l'ouverture de la base de données", "Failed to process URL: {{url}}": "Échec du traitement de l'URL : {{url}}", "Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers", "Failed to refresh terminals: {{error}}": "Échec de l'actualisation des terminaux : {{error}}", @@ -999,17 +999,17 @@ "Failed to save chat variables": "Échec de l'enregistrement des variables de la conversation", "Failed to save connections": "Échec de la sauvegarde des connexions", "Failed to save conversation": "Échec de la sauvegarde de la conversation", - "Failed to save model": "", + "Failed to save model": "Échec de l'enregistrement du modèle", "Failed to save models configuration": "Échec de la sauvegarde de la configuration des modèles", "Failed to save policy: {{error}}": "Échec de la sauvegarde de la politique : {{error}}", "Failed to save terminal servers": "Échec de la sauvegarde des serveurs de terminal", "Failed to save webhook": "Échec de l'enregistrement du webhook", - "Failed to search files": "", + "Failed to search files": "Échec de la recherche de fichiers", "Failed to unshare chat.": "Échec de l'annulation du partage de la conversation.", "Failed to update settings": "Échec de la mise à jour des réglages", "Failed to update status": "Échec de la mise à jour du statut", "Failed to update webhook": "Échec de la mise à jour du webhook", - "Failed to upload background image.": "", + "Failed to upload background image.": "Échec du téléversement de l'image d'arrière-plan.", "Failed to upload file.": "Échec du téléversement du fichier.", "Features Permissions": "Autorisations des fonctionnalités", "February": "Février", @@ -1019,28 +1019,28 @@ "Feedback Details": "Détails du retour d'information", "Feel free to add specific details": "N'hésitez pas à ajouter des détails spécifiques", "Female": "Femme", - "Fetch page contents without proxy environment variables.": "", + "Fetch page contents without proxy environment variables.": "Récupérer le contenu des pages sans variables d'environnement de proxy.", "File": "Fichier", "File added successfully.": "Fichier ajouté avec succès.", "File browser": "Explorateur de fichiers", "File content": "Contenu du fichier", "File content updated successfully.": "Contenu du fichier mis à jour avec succès.", "File deleted successfully.": "Fichier supprimé avec succès.", - "File differences": "", + "File differences": "Différences de fichiers", "File Mode": "Mode fichier", - "File moved.": "", + "File moved.": "Fichier déplacé.", "File name": "Nom du fichier", "File not found.": "Fichier introuvable.", "File removed successfully.": "Fichier supprimé avec succès.", - "File renamed.": "", + "File renamed.": "Fichier renommé.", "File size should not exceed {{maxSize}} MB.": "La taille du fichier ne doit pas dépasser {{maxSize}} Mo.", "File uploaded successfully": "Fichier téléversé avec succès", "Filename": "Nom du fichier", - "Filename matches": "", + "Filename matches": "Correspondances de noms de fichiers", "Files": "Fichiers", - "Filesystem": "", - "Fill the required fields first.": "", - "Fill the source fields and test query first.": "", + "Filesystem": "Système de fichiers", + "Fill the required fields first.": "Remplissez d'abord les champs obligatoires.", + "Fill the source fields and test query first.": "Remplissez d'abord les champs source et la requête de test.", "Filter": "Filtre", "Filter is now globally disabled": "Le filtre est maintenant désactivé globalement", "Filter is now globally enabled": "Le filtre est désormais activé globalement", @@ -1058,29 +1058,29 @@ "Folder options": "Options du dossier", "Folder updated successfully": "Dossier mis à jour avec succès", "Folders": "Dossiers", - "Folders Sharing": "", + "Folders Sharing": "Partage des dossiers", "Follow up": "Questions de suivi", "Follow up: {{question}}": "Question de suivi : {{question}}", "Followed instructions perfectly": "A parfaitement suivi les instructions", "for placeholders": "pour les variables dynamiques", - "for what to do with my kids' art": "", - "Fork": "", - "Fork chat": "", - "Fork the current chat branch into a new chat.": "", - "Fork: fork the current chat branch into a new chat.": "", - "Forking chat...": "", + "for what to do with my kids' art": "que faire avec les dessins de mes enfants", + "Fork": "Dupliquer", + "Fork chat": "Dupliquer la conversation", + "Fork the current chat branch into a new chat.": "Dupliquer la branche actuelle de la conversation dans une nouvelle conversation.", + "Fork: fork the current chat branch into a new chat.": "Dupliquer : dupliquer la branche actuelle de la conversation dans une nouvelle conversation.", + "Forking chat...": "Duplication de la conversation...", "Form": "Formulaire", - "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "", - "Formatting": "", + "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Formater le Markdown au fur et à mesure que vous tapez et collez. Désactivez pour conserver les caractères Markdown et coller du texte brut. Le formatage existant est préservé.", + "Formatting": "Formatage", "Formatting may be inconsistent from source.": "Le formatage peut être incohérent par rapport à la source.", - "Forward": "", - "Forward cookies": "", - "Forward cookies from your Open WebUI request to this server.": "", + "Forward": "Transférer", + "Forward cookies": "Transférer les cookies", + "Forward cookies from your Open WebUI request to this server.": "Transférer les cookies de votre requête Open WebUI vers ce serveur.", "Forwards system user OAuth access token to authenticate": "Transfère le jeton d'accès OAuth de l'utilisateur système pour l'authentification", "Forwards system user session credentials to authenticate": "Transmet les identifiants de session de l'utilisateur pour l'authentification", - "Fr_day_of_week": "", - "from {{provider}}": "", - "Full access": "", + "Fr_day_of_week": "Vendredi", + "from {{provider}}": "depuis {{provider}}", + "Full access": "Accès complet", "Function created successfully": "Fonction créée avec succès", "Function deleted successfully": "Fonction supprimée avec succès", "Function Description": "Description de la fonction", @@ -1088,21 +1088,21 @@ "Function imported successfully": "Fonction importée avec succès", "Function is now globally disabled": "La fonction est désormais globalement désactivée", "Function is now globally enabled": "La fonction est désormais globalement activée", - "Function Menu": "", + "Function Menu": "Menu des fonctions", "Function Name": "Nom de la fonction", "Function Name Filter List": "Liste de filtrage des fonctions par nom", - "Function starter": "", + "Function starter": "Démarreur de fonction", "Function updated successfully": "Fonction mise à jour avec succès", "Functions": "Fonctions", "Functions allow arbitrary code execution.": "Les fonctions permettent l'exécution de code arbitraire.", - "Functions can execute arbitrary code.": "", + "Functions can execute arbitrary code.": "Les fonctions peuvent exécuter du code arbitraire.", "Functions imported successfully": "Fonctions importées avec succès", "Gemini": "Gemini", "Gemini API Key is required.": "La clé d'API de Gemini est requise", "General": "Général", "Generate": "Génère", "Generate an image": "Génère une image", - "Generate message pair": "", + "Generate message pair": "Générer une paire de messages", "Generate Message Pair": "Générer une paire de messages", "Generated Image": "Image générée", "Generated images will appear here": "Les images générées apparaîtront ici", @@ -1111,8 +1111,8 @@ "Get information on {{name}} in the UI": "Obtenir des informations sur {{name}} dans l'interface utilisateur", "Get started": "Démarrer", "Get started with {{WEBUI_NAME}}": "Démarrez avec {{WEBUI_NAME}}", - "Give me ideas": "", - "give me tips": "", + "Give me ideas": "Donnez-moi des idées", + "give me tips": "donnez-moi des conseils", "Global": "Global", "Good Response": "Bonne réponse", "Google": "Google", @@ -1120,8 +1120,8 @@ "Gravatar": "Gravatar", "Grid": "Grille", "Grokipedia": "Grokipedia", - "group": "", - "Group": "", + "group": "groupe", + "Group": "Groupe", "Group Channel": "Canal de groupe", "Group created successfully": "Groupe créé avec succès", "Group deleted successfully": "Groupe supprimé avec succès", @@ -1138,81 +1138,81 @@ "Height": "Hauteur", "Hello, {{name}}": "Bonjour, {{name}}.", "Help": "Aide", - "Help me study": "", - "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "", + "Help me study": "Aidez-moi à étudier", + "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Aidez-moi à étudier le vocabulaire : écrivez une phrase pour que je puisse remplir le blanc, et j'essaierai de choisir la bonne option.", "Help the community discover great models": "Aidez la communauté à découvrir les meilleurs modèles", - "Help us translate Open WebUI!": "", + "Help us translate Open WebUI!": "Aidez-nous à traduire Open WebUI !", "Hex Color": "Couleur Hex", "Hex Color - Leave empty for default color": "Couleur Hex - Laissez vide pour la couleur par défaut", "Hidden": "Masqué", "Hide": "Cacher", "Hide All": "Masquer tout", "Hide from Sidebar": "Cacher de la barre latérale", - "Hide Hidden Files": "", + "Hide Hidden Files": "Masquer les fichiers cachés", "Hide Model": "Cache le Model", - "Hide whitespace": "", + "Hide whitespace": "Masquer les espaces blancs", "High": "Elevé", "History": "Historique", "Home": "Home", - "Horizontal Layout": "", + "Horizontal Layout": "Disposition horizontale", "Hourly": "Par heure", "Hourly Messages": "Messages par heure", "How can I help you today?": "Comment puis-je vous aider aujourd'hui ?", "How would you rate this response?": "Comment évalueriez-vous cette réponse ?", "HTML": "HTML", - "HTML Preview": "", + "HTML Preview": "Aperçu HTML", "http://localhost:8000": "http://localhost:8000", "https://mineru.net/api/v4": "https://mineru.net/api/v4", "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Je reconnais avoir lu et compris les implications de mes actions. Je suis conscient des risques associés à l'exécution d'un code arbitraire et j'ai vérifié la fiabilité de la source.", "ID": "ID", "ID cannot contain \":\" or \"|\" characters": "L'ID ne peut pas contenir les caractères « : » ou « | »", "ID copied to clipboard": "ID copié dans le presse-papiers", - "Identity audit": "", - "Idle only": "", + "Identity audit": "Audit d'identité", + "Idle only": "Uniquement en inactivité", "Idle Timeout": "Délai d'inactivité", - "if I'm familiar with buying and selling stocks": "", + "if I'm familiar with buying and selling stocks": "si je connais l'achat et la vente d'actions", "Image": "Image", "Image Generation": "Génération d'image", "Image Max Compression Size": "Taille maximale de compression d'image", "Image Max Compression Size height": "Taille maximale de compression d'image (hauteur)", "Image Max Compression Size width": "Taille maximale de compression d'image (largeur)", - "Image unavailable": "", - "image/*, video/*": "", + "Image unavailable": "Image indisponible", + "image/*, video/*": "image/*, vidéo/*", "Images": "Images", "Import": "Importer", - "Import CSV": "", + "Import CSV": "Importer un CSV", "Import From Link": "Importer depuis le lien", - "Import JSON": "", + "Import JSON": "Importer un JSON", "Import Models": "Importer les modèles", "Import Prompts": "Importer les prompts", - "Import Skills": "", + "Import Skills": "Importer des compétences", "Import successful": "Import réussi", "Import Tools": "Importer les outils", - "Import txt/md": "", - "Imported automations successfully": "", - "Imported notes successfully": "", - "Importing...": "", + "Import txt/md": "Importer du texte/markdown", + "Imported automations successfully": "Automatisations importées avec succès", + "Imported notes successfully": "Notes importées avec succès", + "Importing...": "Importation en cours...", "Inactive": "Inactif", "Include": "Inclure", "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "Influe sur la rapidité avec laquelle l'algorithme répond aux retours d'information du texte généré. Un taux d'apprentissage plus bas entraînera des ajustements plus lents, tandis qu'un taux d'apprentissage plus élevé rendra l'algorithme plus réactif.", "Info": "Info", "Initials": "Initiales", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injecter l'ensemble du contenu comme contexte pour un traitement complet, recommandé pour les requêtes complexes.", - "Inline": "", + "Inline": "En ligne", "Input": "Entrée", "Input Key (e.g. text, unet_name, steps)": "Clé de la variable d'entrée (par ex. text, unet_name, steps)", - "Input needed": "", + "Input needed": "Entrée nécessaire", "Input Variables": "Variables d'entrée", - "Insert into note": "", + "Insert into note": "Insérer dans la note", "Instructions": "Instructions", "Integrations": "Intégrations", "Interface Settings Access": "Accès aux paramètres de l'interface", - "Invalid background image.": "", + "Invalid background image.": "Image d'arrière-plan invalide.", "Invalid file format.": "Format de fichier non valide.", - "Invalid format.": "", - "Invalid JSON": "", + "Invalid format.": "Format invalide", + "Invalid JSON": "JSON invalide", "Invalid JSON file": "Fichier JSON non valide", - "Invalid JSON format": "", + "Invalid JSON format": "Format JSON invalide", "Invalid JSON format for ComfyUI Edit Workflow.": "Format JSON non valide pour le workflow ComfyUI de modification d'image.", "Invalid JSON format for ComfyUI Workflow.": "Format JSON non valide pour le workflow ComfyUI.", "Invalid JSON format for Parameters": "Format JSON non valide pour les paramètres", @@ -1224,23 +1224,23 @@ "January": "Janvier", "join our Discord for help.": "Rejoignez notre Discord pour obtenir de l'aide.", "JSON": "JSON", - "JSON Base64": "", - "JSON parse error: {{error}}": "", + "JSON Base64": "JSON Base64", + "JSON parse error: {{error}}": "Erreur d'analyse JSON : {{error}}", "JSON Preview": "Aperçu JSON", "JSON Spec": "Spécification JSON", "July": "Juillet", "June": "Juin", - "Keep current webhook URL": "", + "Keep current webhook URL": "Conserver l'URL actuelle du webhook", "Keep in Sidebar": "Epingler dans la barre latérale", "Key": "Clé", "Key is required": "La clé est requise", - "key_name": "", - "Keyboard": "", + "key_name": "nom_clé", + "Keyboard": "Clavier", "Knowledge": "Connaissances", "Knowledge Access": "Accès aux connaissances", "Knowledge Base": "Base de connaissances", - "Knowledge base has been reset": "", - "Knowledge base not found.": "", + "Knowledge base has been reset": "La base de connaissances a été réinitialisée", + "Knowledge base not found.": "Base de connaissances introuvable.", "Knowledge created successfully.": "Connaissance créée avec succès.", "Knowledge deleted successfully.": "Connaissance supprimée avec succès.", "Knowledge Description": "Description des connaissances", @@ -1248,8 +1248,8 @@ "Knowledge Name": "Nom de la connaissance", "Knowledge Public Sharing": "Partage public des Connaissances", "Knowledge Sharing": "Partage des connaissances", - "Knowledge source created.": "", - "Knowledge source updated.": "", + "Knowledge source created.": "Source de connaissances créée.", + "Knowledge source updated.": "Source de connaissances mise à jour.", "Knowledge updated successfully": "Connaissance mise à jour avec succès", "Kokoro.js (Browser)": "Kokoro.js (Navigateur)", "Last 24 hours": "Dernières 24 heures", @@ -1259,7 +1259,7 @@ "Last Active": "Dernière activité", "Last Modified": "Dernière modification", "Last reply": "Dernière réponse", - "Last run": "", + "Last run": "Dernière exécution", "Leaderboard": "Classement", "Learn More": "En savoir plus", "Learn more about Open Terminal": "En savoir plus sur Open Terminal", @@ -1277,57 +1277,57 @@ "Leave empty to use the default prompt, or enter a custom prompt": "Laissez vide pour utiliser le prompt par défaut, ou entrez un prompt personnalisé", "Legacy": "Déprécié", "lexical": "lexical", - "License Error": "", - "license purchased by": "", - "Lifecycle JSON": "", - "Lifetime tokens": "", + "License Error": "Erreur de licence", + "license purchased by": "licence achetée par", + "Lifecycle JSON": "JSON de cycle de vie", + "Lifetime tokens": "Tokens de durée de vie", "Lift List": "Réduire l'indentation", "Light": "Clair", "List": "Liste", "Listening...": "Écoute en cours...", - "LiteLLM": "", + "LiteLLM": "LiteLLM", "Live": "Actif", "llama.cpp": "llama.cpp", "LLMs can make mistakes. Verify important information.": "Les LLM peuvent faire des erreurs. Vérifiez les informations importantes.", - "LM Studio": "", - "Load Model": "", - "Loaded": "", - "Loading": "", + "LM Studio": "LM Studio", + "Load Model": "Charger le modèle", + "Loaded": "Chargé", + "Loading": "Chargement...", "Loading Kokoro.js...": "Chargement de Kokoro.js...", - "Loading policy...": "", - "Loading release notes...": "", + "Loading policy...": "Chargement de la politique...", + "Loading release notes...": "Chargement des notes de mise à jour...", "Loading...": "Chargement de...", "local": "local", "Local": "Local", "Location": "Localisation", "Location access not allowed": "Accès à la localisation non autorisé", - "Longest active chat": "", - "Longest streak": "", + "Longest active chat": "Conversation active la plus longue", + "Longest streak": "Série la plus longue", "Lost": "Perdu", "Low": "Faible", "LTR": "LTR", "Made by Open WebUI Community": "Réalisé par la communauté OpenWebUI", - "Make Default": "", + "Make Default": "Définir par défaut", "Make password visible in the user interface": "Rendre visible les mots de passe dans l'interface", - "Make Private": "", - "Make Public": "", + "Make Private": "Rendre privé", + "Make Public": "Rendre public", "Male": "Homme", "Manage": "Gérer", "Manage Connections": "Gérer les connexions", "Manage Models": "Gérer les modèles", "Manage Ollama": "Gérer Ollama", - "Mapped Source": "", + "Mapped Source": "Source mappée", "March": "Mars", - "Mark all as read": "", - "Mark as unread": "", + "Mark all as read": "Tout marquer comme lu", + "Mark as unread": "Marquer comme non lu", "Markdown": "Markdown", - "Market": "", - "Matching tabs: {{count}}_one": "", - "Matching tabs: {{count}}_many": "", - "Matching tabs: {{count}}_other": "", - "Max Snippets": "", + "Market": "Marché", + "Matching tabs: {{count}}_one": "Onglets correspondants : {{count}}", + "Matching tabs: {{count}}_many": "Onglets correspondants : {{count}}", + "Matching tabs: {{count}}_other": "Onglets correspondants : {{count}}", + "Max Snippets": "Nombre maximal d'extraits", "Max tokens to retrieve (1024-32768, default 8192)": "Max tokens à récupérer (1024-32768, par défaut 8192)", - "Maximum extra snippets returned per result. Set to 0 to disable them.": "", + "Maximum extra snippets returned per result. Set to 0 to disable them.": "Nombre maximal d'extraits supplémentaires retournés par résultat. Définissez à 0 pour les désactiver.", "Maximum number of files per folder is {{max}}.": "Le nombre maximum de fichiers par dossier est de {{max}}.", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé en même temps. Veuillez réessayer ultérieurement.", "May": "Mai", @@ -1354,7 +1354,7 @@ "messages": "messages", "Messages": "Messages", "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir la conversation partagée.", - "Metadata Field": "", + "Metadata Field": "Champ de métadonnées", "Microsoft OneDrive": "Microsoft OneDrive", "Microsoft OneDrive (personal)": "Microsoft OneDrive (personnel)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (travail/école)", @@ -1364,7 +1364,7 @@ "Mistral OCR": "Mistral OCR", "Mistral OCR API Key required.": "Clé d'API pour Mistral OCR requise", "MistralAI": "MistralAI", - "Mo_day_of_week": "", + "Mo_day_of_week": "Lundi", "Model": "Modèle", "Model '{{modelName}}' has been successfully downloaded.": "Le modèle '{{modelName}}' a été téléchargé avec succès.", "Model '{{modelTag}}' is already in queue for downloading.": "Le modèle '{{modelTag}}' est déjà dans la file d'attente pour le téléchargement.", @@ -1373,52 +1373,52 @@ "Model {{name}} is now {{status}}": "Le modèle {{name}} est désormais {{status}}.", "Model {{name}} is now hidden": "Le modèle {{name}} est maintenant masqué", "Model {{name}} is now visible": "Le modèle {{name}} est maintenant visible", - "Model added to pinned models": "", - "Model added to selected models": "", + "Model added to pinned models": "Modèle ajouté aux modèles épinglés", + "Model added to selected models": "Modèle ajouté aux modèles sélectionnés", "Model created successfully!": "Modèle créé avec succès !", - "Model deleted successfully": "", - "Model download started": "", + "Model deleted successfully": "Modèle supprimé avec succès", + "Model download started": "Téléchargement du modèle démarré", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "Chemin du système de fichiers de modèle détecté. Le nom court du modèle est requis pour la mise à jour, l'opération ne peut pas être poursuivie.", "Model Filtering": "Filtrage de modèle", "Model ID": "ID du modèle", - "Model ID cannot contain whitespace.": "", - "Model ID is already added": "", + "Model ID cannot contain whitespace.": "L'ID du modèle ne peut pas contenir d'espaces.", + "Model ID is already added": "L'ID du modèle est déjà ajouté", "Model ID is required.": "L'ID du modèle est requis.", "Model IDs": "ID des modèles", - "Model is now private": "", - "Model is now public": "", - "Model list refreshed": "", - "Model loaded successfully": "", + "Model is now private": "Le modèle est maintenant privé", + "Model is now public": "Le modèle est maintenant public", + "Model list refreshed": "Liste des modèles actualisée", + "Model loaded successfully": "Modèle chargé avec succès", "Model Name": "Nom du modèle", "Model name already exists, please choose a different one": "Le nom du modèle existe déjà, veuillez en choisir un autre", "Model Name is required.": "Le nom du modèle est requis.", "Model names and usage frequency": "Noms des modèles et fréquence d'utilisation", "Model not found": "Modèle introuvable", "Model not selected": "Modèle non sélectionné", - "Model order saved successfully": "", + "Model order saved successfully": "Ordre des modèles enregistré avec succès", "Model Params": "Réglages du modèle", "Model Permissions": "Autorisations du modèle", - "model profile": "", - "Model providers": "", - "Model removed from pinned models": "", - "Model removed from selected models": "", + "model profile": "profil du modèle", + "Model providers": "Fournisseurs de modèles", + "Model removed from pinned models": "Modèle retiré des modèles épinglés", + "Model removed from selected models": "Modèle retiré des modèles sélectionnés", "Model responses or outputs": "Les réponses des modèles", "Model unloaded successfully": "Modèle déchargé avec succès", "Model updated successfully": "Modèle mis à jour avec succès", "Model Usage": "Utilisation des modèles", - "Model: show or switch the current model.": "", + "Model: show or switch the current model.": "Modèle : afficher ou changer le modèle actuel.", "Model(s) do not support file upload": "Le(s) modèle(s) ne supportent pas le téléversement de fichiers", "Modelfile Content": "Contenu du Fichier de Modèle", - "modelfile profile": "", + "modelfile profile": "profil du fichier modèle", "Models": "Modèles", "Models Access": "Accès aux modèles", "Models configuration saved successfully": "Configuration des modèles enregistrée avec succès", "Models imported successfully": "Modèles importés avec succès", "Models Public Sharing": "Partage public des modèles", "Models Sharing": "Partage des modèles", - "Modified": "", + "Modified": "Modifié", "Mojeek": "Mojeek", - "Monday – Friday": "", + "Monday – Friday": "Lundi – Vendredi", "Month": "Mois", "Monthly": "Mensuel", "More": "Plus", @@ -1427,28 +1427,28 @@ "More Options": "Plus d'options", "Move": "Déplacer", "Moved {{name}}": "{{name}} déplacé", - "Multipart Upload": "", + "Multipart Upload": "Téléversement multipartite", "Mute": "Désactiver le son", "Muted": "Son désactivé", "My Terminal": "Mon terminal", "Name": "Nom d'utilisateur", - "Name and description are required": "", + "Name and description are required": "Le nom et la description sont requis", "Name and ID are required, please fill them out": "Le nom et l'ID sont obligatoires, veuillez les remplir", "Name is required": "Le nom est obligatoire", "Name your knowledge base": "Nommez votre base de connaissances", "Name, prompt, and model are required": "Le nom, le prompt et le modèle sont requis", "Native": "Natif", - "Navigate to Next Chat": "", - "Navigate to Previous Chat": "", + "Navigate to Next Chat": "Naviguer vers la conversation suivante", + "Navigate to Previous Chat": "Naviguer vers la conversation précédente", "Never": "Jamais", "New": "Nouveaux", "New Button": "Nouveau bouton", "New calendar": "Nouveau calendrier", "New Calendar": "Nouveau calendrier", - "New chat": "", + "New chat": "Nouvelle conversation", "New Chat": "Nouvelle conversation", - "New directory": "", - "New Directory": "", + "New directory": "Nouveau répertoire", + "New Directory": "Nouveau répertoire", "New File": "Nouveau fichier", "New Folder": "Nouveau dossier", "New Function": "Nouvelle fonction", @@ -1460,29 +1460,29 @@ "New Tool": "Nouvel outil", "New Webhook": "Nouveau webhook", "new-channel": "nouveau-canal", - "Next": "", + "Next": "Suivant", "Next message": "Message suivant", - "Next month": "", - "Next page": "", + "Next month": "Mois suivant", + "Next page": "Page suivante", "Next run": "Prochaine exécution", - "Next version": "", + "Next version": "Version suivante", "No access grants. Private to you.": "Aucun partage. Visible uniquement par vous.", "No actions found": "Aucune action trouvée", "No activity data": "Aucune activité", "No additional headers are sent unless configured.": "Aucun en-tête supplémentaire n'est envoyé sans configuration.", "No authentication": "Aucune authentification", "No automations found": "Aucune automatisation trouvée", - "No channels": "", + "No channels": "Aucun canal", "No chat alerts": "Aucune alerte de conversation", "No chat history": "Aucun historique de conversation", "No chat to compact": "Aucune conversation à compacter", "No chat to fork": "Aucune conversation à dupliquer", - "No chats": "", + "No chats": "Aucune conversation", "No chats found": "Aucune discussion trouvée", "No chats found for this user.": "Pas de conversation trouvée pour cet utilisateur.", "No chats found.": "Pas de conversation trouvée.", "No content": "Pas de contenu", - "No content available": "", + "No content available": "Aucun contenu disponible", "No content found": "Aucun contenu trouvé", "No content to speak": "Rien à signaler", "No conversation to save": "Aucune conversation à sauvegarder", @@ -1520,7 +1520,7 @@ "No notes found": "Aucune note trouvée", "No notification targets configured.": "Aucune cible de notification configurée.", "No one": "Personne", - "No output items": "", + "No output items": "Aucun élément de sortie", "No pinned messages": "Aucun message épinglé", "No prompts found": "Aucun prompt trouvé", "No Repeat": "Aucune répétition", @@ -1535,7 +1535,7 @@ "No suggestion prompts": "Aucun prompt suggéré", "No Terminal connection configured.": "Aucune connexion à un terminal configurée.", "No terminal connections configured.": "Aucune connexion à un terminal configurée.", - "No text differences": "", + "No text differences": "Aucune différence de texte", "No tool server connections configured.": "Aucune connexion à un serveur d'outils configurée.", "No tools accessible": "Aucun outil accessible", "No tools found": "Aucun outil trouvé", @@ -1547,71 +1547,71 @@ "No webhooks yet": "Aucun webhook trouvé", "Node Ids": "ID des noeuds", "None": "Aucun", - "Not configured": "", + "Not configured": "Non configuré", "Not factually correct": "Non factuellement correct", "Not helpful": "Pas utile", "Not Registered": "Non enregistré", "Not scheduled": "Non planifié", "Note": "Note", "Note deleted successfully": "Note supprimée avec succès", - "Note Menu": "", + "Note Menu": "Menu des notes", "Notes": "Notes", "Notes Public Sharing": "Partage public des notes", "Notes Sharing": "Partage des notes", - "Nothing to compact": "", + "Nothing to compact": "Rien à compacter", "November": "Novembre", "OAuth": "OAuth", "OAuth 2.1": "OAuth 2.1", "OAuth 2.1 (Static)": "OAuth 2.1 (Statique)", - "OAuth discovery successful": "", + "OAuth discovery successful": "Découverte OAuth réussie", "OAuth ID": "ID OAuth", - "OAuth Resource Parameter": "", - "OAuth Scopes": "", + "OAuth Resource Parameter": "Paramètre de ressource OAuth", + "OAuth Scopes": "Portées OAuth", "OAuth Server URL": "URL du serveur OAuth", "OAuth session disconnected": "Session OAuth déconnectée", "October": "Octobre", - "of a website's sticky header": "", + "of a website's sticky header": "d'un en-tête collant d'un site web", "Off": "Désactivé", "Okay, Let's Go!": "D'accord, allons-y !", "OLED Dark": "Noir OLED", "Ollama": "Ollama", "Ollama API settings updated": "Réglages de l'API Ollama mis à jour", - "Omit": "", + "Omit": "Omettre", "On": "Activé", "Once": "Une fois", - "Only active during Voice Mode.": "", + "Only active during Voice Mode.": "Uniquement actif en mode vocal.", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Uniquement lorsque le paramètre \"Coller un texte volumineux comme fichier\" est activé.", - "Only active when a tool call is waiting for approval.": "", + "Only active when a tool call is waiting for approval.": "Uniquement actif lorsqu'un appel d'outil attend une approbation.", "Only active when the chat input is in focus and an LLM is generating a response.": "Uniquement lorsque la zone de saisie de la conversation est active et qu'un LLM génère une réponse.", "Only active when the chat input is in focus.": "Uniquement lorsque la zone de saisie de la conversation est active.", "Only alphanumeric characters and hyphens are allowed": "Seuls les caractères alphanumériques et les tirets sont autorisés", "Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.", "Only can be triggered when the chat input is in focus.": "Ne peut être déclenché que lorsque le champ de saisie est actif.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissances pour modifier/ajouter des documents.", - "Only install functions from sources you trust.": "", - "Only install tools from sources you trust.": "", + "Only install functions from sources you trust.": "N'installez des fonctions que depuis des sources de confiance.", + "Only install tools from sources you trust.": "N'installez des outils que depuis des sources de confiance.", "Only invited users can access": "Limité aux utilisateurs sélectionnés", "Only select users and groups with permission can access": "Seuls les utilisateurs et groupes autorisés peuvent accéder", "Only sync new/updated chats": "Synchroniser uniquement les conversations nouvelles/modifiées", - "Only when away": "", + "Only when away": "Uniquement en absence", "Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.", "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups ! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.", - "Open": "", - "Open automation": "", - "Open create menu": "", + "Open": "Ouvrir", + "Open automation": "Ouvrir l'automatisation", + "Open create menu": "Ouvrir le menu de création", "Open file": "Ouvrir le fichier", - "Open Folder": "", + "Open Folder": "Ouvrir le dossier", "Open in full screen": "Ouvrir en plein écran", "Open in new tab": "Ouvrir dans un nouvel onglet", "Open link": "Ouvrir le lien", "Open modal to configure connection": "Ouvrir la fenêtre modale pour configurer la connexion", "Open Model Selector": "Ouvrir la liste des modèles", - "Open note": "", + "Open note": "Ouvrir la note", "Open Settings": "Ouvrir les réglages", - "Open settings.": "", + "Open settings.": "Ouvrir les paramètres.", "Open Sidebar": "Ouvrir la barre latérale", - "Open terminal": "", - "Open the changelog modal after sign-in when enabled.": "", + "Open terminal": "Ouvrir le terminal", + "Open the changelog modal after sign-in when enabled.": "Ouvrir la fenêtre modale du journal des modifications après la connexion si activé.", "Open User Profile Menu": "Ouvrir le menu du profil utilisateur", "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.", "Open WebUI version": "Version d'Open WebUI", @@ -1625,43 +1625,43 @@ "optional": "optionnel", "Optional": "Facultatif", "or": "ou", - "Orchestrator": "", + "Orchestrator": "Orchestrateur", "Ordered List": "Liste ordonnée", - "Original": "", + "Original": "Original", "Other": "Autre", - "out of": "", + "out of": "sur", "Output": "Sortie", "OUTPUT": "SORTIE", - "Overcome procrastination": "", + "Overcome procrastination": "Surmonter la procrastination", "Overview": "Aperçu", - "PaddleOCR-vl": "", - "PaddleOCR-vl API URL required.": "", + "PaddleOCR-vl": "PaddleOCR-vl", + "PaddleOCR-vl API URL required.": "URL de l'API PaddleOCR-vl requise.", "page": "page", "Page": "Page", "Parameters": "Réglages", "Parent message not found": "Message parent introuvable", "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "Participez aux classements et évaluations de la communauté ! La synchronisation des statistiques d'utilisation agrégées contribue à l'amélioration d'Open WebUI. Votre vie privée est primordiale : aucun contenu de message n'est jamais partagé.", - "Passthrough params": "", + "Passthrough params": "Paramètres de passage", "Password": "Mot de passe", - "Password updated. Please sign in again.": "", + "Password updated. Please sign in again.": "Mot de passe mis à jour. Veuillez vous reconnecter.", "Passwords do not match.": "Les mots de passe ne correspondent pas.", - "Path": "", + "Path": "Chemin", "Path copied": "Chemin copié", "Paused": "En pause", "PDF document (.pdf)": "Document au format PDF (.pdf)", - "pdf, docx, pptx, xlsx": "", - "Peak tokens": "", + "pdf, docx, pptx, xlsx": "pdf, docx, pptx, xlsx", + "Peak tokens": "Tokens de pointe", "pending": "en attente", "Pending": "en attente", - "Per automation": "", - "Per chat": "", + "Per automation": "Par automatisation", + "Per chat": "Par conversation", "Permission denied when accessing media devices": "Accès aux appareils multimédias refusé", "Permission denied when accessing microphone": "Accès au microphone refusé", "Permission denied when accessing microphone: {{error}}": "Accès au microphone refusé : {{error}}", "Permissions": "Permissions", - "Permissions reset to defaults": "", + "Permissions reset to defaults": "Permissions réinitialisées aux valeurs par défaut", "Persistent": "Persistant", - "Personal": "", + "Personal": "Personnel", "Pin": "Épingler", "Pin to Sidebar": "Épingler à la barre latérale", "Pinned": "Épinglé", @@ -1669,12 +1669,12 @@ "Pipe": "Pipeline", "Pipeline deleted successfully": "Pipeline supprimée avec succès", "Pipeline downloaded successfully": "Pipeline téléchargée avec succès", - "Pipelines are a plugin system with arbitrary code execution.": "", + "Pipelines are a plugin system with arbitrary code execution.": "Les pipelines sont un système de plugins avec exécution de code arbitraire.", "Pipelines Not Detected": "Aucun pipelines détecté", "Plain text (.md)": "Texte brut (.md)", "Plain text (.txt)": "Texte (.txt)", "Playground": "Playground", - "Playground Chat": "", + "Playground Chat": "Conversation en mode bac à sable", "Please carefully review the following warnings:": "Veuillez lire attentivement les avertissements suivants :", "Please connect all required integrations before sending a message": "Veuillez connecter toutes les intégrations requises avant d'envoyer un message", "Please do not close the settings page while loading the model.": "Veuillez ne pas fermer les réglages pendant le chargement du modèle.", @@ -1685,41 +1685,41 @@ "Please enter a valid path": "Veuillez entrer un chemin d'accès valide", "Please enter a valid URL": "Veuillez entrer une URL valide", "Please enter a valid URL.": "Veuillez entrer une URL valide.", - "Please enter Client ID and Client Secret": "", + "Please enter Client ID and Client Secret": "Veuillez entrer l'ID client et le secret client", "Please fill in all fields.": "Veuillez remplir tous les champs.", "Please register the OAuth client": "Veuillez enregistrer le client OAuth", - "Please save the connection before authorizing OAuth": "", + "Please save the connection before authorizing OAuth": "Veuillez enregistrer la connexion avant d'autoriser OAuth", "Please save the connection to persist the OAuth client information and do not change the ID": "Veuillez enregistrer la connexion pour conserver les informations du client OAuth et ne modifiez pas l'ID", "Please select a model.": "Veuillez sélectionner un modèle.", "Please select a reason": "Veuillez sélectionner une raison", "Please select a valid JSON file": "Veuillez sélectionner un fichier JSON valide", "Please select at least one user for Direct Message channel.": "Veuillez sélectionner au moins un utilisateur pour un canal de message direct.", "Please wait until all files are uploaded.": "Veuillez patienter jusqu'à ce que tous les fichiers soient téléchargés.", - "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "", - "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "", - "Policy ID": "", - "Policy ID is required": "", - "Policy is still loading": "", + "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP ou GIF. Jusqu'à 5 MiO et 25 mégapixels.", + "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Les modifications de politique s'appliquent aux nouveaux terminaux configurés. Actualisez les terminaux correspondants pour appliquer les modifications aux terminaux existants.", + "Policy ID": "ID de la politique", + "Policy ID is required": "L'ID de la politique est requis", + "Policy is still loading": "La politique est encore en cours de chargement", "Ports": "Ports", "Positive attitude": "Attitude positive", "Prefer not to say": "Je préfère ne pas répondre", - "Preferences": "", + "Preferences": "Préférences", "Prefix ID": "ID de préfixe", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver", - "Preparing {{NAME}}...": "", - "Preparing download...": "", - "Press keys...": "", + "Preparing {{NAME}}...": "Préparation de {{NAME}}...", + "Preparing download...": "Préparation du téléchargement...", + "Press keys...": "Appuyez sur les touches...", "Prevent File Creation": "Empêcher la création de fichier", "Preview": "Aperçu", - "Preview Access": "", - "Preview failed": "", - "Previous": "", + "Preview Access": "Accès à l'aperçu", + "Preview failed": "Échec de l'aperçu", + "Previous": "Précédent", "Previous 30 days": "30 derniers jours", "Previous 7 days": "7 derniers jours", "Previous message": "Message précédent", - "Previous month": "", - "Previous page": "", - "Previous version": "", + "Previous month": "Mois précédent", + "Previous page": "Page précédente", + "Previous version": "Version précédente", "Private": "Privé", "Private conversation between selected users": "Conversation privée entre les utilisateurs sélectionnés", "Production version updated": "Version active mise à jour", @@ -1727,23 +1727,23 @@ "Prompt": "Prompt", "Prompt Content": "Contenu du prompt", "Prompt created successfully": "Prompt créé avec succès", - "Prompt Menu": "", + "Prompt Menu": "Menu des invites", "Prompt Name": "Nom du prompt", "Prompt updated successfully": "Prompt mis à jour avec succès", "Prompts": "Prompts", "Prompts Access": "Accès aux prompts", "Prompts Public Sharing": "Partage public des prompts", "Prompts Sharing": "Partage de prompts", - "Provider": "", + "Provider": "Fournisseur", "Public": "Public", "Pull \"{{searchValue}}\" from Ollama.com": "Récupérer « {{searchValue}} » depuis Ollama.com", "Pull a model from Ollama.com": "Télécharger un modèle depuis Ollama.com", "Pull Model": "Télécharger le modèle", "Pyodide file browser": "Explorateur de fichiers Pyodide", - "Quality": "", - "Query failed": "", + "Quality": "Qualité", + "Query failed": "Échec de la requête", "Querying": "Requête en cours", - "Queued messages": "", + "Queued messages": "Messages en file d'attente", "Quick Actions": "Actions rapides", "Ran {{COUNT}} analyses": "{{COUNT}} analyses effectuées", "Ran {{COUNT}} analysis": "{{COUNT}} analyse effectuée", @@ -1752,19 +1752,19 @@ "Read": "Lire", "Read Aloud": "Lire à haute voix", "Read more →": "En savoir plus →", - "Read only": "", + "Read only": "Lecture seule", "Read Only": "Lecture seule", - "Read the docs": "", - "Read-only": "", + "Read the docs": "Lire la documentation", + "Read-only": "Lecture seule", "Read-Only Access": "Accès en lecture seule", "Reason": "Raison", "Reasoning text...": "Texte de raisonnement...", - "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "", - "Receives matching events across the instance, including system/config events and events associated with any user.": "", - "Receives matching events that are not associated with a user.": "", - "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "", + "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "Reconstruire le fichier de connaissances, la recherche de connaissances et les vecteurs de mémoire à l'aide du modèle d'embedding actuel.", + "Receives matching events across the instance, including system/config events and events associated with any user.": "Reçoit les événements correspondants dans l'instance, y compris les événements système/configuration et les événements associés à n'importe quel utilisateur.", + "Receives matching events that are not associated with a user.": "Reçoit les événements correspondants non associés à un utilisateur.", + "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "Reçoit les événements associés à un utilisateur uniquement lorsque l'acteur, le sujet utilisateur ou les données utilisateur correspondent à ces utilisateurs ou aux membres actuels du groupe. Les événements système/configuration ne sont pas envoyés.", "Recently Used": "Récemment utilisé", - "Recommended": "", + "Recommended": "Recommandé", "Reconnected": "Reconnecté", "Record": "Enregistrement", "Record voice": "Enregistrer la voix", @@ -1772,22 +1772,22 @@ "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.": "Réduit la probabilité de générer du contenu incohérent. Une valeur plus élevée (ex. : 100) produira des réponses plus variées, tandis qu'une valeur plus faible (ex. : 10) sera plus conservatrice.", "Reference Chats": "Discussions de référence", "Refresh": "Actualiser", - "Refresh requested: {{count}} terminal(s)_one": "", - "Refresh requested: {{count}} terminal(s)_many": "", - "Refresh requested: {{count}} terminal(s)_other": "", - "Refresh Terminals": "", - "Refreshing...": "", + "Refresh requested: {{count}} terminal(s)_one": "Actualisation demandée : {{count}} terminal", + "Refresh requested: {{count}} terminal(s)_many": "Actualisation demandée : {{count}} terminaux", + "Refresh requested: {{count}} terminal(s)_other": "Actualisation demandée : {{count}} terminaux", + "Refresh Terminals": "Actualiser les terminaux", + "Refreshing...": "Actualisation en cours...", "Refused when it shouldn't have": "Refusé alors qu'il n'aurait pas dû l'être", "Regenerate": "Regénérer", "Regenerate Response": "Regénérer la réponse", - "Region and language of the search results, e.g. en-us.": "", + "Region and language of the search results, e.g. en-us.": "Région et langue des résultats de recherche, par ex. fr-fr.", "Register Again": "Enregistrer à nouveau", "Register Client": "Enregistrer le client", "Registered": "Enregistré", - "registered to": "", + "registered to": "enregistré à", "Registration failed": "Échec de l'enregistrement", "Registration successful": "Enregistrement réussi", - "Reindex Embedding Data": "", + "Reindex Embedding Data": "Réindexer les données d'embedding", "Release Notes": "Notes de mise à jour", "Releases": "Livraisons", "Relevance": "Pertinence", @@ -1800,34 +1800,34 @@ "Remove File": "Retirer le fichier", "Remove from favorites": "Retirer des favoris", "Remove image": "Retirer l'image", - "Remove Pinned Model": "", - "Remove prompt suggestion": "", - "Remove Selected Model": "", - "Removing {{count}} stale files..._one": "", - "Removing {{count}} stale files..._many": "", - "Removing {{count}} stale files..._other": "", + "Remove Pinned Model": "Retirer le modèle épinglé", + "Remove prompt suggestion": "Retirer la suggestion d'invite", + "Remove Selected Model": "Retirer le modèle sélectionné", + "Removing {{count}} stale files..._one": "Suppression de {{count}} fichier obsolète...", + "Removing {{count}} stale files..._many": "Suppression de {{count}} fichiers obsolètes...", + "Removing {{count}} stale files..._other": "Suppression de {{count}} fichiers obsolètes...", "Rename": "Renommer", "Renamed to {{name}}": "Renommé en {{name}}", - "Reorder": "", - "Repeat": "", - "Replace": "", + "Reorder": "Réorganiser", + "Repeat": "Répéter", + "Replace": "Remplacer", "Reply": "Répondre", "Reply in Thread": "Répondre dans le fil de discussion", "Reply to thread...": "Répondre au fil de discussion...", "Replying to {{NAME}}": "En réponse à {{NAME}}", "required": "requis", - "Research Knowledge": "", + "Research Knowledge": "Rechercher des connaissances", "Reset": "Réinitialiser", "Reset All Models": "Réinitialiser tous les modèles", - "Reset all permissions to their initial configuration values": "", - "Reset Defaults": "", - "Reset group permissions to match the current default user permissions": "", - "Reset knowledge base?": "", - "Reset persisted files": "", - "Reset to Defaults": "", + "Reset all permissions to their initial configuration values": "Réinitialiser toutes les permissions à leurs valeurs de configuration initiales", + "Reset Defaults": "Réinitialiser les valeurs par défaut", + "Reset group permissions to match the current default user permissions": "Réinitialiser les permissions du groupe pour correspondre aux permissions utilisateur par défaut actuelles", + "Reset knowledge base?": "Réinitialiser la base de connaissances ?", + "Reset persisted files": "Réinitialiser les fichiers persistants", + "Reset to Defaults": "Réinitialiser aux valeurs par défaut", "Reset view": "Réinitialiser la vue", - "Reset zoom": "", - "Resize panel": "", + "Reset zoom": "Réinitialiser le zoom", + "Resize panel": "Redimensionner le panneau", "Response": "Réponse", "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de réponse ne peuvent pas être activées car les autorisations du site web ont été refusées. Veuillez vérifier les réglages de votre navigateur pour accorder l'accès nécessaire.", "Responses": "Responses", @@ -1839,47 +1839,47 @@ "Retrieved {{count}} sources_many": "{{count}} sources récupérées", "Retrieved {{count}} sources_other": "{{count}} sources récupérées", "Retrieved 1 source": "Une source récupérée", - "Retry": "", - "Rewrite the selected text.": "", + "Retry": "Réessayer", + "Rewrite the selected text.": "Réécrire le texte sélectionné.", "Role": "Rôle", "RTL": "RTL", "Run": "Exécuter", - "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "", + "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "Exécutez l'IA à vos propres conditions. Connectez n'importe quel modèle, étendez-le avec du code et protégez ce qui compte sans compromis. Vos modèles, vos données, votre machine, où que vous l'ouvriez.", "Run All": "Tout exécuter", - "Run cell (⌘+Enter)": "", + "Run cell (⌘+Enter)": "Exécuter la cellule (⌘+Entrée)", "Run now": "Exécuter maintenant", "Run Now": "Exécuter maintenant", - "Run tools without asking for approval.": "", + "Run tools without asking for approval.": "Exécuter les outils sans demander d'approbation.", "Running": "Exécution", - "Running Open WebUI for a team?": "", + "Running Open WebUI for a team?": "Utilisez-vous Open WebUI pour une équipe ?", "Running...": "Exécution...", - "runs": "", - "Runs": "", - "Sa_day_of_week": "", + "runs": "exécutions", + "Runs": "Exécutions", + "Sa_day_of_week": "Samedi", "Save": "Enregistrer", "Save & Create": "Enregistrer & Créer", "Save & Update": "Enregistrer & Mettre à jour", "Save As Copy": "Enregistrer comme copie", "Save Chat": "Enregistrer la conversation", "Saved": "Enregistré", - "Saving...": "", + "Saving...": "Enregistrement en cours...", "Schedule": "Planifier", "Scheduled time must be in the future": "L'heure prévue doit être située dans le futur", - "Screen Share": "", - "Scroll to bottom": "", + "Screen Share": "Partage d'écran", + "Scroll to bottom": "Faire défiler vers le bas", "Scroll to Top": "Retour en haut", "Search": "Recherche", "Search a model": "Rechercher un modèle", - "Search actions": "", + "Search actions": "Rechercher des actions", "Search all emojis": "Rechercher tous les emojis", "Search Automations": "Rechercher des automatisations", - "Search channels": "", + "Search channels": "Rechercher des canaux", "Search Chats": "Rechercher des conversations", "Search Collection": "Rechercher une collection", "Search Files": "Rechercher des fichiers", - "Search files and contents": "", - "Search filters": "", - "Search folders": "", + "Search files and contents": "Rechercher des fichiers et leur contenu", + "Search filters": "Rechercher des filtres", + "Search folders": "Rechercher des dossiers", "search for archived chats": "Rechercher les conversations archivées", "search for folders": "Rechercher tous les dossiers", "search for pinned chats": "Rechercher les conversations épinglées", @@ -1893,15 +1893,15 @@ "Search Models": "Rechercher des modèles", "Search Notes": "Rechercher des notes", "Search options": "Options de recherche", - "Search or add pattern": "", + "Search or add pattern": "Rechercher ou ajouter un motif", "Search Prompts": "Rechercher des prompts", - "Search skills": "", + "Search skills": "Rechercher des compétences", "Search Skills": "Rechercher des skills", "Search the internet": "Cherche sur Internet", - "Search tools": "", + "Search tools": "Rechercher des outils", "Search Tools": "Rechercher des outils", - "Search translations": "", - "Search users or groups": "", + "Search translations": "Rechercher des traductions", + "Search users or groups": "Rechercher des utilisateurs ou des groupes", "Searched {{count}} sites": "{{count}} sites recherchés", "Searching": "Recherche en cours", "Searching \"{{searchQuery}}\"": "Recherche de « {{searchQuery}} »", @@ -1910,7 +1910,7 @@ "See readme.md for instructions": "Voir le fichier readme.md pour les instructions", "Select": "Choisir", "Select {{modelName}} model": "Sélectionner le modèle {{modelName}}", - "Select {{name}}": "", + "Select {{name}}": "Sélectionner {{name}}", "Select a base model (e.g. llama3, gpt-4o)": "Chosir un modèle de base (ex : lamma3, gpt-4o)", "Select a conversation to preview": "Choisir une conversation pour la prévisualiser", "Select a engine": "Sélectionnez un moteur", @@ -1927,54 +1927,54 @@ "Select a theme": "Sélectionnez un thème", "Select a tool": "Sélectionnez un outil", "Select a voice": "Sélectionnez une voix", - "Select Action": "", + "Select Action": "Sélectionner une action", "Select All": "Tout sélectionner", "Select an auth method": "Veuillez sélectionner une méthode de connexion", "Select an embedding model engine": "Sélectionnez un moteur de modèle d'embedding", "Select an engine": "Sélectionnez un moteur", - "Select an instance": "", + "Select an instance": "Sélectionnez une instance", "Select an Ollama instance": "Sélectionnez une instance Ollama", "Select an option": "Sélectionner une option", "Select an output format": "Sélectionnez un format de sortie", "Select dtype": "Sélectionner le dtype", "Select Engine": "Sélectionnez le moteur", - "Select Filter": "", + "Select Filter": "Sélectionnez le filtre", "Select how to split message text for TTS requests": "Sélectionnez comment diviser le texte du message pour les requêtes TTS", "Select Knowledge": "Sélectionnez une connaissance", "Select Method": "Sélectionner une méthode", "Select model": "Sélectionnez un modèle", "Select only one model to call": "Sélectionnez seulement un modèle pour appeler", - "Select options": "", - "Select Skill": "", - "Select Tool": "", + "Select options": "Sélectionnez des options", + "Select Skill": "Sélectionnez une compétence", + "Select Tool": "Sélectionnez un outil", "Select view": "Sélectionner la vue", - "Selected": "", + "Selected": "Sélectionné", "Selected model: {{modelName}}": "Modèle sélectionné : {{modelName}}", "Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images", - "Selected models define incompatible Chat Variables.": "", + "Selected models define incompatible Chat Variables.": "Les modèles sélectionnés définissent des variables de conversation incompatibles.", "semantic": "sémantique", "Send": "Envoyer", "Send a Message": "Envoyer un message", - "Send events for": "", + "Send events for": "Envoyer des événements pour", "Send message": "Envoyer un message", "Send now": "Envoyer maintenant", - "Send Test": "", + "Send Test": "Envoyer un test", "September": "Septembre", "Server connection failed": "Connexion au serveur échouée", "Server connection verified": "Connexion au serveur vérifiée", - "Service Account": "", - "Services": "", + "Service Account": "Compte de service", + "Services": "Services", "Session": "Session", - "Session expired. Please sign in again.": "", - "Set a local zoom level for the app interface.": "", + "Session expired. Please sign in again.": "Session expirée. Veuillez vous reconnecter.", + "Set a local zoom level for the app interface.": "Définir un niveau de zoom local pour l'interface de l'application.", "Set as default": "Définir comme valeur par défaut", - "Set as Pinned Model": "", + "Set as Pinned Model": "Définir comme modèle épinglé", "Set as Production": "Définir comme version active", - "Set as Selected Model": "", + "Set as Selected Model": "Définir comme modèle sélectionné", "Set embedding model": "Définir le modèle d'embedding", "Set embedding model (e.g. {{model}})": "Définir le modèle d'embedding (par ex. {{model}})", "Set reranking model (e.g. {{model}})": "Définir le modèle de ré-ranking (par ex. {{model}})", - "Set system-wide interface defaults for every account. Personal settings override these defaults.": "", + "Set system-wide interface defaults for every account. Personal settings override these defaults.": "Définir les valeurs par défaut de l'interface pour tous les comptes. Les paramètres personnels remplacent ces valeurs par défaut.", "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.": "Définir le nombre de couches qui seront déchargées sur le GPU. Augmenter cette valeur peut améliorer considérablement les performances pour les modèles optimisés pour l'accélération GPU, mais peut également consommer plus d'énergie et de ressources GPU.", "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.": "Définir le nombre de threads de travail utilisés pour le calcul. Cette option contrôle combien de threads sont utilisés pour traiter les demandes entrantes simultanément. L'augmentation de cette valeur peut améliorer les performances sous de fortes charges de travail concurrentes mais peut également consommer plus de ressources CPU.", "Set whisper model": "Choisir le modèle Whisper", @@ -1985,10 +1985,10 @@ "Sets the size of the context window used to generate the next token.": "Définit la taille de la fenêtre de contexte utilisée pour générer le prochain token.", "Setting": "Réglage", "Settings": "Réglages", - "settings configured": "", + "settings configured": "paramètres configurés", "Settings Permissions": "Autorisations des paramètres", "Settings saved successfully!": "Réglages enregistrés avec succès !", - "Settings: open settings.": "", + "Settings: open settings.": "Paramètres : ouvrir les paramètres.", "settings.admin.analytics.title": "Analytique", "settings.admin.audio.additionalParameters.description": "Entrez les paramètres supplémentaires de requête TTS compatible OpenAI au format JSON.", "settings.admin.audio.additionalParameters.label": "Paramètres supplémentaires", @@ -1997,13 +1997,13 @@ "settings.admin.audio.mistralSttModel.description": "Laissez vide pour utiliser le modèle par défaut (voxtral-mini-latest).", "settings.admin.audio.mistralSttModel.label": "Modèle de Speech-to-Text", "settings.admin.audio.outputFormat.label": "Format de sortie", - "settings.admin.audio.requestFormat.description": "", - "settings.admin.audio.requestFormat.label": "", + "settings.admin.audio.requestFormat.description": "Format de la requête audio pour les appels d'outils.", + "settings.admin.audio.requestFormat.label": "Format de la requête", "settings.admin.audio.responseSplitting.description": "Contrôle la façon dont le texte des messages est divisé pour les demandes de Text-to-Speech. « ponctuation » divise en phrases, « paragraphes » divise en paragraphes et « aucun » garde le message en tant que chaîne de texte unique.", - "settings.admin.audio.responseSplitting.label": "", + "settings.admin.audio.responseSplitting.label": "Division de la réponse", "settings.admin.audio.sections.speechToText.title": "Reconnaissance vocale", "settings.admin.audio.sections.textToSpeech.title": "Text-to-Speech", - "settings.admin.audio.speechToTextEngine.description": "", + "settings.admin.audio.speechToTextEngine.description": "Moteur utilisé pour la reconnaissance vocale.", "settings.admin.audio.speechToTextEngine.label": "Moteur de reconnaissance vocale", "settings.admin.audio.sttAzureApiKey.label": "Clé API", "settings.admin.audio.sttAzureBaseUrl.label": "URL du point de terminaison", @@ -2017,9 +2017,9 @@ "settings.admin.audio.sttOpenaiApiKey.label": "Clé API", "settings.admin.audio.sttWhisperModel.description": "Open WebUI utilise faster-whisper en interne.", "settings.admin.audio.sttWhisperModel.label": "Modèle de Speech-to-Text", - "settings.admin.audio.supportedMimeTypes.description": "", + "settings.admin.audio.supportedMimeTypes.description": "Types MIME pris en charge pour les fichiers audio.", "settings.admin.audio.supportedMimeTypes.label": "Types MIME pris en charge", - "settings.admin.audio.textToSpeechEngine.description": "", + "settings.admin.audio.textToSpeechEngine.description": "Moteur utilisé pour la synthèse vocale.", "settings.admin.audio.textToSpeechEngine.label": "Moteur de Text-to-Speech", "settings.admin.audio.title": "Audio", "settings.admin.audio.ttsApiKey.label": "Clé API", @@ -2032,147 +2032,147 @@ "settings.admin.audio.ttsOpenaiApiBaseUrl.label": "URL de base de l'API", "settings.admin.audio.ttsOpenaiApiKey.label": "Clé API", "settings.admin.audio.ttsVoice.label": "Voix de Text-to-Speech", - "settings.admin.audio.updateModel.label": "", + "settings.admin.audio.updateModel.label": "Mettre à jour le modèle", "settings.admin.audio.useChatCompletionsApi.description": "Utilise le endpoint /v1/chat/completions au lieu de /v1/audio/transcriptions pour une meilleure précision potentielle.", "settings.admin.audio.useChatCompletionsApi.label": "Utiliser l'API Chat Completions", - "settings.admin.authentication.adminContactEmail.description": "", + "settings.admin.authentication.adminContactEmail.description": "Email de contact de l'administrateur pour les utilisateurs.", "settings.admin.authentication.adminContactEmail.label": "Email de contact de l'administrateur", - "settings.admin.authentication.adminDetails.description": "", - "settings.admin.authentication.adminDetails.label": "", - "settings.admin.authentication.adminRoles.description": "", - "settings.admin.authentication.adminRoles.label": "", - "settings.admin.authentication.allowedDomains.description": "", - "settings.admin.authentication.allowedDomains.label": "", - "settings.admin.authentication.allowedEndpoints.description": "", + "settings.admin.authentication.adminDetails.description": "Détails de l'administrateur pour l'interface.", + "settings.admin.authentication.adminDetails.label": "Détails de l'administrateur", + "settings.admin.authentication.adminRoles.description": "Rôles d'administrateur avec accès complet.", + "settings.admin.authentication.adminRoles.label": "Rôles d'administrateur", + "settings.admin.authentication.allowedDomains.description": "Domaines autorisés pour les connexions utilisateur.", + "settings.admin.authentication.allowedDomains.label": "Domaines autorisés", + "settings.admin.authentication.allowedEndpoints.description": "Points de terminaison autorisés pour les requêtes API.", "settings.admin.authentication.allowedEndpoints.label": "Points de terminaison autorisés", - "settings.admin.authentication.allowedRoles.description": "", - "settings.admin.authentication.allowedRoles.label": "", - "settings.admin.authentication.apiKeyEndpointRestrictions.description": "", + "settings.admin.authentication.allowedRoles.description": "Rôles autorisés à accéder à l'interface.", + "settings.admin.authentication.allowedRoles.label": "Rôles autorisés", + "settings.admin.authentication.apiKeyEndpointRestrictions.description": "Restrictions des points de terminaison pour les clés API.", "settings.admin.authentication.apiKeyEndpointRestrictions.label": "Restrictions des points de terminaison de la clé API", "settings.admin.authentication.apiKeys.description": "Autoriser les utilisateurs à créer des clés API pour un accès programmatique.", "settings.admin.authentication.apiKeys.label": "Clés API", - "settings.admin.authentication.applicationDn.description": "", + "settings.admin.authentication.applicationDn.description": "DN de l'application pour la connexion LDAP.", "settings.admin.authentication.applicationDn.label": "DN de l'application", - "settings.admin.authentication.applicationDnPassword.description": "", + "settings.admin.authentication.applicationDnPassword.description": "Mot de passe pour le DN de l'application LDAP.", "settings.admin.authentication.applicationDnPassword.label": "Mot de passe DN de l'application", - "settings.admin.authentication.attributeForMail.description": "", + "settings.admin.authentication.attributeForMail.description": "Attribut LDAP utilisé comme adresse email.", "settings.admin.authentication.attributeForMail.label": "Attribut pour l'e-mail", - "settings.admin.authentication.attributeForUsername.description": "", + "settings.admin.authentication.attributeForUsername.description": "Attribut LDAP utilisé comme nom d'utilisateur.", "settings.admin.authentication.attributeForUsername.label": "Attribut pour le nom d'utilisateur", - "settings.admin.authentication.autoRedirect.description": "", - "settings.admin.authentication.autoRedirect.label": "", - "settings.admin.authentication.blockedGroups.description": "", - "settings.admin.authentication.blockedGroups.label": "", - "settings.admin.authentication.certificatePath.description": "", + "settings.admin.authentication.autoRedirect.description": "Redirection automatique vers le fournisseur OAuth.", + "settings.admin.authentication.autoRedirect.label": "Redirection automatique", + "settings.admin.authentication.blockedGroups.description": "Groupes bloqués pour la connexion.", + "settings.admin.authentication.blockedGroups.label": "Groupes bloqués", + "settings.admin.authentication.certificatePath.description": "Chemin du certificat pour la vérification TLS.", "settings.admin.authentication.certificatePath.label": "Chemin du certificat", - "settings.admin.authentication.ciphers.description": "", + "settings.admin.authentication.ciphers.description": "Chiffres TLS pour les connexions LDAP.", "settings.admin.authentication.ciphers.label": "Chiffres", - "settings.admin.authentication.clientId.description": "", - "settings.admin.authentication.clientId.label": "", - "settings.admin.authentication.clientSecret.description": "", - "settings.admin.authentication.clientSecret.label": "", - "settings.admin.authentication.defaultGroup.description": "", + "settings.admin.authentication.clientId.description": "ID client pour OAuth.", + "settings.admin.authentication.clientId.label": "ID client", + "settings.admin.authentication.clientSecret.description": "Secret client pour OAuth.", + "settings.admin.authentication.clientSecret.label": "Secret client", + "settings.admin.authentication.defaultGroup.description": "Groupe par défaut pour les nouveaux utilisateurs.", "settings.admin.authentication.defaultGroup.label": "Groupe par défaut", - "settings.admin.authentication.defaultUserRole.description": "", + "settings.admin.authentication.defaultUserRole.description": "Rôle par défaut pour les nouveaux utilisateurs.", "settings.admin.authentication.defaultUserRole.label": "Rôle utilisateur par défaut", - "settings.admin.authentication.emailClaim.description": "", - "settings.admin.authentication.emailClaim.label": "", - "settings.admin.authentication.enableGroupCreation.description": "", - "settings.admin.authentication.enableGroupCreation.label": "", - "settings.admin.authentication.enableGroupManagement.description": "", - "settings.admin.authentication.enableGroupManagement.label": "", - "settings.admin.authentication.enableOauthGroupCreation.description": "", - "settings.admin.authentication.enableOauthGroupCreation.label": "", - "settings.admin.authentication.enableOauthGroupManagement.description": "", - "settings.admin.authentication.enableOauthGroupManagement.label": "", - "settings.admin.authentication.groupAttribute.description": "", - "settings.admin.authentication.groupAttribute.label": "", - "settings.admin.authentication.groupClaim.description": "", - "settings.admin.authentication.groupClaim.label": "", - "settings.admin.authentication.host.description": "", + "settings.admin.authentication.emailClaim.description": "Revendication OAuth utilisée comme email.", + "settings.admin.authentication.emailClaim.label": "Revendication email", + "settings.admin.authentication.enableGroupCreation.description": "Autoriser les utilisateurs à créer des groupes.", + "settings.admin.authentication.enableGroupCreation.label": "Autoriser la création de groupes", + "settings.admin.authentication.enableGroupManagement.description": "Autoriser les utilisateurs à gérer des groupes.", + "settings.admin.authentication.enableGroupManagement.label": "Autoriser la gestion de groupes", + "settings.admin.authentication.enableOauthGroupCreation.description": "Autoriser la création de groupes via OAuth.", + "settings.admin.authentication.enableOauthGroupCreation.label": "Autoriser la création de groupes OAuth", + "settings.admin.authentication.enableOauthGroupManagement.description": "Autoriser la gestion de groupes via OAuth.", + "settings.admin.authentication.enableOauthGroupManagement.label": "Autoriser la gestion de groupes OAuth", + "settings.admin.authentication.groupAttribute.description": "Attribut LDAP pour les groupes.", + "settings.admin.authentication.groupAttribute.label": "Attribut de groupe", + "settings.admin.authentication.groupClaim.description": "Revendication OAuth pour les groupes.", + "settings.admin.authentication.groupClaim.label": "Revendication de groupe", + "settings.admin.authentication.host.description": "Hôte du serveur LDAP.", "settings.admin.authentication.host.label": "Hôte", - "settings.admin.authentication.jwtExpiration.description": "", + "settings.admin.authentication.jwtExpiration.description": "Durée de validité du jeton JWT.", "settings.admin.authentication.jwtExpiration.label": "Expiration du jeton JWT", - "settings.admin.authentication.label.description": "", + "settings.admin.authentication.label.description": "Libellé pour le fournisseur OAuth.", "settings.admin.authentication.label.label": "Étiquette", "settings.admin.authentication.ldap.description": "Autoriser les utilisateurs à s'authentifier auprès d'un annuaire LDAP.", "settings.admin.authentication.ldap.label": "LDAP", - "settings.admin.authentication.loginForm.description": "", - "settings.admin.authentication.loginForm.label": "", - "settings.admin.authentication.mergeAccountsByEmail.description": "", - "settings.admin.authentication.mergeAccountsByEmail.label": "", + "settings.admin.authentication.loginForm.description": "Afficher le formulaire de connexion.", + "settings.admin.authentication.loginForm.label": "Formulaire de connexion", + "settings.admin.authentication.mergeAccountsByEmail.description": "Fusionner les comptes avec le même email.", + "settings.admin.authentication.mergeAccountsByEmail.label": "Fusionner les comptes par email", "settings.admin.authentication.newSignUps.description": "Autoriser les nouveaux utilisateurs à créer un compte.", - "settings.admin.authentication.newSignUps.label": "", + "settings.admin.authentication.newSignUps.label": "Nouveaux comptes", "settings.admin.authentication.oauthOidc.description": "Autoriser les utilisateurs à s'authentifier auprès d'un fournisseur OAuth / OIDC.", - "settings.admin.authentication.oauthOidc.label": "", + "settings.admin.authentication.oauthOidc.label": "OAuth/OIDC", "settings.admin.authentication.oauthSignup.description": "Autoriser les utilisateurs à créer un compte via OAuth.", - "settings.admin.authentication.oauthSignup.label": "", - "settings.admin.authentication.pendingUserOverlayContent.description": "", + "settings.admin.authentication.oauthSignup.label": "Inscription OAuth", + "settings.admin.authentication.pendingUserOverlayContent.description": "Contenu de l'overlay pour les utilisateurs en attente.", "settings.admin.authentication.pendingUserOverlayContent.label": "Contenu de l'overlay utilisateur en attente", - "settings.admin.authentication.pendingUserOverlayTitle.description": "", + "settings.admin.authentication.pendingUserOverlayTitle.description": "Titre de l'overlay pour les utilisateurs en attente.", "settings.admin.authentication.pendingUserOverlayTitle.label": "Titre de l'overlay utilisateur en attente", - "settings.admin.authentication.pictureClaim.description": "", - "settings.admin.authentication.pictureClaim.label": "", - "settings.admin.authentication.port.description": "", + "settings.admin.authentication.pictureClaim.description": "Revendication OAuth utilisée comme image de profil.", + "settings.admin.authentication.pictureClaim.label": "Revendication image", + "settings.admin.authentication.port.description": "Port du serveur LDAP.", "settings.admin.authentication.port.label": "Port", - "settings.admin.authentication.providerName.description": "", - "settings.admin.authentication.providerName.label": "", - "settings.admin.authentication.providerUrl.description": "", - "settings.admin.authentication.providerUrl.label": "", - "settings.admin.authentication.redirectUri.description": "", - "settings.admin.authentication.redirectUri.label": "", - "settings.admin.authentication.roleMapping.description": "", - "settings.admin.authentication.roleMapping.label": "", - "settings.admin.authentication.rolesClaim.description": "", - "settings.admin.authentication.rolesClaim.label": "", - "settings.admin.authentication.scopes.description": "", - "settings.admin.authentication.scopes.label": "", - "settings.admin.authentication.searchBase.description": "", + "settings.admin.authentication.providerName.description": "Nom du fournisseur OAuth.", + "settings.admin.authentication.providerName.label": "Nom du fournisseur", + "settings.admin.authentication.providerUrl.description": "URL du fournisseur OAuth.", + "settings.admin.authentication.providerUrl.label": "URL du fournisseur", + "settings.admin.authentication.redirectUri.description": "URI de redirection pour OAuth.", + "settings.admin.authentication.redirectUri.label": "URI de redirection", + "settings.admin.authentication.roleMapping.description": "Mappage des rôles OAuth aux rôles Open WebUI.", + "settings.admin.authentication.roleMapping.label": "Mappage des rôles", + "settings.admin.authentication.rolesClaim.description": "Revendication OAuth pour les rôles.", + "settings.admin.authentication.rolesClaim.label": "Revendication des rôles", + "settings.admin.authentication.scopes.description": "Portées OAuth demandées.", + "settings.admin.authentication.scopes.label": "Portées", + "settings.admin.authentication.searchBase.description": "Base de recherche pour les utilisateurs LDAP.", "settings.admin.authentication.searchBase.label": "Base de recherche", - "settings.admin.authentication.searchFilters.description": "", + "settings.admin.authentication.searchFilters.description": "Filtres pour la recherche LDAP.", "settings.admin.authentication.searchFilters.label": "Filtres de recherche", "settings.admin.authentication.sections.ldap.title": "LDAP", - "settings.admin.authentication.sections.oauthOidc.title": "", - "settings.admin.authentication.sections.pendingAccounts.title": "", - "settings.admin.authentication.sections.userAccess.title": "", - "settings.admin.authentication.subClaim.description": "", - "settings.admin.authentication.subClaim.label": "", + "settings.admin.authentication.sections.oauthOidc.title": "OAuth/OIDC", + "settings.admin.authentication.sections.pendingAccounts.title": "Comptes en attente", + "settings.admin.authentication.sections.userAccess.title": "Accès utilisateur", + "settings.admin.authentication.subClaim.description": "Revendication secondaire pour OAuth.", + "settings.admin.authentication.subClaim.label": "Revendication secondaire", "settings.admin.authentication.title": "Authentification", - "settings.admin.authentication.tls.description": "", + "settings.admin.authentication.tls.description": "Utiliser TLS pour les connexions LDAP.", "settings.admin.authentication.tls.label": "TLS", - "settings.admin.authentication.updateEmail.description": "", - "settings.admin.authentication.updateEmail.label": "", - "settings.admin.authentication.updateName.description": "", - "settings.admin.authentication.updateName.label": "", - "settings.admin.authentication.updatePicture.description": "", - "settings.admin.authentication.updatePicture.label": "", - "settings.admin.authentication.usernameClaim.description": "", - "settings.admin.authentication.usernameClaim.label": "", - "settings.admin.authentication.validateCertificate.description": "", - "settings.admin.authentication.validateCertificate.label": "", - "settings.admin.codeExecution.codeExecutionEngine.description": "", + "settings.admin.authentication.updateEmail.description": "Autoriser les utilisateurs à mettre à jour leur email.", + "settings.admin.authentication.updateEmail.label": "Mettre à jour l'email", + "settings.admin.authentication.updateName.description": "Autoriser les utilisateurs à mettre à jour leur nom.", + "settings.admin.authentication.updateName.label": "Mettre à jour le nom", + "settings.admin.authentication.updatePicture.description": "Autoriser les utilisateurs à mettre à jour leur image de profil.", + "settings.admin.authentication.updatePicture.label": "Mettre à jour l'image", + "settings.admin.authentication.usernameClaim.description": "Revendication OAuth utilisée comme nom d'utilisateur.", + "settings.admin.authentication.usernameClaim.label": "Revendication nom d'utilisateur", + "settings.admin.authentication.validateCertificate.description": "Valider le certificat TLS.", + "settings.admin.authentication.validateCertificate.label": "Valider le certificat", + "settings.admin.codeExecution.codeExecutionEngine.description": "Moteur utilisé pour l'exécution de code.", "settings.admin.codeExecution.codeExecutionEngine.label": "Moteur d'exécution de code", - "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "", + "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "Méthode d'authentification pour Jupyter.", "settings.admin.codeExecution.codeExecutionJupyterAuth.label": "Mode d'authentification Jupyter", - "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "", - "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "", + "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "Mot de passe pour Jupyter.", + "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "Mot de passe Jupyter", + "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "Jeton Jupyter", + "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "Délai d'expiration pour les requêtes Jupyter.", "settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "Délai d'exécution du code dépassé", - "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "", + "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "URL du serveur Jupyter.", "settings.admin.codeExecution.codeExecutionJupyterUrl.label": "URL Jupyter", - "settings.admin.codeExecution.codeInterpreterEngine.description": "", + "settings.admin.codeExecution.codeInterpreterEngine.description": "Moteur utilisé pour l'interpréteur de code.", "settings.admin.codeExecution.codeInterpreterEngine.label": "Moteur de l'interpréteur de code", - "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "", + "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "Méthode d'authentification pour l'interpréteur de code Jupyter.", "settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "Mode d'authentification Jupyter", - "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "", + "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "Mot de passe pour l'interpréteur de code Jupyter.", + "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "Mot de passe Jupyter", + "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "Jeton Jupyter", + "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "Délai d'expiration pour les requêtes de l'interpréteur de code Jupyter.", "settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "Délai d'exécution du code dépassé", - "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "", + "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "URL du serveur Jupyter pour l'interpréteur de code.", "settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "URL Jupyter", - "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "", + "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "Modèle d'invite pour l'interpréteur de code.", "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "Modèle d'invite pour l'interpréteur de code", "settings.admin.codeExecution.enableCodeExecution.description": "Autoriser les modèles à exécuter le code généré et à renvoyer les résultats d'exécution.", "settings.admin.codeExecution.enableCodeExecution.label": "Autoriser l'exécution de code", @@ -2186,203 +2186,203 @@ "settings.admin.connections.cacheBaseModelList.label": "Mettre en cache la liste des modèles de base", "settings.admin.connections.directConnections.description": "Les connexions directes permettent aux utilisateurs de se connecter à leurs propres points d'extension API compatibles OpenAI.", "settings.admin.connections.directConnections.label": "Direct connexions", - "settings.admin.connections.directIntegrations.description": "", - "settings.admin.connections.directIntegrations.label": "", + "settings.admin.connections.directIntegrations.description": "Activer les intégrations directes pour les utilisateurs.", + "settings.admin.connections.directIntegrations.label": "Intégrations directes", "settings.admin.connections.manageOllamaApiConnections.description": "Problèmes d'accès à Ollama ?", "settings.admin.connections.manageOllamaApiConnections.label": "Gérer les connexions API Ollama", "settings.admin.connections.manageOpenaiApiConnections.label": "Gérer les connexions API OpenAI", "settings.admin.connections.ollamaApi.label": "API Ollama", "settings.admin.connections.openaiApi.label": "API compatibles OpenAI", "settings.admin.connections.refreshModels.label": "Actualiser", - "settings.admin.connections.sections.userConnections.title": "", + "settings.admin.connections.sections.userConnections.title": "Connexions utilisateur", "settings.admin.connections.title": "Connexions", - "settings.admin.db.allChats.description": "", - "settings.admin.db.allChats.label": "", - "settings.admin.db.database.description": "", + "settings.admin.db.allChats.description": "Exporter toutes les conversations.", + "settings.admin.db.allChats.label": "Exporter toutes les conversations", + "settings.admin.db.database.description": "Base de données pour le stockage.", "settings.admin.db.database.label": "Base de données", - "settings.admin.db.exportConfig.description": "", + "settings.admin.db.exportConfig.description": "Exporter la configuration.", "settings.admin.db.exportConfig.label": "Exporter la configuration", - "settings.admin.db.importConfig.description": "", + "settings.admin.db.importConfig.description": "Importer la configuration.", "settings.admin.db.importConfig.label": "Importer la configuration", "settings.admin.db.sections.config.title": "Configuration", "settings.admin.db.sections.export.title": "Exporter", "settings.admin.db.title": "Base de données", - "settings.admin.db.users.description": "", + "settings.admin.db.users.description": "Exporter les utilisateurs.", "settings.admin.db.users.label": "Utilisateurs", - "settings.admin.documents.additionalConfig.description": "", + "settings.admin.documents.additionalConfig.description": "Configuration supplémentaire pour le traitement des documents.", "settings.admin.documents.additionalConfig.label": "Configuration supplémentaire", - "settings.admin.documents.allowedFileExtensions.description": "", + "settings.admin.documents.allowedFileExtensions.description": "Extensions de fichiers autorisées pour le téléversement.", "settings.admin.documents.allowedFileExtensions.label": "Extensions de fichier autorisées", - "settings.admin.documents.apiMode.description": "", + "settings.admin.documents.apiMode.description": "Mode API pour le traitement des documents.", "settings.admin.documents.apiMode.label": "Mode API", - "settings.admin.documents.apiTimeout.description": "", + "settings.admin.documents.apiTimeout.description": "Délai d'expiration pour les requêtes API.", "settings.admin.documents.apiTimeout.label": "Délai d'expiration de l'API", - "settings.admin.documents.apiToken.description": "", - "settings.admin.documents.apiToken.label": "", - "settings.admin.documents.apiUrl.description": "", - "settings.admin.documents.apiUrl.label": "", - "settings.admin.documents.asyncEmbeddingProcessing.description": "", + "settings.admin.documents.apiToken.description": "Jeton API pour le service de traitement des documents.", + "settings.admin.documents.apiToken.label": "Jeton API", + "settings.admin.documents.apiUrl.description": "URL du service de traitement des documents.", + "settings.admin.documents.apiUrl.label": "URL du service", + "settings.admin.documents.asyncEmbeddingProcessing.description": "Activer le traitement asynchrone des embeddings.", "settings.admin.documents.asyncEmbeddingProcessing.label": "Traitement asynchrone des embeddings", - "settings.admin.documents.azureopenaikey.description": "", + "settings.admin.documents.azureopenaikey.description": "Clé API Azure OpenAI pour les embeddings.", "settings.admin.documents.azureopenaikey.label": "Clé API", - "settings.admin.documents.azureopenaiurl.description": "", + "settings.admin.documents.azureopenaiurl.description": "URL du service Azure OpenAI pour les embeddings.", "settings.admin.documents.azureopenaiurl.label": "URL de base de l'API", - "settings.admin.documents.bm25Weight.description": "", + "settings.admin.documents.bm25Weight.description": "Poids pour l'algorithme BM25.", "settings.admin.documents.bm25Weight.label": "Poids BM25", - "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "", + "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "Ignorer l'embedding et la récupération.", "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "Ignorer l'Embedding et le Retrieval", - "settings.admin.documents.chunkMinSizeTarget.description": "", + "settings.admin.documents.chunkMinSizeTarget.description": "Taille minimale cible pour les chunks.", "settings.admin.documents.chunkMinSizeTarget.label": "Taille minimale cible des chunks", - "settings.admin.documents.chunkOverlap.description": "", + "settings.admin.documents.chunkOverlap.description": "Chevauchement entre les chunks.", "settings.admin.documents.chunkOverlap.label": "Chevauchement des chunks", - "settings.admin.documents.chunkSize.description": "", + "settings.admin.documents.chunkSize.description": "Taille des chunks pour le traitement.", "settings.admin.documents.chunkSize.label": "Taille des chunks", - "settings.admin.documents.contentExtractionEngine.description": "", + "settings.admin.documents.contentExtractionEngine.description": "Moteur utilisé pour l'extraction de contenu.", "settings.admin.documents.contentExtractionEngine.label": "Moteur d'extraction de contenu", - "settings.admin.documents.datalabMarkerApiBaseUrl.description": "", + "settings.admin.documents.datalabMarkerApiBaseUrl.description": "URL de base de l'API Datalab Marker.", "settings.admin.documents.datalabMarkerApiBaseUrl.label": "URL de base de l'API", - "settings.admin.documents.datalabMarkerApiKey.description": "", + "settings.admin.documents.datalabMarkerApiKey.description": "Clé API pour Datalab Marker.", "settings.admin.documents.datalabMarkerApiKey.label": "Clé API", - "settings.admin.documents.disableImageExtraction.description": "", + "settings.admin.documents.disableImageExtraction.description": "Désactiver l'extraction d'images.", "settings.admin.documents.disableImageExtraction.label": "Empecher l'extraction d'image", - "settings.admin.documents.doclingApiKey.description": "", + "settings.admin.documents.doclingApiKey.description": "Clé API pour Docling.", "settings.admin.documents.doclingApiKey.label": "Clé API", - "settings.admin.documents.doclingParams.description": "", + "settings.admin.documents.doclingParams.description": "Paramètres pour Docling.", "settings.admin.documents.doclingParams.label": "Réglages", - "settings.admin.documents.doclingServerUrl.description": "", - "settings.admin.documents.doclingServerUrl.label": "", - "settings.admin.documents.documentIntelligenceKey.description": "", + "settings.admin.documents.doclingServerUrl.description": "URL du serveur Docling.", + "settings.admin.documents.doclingServerUrl.label": "URL du serveur Docling", + "settings.admin.documents.documentIntelligenceKey.description": "Clé pour Document Intelligence.", "settings.admin.documents.documentIntelligenceKey.label": "Clé", - "settings.admin.documents.documentIntelligenceModel.description": "", + "settings.admin.documents.documentIntelligenceModel.description": "Modèle pour Document Intelligence.", "settings.admin.documents.documentIntelligenceModel.label": "Modèle Document Intelligence", - "settings.admin.documents.documentLoaderUrl.description": "", - "settings.admin.documents.documentLoaderUrl.label": "", - "settings.admin.documents.embeddingBatchSize.description": "", + "settings.admin.documents.documentLoaderUrl.description": "URL du chargeur de documents.", + "settings.admin.documents.documentLoaderUrl.label": "URL du chargeur de documents", + "settings.admin.documents.embeddingBatchSize.description": "Taille du lot pour le traitement des embeddings.", "settings.admin.documents.embeddingBatchSize.label": "Taille du lot d'embedding", - "settings.admin.documents.embeddingConcurrentRequests.description": "", + "settings.admin.documents.embeddingConcurrentRequests.description": "Nombre de requêtes d'embedding simultanées.", "settings.admin.documents.embeddingConcurrentRequests.label": "Requêtes d'embedding simultanées", - "settings.admin.documents.embeddingModel.description": "", + "settings.admin.documents.embeddingModel.description": "Modèle utilisé pour les embeddings.", "settings.admin.documents.embeddingModel.label": "Modèle d'embedding", - "settings.admin.documents.embeddingModelEngine.description": "", + "settings.admin.documents.embeddingModelEngine.description": "Moteur pour le modèle d'embedding.", "settings.admin.documents.embeddingModelEngine.label": "Moteur de modèle d'embedding", - "settings.admin.documents.endpoint.description": "", - "settings.admin.documents.endpoint.label": "", - "settings.admin.documents.enrichHybridSearchText.description": "", + "settings.admin.documents.endpoint.description": "Point de terminaison pour le service de documents.", + "settings.admin.documents.endpoint.label": "Point de terminaison", + "settings.admin.documents.enrichHybridSearchText.description": "Enrichir le texte de recherche hybride.", "settings.admin.documents.enrichHybridSearchText.label": "Enrichir le texte de recherche hybride", - "settings.admin.documents.externalDocumentLoaderApiKey.description": "", + "settings.admin.documents.externalDocumentLoaderApiKey.description": "Clé API pour le chargeur de documents externe.", "settings.admin.documents.externalDocumentLoaderApiKey.label": "Clé API", - "settings.admin.documents.fileExtensions.description": "", - "settings.admin.documents.fileExtensions.label": "", - "settings.admin.documents.forceOcr.description": "", + "settings.admin.documents.fileExtensions.description": "Extensions de fichiers autorisées.", + "settings.admin.documents.fileExtensions.label": "Extensions de fichiers", + "settings.admin.documents.forceOcr.description": "Forcer l'OCR sur les images.", "settings.admin.documents.forceOcr.label": "Forcer l'OCR", - "settings.admin.documents.formatLines.description": "", + "settings.admin.documents.formatLines.description": "Formater les lignes pour l'extraction.", "settings.admin.documents.formatLines.label": "Formatter les lignes", - "settings.admin.documents.fullContextMode.description": "", + "settings.admin.documents.fullContextMode.description": "Mode avec injection complète dans le contexte.", "settings.admin.documents.fullContextMode.label": "Mode avec injection complète dans le contexte", "settings.admin.documents.googleDrive.description": "Autoriser Google Drive comme source de documents.", "settings.admin.documents.googleDrive.label": "Google Drive", - "settings.admin.documents.headers.description": "", + "settings.admin.documents.headers.description": "En-têtes HTTP pour les requêtes.", "settings.admin.documents.headers.label": "En-têtes HTTP", - "settings.admin.documents.headerVariables.label": "", - "settings.admin.documents.hybridSearch.description": "", + "settings.admin.documents.headerVariables.label": "Variables d'en-tête", + "settings.admin.documents.hybridSearch.description": "Activer la recherche hybride.", "settings.admin.documents.hybridSearch.label": "Recherche hybride", - "settings.admin.documents.imageCompressionHeight.description": "", + "settings.admin.documents.imageCompressionHeight.description": "Hauteur pour la compression d'images.", "settings.admin.documents.imageCompressionHeight.label": "Compression de la hauteur de l'image", - "settings.admin.documents.imageCompressionWidth.description": "", + "settings.admin.documents.imageCompressionWidth.description": "Largeur pour la compression d'images.", "settings.admin.documents.imageCompressionWidth.label": "Compression de la largeur de l'image", - "settings.admin.documents.markdownHeaderTextSplitter.description": "", + "settings.admin.documents.markdownHeaderTextSplitter.description": "Diviser le texte par en-têtes Markdown.", "settings.admin.documents.markdownHeaderTextSplitter.label": "Découpage par en-têtes markdown", - "settings.admin.documents.maxUploadCount.description": "", + "settings.admin.documents.maxUploadCount.description": "Nombre maximal de fichiers à téléverser.", "settings.admin.documents.maxUploadCount.label": "Nombre maximal de téléversements", - "settings.admin.documents.maxUploadSize.description": "", + "settings.admin.documents.maxUploadSize.description": "Taille maximale des fichiers à téléverser.", "settings.admin.documents.maxUploadSize.label": "Limite de taille de téléversement", - "settings.admin.documents.mineruApiKey.description": "", + "settings.admin.documents.mineruApiKey.description": "Clé API pour MinerU.", "settings.admin.documents.mineruApiKey.label": "Clé API", - "settings.admin.documents.mineruParams.description": "", + "settings.admin.documents.mineruParams.description": "Paramètres pour MinerU.", "settings.admin.documents.mineruParams.label": "Réglages", - "settings.admin.documents.mistralOcrApiBaseUrl.description": "", + "settings.admin.documents.mistralOcrApiBaseUrl.description": "URL de base de l'API Mistral OCR.", "settings.admin.documents.mistralOcrApiBaseUrl.label": "URL de base de l'API", - "settings.admin.documents.mistralOcrApiKey.description": "", + "settings.admin.documents.mistralOcrApiKey.description": "Clé API pour Mistral OCR.", "settings.admin.documents.mistralOcrApiKey.label": "Clé API", - "settings.admin.documents.ollamakey.description": "", + "settings.admin.documents.ollamakey.description": "Clé API pour Ollama.", "settings.admin.documents.ollamakey.label": "Clé API", - "settings.admin.documents.ollamaurl.description": "", + "settings.admin.documents.ollamaurl.description": "URL du service Ollama.", "settings.admin.documents.ollamaurl.label": "URL de base de l'API", "settings.admin.documents.onedrive.description": "Autoriser OneDrive comme source de documents.", "settings.admin.documents.onedrive.label": "OneDrive", - "settings.admin.documents.openaikey.description": "", + "settings.admin.documents.openaikey.description": "Clé API pour OpenAI.", "settings.admin.documents.openaikey.label": "Clé API", - "settings.admin.documents.openaiurl.description": "", + "settings.admin.documents.openaiurl.description": "URL du service OpenAI.", "settings.admin.documents.openaiurl.label": "URL de base de l'API", - "settings.admin.documents.outputFormat.description": "", + "settings.admin.documents.outputFormat.description": "Format de sortie pour les documents.", "settings.admin.documents.outputFormat.label": "Format de sortie", - "settings.admin.documents.paddleocrVlBaseUrl.description": "", + "settings.admin.documents.paddleocrVlBaseUrl.description": "URL de base pour PaddleOCR-vl.", "settings.admin.documents.paddleocrVlBaseUrl.label": "URL de base de l'API", - "settings.admin.documents.paginate.description": "", + "settings.admin.documents.paginate.description": "Paginer les résultats.", "settings.admin.documents.paginate.label": "Paginer", - "settings.admin.documents.pdfExtractImagesOcr.description": "", + "settings.admin.documents.pdfExtractImagesOcr.description": "Extraire les images des PDF pour l'OCR.", "settings.admin.documents.pdfExtractImagesOcr.label": "Extraction d'images PDF (OCR)", - "settings.admin.documents.pdfLoaderMode.description": "", + "settings.admin.documents.pdfLoaderMode.description": "Mode de chargement des PDF.", "settings.admin.documents.pdfLoaderMode.label": "Mode de chargement des PDF", - "settings.admin.documents.ragExternalRerankerApiKey.description": "", + "settings.admin.documents.ragExternalRerankerApiKey.description": "Clé API pour le reranker externe.", "settings.admin.documents.ragExternalRerankerApiKey.label": "Clé API", - "settings.admin.documents.ragExternalRerankerUrl.description": "", + "settings.admin.documents.ragExternalRerankerUrl.description": "URL du reranker externe.", "settings.admin.documents.ragExternalRerankerUrl.label": "URL de base de l'API", - "settings.admin.documents.ragTemplate.description": "", + "settings.admin.documents.ragTemplate.description": "Modèle pour le RAG.", "settings.admin.documents.ragTemplate.label": "Modèle RAG", "settings.admin.documents.reindex.label": "Réindexer", - "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "", - "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "", - "settings.admin.documents.relevanceThreshold.description": "", + "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "Réindexer les vecteurs de connaissances et de mémoire.", + "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "Réindexer les vecteurs", + "settings.admin.documents.relevanceThreshold.description": "Seuil de pertinence pour la recherche.", "settings.admin.documents.relevanceThreshold.label": "Seuil de pertinence", - "settings.admin.documents.rerankingBatchSize.description": "", - "settings.admin.documents.rerankingBatchSize.label": "", - "settings.admin.documents.rerankingEngine.description": "", + "settings.admin.documents.rerankingBatchSize.description": "Taille du lot pour le réordonnancement.", + "settings.admin.documents.rerankingBatchSize.label": "Taille du lot de réordonnancement", + "settings.admin.documents.rerankingEngine.description": "Moteur pour le réordonnancement.", "settings.admin.documents.rerankingEngine.label": "Moteur de ré-ranking", - "settings.admin.documents.rerankingModel.description": "", + "settings.admin.documents.rerankingModel.description": "Modèle pour le réordonnancement.", "settings.admin.documents.rerankingModel.label": "Modèle de ré-ranking", - "settings.admin.documents.resetUploadDirectory.description": "", + "settings.admin.documents.resetUploadDirectory.description": "Réinitialiser le répertoire de téléversement.", "settings.admin.documents.resetUploadDirectory.label": "Réinitialiser le répertoire de téléchargement", - "settings.admin.documents.resetVectorStorageKnowledge.description": "", + "settings.admin.documents.resetVectorStorageKnowledge.description": "Réinitialiser le stockage vectoriel et les connaissances.", "settings.admin.documents.resetVectorStorageKnowledge.label": "Réinitialiser le stockage vectoriel/connaissances", - "settings.admin.documents.sections.contentExtraction.title": "", + "settings.admin.documents.sections.contentExtraction.title": "Extraction de contenu", "settings.admin.documents.sections.dangerZone.title": "Zone de danger", "settings.admin.documents.sections.embedding.title": "Embedding", "settings.admin.documents.sections.files.title": "Fichiers", "settings.admin.documents.sections.integration.title": "Intégration", "settings.admin.documents.sections.retrieval.title": "Récupération", - "settings.admin.documents.skipCache.description": "", + "settings.admin.documents.skipCache.description": "Ignorer le cache pour les résultats.", "settings.admin.documents.skipCache.label": "Ne pas utiliser le cache", - "settings.admin.documents.stripExistingOcr.description": "", + "settings.admin.documents.stripExistingOcr.description": "Supprimer l'OCR existant.", "settings.admin.documents.stripExistingOcr.label": "Supprimer l'OCR existant", - "settings.admin.documents.supportedMediaMimeTypes.description": "", - "settings.admin.documents.supportedMediaMimeTypes.label": "", - "settings.admin.documents.textSplitter.description": "", + "settings.admin.documents.supportedMediaMimeTypes.description": "Types MIME de médias pris en charge.", + "settings.admin.documents.supportedMediaMimeTypes.label": "Types MIME pris en charge", + "settings.admin.documents.textSplitter.description": "Méthode de division du texte.", "settings.admin.documents.textSplitter.label": "Découpage du texte", - "settings.admin.documents.tikaServerUrl.description": "", - "settings.admin.documents.tikaServerUrl.label": "", - "settings.admin.documents.tikaServerVersion.description": "", - "settings.admin.documents.tikaServerVersion.label": "", + "settings.admin.documents.tikaServerUrl.description": "URL du serveur Tika.", + "settings.admin.documents.tikaServerUrl.label": "URL du serveur Tika", + "settings.admin.documents.tikaServerVersion.description": "Version du serveur Tika.", + "settings.admin.documents.tikaServerVersion.label": "Version Tika", "settings.admin.documents.title": "Documents", - "settings.admin.documents.tokenizerModel.description": "", - "settings.admin.documents.tokenizerModel.label": "", - "settings.admin.documents.topK.description": "", + "settings.admin.documents.tokenizerModel.description": "Modèle de tokenisation.", + "settings.admin.documents.tokenizerModel.label": "Modèle de tokenisation", + "settings.admin.documents.topK.description": "Nombre de résultats à retourner.", "settings.admin.documents.topK.label": "Top K", - "settings.admin.documents.topKReranker.description": "", + "settings.admin.documents.topKReranker.description": "Nombre de résultats à réordonner.", "settings.admin.documents.topKReranker.label": "Top K Reranker", - "settings.admin.documents.updateEmbeddingModel.label": "", - "settings.admin.documents.useBase64.description": "", - "settings.admin.documents.useBase64.label": "", - "settings.admin.documents.useLlm.description": "", + "settings.admin.documents.updateEmbeddingModel.label": "Mettre à jour le modèle d'embedding", + "settings.admin.documents.useBase64.description": "Utiliser Base64 pour les PDF.", + "settings.admin.documents.useBase64.label": "Utiliser Base64", + "settings.admin.documents.useLlm.description": "Utiliser un LLM pour améliorer l'extraction.", "settings.admin.documents.useLlm.label": "Utiliser le LLM", - "settings.admin.documents.version.description": "", + "settings.admin.documents.version.description": "Version du service de documents.", "settings.admin.documents.version.label": "Version:", "settings.admin.evaluations.addArenaModel.label": "Ajouter un modèle d'arène", "settings.admin.evaluations.arenaModels.description": "L'évaluation des messages doit être activée pour pouvoir utiliser cette fonctionnalité", "settings.admin.evaluations.arenaModels.label": "Modèles d'arène", "settings.admin.evaluations.sections.models.title": "Modèles", "settings.admin.evaluations.title": "Évaluations", - "settings.admin.general.addBanner.label": "", + "settings.admin.general.addBanner.label": "Ajouter une bannière", "settings.admin.general.automations.description": "Autoriser les utilisateurs à créer et exécuter des automatisations.", "settings.admin.general.automations.label": "Automatisations", "settings.admin.general.banners.label": "Bannières", @@ -2392,9 +2392,9 @@ "settings.admin.general.channels.label": "Canaux", "settings.admin.general.checkForUpdates.label": "Vérifier les mises à jour disponibles", "settings.admin.general.communitySharing.description": "Autoriser les utilisateurs à partager des conversations avec la communauté Open WebUI.", - "settings.admin.general.communitySharing.label": "", - "settings.admin.general.events.events.label": "", - "settings.admin.general.events.webhooks.description": "", + "settings.admin.general.communitySharing.label": "Partage communautaire", + "settings.admin.general.events.events.label": "Événements", + "settings.admin.general.events.webhooks.description": "Activer les webhooks pour les événements.", "settings.admin.general.events.webhooks.label": "Webhooks", "settings.admin.general.folderMaxFileCount.description": "Nombre maximum de fichiers autorisés par dossier.", "settings.admin.general.folderMaxFileCount.label": "Nombre maximum de fichiers par dossier", @@ -2405,79 +2405,79 @@ "settings.admin.general.license.label": "Licence", "settings.admin.general.memories.description": "Autoriser les utilisateurs à enregistrer des souvenirs pour des réponses plus personnalisées.", "settings.admin.general.memories.label": "Souvenirs", - "settings.admin.general.memorySystemContext.description": "", - "settings.admin.general.memorySystemContext.label": "", - "settings.admin.general.messageRating.description": "", - "settings.admin.general.messageRating.label": "", - "settings.admin.general.modelResponseMode.description": "", - "settings.admin.general.modelResponseMode.label": "", + "settings.admin.general.memorySystemContext.description": "Contexte système pour la mémoire.", + "settings.admin.general.memorySystemContext.label": "Contexte système de la mémoire", + "settings.admin.general.messageRating.description": "Activer l'évaluation des messages.", + "settings.admin.general.messageRating.label": "Évaluation des messages", + "settings.admin.general.modelResponseMode.description": "Mode de réponse du modèle.", + "settings.admin.general.modelResponseMode.label": "Mode de réponse", "settings.admin.general.notes.description": "Autoriser les utilisateurs à créer et gérer des notes.", "settings.admin.general.notes.label": "Notes", - "settings.admin.general.responseWatermark.description": "", + "settings.admin.general.responseWatermark.description": "Filigrane pour les réponses.", "settings.admin.general.responseWatermark.label": "Filigramme de la réponse", "settings.admin.general.sections.features.title": "Fonctionnalités", "settings.admin.general.sections.ui.title": "UI", "settings.admin.general.seeWhatSNew.label": "Découvrez les nouvelles fonctionnalités", "settings.admin.general.title": "Général", - "settings.admin.general.translations.addTranslation.label": "", - "settings.admin.general.translations.uiTranslations.label": "", - "settings.admin.general.userStatus.description": "", + "settings.admin.general.translations.addTranslation.label": "Ajouter une traduction", + "settings.admin.general.translations.uiTranslations.label": "Traductions de l'interface", + "settings.admin.general.userStatus.description": "Activer le statut utilisateur.", "settings.admin.general.userStatus.label": "Statut utilisateur", "settings.admin.general.userWebhooks.description": "Autoriser les utilisateurs à configurer des webhooks depuis leur compte.", "settings.admin.general.userWebhooks.label": "Webhooks utilisateur", "settings.admin.general.version.label": "Version:", "settings.admin.general.webuiUrl.description": "Entrez l'URL publique de votre WebUI. Cette URL sera utilisée pour générer des liens dans les notifications.", "settings.admin.general.webuiUrl.label": "URL de WebUI", - "settings.admin.images.apiAuthString.description": "", - "settings.admin.images.apiAuthString.label": "", - "settings.admin.images.automatic1111BaseUrl.description": "", - "settings.admin.images.automatic1111BaseUrl.label": "", - "settings.admin.images.automatic1111Params.description": "", + "settings.admin.images.apiAuthString.description": "Chaîne d'authentification pour l'API d'images.", + "settings.admin.images.apiAuthString.label": "Authentification API", + "settings.admin.images.automatic1111BaseUrl.description": "URL de base pour Automatic1111.", + "settings.admin.images.automatic1111BaseUrl.label": "URL Automatic1111", + "settings.admin.images.automatic1111Params.description": "Paramètres pour Automatic1111.", "settings.admin.images.automatic1111Params.label": "Paramètres supplémentaires", "settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "Cliquez ici pour téléverser un fichier workflow.json.", - "settings.admin.images.comfyuiApiKey.description": "", + "settings.admin.images.comfyuiApiKey.description": "Clé API pour ComfyUI.", "settings.admin.images.comfyuiApiKey.label": "Clé API", - "settings.admin.images.comfyuiBaseUrl.description": "", - "settings.admin.images.comfyuiBaseUrl.label": "", - "settings.admin.images.comfyuiComfyuiWorkflow.description": "", + "settings.admin.images.comfyuiBaseUrl.description": "URL de base pour ComfyUI.", + "settings.admin.images.comfyuiBaseUrl.label": "URL ComfyUI", + "settings.admin.images.comfyuiComfyuiWorkflow.description": "Workflow ComfyUI pour la génération.", "settings.admin.images.comfyuiComfyuiWorkflow.label": "Workflow ComfyUI", - "settings.admin.images.editingWorkflowNodes.description": "", + "settings.admin.images.editingWorkflowNodes.description": "Nœuds du workflow pour l'édition d'images.", "settings.admin.images.editingWorkflowNodes.label": "Noeuds du workflow ComfyUI", "settings.admin.images.editWorkflowJsonContent.label": "Modifier le contenu de workflow.json", - "settings.admin.images.geminiEndpointMethod.description": "", + "settings.admin.images.geminiEndpointMethod.description": "Méthode de point de terminaison pour Gemini.", "settings.admin.images.geminiEndpointMethod.label": "Méthode de l'endpoint Gemini", - "settings.admin.images.generationWorkflowNodes.description": "", + "settings.admin.images.generationWorkflowNodes.description": "Nœuds du workflow pour la génération d'images.", "settings.admin.images.generationWorkflowNodes.label": "Noeuds du workflow ComfyUI", "settings.admin.images.imageEdit.description": "Autoriser les utilisateurs à modifier des images existantes.", "settings.admin.images.imageEdit.label": "Modification d'image", - "settings.admin.images.imageEditEngine.description": "", + "settings.admin.images.imageEditEngine.description": "Moteur pour l'édition d'images.", "settings.admin.images.imageEditEngine.label": "Moteur de modification d'image", "settings.admin.images.imageEditModel.label": "Modèle", "settings.admin.images.imageEditSize.label": "Taille de l'image", "settings.admin.images.imageGeneration.description": "Autoriser les utilisateurs à générer des images à partir de prompts.", "settings.admin.images.imageGeneration.label": "Génération d'image", - "settings.admin.images.imageGenerationEngine.description": "", + "settings.admin.images.imageGenerationEngine.description": "Moteur pour la génération d'images.", "settings.admin.images.imageGenerationEngine.label": "Moteur de génération d'image", "settings.admin.images.imageGenerationModel.label": "Modèle", - "settings.admin.images.imagePromptGeneration.description": "", + "settings.admin.images.imagePromptGeneration.description": "Activer la génération de prompts d'images.", "settings.admin.images.imagePromptGeneration.label": "Génération de prompts d'images", - "settings.admin.images.imagesEditComfyuiApiKey.description": "", + "settings.admin.images.imagesEditComfyuiApiKey.description": "Clé API pour l'édition d'images avec ComfyUI.", "settings.admin.images.imagesEditComfyuiApiKey.label": "Clé API", - "settings.admin.images.imagesEditComfyuiBaseUrl.description": "", - "settings.admin.images.imagesEditComfyuiBaseUrl.label": "", - "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "", + "settings.admin.images.imagesEditComfyuiBaseUrl.description": "URL de base pour l'édition d'images avec ComfyUI.", + "settings.admin.images.imagesEditComfyuiBaseUrl.label": "URL édition ComfyUI", + "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "URL de base Gemini pour l'édition", "settings.admin.images.imagesEditGeminiApiKey.label": "Clé API", "settings.admin.images.imagesEditOpenaiApiBaseUrl.label": "URL de base de l'API", "settings.admin.images.imagesEditOpenaiApiKey.label": "Clé API", "settings.admin.images.imagesEditOpenaiApiVersion.label": "Version de l'API", - "settings.admin.images.imagesGeminiApiBaseUrl.description": "", - "settings.admin.images.imagesGeminiApiBaseUrl.label": "", - "settings.admin.images.imagesGeminiApiKey.description": "", + "settings.admin.images.imagesGeminiApiBaseUrl.description": "URL de base pour l'API Gemini.", + "settings.admin.images.imagesGeminiApiBaseUrl.label": "URL API Gemini", + "settings.admin.images.imagesGeminiApiKey.description": "Clé API pour Gemini.", "settings.admin.images.imagesGeminiApiKey.label": "Clé API", "settings.admin.images.imageSize.label": "Taille de l'image", "settings.admin.images.imagesOpenaiApiBaseUrl.label": "URL de base de l'API", "settings.admin.images.imagesOpenaiApiKey.label": "Clé API", - "settings.admin.images.imagesOpenaiApiParams.description": "", + "settings.admin.images.imagesOpenaiApiParams.description": "Paramètres pour l'API OpenAI.", "settings.admin.images.imagesOpenaiApiParams.label": "Paramètres supplémentaires", "settings.admin.images.imagesOpenaiApiVersion.label": "Version de l'API", "settings.admin.images.sections.createImage.title": "Création d'image", @@ -2485,11 +2485,11 @@ "settings.admin.images.serverConnectionVerified.label": "Connexion au serveur vérifiée", "settings.admin.images.steps.label": "Étapes", "settings.admin.images.title": "Images", - "settings.admin.images.verifyConnection.label": "", + "settings.admin.images.verifyConnection.label": "Vérifier la connexion", "settings.admin.integrations.addConnection.label": "Ajouter une connexion", "settings.admin.integrations.externalKnowledge.addConnection.label": "Ajouter une connexion", - "settings.admin.integrations.externalKnowledge.title": "", - "settings.admin.integrations.externalToolServers.label": "", + "settings.admin.integrations.externalKnowledge.title": "Connaissances externes", + "settings.admin.integrations.externalToolServers.label": "Serveurs d'outils externes", "settings.admin.integrations.mcp.label": "MCP", "settings.admin.integrations.openApi.label": "OpenAPI", "settings.admin.integrations.openTerminal.label": "Ouvrir le terminal", @@ -2497,65 +2497,65 @@ "settings.admin.integrations.sections.terminal.title": "Terminal", "settings.admin.integrations.sections.tools.title": "Outils", "settings.admin.integrations.title": "Intégrations", - "settings.admin.interface.autocompleteGeneration.description": "", + "settings.admin.interface.autocompleteGeneration.description": "Activer la génération d'autocomplétion.", "settings.admin.interface.autocompleteGeneration.label": "Génération des suggestions", - "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "", + "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "Longueur maximale de l'entrée pour l'autocomplétion.", "settings.admin.interface.autocompleteGenerationInputMaxLength.label": "Longueur maximale pour la génération des suggestions", - "settings.admin.interface.autocompleteGenerationPrompt.description": "", - "settings.admin.interface.autocompleteGenerationPrompt.label": "", - "settings.admin.interface.availableVariables.label": "", - "settings.admin.interface.contextCompaction.description": "", - "settings.admin.interface.contextCompaction.label": "", - "settings.admin.interface.contextCompactionModel.description": "", - "settings.admin.interface.contextCompactionModel.label": "", - "settings.admin.interface.contextCompactionPrompt.description": "", - "settings.admin.interface.contextCompactionPrompt.label": "", + "settings.admin.interface.autocompleteGenerationPrompt.description": "Prompt pour la génération d'autocomplétion.", + "settings.admin.interface.autocompleteGenerationPrompt.label": "Prompt d'autocomplétion", + "settings.admin.interface.availableVariables.label": "Variables disponibles", + "settings.admin.interface.contextCompaction.description": "Activer la compaction du contexte.", + "settings.admin.interface.contextCompaction.label": "Compaction du contexte", + "settings.admin.interface.contextCompactionModel.description": "Modèle pour la compaction du contexte.", + "settings.admin.interface.contextCompactionModel.label": "Modèle de compaction", + "settings.admin.interface.contextCompactionPrompt.description": "Prompt pour la compaction du contexte.", + "settings.admin.interface.contextCompactionPrompt.label": "Prompt de compaction", "settings.admin.interface.externalTaskModel.label": "Modèle de tâche externe", - "settings.admin.interface.followUpGeneration.description": "", + "settings.admin.interface.followUpGeneration.description": "Activer la génération de questions de suivi.", "settings.admin.interface.followUpGeneration.label": "Génération de questions de suivi", - "settings.admin.interface.followUpGenerationPrompt.description": "", + "settings.admin.interface.followUpGenerationPrompt.description": "Prompt pour la génération de questions de suivi.", "settings.admin.interface.followUpGenerationPrompt.label": "Prompt de génération de questions de suivi", - "settings.admin.interface.imagePromptGenerationPrompt.description": "", + "settings.admin.interface.imagePromptGenerationPrompt.description": "Prompt pour la génération de prompts d'images.", "settings.admin.interface.imagePromptGenerationPrompt.label": "Prompt de génération de prompts d'images", "settings.admin.interface.localTaskModel.label": "Modèle de tâche local", - "settings.admin.interface.promptTemplate.description": "", - "settings.admin.interface.promptTemplate.label": "", - "settings.admin.interface.queryGenerationPrompt.description": "", + "settings.admin.interface.promptTemplate.description": "Modèle pour les invites.", + "settings.admin.interface.promptTemplate.label": "Modèle d'invite", + "settings.admin.interface.queryGenerationPrompt.description": "Prompt pour la génération de requêtes.", "settings.admin.interface.queryGenerationPrompt.label": "Prompt de génération de requête", - "settings.admin.interface.retainedMessages.description": "", - "settings.admin.interface.retainedMessages.label": "", - "settings.admin.interface.retrievalQueryGeneration.description": "", + "settings.admin.interface.retainedMessages.description": "Messages conservés après compaction.", + "settings.admin.interface.retainedMessages.label": "Messages conservés", + "settings.admin.interface.retrievalQueryGeneration.description": "Activer la génération de requêtes de récupération.", "settings.admin.interface.retrievalQueryGeneration.label": "Génération de requête de RAG", "settings.admin.interface.sections.chat.title": "Conversation", - "settings.admin.interface.sections.generation.title": "", + "settings.admin.interface.sections.generation.title": "Génération", "settings.admin.interface.sections.tasks.title": "Tâches", - "settings.admin.interface.tagsGeneration.description": "", + "settings.admin.interface.tagsGeneration.description": "Activer la génération automatique de tags.", "settings.admin.interface.tagsGeneration.label": "Génération de tags", - "settings.admin.interface.tagsGenerationPrompt.description": "", + "settings.admin.interface.tagsGenerationPrompt.description": "Prompt pour la génération de tags.", "settings.admin.interface.tagsGenerationPrompt.label": "Prompt de génération de tags", - "settings.admin.interface.taskModel.description": "", + "settings.admin.interface.taskModel.description": "Modèle pour les tâches.", "settings.admin.interface.taskModel.label": "Modèle pour les tâches", - "settings.admin.interface.taskModelParameters.label": "", + "settings.admin.interface.taskModelParameters.label": "Paramètres du modèle de tâche", "settings.admin.interface.title": "Interface utilisateur", "settings.admin.interface.titleGeneration.description": "Autoriser les noms automatiques pour les nouvelles conversations.", "settings.admin.interface.titleGeneration.label": "Génération du Titre", - "settings.admin.interface.titleGenerationPrompt.description": "", + "settings.admin.interface.titleGenerationPrompt.description": "Prompt pour la génération de titres.", "settings.admin.interface.titleGenerationPrompt.label": "Prompt de génération de titre", - "settings.admin.interface.tokenCap.description": "", - "settings.admin.interface.tokenCap.label": "", - "settings.admin.interface.tokenThreshold.description": "", - "settings.admin.interface.tokenThreshold.label": "", - "settings.admin.interface.toolPermissions.description": "", - "settings.admin.interface.toolPermissions.label": "", - "settings.admin.interface.toolsFunctionCallingPrompt.description": "", + "settings.admin.interface.tokenCap.description": "Plafond de tokens.", + "settings.admin.interface.tokenCap.label": "Plafond de tokens", + "settings.admin.interface.tokenThreshold.description": "Seuil de tokens.", + "settings.admin.interface.tokenThreshold.label": "Seuil de tokens", + "settings.admin.interface.toolPermissions.description": "Permissions pour les outils.", + "settings.admin.interface.toolPermissions.label": "Permissions des outils", + "settings.admin.interface.toolsFunctionCallingPrompt.description": "Prompt pour les appels de fonction des outils.", "settings.admin.interface.toolsFunctionCallingPrompt.label": "Prompt pour les appels de fonction des outils", - "settings.admin.interface.voiceModePrompt.description": "", + "settings.admin.interface.voiceModePrompt.description": "Prompt pour le mode vocal.", "settings.admin.interface.voiceModePrompt.label": "Prompt du mode vocal", - "settings.admin.interface.webSearchQueryGeneration.description": "", + "settings.admin.interface.webSearchQueryGeneration.description": "Activer la génération de requêtes de recherche Web.", "settings.admin.interface.webSearchQueryGeneration.label": "Génération de requête de recherche Web", "settings.admin.models.builtinTools.automations.description": "Créer et gérer des automatations planifiées", "settings.admin.models.builtinTools.automations.label": "Automatisations", - "settings.admin.models.builtinTools.calendar.description": "", + "settings.admin.models.builtinTools.calendar.description": "Activer les outils de calendrier.", "settings.admin.models.builtinTools.calendar.label": "Calendrier", "settings.admin.models.builtinTools.channels.description": "Rechercher des canaux et des messages dans ces canaux", "settings.admin.models.builtinTools.channels.label": "Canaux", @@ -2563,7 +2563,7 @@ "settings.admin.models.builtinTools.chats.label": "Historique des conversations", "settings.admin.models.builtinTools.codeInterpreter.description": "Exécuter du code", "settings.admin.models.builtinTools.codeInterpreter.label": "Interpréteur de code", - "settings.admin.models.builtinTools.files.description": "", + "settings.admin.models.builtinTools.files.description": "Activer les outils de fichiers.", "settings.admin.models.builtinTools.files.label": "Fichiers", "settings.admin.models.builtinTools.imageGeneration.description": "Créer et modifier des images", "settings.admin.models.builtinTools.imageGeneration.label": "Génération d'image", @@ -2573,17 +2573,17 @@ "settings.admin.models.builtinTools.memory.label": "Mémoire", "settings.admin.models.builtinTools.notes.description": "Rechercher, afficher et gérer les notes de l'utilisateur", "settings.admin.models.builtinTools.notes.label": "Notes", - "settings.admin.models.builtinTools.notifications.description": "", + "settings.admin.models.builtinTools.notifications.description": "Activer les outils de notifications.", "settings.admin.models.builtinTools.notifications.label": "Notifications", - "settings.admin.models.builtinTools.subagents.description": "", - "settings.admin.models.builtinTools.subagents.label": "", + "settings.admin.models.builtinTools.subagents.description": "Activer les outils de sous-agents.", + "settings.admin.models.builtinTools.subagents.label": "Sous-agents", "settings.admin.models.builtinTools.tasks.description": "Décomposer les demandes complexes en étapes traçables", "settings.admin.models.builtinTools.tasks.label": "Gestion des tâches", "settings.admin.models.builtinTools.time.description": "Récupérer la date/heure actuelle et effectuer des calculs associés", "settings.admin.models.builtinTools.time.label": "Horodatage", "settings.admin.models.builtinTools.title": "Outils intégrés", - "settings.admin.models.builtinTools.userInput.description": "", - "settings.admin.models.builtinTools.userInput.label": "", + "settings.admin.models.builtinTools.userInput.description": "Activer les outils d'entrée utilisateur.", + "settings.admin.models.builtinTools.userInput.label": "Entrée utilisateur", "settings.admin.models.builtinTools.webSearch.description": "Rechercher sur le web et récupérer le contenu de sites web à partir d'une URL", "settings.admin.models.builtinTools.webSearch.label": "Recherche Web", "settings.admin.models.capabilities.builtinTools.description": "Injecte automatiquement les outils système en mode d'appel de fonctions natif (par ex. horodatage, mémoire, historique des conversations, notes, etc.)", @@ -2598,7 +2598,7 @@ "settings.admin.models.capabilities.fileUpload.label": "Téléversement du fichier", "settings.admin.models.capabilities.imageGeneration.description": "Le modèle peut générer des images à partir de prompts", "settings.admin.models.capabilities.imageGeneration.label": "Génération d'image", - "settings.admin.models.capabilities.memory.description": "", + "settings.admin.models.capabilities.memory.description": "Activer les capacités de mémoire.", "settings.admin.models.capabilities.memory.label": "Mémoire", "settings.admin.models.capabilities.statusUpdates.description": "Affiche les mises à jour du statut dans la réponse (par ex : la progression de la recherche sur le Web)", "settings.admin.models.capabilities.statusUpdates.label": "Mises à jour de statut", @@ -2619,7 +2619,7 @@ "settings.admin.models.defaultFeatures.webSearch.description": "Le modèle peut faire des recherches sur internet pour trouver des informations", "settings.admin.models.defaultFeatures.webSearch.label": "Recherche Web", "settings.admin.models.defaults.modelCapabilities.label": "Capacités du modèle", - "settings.admin.models.defaults.modelDefaults.label": "", + "settings.admin.models.defaults.modelDefaults.label": "Valeurs par défaut du modèle", "settings.admin.models.defaults.modelParameters.label": "Réglages du modèle", "settings.admin.models.defaults.promptSuggestions.label": "Suggestions de prompts", "settings.admin.models.disableAllModels.label": "Désactiver tout", @@ -2631,51 +2631,51 @@ "settings.admin.models.resetModels.label": "Réinitialiser", "settings.admin.models.showAllModels.label": "Afficher tout", "settings.admin.models.title": "Modèles", - "settings.admin.pipelines.githubUrl.label": "", - "settings.admin.pipelines.install.label": "", - "settings.admin.pipelines.installing.label": "", - "settings.admin.pipelines.pipeline.description": "", - "settings.admin.pipelines.pipeline.label": "", - "settings.admin.pipelines.pipelineUrl.description": "", - "settings.admin.pipelines.pipelineUrl.label": "", + "settings.admin.pipelines.githubUrl.label": "URL GitHub", + "settings.admin.pipelines.install.label": "Installer", + "settings.admin.pipelines.installing.label": "Installation en cours", + "settings.admin.pipelines.pipeline.description": "Pipeline à installer.", + "settings.admin.pipelines.pipeline.label": "Pipeline", + "settings.admin.pipelines.pipelineUrl.description": "URL du pipeline.", + "settings.admin.pipelines.pipelineUrl.label": "URL du pipeline", "settings.admin.pipelines.sections.pipelines.title": "Pipelines", "settings.admin.pipelines.sections.source.title": "Source", "settings.admin.pipelines.sections.valves.title": "Vannes", - "settings.admin.pipelines.selectAPyFile.label": "", + "settings.admin.pipelines.selectAPyFile.label": "Sélectionner un fichier .py", "settings.admin.pipelines.title": "Pipelines", - "settings.admin.pipelines.uploadPipeline.description": "", + "settings.admin.pipelines.uploadPipeline.description": "Téléverser un pipeline.", "settings.admin.pipelines.uploadPipeline.label": "Pipeline de téléchargement", "settings.admin.subagents.enableBackgroundSubAgents.description": "Autoriser les sous-agents délégués à poursuivre leur exécution pendant que la conversation parente se poursuit.", - "settings.admin.subagents.enableBackgroundSubAgents.label": "", - "settings.admin.subagents.enableSubAgents.label": "", - "settings.admin.subagents.maxBackground.label": "", - "settings.admin.subagents.maxConcurrent.label": "", - "settings.admin.subagents.maxIterations.label": "", - "settings.admin.subagents.maxOutput.label": "", - "settings.admin.subagents.systemPrompt.description": "", - "settings.admin.subagents.systemPrompt.label": "", - "settings.admin.subagents.title": "", + "settings.admin.subagents.enableBackgroundSubAgents.label": "Activer les sous-agents en arrière-plan", + "settings.admin.subagents.enableSubAgents.label": "Activer les sous-agents", + "settings.admin.subagents.maxBackground.label": "Max en arrière-plan", + "settings.admin.subagents.maxConcurrent.label": "Max simultané", + "settings.admin.subagents.maxIterations.label": "Itérations maximales", + "settings.admin.subagents.maxOutput.label": "Sortie maximale", + "settings.admin.subagents.systemPrompt.description": "Prompt système pour les sous-agents.", + "settings.admin.subagents.systemPrompt.label": "Prompt système", + "settings.admin.subagents.title": "Sous-agents", "settings.admin.web.bingSearchV7Endpoint.label": "Point de terminaison Bing Search V7", "settings.admin.web.bingSearchV7SubscriptionKey.label": "Clé d'abonnement Bing Search V7", "settings.admin.web.bochaSearchApiKey.label": "Clé API Bocha Search", "settings.admin.web.braveSearchApiKey.label": "Clé API Brave Search", - "settings.admin.web.bypassEmbeddingAndRetrieval.description": "", + "settings.admin.web.bypassEmbeddingAndRetrieval.description": "Ignorer l'embedding et la récupération pour le Web.", "settings.admin.web.bypassEmbeddingAndRetrieval.label": "Ignorer l'Embedding et le Retrieval", - "settings.admin.web.bypassWebLoader.description": "", + "settings.admin.web.bypassWebLoader.description": "Ignorer le chargeur Web.", "settings.admin.web.bypassWebLoader.label": "Ignorer le chargeur Web", - "settings.admin.web.concurrentRequests.description": "", + "settings.admin.web.concurrentRequests.description": "Nombre de requêtes simultanées.", "settings.admin.web.concurrentRequests.label": "Demandes concurrentes", "settings.admin.web.contextTokens.label": "Tokens de contexte", "settings.admin.web.ddgsBackend.label": "DDGS Backend", - "settings.admin.web.domainFilterList.description": "", + "settings.admin.web.domainFilterList.description": "Liste des domaines à filtrer.", "settings.admin.web.domainFilterList.label": "Liste des domaines à filtrés", "settings.admin.web.exaApiKey.label": "Clé API Exa", "settings.admin.web.externalWebLoaderApiKey.label": "Clé API du chargeur Web externe", "settings.admin.web.externalWebLoaderUrl.label": "URL du chargeur Web externe", "settings.admin.web.externalWebSearchApiKey.label": "Clé API de la recherche Web externe", "settings.admin.web.externalWebSearchUrl.label": "URL de la recherche Web externe", - "settings.admin.web.fetchUrlContentLengthLimit.description": "", - "settings.admin.web.fetchUrlContentLengthLimit.label": "", + "settings.admin.web.fetchUrlContentLengthLimit.description": "Limite de longueur du contenu de l'URL.", + "settings.admin.web.fetchUrlContentLengthLimit.label": "Limite de longueur", "settings.admin.web.firecrawlApiBaseUrl.label": "Url de base de l'API Firecrawl", "settings.admin.web.firecrawlApiKey.label": "Clé de l'API Firecrawl", "settings.admin.web.firecrawlTimeoutS.label": "Délai d'expiration Firecrawl (s)", @@ -2685,14 +2685,14 @@ "settings.admin.web.jinaApiKey.label": "Clé API Jina", "settings.admin.web.kagiSearchApiKey.label": "Clé API Kagi Search", "settings.admin.web.language.label": "Langue", - "settings.admin.web.linkupApiKey.label": "", - "settings.admin.web.maxContentLength.description": "", - "settings.admin.web.maxContentLength.label": "", - "settings.admin.web.microsoftWebIqApiBaseUrl.label": "", - "settings.admin.web.microsoftWebIqApiKey.label": "", + "settings.admin.web.linkupApiKey.label": "Clé API Linkup", + "settings.admin.web.maxContentLength.description": "Longueur maximale du contenu.", + "settings.admin.web.maxContentLength.label": "Longueur max", + "settings.admin.web.microsoftWebIqApiBaseUrl.label": "URL de base Microsoft Web IQ", + "settings.admin.web.microsoftWebIqApiKey.label": "Clé API Microsoft Web IQ", "settings.admin.web.mojeekSearchApiKey.label": "Clé API Mojeek", "settings.admin.web.ollamaCloudApiKey.label": "Clé API Ollama Cloud", - "settings.admin.web.openserpUrl.label": "", + "settings.admin.web.openserpUrl.label": "URL OpenSERP", "settings.admin.web.parameters.label": "Réglages", "settings.admin.web.perplexityApiKey.label": "Clé API Perplexity", "settings.admin.web.perplexityModel.label": "Modèle de Perplexity", @@ -2702,8 +2702,8 @@ "settings.admin.web.playwrightWebsocketUrl.label": "URL du websocket Playwright", "settings.admin.web.searchapiApiKey.label": "Clé API SearchApi", "settings.admin.web.searchapiEngine.label": "Moteur de recherche SearchApi", - "settings.admin.web.searchLimits.description": "", - "settings.admin.web.searchLimits.label": "", + "settings.admin.web.searchLimits.description": "Limites pour la recherche.", + "settings.admin.web.searchLimits.label": "Limites de recherche", "settings.admin.web.searchResultCount.description": "Limite les requêtes de recherche simultanées. 0 = illimité (par défaut). Définir à 1 pour une exécution séquentielle (recommandé pour les API avec des limites de débit strictes comme Brave gratuit).", "settings.admin.web.searchResultCount.label": "Nombre de résultats de recherche", "settings.admin.web.searxngQueryUrl.label": "URL de recherche SearXNG", @@ -2713,30 +2713,30 @@ "settings.admin.web.serpapiApiKey.label": "Clé API SerpApi", "settings.admin.web.serpapiEngine.label": "Moteur SerpAPI", "settings.admin.web.serperApiKey.label": "Clé API Serper", - "settings.admin.web.serphouseApiKey.label": "", - "settings.admin.web.serphouseDomain.label": "", + "settings.admin.web.serphouseApiKey.label": "Clé API SERPHouse", + "settings.admin.web.serphouseDomain.label": "Domaine SERPHouse", "settings.admin.web.serplyApiKey.label": "Clé API Serply", "settings.admin.web.serpstackApiKey.label": "Clé API Serpstack", "settings.admin.web.sougouSearchApiSid.label": "Identifiant API Sougou Search (sID)", "settings.admin.web.sougouSearchApiSk.label": "Clé secrète API Sougou Search (SK)", "settings.admin.web.tavilyApiKey.label": "Clé API Tavily", "settings.admin.web.tavilyExtractDepth.label": "Profondeur d'extraction Tavily", - "settings.admin.web.timeout.description": "", + "settings.admin.web.timeout.description": "Délai d'expiration pour les requêtes Web.", "settings.admin.web.timeout.label": "Délai d'expiration", "settings.admin.web.title": "Recherche Web", - "settings.admin.web.trustProxyEnvironment.description": "", + "settings.admin.web.trustProxyEnvironment.description": "Faire confiance à l'environnement proxy.", "settings.admin.web.trustProxyEnvironment.label": "Faire confiance au proxy de l'environement", - "settings.admin.web.verifySslCertificate.description": "", + "settings.admin.web.verifySslCertificate.description": "Vérifier les certificats SSL.", "settings.admin.web.verifySslCertificate.label": "Vérifier le certificat SSL", - "settings.admin.web.webLoaderEngine.description": "", + "settings.admin.web.webLoaderEngine.description": "Moteur pour le chargeur Web.", "settings.admin.web.webLoaderEngine.label": "Moteur de chargement Web", "settings.admin.web.webSearch.description": "Autoriser les utilisateurs à effectuer des recherches sur le Web depuis les conversations.", "settings.admin.web.webSearch.label": "Recherche Web", - "settings.admin.web.webSearchConfirmation.description": "", - "settings.admin.web.webSearchConfirmation.label": "", - "settings.admin.web.webSearchConfirmationContent.description": "", - "settings.admin.web.webSearchConfirmationContent.label": "", - "settings.admin.web.webSearchEngine.description": "", + "settings.admin.web.webSearchConfirmation.description": "Activer la confirmation pour la recherche Web.", + "settings.admin.web.webSearchConfirmation.label": "Confirmation de recherche Web", + "settings.admin.web.webSearchConfirmationContent.description": "Contenu de la confirmation pour la recherche Web.", + "settings.admin.web.webSearchConfirmationContent.label": "Contenu de confirmation", + "settings.admin.web.webSearchEngine.description": "Moteur pour la recherche Web.", "settings.admin.web.webSearchEngine.label": "Moteur de recherche Web", "settings.admin.web.yacyInstanceUrl.label": "URL de l'instance Yacy", "settings.admin.web.yacyPassword.label": "Mot de passe Yacy", @@ -2745,37 +2745,37 @@ "settings.admin.web.yandexWebSearchConfig.label": "Configuration de recherche web Yandex", "settings.admin.web.yandexWebSearchUrl.label": "URL de recherche web Yandex", "settings.admin.web.youComApiKey.label": "Clé API You.com", - "settings.admin.web.youtubeLanguage.description": "", + "settings.admin.web.youtubeLanguage.description": "Langue pour YouTube.", "settings.admin.web.youtubeLanguage.label": "Langue de YouTube", - "settings.admin.web.youtubeProxyUrl.description": "", + "settings.admin.web.youtubeProxyUrl.description": "URL du proxy pour YouTube.", "settings.admin.web.youtubeProxyUrl.label": "URL du proxy YouTube", "settings.personal.about.checkForUpdates.label": "Vérifier les mises à jour disponibles", - "settings.personal.about.sections.community.title": "", + "settings.personal.about.sections.community.title": "Communauté", "settings.personal.about.sections.ollamaVersion.title": "Version d'Ollama", "settings.personal.about.sections.version.title": "Version:", - "settings.personal.about.seeWhatSNew.description": "", + "settings.personal.about.seeWhatSNew.description": "Voir les nouvelles fonctionnalités.", "settings.personal.about.seeWhatSNew.label": "Découvrez les nouvelles fonctionnalités", "settings.personal.about.title": "À propos", - "settings.personal.account.apiKey.description": "", + "settings.personal.account.apiKey.description": "Clé API pour l'utilisateur.", "settings.personal.account.apiKey.label": "Clé API", - "settings.personal.account.bio.description": "", + "settings.personal.account.bio.description": "Biographie de l'utilisateur.", "settings.personal.account.bio.label": "Bio", - "settings.personal.account.birthDate.description": "", + "settings.personal.account.birthDate.description": "Date de naissance de l'utilisateur.", "settings.personal.account.birthDate.label": "Date de naissance", - "settings.personal.account.changePassword.description": "", + "settings.personal.account.changePassword.description": "Changer le mot de passe.", "settings.personal.account.changePassword.label": "Changer le mot de passe", "settings.personal.account.confirmPassword.label": "Confirmer le mot de passe", "settings.personal.account.createNewSecretKey.label": "Créer une nouvelle clé secrète", "settings.personal.account.currentPassword.label": "Mot de passe actuel", - "settings.personal.account.gender.description": "", + "settings.personal.account.gender.description": "Genre de l'utilisateur.", "settings.personal.account.gender.label": "Genre", - "settings.personal.account.jwtToken.description": "", + "settings.personal.account.jwtToken.description": "Jeton JWT pour l'utilisateur.", "settings.personal.account.jwtToken.label": "Jeton JWT", - "settings.personal.account.name.description": "", + "settings.personal.account.name.description": "Nom de l'utilisateur.", "settings.personal.account.name.label": "Nom d'utilisateur", "settings.personal.account.newPassword.label": "Nouveau mot de passe", - "settings.personal.account.secrets.description": "", - "settings.personal.account.secrets.label": "", + "settings.personal.account.secrets.description": "Secrets de l'utilisateur.", + "settings.personal.account.secrets.label": "Secrets", "settings.personal.account.sections.apiKeys.title": "Clés API", "settings.personal.account.sections.password.title": "Mot de passe", "settings.personal.account.sections.profile.title": "Profil", @@ -2784,30 +2784,30 @@ "settings.personal.archivedChats.exportArchivedChats.label": "Exporter", "settings.personal.archivedChats.title": "Conversations archivées", "settings.personal.archivedChats.unarchiveAll.label": "Désarchiver tout", - "settings.personal.audio.allowNonLocalVoices.description": "", + "settings.personal.audio.allowNonLocalVoices.description": "Autoriser les voix non locales.", "settings.personal.audio.allowNonLocalVoices.label": "Autoriser les voix non locales", - "settings.personal.audio.autoPlaybackResponse.description": "", + "settings.personal.audio.autoPlaybackResponse.description": "Lire automatiquement les réponses.", "settings.personal.audio.autoPlaybackResponse.label": "Lire automatiquement la réponse", - "settings.personal.audio.browserVoice.description": "", + "settings.personal.audio.browserVoice.description": "Voix du navigateur pour la synthèse vocale.", "settings.personal.audio.browserVoice.label": "Choisir la voix", - "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "", + "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "Envoyer automatiquement après la transcription vocale.", "settings.personal.audio.instantAutoSendAfterVoiceTranscription.label": "Envoi automatique après la transcription", - "settings.personal.audio.kokoroJsDtype.description": "", + "settings.personal.audio.kokoroJsDtype.description": "Type de données pour Kokoro.js.", "settings.personal.audio.kokoroJsDtype.label": "Kokoro.js Dtype", - "settings.personal.audio.kokoroVoice.description": "", + "settings.personal.audio.kokoroVoice.description": "Voix pour Kokoro.js.", "settings.personal.audio.kokoroVoice.label": "Choisir la voix", - "settings.personal.audio.language.description": "", + "settings.personal.audio.language.description": "Langue pour la synthèse vocale.", "settings.personal.audio.language.label": "Langue", "settings.personal.audio.sections.sttSettings.title": "Réglages de Speech-to-Text", "settings.personal.audio.sections.ttsSettings.title": "Réglages de Text-to-Speech", "settings.personal.audio.sections.voice.title": "Voix", - "settings.personal.audio.serviceVoice.description": "", + "settings.personal.audio.serviceVoice.description": "Voix du service de synthèse vocale.", "settings.personal.audio.serviceVoice.label": "Choisir la voix", - "settings.personal.audio.speechPlaybackSpeed.description": "", + "settings.personal.audio.speechPlaybackSpeed.description": "Vitesse de lecture de la parole.", "settings.personal.audio.speechPlaybackSpeed.label": "Vitesse de lecture de la parole", - "settings.personal.audio.speechToTextEngine.description": "", + "settings.personal.audio.speechToTextEngine.description": "Moteur pour la reconnaissance vocale.", "settings.personal.audio.speechToTextEngine.label": "Moteur de reconnaissance vocale", - "settings.personal.audio.textToSpeechEngine.description": "", + "settings.personal.audio.textToSpeechEngine.description": "Moteur pour la synthèse vocale.", "settings.personal.audio.textToSpeechEngine.label": "Moteur de Text-to-Speech", "settings.personal.audio.title": "Audio", "settings.personal.connections.addConnection.description": "Connectez-vous à vos points d'extension API compatibles OpenAI.", @@ -2815,52 +2815,52 @@ "settings.personal.connections.sections.directConnections.title": "Direct connexions", "settings.personal.connections.title": "Connexions", "settings.personal.dataControls.archiveAll.label": "Tout archiver", - "settings.personal.dataControls.archiveAllChats.description": "", + "settings.personal.dataControls.archiveAllChats.description": "Archiver toutes les conversations.", "settings.personal.dataControls.archiveAllChats.label": "Archiver toutes les conversations", - "settings.personal.dataControls.deleteAllChats.description": "", + "settings.personal.dataControls.deleteAllChats.description": "Supprimer toutes les conversations.", "settings.personal.dataControls.deleteAllChats.label": "Supprimer toutes les conversations", - "settings.personal.dataControls.exportChats.description": "", + "settings.personal.dataControls.exportChats.description": "Exporter les conversations.", "settings.personal.dataControls.exportChats.label": "Exporter les conversations", - "settings.personal.dataControls.importChats.description": "", + "settings.personal.dataControls.importChats.description": "Importer les conversations.", "settings.personal.dataControls.importChats.label": "Importer les conversations", - "settings.personal.dataControls.manageFiles.description": "", + "settings.personal.dataControls.manageFiles.description": "Gérer les fichiers.", "settings.personal.dataControls.manageFiles.label": "Gérer les fichiers", "settings.personal.dataControls.sections.chats.title": "Conversations", "settings.personal.dataControls.sections.files.title": "Fichiers", - "settings.personal.dataControls.sharedChats.description": "", + "settings.personal.dataControls.sharedChats.description": "Gérer les conversations partagées.", "settings.personal.dataControls.sharedChats.label": "Conversations partagées", "settings.personal.dataControls.title": "Contrôles des données", - "settings.personal.general.language.description": "", + "settings.personal.general.language.description": "Langue de l'interface.", "settings.personal.general.language.label": "Langue", - "settings.personal.general.modelParameters.description": "", - "settings.personal.general.modelParameters.label": "", - "settings.personal.general.parameters.contextCompactionThreshold.description": "", - "settings.personal.general.parameters.contextCompactionThreshold.label": "", - "settings.personal.general.parameters.format.label": "", - "settings.personal.general.parameters.frequencyPenalty.label": "", - "settings.personal.general.parameters.functionCalling.description": "", + "settings.personal.general.modelParameters.description": "Paramètres du modèle.", + "settings.personal.general.modelParameters.label": "Paramètres du modèle", + "settings.personal.general.parameters.contextCompactionThreshold.description": "Seuil de compaction du contexte.", + "settings.personal.general.parameters.contextCompactionThreshold.label": "Seuil de compaction", + "settings.personal.general.parameters.format.label": "Format", + "settings.personal.general.parameters.frequencyPenalty.label": "Pénalité de fréquence", + "settings.personal.general.parameters.functionCalling.description": "Activer l'appel de fonction.", "settings.personal.general.parameters.functionCalling.label": "Appel de fonction", - "settings.personal.general.parameters.keepAlive.label": "", - "settings.personal.general.parameters.logitBias.label": "", - "settings.personal.general.parameters.maxTokens.label": "", - "settings.personal.general.parameters.minP.label": "", - "settings.personal.general.parameters.mirostat.label": "", - "settings.personal.general.parameters.mirostatEta.label": "", - "settings.personal.general.parameters.mirostatTau.label": "", - "settings.personal.general.parameters.numBatch.label": "", - "settings.personal.general.parameters.numCtx.label": "", - "settings.personal.general.parameters.numGpu.label": "", - "settings.personal.general.parameters.numKeep.label": "", - "settings.personal.general.parameters.numThread.label": "", + "settings.personal.general.parameters.keepAlive.label": "Maintenir actif", + "settings.personal.general.parameters.logitBias.label": "Biais logit", + "settings.personal.general.parameters.maxTokens.label": "Tokens max", + "settings.personal.general.parameters.minP.label": "Min P", + "settings.personal.general.parameters.mirostat.label": "Mirostat", + "settings.personal.general.parameters.mirostatEta.label": "Mirostat Eta", + "settings.personal.general.parameters.mirostatTau.label": "Mirostat Tau", + "settings.personal.general.parameters.numBatch.label": "Taille du lot", + "settings.personal.general.parameters.numCtx.label": "Contexte num", + "settings.personal.general.parameters.numGpu.label": "GPU num", + "settings.personal.general.parameters.numKeep.label": "Conserver num", + "settings.personal.general.parameters.numThread.label": "Threads num", "settings.personal.general.parameters.ollama.description": "Cette option active ou désactive l'utilisation de la fonctionnalité de raisonnement dans Ollama, qui permet au modèle de réfléchir avant de générer une réponse. Lorsqu'elle est activée, le modèle peut prendre un moment pour traiter le contexte de la conversation et générer une réponse plus réfléchie.", "settings.personal.general.parameters.ollama.label": "Ollama", - "settings.personal.general.parameters.presencePenalty.label": "", + "settings.personal.general.parameters.presencePenalty.label": "Pénalité de présence", "settings.personal.general.parameters.reasoningEffort.description": "Contraint l'effort de raisonnement pour les modèles de raisonnement. Applicable uniquement aux modèles de raisonnement de certains fournisseurs qui prennent en charge l'effort de raisonnement.", "settings.personal.general.parameters.reasoningEffort.label": "Effort de raisonnement", "settings.personal.general.parameters.reasoningTags.description": "Activer, désactiver ou personnaliser les balises de raisonnement utilisées par le modèle. « Activé » utilise les balises par défaut, « Désactivé » désactive les balises de raisonnement, et « Sur mesure » permet de spécifier vos propres balises de début et de fin.", "settings.personal.general.parameters.reasoningTags.label": "Balises de raisonnement", - "settings.personal.general.parameters.repeatLastN.label": "", - "settings.personal.general.parameters.repeatPenalty.label": "", + "settings.personal.general.parameters.repeatLastN.label": "Répéter dernier N", + "settings.personal.general.parameters.repeatPenalty.label": "Pénalité de répétition", "settings.personal.general.parameters.seed.description": "Définit la graine du générateur aléatoire pour produire un résultat déterministe. Une même graine produira toujours la même sortie pour une invite donnée.", "settings.personal.general.parameters.seed.label": "Seed", "settings.personal.general.parameters.stopSequence.description": "Définit les séquences d'arrêt à utiliser. Lorsque ce motif est rencontré, le LLM cessera de générer du texte et retournera. Plusieurs motifs d'arrêt peuvent être définis en spécifiant plusieurs réglages d'arrêt distincts dans un fichier modèle.", @@ -2871,110 +2871,110 @@ "settings.personal.general.parameters.streamDeltaChunkSize.label": "Taille des blocs delta du streaming", "settings.personal.general.parameters.temperature.description": "La température du modèle. Une température plus élevée rend les réponses plus créatives.", "settings.personal.general.parameters.temperature.label": "Température", - "settings.personal.general.parameters.tfsZ.label": "", - "settings.personal.general.parameters.think.label": "", - "settings.personal.general.parameters.topK.label": "", - "settings.personal.general.parameters.topP.label": "", - "settings.personal.general.parameters.useMlock.label": "", - "settings.personal.general.parameters.useMmap.label": "", + "settings.personal.general.parameters.tfsZ.label": "TFS Z", + "settings.personal.general.parameters.think.label": "Réfléchir", + "settings.personal.general.parameters.topK.label": "Top K", + "settings.personal.general.parameters.topP.label": "Top P", + "settings.personal.general.parameters.useMlock.label": "Utiliser mlock", + "settings.personal.general.parameters.useMmap.label": "Utiliser mmap", "settings.personal.general.sections.advancedParameters.title": "Réglages avancés", - "settings.personal.general.sections.systemPrompt.description": "", + "settings.personal.general.sections.systemPrompt.description": "Paramètres pour l'invite système.", "settings.personal.general.sections.systemPrompt.title": "Prompt système", "settings.personal.general.sections.webuiSettings.title": "Réglages de WebUI", - "settings.personal.general.theme.description": "", + "settings.personal.general.theme.description": "Thème de l'interface.", "settings.personal.general.theme.label": "Thème", "settings.personal.general.title": "Général", - "settings.personal.interface.accessibilityMode.description": "", - "settings.personal.interface.accessibilityMode.label": "", - "settings.personal.interface.allowUserLocation.description": "", + "settings.personal.interface.accessibilityMode.description": "Activer le mode accessibilité.", + "settings.personal.interface.accessibilityMode.label": "Mode accessibilité", + "settings.personal.interface.allowUserLocation.description": "Autoriser l'accès à la localisation.", "settings.personal.interface.allowUserLocation.label": "Autoriser l'emplacement de l'utilisateur", - "settings.personal.interface.allowVoiceInterruptionInCall.description": "", + "settings.personal.interface.allowVoiceInterruptionInCall.description": "Autoriser l'interruption vocale.", "settings.personal.interface.allowVoiceInterruptionInCall.label": "Autoriser l'interruption vocale pendant un appel", - "settings.personal.interface.alwaysCollapseCodeBlocks.description": "", + "settings.personal.interface.alwaysCollapseCodeBlocks.description": "Toujours réduire les blocs de code.", "settings.personal.interface.alwaysCollapseCodeBlocks.label": "Toujours réduire les blocs de code", - "settings.personal.interface.alwaysExpandDetails.description": "", + "settings.personal.interface.alwaysExpandDetails.description": "Toujours développer les détails.", "settings.personal.interface.alwaysExpandDetails.label": "Toujours afficher les détails", "settings.personal.interface.android.label": "Android", - "settings.personal.interface.autoCopyResponseToClipboard.description": "", + "settings.personal.interface.autoCopyResponseToClipboard.description": "Copier automatiquement les réponses dans le presse-papiers.", "settings.personal.interface.autoCopyResponseToClipboard.label": "Copie automatique de la réponse vers le presse-papiers", - "settings.personal.interface.chatBackgroundImage.description": "", + "settings.personal.interface.chatBackgroundImage.description": "Image d'arrière-plan de la conversation.", "settings.personal.interface.chatBackgroundImage.label": "Image d'arrière-plan de la fenêtre de la conversation", - "settings.personal.interface.chatBubbleUi.description": "", + "settings.personal.interface.chatBubbleUi.description": "Utiliser l'interface à bulles.", "settings.personal.interface.chatBubbleUi.label": "Bulles de conversation", - "settings.personal.interface.chatDirection.description": "", + "settings.personal.interface.chatDirection.description": "Direction de la conversation.", "settings.personal.interface.chatDirection.label": "Direction de la conversation", - "settings.personal.interface.chatHoverPreviews.description": "", - "settings.personal.interface.chatHoverPreviews.label": "", - "settings.personal.interface.chatTagsAutoGeneration.description": "", + "settings.personal.interface.chatHoverPreviews.description": "Afficher les aperçus au survol.", + "settings.personal.interface.chatHoverPreviews.label": "Aperçus au survol", + "settings.personal.interface.chatTagsAutoGeneration.description": "Générer automatiquement les tags.", "settings.personal.interface.chatTagsAutoGeneration.label": "Génération automatique des tags", - "settings.personal.interface.compressImagesInChannels.description": "", + "settings.personal.interface.compressImagesInChannels.description": "Compresser les images dans les canaux.", "settings.personal.interface.compressImagesInChannels.label": "Compresser les images dans les canaux", - "settings.personal.interface.copyFormattedText.description": "", + "settings.personal.interface.copyFormattedText.description": "Copier le texte formaté.", "settings.personal.interface.copyFormattedText.label": "Copier le texte en gardant le format", "settings.personal.interface.decreaseUiScale.label": "Réduire la taille de l'interface", - "settings.personal.interface.defaultUploadMode.description": "", - "settings.personal.interface.defaultUploadMode.label": "", - "settings.personal.interface.detectArtifactsAutomatically.description": "", + "settings.personal.interface.defaultUploadMode.description": "Mode de téléversement par défaut.", + "settings.personal.interface.defaultUploadMode.label": "Mode par défaut", + "settings.personal.interface.detectArtifactsAutomatically.description": "Détecter automatiquement les artefacts.", "settings.personal.interface.detectArtifactsAutomatically.label": "Détection automatique des Artifacts", - "settings.personal.interface.displayChatTitleInTab.description": "", + "settings.personal.interface.displayChatTitleInTab.description": "Afficher le titre de la conversation dans l'onglet.", "settings.personal.interface.displayChatTitleInTab.label": "Afficher le nom de la conversation dans l'onglet", - "settings.personal.interface.displayEmojiInCall.description": "", + "settings.personal.interface.displayEmojiInCall.description": "Afficher les emojis dans l'appel.", "settings.personal.interface.displayEmojiInCall.label": "Afficher les emojis pendant l'appel", - "settings.personal.interface.displayMultiModelResponsesInTabs.description": "", + "settings.personal.interface.displayMultiModelResponsesInTabs.description": "Afficher les réponses multi-modèles dans des onglets.", "settings.personal.interface.displayMultiModelResponsesInTabs.label": "Afficher les réponses multi-modèles dans des onglets", - "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "", + "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "Afficher le nom d'utilisateur au lieu de 'Vous'.", "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "Afficher le nom d'utilisateur à la place de \"Vous\" dans la conversation", - "settings.personal.interface.enableMessageQueue.description": "", + "settings.personal.interface.enableMessageQueue.description": "Activer la file d'attente des messages.", "settings.personal.interface.enableMessageQueue.label": "Activer la mise en file d'attente de message", - "settings.personal.interface.enterKeyBehavior.description": "", + "settings.personal.interface.enterKeyBehavior.description": "Comportement de la touche Entrée.", "settings.personal.interface.enterKeyBehavior.label": "Comportement de la touche Entrée", - "settings.personal.interface.fadeEffectForStreamingText.description": "", + "settings.personal.interface.fadeEffectForStreamingText.description": "Activer l'effet de fondu pour le texte en streaming.", "settings.personal.interface.fadeEffectForStreamingText.label": "Effet de fondu pour le texte en streaming", "settings.personal.interface.floatingQuickActions.label": "Actions rapides flottantes", - "settings.personal.interface.followUpAutoGeneration.description": "", + "settings.personal.interface.followUpAutoGeneration.description": "Générer automatiquement les questions de suivi.", "settings.personal.interface.followUpAutoGeneration.label": "Génération automatique de questions de suivi", - "settings.personal.interface.fontFamily.description": "", - "settings.personal.interface.fontFamily.label": "", + "settings.personal.interface.fontFamily.description": "Famille de polices pour l'interface.", + "settings.personal.interface.fontFamily.label": "Famille de polices", "settings.personal.interface.hapticFeedback.label": "Retour haptique", - "settings.personal.interface.iframeSandboxAllowDownloads.description": "", - "settings.personal.interface.iframeSandboxAllowDownloads.label": "", + "settings.personal.interface.iframeSandboxAllowDownloads.description": "Autoriser les téléchargements dans les iframes.", + "settings.personal.interface.iframeSandboxAllowDownloads.label": "Téléchargements dans iframes", "settings.personal.interface.iframeSandboxAllowForms.description": "Autoriser les formulaires dans les iframes sandbox des artéfacts.", "settings.personal.interface.iframeSandboxAllowForms.label": "Autoriser les formulaires dans l'iframe sandbox", "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "Autoriser les artéfacts à accéder aux API du navigateur de même origine dans l'iframe sandbox.", "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "Autoriser même origine dans l'iframe sandbox", - "settings.personal.interface.iframeSandboxAllowScripts.description": "", - "settings.personal.interface.iframeSandboxAllowScripts.label": "", + "settings.personal.interface.iframeSandboxAllowScripts.description": "Autoriser les scripts dans les iframes.", + "settings.personal.interface.iframeSandboxAllowScripts.label": "Scripts dans iframes", "settings.personal.interface.imageCompression.label": "Compression d'image", "settings.personal.interface.increaseUiScale.label": "Augmenter la taille de l'interface", - "settings.personal.interface.insertFollowUpPromptToInput.description": "", + "settings.personal.interface.insertFollowUpPromptToInput.description": "Insérer les questions de suivi dans la zone de saisie.", "settings.personal.interface.insertFollowUpPromptToInput.label": "Insérer la question de suivi dans la zone de saisie", - "settings.personal.interface.insertPromptAsRichText.description": "", + "settings.personal.interface.insertPromptAsRichText.description": "Insérer les invites en texte riche.", "settings.personal.interface.insertPromptAsRichText.label": "Insérer le prompt en tant que texte enrichi", - "settings.personal.interface.insertSuggestionPromptToInput.description": "", + "settings.personal.interface.insertSuggestionPromptToInput.description": "Insérer les invites suggérées dans la zone de saisie.", "settings.personal.interface.insertSuggestionPromptToInput.label": "Insérer le prompt suggéré dans la zone de saisie", - "settings.personal.interface.keepFollowUpPromptsInChat.description": "", + "settings.personal.interface.keepFollowUpPromptsInChat.description": "Conserver les questions de suivi dans la conversation.", "settings.personal.interface.keepFollowUpPromptsInChat.label": "Conserver les questions de suivi précédentes dans la conversation", - "settings.personal.interface.landingPageMode.description": "", + "settings.personal.interface.landingPageMode.description": "Mode de la page d'accueil.", "settings.personal.interface.landingPageMode.label": "Mode de la page d'accueil", "settings.personal.interface.openModalToManageFloatingQuickActions.label": "Ouvrir la fenêtre de gestion des actions rapides flottantes", "settings.personal.interface.openModalToManageImageCompression.label": "Ouvrir la fenêtre de gestion de la compression d'images", - "settings.personal.interface.pasteLargeTextAsFile.description": "", + "settings.personal.interface.pasteLargeTextAsFile.description": "Coller le texte long comme fichier.", "settings.personal.interface.pasteLargeTextAsFile.label": "Coller un texte volumineux comme fichier", - "settings.personal.interface.promptAutocompletion.description": "", + "settings.personal.interface.promptAutocompletion.description": "Activer l'autocomplétion des invites.", "settings.personal.interface.promptAutocompletion.label": "Autocomplétion de prompt", - "settings.personal.interface.regenerateMenu.description": "", + "settings.personal.interface.regenerateMenu.description": "Afficher le menu de régénération.", "settings.personal.interface.regenerateMenu.label": "Menu Regénérer", - "settings.personal.interface.renderMarkdownInAssistantMessages.description": "", + "settings.personal.interface.renderMarkdownInAssistantMessages.description": "Afficher le Markdown dans les messages de l'assistant.", "settings.personal.interface.renderMarkdownInAssistantMessages.label": "Afficher le Markdown dans les messages de l'assistant", - "settings.personal.interface.renderMarkdownInPreviews.description": "", + "settings.personal.interface.renderMarkdownInPreviews.description": "Afficher le Markdown dans les aperçus.", "settings.personal.interface.renderMarkdownInPreviews.label": "Afficher le Markdown dans les aperçus", - "settings.personal.interface.renderMarkdownInUserMessages.description": "", + "settings.personal.interface.renderMarkdownInUserMessages.description": "Afficher le Markdown dans les messages utilisateur.", "settings.personal.interface.renderMarkdownInUserMessages.label": "Afficher le Markdown dans les messages de l'utilisateur", - "settings.personal.interface.responseAutoScroll.description": "", - "settings.personal.interface.responseAutoScroll.label": "", - "settings.personal.interface.richTextInputForChat.description": "", + "settings.personal.interface.responseAutoScroll.description": "Défilement automatique des réponses.", + "settings.personal.interface.responseAutoScroll.label": "Défilement automatique", + "settings.personal.interface.richTextInputForChat.description": "Utiliser la saisie de texte riche.", "settings.personal.interface.richTextInputForChat.label": "Saisie de texte enrichi pour la conversation", - "settings.personal.interface.scrollOnBranchChange.description": "", + "settings.personal.interface.scrollOnBranchChange.description": "Faire défiler lors du changement de branche.", "settings.personal.interface.scrollOnBranchChange.label": "Défilement lors du changement de branche", "settings.personal.interface.sections.artifacts.title": "Artéfacts", "settings.personal.interface.sections.chat.title": "Conversation", @@ -2982,57 +2982,57 @@ "settings.personal.interface.sections.input.title": "Entrée", "settings.personal.interface.sections.ui.title": "UI", "settings.personal.interface.sections.voice.title": "Voix", - "settings.personal.interface.showFilesOnTerminalSelect.description": "", - "settings.personal.interface.showFilesOnTerminalSelect.label": "", - "settings.personal.interface.showFormattingToolbar.description": "", + "settings.personal.interface.showFilesOnTerminalSelect.description": "Afficher les fichiers lors de la sélection du terminal.", + "settings.personal.interface.showFilesOnTerminalSelect.label": "Afficher les fichiers", + "settings.personal.interface.showFormattingToolbar.description": "Afficher la barre d'outils de formatage.", "settings.personal.interface.showFormattingToolbar.label": "Afficher la barre d'outils de formatage", - "settings.personal.interface.stylizedPdfExport.description": "", + "settings.personal.interface.stylizedPdfExport.description": "Exporter les PDF avec style.", "settings.personal.interface.stylizedPdfExport.label": "Export de PDF stylisés", - "settings.personal.interface.temporaryChatByDefault.description": "", + "settings.personal.interface.temporaryChatByDefault.description": "Utiliser des conversations temporaires par défaut.", "settings.personal.interface.temporaryChatByDefault.label": "Conversation temporaire par défaut", - "settings.personal.interface.terminalFileDisplay.description": "", - "settings.personal.interface.terminalFileDisplay.label": "", - "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "", - "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "", + "settings.personal.interface.terminalFileDisplay.description": "Affichage des fichiers du terminal.", + "settings.personal.interface.terminalFileDisplay.label": "Affichage terminal", + "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "Autoriser la même origine pour l'aperçu du terminal.", + "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "Même origine pour l'aperçu", "settings.personal.interface.title": "Interface utilisateur", - "settings.personal.interface.titleAutoGeneration.description": "", + "settings.personal.interface.titleAutoGeneration.description": "Générer automatiquement les titres.", "settings.personal.interface.titleAutoGeneration.label": "Génération automatique des titres", - "settings.personal.interface.toastNotificationsForNewUpdates.description": "", + "settings.personal.interface.toastNotificationsForNewUpdates.description": "Afficher les notifications pour les nouvelles mises à jour.", "settings.personal.interface.toastNotificationsForNewUpdates.label": "Notifications toast pour les nouvelles mises à jour", "settings.personal.interface.uiScale.label": "Zoom de l'interface utilisateur", - "settings.personal.interface.webSearchInChat.description": "", + "settings.personal.interface.webSearchInChat.description": "Activer la recherche Web dans la conversation.", "settings.personal.interface.webSearchInChat.label": "Recherche web depuis la conversation", - "settings.personal.interface.widescreenMode.description": "", + "settings.personal.interface.widescreenMode.description": "Mode grand écran.", "settings.personal.interface.widescreenMode.label": "Mode grand écran", - "settings.personal.notifications.addNotificationTarget.label": "", - "settings.personal.notifications.browserNotifications.label": "", + "settings.personal.notifications.addNotificationTarget.label": "Ajouter une cible de notification", + "settings.personal.notifications.browserNotifications.label": "Notifications du navigateur", "settings.personal.notifications.notificationSound.label": "Son de notification", - "settings.personal.notifications.notificationTargets.label": "", + "settings.personal.notifications.notificationTargets.label": "Cibles de notification", "settings.personal.notifications.title": "Notifications", "settings.personal.personalization.clearMemory.label": "Effacer la mémoire", "settings.personal.personalization.manageMemories.label": "Gérer", "settings.personal.personalization.memory.description": "Vous pouvez personnaliser vos interactions avec les LLM en ajoutant des mémoires à l'aide du bouton « Gérer » ci-dessous, ce qui les rendra plus utiles et mieux adaptées à vos besoins.", "settings.personal.personalization.memory.label": "Mémoire", "settings.personal.personalization.noResultsFound.description": "Les souvenirs accessibles par les LLMs seront affichées ici.", - "settings.personal.personalization.savedMemories.label": "", + "settings.personal.personalization.savedMemories.label": "Mémoires enregistrées", "settings.personal.personalization.sections.memory.title": "Mémoire", "settings.personal.personalization.title": "Personnalisation", - "settings.personal.shortcuts.acceptAutocomplete.label": "", + "settings.personal.shortcuts.acceptAutocomplete.label": "Accepter l'autocomplétion", "settings.personal.shortcuts.addPrompt.label": "Ajouter un prompt personnalisé", - "settings.personal.shortcuts.allowToolCall.label": "", + "settings.personal.shortcuts.allowToolCall.label": "Autoriser l'appel d'outil", "settings.personal.shortcuts.attachFile.label": "Joindre un fichier depuis les connaissances", "settings.personal.shortcuts.closeModal.label": "Fermer la fenêtre", "settings.personal.shortcuts.command.label": "Commande", "settings.personal.shortcuts.copyLastCodeBlock.label": "Copier le dernier bloc de code", "settings.personal.shortcuts.copyLastResponse.label": "Copier la dernière réponse", "settings.personal.shortcuts.deleteChat.label": "Supprimer la Conversation", - "settings.personal.shortcuts.denyToolCall.label": "", - "settings.personal.shortcuts.enableKeyboardShortcuts.description": "", - "settings.personal.shortcuts.enableKeyboardShortcuts.label": "", + "settings.personal.shortcuts.denyToolCall.label": "Refuser l'appel d'outil", + "settings.personal.shortcuts.enableKeyboardShortcuts.description": "Activer les raccourcis clavier.", + "settings.personal.shortcuts.enableKeyboardShortcuts.label": "Raccourcis clavier", "settings.personal.shortcuts.focusInput.label": "Activer la zone de saisie", "settings.personal.shortcuts.generateMessagePair.label": "Générer une paire de messages", - "settings.personal.shortcuts.navigateChatDown.label": "", - "settings.personal.shortcuts.navigateChatUp.label": "", + "settings.personal.shortcuts.navigateChatDown.label": "Naviguer vers le bas", + "settings.personal.shortcuts.navigateChatUp.label": "Naviguer vers le haut", "settings.personal.shortcuts.navigatePromptHistoryUp.label": "Modifier le dernier message", "settings.personal.shortcuts.newChat.label": "Nouvelle conversation", "settings.personal.shortcuts.newTemporaryChat.label": "Nouvelle conversation temporaire", @@ -3040,58 +3040,58 @@ "settings.personal.shortcuts.openSettings.label": "Ouvrir les réglages", "settings.personal.shortcuts.preventFileCreation.label": "Empêcher la création de fichier", "settings.personal.shortcuts.regenerateResponse.label": "Regénérer la réponse", - "settings.personal.shortcuts.resetDefaults.label": "", + "settings.personal.shortcuts.resetDefaults.label": "Réinitialiser les valeurs par défaut", "settings.personal.shortcuts.search.label": "Recherche", "settings.personal.shortcuts.showShortcuts.label": "Afficher les raccourcis clavier", "settings.personal.shortcuts.stopGenerating.label": "Arrêter la génération", "settings.personal.shortcuts.talkToModel.label": "Parler au modèle", - "settings.personal.shortcuts.title": "", - "settings.personal.shortcuts.toggleControls.label": "", + "settings.personal.shortcuts.title": "Raccourcis", + "settings.personal.shortcuts.toggleControls.label": "Basculer les contrôles", "settings.personal.shortcuts.toggleDictation.label": "Activer/Désactiver la dictée", - "settings.personal.shortcuts.toggleMute.label": "", + "settings.personal.shortcuts.toggleMute.label": "Basculer le mode muet", "settings.personal.shortcuts.toggleSidebar.label": "Afficher/Masquer la barre latérale", "settings.personal.tools.addConnection.description": "Connectez-vous à vos serveurs d'outils externes.", "settings.personal.tools.addConnection.label": "Ajouter une connexion", "settings.personal.tools.openApi.label": "OpenAPI", - "settings.personal.tools.sections.externalToolServers.title": "", + "settings.personal.tools.sections.externalToolServers.title": "Serveurs d'outils externes", "settings.personal.tools.terminals.addConnection.description": "Connectez-vous à des instances Open Terminal pour parcourir les fichiers et les utiliser comme outils permanents. Une seule peut être active à la fois.", "settings.personal.tools.terminals.addConnection.label": "Ajouter une connexion", "settings.personal.tools.terminals.sections.openTerminal.title": "Ouvrir le terminal", "settings.personal.tools.title": "Intégrations", "settings.personal.usage.sections.activity.title": "Activité", - "settings.personal.usage.sections.activityInsights.title": "", - "settings.personal.usage.sections.mostUsedTools.title": "", + "settings.personal.usage.sections.activityInsights.title": "Analyse de l'activité", + "settings.personal.usage.sections.mostUsedTools.title": "Outils les plus utilisés", "settings.personal.usage.sections.overview.title": "Aperçu", - "settings.personal.usage.sections.topModels.title": "", + "settings.personal.usage.sections.topModels.title": "Meilleurs modèles", "settings.personal.usage.title": "Consommation de tokens", "Share": "Partager", "Share Chat": "Partage de conversation", "Share link copied to clipboard.": "Lien de partage copié dans le presse-papiers.", "Share to Open WebUI Community": "Partager avec la communauté OpenWebUI", "Share your background and interests": "Partagez votre parcours et vos intérêts", - "Shared": "", + "Shared": "Partagé", "Shared Chats": "Conversations partagées", "Shared with you": "Partagé avec vous", "Sharing Permissions": "Autorisation de partage", - "Shell": "", - "Shorten older messages so this chat can keep going.": "", + "Shell": "Terminal", + "Shorten older messages so this chat can keep going.": "Raccourcir les anciens messages pour que cette conversation puisse continuer.", "Show": "Afficher", "Show \"What's New\" Modal on Login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion", "Show All": "Afficher tout", "Show all ({{COUNT}} characters)": "Tout afficher ({{COUNT}} caractères)", "Show Files": "Afficher les fichiers", - "Show Hidden Files": "", + "Show Hidden Files": "Afficher les fichiers cachés", "Show image preview": "Afficher l'aperçu de l'image", - "Show me a code snippet": "", - "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "", + "Show me a code snippet": "Montrez-moi un extrait de code", + "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Montrez-moi un extrait de code pour un en-tête collant de site web en CSS et JavaScript.", "Show Model": "Afficher le modèle", - "Show more": "", - "Show or switch the current model.": "", + "Show more": "Afficher plus", + "Show or switch the current model.": "Afficher ou changer le modèle actuel.", "Show Shortcuts": "Afficher les raccourcis clavier", - "Show the floating quick-action toolbar in chat.": "", + "Show the floating quick-action toolbar in chat.": "Afficher la barre d'outils d'actions rapides flottante dans la conversation.", "Show your support!": "Montrez votre soutien !", "Showcased creativity": "Créativité mise en avant", - "Sidebar": "", + "Sidebar": "Barre latérale", "Sign in": "Connexion", "Sign in to {{WEBUI_NAME}}": "Connectez-vous à {{WEBUI_NAME}}", "Sign in to {{WEBUI_NAME}} with LDAP": "Connectez-vous à {{WEBUI_NAME}} avec LDAP", @@ -3099,10 +3099,10 @@ "Sign up": "Inscrivez-vous", "Sign up to {{WEBUI_NAME}}": "Inscrivez-vous à {{WEBUI_NAME}}", "Signing in to {{WEBUI_NAME}}": "Connexion à {{WEBUI_NAME}}", - "simultaneous sub-agents": "", + "simultaneous sub-agents": "sous-agents simultanés", "Single": "Unique", "Sink List": "Augmenter l'indentation", - "Size": "", + "Size": "Taille", "sk-1234": "sk-1234", "Skill created successfully": "Skill créé avec succès", "Skill deleted successfully": "Skill supprimé avec succès", @@ -3110,16 +3110,16 @@ "Skill ID": "ID du skill", "Skill imported successfully": "Skill importé avec succès", "Skill Instructions": "Instructions du skill", - "Skill Menu": "", + "Skill Menu": "Menu des compétences", "Skill Name": "Nom du skill", "Skill updated successfully": "Skill mis à jour avec succès", "Skills": "Skills", "Skills Access": "Accès aux skills", "Skills Public Sharing": "Partage public des skills", "Skills Sharing": "Partage des skills", - "Skip to main content": "", - "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "", - "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "", + "Skip to main content": "Aller au contenu principal", + "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "Slim nécessite des services externes pour les embeddings, le stockage vectoriel et l'extraction de documents. Les fichiers texte de base peuvent être lus localement.", + "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "Slim nécessite des fournisseurs de parole externes. Les modèles de parole locaux et la conversion audio ne sont pas disponibles.", "Something went wrong :/": "Quelque chose s'est mal passé :/", "Sonar": "Sonar", "Sonar Deep Research": "Sonar Deep Research", @@ -3128,15 +3128,15 @@ "Sonar Reasoning Pro": "Sonar Reasoning Pro", "Sort": "Trier", "Source": "Source", - "Specific users or groups": "", + "Specific users or groups": "Utilisateurs ou groupes spécifiques", "Speech recognition error: {{error}}": "Erreur de reconnaissance vocale : {{error}}", "Speech-to-Text Language": "Langue de reconnaissance vocale", - "Sponsor on GitHub": "", - "Staan API Key": "", + "Sponsor on GitHub": "Parrainer sur GitHub", + "Staan API Key": "Clé API Staan", "Start a new conversation": "Démarrer une nouvelle conversation", "Start of the channel": "Début du canal", "Start Tag": "Balise de départ", - "Start the chat to use this terminal.": "", + "Start the chat to use this terminal.": "Démarrez la conversation pour utiliser ce terminal.", "Starting in {{count}} minutes_one": "Démarrage dans {{count}} minute", "Starting in {{count}} minutes_many": "Démarrage dans {{count}} minutes", "Starting in {{count}} minutes_other": "Démarrage dans {{count}} minutes", @@ -3146,18 +3146,18 @@ "Status": "Statut", "Status cleared successfully": "Statut effacé avec succès", "Status updated successfully": "Statut mis à jour avec succès", - "Status: check what is running in this chat.": "", + "Status: check what is running in this chat.": "Statut : vérifier ce qui s'exécute dans cette conversation.", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stop", - "Stop before each tool call until you allow or deny it.": "", - "Stop camera": "", + "Stop before each tool call until you allow or deny it.": "S'arrêter avant chaque appel d'outil jusqu'à ce que vous l'autorisiez ou le refusiez.", + "Stop camera": "Arrêter la caméra", "Stop Download": "Arrêter le téléchargement", "Stop Generating": "Arrêter la génération", - "Storage": "", + "Storage": "Stockage", "Streamable HTTP": "Streamable HTTP", "Strikethrough": "Barré", - "Su_day_of_week": "", - "Submit answers": "", + "Su_day_of_week": "Dimanche", + "Submit answers": "Soumettre des réponses", "Submit question": "Envoyer la question", "Submit suggestion": "Soumettre la suggestion", "Subtitle": "Sous-titre", @@ -3165,17 +3165,17 @@ "Successfully imported {{userCount}} users.": "{{userCount}} utilisateurs importés avec succès.", "Suggest a change": "Proposer un changement", "Suggested": "Suggéré", - "Suggested prompts": "", - "Summarize this note.": "", + "Suggested prompts": "Invites suggérées", + "Summarize this note.": "Résumer cette note.", "Support": "Supporter", "Support this plugin:": "Supporter ce module", - "Swap": "", - "Switch camera": "", + "Swap": "Échanger", + "Switch camera": "Changer de caméra", "Switch to JSON editor": "Passer à l'éditeur JSON", "Switch to visual editor": "Passer à l'éditeur visuel", "Sync": "Synchroniser", - "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", - "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "Synchroniser un répertoire local avec cette base de connaissances. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. La structure des dossiers sera reproduite.", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "Synchronisation terminée : {{added}} ajoutés, {{modified}} modifiés, {{deleted}} supprimés, {{unmodified}} inchangés", "Sync Complete!": "Synchronisation terminée !", "Sync directory": "Synchroniser le répertoire", "Sync Failed": "Échec de la synchronisation", @@ -3184,38 +3184,38 @@ "Syncing...": "Synchronisation en cours...", "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "Synchronise uniquement les conversations mises à jour depuis la dernière synchronisation. Désactivez pour re-synchroniser toutes les conversations.", "System": "Système", - "System events only": "", + "System events only": "Uniquement les événements système", "System Instructions": "Instructions système", "System Prompt": "Prompt système", - "Table": "", + "Table": "Tableau", "Tag": "Tag", "Tags": "Tags", "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "Le sampling sans queue est utilisé pour réduire l'impact des tokens moins probables dans la sortie. Une valeur plus élevée (par exemple, 2.0) réduira davantage l'impact, tandis qu'une valeur de 1.0 désactive ce réglage.", "Talk to Model": "Parler au modèle", "Tap to interrupt": "Appuyez pour interrompre", - "Target ID": "", - "Target ID for notify": "", + "Target ID": "ID cible", + "Target ID for notify": "ID cible pour la notification", "Task List": "Liste pour les tâches", "Tasks": "Tâches", "tasks completed": "tâches terminées", - "Tell me a fun fact": "", - "Tell me a random fun fact about the Roman Empire": "", + "Tell me a fun fact": "Dites-moi un fait amusant", + "Tell me a random fun fact about the Roman Empire": "Dites-moi un fait amusant aléatoire sur l'Empire romain", "Tell us more:": "Dites-nous en plus à ce sujet : ", - "Temporary": "", + "Temporary": "Temporaire", "Temporary Chat": "conversation temporaire", - "Temporary: toggle temporary chat for this new chat.": "", + "Temporary: toggle temporary chat for this new chat.": "Temporaire : activer/désactiver la conversation temporaire pour cette nouvelle conversation.", "Terminal": "Terminal", - "Terminal Contexts": "", + "Terminal Contexts": "Contextes du terminal", "Terminal servers saved": "Serveurs de terminal sauvegardés", - "Test": "", - "Test must pass before a source is created.": "", - "Test notification sent.": "", - "Test Query": "", - "Test returned no results.": "", - "Test succeeded.": "", - "Test the source before creating it.": "", - "Test the source before saving it.": "", - "Th_day_of_week": "", + "Test": "Test", + "Test must pass before a source is created.": "Le test doit réussir avant de créer une source.", + "Test notification sent.": "Notification de test envoyée.", + "Test Query": "Requête de test", + "Test returned no results.": "Le test n'a retourné aucun résultat.", + "Test succeeded.": "Test réussi.", + "Test the source before creating it.": "Tester la source avant de la créer.", + "Test the source before saving it.": "Tester la source avant de l'enregistrer.", + "Th_day_of_week": "Jeudi", "Thanks for your feedback!": "Merci pour vos commentaires !", "The Application Account DN you bind with for search": "Le DN du compte de l'application avec lequel vous vous liez pour la recherche", "The base to search for users": "La base pour rechercher des utilisateurs", @@ -3226,12 +3226,12 @@ "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "La langue de l'audio d'entrée. Fournir la langue d'entrée au format ISO-639-1 (par ex. en) améliorera la précision et la latence. Laisser vide pour détecter automatiquement la langue.", "The LDAP attribute that maps to the mail that users use to sign in.": "L'attribut LDAP qui correspond à l'adresse e-mail que les utilisateurs utilisent pour se connecter.", "The LDAP attribute that maps to the username that users use to sign in.": "L'attribut LDAP qui correspond au nom d'utilisateur que les utilisateurs utilisent pour se connecter.", - "The notify tool always sends to an enabled target, regardless of automatic event settings.": "", + "The notify tool always sends to an enabled target, regardless of automatic event settings.": "L'outil de notification envoie toujours vers une cible activée, indépendamment des paramètres d'événements automatiques.", "The passwords you entered don't quite match. Please double-check and try again.": "Les mots de passe saisis ne correspondent pas exactement. Veuillez vérifier et réessayer.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Le score doit être une valeur comprise entre 0,0 (0%) et 1,0 (100%).", "There was an error syncing your stats. Please try again.": "Une erreur est survenue lors de la synchronisation de vos statistiques. Veuillez réessayer.", - "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "", - "thinking, output_config": "", + "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "Ces paramètres sont lus depuis les variables d'environnement et ne peuvent pas être modifiés ici tant que {{ENV_VAR}} est désactivé.", + "thinking, output_config": "réflexion, config_sortie", "Thinking...": "En train de réfléchir...", "This action cannot be undone. Do you wish to continue?": "Cette action ne peut pas être annulée. Souhaitez-vous continuer ?", "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Ce canal a été créé le {{createdAt}}. Voici le tout début du canal {{channelName}}.", @@ -3239,36 +3239,36 @@ "This folder is empty": "Ce dossier est vide", "This is a default user permission and will remain enabled.": "Ceci est une permission utilisateur par défaut et restera activée.", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.", - "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "", + "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "Cette base de connaissances récupère les données depuis une source connectée. Open WebUI peut l'interroger, mais ne peut pas téléverser, synchroniser, modifier, supprimer, réinitialiser ou réindexer ses données source.", "This model is not publicly available. Please select another model.": "Ce modèle n'est pas disponible au public. Veuillez sélectionner un autre modèle.", "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Cette option détermine la durée pendant laquelle le modèle restera chargé en mémoire après la demande (par défaut : 5m).", "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Cette option détermine combien de Token sont conservés lors du rafraîchissement du contexte. Par exemple, avec une valeur de 2, les 2 derniers Token seront conservés. Cela aide à maintenir la continuité de la conversation, mais peut limiter la capacité à traiter de nouveaux sujets.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Cette option définit le nombre maximal de tokens que le modèle peut générer dans sa réponse. Une valeur plus élevée permet des réponses plus longues, mais peut aussi générer du contenu moins pertinent.", "This response was generated by \"{{model}}\"": "Cette réponse a été générée par \"{{model}}\"", - "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", + "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Ce modèle contient plusieurs espaces réservés de contexte ([context] ou {{CONTEXT}}). Le contexte sera injecté à chaque occurrence.", "This will delete": "Cela supprimera", "This will delete {{NAME}} and all its contents.": "Cela supprimera {{NAME}} et tout son contenu.", "This will delete all models including custom models and cannot be undone.": "Cela supprimera tous les modèles, y compris les modèles personnalisés, et ne peut pas être annulé.", - "This will delete the cached model and cannot be undone.": "", - "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", - "This will revoke the current API key.": "", + "This will delete the cached model and cannot be undone.": "Cela supprimera le modèle mis en cache et ne pourra pas être annulé.", + "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Cela supprimera définitivement le calendrier \"{{name}}\" et tous ses événements. Cette action ne peut pas être annulée.", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "Cela supprimera tous les fichiers et répertoires de cette base de connaissances. Cette action ne peut pas être annulée.", + "This will revoke the current API key.": "Cela révoquera la clé API actuelle.", "Thorough explanation": "Explication approfondie", "Thought": "Réflexion", "Thought for {{DURATION}}": "Réflexion de {{DURATION}}", "Thought for {{DURATION}} seconds": "Réflexion pendant {{DURATION}} secondes", "Thought for less than a second": "Réflexion pendant moins d'une seconde", "Thread": "Fil de discussion", - "Through": "", + "Through": "Via", "Thumbs up/down ratings from users on model responses": "Évaluations des utilisateurs (pouces vers le haut/bas) sur les réponses du modèle", "Tika": "Tika", - "Tika 3.x": "", - "Tika 4.x": "", + "Tika 3.x": "Tika 3.x", + "Tika 4.x": "Tika 4.x", "Tika Server URL required.": "URL du serveur Tika requise.", "Tiktoken": "Tiktoken", "Time": "Temps", "Timeout": "Délai d'expiration", - "Timer": "", + "Timer": "Minuteur", "Title": "Titre", "Title cannot be an empty string.": "Le titre ne peut pas être une chaîne de caractères vide.", "Title is required": "Le titre est requis", @@ -3277,205 +3277,205 @@ "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pour accéder à l'interface Web, veuillez contacter l'administrateur. Les administrateurs peuvent gérer les statuts des utilisateurs depuis le panneau d'administration.", "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Pour attacher une base de connaissances ici, ajoutez-les d'abord à l'espace de travail « Connaissances ».", "To learn more about available endpoints, visit our documentation.": "Pour en savoir plus sur les points de terminaison disponibles, consultez notre documentation.", - "To learn more about SpeechT5,": "", - "To see the available CMU Arctic speaker embeddings,": "", - "To select actions here, add them to the \"Functions\" workspace first.": "", - "To select default filters here, enable toggleable filters for this model first.": "", - "To select filters here, add them to the \"Functions\" workspace first.": "", + "To learn more about SpeechT5,": "Pour en savoir plus sur SpeechT5,", + "To see the available CMU Arctic speaker embeddings,": "Pour voir les embeddings de locuteur CMU Arctic disponibles,", + "To select actions here, add them to the \"Functions\" workspace first.": "Pour sélectionner des actions ici, ajoutez-les d'abord à l'espace de travail \"Fonctions\".", + "To select default filters here, enable toggleable filters for this model first.": "Pour sélectionner des filtres par défaut ici, activez d'abord les filtres basculables pour ce modèle.", + "To select filters here, add them to the \"Functions\" workspace first.": "Pour sélectionner des filtres ici, ajoutez-les d'abord à l'espace de travail \"Fonctions\".", "To select skills here, add them to the \"Skills\" workspace first.": "Pour sélectionner des skills ici, ajoutez-les d'abord à l'espace de travail « Skills ».", - "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "", + "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "Pour sélectionner des kits d'outils ici, ajoutez-les d'abord à l'espace de travail \"Outils\" ou activez d'abord un serveur d'outils.", "Today": "Aujourd'hui", "Today at": "Aujourd'hui à", "Toggle {{COUNT}} sources": "Afficher/masquer {{COUNT}} sources", "Toggle 1 source": "Afficher/masquer 1 source", - "Toggle Controls": "", + "Toggle Controls": "Basculer les contrôles", "Toggle details": "Afficher/masquer les détails", "Toggle Dictation": "Activer/Désactiver la dictée", - "Toggle Mute": "", + "Toggle Mute": "Basculer le mode muet", "Toggle Sidebar": "Afficher/Masquer la barre latérale", "Toggle status history": "Afficher/masquer l'historique des statuts", - "Toggle temporary chat for this new chat.": "", + "Toggle temporary chat for this new chat.": "Activer/Désactiver la conversation temporaire pour cette nouvelle conversation.", "Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active", "Token": "Token", - "Token activity": "", + "Token activity": "Activité des tokens", "Token counts are estimates and may not reflect actual API usage": "Le nombre de tokens est une estimation et peut ne pas refléter l'utilisation réelle de l'API", "tokens": "tokens", "Tokens": "Tokens", "Too verbose": "Trop détaillé", - "tool": "", + "tool": "outil", "Tool created successfully": "Outil créé avec succès", "Tool deleted successfully": "Outil supprimé avec succès", "Tool Description": "Description de l'outil", "Tool ID": "ID de l'outil", "Tool imported successfully": "Outil importé avec succès", - "tool loops per sub-agent": "", - "Tool Menu": "", + "tool loops per sub-agent": "boucles d'outil par sous-agent", + "Tool Menu": "Menu des outils", "Tool Name": "Nom de l'outil", - "Tool Permissions": "", + "Tool Permissions": "Permissions des outils", "Tool Servers": "Serveurs d'outils", "Tool updated successfully": "Outil mis à jour avec succès", "Tools": "Outils", "Tools Access": "Accès aux outils", - "Tools can execute arbitrary code.": "", + "Tools can execute arbitrary code.": "Les outils peuvent exécuter du code arbitraire.", "Tools have a function calling system that allows arbitrary code execution.": "Les outils ont un système d'appel de fonction qui permet l'exécution de code arbitraire.", "Tools Public Sharing": "Partage public des outils", "Tools Sharing": "Partage des outils", "Top": "Meilleurs", - "Total chats": "", + "Total chats": "Total des conversations", "Transformers": "Transformers", - "Translation key": "", - "Trial License": "", + "Translation key": "Clé de traduction", + "Trial License": "Licence d'essai", "Try adjusting your search or filter to find what you are looking for.": "Essayez d'ajuster votre recherche ou votre filtre.", "Try Again": "Essayer à nouveau", "TTS Voice": "Voix de Text-to-Speech", - "Tu_day_of_week": "", + "Tu_day_of_week": "Mardi", "Type": "Type", - "Type a model ref": "", + "Type a model ref": "Tapez une référence de modèle", "Type here...": "Entrez votre message ici...", "Type Hugging Face Resolve (Download) URL": "Entrez l'URL de Téléchargement Hugging Face Resolve", - "Type your answer": "", + "Type your answer": "Tapez votre réponse", "Uh-oh! There was an issue with the response.": "Oh! Un problème est survenu avec la réponse.", - "Unarchive": "", + "Unarchive": "Désarchiver", "Unarchive Chat": "Désarchiver la conversation", - "Unassigned": "", + "Unassigned": "Non assigné", "Underline": "Souligner", - "unknown": "", + "unknown": "inconnu", "Unknown": "Inconnu", "Unknown User": "Utilisateur inconnu", - "Unload Model": "", + "Unload Model": "Décharger le modèle", "Unloads {{FROM_NOW}}": "Décharge {{FROM_NOW}}", "Unmute": "Activer le son", "Unpin": "Désépingler", "Unpin from Sidebar": "Désépingler de la barre latérale", - "Unread": "", - "Unshare All": "", - "Unshare All Shared Chats": "", + "Unread": "Non lu", + "Unshare All": "Tout désactiver le partage", + "Unshare All Shared Chats": "Désactiver le partage de toutes les conversations partagées", "Unshare Chat": "Annuler le partage de la conversation", "Unsupported file type.": "Type de fichier non pris en charge.", "Untagged": "Pas de tag", "Untitled": "Sans titre", "Update": "Mise à jour", - "Update All Models": "", + "Update All Models": "Mettre à jour tous les modèles", "Update and Copy Link": "Mettre à jour et copier le lien", "Update for the latest features and improvements.": "Mettez à jour pour bénéficier des dernières fonctionnalités et améliorations.", "Update your status": "Mettre à jour votre statut", "Updated": "Mis à jour", "Updated at": "Mise à jour le", "Updated At": "Mise à jour le", - "Updating \"{{modelId}}\"": "", + "Updating \"{{modelId}}\"": "Mise à jour de \"{{modelId}}\"", "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Effectuez la mise à niveau vers le plan payant pour bénéficier de fonctionnalités améliorées, notamment les thèmes et le branding personnalisé, ainsi qu'un support dédié.", "Upload": "Téléverser", "Upload a GGUF model": "Téléverser un modèle GGUF", "Upload Audio": "Téléverser un audio", "Upload directory": "Téléverser un dossier", - "Upload failed": "", - "Upload failed for {{failed}} of {{total}} files.": "", + "Upload failed": "Échec du téléversement", + "Upload failed for {{failed}} of {{total}} files.": "Échec du téléversement pour {{failed}} des {{total}} fichiers.", "Upload files": "Téléverser des fichiers", "Upload Files": "Téléverser des fichiers", - "Upload Folder": "", + "Upload Folder": "Téléverser un dossier", "Upload Model": "Téléverser un modèle", - "Upload Photo": "", + "Upload Photo": "Téléverser une photo", "Upload profile image": "Téléverser une image de profil", "Upload Progress": "Progression de l'envoi", "Uploaded files or images": "Les fichiers ou images téléversés", - "Uploading": "", - "Uploading {{current}}/{{total}}: {{file}}": "", + "Uploading": "Téléversement en cours", + "Uploading {{current}}/{{total}}: {{file}}": "Téléversement {{current}}/{{total}} : {{file}}", "Uploading...": "Téléversement en cours...", "URL": "URL", "URL is required": "L'URL est requise", "URL Mode": "Mode d'URL", "Use": "Utilisez", - "Use a valid event name or pattern like user.*": "", - "Use default": "", - "Use device vibration feedback on supported Android devices.": "", - "Use discovered scopes": "", + "Use a valid event name or pattern like user.*": "Utiliser un nom d'événement ou un motif valide comme user.*", + "Use default": "Utiliser par défaut", + "Use device vibration feedback on supported Android devices.": "Utiliser le retour haptique de l'appareil sur les appareils Android pris en charge.", + "Use discovered scopes": "Utiliser les portées découvertes", "Use groups to organize your users and assign permissions.": "Utilisez les groupes pour organiser vos utilisateurs et attribuer des permissions.", - "Use segmented retrieval for focused and relevant content extraction.": "", - "Use segmented retrieval for focused and relevant context.": "", - "Use segmented retrieval for focused context.": "", - "Use these in model system prompts as {{example}}.": "", - "Use Web Search?": "", + "Use segmented retrieval for focused and relevant content extraction.": "Utiliser la récupération segmentée pour une extraction de contenu ciblée et pertinente.", + "Use segmented retrieval for focused and relevant context.": "Utiliser la récupération segmentée pour un contexte ciblé et pertinent.", + "Use segmented retrieval for focused context.": "Utiliser la récupération segmentée pour un contexte ciblé.", + "Use these in model system prompts as {{example}}.": "Utilisez ceux-ci dans les invites système du modèle comme {{example}}.", + "Use Web Search?": "Utiliser la recherche Web ?", "user": "utilisateur", "User": "Utilisateur", "User Activity": "Activité des utilisateurs", - "User Count": "", + "User Count": "Nombre d'utilisateurs", "User Groups": "Groupes d'utilisateurs", "User location successfully retrieved.": "Emplacement de l'utilisateur récupéré avec succès.", "User menu": "Menu utilisateur", - "User messages": "", - "User not found.": "", - "User Preview": "", + "User messages": "Messages utilisateur", + "User not found.": "Utilisateur introuvable.", + "User Preview": "Aperçu utilisateur", "User ratings (thumbs up/down)": "Évaluations des utilisateurs (pouces vers le haut/bas)", - "User Variables": "", + "User Variables": "Variables utilisateur", "User Webhooks": "Webhooks utilisateur", "Username": "Nom d'utilisateur", "users": "utilisateurs", "Users": "Utilisateurs", "Uses DefaultAzureCredential to authenticate": "Utilise DefaultAzureCredential pour s'authentifier", - "Uses defaults": "", + "Uses defaults": "Utilise les valeurs par défaut", "Uses OAuth 2.1 Dynamic Client Registration": "Utilise l'enregistrement dynamique de client OAuth 2.1", "Using Entire Document": "Utilisation du document entier", "Using Focused Retrieval": "Utilisation de la récupération ciblée", "Using the default arena model with all models. Click the plus button to add custom models.": "Utilisation du modèle d'arène par défaut avec tous les modèles. Cliquez sur le bouton plus pour ajouter des modèles personnalisés.", - "Value": "", + "Value": "Valeur", "Valves": "Vannes", "Valves updated": "Vannes mises à jour", "Valves updated successfully": "Vannes mises à jour avec succès", "variable": "variable", - "Variable key": "", - "Variable keys must be unique.": "", - "Variable keys must use lowercase snake case.": "", - "Variable value": "", - "Vector Field": "", + "Variable key": "Clé de variable", + "Variable keys must be unique.": "Les clés de variable doivent être uniques.", + "Variable keys must use lowercase snake case.": "Les clés de variable doivent utiliser le format snake_case en minuscules.", + "Variable value": "Valeur de variable", + "Vector Field": "Champ vectoriel", "Verify Connection": "Vérifier la connexion", "Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} de {{totalVersions}}", "Version deleted": "Version supprimée", - "Vertical Layout": "", - "Video player": "", - "View channel": "", - "View chat": "", + "Vertical Layout": "Disposition verticale", + "Video player": "Lecteur vidéo", + "View channel": "Voir le canal", + "View chat": "Voir la conversation", "View Replies": "Voir les réponses", - "View Result from {{NAME}}": "", + "View Result from {{NAME}}": "Voir le résultat de {{NAME}}", "View source: {{name}}": "Voir la source : {{name}}", "View source: {{title}}": "Voir la source : {{title}}", - "Viewport Pinned": "", - "Viewport Unpinned": "", + "Viewport Pinned": "Vue épinglée", + "Viewport Unpinned": "Vue désépinglée", "Visibility": "Visibilité", "Visible": "Visible", "Visible to all users": "Visible pour tous les utilisateurs", "Visual": "Visuel", - "vocabulary for a college entrance exam": "", + "vocabulary for a college entrance exam": "vocabulaire pour un examen d'entrée à l'université", "Voice": "Voix", "Voice Input": "Saisie vocale", "Voice mode": "Mode vocal", - "Wait for the current response to finish before compacting.": "", - "Wait for the current response to finish before forking.": "", - "Waiting for upload": "", + "Wait for the current response to finish before compacting.": "Attendre la fin de la réponse actuelle avant de compacter.", + "Wait for the current response to finish before forking.": "Attendre la fin de la réponse actuelle avant de dupliquer.", + "Waiting for upload": "En attente du téléversement", "Waiting for upload...": "En attente du téléversement...", "Warning": "Avertissement", "Warning:": "Avertissement :", "Warning: Enabling this will allow users to run scheduled prompts automatically.": "Avertissement : Activer cette option permettra aux utilisateurs d'exécuter automatiquement des prompts programmés.", "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Avertissement : Activer cette option permettra aux utilisateurs de télécharger du code arbitraire sur le serveur.", "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Avertissement : L'exécution Jupyter permet l'exécution de code arbitraire, ce qui présente des risques de sécurité importants. Procédez avec une extrême prudence.", - "We_day_of_week": "", + "We_day_of_week": "Mercredi", "Web": "Web", "Web API": "API Web", "Web Search": "Recherche Web", - "Webhook": "", - "Webhook deleted": "", + "Webhook": "Webhook", + "Webhook deleted": "Webhook supprimé", "Webhook Name": "Nom du webhook", - "Webhook saved": "", + "Webhook saved": "Webhook enregistré", "Webhooks": "Webhooks", "Webpage URLs": "URL des pages web", "WebUI will make requests to \"{{url}}\"": "WebUI effectuera des requêtes vers \"{{url}}\"", "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI fera des requêtes à \"{{url}}/api/chat\"", "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI fera des requêtes à \"{{url}}/chat/completions\"", "Week": "Semaine", - "Week of": "", + "Week of": "Semaine du", "Weekly": "Hebdomadaire", - "Weekly at": "", - "Welcome to your AI home.": "", - "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "", + "Weekly at": "Hebdomadaire à", + "Welcome to your AI home.": "Bienvenue dans votre espace IA.", + "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Quelles sont 5 idées créatives pour utiliser les dessins de mes enfants ? Je ne veux pas les jeter, mais c'est aussi beaucoup de désordre.", "What are you trying to achieve?": "Que cherchez-vous à accomplir ?", "What are you working on?": "Sur quoi travaillez-vous ?", "What is NOT shared:": "Ce qui n'est PAS partagé :", @@ -3489,10 +3489,10 @@ "Width": "Largeur", "Wikipedia": "Wikipedia", "Won": "Victoires", - "Working Directory": "", + "Working Directory": "Répertoire de travail", "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Fonctionne avec top-k. Une valeur élevée (par exemple, 0,95) conduira à un texte plus diversifié, tandis qu'une valeur plus faible (par exemple, 0,5) générera un texte plus ciblé et conservateur.", "Workspace": "Espace de travail", - "Workspace Models": "", + "Workspace Models": "Modèles de l'espace de travail", "Workspace Permissions": "Autorisations de l'espace de travail", "Write": "Écrire", "Write a summary in 50 words that summarizes {{topic}}.": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].", @@ -3500,10 +3500,10 @@ "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Écrivez ici le contenu du system prompt de votre modèle\npar. ex. : Vous êtes Mario de Super Mario Bros et vous agissez comme assistant.", "Yahoo": "Yahoo", "Yandex": "Yandex", - "Yearly": "", + "Yearly": "Annuel", "Yesterday": "Hier", "You": "Vous", - "You are a sub-agent...": "", + "You are a sub-agent...": "Vous êtes un sous-agent...", "You are currently using a trial license. Please contact support to upgrade your license.": "Vous utilisez actuellement une licence d'essai. Veuillez contacter le support pour mettre à niveau votre licence.", "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Vous ne pouvez discuter qu'avec un maximum de {{maxCount}} fichier(s) à la fois.", "You cannot upload an empty file.": "Vous ne pouvez pas envoyer un fichier vide.", @@ -3517,7 +3517,7 @@ "You do not have permission to upload files to this knowledge base.": "Vous n'êtes pas autorisé à téléverser des fichiers dans cette base de connaissances.", "You do not have permission to upload files.": "Vous n'êtes pas autorisé à téléverser des fichiers.", "You do not have permission to upload web content.": "Vous n'êtes pas autorisé à joindre une page web.", - "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "", + "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "Vous avez plus de 50 utilisateurs, ce qui signifie souvent que cet espace de travail prend en charge une utilisation organisationnelle. Open WebUI est gratuit à utiliser tel quel, sans restrictions ni limites cachées, et nous souhaitons que cela reste ainsi.", "You have no archived conversations.": "Vous n'avez aucune conversation archivée.", "You have no shared conversations.": "Vous n'avez aucune conversation partagée.", "You have shared this chat": "Vous avez partagé cette conversation.", @@ -3528,10 +3528,10 @@ "Your browser does not support the video tag.": "Votre navigateur ne prend pas en charge la balise « video ».", "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.": "L'intégralité de votre contribution ira directement au développeur du plugin ; Open WebUI ne prend aucun pourcentage. Cependant, la plateforme de financement choisie peut avoir ses propres frais.", "Your message text or inputs": "Vos messages envoyés", - "Your query will be sent to the configured web search provider.": "", + "Your query will be sent to the configured web search provider.": "Votre requête sera envoyée au fournisseur de recherche Web configuré.", "Your usage stats have been successfully synced.": "Vos statistiques d'utilisation ont été synchronisées avec succès.", "YouTube": "YouTube", - "YouTube video player": "", - "Zoom in": "", - "Zoom out": "" + "YouTube video player": "Lecteur vidéo YouTube", + "Zoom in": "Zoom avant", + "Zoom out": "Zoom arrière" } From b3bb82e776fb09cf640de3919d2492531b78ecb0 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:30:21 +0200 Subject: [PATCH 021/583] refac: scope ydoc update save scheduling to note documents (#30395) The ydoc document update handler now schedules the debounced save only for note documents, since notes are the only ydoc documents with a save handler. --- backend/open_webui/socket/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 796c08b9cf..f157ed2f81 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -890,7 +890,7 @@ async def yjs_document_update(sid, data): await asyncio.sleep(0.5) await document_save_handler(document_id, data.get('data', {}), user) - if data.get('data'): + if document_id.startswith('note:') and data.get('data'): # Only drop the pending save when a new one takes its place. # Updates without a content snapshot (the resync a client sends # after rejoining a document) would otherwise cancel the pending From 869a5b103535aaca58e14975ff0bb4fef5769a38 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:30:30 +0200 Subject: [PATCH 022/583] fix: stop voice mode listening after leaving the chat page (#30405) (#30417) Leaving the chat with voice mode active (Admin Panel, Workspace, Notes) left a hidden recorder running in the tab. The voice mode flag stays on when the chat page unmounts, so the overlay's teardown restarted recording on the destroyed component, which kept transcribing speech and sending prompts from other pages. Returning to the chat also opened an extra microphone stream that was never closed. The overlay now marks itself destroyed on teardown and never starts or restarts recording after that, so leaving the chat shuts the microphone down fully. Resetting the voice mode flag in the chat page cleanup was considered, but it changes behaviour for the controls panel on return and still runs after the overlay's own teardown. Verified in Chromium with a fake microphone (14s per phase, transcription requests / live mic tracks): | Phase | before | after | |---|---|---| | Call on chat | 3 / 1 | 3 / 1 | | After moving to Workspace | 3 / 1 | 0 / 0 | | Voice mode reopened | 3 / 3 | 3 / 1 | Fixes #30405 --- src/lib/components/chat/MessageInput/CallOverlay.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/MessageInput/CallOverlay.svelte b/src/lib/components/chat/MessageInput/CallOverlay.svelte index b4379b57f9..1340050a4a 100644 --- a/src/lib/components/chat/MessageInput/CallOverlay.svelte +++ b/src/lib/components/chat/MessageInput/CallOverlay.svelte @@ -44,6 +44,7 @@ let mediaRecorder; let audioStream = null; let audioChunks = []; + let destroyed = false; let videoInputDevices = []; let selectedVideoInputDeviceId = null; @@ -184,7 +185,8 @@ }; const stopRecordingCallback = async (_continue = true) => { - if ($showCallOverlay) { + // $showCallOverlay stays true when the chat page unmounts + if ($showCallOverlay && !destroyed) { console.log('%c%s', 'color: red; font-size: 20px;', '🚨 stopRecordingCallback 🚨'); // deep copy the audioChunks array @@ -231,7 +233,7 @@ }; const startRecording = async () => { - if ($showCallOverlay) { + if ($showCallOverlay && !destroyed) { if (!audioStream) { audioStream = await navigator.mediaDevices.getUserMedia({ audio: { @@ -776,6 +778,7 @@ }); onDestroy(async () => { + destroyed = true; await stopAllAudio(); await stopRecordingCallback(false); await stopCamera(); From 9e51fe421cbb23afadd078b39cb6d00330082499 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:30:55 +0200 Subject: [PATCH 023/583] fix: read S3 files with long non-ASCII names (#30418) With S3 storage, a file whose stored name is close to the 255-byte filename limit and contains non-ASCII characters (for example a Cyrillic name of about 210-218 bytes) uploads fine, but every later read fails with "File name too long". Processing never gets the content, so the file shows as attached while the model receives no text. The read path used boto3's download_file, which first writes to a temporary name with 9 extra characters. boto3 caps that temporary name by characters, not bytes, so multibyte names end up over the limit even though the final name fits. The download now streams straight into the local path with download_fileobj, the same way the Azure provider already writes its local copy. That path is the one the upload just wrote successfully, so it always fits. ASCII names, key prefixes and multipart downloads behave as before. Fixes #30409 --- backend/open_webui/storage/provider.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/storage/provider.py b/backend/open_webui/storage/provider.py index c8236416de..919900f752 100644 --- a/backend/open_webui/storage/provider.py +++ b/backend/open_webui/storage/provider.py @@ -168,7 +168,9 @@ class S3StorageProvider(StorageProvider): try: s3_key = self._extract_s3_key(file_path) local_file_path = self._get_local_file_path(s3_key) - self.s3_client.download_file(self.bucket_name, s3_key, local_file_path) + # download_file's temp name caps characters, not bytes, so non-ASCII names can exceed NAME_MAX + with open(local_file_path, 'wb') as local_file: + self.s3_client.download_fileobj(self.bucket_name, s3_key, local_file) return local_file_path except ClientError as e: raise RuntimeError(f'Error downloading file from S3: {e}') From 95d6af44d78d636471f62c104e8790045a57cd6b Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Wed, 23 Sep 2026 23:32:14 -0400 Subject: [PATCH 024/583] fix: mark imported and cloned chats as read (#30754) --- backend/open_webui/models/chats.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/open_webui/models/chats.py b/backend/open_webui/models/chats.py index 420c414978..d90f52e4c9 100644 --- a/backend/open_webui/models/chats.py +++ b/backend/open_webui/models/chats.py @@ -648,6 +648,7 @@ class ChatTable: 'current_message_id': form_data.current_message_id or self.get_current_message_id(form_data.chat), 'created_at': (form_data.created_at if form_data.created_at else int(time.time())), 'updated_at': (form_data.updated_at if form_data.updated_at else int(time.time())), + 'last_read_at': int(time.time()), } ) return chat From a7d81ebdcfcc5bdc72f6ba7e9d3b5bcfb1036733 Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Wed, 23 Sep 2026 23:32:23 -0400 Subject: [PATCH 025/583] fix: keep a user's chats listed in the admin chats view after deleting one (#30604) --- src/lib/components/admin/Users/UserList/UserChatsModal.svelte | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/components/admin/Users/UserList/UserChatsModal.svelte b/src/lib/components/admin/Users/UserList/UserChatsModal.svelte index 4ae550d0c9..f19ae60c39 100644 --- a/src/lib/components/admin/Users/UserList/UserChatsModal.svelte +++ b/src/lib/components/admin/Users/UserList/UserChatsModal.svelte @@ -90,7 +90,9 @@ }; const init = async () => { + page = 1; chatList = await getChatListByUserId(localStorage.token, user.id, page, filter); + allChatsLoaded = (chatList ?? []).length === 0; }; $: if (show) { From 7e2bea825310f5cfa6168002d596516958c774c8 Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Wed, 23 Sep 2026 23:32:42 -0400 Subject: [PATCH 026/583] fix: load the leaderboard activity chart for model ids that contain a slash (#30456) --- backend/open_webui/routers/evaluations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/routers/evaluations.py b/backend/open_webui/routers/evaluations.py index 00c1517c88..9dd8413077 100644 --- a/backend/open_webui/routers/evaluations.py +++ b/backend/open_webui/routers/evaluations.py @@ -265,7 +265,7 @@ async def get_leaderboard( return LeaderboardResponse(entries=entries) -@router.get('/leaderboard/{model_id}/history', response_model=ModelHistoryResponse) +@router.get('/leaderboard/{model_id:path}/history', response_model=ModelHistoryResponse) async def get_model_history( model_id: str, days: int = 30, From 0ab3a2b33545d5af32a670381a8797c783e5c15e Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Wed, 23 Sep 2026 23:32:54 -0400 Subject: [PATCH 027/583] fix: restore tag rows after unarchiving all chats and remove unused ones after deleting all chats (#30453) --- backend/open_webui/routers/chats.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py index ed339a601a..7138dc9f21 100644 --- a/backend/open_webui/routers/chats.py +++ b/backend/open_webui/routers/chats.py @@ -716,8 +716,10 @@ async def delete_all_user_chats( detail=ERROR_MESSAGES.ACCESS_PROHIBITED, ) + tag_ids = [tag.id for tag in await Tags.get_tags_by_user_id(user.id, db=db)] result = await Chats.delete_chats_by_user_id(user.id, db=db) if result: + await Chats.delete_orphan_tags_for_user(tag_ids, user.id, db=db) await publish_event( request, EVENTS.CHAT_DELETED_ALL, @@ -1129,8 +1131,14 @@ async def archive_all_chats( async def unarchive_all_chats( request: Request, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session) ): + tag_ids = { + tag_id + for chat in await Chats.get_archived_chats_by_user_id(user.id, db=db) + for tag_id in chat.meta.get('tags', []) + } result = await Chats.unarchive_all_chats_by_user_id(user.id, db=db) if result: + await Tags.ensure_tags_exist(list(tag_ids), user.id, db=db) await publish_event(request, EVENTS.CHAT_UNARCHIVED, actor=user, subject_id=user.id, subject_type='user') return result From 4caf25538981715dbb294463f1b6dec0b1dde7df Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:33:09 +0200 Subject: [PATCH 028/583] fix: refresh an expiring OAuth token once across workers and replicas (#30450) #30426 stopped concurrent requests from refreshing the same OAuth session twice, but its lock only lives inside one process. With several uvicorn workers or replicas, two requests on different workers still send the same refresh token, a rotating provider rejects the second with invalid_grant, and the session gets deleted, so the user's OAuth session is logged out again. When Redis is configured, which multi-worker and multi-replica deployments require, the refresh now takes a Redis lock per session instead of the in-process one. Single-process deployments without Redis keep the in-process lock. The waiter re-reads the session inside the lock as before and uses the token that was just stored. It uses redis-py's own async lock because the existing RedisLock is synchronous and never waits. The Sentinel proxy now passes `lock` through unwrapped like `pipeline` and `pubsub`; otherwise it returned a coroutine and every refresh behind Sentinel would fail. Tested with separate OS processes on one sqlite DB, a real Redis and a rotating mock provider: 2 and 5 processes (and 5 processes x 3 requests) now cause 1 refresh, every caller gets the new token and the session is kept (before: one refresh per process, session deleted every run). Single refresh, failed refresh, valid token and the single-process path without Redis are unchanged. Follow-up to #30426, refs #30416 --- backend/open_webui/utils/oauth.py | 10 +++++++++- backend/open_webui/utils/redis.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index fc7bf7cabc..d523aad0ba 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -72,6 +72,7 @@ from open_webui.env import ( ENABLE_OAUTH_ID_TOKEN_COOKIE, OAUTH_CLIENT_INFO_ENCRYPTION_KEY, OAUTH_MAX_SESSIONS_PER_USER, + REDIS_KEY_PREFIX, WEBUI_AUTH_COOKIE_SAME_SITE, WEBUI_AUTH_COOKIE_SECURE, ) @@ -1429,7 +1430,14 @@ class OAuthManager: Returns: dict: Refreshed token data, or None if refresh failed """ - async with self._refresh_locks.setdefault(session.id, asyncio.Lock()): + redis = self.app.state.redis + if redis: + # Shared across workers and replicas + refresh_lock = redis.lock(f'{REDIS_KEY_PREFIX}:oauth:refresh_lock:{session.id}', timeout=60) + else: + refresh_lock = self._refresh_locks.setdefault(session.id, asyncio.Lock()) + + async with refresh_lock: # Another request may have refreshed while we waited; its refresh token is now spent current_session = await OAuthSessions.get_session_by_id(session.id) if current_session and current_session.token != session.token: diff --git a/backend/open_webui/utils/redis.py b/backend/open_webui/utils/redis.py index 90d81abb26..0eb1469862 100644 --- a/backend/open_webui/utils/redis.py +++ b/backend/open_webui/utils/redis.py @@ -35,7 +35,7 @@ _SENTINEL_RETRYABLE = ( _redis_sync.exceptions.ReadOnlyError, _redis_sync.exceptions.TimeoutError, ) -_FACTORY_METHODS = frozenset({'pipeline', 'pubsub', 'monitor', 'client', 'transaction'}) +_FACTORY_METHODS = frozenset({'pipeline', 'pubsub', 'monitor', 'client', 'transaction', 'lock'}) _CONNECTION_POOL: dict[tuple, Any] = {} From a973e77cfaa21f68a92b9ccb474a7b3cb08fab25 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:36:15 +0200 Subject: [PATCH 029/583] refac: folder file checks (#30442) Folder file entries are also checked against the user making the change. --- backend/open_webui/routers/folders.py | 29 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/backend/open_webui/routers/folders.py b/backend/open_webui/routers/folders.py index eb07c112b9..cb8c9953cf 100644 --- a/backend/open_webui/routers/folders.py +++ b/backend/open_webui/routers/folders.py @@ -162,6 +162,16 @@ async def create_folder( detail=ERROR_MESSAGES.DEFAULT('Folder already exists'), ) + if ( + form_data.data + and 'files' in form_data.data + and not await can_read_all_folder_files(form_data.data['files'], user, db=db) + ): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) + # Check if creating a subfolder in a shared folder if form_data.parent_id: parent = await Folders.get_folder_by_id(form_data.parent_id, db=db) @@ -202,16 +212,6 @@ async def create_folder( detail=ERROR_MESSAGES.DEFAULT('Error creating folder'), ) - if ( - form_data.data - and 'files' in form_data.data - and not await can_read_all_folder_files(form_data.data['files'], user, db=db) - ): - raise HTTPException( - status_code=status.HTTP_403_FORBIDDEN, - detail=ERROR_MESSAGES.ACCESS_PROHIBITED, - ) - try: folder = await Folders.insert_new_folder(user.id, form_data, form_data.parent_id, db=db) await publish_event( @@ -371,6 +371,15 @@ async def update_folder_name_by_id( detail=ERROR_MESSAGES.ACCESS_PROHIBITED, ) + # Editors send back the owner's existing entries, so only new ones are checked against the editor. + existing_files = (folder.data or {}).get('files') or [] + added_files = [entry for entry in form_data.data['files'] or [] if entry not in existing_files] + if not await can_read_all_folder_files(added_files, user, db=db): + raise HTTPException( + status_code=status.HTTP_403_FORBIDDEN, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) + try: folder = await Folders.update_folder_by_id_and_user_id(id, folder.user_id, form_data, db=db) await publish_event( From 443736e1fea3f5549b11b3bfda9dfa41cb621e1b Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:36:26 +0200 Subject: [PATCH 030/583] refactor: use secrets module for generated secret key (#30441) Generates the default WEBUI_SECRET_KEY file with secrets.token_bytes, matching how the start scripts read from the OS random source. --- backend/open_webui/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/__init__.py b/backend/open_webui/__init__.py index e803cea466..c56c875566 100644 --- a/backend/open_webui/__init__.py +++ b/backend/open_webui/__init__.py @@ -1,6 +1,6 @@ import base64 import os -import random +import secrets import sys from pathlib import Path from typing import Annotated @@ -45,7 +45,7 @@ def serve( if key_length < 1: raise ValueError('WEBUI_SECRET_KEY_LENGTH must be a positive integer') typer.echo(f'Generating a new secret key and saving it to {KEY_FILE}') - KEY_FILE.write_bytes(base64.b64encode(random.randbytes(key_length))) + KEY_FILE.write_bytes(base64.b64encode(secrets.token_bytes(key_length))) typer.echo(f'Loading WEBUI_SECRET_KEY from {KEY_FILE}') os.environ['WEBUI_SECRET_KEY'] = KEY_FILE.read_text() From 2867f7225b8accc3c86922311132193972977287 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:43:20 +0200 Subject: [PATCH 031/583] refac: sync channel room on member removal (#30446) Removing members from a group or DM channel now also removes their sessions from the channel room, matching how access grant changes are handled. --- backend/open_webui/routers/channels.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/open_webui/routers/channels.py b/backend/open_webui/routers/channels.py index 80e243c8ae..c9d38bf2ce 100644 --- a/backend/open_webui/routers/channels.py +++ b/backend/open_webui/routers/channels.py @@ -688,6 +688,8 @@ async def remove_members_by_id( try: deleted = await Channels.remove_members_from_channel(channel.id, form_data.user_ids, db=db) + if channel.type in ['group', 'dm']: + await leave_room_for_users(f'channel:{channel.id}', form_data.user_ids) await publish_event( request, From 9db68981d85ae65af2f23ca459b643171722999e Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:48:05 +0200 Subject: [PATCH 032/583] feat: allow reordering admin models while a search or filter is active (#30390) On Admin Settings > Models the drag handle was disabled as soon as a search, view or tag filter was active, so on a long list the only way to move a model was to clear everything and hunt for it by eye. Dragging now works in any filtered list. The move is applied to the full order: the dragged model is placed directly after the visible model it was dropped below (or directly before the one it was dropped above), and every model hidden by the filter keeps its place. That anchoring is what makes reordering a subset safe, which is why the filters previously blocked it. The tag filter now filters the loaded list client-side like search and view already do. Before, it reloaded the page data and rebuilt the order from only the tagged models, so saving under a tag would have dropped every other model from the order, and switching tags discarded unsaved moves. Export keeps its existing tag-filtered behaviour. Verified in the browser with search, view (enabled/disabled) and tag filters, dragging up and down, multiple moves before one save and switching tags with unsaved moves; the saved order always contains every model. Closes #29634 --- .../components/admin/Settings/Models.svelte | 76 ++++++++----------- 1 file changed, 32 insertions(+), 44 deletions(-) diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 42bf61a370..9ea9629a59 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -153,6 +153,7 @@ const modelOrder = new Map(modelOrderList.map((id, idx) => [id, idx])); filteredModels = models + .filter((m) => !selectedTag || modelTags(m).includes(selectedTag)) .filter((m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase())) .filter((m) => { if (viewOption === 'base') return !isPresetModel(m); @@ -180,9 +181,6 @@ } let searchValue = ''; - let canReorderModels = false; - - $: canReorderModels = searchValue === '' && viewOption === '' && selectedTag === ''; const enableAllHandler = async () => { const modelsToEnable = filteredModels.filter((m) => !(m.is_active ?? true)); @@ -292,26 +290,24 @@ const listedModelIds = new Set(allModels.map((model) => model.id)); allModels.push(...savedModels.filter((model) => !listedModelIds.has(model.id))); - models = allModels - .map((m: ModelListItem) => { - const savedModel = savedModels.find((model: ModelListItem) => model.id === m.id); + models = allModels.map((m: ModelListItem) => { + const savedModel = savedModels.find((model: ModelListItem) => model.id === m.id); - if (savedModel) { - return { - ...m, - ...savedModel - }; - } else { - return { - ...m, - id: m.id, - name: m.name, + if (savedModel) { + return { + ...m, + ...savedModel + }; + } else { + return { + ...m, + id: m.id, + name: m.name, - is_active: true - }; - } - }) - .filter((model) => !selectedTag || modelTags(model).includes(selectedTag)); + is_active: true + }; + } + }); modelOrderList = [ ...modelOrderList.filter((id) => models.some((model) => model.id === id)), @@ -445,15 +441,14 @@ const target = parent.children[oldIndex < newIndex ? oldIndex : oldIndex + 1]; parent.insertBefore(item, target); - const updatedModels = [...filteredModels]; - const [movedModel] = updatedModels.splice(oldIndex, 1); - updatedModels.splice(newIndex, 0, movedModel); + // Anchor on the visible neighbor so filtered-out models keep their place + const movedModelId = filteredModels[oldIndex].id; + const anchorModelId = filteredModels[newIndex].id; + const reorderedIds = modelOrderList.filter((id) => id !== movedModelId); + const anchorIndex = reorderedIds.indexOf(anchorModelId); + reorderedIds.splice(oldIndex < newIndex ? anchorIndex + 1 : anchorIndex, 0, movedModelId); - const orderedIds = updatedModels.map((model) => model.id); - const orderedSet = new Set(orderedIds); - - models = [...updatedModels, ...models.filter((model) => !orderedSet.has(model.id))]; - modelOrderList = models.map((model) => model.id); + modelOrderList = reorderedIds; modelOrderDirty = true; }; @@ -463,7 +458,7 @@ sortable = null; } - if (modelListElement && filteredModels.length > 0 && canReorderModels) { + if (modelListElement && filteredModels.length > 0) { sortable = new Sortable(modelListElement, { animation: 150, handle: '.model-item-handle', @@ -825,9 +820,6 @@ items={tags.map((tag) => { return { value: tag, label: tag }; })} - onChange={async () => { - await init(); - }} /> {/if}
@@ -864,7 +856,11 @@ class="flex h-[1.6875rem] w-full cursor-pointer select-none items-center gap-2 rounded-xl bg-transparent px-2 text-[0.8125rem] hover:text-gray-900 dark:hover:text-gray-100" type="button" on:click={() => { - downloadModels(models ?? []); + downloadModels( + (models ?? []).filter( + (model) => !selectedTag || modelTags(model).includes(selectedTag) + ) + ); }} > @@ -978,16 +974,8 @@ id="model-item-{model.id}" >
- - + +
From 744ce6cbfec59ac835783c493ba8d5700f1b8a26 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:50:08 +0200 Subject: [PATCH 033/583] fix: send the configured USER_AGENT on the Attach Webpage pre-check (#30385) Attach Webpage fails with 403 Forbidden on sites that reject the bare aiohttp user agent, Wikipedia among them, even when USER_AGENT is set. The web loader sends USER_AGENT, but the request that runs first to decide whether the URL is a page or a file does not, so the attachment fails before the loader is ever reached. The pre-check now sends USER_AGENT as the request User-Agent when it is set. With it unset the request is unchanged and keeps the aiohttp default. Verified against the real _fetch_url with https://en.wikipedia.org/wiki/OpenAI: 403 before, page detected after; USER_AGENT unset still returns the same 403 as before, and a direct PDF URL is still detected as a file. Fixes #29617 --- backend/open_webui/routers/retrieval.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index c36b0b8a53..6c5f32ccb0 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -59,6 +59,7 @@ from open_webui.env import ( SENTENCE_TRANSFORMERS_CROSS_ENCODER_SIGMOID_ACTIVATION_FUNCTION, SENTENCE_TRANSFORMERS_MODEL_KWARGS, USE_SLIM, + USER_AGENT, ) from open_webui.events import EVENTS, publish_event from open_webui.internal.db import get_async_db, get_async_session @@ -2251,9 +2252,11 @@ async def _fetch_url(url: str, max_size_mb: int | str | None) -> dict: except (TypeError, ValueError): max_bytes = None + headers = {'User-Agent': USER_AGENT} if USER_AGENT else None + async with get_ssrf_safe_session() as session: async with session.get( - url, ssl=AIOHTTP_CLIENT_SESSION_SSL, allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS + url, headers=headers, ssl=AIOHTTP_CLIENT_SESSION_SSL, allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS ) as response: response.raise_for_status() From e13e523f00423f158648b9082d973d41ab5739a7 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:50:39 +0200 Subject: [PATCH 034/583] feat: bundle python-pptx and python-docx for the Pyodide code interpreter (#30382) Asked for a PowerPoint or Word file, the model had no library for it, so it followed the prompt's "use an alternative approach" and wrote the OOXML zip by hand. The sandbox reported success and Office refused to open the result. python-pptx and python-docx are now vendored the same way as openpyxl: their wheels (plus xlsxwriter) go through the PyPI wheel path, lxml joins the Pyodide distribution list so its wasm wheel is cached, and importing pptx or docx installs them from the bundled wheels. No prompt change is needed, since the app installs on import. static/pyodide grows by about 3 MB (58 to 61 MB) and verifyBundledWheels() passes. Verified in headless Chromium with pypi.org, files.pythonhosted.org and the jsDelivr CDN blocked: both packages install from the local wheels only, and a deck and a document built in the sandbox reopen with the native libraries. openpyxl, seaborn, black, pandas, matplotlib and requests still install offline. Without the change both installs fail offline. Fixes #30361 --- scripts/prepare-pyodide.js | 12 +++-- .../components/chat/Messages/CodeBlock.svelte | 4 +- src/routes/+layout.svelte | 4 +- static/pyodide/pyodide-lock.json | 44 +++++++++++++++++++ 4 files changed, 59 insertions(+), 5 deletions(-) diff --git a/scripts/prepare-pyodide.js b/scripts/prepare-pyodide.js index 8ec57426cb..cb043f7312 100644 --- a/scripts/prepare-pyodide.js +++ b/scripts/prepare-pyodide.js @@ -13,7 +13,8 @@ const packages = [ 'tiktoken', 'pytz', 'black', - 'openai' + 'openai', + 'lxml' ]; // Pure-Python packages whose wheels must be downloaded from PyPI and saved into @@ -28,13 +29,18 @@ const pypiPackages = [ 'pytokens', 'openpyxl', 'et-xmlfile', - 'seaborn' + 'seaborn', + 'python-pptx', + 'python-docx', + 'xlsxwriter' ]; const pypiDepends = { black: ['click', 'mypy-extensions', 'packaging', 'pathspec', 'platformdirs', 'pytokens'], openpyxl: ['et-xmlfile'], - seaborn: ['matplotlib', 'numpy', 'pandas'] + seaborn: ['matplotlib', 'numpy', 'pandas'], + 'python-pptx': ['lxml', 'pillow', 'xlsxwriter', 'typing-extensions'], + 'python-docx': ['lxml', 'typing-extensions'] }; import { loadPyodide } from 'pyodide'; diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index 4ae1a202b9..b52700494c 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -235,7 +235,9 @@ /\bimport\s+tiktoken\b|\bfrom\s+tiktoken\b/.test(code) ? 'tiktoken' : null, /\bimport\s+pytz\b|\bfrom\s+pytz\b/.test(code) ? 'pytz' : null, /\bimport\s+openpyxl\b|\bfrom\s+openpyxl\b/.test(code) ? 'openpyxl' : null, - /\.(read|to)_excel\(|\.Excel(Writer|File)\(/.test(code) ? 'openpyxl' : null + /\.(read|to)_excel\(|\.Excel(Writer|File)\(/.test(code) ? 'openpyxl' : null, + /\bimport\s+pptx\b|\bfrom\s+pptx\b/.test(code) ? 'python-pptx' : null, + /\bimport\s+docx\b|\bfrom\s+docx\b/.test(code) ? 'python-docx' : null ].filter(Boolean); console.log(packages); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 69bc84986d..889c00a206 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -313,7 +313,9 @@ /\bimport\s+tiktoken\b|\bfrom\s+tiktoken\b/.test(code) ? 'tiktoken' : null, /\bimport\s+pytz\b|\bfrom\s+pytz\b/.test(code) ? 'pytz' : null, /\bimport\s+openpyxl\b|\bfrom\s+openpyxl\b/.test(code) ? 'openpyxl' : null, - /\.(read|to)_excel\(|\.Excel(Writer|File)\(/.test(code) ? 'openpyxl' : null + /\.(read|to)_excel\(|\.Excel(Writer|File)\(/.test(code) ? 'openpyxl' : null, + /\bimport\s+pptx\b|\bfrom\s+pptx\b/.test(code) ? 'python-pptx' : null, + /\bimport\s+docx\b|\bfrom\s+docx\b/.test(code) ? 'python-docx' : null ].filter(Boolean); const worker = getOrCreateWorker(); diff --git a/static/pyodide/pyodide-lock.json b/static/pyodide/pyodide-lock.json index 25dc86aa67..4c363247c1 100644 --- a/static/pyodide/pyodide-lock.json +++ b/static/pyodide/pyodide-lock.json @@ -5203,6 +5203,50 @@ "numpy", "pandas" ] + }, + "python-pptx": { + "name": "python-pptx", + "version": "1.0.2", + "file_name": "python_pptx-1.0.2-py3-none-any.whl", + "install_dir": "site", + "sha256": "160838e0b8565a8b1f67947675886e9fea18aa5e795db7ae531606d68e785cba", + "package_type": "package", + "imports": [ + "python_pptx" + ], + "depends": [ + "lxml", + "pillow", + "xlsxwriter", + "typing-extensions" + ] + }, + "python-docx": { + "name": "python-docx", + "version": "1.2.0", + "file_name": "python_docx-1.2.0-py3-none-any.whl", + "install_dir": "site", + "sha256": "3fd478f3250fbbbfd3b94fe1e985955737c145627498896a8a6bf81f4baf66c7", + "package_type": "package", + "imports": [ + "python_docx" + ], + "depends": [ + "lxml", + "typing-extensions" + ] + }, + "xlsxwriter": { + "name": "xlsxwriter", + "version": "3.2.9", + "file_name": "xlsxwriter-3.2.9-py3-none-any.whl", + "install_dir": "site", + "sha256": "9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3", + "package_type": "package", + "imports": [ + "xlsxwriter" + ], + "depends": [] } } } \ No newline at end of file From 60ded561a92b868d7cea4dd3d0af683c4359de44 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:51:29 +0200 Subject: [PATCH 035/583] fix: load models before resolving automation model defaults (#30379) Automations lost their model's tool bindings (including MCP servers), default features such as web search, default filters and terminal on the first run after a restart. The model then answered that it had no tools. Later runs and a manual Regenerate worked. Automations on the base models cache were not affected. The run read the model from app.state.MODELS before anything had loaded it. After a restart or a connection settings save, that cache stays empty until a browser loads the model list or a chat completion runs. The completion runs only after the automation has already built its request. execute_automation now loads the models when the cache is empty, using the same guard chat_completion uses, before either the chat or the channel target reads it. This also fixes channel automations showing the raw model ID in place of the model name on a cold cache. Verified end to end on a restarted instance with a mock upstream: before, both chat and channel runs reached the pipeline without tool_ids or features. After, both carry the model's tools and web search, and the upstream receives the tool. Fixes #27694 --- backend/open_webui/utils/automations.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/open_webui/utils/automations.py b/backend/open_webui/utils/automations.py index 54887467c0..be5d6868f1 100644 --- a/backend/open_webui/utils/automations.py +++ b/backend/open_webui/utils/automations.py @@ -37,6 +37,7 @@ from open_webui.models.messages import MessageForm from open_webui.models.users import Users from open_webui.utils.auth import create_token from open_webui.utils.misc import parse_duration +from open_webui.utils.models import get_all_models from open_webui.utils.recurrence import ( _resolve_tz, next_n_runs_ns, @@ -390,6 +391,9 @@ async def execute_automation(app, automation: AutomationModel) -> None: expires_delta=expires_delta or timedelta(hours=1), ) + if not app.state.MODELS: + await get_all_models(_build_request(app, token=token), user=user) + target = automation.data.get('target') or {} if target.get('type') == 'channel': await _execute_channel_automation(app, automation, user, prompt, model_id, token) From 4e4b324246e8084fe87abd559677f1a180b138f2 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:51:39 +0200 Subject: [PATCH 036/583] fix: skip the pyodide plt.show patch when matplotlib is not loaded (#30381) Any Python code that only mentioned "matplotlib" (a comment, a string, or an importlib.util.find_spec("matplotlib") check) failed with ModuleNotFoundError before a single line of it ran. The plt.show() patch was applied on a plain substring match, but matplotlib is only installed when the code actually imports it, so the patch's own import crashed the run. The user's try/except could not catch it, because their code never started. The same thing broke the code editor's Python formatter on any code that imports matplotlib, since that run only installs black. The patch now also requires matplotlib to be present in the runtime's loaded packages, in both the worker and the sandboxed iframe host. Real matplotlib code still gets inline PNG output from plt.show(), and code that merely mentions matplotlib runs unchanged. Gating on the callers' import regex instead was also tested and still fails the formatter case, because there the code containing the import sits inside a string while only black is installed. Fixes #29894 --- src/lib/pyodide/pyodideSandboxHost.ts | 2 +- src/lib/workers/pyodide.worker.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/pyodide/pyodideSandboxHost.ts b/src/lib/pyodide/pyodideSandboxHost.ts index 2ba1ca2b27..b99ac0fc71 100644 --- a/src/lib/pyodide/pyodideSandboxHost.ts +++ b/src/lib/pyodide/pyodideSandboxHost.ts @@ -134,7 +134,7 @@ const sandboxScript = String.raw` let result = null; if (files && files.length > 0) upload(files); try { - if (code.includes('matplotlib')) await patchMatplotlib(); + if (code.includes('matplotlib') && 'matplotlib' in pyodide.loadedPackages) await patchMatplotlib(); result = clean(await pyodide.runPythonAsync(code)); } catch (error) { stderr = error && error.message ? error.message : String(error); diff --git a/src/lib/workers/pyodide.worker.ts b/src/lib/workers/pyodide.worker.ts index cdbd9006ec..4eb3ee7a31 100644 --- a/src/lib/workers/pyodide.worker.ts +++ b/src/lib/workers/pyodide.worker.ts @@ -191,7 +191,7 @@ async function executeCode( try { // check if matplotlib is imported in the code - if (code.includes('matplotlib')) { + if (code.includes('matplotlib') && 'matplotlib' in self.pyodide.loadedPackages) { // Override plt.show() to return base64 image await self.pyodide.runPythonAsync(`import base64 import os From 1b5a8ac5a77ed6aa49ce737ccb968f79ee3168c7 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:51:57 +0200 Subject: [PATCH 037/583] fix: keep model default features when comparing multiple models (#30383) Adding a second model to a chat turned off Web Search, Image Generation and Code Interpreter even when every selected model has them as Default Features, so the comparison ran without them. Changing the selection clears the feature toggles and then reapplies the model defaults, but defaults were only reapplied for a single model. In compare mode a default feature is now turned on when every selected model supports it and has it as a default, since the toggles are shared by all models in the comparison. It only ever turns features on, so flags passed in the URL (?web-search=true) are not overwritten. Single-model defaults are unchanged. The input reset now waits for the model-selection update to finish before applying defaults. Before, the Web Search value actually sent could disagree with the toggle on screen: a single model with Web Search on by default showed the toggle on but sent it off, and switching to a model without it showed it off but still sent it on (see #29326). The toggle and the request now match. Fixes #30310 --- src/lib/components/chat/Chat.svelte | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 5141fed098..8b86efd8dc 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -968,6 +968,8 @@ }; const resetInput = async () => { + // Let the $: update finish first, or webSearchActive misses the default-feature writes + await tick(); selectedToolIds = []; selectedSkillIds = []; selectedFilterIds = []; @@ -1020,6 +1022,41 @@ skills.set(await getSkills(localStorage.token)); } if (selectedModels.length !== 1 && !atSelectedModel) { + const comparedModels = selectedModels + .filter((id) => id) + .map((id) => $models.find((m) => m.id === id)); + const isSharedDefaultFeature = (feature) => + comparedModels.length > 0 && + comparedModels.every( + (model) => + model?.info?.meta?.capabilities?.[feature] && + model?.info?.meta?.defaultFeatureIds?.includes(feature) + ); + + if ( + isSharedDefaultFeature('image_generation') && + $config?.features?.enable_image_generation && + ($user?.role === 'admin' || $user?.permissions?.features?.image_generation) + ) { + imageGenerationEnabled = true; + } + + if ( + isSharedDefaultFeature('web_search') && + $config?.features?.enable_web_search && + ($user?.role === 'admin' || $user?.permissions?.features?.web_search) + ) { + webSearchEnabled = true; + } + + if ( + isSharedDefaultFeature('code_interpreter') && + $config?.features?.enable_code_interpreter && + ($user?.role === 'admin' || $user?.permissions?.features?.code_interpreter) + ) { + codeInterpreterEnabled = true; + } + return; } From 7924ce7d791eb48606098a71a8f592e5ca9e0c79 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:52:09 +0200 Subject: [PATCH 038/583] fix: unhandled play() rejection wedges the Read Aloud button; auto-playback silent on iOS (#30373) On iOS and iPadOS, auto-playback of a finished reply is never heard and the speaker button stays stuck in "speaking", so the first tap only stops a playback that never started. WebKit rejects play() started from a network event, and the audio queue ignored that rejection, so its state never reset. Call mode on the same devices was silent too. A rejected play() now resets the queue, returns the button to idle and shows a toast (an aborted play from stop or a message switch is ignored). The first user tap or keypress plays a 10 ms silent clip on the shared audio element, which WebKit then allows to play later without a gesture; if that attempt fails it retries on the next gesture. Call mode plays unmuted: WebKit pauses an element that is unmuted after play() outside a gesture, even once unlocked. The unlock and call mode change follow the reporter's on-device tests (iPhone iOS 27, iPad iPadOS 26.6.2). Verified in Chromium with autoplay restricted: the base queue wedges and drops later chunks; with the fix it reports the error, recovers, the unlock plays once and never interrupts audio already playing, and chunks queued during the unlock still play. Fixes #30262 --- .../chat/MessageInput/CallOverlay.svelte | 16 +++---- .../chat/Messages/ResponseMessage.svelte | 7 +++- src/lib/i18n/locales/en-US/translation.json | 1 + src/lib/utils/audio.ts | 42 +++++++++++++++++-- 4 files changed, 52 insertions(+), 14 deletions(-) diff --git a/src/lib/components/chat/MessageInput/CallOverlay.svelte b/src/lib/components/chat/MessageInput/CallOverlay.svelte index 1340050a4a..209f63f508 100644 --- a/src/lib/components/chat/MessageInput/CallOverlay.svelte +++ b/src/lib/components/chat/MessageInput/CallOverlay.svelte @@ -456,21 +456,17 @@ }; audioElement.src = audio.src; - audioElement.muted = true; + // stopAllAudio mutes it; unmuting after play() outside a gesture makes WebKit pause it + audioElement.muted = false; audioElement.playbackRate = $settings.audio?.tts?.playbackRate ?? 1; audioElement.onended = finish; audioElement.onerror = () => finish(); audioElement.onpause = finish; - audioElement - .play() - .then(() => { - audioElement.muted = false; - }) - .catch((error) => { - console.error(error); - finish(error); - }); + audioElement.play().catch((error) => { + console.error(error); + finish(error); + }); }); } else { return Promise.resolve(); diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 48af8d0304..fa7f7ab933 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -287,9 +287,14 @@ } else { $audioQueue.setId(`${message.id}`); $audioQueue.setPlaybackRate($settings.audio?.tts?.playbackRate ?? 1); - $audioQueue.onStopped = () => { + $audioQueue.onStopped = ({ event }) => { speaking = false; speakingIdx = undefined; + + if (event === 'error') { + speakAbort?.abort(); + toast.error($i18n.t('Audio playback failed')); + } }; loadingSpeech = true; diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index be708f6daf..c5aa62d0df 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -239,6 +239,7 @@ "Attach Notes": "", "Attach Webpage": "", "Attention to detail": "", + "Audio playback failed": "", "Audio player": "", "August": "", "Auth": "", diff --git a/src/lib/utils/audio.ts b/src/lib/utils/audio.ts index de36c9f9f2..238b61c3f2 100644 --- a/src/lib/utils/audio.ts +++ b/src/lib/utils/audio.ts @@ -1,10 +1,13 @@ -type AudioQueueEvent = 'stop' | 'empty-queue' | 'id-change'; +type AudioQueueEvent = 'stop' | 'empty-queue' | 'id-change' | 'error'; interface AudioQueueStopDetail { event: AudioQueueEvent; id: string | null; } +const SILENT_WAV = + 'data:audio/wav;base64,UklGRsQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; + export type OnStoppedCallback = (detail: AudioQueueStopDetail) => void; export class AudioQueue { @@ -12,6 +15,7 @@ export class AudioQueue { private queue: string[] = []; private current: string | null = null; private readonly _onEnded = () => this.next(); + private readonly _onGesture = () => this.#unlock(); id: string | null = null; onStopped: OnStoppedCallback | null = null; @@ -19,6 +23,8 @@ export class AudioQueue { constructor(audioElement: HTMLAudioElement) { this.audio = audioElement; this.audio.addEventListener('ended', this._onEnded); + document.addEventListener('pointerdown', this._onGesture, true); + document.addEventListener('keydown', this._onGesture, true); } setId(newId: string) { @@ -50,12 +56,36 @@ export class AudioQueue { } } + /** Play silence inside the first user gesture so WebKit allows later programmatic playback. */ + #unlock() { + if (this.current || !this.audio.paused) return; + + this.audio.src = SILENT_WAV; + this.audio + .play() + .then(() => this.#removeGestureListeners()) + .catch(() => {}) + .finally(() => { + if (this.current) return; + + this.audio.pause(); + if (this.queue.length) this.next(); + }); + } + next() { this.current = this.queue.shift() ?? null; if (this.current) { - this.audio.src = this.current; - this.audio.play(); + const url = this.current; + this.audio.src = url; + this.audio.play().catch((error) => { + if (this.current !== url) return; + + console.error(error); + this.#halt(); + this.onStopped?.({ event: 'error', id: this.id }); + }); } else { this.#halt(); this.onStopped?.({ event: 'empty-queue', id: this.id }); @@ -69,10 +99,16 @@ export class AudioQueue { destroy() { this.audio.removeEventListener('ended', this._onEnded); + this.#removeGestureListeners(); this.#halt(); this.onStopped = null; } + #removeGestureListeners() { + document.removeEventListener('pointerdown', this._onGesture, true); + document.removeEventListener('keydown', this._onGesture, true); + } + /** * Pause audio and clear queue without firing onStopped. * Callers that need the callback should invoke it themselves. From f7ce4024d67efd5588293305873a6890108e849a Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:52:29 +0200 Subject: [PATCH 039/583] fix: keep requested MCP OAuth scope when DCR response omits it (#30384) MCP tool servers using OAuth 2.1 with dynamic client registration authorized without any scope when the authorization server left scope out of its registration response, which RFC 7591 allows (Atlassian and Notion do). Consent completed and the tool showed as connected, but the issued token lacked the scopes the resource requires, so every tool call was refused. Discovered scopes and the custom OAuth Scopes field were both affected. The stored client now falls back to the scope sent in the registration request when the response has none. A scope the server does return is kept as is. Connections registered before this fix already have a null scope stored. The protected resource metadata recovery that static-credential clients already use now also runs for dynamically registered clients, so those connections pick up the discovered scopes on the next load without registering again. Fixes #29967 --- backend/open_webui/main.py | 6 ++---- backend/open_webui/routers/configs.py | 4 ++-- backend/open_webui/utils/oauth.py | 13 ++++++------- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index e7c2915130..3e0f9db89f 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -264,7 +264,7 @@ from open_webui.utils.oauth import ( encrypt_data, get_oauth_client_info_with_dynamic_client_registration, get_oauth_client_info_with_static_credentials, - recover_static_oauth_client_metadata, + recover_oauth_client_metadata, resolve_oauth_client_info, ) from open_webui.utils.plugin import install_tool_and_function_dependencies @@ -636,9 +636,7 @@ async def initialize_runtime_config(app: FastAPI): if server_id and auth_type in ('oauth_2.1', 'oauth_2.1_static'): try: oauth_client_info = resolve_oauth_client_info(tool_server_connection) - oauth_client_info = await recover_static_oauth_client_metadata( - tool_server_connection, oauth_client_info - ) + oauth_client_info = await recover_oauth_client_metadata(tool_server_connection, oauth_client_info) oauth_client_info = apply_connection_oauth_options(tool_server_connection, oauth_client_info) app.state.oauth_client_manager.add_client( f'mcp:{server_id}', diff --git a/backend/open_webui/routers/configs.py b/backend/open_webui/routers/configs.py index c9531702e7..35f1b23cf4 100644 --- a/backend/open_webui/routers/configs.py +++ b/backend/open_webui/routers/configs.py @@ -22,7 +22,7 @@ from open_webui.utils.oauth import ( get_discovery_urls, get_oauth_client_info_with_dynamic_client_registration, get_oauth_client_info_with_static_credentials, - recover_static_oauth_client_metadata, + recover_oauth_client_metadata, resolve_oauth_client_info, ) from open_webui.utils.tools import ( @@ -273,7 +273,7 @@ async def set_tool_servers_config( if auth_type in ('oauth_2.1', 'oauth_2.1_static') and server_id: try: oauth_client_info = resolve_oauth_client_info(connection) - oauth_client_info = await recover_static_oauth_client_metadata(connection, oauth_client_info) + oauth_client_info = await recover_oauth_client_metadata(connection, oauth_client_info) oauth_client_info = apply_connection_oauth_options(connection, oauth_client_info) request.app.state.oauth_client_manager.add_client( f'{server_type}:{server_id}', diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index d523aad0ba..25c6a86a99 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -612,6 +612,8 @@ async def get_oauth_client_info_with_dynamic_client_registration( oauth_client_info = OAuthClientInformationFull.model_validate( { **registration_response_json, + # RFC 7591: the server may omit scope; keep the requested one. + 'scope': registration_response_json.get('scope') or oauth_client_metadata.scope, 'issuer': oauth_server_metadata_url, 'server_metadata': oauth_server_metadata, 'resource': resource, @@ -799,10 +801,7 @@ def build_oauth_request_params(client_info: OAuthClientInformationFull | None) - return params -async def recover_static_oauth_client_metadata(connection: dict, oauth_client_info: dict) -> dict: - if connection.get('auth_type') != 'oauth_2.1_static': - return oauth_client_info - +async def recover_oauth_client_metadata(connection: dict, oauth_client_info: dict) -> dict: if oauth_client_info.get('scope') and oauth_client_info.get('resource'): return oauth_client_info @@ -813,13 +812,13 @@ async def recover_static_oauth_client_metadata(connection: dict, oauth_client_in try: resource_metadata = await get_protected_resource_metadata(server_url) except Exception as e: - log.debug('Unable to recover static OAuth metadata for %s: %s', server_url, e) + log.debug('Unable to recover OAuth metadata for %s: %s', server_url, e) return oauth_client_info recovered = {**oauth_client_info} if not recovered.get('scope') and resource_metadata.scopes_supported: recovered['scope'] = ' '.join(resource_metadata.scopes_supported) - log.info('Recovered static OAuth scopes for %s from protected resource metadata', server_url) + log.info('Recovered OAuth scopes for %s from protected resource metadata', server_url) if not recovered.get('resource') and resource_metadata.resource: recovered['resource'] = resource_metadata.resource @@ -916,7 +915,7 @@ class OAuthClientManager: try: oauth_client_info = resolve_oauth_client_info(connection) - oauth_client_info = await recover_static_oauth_client_metadata(connection, oauth_client_info) + oauth_client_info = await recover_oauth_client_metadata(connection, oauth_client_info) oauth_client_info = apply_connection_oauth_options(connection, oauth_client_info) return self.add_client(expected_client_id, OAuthClientInformationFull(**oauth_client_info))['client'] except InvalidToken: From b6191a0510160aa712ddf985bbd243b7853ccfdc Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:54:23 +0200 Subject: [PATCH 040/583] fix: stop storing MCP image/audio base64 in file metadata (#30419) When an MCP tool returns an image or audio item, the file is uploaded to storage, but the whole MCP item, including its base64 payload, was also passed as upload metadata. That metadata is persisted in the file table's meta column, so every such result was stored twice: once in storage and once as base64 in the database, growing the DB and every file query that loads meta. The MCP path now passes only chat_id, message_id and session_id, the same metadata the non-MCP tool image path already stores. Nothing reads the removed key. Fixes #30411 --- backend/open_webui/utils/middleware.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 523c8bff8b..d8ed066c96 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1195,7 +1195,6 @@ async def process_tool_result( 'chat_id': metadata.get('chat_id', None), 'message_id': metadata.get('message_id', None), 'session_id': metadata.get('session_id', None), - 'result': item, }, user, ) From f7294161fada985daae69354403f6a0f8eebf4ed Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:54:58 +0200 Subject: [PATCH 041/583] fix: show ComfyUI images saved by the Save Image (Advanced) node (#30420) When a ComfyUI workflow ends in the core "Save Image (Advanced)" node, ComfyUI finishes the job and saves the image, but Open WebUI returns an empty result, so the chat shows nothing. Image editing workflows such as the Qwen Image Edit template use this node by default. Open WebUI only collects images from output nodes of type SaveImage and PreviewImage. This adds SaveImageAdvanced to that list. The node reports its files in the same format as SaveImage, so the rest of the download and storage path works unchanged. Generation and editing share this code, so both are fixed. Fixes #30404 --- backend/open_webui/utils/images/comfyui.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/open_webui/utils/images/comfyui.py b/backend/open_webui/utils/images/comfyui.py index 11a0ebb8fe..6447a69f88 100644 --- a/backend/open_webui/utils/images/comfyui.py +++ b/backend/open_webui/utils/images/comfyui.py @@ -91,6 +91,7 @@ async def _ws_get_images(ws, workflow, client_id, base_url, api_key): node_output = history['outputs'][node_id] if node_id in workflow and workflow[node_id].get('class_type') in [ 'SaveImage', + 'SaveImageAdvanced', 'PreviewImage', ]: if 'images' in node_output: From 14c5b6570496f964dc13eb1d43f06d40a7d90f78 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:55:07 +0200 Subject: [PATCH 042/583] refac: tighten details and image patterns in background task message cleanup (#30394) The patterns that remove details blocks and inline images from task messages now stop at the next details tag, bracket or parenthesis. --- backend/open_webui/utils/middleware.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index d8ed066c96..164ec4d3a1 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -3865,7 +3865,7 @@ async def background_tasks_handler(ctx): if isinstance(content, str): content = re.sub( - r']*>.*?<\/details>|!\[.*?\]\(.*?\)', + r']*>(?:(?!|!\[[^\[\]]*\]\([^()]*\)', '', content, flags=re.S | re.I, From e14f245586226ba5e3fabc2d8adee188ca7cd919 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:55:21 +0200 Subject: [PATCH 043/583] fix: keep the M mute shortcut working during voice calls (#30421) In voice mode, pressing M after a turn typed an "m" into the chat box instead of muting. After each voice message the chat input pulled keyboard focus back to itself, and the call overlay ignores M while focus is in a text field so typing still works. The chat input now leaves focus alone while a call is open: clearing it after a send, the remount on the first message of a new chat and the editor's autofocus all skip focusing during a call. Clicking into the box and typing during a call still works, and outside a call the input focuses exactly as before. Checked in a browser with a fake microphone: M mutes after the first, second and third turn, in new and existing chats; "m" typed into a focused input during a call still types. Fixes #30406 --- src/lib/components/chat/MessageInput.svelte | 6 ++++-- src/lib/components/common/RichTextInput.svelte | 13 +++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index e6b746e3d3..5c5c67cca2 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -1588,8 +1588,10 @@ loaded = true; window.setTimeout(() => { - const chatInput = document.getElementById('chat-input'); - chatInput?.focus(); + if (!$showCallOverlay) { + const chatInput = document.getElementById('chat-input'); + chatInput?.focus(); + } }, 0); window.addEventListener('keydown', onKeyDown); diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte index 5e4f5b1d90..7ddf962af4 100644 --- a/src/lib/components/common/RichTextInput.svelte +++ b/src/lib/components/common/RichTextInput.svelte @@ -2,7 +2,7 @@ import { marked } from 'marked'; import DOMPurify from 'dompurify'; import equal from 'fast-deep-equal'; - import { skills, terminalSkills } from '$lib/stores'; + import { showCallOverlay, skills, terminalSkills } from '$lib/stores'; marked.use({ breaks: true, @@ -346,6 +346,9 @@ export let insertPromptAsRichText = false; export let floatingMenuPlacement = 'bottom-start'; + // Keep focus off the chat input during a call so the call overlay's M shortcut works + $: suppressAutoFocus = messageInput && $showCallOverlay; + let content = null; let htmlValue = ''; let jsonValue = ''; @@ -550,7 +553,9 @@ selectNextTemplate(editor.view.state, editor.view.dispatch); // Ensure the editor is still valid before trying to focus - focus(); + if (!suppressAutoFocus) { + focus(); + } }; export const insertContent = (content) => { @@ -710,7 +715,7 @@ // After updating the state, try to find and select the next template setTimeout(() => { const templateFound = selectNextTemplate(editor.view.state, editor.view.dispatch); - if (!templateFound) { + if (!templateFound && !suppressAutoFocus) { editor.commands.focus('end'); } }, 0); @@ -945,7 +950,7 @@ ...(collaboration && provider ? [provider.getEditorExtension()] : []) ], content: provider ? undefined : content, - autofocus: messageInput ? true : false, + autofocus: messageInput && !$showCallOverlay, onTransaction: () => { if (!editor) return; From d9dff09c30a30d1a46a2d3bf738f5fca3ec4d5fa Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 05:55:57 +0200 Subject: [PATCH 044/583] refac: build the SQLite LIKE regex from wildcard-split segments (#30393) Each '%'-separated segment of the LIKE pattern is now matched with an atomic group. --- backend/open_webui/internal/db.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/backend/open_webui/internal/db.py b/backend/open_webui/internal/db.py index 7fb0d17b19..e2f523cfc2 100644 --- a/backend/open_webui/internal/db.py +++ b/backend/open_webui/internal/db.py @@ -348,15 +348,16 @@ elif 'sqlite' in SQLALCHEMY_DATABASE_URL: if compiled is False: return False if compiled is None: - regex = [] + segments = [''] escaped = False for char in pattern: if escape and not escaped and char == escape: escaped = True continue - regex.append( - '.*' if not escaped and char == '%' else '.' if not escaped and char == '_' else re.escape(char) - ) + if not escaped and char == '%': + segments.append('') + else: + segments[-1] += '.' if not escaped and char == '_' else re.escape(char) escaped = False if escaped: compiled = False @@ -364,7 +365,11 @@ elif 'sqlite' in SQLALCHEMY_DATABASE_URL: compiled_patterns.clear() compiled_patterns[key] = compiled return False - compiled = re.compile(''.join(regex), re.DOTALL) + # Atomic groups pin each middle segment to its first match, so '%' never backtracks. + regex = segments[0] + ''.join(f'(?>.*?{segment})' for segment in segments[1:-1]) + if len(segments) > 1: + regex += '.*' + segments[-1] + compiled = re.compile(regex, re.DOTALL) if len(compiled_patterns) >= 512: compiled_patterns.clear() compiled_patterns[key] = compiled From aea7d34f456e5a6621c7daa6e74a586c65488b45 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 24 Sep 2026 00:00:19 -0400 Subject: [PATCH 045/583] refac --- src/lib/components/chat/Chat.svelte | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 8b86efd8dc..b84c924a18 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -2566,19 +2566,31 @@ }; const sendQueuedMessageNow = async (id) => { + if (processingQueueChats.has($chatId)) return; + const queue = $chatRequestQueues[$chatId] ?? []; const item = queue.find((m) => m.id === id); if (!item || (item.files ?? []).some((file) => ['uploading', 'error'].includes(file.status))) { return; } - chatRequestQueues.update((q) => ({ - ...q, - [$chatId]: queue.filter((m) => m.id !== id) - })); - await stopResponse(false); - await tick(); - await submitPrompt(item.prompt, item.files); + const targetChatId = $chatId; + processingQueueChats.add(targetChatId); + try { + chatRequestQueues.update((q) => ({ + ...q, + [targetChatId]: queue.filter((m) => m.id !== id) + })); + await stopResponse(false); + await tick(); + await submitPrompt(item.prompt, item.files); + } finally { + processingQueueChats.delete(targetChatId); + // Completion can arrive before submitPrompt returns, while the queue is locked. + if ($chatId === targetChatId) { + await processNextInQueue(targetChatId); + } + } }; const editQueuedMessage = (id) => { @@ -3824,7 +3836,7 @@ } if (responseMessage) { - history.messages[history.currentId] = responseMessage; + history.messages[responseMessage.id] = responseMessage; } if (shouldAutoScrollResponse()) { From e67d7f9e408e5def04899c033b44b2af9ae2d719 Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:00:41 -0400 Subject: [PATCH 046/583] fix: stop Interface settings save from overwriting the default model (#30953) --- src/lib/components/common/InterfaceSettings.svelte | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/lib/components/common/InterfaceSettings.svelte b/src/lib/components/common/InterfaceSettings.svelte index fcdc94d95b..d64c56291d 100644 --- a/src/lib/components/common/InterfaceSettings.svelte +++ b/src/lib/components/common/InterfaceSettings.svelte @@ -42,7 +42,6 @@ let userLocation = false; // Interface - let defaultModelId = ''; let showUsername = false; let highContrastMode = false; @@ -247,7 +246,6 @@ } saveSettings({ - models: [defaultModelId], imageCompressionSize: imageCompressionSize, fontFamily }); @@ -387,11 +385,6 @@ imageCompressionSize = currentSettings?.imageCompressionSize ?? { width: '', height: '' }; imageCompressionInChannels = currentSettings?.imageCompressionInChannels ?? true; - defaultModelId = currentSettings?.models?.at(0) ?? ''; - if ($config?.default_models) { - defaultModelId = $config.default_models.split(',')[0]; - } - backgroundImageUrl = currentSettings?.backgroundImageUrl ?? null; webSearch = currentSettings?.webSearch ?? null; From 5f8d8f0c5eb69121b7c86573402858fa0200b98d Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:03:44 -0400 Subject: [PATCH 047/583] fix: resume the send queue after a queued message is deleted or edited (#30447) --- src/lib/components/chat/Chat.svelte | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index b84c924a18..26741caac6 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -2593,7 +2593,7 @@ } }; - const editQueuedMessage = (id) => { + const editQueuedMessage = async (id) => { const queue = $chatRequestQueues[$chatId] ?? []; const item = queue.find((m) => m.id === id); if (!item) return; @@ -2604,14 +2604,18 @@ })); files = item.files; messageInput?.setText(item.prompt); + + await processNextInQueue($chatId); }; - const deleteQueuedMessage = (id) => { + const deleteQueuedMessage = async (id) => { const queue = $chatRequestQueues[$chatId] ?? []; chatRequestQueues.update((q) => ({ ...q, [$chatId]: queue.filter((m) => m.id !== id) })); + + await processNextInQueue($chatId); }; const chatCompletedHandler = async (_chatId, modelId, responseMessageId, messages) => { From a046e070442f7f48a3d875b7224511b6f4d86aa7 Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:05:37 -0400 Subject: [PATCH 048/583] fix: save a file edit made through write access to a shared knowledge base (#30448) --- backend/open_webui/routers/retrieval.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 6c5f32ccb0..b9375e56c6 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -1936,10 +1936,10 @@ async def process_file( The session is committed before external API calls, and updates use a fresh session. """ config = await get_retrieval_config() - if user.role == 'admin': - file = await Files.get_file_by_id(form_data.file_id, db=db) - else: - file = await Files.get_file_by_id_and_user_id(form_data.file_id, user.id, db=db) + file = await Files.get_file_by_id(form_data.file_id, db=db) + if file and file.user_id != user.id and user.role != 'admin': + if not await has_access_to_file(file.id, 'write', user, db=db): + file = None if file: try: From e6e9fc97217681bda5a8c6d88be9086f6e5e6f55 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 24 Sep 2026 06:08:48 +0200 Subject: [PATCH 049/583] fix: keep the composer's + and Integrations buttons visible at larger UI Scale on mobile (#30374) On a phone with UI Scale at 1.2x or higher, the model selector in the chat composer covers the Integrations button, so it cannot be seen or tapped. From 1.3x it covers the + button too, which leaves no way to attach files or open integrations. The model selector's width cap is rem based, so it grows with UI Scale, and the left button group could shrink to nothing, so the selector took the space first. The + and Integrations buttons now sit in a group that keeps its width, and only the toggled chips stay in the scrolling strip. When space runs out the model name truncates, and chips scroll as before. Measured in the real app at a 360px mobile viewport: before, Integrations is covered at 1.2x and both buttons at 1.3x and 1.5x; after, both are tappable at every scale, with the model name truncated (114px at 1.3x). Button positions at 1x and on desktop are unchanged to the pixel, with and without chips. Fixes #29989 --- src/lib/components/chat/MessageInput.svelte | 504 ++++++++++---------- 1 file changed, 251 insertions(+), 253 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 5c5c67cca2..8d5107286e 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -2223,7 +2223,7 @@
-
+
- {/if} -
- {#if showWebSearchButton || showImageGenerationButton || showCodeInterpreterButton || showToolsButton || showSkillsButton || (toggleFilters && toggleFilters.length > 0)} - oauthRedirectHandler(tool, chatInputDraft)} - {onWebSearchToggle} - closeOnOutsideClick={integrationsMenuCloseOnOutsideClick} - onShowValves={(e) => { - const { type, id } = e; - selectedValvesType = type; - selectedValvesItemId = id; - showValvesModal = true; - integrationsMenuCloseOnOutsideClick = false; - }} - onClose={async () => { - await tick(); + oauthRedirectHandler(tool, chatInputDraft)} + {onWebSearchToggle} + closeOnOutsideClick={integrationsMenuCloseOnOutsideClick} + onShowValves={(e) => { + const { type, id } = e; + selectedValvesType = type; + selectedValvesItemId = id; + showValvesModal = true; + integrationsMenuCloseOnOutsideClick = false; + }} + onClose={async () => { + await tick(); - const chatInput = document.getElementById('chat-input'); - chatInput?.focus(); - }} + const chatInput = document.getElementById('chat-input'); + chatInput?.focus(); + }} + > + + + {/if} +
+ +
+ {#if selectedModelIds.length === 1 && $models.find((m) => m.id === selectedModelIds[0])?.has_user_valves} +
+ - + +
+ {/if} + +
+ {#if (selectedToolIds ?? []).length > 0} + + + {/if} - {#if selectedModelIds.length === 1 && $models.find((m) => m.id === selectedModelIds[0])?.has_user_valves} -
- - - -
+ {#if (selectedSkillIds ?? []).length > 0} + + + {/if} -
- {#if (selectedToolIds ?? []).length > 0} + {#each selectedFilterIds as filterId (filterId)} + {@const filter = toggleFilters.find((f) => f.id === filterId)} + {#if filter} - - - {/if} - - {#if (selectedSkillIds ?? []).length > 0} - - - - {/if} - - {#each selectedFilterIds as filterId (filterId)} - {@const filter = toggleFilters.find((f) => f.id === filterId)} - {#if filter} - - - - {/if} - {/each} - - {#if webSearchEnabled && showWebSearchButton} - - - - {/if} - - {#if imageGenerationEnabled && showImageGenerationButton} - - - - {/if} - - {#if codeInterpreterEnabled && showCodeInterpreterButton} - - - - {/if} - - {#each pendingOAuthTools as pendingTool (pendingTool.id)} - - {/each} - - - {#if showTerminalSelector} - {/if} -
+ {/each} + + {#if webSearchEnabled && showWebSearchButton} + + + + {/if} + + {#if imageGenerationEnabled && showImageGenerationButton} + + + + {/if} + + {#if codeInterpreterEnabled && showCodeInterpreterButton} + + + + {/if} + + {#each pendingOAuthTools as pendingTool (pendingTool.id)} + + + + {/each} + + + {#if showTerminalSelector} + + {/if}
From ff89756b6dcafc129d29dea3c4a7c0f93ebc0895 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 24 Sep 2026 00:14:58 -0400 Subject: [PATCH 050/583] refac --- src/lib/components/common/Switch.svelte | 4 +++- src/lib/components/workspace/Prompts.svelte | 7 ++++++- .../components/workspace/Prompts/PromptMenu.svelte | 11 ++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/lib/components/common/Switch.svelte b/src/lib/components/common/Switch.svelte index 1bfb6c3274..5702e6a8da 100644 --- a/src/lib/components/common/Switch.svelte +++ b/src/lib/components/common/Switch.svelte @@ -6,6 +6,7 @@ import Tooltip from './Tooltip.svelte'; export let state = true; + export let disabled = false; export let id = ''; export let ariaLabelledbyId = ''; export let ariaLabel = ''; @@ -33,10 +34,11 @@ +
- - - -
- -
- {#each servers ?? [] as server, idx} - { - updateHandler(); - }} - onDelete={() => { - servers = (servers ?? []).filter((_, i) => i !== idx); - updateHandler(); - }} - /> - {/each} -
- - {#if (servers ?? []).length === 0} -
- {$i18n.t('No tool server connections configured.')} -
- {/if} - -
- {$i18n.t('Connect to your own OpenAPI compatible external tool servers.')} -
-
- - - -
-
-
- {$i18n.t('settings.admin.integrations.openTerminal.label')} +
+ {#each servers ?? [] as server, idx} + { + updateHandler(); + }} + onDelete={() => { + servers = (servers ?? []).filter((_, i) => i !== idx); + updateHandler(); + }} + /> + {/each}
- - - + {#if (servers ?? []).length === 0} +
+ {$i18n.t('No tool server connections configured.')} +
+ {/if} + +
+ {$i18n.t('Connect to your own OpenAPI compatible external tool servers.')} +
+ -
- {#each terminalConnections as connection, idx} -
- -
-
- - - + +
+
+
+ {$i18n.t('settings.admin.integrations.openTerminal.label')} +
+ + + +
+ +
+ {#each terminalConnections as connection, idx} +
+ +
- {connection.name || connection.url || $i18n.t('New Terminal')} + + + + +
+ {connection.name || connection.url || $i18n.t('New Terminal')} +
-
- + -
- - + + + - - - - - - { - terminalConnections = terminalConnections.map((c, i) => - i === idx ? { ...c, enabled: !(c?.enabled !== false) } : c - ); - saveTerminalServers(); - }} - /> - + { + terminalConnections = terminalConnections.map((c, i) => + i === idx ? { ...c, enabled: !(c?.enabled !== false) } : c + ); + saveTerminalServers(); + }} + /> + +
-
- {/each} -
- - {#if terminalConnections.length === 0} -
- {$i18n.t('No terminal connections configured.')} + {/each}
- {/if} -
- {$i18n.t( - 'Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.' - )} + {#if terminalConnections.length === 0} +
+ {$i18n.t('No terminal connections configured.')} +
+ {/if} + +
+ {$i18n.t( + 'Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.' + )} +
+ {$i18n.t('Learn more about Open Terminal')} ↗
- {$i18n.t('Learn more about Open Terminal')} ↗ -
- + + @@ -349,6 +354,7 @@ let:labelId > - {#if $config?.features?.enable_plugins} + {#if $config?.features?.enable_tools}
{ return ( - ($terminalServers ?? []).some((t) => t.id && t.id === tid) || - ($settings?.terminalServers ?? []).some((s) => s.url === tid) + $config?.features?.enable_tool_servers === true && + (($terminalServers ?? []).some((t) => t.id && t.id === tid) || + ($settings?.terminalServers ?? []).some((s) => s.url === tid)) ); }; @@ -3634,7 +3635,8 @@ const skillIds = [...selectedSkillIds]; // Only send terminal_id if the model has terminal capability enabled - const terminalEnabled = model.info?.meta?.capabilities?.terminal ?? true; + const terminalEnabled = + $config?.features?.enable_tool_servers && (model.info?.meta?.capabilities?.terminal ?? true); const useChatVariablesFallback = !_chatId || $temporaryChatEnabled || isTemporaryChatId(_chatId); @@ -3652,21 +3654,30 @@ files: (files?.length ?? 0) > 0 ? files : undefined, - filter_ids: selectedFilterIds.length > 0 ? selectedFilterIds : undefined, - tool_ids: toolIds.length > 0 ? toolIds : undefined, + filter_ids: + $config?.features?.enable_functions && selectedFilterIds.length > 0 + ? selectedFilterIds + : undefined, + tool_ids: toolIds.filter((id) => + id.startsWith('server:') + ? $config?.features?.enable_tool_servers + : $config?.features?.enable_tools + ), skill_ids: skillIds.length > 0 ? skillIds : undefined, terminal_id: terminalEnabled && $selectedTerminalId ? $selectedTerminalId : undefined, - tool_servers: [ - ...($toolServers ?? []).filter( - (server, idx) => toolServerIds.includes(idx) || toolServerIds.includes(server?.id) - ), - // Direct terminal servers — always included when enabled (not routed through selectedToolIds) - ...(terminalEnabled - ? ($terminalServers ?? []) - .filter((server) => !server.id) - .map((server) => ({ ...server, is_terminal: true })) - : []) - ], + tool_servers: $config?.features?.enable_tool_servers + ? [ + ...($toolServers ?? []).filter( + (server, idx) => toolServerIds.includes(idx) || toolServerIds.includes(server?.id) + ), + // Direct terminal servers — always included when enabled (not routed through selectedToolIds) + ...(terminalEnabled + ? ($terminalServers ?? []) + .filter((server) => !server.id) + .map((server) => ({ ...server, is_terminal: true })) + : []) + ] + : [], features: getFeatures(), variables: { ...getPromptVariables( diff --git a/src/lib/components/chat/ChatControls.svelte b/src/lib/components/chat/ChatControls.svelte index 894b545162..c05af53955 100644 --- a/src/lib/components/chat/ChatControls.svelte +++ b/src/lib/components/chat/ChatControls.svelte @@ -75,6 +75,7 @@ chatContextAvailable(selectedSystemTerminal) && !(chatContextNeedsSavedChat(selectedSystemTerminal) && !isSavedChatId(chatId)); $: terminalFilesAvailable = !!( + $config?.features?.enable_tool_servers && $selectedTerminalId && (selectedSystemTerminalAvailable || (!selectedSystemTerminal && diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index b58dee56f1..2adbc27bb3 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -803,6 +803,7 @@ $: hasDirectToolServerAccess = $_user?.role === 'admin' || ($_user?.permissions?.features?.direct_tool_servers ?? true); $: showTerminalSelector = + $config?.features?.enable_tool_servers && terminalCapableModels.length > 0 && (($terminalServers ?? []).some((t) => t.id) || (hasDirectToolServerAccess && diff --git a/src/lib/stores/index.ts b/src/lib/stores/index.ts index 42ad30bb5a..c42bff8a68 100644 --- a/src/lib/stores/index.ts +++ b/src/lib/stores/index.ts @@ -360,6 +360,9 @@ type Config = { enable_community_sharing: boolean; enable_memories: boolean; enable_plugins?: boolean; + enable_tools?: boolean; + enable_functions?: boolean; + enable_tool_servers?: boolean; enable_autocomplete_generation: boolean; enable_direct_connections: boolean; enable_direct_integrations?: boolean; diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index eaa9b600b3..98db930599 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -90,6 +90,11 @@ }; const setToolServers = async () => { + if (!$config?.features?.enable_tool_servers) { + toolServers.set([]); + terminalServers.set([]); + return; + } let toolServersData = await getToolServersData($settings?.toolServers ?? []); toolServersData = toolServersData.filter((data) => { if (!data || data.error) { @@ -234,7 +239,9 @@ return; } - selectedTerminalId.set(localStorage.selectedTerminalId ?? null); + selectedTerminalId.set( + $config?.features?.enable_tool_servers ? (localStorage.selectedTerminalId ?? null) : null + ); const loadToolServers = setToolServers().catch((e) => { console.error('Failed to load tool servers:', e); @@ -389,6 +396,7 @@ // Persist selectedTerminalId across page loads selectedTerminalId.subscribe((value) => { + if (!$config?.features?.enable_tool_servers) return; if (value === null) { delete localStorage.selectedTerminalId; } else { diff --git a/src/routes/(app)/admin/+layout.svelte b/src/routes/(app)/admin/+layout.svelte index 4441644ea5..845e73898f 100644 --- a/src/routes/(app)/admin/+layout.svelte +++ b/src/routes/(app)/admin/+layout.svelte @@ -16,7 +16,7 @@ if ($user?.role !== 'admin') { await goto('/', { replaceState: true }); } else if ( - !$config?.features?.enable_plugins && + !$config?.features?.enable_functions && $page.url.pathname.includes('/admin/functions') ) { await goto('/admin', { replaceState: true }); @@ -84,7 +84,7 @@ href="/admin/evaluations">{$i18n.t('Evaluations')} - {#if $config?.features?.enable_plugins} + {#if $config?.features?.enable_functions} { - if (!$config?.features?.enable_plugins) { + if (!$config?.features?.enable_tools) { goto('/workspace', { replaceState: true }); } }); -{#if $config?.features?.enable_plugins} +{#if $config?.features?.enable_tools} {/if} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index c855db529c..a9b3c78730 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -501,6 +501,10 @@ }; const executeTool = async (data, cb, chatId) => { + if (!$config?.features?.enable_tool_servers) { + cb?.({ error: 'Tool servers are disabled' }); + return; + } const { toolServer, toolServerData, token } = resolveToolServer(data.server?.url); const defaultInline = data?.name === 'display_file' && @@ -568,10 +572,12 @@ event.data.data?.session_id === $socket?.id ) { cb?.({ - connected: [...$connectedUserTerminals.values()].some( - (shell) => - shell.terminalId === event.data.data?.terminal_id && shell.chatId === event.chat_id - ) + connected: + $config?.features?.enable_tool_servers && + [...$connectedUserTerminals.values()].some( + (shell) => + shell.terminalId === event.data.data?.terminal_id && shell.chatId === event.chat_id + ) }); return; } @@ -648,6 +654,7 @@ return; } else if (type === 'request:terminal') { try { + if (!$config?.features?.enable_tool_servers) throw new Error('Tool servers are disabled'); const connection = resolveTerminalConnection( data.terminal_id, [], From 3ef0d1543368c8b0280f501a2dc3cb5e0b9c3785 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 1 Oct 2026 05:21:58 +0200 Subject: [PATCH 182/583] fix: audit log shows passwords that contain a double quote (#31659) * fix: audit log shows passwords that contain a double quote With AUDIT_LOG_LEVEL set to REQUEST or REQUEST_RESPONSE, a password containing a double quote was only masked up to that quote, so a new password like Q"secret was logged as "********"secret. A request with whitespace before the colon, such as "new_password" : "secret", was not masked at all. Any field whose name ends in "password" is now masked through its closing quote in both cases. * fix: audit log records passwords sent back in responses With AUDIT_LOG_LEVEL set to REQUEST_RESPONSE, fields whose name ends in "password" were masked in request bodies, but response bodies were logged unmasked. Saving or opening the LDAP server settings therefore wrote the Application DN Password to the audit log in plain text, because the settings come back in the response, and the Jupyter passwords in the code execution settings leaked the same way. Responses now get the same masking as requests. --- backend/open_webui/utils/audit.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/backend/open_webui/utils/audit.py b/backend/open_webui/utils/audit.py index 177036acb6..9c680a7f43 100644 --- a/backend/open_webui/utils/audit.py +++ b/backend/open_webui/utils/audit.py @@ -113,6 +113,17 @@ class AuditContext: self.response_body.extend(chunk[: self.max_body_size - len(self.response_body)]) +def redact_passwords(body: str) -> str: + if 'password' not in body.lower(): + return body + return re.sub( + r'"(\w*password)"\s*:\s*"(?:[^"\\]|\\.)*"', + r'"\1": "********"', + body, + flags=re.IGNORECASE, + ) + + class AuditLoggingMiddleware: """ ASGI middleware that intercepts HTTP requests and responses to perform audit logging. It captures request/response bodies (depending on audit level), headers, HTTP methods, and user information, then logs a structured audit entry at the end of the request cycle. @@ -282,13 +293,8 @@ class AuditLoggingMiddleware: response_body = context.response_body.decode('utf-8', errors='replace') # Redact sensitive information - if 'password' in request_body.lower(): - request_body = re.sub( - r'"(\w*password)":\s*".*?"', - r'"\1": "********"', - request_body, - flags=re.IGNORECASE, - ) + request_body = redact_passwords(request_body) + response_body = redact_passwords(response_body) entry = AuditLogEntry( id=str(uuid.uuid4()), From c3fbf36384b9e5257acbeac0231e2908a93a6737 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 1 Oct 2026 05:22:08 +0200 Subject: [PATCH 183/583] fix: uploaded files lose Chinese punctuation and quotes (#31655) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Text extracted from any uploaded file had full-width punctuation like :(),!? turned into ASCII :(),!? and curly quotes like “ ” turned into straight quotes, so both the file preview and the model saw altered text. Extracted text now keeps these characters as written, while garbled text from wrong encodings (like café becoming café) is still repaired. Files uploaded before this change keep the altered text until they are uploaded again. Fixes #17087 --- backend/open_webui/retrieval/loaders/main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/loaders/main.py b/backend/open_webui/retrieval/loaders/main.py index a3a3d5b7dd..5f274d4842 100644 --- a/backend/open_webui/retrieval/loaders/main.py +++ b/backend/open_webui/retrieval/loaders/main.py @@ -342,7 +342,12 @@ class Loader: docs = loader.load() # ftfy's auto mode unescapes entities on every line before the first literal '<', rewriting the document. return [ - Document(page_content=ftfy.fix_text(doc.page_content, unescape_html=False), metadata=doc.metadata) + Document( + page_content=ftfy.fix_text( + doc.page_content, unescape_html=False, fix_character_width=False, uncurl_quotes=False + ), + metadata=doc.metadata, + ) for doc in docs ] From bf7b633c89d9670dd0a138d74d38a32c1f78b5e2 Mon Sep 17 00:00:00 2001 From: spoofy <52956041+EllaFr@users.noreply.github.com> Date: Wed, 30 Sep 2026 23:22:18 -0400 Subject: [PATCH 184/583] i18n: complete and review existing Hindi translations (#31662) --- src/lib/i18n/locales/hi-IN/translation.json | 6350 +++++++++---------- 1 file changed, 3175 insertions(+), 3175 deletions(-) diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 7b53192d77..b3f3aa7af1 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -1,2765 +1,2765 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", - "(latest)": "(latest)", - "(leave blank for to use commercial endpoint)": "", - "[Last] dddd [at] h:mm A": "", - "[Today at] h:mm A": "", - "[Yesterday at] h:mm A": "", - "{{ models }}": "{{ मॉडल }}", - "{{count}} added lines_one": "", - "{{count}} added lines_other": "", - "{{COUNT}} Available Skills": "", - "{{COUNT}} Available Tools": "", - "{{COUNT}} characters": "", - "{{COUNT}} document(s) selected.": "", - "{{COUNT}} extracted lines": "", - "{{count}} files_one": "", - "{{count}} files_other": "", - "{{COUNT}} files": "", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", - "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", - "{{count}} filters_one": "", - "{{count}} filters_other": "", - "{{count}} groups_one": "", - "{{count}} groups_other": "", - "{{COUNT}} hidden lines": "", - "{{COUNT}} members": "", - "{{count}} of {{total}} accessible_one": "", - "{{count}} of {{total}} accessible_other": "", - "{{COUNT}} pipeline(s) selected": "", - "{{count}} removed lines_one": "", - "{{count}} removed lines_other": "", - "{{COUNT}} Replies": "", - "{{COUNT}} Rows": "", - "{{count}} selected_one": "", - "{{count}} selected_other": "", - "{{COUNT}} Sources": "", - "{{count}} users_one": "", - "{{count}} users_other": "", - "{{COUNT}} words": "", - "{{COUNT}}d_time_ago": "", - "{{COUNT}}h_time_ago": "", - "{{COUNT}}m_time_ago": "", - "{{COUNT}}w_time_ago": "", - "{{COUNT}}y_time_ago": "", - "{{label}} contains invalid JSON": "", - "{{label}} must be a JSON object": "", - "{{model}} download has been canceled": "", - "{{modelName}} profile image": "", - "{{NAMES}} reacted with {{REACTION}}": "", - "{{page}} / {{totalPages}} ({{rows}} rows)": "", - "{{percent}}% full": "", + "-1 for no limit, or a positive integer for a specific limit": "असीमित के लिए -1, या किसी निश्चित सीमा के लिए धनात्मक पूर्णांक", + "(latest)": "(नवीनतम)", + "(leave blank for to use commercial endpoint)": "(व्यावसायिक एंडपॉइंट का उपयोग करने के लिए खाली छोड़ें)", + "[Last] dddd [at] h:mm A": "[पिछले] dddd [को] h:mm A", + "[Today at] h:mm A": "[आज] h:mm A", + "[Yesterday at] h:mm A": "[कल] h:mm A", + "{{ models }}": "{{ models }}", + "{{count}} added lines_one": "{{count}} जोड़ी गई पंक्ति", + "{{count}} added lines_other": "{{count}} जोड़ी गई पंक्तियाँ", + "{{COUNT}} Available Skills": "{{COUNT}} उपलब्ध कौशल", + "{{COUNT}} Available Tools": "{{COUNT}} उपलब्ध टूल", + "{{COUNT}} characters": "{{COUNT}} अक्षर", + "{{COUNT}} document(s) selected.": "{{COUNT}} दस्तावेज़ चुने गए.", + "{{COUNT}} extracted lines": "{{COUNT}} निकाली गई पंक्तियाँ", + "{{count}} files_one": "{{count}} फ़ाइल", + "{{count}} files_other": "{{count}} फ़ाइलें", + "{{COUNT}} files": "{{COUNT}} फ़ाइलें", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "{{count}} फ़ाइल चुनी गई. केवल नई और बदली गई फ़ाइलें अपलोड होंगी. मिटाई गई फ़ाइलें हटा दी जाएँगी. फ़ोल्डर की संरचना दोहराई जाएगी. जारी रखें?", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "{{count}} फ़ाइलें चुनी गईं. केवल नई और बदली गई फ़ाइलें अपलोड होंगी. मिटाई गई फ़ाइलें हटा दी जाएँगी. फ़ोल्डर की संरचना दोहराई जाएगी. जारी रखें?", + "{{count}} filters_one": "{{count}} फ़िल्टर", + "{{count}} filters_other": "{{count}} फ़िल्टर", + "{{count}} groups_one": "{{count}} समूह", + "{{count}} groups_other": "{{count}} समूह", + "{{COUNT}} hidden lines": "{{COUNT}} छिपी हुई पंक्तियाँ", + "{{COUNT}} members": "{{COUNT}} सदस्य", + "{{count}} of {{total}} accessible_one": "{{total}} में से {{count}} तक पहुँच है", + "{{count}} of {{total}} accessible_other": "{{total}} में से {{count}} तक पहुँच है", + "{{COUNT}} pipeline(s) selected": "{{COUNT}} पाइपलाइन चुनी गईं", + "{{count}} removed lines_one": "{{count}} हटाई गई पंक्ति", + "{{count}} removed lines_other": "{{count}} हटाई गई पंक्तियाँ", + "{{COUNT}} Replies": "{{COUNT}} जवाब", + "{{COUNT}} Rows": "{{COUNT}} पंक्तियाँ", + "{{count}} selected_one": "{{count}} चुना गया", + "{{count}} selected_other": "{{count}} चुने गए", + "{{COUNT}} Sources": "{{COUNT}} स्रोत", + "{{count}} users_one": "{{count}} उपयोगकर्ता", + "{{count}} users_other": "{{count}} उपयोगकर्ता", + "{{COUNT}} words": "{{COUNT}} शब्द", + "{{COUNT}}d_time_ago": "{{COUNT}} दिन पहले", + "{{COUNT}}h_time_ago": "{{COUNT}} घंटे पहले", + "{{COUNT}}m_time_ago": "{{COUNT}} मिनट पहले", + "{{COUNT}}w_time_ago": "{{COUNT}} सप्ताह पहले", + "{{COUNT}}y_time_ago": "{{COUNT}} वर्ष पहले", + "{{label}} contains invalid JSON": "{{label}} में अमान्य JSON है", + "{{label}} must be a JSON object": "{{label}} एक JSON ऑब्जेक्ट होना चाहिए", + "{{model}} download has been canceled": "{{model}} का डाउनलोड रद्द कर दिया गया है", + "{{modelName}} profile image": "{{modelName}} का प्रोफ़ाइल चित्र", + "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} ने {{REACTION}} से प्रतिक्रिया दी", + "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} पंक्तियाँ)", + "{{percent}}% full": "{{percent}}% भरा है", "{{user}}'s Chats": "{{user}} की चैट", "{{webUIName}} Backend Required": "{{webUIName}} बैकएंड आवश्यक", - "* (all domains)": "", - "*Prompt node ID(s) are required for image generation": "", - "*required": "", - "1 file": "", - "1 group": "", - "1 hour before": "", - "1 Source": "", - "1 user": "", - "10 minutes before": "", - "15 minutes before": "", - "1m_time_ago": "", - "30 minutes before": "", - "5 minutes before": "", - "A chat run failed.": "", - "A chat run finished successfully.": "", - "A collaboration channel where people join as members": "", - "A discussion channel where access is controlled by groups and permissions": "", - "A new version (v{{LATEST_VERSION}}) is now available.": "", - "A private conversation between you and selected users": "", + "* (all domains)": "* (सभी डोमेन)", + "*Prompt node ID(s) are required for image generation": "*चित्र बनाने के लिए प्रॉम्प्ट नोड ID आवश्यक हैं", + "*required": "*आवश्यक", + "1 file": "1 फ़ाइल", + "1 group": "1 समूह", + "1 hour before": "1 घंटा पहले", + "1 Source": "1 स्रोत", + "1 user": "1 उपयोगकर्ता", + "10 minutes before": "10 मिनट पहले", + "15 minutes before": "15 मिनट पहले", + "1m_time_ago": "1 मिनट पहले", + "30 minutes before": "30 मिनट पहले", + "5 minutes before": "5 मिनट पहले", + "A chat run failed.": "चैट चलाना विफल रहा.", + "A chat run finished successfully.": "चैट सफलतापूर्वक पूरी हुई.", + "A collaboration channel where people join as members": "सहयोग का चैनल जिसमें लोग सदस्य के रूप में जुड़ते हैं", + "A discussion channel where access is controlled by groups and permissions": "चर्चा का चैनल जिसकी पहुँच समूहों और अनुमतियों से नियंत्रित होती है", + "A new version (v{{LATEST_VERSION}}) is now available.": "अब नया संस्करण (v{{LATEST_VERSION}}) उपलब्ध है.", + "A private conversation between you and selected users": "आपके और चुने हुए उपयोगकर्ताओं के बीच निजी बातचीत", "a user": "एक उपयोगकर्ता", - "about the Roman Empire": "", - "Accept Autocomplete Generation\nJump to Prompt Variable": "", - "Access": "", - "Access Control": "", - "Access Grants": "", - "Access level": "", - "Access List": "", - "Access prohibited": "", - "Access updated": "", - "Accessible to all users": "", - "Account Activation Pending": "", + "about the Roman Empire": "रोमन साम्राज्य के बारे में", + "Accept Autocomplete Generation\nJump to Prompt Variable": "स्वतः पूर्ण किया गया पाठ स्वीकार करें\nप्रॉम्प्ट वेरिएबल पर जाएँ", + "Access": "पहुँच", + "Access Control": "पहुँच नियंत्रण", + "Access Grants": "पहुँच की अनुमतियाँ", + "Access level": "पहुँच का स्तर", + "Access List": "पहुँच सूची", + "Access prohibited": "पहुँच निषिद्ध है", + "Access updated": "पहुँच अपडेट की गई", + "Accessible to all users": "सभी उपयोगकर्ताओं के लिए उपलब्ध", + "Account Activation Pending": "खाता सक्रिय होना बाकी है", "Accurate information": "सटीक जानकारी", - "Action": "", - "Actions": "", - "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "", + "Action": "कार्रवाई", + "Actions": "कार्रवाइयाँ", + "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "चैट इनपुट में \"/{{COMMAND}}\" लिखकर यह कमांड सक्रिय करें.", "Active": "सक्रिय", - "Active Users": "", - "Activity": "", + "Active Users": "सक्रिय उपयोगकर्ता", + "Activity": "गतिविधि", "Add": "जोड़ें", - "Add a model ID": "", - "Add a preference, fact, or instruction about you": "", + "Add a model ID": "मॉडल ID जोड़ें", + "Add a preference, fact, or instruction about you": "अपने बारे में कोई पसंद, तथ्य या निर्देश जोड़ें", "Add a short description about what this model does": "इस मॉडल के बारे में एक संक्षिप्त विवरण जोड़ें", - "Add a tag": "एक टैग जोड़े", - "Add a tag...": "", - "Add Access": "", - "Add Arena Model": "", - "Add Connection": "", - "Add Content": "", - "Add content here": "", - "Add Custom Parameter": "", - "Add Custom Prompt": "", - "Add description": "", - "Add Details": "", - "Add durable context for future chats": "", + "Add a tag": "टैग जोड़ें", + "Add a tag...": "टैग जोड़ें...", + "Add Access": "पहुँच जोड़ें", + "Add Arena Model": "एरीना मॉडल जोड़ें", + "Add Connection": "कनेक्शन जोड़ें", + "Add Content": "सामग्री जोड़ें", + "Add content here": "यहाँ सामग्री जोड़ें", + "Add Custom Parameter": "कस्टम पैरामीटर जोड़ें", + "Add Custom Prompt": "कस्टम प्रॉम्प्ट जोड़ें", + "Add description": "विवरण जोड़ें", + "Add Details": "जानकारी जोड़ें", + "Add durable context for future chats": "आने वाली चैट के लिए स्थायी संदर्भ जोड़ें", "Add Files": "फाइलें जोड़ें", - "Add Image": "", - "Add Knowledge Connection": "", - "Add location": "", - "Add Member": "", - "Add Members": "", + "Add Image": "चित्र जोड़ें", + "Add Knowledge Connection": "ज्ञान स्रोत का कनेक्शन जोड़ें", + "Add location": "स्थान जोड़ें", + "Add Member": "सदस्य जोड़ें", + "Add Members": "सदस्य जोड़ें", "Add Memory": "मेमोरी जोड़ें", - "Add prompt suggestion": "", - "Add Reaction": "", - "Add tag": "", - "Add Tag": "", - "Add Terminal": "", - "Add Terminal Connection": "", - "Add text content": "", - "Add to favorites": "", - "Add translation": "", + "Add prompt suggestion": "प्रॉम्प्ट का सुझाव जोड़ें", + "Add Reaction": "प्रतिक्रिया जोड़ें", + "Add tag": "टैग जोड़ें", + "Add Tag": "टैग जोड़ें", + "Add Terminal": "टर्मिनल जोड़ें", + "Add Terminal Connection": "टर्मिनल कनेक्शन जोड़ें", + "Add text content": "पाठ सामग्री जोड़ें", + "Add to favorites": "पसंदीदा में जोड़ें", + "Add translation": "अनुवाद जोड़ें", "Add User": "उपयोगकर्ता जोड़ें", - "Add User Group": "", - "Add User Variable": "", - "Add webhook": "", - "Add webpage": "", - "Add your Open Terminal URL and API key in Settings → Integrations.": "", - "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "", - "Additional feedback comments": "", + "Add User Group": "उपयोगकर्ता समूह जोड़ें", + "Add User Variable": "उपयोगकर्ता वेरिएबल जोड़ें", + "Add webhook": "वेबहुक जोड़ें", + "Add webpage": "वेबपेज जोड़ें", + "Add your Open Terminal URL and API key in Settings → Integrations.": "सेटिंग्स → इंटीग्रेशन में अपना Open Terminal URL और API कुंजी जोड़ें.", + "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "marker के लिए अतिरिक्त कॉन्फ़िगरेशन विकल्प. यह कुंजी-मान युग्मों वाली JSON स्ट्रिंग होनी चाहिए. उदाहरण के लिए, '{\"key\": \"value\"}'. समर्थित कुंजियाँ हैं: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level", + "Additional feedback comments": "फ़ीडबैक पर अतिरिक्त टिप्पणियाँ", "admin": "व्यवस्थापक", - "Admin": "", + "Admin": "व्यवस्थापक", "Admin Panel": "व्यवस्थापक पैनल", - "Admin-managed service account": "", - "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "", - "Advanced": "", - "Advanced Params": "उन्नत परम", - "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "", - "AI": "", - "All": "", - "All chats have been unarchived.": "", - "All day": "", - "All events": "", - "All models are now hidden": "", - "All models are now visible": "", - "All models deleted successfully": "", - "All rights reserved.": "", - "All shared chats have been unshared.": "", - "All Sources": "", - "All time": "", - "All Users": "", - "All users and system events": "", - "Allow": "", - "Allow {{NAME}}?": "", - "Allow browser notifications for completed responses.": "", - "Allow Call": "", - "Allow Chat Controls": "", - "Allow Chat Delete": "", - "Allow Chat Edit": "", - "Allow Chat Export": "", - "Allow Chat Import": "", - "Allow Chat Params": "", - "Allow Chat Share": "", - "Allow Chat System Prompt": "", - "Allow Chat Valves": "", - "Allow Continue Response": "", - "Allow Delete Messages": "", - "Allow File Upload": "", - "Allow Multiple Models in Chat": "", - "Allow public write access": "", - "Allow Rate Response": "", - "Allow Regenerate Response": "", - "Allow Sharing With Groups": "", - "Allow Sharing With Users": "", - "Allow Speech to Text": "", - "Allow Temporary Chat": "", - "Allow Text to Speech": "", - "Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "", - "Allow Tool Call": "", - "Allow Web Upload": "", + "Admin-managed service account": "व्यवस्थापक द्वारा प्रबंधित सेवा खाता", + "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "व्यवस्थापकों के पास हर समय सभी टूल की पहुँच होती है; उपयोगकर्ताओं के लिए कार्यक्षेत्र में हर मॉडल को टूल सौंपने होते हैं.", + "Advanced": "उन्नत", + "Advanced Params": "उन्नत पैरामीटर", + "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "एंबेडिंग मॉडल बदलने के बाद, बदलाव लागू करने के लिए ज्ञान, ज्ञान खोज और मेमोरी वेक्टर को फिर से इंडेक्स करें.", + "AI": "AI", + "All": "सभी", + "All chats have been unarchived.": "सभी चैट संग्रह से वापस लाई गईं.", + "All day": "पूरे दिन", + "All events": "सभी इवेंट", + "All models are now hidden": "अब सभी मॉडल छिपे हुए हैं", + "All models are now visible": "अब सभी मॉडल दिखाई दे रहे हैं", + "All models deleted successfully": "सभी मॉडल सफलतापूर्वक हटाए गए", + "All rights reserved.": "सर्वाधिकार सुरक्षित.", + "All shared chats have been unshared.": "सभी साझा चैट का साझाकरण बंद किया गया.", + "All Sources": "सभी स्रोत", + "All time": "पूरी अवधि", + "All Users": "सभी उपयोगकर्ता", + "All users and system events": "सभी उपयोगकर्ता और सिस्टम इवेंट", + "Allow": "अनुमति दें", + "Allow {{NAME}}?": "{{NAME}} की अनुमति दें?", + "Allow browser notifications for completed responses.": "उत्तर पूरे होने पर ब्राउज़र सूचनाओं की अनुमति दें.", + "Allow Call": "कॉल की अनुमति दें", + "Allow Chat Controls": "चैट नियंत्रणों की अनुमति दें", + "Allow Chat Delete": "चैट हटाने की अनुमति दें", + "Allow Chat Edit": "चैट संपादित करने की अनुमति दें", + "Allow Chat Export": "चैट निर्यात की अनुमति दें", + "Allow Chat Import": "चैट आयात की अनुमति दें", + "Allow Chat Params": "चैट पैरामीटर की अनुमति दें", + "Allow Chat Share": "चैट साझा करने की अनुमति दें", + "Allow Chat System Prompt": "चैट सिस्टम प्रॉम्प्ट की अनुमति दें", + "Allow Chat Valves": "चैट वाल्व की अनुमति दें", + "Allow Continue Response": "उत्तर जारी रखने की अनुमति दें", + "Allow Delete Messages": "संदेश हटाने की अनुमति दें", + "Allow File Upload": "फ़ाइल अपलोड की अनुमति दें", + "Allow Multiple Models in Chat": "चैट में कई मॉडल की अनुमति दें", + "Allow public write access": "सार्वजनिक लेखन पहुँच की अनुमति दें", + "Allow Rate Response": "उत्तर को रेटिंग देने की अनुमति दें", + "Allow Regenerate Response": "उत्तर फिर से बनाने की अनुमति दें", + "Allow Sharing With Groups": "समूहों के साथ साझा करने की अनुमति दें", + "Allow Sharing With Users": "उपयोगकर्ताओं के साथ साझा करने की अनुमति दें", + "Allow Speech to Text": "बोली से पाठ की अनुमति दें", + "Allow Temporary Chat": "अस्थायी चैट की अनुमति दें", + "Allow Text to Speech": "पाठ से बोली की अनुमति दें", + "Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "AI को उप-एजेंटों को कार्य सौंपने की अनुमति दें. हर उप-एजेंट सभी टूल की पहुँच वाली वास्तविक चैट बनाता है. इसमें अतिरिक्त LLM कॉल होते हैं.", + "Allow Tool Call": "टूल कॉल की अनुमति दें", + "Allow Web Upload": "वेब अपलोड की अनुमति दें", "Already have an account?": "क्या आपके पास पहले से एक खाता मौजूद है?", - "Also bound to {{action}}": "", - "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "", - "Always": "", - "Amazing": "", + "Also bound to {{action}}": "{{action}} से भी जुड़ा है", + "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "top_p का विकल्प, जिसका उद्देश्य गुणवत्ता और विविधता का संतुलन बनाए रखना है. पैरामीटर p किसी टोकन पर विचार करने की न्यूनतम प्रायिकता दर्शाता है, जो सर्वाधिक संभावित टोकन की प्रायिकता के सापेक्ष होती है. उदाहरण के लिए, p=0.05 और सर्वाधिक संभावित टोकन की प्रायिकता 0.9 होने पर, 0.045 से कम मान वाले लॉजिट फ़िल्टर कर दिए जाते हैं.", + "Always": "हमेशा", + "Amazing": "बहुत बढ़िया", "an assistant": "एक सहायक", - "Analytics": "", - "Analyzed": "", - "Analyzing...": "", - "and {{COUNT}} more": "", - "and create a new shared link.": "और एक नई साझा लिंक बनाएं.", - "Anyone": "", - "Anyone with the link can view": "", + "Analytics": "विश्लेषण", + "Analyzed": "विश्लेषण किया गया", + "Analyzing...": "विश्लेषण हो रहा है...", + "and {{COUNT}} more": "और {{COUNT}} अन्य", + "and create a new shared link.": "और नया साझा लिंक बनाएँ.", + "Anyone": "कोई भी", + "Anyone with the link can view": "लिंक वाला कोई भी व्यक्ति देख सकता है", "API Base URL": "एपीआई बेस यूआरएल", "API Key": "एपीआई कुंजी", - "API Key / Token": "", - "API Key created.": "एपीआई कुंजी बनाई गई", - "API Key deleted.": "", - "API Keys": "", - "API Type": "", - "API Version": "", - "API Version is required": "", - "App navigation": "", - "applies to all users with the \"user\" role": "", + "API Key / Token": "API कुंजी / टोकन", + "API Key created.": "एपीआई कुंजी बनाई गई.", + "API Key deleted.": "API कुंजी हटाई गई.", + "API Keys": "API कुंजियाँ", + "API Type": "API प्रकार", + "API Version": "API संस्करण", + "API Version is required": "API संस्करण आवश्यक है", + "App navigation": "ऐप नेविगेशन", + "applies to all users with the \"user\" role": "\"user\" भूमिका वाले सभी उपयोगकर्ताओं पर लागू होता है", "April": "अप्रैल", - "Archive": "पुरालेख", - "archived-chat-export": "", - "Are you sure you want to archive all chats? This action cannot be undone.": "", - "Are you sure you want to clear all memories? This action cannot be undone.": "", - "Are you sure you want to delete \"{{NAME}}\"?": "", - "Are you sure you want to delete **{{modelName}}**?": "", - "Are you sure you want to delete all chats? This action cannot be undone.": "", - "Are you sure you want to delete this channel?": "", - "Are you sure you want to delete this connection? This action cannot be undone.": "", - "Are you sure you want to delete this directory?": "", - "Are you sure you want to delete this memory? This action cannot be undone.": "", - "Are you sure you want to delete this message?": "", - "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", - "Are you sure you want to delete this webhook? This action cannot be undone.": "", - "Are you sure you want to delete this?": "", - "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "", - "Are you sure you want to unarchive all archived chats?": "", - "Are you sure you want to unshare all shared chats? This will remove all share links.": "", - "Artifacts": "", - "Asc": "", - "Ask": "", - "Ask a question": "", - "Ask a test question": "", - "Ask for approval": "", - "Ask this knowledge source a test question": "", - "Assistant": "", - "Assistant messages": "", - "at": "", - "At time of event": "", - "Attach File From Knowledge": "", - "Attach Files": "", - "Attach Knowledge": "", - "Attach Notes": "", - "Attach Webpage": "", + "Archive": "संग्रह में रखें", + "archived-chat-export": "archived-chat-export", + "Are you sure you want to archive all chats? This action cannot be undone.": "क्या आप वाकई सभी चैट संग्रह में रखना चाहते हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती.", + "Are you sure you want to clear all memories? This action cannot be undone.": "क्या आप वाकई सभी मेमोरी मिटाना चाहते हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती.", + "Are you sure you want to delete \"{{NAME}}\"?": "क्या आप वाकई \"{{NAME}}\" हटाना चाहते हैं?", + "Are you sure you want to delete **{{modelName}}**?": "क्या आप वाकई **{{modelName}}** हटाना चाहते हैं?", + "Are you sure you want to delete all chats? This action cannot be undone.": "क्या आप वाकई सभी चैट हटाना चाहते हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती.", + "Are you sure you want to delete this channel?": "क्या आप वाकई यह चैनल हटाना चाहते हैं?", + "Are you sure you want to delete this connection? This action cannot be undone.": "क्या आप वाकई यह कनेक्शन हटाना चाहते हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती.", + "Are you sure you want to delete this directory?": "क्या आप वाकई यह डायरेक्टरी हटाना चाहते हैं?", + "Are you sure you want to delete this memory? This action cannot be undone.": "क्या आप वाकई यह मेमोरी हटाना चाहते हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती.", + "Are you sure you want to delete this message?": "क्या आप वाकई यह संदेश हटाना चाहते हैं?", + "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "क्या आप वाकई यह संस्करण हटाना चाहते हैं? इसके चाइल्ड संस्करण इसके पैरेंट संस्करण से फिर जोड़े जाएँगे.", + "Are you sure you want to delete this webhook? This action cannot be undone.": "क्या आप वाकई यह वेबहुक हटाना चाहते हैं? यह कार्रवाई पूर्ववत नहीं की जा सकती.", + "Are you sure you want to delete this?": "क्या आप वाकई इसे हटाना चाहते हैं?", + "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "क्या आप वाकई सभी अनुमतियाँ उनके डिफ़ॉल्ट मानों पर रीसेट करना चाहते हैं? बदलाव लागू करने के लिए आपको फिर भी सहेजना होगा.", + "Are you sure you want to unarchive all archived chats?": "क्या आप वाकई संग्रह की सभी चैट वापस लाना चाहते हैं?", + "Are you sure you want to unshare all shared chats? This will remove all share links.": "क्या आप वाकई सभी साझा चैट का साझाकरण बंद करना चाहते हैं? इससे सभी साझा लिंक हट जाएँगे.", + "Artifacts": "आर्टिफ़ैक्ट", + "Asc": "आरोही", + "Ask": "पूछें", + "Ask a question": "प्रश्न पूछें", + "Ask a test question": "परीक्षण प्रश्न पूछें", + "Ask for approval": "स्वीकृति माँगें", + "Ask this knowledge source a test question": "इस ज्ञान स्रोत से परीक्षण प्रश्न पूछें", + "Assistant": "सहायक", + "Assistant messages": "सहायक के संदेश", + "at": "पर", + "At time of event": "इवेंट के समय", + "Attach File From Knowledge": "ज्ञान से फ़ाइल संलग्न करें", + "Attach Files": "फ़ाइलें संलग्न करें", + "Attach Knowledge": "ज्ञान संलग्न करें", + "Attach Notes": "नोट संलग्न करें", + "Attach Webpage": "वेबपेज संलग्न करें", "Attention to detail": "विस्तार पर ध्यान", - "Audio player": "", + "Audio player": "ऑडियो प्लेयर", "August": "अगस्त", - "Auth": "", - "Auth Mode": "", - "Auth required": "", - "Authenticate": "", - "Authorize OAuth": "", - "Auto": "", - "Auto (Random)": "", - "Automatic": "", - "Automatic Delivery": "", - "Automatic Events": "", - "Automatic1111": "", - "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 का बेस यूआरएल आवश्यक है।", - "Automation": "", - "Automation created": "", - "Automation Menu": "", - "Automation title": "", - "Automation triggered": "", - "Automation updated": "", - "Automations": "", - "Available list": "", - "Available models": "", - "Available Skills": "", - "Available Tools": "", - "Available variables": "", + "Auth": "प्रमाणीकरण", + "Auth Mode": "प्रमाणीकरण मोड", + "Auth required": "प्रमाणीकरण आवश्यक है", + "Authenticate": "प्रमाणित करें", + "Authorize OAuth": "OAuth अधिकृत करें", + "Auto": "स्वतः", + "Auto (Random)": "स्वतः (यादृच्छिक)", + "Automatic": "स्वचालित", + "Automatic Delivery": "स्वचालित डिलीवरी", + "Automatic Events": "स्वचालित इवेंट", + "Automatic1111": "Automatic1111", + "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 का बेस यूआरएल आवश्यक है.", + "Automation": "ऑटोमेशन", + "Automation created": "ऑटोमेशन बनाया गया", + "Automation Menu": "ऑटोमेशन मेनू", + "Automation title": "ऑटोमेशन का शीर्षक", + "Automation triggered": "ऑटोमेशन शुरू किया गया", + "Automation updated": "ऑटोमेशन अपडेट किया गया", + "Automations": "ऑटोमेशन", + "Available list": "उपलब्ध सूची", + "Available models": "उपलब्ध मॉडल", + "Available Skills": "उपलब्ध कौशल", + "Available Tools": "उपलब्ध टूल", + "Available variables": "उपलब्ध वेरिएबल", "available!": "उपलब्ध!", - "Average messages per active day": "", - "Average tokens per chat": "", + "Average messages per active day": "प्रति सक्रिय दिन औसत संदेश", + "Average tokens per chat": "प्रति चैट औसत टोकन", "Away": "अनुपस्थित", - "Awful": "", - "Azure AI Speech": "", + "Awful": "बहुत खराब", + "Azure AI Speech": "Azure AI Speech", "Azure OpenAI": "Azure OpenAI", "Back": "पीछे", - "Background Image": "", - "Background image must be at most 25 megapixels.": "", - "Background image must be at most 5 MiB.": "", - "Background image must be PNG, JPEG, WebP, or GIF.": "", - "Background image preview": "", - "Background sub-agent finished": "", - "background sub-agents": "", - "Bad Response": "ख़राब प्रतिक्रिया", - "Base Model (From)": "बेस मॉडल (से)", - "Base Model is required.": "", - "Base Models": "", - "Basic text only": "", - "Basics": "", - "Bearer": "", + "Background Image": "पृष्ठभूमि चित्र", + "Background image must be at most 25 megapixels.": "पृष्ठभूमि चित्र अधिकतम 25 मेगापिक्सेल का होना चाहिए.", + "Background image must be at most 5 MiB.": "पृष्ठभूमि चित्र अधिकतम 5 MiB का होना चाहिए.", + "Background image must be PNG, JPEG, WebP, or GIF.": "पृष्ठभूमि चित्र PNG, JPEG, WebP, या GIF होना चाहिए.", + "Background image preview": "पृष्ठभूमि चित्र का पूर्वावलोकन", + "Background sub-agent finished": "पृष्ठभूमि में उप-एजेंट का कार्य पूरा हुआ", + "background sub-agents": "पृष्ठभूमि के उप-एजेंट", + "Bad Response": "खराब उत्तर", + "Base Model (From)": "आधार मॉडल (स्रोत)", + "Base Model is required.": "आधार मॉडल आवश्यक है.", + "Base Models": "आधार मॉडल", + "Basic text only": "केवल सामान्य पाठ", + "Basics": "बुनियादी जानकारी", + "Bearer": "Bearer", "before": "पहले", "Being lazy": "आलसी होना", - "Bing": "", - "Bold": "", - "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", - "Brave": "", - "Bullet List": "", - "Button ID": "", - "Button Label": "", - "Button Prompt": "", - "By": "", - "by {{name}}": "", - "By {{name}}": "", - "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "", - "Calendar": "", - "Calendar created": "", - "Calendar deleted": "", - "Calendar name": "", - "Calendars": "", - "Calendars Public Sharing": "", - "Call": "", - "Call feature is not supported when using Web STT engine": "", - "Camera": "", + "Bing": "Bing", + "Bold": "बोल्ड", + "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "नियंत्रित उत्तरों के लिए विशेष टोकन को बढ़ावा देना या दंडित करना. बायस के मान -100 और 100 (दोनों सहित) के बीच सीमित किए जाएँगे. (डिफ़ॉल्ट: कोई नहीं)", + "Brave": "Brave", + "Bullet List": "बुलेट सूची", + "Button ID": "बटन ID", + "Button Label": "बटन लेबल", + "Button Prompt": "बटन प्रॉम्प्ट", + "By": "द्वारा", + "by {{name}}": "{{name}} द्वारा", + "By {{name}}": "{{name}} द्वारा", + "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "प्रायोजन या एंटरप्राइज़ लाइसेंस के माध्यम से परियोजना का समर्थन करके आप हमें स्वतंत्र बने रहने, नई सुविधाएँ तेज़ी से उपलब्ध कराने, स्थिरता बढ़ाने और लंबे समय तक Open WebUI का विकास करने में मदद करते हैं.", + "Calendar": "कैलेंडर", + "Calendar created": "कैलेंडर बनाया गया", + "Calendar deleted": "कैलेंडर हटाया गया", + "Calendar name": "कैलेंडर का नाम", + "Calendars": "कैलेंडर", + "Calendars Public Sharing": "कैलेंडर का सार्वजनिक साझाकरण", + "Call": "कॉल करें", + "Call feature is not supported when using Web STT engine": "Web STT इंजन का उपयोग करते समय कॉल सुविधा समर्थित नहीं है", + "Camera": "कैमरा", "Cancel": "रद्द करें", - "Cancel download of {{model}}": "", - "Cannot create an empty note.": "", - "Cannot delete the production version": "", - "Capture": "", - "Capture Audio": "", - "Change folder icon": "", - "Change User Role": "", - "Channel": "", - "Channel deleted successfully": "", - "Channel is required": "", - "Channel Name": "", - "Channel name cannot be empty.": "", - "Channel name must be less than 128 characters": "", - "Channel Type": "", - "Channel updated successfully": "", - "Channels": "", - "Character": "", - "Chat": "चैट करें", - "Chat actions": "", - "Chat archived.": "", - "Chat Completions": "", - "Chat Conversation": "", - "Chat deleted.": "", - "Chat exported successfully": "", - "Chat failed": "", - "Chat finished": "", - "Chat forked": "", - "Chat history": "", - "Chat ID": "", - "Chat is too short to compact": "", - "Chat Menu": "", - "Chat moved successfully": "", - "Chat Permissions": "", - "Chat unarchived.": "", - "Chat unshared successfully.": "", - "Chat Uploads": "", - "Chat Variables": "", - "Chat Variables have conflicting model definitions": "", - "chats": "", - "Chats": "सभी चैट", - "Chats Open Sharing": "", - "Chats Public Sharing": "", - "Check Again": "फिर से जाँचो", - "Check OAuth Discovery": "", - "Check what is running in this chat.": "", + "Cancel download of {{model}}": "{{model}} का डाउनलोड रद्द करें", + "Cannot create an empty note.": "खाली नोट नहीं बनाया जा सकता.", + "Cannot delete the production version": "प्रोडक्शन संस्करण नहीं हटाया जा सकता", + "Capture": "कैप्चर करें", + "Capture Audio": "ऑडियो कैप्चर करें", + "Change folder icon": "फ़ोल्डर का आइकन बदलें", + "Change User Role": "उपयोगकर्ता की भूमिका बदलें", + "Channel": "चैनल", + "Channel deleted successfully": "चैनल सफलतापूर्वक हटाया गया", + "Channel is required": "चैनल आवश्यक है", + "Channel Name": "चैनल का नाम", + "Channel name cannot be empty.": "चैनल का नाम खाली नहीं हो सकता.", + "Channel name must be less than 128 characters": "चैनल का नाम 128 अक्षरों से छोटा होना चाहिए", + "Channel Type": "चैनल का प्रकार", + "Channel updated successfully": "चैनल सफलतापूर्वक अपडेट किया गया", + "Channels": "चैनल", + "Character": "अक्षर", + "Chat": "चैट", + "Chat actions": "चैट की कार्रवाइयाँ", + "Chat archived.": "चैट संग्रह में रखी गई.", + "Chat Completions": "चैट पूर्णताएँ", + "Chat Conversation": "चैट की बातचीत", + "Chat deleted.": "चैट हटाई गई.", + "Chat exported successfully": "चैट सफलतापूर्वक निर्यात की गई", + "Chat failed": "चैट विफल हुई", + "Chat finished": "चैट पूरी हुई", + "Chat forked": "चैट की शाखा बनाई गई", + "Chat history": "चैट इतिहास", + "Chat ID": "चैट ID", + "Chat is too short to compact": "संक्षिप्त करने के लिए चैट बहुत छोटी है", + "Chat Menu": "चैट मेनू", + "Chat moved successfully": "चैट सफलतापूर्वक स्थानांतरित की गई", + "Chat Permissions": "चैट अनुमतियाँ", + "Chat unarchived.": "चैट संग्रह से वापस लाई गई.", + "Chat unshared successfully.": "चैट का साझाकरण सफलतापूर्वक बंद किया गया.", + "Chat Uploads": "चैट अपलोड", + "Chat Variables": "चैट वेरिएबल", + "Chat Variables have conflicting model definitions": "चैट वेरिएबल में मॉडल की परिभाषाएँ परस्पर विरोधी हैं", + "chats": "चैट", + "Chats": "चैट", + "Chats Open Sharing": "चैट का खुला साझाकरण", + "Chats Public Sharing": "चैट का सार्वजनिक साझाकरण", + "Check Again": "फिर जाँचें", + "Check OAuth Discovery": "OAuth डिस्कवरी जाँचें", + "Check what is running in this chat.": "देखें कि इस चैट में क्या चल रहा है.", "Checking for updates...": "अपडेट के लिए जांच कर रहा है...", "Choose a model before saving...": "सहेजने से पहले एक मॉडल चुनें...", - "Choose channel": "", - "Choose folder": "", + "Choose channel": "चैनल चुनें", + "Choose folder": "फ़ोल्डर चुनें", "Citation": "उद्धरण", - "Citations": "", - "Clear": "", - "Clear filters to reorder": "", - "Clear Memory": "", - "Clear search": "", - "Clear status": "", - "click here": "", - "Click here for filter guides.": "", - "Click here for help.": "सहायता के लिए यहां क्लिक करें।", + "Citations": "उद्धरण", + "Clear": "साफ़ करें", + "Clear filters to reorder": "क्रम बदलने के लिए फ़िल्टर साफ़ करें", + "Clear Memory": "मेमोरी मिटाएँ", + "Clear search": "खोज साफ़ करें", + "Clear status": "स्थिति हटाएँ", + "click here": "यहाँ क्लिक करें", + "Click here for filter guides.": "फ़िल्टर संबंधी मार्गदर्शन के लिए यहाँ क्लिक करें.", + "Click here for help.": "सहायता के लिए यहां क्लिक करें.", "Click here to": "यहां क्लिक करें", - "Click here to download user import template file.": "", - "Click here to learn more about faster-whisper and see the available models.": "", - "Click here to see available models.": "", - "Click here to select": "चयन करने के लिए यहां क्लिक करें।", - "Click here to select a csv file.": "सीएसवी फ़ाइल का चयन करने के लिए यहां क्लिक करें।", - "click here.": "यहाँ क्लिक करें।", - "Click on the user role button to change a user's role.": "उपयोगकर्ता की भूमिका बदलने के लिए उपयोगकर्ता भूमिका बटन पर क्लिक करें।", - "Click to connect": "", - "Click to copy ID": "", - "Click to rebind": "", - "Client ID": "", - "Client Secret": "", - "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "", - "Clone": "क्लोन", - "Clone Chat": "", - "Clone of {{TITLE}}": "", - "Close": "बंद करना", - "Close Banner": "", - "Close chat controls": "", - "Close citation modal": "", - "Close Configure Connection Modal": "", - "Close embed": "", - "Close feedback": "", - "Close modal": "", - "Close Modal": "", - "Close Sidebar": "", - "Close terminal": "", - "cloud": "", - "CMU ARCTIC speaker embedding name": "", - "Code Block": "", - "Code Editor": "", - "Code execution": "", - "Code formatted successfully": "", - "Code Interpreter": "", - "Collaboration channel where people join as members": "", - "Collapse": "", + "Click here to download user import template file.": "उपयोगकर्ता आयात टेम्पलेट फ़ाइल डाउनलोड करने के लिए यहाँ क्लिक करें.", + "Click here to learn more about faster-whisper and see the available models.": "faster-whisper के बारे में अधिक जानने और उपलब्ध मॉडल देखने के लिए यहाँ क्लिक करें.", + "Click here to see available models.": "उपलब्ध मॉडल देखने के लिए यहाँ क्लिक करें.", + "Click here to select": "चयन करने के लिए यहां क्लिक करें", + "Click here to select a csv file.": "csv फ़ाइल का चयन करने के लिए यहां क्लिक करें.", + "click here.": "यहाँ क्लिक करें.", + "Click on the user role button to change a user's role.": "उपयोगकर्ता की भूमिका बदलने के लिए उपयोगकर्ता भूमिका बटन पर क्लिक करें.", + "Click to connect": "कनेक्ट करने के लिए क्लिक करें", + "Click to copy ID": "ID कॉपी करने के लिए क्लिक करें", + "Click to rebind": "फिर से बाँधने के लिए क्लिक करें", + "Client ID": "क्लाइंट ID", + "Client Secret": "क्लाइंट सीक्रेट", + "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "क्लिपबोर्ड में लिखने की अनुमति नहीं मिली. आवश्यक पहुँच देने के लिए अपनी ब्राउज़र सेटिंग्स जाँचें.", + "Clone": "प्रतिलिपि बनाएँ", + "Clone Chat": "चैट की प्रतिलिपि बनाएँ", + "Clone of {{TITLE}}": "{{TITLE}} की प्रतिलिपि", + "Close": "बंद करें", + "Close Banner": "बैनर बंद करें", + "Close chat controls": "चैट नियंत्रण बंद करें", + "Close citation modal": "उद्धरण संवाद बंद करें", + "Close Configure Connection Modal": "कनेक्शन कॉन्फ़िगरेशन संवाद बंद करें", + "Close embed": "एम्बेड बंद करें", + "Close feedback": "फ़ीडबैक बंद करें", + "Close modal": "संवाद बंद करें", + "Close Modal": "संवाद बंद करें", + "Close Sidebar": "साइडबार बंद करें", + "Close terminal": "टर्मिनल बंद करें", + "cloud": "क्लाउड", + "CMU ARCTIC speaker embedding name": "CMU ARCTIC वक्ता एंबेडिंग का नाम", + "Code Block": "कोड ब्लॉक", + "Code Editor": "कोड संपादक", + "Code execution": "कोड निष्पादन", + "Code formatted successfully": "कोड सफलतापूर्वक फ़ॉर्मैट किया गया", + "Code Interpreter": "कोड इंटरप्रेटर", + "Collaboration channel where people join as members": "सहयोग का चैनल जिसमें लोग सदस्य के रूप में जुड़ते हैं", + "Collapse": "समेटें", "Collection": "संग्रह", - "Collection Field": "", - "Collections": "", - "Color": "", + "Collection Field": "संग्रह फ़ील्ड", + "Collections": "संग्रह", + "Color": "रंग", "ComfyUI": "ComfyUI", - "ComfyUI Base URL is required.": "ComfyUI का बेस यूआरएल आवश्यक है", - "Comma separated Node Ids (e.g. 1 or 1,2)": "", - "Comma-separated group names": "", - "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "", - "command": "", + "ComfyUI Base URL is required.": "ComfyUI का बेस यूआरएल आवश्यक है.", + "Comma separated Node Ids (e.g. 1 or 1,2)": "अल्पविराम से अलग किए गए नोड ID (जैसे 1 या 1,2)", + "Comma-separated group names": "अल्पविराम से अलग किए गए समूह के नाम", + "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "अल्पविराम से अलग किए गए शीर्ष-स्तरीय अनुरोध पैरामीटर जिन्हें यह अपस्ट्रीम बिना रूपांतरण के प्राप्त कर सकता है. सभी दर्ज किए गए पासथ्रू पैरामीटर की अनुमति देने के लिए * का उपयोग करें.", + "command": "कमांड", "Command": "कमांड", - "Commands": "", - "Comment": "", - "Commit Message": "", - "Community Reviews": "", - "Compact": "", - "Compact: shorten older messages so this chat can keep going.": "", - "Compacting context": "", - "Compacting context...": "", - "Compare": "", - "Comparing with knowledge base...": "", - "Completions": "", - "Compress uploaded images before sending or storage.": "", - "Computing checksums ({{count}} files)_one": "", - "Computing checksums ({{count}} files)_other": "", - "Config imported successfully": "", - "Configure": "", - "Confirm": "", + "Commands": "कमांड", + "Comment": "टिप्पणी", + "Commit Message": "कमिट संदेश", + "Community Reviews": "समुदाय की समीक्षाएँ", + "Compact": "संक्षिप्त करें", + "Compact: shorten older messages so this chat can keep going.": "संक्षिप्त करें: पुराने संदेश छोटे करें ताकि यह चैट जारी रह सके.", + "Compacting context": "संदर्भ संक्षिप्त हो रहा है", + "Compacting context...": "संदर्भ संक्षिप्त हो रहा है...", + "Compare": "तुलना करें", + "Comparing with knowledge base...": "ज्ञान आधार से तुलना हो रही है...", + "Completions": "पूर्णताएँ", + "Compress uploaded images before sending or storage.": "भेजने या संग्रहीत करने से पहले अपलोड किए गए चित्र संपीड़ित करें.", + "Computing checksums ({{count}} files)_one": "चेकसम की गणना हो रही है ({{count}} फ़ाइल)", + "Computing checksums ({{count}} files)_other": "चेकसम की गणना हो रही है ({{count}} फ़ाइलें)", + "Config imported successfully": "कॉन्फ़िगरेशन सफलतापूर्वक आयात किया गया", + "Configure": "कॉन्फ़िगर करें", + "Confirm": "पुष्टि करें", "Confirm Password": "पासवर्ड की पुष्टि कीजिये", - "Confirm Prompt from Embed": "", - "Confirm recording": "", - "Confirm your action": "", - "Confirm your new password": "", - "Confirm Your Password": "", - "Connect to an AI provider to start chatting": "", - "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "", - "Connect to your own OpenAPI compatible external tool servers.": "", - "Connected": "", - "Connected ({{type}})": "", - "Connection failed": "", - "Connection lost. Reconnecting...": "", - "Connection successful": "", - "Connection Type": "", - "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "", - "Connections saved successfully": "", - "Connections settings updated": "", - "Contact Admin for WebUI Access": "", + "Confirm Prompt from Embed": "एम्बेड से आए प्रॉम्प्ट की पुष्टि करें", + "Confirm recording": "रिकॉर्डिंग की पुष्टि करें", + "Confirm your action": "अपनी कार्रवाई की पुष्टि करें", + "Confirm your new password": "अपने नए पासवर्ड की पुष्टि करें", + "Confirm Your Password": "अपने पासवर्ड की पुष्टि करें", + "Connect to an AI provider to start chatting": "चैट शुरू करने के लिए किसी AI प्रदाता से कनेक्ट करें", + "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "Open Terminal इंस्टेंस से कनेक्ट करें. व्यवस्थापक और पहुँच प्राप्त उपयोगकर्ता इन सर्वर के माध्यम से फ़ाइल ब्राउज़िंग और टर्मिनल टूल का उपयोग कर सकते हैं.", + "Connect to your own OpenAPI compatible external tool servers.": "अपने OpenAPI संगत बाहरी टूल सर्वर से कनेक्ट करें.", + "Connected": "कनेक्ट है", + "Connected ({{type}})": "कनेक्ट है ({{type}})", + "Connection failed": "कनेक्शन विफल रहा", + "Connection lost. Reconnecting...": "कनेक्शन टूट गया. फिर से कनेक्ट हो रहा है...", + "Connection successful": "कनेक्शन सफल रहा", + "Connection Type": "कनेक्शन का प्रकार", + "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "रोज़मर्रा के उपयोग के लिए व्यवस्थापक पैनल से प्रबंधित कनेक्शन की अनुशंसा की जाती है. सीधे कनेक्शन आपके अपने एंडपॉइंट तक सुविधाजनक पहुँच देते हैं, लेकिन अनुरोध चालू रखने के लिए आपके ब्राउज़र सत्र पर निर्भर होते हैं, इसलिए वे परीक्षण और अस्थायी उपयोग के लिए अधिक उपयुक्त हैं.", + "Connections saved successfully": "कनेक्शन सफलतापूर्वक सहेजे गए", + "Connections settings updated": "कनेक्शन सेटिंग्स अपडेट की गईं", + "Contact Admin for WebUI Access": "WebUI की पहुँच के लिए व्यवस्थापक से संपर्क करें", "Content": "सामग्री", - "Content Field": "", - "Content lengths (character counts only)": "", - "Content matches": "", - "Context": "", - "Context compacted": "", - "Context compaction failed": "", - "Context compaction is disabled": "", - "Context usage": "", - "Continue": "", - "Continue Response": "प्रतिक्रिया जारी रखें", - "Continue with {{provider}}": "", - "Continue with Email": "", - "Continue with LDAP": "", - "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "", - "Controls": "", - "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "", - "Conversation saved successfully": "", - "Copied": "", - "Copied link to clipboard": "", + "Content Field": "सामग्री फ़ील्ड", + "Content lengths (character counts only)": "सामग्री की लंबाई (केवल अक्षरों की संख्या)", + "Content matches": "सामग्री का मिलान", + "Context": "संदर्भ", + "Context compacted": "संदर्भ संक्षिप्त किया गया", + "Context compaction failed": "संदर्भ संक्षिप्त करना विफल रहा", + "Context compaction is disabled": "संदर्भ संक्षिप्त करना अक्षम है", + "Context usage": "संदर्भ का उपयोग", + "Continue": "जारी रखें", + "Continue Response": "उत्तर जारी रखें", + "Continue with {{provider}}": "{{provider}} के साथ जारी रखें", + "Continue with Email": "ईमेल के साथ जारी रखें", + "Continue with LDAP": "LDAP के साथ जारी रखें", + "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "बनाए गए पाठ में टोकन अनुक्रमों की पुनरावृत्ति नियंत्रित करें. अधिक मान (जैसे, 1.5) पुनरावृत्ति को अधिक दंडित करेगा, जबकि कम मान (जैसे, 1.1) अधिक छूट देगा. 1 पर यह अक्षम रहता है.", + "Controls": "नियंत्रण", + "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "आउटपुट की सुसंगति और विविधता के बीच संतुलन नियंत्रित करता है. कम मान से अधिक केंद्रित और सुसंगत पाठ मिलेगा.", + "Conversation saved successfully": "बातचीत सफलतापूर्वक सहेजी गई", + "Copied": "कॉपी किया गया", + "Copied link to clipboard": "लिंक क्लिपबोर्ड पर कॉपी किया गया", "Copied shared chat URL to clipboard!": "साझा चैट URL को क्लिपबोर्ड पर कॉपी किया गया!", - "Copied to clipboard": "", - "Copy": "कॉपी", - "Copy API Key": "", - "Copy content": "", - "Copy default": "", - "Copy Last Code Block": "", - "Copy Last Response": "", - "Copy link": "", + "Copied to clipboard": "क्लिपबोर्ड पर कॉपी किया गया", + "Copy": "कॉपी करें", + "Copy API Key": "API कुंजी कॉपी करें", + "Copy content": "सामग्री कॉपी करें", + "Copy default": "डिफ़ॉल्ट कॉपी करें", + "Copy Last Code Block": "अंतिम कोड ब्लॉक कॉपी करें", + "Copy Last Response": "अंतिम उत्तर कॉपी करें", + "Copy link": "लिंक कॉपी करें", "Copy Link": "लिंक को कॉपी करें", - "Copy Path": "", - "Copy Prompt": "", - "Copy Share Link": "", - "Copy to clipboard": "", - "Copy Token": "", - "Copy URL": "", + "Copy Path": "पथ कॉपी करें", + "Copy Prompt": "प्रॉम्प्ट कॉपी करें", + "Copy Share Link": "साझा लिंक कॉपी करें", + "Copy to clipboard": "क्लिपबोर्ड पर कॉपी करें", + "Copy Token": "टोकन कॉपी करें", + "Copy URL": "URL कॉपी करें", "Copying to clipboard was successful!": "क्लिपबोर्ड पर कॉपी बनाना सफल रहा!", - "Copyright (c)": "", - "CORS must be properly configured by the provider to allow requests from Open WebUI.": "", - "Could not check for updates": "", - "Could not load release notes.": "", - "Could not read file.": "", - "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "", - "Couldn't find your language?": "", - "CPU": "", - "Create": "", - "Create a knowledge base": "", + "Copyright (c)": "कॉपीराइट (c)", + "CORS must be properly configured by the provider to allow requests from Open WebUI.": "Open WebUI से अनुरोधों की अनुमति देने के लिए प्रदाता को CORS सही ढंग से कॉन्फ़िगर करना चाहिए.", + "Could not check for updates": "अपडेट की जाँच नहीं हो सकी", + "Could not load release notes.": "रिलीज़ नोट लोड नहीं हो सके.", + "Could not read file.": "फ़ाइल पढ़ी नहीं जा सकी.", + "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "क्या आप पहले मुझसे पूछ सकते हैं कि मैं सबसे अधिक कब टालमटोल करता हूँ और फिर इससे उबरने के कुछ सुझाव दे सकते हैं?", + "Couldn't find your language?": "आपकी भाषा नहीं मिली?", + "CPU": "CPU", + "Create": "बनाएँ", + "Create a knowledge base": "ज्ञान आधार बनाएँ", "Create a model": "एक मॉडल बनाएं", - "Create a new note": "", - "Create a reusable terminal skill from this chat.": "", + "Create a new note": "नया नोट बनाएँ", + "Create a reusable terminal skill from this chat.": "इस चैट से दोबारा उपयोग योग्य टर्मिनल कौशल बनाएँ.", "Create Account": "खाता बनाएं", - "Create Admin Account": "", - "Create announcements shown to users in the app.": "", - "Create Channel": "", - "Create Folder": "", - "Create Knowledge": "", - "Create Model": "", + "Create Admin Account": "व्यवस्थापक खाता बनाएँ", + "Create announcements shown to users in the app.": "ऐप में उपयोगकर्ताओं को दिखाई जाने वाली घोषणाएँ बनाएँ.", + "Create Channel": "चैनल बनाएँ", + "Create Folder": "फ़ोल्डर बनाएँ", + "Create Knowledge": "ज्ञान बनाएँ", + "Create Model": "मॉडल बनाएँ", "Create new key": "नई कुंजी बनाएं", - "Create Prompt": "", - "Create scheduled prompts that run automatically on a recurring basis.": "", - "Create skill": "", - "Create skill: create a reusable terminal skill from this chat.": "", - "Create your first note from the Create menu.": "", - "Created": "", + "Create Prompt": "प्रॉम्प्ट बनाएँ", + "Create scheduled prompts that run automatically on a recurring basis.": "ऐसे निर्धारित प्रॉम्प्ट बनाएँ जो नियमित अंतराल पर अपने-आप चलें.", + "Create skill": "कौशल बनाएँ", + "Create skill: create a reusable terminal skill from this chat.": "कौशल बनाएँ: इस चैट से दोबारा उपयोग योग्य टर्मिनल कौशल बनाएँ.", + "Create your first note from the Create menu.": "बनाएँ मेनू से अपना पहला नोट बनाएँ.", + "Created": "बनाया गया", "Created at": "किस समय बनाया गया", "Created At": "किस समय बनाया गया", - "Created by": "", - "Created by you": "", - "Created on {{date}}": "", - "CSV Import": "", - "CSV: Name,Email": "", - "Ctrl+Enter to Send": "", - "Cumulative": "", - "Current": "", - "Current branch": "", + "Created by": "निर्माता", + "Created by you": "आपने बनाया", + "Created on {{date}}": "{{date}} को बनाया गया", + "CSV Import": "CSV आयात", + "CSV: Name,Email": "CSV: Name,Email", + "Ctrl+Enter to Send": "भेजने के लिए Ctrl+Enter", + "Cumulative": "संचयी", + "Current": "वर्तमान", + "Current branch": "वर्तमान शाखा", "Current Model": "वर्तमान मॉडल", - "Current streak": "", - "Custom": "कस्टम संस्करण", - "Custom color": "", - "Custom description enabled": "", - "Custom Gender": "", - "Custom Parameter Name": "", - "Custom Parameter Value": "", - "Custom permissions": "", - "Custom range": "", - "Daily": "", - "Daily at": "", - "Daily Messages": "", + "Current streak": "वर्तमान सिलसिला", + "Custom": "कस्टम", + "Custom color": "कस्टम रंग", + "Custom description enabled": "कस्टम विवरण सक्षम है", + "Custom Gender": "कस्टम लिंग", + "Custom Parameter Name": "कस्टम पैरामीटर का नाम", + "Custom Parameter Value": "कस्टम पैरामीटर का मान", + "Custom permissions": "कस्टम अनुमतियाँ", + "Custom range": "कस्टम अवधि", + "Daily": "प्रतिदिन", + "Daily at": "प्रतिदिन इस समय", + "Daily Messages": "दैनिक संदेश", "Dark": "डार्क", - "Data": "", + "Data": "डेटा", "Database": "डेटाबेस", - "Datalab Marker API": "", - "Date is required": "", - "Date Modified": "", - "Day": "", - "DD/MM/YYYY": "", + "Datalab Marker API": "Datalab Marker API", + "Date is required": "तारीख आवश्यक है", + "Date Modified": "संशोधन की तारीख", + "Day": "दिन", + "DD/MM/YYYY": "DD/MM/YYYY", "December": "डिसेंबर", - "Deepgram": "", + "Deepgram": "Deepgram", "Default": "डिफ़ॉल्ट", - "Default (Open AI)": "", + "Default (Open AI)": "डिफ़ॉल्ट (Open AI)", "Default (SentenceTransformers)": "डिफ़ॉल्ट (SentenceTransformers)", - "Default action buttons will be used.": "", - "Default description enabled": "", - "Default Filters": "", - "Default Interface Settings": "", + "Default action buttons will be used.": "डिफ़ॉल्ट कार्रवाई बटन उपयोग किए जाएँगे.", + "Default description enabled": "डिफ़ॉल्ट विवरण सक्षम है", + "Default Filters": "डिफ़ॉल्ट फ़िल्टर", + "Default Interface Settings": "डिफ़ॉल्ट इंटरफ़ेस सेटिंग्स", "Default Model": "डिफ़ॉल्ट मॉडल", "Default model updated": "डिफ़ॉल्ट मॉडल अपडेट किया गया", - "Default permissions": "", - "Default permissions updated successfully": "", + "Default permissions": "डिफ़ॉल्ट अनुमतियाँ", + "Default permissions updated successfully": "डिफ़ॉल्ट अनुमतियाँ सफलतापूर्वक अपडेट की गईं", "Default Prompt Suggestions": "डिफ़ॉल्ट प्रॉम्प्ट सुझाव", - "Default to 389 or 636 if TLS is enabled": "", - "Default to ALL": "", - "Default to memberOf": "", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", - "Default webhook": "", - "Delete": "डिलीट", - "Delete {{name}}": "", + "Default to 389 or 636 if TLS is enabled": "डिफ़ॉल्ट 389 या TLS सक्षम होने पर 636", + "Default to ALL": "डिफ़ॉल्ट ALL", + "Default to memberOf": "डिफ़ॉल्ट memberOf", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "केंद्रित और प्रासंगिक सामग्री निकालने के लिए डिफ़ॉल्ट रूप से खंडों में पुनर्प्राप्ति करें, अधिकांश मामलों में इसकी अनुशंसा की जाती है.", + "Default webhook": "डिफ़ॉल्ट वेबहुक", + "Delete": "हटाएँ", + "Delete {{name}}": "{{name}} हटाएँ", "Delete a model": "एक मॉडल हटाएँ", - "Delete All": "", - "Delete all contents inside this directory": "", - "Delete all contents inside this folder": "", - "Delete API Key?": "", - "Delete automation?": "", - "Delete calendar": "", - "Delete Calendar": "", + "Delete All": "सभी हटाएँ", + "Delete all contents inside this directory": "इस डायरेक्टरी की सारी सामग्री हटाएँ", + "Delete all contents inside this folder": "इस फ़ोल्डर की सारी सामग्री हटाएँ", + "Delete API Key?": "API कुंजी हटाएँ?", + "Delete automation?": "ऑटोमेशन हटाएँ?", + "Delete calendar": "कैलेंडर हटाएँ", + "Delete Calendar": "कैलेंडर हटाएँ", "Delete Chat": "चैट हटाएं", - "Delete chat?": "", - "Delete directory?": "", - "Delete Event": "", - "Delete File": "", - "Delete folder?": "", - "Delete function?": "", - "Delete Memory?": "", - "Delete Message": "", - "Delete message?": "", - "Delete Model": "", - "Delete note?": "", - "Delete prompt?": "", - "Delete skill?": "", + "Delete chat?": "चैट हटाएँ?", + "Delete directory?": "डायरेक्टरी हटाएँ?", + "Delete Event": "इवेंट हटाएँ", + "Delete File": "फ़ाइल हटाएँ", + "Delete folder?": "फ़ोल्डर हटाएँ?", + "Delete function?": "फ़ंक्शन हटाएँ?", + "Delete Memory?": "मेमोरी हटाएँ?", + "Delete Message": "संदेश हटाएँ", + "Delete message?": "संदेश हटाएँ?", + "Delete Model": "मॉडल हटाएँ", + "Delete note?": "नोट हटाएँ?", + "Delete prompt?": "प्रॉम्प्ट हटाएँ?", + "Delete skill?": "कौशल हटाएँ?", "delete this link": "इस लिंक को हटाएं", - "Delete tool?": "", - "Delete User": "उपभोक्ता मिटायें", - "Delete Version": "", - "Deleted": "", + "Delete tool?": "टूल हटाएँ?", + "Delete User": "उपयोगकर्ता हटाएँ", + "Delete Version": "संस्करण हटाएँ", + "Deleted": "हटाया गया", "Deleted {{deleteModelTag}}": "{{deleteModelTag}} हटा दिया गया", "Deleted {{name}}": "{{name}} हटा दिया गया", - "Deleted {{ok}} of {{total}} items": "", - "Deleted User": "", - "Denied {{NAME}}": "", - "Deny": "", - "Deny Tool Call": "", - "Deployment names are required for Azure OpenAI": "", - "Desc": "", - "Describe the edit...": "", - "Describe the image...": "", - "Describe what changed...": "", - "Describe your knowledge base and objectives": "", + "Deleted {{ok}} of {{total}} items": "{{total}} में से {{ok}} आइटम हटाए गए", + "Deleted User": "हटाया गया उपयोगकर्ता", + "Denied {{NAME}}": "{{NAME}} की अनुमति अस्वीकार की गई", + "Deny": "अस्वीकार करें", + "Deny Tool Call": "टूल कॉल अस्वीकार करें", + "Deployment names are required for Azure OpenAI": "Azure OpenAI के लिए डिप्लॉयमेंट नाम आवश्यक हैं", + "Desc": "अवरोही", + "Describe the edit...": "संपादन का वर्णन करें...", + "Describe the image...": "चित्र का वर्णन करें...", + "Describe what changed...": "बदलावों का वर्णन करें...", + "Describe your knowledge base and objectives": "अपने ज्ञान आधार और उद्देश्यों का वर्णन करें", "Description": "विवरण", - "Description ({{language}})": "", - "Deselect": "", - "Destination": "", - "Detected Variables": "", - "Dictate": "", + "Description ({{language}})": "विवरण ({{language}})", + "Deselect": "चयन हटाएँ", + "Destination": "गंतव्य", + "Detected Variables": "पहचाने गए वेरिएबल", + "Dictate": "बोलकर लिखें", "Didn't fully follow instructions": "निर्देशों का पूरी तरह से पालन नहीं किया", - "Diff settings": "", - "Direct": "", - "Direct Message": "", - "Direct Tool Servers": "", - "Directory created.": "", - "Directory deleted.": "", - "Directory moved.": "", - "Directory name": "", - "Directory renamed.": "", - "Directory selection was cancelled": "", - "Disable all": "", - "Disable All": "", - "Disable Code Interpreter": "", + "Diff settings": "अंतर की सेटिंग्स", + "Direct": "सीधा", + "Direct Message": "सीधा संदेश", + "Direct Tool Servers": "सीधे टूल सर्वर", + "Directory created.": "डायरेक्टरी बनाई गई.", + "Directory deleted.": "डायरेक्टरी हटाई गई.", + "Directory moved.": "डायरेक्टरी स्थानांतरित की गई.", + "Directory name": "डायरेक्टरी का नाम", + "Directory renamed.": "डायरेक्टरी का नाम बदला गया.", + "Directory selection was cancelled": "डायरेक्टरी का चयन रद्द किया गया", + "Disable all": "सभी अक्षम करें", + "Disable All": "सभी अक्षम करें", + "Disable Code Interpreter": "कोड इंटरप्रेटर अक्षम करें", "Disabled": "अक्षम", - "Disconnect OAuth": "", - "Discover a function": "", + "Disconnect OAuth": "OAuth डिस्कनेक्ट करें", + "Discover a function": "फ़ंक्शन खोजें", "Discover a model": "एक मॉडल की खोज करें", "Discover a prompt": "प्रॉम्प्ट खोजें", - "Discover a tool": "", - "Discover, download, and explore custom functions": "", + "Discover a tool": "टूल खोजें", + "Discover, download, and explore custom functions": "कस्टम फ़ंक्शन खोजें, डाउनलोड करें और जानें", "Discover, download, and explore custom prompts": "कस्टम प्रॉम्प्ट को खोजें, डाउनलोड करें और एक्सप्लोर करें", - "Discover, download, and explore custom tools": "", + "Discover, download, and explore custom tools": "कस्टम टूल खोजें, डाउनलोड करें और जानें", "Discover, download, and explore model presets": "मॉडल प्रीसेट खोजें, डाउनलोड करें और एक्सप्लोर करें", - "Discussion channel where access is based on groups and permissions": "", - "Dismiss": "", - "Dismiss notification": "", - "Display": "", - "Do not install functions from sources you do not fully trust.": "", - "Do not install tools from sources you do not fully trust.": "", - "Do you want to sync your usage stats with Open WebUI Community?": "", - "Docling": "", - "Docling Parameters": "", - "Docling Server URL required.": "", + "Discussion channel where access is based on groups and permissions": "चर्चा का चैनल जिसमें पहुँच समूहों और अनुमतियों पर आधारित होती है", + "Dismiss": "खारिज करें", + "Dismiss notification": "सूचना खारिज करें", + "Display": "प्रदर्शन", + "Do not install functions from sources you do not fully trust.": "उन स्रोतों से फ़ंक्शन इंस्टॉल न करें जिन पर आपको पूरा भरोसा नहीं है.", + "Do not install tools from sources you do not fully trust.": "उन स्रोतों से टूल इंस्टॉल न करें जिन पर आपको पूरा भरोसा नहीं है.", + "Do you want to sync your usage stats with Open WebUI Community?": "क्या आप अपने उपयोग के आँकड़े Open WebUI Community के साथ सिंक करना चाहते हैं?", + "Docling": "Docling", + "Docling Parameters": "Docling पैरामीटर", + "Docling Server URL required.": "Docling सर्वर URL आवश्यक है.", "Document": "दस्तावेज़", - "Document ID Field": "", - "Document Intelligence": "", - "Document Intelligence endpoint required.": "", - "Documentation": "", - "does not make any external connections, and your data stays securely on your locally hosted server.": "कोई बाहरी कनेक्शन नहीं बनाता है, और आपका डेटा आपके स्थानीय रूप से होस्ट किए गए सर्वर पर सुरक्षित रूप से रहता है।", - "Don't fetch random pipelines from sources you don't trust.": "", + "Document ID Field": "दस्तावेज़ ID फ़ील्ड", + "Document Intelligence": "Document Intelligence", + "Document Intelligence endpoint required.": "Document Intelligence एंडपॉइंट आवश्यक है.", + "Documentation": "दस्तावेज़ीकरण", + "does not make any external connections, and your data stays securely on your locally hosted server.": "कोई बाहरी कनेक्शन नहीं बनाता है, और आपका डेटा आपके स्थानीय रूप से होस्ट किए गए सर्वर पर सुरक्षित रूप से रहता है.", + "Don't fetch random pipelines from sources you don't trust.": "अविश्वसनीय स्रोतों से अनजान पाइपलाइन न लाएँ.", "Don't have an account?": "कोई खाता नहीं है?", "Don't like the style": "शैली पसंद नहीं है", - "Done": "", - "Download": "डाउनलोड", - "Download \"{{searchValue}}\"": "", - "Download \"{{searchValue}}\" from {{provider}}": "", - "Download as JSON": "", - "Download as SVG": "", + "Done": "हो गया", + "Download": "डाउनलोड करें", + "Download \"{{searchValue}}\"": "\"{{searchValue}}\" डाउनलोड करें", + "Download \"{{searchValue}}\" from {{provider}}": "{{provider}} से \"{{searchValue}}\" डाउनलोड करें", + "Download as JSON": "JSON के रूप में डाउनलोड करें", + "Download as SVG": "SVG के रूप में डाउनलोड करें", "Download canceled": "डाउनलोड रद्द किया गया", - "Download CSV Template": "", - "Download failed": "", - "Download Model": "", - "Downloading \"{{name}}\"": "", - "Downloading \"{{searchValue}}\"": "", - "Downloading stats...": "", - "Drag and Drop Container": "", - "Drag to reorder": "", - "Draw": "", - "Drop any files here to upload": "", - "Drop files here": "", - "Drop to upload": "", - "DuckDuckGo": "", - "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "जैसे '30s', '10m', मान्य समय इकाइयाँ 's', 'm', 'h' हैं।", - "e.g. 'low', 'medium', 'high'": "", - "e.g. \"json\" or a JSON schema": "", - "e.g. 60": "", - "e.g. A filter to remove profanity from text": "", - "e.g. about the Roman Empire": "", - "e.g. alloy, echo, shimmer": "", - "e.g. Code Review Guidelines": "", - "e.g. code-review-guidelines": "", - "e.g. en": "", - "e.g. My Filter": "", - "e.g. My Tools": "", - "e.g. my_filter": "", - "e.g. my_tools": "", - "e.g. pdf, docx, txt": "", - "e.g. Step-by-step instructions for code reviews": "", - "e.g. Tell me a fun fact": "", - "e.g. Tell me a fun fact about the Roman Empire": "", - "e.g. Tools for performing various operations": "", - "e.g., 3, 4, 5 (leave blank for default)": "", - "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", - "e.g., westus (leave blank for eastus)": "", + "Download CSV Template": "CSV टेम्पलेट डाउनलोड करें", + "Download failed": "डाउनलोड विफल रहा", + "Download Model": "मॉडल डाउनलोड करें", + "Downloading \"{{name}}\"": "\"{{name}}\" डाउनलोड हो रहा है", + "Downloading \"{{searchValue}}\"": "\"{{searchValue}}\" डाउनलोड हो रहा है", + "Downloading stats...": "आँकड़े डाउनलोड हो रहे हैं...", + "Drag and Drop Container": "ड्रैग और ड्रॉप कंटेनर", + "Drag to reorder": "क्रम बदलने के लिए खींचें", + "Draw": "चित्र बनाएँ", + "Drop any files here to upload": "अपलोड करने के लिए फ़ाइलें यहाँ छोड़ें", + "Drop files here": "फ़ाइलें यहाँ छोड़ें", + "Drop to upload": "अपलोड करने के लिए छोड़ें", + "DuckDuckGo": "DuckDuckGo", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "जैसे '30s', '10m', मान्य समय इकाइयाँ 's', 'm', 'h' हैं.", + "e.g. 'low', 'medium', 'high'": "जैसे 'low', 'medium', 'high'", + "e.g. \"json\" or a JSON schema": "जैसे \"json\" या JSON स्कीमा", + "e.g. 60": "जैसे 60", + "e.g. A filter to remove profanity from text": "जैसे पाठ से अभद्र भाषा हटाने वाला फ़िल्टर", + "e.g. about the Roman Empire": "जैसे रोमन साम्राज्य के बारे में", + "e.g. alloy, echo, shimmer": "जैसे alloy, echo, shimmer", + "e.g. Code Review Guidelines": "जैसे कोड समीक्षा दिशानिर्देश", + "e.g. code-review-guidelines": "जैसे code-review-guidelines", + "e.g. en": "जैसे en", + "e.g. My Filter": "जैसे मेरा फ़िल्टर", + "e.g. My Tools": "जैसे मेरे टूल", + "e.g. my_filter": "जैसे my_filter", + "e.g. my_tools": "जैसे my_tools", + "e.g. pdf, docx, txt": "जैसे pdf, docx, txt", + "e.g. Step-by-step instructions for code reviews": "जैसे कोड समीक्षा के लिए क्रमबद्ध निर्देश", + "e.g. Tell me a fun fact": "जैसे मुझे एक रोचक तथ्य बताएँ", + "e.g. Tell me a fun fact about the Roman Empire": "जैसे मुझे रोमन साम्राज्य के बारे में एक रोचक तथ्य बताएँ", + "e.g. Tools for performing various operations": "जैसे विभिन्न कार्यों को करने के टूल", + "e.g., 3, 4, 5 (leave blank for default)": "जैसे, 3, 4, 5 (डिफ़ॉल्ट के लिए खाली छोड़ें)", + "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "जैसे, audio/wav,audio/mpeg,video/* (डिफ़ॉल्ट के लिए खाली छोड़ें)", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "जैसे, en-US,ja-JP (स्वतः पहचानने के लिए खाली छोड़ें)", + "e.g., westus (leave blank for eastus)": "जैसे, westus (eastus के लिए खाली छोड़ें)", "Edit": "संपादित करें", - "Edit Arena Model": "", - "Edit Channel": "", - "Edit Connection": "", - "Edit Default Permissions": "", - "Edit Folder": "", - "Edit Knowledge Connection": "", - "Edit Last Message": "", - "Edit Memory": "", - "Edit Prompt": "", - "Edit Terminal Connection": "", - "Edit User": "यूजर को संपादित करो", - "Edit User Group": "", - "Edit User Variable": "", - "Edit webhook": "", - "edited": "", - "Editing language": "", - "Eject": "", - "Eject model": "", - "ElevenLabs": "", + "Edit Arena Model": "एरीना मॉडल संपादित करें", + "Edit Channel": "चैनल संपादित करें", + "Edit Connection": "कनेक्शन संपादित करें", + "Edit Default Permissions": "डिफ़ॉल्ट अनुमतियाँ संपादित करें", + "Edit Folder": "फ़ोल्डर संपादित करें", + "Edit Knowledge Connection": "ज्ञान स्रोत का कनेक्शन संपादित करें", + "Edit Last Message": "अंतिम संदेश संपादित करें", + "Edit Memory": "मेमोरी संपादित करें", + "Edit Prompt": "प्रॉम्प्ट संपादित करें", + "Edit Terminal Connection": "टर्मिनल कनेक्शन संपादित करें", + "Edit User": "उपयोगकर्ता संपादित करें", + "Edit User Group": "उपयोगकर्ता समूह संपादित करें", + "Edit User Variable": "उपयोगकर्ता वेरिएबल संपादित करें", + "Edit webhook": "वेबहुक संपादित करें", + "edited": "संपादित", + "Editing language": "संपादन की भाषा", + "Eject": "अनलोड करें", + "Eject model": "मॉडल अनलोड करें", + "ElevenLabs": "ElevenLabs", "Email": "ईमेल", - "Embedded content": "", - "Emoji": "", - "Emoji graphics provided by": "", - "Emojis": "", - "Empty": "", - "Empty message": "", - "Enable All": "", - "Enable all ({{COUNT}})": "", - "Enable Code Interpreter": "", - "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "", - "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "", - "Enable Mirostat sampling for controlling perplexity.": "", + "Embedded content": "एम्बेड की गई सामग्री", + "Emoji": "इमोजी", + "Emoji graphics provided by": "इमोजी ग्राफ़िक्स के प्रदाता", + "Emojis": "इमोजी", + "Empty": "खाली", + "Empty message": "खाली संदेश", + "Enable All": "सभी सक्षम करें", + "Enable all ({{COUNT}})": "सभी सक्षम करें ({{COUNT}})", + "Enable Code Interpreter": "कोड इंटरप्रेटर सक्षम करें", + "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "मॉडल डेटा को RAM से बाहर स्वैप होने से रोकने के लिए मेमोरी लॉकिंग (mlock) सक्षम करें. यह विकल्प मॉडल के कार्यरत पेजों को RAM में लॉक करता है, ताकि वे डिस्क पर स्वैप न हों. इससे पेज फ़ॉल्ट से बचकर और डेटा तक तेज़ पहुँच सुनिश्चित करके प्रदर्शन बनाए रखने में मदद मिल सकती है.", + "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "मॉडल डेटा लोड करने के लिए मेमोरी मैपिंग (mmap) सक्षम करें. इस विकल्प से सिस्टम डिस्क फ़ाइलों को RAM में मौजूद मानकर डिस्क स्टोरेज को RAM के विस्तार की तरह उपयोग कर सकता है. इससे डेटा तक तेज़ पहुँच के माध्यम से मॉडल का प्रदर्शन बेहतर हो सकता है. हालाँकि, यह सभी सिस्टम पर सही ढंग से काम नहीं कर सकता और काफ़ी डिस्क स्थान ले सकता है.", + "Enable Mirostat sampling for controlling perplexity.": "परप्लेक्सिटी नियंत्रित करने के लिए Mirostat सैंपलिंग सक्षम करें.", "Enabled": "सक्षम", - "End call": "", - "End Tag": "", - "Endpoint": "", - "Enforce Temporary Chat": "", - "Enhance": "", - "Enhance this note and update it.": "", - "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "सुनिश्चित करें कि आपकी CSV फ़ाइल में इस क्रम में 4 कॉलम शामिल हैं: नाम, ईमेल, पासवर्ड, भूमिका।", + "End call": "कॉल समाप्त करें", + "End Tag": "समापन टैग", + "Endpoint": "एंडपॉइंट", + "Enforce Temporary Chat": "अस्थायी चैट अनिवार्य करें", + "Enhance": "बेहतर बनाएँ", + "Enhance this note and update it.": "इस नोट को बेहतर बनाकर अपडेट करें.", + "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "सुनिश्चित करें कि आपकी CSV फ़ाइल में इसी क्रम में 4 कॉलम हों: Name, Email, Password, Role.", "Enter {{role}} message here": "यहां {{role}} संदेश दर्ज करें", - "Enter 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 api auth string (e.g. username:password)": "", - "Enter Application DN": "", - "Enter Application DN Password": "", - "Enter Bing Search V7 Endpoint": "", - "Enter Bing Search V7 Subscription Key": "", - "Enter Bocha Search API Key": "", + "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": "अतिरिक्त हेडर JSON फ़ॉर्मैट में दर्ज करें", + "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "अतिरिक्त हेडर JSON फ़ॉर्मैट में दर्ज करें (जैसे {\"X-Custom-Header\": \"value\"}", + "Enter additional parameters in JSON format": "अतिरिक्त पैरामीटर JSON फ़ॉर्मैट में दर्ज करें", + "Enter api auth string (e.g. username:password)": "API प्रमाणीकरण स्ट्रिंग दर्ज करें (जैसे username:password)", + "Enter Application DN": "एप्लिकेशन DN दर्ज करें", + "Enter Application DN Password": "एप्लिकेशन DN पासवर्ड दर्ज करें", + "Enter Bing Search V7 Endpoint": "Bing Search V7 एंडपॉइंट दर्ज करें", + "Enter Bing Search V7 Subscription Key": "Bing Search V7 सब्सक्रिप्शन कुंजी दर्ज करें", + "Enter Bocha Search API Key": "Bocha Search API कुंजी दर्ज करें", "Enter Brave Search API Key": "Brave सर्च एपीआई कुंजी डालें", - "Enter certificate path": "", - "Enter Chunk Min Size Target": "", + "Enter certificate path": "सर्टिफ़िकेट का पथ दर्ज करें", + "Enter Chunk Min Size Target": "चंक के न्यूनतम आकार का लक्ष्य दर्ज करें", "Enter Chunk Overlap": "चंक ओवरलैप दर्ज करें", - "Enter Chunk Size": "खंड आकार दर्ज करें", - "Enter Client ID": "", - "Enter Client Secret": "", - "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 description": "", - "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 External Web Loader API Key": "", - "Enter External Web Loader URL": "", - "Enter External Web Search API Key": "", - "Enter External Web Search URL": "", - "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 GitHub Raw URL": "", + "Enter Chunk Size": "चंक आकार दर्ज करें", + "Enter Client ID": "क्लाइंट ID दर्ज करें", + "Enter Client Secret": "क्लाइंट सीक्रेट दर्ज करें", + "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "अल्पविराम से अलग किए गए \"token:bias_value\" युग्म दर्ज करें (उदाहरण: 5432:100, 413:-100)", + "Enter content for the pending user info overlay. Leave empty for default.": "लंबित उपयोगकर्ता सूचना ओवरले की सामग्री दर्ज करें. डिफ़ॉल्ट के लिए खाली छोड़ें.", + "Enter coordinates (e.g. 51.505, -0.09)": "निर्देशांक दर्ज करें (जैसे 51.505, -0.09)", + "Enter Datalab Marker API Base URL": "Datalab Marker API बेस URL दर्ज करें", + "Enter Datalab Marker API Key": "Datalab Marker API कुंजी दर्ज करें", + "Enter description": "विवरण दर्ज करें", + "Enter Docling API Key": "Docling API कुंजी दर्ज करें", + "Enter Docling Server URL": "Docling सर्वर URL दर्ज करें", + "Enter Document Intelligence Endpoint": "Document Intelligence एंडपॉइंट दर्ज करें", + "Enter Document Intelligence Key": "Document Intelligence कुंजी दर्ज करें", + "Enter Document Intelligence Model": "Document Intelligence मॉडल दर्ज करें", + "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "अल्पविराम से अलग किए गए डोमेन दर्ज करें (जैसे, example.com,site.org,!excludedsite.com)", + "Enter Exa API Key": "Exa API कुंजी दर्ज करें", + "Enter External Document Loader API Key": "बाहरी दस्तावेज़ लोडर की API कुंजी दर्ज करें", + "Enter External Document Loader URL": "बाहरी दस्तावेज़ लोडर का URL दर्ज करें", + "Enter External Web Loader API Key": "बाहरी वेब लोडर की API कुंजी दर्ज करें", + "Enter External Web Loader URL": "बाहरी वेब लोडर का URL दर्ज करें", + "Enter External Web Search API Key": "बाहरी वेब खोज की API कुंजी दर्ज करें", + "Enter External Web Search URL": "बाहरी वेब खोज का URL दर्ज करें", + "Enter Firecrawl API Base URL": "Firecrawl API बेस URL दर्ज करें", + "Enter Firecrawl API Key": "Firecrawl API कुंजी दर्ज करें", + "Enter Firecrawl Timeout": "Firecrawl टाइमआउट दर्ज करें", + "Enter folder name": "फ़ोल्डर का नाम दर्ज करें", + "Enter function name filter list (e.g. func1, !func2)": "फ़ंक्शन नाम की फ़िल्टर सूची दर्ज करें (जैसे func1, !func2)", + "Enter GitHub Raw URL": "GitHub Raw URL दर्ज करें", "Enter Google PSE API Key": "Google PSE API कुंजी दर्ज करें", "Enter Google PSE Engine Id": "Google PSE इंजन आईडी दर्ज करें", - "Enter hex color (e.g. #FF0000)": "", + "Enter hex color (e.g. #FF0000)": "हेक्स रंग दर्ज करें (जैसे #FF0000)", "Enter Image Size (e.g. 512x512)": "छवि का आकार दर्ज करें (उदा. 512x512)", - "Enter Jina API Base URL": "", - "Enter Jina API Key": "", - "Enter JSON config (e.g., {\"disable_links\": true})": "", - "Enter Jupyter Password": "", - "Enter Jupyter Token": "", - "Enter Jupyter URL": "", - "Enter Kagi Search API Key": "", - "Enter language": "", + "Enter Jina API Base URL": "Jina API बेस URL दर्ज करें", + "Enter Jina API Key": "Jina API कुंजी दर्ज करें", + "Enter JSON config (e.g., {\"disable_links\": true})": "JSON कॉन्फ़िगरेशन दर्ज करें (जैसे, {\"disable_links\": true})", + "Enter Jupyter Password": "Jupyter पासवर्ड दर्ज करें", + "Enter Jupyter Token": "Jupyter टोकन दर्ज करें", + "Enter Jupyter URL": "Jupyter URL दर्ज करें", + "Enter Kagi Search API Key": "Kagi Search API कुंजी दर्ज करें", + "Enter language": "भाषा दर्ज करें", "Enter language codes": "भाषा कोड दर्ज करें", - "Enter Linkup API Key": "", - "Enter Microsoft Web IQ API Base URL": "", - "Enter Microsoft Web IQ API Key": "", - "Enter MinerU API Key": "", - "Enter Mistral API Base URL": "", - "Enter Mistral API Key": "", - "Enter model tag (e.g. {{modelTag}})": "Model tag दर्ज करें (उदा. {{modelTag}})", - "Enter Mojeek Search API Key": "", - "Enter name": "", - "Enter New Password": "", + "Enter Linkup API Key": "Linkup API कुंजी दर्ज करें", + "Enter Microsoft Web IQ API Base URL": "Microsoft Web IQ API बेस URL दर्ज करें", + "Enter Microsoft Web IQ API Key": "Microsoft Web IQ API कुंजी दर्ज करें", + "Enter MinerU API Key": "MinerU API कुंजी दर्ज करें", + "Enter Mistral API Base URL": "Mistral API बेस URL दर्ज करें", + "Enter Mistral API Key": "Mistral API कुंजी दर्ज करें", + "Enter model tag (e.g. {{modelTag}})": "मॉडल टैग दर्ज करें (जैसे {{modelTag}})", + "Enter Mojeek Search API Key": "Mojeek Search API कुंजी दर्ज करें", + "Enter name": "नाम दर्ज करें", + "Enter New Password": "नया पासवर्ड दर्ज करें", "Enter Number of Steps (e.g. 50)": "चरणों की संख्या दर्ज करें (उदा. 50)", - "Enter Ollama Cloud API Key": "", - "Enter OpenSERP Base URL": "", - "Enter PaddleOCR-vl API Base URL": "", - "Enter PaddleOCR-vl API Token": "", - "Enter Perplexity API Key": "", - "Enter Perplexity Search API URL": "", - "Enter Playwright Timeout": "", - "Enter Playwright WebSocket URL": "", - "Enter prompt here.": "", - "Enter proxy URL (e.g. https://user:password@host:port)": "", - "Enter reasoning effort": "", - "Enter Redirect URI": "", + "Enter Ollama Cloud API Key": "Ollama Cloud API कुंजी दर्ज करें", + "Enter OpenSERP Base URL": "OpenSERP बेस URL दर्ज करें", + "Enter PaddleOCR-vl API Base URL": "PaddleOCR-vl API बेस URL दर्ज करें", + "Enter PaddleOCR-vl API Token": "PaddleOCR-vl API टोकन दर्ज करें", + "Enter Perplexity API Key": "Perplexity API कुंजी दर्ज करें", + "Enter Perplexity Search API URL": "Perplexity Search API URL दर्ज करें", + "Enter Playwright Timeout": "Playwright टाइमआउट दर्ज करें", + "Enter Playwright WebSocket URL": "Playwright WebSocket URL दर्ज करें", + "Enter prompt here.": "यहाँ प्रॉम्प्ट दर्ज करें.", + "Enter proxy URL (e.g. https://user:password@host:port)": "प्रॉक्सी URL दर्ज करें (जैसे https://user:password@host:port)", + "Enter reasoning effort": "तर्क प्रयास का स्तर दर्ज करें", + "Enter Redirect URI": "रीडायरेक्ट URI दर्ज करें", "Enter Score": "स्कोर दर्ज करें", - "Enter SearchApi API Key": "", - "Enter SearchApi Engine": "", + "Enter SearchApi API Key": "SearchApi API कुंजी दर्ज करें", + "Enter SearchApi Engine": "SearchApi इंजन दर्ज करें", "Enter Searxng Query URL": "Searxng क्वेरी URL दर्ज करें", - "Enter Searxng search language": "", - "Enter Seed": "", - "Enter SerpApi API Key": "", - "Enter SerpApi Engine": "", + "Enter Searxng search language": "Searxng खोज की भाषा दर्ज करें", + "Enter Seed": "सीड दर्ज करें", + "Enter SerpApi API Key": "SerpApi API कुंजी दर्ज करें", + "Enter SerpApi Engine": "SerpApi इंजन दर्ज करें", "Enter Serper API Key": "Serper API कुंजी दर्ज करें", - "Enter SERPHouse API Key": "", - "Enter Serply API Key": "", - "Enter Serpstack API Key": "सर्पस्टैक एपीआई कुंजी दर्ज करें", - "Enter server host": "", - "Enter server label": "", - "Enter server port": "", - "Enter skill instructions in markdown...": "", - "Enter Sougou Search API sID": "", - "Enter Sougou Search API SK": "", - "Enter Staan API Key": "", + "Enter SERPHouse API Key": "SERPHouse API कुंजी दर्ज करें", + "Enter Serply API Key": "Serply API कुंजी दर्ज करें", + "Enter Serpstack API Key": "Serpstack API कुंजी दर्ज करें", + "Enter server host": "सर्वर होस्ट दर्ज करें", + "Enter server label": "सर्वर लेबल दर्ज करें", + "Enter server port": "सर्वर पोर्ट दर्ज करें", + "Enter skill instructions in markdown...": "कौशल के निर्देश markdown में दर्ज करें...", + "Enter Sougou Search API sID": "Sougou Search API sID दर्ज करें", + "Enter Sougou Search API SK": "Sougou Search API SK दर्ज करें", + "Enter Staan API Key": "Staan API कुंजी दर्ज करें", "Enter stop sequence": "स्टॉप अनुक्रम दर्ज करें", - "Enter system prompt": "", - "Enter system prompt here": "", - "Enter Tavily API Key": "", - "Enter Tavily Extract Depth": "", - "Enter the URL of the function to import": "", - "Enter the URL to import": "", - "Enter Tika Server URL": "", - "Enter to Send": "", - "Enter token threshold": "", - "Enter Tokenizer Model": "", - "Enter Top K": "शीर्ष K दर्ज करें", - "Enter Top K Reranker": "", + "Enter system prompt": "सिस्टम प्रॉम्प्ट दर्ज करें", + "Enter system prompt here": "यहाँ सिस्टम प्रॉम्प्ट दर्ज करें", + "Enter Tavily API Key": "Tavily API कुंजी दर्ज करें", + "Enter Tavily Extract Depth": "Tavily से सामग्री निकालने की गहराई दर्ज करें", + "Enter the URL of the function to import": "आयात करने वाले फ़ंक्शन का URL दर्ज करें", + "Enter the URL to import": "आयात करने वाला URL दर्ज करें", + "Enter Tika Server URL": "Tika सर्वर URL दर्ज करें", + "Enter to Send": "भेजने के लिए Enter", + "Enter token threshold": "टोकन की सीमा दर्ज करें", + "Enter Tokenizer Model": "टोकनाइज़र मॉडल दर्ज करें", + "Enter Top K": "Top K दर्ज करें", + "Enter Top K Reranker": "Top K री-रैंकर दर्ज करें", "Enter URL (e.g. http://127.0.0.1:7860/)": "यूआरएल दर्ज करें (उदा. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "यूआरएल दर्ज करें (उदा. http://localhost:11434)", - "Enter value": "", - "Enter value (true/false)": "", - "Enter Yacy Password": "", - "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "", - "Enter Yacy Username": "", - "Enter Yandex Web Search API Key": "", - "Enter Yandex Web Search URL": "", - "Enter You.com API Key": "", + "Enter value": "मान दर्ज करें", + "Enter value (true/false)": "मान दर्ज करें (true/false)", + "Enter Yacy Password": "Yacy पासवर्ड दर्ज करें", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Yacy URL दर्ज करें (जैसे http://yacy.example.com:8090)", + "Enter Yacy Username": "Yacy उपयोगकर्ता नाम दर्ज करें", + "Enter Yandex Web Search API Key": "Yandex Web Search API कुंजी दर्ज करें", + "Enter Yandex Web Search URL": "Yandex Web Search URL दर्ज करें", + "Enter You.com API Key": "You.com API कुंजी दर्ज करें", "Enter your code here...": "अपना कोड यहाँ दर्ज करें...", - "Enter your current password": "", + "Enter your current password": "अपना वर्तमान पासवर्ड दर्ज करें", "Enter Your Email": "अपना ईमेल दर्ज करें", "Enter Your Full Name": "अपना पूरा नाम भरें", - "Enter your gender": "", - "Enter your message": "", - "Enter your name": "", - "Enter Your Name": "", - "Enter your new password": "", + "Enter your gender": "अपना लिंग दर्ज करें", + "Enter your message": "अपना संदेश दर्ज करें", + "Enter your name": "अपना नाम दर्ज करें", + "Enter Your Name": "अपना नाम दर्ज करें", + "Enter your new password": "अपना नया पासवर्ड दर्ज करें", "Enter Your Password": "अपना पासवर्ड भरें", "Enter Your Role": "अपनी भूमिका दर्ज करें", - "Enter Your Username": "", - "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "", - "Enterprise licensing": "", - "Entra ID": "", - "Environment Variables": "", - "Ephemeral": "", + "Enter Your Username": "अपना उपयोगकर्ता नाम दर्ज करें", + "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "एंटरप्राइज़ लाइसेंस में समर्पित सहायता, अनुकूलन विकल्प और अन्य सुविधाएँ भी शामिल हैं, जिनकी लागत इस स्टैक को स्वयं बनाने और बनाए रखने की लागत का एक छोटा हिस्सा है.", + "Enterprise licensing": "एंटरप्राइज़ लाइसेंसिंग", + "Entra ID": "Entra ID", + "Environment Variables": "एनवायरनमेंट वेरिएबल", + "Ephemeral": "अल्पकालिक", "Error": "त्रुटि", - "ERROR": "", - "Error accessing directory": "", - "Error accessing Google Drive: {{error}}": "", - "Error accessing media devices.": "", - "Error deleting model: {{error}}": "", - "Error previewing file: {{error}}": "", - "Error starting recording.": "", - "Error unloading model: {{error}}": "", - "Error uploading file: {{error}}": "", - "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "", - "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "", - "Evaluations": "", - "Event": "", - "Event created": "", - "Event deleted": "", - "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "", - "Event title": "", - "Event updated": "", - "Every {{count}} hours_one": "", - "Every {{count}} hours_other": "", - "Every {{count}} minutes_one": "", - "Every {{count}} minutes_other": "", - "Every minute": "", - "Example": "", - "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "", - "Example: ALL": "", - "Example: mail": "", - "Example: ou=users,dc=foo,dc=example": "", - "Example: sAMAccountName or uid or userPrincipalName": "", - "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "", - "Exclude": "", - "Execute code for analysis": "", - "Executing {{NAME}}...": "", - "Expand": "", - "Expand input": "", - "Experience": "", + "ERROR": "त्रुटि", + "Error accessing directory": "डायरेक्टरी तक पहुँचने में त्रुटि", + "Error accessing Google Drive: {{error}}": "Google Drive तक पहुँचने में त्रुटि: {{error}}", + "Error accessing media devices.": "मीडिया डिवाइस तक पहुँचने में त्रुटि.", + "Error deleting model: {{error}}": "मॉडल हटाने में त्रुटि: {{error}}", + "Error previewing file: {{error}}": "फ़ाइल का पूर्वावलोकन दिखाने में त्रुटि: {{error}}", + "Error starting recording.": "रिकॉर्डिंग शुरू करने में त्रुटि.", + "Error unloading model: {{error}}": "मॉडल अनलोड करने में त्रुटि: {{error}}", + "Error uploading file: {{error}}": "फ़ाइल अपलोड करने में त्रुटि: {{error}}", + "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "त्रुटि: '{{modelId}}' ID वाला मॉडल पहले से मौजूद है. आगे बढ़ने के लिए अलग ID चुनें.", + "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "त्रुटि: मॉडल ID खाली नहीं हो सकती. आगे बढ़ने के लिए मान्य ID दर्ज करें.", + "Evaluations": "मूल्यांकन", + "Event": "इवेंट", + "Event created": "इवेंट बनाया गया", + "Event deleted": "इवेंट हटाया गया", + "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "Open WebUI के विकास के साथ इवेंट के नाम बदल सकते हैं. नए संबंधित इवेंट के साथ भी चलते रहने वाले इंटीग्रेशन के लिए user.* जैसे व्यापक पैटर्न का उपयोग करें.", + "Event title": "इवेंट का शीर्षक", + "Event updated": "इवेंट अपडेट किया गया", + "Every {{count}} hours_one": "हर {{count}} घंटे", + "Every {{count}} hours_other": "हर {{count}} घंटे", + "Every {{count}} minutes_one": "हर {{count}} मिनट", + "Every {{count}} minutes_other": "हर {{count}} मिनट", + "Every minute": "हर मिनट", + "Example": "उदाहरण", + "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "उदाहरण: (&(objectClass=inetOrgPerson)(uid=%s))", + "Example: ALL": "उदाहरण: ALL", + "Example: mail": "उदाहरण: mail", + "Example: ou=users,dc=foo,dc=example": "उदाहरण: ou=users,dc=foo,dc=example", + "Example: sAMAccountName or uid or userPrincipalName": "उदाहरण: sAMAccountName या uid या userPrincipalName", + "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "आपके लाइसेंस में अनुमत सीटों की संख्या पार हो गई है. सीटों की संख्या बढ़ाने के लिए सहायता से संपर्क करें.", + "Exclude": "बाहर रखें", + "Execute code for analysis": "विश्लेषण के लिए कोड चलाएँ", + "Executing {{NAME}}...": "{{NAME}} चल रहा है...", + "Expand": "विस्तृत करें", + "Expand input": "इनपुट विस्तृत करें", + "Experience": "अनुभव", "Experimental": "प्रयोगात्मक", - "Explain": "", - "Explain options trading": "", - "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "", - "Explored": "", - "Exploring": "", + "Explain": "समझाएँ", + "Explain options trading": "ऑप्शन ट्रेडिंग समझाएँ", + "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "यदि मुझे शेयर खरीदने और बेचने की जानकारी है, तो मुझे ऑप्शन ट्रेडिंग सरल शब्दों में समझाएँ.", + "Explored": "खोजबीन की गई", + "Exploring": "खोजबीन हो रही है", "Export": "निर्यात करें", - "Export as CSV": "", - "Export as JSON": "", - "Export chat (.json)": "", - "Export JSON": "", - "Export Models": "", - "Export Prompts": "", - "Export Skills": "", - "Export to CSV": "", - "Export Tools": "", - "External": "", - "External connection not found.": "", - "External Document Loader URL required.": "", - "External Knowledge Source": "", - "External vectors must be generated with the same embedding model configured in Open WebUI.": "", - "Extract action items from this note.": "", - "Extracted text lines": "", - "Extracting text and comparing…": "", - "Failed to add file.": "", - "Failed to add members": "", - "Failed to archive chat.": "", - "Failed to clear status": "", - "Failed to compare files.": "", - "Failed to connect to {{URL}} OpenAPI tool server": "", - "Failed to connect to {{URL}} terminal server": "", - "Failed to copy link": "", + "Export as CSV": "CSV के रूप में निर्यात करें", + "Export as JSON": "JSON के रूप में निर्यात करें", + "Export chat (.json)": "चैट निर्यात करें (.json)", + "Export JSON": "JSON निर्यात करें", + "Export Models": "मॉडल निर्यात करें", + "Export Prompts": "प्रॉम्प्ट निर्यात करें", + "Export Skills": "कौशल निर्यात करें", + "Export to CSV": "CSV में निर्यात करें", + "Export Tools": "टूल निर्यात करें", + "External": "बाहरी", + "External connection not found.": "बाहरी कनेक्शन नहीं मिला.", + "External Document Loader URL required.": "बाहरी दस्तावेज़ लोडर का URL आवश्यक है.", + "External Knowledge Source": "बाहरी ज्ञान स्रोत", + "External vectors must be generated with the same embedding model configured in Open WebUI.": "बाहरी वेक्टर उसी एंबेडिंग मॉडल से बनाए जाने चाहिए जो Open WebUI में कॉन्फ़िगर है.", + "Extract action items from this note.": "इस नोट से किए जाने वाले काम निकालें.", + "Extracted text lines": "निकाली गई पाठ पंक्तियाँ", + "Extracting text and comparing…": "पाठ निकालकर तुलना हो रही है…", + "Failed to add file.": "फ़ाइल जोड़ना विफल रहा.", + "Failed to add members": "सदस्य जोड़ना विफल रहा", + "Failed to archive chat.": "चैट संग्रह में रखना विफल रहा.", + "Failed to clear status": "स्थिति हटाना विफल रहा", + "Failed to compare files.": "फ़ाइलों की तुलना करना विफल रहा.", + "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI टूल सर्वर से कनेक्ट करना विफल रहा", + "Failed to connect to {{URL}} terminal server": "{{URL}} टर्मिनल सर्वर से कनेक्ट करना विफल रहा", + "Failed to copy link": "लिंक कॉपी करना विफल रहा", "Failed to create API Key.": "एपीआई कुंजी बनाने में विफल.", - "Failed to create chat": "", - "Failed to delete calendar": "", - "Failed to delete note": "", - "Failed to delete webhook": "", - "Failed to disconnect": "", - "Failed to download image": "", - "Failed to extract content from the file: {{error}}": "", - "Failed to extract content from the file.": "", - "Failed to fetch models": "", - "Failed to fork chat": "", - "Failed to generate title": "", - "Failed to import models": "", - "Failed to load chat": "", - "Failed to load chat preview": "", - "Failed to load DOCX file. Please try downloading it instead.": "", - "Failed to load Excel/CSV file. Please try downloading it instead.": "", - "Failed to load file content.": "", - "Failed to load folder": "", - "Failed to load Interface settings": "", - "Failed to load policy: {{error}}": "", - "Failed to load PPTX file. Please try downloading it instead.": "", - "Failed to load usage": "", - "Failed to load valves": "", - "Failed to move chat": "", - "Failed to open database": "", - "Failed to process URL: {{url}}": "", + "Failed to create chat": "चैट बनाना विफल रहा", + "Failed to delete calendar": "कैलेंडर हटाना विफल रहा", + "Failed to delete note": "नोट हटाना विफल रहा", + "Failed to delete webhook": "वेबहुक हटाना विफल रहा", + "Failed to disconnect": "डिस्कनेक्ट करना विफल रहा", + "Failed to download image": "चित्र डाउनलोड करना विफल रहा", + "Failed to extract content from the file: {{error}}": "फ़ाइल से सामग्री निकालना विफल रहा: {{error}}", + "Failed to extract content from the file.": "फ़ाइल से सामग्री निकालना विफल रहा.", + "Failed to fetch models": "मॉडल प्राप्त करना विफल रहा", + "Failed to fork chat": "चैट की शाखा बनाना विफल रहा", + "Failed to generate title": "शीर्षक बनाना विफल रहा", + "Failed to import models": "मॉडल आयात करना विफल रहा", + "Failed to load chat": "चैट लोड करना विफल रहा", + "Failed to load chat preview": "चैट का पूर्वावलोकन लोड करना विफल रहा", + "Failed to load DOCX file. Please try downloading it instead.": "DOCX फ़ाइल लोड करना विफल रहा. कृपया इसे डाउनलोड करके देखें.", + "Failed to load Excel/CSV file. Please try downloading it instead.": "Excel/CSV फ़ाइल लोड करना विफल रहा. कृपया इसे डाउनलोड करके देखें.", + "Failed to load file content.": "फ़ाइल की सामग्री लोड करना विफल रहा.", + "Failed to load folder": "फ़ोल्डर लोड करना विफल रहा", + "Failed to load Interface settings": "इंटरफ़ेस सेटिंग्स लोड करना विफल रहा", + "Failed to load policy: {{error}}": "नीति लोड करना विफल रहा: {{error}}", + "Failed to load PPTX file. Please try downloading it instead.": "PPTX फ़ाइल लोड करना विफल रहा. कृपया इसे डाउनलोड करके देखें.", + "Failed to load usage": "उपयोग की जानकारी लोड करना विफल रहा", + "Failed to load valves": "वाल्व लोड करना विफल रहा", + "Failed to move chat": "चैट स्थानांतरित करना विफल रहा", + "Failed to open database": "डेटाबेस खोलना विफल रहा", + "Failed to process URL: {{url}}": "URL संसाधित करना विफल रहा: {{url}}", "Failed to read clipboard contents": "क्लिपबोर्ड सामग्री पढ़ने में विफल", - "Failed to refresh terminals: {{error}}": "", - "Failed to remove member": "", - "Failed to render diagram": "", - "Failed to render visualization": "", - "Failed to save chat variables": "", - "Failed to save connections": "", + "Failed to refresh terminals: {{error}}": "टर्मिनल रीफ़्रेश करना विफल रहा: {{error}}", + "Failed to remove member": "सदस्य हटाना विफल रहा", + "Failed to render diagram": "आरेख दिखाना विफल रहा", + "Failed to render visualization": "विज़ुअलाइज़ेशन दिखाना विफल रहा", + "Failed to save chat variables": "चैट वेरिएबल सहेजना विफल रहा", + "Failed to save connections": "कनेक्शन सहेजना विफल रहा", "Failed to save conversation": "वार्तालाप सहेजने में विफल", - "Failed to save model": "", - "Failed to save models configuration": "", - "Failed to save policy: {{error}}": "", - "Failed to save terminal servers": "", - "Failed to save webhook": "", - "Failed to search files": "", - "Failed to unshare chat.": "", - "Failed to update settings": "", - "Failed to update status": "", - "Failed to update webhook": "", - "Failed to upload background image.": "", - "Failed to upload file.": "", - "Features Permissions": "", + "Failed to save model": "मॉडल सहेजना विफल रहा", + "Failed to save models configuration": "मॉडल का कॉन्फ़िगरेशन सहेजना विफल रहा", + "Failed to save policy: {{error}}": "नीति सहेजना विफल रहा: {{error}}", + "Failed to save terminal servers": "टर्मिनल सर्वर सहेजना विफल रहा", + "Failed to save webhook": "वेबहुक सहेजना विफल रहा", + "Failed to search files": "फ़ाइलें खोजना विफल रहा", + "Failed to unshare chat.": "चैट का साझाकरण बंद करना विफल रहा.", + "Failed to update settings": "सेटिंग्स अपडेट करना विफल रहा", + "Failed to update status": "स्थिति अपडेट करना विफल रहा", + "Failed to update webhook": "वेबहुक अपडेट करना विफल रहा", + "Failed to upload background image.": "पृष्ठभूमि चित्र अपलोड करना विफल रहा.", + "Failed to upload file.": "फ़ाइल अपलोड करना विफल रहा.", + "Features Permissions": "सुविधाओं की अनुमतियाँ", "February": "फरवरी", - "Feedback": "", - "Feedback Activity": "", - "Feedback deleted successfully": "", - "Feedback Details": "", - "Feel free to add specific details": "विशिष्ट विवरण जोड़ने के लिए स्वतंत्र महसूस करें", - "Female": "", - "Fetch page contents without proxy environment variables.": "", - "File": "", - "File added successfully.": "", - "File browser": "", - "File content": "", - "File content updated successfully.": "", - "File deleted successfully.": "", - "File differences": "", + "Feedback": "फ़ीडबैक", + "Feedback Activity": "फ़ीडबैक गतिविधि", + "Feedback deleted successfully": "फ़ीडबैक सफलतापूर्वक हटाया गया", + "Feedback Details": "फ़ीडबैक का विवरण", + "Feel free to add specific details": "आप विशिष्ट जानकारी जोड़ सकते हैं", + "Female": "महिला", + "Fetch page contents without proxy environment variables.": "प्रॉक्सी एनवायरनमेंट वेरिएबल के बिना पृष्ठ की सामग्री प्राप्त करें.", + "File": "फ़ाइल", + "File added successfully.": "फ़ाइल सफलतापूर्वक जोड़ी गई.", + "File browser": "फ़ाइल ब्राउज़र", + "File content": "फ़ाइल की सामग्री", + "File content updated successfully.": "फ़ाइल की सामग्री सफलतापूर्वक अपडेट की गई.", + "File deleted successfully.": "फ़ाइल सफलतापूर्वक हटाई गई.", + "File differences": "फ़ाइल के अंतर", "File Mode": "फ़ाइल मोड", - "File moved.": "", - "File name": "", - "File not found.": "फ़ाइल प्राप्त नहीं हुई।", - "File removed successfully.": "", - "File renamed.": "", - "File size should not exceed {{maxSize}} MB.": "", - "File uploaded successfully": "", - "Filename": "", - "Filename matches": "", - "Files": "", - "Filesystem": "", - "Fill the required fields first.": "", - "Fill the source fields and test query first.": "", - "Filter": "", - "Filter is now globally disabled": "", - "Filter is now globally enabled": "", - "Filters": "", - "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "फ़िंगरप्रिंट स्पूफ़िंग का पता चला: प्रारंभिक अक्षरों को अवतार के रूप में उपयोग करने में असमर्थ। प्रोफ़ाइल छवि को डिफ़ॉल्ट पर डिफ़ॉल्ट किया जा रहा है.", - "Focus Chat Input": "", - "Folder": "", - "Folder Background Image": "", - "Folder created successfully": "", - "Folder deleted successfully": "", - "Folder name": "", - "Folder Name": "", - "Folder name cannot be empty.": "", - "Folder name updated successfully": "", - "Folder options": "", - "Folder updated successfully": "", - "Folders": "", - "Folders Sharing": "", - "Follow up": "", - "Follow up: {{question}}": "", + "File moved.": "फ़ाइल स्थानांतरित की गई.", + "File name": "फ़ाइल का नाम", + "File not found.": "फ़ाइल प्राप्त नहीं हुई.", + "File removed successfully.": "फ़ाइल सफलतापूर्वक हटाई गई.", + "File renamed.": "फ़ाइल का नाम बदला गया.", + "File size should not exceed {{maxSize}} MB.": "फ़ाइल का आकार {{maxSize}} MB से अधिक नहीं होना चाहिए.", + "File uploaded successfully": "फ़ाइल सफलतापूर्वक अपलोड की गई", + "Filename": "फ़ाइल का नाम", + "Filename matches": "फ़ाइल नाम का मिलान", + "Files": "फ़ाइलें", + "Filesystem": "फ़ाइल सिस्टम", + "Fill the required fields first.": "पहले आवश्यक फ़ील्ड भरें.", + "Fill the source fields and test query first.": "पहले स्रोत फ़ील्ड और परीक्षण क्वेरी भरें.", + "Filter": "फ़िल्टर", + "Filter is now globally disabled": "फ़िल्टर अब सभी जगह अक्षम है", + "Filter is now globally enabled": "फ़िल्टर अब सभी जगह सक्षम है", + "Filters": "फ़िल्टर", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "फ़िंगरप्रिंट स्पूफ़िंग का पता चला: नाम के शुरुआती अक्षर अवतार के रूप में उपयोग नहीं किए जा सकते. डिफ़ॉल्ट प्रोफ़ाइल चित्र उपयोग किया जा रहा है.", + "Focus Chat Input": "चैट इनपुट पर फ़ोकस करें", + "Folder": "फ़ोल्डर", + "Folder Background Image": "फ़ोल्डर का पृष्ठभूमि चित्र", + "Folder created successfully": "फ़ोल्डर सफलतापूर्वक बनाया गया", + "Folder deleted successfully": "फ़ोल्डर सफलतापूर्वक हटाया गया", + "Folder name": "फ़ोल्डर का नाम", + "Folder Name": "फ़ोल्डर का नाम", + "Folder name cannot be empty.": "फ़ोल्डर का नाम खाली नहीं हो सकता.", + "Folder name updated successfully": "फ़ोल्डर का नाम सफलतापूर्वक अपडेट किया गया", + "Folder options": "फ़ोल्डर विकल्प", + "Folder updated successfully": "फ़ोल्डर सफलतापूर्वक अपडेट किया गया", + "Folders": "फ़ोल्डर", + "Folders Sharing": "फ़ोल्डर साझाकरण", + "Follow up": "आगे का प्रश्न", + "Follow up: {{question}}": "आगे का प्रश्न: {{question}}", "Followed instructions perfectly": "निर्देशों का पूर्णतः पालन किया", - "for placeholders": "", - "for what to do with my kids' art": "", - "Fork": "", - "Fork chat": "", - "Fork the current chat branch into a new chat.": "", - "Fork: fork the current chat branch into a new chat.": "", - "Forking chat...": "", - "Form": "", - "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "", - "Formatting": "", - "Formatting may be inconsistent from source.": "", - "Forward": "", - "Forward cookies": "", - "Forward cookies from your Open WebUI request to this server.": "", - "Forwards system user OAuth access token to authenticate": "", - "Forwards system user session credentials to authenticate": "", - "Fr_day_of_week": "", - "from {{provider}}": "", - "Full access": "", - "Function created successfully": "", - "Function deleted successfully": "", - "Function Description": "", - "Function ID": "", - "Function imported successfully": "", - "Function is now globally disabled": "", - "Function is now globally enabled": "", - "Function Menu": "", - "Function Name": "", - "Function Name Filter List": "", - "Function starter": "", - "Function updated successfully": "", - "Functions": "", - "Functions allow arbitrary code execution.": "", - "Functions can execute arbitrary code.": "", - "Functions imported successfully": "", - "Gemini": "", - "Gemini API Key is required.": "", + "for placeholders": "प्लेसहोल्डर के लिए", + "for what to do with my kids' art": "कि अपने बच्चों की कलाकृतियों का क्या करूँ", + "Fork": "शाखा बनाएँ", + "Fork chat": "चैट की शाखा बनाएँ", + "Fork the current chat branch into a new chat.": "वर्तमान चैट की शाखा से नई चैट बनाएँ.", + "Fork: fork the current chat branch into a new chat.": "शाखा बनाएँ: वर्तमान चैट की शाखा से नई चैट बनाएँ.", + "Forking chat...": "चैट की शाखा बन रही है...", + "Form": "फ़ॉर्म", + "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "टाइप और पेस्ट करते समय Markdown फ़ॉर्मैट करें. Markdown के चिह्न बनाए रखने और सामान्य पाठ पेस्ट करने के लिए इसे बंद करें. मौजूदा फ़ॉर्मैटिंग बनी रहती है.", + "Formatting": "फ़ॉर्मैटिंग", + "Formatting may be inconsistent from source.": "फ़ॉर्मैटिंग स्रोत से अलग हो सकती है.", + "Forward": "आगे", + "Forward cookies": "कुकी फ़ॉरवर्ड करें", + "Forward cookies from your Open WebUI request to this server.": "अपने Open WebUI अनुरोध की कुकी इस सर्वर को फ़ॉरवर्ड करें.", + "Forwards system user OAuth access token to authenticate": "प्रमाणीकरण के लिए सिस्टम उपयोगकर्ता का OAuth ऐक्सेस टोकन फ़ॉरवर्ड करता है", + "Forwards system user session credentials to authenticate": "प्रमाणीकरण के लिए सिस्टम उपयोगकर्ता के सत्र क्रेडेंशियल फ़ॉरवर्ड करता है", + "Fr_day_of_week": "शुक्र", + "from {{provider}}": "{{provider}} से", + "Full access": "पूर्ण पहुँच", + "Function created successfully": "फ़ंक्शन सफलतापूर्वक बनाया गया", + "Function deleted successfully": "फ़ंक्शन सफलतापूर्वक हटाया गया", + "Function Description": "फ़ंक्शन का विवरण", + "Function ID": "फ़ंक्शन ID", + "Function imported successfully": "फ़ंक्शन सफलतापूर्वक आयात किया गया", + "Function is now globally disabled": "फ़ंक्शन अब सभी जगह अक्षम है", + "Function is now globally enabled": "फ़ंक्शन अब सभी जगह सक्षम है", + "Function Menu": "फ़ंक्शन मेनू", + "Function Name": "फ़ंक्शन का नाम", + "Function Name Filter List": "फ़ंक्शन नाम की फ़िल्टर सूची", + "Function starter": "फ़ंक्शन का प्रारंभिक टेम्पलेट", + "Function updated successfully": "फ़ंक्शन सफलतापूर्वक अपडेट किया गया", + "Functions": "फ़ंक्शन", + "Functions allow arbitrary code execution.": "फ़ंक्शन किसी भी कोड को चलाने की अनुमति देते हैं.", + "Functions can execute arbitrary code.": "फ़ंक्शन किसी भी कोड को चला सकते हैं.", + "Functions imported successfully": "फ़ंक्शन सफलतापूर्वक आयात किए गए", + "Gemini": "Gemini", + "Gemini API Key is required.": "Gemini API कुंजी आवश्यक है.", "General": "सामान्य", - "Generate": "", - "Generate an image": "", - "Generate message pair": "", - "Generate Message Pair": "", - "Generated Image": "", - "Generated images will appear here": "", - "Generating search query": "खोज क्वेरी जनरेट करना", - "Generating...": "", - "Get information on {{name}} in the UI": "", - "Get started": "", - "Get started with {{WEBUI_NAME}}": "", - "Give me ideas": "", - "give me tips": "", - "Global": "", - "Good Response": "अच्छी प्रतिक्रिया", - "Google": "", - "Google Drive": "", - "Gravatar": "", - "Grid": "", - "Grokipedia": "", - "group": "", - "Group": "", - "Group Channel": "", - "Group created successfully": "", - "Group deleted successfully": "", - "Group Description": "", - "Group Name": "", - "Group updated successfully": "", - "groups": "", - "Groups": "", - "H1": "", - "H2": "", - "H3": "", - "Headers": "", - "Headers must be a valid JSON object": "", - "Height": "", + "Generate": "बनाएँ", + "Generate an image": "चित्र बनाएँ", + "Generate message pair": "संदेश युग्म बनाएँ", + "Generate Message Pair": "संदेश युग्म बनाएँ", + "Generated Image": "बनाया गया चित्र", + "Generated images will appear here": "बनाए गए चित्र यहाँ दिखाई देंगे", + "Generating search query": "खोज क्वेरी बन रही है", + "Generating...": "बन रहा है...", + "Get information on {{name}} in the UI": "UI में {{name}} के बारे में जानकारी प्राप्त करें", + "Get started": "शुरू करें", + "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} के साथ शुरू करें", + "Give me ideas": "मुझे सुझाव दें", + "give me tips": "मुझे सुझाव दें", + "Global": "वैश्विक", + "Good Response": "अच्छा उत्तर", + "Google": "Google", + "Google Drive": "Google Drive", + "Gravatar": "Gravatar", + "Grid": "ग्रिड", + "Grokipedia": "Grokipedia", + "group": "समूह", + "Group": "समूह", + "Group Channel": "समूह चैनल", + "Group created successfully": "समूह सफलतापूर्वक बनाया गया", + "Group deleted successfully": "समूह सफलतापूर्वक हटाया गया", + "Group Description": "समूह का विवरण", + "Group Name": "समूह का नाम", + "Group updated successfully": "समूह सफलतापूर्वक अपडेट किया गया", + "groups": "समूह", + "Groups": "समूह", + "H1": "H1", + "H2": "H2", + "H3": "H3", + "Headers": "हेडर", + "Headers must be a valid JSON object": "हेडर मान्य JSON ऑब्जेक्ट होने चाहिए", + "Height": "ऊँचाई", "Hello, {{name}}": "नमस्ते, {{name}}", "Help": "मदद", - "Help me study": "", - "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "", - "Help the community discover great models": "", - "Help us translate Open WebUI!": "", - "Hex Color": "", - "Hex Color - Leave empty for default color": "", - "Hidden": "", + "Help me study": "पढ़ाई में मेरी मदद करें", + "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "शब्दावली सीखने में मेरी मदद करें: मेरे लिए रिक्त स्थान वाला वाक्य लिखें, और मैं सही विकल्प चुनने की कोशिश करूँगा.", + "Help the community discover great models": "समुदाय को अच्छे मॉडल खोजने में मदद करें", + "Help us translate Open WebUI!": "Open WebUI का अनुवाद करने में हमारी मदद करें!", + "Hex Color": "हेक्स रंग", + "Hex Color - Leave empty for default color": "हेक्स रंग - डिफ़ॉल्ट रंग के लिए खाली छोड़ें", + "Hidden": "छिपा हुआ", "Hide": "छुपाएं", - "Hide All": "", - "Hide from Sidebar": "", - "Hide Hidden Files": "", - "Hide Model": "", - "Hide whitespace": "", - "High": "", - "History": "", - "Home": "", - "Horizontal Layout": "", - "Hourly": "", - "Hourly Messages": "", + "Hide All": "सभी छिपाएँ", + "Hide from Sidebar": "साइडबार से छिपाएँ", + "Hide Hidden Files": "छिपी फ़ाइलें छिपाएँ", + "Hide Model": "मॉडल छिपाएँ", + "Hide whitespace": "व्हाइटस्पेस छिपाएँ", + "High": "उच्च", + "History": "इतिहास", + "Home": "होम", + "Horizontal Layout": "क्षैतिज लेआउट", + "Hourly": "हर घंटे", + "Hourly Messages": "प्रति घंटे संदेश", "How can I help you today?": "आज मैं आपकी कैसे मदद कर सकता हूँ?", - "How would you rate this response?": "", - "HTML": "", - "HTML Preview": "", - "http://localhost:8000": "", - "https://mineru.net/api/v4": "", - "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "", - "ID": "", - "ID cannot contain \":\" or \"|\" characters": "", - "ID copied to clipboard": "", - "Identity audit": "", - "Idle only": "", - "Idle Timeout": "", - "if I'm familiar with buying and selling stocks": "", - "Image": "", - "Image Generation": "", - "Image Max Compression Size": "", - "Image Max Compression Size height": "", - "Image Max Compression Size width": "", - "Image unavailable": "", - "image/*, video/*": "", - "Images": "", - "Import": "", - "Import CSV": "", - "Import From Link": "", - "Import JSON": "", - "Import Models": "", - "Import Prompts": "", - "Import Skills": "", - "Import successful": "", - "Import Tools": "", - "Import txt/md": "", - "Imported automations successfully": "", - "Imported notes successfully": "", - "Importing...": "", - "Inactive": "", - "Include": "", - "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "", + "How would you rate this response?": "आप इस उत्तर को क्या रेटिंग देंगे?", + "HTML": "HTML", + "HTML Preview": "HTML पूर्वावलोकन", + "http://localhost:8000": "http://localhost:8000", + "https://mineru.net/api/v4": "https://mineru.net/api/v4", + "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "मैं स्वीकार करता हूँ कि मैंने अपनी कार्रवाई के परिणाम पढ़े और समझे हैं. मुझे किसी भी कोड को चलाने से जुड़े जोखिमों की जानकारी है और मैंने स्रोत की विश्वसनीयता की पुष्टि की है.", + "ID": "ID", + "ID cannot contain \":\" or \"|\" characters": "ID में \":\" या \"|\" चिह्न नहीं हो सकते", + "ID copied to clipboard": "ID क्लिपबोर्ड पर कॉपी की गई", + "Identity audit": "पहचान ऑडिट", + "Idle only": "केवल निष्क्रिय होने पर", + "Idle Timeout": "निष्क्रियता टाइमआउट", + "if I'm familiar with buying and selling stocks": "यदि मुझे शेयर खरीदने और बेचने की जानकारी है", + "Image": "चित्र", + "Image Generation": "चित्र निर्माण", + "Image Max Compression Size": "चित्र संपीड़न का अधिकतम आकार", + "Image Max Compression Size height": "चित्र संपीड़न के अधिकतम आकार की ऊँचाई", + "Image Max Compression Size width": "चित्र संपीड़न के अधिकतम आकार की चौड़ाई", + "Image unavailable": "चित्र उपलब्ध नहीं है", + "image/*, video/*": "image/*, video/*", + "Images": "चित्र", + "Import": "आयात करें", + "Import CSV": "CSV आयात करें", + "Import From Link": "लिंक से आयात करें", + "Import JSON": "JSON आयात करें", + "Import Models": "मॉडल आयात करें", + "Import Prompts": "प्रॉम्प्ट आयात करें", + "Import Skills": "कौशल आयात करें", + "Import successful": "आयात सफल रहा", + "Import Tools": "टूल आयात करें", + "Import txt/md": "txt/md आयात करें", + "Imported automations successfully": "ऑटोमेशन सफलतापूर्वक आयात किए गए", + "Imported notes successfully": "नोट सफलतापूर्वक आयात किए गए", + "Importing...": "आयात हो रहा है...", + "Inactive": "निष्क्रिय", + "Include": "शामिल करें", + "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "बनाए गए पाठ से मिले फ़ीडबैक पर एल्गोरिदम कितनी जल्दी प्रतिक्रिया देता है, इसे प्रभावित करता है. कम सीखने की दर से समायोजन धीमा होगा, जबकि अधिक सीखने की दर एल्गोरिदम को अधिक प्रतिक्रियाशील बनाएगी.", "Info": "जानकारी", - "Initials": "", - "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "", - "Inline": "", - "Input": "", - "Input Key (e.g. text, unet_name, steps)": "", - "Input needed": "", - "Input Variables": "", - "Insert into note": "", - "Instructions": "", - "Integrations": "", - "Interface Settings Access": "", - "Invalid background image.": "", - "Invalid file format.": "", - "Invalid format.": "", - "Invalid JSON": "", - "Invalid JSON file": "", - "Invalid JSON format": "", - "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": "", - "is typing...": "", - "Italic": "", + "Initials": "नाम के शुरुआती अक्षर", + "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "पूरी तरह संसाधित करने के लिए पूरी सामग्री संदर्भ में शामिल करें, जटिल प्रश्नों के लिए इसकी अनुशंसा की जाती है.", + "Inline": "इनलाइन", + "Input": "इनपुट", + "Input Key (e.g. text, unet_name, steps)": "इनपुट कुंजी (जैसे text, unet_name, steps)", + "Input needed": "इनपुट आवश्यक है", + "Input Variables": "इनपुट वेरिएबल", + "Insert into note": "नोट में डालें", + "Instructions": "निर्देश", + "Integrations": "इंटीग्रेशन", + "Interface Settings Access": "इंटरफ़ेस सेटिंग्स की पहुँच", + "Invalid background image.": "अमान्य पृष्ठभूमि चित्र.", + "Invalid file format.": "अमान्य फ़ाइल फ़ॉर्मैट.", + "Invalid format.": "अमान्य फ़ॉर्मैट.", + "Invalid JSON": "अमान्य JSON", + "Invalid JSON file": "अमान्य JSON फ़ाइल", + "Invalid JSON format": "अमान्य JSON फ़ॉर्मैट", + "Invalid JSON format for ComfyUI Edit Workflow.": "ComfyUI संपादन वर्कफ़्लो के लिए अमान्य JSON फ़ॉर्मैट.", + "Invalid JSON format for ComfyUI Workflow.": "ComfyUI वर्कफ़्लो के लिए अमान्य JSON फ़ॉर्मैट.", + "Invalid JSON format for Parameters": "पैरामीटर के लिए अमान्य JSON फ़ॉर्मैट", + "Invalid JSON format in {{NAME}}": "{{NAME}} में अमान्य JSON फ़ॉर्मैट", + "Invalid JSON format in Additional Config": "अतिरिक्त कॉन्फ़िगरेशन में अमान्य JSON फ़ॉर्मैट", + "Invalid JSON format in MinerU Parameters": "MinerU पैरामीटर में अमान्य JSON फ़ॉर्मैट", + "is typing...": "टाइप कर रहे हैं...", + "Italic": "इटैलिक", "January": "जनवरी", - "join our Discord for help.": "मदद के लिए हमारे डिस्कोर्ड में शामिल हों।", + "join our Discord for help.": "मदद के लिए हमारे Discord में शामिल हों.", "JSON": "JSON", - "JSON Base64": "", - "JSON parse error: {{error}}": "", + "JSON Base64": "JSON Base64", + "JSON parse error: {{error}}": "JSON पार्स करने में त्रुटि: {{error}}", "JSON Preview": "JSON पूर्वावलोकन", - "JSON Spec": "", + "JSON Spec": "JSON विनिर्देश", "July": "जुलाई", - "June": "जुन", - "Keep current webhook URL": "", - "Keep in Sidebar": "", - "Key": "", - "Key is required": "", - "key_name": "", - "Keyboard": "", - "Knowledge": "", - "Knowledge Access": "", - "Knowledge Base": "", - "Knowledge base has been reset": "", - "Knowledge base not found.": "", - "Knowledge created successfully.": "", - "Knowledge deleted successfully.": "", - "Knowledge Description": "", - "Knowledge exported successfully": "", - "Knowledge Name": "", - "Knowledge Public Sharing": "", - "Knowledge Sharing": "", - "Knowledge source created.": "", - "Knowledge source updated.": "", - "Knowledge updated successfully": "", - "Kokoro.js (Browser)": "", - "Last 24 hours": "", - "Last 30 days": "", - "Last 7 days": "", - "Last 90 days": "", + "June": "जून", + "Keep current webhook URL": "वर्तमान वेबहुक URL रखें", + "Keep in Sidebar": "साइडबार में रखें", + "Key": "कुंजी", + "Key is required": "कुंजी आवश्यक है", + "key_name": "key_name", + "Keyboard": "कीबोर्ड", + "Knowledge": "ज्ञान", + "Knowledge Access": "ज्ञान तक पहुँच", + "Knowledge Base": "ज्ञान आधार", + "Knowledge base has been reset": "ज्ञान आधार रीसेट कर दिया गया है", + "Knowledge base not found.": "ज्ञान आधार नहीं मिला.", + "Knowledge created successfully.": "ज्ञान सफलतापूर्वक बनाया गया.", + "Knowledge deleted successfully.": "ज्ञान सफलतापूर्वक हटाया गया.", + "Knowledge Description": "ज्ञान का विवरण", + "Knowledge exported successfully": "ज्ञान सफलतापूर्वक निर्यात किया गया", + "Knowledge Name": "ज्ञान का नाम", + "Knowledge Public Sharing": "ज्ञान को सार्वजनिक रूप से साझा करना", + "Knowledge Sharing": "ज्ञान साझा करना", + "Knowledge source created.": "ज्ञान स्रोत बनाया गया.", + "Knowledge source updated.": "ज्ञान स्रोत अपडेट किया गया.", + "Knowledge updated successfully": "ज्ञान सफलतापूर्वक अपडेट किया गया", + "Kokoro.js (Browser)": "Kokoro.js (ब्राउज़र)", + "Last 24 hours": "पिछले 24 घंटे", + "Last 30 days": "पिछले 30 दिन", + "Last 7 days": "पिछले 7 दिन", + "Last 90 days": "पिछले 90 दिन", "Last Active": "पिछली बार सक्रिय", - "Last Modified": "", - "Last reply": "", - "Last run": "", - "Leaderboard": "", - "Learn More": "", - "Learn more about Open Terminal": "", - "Learn more about OpenAPI tool servers.": "", - "Learn more about Voxtral transcription.": "", - "Leave a public review for {{modelName}}": "", - "Leave empty for no compression": "", - "Leave empty for unlimited": "", - "Leave empty to include all models from \"{{url}}\" endpoint": "", - "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "", - "Leave empty to include all models from \"{{url}}/models\" endpoint": "", - "Leave empty to include all models or select specific models": "", - "Leave empty to use first admin user": "", - "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "", - "Leave empty to use the default prompt, or enter a custom prompt": "", - "Legacy": "", - "lexical": "", - "License Error": "", - "license purchased by": "", - "Lifecycle JSON": "", - "Lifetime tokens": "", - "Lift List": "", + "Last Modified": "पिछला संशोधन", + "Last reply": "पिछला जवाब", + "Last run": "पिछला रन", + "Leaderboard": "लीडरबोर्ड", + "Learn More": "और जानें", + "Learn more about Open Terminal": "Open Terminal के बारे में और जानें", + "Learn more about OpenAPI tool servers.": "OpenAPI टूल सर्वर के बारे में और जानें.", + "Learn more about Voxtral transcription.": "Voxtral ट्रांसक्रिप्शन के बारे में और जानें.", + "Leave a public review for {{modelName}}": "{{modelName}} के लिए सार्वजनिक समीक्षा लिखें", + "Leave empty for no compression": "संपीड़न न करने के लिए खाली छोड़ें", + "Leave empty for unlimited": "असीमित रखने के लिए खाली छोड़ें", + "Leave empty to include all models from \"{{url}}\" endpoint": "\"{{url}}\" एंडपॉइंट के सभी मॉडल शामिल करने के लिए खाली छोड़ें", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "\"{{url}}/api/tags\" एंडपॉइंट के सभी मॉडल शामिल करने के लिए खाली छोड़ें", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "\"{{url}}/models\" एंडपॉइंट के सभी मॉडल शामिल करने के लिए खाली छोड़ें", + "Leave empty to include all models or select specific models": "सभी मॉडल शामिल करने के लिए खाली छोड़ें या विशिष्ट मॉडल चुनें", + "Leave empty to use first admin user": "पहले एडमिन उपयोगकर्ता का उपयोग करने के लिए खाली छोड़ें", + "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करने के लिए खाली छोड़ें, या मान्य json दर्ज करें (देखें https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)", + "Leave empty to use the default prompt, or enter a custom prompt": "डिफ़ॉल्ट प्रॉम्प्ट का उपयोग करने के लिए खाली छोड़ें, या कस्टम प्रॉम्प्ट दर्ज करें", + "Legacy": "पुराना", + "lexical": "शाब्दिक", + "License Error": "लाइसेंस त्रुटि", + "license purchased by": "लाइसेंस खरीदने वाले", + "Lifecycle JSON": "जीवनचक्र JSON", + "Lifetime tokens": "अब तक के कुल टोकन", + "Lift List": "सूची का स्तर ऊपर करें", "Light": "हल्का", - "List": "", - "Listening...": "", - "LiteLLM": "", - "Live": "", - "llama.cpp": "", + "List": "सूची", + "Listening...": "सुन रहे हैं...", + "LiteLLM": "LiteLLM", + "Live": "लाइव", + "llama.cpp": "llama.cpp", "LLMs can make mistakes. Verify important information.": "एलएलएम गलतियाँ कर सकते हैं। महत्वपूर्ण जानकारी सत्यापित करें.", - "LM Studio": "", - "Load Model": "", - "Loaded": "", - "Loading": "", - "Loading Kokoro.js...": "", - "Loading policy...": "", - "Loading release notes...": "", + "LM Studio": "LM Studio", + "Load Model": "मॉडल लोड करें", + "Loaded": "लोड किया गया", + "Loading": "लोड हो रहा है", + "Loading Kokoro.js...": "Kokoro.js लोड हो रहा है...", + "Loading policy...": "नीति लोड हो रही है...", + "Loading release notes...": "रिलीज़ नोट्स लोड हो रहे हैं...", "Loading...": "लोड हो रहा है...", - "local": "", - "Local": "", - "Location": "", - "Location access not allowed": "", - "Longest active chat": "", - "Longest streak": "", - "Lost": "", - "Low": "", + "local": "स्थानीय", + "Local": "स्थानीय", + "Location": "स्थान", + "Location access not allowed": "स्थान तक पहुँच की अनुमति नहीं है", + "Longest active chat": "सबसे लंबी सक्रिय चैट", + "Longest streak": "सबसे लंबा लगातार सक्रियता का क्रम", + "Lost": "हार गया", + "Low": "कम", "LTR": "LTR", - "Made by Open WebUI Community": "OpenWebUI समुदाय द्वारा निर्मित", - "Make Default": "", - "Make password visible in the user interface": "", - "Make Private": "", - "Make Public": "", - "Male": "", - "Manage": "", - "Manage Connections": "", - "Manage Models": "", - "Manage Ollama": "", - "Mapped Source": "", + "Made by Open WebUI Community": "Open WebUI समुदाय द्वारा निर्मित", + "Make Default": "डिफ़ॉल्ट बनाएँ", + "Make password visible in the user interface": "उपयोगकर्ता इंटरफ़ेस में पासवर्ड दिखाएँ", + "Make Private": "निजी बनाएँ", + "Make Public": "सार्वजनिक बनाएँ", + "Male": "पुरुष", + "Manage": "प्रबंधित करें", + "Manage Connections": "कनेक्शन प्रबंधित करें", + "Manage Models": "मॉडल प्रबंधित करें", + "Manage Ollama": "Ollama प्रबंधित करें", + "Mapped Source": "मैप किया गया स्रोत", "March": "मार्च", - "Mark all as read": "", - "Mark as unread": "", - "Markdown": "", - "Market": "", - "Matching tabs: {{count}}_one": "", - "Matching tabs: {{count}}_other": "", - "Max Snippets": "", - "Max tokens to retrieve (1024-32768, default 8192)": "", - "Maximum extra snippets returned per result. Set to 0 to disable them.": "", - "Maximum number of files per folder is {{max}}.": "", - "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "अधिकतम 3 मॉडल एक साथ डाउनलोड किये जा सकते हैं। कृपया बाद में पुन: प्रयास करें।", - "May": "मेई", - "MBR": "", - "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "", - "Medium": "", - "Member removed successfully": "", - "members": "", - "Members": "", - "Members added successfully": "", - "Memories": "", + "Mark all as read": "सभी को पढ़ा हुआ चिह्नित करें", + "Mark as unread": "अपठित चिह्नित करें", + "Markdown": "Markdown", + "Market": "बाज़ार", + "Matching tabs: {{count}}_one": "मेल खाने वाला टैब: {{count}}", + "Matching tabs: {{count}}_other": "मेल खाने वाले टैब: {{count}}", + "Max Snippets": "अधिकतम अंश", + "Max tokens to retrieve (1024-32768, default 8192)": "प्राप्त करने के लिए अधिकतम टोकन (1024-32768, डिफ़ॉल्ट 8192)", + "Maximum extra snippets returned per result. Set to 0 to disable them.": "प्रत्येक परिणाम के साथ लौटाए जाने वाले अतिरिक्त अंशों की अधिकतम संख्या. इन्हें अक्षम करने के लिए 0 सेट करें.", + "Maximum number of files per folder is {{max}}.": "प्रति फ़ोल्डर अधिकतम {{max}} फ़ाइलें हो सकती हैं.", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "अधिकतम 3 मॉडल एक साथ डाउनलोड किये जा सकते हैं। कृपया बाद में पुन: प्रयास करें.", + "May": "मई", + "MBR": "MBR", + "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP का समर्थन प्रायोगिक है और इसके विनिर्देश अक्सर बदलते हैं, जिससे असंगतियाँ हो सकती हैं. OpenAPI विनिर्देश का समर्थन सीधे Open WebUI टीम संभालती है, जिससे संगतता के लिए यह अधिक भरोसेमंद विकल्प है.", + "Medium": "मध्यम", + "Member removed successfully": "सदस्य सफलतापूर्वक हटाया गया", + "members": "सदस्य", + "Members": "सदस्य", + "Members added successfully": "सदस्य सफलतापूर्वक जोड़े गए", + "Memories": "मेमोरी", "Memory": "मेमोरी", - "Memory added successfully": "", - "Memory cleared successfully": "", - "Memory deleted successfully": "", - "Memory updated successfully": "", - "Merge Responses": "", - "Merged Response": "मिली-जुली प्रतिक्रिया", - "Message": "", - "Message counts and response timestamps": "", - "Message counts are based on assistant responses.": "", - "Message rating should be enabled to use this feature": "", - "Message text...": "", - "messages": "", - "Messages": "", - "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "अपना लिंक बनाने के बाद आपके द्वारा भेजे गए संदेश साझा नहीं किए जाएंगे। यूआरएल वाले यूजर्स शेयर की गई चैट देख पाएंगे।", - "Metadata Field": "", - "Microsoft OneDrive": "", - "Microsoft OneDrive (personal)": "", - "Microsoft OneDrive (work/school)": "", - "min": "", - "MinerU": "", - "MinerU API Key required for Cloud API mode.": "", - "Mistral OCR": "", - "Mistral OCR API Key required.": "", - "MistralAI": "", - "Mo_day_of_week": "", - "Model": "", - "Model '{{modelName}}' has been successfully downloaded.": "मॉडल '{{modelName}}' सफलतापूर्वक डाउनलोड हो गया है।", - "Model '{{modelTag}}' is already in queue for downloading.": "मॉडल '{{modelTag}}' पहले से ही डाउनलोड करने के लिए कतार में है।", - "Model {{modelName}} deleted successfully": "", - "Model {{modelName}} is not vision capable": "मॉडल {{modelName}} दृष्टि सक्षम नहीं है", + "Memory added successfully": "मेमोरी सफलतापूर्वक जोड़ी गई", + "Memory cleared successfully": "मेमोरी सफलतापूर्वक साफ़ की गई", + "Memory deleted successfully": "मेमोरी सफलतापूर्वक हटाई गई", + "Memory updated successfully": "मेमोरी सफलतापूर्वक अपडेट की गई", + "Merge Responses": "उत्तर मिलाएँ", + "Merged Response": "संयुक्त उत्तर", + "Message": "संदेश", + "Message counts and response timestamps": "संदेशों की संख्या और उत्तरों के टाइमस्टैम्प", + "Message counts are based on assistant responses.": "संदेशों की संख्या सहायक के उत्तरों पर आधारित है.", + "Message rating should be enabled to use this feature": "इस सुविधा का उपयोग करने के लिए संदेश रेटिंग सक्षम होनी चाहिए", + "Message text...": "संदेश का पाठ...", + "messages": "संदेश", + "Messages": "संदेश", + "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "लिंक बनाने के बाद भेजे गए संदेश साझा नहीं होंगे. URL रखने वाले उपयोगकर्ता साझा की गई चैट देख सकेंगे.", + "Metadata Field": "मेटाडेटा फ़ील्ड", + "Microsoft OneDrive": "Microsoft OneDrive", + "Microsoft OneDrive (personal)": "Microsoft OneDrive (व्यक्तिगत)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive (कार्यस्थल/विद्यालय)", + "min": "मिनट", + "MinerU": "MinerU", + "MinerU API Key required for Cloud API mode.": "Cloud API मोड के लिए MinerU API कुंजी आवश्यक है.", + "Mistral OCR": "Mistral OCR", + "Mistral OCR API Key required.": "Mistral OCR API कुंजी आवश्यक है.", + "MistralAI": "MistralAI", + "Mo_day_of_week": "सोम", + "Model": "मॉडल", + "Model '{{modelName}}' has been successfully downloaded.": "मॉडल '{{modelName}}' सफलतापूर्वक डाउनलोड हो गया है.", + "Model '{{modelTag}}' is already in queue for downloading.": "मॉडल '{{modelTag}}' पहले से ही डाउनलोड करने के लिए कतार में है.", + "Model {{modelName}} deleted successfully": "मॉडल {{modelName}} सफलतापूर्वक हटाया गया", + "Model {{modelName}} is not vision capable": "मॉडल {{modelName}} चित्रों को समझने में सक्षम नहीं है", "Model {{name}} is now {{status}}": "मॉडल {{name}} अब {{status}} है", - "Model {{name}} is now hidden": "", - "Model {{name}} is now visible": "", - "Model added to pinned models": "", - "Model added to selected models": "", - "Model created successfully!": "", - "Model deleted successfully": "", - "Model download started": "", - "Model filesystem path detected. Model shortname is required for update, cannot continue.": "मॉडल फ़ाइल सिस्टम पथ का पता चला. अद्यतन के लिए मॉडल संक्षिप्त नाम आवश्यक है, जारी नहीं रखा जा सकता।", - "Model Filtering": "", + "Model {{name}} is now hidden": "मॉडल {{name}} अब छिपा हुआ है", + "Model {{name}} is now visible": "मॉडल {{name}} अब दिखाई दे रहा है", + "Model added to pinned models": "मॉडल पिन किए गए मॉडल में जोड़ा गया", + "Model added to selected models": "मॉडल चुने गए मॉडल में जोड़ा गया", + "Model created successfully!": "मॉडल सफलतापूर्वक बनाया गया!", + "Model deleted successfully": "मॉडल सफलतापूर्वक हटाया गया", + "Model download started": "मॉडल का डाउनलोड शुरू हुआ", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "मॉडल फ़ाइल सिस्टम पथ का पता चला. अद्यतन के लिए मॉडल संक्षिप्त नाम आवश्यक है, जारी नहीं रखा जा सकता.", + "Model Filtering": "मॉडल फ़िल्टर करना", "Model ID": "मॉडल आईडी", - "Model ID cannot contain whitespace.": "", - "Model ID is already added": "", - "Model ID is required.": "", - "Model IDs": "", - "Model is now private": "", - "Model is now public": "", - "Model list refreshed": "", - "Model loaded successfully": "", - "Model Name": "", - "Model name already exists, please choose a different one": "", - "Model Name is required.": "", - "Model names and usage frequency": "", - "Model not found": "", + "Model ID cannot contain whitespace.": "मॉडल ID में खाली जगह नहीं हो सकती.", + "Model ID is already added": "मॉडल ID पहले से जोड़ी गई है", + "Model ID is required.": "मॉडल ID आवश्यक है.", + "Model IDs": "मॉडल ID", + "Model is now private": "मॉडल अब निजी है", + "Model is now public": "मॉडल अब सार्वजनिक है", + "Model list refreshed": "मॉडल सूची रीफ़्रेश की गई", + "Model loaded successfully": "मॉडल सफलतापूर्वक लोड हुआ", + "Model Name": "मॉडल का नाम", + "Model name already exists, please choose a different one": "मॉडल का नाम पहले से मौजूद है, कृपया कोई दूसरा नाम चुनें", + "Model Name is required.": "मॉडल का नाम आवश्यक है.", + "Model names and usage frequency": "मॉडल के नाम और उपयोग की आवृत्ति", + "Model not found": "मॉडल नहीं मिला", "Model not selected": "मॉडल चयनित नहीं है", - "Model order saved successfully": "", - "Model Params": "मॉडल Params", - "Model Permissions": "", - "model profile": "", - "Model providers": "", - "Model removed from pinned models": "", - "Model removed from selected models": "", - "Model responses or outputs": "", - "Model unloaded successfully": "", - "Model updated successfully": "", - "Model Usage": "", - "Model: show or switch the current model.": "", - "Model(s) do not support file upload": "", - "Modelfile Content": "मॉडल फ़ाइल सामग्री", - "modelfile profile": "", - "Models": "सभी मॉडल", - "Models Access": "", - "Models configuration saved successfully": "", - "Models imported successfully": "", - "Models Public Sharing": "", - "Models Sharing": "", - "Modified": "", - "Mojeek": "", - "Monday – Friday": "", - "Month": "", - "Monthly": "", - "More": "और..", - "More Concise": "", - "More options": "", - "More Options": "", - "Move": "", - "Moved {{name}}": "", - "Multipart Upload": "", - "Mute": "", - "Muted": "", - "My Terminal": "", + "Model order saved successfully": "मॉडल का क्रम सफलतापूर्वक सहेजा गया", + "Model Params": "मॉडल पैरामीटर", + "Model Permissions": "मॉडल की अनुमतियाँ", + "model profile": "मॉडल प्रोफ़ाइल", + "Model providers": "मॉडल प्रदाता", + "Model removed from pinned models": "मॉडल पिन किए गए मॉडल से हटाया गया", + "Model removed from selected models": "मॉडल चुने गए मॉडल से हटाया गया", + "Model responses or outputs": "मॉडल के उत्तर या आउटपुट", + "Model unloaded successfully": "मॉडल सफलतापूर्वक अनलोड हुआ", + "Model updated successfully": "मॉडल सफलतापूर्वक अपडेट किया गया", + "Model Usage": "मॉडल का उपयोग", + "Model: show or switch the current model.": "मॉडल: वर्तमान मॉडल दिखाएँ या बदलें.", + "Model(s) do not support file upload": "मॉडल फ़ाइल अपलोड का समर्थन नहीं करते", + "Modelfile Content": "Modelfile सामग्री", + "modelfile profile": "modelfile प्रोफ़ाइल", + "Models": "मॉडल", + "Models Access": "मॉडल तक पहुँच", + "Models configuration saved successfully": "मॉडल कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया", + "Models imported successfully": "मॉडल सफलतापूर्वक आयात किए गए", + "Models Public Sharing": "मॉडल को सार्वजनिक रूप से साझा करना", + "Models Sharing": "मॉडल साझा करना", + "Modified": "संशोधित", + "Mojeek": "Mojeek", + "Monday – Friday": "सोमवार – शुक्रवार", + "Month": "महीना", + "Monthly": "मासिक", + "More": "और", + "More Concise": "अधिक संक्षिप्त", + "More options": "अधिक विकल्प", + "More Options": "अधिक विकल्प", + "Move": "स्थानांतरित करें", + "Moved {{name}}": "{{name}} स्थानांतरित किया गया", + "Multipart Upload": "बहुभागीय अपलोड", + "Mute": "म्यूट करें", + "Muted": "म्यूट किया गया", + "My Terminal": "मेरा टर्मिनल", "Name": "नाम", - "Name and description are required": "", - "Name and ID are required, please fill them out": "", - "Name is required": "", - "Name your knowledge base": "", - "Name, prompt, and model are required": "", - "Native": "", - "Navigate to Next Chat": "", - "Navigate to Previous Chat": "", - "Never": "", - "New": "", - "New Button": "", - "New calendar": "", - "New Calendar": "", - "New chat": "", + "Name and description are required": "नाम और विवरण आवश्यक हैं", + "Name and ID are required, please fill them out": "नाम और ID आवश्यक हैं, कृपया इन्हें भरें", + "Name is required": "नाम आवश्यक है", + "Name your knowledge base": "अपने ज्ञान आधार को नाम दें", + "Name, prompt, and model are required": "नाम, प्रॉम्प्ट और मॉडल आवश्यक हैं", + "Native": "नेटिव", + "Navigate to Next Chat": "अगली चैट पर जाएँ", + "Navigate to Previous Chat": "पिछली चैट पर जाएँ", + "Never": "कभी नहीं", + "New": "नया", + "New Button": "नया बटन", + "New calendar": "नया कैलेंडर", + "New Calendar": "नया कैलेंडर", + "New chat": "नई चैट", "New Chat": "नई चैट", - "New directory": "", - "New Directory": "", - "New File": "", - "New Folder": "", - "New Function": "", - "New Group": "", - "New Note": "", + "New directory": "नई डायरेक्टरी", + "New Directory": "नई डायरेक्टरी", + "New File": "नई फ़ाइल", + "New Folder": "नया फ़ोल्डर", + "New Function": "नया फ़ंक्शन", + "New Group": "नया समूह", + "New Note": "नया नोट", "New Password": "नया पासवर्ड", - "New Temporary Chat": "", - "New Terminal": "", - "New Tool": "", - "New Webhook": "", - "new-channel": "", - "Next": "", - "Next message": "", - "Next month": "", - "Next page": "", - "Next run": "", - "Next version": "", - "No access grants. Private to you.": "", - "No actions found": "", - "No activity data": "", - "No additional headers are sent unless configured.": "", - "No authentication": "", - "No automations found": "", - "No channels": "", - "No chat alerts": "", - "No chat history": "", - "No chat to compact": "", - "No chat to fork": "", - "No chats": "", - "No chats found": "", - "No chats found for this user.": "", - "No chats found.": "", - "No content": "", - "No content available": "", - "No content found": "", - "No content to speak": "", - "No conversation to save": "", - "No data": "", - "No description": "", - "No distance available": "", - "No event webhooks configured.": "", - "No expiration can pose security risks.": "", - "No external knowledge sources configured.": "", - "No feedback found": "", - "No file selected": "", - "No files found": "", - "No files in this knowledge base.": "", - "No files yet. Upload files or run Python code to create them.": "", - "No filters found": "", - "No folders": "", - "No functions found": "", - "No groups found": "", - "No history available": "", - "No HTML, CSS, or JavaScript content found.": "", - "No inference engine with management support found": "", - "No kernel": "", - "No knowledge bases accessible": "", - "No knowledge bases found.": "", - "No knowledge found": "", - "No limit": "", - "No matches": "", - "No model data": "", - "No model IDs": "", - "No model usage found": "", - "No models accessible": "", - "No models available": "", - "No models found": "", - "No Notes": "", - "No notes found": "", - "No notification targets configured.": "", - "No one": "", - "No output items": "", - "No pinned messages": "", - "No prompts found": "", - "No Repeat": "", + "New Temporary Chat": "नई अस्थायी चैट", + "New Terminal": "नया टर्मिनल", + "New Tool": "नया टूल", + "New Webhook": "नया वेबहुक", + "new-channel": "नया-चैनल", + "Next": "अगला", + "Next message": "अगला संदेश", + "Next month": "अगला महीना", + "Next page": "अगला पृष्ठ", + "Next run": "अगला रन", + "Next version": "अगला संस्करण", + "No access grants. Private to you.": "किसी को पहुँच नहीं दी गई है. केवल आपके लिए निजी है.", + "No actions found": "कोई कार्रवाई नहीं मिली", + "No activity data": "गतिविधि का कोई डेटा नहीं है", + "No additional headers are sent unless configured.": "कॉन्फ़िगर किए बिना कोई अतिरिक्त हेडर नहीं भेजा जाता.", + "No authentication": "कोई प्रमाणीकरण नहीं", + "No automations found": "कोई ऑटोमेशन नहीं मिला", + "No channels": "कोई चैनल नहीं", + "No chat alerts": "कोई चैट अलर्ट नहीं", + "No chat history": "कोई चैट इतिहास नहीं", + "No chat to compact": "संक्षिप्त करने के लिए कोई चैट नहीं", + "No chat to fork": "शाखा बनाने के लिए कोई चैट नहीं", + "No chats": "कोई चैट नहीं", + "No chats found": "कोई चैट नहीं मिली", + "No chats found for this user.": "इस उपयोगकर्ता की कोई चैट नहीं मिली.", + "No chats found.": "कोई चैट नहीं मिली.", + "No content": "कोई सामग्री नहीं", + "No content available": "कोई सामग्री उपलब्ध नहीं", + "No content found": "कोई सामग्री नहीं मिली", + "No content to speak": "बोलकर सुनाने के लिए कोई सामग्री नहीं", + "No conversation to save": "सहेजने के लिए कोई बातचीत नहीं", + "No data": "कोई डेटा नहीं", + "No description": "कोई विवरण नहीं", + "No distance available": "दूरी उपलब्ध नहीं है", + "No event webhooks configured.": "कोई इवेंट वेबहुक कॉन्फ़िगर नहीं किया गया है.", + "No expiration can pose security risks.": "समाप्ति तिथि न होने से सुरक्षा संबंधी जोखिम हो सकते हैं.", + "No external knowledge sources configured.": "कोई बाहरी ज्ञान स्रोत कॉन्फ़िगर नहीं किया गया है.", + "No feedback found": "कोई फ़ीडबैक नहीं मिला", + "No file selected": "कोई फ़ाइल नहीं चुनी गई", + "No files found": "कोई फ़ाइल नहीं मिली", + "No files in this knowledge base.": "इस ज्ञान आधार में कोई फ़ाइल नहीं है.", + "No files yet. Upload files or run Python code to create them.": "अभी कोई फ़ाइल नहीं है. फ़ाइलें अपलोड करें या उन्हें बनाने के लिए Python कोड चलाएँ.", + "No filters found": "कोई फ़िल्टर नहीं मिला", + "No folders": "कोई फ़ोल्डर नहीं", + "No functions found": "कोई फ़ंक्शन नहीं मिला", + "No groups found": "कोई समूह नहीं मिला", + "No history available": "कोई इतिहास उपलब्ध नहीं", + "No HTML, CSS, or JavaScript content found.": "कोई HTML, CSS या JavaScript सामग्री नहीं मिली.", + "No inference engine with management support found": "प्रबंधन समर्थन वाला कोई इन्फ़रेंस इंजन नहीं मिला", + "No kernel": "कोई कर्नेल नहीं", + "No knowledge bases accessible": "किसी ज्ञान आधार तक पहुँच नहीं है", + "No knowledge bases found.": "कोई ज्ञान आधार नहीं मिला.", + "No knowledge found": "कोई ज्ञान नहीं मिला", + "No limit": "कोई सीमा नहीं", + "No matches": "कोई मेल नहीं", + "No model data": "मॉडल का कोई डेटा नहीं", + "No model IDs": "कोई मॉडल ID नहीं", + "No model usage found": "मॉडल के उपयोग का कोई डेटा नहीं मिला", + "No models accessible": "किसी मॉडल तक पहुँच नहीं है", + "No models available": "कोई मॉडल उपलब्ध नहीं", + "No models found": "कोई मॉडल नहीं मिला", + "No Notes": "कोई नोट नहीं", + "No notes found": "कोई नोट नहीं मिला", + "No notification targets configured.": "सूचनाओं का कोई गंतव्य कॉन्फ़िगर नहीं किया गया है.", + "No one": "कोई नहीं", + "No output items": "कोई आउटपुट आइटम नहीं", + "No pinned messages": "कोई पिन किया गया संदेश नहीं", + "No prompts found": "कोई प्रॉम्प्ट नहीं मिला", + "No Repeat": "दोहराव नहीं", "No results": "कोई परिणाम नहीं मिला", "No results found": "कोई परिणाम नहीं मिला", - "No runs yet": "", + "No runs yet": "अभी तक कोई रन नहीं", "No search query generated": "कोई खोज क्वेरी जनरेट नहीं हुई", - "No servers detected": "", - "No skills found": "", + "No servers detected": "कोई सर्वर नहीं मिला", + "No skills found": "कोई कौशल नहीं मिला", "No source available": "कोई स्रोत उपलब्ध नहीं है", - "No sources found": "", + "No sources found": "कोई स्रोत नहीं मिला", "No suggestion prompts": "कोई सुझावित प्रॉम्प्ट नहीं", - "No Terminal connection configured.": "", - "No terminal connections configured.": "", - "No text differences": "", - "No tool server connections configured.": "", - "No tools accessible": "", - "No tools found": "", - "No usage data found": "", - "No user variables configured.": "", - "No users were found.": "", - "No valves": "", - "No valves to update": "", - "No webhooks yet": "", - "Node Ids": "", + "No Terminal connection configured.": "कोई Terminal कनेक्शन कॉन्फ़िगर नहीं किया गया है.", + "No terminal connections configured.": "कोई टर्मिनल कनेक्शन कॉन्फ़िगर नहीं किया गया है.", + "No text differences": "पाठ में कोई अंतर नहीं", + "No tool server connections configured.": "कोई टूल सर्वर कनेक्शन कॉन्फ़िगर नहीं किया गया है.", + "No tools accessible": "किसी टूल तक पहुँच नहीं है", + "No tools found": "कोई टूल नहीं मिला", + "No usage data found": "उपयोग का कोई डेटा नहीं मिला", + "No user variables configured.": "कोई उपयोगकर्ता वेरिएबल कॉन्फ़िगर नहीं किया गया है.", + "No users were found.": "कोई उपयोगकर्ता नहीं मिला.", + "No valves": "कोई वाल्व नहीं", + "No valves to update": "अपडेट करने के लिए कोई वाल्व नहीं", + "No webhooks yet": "अभी कोई वेबहुक नहीं", + "Node Ids": "नोड ID", "None": "कोई नहीं", - "Not configured": "", + "Not configured": "कॉन्फ़िगर नहीं किया गया", "Not factually correct": "तथ्यात्मक रूप से सही नहीं है", - "Not helpful": "", - "Not Registered": "", - "Not scheduled": "", - "Note": "", - "Note deleted successfully": "", - "Note Menu": "", - "Notes": "", - "Notes Public Sharing": "", - "Notes Sharing": "", - "Nothing to compact": "", + "Not helpful": "मददगार नहीं", + "Not Registered": "पंजीकृत नहीं", + "Not scheduled": "शेड्यूल नहीं किया गया", + "Note": "नोट", + "Note deleted successfully": "नोट सफलतापूर्वक हटाया गया", + "Note Menu": "नोट मेन्यू", + "Notes": "नोट", + "Notes Public Sharing": "नोट को सार्वजनिक रूप से साझा करना", + "Notes Sharing": "नोट साझा करना", + "Nothing to compact": "संक्षिप्त करने के लिए कुछ नहीं", "November": "नवंबर", - "OAuth": "", - "OAuth 2.1": "", - "OAuth 2.1 (Static)": "", - "OAuth discovery successful": "", - "OAuth ID": "", - "OAuth Resource Parameter": "", - "OAuth Scopes": "", - "OAuth Server URL": "", - "OAuth session disconnected": "", + "OAuth": "OAuth", + "OAuth 2.1": "OAuth 2.1", + "OAuth 2.1 (Static)": "OAuth 2.1 (स्थिर)", + "OAuth discovery successful": "OAuth खोज सफल रही", + "OAuth ID": "OAuth ID", + "OAuth Resource Parameter": "OAuth संसाधन पैरामीटर", + "OAuth Scopes": "OAuth स्कोप", + "OAuth Server URL": "OAuth सर्वर URL", + "OAuth session disconnected": "OAuth सत्र डिस्कनेक्ट किया गया", "October": "अक्टूबर", - "of a website's sticky header": "", + "of a website's sticky header": "किसी वेबसाइट के स्थिर हेडर का", "Off": "बंद", "Okay, Let's Go!": "ठीक है, चलिए चलते हैं!", "OLED Dark": "OLED डार्क", "Ollama": "Ollama", - "Ollama API settings updated": "", - "Omit": "", + "Ollama API settings updated": "Ollama API सेटिंग्स अपडेट की गईं", + "Omit": "छोड़ें", "On": "चालू", - "Once": "", - "Only active during Voice Mode.": "", - "Only active when \"Paste Large Text as File\" setting is toggled on.": "", - "Only active when a tool call is waiting for approval.": "", - "Only active when the chat input is in focus and an LLM is generating a response.": "", - "Only active when the chat input is in focus.": "", - "Only alphanumeric characters and hyphens are allowed": "", - "Only alphanumeric characters and hyphens are allowed in the command string.": "कमांड स्ट्रिंग में केवल अल्फ़ान्यूमेरिक वर्ण और हाइफ़न की अनुमति है।", - "Only can be triggered when the chat input is in focus.": "", - "Only collections can be edited, create a new knowledge base to edit/add documents.": "", - "Only install functions from sources you trust.": "", - "Only install tools from sources you trust.": "", - "Only invited users can access": "", - "Only select users and groups with permission can access": "", - "Only sync new/updated chats": "", - "Only when away": "", - "Oops! Looks like the URL is invalid. Please double-check and try again.": "उफ़! ऐसा लगता है कि यूआरएल अमान्य है. कृपया दोबारा जांचें और पुनः प्रयास करें।", - "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "उफ़! आप एक असमर्थित विधि (केवल फ्रंटएंड) का उपयोग कर रहे हैं। कृपया बैकएंड से WebUI सर्वे करें।", - "Open": "", - "Open automation": "", - "Open create menu": "", - "Open file": "", - "Open Folder": "", - "Open in full screen": "", - "Open in new tab": "", - "Open link": "", - "Open modal to configure connection": "", - "Open Model Selector": "", - "Open note": "", - "Open Settings": "", - "Open settings.": "", - "Open Sidebar": "", - "Open terminal": "", - "Open the changelog modal after sign-in when enabled.": "", - "Open User Profile Menu": "", - "Open WebUI can use tools provided by any OpenAPI server.": "", - "Open WebUI version": "", - "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "", + "Once": "एक बार", + "Only active during Voice Mode.": "केवल वॉइस मोड के दौरान सक्रिय.", + "Only active when \"Paste Large Text as File\" setting is toggled on.": "केवल \"बड़े पाठ को फ़ाइल के रूप में पेस्ट करें\" सेटिंग चालू होने पर सक्रिय.", + "Only active when a tool call is waiting for approval.": "केवल तभी सक्रिय जब कोई टूल कॉल अनुमोदन की प्रतीक्षा में हो.", + "Only active when the chat input is in focus and an LLM is generating a response.": "केवल तभी सक्रिय जब चैट इनपुट पर फ़ोकस हो और LLM उत्तर बना रहा हो.", + "Only active when the chat input is in focus.": "केवल चैट इनपुट पर फ़ोकस होने पर सक्रिय.", + "Only alphanumeric characters and hyphens are allowed": "केवल अक्षर, अंक और हाइफ़न की अनुमति है", + "Only alphanumeric characters and hyphens are allowed in the command string.": "कमांड स्ट्रिंग में केवल अल्फ़ान्यूमेरिक वर्ण और हाइफ़न की अनुमति है.", + "Only can be triggered when the chat input is in focus.": "केवल चैट इनपुट पर फ़ोकस होने पर शुरू किया जा सकता है.", + "Only collections can be edited, create a new knowledge base to edit/add documents.": "केवल संग्रह संपादित किए जा सकते हैं, दस्तावेज़ संपादित करने/जोड़ने के लिए नया ज्ञान आधार बनाएँ.", + "Only install functions from sources you trust.": "केवल भरोसेमंद स्रोतों से फ़ंक्शन इंस्टॉल करें.", + "Only install tools from sources you trust.": "केवल भरोसेमंद स्रोतों से टूल इंस्टॉल करें.", + "Only invited users can access": "केवल आमंत्रित उपयोगकर्ताओं को पहुँच है", + "Only select users and groups with permission can access": "केवल अनुमति वाले चुनिंदा उपयोगकर्ताओं और समूहों को पहुँच है", + "Only sync new/updated chats": "केवल नई/अपडेट की गई चैट सिंक करें", + "Only when away": "केवल दूर होने पर", + "Oops! Looks like the URL is invalid. Please double-check and try again.": "उफ़! ऐसा लगता है कि यूआरएल अमान्य है. कृपया दोबारा जांचें और पुनः प्रयास करें.", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "ओह! आप असमर्थित तरीका (केवल फ़्रंटएंड) उपयोग कर रहे हैं. कृपया WebUI को बैकएंड से चलाएँ.", + "Open": "खोलें", + "Open automation": "ऑटोमेशन खोलें", + "Open create menu": "बनाने का मेन्यू खोलें", + "Open file": "फ़ाइल खोलें", + "Open Folder": "फ़ोल्डर खोलें", + "Open in full screen": "पूर्ण स्क्रीन में खोलें", + "Open in new tab": "नए टैब में खोलें", + "Open link": "लिंक खोलें", + "Open modal to configure connection": "कनेक्शन कॉन्फ़िगर करने के लिए संवाद खोलें", + "Open Model Selector": "मॉडल चयनकर्ता खोलें", + "Open note": "नोट खोलें", + "Open Settings": "सेटिंग्स खोलें", + "Open settings.": "सेटिंग्स खोलें.", + "Open Sidebar": "साइडबार खोलें", + "Open terminal": "टर्मिनल खोलें", + "Open the changelog modal after sign-in when enabled.": "सक्षम होने पर साइन इन के बाद बदलावों का विवरण खोलें.", + "Open User Profile Menu": "उपयोगकर्ता प्रोफ़ाइल मेन्यू खोलें", + "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI किसी भी OpenAPI सर्वर द्वारा प्रदान किए गए टूल का उपयोग कर सकता है.", + "Open WebUI version": "Open WebUI संस्करण", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI संस्करण (v{{OPEN_WEBUI_VERSION}}) आवश्यक संस्करण से पुराना है (v{{REQUIRED_VERSION}})", "OpenAI": "OpenAI", - "OpenAI API Key is required.": "OpenAI API कुंजी आवश्यक है", - "OpenAI API settings updated": "", - "OpenAI URL/Key required.": "OpenAI URL/Key आवश्यक है।", - "OpenAPI Spec": "", - "openapi.json URL or Path": "", - "optional": "", - "Optional": "", + "OpenAI API Key is required.": "OpenAI API कुंजी आवश्यक है.", + "OpenAI API settings updated": "OpenAI API सेटिंग्स अपडेट की गईं", + "OpenAI URL/Key required.": "OpenAI URL/कुंजी आवश्यक है.", + "OpenAPI Spec": "OpenAPI विनिर्देश", + "openapi.json URL or Path": "openapi.json URL या पथ", + "optional": "वैकल्पिक", + "Optional": "वैकल्पिक", "or": "या", - "Orchestrator": "", - "Ordered List": "", - "Original": "", + "Orchestrator": "ऑर्केस्ट्रेटर", + "Ordered List": "क्रमांकित सूची", + "Original": "मूल", "Other": "अन्य", - "out of": "", - "Output": "", - "OUTPUT": "", - "Overcome procrastination": "", - "Overview": "", - "PaddleOCR-vl": "", - "PaddleOCR-vl API URL required.": "", - "page": "", - "Page": "", - "Parameters": "", - "Parent message not found": "", - "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "", - "Passthrough params": "", + "out of": "में से", + "Output": "आउटपुट", + "OUTPUT": "आउटपुट", + "Overcome procrastination": "टालमटोल से बचें", + "Overview": "अवलोकन", + "PaddleOCR-vl": "PaddleOCR-vl", + "PaddleOCR-vl API URL required.": "PaddleOCR-vl API URL आवश्यक है.", + "page": "पृष्ठ", + "Page": "पृष्ठ", + "Parameters": "पैरामीटर", + "Parent message not found": "मूल संदेश नहीं मिला", + "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "सामुदायिक लीडरबोर्ड और मूल्यांकनों में भाग लें! उपयोग के एकत्रित आँकड़े सिंक करने से Open WebUI में शोध और सुधार को बढ़ावा मिलता है. आपकी गोपनीयता सर्वोपरि है: संदेशों की सामग्री कभी साझा नहीं की जाती.", + "Passthrough params": "सीधे आगे भेजे जाने वाले पैरामीटर", "Password": "पासवर्ड", - "Password updated. Please sign in again.": "", - "Passwords do not match.": "", - "Path": "", - "Path copied": "", - "Paused": "", + "Password updated. Please sign in again.": "पासवर्ड अपडेट किया गया. कृपया फिर साइन इन करें.", + "Passwords do not match.": "पासवर्ड मेल नहीं खाते.", + "Path": "पथ", + "Path copied": "पथ कॉपी किया गया", + "Paused": "रोका गया", "PDF document (.pdf)": "PDF दस्तावेज़ (.pdf)", - "pdf, docx, pptx, xlsx": "", - "Peak tokens": "", + "pdf, docx, pptx, xlsx": "pdf, docx, pptx, xlsx", + "Peak tokens": "टोकन की अधिकतम संख्या", "pending": "लंबित", - "Pending": "", - "Per automation": "", - "Per chat": "", - "Permission denied when accessing media devices": "", - "Permission denied when accessing microphone": "", + "Pending": "लंबित", + "Per automation": "प्रति ऑटोमेशन", + "Per chat": "प्रति चैट", + "Permission denied when accessing media devices": "मीडिया डिवाइस तक पहुँच की अनुमति अस्वीकृत", + "Permission denied when accessing microphone": "माइक्रोफ़ोन तक पहुँच की अनुमति अस्वीकृत", "Permission denied when accessing microphone: {{error}}": "माइक्रोफ़ोन तक पहुँचने पर अनुमति अस्वीकृत: {{error}}", - "Permissions": "", - "Permissions reset to defaults": "", - "Persistent": "", - "Personal": "", - "Pin": "", - "Pin to Sidebar": "", - "Pinned": "", - "Pinned Messages": "", - "Pipe": "", - "Pipeline deleted successfully": "", - "Pipeline downloaded successfully": "", - "Pipelines are a plugin system with arbitrary code execution.": "", - "Pipelines Not Detected": "", - "Plain text (.md)": "", + "Permissions": "अनुमतियाँ", + "Permissions reset to defaults": "अनुमतियाँ डिफ़ॉल्ट पर रीसेट की गईं", + "Persistent": "स्थायी", + "Personal": "व्यक्तिगत", + "Pin": "पिन करें", + "Pin to Sidebar": "साइडबार में पिन करें", + "Pinned": "पिन किया गया", + "Pinned Messages": "पिन किए गए संदेश", + "Pipe": "पाइप", + "Pipeline deleted successfully": "पाइपलाइन सफलतापूर्वक हटाई गई", + "Pipeline downloaded successfully": "पाइपलाइन सफलतापूर्वक डाउनलोड की गई", + "Pipelines are a plugin system with arbitrary code execution.": "पाइपलाइन एक प्लगइन प्रणाली है जो मनचाहा कोड चला सकती है.", + "Pipelines Not Detected": "पाइपलाइन नहीं मिलीं", + "Plain text (.md)": "सादा पाठ (.md)", "Plain text (.txt)": "सादा पाठ (.txt)", "Playground": "प्रयोगशाला", - "Playground Chat": "", - "Please carefully review the following warnings:": "", - "Please connect all required integrations before sending a message": "", - "Please do not close the settings page while loading the model.": "", - "Please enter a message or attach a file.": "", - "Please enter a prompt": "", - "Please enter a valid ID": "", - "Please enter a valid JSON spec": "", - "Please enter a valid path": "", - "Please enter a valid URL": "", - "Please enter a valid URL.": "", - "Please enter Client ID and Client Secret": "", - "Please fill in all fields.": "", - "Please register the OAuth client": "", - "Please save the connection before authorizing OAuth": "", - "Please save the connection to persist the OAuth client information and do not change the ID": "", - "Please select a model.": "", - "Please select a reason": "", - "Please select a valid JSON file": "", - "Please select at least one user for Direct Message channel.": "", - "Please wait until all files are uploaded.": "", - "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "", - "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "", - "Policy ID": "", - "Policy ID is required": "", - "Policy is still loading": "", - "Ports": "", + "Playground Chat": "प्रयोगशाला चैट", + "Please carefully review the following warnings:": "कृपया निम्नलिखित चेतावनियाँ ध्यान से पढ़ें:", + "Please connect all required integrations before sending a message": "संदेश भेजने से पहले कृपया सभी आवश्यक एकीकरण कनेक्ट करें", + "Please do not close the settings page while loading the model.": "मॉडल लोड होते समय कृपया सेटिंग्स पृष्ठ बंद न करें.", + "Please enter a message or attach a file.": "कृपया संदेश दर्ज करें या फ़ाइल संलग्न करें.", + "Please enter a prompt": "कृपया प्रॉम्प्ट दर्ज करें", + "Please enter a valid ID": "कृपया मान्य ID दर्ज करें", + "Please enter a valid JSON spec": "कृपया मान्य JSON विनिर्देश दर्ज करें", + "Please enter a valid path": "कृपया मान्य पथ दर्ज करें", + "Please enter a valid URL": "कृपया मान्य URL दर्ज करें", + "Please enter a valid URL.": "कृपया मान्य URL दर्ज करें.", + "Please enter Client ID and Client Secret": "कृपया क्लाइंट ID और क्लाइंट सीक्रेट दर्ज करें", + "Please fill in all fields.": "कृपया सभी फ़ील्ड भरें.", + "Please register the OAuth client": "कृपया OAuth क्लाइंट पंजीकृत करें", + "Please save the connection before authorizing OAuth": "OAuth को अधिकृत करने से पहले कृपया कनेक्शन सहेजें", + "Please save the connection to persist the OAuth client information and do not change the ID": "OAuth क्लाइंट की जानकारी बनाए रखने के लिए कृपया कनेक्शन सहेजें और ID न बदलें", + "Please select a model.": "कृपया मॉडल चुनें.", + "Please select a reason": "कृपया कारण चुनें", + "Please select a valid JSON file": "कृपया मान्य JSON फ़ाइल चुनें", + "Please select at least one user for Direct Message channel.": "सीधे संदेश वाले चैनल के लिए कृपया कम से कम एक उपयोगकर्ता चुनें.", + "Please wait until all files are uploaded.": "कृपया सभी फ़ाइलें अपलोड होने तक प्रतीक्षा करें.", + "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP या GIF. अधिकतम 5 MiB और 25 मेगापिक्सेल.", + "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "नीति के बदलाव नए उपलब्ध कराए गए टर्मिनल पर लागू होते हैं. मौजूदा टर्मिनल पर लागू करने के लिए मेल खाने वाले टर्मिनल रीफ़्रेश करें.", + "Policy ID": "नीति ID", + "Policy ID is required": "नीति ID आवश्यक है", + "Policy is still loading": "नीति अभी लोड हो रही है", + "Ports": "पोर्ट", "Positive attitude": "सकारात्मक रवैया", - "Prefer not to say": "", - "Preferences": "", - "Prefix ID": "", - "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", - "Preparing {{NAME}}...": "", - "Preparing download...": "", - "Press keys...": "", - "Prevent File Creation": "", - "Preview": "", - "Preview Access": "", - "Preview failed": "", - "Previous": "", + "Prefer not to say": "बताना नहीं चाहते", + "Preferences": "प्राथमिकताएँ", + "Prefix ID": "उपसर्ग ID", + "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "मॉडल ID में उपसर्ग जोड़कर अन्य कनेक्शन से टकराव रोकने के लिए उपसर्ग ID का उपयोग होता है - अक्षम करने के लिए खाली छोड़ें", + "Preparing {{NAME}}...": "{{NAME}} तैयार किया जा रहा है...", + "Preparing download...": "डाउनलोड तैयार किया जा रहा है...", + "Press keys...": "कुंजियाँ दबाएँ...", + "Prevent File Creation": "फ़ाइल बनाना रोकें", + "Preview": "पूर्वावलोकन", + "Preview Access": "पहुँच का पूर्वावलोकन", + "Preview failed": "पूर्वावलोकन विफल रहा", + "Previous": "पिछला", "Previous 30 days": "पिछले 30 दिन", "Previous 7 days": "पिछले 7 दिन", - "Previous message": "", - "Previous month": "", - "Previous page": "", - "Previous version": "", - "Private": "", - "Private conversation between selected users": "", - "Production version updated": "", + "Previous message": "पिछला संदेश", + "Previous month": "पिछला महीना", + "Previous page": "पिछला पृष्ठ", + "Previous version": "पिछला संस्करण", + "Private": "निजी", + "Private conversation between selected users": "चुने गए उपयोगकर्ताओं के बीच निजी बातचीत", + "Production version updated": "प्रोडक्शन संस्करण अपडेट किया गया", "Profile": "प्रोफ़ाइल", - "Prompt": "", + "Prompt": "प्रॉम्प्ट", "Prompt Content": "प्रॉम्प्ट सामग्री", - "Prompt created successfully": "", - "Prompt Menu": "", - "Prompt Name": "", - "Prompt updated successfully": "", + "Prompt created successfully": "प्रॉम्प्ट सफलतापूर्वक बनाया गया", + "Prompt Menu": "प्रॉम्प्ट मेन्यू", + "Prompt Name": "प्रॉम्प्ट का नाम", + "Prompt updated successfully": "प्रॉम्प्ट सफलतापूर्वक अपडेट किया गया", "Prompts": "प्रॉम्प्ट", - "Prompts Access": "", - "Prompts Public Sharing": "", - "Prompts Sharing": "", - "Provider": "", - "Public": "", - "Pull \"{{searchValue}}\" from Ollama.com": "\"{{searchValue}}\" को Ollama.com से खींचें", - "Pull a model from Ollama.com": "Ollama.com से एक मॉडल खींचें", - "Pull Model": "", - "Pyodide file browser": "", - "Quality": "", - "Query failed": "", - "Querying": "", - "Queued messages": "", - "Quick Actions": "", - "Ran {{COUNT}} analyses": "", - "Ran {{COUNT}} analysis": "", - "Rate {{rating}} out of 10": "", - "Rating": "", - "Read": "", + "Prompts Access": "प्रॉम्प्ट तक पहुँच", + "Prompts Public Sharing": "प्रॉम्प्ट को सार्वजनिक रूप से साझा करना", + "Prompts Sharing": "प्रॉम्प्ट साझा करना", + "Provider": "प्रदाता", + "Public": "सार्वजनिक", + "Pull \"{{searchValue}}\" from Ollama.com": "Ollama.com से \"{{searchValue}}\" डाउनलोड करें", + "Pull a model from Ollama.com": "Ollama.com से मॉडल डाउनलोड करें", + "Pull Model": "मॉडल डाउनलोड करें", + "Pyodide file browser": "Pyodide फ़ाइल ब्राउज़र", + "Quality": "गुणवत्ता", + "Query failed": "क्वेरी विफल रही", + "Querying": "क्वेरी की जा रही है", + "Queued messages": "कतार में रखे संदेश", + "Quick Actions": "त्वरित कार्रवाइयाँ", + "Ran {{COUNT}} analyses": "{{COUNT}} विश्लेषण किए गए", + "Ran {{COUNT}} analysis": "{{COUNT}} विश्लेषण किया गया", + "Rate {{rating}} out of 10": "10 में से {{rating}} रेटिंग दें", + "Rating": "रेटिंग", + "Read": "पढ़ा गया", "Read Aloud": "जोर से पढ़ें", - "Read more →": "", - "Read only": "", - "Read Only": "", - "Read the docs": "", - "Read-only": "", - "Read-Only Access": "", - "Reason": "", - "Reasoning text...": "", - "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "", - "Receives matching events across the instance, including system/config events and events associated with any user.": "", - "Receives matching events that are not associated with a user.": "", - "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "", - "Recently Used": "", - "Recommended": "", - "Reconnected": "", - "Record": "", - "Record voice": "आवाज रिकॉर्ड करना", - "Redirecting you to Open WebUI Community": "आपको OpenWebUI समुदाय पर पुनर्निर्देशित किया जा रहा है", - "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.": "", - "Reference Chats": "", - "Refresh": "", - "Refresh requested: {{count}} terminal(s)_one": "", - "Refresh requested: {{count}} terminal(s)_other": "", - "Refresh Terminals": "", - "Refreshing...": "", - "Refused when it shouldn't have": "जब ऐसा नहीं होना चाहिए था तो मना कर दिया", - "Regenerate": "पुनः जेनरेट", - "Regenerate Response": "", - "Region and language of the search results, e.g. en-us.": "", - "Register Again": "", - "Register Client": "", - "Registered": "", - "registered to": "", - "Registration failed": "", - "Registration successful": "", - "Reindex Embedding Data": "", + "Read more →": "और पढ़ें →", + "Read only": "केवल पढ़ने के लिए", + "Read Only": "केवल पढ़ने के लिए", + "Read the docs": "दस्तावेज़ पढ़ें", + "Read-only": "केवल पढ़ने के लिए", + "Read-Only Access": "केवल पढ़ने की अनुमति", + "Reason": "कारण", + "Reasoning text...": "तर्क का पाठ...", + "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "वर्तमान एंबेडिंग मॉडल का उपयोग करके ज्ञान फ़ाइल, ज्ञान खोज और मेमोरी वेक्टर फिर से बनाएँ.", + "Receives matching events across the instance, including system/config events and events associated with any user.": "पूरे इंस्टेंस में मेल खाने वाले इवेंट प्राप्त करता है, जिनमें सिस्टम/कॉन्फ़िगरेशन इवेंट और किसी भी उपयोगकर्ता से जुड़े इवेंट शामिल हैं.", + "Receives matching events that are not associated with a user.": "उपयोगकर्ता से न जुड़े मेल खाने वाले इवेंट प्राप्त करता है.", + "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "उपयोगकर्ता से जुड़े मेल खाने वाले इवेंट केवल तभी प्राप्त करता है, जब कार्रवाई करने वाला, संबंधित उपयोगकर्ता या उपयोगकर्ता डेटा इन उपयोगकर्ताओं या वर्तमान समूह सदस्यों से मेल खाता हो. सिस्टम/कॉन्फ़िगरेशन इवेंट नहीं भेजे जाते.", + "Recently Used": "हाल ही में उपयोग किए गए", + "Recommended": "अनुशंसित", + "Reconnected": "फिर कनेक्ट हुआ", + "Record": "रिकॉर्ड करें", + "Record voice": "आवाज़ रिकॉर्ड करें", + "Redirecting you to Open WebUI Community": "आपको Open WebUI समुदाय पर पुनर्निर्देशित किया जा रहा है", + "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.": "अर्थहीन पाठ बनाने की संभावना कम करता है. अधिक मान (जैसे 100) अधिक विविध उत्तर देगा, जबकि कम मान (जैसे 10) अधिक सीमित विकल्प चुनेगा.", + "Reference Chats": "संदर्भ चैट", + "Refresh": "रीफ़्रेश करें", + "Refresh requested: {{count}} terminal(s)_one": "रीफ़्रेश करने का अनुरोध किया गया: {{count}} टर्मिनल", + "Refresh requested: {{count}} terminal(s)_other": "रीफ़्रेश करने का अनुरोध किया गया: {{count}} टर्मिनल", + "Refresh Terminals": "टर्मिनल रीफ़्रेश करें", + "Refreshing...": "रीफ़्रेश हो रहा है...", + "Refused when it shouldn't have": "जहाँ मना नहीं करना चाहिए था, वहाँ मना किया", + "Regenerate": "फिर बनाएँ", + "Regenerate Response": "उत्तर फिर बनाएँ", + "Region and language of the search results, e.g. en-us.": "खोज परिणामों का क्षेत्र और भाषा, जैसे en-us.", + "Register Again": "फिर पंजीकृत करें", + "Register Client": "क्लाइंट पंजीकृत करें", + "Registered": "पंजीकृत", + "registered to": "इनके नाम पर पंजीकृत", + "Registration failed": "पंजीकरण विफल रहा", + "Registration successful": "पंजीकरण सफल रहा", + "Reindex Embedding Data": "एंबेडिंग डेटा को फिर इंडेक्स करें", "Release Notes": "रिलीज नोट्स", - "Releases": "", - "Relevance": "", - "Remember Dismissal": "", - "Reminder": "", + "Releases": "रिलीज़", + "Relevance": "प्रासंगिकता", + "Remember Dismissal": "खारिज करना याद रखें", + "Reminder": "रिमाइंडर", "Remove": "हटा दें", - "Remove {{MODELID}} from list.": "", - "Remove action": "", - "Remove file": "", - "Remove File": "", - "Remove from favorites": "", - "Remove image": "", - "Remove Pinned Model": "", - "Remove prompt suggestion": "", - "Remove Selected Model": "", - "Removing {{count}} stale files..._one": "", - "Removing {{count}} stale files..._other": "", + "Remove {{MODELID}} from list.": "{{MODELID}} को सूची से हटाएँ.", + "Remove action": "कार्रवाई हटाएँ", + "Remove file": "फ़ाइल हटाएँ", + "Remove File": "फ़ाइल हटाएँ", + "Remove from favorites": "पसंदीदा से हटाएँ", + "Remove image": "चित्र हटाएँ", + "Remove Pinned Model": "पिन किया गया मॉडल हटाएँ", + "Remove prompt suggestion": "सुझाया गया प्रॉम्प्ट हटाएँ", + "Remove Selected Model": "चुना गया मॉडल हटाएँ", + "Removing {{count}} stale files..._one": "{{count}} पुरानी फ़ाइल हटाई जा रही है...", + "Removing {{count}} stale files..._other": "{{count}} पुरानी फ़ाइलें हटाई जा रही हैं...", "Rename": "नाम बदलें", - "Renamed to {{name}}": "", - "Reorder": "", - "Repeat": "", - "Replace": "", - "Reply": "", - "Reply in Thread": "", - "Reply to thread...": "", - "Replying to {{NAME}}": "", - "required": "", - "Research Knowledge": "", - "Reset": "", - "Reset All Models": "", - "Reset all permissions to their initial configuration values": "", - "Reset Defaults": "", - "Reset group permissions to match the current default user permissions": "", - "Reset knowledge base?": "", - "Reset persisted files": "", - "Reset to Defaults": "", - "Reset view": "", - "Reset zoom": "", - "Resize panel": "", - "Response": "", - "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "", - "Responses": "", - "Restart": "", - "Result": "", + "Renamed to {{name}}": "नाम बदलकर {{name}} किया गया", + "Reorder": "क्रम बदलें", + "Repeat": "दोहराएँ", + "Replace": "बदलें", + "Reply": "जवाब दें", + "Reply in Thread": "थ्रेड में जवाब दें", + "Reply to thread...": "थ्रेड में जवाब दें...", + "Replying to {{NAME}}": "{{NAME}} को जवाब दे रहे हैं", + "required": "आवश्यक", + "Research Knowledge": "शोध संबंधी ज्ञान", + "Reset": "रीसेट करें", + "Reset All Models": "सभी मॉडल रीसेट करें", + "Reset all permissions to their initial configuration values": "सभी अनुमतियाँ उनके शुरुआती कॉन्फ़िगरेशन मानों पर रीसेट करें", + "Reset Defaults": "डिफ़ॉल्ट रीसेट करें", + "Reset group permissions to match the current default user permissions": "समूह की अनुमतियों को वर्तमान डिफ़ॉल्ट उपयोगकर्ता अनुमतियों के अनुसार रीसेट करें", + "Reset knowledge base?": "ज्ञान आधार रीसेट करें?", + "Reset persisted files": "स्थायी रूप से सहेजी गई फ़ाइलें रीसेट करें", + "Reset to Defaults": "डिफ़ॉल्ट पर रीसेट करें", + "Reset view": "दृश्य रीसेट करें", + "Reset zoom": "ज़ूम रीसेट करें", + "Resize panel": "पैनल का आकार बदलें", + "Response": "उत्तर", + "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "वेबसाइट की अनुमतियाँ अस्वीकृत होने के कारण उत्तर की सूचनाएँ सक्रिय नहीं की जा सकतीं. आवश्यक पहुँच देने के लिए कृपया अपने ब्राउज़र की सेटिंग्स में जाएँ.", + "Responses": "उत्तर", + "Restart": "फिर शुरू करें", + "Result": "परिणाम", "RESULT": "परिणाम", - "Retrieved {{count}} sources": "", - "Retrieved {{count}} sources_one": "", - "Retrieved {{count}} sources_other": "", - "Retrieved 1 source": "", - "Retry": "", - "Rewrite the selected text.": "", + "Retrieved {{count}} sources": "{{count}} स्रोत प्राप्त किए गए", + "Retrieved {{count}} sources_one": "{{count}} स्रोत प्राप्त किया गया", + "Retrieved {{count}} sources_other": "{{count}} स्रोत प्राप्त किए गए", + "Retrieved 1 source": "1 स्रोत प्राप्त किया गया", + "Retry": "फिर प्रयास करें", + "Rewrite the selected text.": "चुने गए पाठ को फिर लिखें.", "Role": "भूमिका", "RTL": "RTL", - "Run": "", - "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "", - "Run All": "", - "Run cell (⌘+Enter)": "", - "Run now": "", - "Run Now": "", - "Run tools without asking for approval.": "", - "Running": "", - "Running Open WebUI for a team?": "", + "Run": "चलाएँ", + "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "अपनी शर्तों पर AI चलाएँ. कोई भी मॉडल कनेक्ट करें, कोड से सुविधाएँ बढ़ाएँ और महत्वपूर्ण चीज़ों की सुरक्षा से समझौता न करें. आपके मॉडल, आपका डेटा, आपकी मशीन, जहाँ भी आप इसे खोलें.", + "Run All": "सभी चलाएँ", + "Run cell (⌘+Enter)": "सेल चलाएँ (⌘+Enter)", + "Run now": "अभी चलाएँ", + "Run Now": "अभी चलाएँ", + "Run tools without asking for approval.": "अनुमोदन माँगे बिना टूल चलाएँ.", + "Running": "चल रहा है", + "Running Open WebUI for a team?": "टीम के लिए Open WebUI चला रहे हैं?", "Running...": "चल रहा है...", - "runs": "", - "Runs": "", - "Sa_day_of_week": "", + "runs": "रन", + "Runs": "रन", + "Sa_day_of_week": "शनि", "Save": "सहेजें", "Save & Create": "सहेजें और बनाएं", "Save & Update": "सहेजें और अपडेट करें", - "Save As Copy": "", - "Save Chat": "", - "Saved": "", - "Saving...": "", - "Schedule": "", - "Scheduled time must be in the future": "", - "Screen Share": "", - "Scroll to bottom": "", - "Scroll to Top": "", + "Save As Copy": "कॉपी के रूप में सहेजें", + "Save Chat": "चैट सहेजें", + "Saved": "सहेजा गया", + "Saving...": "सहेजा जा रहा है...", + "Schedule": "शेड्यूल", + "Scheduled time must be in the future": "निर्धारित समय भविष्य में होना चाहिए", + "Screen Share": "स्क्रीन साझा करें", + "Scroll to bottom": "नीचे स्क्रॉल करें", + "Scroll to Top": "ऊपर स्क्रॉल करें", "Search": "खोजें", "Search a model": "एक मॉडल खोजें", - "Search actions": "", - "Search all emojis": "", - "Search Automations": "", - "Search channels": "", + "Search actions": "कार्रवाइयाँ खोजें", + "Search all emojis": "सभी इमोजी खोजें", + "Search Automations": "ऑटोमेशन खोजें", + "Search channels": "चैनल खोजें", "Search Chats": "चैट खोजें", - "Search Collection": "", - "Search Files": "", - "Search files and contents": "", - "Search filters": "", - "Search folders": "", - "search for archived chats": "", - "search for folders": "", - "search for pinned chats": "", - "search for shared chats": "", - "search for tags": "", - "Search Functions": "", - "Search Groups": "", - "Search In Models": "", - "Search Knowledge": "", - "Search Memories": "", + "Search Collection": "संग्रह खोजें", + "Search Files": "फ़ाइलें खोजें", + "Search files and contents": "फ़ाइलें और सामग्री खोजें", + "Search filters": "फ़िल्टर खोजें", + "Search folders": "फ़ोल्डर खोजें", + "search for archived chats": "संग्रहीत चैट खोजें", + "search for folders": "फ़ोल्डर खोजें", + "search for pinned chats": "पिन की गई चैट खोजें", + "search for shared chats": "साझा की गई चैट खोजें", + "search for tags": "टैग खोजें", + "Search Functions": "फ़ंक्शन खोजें", + "Search Groups": "समूह खोजें", + "Search In Models": "मॉडल में खोजें", + "Search Knowledge": "ज्ञान खोजें", + "Search Memories": "मेमोरी खोजें", "Search Models": "मॉडल खोजें", - "Search Notes": "", - "Search options": "", - "Search or add pattern": "", + "Search Notes": "नोट खोजें", + "Search options": "खोज के विकल्प", + "Search or add pattern": "पैटर्न खोजें या जोड़ें", "Search Prompts": "प्रॉम्प्ट खोजें", - "Search skills": "", - "Search Skills": "", - "Search the internet": "", - "Search tools": "", - "Search Tools": "", - "Search translations": "", - "Search users or groups": "", - "Searched {{count}} sites": "", - "Searching": "", - "Searching \"{{searchQuery}}\"": "", - "Searching Knowledge for \"{{searchQuery}}\"": "", - "Searching the web": "", + "Search skills": "कौशल खोजें", + "Search Skills": "कौशल खोजें", + "Search the internet": "इंटरनेट पर खोजें", + "Search tools": "टूल खोजें", + "Search Tools": "टूल खोजें", + "Search translations": "अनुवाद खोजें", + "Search users or groups": "उपयोगकर्ता या समूह खोजें", + "Searched {{count}} sites": "{{count}} साइट पर खोजा गया", + "Searching": "खोज रहे हैं", + "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" खोज रहे हैं", + "Searching Knowledge for \"{{searchQuery}}\"": "ज्ञान में \"{{searchQuery}}\" खोज रहे हैं", + "Searching the web": "वेब पर खोज रहे हैं", "See readme.md for instructions": "निर्देशों के लिए readme.md देखें", - "Select": "", - "Select {{modelName}} model": "", - "Select {{name}}": "", - "Select a base model (e.g. llama3, gpt-4o)": "", - "Select a conversation to preview": "", - "Select a engine": "", - "Select a function": "", - "Select a group": "", - "Select a language": "", - "Select a mode": "", + "Select": "चुनें", + "Select {{modelName}} model": "{{modelName}} मॉडल चुनें", + "Select {{name}}": "{{name}} चुनें", + "Select a base model (e.g. llama3, gpt-4o)": "आधार मॉडल चुनें (जैसे llama3, gpt-4o)", + "Select a conversation to preview": "पूर्वावलोकन के लिए बातचीत चुनें", + "Select a engine": "इंजन चुनें", + "Select a function": "फ़ंक्शन चुनें", + "Select a group": "समूह चुनें", + "Select a language": "भाषा चुनें", + "Select a mode": "मोड चुनें", "Select a model": "एक मॉडल चुनें", - "Select a model (optional)": "", + "Select a model (optional)": "मॉडल चुनें (वैकल्पिक)", "Select a pipeline": "एक पाइपलाइन का चयन करें", "Select a pipeline url": "एक पाइपलाइन url चुनें", - "Select a reranking model engine": "", - "Select a role": "", - "Select a theme": "", - "Select a tool": "", - "Select a voice": "", - "Select Action": "", - "Select All": "", - "Select an auth method": "", - "Select an embedding model engine": "", - "Select an engine": "", - "Select an instance": "", - "Select an Ollama instance": "", - "Select an option": "", - "Select an output format": "", - "Select dtype": "", - "Select Engine": "", - "Select Filter": "", - "Select how to split message text for TTS requests": "", - "Select Knowledge": "", - "Select Method": "", - "Select model": "", - "Select only one model to call": "", - "Select options": "", - "Select Skill": "", - "Select Tool": "", - "Select view": "", - "Selected": "", - "Selected model: {{modelName}}": "", + "Select a reranking model engine": "रीरैंकिंग मॉडल इंजन चुनें", + "Select a role": "भूमिका चुनें", + "Select a theme": "थीम चुनें", + "Select a tool": "टूल चुनें", + "Select a voice": "आवाज़ चुनें", + "Select Action": "कार्रवाई चुनें", + "Select All": "सभी चुनें", + "Select an auth method": "प्रमाणीकरण का तरीका चुनें", + "Select an embedding model engine": "एंबेडिंग मॉडल इंजन चुनें", + "Select an engine": "इंजन चुनें", + "Select an instance": "इंस्टेंस चुनें", + "Select an Ollama instance": "Ollama इंस्टेंस चुनें", + "Select an option": "विकल्प चुनें", + "Select an output format": "आउटपुट फ़ॉर्मैट चुनें", + "Select dtype": "dtype चुनें", + "Select Engine": "इंजन चुनें", + "Select Filter": "फ़िल्टर चुनें", + "Select how to split message text for TTS requests": "TTS अनुरोधों के लिए संदेश का पाठ विभाजित करने का तरीका चुनें", + "Select Knowledge": "ज्ञान चुनें", + "Select Method": "तरीका चुनें", + "Select model": "मॉडल चुनें", + "Select only one model to call": "कॉल करने के लिए केवल एक मॉडल चुनें", + "Select options": "विकल्प चुनें", + "Select Skill": "कौशल चुनें", + "Select Tool": "टूल चुनें", + "Select view": "दृश्य चुनें", + "Selected": "चुना गया", + "Selected model: {{modelName}}": "चुना गया मॉडल: {{modelName}}", "Selected model(s) do not support image inputs": "चयनित मॉडल छवि इनपुट का समर्थन नहीं करते हैं", - "Selected models define incompatible Chat Variables.": "", - "semantic": "", - "Send": "भेज", - "Send a Message": "एक संदेश भेजो", - "Send events for": "", - "Send message": "मेसेज भेजें", - "Send now": "", - "Send Test": "", + "Selected models define incompatible Chat Variables.": "चुने गए मॉडल असंगत चैट वेरिएबल निर्धारित करते हैं.", + "semantic": "अर्थ-आधारित", + "Send": "भेजें", + "Send a Message": "संदेश भेजें", + "Send events for": "इनके लिए इवेंट भेजें", + "Send message": "संदेश भेजें", + "Send now": "अभी भेजें", + "Send Test": "परीक्षण भेजें", "September": "सितंबर", - "Server connection failed": "", + "Server connection failed": "सर्वर कनेक्शन विफल रहा", "Server connection verified": "सर्वर कनेक्शन सत्यापित", - "Service Account": "", - "Services": "", - "Session": "", - "Session expired. Please sign in again.": "", - "Set a local zoom level for the app interface.": "", - "Set as default": "डिफाल्ट के रूप में सेट", - "Set as Pinned Model": "", - "Set as Production": "", - "Set as Selected Model": "", - "Set embedding model": "", - "Set embedding model (e.g. {{model}})": "ईम्बेडिंग मॉडल सेट करें (उदाहरण: {{model}})", - "Set reranking model (e.g. {{model}})": "रीकरण मॉडल सेट करें (उदाहरण: {{model}})", - "Set system-wide interface defaults for every account. Personal settings override these defaults.": "", - "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 whisper model": "", - "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 size of the context window used to generate the next token.": "", - "Setting": "", + "Service Account": "सेवा खाता", + "Services": "सेवाएँ", + "Session": "सत्र", + "Session expired. Please sign in again.": "सत्र समाप्त हो गया. कृपया फिर साइन इन करें.", + "Set a local zoom level for the app interface.": "ऐप इंटरफ़ेस के लिए स्थानीय ज़ूम स्तर सेट करें.", + "Set as default": "डिफ़ॉल्ट के रूप में सेट करें", + "Set as Pinned Model": "पिन किए गए मॉडल के रूप में सेट करें", + "Set as Production": "प्रोडक्शन के रूप में सेट करें", + "Set as Selected Model": "चुने गए मॉडल के रूप में सेट करें", + "Set embedding model": "एंबेडिंग मॉडल सेट करें", + "Set embedding model (e.g. {{model}})": "एम्बेडिंग मॉडल सेट करें (जैसे {{model}})", + "Set reranking model (e.g. {{model}})": "रीरैंकिंग मॉडल सेट करें (जैसे {{model}})", + "Set system-wide interface defaults for every account. Personal settings override these defaults.": "हर खाते के लिए पूरे सिस्टम में इंटरफ़ेस के डिफ़ॉल्ट सेट करें. व्यक्तिगत सेटिंग्स इन डिफ़ॉल्ट पर प्राथमिकता रखती हैं.", + "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 को सौंपी जाने वाली परतों की संख्या सेट करें. यह मान बढ़ाने से GPU त्वरण के लिए अनुकूलित मॉडल का प्रदर्शन काफ़ी बेहतर हो सकता है, लेकिन इससे बिजली और GPU संसाधनों की खपत भी बढ़ सकती है.", + "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.": "गणना के लिए उपयोग किए जाने वाले वर्कर थ्रेड की संख्या सेट करें. यह विकल्प नियंत्रित करता है कि आने वाले अनुरोधों को एक साथ संसाधित करने के लिए कितने थ्रेड उपयोग हों. यह मान बढ़ाने से बहुत से अनुरोध एक साथ आने पर प्रदर्शन बेहतर हो सकता है, लेकिन CPU संसाधनों की खपत भी बढ़ सकती है.", + "Set whisper model": "whisper मॉडल सेट करें", + "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.": "कम से कम एक बार आ चुके टोकन के विरुद्ध समान भार निर्धारित करता है. अधिक मान (जैसे, 1.5) दोहराव को अधिक सख्ती से कम करेगा, जबकि कम मान (जैसे, 0.9) अधिक छूट देगा. 0 पर यह अक्षम रहता है.", + "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.": "टोकन कितनी बार आए हैं, उसके आधार पर दोहराव कम करने के लिए उनके विरुद्ध बढ़ता हुआ भार निर्धारित करता है. अधिक मान (जैसे, 1.5) दोहराव को अधिक सख्ती से कम करेगा, जबकि कम मान (जैसे, 0.9) अधिक छूट देगा. 0 पर यह अक्षम रहता है.", + "Sets how far back for the model to look back to prevent repetition.": "दोहराव रोकने के लिए मॉडल कितनी पिछली सामग्री देखे, यह सेट करता है.", + "Sets the size of the context window used to generate the next token.": "अगला टोकन बनाने के लिए उपयोग की जाने वाली संदर्भ विंडो का आकार सेट करता है.", + "Setting": "सेटिंग", "Settings": "सेटिंग्स", - "settings configured": "", - "Settings Permissions": "", + "settings configured": "सेटिंग्स कॉन्फ़िगर की गईं", + "Settings Permissions": "सेटिंग्स की अनुमतियाँ", "Settings saved successfully!": "सेटिंग्स सफलतापूर्वक सहेजी गईं!", - "Settings: open settings.": "", - "settings.admin.analytics.title": "", - "settings.admin.audio.additionalParameters.description": "", - "settings.admin.audio.additionalParameters.label": "", - "settings.admin.audio.languageLocales.label": "", - "settings.admin.audio.maxSpeakers.label": "", - "settings.admin.audio.mistralSttModel.description": "", - "settings.admin.audio.mistralSttModel.label": "", - "settings.admin.audio.outputFormat.label": "", - "settings.admin.audio.requestFormat.description": "", - "settings.admin.audio.requestFormat.label": "", - "settings.admin.audio.responseSplitting.description": "", - "settings.admin.audio.responseSplitting.label": "", - "settings.admin.audio.sections.speechToText.title": "", - "settings.admin.audio.sections.textToSpeech.title": "", - "settings.admin.audio.speechToTextEngine.description": "", + "Settings: open settings.": "सेटिंग्स: सेटिंग्स खोलें.", + "settings.admin.analytics.title": "विश्लेषण", + "settings.admin.audio.additionalParameters.description": "अतिरिक्त OpenAI-संगत TTS अनुरोध पैरामीटर JSON के रूप में दर्ज करें.", + "settings.admin.audio.additionalParameters.label": "अतिरिक्त पैरामीटर", + "settings.admin.audio.languageLocales.label": "भाषा लोकेल", + "settings.admin.audio.maxSpeakers.label": "अधिकतम वक्ता", + "settings.admin.audio.mistralSttModel.description": "डिफ़ॉल्ट मॉडल (voxtral-mini-latest) इस्तेमाल करने के लिए खाली छोड़ें.", + "settings.admin.audio.mistralSttModel.label": "STT मॉडल", + "settings.admin.audio.outputFormat.label": "आउटपुट फ़ॉर्मैट", + "settings.admin.audio.requestFormat.description": "चुनें कि OpenAI-संगत एंडपॉइंट को ऑडियो कैसे भेजा जाए.", + "settings.admin.audio.requestFormat.label": "अनुरोध फ़ॉर्मैट", + "settings.admin.audio.responseSplitting.description": "नियंत्रित करें कि TTS अनुरोधों के लिए संदेश का टेक्स्ट कैसे विभाजित हो. 'Punctuation' वाक्यों में, 'paragraphs' अनुच्छेदों में विभाजित करता है, और 'none' संदेश को एक ही स्ट्रिंग में रखता है.", + "settings.admin.audio.responseSplitting.label": "उत्तर का विभाजन", + "settings.admin.audio.sections.speechToText.title": "वाक्-से-पाठ", + "settings.admin.audio.sections.textToSpeech.title": "टेक्स्ट-टू-स्पीच", + "settings.admin.audio.speechToTextEngine.description": "ऑडियो इनपुट के लिए ट्रांसक्रिप्शन प्रदाता चुनें.", "settings.admin.audio.speechToTextEngine.label": "वाक्-से-पाठ इंजन", "settings.admin.audio.sttAzureApiKey.label": "एपीआई कुंजी", - "settings.admin.audio.sttAzureBaseUrl.label": "", - "settings.admin.audio.sttAzureRegion.label": "", + "settings.admin.audio.sttAzureBaseUrl.label": "एंडपॉइंट URL", + "settings.admin.audio.sttAzureRegion.label": "Azure क्षेत्र", "settings.admin.audio.sttDeepgramApiKey.label": "एपीआई कुंजी", "settings.admin.audio.sttMistralApiBaseUrl.label": "एपीआई बेस यूआरएल", "settings.admin.audio.sttMistralApiKey.label": "एपीआई कुंजी", - "settings.admin.audio.sttModel.description": "", - "settings.admin.audio.sttModel.label": "", + "settings.admin.audio.sttModel.description": "डिफ़ॉल्ट मॉडल इस्तेमाल करने के लिए मॉडल फ़ील्ड खाली छोड़ें.", + "settings.admin.audio.sttModel.label": "STT मॉडल", "settings.admin.audio.sttOpenaiApiBaseUrl.label": "एपीआई बेस यूआरएल", "settings.admin.audio.sttOpenaiApiKey.label": "एपीआई कुंजी", - "settings.admin.audio.sttWhisperModel.description": "", - "settings.admin.audio.sttWhisperModel.label": "", - "settings.admin.audio.supportedMimeTypes.description": "", - "settings.admin.audio.supportedMimeTypes.label": "", - "settings.admin.audio.textToSpeechEngine.description": "", + "settings.admin.audio.sttWhisperModel.description": "Open WebUI आंतरिक रूप से faster-whisper इस्तेमाल करता है.", + "settings.admin.audio.sttWhisperModel.label": "STT मॉडल", + "settings.admin.audio.supportedMimeTypes.description": "अपलोड के लिए स्वीकृत ऑडियो या वीडियो MIME प्रकार, कॉमा से अलग किए हुए.", + "settings.admin.audio.supportedMimeTypes.label": "समर्थित MIME प्रकार", + "settings.admin.audio.textToSpeechEngine.description": "सहायक के ऑडियो आउटपुट के लिए वाणी प्रदाता चुनें.", "settings.admin.audio.textToSpeechEngine.label": "टेक्स्ट-टू-स्पीच इंजन", "settings.admin.audio.title": "ऑडियो", "settings.admin.audio.ttsApiKey.label": "एपीआई कुंजी", - "settings.admin.audio.ttsAzureSpeechBaseUrl.label": "", - "settings.admin.audio.ttsAzureSpeechRegion.label": "", + "settings.admin.audio.ttsAzureSpeechBaseUrl.label": "एंडपॉइंट URL", + "settings.admin.audio.ttsAzureSpeechRegion.label": "Azure क्षेत्र", "settings.admin.audio.ttsMistralApiBaseUrl.label": "एपीआई बेस यूआरएल", "settings.admin.audio.ttsMistralApiKey.label": "एपीआई कुंजी", - "settings.admin.audio.ttsModel.description": "", - "settings.admin.audio.ttsModel.label": "", + "settings.admin.audio.ttsModel.description": "Open WebUI, SpeechT5 और CMU Arctic स्पीकर एंबेडिंग इस्तेमाल करता है.", + "settings.admin.audio.ttsModel.label": "TTS मॉडल", "settings.admin.audio.ttsOpenaiApiBaseUrl.label": "एपीआई बेस यूआरएल", "settings.admin.audio.ttsOpenaiApiKey.label": "एपीआई कुंजी", - "settings.admin.audio.ttsVoice.label": "", - "settings.admin.audio.updateModel.label": "", - "settings.admin.audio.useChatCompletionsApi.description": "", - "settings.admin.audio.useChatCompletionsApi.label": "", - "settings.admin.authentication.adminContactEmail.description": "", - "settings.admin.authentication.adminContactEmail.label": "", - "settings.admin.authentication.adminDetails.description": "", - "settings.admin.authentication.adminDetails.label": "", - "settings.admin.authentication.adminRoles.description": "", - "settings.admin.authentication.adminRoles.label": "", - "settings.admin.authentication.allowedDomains.description": "", - "settings.admin.authentication.allowedDomains.label": "", - "settings.admin.authentication.allowedEndpoints.description": "", - "settings.admin.authentication.allowedEndpoints.label": "", - "settings.admin.authentication.allowedRoles.description": "", - "settings.admin.authentication.allowedRoles.label": "", - "settings.admin.authentication.apiKeyEndpointRestrictions.description": "", - "settings.admin.authentication.apiKeyEndpointRestrictions.label": "", - "settings.admin.authentication.apiKeys.description": "", - "settings.admin.authentication.apiKeys.label": "", - "settings.admin.authentication.applicationDn.description": "", - "settings.admin.authentication.applicationDn.label": "", - "settings.admin.authentication.applicationDnPassword.description": "", - "settings.admin.authentication.applicationDnPassword.label": "", - "settings.admin.authentication.attributeForMail.description": "", - "settings.admin.authentication.attributeForMail.label": "", - "settings.admin.authentication.attributeForUsername.description": "", - "settings.admin.authentication.attributeForUsername.label": "", - "settings.admin.authentication.autoRedirect.description": "", - "settings.admin.authentication.autoRedirect.label": "", - "settings.admin.authentication.blockedGroups.description": "", - "settings.admin.authentication.blockedGroups.label": "", - "settings.admin.authentication.certificatePath.description": "", - "settings.admin.authentication.certificatePath.label": "", - "settings.admin.authentication.ciphers.description": "", - "settings.admin.authentication.ciphers.label": "", - "settings.admin.authentication.clientId.description": "", - "settings.admin.authentication.clientId.label": "", - "settings.admin.authentication.clientSecret.description": "", - "settings.admin.authentication.clientSecret.label": "", - "settings.admin.authentication.defaultGroup.description": "", - "settings.admin.authentication.defaultGroup.label": "", - "settings.admin.authentication.defaultUserRole.description": "", + "settings.admin.audio.ttsVoice.label": "TTS आवाज़", + "settings.admin.audio.updateModel.label": "मॉडल अपडेट करें", + "settings.admin.audio.useChatCompletionsApi.description": "संभावित रूप से बेहतर सटीकता के लिए /v1/audio/transcriptions के बजाय /v1/chat/completions एंडपॉइंट इस्तेमाल करें.", + "settings.admin.audio.useChatCompletionsApi.label": "Chat Completions API इस्तेमाल करें", + "settings.admin.authentication.adminContactEmail.description": "लंबित खाते के ओवरले में दिखाई जाने वाली ईमेल.", + "settings.admin.authentication.adminContactEmail.label": "व्यवस्थापक की संपर्क ईमेल", + "settings.admin.authentication.adminDetails.description": "खाते की मंज़ूरी लंबित होने पर व्यवस्थापक के संपर्क विवरण दिखाएँ.", + "settings.admin.authentication.adminDetails.label": "व्यवस्थापक के विवरण", + "settings.admin.authentication.adminRoles.description": "व्यवस्थापक की पहुँच देने वाली प्रदाता भूमिकाएँ.", + "settings.admin.authentication.adminRoles.label": "व्यवस्थापक भूमिकाएँ", + "settings.admin.authentication.allowedDomains.description": "OAuth से लॉगिन की अनुमति वाले ईमेल डोमेन.", + "settings.admin.authentication.allowedDomains.label": "अनुमत डोमेन", + "settings.admin.authentication.allowedEndpoints.description": "API कुंजियों की पहुँच वाले API पथ, कॉमा से अलग किए हुए.", + "settings.admin.authentication.allowedEndpoints.label": "अनुमत एंडपॉइंट", + "settings.admin.authentication.allowedRoles.description": "लॉगिन की अनुमति वाली प्रदाता भूमिकाएँ.", + "settings.admin.authentication.allowedRoles.label": "अनुमत भूमिकाएँ", + "settings.admin.authentication.apiKeyEndpointRestrictions.description": "API कुंजियों को कॉन्फ़िगर किए गए एंडपॉइंट तक सीमित करें.", + "settings.admin.authentication.apiKeyEndpointRestrictions.label": "API कुंजी एंडपॉइंट प्रतिबंध", + "settings.admin.authentication.apiKeys.description": "उपयोगकर्ताओं को प्रोग्राम के ज़रिए पहुँच के लिए API कुंजियाँ बनाने दें.", + "settings.admin.authentication.apiKeys.label": "API कुंजियाँ", + "settings.admin.authentication.applicationDn.description": "डायरेक्टरी खोज के लिए इस्तेमाल होने वाला बाइंड DN.", + "settings.admin.authentication.applicationDn.label": "एप्लिकेशन DN", + "settings.admin.authentication.applicationDnPassword.description": "बाइंड DN का पासवर्ड.", + "settings.admin.authentication.applicationDnPassword.label": "एप्लिकेशन DN पासवर्ड", + "settings.admin.authentication.attributeForMail.description": "उपयोगकर्ता की ईमेल के रूप में इस्तेमाल होने वाला LDAP एट्रिब्यूट.", + "settings.admin.authentication.attributeForMail.label": "ईमेल का एट्रिब्यूट", + "settings.admin.authentication.attributeForUsername.description": "उपयोगकर्ता नाम के रूप में इस्तेमाल होने वाला LDAP एट्रिब्यूट.", + "settings.admin.authentication.attributeForUsername.label": "उपयोगकर्ता नाम का एट्रिब्यूट", + "settings.admin.authentication.autoRedirect.description": "लॉगिन पेज से उपयोगकर्ताओं को सीधे OAuth प्रदाता के पास भेजें.", + "settings.admin.authentication.autoRedirect.label": "अपने-आप रीडायरेक्ट करें", + "settings.admin.authentication.blockedGroups.description": "लॉगिन से रोके गए प्रदाता समूह.", + "settings.admin.authentication.blockedGroups.label": "अवरुद्ध समूह", + "settings.admin.authentication.certificatePath.description": "TLS सत्यापन के लिए इस्तेमाल होने वाली प्रमाणपत्र फ़ाइल.", + "settings.admin.authentication.certificatePath.label": "प्रमाणपत्र पथ", + "settings.admin.authentication.ciphers.description": "LDAP कनेक्शन के लिए TLS साइफ़र सूची.", + "settings.admin.authentication.ciphers.label": "साइफ़र", + "settings.admin.authentication.clientId.description": "प्रदाता से मिला OAuth क्लाइंट पहचानकर्ता.", + "settings.admin.authentication.clientId.label": "क्लाइंट ID", + "settings.admin.authentication.clientSecret.description": "प्रदाता से मिला OAuth क्लाइंट सीक्रेट.", + "settings.admin.authentication.clientSecret.label": "क्लाइंट सीक्रेट", + "settings.admin.authentication.defaultGroup.description": "नए उपयोगकर्ताओं को डिफ़ॉल्ट रूप से दिया जाने वाला समूह.", + "settings.admin.authentication.defaultGroup.label": "डिफ़ॉल्ट समूह", + "settings.admin.authentication.defaultUserRole.description": "खाता बनाते समय नए उपयोगकर्ताओं को दी जाने वाली भूमिका.", "settings.admin.authentication.defaultUserRole.label": "डिफ़ॉल्ट उपयोगकर्ता भूमिका", - "settings.admin.authentication.emailClaim.description": "", - "settings.admin.authentication.emailClaim.label": "", - "settings.admin.authentication.enableGroupCreation.description": "", - "settings.admin.authentication.enableGroupCreation.label": "", - "settings.admin.authentication.enableGroupManagement.description": "", - "settings.admin.authentication.enableGroupManagement.label": "", - "settings.admin.authentication.enableOauthGroupCreation.description": "", - "settings.admin.authentication.enableOauthGroupCreation.label": "", - "settings.admin.authentication.enableOauthGroupManagement.description": "", - "settings.admin.authentication.enableOauthGroupManagement.label": "", - "settings.admin.authentication.groupAttribute.description": "", - "settings.admin.authentication.groupAttribute.label": "", - "settings.admin.authentication.groupClaim.description": "", - "settings.admin.authentication.groupClaim.label": "", - "settings.admin.authentication.host.description": "", - "settings.admin.authentication.host.label": "", - "settings.admin.authentication.jwtExpiration.description": "", + "settings.admin.authentication.emailClaim.description": "उपयोगकर्ता की ईमेल के रूप में इस्तेमाल होने वाला क्लेम.", + "settings.admin.authentication.emailClaim.label": "ईमेल क्लेम", + "settings.admin.authentication.enableGroupCreation.description": "LDAP समूहों से अनुपस्थित समूह बनाएँ.", + "settings.admin.authentication.enableGroupCreation.label": "समूह अपने-आप बनाएँ", + "settings.admin.authentication.enableGroupManagement.description": "LDAP समूहों को Open WebUI समूहों से मैप करें.", + "settings.admin.authentication.enableGroupManagement.label": "समूह मैपिंग", + "settings.admin.authentication.enableOauthGroupCreation.description": "OAuth क्लेम से अनुपस्थित समूह बनाएँ.", + "settings.admin.authentication.enableOauthGroupCreation.label": "समूह अपने-आप बनाएँ", + "settings.admin.authentication.enableOauthGroupManagement.description": "OAuth क्लेम को Open WebUI समूहों से मैप करें.", + "settings.admin.authentication.enableOauthGroupManagement.label": "समूह मैपिंग", + "settings.admin.authentication.groupAttribute.description": "उपयोगकर्ता की समूह सदस्यताएँ रखने वाला LDAP एट्रिब्यूट.", + "settings.admin.authentication.groupAttribute.label": "समूह एट्रिब्यूट", + "settings.admin.authentication.groupClaim.description": "प्रदाता समूह रखने वाला क्लेम.", + "settings.admin.authentication.groupClaim.label": "समूह क्लेम", + "settings.admin.authentication.host.description": "LDAP सर्वर का होस्टनाम या IP पता.", + "settings.admin.authentication.host.label": "होस्ट", + "settings.admin.authentication.jwtExpiration.description": "मान्य समय इकाइयाँ: 's', 'm', 'h', 'd', 'w' या समाप्ति न होने के लिए '-1'.", "settings.admin.authentication.jwtExpiration.label": "JWT समाप्ति", - "settings.admin.authentication.label.description": "", - "settings.admin.authentication.label.label": "", - "settings.admin.authentication.ldap.description": "", - "settings.admin.authentication.ldap.label": "", - "settings.admin.authentication.loginForm.description": "", - "settings.admin.authentication.loginForm.label": "", - "settings.admin.authentication.mergeAccountsByEmail.description": "", - "settings.admin.authentication.mergeAccountsByEmail.label": "", - "settings.admin.authentication.newSignUps.description": "", - "settings.admin.authentication.newSignUps.label": "", - "settings.admin.authentication.oauthOidc.description": "", - "settings.admin.authentication.oauthOidc.label": "", - "settings.admin.authentication.oauthSignup.description": "", - "settings.admin.authentication.oauthSignup.label": "", - "settings.admin.authentication.pendingUserOverlayContent.description": "", - "settings.admin.authentication.pendingUserOverlayContent.label": "", - "settings.admin.authentication.pendingUserOverlayTitle.description": "", - "settings.admin.authentication.pendingUserOverlayTitle.label": "", - "settings.admin.authentication.pictureClaim.description": "", - "settings.admin.authentication.pictureClaim.label": "", - "settings.admin.authentication.port.description": "", - "settings.admin.authentication.port.label": "", - "settings.admin.authentication.providerName.description": "", - "settings.admin.authentication.providerName.label": "", - "settings.admin.authentication.providerUrl.description": "", - "settings.admin.authentication.providerUrl.label": "", - "settings.admin.authentication.redirectUri.description": "", - "settings.admin.authentication.redirectUri.label": "", - "settings.admin.authentication.roleMapping.description": "", - "settings.admin.authentication.roleMapping.label": "", - "settings.admin.authentication.rolesClaim.description": "", - "settings.admin.authentication.rolesClaim.label": "", - "settings.admin.authentication.scopes.description": "", - "settings.admin.authentication.scopes.label": "", - "settings.admin.authentication.searchBase.description": "", - "settings.admin.authentication.searchBase.label": "", - "settings.admin.authentication.searchFilters.description": "", - "settings.admin.authentication.searchFilters.label": "", - "settings.admin.authentication.sections.ldap.title": "", - "settings.admin.authentication.sections.oauthOidc.title": "", - "settings.admin.authentication.sections.pendingAccounts.title": "", - "settings.admin.authentication.sections.userAccess.title": "", - "settings.admin.authentication.subClaim.description": "", - "settings.admin.authentication.subClaim.label": "", - "settings.admin.authentication.title": "", - "settings.admin.authentication.tls.description": "", - "settings.admin.authentication.tls.label": "", - "settings.admin.authentication.updateEmail.description": "", - "settings.admin.authentication.updateEmail.label": "", - "settings.admin.authentication.updateName.description": "", - "settings.admin.authentication.updateName.label": "", - "settings.admin.authentication.updatePicture.description": "", - "settings.admin.authentication.updatePicture.label": "", - "settings.admin.authentication.usernameClaim.description": "", - "settings.admin.authentication.usernameClaim.label": "", - "settings.admin.authentication.validateCertificate.description": "", - "settings.admin.authentication.validateCertificate.label": "", - "settings.admin.codeExecution.codeExecutionEngine.description": "", - "settings.admin.codeExecution.codeExecutionEngine.label": "", - "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "", - "settings.admin.codeExecution.codeExecutionJupyterAuth.label": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "", - "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "", - "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "", - "settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "", - "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "", - "settings.admin.codeExecution.codeExecutionJupyterUrl.label": "", - "settings.admin.codeExecution.codeInterpreterEngine.description": "", - "settings.admin.codeExecution.codeInterpreterEngine.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "", - "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "", - "settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "", - "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "", - "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "", - "settings.admin.codeExecution.enableCodeExecution.description": "", - "settings.admin.codeExecution.enableCodeExecution.label": "", - "settings.admin.codeExecution.enableCodeInterpreter.description": "", - "settings.admin.codeExecution.enableCodeInterpreter.label": "", - "settings.admin.codeExecution.sections.codeExecution.title": "", - "settings.admin.codeExecution.sections.codeInterpreter.title": "", - "settings.admin.codeExecution.title": "", - "settings.admin.connections.addConnection.label": "", - "settings.admin.connections.cacheBaseModelList.description": "", - "settings.admin.connections.cacheBaseModelList.label": "", - "settings.admin.connections.directConnections.description": "", - "settings.admin.connections.directConnections.label": "", - "settings.admin.connections.directIntegrations.description": "", - "settings.admin.connections.directIntegrations.label": "", + "settings.admin.authentication.label.description": "इस LDAP कनेक्शन का प्रदर्शन नाम.", + "settings.admin.authentication.label.label": "लेबल", + "settings.admin.authentication.ldap.description": "उपयोगकर्ताओं को LDAP डायरेक्टरी से प्रमाणीकरण करने दें.", + "settings.admin.authentication.ldap.label": "LDAP", + "settings.admin.authentication.loginForm.description": "लॉगिन पेज पर ईमेल और पासवर्ड से लॉगिन दिखाएँ. अक्षम करने से पहले SSO या LDAP सेट करें. अक्षम करने से स्थानीय साइनअप भी रुकते हैं; पासवर्ड API की पहुँच अपरिवर्तित रहती है.", + "settings.admin.authentication.loginForm.label": "लॉगिन फ़ॉर्म", + "settings.admin.authentication.mergeAccountsByEmail.description": "OAuth लॉगिन को समान ईमेल वाले मौजूदा खातों से जोड़ें.", + "settings.admin.authentication.mergeAccountsByEmail.label": "ईमेल के अनुसार खाते मिलाएँ", + "settings.admin.authentication.newSignUps.description": "नए उपयोगकर्ताओं को खाते बनाने दें.", + "settings.admin.authentication.newSignUps.label": "नए साइनअप", + "settings.admin.authentication.oauthOidc.description": "उपयोगकर्ताओं को OAuth / OIDC प्रदाता से प्रमाणीकरण करने दें.", + "settings.admin.authentication.oauthOidc.label": "OAuth / OIDC", + "settings.admin.authentication.oauthSignup.description": "उपयोगकर्ताओं को OAuth से खाते बनाने दें.", + "settings.admin.authentication.oauthSignup.label": "OAuth साइनअप", + "settings.admin.authentication.pendingUserOverlayContent.description": "खाते की मंज़ूरी लंबित होने पर दिखाया जाने वाला कस्टम संदेश.", + "settings.admin.authentication.pendingUserOverlayContent.label": "लंबित उपयोगकर्ता ओवरले की सामग्री", + "settings.admin.authentication.pendingUserOverlayTitle.description": "खाते की मंज़ूरी लंबित होने पर दिखाया जाने वाला कस्टम शीर्षक.", + "settings.admin.authentication.pendingUserOverlayTitle.label": "लंबित उपयोगकर्ता ओवरले का शीर्षक", + "settings.admin.authentication.pictureClaim.description": "प्रोफ़ाइल चित्र के URL के रूप में इस्तेमाल होने वाला क्लेम.", + "settings.admin.authentication.pictureClaim.label": "चित्र क्लेम", + "settings.admin.authentication.port.description": "LDAP सर्वर का पोर्ट.", + "settings.admin.authentication.port.label": "पोर्ट", + "settings.admin.authentication.providerName.description": "OAuth प्रदाता के लिए दिखाया जाने वाला नाम.", + "settings.admin.authentication.providerName.label": "प्रदाता का नाम", + "settings.admin.authentication.providerUrl.description": "इस प्रदाता का OpenID डिस्कवरी URL.", + "settings.admin.authentication.providerUrl.label": "प्रदाता URL", + "settings.admin.authentication.redirectUri.description": "प्रदाता के पास पंजीकृत कॉलबैक URI.", + "settings.admin.authentication.redirectUri.label": "रीडायरेक्ट URI", + "settings.admin.authentication.roleMapping.description": "OAuth क्लेम को Open WebUI भूमिकाओं से मैप करें.", + "settings.admin.authentication.roleMapping.label": "भूमिका मैपिंग", + "settings.admin.authentication.rolesClaim.description": "प्रदाता भूमिकाएँ रखने वाला क्लेम.", + "settings.admin.authentication.rolesClaim.label": "भूमिका क्लेम", + "settings.admin.authentication.scopes.description": "लॉगिन के दौरान अनुरोधित OAuth स्कोप.", + "settings.admin.authentication.scopes.label": "स्कोप", + "settings.admin.authentication.searchBase.description": "उपयोगकर्ताओं की खोज में इस्तेमाल होने वाला बेस DN.", + "settings.admin.authentication.searchBase.label": "खोज बेस", + "settings.admin.authentication.searchFilters.description": "लॉगिन करने वाले उपयोगकर्ताओं से मिलान के लिए LDAP फ़िल्टर.", + "settings.admin.authentication.searchFilters.label": "खोज फ़िल्टर", + "settings.admin.authentication.sections.ldap.title": "LDAP", + "settings.admin.authentication.sections.oauthOidc.title": "OAuth / OIDC", + "settings.admin.authentication.sections.pendingAccounts.title": "लंबित खाते", + "settings.admin.authentication.sections.userAccess.title": "उपयोगकर्ता पहुँच", + "settings.admin.authentication.subClaim.description": "स्थायी उपयोगकर्ता पहचानकर्ता के रूप में इस्तेमाल होने वाला क्लेम.", + "settings.admin.authentication.subClaim.label": "Sub क्लेम", + "settings.admin.authentication.title": "प्रमाणीकरण", + "settings.admin.authentication.tls.description": "LDAP सर्वर से कनेक्ट करते समय TLS इस्तेमाल करें.", + "settings.admin.authentication.tls.label": "TLS", + "settings.admin.authentication.updateEmail.description": "लॉगिन पर OAuth से खाते की ईमेल अपडेट करें.", + "settings.admin.authentication.updateEmail.label": "ईमेल अपडेट करें", + "settings.admin.authentication.updateName.description": "लॉगिन पर OAuth से खाते का नाम अपडेट करें.", + "settings.admin.authentication.updateName.label": "नाम अपडेट करें", + "settings.admin.authentication.updatePicture.description": "लॉगिन पर OAuth से प्रोफ़ाइल चित्र अपडेट करें.", + "settings.admin.authentication.updatePicture.label": "चित्र अपडेट करें", + "settings.admin.authentication.usernameClaim.description": "प्रदर्शन नाम के रूप में इस्तेमाल होने वाला क्लेम.", + "settings.admin.authentication.usernameClaim.label": "उपयोगकर्ता नाम क्लेम", + "settings.admin.authentication.validateCertificate.description": "TLS सक्षम होने पर LDAP सर्वर का प्रमाणपत्र सत्यापित करें.", + "settings.admin.authentication.validateCertificate.label": "प्रमाणपत्र सत्यापित करें", + "settings.admin.codeExecution.codeExecutionEngine.description": "जनरेट किए गए कोड ब्लॉक के लिए रनटाइम चुनें.", + "settings.admin.codeExecution.codeExecutionEngine.label": "कोड निष्पादन इंजन", + "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "चुनें कि Open WebUI, Jupyter सर्वर से कैसे प्रमाणीकरण करे.", + "settings.admin.codeExecution.codeExecutionJupyterAuth.label": "Jupyter प्रमाणीकरण", + "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "Jupyter सर्वर से प्रमाणीकरण के लिए इस्तेमाल होने वाले क्रेडेंशियल.", + "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "Jupyter पासवर्ड", + "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "Jupyter टोकन", + "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "निष्पादन रोके जाने से पहले अधिकतम रनटाइम, सेकंड में.", + "settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "कोड निष्पादन टाइमआउट", + "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "कोड निष्पादन को Jupyter सर्वर एंडपॉइंट से कनेक्ट करें.", + "settings.admin.codeExecution.codeExecutionJupyterUrl.label": "Jupyter URL", + "settings.admin.codeExecution.codeInterpreterEngine.description": "कोड इंटरप्रेटर टूल के लिए रनटाइम चुनें.", + "settings.admin.codeExecution.codeInterpreterEngine.label": "कोड इंटरप्रेटर इंजन", + "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "चुनें कि Open WebUI, Jupyter सर्वर से कैसे प्रमाणीकरण करे.", + "settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "Jupyter प्रमाणीकरण", + "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "Jupyter सर्वर से प्रमाणीकरण के लिए इस्तेमाल होने वाले क्रेडेंशियल.", + "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "Jupyter पासवर्ड", + "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "Jupyter टोकन", + "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "निष्पादन रोके जाने से पहले अधिकतम रनटाइम, सेकंड में.", + "settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "कोड निष्पादन टाइमआउट", + "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "कोड इंटरप्रेटर को Jupyter सर्वर एंडपॉइंट से कनेक्ट करें.", + "settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "Jupyter URL", + "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "डिफ़ॉल्ट प्रॉम्प्ट के लिए खाली छोड़ें, या कस्टम प्रॉम्प्ट दर्ज करें.", + "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "कोड इंटरप्रेटर प्रॉम्प्ट टेम्पलेट", + "settings.admin.codeExecution.enableCodeExecution.description": "मॉडल को जनरेट किया गया कोड चलाने और निष्पादन परिणाम देने दें.", + "settings.admin.codeExecution.enableCodeExecution.label": "कोड निष्पादन सक्षम करें", + "settings.admin.codeExecution.enableCodeInterpreter.description": "मॉडल को चैट के दौरान कोड इंटरप्रेटर टूल इस्तेमाल करने दें.", + "settings.admin.codeExecution.enableCodeInterpreter.label": "कोड इंटरप्रेटर सक्षम करें", + "settings.admin.codeExecution.sections.codeExecution.title": "कोड निष्पादन", + "settings.admin.codeExecution.sections.codeInterpreter.title": "कोड इंटरप्रेटर", + "settings.admin.codeExecution.title": "कोड निष्पादन", + "settings.admin.connections.addConnection.label": "कनेक्शन जोड़ें", + "settings.admin.connections.cacheBaseModelList.description": "बेस मॉडल सूची कैश केवल शुरू होने पर या सेटिंग्स सहेजने पर बेस मॉडल प्राप्त करके पहुँच तेज़ करता है—यह तेज़ है, लेकिन हाल के बेस मॉडल बदलाव शायद न दिखें.", + "settings.admin.connections.cacheBaseModelList.label": "बेस मॉडल सूची कैश करें", + "settings.admin.connections.directConnections.description": "सीधे कनेक्शन उपयोगकर्ताओं को अपने OpenAI-संगत API एंडपॉइंट से कनेक्ट करने देते हैं.", + "settings.admin.connections.directConnections.label": "सीधे कनेक्शन", + "settings.admin.connections.directIntegrations.description": "अपने टूल और टर्मिनल कनेक्शन प्रबंधित करने की अनुमति वाले उपयोगकर्ताओं, जिनमें व्यवस्थापक भी शामिल हैं, के लिए इंटीग्रेशन टैब दिखाएँ. इसे छिपाने से मौजूदा कनेक्शन अक्षम नहीं होते.", + "settings.admin.connections.directIntegrations.label": "सीधे इंटीग्रेशन", "settings.admin.connections.manageOllamaApiConnections.description": "Ollama तक पहुँचने में परेशानी हो रही है?", - "settings.admin.connections.manageOllamaApiConnections.label": "", - "settings.admin.connections.manageOpenaiApiConnections.label": "", - "settings.admin.connections.ollamaApi.label": "ओलामा एपीआई", + "settings.admin.connections.manageOllamaApiConnections.label": "Ollama API कनेक्शन प्रबंधित करें", + "settings.admin.connections.manageOpenaiApiConnections.label": "OpenAI API कनेक्शन प्रबंधित करें", + "settings.admin.connections.ollamaApi.label": "Ollama API", "settings.admin.connections.openaiApi.label": "OpenAI API", - "settings.admin.connections.refreshModels.label": "", - "settings.admin.connections.sections.userConnections.title": "", - "settings.admin.connections.title": "सम्बन्ध", - "settings.admin.db.allChats.description": "", - "settings.admin.db.allChats.label": "", - "settings.admin.db.database.description": "", + "settings.admin.connections.refreshModels.label": "रीफ़्रेश करें", + "settings.admin.connections.sections.userConnections.title": "उपयोगकर्ता कनेक्शन", + "settings.admin.connections.title": "कनेक्शन", + "settings.admin.db.allChats.description": "हर उपयोगकर्ता का चैट इतिहास JSON के रूप में डाउनलोड करें.", + "settings.admin.db.allChats.label": "सभी चैट", + "settings.admin.db.database.description": "समर्थित होने पर एप्लिकेशन डेटाबेस डाउनलोड करें.", "settings.admin.db.database.label": "डेटाबेस", - "settings.admin.db.exportConfig.description": "", - "settings.admin.db.exportConfig.label": "", - "settings.admin.db.importConfig.description": "", - "settings.admin.db.importConfig.label": "", - "settings.admin.db.sections.config.title": "", + "settings.admin.db.exportConfig.description": "मौजूदा व्यवस्थापक कॉन्फ़िगरेशन JSON के रूप में डाउनलोड करें.", + "settings.admin.db.exportConfig.label": "कॉन्फ़िगरेशन निर्यात करें", + "settings.admin.db.importConfig.description": "JSON निर्यात फ़ाइल से व्यवस्थापक कॉन्फ़िगरेशन आयात करें.", + "settings.admin.db.importConfig.label": "कॉन्फ़िगरेशन आयात करें", + "settings.admin.db.sections.config.title": "कॉन्फ़िगरेशन", "settings.admin.db.sections.export.title": "निर्यात करें", "settings.admin.db.title": "डेटाबेस", - "settings.admin.db.users.description": "", - "settings.admin.db.users.label": "उपयोगकर्ताओं", - "settings.admin.documents.additionalConfig.description": "", - "settings.admin.documents.additionalConfig.label": "", - "settings.admin.documents.allowedFileExtensions.description": "", - "settings.admin.documents.allowedFileExtensions.label": "", - "settings.admin.documents.apiMode.description": "", - "settings.admin.documents.apiMode.label": "", - "settings.admin.documents.apiTimeout.description": "", - "settings.admin.documents.apiTimeout.label": "", - "settings.admin.documents.apiToken.description": "", - "settings.admin.documents.apiToken.label": "", - "settings.admin.documents.apiUrl.description": "", - "settings.admin.documents.apiUrl.label": "", - "settings.admin.documents.asyncEmbeddingProcessing.description": "", - "settings.admin.documents.asyncEmbeddingProcessing.label": "", - "settings.admin.documents.azureopenaikey.description": "", + "settings.admin.db.users.description": "सभी उपयोगकर्ताओं को CSV के रूप में डाउनलोड करें.", + "settings.admin.db.users.label": "उपयोगकर्ता", + "settings.admin.documents.additionalConfig.description": "उन्नत पार्सिंग के लिए Marker को भेजे जाने वाले JSON विकल्प.", + "settings.admin.documents.additionalConfig.label": "अतिरिक्त कॉन्फ़िगरेशन", + "settings.admin.documents.allowedFileExtensions.description": "अपलोड एक्सटेंशन, कॉमा से अलग किए हुए. सभी फ़ाइल प्रकारों के लिए खाली छोड़ें.", + "settings.admin.documents.allowedFileExtensions.label": "अनुमत फ़ाइल एक्सटेंशन", + "settings.admin.documents.apiMode.description": "स्थानीय या क्लाउड MinerU API मोड चुनें.", + "settings.admin.documents.apiMode.label": "API मोड", + "settings.admin.documents.apiTimeout.description": "MinerU API के उत्तर की प्रतीक्षा का अधिकतम समय, सेकंड में.", + "settings.admin.documents.apiTimeout.label": "API टाइमआउट", + "settings.admin.documents.apiToken.description": "PaddleOCR-vl को भेजा जाने वाला API टोकन.", + "settings.admin.documents.apiToken.label": "API टोकन", + "settings.admin.documents.apiUrl.description": "चुने गए मोड का MinerU API एंडपॉइंट.", + "settings.admin.documents.apiUrl.label": "API URL", + "settings.admin.documents.asyncEmbeddingProcessing.description": "प्रोसेसिंग तेज़ करने के लिए एंबेडिंग कार्य साथ-साथ चलाएँ.", + "settings.admin.documents.asyncEmbeddingProcessing.label": "एसिंक्रोनस एंबेडिंग प्रोसेसिंग", + "settings.admin.documents.azureopenaikey.description": "Azure OpenAI API कुंजी.", "settings.admin.documents.azureopenaikey.label": "एपीआई कुंजी", - "settings.admin.documents.azureopenaiurl.description": "", + "settings.admin.documents.azureopenaiurl.description": "एंबेडिंग के लिए इस्तेमाल होने वाला Azure OpenAI एंडपॉइंट.", "settings.admin.documents.azureopenaiurl.label": "एपीआई बेस यूआरएल", - "settings.admin.documents.bm25Weight.description": "", - "settings.admin.documents.bm25Weight.label": "", - "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "", - "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "", - "settings.admin.documents.chunkMinSizeTarget.description": "", - "settings.admin.documents.chunkMinSizeTarget.label": "", - "settings.admin.documents.chunkOverlap.description": "", + "settings.admin.documents.bm25Weight.description": "हाइब्रिड खोज के लिए अर्थ और शब्द आधारित भार में संतुलन बनाएँ.", + "settings.admin.documents.bm25Weight.label": "BM25 भार", + "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "व्यापक प्रोसेसिंग के लिए पूरी सामग्री संदर्भ के रूप में डालें.", + "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "एंबेडिंग और पुनर्प्राप्ति छोड़ें", + "settings.admin.documents.chunkMinSizeTarget.description": "जहाँ संभव हो, इस सीमा से छोटे चंक को मिलाएँ. मिलाना अक्षम करने के लिए 0 सेट करें.", + "settings.admin.documents.chunkMinSizeTarget.label": "चंक के न्यूनतम आकार का लक्ष्य", + "settings.admin.documents.chunkOverlap.description": "पास के चंक के बीच बनाए रखा जाने वाला ओवरलैप.", "settings.admin.documents.chunkOverlap.label": "चंक ओवरलैप", - "settings.admin.documents.chunkSize.description": "", + "settings.admin.documents.chunkSize.description": "हर टेक्स्ट चंक का अधिकतम आकार.", "settings.admin.documents.chunkSize.label": "चंक आकार", - "settings.admin.documents.contentExtractionEngine.description": "", - "settings.admin.documents.contentExtractionEngine.label": "", - "settings.admin.documents.datalabMarkerApiBaseUrl.description": "", + "settings.admin.documents.contentExtractionEngine.description": "चुनें कि इंडेक्स बनाने से पहले अपलोड किए गए दस्तावेज़ कैसे पार्स किए जाएँ.", + "settings.admin.documents.contentExtractionEngine.label": "सामग्री निष्कर्षण इंजन", + "settings.admin.documents.datalabMarkerApiBaseUrl.description": "दस्तावेज़ पार्सिंग के लिए Datalab Marker सेवा एंडपॉइंट.", "settings.admin.documents.datalabMarkerApiBaseUrl.label": "एपीआई बेस यूआरएल", - "settings.admin.documents.datalabMarkerApiKey.description": "", + "settings.admin.documents.datalabMarkerApiKey.description": "Datalab Marker से प्रमाणीकरण के लिए API कुंजी.", "settings.admin.documents.datalabMarkerApiKey.label": "एपीआई कुंजी", - "settings.admin.documents.disableImageExtraction.description": "", - "settings.admin.documents.disableImageExtraction.label": "", - "settings.admin.documents.doclingApiKey.description": "", + "settings.admin.documents.disableImageExtraction.description": "Marker प्रोसेसिंग के दौरान PDF से चित्र न निकालें.", + "settings.admin.documents.disableImageExtraction.label": "चित्र निष्कर्षण अक्षम करें", + "settings.admin.documents.doclingApiKey.description": "Docling को भेजी जाने वाली API कुंजी.", "settings.admin.documents.doclingApiKey.label": "एपीआई कुंजी", - "settings.admin.documents.doclingParams.description": "", - "settings.admin.documents.doclingParams.label": "", - "settings.admin.documents.doclingServerUrl.description": "", - "settings.admin.documents.doclingServerUrl.label": "", - "settings.admin.documents.documentIntelligenceKey.description": "", - "settings.admin.documents.documentIntelligenceKey.label": "", - "settings.admin.documents.documentIntelligenceModel.description": "", - "settings.admin.documents.documentIntelligenceModel.label": "", - "settings.admin.documents.documentLoaderUrl.description": "", - "settings.admin.documents.documentLoaderUrl.label": "", - "settings.admin.documents.embeddingBatchSize.description": "", - "settings.admin.documents.embeddingBatchSize.label": "", - "settings.admin.documents.embeddingConcurrentRequests.description": "", - "settings.admin.documents.embeddingConcurrentRequests.label": "", - "settings.admin.documents.embeddingModel.description": "", - "settings.admin.documents.embeddingModel.label": "मॉडेल अनुकूलन", - "settings.admin.documents.embeddingModelEngine.description": "", + "settings.admin.documents.doclingParams.description": "JSON फ़ॉर्मैट में अतिरिक्त Docling पैरामीटर.", + "settings.admin.documents.doclingParams.label": "पैरामीटर", + "settings.admin.documents.doclingServerUrl.description": "पार्सिंग के लिए Docling सेवा एंडपॉइंट.", + "settings.admin.documents.doclingServerUrl.label": "Docling सर्वर URL", + "settings.admin.documents.documentIntelligenceKey.description": "Document Intelligence के लिए इस्तेमाल होने वाला क्रेडेंशियल.", + "settings.admin.documents.documentIntelligenceKey.label": "कुंजी", + "settings.admin.documents.documentIntelligenceModel.description": "Document Intelligence में इस्तेमाल होने वाले मॉडल का नाम.", + "settings.admin.documents.documentIntelligenceModel.label": "Document Intelligence मॉडल", + "settings.admin.documents.documentLoaderUrl.description": "दस्तावेज़ की सामग्री लोड करने के लिए बाहरी सेवा एंडपॉइंट.", + "settings.admin.documents.documentLoaderUrl.label": "दस्तावेज़ लोडर URL", + "settings.admin.documents.embeddingBatchSize.description": "हर एंबेडिंग बैच में प्रोसेस होने वाले आइटम की संख्या.", + "settings.admin.documents.embeddingBatchSize.label": "एंबेडिंग बैच का आकार", + "settings.admin.documents.embeddingConcurrentRequests.description": "एक साथ अधिकतम एंबेडिंग अनुरोध. असीमित के लिए 0 सेट करें.", + "settings.admin.documents.embeddingConcurrentRequests.label": "समवर्ती एंबेडिंग अनुरोध", + "settings.admin.documents.embeddingModel.description": "एंबेडिंग जनरेट करने वाला मॉडल. इसे बदलने के बाद ज्ञान का इंडेक्स दोबारा बनाएँ.", + "settings.admin.documents.embeddingModel.label": "एंबेडिंग मॉडल", + "settings.admin.documents.embeddingModelEngine.description": "दस्तावेज़ एंबेडिंग जनरेट करने वाला प्रदाता.", "settings.admin.documents.embeddingModelEngine.label": "एंबेडिंग मॉडल इंजन", - "settings.admin.documents.endpoint.description": "", - "settings.admin.documents.endpoint.label": "", - "settings.admin.documents.enrichHybridSearchText.description": "", - "settings.admin.documents.enrichHybridSearchText.label": "", - "settings.admin.documents.externalDocumentLoaderApiKey.description": "", + "settings.admin.documents.endpoint.description": "पार्सिंग के लिए Document Intelligence एंडपॉइंट.", + "settings.admin.documents.endpoint.label": "एंडपॉइंट", + "settings.admin.documents.enrichHybridSearchText.description": "शब्द आधारित खोज में अधिक प्रासंगिक परिणाम पाने के लिए फ़ाइल नाम, शीर्षक, अनुभाग और अंश जोड़ें.", + "settings.admin.documents.enrichHybridSearchText.label": "हाइब्रिड खोज टेक्स्ट समृद्ध करें", + "settings.admin.documents.externalDocumentLoaderApiKey.description": "बाहरी दस्तावेज़ लोडर को भेजी जाने वाली API कुंजी.", "settings.admin.documents.externalDocumentLoaderApiKey.label": "एपीआई कुंजी", - "settings.admin.documents.fileExtensions.description": "", - "settings.admin.documents.fileExtensions.label": "", - "settings.admin.documents.forceOcr.description": "", - "settings.admin.documents.forceOcr.label": "", - "settings.admin.documents.formatLines.description": "", - "settings.admin.documents.formatLines.label": "", - "settings.admin.documents.fullContextMode.description": "", - "settings.admin.documents.fullContextMode.label": "", - "settings.admin.documents.googleDrive.description": "", - "settings.admin.documents.googleDrive.label": "", - "settings.admin.documents.headers.description": "", - "settings.admin.documents.headers.label": "", - "settings.admin.documents.headerVariables.label": "", - "settings.admin.documents.hybridSearch.description": "", + "settings.admin.documents.fileExtensions.description": "MinerU द्वारा संभाले जाने वाले एक्सटेंशन, कॉमा से अलग किए हुए.", + "settings.admin.documents.fileExtensions.label": "फ़ाइल एक्सटेंशन", + "settings.admin.documents.forceOcr.description": "सभी PDF पेज पर OCR चलाएँ, एम्बेड किए गए टेक्स्ट वाले पेज पर भी.", + "settings.admin.documents.forceOcr.label": "OCR अनिवार्य करें", + "settings.admin.documents.formatLines.description": "इनलाइन गणित और शैलियों का पता लगाने के लिए पंक्तियाँ फ़ॉर्मैट करें.", + "settings.admin.documents.formatLines.label": "पंक्तियाँ फ़ॉर्मैट करें", + "settings.admin.documents.fullContextMode.description": "व्यापक प्रोसेसिंग के लिए पूरे दस्तावेज़ संदर्भ के रूप में डालें.", + "settings.admin.documents.fullContextMode.label": "पूर्ण संदर्भ मोड", + "settings.admin.documents.googleDrive.description": "Google Drive को दस्तावेज़ स्रोत के रूप में अनुमति दें.", + "settings.admin.documents.googleDrive.label": "Google Drive", + "settings.admin.documents.headers.description": "बाहरी दस्तावेज़ लोडर को भेजे जाने वाले अतिरिक्त JSON हेडर.", + "settings.admin.documents.headers.label": "हेडर", + "settings.admin.documents.headerVariables.label": "हेडर वेरिएबल", + "settings.admin.documents.hybridSearch.description": "अर्थ और कीवर्ड आधारित पुनर्प्राप्ति को मिलाएँ.", "settings.admin.documents.hybridSearch.label": "हाइब्रिड खोज", - "settings.admin.documents.imageCompressionHeight.description": "", - "settings.admin.documents.imageCompressionHeight.label": "", - "settings.admin.documents.imageCompressionWidth.description": "", - "settings.admin.documents.imageCompressionWidth.label": "", - "settings.admin.documents.markdownHeaderTextSplitter.description": "", - "settings.admin.documents.markdownHeaderTextSplitter.label": "", - "settings.admin.documents.maxUploadCount.description": "", - "settings.admin.documents.maxUploadCount.label": "", - "settings.admin.documents.maxUploadSize.description": "", - "settings.admin.documents.maxUploadSize.label": "", - "settings.admin.documents.mineruApiKey.description": "", + "settings.admin.documents.imageCompressionHeight.description": "चित्रों को संपीड़ित करने के लिए ऊँचाई, पिक्सेल में. संपीड़न न करने के लिए खाली छोड़ें.", + "settings.admin.documents.imageCompressionHeight.label": "चित्र संपीड़न ऊँचाई", + "settings.admin.documents.imageCompressionWidth.description": "चित्रों को संपीड़ित करने के लिए चौड़ाई, पिक्सेल में. संपीड़न न करने के लिए खाली छोड़ें.", + "settings.admin.documents.imageCompressionWidth.label": "चित्र संपीड़न चौड़ाई", + "settings.admin.documents.markdownHeaderTextSplitter.description": "अक्षर या टोकन के अनुसार विभाजन से पहले दस्तावेज़ों को Markdown हेडर के अनुसार विभाजित करें.", + "settings.admin.documents.markdownHeaderTextSplitter.label": "Markdown हेडर टेक्स्ट विभाजक", + "settings.admin.documents.maxUploadCount.description": "चैट में एक साथ इस्तेमाल की जा सकने वाली फ़ाइलों की अधिकतम संख्या.", + "settings.admin.documents.maxUploadCount.label": "अधिकतम अपलोड संख्या", + "settings.admin.documents.maxUploadSize.description": "फ़ाइल का अधिकतम आकार, MB में. असीमित के लिए खाली छोड़ें.", + "settings.admin.documents.maxUploadSize.label": "अधिकतम अपलोड आकार", + "settings.admin.documents.mineruApiKey.description": "MinerU क्लाउड मोड के लिए API कुंजी.", "settings.admin.documents.mineruApiKey.label": "एपीआई कुंजी", - "settings.admin.documents.mineruParams.description": "", - "settings.admin.documents.mineruParams.label": "", - "settings.admin.documents.mistralOcrApiBaseUrl.description": "", + "settings.admin.documents.mineruParams.description": "JSON फ़ॉर्मैट में उन्नत MinerU पार्सिंग पैरामीटर.", + "settings.admin.documents.mineruParams.label": "पैरामीटर", + "settings.admin.documents.mistralOcrApiBaseUrl.description": "Mistral OCR सेवा एंडपॉइंट.", "settings.admin.documents.mistralOcrApiBaseUrl.label": "एपीआई बेस यूआरएल", - "settings.admin.documents.mistralOcrApiKey.description": "", + "settings.admin.documents.mistralOcrApiKey.description": "Mistral OCR को भेजी जाने वाली API कुंजी.", "settings.admin.documents.mistralOcrApiKey.label": "एपीआई कुंजी", - "settings.admin.documents.ollamakey.description": "", + "settings.admin.documents.ollamakey.description": "Ollama अनुरोधों के लिए वैकल्पिक API कुंजी.", "settings.admin.documents.ollamakey.label": "एपीआई कुंजी", - "settings.admin.documents.ollamaurl.description": "", + "settings.admin.documents.ollamaurl.description": "एंबेडिंग के लिए Ollama एंडपॉइंट.", "settings.admin.documents.ollamaurl.label": "एपीआई बेस यूआरएल", - "settings.admin.documents.onedrive.description": "", - "settings.admin.documents.onedrive.label": "", - "settings.admin.documents.openaikey.description": "", + "settings.admin.documents.onedrive.description": "OneDrive को दस्तावेज़ स्रोत के रूप में अनुमति दें.", + "settings.admin.documents.onedrive.label": "OneDrive", + "settings.admin.documents.openaikey.description": "एंबेडिंग अनुरोधों की API कुंजी.", "settings.admin.documents.openaikey.label": "एपीआई कुंजी", - "settings.admin.documents.openaiurl.description": "", + "settings.admin.documents.openaiurl.description": "OpenAI-संगत एंबेडिंग एंडपॉइंट.", "settings.admin.documents.openaiurl.label": "एपीआई बेस यूआरएल", - "settings.admin.documents.outputFormat.description": "", - "settings.admin.documents.outputFormat.label": "", - "settings.admin.documents.paddleocrVlBaseUrl.description": "", + "settings.admin.documents.outputFormat.description": "Marker द्वारा लौटाया जाने वाला टेक्स्ट आउटपुट फ़ॉर्मैट.", + "settings.admin.documents.outputFormat.label": "आउटपुट फ़ॉर्मैट", + "settings.admin.documents.paddleocrVlBaseUrl.description": "PaddleOCR-vl सेवा एंडपॉइंट.", "settings.admin.documents.paddleocrVlBaseUrl.label": "एपीआई बेस यूआरएल", - "settings.admin.documents.paginate.description": "", - "settings.admin.documents.paginate.label": "", - "settings.admin.documents.pdfExtractImagesOcr.description": "", + "settings.admin.documents.paginate.description": "पेज चिह्नों के साथ आउटपुट को पेज के अनुसार अलग करें.", + "settings.admin.documents.paginate.label": "पेजों में बाँटें", + "settings.admin.documents.pdfExtractImagesOcr.description": "PDF से चित्र निकालें, ताकि OCR केवल चित्र वाले पेज प्रोसेस कर सके.", "settings.admin.documents.pdfExtractImagesOcr.label": "PDF छवियाँ निकालें (OCR)", - "settings.admin.documents.pdfLoaderMode.description": "", - "settings.admin.documents.pdfLoaderMode.label": "", - "settings.admin.documents.ragExternalRerankerApiKey.description": "", + "settings.admin.documents.pdfLoaderMode.description": "Page मोड हर पेज का एक दस्तावेज़ बनाता है. Single मोड पेजों की सीमाओं के पार चंक बनाने के लिए पेजों को साथ रखता है.", + "settings.admin.documents.pdfLoaderMode.label": "PDF लोडर मोड", + "settings.admin.documents.ragExternalRerankerApiKey.description": "बाहरी रीरैंकर को भेजी जाने वाली API कुंजी.", "settings.admin.documents.ragExternalRerankerApiKey.label": "एपीआई कुंजी", - "settings.admin.documents.ragExternalRerankerUrl.description": "", + "settings.admin.documents.ragExternalRerankerUrl.description": "बाहरी रीरैंकर एंडपॉइंट.", "settings.admin.documents.ragExternalRerankerUrl.label": "एपीआई बेस यूआरएल", - "settings.admin.documents.ragTemplate.description": "", + "settings.admin.documents.ragTemplate.description": "प्राप्त संदर्भ डालते समय इस्तेमाल होने वाला प्रॉम्प्ट टेम्पलेट.", "settings.admin.documents.ragTemplate.label": "RAG टेम्पलेट", - "settings.admin.documents.reindex.label": "", - "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "", - "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "", - "settings.admin.documents.relevanceThreshold.description": "", - "settings.admin.documents.relevanceThreshold.label": "", - "settings.admin.documents.rerankingBatchSize.description": "", - "settings.admin.documents.rerankingBatchSize.label": "", - "settings.admin.documents.rerankingEngine.description": "", - "settings.admin.documents.rerankingEngine.label": "", - "settings.admin.documents.rerankingModel.description": "", - "settings.admin.documents.rerankingModel.label": "रीरैकिंग मोड", - "settings.admin.documents.resetUploadDirectory.description": "", - "settings.admin.documents.resetUploadDirectory.label": "", - "settings.admin.documents.resetVectorStorageKnowledge.description": "", - "settings.admin.documents.resetVectorStorageKnowledge.label": "", - "settings.admin.documents.sections.contentExtraction.title": "", - "settings.admin.documents.sections.dangerZone.title": "", - "settings.admin.documents.sections.embedding.title": "", - "settings.admin.documents.sections.files.title": "", - "settings.admin.documents.sections.integration.title": "", - "settings.admin.documents.sections.retrieval.title": "", - "settings.admin.documents.skipCache.description": "", - "settings.admin.documents.skipCache.label": "", - "settings.admin.documents.stripExistingOcr.description": "", - "settings.admin.documents.stripExistingOcr.label": "", - "settings.admin.documents.supportedMediaMimeTypes.description": "", - "settings.admin.documents.supportedMediaMimeTypes.label": "", - "settings.admin.documents.textSplitter.description": "", - "settings.admin.documents.textSplitter.label": "", - "settings.admin.documents.tikaServerUrl.description": "", - "settings.admin.documents.tikaServerUrl.label": "", - "settings.admin.documents.tikaServerVersion.description": "", - "settings.admin.documents.tikaServerVersion.label": "", - "settings.admin.documents.title": "", - "settings.admin.documents.tokenizerModel.description": "", - "settings.admin.documents.tokenizerModel.label": "", - "settings.admin.documents.topK.description": "", + "settings.admin.documents.reindex.label": "इंडेक्स दोबारा बनाएँ", + "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "मौजूदा ज्ञान फ़ाइलों, ज्ञान खोज और मेमोरी के वेक्टर दोबारा बनाएँ.", + "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "ज्ञान और मेमोरी वेक्टर के इंडेक्स दोबारा बनाएँ", + "settings.admin.documents.relevanceThreshold.description": "केवल इस मान के बराबर या अधिक स्कोर वाले दस्तावेज़ लौटाएँ.", + "settings.admin.documents.relevanceThreshold.label": "प्रासंगिकता की सीमा", + "settings.admin.documents.rerankingBatchSize.description": "हर रीरैंकिंग बैच में प्रोसेस होने वाले परिणामों की संख्या.", + "settings.admin.documents.rerankingBatchSize.label": "रीरैंकिंग बैच का आकार", + "settings.admin.documents.rerankingEngine.description": "हाइब्रिड खोज परिणामों की रीरैंकिंग करने वाला प्रदाता.", + "settings.admin.documents.rerankingEngine.label": "रीरैंकिंग इंजन", + "settings.admin.documents.rerankingModel.description": "प्राप्त परिणामों की रीरैंकिंग करने वाला मॉडल.", + "settings.admin.documents.rerankingModel.label": "रीरैंकिंग मॉडल", + "settings.admin.documents.resetUploadDirectory.description": "अपलोड डायरेक्टरी से अपलोड की गई फ़ाइलें हटाएँ.", + "settings.admin.documents.resetUploadDirectory.label": "अपलोड डायरेक्टरी रीसेट करें", + "settings.admin.documents.resetVectorStorageKnowledge.description": "वेक्टर स्टोरेज और ज्ञान इंडेक्स का डेटा साफ़ करें.", + "settings.admin.documents.resetVectorStorageKnowledge.label": "वेक्टर स्टोरेज/ज्ञान रीसेट करें", + "settings.admin.documents.sections.contentExtraction.title": "सामग्री निष्कर्षण", + "settings.admin.documents.sections.dangerZone.title": "जोखिम वाला क्षेत्र", + "settings.admin.documents.sections.embedding.title": "एंबेडिंग", + "settings.admin.documents.sections.files.title": "फ़ाइलें", + "settings.admin.documents.sections.integration.title": "इंटीग्रेशन", + "settings.admin.documents.sections.retrieval.title": "पुनर्प्राप्ति", + "settings.admin.documents.skipCache.description": "कैश किए गए Marker परिणाम छोड़ें और इन्फ़रेंस दोबारा चलाएँ.", + "settings.admin.documents.skipCache.label": "कैश छोड़ें", + "settings.admin.documents.stripExistingOcr.description": "OCR अनिवार्य करने का विकल्प बंद होने पर मौजूदा OCR टेक्स्ट हटाएँ और OCR दोबारा चलाएँ.", + "settings.admin.documents.stripExistingOcr.label": "मौजूदा OCR हटाएँ", + "settings.admin.documents.supportedMediaMimeTypes.description": "मीडिया अपलोड के MIME प्रकार जिन्हें सामग्री निष्कर्षण इंजन प्रोसेस कर सकता है.", + "settings.admin.documents.supportedMediaMimeTypes.label": "समर्थित मीडिया MIME प्रकार", + "settings.admin.documents.textSplitter.description": "चुनें कि इंडेक्स बनाने से पहले निकाले गए टेक्स्ट को कैसे विभाजित किया जाए.", + "settings.admin.documents.textSplitter.label": "टेक्स्ट विभाजक", + "settings.admin.documents.tikaServerUrl.description": "सामग्री निष्कर्षण के लिए Tika सर्वर एंडपॉइंट.", + "settings.admin.documents.tikaServerUrl.label": "Tika सर्वर URL", + "settings.admin.documents.tikaServerVersion.description": "Tika सर्वर API का संस्करण चुनें.", + "settings.admin.documents.tikaServerVersion.label": "Tika सर्वर संस्करण", + "settings.admin.documents.title": "दस्तावेज़", + "settings.admin.documents.tokenizerModel.description": "ट्रांसफ़ॉर्मर टोकन विभाजन के लिए टोकनाइज़र मॉडल.", + "settings.admin.documents.tokenizerModel.label": "टोकनाइज़र मॉडल", + "settings.admin.documents.topK.description": "मॉडल को लौटाए जाने वाले प्राप्त चंक की अधिकतम संख्या.", "settings.admin.documents.topK.label": "शीर्ष K", - "settings.admin.documents.topKReranker.description": "", - "settings.admin.documents.topKReranker.label": "", - "settings.admin.documents.updateEmbeddingModel.label": "", - "settings.admin.documents.useBase64.description": "", - "settings.admin.documents.useBase64.label": "", - "settings.admin.documents.useLlm.description": "", - "settings.admin.documents.useLlm.label": "", - "settings.admin.documents.version.description": "", + "settings.admin.documents.topKReranker.description": "रीरैंकर को भेजे जाने वाले हाइब्रिड परिणामों की अधिकतम संख्या.", + "settings.admin.documents.topKReranker.label": "रीरैंकर के शीर्ष K", + "settings.admin.documents.updateEmbeddingModel.label": "एंबेडिंग मॉडल अपडेट करें", + "settings.admin.documents.useBase64.description": "PDF को पहले अपलोड करने के बजाय base64 डेटा URL के रूप में भेजें.", + "settings.admin.documents.useBase64.label": "Base64 इस्तेमाल करें", + "settings.admin.documents.useLlm.description": "तालिकाओं, फ़ॉर्म, गणित और लेआउट की पहचान बेहतर बनाने के लिए LLM इस्तेमाल करें.", + "settings.admin.documents.useLlm.label": "LLM इस्तेमाल करें", + "settings.admin.documents.version.description": "Azure OpenAI API संस्करण.", "settings.admin.documents.version.label": "संस्करण", - "settings.admin.evaluations.addArenaModel.label": "", - "settings.admin.evaluations.arenaModels.description": "", - "settings.admin.evaluations.arenaModels.label": "", - "settings.admin.evaluations.sections.models.title": "सभी मॉडल", - "settings.admin.evaluations.title": "", - "settings.admin.general.addBanner.label": "", - "settings.admin.general.automations.description": "", - "settings.admin.general.automations.label": "", + "settings.admin.evaluations.addArenaModel.label": "एरीना मॉडल जोड़ें", + "settings.admin.evaluations.arenaModels.description": "यह सुविधा इस्तेमाल करने के लिए संदेश रेटिंग सक्षम होनी चाहिए", + "settings.admin.evaluations.arenaModels.label": "एरीना मॉडल", + "settings.admin.evaluations.sections.models.title": "मॉडल", + "settings.admin.evaluations.title": "मूल्यांकन", + "settings.admin.general.addBanner.label": "बैनर जोड़ें", + "settings.admin.general.automations.description": "उपयोगकर्ताओं को ऑटोमेशन बनाने और चलाने दें.", + "settings.admin.general.automations.label": "ऑटोमेशन", "settings.admin.general.banners.label": "बैनर", - "settings.admin.general.calendar.description": "", - "settings.admin.general.calendar.label": "", - "settings.admin.general.channels.description": "", - "settings.admin.general.channels.label": "", - "settings.admin.general.checkForUpdates.label": "अपडेट के लिए जाँच", - "settings.admin.general.communitySharing.description": "", - "settings.admin.general.communitySharing.label": "", - "settings.admin.general.events.events.label": "", - "settings.admin.general.events.webhooks.description": "", - "settings.admin.general.events.webhooks.label": "", - "settings.admin.general.folderMaxFileCount.description": "", - "settings.admin.general.folderMaxFileCount.label": "", - "settings.admin.general.folders.description": "", - "settings.admin.general.folders.label": "", - "settings.admin.general.help.description": "", + "settings.admin.general.calendar.description": "उपयोगकर्ताओं को कैलेंडर सुविधाओं की पहुँच दें.", + "settings.admin.general.calendar.label": "कैलेंडर", + "settings.admin.general.channels.description": "उपयोगकर्ताओं को साझा बातचीत के लिए चैनल इस्तेमाल करने दें.", + "settings.admin.general.channels.label": "चैनल", + "settings.admin.general.checkForUpdates.label": "अपडेट जाँचें", + "settings.admin.general.communitySharing.description": "उपयोगकर्ताओं को Open WebUI समुदाय के साथ चैट साझा करने दें.", + "settings.admin.general.communitySharing.label": "समुदाय में साझाकरण", + "settings.admin.general.events.events.label": "इवेंट", + "settings.admin.general.events.webhooks.description": "उत्पाद इवेंट बाहरी सेवाओं को JSON के रूप में भेजें. चैट गंतव्यों को पढ़ने योग्य संदेश मिलते हैं.", + "settings.admin.general.events.webhooks.label": "वेबहुक", + "settings.admin.general.folderMaxFileCount.description": "हर फ़ोल्डर में अनुमत फ़ाइलों की अधिकतम संख्या.", + "settings.admin.general.folderMaxFileCount.label": "फ़ोल्डर में अधिकतम फ़ाइल संख्या", + "settings.admin.general.folders.description": "उपयोगकर्ताओं को चैट फ़ोल्डर में व्यवस्थित करने दें.", + "settings.admin.general.folders.label": "फ़ोल्डर", + "settings.admin.general.help.description": "Open WebUI इस्तेमाल करना सीखें और समुदाय से सहायता पाएँ.", "settings.admin.general.help.label": "मदद", - "settings.admin.general.license.label": "", - "settings.admin.general.memories.description": "", - "settings.admin.general.memories.label": "", - "settings.admin.general.memorySystemContext.description": "", - "settings.admin.general.memorySystemContext.label": "", - "settings.admin.general.messageRating.description": "", - "settings.admin.general.messageRating.label": "", - "settings.admin.general.modelResponseMode.description": "", - "settings.admin.general.modelResponseMode.label": "", - "settings.admin.general.notes.description": "", - "settings.admin.general.notes.label": "", - "settings.admin.general.responseWatermark.description": "", - "settings.admin.general.responseWatermark.label": "", - "settings.admin.general.sections.features.title": "", - "settings.admin.general.sections.ui.title": "", + "settings.admin.general.license.label": "लाइसेंस", + "settings.admin.general.memories.description": "उपयोगकर्ताओं को अधिक व्यक्तिगत उत्तरों के लिए मेमोरी सहेजने दें.", + "settings.admin.general.memories.label": "मेमोरी", + "settings.admin.general.memorySystemContext.description": "सहेजी गई मेमोरी को सिस्टम संदर्भ में शामिल करें.", + "settings.admin.general.memorySystemContext.label": "मेमोरी सिस्टम संदर्भ", + "settings.admin.general.messageRating.description": "उपयोगकर्ताओं को सहायक के उत्तरों की रेटिंग देने दें.", + "settings.admin.general.messageRating.label": "संदेश रेटिंग", + "settings.admin.general.modelResponseMode.description": "चुनें कि चैनल के मूल स्तर के उल्लेखों पर मॉडल के उत्तर कहाँ पोस्ट किए जाएँ.", + "settings.admin.general.modelResponseMode.label": "मॉडल उत्तर मोड", + "settings.admin.general.notes.description": "उपयोगकर्ताओं को नोट बनाने और प्रबंधित करने दें.", + "settings.admin.general.notes.label": "नोट", + "settings.admin.general.responseWatermark.description": "कॉन्फ़िगर किए जाने पर सहायक के उत्तरों में वॉटरमार्क जोड़ें.", + "settings.admin.general.responseWatermark.label": "उत्तर का वॉटरमार्क", + "settings.admin.general.sections.features.title": "सुविधाएँ", + "settings.admin.general.sections.ui.title": "UI", "settings.admin.general.seeWhatSNew.label": "देखें, क्या नया है", "settings.admin.general.title": "सामान्य", - "settings.admin.general.translations.addTranslation.label": "", - "settings.admin.general.translations.uiTranslations.label": "", - "settings.admin.general.userStatus.description": "", - "settings.admin.general.userStatus.label": "", - "settings.admin.general.userWebhooks.description": "", - "settings.admin.general.userWebhooks.label": "", + "settings.admin.general.translations.addTranslation.label": "अनुवाद जोड़ें", + "settings.admin.general.translations.uiTranslations.label": "UI अनुवाद", + "settings.admin.general.userStatus.description": "ऐप में उपयोगकर्ता की स्थिति की जानकारी दिखाएँ.", + "settings.admin.general.userStatus.label": "उपयोगकर्ता की स्थिति", + "settings.admin.general.userWebhooks.description": "उपयोगकर्ताओं को अपने खाते से वेबहुक कॉन्फ़िगर करने दें.", + "settings.admin.general.userWebhooks.label": "उपयोगकर्ता वेबहुक", "settings.admin.general.version.label": "संस्करण", - "settings.admin.general.webuiUrl.description": "", - "settings.admin.general.webuiUrl.label": "", - "settings.admin.images.apiAuthString.description": "", - "settings.admin.images.apiAuthString.label": "", - "settings.admin.images.automatic1111BaseUrl.description": "", - "settings.admin.images.automatic1111BaseUrl.label": "", - "settings.admin.images.automatic1111Params.description": "", - "settings.admin.images.automatic1111Params.label": "", - "settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "", - "settings.admin.images.comfyuiApiKey.description": "", + "settings.admin.general.webuiUrl.description": "अपने WebUI का सार्वजनिक URL दर्ज करें. सूचनाओं में लिंक बनाने के लिए यह URL इस्तेमाल होगा.", + "settings.admin.general.webuiUrl.label": "WebUI URL", + "settings.admin.images.apiAuthString.description": "ज़रूरत होने पर --api-auth उपयोगकर्ता नाम और पासवर्ड दें.", + "settings.admin.images.apiAuthString.label": "API प्रमाणीकरण स्ट्रिंग", + "settings.admin.images.automatic1111BaseUrl.description": "`--api` फ़्लैग के साथ चल रहे stable-diffusion-webui सर्वर से कनेक्ट करें.", + "settings.admin.images.automatic1111BaseUrl.label": "बेस URL", + "settings.admin.images.automatic1111Params.description": "हर AUTOMATIC1111 अनुरोध के साथ अतिरिक्त JSON पैरामीटर भेजें.", + "settings.admin.images.automatic1111Params.label": "अतिरिक्त पैरामीटर", + "settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "workflow.json फ़ाइल अपलोड करने के लिए यहाँ क्लिक करें.", + "settings.admin.images.comfyuiApiKey.description": "अपने ComfyUI सर्वर की आवश्यकता होने पर API कुंजी इस्तेमाल करें.", "settings.admin.images.comfyuiApiKey.label": "एपीआई कुंजी", - "settings.admin.images.comfyuiBaseUrl.description": "", - "settings.admin.images.comfyuiBaseUrl.label": "", - "settings.admin.images.comfyuiComfyuiWorkflow.description": "", - "settings.admin.images.comfyuiComfyuiWorkflow.label": "", - "settings.admin.images.editingWorkflowNodes.description": "", - "settings.admin.images.editingWorkflowNodes.label": "", - "settings.admin.images.editWorkflowJsonContent.label": "", - "settings.admin.images.geminiEndpointMethod.description": "", - "settings.admin.images.geminiEndpointMethod.label": "", - "settings.admin.images.generationWorkflowNodes.description": "", - "settings.admin.images.generationWorkflowNodes.label": "", - "settings.admin.images.imageEdit.description": "", - "settings.admin.images.imageEdit.label": "", - "settings.admin.images.imageEditEngine.description": "", - "settings.admin.images.imageEditEngine.label": "", - "settings.admin.images.imageEditModel.label": "", - "settings.admin.images.imageEditSize.label": "", - "settings.admin.images.imageGeneration.description": "", - "settings.admin.images.imageGeneration.label": "", - "settings.admin.images.imageGenerationEngine.description": "", + "settings.admin.images.comfyuiBaseUrl.description": "जनरेशन के लिए इस्तेमाल होने वाले ComfyUI सर्वर से कनेक्ट करें.", + "settings.admin.images.comfyuiBaseUrl.label": "बेस URL", + "settings.admin.images.comfyuiComfyuiWorkflow.description": "ComfyUI से API फ़ॉर्मैट में निर्यात की गई workflow.json फ़ाइल अपलोड करें.", + "settings.admin.images.comfyuiComfyuiWorkflow.label": "ComfyUI वर्कफ़्लो", + "settings.admin.images.editingWorkflowNodes.description": "चित्र संपादन में इस्तेमाल होने वाले वर्कफ़्लो नोड इनपुट मैप करें.", + "settings.admin.images.editingWorkflowNodes.label": "ComfyUI वर्कफ़्लो नोड", + "settings.admin.images.editWorkflowJsonContent.label": "workflow.json की सामग्री संपादित करें", + "settings.admin.images.geminiEndpointMethod.description": "कॉल करने के लिए Gemini एंडपॉइंट विधि चुनें.", + "settings.admin.images.geminiEndpointMethod.label": "Gemini एंडपॉइंट विधि", + "settings.admin.images.generationWorkflowNodes.description": "चित्र जनरेशन में इस्तेमाल होने वाले वर्कफ़्लो नोड इनपुट मैप करें.", + "settings.admin.images.generationWorkflowNodes.label": "ComfyUI वर्कफ़्लो नोड", + "settings.admin.images.imageEdit.description": "उपयोगकर्ताओं को मौजूदा चित्र संपादित करने दें.", + "settings.admin.images.imageEdit.label": "चित्र संपादन", + "settings.admin.images.imageEditEngine.description": "चित्र संपादन के लिए प्रदाता चुनें.", + "settings.admin.images.imageEditEngine.label": "चित्र संपादन इंजन", + "settings.admin.images.imageEditModel.label": "मॉडल", + "settings.admin.images.imageEditSize.label": "चित्र का आकार", + "settings.admin.images.imageGeneration.description": "उपयोगकर्ताओं को प्रॉम्प्ट से चित्र जनरेट करने दें.", + "settings.admin.images.imageGeneration.label": "चित्र जनरेशन", + "settings.admin.images.imageGenerationEngine.description": "चित्र जनरेशन के लिए प्रदाता चुनें.", "settings.admin.images.imageGenerationEngine.label": "छवि निर्माण इंजन", - "settings.admin.images.imageGenerationModel.label": "", - "settings.admin.images.imagePromptGeneration.description": "", - "settings.admin.images.imagePromptGeneration.label": "", - "settings.admin.images.imagesEditComfyuiApiKey.description": "", + "settings.admin.images.imageGenerationModel.label": "मॉडल", + "settings.admin.images.imagePromptGeneration.description": "अनुरोध भेजने से पहले चित्र का प्रॉम्प्ट जनरेट करें.", + "settings.admin.images.imagePromptGeneration.label": "चित्र प्रॉम्प्ट जनरेशन", + "settings.admin.images.imagesEditComfyuiApiKey.description": "अपने ComfyUI सर्वर की आवश्यकता होने पर API कुंजी इस्तेमाल करें.", "settings.admin.images.imagesEditComfyuiApiKey.label": "एपीआई कुंजी", - "settings.admin.images.imagesEditComfyuiBaseUrl.description": "", - "settings.admin.images.imagesEditComfyuiBaseUrl.label": "", - "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "", + "settings.admin.images.imagesEditComfyuiBaseUrl.description": "चित्र संपादन के लिए इस्तेमाल होने वाले ComfyUI सर्वर से कनेक्ट करें.", + "settings.admin.images.imagesEditComfyuiBaseUrl.label": "बेस URL", + "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "बेस URL", "settings.admin.images.imagesEditGeminiApiKey.label": "एपीआई कुंजी", "settings.admin.images.imagesEditOpenaiApiBaseUrl.label": "एपीआई बेस यूआरएल", "settings.admin.images.imagesEditOpenaiApiKey.label": "एपीआई कुंजी", - "settings.admin.images.imagesEditOpenaiApiVersion.label": "", - "settings.admin.images.imagesGeminiApiBaseUrl.description": "", - "settings.admin.images.imagesGeminiApiBaseUrl.label": "", - "settings.admin.images.imagesGeminiApiKey.description": "", + "settings.admin.images.imagesEditOpenaiApiVersion.label": "API संस्करण", + "settings.admin.images.imagesGeminiApiBaseUrl.description": "Gemini के चित्र जनरेशन एंडपॉइंट को ओवरराइड करें.", + "settings.admin.images.imagesGeminiApiBaseUrl.label": "बेस URL", + "settings.admin.images.imagesGeminiApiKey.description": "चित्र जनरेशन के लिए Gemini API कुंजी इस्तेमाल करें.", "settings.admin.images.imagesGeminiApiKey.label": "एपीआई कुंजी", - "settings.admin.images.imageSize.label": "", + "settings.admin.images.imageSize.label": "चित्र का आकार", "settings.admin.images.imagesOpenaiApiBaseUrl.label": "एपीआई बेस यूआरएल", "settings.admin.images.imagesOpenaiApiKey.label": "एपीआई कुंजी", - "settings.admin.images.imagesOpenaiApiParams.description": "", - "settings.admin.images.imagesOpenaiApiParams.label": "", - "settings.admin.images.imagesOpenaiApiVersion.label": "", - "settings.admin.images.sections.createImage.title": "", - "settings.admin.images.sections.editImage.title": "", + "settings.admin.images.imagesOpenaiApiParams.description": "हर चित्र जनरेशन अनुरोध के साथ अतिरिक्त JSON पैरामीटर भेजें.", + "settings.admin.images.imagesOpenaiApiParams.label": "अतिरिक्त पैरामीटर", + "settings.admin.images.imagesOpenaiApiVersion.label": "API संस्करण", + "settings.admin.images.sections.createImage.title": "चित्र बनाएँ", + "settings.admin.images.sections.editImage.title": "चित्र संपादित करें", "settings.admin.images.serverConnectionVerified.label": "सर्वर कनेक्शन सत्यापित", - "settings.admin.images.steps.label": "", - "settings.admin.images.title": "", - "settings.admin.images.verifyConnection.label": "", - "settings.admin.integrations.addConnection.label": "", - "settings.admin.integrations.externalKnowledge.addConnection.label": "", - "settings.admin.integrations.externalKnowledge.title": "", - "settings.admin.integrations.externalToolServers.label": "", - "settings.admin.integrations.mcp.label": "", - "settings.admin.integrations.openApi.label": "", - "settings.admin.integrations.openTerminal.label": "", - "settings.admin.integrations.sections.knowledge.title": "", - "settings.admin.integrations.sections.terminal.title": "", - "settings.admin.integrations.sections.tools.title": "", - "settings.admin.integrations.title": "", - "settings.admin.interface.autocompleteGeneration.description": "", - "settings.admin.interface.autocompleteGeneration.label": "", - "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "", - "settings.admin.interface.autocompleteGenerationInputMaxLength.label": "", - "settings.admin.interface.autocompleteGenerationPrompt.description": "", - "settings.admin.interface.autocompleteGenerationPrompt.label": "", - "settings.admin.interface.availableVariables.label": "", - "settings.admin.interface.contextCompaction.description": "", - "settings.admin.interface.contextCompaction.label": "", - "settings.admin.interface.contextCompactionModel.description": "", - "settings.admin.interface.contextCompactionModel.label": "", - "settings.admin.interface.contextCompactionPrompt.description": "", - "settings.admin.interface.contextCompactionPrompt.label": "", - "settings.admin.interface.externalTaskModel.label": "", - "settings.admin.interface.followUpGeneration.description": "", - "settings.admin.interface.followUpGeneration.label": "", - "settings.admin.interface.followUpGenerationPrompt.description": "", - "settings.admin.interface.followUpGenerationPrompt.label": "", - "settings.admin.interface.imagePromptGenerationPrompt.description": "", - "settings.admin.interface.imagePromptGenerationPrompt.label": "", - "settings.admin.interface.localTaskModel.label": "", - "settings.admin.interface.promptTemplate.description": "", - "settings.admin.interface.promptTemplate.label": "", - "settings.admin.interface.queryGenerationPrompt.description": "", - "settings.admin.interface.queryGenerationPrompt.label": "", - "settings.admin.interface.retainedMessages.description": "", - "settings.admin.interface.retainedMessages.label": "", - "settings.admin.interface.retrievalQueryGeneration.description": "", - "settings.admin.interface.retrievalQueryGeneration.label": "", - "settings.admin.interface.sections.chat.title": "चैट करें", - "settings.admin.interface.sections.generation.title": "", - "settings.admin.interface.sections.tasks.title": "", - "settings.admin.interface.tagsGeneration.description": "", - "settings.admin.interface.tagsGeneration.label": "", - "settings.admin.interface.tagsGenerationPrompt.description": "", - "settings.admin.interface.tagsGenerationPrompt.label": "", - "settings.admin.interface.taskModel.description": "", - "settings.admin.interface.taskModel.label": "", - "settings.admin.interface.taskModelParameters.label": "", + "settings.admin.images.steps.label": "चरण", + "settings.admin.images.title": "चित्र", + "settings.admin.images.verifyConnection.label": "कनेक्शन सत्यापित करें", + "settings.admin.integrations.addConnection.label": "कनेक्शन जोड़ें", + "settings.admin.integrations.externalKnowledge.addConnection.label": "कनेक्शन जोड़ें", + "settings.admin.integrations.externalKnowledge.title": "बाहरी ज्ञान स्रोत", + "settings.admin.integrations.externalToolServers.label": "बाहरी टूल सर्वर", + "settings.admin.integrations.mcp.label": "MCP", + "settings.admin.integrations.openApi.label": "OpenAPI", + "settings.admin.integrations.openTerminal.label": "Open Terminal", + "settings.admin.integrations.sections.knowledge.title": "ज्ञान", + "settings.admin.integrations.sections.terminal.title": "टर्मिनल", + "settings.admin.integrations.sections.tools.title": "टूल", + "settings.admin.integrations.title": "इंटीग्रेशन", + "settings.admin.interface.autocompleteGeneration.description": "उपयोगकर्ताओं के चैट संदेश टाइप करते समय उन्हें पूरा करने के सुझाव दें.", + "settings.admin.interface.autocompleteGeneration.label": "ऑटोकम्प्लीट जनरेशन", + "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "सुझाव जनरेट करने के लिए भेजे जाने वाले ड्राफ़्ट टेक्स्ट की मात्रा सीमित करें.", + "settings.admin.interface.autocompleteGenerationInputMaxLength.label": "ऑटोकम्प्लीट जनरेशन इनपुट की अधिकतम लंबाई", + "settings.admin.interface.autocompleteGenerationPrompt.description": "उपयोगकर्ताओं के संदेश टाइप करते समय इनलाइन टेक्स्ट पूरा करने का मार्गदर्शन करता है.", + "settings.admin.interface.autocompleteGenerationPrompt.label": "ऑटोकम्प्लीट जनरेशन प्रॉम्प्ट", + "settings.admin.interface.availableVariables.label": "उपलब्ध वेरिएबल", + "settings.admin.interface.contextCompaction.description": "बातचीत का संदर्भ बड़ा होने पर पुराने चैट इतिहास का सारांश बनाएँ.", + "settings.admin.interface.contextCompaction.label": "संदर्भ संक्षेपण", + "settings.admin.interface.contextCompactionModel.description": "संदर्भ संक्षेपण के सारांशों के लिए विशेष मॉडल चुनें. वर्तमान मॉडल सक्रिय चैट मॉडल का अनुसरण करता है.", + "settings.admin.interface.contextCompactionModel.label": "संदर्भ संक्षेपण मॉडल", + "settings.admin.interface.contextCompactionPrompt.description": "नियंत्रित करता है कि पुराने संदेशों को लगातार अपडेट होने वाले सारांश में कैसे लिखा जाए.", + "settings.admin.interface.contextCompactionPrompt.label": "संदर्भ संक्षेपण प्रॉम्प्ट", + "settings.admin.interface.externalTaskModel.label": "बाहरी कार्य मॉडल", + "settings.admin.interface.followUpGeneration.description": "सहायक के उत्तरों के बाद अगले प्रश्नों के सुझाव दिखाएँ.", + "settings.admin.interface.followUpGeneration.label": "फ़ॉलो-अप जनरेशन", + "settings.admin.interface.followUpGenerationPrompt.description": "सहायक के उत्तर के बाद दिखाए जाने वाले सुझावों का मार्गदर्शन करता है.", + "settings.admin.interface.followUpGenerationPrompt.label": "फ़ॉलो-अप जनरेशन प्रॉम्प्ट", + "settings.admin.interface.imagePromptGenerationPrompt.description": "उपयोगकर्ता के आशय को चित्र जनरेशन प्रॉम्प्ट में दोबारा लिखता है.", + "settings.admin.interface.imagePromptGenerationPrompt.label": "चित्र प्रॉम्प्ट जनरेशन का प्रॉम्प्ट", + "settings.admin.interface.localTaskModel.label": "स्थानीय कार्य मॉडल", + "settings.admin.interface.promptTemplate.description": "वॉइस बातचीत के दौरान व्यवहार निर्धारित करता है.", + "settings.admin.interface.promptTemplate.label": "प्रॉम्प्ट टेम्पलेट", + "settings.admin.interface.queryGenerationPrompt.description": "पुनर्प्राप्ति और वेब खोज क्वेरी को दोबारा लिखने के लिए साझा प्रॉम्प्ट.", + "settings.admin.interface.queryGenerationPrompt.label": "क्वेरी जनरेशन प्रॉम्प्ट", + "settings.admin.interface.retainedMessages.description": "पुराने संदेशों का सारांश बनने के बाद बनाए रखने वाले हालिया संदेशों का प्रतिशत.", + "settings.admin.interface.retainedMessages.label": "बनाए रखे गए संदेश", + "settings.admin.interface.retrievalQueryGeneration.description": "ज्ञान पुनर्प्राप्ति के लिए उपयोगकर्ता के अनुरोध दोबारा लिखें.", + "settings.admin.interface.retrievalQueryGeneration.label": "पुनर्प्राप्ति क्वेरी जनरेशन", + "settings.admin.interface.sections.chat.title": "चैट", + "settings.admin.interface.sections.generation.title": "जनरेशन", + "settings.admin.interface.sections.tasks.title": "कार्य", + "settings.admin.interface.tagsGeneration.description": "बातचीत की सामग्री से चैट टैग बनाएँ.", + "settings.admin.interface.tagsGeneration.label": "टैग जनरेशन", + "settings.admin.interface.tagsGenerationPrompt.description": "नियंत्रित करता है कि चैट टैग कैसे निर्धारित किए जाएँ.", + "settings.admin.interface.tagsGenerationPrompt.label": "टैग जनरेशन प्रॉम्प्ट", + "settings.admin.interface.taskModel.description": "बैकग्राउंड कार्यों के लिए वैकल्पिक मॉडल चुनें. वर्तमान मॉडल सक्रिय चैट मॉडल का अनुसरण करता है.", + "settings.admin.interface.taskModel.label": "कार्य मॉडल", + "settings.admin.interface.taskModelParameters.label": "कार्य मॉडल पैरामीटर", "settings.admin.interface.title": "इंटरफेस", - "settings.admin.interface.titleGeneration.description": "", - "settings.admin.interface.titleGeneration.label": "", - "settings.admin.interface.titleGenerationPrompt.description": "", + "settings.admin.interface.titleGeneration.description": "नई चैट के नाम अपने-आप बनाने दें.", + "settings.admin.interface.titleGeneration.label": "शीर्षक जनरेशन", + "settings.admin.interface.titleGenerationPrompt.description": "हर चैट के लिए जनरेट होने वाला छोटा लेबल निर्धारित करता है.", "settings.admin.interface.titleGenerationPrompt.label": "शीर्षक जनरेशन प्रॉम्प्ट", - "settings.admin.interface.tokenCap.description": "", - "settings.admin.interface.tokenCap.label": "", - "settings.admin.interface.tokenThreshold.description": "", - "settings.admin.interface.tokenThreshold.label": "", - "settings.admin.interface.toolPermissions.description": "", - "settings.admin.interface.toolPermissions.label": "", - "settings.admin.interface.toolsFunctionCallingPrompt.description": "", - "settings.admin.interface.toolsFunctionCallingPrompt.label": "", - "settings.admin.interface.voiceModePrompt.description": "", - "settings.admin.interface.voiceModePrompt.label": "", - "settings.admin.interface.webSearchQueryGeneration.description": "", - "settings.admin.interface.webSearchQueryGeneration.label": "", - "settings.admin.models.builtinTools.automations.description": "", - "settings.admin.models.builtinTools.automations.label": "", - "settings.admin.models.builtinTools.calendar.description": "", - "settings.admin.models.builtinTools.calendar.label": "", - "settings.admin.models.builtinTools.channels.description": "", - "settings.admin.models.builtinTools.channels.label": "", - "settings.admin.models.builtinTools.chats.description": "", - "settings.admin.models.builtinTools.chats.label": "", - "settings.admin.models.builtinTools.codeInterpreter.description": "", - "settings.admin.models.builtinTools.codeInterpreter.label": "", - "settings.admin.models.builtinTools.files.description": "", - "settings.admin.models.builtinTools.files.label": "", - "settings.admin.models.builtinTools.imageGeneration.description": "", - "settings.admin.models.builtinTools.imageGeneration.label": "", - "settings.admin.models.builtinTools.knowledge.description": "", - "settings.admin.models.builtinTools.knowledge.label": "", - "settings.admin.models.builtinTools.memory.description": "", + "settings.admin.interface.tokenCap.description": "मॉडल-विशिष्ट संदर्भ संक्षेपण सीमाएँ इस टोकन सीमा से अधिक नहीं हो सकतीं.", + "settings.admin.interface.tokenCap.label": "अधिकतम टोकन सीमा", + "settings.admin.interface.tokenThreshold.description": "अनुमानित संदर्भ इस टोकन सीमा से अधिक होने पर पुराने संदेशों का सारांश बनता है.", + "settings.admin.interface.tokenThreshold.label": "टोकन सीमा", + "settings.admin.interface.toolPermissions.description": "चैट इनपुट मेन्यू में पूर्ण पहुँच और मंज़ूरी माँगें दिखाएँ.", + "settings.admin.interface.toolPermissions.label": "टूल अनुमतियाँ", + "settings.admin.interface.toolsFunctionCallingPrompt.description": "सहायक के टूल और फ़ंक्शन कॉल फ़ॉर्मैट करने का मार्गदर्शन करता है.", + "settings.admin.interface.toolsFunctionCallingPrompt.label": "टूल फ़ंक्शन कॉलिंग प्रॉम्प्ट", + "settings.admin.interface.voiceModePrompt.description": "वॉइस मोड सक्रिय होने पर वॉइस-विशिष्ट निर्देश लागू करें.", + "settings.admin.interface.voiceModePrompt.label": "वॉइस मोड प्रॉम्प्ट", + "settings.admin.interface.webSearchQueryGeneration.description": "उपयोगकर्ता के अनुरोधों को वेब खोज क्वेरी के रूप में दोबारा लिखें.", + "settings.admin.interface.webSearchQueryGeneration.label": "वेब खोज क्वेरी जनरेशन", + "settings.admin.models.builtinTools.automations.description": "शेड्यूल किए गए ऑटोमेशन बनाएँ और प्रबंधित करें", + "settings.admin.models.builtinTools.automations.label": "ऑटोमेशन", + "settings.admin.models.builtinTools.calendar.description": "कैलेंडर सूचीबद्ध करें, कैलेंडर इवेंट खोजें, बनाएँ, अपडेट करें और हटाएँ", + "settings.admin.models.builtinTools.calendar.label": "कैलेंडर", + "settings.admin.models.builtinTools.channels.description": "चैनल और चैनल संदेश खोजें", + "settings.admin.models.builtinTools.channels.label": "चैनल", + "settings.admin.models.builtinTools.chats.description": "उपयोगकर्ता का चैट इतिहास खोजें और देखें", + "settings.admin.models.builtinTools.chats.label": "चैट इतिहास", + "settings.admin.models.builtinTools.codeInterpreter.description": "कोड चलाएँ", + "settings.admin.models.builtinTools.codeInterpreter.label": "कोड इंटरप्रेटर", + "settings.admin.models.builtinTools.files.description": "मौजूदा चैट से जुड़ी फ़ाइलें सूचीबद्ध करें, खोजें और पढ़ें", + "settings.admin.models.builtinTools.files.label": "फ़ाइलें", + "settings.admin.models.builtinTools.imageGeneration.description": "चित्र जनरेट और संपादित करें", + "settings.admin.models.builtinTools.imageGeneration.label": "चित्र जनरेशन", + "settings.admin.models.builtinTools.knowledge.description": "ज्ञान आधार ब्राउज़ करें और उनमें क्वेरी करें", + "settings.admin.models.builtinTools.knowledge.label": "ज्ञान आधार", + "settings.admin.models.builtinTools.memory.description": "उपयोगकर्ता की मेमोरी खोजें और प्रबंधित करें", "settings.admin.models.builtinTools.memory.label": "मेमोरी", - "settings.admin.models.builtinTools.notes.description": "", - "settings.admin.models.builtinTools.notes.label": "", - "settings.admin.models.builtinTools.notifications.description": "", + "settings.admin.models.builtinTools.notes.description": "उपयोगकर्ता के नोट खोजें, देखें और प्रबंधित करें", + "settings.admin.models.builtinTools.notes.label": "नोट", + "settings.admin.models.builtinTools.notifications.description": "कॉन्फ़िगर किए गए वेबहुक गंतव्यों को सूचनाएँ भेजें", "settings.admin.models.builtinTools.notifications.label": "सूचनाएं", - "settings.admin.models.builtinTools.subagents.description": "", - "settings.admin.models.builtinTools.subagents.label": "", - "settings.admin.models.builtinTools.tasks.description": "", - "settings.admin.models.builtinTools.tasks.label": "", - "settings.admin.models.builtinTools.time.description": "", - "settings.admin.models.builtinTools.time.label": "", - "settings.admin.models.builtinTools.title": "", - "settings.admin.models.builtinTools.userInput.description": "", - "settings.admin.models.builtinTools.userInput.label": "", - "settings.admin.models.builtinTools.webSearch.description": "", + "settings.admin.models.builtinTools.subagents.description": "विशिष्ट कार्य समानांतर उप-एजेंट को सौंपें", + "settings.admin.models.builtinTools.subagents.label": "उप-एजेंट", + "settings.admin.models.builtinTools.tasks.description": "जटिल अनुरोधों को ट्रैक किए जा सकने वाले चरणों में बाँटें", + "settings.admin.models.builtinTools.tasks.label": "कार्य प्रबंधन", + "settings.admin.models.builtinTools.time.description": "वर्तमान समय पाएँ और दिनांक/समय की गणनाएँ करें", + "settings.admin.models.builtinTools.time.label": "समय और गणना", + "settings.admin.models.builtinTools.title": "अंतर्निहित टूल", + "settings.admin.models.builtinTools.userInput.description": "उपयोगकर्ता से स्पष्टीकरण माँगने के लिए उत्तर रोकें", + "settings.admin.models.builtinTools.userInput.label": "उपयोगकर्ता से पूछें", + "settings.admin.models.builtinTools.webSearch.description": "वेब पर खोजें और URL प्राप्त करें", "settings.admin.models.builtinTools.webSearch.label": "वेब खोज", - "settings.admin.models.capabilities.builtinTools.description": "", - "settings.admin.models.capabilities.builtinTools.label": "", - "settings.admin.models.capabilities.citations.description": "", - "settings.admin.models.capabilities.citations.label": "", - "settings.admin.models.capabilities.codeInterpreter.description": "", - "settings.admin.models.capabilities.codeInterpreter.label": "", - "settings.admin.models.capabilities.fileContext.description": "", - "settings.admin.models.capabilities.fileContext.label": "", - "settings.admin.models.capabilities.fileUpload.description": "", - "settings.admin.models.capabilities.fileUpload.label": "", - "settings.admin.models.capabilities.imageGeneration.description": "", - "settings.admin.models.capabilities.imageGeneration.label": "", - "settings.admin.models.capabilities.memory.description": "", + "settings.admin.models.capabilities.builtinTools.description": "नेटिव फ़ंक्शन कॉलिंग मोड में सिस्टम टूल अपने-आप जोड़ें (जैसे, टाइमस्टैम्प, मेमोरी, चैट इतिहास, नोट आदि.)", + "settings.admin.models.capabilities.builtinTools.label": "अंतर्निहित टूल", + "settings.admin.models.capabilities.citations.description": "उत्तर में उद्धरण दिखाता है", + "settings.admin.models.capabilities.citations.label": "उद्धरण", + "settings.admin.models.capabilities.codeInterpreter.description": "मॉडल कोड चला सकता है और गणनाएँ कर सकता है", + "settings.admin.models.capabilities.codeInterpreter.label": "कोड इंटरप्रेटर", + "settings.admin.models.capabilities.fileContext.description": "फ़ाइल की सामग्री बातचीत के संदर्भ में डालें", + "settings.admin.models.capabilities.fileContext.label": "फ़ाइल संदर्भ", + "settings.admin.models.capabilities.fileUpload.description": "मॉडल फ़ाइल इनपुट स्वीकार करता है", + "settings.admin.models.capabilities.fileUpload.label": "फ़ाइल अपलोड", + "settings.admin.models.capabilities.imageGeneration.description": "मॉडल टेक्स्ट प्रॉम्प्ट के आधार पर चित्र जनरेट कर सकता है", + "settings.admin.models.capabilities.imageGeneration.label": "चित्र जनरेशन", + "settings.admin.models.capabilities.memory.description": "सहेजी गई मेमोरी बातचीत के संदर्भ में डालें", "settings.admin.models.capabilities.memory.label": "मेमोरी", - "settings.admin.models.capabilities.statusUpdates.description": "", - "settings.admin.models.capabilities.statusUpdates.label": "", - "settings.admin.models.capabilities.terminal.description": "", - "settings.admin.models.capabilities.terminal.label": "", - "settings.admin.models.capabilities.title": "क्षमताओं", - "settings.admin.models.capabilities.usage.description": "", - "settings.admin.models.capabilities.usage.label": "", - "settings.admin.models.capabilities.vision.description": "", - "settings.admin.models.capabilities.vision.label": "", - "settings.admin.models.capabilities.webSearch.description": "", + "settings.admin.models.capabilities.statusUpdates.description": "उत्तर में स्थिति के अपडेट (जैसे, वेब खोज की प्रगति) दिखाता है", + "settings.admin.models.capabilities.statusUpdates.label": "स्थिति के अपडेट", + "settings.admin.models.capabilities.terminal.description": "मॉडल कमांड चलाने और फ़ाइलें प्रबंधित करने के लिए Open Terminal इस्तेमाल कर सकता है", + "settings.admin.models.capabilities.terminal.label": "टर्मिनल", + "settings.admin.models.capabilities.title": "क्षमताएँ", + "settings.admin.models.capabilities.usage.description": "अनुरोध में `stream_options: { include_usage: true }` भेजता है.\nइसे सेट करने पर समर्थित प्रदाता उत्तर में टोकन उपयोग की जानकारी लौटाएँगे.", + "settings.admin.models.capabilities.usage.label": "उपयोग", + "settings.admin.models.capabilities.vision.description": "मॉडल चित्र इनपुट स्वीकार करता है", + "settings.admin.models.capabilities.vision.label": "दृष्टि", + "settings.admin.models.capabilities.webSearch.description": "मॉडल जानकारी के लिए वेब पर खोज कर सकता है", "settings.admin.models.capabilities.webSearch.label": "वेब खोज", - "settings.admin.models.defaultFeatures.codeInterpreter.description": "", - "settings.admin.models.defaultFeatures.codeInterpreter.label": "", - "settings.admin.models.defaultFeatures.imageGeneration.description": "", - "settings.admin.models.defaultFeatures.imageGeneration.label": "", - "settings.admin.models.defaultFeatures.title": "", - "settings.admin.models.defaultFeatures.webSearch.description": "", + "settings.admin.models.defaultFeatures.codeInterpreter.description": "मॉडल कोड चला सकता है और गणनाएँ कर सकता है", + "settings.admin.models.defaultFeatures.codeInterpreter.label": "कोड इंटरप्रेटर", + "settings.admin.models.defaultFeatures.imageGeneration.description": "मॉडल टेक्स्ट प्रॉम्प्ट के आधार पर चित्र जनरेट कर सकता है", + "settings.admin.models.defaultFeatures.imageGeneration.label": "चित्र जनरेशन", + "settings.admin.models.defaultFeatures.title": "डिफ़ॉल्ट सुविधाएँ", + "settings.admin.models.defaultFeatures.webSearch.description": "मॉडल जानकारी के लिए वेब पर खोज कर सकता है", "settings.admin.models.defaultFeatures.webSearch.label": "वेब खोज", - "settings.admin.models.defaults.modelCapabilities.label": "", - "settings.admin.models.defaults.modelDefaults.label": "", - "settings.admin.models.defaults.modelParameters.label": "", - "settings.admin.models.defaults.promptSuggestions.label": "", - "settings.admin.models.disableAllModels.label": "", - "settings.admin.models.enableAllModels.label": "", + "settings.admin.models.defaults.modelCapabilities.label": "मॉडल क्षमताएँ", + "settings.admin.models.defaults.modelDefaults.label": "मॉडल डिफ़ॉल्ट", + "settings.admin.models.defaults.modelParameters.label": "मॉडल पैरामीटर", + "settings.admin.models.defaults.promptSuggestions.label": "प्रॉम्प्ट सुझाव", + "settings.admin.models.disableAllModels.label": "सभी अक्षम करें", + "settings.admin.models.enableAllModels.label": "सभी सक्षम करें", "settings.admin.models.exportModels.label": "निर्यात करें", - "settings.admin.models.hideAllModels.label": "", - "settings.admin.models.importModels.label": "", - "settings.admin.models.manageModels.label": "", - "settings.admin.models.resetModels.label": "", - "settings.admin.models.showAllModels.label": "", - "settings.admin.models.title": "सभी मॉडल", - "settings.admin.pipelines.githubUrl.label": "", - "settings.admin.pipelines.install.label": "", - "settings.admin.pipelines.installing.label": "", - "settings.admin.pipelines.pipeline.description": "", - "settings.admin.pipelines.pipeline.label": "", - "settings.admin.pipelines.pipelineUrl.description": "", - "settings.admin.pipelines.pipelineUrl.label": "", - "settings.admin.pipelines.sections.pipelines.title": "", + "settings.admin.models.hideAllModels.label": "सभी छिपाएँ", + "settings.admin.models.importModels.label": "आयात करें", + "settings.admin.models.manageModels.label": "प्रबंधित करें", + "settings.admin.models.resetModels.label": "रीसेट करें", + "settings.admin.models.showAllModels.label": "सभी दिखाएँ", + "settings.admin.models.title": "मॉडल", + "settings.admin.pipelines.githubUrl.label": "GitHub URL", + "settings.admin.pipelines.install.label": "इंस्टॉल करें", + "settings.admin.pipelines.installing.label": "इंस्टॉल हो रहा है", + "settings.admin.pipelines.pipeline.description": "कॉन्फ़िगर करने या हटाने के लिए इंस्टॉल की गई पाइपलाइन चुनें.", + "settings.admin.pipelines.pipeline.label": "पाइपलाइन", + "settings.admin.pipelines.pipelineUrl.description": "प्रबंधित करने के लिए Pipelines सर्वर चुनें.", + "settings.admin.pipelines.pipelineUrl.label": "पाइपलाइन URL", + "settings.admin.pipelines.sections.pipelines.title": "Pipelines", "settings.admin.pipelines.sections.source.title": "स्रोत", - "settings.admin.pipelines.sections.valves.title": "", - "settings.admin.pipelines.selectAPyFile.label": "", - "settings.admin.pipelines.title": "", - "settings.admin.pipelines.uploadPipeline.description": "", - "settings.admin.pipelines.uploadPipeline.label": "", - "settings.admin.subagents.enableBackgroundSubAgents.description": "", - "settings.admin.subagents.enableBackgroundSubAgents.label": "", - "settings.admin.subagents.enableSubAgents.label": "", - "settings.admin.subagents.maxBackground.label": "", - "settings.admin.subagents.maxConcurrent.label": "", - "settings.admin.subagents.maxIterations.label": "", - "settings.admin.subagents.maxOutput.label": "", - "settings.admin.subagents.systemPrompt.description": "", - "settings.admin.subagents.systemPrompt.label": "", - "settings.admin.subagents.title": "", - "settings.admin.web.bingSearchV7Endpoint.label": "", - "settings.admin.web.bingSearchV7SubscriptionKey.label": "", - "settings.admin.web.bochaSearchApiKey.label": "", - "settings.admin.web.braveSearchApiKey.label": "Brave सर्च एपीआई कुंजी", - "settings.admin.web.bypassEmbeddingAndRetrieval.description": "", - "settings.admin.web.bypassEmbeddingAndRetrieval.label": "", - "settings.admin.web.bypassWebLoader.description": "", - "settings.admin.web.bypassWebLoader.label": "", - "settings.admin.web.concurrentRequests.description": "", + "settings.admin.pipelines.sections.valves.title": "वाल्व", + "settings.admin.pipelines.selectAPyFile.label": ".py फ़ाइल चुनें", + "settings.admin.pipelines.title": "Pipelines", + "settings.admin.pipelines.uploadPipeline.description": "चुने गए सर्वर पर स्थानीय Python पाइपलाइन फ़ाइल अपलोड करें.", + "settings.admin.pipelines.uploadPipeline.label": "पाइपलाइन अपलोड करें", + "settings.admin.subagents.enableBackgroundSubAgents.description": "मुख्य चैट जारी रहने के दौरान सौंपे गए उप-एजेंट को चलते रहने दें.", + "settings.admin.subagents.enableBackgroundSubAgents.label": "बैकग्राउंड उप-एजेंट सक्षम करें", + "settings.admin.subagents.enableSubAgents.label": "उप-एजेंट सक्षम करें", + "settings.admin.subagents.maxBackground.label": "बैकग्राउंड में अधिकतम", + "settings.admin.subagents.maxConcurrent.label": "एक साथ अधिकतम", + "settings.admin.subagents.maxIterations.label": "अधिकतम पुनरावृत्तियाँ", + "settings.admin.subagents.maxOutput.label": "अधिकतम आउटपुट", + "settings.admin.subagents.systemPrompt.description": "अंतर्निहित डिफ़ॉल्ट के लिए खाली छोड़ें.", + "settings.admin.subagents.systemPrompt.label": "सिस्टम प्रॉम्प्ट", + "settings.admin.subagents.title": "उप-एजेंट", + "settings.admin.web.bingSearchV7Endpoint.label": "Bing Search V7 एंडपॉइंट", + "settings.admin.web.bingSearchV7SubscriptionKey.label": "Bing Search V7 सदस्यता कुंजी", + "settings.admin.web.bochaSearchApiKey.label": "Bocha Search API कुंजी", + "settings.admin.web.braveSearchApiKey.label": "Brave Search API कुंजी", + "settings.admin.web.bypassEmbeddingAndRetrieval.description": "व्यापक प्रोसेसिंग के लिए पूरी सामग्री संदर्भ के रूप में डालें.", + "settings.admin.web.bypassEmbeddingAndRetrieval.label": "एंबेडिंग और पुनर्प्राप्ति छोड़ें", + "settings.admin.web.bypassWebLoader.description": "पेज की सामग्री प्राप्त किए बिना खोज परिणाम इस्तेमाल करें.", + "settings.admin.web.bypassWebLoader.label": "वेब लोडर छोड़ें", + "settings.admin.web.concurrentRequests.description": "समानांतर वेब लोडर अनुरोध सीमित करें.", "settings.admin.web.concurrentRequests.label": "समवर्ती अनुरोध", - "settings.admin.web.contextTokens.label": "", - "settings.admin.web.ddgsBackend.label": "", - "settings.admin.web.domainFilterList.description": "", - "settings.admin.web.domainFilterList.label": "", - "settings.admin.web.exaApiKey.label": "", - "settings.admin.web.externalWebLoaderApiKey.label": "", - "settings.admin.web.externalWebLoaderUrl.label": "", - "settings.admin.web.externalWebSearchApiKey.label": "", - "settings.admin.web.externalWebSearchUrl.label": "", - "settings.admin.web.fetchUrlContentLengthLimit.description": "", - "settings.admin.web.fetchUrlContentLengthLimit.label": "", - "settings.admin.web.firecrawlApiBaseUrl.label": "", - "settings.admin.web.firecrawlApiKey.label": "", - "settings.admin.web.firecrawlTimeoutS.label": "", + "settings.admin.web.contextTokens.label": "संदर्भ टोकन", + "settings.admin.web.ddgsBackend.label": "DDGS बैकएंड", + "settings.admin.web.domainFilterList.description": "कॉमा से अलग की गई सूची से डोमेन सीमित करें या बाहर रखें.", + "settings.admin.web.domainFilterList.label": "डोमेन फ़िल्टर सूची", + "settings.admin.web.exaApiKey.label": "Exa API कुंजी", + "settings.admin.web.externalWebLoaderApiKey.label": "बाहरी वेब लोडर API कुंजी", + "settings.admin.web.externalWebLoaderUrl.label": "बाहरी वेब लोडर URL", + "settings.admin.web.externalWebSearchApiKey.label": "बाहरी वेब खोज API कुंजी", + "settings.admin.web.externalWebSearchUrl.label": "बाहरी वेब खोज URL", + "settings.admin.web.fetchUrlContentLengthLimit.description": "प्राप्त URL से लौटाए जाने वाले अधिकतम अक्षर. कोई सीमा न रखने के लिए खाली छोड़ें.", + "settings.admin.web.fetchUrlContentLengthLimit.label": "URL से प्राप्त सामग्री की लंबाई सीमा", + "settings.admin.web.firecrawlApiBaseUrl.label": "Firecrawl API बेस URL", + "settings.admin.web.firecrawlApiKey.label": "Firecrawl API कुंजी", + "settings.admin.web.firecrawlTimeoutS.label": "Firecrawl टाइमआउट (s)", "settings.admin.web.googlePseApiKey.label": "Google PSE API कुंजी", "settings.admin.web.googlePseEngineId.label": "Google PSE इंजन आईडी", - "settings.admin.web.jinaApiBaseUrl.label": "", - "settings.admin.web.jinaApiKey.label": "", - "settings.admin.web.kagiSearchApiKey.label": "", + "settings.admin.web.jinaApiBaseUrl.label": "Jina API बेस URL", + "settings.admin.web.jinaApiKey.label": "Jina API कुंजी", + "settings.admin.web.kagiSearchApiKey.label": "Kagi Search API कुंजी", "settings.admin.web.language.label": "भाषा", - "settings.admin.web.linkupApiKey.label": "", - "settings.admin.web.maxContentLength.description": "", - "settings.admin.web.maxContentLength.label": "", - "settings.admin.web.microsoftWebIqApiBaseUrl.label": "", - "settings.admin.web.microsoftWebIqApiKey.label": "", - "settings.admin.web.mojeekSearchApiKey.label": "", - "settings.admin.web.ollamaCloudApiKey.label": "", - "settings.admin.web.openserpUrl.label": "", - "settings.admin.web.parameters.label": "", - "settings.admin.web.perplexityApiKey.label": "", - "settings.admin.web.perplexityModel.label": "", - "settings.admin.web.perplexitySearchApiUrl.label": "", - "settings.admin.web.perplexitySearchContextUsage.label": "", - "settings.admin.web.playwrightTimeoutMs.label": "", - "settings.admin.web.playwrightWebsocketUrl.label": "", - "settings.admin.web.searchapiApiKey.label": "", - "settings.admin.web.searchapiEngine.label": "", - "settings.admin.web.searchLimits.description": "", - "settings.admin.web.searchLimits.label": "", - "settings.admin.web.searchResultCount.description": "", + "settings.admin.web.linkupApiKey.label": "Linkup API कुंजी", + "settings.admin.web.maxContentLength.description": "हर Exa खोज परिणाम में अधिकतम अक्षर. कोई सीमा न रखने के लिए खाली छोड़ें.", + "settings.admin.web.maxContentLength.label": "सामग्री की अधिकतम लंबाई", + "settings.admin.web.microsoftWebIqApiBaseUrl.label": "Microsoft Web IQ API बेस URL", + "settings.admin.web.microsoftWebIqApiKey.label": "Microsoft Web IQ API कुंजी", + "settings.admin.web.mojeekSearchApiKey.label": "Mojeek Search API कुंजी", + "settings.admin.web.ollamaCloudApiKey.label": "Ollama Cloud API कुंजी", + "settings.admin.web.openserpUrl.label": "OpenSERP URL", + "settings.admin.web.parameters.label": "पैरामीटर", + "settings.admin.web.perplexityApiKey.label": "Perplexity API कुंजी", + "settings.admin.web.perplexityModel.label": "Perplexity मॉडल", + "settings.admin.web.perplexitySearchApiUrl.label": "Perplexity Search API URL", + "settings.admin.web.perplexitySearchContextUsage.label": "Perplexity Search संदर्भ उपयोग", + "settings.admin.web.playwrightTimeoutMs.label": "Playwright टाइमआउट (ms)", + "settings.admin.web.playwrightWebsocketUrl.label": "Playwright WebSocket URL", + "settings.admin.web.searchapiApiKey.label": "SearchApi API कुंजी", + "settings.admin.web.searchapiEngine.label": "SearchApi इंजन", + "settings.admin.web.searchLimits.description": "परिणामों की संख्या और समानांतर खोज अनुरोध नियंत्रित करें.", + "settings.admin.web.searchLimits.label": "खोज सीमाएँ", + "settings.admin.web.searchResultCount.description": "समवर्ती खोज क्वेरी सीमित करें. 0 = असीमित (डिफ़ॉल्ट). क्रमिक निष्पादन के लिए 1 सेट करें (Brave के मुफ़्त स्तर जैसी सख्त दर सीमा वाली API के लिए अनुशंसित).", "settings.admin.web.searchResultCount.label": "खोज परिणामों की संख्या", "settings.admin.web.searxngQueryUrl.label": "Searxng क्वेरी URL", - "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "", - "settings.admin.web.sections.loader.title": "", + "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "Searxng खोज भाषा (all, en, es, de, fr, आदि.)", + "settings.admin.web.sections.loader.title": "लोडर", "settings.admin.web.sections.search.title": "खोजें", - "settings.admin.web.serpapiApiKey.label": "", - "settings.admin.web.serpapiEngine.label": "", + "settings.admin.web.serpapiApiKey.label": "SerpApi API कुंजी", + "settings.admin.web.serpapiEngine.label": "SerpApi इंजन", "settings.admin.web.serperApiKey.label": "Serper API कुंजी", - "settings.admin.web.serphouseApiKey.label": "", - "settings.admin.web.serphouseDomain.label": "", - "settings.admin.web.serplyApiKey.label": "", - "settings.admin.web.serpstackApiKey.label": "सर्पस्टैक एपीआई कुंजी", - "settings.admin.web.sougouSearchApiSid.label": "", - "settings.admin.web.sougouSearchApiSk.label": "", - "settings.admin.web.tavilyApiKey.label": "", - "settings.admin.web.tavilyExtractDepth.label": "", - "settings.admin.web.timeout.description": "", - "settings.admin.web.timeout.label": "", + "settings.admin.web.serphouseApiKey.label": "SERPHouse API कुंजी", + "settings.admin.web.serphouseDomain.label": "SERPHouse डोमेन", + "settings.admin.web.serplyApiKey.label": "Serply API कुंजी", + "settings.admin.web.serpstackApiKey.label": "Serpstack API कुंजी", + "settings.admin.web.sougouSearchApiSid.label": "Sougou Search API sID", + "settings.admin.web.sougouSearchApiSk.label": "Sougou Search API SK", + "settings.admin.web.tavilyApiKey.label": "Tavily API कुंजी", + "settings.admin.web.tavilyExtractDepth.label": "Tavily निष्कर्षण की गहराई", + "settings.admin.web.timeout.description": "वेब सामग्री लोड होने की प्रतीक्षा का अधिकतम समय.", + "settings.admin.web.timeout.label": "टाइमआउट", "settings.admin.web.title": "वेब खोज", - "settings.admin.web.trustProxyEnvironment.description": "", - "settings.admin.web.trustProxyEnvironment.label": "", - "settings.admin.web.verifySslCertificate.description": "", - "settings.admin.web.verifySslCertificate.label": "", - "settings.admin.web.webLoaderEngine.description": "", - "settings.admin.web.webLoaderEngine.label": "", - "settings.admin.web.webSearch.description": "", + "settings.admin.web.trustProxyEnvironment.description": "पेज की सामग्री प्राप्त करने के लिए प्रॉक्सी एनवायरनमेंट वेरिएबल इस्तेमाल करें.", + "settings.admin.web.trustProxyEnvironment.label": "प्रॉक्सी एनवायरनमेंट पर भरोसा करें", + "settings.admin.web.verifySslCertificate.description": "वेब सामग्री प्राप्त करते समय SSL प्रमाणपत्र सत्यापित करें.", + "settings.admin.web.verifySslCertificate.label": "SSL प्रमाणपत्र सत्यापित करें", + "settings.admin.web.webLoaderEngine.description": "चुनें कि वेब परिणामों के पेज कैसे प्राप्त और पढ़े जाएँ.", + "settings.admin.web.webLoaderEngine.label": "वेब लोडर इंजन", + "settings.admin.web.webSearch.description": "उपयोगकर्ताओं को चैट से वेब पर खोज करने दें.", "settings.admin.web.webSearch.label": "वेब खोज", - "settings.admin.web.webSearchConfirmation.description": "", - "settings.admin.web.webSearchConfirmation.label": "", - "settings.admin.web.webSearchConfirmationContent.description": "", - "settings.admin.web.webSearchConfirmationContent.label": "", - "settings.admin.web.webSearchEngine.description": "", + "settings.admin.web.webSearchConfirmation.description": "वेब खोज इस्तेमाल करने से पहले उपयोगकर्ताओं से पुष्टि लेना अनिवार्य करें.", + "settings.admin.web.webSearchConfirmation.label": "वेब खोज की पुष्टि", + "settings.admin.web.webSearchConfirmationContent.description": "वेब खोज चलने से पहले दिखाया जाने वाला संदेश.", + "settings.admin.web.webSearchConfirmationContent.label": "वेब खोज की पुष्टि की सामग्री", + "settings.admin.web.webSearchEngine.description": "वेब खोज क्वेरी के लिए प्रदाता चुनें.", "settings.admin.web.webSearchEngine.label": "वेब खोज इंजन", - "settings.admin.web.yacyInstanceUrl.label": "", - "settings.admin.web.yacyPassword.label": "", - "settings.admin.web.yacyUsername.label": "", - "settings.admin.web.yandexWebSearchApiKey.label": "", - "settings.admin.web.yandexWebSearchConfig.label": "", - "settings.admin.web.yandexWebSearchUrl.label": "", - "settings.admin.web.youComApiKey.label": "", - "settings.admin.web.youtubeLanguage.description": "", - "settings.admin.web.youtubeLanguage.label": "", - "settings.admin.web.youtubeProxyUrl.description": "", - "settings.admin.web.youtubeProxyUrl.label": "", - "settings.personal.about.checkForUpdates.label": "अपडेट के लिए जाँच", - "settings.personal.about.sections.community.title": "", - "settings.personal.about.sections.ollamaVersion.title": "Ollama Version", + "settings.admin.web.yacyInstanceUrl.label": "Yacy इंस्टेंस URL", + "settings.admin.web.yacyPassword.label": "Yacy पासवर्ड", + "settings.admin.web.yacyUsername.label": "Yacy उपयोगकर्ता नाम", + "settings.admin.web.yandexWebSearchApiKey.label": "Yandex Web Search API कुंजी", + "settings.admin.web.yandexWebSearchConfig.label": "Yandex Web Search कॉन्फ़िगरेशन", + "settings.admin.web.yandexWebSearchUrl.label": "Yandex Web Search URL", + "settings.admin.web.youComApiKey.label": "You.com API कुंजी", + "settings.admin.web.youtubeLanguage.description": "पसंदीदा ट्रांसक्रिप्ट भाषा कोड, कॉमा से अलग किए हुए.", + "settings.admin.web.youtubeLanguage.label": "Youtube भाषा", + "settings.admin.web.youtubeProxyUrl.description": "Youtube लोडर अनुरोधों के लिए प्रॉक्सी URL.", + "settings.admin.web.youtubeProxyUrl.label": "Youtube प्रॉक्सी URL", + "settings.personal.about.checkForUpdates.label": "अपडेट जाँचें", + "settings.personal.about.sections.community.title": "समुदाय", + "settings.personal.about.sections.ollamaVersion.title": "Ollama संस्करण", "settings.personal.about.sections.version.title": "संस्करण", - "settings.personal.about.seeWhatSNew.description": "", + "settings.personal.about.seeWhatSNew.description": "इंस्टॉल किया गया संस्करण देखें और रिलीज़ अपडेट जाँचें.", "settings.personal.about.seeWhatSNew.label": "देखें, क्या नया है", "settings.personal.about.title": "हमारे बारे में", - "settings.personal.account.apiKey.description": "", + "settings.personal.account.apiKey.description": "अपनी API कुंजी बनाएँ, कॉपी करें या बदलें.", "settings.personal.account.apiKey.label": "एपीआई कुंजी", - "settings.personal.account.bio.description": "", - "settings.personal.account.bio.label": "", - "settings.personal.account.birthDate.description": "", - "settings.personal.account.birthDate.label": "", - "settings.personal.account.changePassword.description": "", + "settings.personal.account.bio.description": "प्रोफ़ाइल दिखाई देने वाली जगहों के लिए वैकल्पिक प्रोफ़ाइल जानकारी जोड़ें.", + "settings.personal.account.bio.label": "परिचय", + "settings.personal.account.birthDate.description": "अपनी प्रोफ़ाइल में सहेजी जाने वाली जन्मतिथि सेट करें.", + "settings.personal.account.birthDate.label": "जन्मतिथि", + "settings.personal.account.changePassword.description": "ईमेल और पासवर्ड से लॉगिन करने का पासवर्ड अपडेट करें.", "settings.personal.account.changePassword.label": "पासवर्ड बदलें", "settings.personal.account.confirmPassword.label": "पासवर्ड की पुष्टि कीजिये", "settings.personal.account.createNewSecretKey.label": "नई गुप्त कुंजी बनाएं", "settings.personal.account.currentPassword.label": "वर्तमान पासवर्ड", - "settings.personal.account.gender.description": "", - "settings.personal.account.gender.label": "", - "settings.personal.account.jwtToken.description": "", - "settings.personal.account.jwtToken.label": "जट टोकन", - "settings.personal.account.name.description": "", + "settings.personal.account.gender.description": "अपनी प्रोफ़ाइल में सहेजा जाने वाला लिंग चुनें.", + "settings.personal.account.gender.label": "लिंग", + "settings.personal.account.jwtToken.description": "प्रमाणीकृत अनुरोधों के लिए मौजूदा सत्र टोकन कॉपी करें.", + "settings.personal.account.jwtToken.label": "JWT टोकन", + "settings.personal.account.name.description": "अपने खाते में दिखाई देने वाला प्रदर्शन नाम सेट करें.", "settings.personal.account.name.label": "नाम", "settings.personal.account.newPassword.label": "नया पासवर्ड", - "settings.personal.account.secrets.description": "", - "settings.personal.account.secrets.label": "", + "settings.personal.account.secrets.description": "खाते की संवेदनशील गुप्त जानकारी दिखाएँ या छिपाएँ.", + "settings.personal.account.secrets.label": "गुप्त जानकारी", "settings.personal.account.sections.apiKeys.title": "एपीआई कुंजियाँ", "settings.personal.account.sections.password.title": "पासवर्ड", "settings.personal.account.sections.profile.title": "प्रोफ़ाइल", @@ -2767,754 +2767,754 @@ "settings.personal.account.updatePassword.label": "पासवर्ड अपडेट करें", "settings.personal.archivedChats.exportArchivedChats.label": "निर्यात करें", "settings.personal.archivedChats.title": "संग्रहीत चैट", - "settings.personal.archivedChats.unarchiveAll.label": "", - "settings.personal.audio.allowNonLocalVoices.description": "", - "settings.personal.audio.allowNonLocalVoices.label": "", - "settings.personal.audio.autoPlaybackResponse.description": "", + "settings.personal.archivedChats.unarchiveAll.label": "सभी को संग्रह से निकालें", + "settings.personal.audio.allowNonLocalVoices.description": "वे आवाज़ें शामिल करें जो स्थानीय वाणी सेवा से नहीं मिलतीं.", + "settings.personal.audio.allowNonLocalVoices.label": "गैर-स्थानीय आवाज़ें इस्तेमाल करने दें", + "settings.personal.audio.autoPlaybackResponse.description": "सहायक के उत्तर अपने-आप बोलकर सुनाएँ.", "settings.personal.audio.autoPlaybackResponse.label": "ऑटो-प्लेबैक प्रतिक्रिया", - "settings.personal.audio.browserVoice.description": "", + "settings.personal.audio.browserVoice.description": "वाणी आउटपुट के लिए ब्राउज़र की आवाज़ चुनें.", "settings.personal.audio.browserVoice.label": "आवाज सेट करें", - "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "", - "settings.personal.audio.instantAutoSendAfterVoiceTranscription.label": "", - "settings.personal.audio.kokoroJsDtype.description": "", - "settings.personal.audio.kokoroJsDtype.label": "", - "settings.personal.audio.kokoroVoice.description": "", + "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "वाणी पहचान पूरी होते ही ट्रांसक्राइब किया गया वॉइस इनपुट भेजें.", + "settings.personal.audio.instantAutoSendAfterVoiceTranscription.label": "वॉइस ट्रांसक्रिप्शन के तुरंत बाद अपने-आप भेजें", + "settings.personal.audio.kokoroJsDtype.description": "Kokoro.js द्वारा इस्तेमाल होने वाले स्थानीय मॉडल की प्रिसिज़न चुनें.", + "settings.personal.audio.kokoroJsDtype.label": "Kokoro.js Dtype", + "settings.personal.audio.kokoroVoice.description": "वाणी आउटपुट के लिए Kokoro.js की आवाज़ चुनें.", "settings.personal.audio.kokoroVoice.label": "आवाज सेट करें", - "settings.personal.audio.language.description": "", + "settings.personal.audio.language.description": "वाणी पहचान की भाषा सेट करें या अपने-आप पहचानने के लिए खाली छोड़ें.", "settings.personal.audio.language.label": "भाषा", - "settings.personal.audio.sections.sttSettings.title": "STT सेटिंग्स ", + "settings.personal.audio.sections.sttSettings.title": "STT सेटिंग्स", "settings.personal.audio.sections.ttsSettings.title": "TTS सेटिंग्स", - "settings.personal.audio.sections.voice.title": "", - "settings.personal.audio.serviceVoice.description": "", + "settings.personal.audio.sections.voice.title": "आवाज़", + "settings.personal.audio.serviceVoice.description": "कॉन्फ़िगर की गई टेक्स्ट-टू-स्पीच सेवा की आवाज़ चुनें.", "settings.personal.audio.serviceVoice.label": "आवाज सेट करें", - "settings.personal.audio.speechPlaybackSpeed.description": "", - "settings.personal.audio.speechPlaybackSpeed.label": "", - "settings.personal.audio.speechToTextEngine.description": "", + "settings.personal.audio.speechPlaybackSpeed.description": "बोले जाने वाले उत्तरों की गति समायोजित करें.", + "settings.personal.audio.speechPlaybackSpeed.label": "वाणी प्लेबैक गति", + "settings.personal.audio.speechToTextEngine.description": "वॉइस इनपुट ट्रांसक्राइब करने के लिए इंजन चुनें.", "settings.personal.audio.speechToTextEngine.label": "वाक्-से-पाठ इंजन", - "settings.personal.audio.textToSpeechEngine.description": "", + "settings.personal.audio.textToSpeechEngine.description": "सहायक के उत्तर बोलकर सुनाने के लिए इंजन चुनें.", "settings.personal.audio.textToSpeechEngine.label": "टेक्स्ट-टू-स्पीच इंजन", "settings.personal.audio.title": "ऑडियो", - "settings.personal.connections.addConnection.description": "", - "settings.personal.connections.addConnection.label": "", - "settings.personal.connections.sections.directConnections.title": "", - "settings.personal.connections.title": "सम्बन्ध", - "settings.personal.dataControls.archiveAll.label": "", - "settings.personal.dataControls.archiveAllChats.description": "", + "settings.personal.connections.addConnection.description": "अपने OpenAI-संगत API एंडपॉइंट से कनेक्ट करें.", + "settings.personal.connections.addConnection.label": "कनेक्शन जोड़ें", + "settings.personal.connections.sections.directConnections.title": "सीधे कनेक्शन", + "settings.personal.connections.title": "कनेक्शन", + "settings.personal.dataControls.archiveAll.label": "सभी संग्रहीत करें", + "settings.personal.dataControls.archiveAllChats.description": "पुष्टि के बाद हर चैट संग्रह में ले जाएँ.", "settings.personal.dataControls.archiveAllChats.label": "सभी चैट संग्रहीत करें", - "settings.personal.dataControls.deleteAllChats.description": "", + "settings.personal.dataControls.deleteAllChats.description": "पुष्टि के बाद हर चैट हमेशा के लिए हटाएँ.", "settings.personal.dataControls.deleteAllChats.label": "सभी चैट हटाएं", - "settings.personal.dataControls.exportChats.description": "", + "settings.personal.dataControls.exportChats.description": "अपना चैट इतिहास JSON निर्यात के रूप में डाउनलोड करें.", "settings.personal.dataControls.exportChats.label": "चैट निर्यात करें", - "settings.personal.dataControls.importChats.description": "", + "settings.personal.dataControls.importChats.description": "JSON निर्यात फ़ाइल से चैट इतिहास आयात करें.", "settings.personal.dataControls.importChats.label": "चैट आयात करें", - "settings.personal.dataControls.manageFiles.description": "", - "settings.personal.dataControls.manageFiles.label": "", - "settings.personal.dataControls.sections.chats.title": "सभी चैट", - "settings.personal.dataControls.sections.files.title": "", - "settings.personal.dataControls.sharedChats.description": "", - "settings.personal.dataControls.sharedChats.label": "", - "settings.personal.dataControls.title": "", - "settings.personal.general.language.description": "", + "settings.personal.dataControls.manageFiles.description": "अपलोड की गई फ़ाइलों का फ़ाइल मैनेजर खोलें.", + "settings.personal.dataControls.manageFiles.label": "फ़ाइलें प्रबंधित करें", + "settings.personal.dataControls.sections.chats.title": "चैट", + "settings.personal.dataControls.sections.files.title": "फ़ाइलें", + "settings.personal.dataControls.sharedChats.description": "अपनी साझा की गई चैट की समीक्षा करें और प्रबंधित करें.", + "settings.personal.dataControls.sharedChats.label": "साझा चैट", + "settings.personal.dataControls.title": "डेटा नियंत्रण", + "settings.personal.general.language.description": "इंटरफ़ेस टेक्स्ट की भाषा चुनें.", "settings.personal.general.language.label": "भाषा", - "settings.personal.general.modelParameters.description": "", - "settings.personal.general.modelParameters.label": "", - "settings.personal.general.parameters.contextCompactionThreshold.description": "", - "settings.personal.general.parameters.contextCompactionThreshold.label": "", - "settings.personal.general.parameters.format.label": "", - "settings.personal.general.parameters.frequencyPenalty.label": "", - "settings.personal.general.parameters.functionCalling.description": "", - "settings.personal.general.parameters.functionCalling.label": "", - "settings.personal.general.parameters.keepAlive.label": "", - "settings.personal.general.parameters.logitBias.label": "", - "settings.personal.general.parameters.maxTokens.label": "", - "settings.personal.general.parameters.minP.label": "", - "settings.personal.general.parameters.mirostat.label": "", - "settings.personal.general.parameters.mirostatEta.label": "", - "settings.personal.general.parameters.mirostatTau.label": "", - "settings.personal.general.parameters.numBatch.label": "", - "settings.personal.general.parameters.numCtx.label": "", - "settings.personal.general.parameters.numGpu.label": "", - "settings.personal.general.parameters.numKeep.label": "", - "settings.personal.general.parameters.numThread.label": "", - "settings.personal.general.parameters.ollama.description": "", + "settings.personal.general.modelParameters.description": "कस्टम जनरेशन पैरामीटर दिखाएँ या छिपाएँ.", + "settings.personal.general.modelParameters.label": "मॉडल पैरामीटर", + "settings.personal.general.parameters.contextCompactionThreshold.description": "मॉडल-विशिष्ट संदर्भ संक्षेपण टोकन सीमा सेट करें. सेट होने पर यह वैश्विक अधिकतम सीमा तक वैश्विक सीमा को ओवरराइड करती है.", + "settings.personal.general.parameters.contextCompactionThreshold.label": "संदर्भ संक्षेपण सीमा", + "settings.personal.general.parameters.format.label": "format", + "settings.personal.general.parameters.frequencyPenalty.label": "frequency_penalty", + "settings.personal.general.parameters.functionCalling.description": "नेटिव मोड (डिफ़ॉल्ट) मॉडल की अंतर्निहित टूल कॉलिंग क्षमताओं का उपयोग करता है. लेगेसी मोड प्रॉम्प्ट इंजेक्शन के ज़रिए निष्पादन से पहले एक बार टूल कॉल करके अधिक प्रकार के मॉडल के साथ काम करता है.", + "settings.personal.general.parameters.functionCalling.label": "फ़ंक्शन कॉलिंग", + "settings.personal.general.parameters.keepAlive.label": "keep_alive", + "settings.personal.general.parameters.logitBias.label": "logit_bias", + "settings.personal.general.parameters.maxTokens.label": "max_tokens", + "settings.personal.general.parameters.minP.label": "min_p", + "settings.personal.general.parameters.mirostat.label": "mirostat", + "settings.personal.general.parameters.mirostatEta.label": "mirostat_eta", + "settings.personal.general.parameters.mirostatTau.label": "mirostat_tau", + "settings.personal.general.parameters.numBatch.label": "num_batch", + "settings.personal.general.parameters.numCtx.label": "num_ctx", + "settings.personal.general.parameters.numGpu.label": "num_gpu", + "settings.personal.general.parameters.numKeep.label": "num_keep", + "settings.personal.general.parameters.numThread.label": "num_thread", + "settings.personal.general.parameters.ollama.description": "यह विकल्प Ollama की तर्क सुविधा का उपयोग सक्षम या अक्षम करता है, जिससे मॉडल उत्तर जनरेट करने से पहले सोच सकता है. सक्षम होने पर मॉडल बातचीत का संदर्भ समझने के लिए कुछ समय लेकर अधिक विचारपूर्ण उत्तर जनरेट कर सकता है.", "settings.personal.general.parameters.ollama.label": "Ollama", - "settings.personal.general.parameters.presencePenalty.label": "", - "settings.personal.general.parameters.reasoningEffort.description": "", - "settings.personal.general.parameters.reasoningEffort.label": "", - "settings.personal.general.parameters.reasoningTags.description": "", - "settings.personal.general.parameters.reasoningTags.label": "", - "settings.personal.general.parameters.repeatLastN.label": "", - "settings.personal.general.parameters.repeatPenalty.label": "", - "settings.personal.general.parameters.seed.description": "", - "settings.personal.general.parameters.seed.label": "सीड्\u200c", - "settings.personal.general.parameters.stopSequence.description": "", - "settings.personal.general.parameters.stopSequence.label": "अनुक्रम रोकें", - "settings.personal.general.parameters.streamChatResponse.description": "", - "settings.personal.general.parameters.streamChatResponse.label": "", - "settings.personal.general.parameters.streamDeltaChunkSize.description": "", - "settings.personal.general.parameters.streamDeltaChunkSize.label": "", - "settings.personal.general.parameters.temperature.description": "", + "settings.personal.general.parameters.presencePenalty.label": "presence_penalty", + "settings.personal.general.parameters.reasoningEffort.description": "तर्क करने वाले मॉडल के तर्क प्रयास को सीमित करता है. केवल उन विशिष्ट प्रदाताओं के तर्क मॉडल पर लागू होता है जो तर्क प्रयास का समर्थन करते हैं.", + "settings.personal.general.parameters.reasoningEffort.label": "तर्क प्रयास", + "settings.personal.general.parameters.reasoningTags.description": "मॉडल के तर्क टैग सक्षम, अक्षम या कस्टमाइज़ करें. \"सक्षम\" डिफ़ॉल्ट टैग इस्तेमाल करता है, \"अक्षम\" तर्क टैग बंद करता है, और \"कस्टम\" आपको अपने शुरुआती और अंतिम टैग तय करने देता है.", + "settings.personal.general.parameters.reasoningTags.label": "तर्क टैग", + "settings.personal.general.parameters.repeatLastN.label": "repeat_last_n", + "settings.personal.general.parameters.repeatPenalty.label": "repeat_penalty", + "settings.personal.general.parameters.seed.description": "जनरेशन में इस्तेमाल होने वाला रैंडम नंबर सीड सेट करता है. इसे एक निश्चित संख्या पर सेट करने से मॉडल समान प्रॉम्प्ट के लिए समान टेक्स्ट जनरेट करेगा.", + "settings.personal.general.parameters.seed.label": "सीड", + "settings.personal.general.parameters.stopSequence.description": "इस्तेमाल होने वाले स्टॉप अनुक्रम सेट करता है. यह पैटर्न मिलने पर LLM टेक्स्ट जनरेट करना रोककर लौट आएगा. modelfile में कई अलग-अलग स्टॉप पैरामीटर देकर कई स्टॉप पैटर्न सेट किए जा सकते हैं.", + "settings.personal.general.parameters.stopSequence.label": "स्टॉप अनुक्रम", + "settings.personal.general.parameters.streamChatResponse.description": "सक्षम होने पर मॉडल उपयोगकर्ता के संदेश भेजते ही उत्तर जनरेट करके हर चैट संदेश का उत्तर रीयल-टाइम में देगा. यह मोड लाइव चैट एप्लिकेशन के लिए उपयोगी है, लेकिन धीमे हार्डवेयर पर प्रदर्शन प्रभावित कर सकता है.", + "settings.personal.general.parameters.streamChatResponse.label": "चैट उत्तर स्ट्रीम करें", + "settings.personal.general.parameters.streamDeltaChunkSize.description": "मॉडल के स्ट्रीम डेल्टा चंक का आकार. चंक का आकार बढ़ाने पर मॉडल एक साथ टेक्स्ट के बड़े हिस्सों में जवाब देगा.", + "settings.personal.general.parameters.streamDeltaChunkSize.label": "स्ट्रीम डेल्टा चंक का आकार", + "settings.personal.general.parameters.temperature.description": "मॉडल का तापमान. तापमान बढ़ाने पर मॉडल अधिक रचनात्मक जवाब देगा.", "settings.personal.general.parameters.temperature.label": "टेंपेरेचर", - "settings.personal.general.parameters.tfsZ.label": "", - "settings.personal.general.parameters.think.label": "", - "settings.personal.general.parameters.topK.label": "", - "settings.personal.general.parameters.topP.label": "", - "settings.personal.general.parameters.useMlock.label": "", - "settings.personal.general.parameters.useMmap.label": "", + "settings.personal.general.parameters.tfsZ.label": "tfs_z", + "settings.personal.general.parameters.think.label": "think", + "settings.personal.general.parameters.topK.label": "top_k", + "settings.personal.general.parameters.topP.label": "top_p", + "settings.personal.general.parameters.useMlock.label": "use_mlock", + "settings.personal.general.parameters.useMmap.label": "use_mmap", "settings.personal.general.sections.advancedParameters.title": "उन्नत पैरामीटर", - "settings.personal.general.sections.systemPrompt.description": "", + "settings.personal.general.sections.systemPrompt.description": "नई चैट के लिए डिफ़ॉल्ट सिस्टम प्रॉम्प्ट सेट करें.", "settings.personal.general.sections.systemPrompt.title": "सिस्टम प्रॉम्प्ट", "settings.personal.general.sections.webuiSettings.title": "WebUI सेटिंग्स", - "settings.personal.general.theme.description": "", + "settings.personal.general.theme.description": "इंटरफ़ेस की रंग थीम चुनें.", "settings.personal.general.theme.label": "थीम", "settings.personal.general.title": "सामान्य", - "settings.personal.interface.accessibilityMode.description": "", - "settings.personal.interface.accessibilityMode.label": "", - "settings.personal.interface.allowUserLocation.description": "", - "settings.personal.interface.allowUserLocation.label": "", - "settings.personal.interface.allowVoiceInterruptionInCall.description": "", - "settings.personal.interface.allowVoiceInterruptionInCall.label": "", - "settings.personal.interface.alwaysCollapseCodeBlocks.description": "", - "settings.personal.interface.alwaysCollapseCodeBlocks.label": "", - "settings.personal.interface.alwaysExpandDetails.description": "", - "settings.personal.interface.alwaysExpandDetails.label": "", - "settings.personal.interface.android.label": "", - "settings.personal.interface.autoCopyResponseToClipboard.description": "", - "settings.personal.interface.autoCopyResponseToClipboard.label": "क्लिपबोर्ड पर प्रतिक्रिया ऑटोकॉपी", - "settings.personal.interface.chatBackgroundImage.description": "", - "settings.personal.interface.chatBackgroundImage.label": "", - "settings.personal.interface.chatBubbleUi.description": "", - "settings.personal.interface.chatBubbleUi.label": "चैट बॉली", - "settings.personal.interface.chatDirection.description": "", + "settings.personal.interface.accessibilityMode.description": "सुलभता पर केंद्रित दृश्य सुधार सक्षम करें.", + "settings.personal.interface.accessibilityMode.label": "सुलभता मोड", + "settings.personal.interface.allowUserLocation.description": "उन सुविधाओं के साथ अपना वर्तमान स्थान साझा करें जो इसका इस्तेमाल कर सकती हैं.", + "settings.personal.interface.allowUserLocation.label": "उपयोगकर्ता के स्थान की अनुमति दें", + "settings.personal.interface.allowVoiceInterruptionInCall.description": "वॉइस कॉल के दौरान बोलकर सहायक को रोकने दें.", + "settings.personal.interface.allowVoiceInterruptionInCall.label": "कॉल में बोलकर रोकने दें", + "settings.personal.interface.alwaysCollapseCodeBlocks.description": "कोड ब्लॉक डिफ़ॉल्ट रूप से समेटें.", + "settings.personal.interface.alwaysCollapseCodeBlocks.label": "कोड ब्लॉक हमेशा समेटें", + "settings.personal.interface.alwaysExpandDetails.description": "विवरण ब्लॉक डिफ़ॉल्ट रूप से खोलें.", + "settings.personal.interface.alwaysExpandDetails.label": "विवरण हमेशा फैलाएँ", + "settings.personal.interface.android.label": "Android", + "settings.personal.interface.autoCopyResponseToClipboard.description": "सहायक का नवीनतम उत्तर पूरा होने पर उसे कॉपी करें.", + "settings.personal.interface.autoCopyResponseToClipboard.label": "जवाब अपने-आप क्लिपबोर्ड पर कॉपी करें", + "settings.personal.interface.chatBackgroundImage.description": "चैट की सामग्री के पीछे दिखने वाला चित्र अपलोड या रीसेट करें.", + "settings.personal.interface.chatBackgroundImage.label": "चैट का पृष्ठभूमि चित्र", + "settings.personal.interface.chatBubbleUi.description": "संदेश छोटे बबल कंटेनर में दिखाएँ.", + "settings.personal.interface.chatBubbleUi.label": "चैट बबल UI", + "settings.personal.interface.chatDirection.description": "अपने-आप, बाएँ से दाएँ, या दाएँ से बाएँ टेक्स्ट प्रवाह चुनें.", "settings.personal.interface.chatDirection.label": "चैट दिशा", - "settings.personal.interface.chatHoverPreviews.description": "", - "settings.personal.interface.chatHoverPreviews.label": "", - "settings.personal.interface.chatTagsAutoGeneration.description": "", - "settings.personal.interface.chatTagsAutoGeneration.label": "", - "settings.personal.interface.compressImagesInChannels.description": "", - "settings.personal.interface.compressImagesInChannels.label": "", - "settings.personal.interface.copyFormattedText.description": "", - "settings.personal.interface.copyFormattedText.label": "", - "settings.personal.interface.decreaseUiScale.label": "", - "settings.personal.interface.defaultUploadMode.description": "", - "settings.personal.interface.defaultUploadMode.label": "", - "settings.personal.interface.detectArtifactsAutomatically.description": "", - "settings.personal.interface.detectArtifactsAutomatically.label": "", - "settings.personal.interface.displayChatTitleInTab.description": "", - "settings.personal.interface.displayChatTitleInTab.label": "", - "settings.personal.interface.displayEmojiInCall.description": "", - "settings.personal.interface.displayEmojiInCall.label": "", - "settings.personal.interface.displayMultiModelResponsesInTabs.description": "", - "settings.personal.interface.displayMultiModelResponsesInTabs.label": "", - "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "", + "settings.personal.interface.chatHoverPreviews.description": "साइडबार में किसी चैट पर कर्सर ले जाने पर हालिया संदेशों का फ़्लोटिंग पूर्वावलोकन दिखाएँ.", + "settings.personal.interface.chatHoverPreviews.label": "कर्सर रखने पर चैट का पूर्वावलोकन", + "settings.personal.interface.chatTagsAutoGeneration.description": "चैट के टैग अपने-आप जनरेट करें.", + "settings.personal.interface.chatTagsAutoGeneration.label": "चैट टैग अपने-आप जनरेट करें", + "settings.personal.interface.compressImagesInChannels.description": "चैनल में अपलोड पर भी चित्र संपीड़न लागू करें.", + "settings.personal.interface.compressImagesInChannels.label": "चैनल में चित्र संपीड़ित करें", + "settings.personal.interface.copyFormattedText.description": "सादे टेक्स्ट के बजाय रिच फ़ॉर्मैट वाली सामग्री कॉपी करें.", + "settings.personal.interface.copyFormattedText.label": "फ़ॉर्मैट किया हुआ टेक्स्ट कॉपी करें", + "settings.personal.interface.decreaseUiScale.label": "UI का आकार घटाएँ", + "settings.personal.interface.defaultUploadMode.description": "डिफ़ॉल्ट रूप से पूरी सामग्री या लक्षित पुनर्प्राप्ति के साथ फ़ाइलें संलग्न करें.", + "settings.personal.interface.defaultUploadMode.label": "डिफ़ॉल्ट अपलोड मोड", + "settings.personal.interface.detectArtifactsAutomatically.description": "जनरेट किए गए आर्टिफ़ैक्ट पहचानें और उन्हें आर्टिफ़ैक्ट कार्यस्थान में दिखाएँ.", + "settings.personal.interface.detectArtifactsAutomatically.label": "आर्टिफ़ैक्ट अपने-आप पहचानें", + "settings.personal.interface.displayChatTitleInTab.description": "सक्रिय चैट का शीर्षक ब्राउज़र टैब के शीर्षक के रूप में इस्तेमाल करें.", + "settings.personal.interface.displayChatTitleInTab.label": "टैब में चैट का शीर्षक दिखाएँ", + "settings.personal.interface.displayEmojiInCall.description": "कॉल इंटरफ़ेस में इमोजी प्रतिक्रिया दिखाएँ.", + "settings.personal.interface.displayEmojiInCall.label": "कॉल में इमोजी दिखाएँ", + "settings.personal.interface.displayMultiModelResponsesInTabs.description": "कई मॉडल के उत्तर टैब में समूहित करें.", + "settings.personal.interface.displayMultiModelResponsesInTabs.label": "कई मॉडल के उत्तर टैब में दिखाएँ", + "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "चैट बबल में आप के बजाय अपने उपयोगकर्ता नाम का लेबल दिखाएँ.", "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "चैट में 'आप' के स्थान पर उपयोगकर्ता नाम प्रदर्शित करें", - "settings.personal.interface.enableMessageQueue.description": "", - "settings.personal.interface.enableMessageQueue.label": "", - "settings.personal.interface.enterKeyBehavior.description": "", - "settings.personal.interface.enterKeyBehavior.label": "", - "settings.personal.interface.fadeEffectForStreamingText.description": "", - "settings.personal.interface.fadeEffectForStreamingText.label": "", - "settings.personal.interface.floatingQuickActions.label": "", - "settings.personal.interface.followUpAutoGeneration.description": "", - "settings.personal.interface.followUpAutoGeneration.label": "", - "settings.personal.interface.fontFamily.description": "", - "settings.personal.interface.fontFamily.label": "", - "settings.personal.interface.hapticFeedback.label": "", - "settings.personal.interface.iframeSandboxAllowDownloads.description": "", - "settings.personal.interface.iframeSandboxAllowDownloads.label": "", - "settings.personal.interface.iframeSandboxAllowForms.description": "", - "settings.personal.interface.iframeSandboxAllowForms.label": "", - "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "", - "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "", - "settings.personal.interface.iframeSandboxAllowScripts.description": "", - "settings.personal.interface.iframeSandboxAllowScripts.label": "", - "settings.personal.interface.imageCompression.label": "", - "settings.personal.interface.increaseUiScale.label": "", - "settings.personal.interface.insertFollowUpPromptToInput.description": "", - "settings.personal.interface.insertFollowUpPromptToInput.label": "", - "settings.personal.interface.insertPromptAsRichText.description": "", - "settings.personal.interface.insertPromptAsRichText.label": "", - "settings.personal.interface.insertSuggestionPromptToInput.description": "", - "settings.personal.interface.insertSuggestionPromptToInput.label": "", - "settings.personal.interface.keepFollowUpPromptsInChat.description": "", - "settings.personal.interface.keepFollowUpPromptsInChat.label": "", - "settings.personal.interface.landingPageMode.description": "", - "settings.personal.interface.landingPageMode.label": "", - "settings.personal.interface.openModalToManageFloatingQuickActions.label": "", - "settings.personal.interface.openModalToManageImageCompression.label": "", - "settings.personal.interface.pasteLargeTextAsFile.description": "", - "settings.personal.interface.pasteLargeTextAsFile.label": "", - "settings.personal.interface.promptAutocompletion.description": "", - "settings.personal.interface.promptAutocompletion.label": "", - "settings.personal.interface.regenerateMenu.description": "", - "settings.personal.interface.regenerateMenu.label": "", - "settings.personal.interface.renderMarkdownInAssistantMessages.description": "", - "settings.personal.interface.renderMarkdownInAssistantMessages.label": "", - "settings.personal.interface.renderMarkdownInPreviews.description": "", - "settings.personal.interface.renderMarkdownInPreviews.label": "", - "settings.personal.interface.renderMarkdownInUserMessages.description": "", - "settings.personal.interface.renderMarkdownInUserMessages.label": "", - "settings.personal.interface.responseAutoScroll.description": "", - "settings.personal.interface.responseAutoScroll.label": "", - "settings.personal.interface.richTextInputForChat.description": "", - "settings.personal.interface.richTextInputForChat.label": "", - "settings.personal.interface.scrollOnBranchChange.description": "", - "settings.personal.interface.scrollOnBranchChange.label": "", - "settings.personal.interface.sections.artifacts.title": "", - "settings.personal.interface.sections.chat.title": "चैट करें", - "settings.personal.interface.sections.file.title": "", - "settings.personal.interface.sections.input.title": "", - "settings.personal.interface.sections.ui.title": "", - "settings.personal.interface.sections.voice.title": "", - "settings.personal.interface.showFilesOnTerminalSelect.description": "", - "settings.personal.interface.showFilesOnTerminalSelect.label": "", - "settings.personal.interface.showFormattingToolbar.description": "", - "settings.personal.interface.showFormattingToolbar.label": "", - "settings.personal.interface.stylizedPdfExport.description": "", - "settings.personal.interface.stylizedPdfExport.label": "", - "settings.personal.interface.temporaryChatByDefault.description": "", - "settings.personal.interface.temporaryChatByDefault.label": "", - "settings.personal.interface.terminalFileDisplay.description": "", - "settings.personal.interface.terminalFileDisplay.label": "", - "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "", - "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "", + "settings.personal.interface.enableMessageQueue.description": "बन रहे उत्तरों को रोकने के बजाय भेजे जाने वाले संदेश कतार में रखें.", + "settings.personal.interface.enableMessageQueue.label": "संदेश कतार सक्षम करें", + "settings.personal.interface.enterKeyBehavior.description": "चुनें कि तुरंत भेजने के लिए Enter या Ctrl+Enter इस्तेमाल हो.", + "settings.personal.interface.enterKeyBehavior.label": "Enter कुंजी का व्यवहार", + "settings.personal.interface.fadeEffectForStreamingText.description": "स्ट्रीमिंग टेक्स्ट आने पर फ़ेड प्रभाव दिखाएँ.", + "settings.personal.interface.fadeEffectForStreamingText.label": "स्ट्रीमिंग टेक्स्ट के लिए फ़ेड प्रभाव", + "settings.personal.interface.floatingQuickActions.label": "फ़्लोटिंग त्वरित कार्रवाइयाँ", + "settings.personal.interface.followUpAutoGeneration.description": "उत्तरों के बाद सुझाए गए फ़ॉलो-अप प्रॉम्प्ट जनरेट करें.", + "settings.personal.interface.followUpAutoGeneration.label": "फ़ॉलो-अप अपने-आप जनरेट करें", + "settings.personal.interface.fontFamily.description": "ऐप इंटरफ़ेस के लिए स्थानीय फ़ॉन्ट फ़ैमिली इस्तेमाल करें.", + "settings.personal.interface.fontFamily.label": "फ़ॉन्ट फ़ैमिली", + "settings.personal.interface.hapticFeedback.label": "हैप्टिक प्रतिक्रिया", + "settings.personal.interface.iframeSandboxAllowDownloads.description": "सैंडबॉक्स वाले iframe में डाउनलोड की अनुमति दें.", + "settings.personal.interface.iframeSandboxAllowDownloads.label": "iframe सैंडबॉक्स में डाउनलोड की अनुमति दें", + "settings.personal.interface.iframeSandboxAllowForms.description": "सैंडबॉक्स वाले आर्टिफ़ैक्ट iframe में फ़ॉर्म की अनुमति दें.", + "settings.personal.interface.iframeSandboxAllowForms.label": "iframe सैंडबॉक्स में फ़ॉर्म की अनुमति दें", + "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "सैंडबॉक्स में आर्टिफ़ैक्ट को समान ओरिजिन वाली ब्राउज़र API की पहुँच दें.", + "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "iframe सैंडबॉक्स में समान ओरिजिन की अनुमति दें", + "settings.personal.interface.iframeSandboxAllowScripts.description": "सैंडबॉक्स वाले iframe में स्क्रिप्ट की अनुमति दें.", + "settings.personal.interface.iframeSandboxAllowScripts.label": "iframe सैंडबॉक्स में स्क्रिप्ट की अनुमति दें", + "settings.personal.interface.imageCompression.label": "चित्र संपीड़न", + "settings.personal.interface.increaseUiScale.label": "UI का आकार बढ़ाएँ", + "settings.personal.interface.insertFollowUpPromptToInput.description": "चुने गए फ़ॉलो-अप प्रॉम्प्ट सीधे संदेश संपादक में डालें.", + "settings.personal.interface.insertFollowUpPromptToInput.label": "फ़ॉलो-अप प्रॉम्प्ट इनपुट में डालें", + "settings.personal.interface.insertPromptAsRichText.description": "जहाँ संभव हो, डाले गए प्रॉम्प्ट रिच टेक्स्ट के रूप में पेस्ट करें.", + "settings.personal.interface.insertPromptAsRichText.label": "प्रॉम्प्ट रिच टेक्स्ट के रूप में डालें", + "settings.personal.interface.insertSuggestionPromptToInput.description": "चुने गए सुझाव का टेक्स्ट संदेश संपादक में डालें.", + "settings.personal.interface.insertSuggestionPromptToInput.label": "सुझाव प्रॉम्प्ट इनपुट में डालें", + "settings.personal.interface.keepFollowUpPromptsInChat.description": "जनरेट किए गए फ़ॉलो-अप प्रॉम्प्ट चैट में दिखते रहने दें.", + "settings.personal.interface.keepFollowUpPromptsInChat.label": "फ़ॉलो-अप प्रॉम्प्ट चैट में रखें", + "settings.personal.interface.landingPageMode.description": "चुनें कि ऐप डिफ़ॉल्ट होम या चैट दृश्य में खुले.", + "settings.personal.interface.landingPageMode.label": "लैंडिंग पेज मोड", + "settings.personal.interface.openModalToManageFloatingQuickActions.label": "फ़्लोटिंग त्वरित कार्रवाइयाँ प्रबंधित करने का डायलॉग खोलें", + "settings.personal.interface.openModalToManageImageCompression.label": "चित्र संपीड़न प्रबंधित करने का डायलॉग खोलें", + "settings.personal.interface.pasteLargeTextAsFile.description": "पेस्ट किए गए लंबे टेक्स्ट को फ़ाइल अटैचमेंट में बदलें.", + "settings.personal.interface.pasteLargeTextAsFile.label": "लंबा टेक्स्ट फ़ाइल के रूप में पेस्ट करें", + "settings.personal.interface.promptAutocompletion.description": "प्रॉम्प्ट लिखते समय उन्हें पूरा करने के सुझाव दें.", + "settings.personal.interface.promptAutocompletion.label": "प्रॉम्प्ट ऑटोकम्प्लीट", + "settings.personal.interface.regenerateMenu.description": "सहायक के उत्तरों के लिए दोबारा जनरेट करने का कार्रवाई मेन्यू दिखाएँ.", + "settings.personal.interface.regenerateMenu.label": "दोबारा जनरेट करने का मेन्यू", + "settings.personal.interface.renderMarkdownInAssistantMessages.description": "सहायक के उत्तरों में Markdown सिंटैक्स फ़ॉर्मैट करें.", + "settings.personal.interface.renderMarkdownInAssistantMessages.label": "सहायक के संदेशों में Markdown रेंडर करें", + "settings.personal.interface.renderMarkdownInPreviews.description": "पूर्वावलोकन और सामग्री के छोटे दृश्यों में Markdown फ़ॉर्मैट करें.", + "settings.personal.interface.renderMarkdownInPreviews.label": "पूर्वावलोकन में Markdown रेंडर करें", + "settings.personal.interface.renderMarkdownInUserMessages.description": "अपने संदेशों में Markdown सिंटैक्स फ़ॉर्मैट करें.", + "settings.personal.interface.renderMarkdownInUserMessages.label": "उपयोगकर्ता के संदेशों में Markdown रेंडर करें", + "settings.personal.interface.responseAutoScroll.description": "सहायक के उत्तर जनरेट होते समय उनके साथ स्क्रॉल करें.", + "settings.personal.interface.responseAutoScroll.label": "उत्तर के साथ अपने-आप स्क्रॉल करें", + "settings.personal.interface.richTextInputForChat.description": "सादे टेक्स्ट क्षेत्र के बजाय रिच टेक्स्ट संपादक इस्तेमाल करें.", + "settings.personal.interface.richTextInputForChat.label": "चैट के लिए रिच टेक्स्ट इनपुट", + "settings.personal.interface.scrollOnBranchChange.description": "उत्तर की शाखा बदलते समय सक्रिय शाखा तक स्क्रॉल करें.", + "settings.personal.interface.scrollOnBranchChange.label": "शाखा बदलने पर स्क्रॉल करें", + "settings.personal.interface.sections.artifacts.title": "आर्टिफ़ैक्ट", + "settings.personal.interface.sections.chat.title": "चैट", + "settings.personal.interface.sections.file.title": "फ़ाइल", + "settings.personal.interface.sections.input.title": "इनपुट", + "settings.personal.interface.sections.ui.title": "UI", + "settings.personal.interface.sections.voice.title": "आवाज़", + "settings.personal.interface.showFilesOnTerminalSelect.description": "टर्मिनल चुनने के बाद फ़ाइल ब्राउज़र खोलें.", + "settings.personal.interface.showFilesOnTerminalSelect.label": "टर्मिनल चुनने पर फ़ाइलें दिखाएँ", + "settings.personal.interface.showFormattingToolbar.description": "रिच टेक्स्ट संपादक में फ़ॉर्मैटिंग नियंत्रण दिखाएँ.", + "settings.personal.interface.showFormattingToolbar.label": "फ़ॉर्मैटिंग टूलबार दिखाएँ", + "settings.personal.interface.stylizedPdfExport.description": "चैट को PDF में निर्यात करते समय शैलीयुक्त फ़ॉर्मैटिंग इस्तेमाल करें.", + "settings.personal.interface.stylizedPdfExport.label": "शैलीयुक्त PDF निर्यात", + "settings.personal.interface.temporaryChatByDefault.description": "बदले जाने तक नई चैट अस्थायी रूप में शुरू करें.", + "settings.personal.interface.temporaryChatByDefault.label": "डिफ़ॉल्ट रूप से अस्थायी चैट", + "settings.personal.interface.terminalFileDisplay.description": "चुनें कि टर्मिनल के display_file परिणाम डिफ़ॉल्ट रूप से कहाँ दिखें.", + "settings.personal.interface.terminalFileDisplay.label": "टर्मिनल फ़ाइल प्रदर्शन", + "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "टर्मिनल पूर्वावलोकन को समान ओरिजिन वाली ब्राउज़र API की पहुँच दें.", + "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "टर्मिनल पूर्वावलोकन में समान ओरिजिन की अनुमति दें", "settings.personal.interface.title": "इंटरफेस", - "settings.personal.interface.titleAutoGeneration.description": "", + "settings.personal.interface.titleAutoGeneration.description": "बातचीत की सामग्री से चैट के शीर्षक अपने-आप जनरेट करें.", "settings.personal.interface.titleAutoGeneration.label": "शीर्षक ऑटो-जेनरेशन", - "settings.personal.interface.toastNotificationsForNewUpdates.description": "", - "settings.personal.interface.toastNotificationsForNewUpdates.label": "", - "settings.personal.interface.uiScale.label": "", - "settings.personal.interface.webSearchInChat.description": "", - "settings.personal.interface.webSearchInChat.label": "", - "settings.personal.interface.widescreenMode.description": "", - "settings.personal.interface.widescreenMode.label": "", - "settings.personal.notifications.addNotificationTarget.label": "", - "settings.personal.notifications.browserNotifications.label": "", - "settings.personal.notifications.notificationSound.label": "", - "settings.personal.notifications.notificationTargets.label": "", + "settings.personal.interface.toastNotificationsForNewUpdates.description": "नए संस्करण उपलब्ध होने पर व्यवस्थापकों को अपडेट की टोस्ट सूचनाएँ दिखाएँ.", + "settings.personal.interface.toastNotificationsForNewUpdates.label": "नए अपडेट की टोस्ट सूचनाएँ", + "settings.personal.interface.uiScale.label": "UI का आकार", + "settings.personal.interface.webSearchInChat.description": "नई चैट के लिए वेब खोज की उपलब्धता सेट करें.", + "settings.personal.interface.webSearchInChat.label": "चैट में वेब खोज", + "settings.personal.interface.widescreenMode.description": "बड़े डिस्प्ले पर अधिक चौड़ा चैट लेआउट इस्तेमाल करें.", + "settings.personal.interface.widescreenMode.label": "वाइडस्क्रीन मोड", + "settings.personal.notifications.addNotificationTarget.label": "सूचना गंतव्य जोड़ें", + "settings.personal.notifications.browserNotifications.label": "ब्राउज़र सूचनाएँ", + "settings.personal.notifications.notificationSound.label": "सूचना की ध्वनि", + "settings.personal.notifications.notificationTargets.label": "सूचना गंतव्य", "settings.personal.notifications.title": "सूचनाएं", - "settings.personal.personalization.clearMemory.label": "", - "settings.personal.personalization.manageMemories.label": "", - "settings.personal.personalization.memory.description": "", + "settings.personal.personalization.clearMemory.label": "मेमोरी साफ़ करें", + "settings.personal.personalization.manageMemories.label": "प्रबंधित करें", + "settings.personal.personalization.memory.description": "नीचे दिए गए 'प्रबंधित करें' बटन से मेमोरी जोड़कर आप LLM के साथ अपनी बातचीत को व्यक्तिगत बना सकते हैं, ताकि वे अधिक उपयोगी और आपके अनुरूप हों.", "settings.personal.personalization.memory.label": "मेमोरी", - "settings.personal.personalization.noResultsFound.description": "एलएलएम द्वारा सुलभ यादें यहां दिखाई जाएंगी।", - "settings.personal.personalization.savedMemories.label": "", + "settings.personal.personalization.noResultsFound.description": "LLM की पहुँच वाली मेमोरी यहाँ दिखाई जाएँगी.", + "settings.personal.personalization.savedMemories.label": "सहेजी गई मेमोरी", "settings.personal.personalization.sections.memory.title": "मेमोरी", - "settings.personal.personalization.title": "पेरसनलाइज़मेंट", - "settings.personal.shortcuts.acceptAutocomplete.label": "", - "settings.personal.shortcuts.addPrompt.label": "", - "settings.personal.shortcuts.allowToolCall.label": "", - "settings.personal.shortcuts.attachFile.label": "", - "settings.personal.shortcuts.closeModal.label": "", + "settings.personal.personalization.title": "वैयक्तिकरण", + "settings.personal.shortcuts.acceptAutocomplete.label": "ऑटोकम्प्लीट जनरेशन स्वीकार करें\\nप्रॉम्प्ट वेरिएबल पर जाएँ", + "settings.personal.shortcuts.addPrompt.label": "कस्टम प्रॉम्प्ट जोड़ें", + "settings.personal.shortcuts.allowToolCall.label": "टूल कॉल की अनुमति दें", + "settings.personal.shortcuts.attachFile.label": "ज्ञान से फ़ाइल संलग्न करें", + "settings.personal.shortcuts.closeModal.label": "डायलॉग बंद करें", "settings.personal.shortcuts.command.label": "कमांड", - "settings.personal.shortcuts.copyLastCodeBlock.label": "", - "settings.personal.shortcuts.copyLastResponse.label": "", + "settings.personal.shortcuts.copyLastCodeBlock.label": "अंतिम कोड ब्लॉक कॉपी करें", + "settings.personal.shortcuts.copyLastResponse.label": "अंतिम उत्तर कॉपी करें", "settings.personal.shortcuts.deleteChat.label": "चैट हटाएं", - "settings.personal.shortcuts.denyToolCall.label": "", - "settings.personal.shortcuts.enableKeyboardShortcuts.description": "", - "settings.personal.shortcuts.enableKeyboardShortcuts.label": "", - "settings.personal.shortcuts.focusInput.label": "", - "settings.personal.shortcuts.generateMessagePair.label": "", - "settings.personal.shortcuts.navigateChatDown.label": "", - "settings.personal.shortcuts.navigateChatUp.label": "", - "settings.personal.shortcuts.navigatePromptHistoryUp.label": "", + "settings.personal.shortcuts.denyToolCall.label": "टूल कॉल अस्वीकार करें", + "settings.personal.shortcuts.enableKeyboardShortcuts.description": "अक्षम होने पर कीबोर्ड शॉर्टकट कोई कार्रवाई शुरू नहीं करेंगे.", + "settings.personal.shortcuts.enableKeyboardShortcuts.label": "कीबोर्ड शॉर्टकट सक्षम करें", + "settings.personal.shortcuts.focusInput.label": "चैट इनपुट पर फ़ोकस करें", + "settings.personal.shortcuts.generateMessagePair.label": "संदेश जोड़ी जनरेट करें", + "settings.personal.shortcuts.navigateChatDown.label": "अगली चैट पर जाएँ", + "settings.personal.shortcuts.navigateChatUp.label": "पिछली चैट पर जाएँ", + "settings.personal.shortcuts.navigatePromptHistoryUp.label": "अंतिम संदेश संपादित करें", "settings.personal.shortcuts.newChat.label": "नई चैट", - "settings.personal.shortcuts.newTemporaryChat.label": "", - "settings.personal.shortcuts.openModelSelector.label": "", - "settings.personal.shortcuts.openSettings.label": "", - "settings.personal.shortcuts.preventFileCreation.label": "", - "settings.personal.shortcuts.regenerateResponse.label": "", - "settings.personal.shortcuts.resetDefaults.label": "", + "settings.personal.shortcuts.newTemporaryChat.label": "नई अस्थायी चैट", + "settings.personal.shortcuts.openModelSelector.label": "मॉडल चयनकर्ता खोलें", + "settings.personal.shortcuts.openSettings.label": "सेटिंग्स खोलें", + "settings.personal.shortcuts.preventFileCreation.label": "फ़ाइल बनने से रोकें", + "settings.personal.shortcuts.regenerateResponse.label": "उत्तर दोबारा जनरेट करें", + "settings.personal.shortcuts.resetDefaults.label": "डिफ़ॉल्ट रीसेट करें", "settings.personal.shortcuts.search.label": "खोजें", - "settings.personal.shortcuts.showShortcuts.label": "", - "settings.personal.shortcuts.stopGenerating.label": "", - "settings.personal.shortcuts.talkToModel.label": "", - "settings.personal.shortcuts.title": "", - "settings.personal.shortcuts.toggleControls.label": "", - "settings.personal.shortcuts.toggleDictation.label": "", - "settings.personal.shortcuts.toggleMute.label": "", - "settings.personal.shortcuts.toggleSidebar.label": "", - "settings.personal.tools.addConnection.description": "", - "settings.personal.tools.addConnection.label": "", - "settings.personal.tools.openApi.label": "", - "settings.personal.tools.sections.externalToolServers.title": "", - "settings.personal.tools.terminals.addConnection.description": "", - "settings.personal.tools.terminals.addConnection.label": "", - "settings.personal.tools.terminals.sections.openTerminal.title": "", - "settings.personal.tools.title": "", - "settings.personal.usage.sections.activity.title": "", - "settings.personal.usage.sections.activityInsights.title": "", - "settings.personal.usage.sections.mostUsedTools.title": "", - "settings.personal.usage.sections.overview.title": "", - "settings.personal.usage.sections.topModels.title": "", - "settings.personal.usage.title": "", + "settings.personal.shortcuts.showShortcuts.label": "शॉर्टकट दिखाएँ", + "settings.personal.shortcuts.stopGenerating.label": "जनरेट करना रोकें", + "settings.personal.shortcuts.talkToModel.label": "मॉडल से बात करें", + "settings.personal.shortcuts.title": "कीबोर्ड", + "settings.personal.shortcuts.toggleControls.label": "नियंत्रण दिखाएँ/छिपाएँ", + "settings.personal.shortcuts.toggleDictation.label": "डिक्टेशन चालू/बंद करें", + "settings.personal.shortcuts.toggleMute.label": "म्यूट चालू/बंद करें", + "settings.personal.shortcuts.toggleSidebar.label": "साइडबार दिखाएँ/छिपाएँ", + "settings.personal.tools.addConnection.description": "अपने OpenAPI-संगत बाहरी टूल सर्वर से कनेक्ट करें.", + "settings.personal.tools.addConnection.label": "कनेक्शन जोड़ें", + "settings.personal.tools.openApi.label": "OpenAPI", + "settings.personal.tools.sections.externalToolServers.title": "बाहरी टूल सर्वर", + "settings.personal.tools.terminals.addConnection.description": "फ़ाइलें ब्राउज़ करने और हमेशा उपलब्ध टूल के रूप में इस्तेमाल करने के लिए Open Terminal इंस्टेंस से कनेक्ट करें. एक समय में केवल एक सक्रिय हो सकता है.", + "settings.personal.tools.terminals.addConnection.label": "कनेक्शन जोड़ें", + "settings.personal.tools.terminals.sections.openTerminal.title": "Open Terminal", + "settings.personal.tools.title": "इंटीग्रेशन", + "settings.personal.usage.sections.activity.title": "गतिविधि", + "settings.personal.usage.sections.activityInsights.title": "गतिविधि की जानकारी", + "settings.personal.usage.sections.mostUsedTools.title": "सबसे अधिक इस्तेमाल किए गए टूल", + "settings.personal.usage.sections.overview.title": "अवलोकन", + "settings.personal.usage.sections.topModels.title": "शीर्ष मॉडल", + "settings.personal.usage.title": "उपयोग", "Share": "साझा करें", "Share Chat": "चैट साझा करें", - "Share link copied to clipboard.": "", - "Share to Open WebUI Community": "OpenWebUI समुदाय में साझा करें", - "Share your background and interests": "", - "Shared": "", - "Shared Chats": "", - "Shared with you": "", - "Sharing Permissions": "", - "Shell": "", - "Shorten older messages so this chat can keep going.": "", - "Show": "दिखाओ", - "Show \"What's New\" Modal on Login": "", - "Show All": "", - "Show all ({{COUNT}} characters)": "", - "Show Files": "", - "Show Hidden Files": "", - "Show image preview": "", - "Show me a code snippet": "", - "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "", - "Show Model": "", - "Show more": "", - "Show or switch the current model.": "", - "Show Shortcuts": "", - "Show the floating quick-action toolbar in chat.": "", - "Show your support!": "", + "Share link copied to clipboard.": "साझा करने का लिंक क्लिपबोर्ड पर कॉपी किया गया.", + "Share to Open WebUI Community": "Open WebUI समुदाय में साझा करें", + "Share your background and interests": "अपनी पृष्ठभूमि और रुचियाँ साझा करें", + "Shared": "साझा किया गया", + "Shared Chats": "साझा की गई चैट", + "Shared with you": "आपके साथ साझा किया गया", + "Sharing Permissions": "साझा करने की अनुमतियाँ", + "Shell": "शेल", + "Shorten older messages so this chat can keep going.": "इस चैट को जारी रखने के लिए पुराने संदेश संक्षिप्त करें.", + "Show": "दिखाएँ", + "Show \"What's New\" Modal on Login": "लॉगिन पर \"नया क्या है\" संवाद दिखाएँ", + "Show All": "सभी दिखाएँ", + "Show all ({{COUNT}} characters)": "पूरा दिखाएँ ({{COUNT}} अक्षर)", + "Show Files": "फ़ाइलें दिखाएँ", + "Show Hidden Files": "छिपी फ़ाइलें दिखाएँ", + "Show image preview": "चित्र का पूर्वावलोकन दिखाएँ", + "Show me a code snippet": "मुझे कोड का एक अंश दिखाएँ", + "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "मुझे CSS और JavaScript में किसी वेबसाइट के स्थिर हेडर का कोड अंश दिखाएँ.", + "Show Model": "मॉडल दिखाएँ", + "Show more": "और दिखाएँ", + "Show or switch the current model.": "वर्तमान मॉडल दिखाएँ या बदलें.", + "Show Shortcuts": "शॉर्टकट दिखाएँ", + "Show the floating quick-action toolbar in chat.": "चैट में तैरता हुआ त्वरित कार्रवाई टूलबार दिखाएँ.", + "Show your support!": "अपना समर्थन दिखाएँ!", "Showcased creativity": "रचनात्मकता का प्रदर्शन किया", - "Sidebar": "", + "Sidebar": "साइडबार", "Sign in": "साइन इन", - "Sign in to {{WEBUI_NAME}}": "", - "Sign in to {{WEBUI_NAME}} with LDAP": "", + "Sign in to {{WEBUI_NAME}}": "{{WEBUI_NAME}} में साइन इन करें", + "Sign in to {{WEBUI_NAME}} with LDAP": "LDAP से {{WEBUI_NAME}} में साइन इन करें", "Sign Out": "साइन आउट", "Sign up": "साइन अप", - "Sign up to {{WEBUI_NAME}}": "", - "Signing in to {{WEBUI_NAME}}": "", - "simultaneous sub-agents": "", - "Single": "", - "Sink List": "", - "Size": "", - "sk-1234": "", - "Skill created successfully": "", - "Skill deleted successfully": "", - "Skill Description": "", - "Skill ID": "", - "Skill imported successfully": "", - "Skill Instructions": "", - "Skill Menu": "", - "Skill Name": "", - "Skill updated successfully": "", - "Skills": "", - "Skills Access": "", - "Skills Public Sharing": "", - "Skills Sharing": "", - "Skip to main content": "", - "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "", - "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "", - "Something went wrong :/": "", - "Sonar": "", - "Sonar Deep Research": "", - "Sonar Pro": "", - "Sonar Reasoning": "", - "Sonar Reasoning Pro": "", - "Sort": "", + "Sign up to {{WEBUI_NAME}}": "{{WEBUI_NAME}} पर साइन अप करें", + "Signing in to {{WEBUI_NAME}}": "{{WEBUI_NAME}} में साइन इन हो रहा है", + "simultaneous sub-agents": "एक साथ काम करने वाले उप-एजेंट", + "Single": "एकल", + "Sink List": "सूची का स्तर नीचे करें", + "Size": "आकार", + "sk-1234": "sk-1234", + "Skill created successfully": "कौशल सफलतापूर्वक बनाया गया", + "Skill deleted successfully": "कौशल सफलतापूर्वक हटाया गया", + "Skill Description": "कौशल का विवरण", + "Skill ID": "कौशल ID", + "Skill imported successfully": "कौशल सफलतापूर्वक आयात किया गया", + "Skill Instructions": "कौशल के निर्देश", + "Skill Menu": "कौशल मेन्यू", + "Skill Name": "कौशल का नाम", + "Skill updated successfully": "कौशल सफलतापूर्वक अपडेट किया गया", + "Skills": "कौशल", + "Skills Access": "कौशल तक पहुँच", + "Skills Public Sharing": "कौशल को सार्वजनिक रूप से साझा करना", + "Skills Sharing": "कौशल साझा करना", + "Skip to main content": "मुख्य सामग्री पर जाएँ", + "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "Slim को एंबेडिंग, वेक्टर भंडारण और दस्तावेज़ निष्कर्षण के लिए बाहरी सेवाओं की आवश्यकता है. सामान्य पाठ फ़ाइलें स्थानीय रूप से पढ़ी जा सकती हैं.", + "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "Slim को बाहरी वाक् प्रदाताओं की आवश्यकता है. स्थानीय वाक् मॉडल और ऑडियो रूपांतरण उपलब्ध नहीं हैं.", + "Something went wrong :/": "कुछ गड़बड़ हुई :/", + "Sonar": "Sonar", + "Sonar Deep Research": "Sonar Deep Research", + "Sonar Pro": "Sonar Pro", + "Sonar Reasoning": "Sonar Reasoning", + "Sonar Reasoning Pro": "Sonar Reasoning Pro", + "Sort": "क्रमबद्ध करें", "Source": "स्रोत", - "Specific users or groups": "", + "Specific users or groups": "विशिष्ट उपयोगकर्ता या समूह", "Speech recognition error: {{error}}": "वाक् पहचान त्रुटि: {{error}}", - "Speech-to-Text Language": "", - "Sponsor on GitHub": "", - "Staan API Key": "", - "Start a new conversation": "", + "Speech-to-Text Language": "वाक् से पाठ की भाषा", + "Sponsor on GitHub": "GitHub पर प्रायोजित करें", + "Staan API Key": "Staan API कुंजी", + "Start a new conversation": "नई बातचीत शुरू करें", "Start of the channel": "चैनल की शुरुआत", - "Start Tag": "", - "Start the chat to use this terminal.": "", - "Starting in {{count}} minutes_one": "", - "Starting in {{count}} minutes_other": "", - "Starting in 1 minute": "", - "Starting kernel...": "", - "Starting now": "", - "Status": "", - "Status cleared successfully": "", - "Status updated successfully": "", - "Status: check what is running in this chat.": "", + "Start Tag": "शुरुआती टैग", + "Start the chat to use this terminal.": "इस टर्मिनल का उपयोग करने के लिए चैट शुरू करें.", + "Starting in {{count}} minutes_one": "{{count}} मिनट में शुरू होगा", + "Starting in {{count}} minutes_other": "{{count}} मिनट में शुरू होगा", + "Starting in 1 minute": "1 मिनट में शुरू होगा", + "Starting kernel...": "कर्नेल शुरू हो रहा है...", + "Starting now": "अभी शुरू हो रहा है", + "Status": "स्थिति", + "Status cleared successfully": "स्थिति सफलतापूर्वक साफ़ की गई", + "Status updated successfully": "स्थिति सफलतापूर्वक अपडेट की गई", + "Status: check what is running in this chat.": "स्थिति: देखें कि इस चैट में क्या चल रहा है.", "STDOUT/STDERR": "STDOUT/STDERR", - "Stop": "", - "Stop before each tool call until you allow or deny it.": "", - "Stop camera": "", - "Stop Download": "", - "Stop Generating": "", - "Storage": "", - "Streamable HTTP": "", - "Strikethrough": "", - "Su_day_of_week": "", - "Submit answers": "", - "Submit question": "", - "Submit suggestion": "", - "Subtitle": "", + "Stop": "रोकें", + "Stop before each tool call until you allow or deny it.": "हर टूल कॉल से पहले रुकें, जब तक आप उसे अनुमति या अस्वीकृति न दें.", + "Stop camera": "कैमरा बंद करें", + "Stop Download": "डाउनलोड रोकें", + "Stop Generating": "बनाना रोकें", + "Storage": "भंडारण", + "Streamable HTTP": "स्ट्रीम करने योग्य HTTP", + "Strikethrough": "बीच से काटा हुआ पाठ", + "Su_day_of_week": "रवि", + "Submit answers": "उत्तर जमा करें", + "Submit question": "प्रश्न जमा करें", + "Submit suggestion": "सुझाव जमा करें", + "Subtitle": "उपशीर्षक", "Success": "संपन्न", - "Successfully imported {{userCount}} users.": "", - "Suggest a change": "", - "Suggested": "सुझावी", - "Suggested prompts": "", - "Summarize this note.": "", - "Support": "", - "Support this plugin:": "", - "Swap": "", - "Switch camera": "", - "Switch to JSON editor": "", - "Switch to visual editor": "", - "Sync": "", - "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", - "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", - "Sync Complete!": "", - "Sync directory": "", - "Sync Failed": "", - "Sync Usage Stats": "", - "Syncing stats...": "", - "Syncing...": "", - "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "", + "Successfully imported {{userCount}} users.": "{{userCount}} उपयोगकर्ता सफलतापूर्वक आयात किए गए.", + "Suggest a change": "बदलाव सुझाएँ", + "Suggested": "सुझाया गया", + "Suggested prompts": "सुझाए गए प्रॉम्प्ट", + "Summarize this note.": "इस नोट का सारांश बनाएँ.", + "Support": "सहायता", + "Support this plugin:": "इस प्लगइन का समर्थन करें:", + "Swap": "अदला-बदली करें", + "Switch camera": "कैमरा बदलें", + "Switch to JSON editor": "JSON संपादक पर जाएँ", + "Switch to visual editor": "विज़ुअल संपादक पर जाएँ", + "Sync": "सिंक करें", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "इस ज्ञान आधार के साथ स्थानीय डायरेक्टरी सिंक करें. केवल नई और बदली गई फ़ाइलें अपलोड होंगी. डायरेक्टरी की संरचना दोहराई जाएगी.", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "सिंक पूरा हुआ: {{added}} जोड़ी गईं, {{modified}} बदली गईं, {{deleted}} हटाई गईं, {{unmodified}} अपरिवर्तित", + "Sync Complete!": "सिंक पूरा हुआ!", + "Sync directory": "डायरेक्टरी सिंक करें", + "Sync Failed": "सिंक विफल रहा", + "Sync Usage Stats": "उपयोग के आँकड़े सिंक करें", + "Syncing stats...": "आँकड़े सिंक हो रहे हैं...", + "Syncing...": "सिंक हो रहा है...", + "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "पिछले सिंक के टाइमस्टैम्प के बाद अपडेट हुई चैट ही सिंक करता है. सभी चैट फिर सिंक करने के लिए अक्षम करें.", "System": "सिस्टम", - "System events only": "", - "System Instructions": "", + "System events only": "केवल सिस्टम इवेंट", + "System Instructions": "सिस्टम निर्देश", "System Prompt": "सिस्टम प्रॉम्प्ट", - "Table": "", - "Tag": "", - "Tags": "", - "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "", - "Talk to Model": "", - "Tap to interrupt": "", - "Target ID": "", - "Target ID for notify": "", - "Task List": "", - "Tasks": "", - "tasks completed": "", - "Tell me a fun fact": "", - "Tell me a random fun fact about the Roman Empire": "", + "Table": "तालिका", + "Tag": "टैग", + "Tags": "टैग", + "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "टेल फ़्री सैंपलिंग का उपयोग आउटपुट में कम संभावना वाले टोकन का प्रभाव घटाने के लिए होता है. अधिक मान (जैसे, 2.0) प्रभाव को अधिक घटाएगा, जबकि 1.0 मान इस सेटिंग को अक्षम करता है.", + "Talk to Model": "मॉडल से बात करें", + "Tap to interrupt": "बीच में रोकने के लिए टैप करें", + "Target ID": "गंतव्य ID", + "Target ID for notify": "सूचित करने के लिए गंतव्य ID", + "Task List": "कार्य सूची", + "Tasks": "कार्य", + "tasks completed": "कार्य पूरे हुए", + "Tell me a fun fact": "मुझे कोई रोचक तथ्य बताएँ", + "Tell me a random fun fact about the Roman Empire": "मुझे रोमन साम्राज्य के बारे में कोई रोचक तथ्य बताएँ", "Tell us more:": "हमें और अधिक बताएँ:", - "Temporary": "", - "Temporary Chat": "", - "Temporary: toggle temporary chat for this new chat.": "", - "Terminal": "", - "Terminal Contexts": "", - "Terminal servers saved": "", - "Test": "", - "Test must pass before a source is created.": "", - "Test notification sent.": "", - "Test Query": "", - "Test returned no results.": "", - "Test succeeded.": "", - "Test the source before creating it.": "", - "Test the source before saving it.": "", - "Th_day_of_week": "", + "Temporary": "अस्थायी", + "Temporary Chat": "अस्थायी चैट", + "Temporary: toggle temporary chat for this new chat.": "अस्थायी: इस नई चैट के लिए अस्थायी चैट चालू या बंद करें.", + "Terminal": "टर्मिनल", + "Terminal Contexts": "टर्मिनल संदर्भ", + "Terminal servers saved": "टर्मिनल सर्वर सहेजे गए", + "Test": "परीक्षण करें", + "Test must pass before a source is created.": "स्रोत बनाने से पहले परीक्षण सफल होना चाहिए.", + "Test notification sent.": "परीक्षण सूचना भेजी गई.", + "Test Query": "परीक्षण क्वेरी", + "Test returned no results.": "परीक्षण में कोई परिणाम नहीं मिला.", + "Test succeeded.": "परीक्षण सफल रहा.", + "Test the source before creating it.": "स्रोत बनाने से पहले उसका परीक्षण करें.", + "Test the source before saving it.": "स्रोत सहेजने से पहले उसका परीक्षण करें.", + "Th_day_of_week": "गुरु", "Thanks for your feedback!": "आपकी प्रतिक्रिया के लिए धन्यवाद!", - "The Application Account DN you bind with for search": "", - "The base to search for users": "", - "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "", - "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "", - "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "", - "The format to return a response in. Format can be json or a JSON schema.": "", - "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "", - "The LDAP attribute that maps to the mail that users use to sign in.": "", - "The LDAP attribute that maps to the username that users use to sign in.": "", - "The notify tool always sends to an enabled target, regardless of automatic event settings.": "", - "The passwords you entered don't quite match. Please double-check and try again.": "", - "The score should be a value between 0.0 (0%) and 1.0 (100%).": "स्कोर का मान 0.0 (0%) और 1.0 (100%) के बीच होना चाहिए।", - "There was an error syncing your stats. Please try again.": "", - "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "", - "thinking, output_config": "", - "Thinking...": "", - "This action cannot be undone. Do you wish to continue?": "", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "", - "This chat won't appear in history and your messages will not be saved.": "", - "This folder is empty": "", - "This is a default user permission and will remain enabled.": "", - "This is an experimental feature, it may not function as expected and is subject to change at any time.": "", - "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "", - "This model is not publicly available. Please select another model.": "", - "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "", - "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", - "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This response was generated by \"{{model}}\"": "", - "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", - "This will delete": "", - "This will delete {{NAME}} and all its contents.": "", - "This will delete all models including custom models and cannot be undone.": "", - "This will delete the cached model and cannot be undone.": "", - "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", - "This will revoke the current API key.": "", + "The Application Account DN you bind with for search": "खोज के लिए बाइंड करने में उपयोग किया जाने वाला एप्लिकेशन खाता DN", + "The base to search for users": "उपयोगकर्ताओं को खोजने का आधार", + "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "बैच आकार तय करता है कि एक बार में कितने पाठ अनुरोध एक साथ संसाधित हों. अधिक बैच आकार मॉडल का प्रदर्शन और गति बढ़ा सकता है, लेकिन इसके लिए अधिक मेमोरी भी आवश्यक है.", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "इस प्लगइन के डेवलपर समुदाय के उत्साही स्वयंसेवक हैं. यदि आपको यह प्लगइन उपयोगी लगता है, तो कृपया इसके विकास में योगदान देने पर विचार करें.", + "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "मूल्यांकन लीडरबोर्ड Elo रेटिंग प्रणाली पर आधारित है और वास्तविक समय में अपडेट होता है.", + "The format to return a response in. Format can be json or a JSON schema.": "उत्तर लौटाने का फ़ॉर्मैट. फ़ॉर्मैट json या JSON स्कीमा हो सकता है.", + "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "इनपुट ऑडियो की भाषा. ISO-639-1 (जैसे en) फ़ॉर्मैट में इनपुट की भाषा देने से सटीकता बेहतर होगी और विलंब घटेगा. भाषा स्वतः पहचानने के लिए खाली छोड़ें.", + "The LDAP attribute that maps to the mail that users use to sign in.": "साइन इन में उपयोग होने वाले मेल से मैप होने वाला LDAP एट्रिब्यूट.", + "The LDAP attribute that maps to the username that users use to sign in.": "साइन इन में उपयोग होने वाले उपयोगकर्ता नाम से मैप होने वाला LDAP एट्रिब्यूट.", + "The notify tool always sends to an enabled target, regardless of automatic event settings.": "notify टूल हमेशा सक्षम गंतव्य पर भेजता है, चाहे स्वचालित इवेंट सेटिंग्स कुछ भी हों.", + "The passwords you entered don't quite match. Please double-check and try again.": "आपके दर्ज किए गए पासवर्ड मेल नहीं खाते. कृपया दोबारा जाँचें और फिर प्रयास करें.", + "The score should be a value between 0.0 (0%) and 1.0 (100%).": "स्कोर का मान 0.0 (0%) और 1.0 (100%) के बीच होना चाहिए.", + "There was an error syncing your stats. Please try again.": "आपके आँकड़े सिंक करते समय त्रुटि हुई. कृपया फिर प्रयास करें.", + "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "ये सेटिंग्स परिवेश वेरिएबल से पढ़ी जाती हैं और {{ENV_VAR}} अक्षम होने पर यहाँ संपादित नहीं की जा सकतीं.", + "thinking, output_config": "thinking, output_config", + "Thinking...": "सोच रहा है...", + "This action cannot be undone. Do you wish to continue?": "यह कार्रवाई वापस नहीं ली जा सकती. क्या आप जारी रखना चाहते हैं?", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "यह चैनल {{createdAt}} को बनाया गया था. यह {{channelName}} चैनल की बिल्कुल शुरुआत है.", + "This chat won't appear in history and your messages will not be saved.": "यह चैट इतिहास में नहीं दिखेगी और आपके संदेश सहेजे नहीं जाएँगे.", + "This folder is empty": "यह फ़ोल्डर खाली है", + "This is a default user permission and will remain enabled.": "यह डिफ़ॉल्ट उपयोगकर्ता अनुमति है और सक्षम रहेगी.", + "This is an experimental feature, it may not function as expected and is subject to change at any time.": "यह प्रायोगिक सुविधा है, संभव है यह अपेक्षा के अनुसार काम न करे और किसी भी समय बदल सकती है.", + "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "यह ज्ञान आधार कनेक्ट किए गए स्रोत से जानकारी प्राप्त करता है. Open WebUI इसमें क्वेरी कर सकता है, लेकिन इसके स्रोत डेटा को अपलोड, सिंक, संपादित, हटा, रीसेट या फिर इंडेक्स नहीं कर सकता.", + "This model is not publicly available. Please select another model.": "यह मॉडल सार्वजनिक रूप से उपलब्ध नहीं है. कृपया दूसरा मॉडल चुनें.", + "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "यह विकल्प नियंत्रित करता है कि अनुरोध के बाद मॉडल कितनी देर मेमोरी में लोड रहेगा (डिफ़ॉल्ट: 5m)", + "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "यह विकल्प नियंत्रित करता है कि संदर्भ रीफ़्रेश करते समय कितने टोकन बचाए जाएँ. उदाहरण के लिए, 2 सेट करने पर बातचीत के संदर्भ के अंतिम 2 टोकन रखे जाएँगे. संदर्भ बनाए रखने से बातचीत की निरंतरता बनी रह सकती है, लेकिन नए विषयों पर उत्तर देने की क्षमता घट सकती है.", + "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "यह विकल्प मॉडल के उत्तर में बनने वाले टोकन की अधिकतम संख्या सेट करता है. सीमा बढ़ाने से मॉडल लंबे उत्तर दे सकता है, लेकिन इससे अनुपयोगी या अप्रासंगिक सामग्री बनने की संभावना भी बढ़ सकती है.", + "This response was generated by \"{{model}}\"": "यह उत्तर \"{{model}}\" ने बनाया था", + "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "इस टेम्पलेट में कई संदर्भ प्लेसहोल्डर ([context] या {{CONTEXT}}) हैं. हर स्थान पर संदर्भ डाला जाएगा.", + "This will delete": "इससे हट जाएगा", + "This will delete {{NAME}} and all its contents.": "इससे {{NAME}} और इसकी पूरी सामग्री हट जाएगी.", + "This will delete all models including custom models and cannot be undone.": "इससे कस्टम मॉडल सहित सभी मॉडल हट जाएँगे और इसे वापस नहीं लिया जा सकता.", + "This will delete the cached model and cannot be undone.": "इससे कैश किया गया मॉडल हट जाएगा और इसे वापस नहीं लिया जा सकता.", + "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "इससे कैलेंडर \"{{name}}\" और उसके सभी इवेंट स्थायी रूप से हट जाएँगे. यह कार्रवाई वापस नहीं ली जा सकती.", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "इससे इस ज्ञान आधार की सभी फ़ाइलें और डायरेक्टरी हट जाएँगी. यह कार्रवाई वापस नहीं ली जा सकती.", + "This will revoke the current API key.": "इससे वर्तमान API कुंजी रद्द हो जाएगी.", "Thorough explanation": "विस्तृत व्याख्या", - "Thought": "", - "Thought for {{DURATION}}": "", - "Thought for {{DURATION}} seconds": "", - "Thought for less than a second": "", + "Thought": "सोचा", + "Thought for {{DURATION}}": "{{DURATION}} तक सोचा", + "Thought for {{DURATION}} seconds": "{{DURATION}} सेकंड तक सोचा", + "Thought for less than a second": "एक सेकंड से कम समय तक सोचा", "Thread": "थ्रेड", - "Through": "", - "Thumbs up/down ratings from users on model responses": "", - "Tika": "", - "Tika 3.x": "", - "Tika 4.x": "", - "Tika Server URL required.": "", - "Tiktoken": "", - "Time": "", - "Timeout": "", - "Timer": "", + "Through": "तक", + "Thumbs up/down ratings from users on model responses": "मॉडल के उत्तरों पर उपयोगकर्ताओं की पसंद/नापसंद रेटिंग", + "Tika": "Tika", + "Tika 3.x": "Tika 3.x", + "Tika 4.x": "Tika 4.x", + "Tika Server URL required.": "Tika सर्वर URL आवश्यक है.", + "Tiktoken": "Tiktoken", + "Time": "समय", + "Timeout": "समय सीमा", + "Timer": "टाइमर", "Title": "शीर्षक", - "Title cannot be an empty string.": "शीर्षक नहीं खाली पाठ हो सकता है.", - "Title is required": "", + "Title cannot be an empty string.": "शीर्षक खाली स्ट्रिंग नहीं हो सकता.", + "Title is required": "शीर्षक आवश्यक है", "To access the available model names for downloading,": "डाउनलोड करने के लिए उपलब्ध मॉडल नामों तक पहुंचने के लिए,", "To access the GGUF models available for downloading,": "डाउनलोडिंग के लिए उपलब्ध GGUF मॉडल तक पहुँचने के लिए,", - "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "", - "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "", - "To learn more about available endpoints, visit our documentation.": "", - "To learn more about SpeechT5,": "", - "To see the available CMU Arctic speaker embeddings,": "", - "To select actions here, add them to the \"Functions\" workspace first.": "", - "To select default filters here, enable toggleable filters for this model first.": "", - "To select filters here, add them to the \"Functions\" workspace first.": "", - "To select skills here, add them to the \"Skills\" workspace first.": "", - "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "", + "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "WebUI तक पहुँचने के लिए कृपया प्रशासक से संपर्क करें. एडमिन पैनल से प्रशासक उपयोगकर्ताओं की स्थिति प्रबंधित कर सकते हैं.", + "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "यहाँ ज्ञान आधार संलग्न करने के लिए पहले उन्हें \"ज्ञान\" वर्कस्पेस में जोड़ें.", + "To learn more about available endpoints, visit our documentation.": "उपलब्ध एंडपॉइंट के बारे में और जानने के लिए हमारे दस्तावेज़ देखें.", + "To learn more about SpeechT5,": "SpeechT5 के बारे में और जानने के लिए,", + "To see the available CMU Arctic speaker embeddings,": "उपलब्ध CMU Arctic वक्ता एंबेडिंग देखने के लिए,", + "To select actions here, add them to the \"Functions\" workspace first.": "यहाँ कार्रवाइयाँ चुनने के लिए पहले उन्हें \"फ़ंक्शन\" वर्कस्पेस में जोड़ें.", + "To select default filters here, enable toggleable filters for this model first.": "यहाँ डिफ़ॉल्ट फ़िल्टर चुनने के लिए पहले इस मॉडल के चालू या बंद किए जा सकने वाले फ़िल्टर सक्षम करें.", + "To select filters here, add them to the \"Functions\" workspace first.": "यहाँ फ़िल्टर चुनने के लिए पहले उन्हें \"फ़ंक्शन\" वर्कस्पेस में जोड़ें.", + "To select skills here, add them to the \"Skills\" workspace first.": "यहाँ कौशल चुनने के लिए पहले उन्हें \"कौशल\" वर्कस्पेस में जोड़ें.", + "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "यहाँ टूलकिट चुनने के लिए पहले उन्हें \"टूल\" वर्कस्पेस में जोड़ें या टूल सर्वर सक्षम करें.", "Today": "आज", - "Today at": "", - "Toggle {{COUNT}} sources": "", - "Toggle 1 source": "", - "Toggle Controls": "", - "Toggle details": "", - "Toggle Dictation": "", - "Toggle Mute": "", - "Toggle Sidebar": "", - "Toggle status history": "", - "Toggle temporary chat for this new chat.": "", - "Toggle whether current connection is active.": "", - "Token": "", - "Token activity": "", - "Token counts are estimates and may not reflect actual API usage": "", - "tokens": "", - "Tokens": "", - "Too verbose": "", - "tool": "", - "Tool created successfully": "", - "Tool deleted successfully": "", - "Tool Description": "", - "Tool ID": "", - "Tool imported successfully": "", - "tool loops per sub-agent": "", - "Tool Menu": "", - "Tool Name": "", - "Tool Permissions": "", - "Tool Servers": "", - "Tool updated successfully": "", - "Tools": "", - "Tools Access": "", - "Tools can execute arbitrary code.": "", - "Tools have a function calling system that allows arbitrary code execution.": "", - "Tools Public Sharing": "", - "Tools Sharing": "", - "Top": "", - "Total chats": "", - "Transformers": "", - "Translation key": "", - "Trial License": "", - "Try adjusting your search or filter to find what you are looking for.": "", - "Try Again": "", - "TTS Voice": "", - "Tu_day_of_week": "", + "Today at": "आज", + "Toggle {{COUNT}} sources": "{{COUNT}} स्रोत दिखाएँ या छिपाएँ", + "Toggle 1 source": "1 स्रोत दिखाएँ या छिपाएँ", + "Toggle Controls": "नियंत्रण दिखाएँ या छिपाएँ", + "Toggle details": "विवरण दिखाएँ या छिपाएँ", + "Toggle Dictation": "बोलकर लिखना चालू या बंद करें", + "Toggle Mute": "म्यूट चालू या बंद करें", + "Toggle Sidebar": "साइडबार दिखाएँ या छिपाएँ", + "Toggle status history": "स्थिति का इतिहास दिखाएँ या छिपाएँ", + "Toggle temporary chat for this new chat.": "इस नई चैट के लिए अस्थायी चैट चालू या बंद करें.", + "Toggle whether current connection is active.": "वर्तमान कनेक्शन सक्रिय या निष्क्रिय करें.", + "Token": "टोकन", + "Token activity": "टोकन गतिविधि", + "Token counts are estimates and may not reflect actual API usage": "टोकन की संख्याएँ अनुमान हैं और वास्तविक API उपयोग से भिन्न हो सकती हैं", + "tokens": "टोकन", + "Tokens": "टोकन", + "Too verbose": "बहुत विस्तार से लिखा गया", + "tool": "टूल", + "Tool created successfully": "टूल सफलतापूर्वक बनाया गया", + "Tool deleted successfully": "टूल सफलतापूर्वक हटाया गया", + "Tool Description": "टूल का विवरण", + "Tool ID": "टूल ID", + "Tool imported successfully": "टूल सफलतापूर्वक आयात किया गया", + "tool loops per sub-agent": "प्रति उप-एजेंट टूल चक्र", + "Tool Menu": "टूल मेन्यू", + "Tool Name": "टूल का नाम", + "Tool Permissions": "टूल की अनुमतियाँ", + "Tool Servers": "टूल सर्वर", + "Tool updated successfully": "टूल सफलतापूर्वक अपडेट किया गया", + "Tools": "टूल", + "Tools Access": "टूल तक पहुँच", + "Tools can execute arbitrary code.": "टूल मनचाहा कोड चला सकते हैं.", + "Tools have a function calling system that allows arbitrary code execution.": "टूल में फ़ंक्शन कॉलिंग प्रणाली होती है जो मनचाहा कोड चलाने देती है.", + "Tools Public Sharing": "टूल को सार्वजनिक रूप से साझा करना", + "Tools Sharing": "टूल साझा करना", + "Top": "शीर्ष", + "Total chats": "कुल चैट", + "Transformers": "Transformers", + "Translation key": "अनुवाद कुंजी", + "Trial License": "परीक्षण लाइसेंस", + "Try adjusting your search or filter to find what you are looking for.": "जो आप ढूँढ रहे हैं, उसे खोजने के लिए अपनी खोज या फ़िल्टर बदलकर देखें.", + "Try Again": "फिर प्रयास करें", + "TTS Voice": "TTS आवाज़", + "Tu_day_of_week": "मंगल", "Type": "प्रकार", - "Type a model ref": "", - "Type here...": "", - "Type Hugging Face Resolve (Download) URL": "हगिंग फेस रिज़ॉल्व (डाउनलोड) यूआरएल टाइप करें", - "Type your answer": "", - "Uh-oh! There was an issue with the response.": "", - "Unarchive": "", - "Unarchive Chat": "", - "Unassigned": "", - "Underline": "", - "unknown": "", - "Unknown": "", - "Unknown User": "", - "Unload Model": "", - "Unloads {{FROM_NOW}}": "", - "Unmute": "", - "Unpin": "", - "Unpin from Sidebar": "", - "Unread": "", - "Unshare All": "", - "Unshare All Shared Chats": "", - "Unshare Chat": "", - "Unsupported file type.": "", - "Untagged": "", - "Untitled": "", - "Update": "", - "Update All Models": "", + "Type a model ref": "मॉडल संदर्भ लिखें", + "Type here...": "यहाँ लिखें...", + "Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (Download) URL लिखें", + "Type your answer": "अपना उत्तर लिखें", + "Uh-oh! There was an issue with the response.": "ओह! उत्तर में कोई समस्या हुई.", + "Unarchive": "संग्रह से निकालें", + "Unarchive Chat": "चैट संग्रह से निकालें", + "Unassigned": "असाइन नहीं किया गया", + "Underline": "रेखांकित करें", + "unknown": "अज्ञात", + "Unknown": "अज्ञात", + "Unknown User": "अज्ञात उपयोगकर्ता", + "Unload Model": "मॉडल अनलोड करें", + "Unloads {{FROM_NOW}}": "{{FROM_NOW}} अनलोड होगा", + "Unmute": "अनम्यूट करें", + "Unpin": "पिन हटाएँ", + "Unpin from Sidebar": "साइडबार से पिन हटाएँ", + "Unread": "अपठित", + "Unshare All": "सभी को साझा करना बंद करें", + "Unshare All Shared Chats": "सभी साझा की गई चैट को साझा करना बंद करें", + "Unshare Chat": "चैट साझा करना बंद करें", + "Unsupported file type.": "असमर्थित फ़ाइल प्रकार.", + "Untagged": "बिना टैग", + "Untitled": "बिना शीर्षक", + "Update": "अपडेट करें", + "Update All Models": "सभी मॉडल अपडेट करें", "Update and Copy Link": "अपडेट करें और लिंक कॉपी करें", - "Update for the latest features and improvements.": "", - "Update your status": "", - "Updated": "", - "Updated at": "", - "Updated At": "", - "Updating \"{{modelId}}\"": "", - "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "", - "Upload": "", + "Update for the latest features and improvements.": "नवीनतम सुविधाओं और सुधारों के लिए अपडेट करें.", + "Update your status": "अपनी स्थिति अपडेट करें", + "Updated": "अपडेट किया गया", + "Updated at": "अपडेट का समय", + "Updated At": "अपडेट का समय", + "Updating \"{{modelId}}\"": "\"{{modelId}}\" अपडेट हो रहा है", + "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "कस्टम थीम और ब्रांडिंग तथा समर्पित सहायता सहित बेहतर सुविधाओं के लिए लाइसेंस वाले प्लान में अपग्रेड करें.", + "Upload": "अपलोड करें", "Upload a GGUF model": "GGUF मॉडल अपलोड करें", - "Upload Audio": "", - "Upload directory": "", - "Upload failed": "", - "Upload failed for {{failed}} of {{total}} files.": "", - "Upload files": "", + "Upload Audio": "ऑडियो अपलोड करें", + "Upload directory": "डायरेक्टरी अपलोड करें", + "Upload failed": "अपलोड विफल रहा", + "Upload failed for {{failed}} of {{total}} files.": "{{total}} में से {{failed}} फ़ाइलों का अपलोड विफल रहा.", + "Upload files": "फ़ाइलें अपलोड करें", "Upload Files": "फ़ाइलें अपलोड करें", - "Upload Folder": "", - "Upload Model": "", - "Upload Photo": "", - "Upload profile image": "", - "Upload Progress": "प्रगति अपलोड करें", - "Uploaded files or images": "", - "Uploading": "", - "Uploading {{current}}/{{total}}: {{file}}": "", - "Uploading...": "", - "URL": "", - "URL is required": "", + "Upload Folder": "फ़ोल्डर अपलोड करें", + "Upload Model": "मॉडल अपलोड करें", + "Upload Photo": "फ़ोटो अपलोड करें", + "Upload profile image": "प्रोफ़ाइल चित्र अपलोड करें", + "Upload Progress": "अपलोड की प्रगति", + "Uploaded files or images": "अपलोड की गई फ़ाइलें या चित्र", + "Uploading": "अपलोड हो रहा है", + "Uploading {{current}}/{{total}}: {{file}}": "{{current}}/{{total}} अपलोड हो रहा है: {{file}}", + "Uploading...": "अपलोड हो रहा है...", + "URL": "URL", + "URL is required": "URL आवश्यक है", "URL Mode": "URL मोड", - "Use": "", - "Use a valid event name or pattern like user.*": "", - "Use default": "", - "Use device vibration feedback on supported Android devices.": "", - "Use discovered scopes": "", - "Use groups to organize your users and assign permissions.": "", - "Use segmented retrieval for focused and relevant content extraction.": "", - "Use segmented retrieval for focused and relevant context.": "", - "Use segmented retrieval for focused context.": "", - "Use these in model system prompts as {{example}}.": "", - "Use Web Search?": "", + "Use": "उपयोग करें", + "Use a valid event name or pattern like user.*": "मान्य इवेंट नाम या user.* जैसा पैटर्न उपयोग करें", + "Use default": "डिफ़ॉल्ट उपयोग करें", + "Use device vibration feedback on supported Android devices.": "समर्थित Android डिवाइस पर कंपन से फ़ीडबैक दें.", + "Use discovered scopes": "खोजे गए स्कोप उपयोग करें", + "Use groups to organize your users and assign permissions.": "अपने उपयोगकर्ताओं को व्यवस्थित करने और अनुमतियाँ देने के लिए समूह उपयोग करें.", + "Use segmented retrieval for focused and relevant content extraction.": "लक्षित और प्रासंगिक सामग्री निकालने के लिए खंडों में जानकारी प्राप्त करें.", + "Use segmented retrieval for focused and relevant context.": "लक्षित और प्रासंगिक संदर्भ के लिए खंडों में जानकारी प्राप्त करें.", + "Use segmented retrieval for focused context.": "लक्षित संदर्भ के लिए खंडों में जानकारी प्राप्त करें.", + "Use these in model system prompts as {{example}}.": "इन्हें मॉडल के सिस्टम प्रॉम्प्ट में {{example}} के रूप में उपयोग करें.", + "Use Web Search?": "वेब खोज का उपयोग करें?", "user": "उपयोगकर्ता", - "User": "", - "User Activity": "", - "User Count": "", - "User Groups": "", - "User location successfully retrieved.": "", - "User menu": "", - "User messages": "", - "User not found.": "", - "User Preview": "", - "User ratings (thumbs up/down)": "", - "User Variables": "", - "User Webhooks": "", - "Username": "", - "users": "", - "Users": "उपयोगकर्ताओं", - "Uses DefaultAzureCredential to authenticate": "", - "Uses defaults": "", - "Uses OAuth 2.1 Dynamic Client Registration": "", - "Using Entire Document": "", - "Using Focused Retrieval": "", - "Using the default arena model with all models. Click the plus button to add custom models.": "", - "Value": "", - "Valves": "", - "Valves updated": "", - "Valves updated successfully": "", + "User": "उपयोगकर्ता", + "User Activity": "उपयोगकर्ता गतिविधि", + "User Count": "उपयोगकर्ता संख्या", + "User Groups": "उपयोगकर्ता समूह", + "User location successfully retrieved.": "उपयोगकर्ता का स्थान सफलतापूर्वक प्राप्त हुआ.", + "User menu": "उपयोगकर्ता मेन्यू", + "User messages": "उपयोगकर्ता संदेश", + "User not found.": "उपयोगकर्ता नहीं मिला.", + "User Preview": "उपयोगकर्ता पूर्वावलोकन", + "User ratings (thumbs up/down)": "उपयोगकर्ता रेटिंग (पसंद/नापसंद)", + "User Variables": "उपयोगकर्ता वेरिएबल", + "User Webhooks": "उपयोगकर्ता वेबहुक", + "Username": "उपयोगकर्ता नाम", + "users": "उपयोगकर्ता", + "Users": "उपयोगकर्ता", + "Uses DefaultAzureCredential to authenticate": "प्रमाणीकरण के लिए DefaultAzureCredential उपयोग करता है", + "Uses defaults": "डिफ़ॉल्ट उपयोग करता है", + "Uses OAuth 2.1 Dynamic Client Registration": "OAuth 2.1 Dynamic Client Registration उपयोग करता है", + "Using Entire Document": "पूरा दस्तावेज़ उपयोग हो रहा है", + "Using Focused Retrieval": "लक्षित जानकारी प्राप्त की जा रही है", + "Using the default arena model with all models. Click the plus button to add custom models.": "सभी मॉडल के साथ डिफ़ॉल्ट एरीना मॉडल उपयोग हो रहा है. कस्टम मॉडल जोड़ने के लिए प्लस बटन पर क्लिक करें.", + "Value": "मान", + "Valves": "वाल्व", + "Valves updated": "वाल्व अपडेट किए गए", + "Valves updated successfully": "वाल्व सफलतापूर्वक अपडेट किए गए", "variable": "वेरिएबल", - "Variable key": "", - "Variable keys must be unique.": "", - "Variable keys must use lowercase snake case.": "", - "Variable value": "", - "Vector Field": "", - "Verify Connection": "", - "Version {{selectedVersion}} of {{totalVersions}}": "", - "Version deleted": "", - "Vertical Layout": "", - "Video player": "", - "View channel": "", - "View chat": "", - "View Replies": "", - "View Result from {{NAME}}": "", - "View source: {{name}}": "", - "View source: {{title}}": "", - "Viewport Pinned": "", - "Viewport Unpinned": "", - "Visibility": "", - "Visible": "", - "Visible to all users": "", - "Visual": "", - "vocabulary for a college entrance exam": "", - "Voice": "", - "Voice Input": "", - "Voice mode": "", - "Wait for the current response to finish before compacting.": "", - "Wait for the current response to finish before forking.": "", - "Waiting for upload": "", - "Waiting for upload...": "", + "Variable key": "वेरिएबल कुंजी", + "Variable keys must be unique.": "वेरिएबल कुंजियाँ अनन्य होनी चाहिए.", + "Variable keys must use lowercase snake case.": "वेरिएबल कुंजियाँ लोअरकेस स्नेक केस में होनी चाहिए.", + "Variable value": "वेरिएबल का मान", + "Vector Field": "वेक्टर फ़ील्ड", + "Verify Connection": "कनेक्शन सत्यापित करें", + "Version {{selectedVersion}} of {{totalVersions}}": "{{totalVersions}} में से संस्करण {{selectedVersion}}", + "Version deleted": "संस्करण हटाया गया", + "Vertical Layout": "लंबवत लेआउट", + "Video player": "वीडियो प्लेयर", + "View channel": "चैनल देखें", + "View chat": "चैट देखें", + "View Replies": "जवाब देखें", + "View Result from {{NAME}}": "{{NAME}} का परिणाम देखें", + "View source: {{name}}": "स्रोत देखें: {{name}}", + "View source: {{title}}": "स्रोत देखें: {{title}}", + "Viewport Pinned": "व्यूपोर्ट पिन किया गया", + "Viewport Unpinned": "व्यूपोर्ट से पिन हटाया गया", + "Visibility": "दृश्यता", + "Visible": "दृश्यमान", + "Visible to all users": "सभी उपयोगकर्ताओं को दिखता है", + "Visual": "विज़ुअल", + "vocabulary for a college entrance exam": "कॉलेज प्रवेश परीक्षा के लिए शब्दावली", + "Voice": "आवाज़", + "Voice Input": "वॉइस इनपुट", + "Voice mode": "वॉइस मोड", + "Wait for the current response to finish before compacting.": "संक्षिप्त करने से पहले वर्तमान उत्तर पूरा होने तक प्रतीक्षा करें.", + "Wait for the current response to finish before forking.": "शाखा बनाने से पहले वर्तमान उत्तर पूरा होने तक प्रतीक्षा करें.", + "Waiting for upload": "अपलोड की प्रतीक्षा है", + "Waiting for upload...": "अपलोड की प्रतीक्षा है...", "Warning": "चेतावनी", "Warning:": "चेतावनी:", - "Warning: Enabling this will allow users to run scheduled prompts automatically.": "", - "Warning: Enabling this will allow users to upload arbitrary code on the server.": "", - "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "", - "We_day_of_week": "", + "Warning: Enabling this will allow users to run scheduled prompts automatically.": "चेतावनी: इसे सक्षम करने से उपयोगकर्ता शेड्यूल किए गए प्रॉम्प्ट अपने आप चला सकेंगे.", + "Warning: Enabling this will allow users to upload arbitrary code on the server.": "चेतावनी: इसे सक्षम करने से उपयोगकर्ता सर्वर पर मनचाहा कोड अपलोड कर सकेंगे.", + "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "चेतावनी: Jupyter में निष्पादन मनचाहा कोड चलाने देता है, जिससे गंभीर सुरक्षा जोखिम होते हैं—अत्यंत सावधानी से आगे बढ़ें.", + "We_day_of_week": "बुध", "Web": "वेब", - "Web API": "", + "Web API": "वेब API", "Web Search": "वेब खोज", - "Webhook": "", - "Webhook deleted": "", - "Webhook Name": "", - "Webhook saved": "", - "Webhooks": "", - "Webpage URLs": "", - "WebUI will make requests to \"{{url}}\"": "", - "WebUI will make requests to \"{{url}}/api/chat\"": "", - "WebUI will make requests to \"{{url}}/chat/completions\"": "", - "Week": "", - "Week of": "", - "Weekly": "", - "Weekly at": "", - "Welcome to your AI home.": "", - "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "", - "What are you trying to achieve?": "", - "What are you working on?": "", - "What is NOT shared:": "", - "What is shared:": "", + "Webhook": "वेबहुक", + "Webhook deleted": "वेबहुक हटाया गया", + "Webhook Name": "वेबहुक का नाम", + "Webhook saved": "वेबहुक सहेजा गया", + "Webhooks": "वेबहुक", + "Webpage URLs": "वेबपृष्ठ URL", + "WebUI will make requests to \"{{url}}\"": "WebUI \"{{url}}\" पर अनुरोध करेगा", + "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI \"{{url}}/api/chat\" पर अनुरोध करेगा", + "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI \"{{url}}/chat/completions\" पर अनुरोध करेगा", + "Week": "सप्ताह", + "Week of": "सप्ताह आरंभ", + "Weekly": "साप्ताहिक", + "Weekly at": "हर सप्ताह इस समय", + "Welcome to your AI home.": "आपके AI घर में स्वागत है.", + "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "अपने बच्चों की कलाकृतियों के साथ मैं कौन-से 5 रचनात्मक काम कर सकता हूँ? मैं उन्हें फेंकना नहीं चाहता, लेकिन वे बहुत जगह भी घेर रही हैं.", + "What are you trying to achieve?": "आप क्या हासिल करने की कोशिश कर रहे हैं?", + "What are you working on?": "आप किस पर काम कर रहे हैं?", + "What is NOT shared:": "क्या साझा नहीं होता:", + "What is shared:": "क्या साझा होता है:", "What's New in": "इसमें नया क्या है", - "What's on your mind?": "", - "When": "", - "Whisper (Local)": "", - "Who can share to this group": "", - "Why?": "", - "Width": "", - "Wikipedia": "", - "Won": "", - "Working Directory": "", - "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "", + "What's on your mind?": "आप क्या सोच रहे हैं?", + "When": "कब", + "Whisper (Local)": "Whisper (स्थानीय)", + "Who can share to this group": "इस समूह में कौन साझा कर सकता है", + "Why?": "क्यों?", + "Width": "चौड़ाई", + "Wikipedia": "Wikipedia", + "Won": "जीत गया", + "Working Directory": "कार्यशील डायरेक्टरी", + "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "top-k के साथ काम करता है. अधिक मान (जैसे, 0.95) अधिक विविध पाठ देगा, जबकि कम मान (जैसे, 0.5) अधिक केंद्रित और सीमित विकल्पों वाला पाठ बनाएगा.", "Workspace": "वर्कस्पेस", - "Workspace Models": "", - "Workspace Permissions": "", - "Write": "", - "Write a summary in 50 words that summarizes {{topic}}.": "50 शब्दों में एक सारांश लिखें जो [विषय या कीवर्ड] का सारांश प्रस्तुत करता हो।", - "Write something...": "", - "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "यहाँ अपने मॉडल के सिस्टम प्रॉम्प्ट की सामग्री लिखें\nउदाहरण: आप Super Mario Bros के मारियो हैं और एक सहायक के रूप में कार्य कर रहे हैं।", - "Yahoo": "", - "Yandex": "", - "Yearly": "", + "Workspace Models": "वर्कस्पेस के मॉडल", + "Workspace Permissions": "वर्कस्पेस की अनुमतियाँ", + "Write": "लिखें", + "Write a summary in 50 words that summarizes {{topic}}.": "{{topic}} का सारांश 50 शब्दों में लिखें.", + "Write something...": "कुछ लिखें...", + "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "अपने मॉडल के सिस्टम प्रॉम्प्ट की सामग्री यहाँ लिखें\nजैसे) आप Super Mario Bros के Mario हैं और सहायक की भूमिका निभा रहे हैं.", + "Yahoo": "Yahoo", + "Yandex": "Yandex", + "Yearly": "वार्षिक", "Yesterday": "कल", "You": "आप", - "You are a sub-agent...": "", - "You are currently using a trial license. Please contact support to upgrade your license.": "", - "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "", - "You cannot upload an empty file.": "", - "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 skill.": "", - "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 upload files.": "", - "You do not have permission to upload web content.": "", - "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "", - "You have no archived conversations.": "आपको कोई अंकित चैट नहीं है।", - "You have no shared conversations.": "", + "You are a sub-agent...": "आप एक उप-एजेंट हैं...", + "You are currently using a trial license. Please contact support to upgrade your license.": "आप वर्तमान में परीक्षण लाइसेंस उपयोग कर रहे हैं. लाइसेंस अपग्रेड करने के लिए कृपया सहायता टीम से संपर्क करें.", + "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "आप एक समय में अधिकतम {{maxCount}} फ़ाइलों के साथ ही चैट कर सकते हैं.", + "You cannot upload an empty file.": "आप खाली फ़ाइल अपलोड नहीं कर सकते.", + "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 skill.": "आपको यह कौशल संपादित करने की अनुमति नहीं है.", + "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 upload files.": "आपको फ़ाइलें अपलोड करने की अनुमति नहीं है.", + "You do not have permission to upload web content.": "आपको वेब सामग्री अपलोड करने की अनुमति नहीं है.", + "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "आपके पास 50 से अधिक उपयोगकर्ता हैं, जिसका अक्सर अर्थ होता है कि यह वर्कस्पेस संगठन के उपयोग में है. Open WebUI अपने मौजूदा रूप में बिना किसी प्रतिबंध या छिपी सीमा के मुफ़्त है, और हम इसे ऐसा ही रखना चाहते हैं.", + "You have no archived conversations.": "आपकी कोई संग्रहीत बातचीत नहीं है.", + "You have no shared conversations.": "आपकी कोई साझा की गई बातचीत नहीं है.", "You have shared this chat": "आपने इस चैट को शेयर किया है", - "You're a helpful assistant.": "आप एक मददगार सहायक हैं।", - "You're now logged in.": "अब आप लॉग इन हो गए हैं", - "Your account status is currently pending activation.": "", - "Your browser does not support the audio tag.": "", - "Your browser does not support the video tag.": "", - "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.": "", - "Your message text or inputs": "", - "Your query will be sent to the configured web search provider.": "", - "Your usage stats have been successfully synced.": "", - "YouTube": "Youtube", - "YouTube video player": "", - "Zoom in": "", - "Zoom out": "" + "You're a helpful assistant.": "आप एक मददगार सहायक हैं.", + "You're now logged in.": "अब आप लॉग इन हो गए हैं.", + "Your account status is currently pending activation.": "आपका खाता अभी सक्रिय किए जाने की प्रतीक्षा में है.", + "Your browser does not support the audio tag.": "आपका ब्राउज़र audio टैग का समर्थन नहीं करता.", + "Your browser does not support the video tag.": "आपका ब्राउज़र video टैग का समर्थन नहीं करता.", + "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.": "आपका पूरा योगदान सीधे प्लगइन डेवलपर को जाएगा; Open WebUI कोई हिस्सा नहीं लेता. हालाँकि, चुने गए योगदान प्लेटफ़ॉर्म का अपना शुल्क हो सकता है.", + "Your message text or inputs": "आपके संदेश का पाठ या इनपुट", + "Your query will be sent to the configured web search provider.": "आपकी क्वेरी कॉन्फ़िगर किए गए वेब खोज प्रदाता को भेजी जाएगी.", + "Your usage stats have been successfully synced.": "आपके उपयोग के आँकड़े सफलतापूर्वक सिंक हो गए हैं.", + "YouTube": "YouTube", + "YouTube video player": "YouTube वीडियो प्लेयर", + "Zoom in": "ज़ूम इन करें", + "Zoom out": "ज़ूम आउट करें" } From dc713a68a4ba0e1691892d8f53ebe1e9a877721c Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 1 Oct 2026 07:31:24 +0400 Subject: [PATCH 185/583] refac --- .../components/admin/Users/UserList.svelte | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index fc94474ef6..06bdd1f178 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -72,7 +72,7 @@ } }; - const sortState = (key) => + const sortState = (key, orderBy, direction) => orderBy === key ? (direction === 'asc' ? 'ascending' : 'descending') : 'none'; const setSortKey = (key) => { @@ -225,7 +225,11 @@ - - - - -
+ + + + + +
+ + +
{#if showPreview} From 571dafae3699a809e99f79a9908964578f626675 Mon Sep 17 00:00:00 2001 From: G30 <50341825+silentoplayz@users.noreply.github.com> Date: Fri, 2 Oct 2026 00:32:55 -0400 Subject: [PATCH 204/583] fix: show unsaved model editor changes in the JSON Preview (#31851) --- .../workspace/Models/ModelEditor.svelte | 240 +++++++++--------- 1 file changed, 124 insertions(+), 116 deletions(-) diff --git a/src/lib/components/workspace/Models/ModelEditor.svelte b/src/lib/components/workspace/Models/ModelEditor.svelte index 5b195afee5..e774d6dad7 100644 --- a/src/lib/components/workspace/Models/ModelEditor.svelte +++ b/src/lib/components/workspace/Models/ModelEditor.svelte @@ -280,13 +280,132 @@ ); }; + $: modelInfo = (() => { + const modelInfo = structuredClone(info); + + modelInfo.id = id; + modelInfo.name = name; + + modelInfo.params = { ...modelInfo.params, ...params }; + + modelInfo.access_grants = accessGrants; + modelInfo.meta.capabilities = capabilities; + + if (enableDescription) { + modelInfo.meta.description = + (modelInfo.meta.description ?? '').trim() === '' ? null : modelInfo.meta.description; + } else { + modelInfo.meta.description = null; + } + + if (knowledge.length > 0) { + modelInfo.meta.knowledge = knowledge.map(toModelKnowledgeReference); + } else { + if (modelInfo.meta.knowledge) { + delete modelInfo.meta.knowledge; + } + } + + if (toolIds.length > 0) { + modelInfo.meta.toolIds = toolIds; + } else { + if (modelInfo.meta.toolIds) { + delete modelInfo.meta.toolIds; + } + } + + if (skillIds.length > 0) { + modelInfo.meta.skillIds = skillIds; + } else { + if (modelInfo.meta.skillIds) { + delete modelInfo.meta.skillIds; + } + } + + if (filterIds.length > 0) { + modelInfo.meta.filterIds = filterIds; + } else { + if (modelInfo.meta.filterIds) { + delete modelInfo.meta.filterIds; + } + } + + if (defaultFilterIds.length > 0) { + modelInfo.meta.defaultFilterIds = defaultFilterIds; + } else { + if (modelInfo.meta.defaultFilterIds) { + delete modelInfo.meta.defaultFilterIds; + } + } + + if (actionIds.length > 0) { + modelInfo.meta.actionIds = actionIds; + } else { + if (modelInfo.meta.actionIds) { + delete modelInfo.meta.actionIds; + } + } + + if (defaultFeatureIds.length > 0) { + modelInfo.meta.defaultFeatureIds = defaultFeatureIds; + } else { + if (modelInfo.meta.defaultFeatureIds) { + delete modelInfo.meta.defaultFeatureIds; + } + } + + if (Object.keys(builtinTools).length > 0) { + modelInfo.meta.builtinTools = builtinTools; + } else { + if (modelInfo.meta.builtinTools) { + delete modelInfo.meta.builtinTools; + } + } + + modelInfo.meta.i18n = pruneEmptyLocaleEntries(modelInfo.meta.i18n); + if (Object.keys(modelInfo.meta.i18n).length === 0) { + delete modelInfo.meta.i18n; + } + + if (terminalId) { + modelInfo.meta.terminalId = terminalId; + } else { + if (modelInfo.meta.terminalId) { + delete modelInfo.meta.terminalId; + } + } + + if (tts.voice !== '') { + if (!modelInfo.meta.tts) modelInfo.meta.tts = {}; + modelInfo.meta.tts.voice = tts.voice; + } else { + if (modelInfo.meta.tts?.voice) { + delete modelInfo.meta.tts.voice; + if (Object.keys(modelInfo.meta.tts).length === 0) { + delete modelInfo.meta.tts; + } + } + } + + modelInfo.params.system = system.trim() === '' ? null : system; + modelInfo.params.stop = params.stop + ? (typeof params.stop === 'string' ? params.stop.split(',') : params.stop).filter((s) => + s.trim() + ) + : null; + Object.keys(modelInfo.params).forEach((key) => { + if (modelInfo.params[key] === '' || modelInfo.params[key] === null) { + delete modelInfo.params[key]; + } + }); + + return modelInfo; + })(); + const submitHandler = async () => { if (loading) return; loading = true; - info.id = id; - info.name = name; - if (id === '') { toast.error($i18n.t('Model ID is required.')); loading = false; @@ -322,118 +441,7 @@ return; } - info.params = { ...info.params, ...params }; - - info.access_grants = accessGrants; - info.meta.capabilities = capabilities; - - if (enableDescription) { - info.meta.description = - (info.meta.description ?? '').trim() === '' ? null : info.meta.description; - } else { - info.meta.description = null; - } - - if (knowledge.length > 0) { - info.meta.knowledge = knowledge.map(toModelKnowledgeReference); - } else { - if (info.meta.knowledge) { - delete info.meta.knowledge; - } - } - - if (toolIds.length > 0) { - info.meta.toolIds = toolIds; - } else { - if (info.meta.toolIds) { - delete info.meta.toolIds; - } - } - - if (skillIds.length > 0) { - info.meta.skillIds = skillIds; - } else { - if (info.meta.skillIds) { - delete info.meta.skillIds; - } - } - - if (filterIds.length > 0) { - info.meta.filterIds = filterIds; - } else { - if (info.meta.filterIds) { - delete info.meta.filterIds; - } - } - - if (defaultFilterIds.length > 0) { - info.meta.defaultFilterIds = defaultFilterIds; - } else { - if (info.meta.defaultFilterIds) { - delete info.meta.defaultFilterIds; - } - } - - if (actionIds.length > 0) { - info.meta.actionIds = actionIds; - } else { - if (info.meta.actionIds) { - delete info.meta.actionIds; - } - } - - if (defaultFeatureIds.length > 0) { - info.meta.defaultFeatureIds = defaultFeatureIds; - } else { - if (info.meta.defaultFeatureIds) { - delete info.meta.defaultFeatureIds; - } - } - - if (Object.keys(builtinTools).length > 0) { - info.meta.builtinTools = builtinTools; - } else { - if (info.meta.builtinTools) { - delete info.meta.builtinTools; - } - } - - info.meta.i18n = pruneEmptyLocaleEntries(info.meta.i18n); - if (Object.keys(info.meta.i18n).length === 0) { - delete info.meta.i18n; - } - - if (terminalId) { - info.meta.terminalId = terminalId; - } else { - if (info.meta.terminalId) { - delete info.meta.terminalId; - } - } - - if (tts.voice !== '') { - if (!info.meta.tts) info.meta.tts = {}; - info.meta.tts.voice = tts.voice; - } else { - if (info.meta.tts?.voice) { - delete info.meta.tts.voice; - if (Object.keys(info.meta.tts).length === 0) { - delete info.meta.tts; - } - } - } - - info.params.system = system.trim() === '' ? null : system; - info.params.stop = params.stop - ? (typeof params.stop === 'string' ? params.stop.split(',') : params.stop).filter((s) => - s.trim() - ) - : null; - Object.keys(info.params).forEach((key) => { - if (info.params[key] === '' || info.params[key] === null) { - delete info.params[key]; - } - }); + info = structuredClone(modelInfo); let uploadedId: string | null = null; const previousBackground = info.meta.background_image_url; @@ -1351,7 +1359,7 @@ - {/if} + disabled={readOnly} + /> + + +
+ + + + + {#if edit} +
+ {id} +
+ {:else} + + + + {/if} +
- {#if !disabled} -
+ {#if historical} +
+ {$i18n.t('Read Only')} + + {#if !disabled}{/if} +
+ {/if} + {#if historyDiff} +
+ + + {#each Object.entries(historyDiff.metadata) as [key, values]}

+ {key}: {JSON.stringify(values)} +

{/each} + {#each historyDiff.files as file}{/each} +
{fileDiff}
+
+ {/if} + {#if conflict}{/if} +
+ {#if ready} + {#snippet version()} + {#if edit} +
+ { + if (open) { + historyPage = 1; + history = []; + loadHistory(); + } + }} + > + +
+ + + {#if historyLoading || historyError || history.some((entry) => entry.id !== currentVersionId)} +
+ {/if} + {#if historyLoading} +
+ {$i18n.t('Loading...')} +
+ {:else if historyError} + + {:else} + {#each history.filter((entry) => entry.id !== currentVersionId) as entry} + + {:else} + {#if historyPage > 1} +
+ {$i18n.t('No more versions')} +
+ {/if} + {/each} + {/if} + {#if historyPage > 1 || history.length === 20} +
+
+ + +
+ {/if} +
+
+
+
+ {/if} + {/snippet} + {#snippet exports()} + + + {/snippet} +
{/if} +
+ + {#if !readOnly} +
+ + {/if} + {selected} + {#if /\.md$/i.test(selected) && !loading}{/if} + +
+ {#if loadError} + {:else if loading}

{$i18n.t('Loading...')}

+ {:else if objectUrl} + {#if /\.(png|jpe?g|gif|webp|avif)$/i.test(selected)}{selected} + {:else if /\.pdf$/i.test(selected)} + {:else}

Binary file. Download to open.

{/if} + {:else if preview} + +
{ + const link = (event.target as Element).closest('a[data-skill-path]') as HTMLAnchorElement; + if (link) { + event.preventDefault(); + const path = link.dataset.skillPath!; + if (files.some((f) => f.path === path)) open(path); + else toast.error('File not found'); + } + }} + > + {@html previewHtml} +
+ {:else}
+ { + flush(); + await onSave(); + }} + /> +
{/if} +
+{/snippet} + +{#snippet createInput()} + {#if creating && !readOnly} +
+ + { + if (event.key === 'Enter') { + event.preventDefault(); + event.stopPropagation(); + submitCreate(); + } + if (event.key === 'Escape') { + event.preventDefault(); + event.stopPropagation(); + cancelCreate(); + } + }} + on:blur={submitCreate} + /> +
+ {/if} +{/snippet} + +{#snippet fileList()} +
+
+
{@render version()}
+ {#if !readOnly || canExport} + + +
+ + {#if !readOnly} + + + + + {/if} + {#if canExport} + {#if !readOnly}
{/if} + {@render exports()} + {/if} +
+
+
+ {/if} +
+ {#if $mobile && !showFileDrawer && loadError} + + {/if} + {#if selectedPaths.size && !readOnly}{/if} + {#if !currentPath}{@render createInput()}{/if} +
    + {#each rows as { entry, path, depth } (path)} + 0} + parentWritable={!readOnly && path !== 'SKILL.md'} + {selectedPaths} + onOpen={(entry) => (entry.type === 'directory' ? toggleFolder(path) : open(path))} + onSelect={(_, __, path) => { + path = path.replace(/\/$/, ''); + selectedPaths.has(path) ? selectedPaths.delete(path) : selectedPaths.add(path); + selectedPaths = new Set(selectedPaths); + }} + onToggleExpand={toggleFolder} + onRename={(path, name) => rename(path, path.slice(0, path.lastIndexOf('/') + 1) + name)} + onDelete={(path) => + ask('Delete this file or folder?', false, () => remove(path.replace(/\/$/, '')))} + onMove={(paths, destination) => + paths.forEach((path) => { + path = path.replace(/\/$/, ''); + rename(path, destination + (path.split('/').pop() || 'file')); + })} + onDownload={download} + /> + {#if creating && !readOnly && entry.type === 'directory' && currentPath === path + '/'} +
  • {@render createInput()}
  • + {/if} + {/each} +
+ {#if !rows.length}

+ Empty folders are saved when they contain files. +

{/if} +
+{/snippet} diff --git a/src/lib/components/workspace/Skills/SkillImport.svelte b/src/lib/components/workspace/Skills/SkillImport.svelte new file mode 100644 index 0000000000..fa58379861 --- /dev/null +++ b/src/lib/components/workspace/Skills/SkillImport.svelte @@ -0,0 +1,122 @@ + + + +
+
+

Import skills

+ +
+

+ New skills and copies are private. Replace saves a new version and preserves existing sharing. +

+
+ {#each items as item, index} +
+
+ + +
+ + {#if item.id_taken || item.name_taken}

+ ID or name already exists. Choose a unique ID and name for a copy. +

{/if} +
+ {item.files.length} files{#each item.files as file}
+ {file.path} ({file.size} bytes) +
{/each} +
+ {#if results[index]}

+ {results[index].status}{results[index].error + ? `: ${skillError(results[index].error)}` + : ''} +

{/if} +
+ {/each} +
+ +
+
diff --git a/src/lib/components/workspace/Skills/SkillMenu.svelte b/src/lib/components/workspace/Skills/SkillMenu.svelte index 5e5e8fd61b..04c6995c29 100644 --- a/src/lib/components/workspace/Skills/SkillMenu.svelte +++ b/src/lib/components/workspace/Skills/SkillMenu.svelte @@ -79,13 +79,20 @@ + {/if}
diff --git a/src/routes/(app)/workspace/skills/create/+page.svelte b/src/routes/(app)/workspace/skills/create/+page.svelte index 3985cea955..e61c291ac4 100644 --- a/src/routes/(app)/workspace/skills/create/+page.svelte +++ b/src/routes/(app)/workspace/skills/create/+page.svelte @@ -4,12 +4,14 @@ import { skills } from '$lib/stores'; import { onMount, getContext } from 'svelte'; - const i18n = getContext('i18n'); + const i18n = getContext('i18n'); import { createNewSkill, getSkills } from '$lib/apis/skills'; import SkillEditor from '$lib/components/workspace/Skills/SkillEditor.svelte'; let skill: { + meta?: any; + files?: any[]; name: string; id: string; description: string; @@ -20,16 +22,13 @@ let clone = false; - const onSubmit = async (_skill) => { - const res = await createNewSkill(localStorage.token, _skill).catch((error) => { - toast.error(`${error}`); - return null; - }); + const onSubmit = async (_skill: any) => { + const res = await createNewSkill(localStorage.token, _skill); if (res) { toast.success($i18n.t('Skill created successfully')); await skills.set(await getSkills(localStorage.token)); - await goto('/workspace/skills'); + return res; } }; @@ -44,6 +43,7 @@ id: _skill.id || '', description: _skill.description || '', content: _skill.content || '', + files: _skill.files, meta: _skill.meta ?? {}, is_active: _skill.is_active ?? true, access_grants: _skill.access_grants !== undefined ? _skill.access_grants : [] diff --git a/src/routes/(app)/workspace/skills/edit/+page.svelte b/src/routes/(app)/workspace/skills/edit/+page.svelte index 47a4ceb709..a4ce361cd8 100644 --- a/src/routes/(app)/workspace/skills/edit/+page.svelte +++ b/src/routes/(app)/workspace/skills/edit/+page.svelte @@ -4,39 +4,27 @@ import { skills } from '$lib/stores'; import { onMount, getContext } from 'svelte'; - const i18n = getContext('i18n'); + const i18n = getContext('i18n'); import { getSkillById, getSkills, updateSkillById } from '$lib/apis/skills'; import { page } from '$app/stores'; import SkillEditor from '$lib/components/workspace/Skills/SkillEditor.svelte'; - let skill = null; + let skill: any = null; let disabled = false; $: skillId = $page.url.searchParams.get('id'); - const onSubmit = async (_skill) => { - const updatedSkill = await updateSkillById(localStorage.token, skillId, _skill).catch( - (error) => { - toast.error(`${error}`); - return null; - } - ); + const onSubmit = async (_skill: any) => { + const updatedSkill = await updateSkillById(localStorage.token, skillId!, _skill); if (updatedSkill) { toast.success($i18n.t('Skill updated successfully')); await skills.set(await getSkills(localStorage.token)); - skill = { - id: updatedSkill.id, - name: updatedSkill.name, - description: updatedSkill.description, - content: updatedSkill.content, - meta: updatedSkill.meta ?? {}, - is_active: updatedSkill.is_active, - access_grants: updatedSkill?.access_grants === undefined ? [] : updatedSkill?.access_grants - }; + skill = updatedSkill; } + return updatedSkill; }; onMount(async () => { @@ -47,16 +35,8 @@ }); if (_skill) { - disabled = !_skill.write_access ?? true; - skill = { - id: _skill.id, - name: _skill.name, - description: _skill.description, - content: _skill.content, - meta: _skill.meta ?? {}, - is_active: _skill.is_active, - access_grants: _skill?.access_grants === undefined ? [] : _skill?.access_grants - }; + disabled = !_skill.write_access; + skill = _skill; } else { goto('/workspace/skills'); } From 178de36662909b072864733aad5e074f2bb5d01e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 9 Oct 2026 15:09:56 +0400 Subject: [PATCH 429/583] refac --- src/lib/components/chat/FileNav/FileEntryRow.svelte | 6 ++++-- .../components/workspace/Skills/SkillFiles.svelte | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib/components/chat/FileNav/FileEntryRow.svelte b/src/lib/components/chat/FileNav/FileEntryRow.svelte index 3d1349b339..ea3b61a1ba 100644 --- a/src/lib/components/chat/FileNav/FileEntryRow.svelte +++ b/src/lib/components/chat/FileNav/FileEntryRow.svelte @@ -170,7 +170,7 @@
  • { if (!canMutate) { diff --git a/src/lib/components/workspace/Skills/SkillFiles.svelte b/src/lib/components/workspace/Skills/SkillFiles.svelte index 0ea160493e..011b81f8d8 100644 --- a/src/lib/components/workspace/Skills/SkillFiles.svelte +++ b/src/lib/components/workspace/Skills/SkillFiles.svelte @@ -541,12 +541,12 @@
    -
    +
    {#if $mobile}
    @@ -619,8 +619,8 @@ {#snippet createInput()} {#if creating && !readOnly}
    Date: Fri, 9 Oct 2026 15:54:44 +0400 Subject: [PATCH 430/583] refac --- backend/open_webui/routers/prompts.py | 88 +- backend/open_webui/routers/skills.py | 3 +- .../chat/FileNav/FileEntryRow.svelte | 2 +- src/lib/components/common/Tooltip.svelte | 2 +- src/lib/components/workspace/Prompts.svelte | 6 +- .../workspace/Prompts/PromptEditor.svelte | 1088 ++++++++--------- .../workspace/Skills/SkillEditor.svelte | 171 ++- .../workspace/Skills/SkillFiles.svelte | 11 + .../workspace/common/VersionDiff.svelte | 184 +++ .../workspace/common/VersionMenuItem.svelte | 49 + .../(app)/workspace/prompts/[id]/+page.svelte | 8 +- 11 files changed, 874 insertions(+), 738 deletions(-) create mode 100644 src/lib/components/workspace/common/VersionDiff.svelte create mode 100644 src/lib/components/workspace/common/VersionMenuItem.svelte diff --git a/backend/open_webui/routers/prompts.py b/backend/open_webui/routers/prompts.py index 0b6354b0b6..967d1b59ea 100644 --- a/backend/open_webui/routers/prompts.py +++ b/backend/open_webui/routers/prompts.py @@ -635,6 +635,50 @@ async def get_prompt_history( return history +@router.get('/id/{prompt_id}/history/diff') +async def get_prompt_diff( + prompt_id: str, + from_id: str, + to_id: str, + user=Depends(get_verified_user), + db: AsyncSession = Depends(get_async_session), +): + """Get diff between two versions.""" + prompt = await Prompts.get_prompt_by_id(prompt_id, db=db) + + if not prompt: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=ERROR_MESSAGES.NOT_FOUND, + ) + + # Check read access + if not ( + user.role == 'admin' + or prompt.user_id == user.id + or await AccessGrants.has_access( + user_id=user.id, + resource_type='prompt', + resource_id=prompt.id, + permission='read', + db=db, + ) + ): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) + + diff = await PromptHistories.compute_diff(from_id, to_id, prompt.id, db=db) + if not diff: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=ERROR_MESSAGES.NOT_FOUND, + ) + + return diff + + @router.get('/id/{prompt_id}/history/{history_id}', response_model=PromptHistoryModel) async def get_prompt_history_entry( prompt_id: str, @@ -726,47 +770,3 @@ async def delete_prompt_history_entry( ) return success - - -@router.get('/id/{prompt_id}/history/diff') -async def get_prompt_diff( - prompt_id: str, - from_id: str, - to_id: str, - user=Depends(get_verified_user), - db: AsyncSession = Depends(get_async_session), -): - """Get diff between two versions.""" - prompt = await Prompts.get_prompt_by_id(prompt_id, db=db) - - if not prompt: - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=ERROR_MESSAGES.NOT_FOUND, - ) - - # Check read access - if not ( - user.role == 'admin' - or prompt.user_id == user.id - or await AccessGrants.has_access( - user_id=user.id, - resource_type='prompt', - resource_id=prompt.id, - permission='read', - db=db, - ) - ): - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail=ERROR_MESSAGES.ACCESS_PROHIBITED, - ) - - diff = await PromptHistories.compute_diff(from_id, to_id, prompt.id, db=db) - if not diff: - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=ERROR_MESSAGES.NOT_FOUND, - ) - - return diff diff --git a/backend/open_webui/routers/skills.py b/backend/open_webui/routers/skills.py index 033b2bd5af..933966cb9f 100644 --- a/backend/open_webui/routers/skills.py +++ b/backend/open_webui/routers/skills.py @@ -664,7 +664,8 @@ async def diff_skill_file( return { 'binary': False, 'diff': ''.join( - difflib.unified_diff( + line if line.endswith('\n') else line + '\n\\ No newline at end of file\n' + for line in difflib.unified_diff( (files[0] or {}).get('content', '').splitlines(True), (files[1] or {}).get('content', '').splitlines(True), fromfile=f'{from_id[:7]}/{path}', diff --git a/src/lib/components/chat/FileNav/FileEntryRow.svelte b/src/lib/components/chat/FileNav/FileEntryRow.svelte index ea3b61a1ba..eecfa45386 100644 --- a/src/lib/components/chat/FileNav/FileEntryRow.svelte +++ b/src/lib/components/chat/FileNav/FileEntryRow.svelte @@ -339,7 +339,7 @@ {entry.name} {/if} - {#if !writable && !renaming} + {#if !writable && !renaming && variant !== 'workspace'} {$i18n.t('Read-only')} {/if} {#if entry.type === 'file' && entry.size !== undefined && !renaming} diff --git a/src/lib/components/common/Tooltip.svelte b/src/lib/components/common/Tooltip.svelte index 26f41406fc..011714d891 100644 --- a/src/lib/components/common/Tooltip.svelte +++ b/src/lib/components/common/Tooltip.svelte @@ -41,7 +41,7 @@ if (elementId) { tooltipContent = document.getElementById(elementId); } else { - tooltipContent = DOMPurify.sanitize(content); + tooltipContent = allowHTML ? DOMPurify.sanitize(content) : content; } // After the element changes, the old instance must be destroyed, otherwise the detached tippy floating DOM will be left behind diff --git a/src/lib/components/workspace/Prompts.svelte b/src/lib/components/workspace/Prompts.svelte index e2fb76af85..979c3c1db6 100644 --- a/src/lib/components/workspace/Prompts.svelte +++ b/src/lib/components/workspace/Prompts.svelte @@ -258,10 +258,7 @@ }; const createPromptHandler = async (prompt: PromptDraft) => { - const res = await createNewPrompt(localStorage.token, prompt).catch((error) => { - toast.error(`${error}`); - return null; - }); + const res = await createNewPrompt(localStorage.token, prompt); if (res) { toast.success($i18n.t('Prompt created successfully')); @@ -269,6 +266,7 @@ await getPromptList(); await closeCreateModal(); } + return res; }; const cloneHandler = async (prompt) => { diff --git a/src/lib/components/workspace/Prompts/PromptEditor.svelte b/src/lib/components/workspace/Prompts/PromptEditor.svelte index fef9a6219e..57e2330c63 100644 --- a/src/lib/components/workspace/Prompts/PromptEditor.svelte +++ b/src/lib/components/workspace/Prompts/PromptEditor.svelte @@ -1,24 +1,28 @@ - - -
    -
    -
    {$i18n.t('Edit Prompt')}
    - + + +
    + +
    + {#if modal} + {$i18n.t(clone ? 'Clone Prompt' : 'Create Prompt')} + {:else} + + {/if} +
    + {#if !disabled} (showAccessControlModal = true)} /> + {:else}{$i18n.t('Read Only')}{/if} + {#if modal}{/if} +
    - -
    -
    -
    {$i18n.t('Prompt Content')}
    -
    - -
    - - {:else} - + {/if}
    - {#if history.length > 0} -
    - {#each history as entry, index} - - {/each} - - {#if historyLoading} -
    - -
    - {/if} -
    - {:else if !historyLoading} -
    - {$i18n.t('No history available')} + {#if historical} +
    + {selectedHistoryEntry.id.slice(0, 7)} · {renderDate( + selectedHistoryEntry.created_at + )} + {#if !editingHistory}
    + + {#if !disabled} + + {/if} +
    {/if}
    {/if} -
    -{/snippet} + + {#if !readOnly} +
    + {#if edit}{:else}
    {/if} +
    + {#if edit}{/if} + +
    +
    + {/if} + +
    diff --git a/src/lib/components/workspace/Skills/SkillEditor.svelte b/src/lib/components/workspace/Skills/SkillEditor.svelte index b8da223aa5..9753744a56 100644 --- a/src/lib/components/workspace/Skills/SkillEditor.svelte +++ b/src/lib/components/workspace/Skills/SkillEditor.svelte @@ -6,7 +6,7 @@ import AccessButton from '$lib/components/common/AccessButton.svelte'; import ChevronLeft from '$lib/components/icons/ChevronLeft.svelte'; import ChevronDown from '$lib/components/icons/ChevronDown.svelte'; - import Check from '$lib/components/icons/Check.svelte'; + import VersionMenuItem from '../common/VersionMenuItem.svelte'; import Download from '$lib/components/icons/Download.svelte'; import Dropdown from '$lib/components/common/Dropdown.svelte'; import DropdownMenu from '$lib/components/common/DropdownMenu.svelte'; @@ -21,6 +21,7 @@ import { updateSkillAccessGrants } from '$lib/apis/skills'; import { goto, beforeNavigate } from '$app/navigation'; import SkillFiles from './SkillFiles.svelte'; + import VersionDiff from '../common/VersionDiff.svelte'; import ConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; import { getSkillHistory, @@ -55,16 +56,16 @@ let versionId: string | null = null; let currentVersionId: string | null = null; let history: any[] = []; + let currentHistoryEntry: any = null; let historyPage = 1; let showHistory = false; let historyLoading = false; let historyError = false; - let currentVersionName = ''; let commitMessage = ''; let conflict = false; let baseline = ''; let historyDiff: any = null; - let fileDiff = ''; + let comparing = false; let discard = false; let discardAction = () => {}; $: historical = edit && versionId !== currentVersionId; @@ -88,6 +89,11 @@ historyError = false; try { history = await getSkillHistory(localStorage.token, id, historyPage); + currentHistoryEntry = + history.find((entry) => entry.id === currentVersionId) || + (currentHistoryEntry?.id === currentVersionId + ? currentHistoryEntry + : await getSkillVersion(localStorage.token, id, currentVersionId!)); } catch (error) { historyError = true; toast.error(skillError(error)); @@ -100,17 +106,23 @@ if (selected !== versionId) confirmDiscard(() => selectVersion(selected)); }; const compareToCurrent = async () => { + if (comparing || historyDiff) return; + const fromId = versionId!; + const toId = currentVersionId!; + comparing = true; try { - historyDiff = await ( + const result = await ( await skillRequest( localStorage.token, - `/id/${id}/history/diff?${new URLSearchParams({ from_id: versionId!, to_id: currentVersionId! })}` + `/id/${id}/history/diff?${new URLSearchParams({ from_id: fromId, to_id: toId })}` ) ).json(); - historyDiff.fromId = versionId; - fileDiff = ''; + if (versionId === fromId && currentVersionId === toId) + historyDiff = { ...result, fromId, toId }; } catch (error) { toast.error(skillError(error)); + } finally { + comparing = false; } }; const selectVersion = async (selected: string) => { @@ -123,7 +135,6 @@ reloadKey++; remember(); historyDiff = null; - fileDiff = ''; } catch (error) { toast.error(skillError(error)); } @@ -132,7 +143,6 @@ try { const latest = await getSkillById(localStorage.token, id); currentVersionId = latest.version_id; - currentVersionName = latest.name; await selectVersion(latest.version_id); conflict = false; } catch (error) { @@ -148,10 +158,8 @@ currentVersionId! ); currentVersionId = restored.version_id; - currentVersionName = restored.name; versionId = restored.version_id; historyDiff = null; - fileDiff = ''; remember(); await loadHistory(); toast.success($i18n.t('Saved')); @@ -224,7 +232,6 @@ }); if (result) { currentVersionId = result.version_id; - currentVersionName = result.name; versionId = result.version_id; commitMessage = ''; conflict = false; @@ -249,7 +256,6 @@ description = skill.description || ''; content = skill.content || ''; currentVersionId = skill.version_id || null; - currentVersionName = skill.name; versionId = currentVersionId; accessGrants = skill?.access_grants === undefined ? [] : skill?.access_grants; } @@ -373,57 +379,6 @@
    - {#if historical} -
    - {$i18n.t('Read Only')} - - {#if !disabled}{/if} -
    - {/if} - {#if historyDiff} -
    - - - {#each Object.entries(historyDiff.metadata) as [key, values]}

    - {key}: {JSON.stringify(values)} -

    {/each} - {#each historyDiff.files as file}{/each} -
    {fileDiff}
    -
    - {/if} {#if conflict}