From ad01bca2b07f1fa76e0160ecfac5b4211364559c Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Tue, 29 Sep 2026 18:25:18 +0200
Subject: [PATCH 01/79] fix: repeating calendar events are missing when they
began before the visible dates (#31606)
A repeating event that was still running when the visible dates began was left out of the calendar. A weekly event from 23:00 to 01:00, for example, did not show on the following day, while the same event without a repeat did. Repeating events are now shown whenever any part of them falls within the visible dates.
Fixes #31605
---
backend/open_webui/utils/calendar.py | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/backend/open_webui/utils/calendar.py b/backend/open_webui/utils/calendar.py
index 0406db38f6af..063cbc8e3cfe 100644
--- a/backend/open_webui/utils/calendar.py
+++ b/backend/open_webui/utils/calendar.py
@@ -40,7 +40,6 @@ def to_local_datetime(timestamp_ns: int) -> dt.datetime:
range_start = to_local_datetime(range_start_ns)
range_end = to_local_datetime(range_end_ns)
- scan_start = range_start - dt.timedelta(days=1)
original_start_ns = event_dict['start_at']
original_start = to_local_datetime(original_start_ns)
@@ -55,6 +54,9 @@ def to_local_datetime(timestamp_ns: int) -> dt.datetime:
original_end_ns = event_dict.get('end_at')
duration_ns = (original_end_ns - original_start_ns) if original_end_ns else None
+ # Look back by the event length so occurrences still running at range start are found
+ event_length = dt.timedelta(microseconds=max(duration_ns or 0, 0) // 1000)
+ scan_start = range_start - dt.timedelta(days=1) - event_length
instances = []
previous_start = None
@@ -64,12 +66,13 @@ def to_local_datetime(timestamp_ns: int) -> dt.datetime:
previous_start = occurrence_start
instance_start_ns = int(occurrence_start.replace(tzinfo=user_timezone).timestamp() * 1_000_000_000)
+ instance_end_ns = (instance_start_ns + duration_ns) if duration_ns else None
- if instance_start_ns >= range_start_ns:
+ if instance_start_ns >= range_start_ns or (instance_end_ns and instance_end_ns > range_start_ns):
instance = {
**event_dict,
'start_at': instance_start_ns,
- 'end_at': (instance_start_ns + duration_ns) if duration_ns else None,
+ 'end_at': instance_end_ns,
'instance_id': f'{event_dict["id"]}_{instance_start_ns}',
}
instances.append(instance)
From 3819dc2793edb5060eb0a9859b9e00f4ce778704 Mon Sep 17 00:00:00 2001
From: spoofy <52956041+EllaFr@users.noreply.github.com>
Date: Tue, 29 Sep 2026 12:25:27 -0400
Subject: [PATCH 02/79] i18n: ms-MY language translations (#31560)
* i18n: complete and review Malaysian Malay translations
* i18n: clarify Malay time labels and technical wording
---
src/lib/i18n/locales/ms-MY/translation.json | 3282 ++++++++++---------
1 file changed, 1652 insertions(+), 1630 deletions(-)
diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json
index 45302adc7ec5..cccd5d7272d7 100644
--- a/src/lib/i18n/locales/ms-MY/translation.json
+++ b/src/lib/i18n/locales/ms-MY/translation.json
@@ -6,83 +6,92 @@
"[Today at] h:mm A": "[Hari ini pada] h:mm A",
"[Yesterday at] h:mm A": "[Semalam pada] h:mm A",
"{{ models }}": "{{ models }}",
- "{{count}} added lines_other": "",
- "{{COUNT}} Available Skills": "",
+ "{{count}} added lines_one": "{{count}} baris ditambah",
+ "{{count}} added lines_other": "{{count}} baris ditambah",
+ "{{COUNT}} Available Skills": "{{COUNT}} Kemahiran Tersedia",
"{{COUNT}} Available Tools": "{{COUNT}} Alat Tersedia",
"{{COUNT}} characters": "{{COUNT}} aksara",
- "{{COUNT}} document(s) selected.": "",
+ "{{COUNT}} document(s) selected.": "{{COUNT}} dokumen dipilih.",
"{{COUNT}} extracted lines": "{{COUNT}} baris yang diekstrak",
- "{{count}} files_other": "",
+ "{{count}} files_one": "{{count}} fail",
+ "{{count}} files_other": "{{count}} fail",
"{{COUNT}} files": "{{COUNT}} fail",
- "{{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_other": "",
- "{{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}} fail dipilih. Hanya fail baharu dan yang diubah suai akan dimuat naik. Fail yang dipadamkan akan dialih keluar. Struktur folder akan dicerminkan. Teruskan?",
+ "{{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}} fail dipilih. Hanya fail baharu dan yang diubah suai akan dimuat naik. Fail yang dipadamkan akan dialih keluar. Struktur folder akan dicerminkan. Teruskan?",
+ "{{count}} filters_one": "{{count}} penapis",
+ "{{count}} filters_other": "{{count}} penapis",
+ "{{count}} groups_one": "{{count}} kumpulan",
+ "{{count}} groups_other": "{{count}} kumpulan",
"{{COUNT}} hidden lines": "{{COUNT}} baris tersembunyi",
"{{COUNT}} members": "{{COUNT}} ahli",
- "{{count}} of {{total}} accessible_other": "",
- "{{COUNT}} pipeline(s) selected": "",
- "{{count}} removed lines_other": "",
+ "{{count}} of {{total}} accessible_one": "{{count}} daripada {{total}} boleh diakses",
+ "{{count}} of {{total}} accessible_other": "{{count}} daripada {{total}} boleh diakses",
+ "{{COUNT}} pipeline(s) selected": "{{COUNT}} saluran paip dipilih",
+ "{{count}} removed lines_one": "{{count}} baris dibuang",
+ "{{count}} removed lines_other": "{{count}} baris dibuang",
"{{COUNT}} Replies": "{{COUNT}} Balasan",
"{{COUNT}} Rows": "{{COUNT}} Baris",
- "{{count}} selected_other": "{{count}} terpilih",
+ "{{count}} selected_one": "{{count}} dipilih",
+ "{{count}} selected_other": "{{count}} dipilih",
"{{COUNT}} Sources": "{{COUNT}} Sumber",
- "{{count}} users_other": "",
+ "{{count}} users_one": "{{count}} pengguna",
+ "{{count}} users_other": "{{count}} pengguna",
"{{COUNT}} words": "{{COUNT}} perkataan",
- "{{COUNT}}d_time_ago": "{{COUNT}}h yang lalu",
- "{{COUNT}}h_time_ago": "{{COUNT}}j yang lalu",
- "{{COUNT}}m_time_ago": "{{COUNT}}m yang lalu",
- "{{COUNT}}w_time_ago": "{{COUNT}}mgu yang lalu",
- "{{COUNT}}y_time_ago": "{{COUNT}}t yang lalu",
- "{{label}} contains invalid JSON": "",
- "{{label}} must be a JSON object": "",
+ "{{COUNT}}d_time_ago": "{{COUNT}} hari yang lalu",
+ "{{COUNT}}h_time_ago": "{{COUNT}} jam yang lalu",
+ "{{COUNT}}m_time_ago": "{{COUNT}} minit yang lalu",
+ "{{COUNT}}w_time_ago": "{{COUNT}} minggu yang lalu",
+ "{{COUNT}}y_time_ago": "{{COUNT}} tahun yang lalu",
+ "{{label}} contains invalid JSON": "{{label}} mengandungi JSON yang tidak sah",
+ "{{label}} must be a JSON object": "{{label}} mestilah objek JSON",
"{{model}} download has been canceled": "Muat turun {{model}} telah dibatalkan",
"{{modelName}} profile image": "Imej profil {{modelName}}",
- "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} bertindak balas dengan {{REACTION}}",
- "{{page}} / {{totalPages}} ({{rows}} rows)": "",
- "{{percent}}% full": "",
- "{{user}}'s Chats": "Perbualan {{user}}",
- "{{webUIName}} Backend Required": "{{webUIName}} Backend diperlukan",
- "* (all domains)": "",
- "*Prompt node ID(s) are required for image generation": "*ID nod Prompt diperlukan untuk penjanaan imej",
- "*required": "",
- "1 file": "",
- "1 group": "",
+ "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} memberikan reaksi {{REACTION}}",
+ "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} baris)",
+ "{{percent}}% full": "{{percent}}% penuh",
+ "{{user}}'s Chats": "Chat {{user}}",
+ "{{webUIName}} Backend Required": "Backend {{webUIName}} Diperlukan",
+ "* (all domains)": "* (semua domain)",
+ "*Prompt node ID(s) are required for image generation": "*ID nod gesaan diperlukan untuk penjanaan imej",
+ "*required": "*diperlukan",
+ "1 file": "1 fail",
+ "1 group": "1 kumpulan",
"1 hour before": "1 jam sebelum",
"1 Source": "1 Sumber",
- "1 user": "",
+ "1 user": "1 pengguna",
"10 minutes before": "10 minit sebelum",
"15 minutes before": "15 minit sebelum",
- "1m_time_ago": "1m yang lalu",
+ "1m_time_ago": "1 minit yang lalu",
"30 minutes before": "30 minit sebelum",
"5 minutes before": "5 minit sebelum",
- "A chat run failed.": "",
- "A chat run finished successfully.": "",
- "A collaboration channel where people join as members": "Saluran kolaborasi di mana orang ramai menyertai sebagai ahli",
- "A discussion channel where access is controlled by groups and permissions": "Saluran perbincangan di mana akses dikawal oleh kumpulan dan kebenaran",
+ "A chat run failed.": "Pelaksanaan chat gagal.",
+ "A chat run finished successfully.": "Pelaksanaan chat selesai dengan jayanya.",
+ "A collaboration channel where people join as members": "Saluran kerjasama yang disertai pengguna sebagai ahli",
+ "A discussion channel where access is controlled by groups and permissions": "Saluran perbincangan dengan akses yang dikawal melalui kumpulan dan kebenaran",
"A new version (v{{LATEST_VERSION}}) is now available.": "Versi baharu (v{{LATEST_VERSION}}) kini tersedia.",
"A private conversation between you and selected users": "Perbualan peribadi antara anda dan pengguna terpilih",
"a user": "seorang pengguna",
- "about the Roman Empire": "",
- "Accept Autocomplete Generation\nJump to Prompt Variable": "Terima Penjanaan Autolengkap",
+ "about the Roman Empire": "tentang Empayar Rom",
+ "Accept Autocomplete Generation\nJump to Prompt Variable": "Terima Penjanaan Autolengkap\nLompat ke Pemboleh Ubah Gesaan",
"Access": "Akses",
"Access Control": "Kawalan Akses",
"Access Grants": "Pemberian Akses",
- "Access level": "",
+ "Access level": "Tahap akses",
"Access List": "Senarai Akses",
- "Access prohibited": "",
+ "Access prohibited": "Akses dilarang",
"Access updated": "Akses dikemas kini",
"Accessible to all users": "Boleh diakses oleh semua pengguna",
"Account Activation Pending": "Pengaktifan Akaun belum selesai",
"Accurate information": "Maklumat tepat",
"Action": "Tindakan",
"Actions": "Tindakan",
- "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktifkan arahan ini dengan menaip \"/{{COMMAND}}\" ke input perbualan.",
+ "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktifkan arahan ini dengan menaip \"/{{COMMAND}}\" dalam medan input chat.",
"Active": "Aktif",
"Active Users": "Pengguna Aktif",
"Activity": "Aktiviti",
"Add": "Tambah",
"Add a model ID": "Tambah ID model",
- "Add a preference, fact, or instruction about you": "",
+ "Add a preference, fact, or instruction about you": "Tambah keutamaan, fakta atau arahan tentang anda",
"Add a short description about what this model does": "Tambah penerangan ringkas tentang apa yang model ini boleh lakukan",
"Add a tag": "Tambah tag",
"Add a tag...": "Tambah tag...",
@@ -92,18 +101,18 @@
"Add Content": "Tambah Kandungan",
"Add content here": "Tambah kandungan di sini",
"Add Custom Parameter": "Tambah Parameter Tersuai",
- "Add Custom Prompt": "Tambah Prompt Tersuai",
+ "Add Custom Prompt": "Tambah Gesaan Tersuai",
"Add description": "Tambah penerangan",
"Add Details": "Tambah Butiran",
- "Add durable context for future chats": "",
+ "Add durable context for future chats": "Tambah konteks kekal untuk chat akan datang",
"Add Files": "Tambah Fail",
"Add Image": "Tambah Imej",
- "Add Knowledge Connection": "",
+ "Add Knowledge Connection": "Tambah Sambungan Pengetahuan",
"Add location": "Tambah lokasi",
"Add Member": "Tambah Ahli",
"Add Members": "Tambah Ahli",
- "Add Memory": "Tambah Ingatan",
- "Add prompt suggestion": "",
+ "Add Memory": "Tambah Memori",
+ "Add prompt suggestion": "Tambah cadangan gesaan",
"Add Reaction": "Tambah Reaksi",
"Add tag": "Tambah tag",
"Add Tag": "Tambah Tag",
@@ -111,67 +120,67 @@
"Add Terminal Connection": "Tambah Sambungan Terminal",
"Add text content": "Tambah kandungan teks",
"Add to favorites": "Tambah ke kegemaran",
- "Add translation": "",
+ "Add translation": "Tambah terjemahan",
"Add User": "Tambah Pengguna",
"Add User Group": "Tambah Kumpulan Pengguna",
- "Add User Variable": "",
- "Add webhook": "",
+ "Add User Variable": "Tambah Pemboleh Ubah Pengguna",
+ "Add webhook": "Tambah webhook",
"Add webpage": "Tambah halaman web",
"Add your Open Terminal URL and API key in Settings → Integrations.": "Tambah URL Open Terminal dan kunci API anda dalam Tetapan → 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": "Pilihan konfigurasi tambahan untuk penanda. Ini mestilah rentetan JSON dengan pasangan kunci-nilai. Contohnya, '{\"key\": \"value\"}'. Kunci yang disokong termasuk: 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 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": "Pilihan konfigurasi tambahan untuk marker. Ini mestilah rentetan JSON dengan pasangan kunci-nilai. Contohnya, '{\"key\": \"value\"}'. Kunci yang disokong termasuk: 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": "Ulasan maklum balas tambahan",
"admin": "pentadbir",
"Admin": "Pentadbir",
"Admin Panel": "Panel Pentadbir",
- "Admin-managed service account": "",
+ "Admin-managed service account": "Akaun perkhidmatan yang diurus pentadbir",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Pentadbir mempunyai akses kepada semua alat pada setiap masa; pengguna memerlukan alat yang ditetapkan mengikut model dalam ruang kerja.",
"Advanced": "Lanjutan",
"Advanced Params": "Parameter Lanjutan",
- "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.": "Selepas menukar model embedding, indeks semula pangkalan pengetahuan, carian pengetahuan dan vektor memori supaya perubahan berkuat kuasa.",
+ "AI": "AI",
"All": "Semua",
- "All chats have been unarchived.": "Semua perbualan telah nyaharkib.",
+ "All chats have been unarchived.": "Semua chat telah dinyaharkibkan.",
"All day": "Sepanjang hari",
- "All events": "",
+ "All events": "Semua acara",
"All models are now hidden": "Semua model kini tersembunyi",
"All models are now visible": "Semua model kini kelihatan",
"All models deleted successfully": "Semua model telah dipadamkan dengan berjaya",
- "All rights reserved.": "",
- "All shared chats have been unshared.": "",
- "All Sources": "",
+ "All rights reserved.": "Hak cipta terpelihara.",
+ "All shared chats have been unshared.": "Perkongsian semua chat telah dibatalkan.",
+ "All Sources": "Semua sumber",
"All time": "Sepanjang masa",
"All Users": "Semua Pengguna",
- "All users and system events": "",
- "Allow": "",
- "Allow {{NAME}}?": "",
- "Allow browser notifications for completed responses.": "",
+ "All users and system events": "Semua pengguna dan acara sistem",
+ "Allow": "Benarkan",
+ "Allow {{NAME}}?": "Benarkan {{NAME}}?",
+ "Allow browser notifications for completed responses.": "Benarkan pemberitahuan pelayar untuk respons yang selesai.",
"Allow Call": "Benarkan Panggilan",
- "Allow Chat Controls": "Benarkan Kawalan Perbualan",
- "Allow Chat Delete": "Benarkan Padam Perbualan",
- "Allow Chat Edit": "Benarkan Sunting Perbualan",
- "Allow Chat Export": "Benarkan Eksport Perbualan",
- "Allow Chat Import": "",
- "Allow Chat Params": "Benarkan Parameter Perbualan",
- "Allow Chat Share": "Benarkan Kongsi Perbualan",
- "Allow Chat System Prompt": "Benarkan Arahan Sistem Perbualan",
- "Allow Chat Valves": "Benarkan Valves Perbualan",
+ "Allow Chat Controls": "Benarkan Kawalan Chat",
+ "Allow Chat Delete": "Benarkan Padam Chat",
+ "Allow Chat Edit": "Benarkan Sunting Chat",
+ "Allow Chat Export": "Benarkan Eksport Chat",
+ "Allow Chat Import": "Benarkan Import Chat",
+ "Allow Chat Params": "Benarkan Parameter Chat",
+ "Allow Chat Share": "Benarkan Kongsi Chat",
+ "Allow Chat System Prompt": "Benarkan Gesaan Sistem Chat",
+ "Allow Chat Valves": "Benarkan Valves Chat",
"Allow Continue Response": "Benarkan Sambungan Respons",
"Allow Delete Messages": "Benarkan Padam Mesej",
"Allow File Upload": "Benarkan Muat Naik Fail",
- "Allow Multiple Models in Chat": "Benarkan Berbilang Model dalam Perbualan",
+ "Allow Multiple Models in Chat": "Benarkan Berbilang Model dalam Chat",
"Allow public write access": "Benarkan akses tulis awam",
"Allow Rate Response": "Benarkan Penilaian Respons",
"Allow Regenerate Response": "Benarkan Jana Semula Respons",
- "Allow Sharing With Groups": "",
+ "Allow Sharing With Groups": "Benarkan Perkongsian Dengan Kumpulan",
"Allow Sharing With Users": "Benarkan Perkongsian dengan Pengguna",
"Allow Speech to Text": "Benarkan Pertuturan ke Teks",
- "Allow Temporary Chat": "Benarkan Perbualan Sementara",
+ "Allow Temporary Chat": "Benarkan Chat Sementara",
"Allow Text to Speech": "Benarkan Teks ke Pertuturan",
- "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 the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "Benarkan AI mengagihkan tugas kepada subejen. Setiap subejen akan membuka chat baharu dengan akses penuh kepada alat. Ini menggunakan panggilan LLM tambahan.",
+ "Allow Tool Call": "Benarkan Panggilan Alat",
"Allow Web Upload": "Benarkan Muat Naik Web",
"Already have an account?": "Sudah mempunyai akaun?",
- "Also bound to {{action}}": "",
+ "Also bound to {{action}}": "Turut ditetapkan untuk {{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 kepada top_p, dan bertujuan untuk memastikan keseimbangan antara kualiti dan kepelbagaian. Parameter p mewakili kebarangkalian minimum untuk token dipertimbangkan, relatif kepada kebarangkalian token yang paling berkemungkinan. Sebagai contoh, dengan p=0.05 dan token yang paling berkemungkinan mempunyai kebarangkalian 0.9, logit dengan nilai kurang daripada 0.045 ditapis keluar.",
"Always": "Sentiasa",
"Amazing": "Hebat",
@@ -180,106 +189,108 @@
"Analyzed": "Sudah dianalisis",
"Analyzing...": "Menganalisis...",
"and {{COUNT}} more": "dan {{COUNT}} lagi",
- "and create a new shared link.": "dan cipta pautan kongsi baharu",
+ "and create a new shared link.": "dan cipta pautan kongsi baharu.",
"Anyone": "Sesiapa",
- "Anyone with the link can view": "",
+ "Anyone with the link can view": "Sesiapa yang mempunyai pautan boleh melihat",
"API Base URL": "URL Asas API",
"API Key": "Kunci API",
- "API Key / Token": "",
- "API Key created.": "Kunci API dicipta",
- "API Key deleted.": "",
+ "API Key / Token": "Kunci API / Token",
+ "API Key created.": "Kunci API dicipta.",
+ "API Key deleted.": "Kunci API telah dipadam.",
"API Keys": "Kunci API",
"API Type": "Jenis API",
"API Version": "Versi API",
"API Version is required": "Versi API diperlukan",
- "App navigation": "",
+ "App navigation": "Navigasi aplikasi",
"applies to all users with the \"user\" role": "terpakai kepada semua pengguna dengan peranan \"user\"",
"April": "April",
"Archive": "Arkib",
"archived-chat-export": "archived-chat-export",
- "Are you sure you want to archive all chats? This action cannot be undone.": "Adakah anda pasti ingin mengarkibkan semua perbualan? Tindakan ini tidak boleh dibuat asal.",
- "Are you sure you want to clear all memories? This action cannot be undone.": "Adakah anda pasti ingin memadam semua ingatan? Tindakan ini tidak boleh dibuat asal.",
+ "Are you sure you want to archive all chats? This action cannot be undone.": "Adakah anda pasti ingin mengarkibkan semua perbualan? Tindakan ini tidak boleh dibatalkan.",
+ "Are you sure you want to clear all memories? This action cannot be undone.": "Adakah anda pasti ingin memadam semua memori? Tindakan ini tidak boleh dibatalkan.",
"Are you sure you want to delete \"{{NAME}}\"?": "Adakah anda pasti ingin memadam \"{{NAME}}\"?",
"Are you sure you want to delete **{{modelName}}**?": "Adakah anda pasti ingin memadam **{{modelName}}**?",
- "Are you sure you want to delete all chats? This action cannot be undone.": "Adakah anda pasti ingin memadam semua perbualan? Tindakan ini tidak boleh dibuat asal.",
+ "Are you sure you want to delete all chats? This action cannot be undone.": "Adakah anda pasti ingin memadam semua perbualan? Tindakan ini tidak boleh dibatalkan.",
"Are you sure you want to delete this channel?": "Adakah anda pasti ingin memadam saluran ini?",
- "Are you sure you want to delete this connection? This action cannot be undone.": "Adakah anda pasti ingin memadam sambungan ini? Tindakan ini tidak boleh dibuat asal.",
- "Are you sure you want to delete this directory?": "",
- "Are you sure you want to delete this memory? This action cannot be undone.": "Adakah anda pasti ingin memadam ingatan ini? Tindakan ini tidak boleh dibuat asal.",
+ "Are you sure you want to delete this connection? This action cannot be undone.": "Adakah anda pasti ingin memadam sambungan ini? Tindakan ini tidak boleh dibatalkan.",
+ "Are you sure you want to delete this directory?": "Adakah anda pasti mahu memadam direktori ini?",
+ "Are you sure you want to delete this memory? This action cannot be undone.": "Adakah anda pasti ingin memadam memori ini? Tindakan ini tidak boleh dibatalkan.",
"Are you sure you want to delete this message?": "Adakah anda pasti ingin memadam mesej ini?",
"Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Adakah anda pasti ingin memadam versi ini? Versi anak akan dipautkan semula ke induk versi ini.",
- "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.": "Adakah anda pasti mahu memadam webhook ini? Tindakan ini tidak boleh dibatalkan.",
"Are you sure you want to delete this?": "Adakah anda pasti ingin memadam ini?",
- "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.": "Adakah anda pasti mahu menetapkan semula semua kebenaran kepada nilai lalai? Anda masih perlu menyimpan untuk menggunakan perubahan.",
"Are you sure you want to unarchive all archived chats?": "Adakah anda pasti ingin menyaharkib semua perbualan yang diarkibkan?",
- "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.": "Adakah anda pasti mahu membatalkan perkongsian semua chat? Semua pautan perkongsian akan dibuang.",
"Artifacts": "Artifak",
"Asc": "Naik",
"Ask": "Tanya",
"Ask a question": "Tanya soalan",
- "Ask a test question": "",
- "Ask for approval": "",
- "Ask this knowledge source a test question": "",
+ "Ask a test question": "Tanya soalan ujian",
+ "Ask for approval": "Minta kelulusan",
+ "Ask this knowledge source a test question": "Tanya sumber pengetahuan ini soalan ujian",
"Assistant": "Pembantu",
- "Assistant messages": "",
- "at": "",
+ "Assistant messages": "Mesej pembantu",
+ "at": "pada",
"At time of event": "Pada masa acara",
"Attach File From Knowledge": "Lampirkan Fail Daripada Pengetahuan",
"Attach Files": "Lampirkan Fail",
"Attach Knowledge": "Lampirkan Pengetahuan",
"Attach Notes": "Lampirkan Nota",
"Attach Webpage": "Lampirkan Halaman Web",
- "Attention to detail": "Perincian",
- "Audio player": "",
+ "Attention to detail": "Ketelitian",
+ "Audio playback failed": "Main balik audio gagal",
+ "Audio player": "Pemain audio",
"August": "Ogos",
"Auth": "Pengesahan",
- "Auth Mode": "",
- "Auth required": "",
+ "Auth Mode": "Mod Pengesahan",
+ "Auth required": "Pengesahan diperlukan",
"Authenticate": "Sahkan",
- "Authorize OAuth": "",
+ "Authorize OAuth": "Benarkan OAuth",
"Auto": "Automatik",
"Auto (Random)": "Automatik (Rawak)",
- "Automatic": "",
- "Automatic Delivery": "",
- "Automatic Events": "",
+ "Automatic": "Automatik",
+ "Automatic Delivery": "Penghantaran Automatik",
+ "Automatic Events": "Acara Automatik",
"Automatic1111": "Automatic1111",
"AUTOMATIC1111 Base URL is required.": "URL Asas AUTOMATIC1111 diperlukan.",
"Automation": "Automasi",
"Automation created": "Automasi dicipta",
- "Automation Menu": "",
+ "Automation Menu": "Menu automasi",
"Automation title": "Tajuk Automasi",
"Automation triggered": "Automasi dicetuskan",
"Automation updated": "Automasi dikemas kini",
"Automations": "Automasi",
"Available list": "Senarai tersedia",
"Available models": "Model tersedia",
- "Available Skills": "",
+ "Available Skills": "Kemahiran Tersedia",
"Available Tools": "Alat Tersedia",
- "Available variables": "",
+ "Available variables": "Pemboleh ubah tersedia",
"available!": "tersedia!",
- "Average messages per active day": "",
- "Average tokens per chat": "",
+ "Average messages per active day": "Purata mesej bagi setiap hari aktif",
+ "Average tokens per chat": "Purata token bagi setiap chat",
"Away": "Tiada di tempat",
"Awful": "Teruk",
"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": "Imej Latar Belakang",
+ "Background image must be at most 25 megapixels.": "Imej latar belakang mestilah tidak melebihi 25 megapiksel.",
+ "Background image must be at most 5 MiB.": "Imej latar belakang mestilah tidak melebihi 5 MiB.",
+ "Background image must be PNG, JPEG, WebP, or GIF.": "Imej latar belakang mestilah dalam format PNG, JPEG, WebP atau GIF.",
+ "Background image preview": "Pratonton imej latar belakang",
+ "Background sub-agent finished": "Subejen latar belakang selesai",
+ "background sub-agents": "subejen latar belakang",
"Bad Response": "Respons Tidak Baik",
"Base Model (From)": "Model Asas (Dari)",
- "Base Model is required.": "",
- "Base Models": "",
- "Basic text only": "",
- "Basics": "",
+ "Base Model is required.": "Model Asas diperlukan.",
+ "Base Models": "Model Asas",
+ "Basic": "Asas",
+ "Basic text only": "Teks asas sahaja",
+ "Basics": "Asas",
"Bearer": "Bearer",
"before": "sebelum",
- "Being lazy": "Menjadi Malas",
+ "Being lazy": "Bersikap malas",
"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 mengurangkan token tertentu untuk respons terbatas. Nilai bias akan dihadkan antara -100 dan 100 (termasuk). (Lalai: tiada)",
@@ -287,11 +298,11 @@
"Bullet List": "Senarai Bertanda",
"Button ID": "ID Butang",
"Button Label": "Label Butang",
- "Button Prompt": "Prompt Butang",
- "By": "",
+ "Button Prompt": "Gesaan Butang",
+ "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.": "",
+ "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 menyokong projek melalui tajaan atau lesen perusahaan, anda membantu kami kekal bebas, mengeluarkan ciri baharu dengan lebih pantas, meningkatkan kestabilan dan mengembangkan Open WebUI untuk jangka masa panjang.",
"Calendar": "Kalendar",
"Calendar created": "Kalendar dicipta",
"Calendar deleted": "Kalendar dipadamkan",
@@ -306,237 +317,238 @@
"Cannot create an empty note.": "Tidak dapat membuat nota kosong.",
"Cannot delete the production version": "Tidak dapat memadam versi pengeluaran",
"Capture": "Tangkap",
- "Capture Audio": "Tangkap Audio",
+ "Capture Audio": "Rakam Audio",
"Change folder icon": "Tukar ikon folder",
"Change User Role": "Tukar Peranan Pengguna",
"Channel": "Saluran",
"Channel deleted successfully": "Saluran berjaya dipadam",
- "Channel is required": "",
+ "Channel is required": "Saluran diperlukan",
"Channel Name": "Nama Saluran",
"Channel name cannot be empty.": "Nama saluran tidak boleh kosong.",
"Channel name must be less than 128 characters": "Nama saluran mesti kurang daripada 128 aksara",
"Channel Type": "Jenis Saluran",
"Channel updated successfully": "Saluran berjaya dikemas kini",
- "Channels": "Saluran-saluran",
+ "Channels": "Saluran",
"Character": "Aksara",
- "Chat": "Perbualan",
- "Chat actions": "",
+ "Chat": "Chat",
+ "Chat actions": "Tindakan chat",
"Chat archived.": "Perbualan telah diarkibkan.",
- "Chat Completions": "Pelengkapan Perbualan",
+ "Chat Completions": "Chat Completions",
"Chat Conversation": "Perbualan",
"Chat deleted.": "Perbualan dipadamkan.",
- "Chat exported successfully": "Perbualan telah dieksport dengan berjaya",
- "Chat failed": "",
- "Chat finished": "",
- "Chat forked": "",
- "Chat history": "",
- "Chat ID": "ID Perbualan",
- "Chat is too short to compact": "",
- "Chat Menu": "",
- "Chat moved successfully": "Perbualan telah dipindahkan dengan berjaya",
- "Chat Permissions": "Kebenaran Perbualan",
- "Chat unarchived.": "",
+ "Chat exported successfully": "Chat berjaya dieksport",
+ "Chat failed": "Chat gagal",
+ "Chat finished": "Chat selesai",
+ "Chat forked": "Cabang chat dicipta",
+ "Chat history": "Sejarah chat",
+ "Chat ID": "ID Chat",
+ "Chat is too short to compact": "Chat terlalu pendek untuk dipadatkan",
+ "Chat Menu": "Menu Chat",
+ "Chat moved successfully": "Chat berjaya dipindahkan",
+ "Chat Permissions": "Kebenaran Chat",
+ "Chat unarchived.": "Chat telah dinyaharkibkan.",
"Chat unshared successfully.": "Perbualan berjaya dinyahkongsi.",
- "Chat Uploads": "",
- "Chat Variables": "",
- "Chat Variables have conflicting model definitions": "",
- "chats": "perbualan",
- "Chats": "Perbualan",
- "Chats Open Sharing": "",
- "Chats Public Sharing": "Perkongsian Awam Perbualan",
- "Check Again": "Semak Kembali",
- "Check OAuth Discovery": "",
- "Check what is running in this chat.": "",
- "Checking for updates...": "Kemas kini sedang disemak",
- "Choose a model before saving...": "Pilih model sebelum menyimpan",
- "Choose channel": "",
- "Choose folder": "",
+ "Chat Uploads": "Muat Naik Chat",
+ "Chat Variables": "Pemboleh Ubah Chat",
+ "Chat Variables have conflicting model definitions": "Pemboleh ubah chat mempunyai takrif model yang bercanggah",
+ "chats": "Chat",
+ "Chats": "Chat",
+ "Chats Open Sharing": "Perkongsian terbuka chat",
+ "Chats Public Sharing": "Perkongsian Awam Chat",
+ "Check Again": "Semak Semula",
+ "Check OAuth Discovery": "Semak penemuan OAuth",
+ "Check what is running in this chat.": "Semak perkara yang sedang berjalan dalam chat ini.",
+ "Checking for updates...": "Kemas kini sedang disemak...",
+ "Choose a model before saving...": "Pilih model sebelum menyimpan...",
+ "Choose channel": "Pilih saluran",
+ "Choose folder": "Pilih folder",
"Citation": "Petikan",
"Citations": "Petikan",
- "Clear": "",
- "Clear filters to reorder": "",
- "Clear Memory": "Padam Ingatan",
+ "Clear": "Kosongkan",
+ "Clear filters to reorder": "Kosongkan penapis untuk menyusun semula",
+ "Clear Memory": "Padam Memori",
"Clear search": "Padam carian",
"Clear status": "Padam status",
"click here": "klik di sini",
"Click here for filter guides.": "Klik di sini untuk panduan penapis.",
- "Click here for help.": "Klik disini untuk mendapatkan bantuan",
- "Click here to": "Klik disini untuk",
- "Click here to download user import template file.": "Klik disini untuk memuat turun fail templat import pengguna",
+ "Click here for help.": "Klik di sini untuk mendapatkan bantuan.",
+ "Click here to": "Klik di sini untuk",
+ "Click here to download user import template file.": "Klik di sini untuk memuat turun fail templat import pengguna.",
"Click here to learn more about faster-whisper and see the available models.": "Klik di sini untuk mengetahui lebih lanjut tentang faster-whisper dan lihat model yang tersedia.",
"Click here to see available models.": "Klik di sini untuk melihat model yang tersedia.",
- "Click here to select": "Klik disini untuk memilih",
- "Click here to select a csv file.": "Klik disini untuk memilih fail csv",
- "click here.": "klik disini.",
- "Click on the user role button to change a user's role.": "Klik pada butang peranan pengguna untuk menukar peranan pengguna",
+ "Click here to select": "Klik di sini untuk memilih",
+ "Click here to select a csv file.": "Klik di sini untuk memilih fail csv.",
+ "click here.": "klik di sini.",
+ "Click on the user role button to change a user's role.": "Klik pada butang peranan pengguna untuk menukar peranan pengguna.",
"Click to connect": "Klik untuk menyambung",
"Click to copy ID": "Klik untuk menyalin ID",
- "Click to rebind": "",
+ "Click to rebind": "Klik untuk mengikat semula",
"Client ID": "ID Klien",
"Client Secret": "Rahsia Klien",
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Kebenaran untuk menulis di papan klip ditolak. Sila semak tetapan pelayar web anda untuk memberikan akses yang diperlukan.",
"Clone": "Klon",
- "Clone Chat": "Klon Perbualan",
+ "Clone Chat": "Klon Chat",
"Clone of {{TITLE}}": "Klon {{TITLE}}",
"Close": "Tutup",
"Close Banner": "Tutup Sepanduk",
- "Close chat controls": "Tutup kawalan perbualan",
+ "Close chat controls": "Tutup kawalan chat",
"Close citation modal": "Tutup modal petikan",
"Close Configure Connection Modal": "Tutup Modal Konfigurasi Sambungan",
- "Close embed": "",
+ "Close embed": "Tutup embed",
"Close feedback": "Tutup maklum balas",
"Close modal": "Tutup modal",
"Close Modal": "Tutup Modal",
"Close Sidebar": "Tutup Bar Sisi",
- "Close terminal": "",
+ "Close terminal": "Tutup terminal",
"cloud": "awan",
- "CMU ARCTIC speaker embedding name": "Nama Embedding Pembicara CMU ARCTIC",
+ "CMU ARCTIC speaker embedding name": "Nama embedding penutur CMU ARCTIC",
"Code Block": "Blok Kod",
"Code Editor": "Editor Kod",
"Code execution": "Pelaksanaan kod",
"Code formatted successfully": "Kod berjaya diformatkan",
"Code Interpreter": "Pentafsir Kod",
- "Collaboration channel where people join as members": "Saluran kolaborasi di mana orang menyertai sebagai ahli",
+ "Collaboration channel where people join as members": "Saluran kerjasama yang disertai pengguna sebagai ahli",
"Collapse": "Lipat",
"Collection": "Koleksi",
- "Collection Field": "",
+ "Collection Field": "Medan koleksi",
"Collections": "Koleksi",
"Color": "Warna",
"ComfyUI": "ComfyUI",
- "ComfyUI Base URL is required.": "URL asas ComfyUI diperlukan",
+ "ComfyUI Base URL is required.": "URL asas ComfyUI diperlukan.",
"Comma separated Node Ids (e.g. 1 or 1,2)": "ID Nod yang dipisahkan dengan koma (cth. 1 atau 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": "Nama kumpulan yang dipisahkan dengan koma",
+ "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "Senarai parameter permintaan peringkat teratas yang dipisahkan dengan koma dan boleh diterima oleh perkhidmatan huluan ini tanpa perubahan. Gunakan * untuk membenarkan semua parameter yang ditangkap diteruskan tanpa perubahan.",
"command": "arahan",
"Command": "Arahan",
- "Commands": "",
+ "Commands": "Arahan",
"Comment": "Komen",
"Commit Message": "Mesej Komit",
"Community Reviews": "Ulasan Komuniti",
- "Compact": "",
- "Compact: shorten older messages so this chat can keep going.": "",
- "Compacting context": "",
- "Compacting context...": "",
- "Compare": "",
- "Comparing with knowledge base...": "",
- "Completions": "Penyelesaian",
- "Compress uploaded images before sending or storage.": "",
- "Computing checksums ({{count}} files)_other": "",
+ "Compact": "Padatkan",
+ "Compact: shorten older messages so this chat can keep going.": "Padatkan: pendekkan mesej lama supaya chat ini boleh diteruskan.",
+ "Compacting context": "Memadatkan konteks",
+ "Compacting context...": "Sedang memadatkan konteks...",
+ "Compare": "Bandingkan",
+ "Comparing with knowledge base...": "Membandingkan dengan pangkalan pengetahuan...",
+ "Completions": "Pelengkapan",
+ "Compress uploaded images before sending or storage.": "Mampatkan imej yang dimuat naik sebelum dihantar atau disimpan.",
+ "Computing checksums ({{count}} files)_one": "Mengira checksum ({{count}} fail)",
+ "Computing checksums ({{count}} files)_other": "Mengira checksum ({{count}} fail)",
"Config imported successfully": "Konfigurasi diimport dengan berjaya",
"Configure": "Konfigurasikan",
"Confirm": "Sahkan",
"Confirm Password": "Sahkan kata laluan",
- "Confirm Prompt from Embed": "Sahkan Arahan daripada Embed",
- "Confirm recording": "",
+ "Confirm Prompt from Embed": "Sahkan Gesaan daripada Kandungan Terbenam",
+ "Confirm recording": "Sahkan rakaman",
"Confirm your action": "Sahkan tindakan anda",
"Confirm your new password": "Sahkan kata laluan baharu anda",
"Confirm Your Password": "Sahkan Kata Laluan Anda",
- "Connect to an AI provider to start chatting": "Sambung ke pembekal AI untuk mula berbual",
- "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "",
+ "Connect to an AI provider to start chatting": "Sambung ke penyedia AI untuk mula berbual",
+ "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "Sambungkan kepada instans Open Terminal. Pentadbir dan pengguna yang diberikan akses boleh menyemak imbas fail serta menggunakan alat terminal melalui pelayan ini.",
"Connect to your own OpenAPI compatible external tool servers.": "Sambung ke pelayan alat luaran yang serasi dengan OpenAPI anda sendiri.",
- "Connected": "",
+ "Connected": "Disambungkan",
"Connected ({{type}})": "Disambungkan ({{type}})",
"Connection failed": "Sambungan gagal",
"Connection lost. Reconnecting...": "Sambungan terputus. Menyambung semula...",
"Connection successful": "Sambungan berjaya",
"Connection Type": "Jenis Sambungan",
- "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.": "Sambungan yang diurus melalui Panel Pentadbir disyorkan untuk kegunaan harian. Sambungan terus memudahkan akses kepada titik akhir anda sendiri, tetapi bergantung pada sesi pelayar untuk memastikan permintaan terus berjalan, jadi lebih sesuai untuk ujian dan penggunaan sementara.",
"Connections saved successfully": "Sambungan disimpan dengan berjaya",
"Connections settings updated": "Tetapan sambungan dikemas kini",
- "Contact Admin for WebUI Access": "Hubungi admin untuk akses WebUI",
+ "Contact Admin for WebUI Access": "Hubungi Pentadbir untuk Akses WebUI",
"Content": "Kandungan",
- "Content Field": "",
+ "Content Field": "Medan Kandungan",
"Content lengths (character counts only)": "Panjang kandungan (kiraan aksara sahaja)",
- "Content matches": "",
- "Context": "",
- "Context compacted": "",
- "Context compaction failed": "",
- "Context compaction is disabled": "",
- "Context usage": "",
- "Continue": "",
+ "Content matches": "Kandungan sepadan",
+ "Context": "Konteks",
+ "Context compacted": "Konteks dipadatkan",
+ "Context compaction failed": "Pemadatan konteks gagal",
+ "Context compaction is disabled": "Pemadatan konteks dilumpuhkan",
+ "Context usage": "Penggunaan konteks",
+ "Continue": "Teruskan",
"Continue Response": "Teruskan Respons",
"Continue with {{provider}}": "Teruskan dengan {{provider}}",
"Continue with Email": "Teruskan dengan Email",
"Continue with LDAP": "Teruskan 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.": "Kawal pengulangan jujukan token dalam teks yang dijana. Nilai yang lebih tinggi (cth. 1.5) akan menghukum pengulangan dengan lebih kuat, manakala nilai yang lebih rendah (cth. 1.1) akan lebih lembut. Pada 1, ia dinyahaktifkan.",
+ "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.": "Kawal pengulangan jujukan token dalam teks yang dijana. Nilai yang lebih tinggi (cth. 1.5) mengenakan penalti yang lebih besar terhadap pengulangan, manakala nilai yang lebih rendah (cth. 1.1) mengenakan penalti yang lebih kecil. Pada nilai 1, fungsi ini dinyahaktifkan.",
"Controls": "Kawalan",
"Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "Mengawal keseimbangan antara koheren dan kepelbagaian output. Nilai yang lebih rendah akan menghasilkan teks yang lebih fokus dan koheren.",
"Conversation saved successfully": "Perbualan disimpan dengan berjaya",
"Copied": "Disalin",
"Copied link to clipboard": "Pautan disalin ke papan klip",
- "Copied shared chat URL to clipboard!": "URL perbualan kongsi telah disalin ke papan klip",
+ "Copied shared chat URL to clipboard!": "URL chat kongsi telah disalin ke papan klip!",
"Copied to clipboard": "Disalin ke papan klip",
"Copy": "Salin",
"Copy API Key": "Salin Kunci API",
"Copy content": "Salin kandungan",
- "Copy default": "",
+ "Copy default": "Salin nilai lalai",
"Copy Last Code Block": "Salin Blok Kod Terakhir",
"Copy Last Response": "Salin Respons Terakhir",
"Copy link": "Salin Pautan",
"Copy Link": "Salin Pautan",
"Copy Path": "Salin Laluan",
- "Copy Prompt": "Salin Arahan",
+ "Copy Prompt": "Salin Gesaan",
"Copy Share Link": "Salin Pautan Kongsian",
"Copy to clipboard": "Salin ke Papan Klip",
"Copy Token": "Salin Token",
"Copy URL": "Salin URL",
"Copying to clipboard was successful!": "Menyalin ke papan klip berjaya!",
- "Copyright (c)": "",
- "CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS mesti dikonfigurasi dengan betul oleh pembekal untuk membenarkan permintaan daripada Open WebUI.",
- "Could not check for updates": "",
- "Could not load release notes.": "",
+ "Copyright (c)": "Hak cipta (c)",
+ "CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS mesti dikonfigurasi dengan betul oleh penyedia untuk membenarkan permintaan daripada Open WebUI.",
+ "Could not check for updates": "Tidak dapat menyemak kemas kini",
+ "Could not load release notes.": "Tidak dapat memuatkan nota keluaran.",
"Could not read file.": "Tidak dapat membaca fail.",
- "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?": "Boleh mulakan dengan bertanya bila saya paling kerap bertangguh, kemudian berikan beberapa cadangan untuk mengatasinya?",
+ "Couldn't find your language?": "Tidak menemui bahasa anda?",
"CPU": "CPU",
- "Create": "Buat",
- "Create a knowledge base": "Buat pangkalan pengetahuan",
+ "Create": "Cipta",
+ "Create a knowledge base": "Cipta pangkalan pengetahuan",
"Create a model": "Cipta model",
- "Create a new note": "Buat nota baharu",
- "Create a reusable terminal skill from this chat.": "",
+ "Create a new note": "Cipta nota baharu",
+ "Create a reusable terminal skill from this chat.": "Cipta kemahiran terminal yang boleh digunakan semula daripada chat ini.",
"Create Account": "Cipta Akaun",
- "Create Admin Account": "Buat Akaun Admin",
- "Create announcements shown to users in the app.": "",
- "Create Channel": "Buat Saluran",
- "Create Folder": "Buat Folder",
- "Create Knowledge": "Buat Pengetahuan",
- "Create Model": "Buat Model",
- "Create new key": "Cipta kekunci baharu",
- "Create Prompt": "",
- "Create scheduled prompts that run automatically on a recurring basis.": "Buat arahan berjadual yang dijalankan secara automatik secara berulang.",
- "Create skill": "",
- "Create skill: create a reusable terminal skill from this chat.": "",
- "Create your first note from the Create menu.": "",
- "Created": "",
+ "Create Admin Account": "Cipta Akaun Pentadbir",
+ "Create announcements shown to users in the app.": "Cipta pengumuman untuk dipaparkan kepada pengguna dalam aplikasi.",
+ "Create Channel": "Cipta Saluran",
+ "Create Folder": "Cipta Folder",
+ "Create Knowledge": "Cipta Pengetahuan",
+ "Create Model": "Cipta Model",
+ "Create new key": "Cipta kunci baharu",
+ "Create Prompt": "Cipta gesaan",
+ "Create scheduled prompts that run automatically on a recurring basis.": "Cipta gesaan berjadual yang dijalankan secara automatik dan berulang.",
+ "Create skill": "Cipta kemahiran",
+ "Create skill: create a reusable terminal skill from this chat.": "Cipta kemahiran: cipta kemahiran terminal yang boleh digunakan semula daripada chat ini.",
+ "Create your first note from the Create menu.": "Cipta nota pertama anda daripada menu Cipta.",
+ "Created": "Dicipta",
"Created at": "Dicipta pada",
"Created At": "Dicipta Pada",
"Created by": "Dicipta oleh",
"Created by you": "Dibuat oleh anda",
"Created on {{date}}": "Dibuat pada {{date}}",
"CSV Import": "Import CSV",
- "CSV: Name,Email": "",
+ "CSV: Name,Email": "CSV: Nama,Email",
"Ctrl+Enter to Send": "Ctrl+Enter untuk Hantar",
- "Cumulative": "",
- "Current": "",
- "Current branch": "",
+ "Cumulative": "Kumulatif",
+ "Current": "Semasa",
+ "Current branch": "Cabang semasa",
"Current Model": "Model Semasa",
- "Current streak": "",
+ "Current streak": "Rentetan semasa",
"Custom": "Tersuai",
"Custom color": "Warna tersuai",
"Custom description enabled": "Penerangan tersuai didayakan",
"Custom Gender": "Jantina Tersuai",
"Custom Parameter Name": "Nama Parameter Tersuai",
"Custom Parameter Value": "Nilai Parameter Tersuai",
- "Custom permissions": "",
- "Custom range": "",
+ "Custom permissions": "Kebenaran tersuai",
+ "Custom range": "Julat tersuai",
"Daily": "Harian",
- "Daily at": "",
+ "Daily at": "Setiap hari pada",
"Daily Messages": "Mesej Harian",
"Dark": "Gelap",
- "Data": "",
+ "Data": "Data",
"Database": "Pangkalan Data",
- "Datalab Marker API": "API Penanda Datalab",
- "Date is required": "",
+ "Datalab Marker API": "API Datalab Marker",
+ "Date is required": "Tarikh diperlukan",
"Date Modified": "Tarikh Diubah Suai",
"Day": "Hari",
"DD/MM/YYYY": "DD/MM/YYYY",
@@ -548,42 +560,42 @@
"Default action buttons will be used.": "Butang tindakan lalai akan digunakan.",
"Default description enabled": "Penerangan lalai diaktifkan",
"Default Filters": "Penapis Lalai",
- "Default Interface Settings": "",
+ "Default Interface Settings": "Tetapan antara muka lalai",
"Default Model": "Model Lalai",
"Default model updated": "Model lalai dikemas kini",
"Default permissions": "Kebenaran Lalai",
"Default permissions updated successfully": "Kebenaran lalai dikemas kini dengan berjaya",
- "Default Prompt Suggestions": "Cadangan Arahan Lalai",
+ "Default Prompt Suggestions": "Cadangan Gesaan Lalai",
"Default to 389 or 636 if TLS is enabled": "Lalai kepada 389 atau 636 jika TLS didayakan",
- "Default to ALL": "Lalai kepada SEMUA",
- "Default to memberOf": "",
- "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Lalai kepada pengambilan tersegmen untuk pengekstrakan kandungan yang berfokus dan relevan, ini disyorkan untuk kebanyakan kes.",
- "Default webhook": "",
+ "Default to ALL": "Lalai kepada ALL",
+ "Default to memberOf": "Gunakan memberOf sebagai nilai lalai",
+ "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Gunakan pengambilan bersegmen secara lalai untuk mengekstrak kandungan yang terarah dan relevan. Ini disyorkan untuk kebanyakan kes.",
+ "Default webhook": "Webhook lalai",
"Delete": "Padam",
"Delete {{name}}": "Padam {{name}}",
"Delete a model": "Padam Model",
"Delete All": "Padam Semua",
- "Delete all contents inside this directory": "",
+ "Delete all contents inside this directory": "Padam semua kandungan dalam direktori ini",
"Delete all contents inside this folder": "Padam semua kandungan dalam folder ini",
- "Delete API Key?": "",
+ "Delete API Key?": "Padam Kunci API?",
"Delete automation?": "Padam automasi?",
"Delete calendar": "Padam kalendar",
"Delete Calendar": "Padam Kalendar",
- "Delete Chat": "Padam Perbualan",
+ "Delete Chat": "Padam Chat",
"Delete chat?": "Padam perbualan?",
- "Delete directory?": "",
+ "Delete directory?": "Padam direktori?",
"Delete Event": "Padam Acara",
"Delete File": "Padam Fail",
"Delete folder?": "Padam folder?",
"Delete function?": "Padam fungsi?",
- "Delete Memory?": "Padam Ingatan?",
+ "Delete Memory?": "Padam Memori?",
"Delete Message": "Padam Mesej",
"Delete message?": "Padam mesej?",
"Delete Model": "Padam Model",
"Delete note?": "Padam nota?",
- "Delete prompt?": "Padam arahan?",
+ "Delete prompt?": "Padam gesaan?",
"Delete skill?": "Padam kemahiran?",
- "delete this link": "Padam pautan ini?",
+ "delete this link": "padam pautan ini",
"Delete tool?": "Padam alat?",
"Delete User": "Padam Pengguna",
"Delete Version": "Padam Versi",
@@ -592,48 +604,48 @@
"Deleted {{name}}": "{{name}} dipadam",
"Deleted {{ok}} of {{total}} items": "{{ok}} daripada {{total}} item dipadam",
"Deleted User": "Pengguna yang Dipadam",
- "Denied {{NAME}}": "",
- "Deny": "",
- "Deny Tool Call": "",
- "Deployment names are required for Azure OpenAI": "Nama penggunaan diperlukan untuk Azure OpenAI",
+ "Denied {{NAME}}": "{{NAME}} ditolak",
+ "Deny": "Tolak",
+ "Deny Tool Call": "Tolak panggilan alat",
+ "Deployment names are required for Azure OpenAI": "Nama deployment diperlukan untuk Azure OpenAI",
"Desc": "Turun",
- "Describe the edit...": "Terangkan pengeditan...",
+ "Describe the edit...": "Terangkan penyuntingan...",
"Describe the image...": "Terangkan imej...",
"Describe what changed...": "Terangkan apa yang berubah...",
"Describe your knowledge base and objectives": "Terangkan pangkalan pengetahuan dan objektif anda",
"Description": "Penerangan",
- "Description ({{language}})": "",
+ "Description ({{language}})": "Penerangan ({{language}})",
"Deselect": "Nyahpilih",
- "Destination": "",
- "Detected Variables": "",
+ "Destination": "Destinasi",
+ "Detected Variables": "Pemboleh Ubah Dikesan",
"Dictate": "Diktasi",
"Didn't fully follow instructions": "Tidak mengikut arahan sepenuhnya",
- "Diff settings": "",
+ "Diff settings": "Tetapan perbezaan",
"Direct": "Langsung",
"Direct Message": "Mesej Langsung",
"Direct Tool Servers": "Pelayan Alat Langsung",
- "Directory created.": "",
- "Directory deleted.": "",
- "Directory moved.": "",
- "Directory name": "",
- "Directory renamed.": "",
+ "Directory created.": "Direktori dicipta.",
+ "Directory deleted.": "Direktori dipadam.",
+ "Directory moved.": "Direktori dialihkan.",
+ "Directory name": "Nama direktori",
+ "Directory renamed.": "Nama direktori ditukar.",
"Directory selection was cancelled": "Pemilihan direktori telah dibatalkan",
- "Disable all": "",
+ "Disable all": "Lumpuhkan semua",
"Disable All": "Nyahaktifkan Semua",
"Disable Code Interpreter": "Nyahaktifkan Pentafsir Kod",
"Disabled": "Dinyahaktifkan",
"Disconnect OAuth": "Putuskan OAuth",
"Discover a function": "Temui fungsi",
"Discover a model": "Temui model",
- "Discover a prompt": "Temui arahan",
+ "Discover a prompt": "Temui gesaan",
"Discover a tool": "Temui alat",
"Discover, download, and explore custom functions": "Temui, muat turun dan teroka fungsi tersuai",
- "Discover, download, and explore custom prompts": "Temui, muat turun dan teroka arahan tersuai",
+ "Discover, download, and explore custom prompts": "Temui, muat turun dan teroka gesaan tersuai",
"Discover, download, and explore custom tools": "Temui, muat turun dan teroka alat tersuai",
"Discover, download, and explore model presets": "Temui, muat turun dan teroka model pratetap",
- "Discussion channel where access is based on groups and permissions": "Saluran perbincangan di mana akses berdasarkan kumpulan dan kebenaran",
- "Dismiss": "",
- "Dismiss notification": "",
+ "Discussion channel where access is based on groups and permissions": "Saluran perbincangan dengan akses berdasarkan kumpulan dan kebenaran",
+ "Dismiss": "Tutup",
+ "Dismiss notification": "Tutup pemberitahuan",
"Display": "Paparan",
"Do not install functions from sources you do not fully trust.": "Jangan pasang fungsi daripada sumber yang anda tidak percayai sepenuhnya.",
"Do not install tools from sources you do not fully trust.": "Jangan pasang alat daripada sumber yang anda tidak percaya sepenuhnya.",
@@ -642,48 +654,48 @@
"Docling Parameters": "Parameter Docling",
"Docling Server URL required.": "URL Pelayan Docling diperlukan.",
"Document": "Dokumen",
- "Document ID Field": "",
- "Document Intelligence": "Kecerdasan Dokumen",
- "Document Intelligence endpoint required.": "Titik akhir Dokumen Kecerdasan diperlukan.",
+ "Document ID Field": "Medan ID dokumen",
+ "Document Intelligence": "Document Intelligence",
+ "Document Intelligence endpoint required.": "Titik akhir Document Intelligence diperlukan.",
"Documentation": "Dokumentasi",
- "does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat sebarang sambungan luaran, dan data anda kekal selamat pada pelayan yang dihoskan ditempat anda",
- "Don't fetch random pipelines from sources you don't trust.": "",
+ "does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat sebarang sambungan luaran, dan data anda kekal selamat pada pelayan yang dihoskan secara setempat.",
+ "Don't fetch random pipelines from sources you don't trust.": "Jangan ambil saluran paip rawak daripada sumber yang tidak dipercayai.",
"Don't have an account?": "Anda tidak mempunyai akaun?",
"Don't like the style": "Tidak suka gaya ini",
"Done": "Selesai",
"Download": "Muat Turun",
- "Download \"{{searchValue}}\"": "",
- "Download \"{{searchValue}}\" from {{provider}}": "",
+ "Download \"{{searchValue}}\"": "Muat turun \"{{searchValue}}\"",
+ "Download \"{{searchValue}}\" from {{provider}}": "Muat turun \"{{searchValue}}\" daripada {{provider}}",
"Download as JSON": "Muat Turun sebagai JSON",
"Download as SVG": "Muat turun sebagai SVG",
"Download canceled": "Muat Turun dibatalkan",
- "Download CSV Template": "",
- "Download failed": "",
- "Download Model": "",
- "Downloading \"{{name}}\"": "",
- "Downloading \"{{searchValue}}\"": "",
+ "Download CSV Template": "Muat turun templat CSV",
+ "Download failed": "Muat turun gagal",
+ "Download Model": "Muat turun model",
+ "Downloading \"{{name}}\"": "Sedang memuat turun \"{{name}}\"",
+ "Downloading \"{{searchValue}}\"": "Sedang memuat turun \"{{searchValue}}\"",
"Downloading stats...": "Memuat turun statistik...",
- "Drag and Drop Container": "",
- "Drag to reorder": "",
+ "Drag and Drop Container": "Bekas seret dan lepas",
+ "Drag to reorder": "Seret untuk menyusun semula",
"Draw": "Lukis",
"Drop any files here to upload": "Lepaskan fail di sini untuk muat naik",
"Drop files here": "Lepaskan fail di sini",
- "Drop to upload": "",
+ "Drop to upload": "Lepaskan untuk memuat naik",
"DuckDuckGo": "DuckDuckGo",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "cth '30s','10m'. Unit masa yang sah ialah 's', 'm', 'h'.",
- "e.g. 'low', 'medium', 'high'": "cth. 'rendah', 'sederhana', 'tinggi'",
+ "e.g. 'low', 'medium', 'high'": "cth. 'low', 'medium', 'high'",
"e.g. \"json\" or a JSON schema": "cth. \"json\" atau skema JSON",
"e.g. 60": "cth. 60",
"e.g. A filter to remove profanity from text": "cth. Penapis untuk membuang kata-kata lucah daripada teks",
"e.g. about the Roman Empire": "cth. tentang Empayar Rom",
- "e.g. alloy, echo, shimmer": "cth. aloi, gema, kilauan",
+ "e.g. alloy, echo, shimmer": "cth. alloy, echo, shimmer",
"e.g. Code Review Guidelines": "cth. Garis Panduan Semakan Kod",
- "e.g. code-review-guidelines": "cth. garis-panduan-semakan-kod",
- "e.g. en": "cth. ms",
+ "e.g. code-review-guidelines": "cth. code-review-guidelines",
+ "e.g. en": "cth. en",
"e.g. My Filter": "cth. Penapis Saya",
"e.g. My Tools": "cth. Alatan Saya",
- "e.g. my_filter": "cth. penapis_saya",
- "e.g. my_tools": "cth. alatan_saya",
+ "e.g. my_filter": "cth. my_filter",
+ "e.g. my_tools": "cth. my_tools",
"e.g. pdf, docx, txt": "cth. pdf, docx, txt",
"e.g. Step-by-step instructions for code reviews": "cth. Arahan langkah demi langkah untuk semakan kod",
"e.g. Tell me a fun fact": "cth. Beritahu saya fakta menarik",
@@ -691,72 +703,72 @@
"e.g. Tools for performing various operations": "cth. Alat untuk melakukan pelbagai operasi",
"e.g., 3, 4, 5 (leave blank for default)": "cth., 3, 4, 5 (biarkan kosong untuk lalai)",
"e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "cth., audio/wav,audio/mpeg,video/* (biarkan kosong untuk lalai)",
- "e.g., en-US,ja-JP (leave blank for auto-detect)": "cth., en-US,ja-JP (biarkan kosong untuk auto-detect)",
+ "e.g., en-US,ja-JP (leave blank for auto-detect)": "cth., en-US,ja-JP (biarkan kosong untuk pengesanan automatik)",
"e.g., westus (leave blank for eastus)": "cth., westus (biarkan kosong untuk eastus)",
- "Edit": "Edit",
- "Edit Arena Model": "Edit Model Arena",
- "Edit Channel": "Edit Saluran",
- "Edit Connection": "Edit Sambungan",
- "Edit Default Permissions": "Edit Kebenaran Lalai",
- "Edit Folder": "Edit Folder",
- "Edit Knowledge Connection": "",
- "Edit Last Message": "Edit Mesej Terakhir",
- "Edit Memory": "Edit Ingatan",
- "Edit Prompt": "Edit Arahan",
- "Edit Terminal Connection": "Edit Sambungan Terminal",
- "Edit User": "Edit Pengguna",
- "Edit User Group": "Edit Kumpulan Pengguna",
- "Edit User Variable": "",
- "Edit webhook": "",
+ "Edit": "Sunting",
+ "Edit Arena Model": "Sunting Model Arena",
+ "Edit Channel": "Sunting Saluran",
+ "Edit Connection": "Sunting Sambungan",
+ "Edit Default Permissions": "Sunting Kebenaran Lalai",
+ "Edit Folder": "Sunting folder",
+ "Edit Knowledge Connection": "Sunting sambungan pengetahuan",
+ "Edit Last Message": "Sunting Mesej Terakhir",
+ "Edit Memory": "Sunting Memori",
+ "Edit Prompt": "Sunting Gesaan",
+ "Edit Terminal Connection": "Sunting Sambungan Terminal",
+ "Edit User": "Sunting Pengguna",
+ "Edit User Group": "Sunting Kumpulan Pengguna",
+ "Edit User Variable": "Sunting pemboleh ubah pengguna",
+ "Edit webhook": "Sunting webhook",
"edited": "disunting",
- "Editing language": "",
+ "Editing language": "Menyunting bahasa",
"Eject": "Keluarkan",
"Eject model": "Keluarkan model",
"ElevenLabs": "ElevenLabs",
- "Email": "E-mel",
- "Embedded content": "",
- "Emoji": "",
- "Emoji graphics provided by": "",
+ "Email": "Email",
+ "Embedded content": "Kandungan terbenam",
+ "Emoji": "Emoji",
+ "Emoji graphics provided by": "Grafik emoji disediakan oleh",
"Emojis": "Emoji",
- "Empty": "",
+ "Empty": "Kosong",
"Empty message": "Mesej kosong",
"Enable All": "Aktifkan Semua",
- "Enable all ({{COUNT}})": "",
+ "Enable all ({{COUNT}})": "Dayakan semua ({{COUNT}})",
"Enable Code Interpreter": "Aktifkan Pentafsir Kod",
- "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 Ingatan (mlock) untuk mencegah data model daripada ditukar keluar daripada RAM. Pilihan ini mengunci set halaman kerja model ke dalam RAM, memastikan bahawa ia tidak akan ditukar ke cakera. Ini boleh membantu mengekalkan prestasi dengan mengelakkan kesalahan halaman 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 Ingatan (mmap) untuk memuatkan data model. Pilihan ini membenarkan sistem menggunakan storan cakera sebagai lanjutan RAM dengan memperlakukan fail cakera seolah-olah ia berada di dalam RAM. Ini boleh meningkatkan prestasi model dengan membenarkan akses data yang lebih cepat. Walau bagaimanapun, ia mungkin tidak berfungsi dengan betul pada semua sistem dan boleh menggunakan sejumlah besar ruang cakera.",
- "Enable Mirostat sampling for controlling perplexity.": "Aktifkan pensampelan Mirostat untuk mengawal kekeliruan.",
+ "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 menghalang data model daripada dipindahkan keluar daripada RAM. Pilihan ini mengunci halaman memori yang digunakan oleh model dalam RAM supaya halaman tersebut tidak dipindahkan ke cakera. Ini boleh membantu mengekalkan prestasi dengan mengelakkan page fault dan memastikan akses data yang pantas.",
+ "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 memuatkan data model. Pilihan ini membolehkan sistem menggunakan storan cakera sebagai lanjutan RAM dengan mengendalikan fail pada cakera seolah-olah berada dalam RAM. Ini boleh meningkatkan prestasi model melalui akses data yang lebih pantas. Walau bagaimanapun, pilihan ini mungkin tidak berfungsi dengan betul pada semua sistem dan boleh menggunakan ruang cakera yang besar.",
+ "Enable Mirostat sampling for controlling perplexity.": "Aktifkan pensampelan Mirostat untuk mengawal perplexity.",
"Enabled": "Diaktifkan",
- "End call": "",
+ "End call": "Tamatkan panggilan",
"End Tag": "Tag Akhir",
- "Endpoint": "",
- "Enforce Temporary Chat": "Kuatkuasakan Perbualan Sementara",
+ "Endpoint": "Titik akhir",
+ "Enforce Temporary Chat": "Kuatkuasakan Chat Sementara",
"Enhance": "Tingkatkan",
- "Enhance this note and update it.": "",
- "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Pastikan fail CSV anda mengandungi 4 lajur dalam susunan ini: Nama, E-mel, Kata Laluan, Peranan.",
+ "Enhance this note and update it.": "Perbaik nota ini dan kemas kini kandungannya.",
+ "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Pastikan fail CSV anda mengandungi 4 lajur dalam susunan ini: Nama, Email, Kata Laluan, Peranan.",
"Enter {{role}} message here": "Masukkan mesej {{role}} di sini",
"Enter a title for the pending user info overlay. Leave empty for default.": "Masukkan tajuk untuk lapisan maklumat pengguna tertangguh. Biarkan kosong untuk lalai.",
"Enter a watermark for the response. Leave empty for none.": "Masukkan tera air untuk respons. Biarkan kosong untuk tiada.",
"Enter additional headers in JSON format": "Masukkan pengepala tambahan dalam format JSON",
"Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "Masukkan pengepala 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 kekunci auth api ( cth nama pengguna:kata laluan )",
+ "Enter api auth string (e.g. username:password)": "Masukkan rentetan pengesahan API (cth. username:password)",
"Enter Application DN": "Masukkan DN Aplikasi",
"Enter Application DN Password": "Masukkan Kata Laluan DN Aplikasi",
"Enter Bing Search V7 Endpoint": "Masukkan Titik Akhir 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 Kekunci API carian Brave",
- "Enter certificate path": "Masukkan laluan sertifikat",
- "Enter Chunk Min Size Target": "Masukkan Saiz Minimum Chunk Target",
- "Enter Chunk Overlap": "Masukkan Pertindanan Chunk",
- "Enter Chunk Size": "Masukkan Saiz Chunk",
- "Enter Client ID": "",
- "Enter Client Secret": "",
+ "Enter Brave Search API Key": "Masukkan Kunci API Brave Search",
+ "Enter certificate path": "Masukkan laluan sijil",
+ "Enter Chunk Min Size Target": "Masukkan Sasaran Saiz Minimum Cebisan",
+ "Enter Chunk Overlap": "Masukkan Pertindihan Cebisan",
+ "Enter Chunk Size": "Masukkan Saiz Cebisan",
+ "Enter Client ID": "Masukkan ID Klien",
+ "Enter Client Secret": "Masukkan Rahsia Klien",
"Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Masukkan pasangan \"token:bias_value\" yang dipisahkan dengan koma (contoh: 5432:100, 413:-100)",
"Enter content for the pending user info overlay. Leave empty for default.": "Masukkan kandungan untuk lapisan maklumat pengguna tertangguh. Biarkan kosong untuk lalai.",
"Enter coordinates (e.g. 51.505, -0.09)": "Masukkan koordinat (cth. 51.505, -0.09)",
- "Enter Datalab Marker API Base URL": "Masukkan URL Asas API Penanda Datalab",
+ "Enter Datalab Marker API Base URL": "Masukkan URL Asas API Datalab Marker",
"Enter Datalab Marker API Key": "Masukkan Kunci API Datalab Marker",
"Enter description": "Masukkan penerangan",
"Enter Docling API Key": "Masukkan Kunci API Docling",
@@ -774,10 +786,10 @@
"Enter External Web Search URL": "Masukkan URL Carian Web Luaran",
"Enter Firecrawl API Base URL": "Masukkan URL Asas API Firecrawl",
"Enter Firecrawl API Key": "Masukkan Kunci API Firecrawl",
- "Enter Firecrawl Timeout": "Masukkan Masa Tamat Firecrawl",
+ "Enter Firecrawl Timeout": "Masukkan Had Masa Firecrawl",
"Enter folder name": "Masukkan nama folder",
"Enter function name filter list (e.g. func1, !func2)": "Masukkan senarai penapis nama fungsi (cth. func1, !func2)",
- "Enter GitHub Raw URL": "",
+ "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 Enjin Google PSE",
"Enter hex color (e.g. #FF0000)": "Masukkan warna heks (cth. #FF0000)",
@@ -788,77 +800,77 @@
"Enter Jupyter Password": "Masukkan Kata Laluan Jupyter",
"Enter Jupyter Token": "Masukkan Token Jupyter",
"Enter Jupyter URL": "Masukkan URL Jupyter",
- "Enter Kagi Search API Key": "Masukkan Kunci API Pencarian Kagi",
- "Enter language": "",
+ "Enter Kagi Search API Key": "Masukkan Kunci API Kagi Search",
+ "Enter language": "Masukkan bahasa",
"Enter language codes": "Masukkan kod bahasa",
- "Enter Linkup API Key": "",
- "Enter Microsoft Web IQ API Base URL": "",
- "Enter Microsoft Web IQ API Key": "",
+ "Enter Linkup API Key": "Masukkan kunci API Linkup",
+ "Enter Microsoft Web IQ API Base URL": "Masukkan URL asas 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 Asas API Mistral",
"Enter Mistral API Key": "Masukkan Kunci API Mistral",
- "Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (cth {{ modelTag }})",
- "Enter Mojeek Search API Key": "Masukkan Kunci API Pencarian Mojeek",
+ "Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (cth {{modelTag}})",
+ "Enter Mojeek Search API Key": "Masukkan Kunci API Mojeek Search",
"Enter name": "Masukkan nama",
"Enter New Password": "Masukkan Kata Laluan Baharu",
"Enter Number of Steps (e.g. 50)": "Masukkan Bilangan Langkah (cth 50)",
"Enter Ollama Cloud API Key": "Masukkan Kunci API Ollama Cloud",
- "Enter OpenSERP Base URL": "",
+ "Enter OpenSERP Base URL": "Masukkan URL asas OpenSERP",
"Enter PaddleOCR-vl API Base URL": "Masukkan URL Asas 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 Pencarian Perplexity",
- "Enter Playwright Timeout": "Masukkan Masa Tamat Playwright",
+ "Enter Perplexity Search API URL": "Masukkan URL API Perplexity Search",
+ "Enter Playwright Timeout": "Masukkan Had Masa Playwright",
"Enter Playwright WebSocket URL": "Masukkan URL WebSocket Playwright",
- "Enter prompt here.": "Masukkan arahan di sini.",
+ "Enter prompt here.": "Masukkan gesaan 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 usaha penaakulan",
- "Enter Redirect URI": "",
+ "Enter Redirect URI": "Masukkan URI lencongan",
"Enter Score": "Masukkan Skor",
"Enter SearchApi API Key": "Masukkan Kunci API SearchApi",
"Enter SearchApi Engine": "Masukkan Enjin SearchApi",
- "Enter Searxng Query URL": "Masukkan URL 'Searxng Query'",
+ "Enter Searxng Query URL": "Masukkan URL Pertanyaan Searxng",
"Enter Searxng search language": "Masukkan bahasa carian Searxng",
"Enter Seed": "Masukkan Benih",
"Enter SerpApi API Key": "Masukkan Kunci API SerpApi",
"Enter SerpApi Engine": "Masukkan Enjin 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": "Masukkan hos pelayan",
"Enter server label": "Masukkan label pelayan",
"Enter server port": "Masukkan port pelayan",
"Enter skill instructions in markdown...": "Masukkan arahan kemahiran dalam markdown...",
- "Enter Sougou Search API sID": "Masukkan sID API Pencarian Sougou",
- "Enter Sougou Search API SK": "Masukkan SK API Pencarian Sougou",
- "Enter Staan API Key": "",
- "Enter stop sequence": "Masukkan urutan hentian",
- "Enter system prompt": "Masukkan arahan sistem",
- "Enter system prompt here": "Masukkan arahan sistem di sini",
+ "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 jujukan hentian",
+ "Enter system prompt": "Masukkan gesaan sistem",
+ "Enter system prompt here": "Masukkan gesaan sistem di sini",
"Enter Tavily API Key": "Masukkan Kunci API Tavily",
"Enter Tavily Extract Depth": "Masukkan Kedalaman Ekstrak Tavily",
"Enter the URL of the function to import": "Masukkan URL fungsi untuk diimport",
"Enter the URL to import": "Masukkan URL untuk diimport",
"Enter Tika Server URL": "Masukkan URL Pelayan Tika",
- "Enter to Send": "Tekan untuk Hantar",
- "Enter token threshold": "",
- "Enter Tokenizer Model": "",
+ "Enter to Send": "Enter untuk Hantar",
+ "Enter token threshold": "Masukkan ambang token",
+ "Enter Tokenizer Model": "Masukkan model tokenizer",
"Enter Top K": "Masukkan 'Top K'",
"Enter Top K Reranker": "Masukkan Top K Penyusun Semula",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Masukkan URL (cth http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "Masukkan URL (cth http://localhost:11434)",
"Enter value": "Masukkan nilai",
- "Enter value (true/false)": "Masukkan nilai (benar/salah)",
+ "Enter value (true/false)": "Masukkan nilai (true/false)",
"Enter Yacy Password": "Masukkan Kata Laluan Yacy",
"Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Masukkan URL Yacy (cth. 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 Yandex Web Search API Key": "Masukkan Kunci API Yandex Web Search",
+ "Enter Yandex Web Search URL": "Masukkan URL Yandex Web Search",
"Enter You.com API Key": "Masukkan Kunci API You.com",
"Enter your code here...": "Masukkan kod anda di sini...",
"Enter your current password": "Masukkan kata laluan semasa anda",
- "Enter Your Email": "Masukkan E-mel Anda",
+ "Enter Your Email": "Masukkan Email Anda",
"Enter Your Full Name": "Masukkan Nama Penuh Anda",
"Enter your gender": "Masukkan jantina anda",
"Enter your message": "Masukkan mesej anda",
@@ -868,8 +880,8 @@
"Enter Your Password": "Masukkan Kata Laluan Anda",
"Enter Your Role": "Masukkan Peranan Anda",
"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.": "",
- "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.": "Lesen perusahaan turut merangkumi sokongan khusus, pilihan penyesuaian dan banyak lagi, dengan kos yang jauh lebih rendah berbanding membina dan menyelenggara sistem ini sendiri.",
+ "Enterprise licensing": "Pelesenan perusahaan",
"Entra ID": "Entra ID",
"Environment Variables": "Pemboleh Ubah Persekitaran",
"Ephemeral": "Sementara",
@@ -879,114 +891,117 @@
"Error accessing Google Drive: {{error}}": "Ralat mengakses Google Drive: {{error}}",
"Error accessing media devices.": "Ralat mengakses peranti media.",
"Error deleting model: {{error}}": "Ralat memadam model: {{error}}",
- "Error previewing file: {{error}}": "",
+ "Error previewing file: {{error}}": "Ralat mempratonton fail: {{error}}",
"Error starting recording.": "Ralat memulakan rakaman.",
"Error unloading model: {{error}}": "Ralat memunggah model: {{error}}",
"Error uploading file: {{error}}": "Ralat memuat naik fail: {{error}}",
"Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Ralat: Model dengan ID '{{modelId}}' sudah wujud. Sila pilih ID yang berbeza untuk meneruskan.",
"Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Ralat: ID Model tidak boleh kosong. Sila masukkan ID yang sah untuk meneruskan.",
"Evaluations": "Penilaian",
- "Event": "",
+ "Event": "Acara",
"Event created": "Acara dicipta",
"Event deleted": "Acara dipadamkan",
- "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.": "Nama acara mungkin berubah apabila Open WebUI berkembang. Gunakan corak umum seperti user.* untuk integrasi yang perlu terus berfungsi dengan acara berkaitan baharu.",
"Event title": "Tajuk acara",
"Event updated": "Acara dikemas kini",
- "Every {{count}} hours_other": "",
- "Every {{count}} minutes_other": "",
- "Every minute": "",
- "Example": "",
- "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Example: (&(objectClass=inetOrgPerson)(uid=%s))",
- "Example: ALL": "Contoh: SEMUA",
+ "Every {{count}} hours_one": "Setiap {{count}} jam",
+ "Every {{count}} hours_other": "Setiap {{count}} jam",
+ "Every {{count}} minutes_one": "Setiap {{count}} minit",
+ "Every {{count}} minutes_other": "Setiap {{count}} minit",
+ "Every minute": "Setiap minit",
+ "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.": "Telah melampaui bilangan tempat duduk dalam lesen anda. Sila hubungi sokongan untuk meningkatkan bilangan tempat duduk.",
+ "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Bilangan pengguna telah melebihi had lesen anda. Sila hubungi sokongan untuk meningkatkan had bilangan pengguna.",
"Exclude": "Kecualikan",
"Execute code for analysis": "Laksanakan kod untuk analisis",
- "Executing {{NAME}}...": "",
+ "Executing {{NAME}}...": "Sedang melaksanakan {{NAME}}...",
"Expand": "Kembangkan",
- "Expand input": "",
- "Experience": "",
+ "Expand input": "Besarkan medan input",
+ "Experience": "Pengalaman",
"Experimental": "Percubaan",
"Explain": "Jelaskan",
- "Explain options trading": "",
- "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
+ "Explain options trading": "Terangkan dagangan opsyen",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Terangkan dagangan opsyen dengan bahasa mudah, dengan mengambil kira bahawa saya biasa membeli dan menjual saham.",
"Explored": "Sudah diterokai",
"Exploring": "Sedang meneroka",
"Export": "Eksport",
"Export as CSV": "Eksport sebagai CSV",
"Export as JSON": "Eksport sebagai JSON",
"Export chat (.json)": "Eksport perbualan (.json)",
- "Export JSON": "",
+ "Export JSON": "Eksport JSON",
"Export Models": "Eksport Model",
- "Export Prompts": "Eksport Arahan",
- "Export Skills": "",
+ "Export Prompts": "Eksport Gesaan",
+ "Export Skills": "Eksport kemahiran",
"Export to CSV": "Eksport ke CSV",
"Export Tools": "Eksport Alat",
"External": "Luaran",
- "External connection not found.": "",
+ "External connection not found.": "Sambungan luaran tidak ditemui.",
"External Document Loader URL required.": "URL Pemuat Dokumen Luaran diperlukan.",
- "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": "Sumber Pengetahuan Luaran",
+ "External vectors must be generated with the same embedding model configured in Open WebUI.": "Vektor luaran mesti dijana menggunakan model embedding yang sama seperti yang dikonfigurasikan dalam Open WebUI.",
+ "Extract action items from this note.": "Ekstrak senarai tindakan daripada nota ini.",
+ "Extracted text lines": "Baris teks yang diekstrak",
+ "Extracting text and comparing…": "Mengekstrak teks dan membandingkan…",
"Failed to add file.": "Gagal menambah fail.",
"Failed to add members": "Gagal menambah ahli",
"Failed to archive chat.": "Gagal mengarkibkan perbualan.",
"Failed to clear status": "Gagal mengosongkan status",
- "Failed to compare files.": "",
+ "Failed to compare files.": "Gagal membandingkan fail.",
"Failed to connect to {{URL}} OpenAPI tool server": "Gagal menyambung ke pelayan alat OpenAPI {{URL}}",
"Failed to connect to {{URL}} terminal server": "Gagal menyambung ke pelayan terminal {{URL}}",
"Failed to copy link": "Gagal menyalin pautan",
- "Failed to create API Key.": "Gagal mencipta kekunci API",
- "Failed to create chat": "",
+ "Failed to create API Key.": "Gagal mencipta kunci API.",
+ "Failed to create chat": "Gagal mencipta chat",
"Failed to delete calendar": "Gagal memadam kalendar",
"Failed to delete note": "Gagal memadamkan nota",
- "Failed to delete webhook": "",
+ "Failed to delete webhook": "Gagal memadam webhook",
"Failed to disconnect": "Gagal memutuskan sambungan",
"Failed to download image": "Gagal memuat turun imej",
"Failed to extract content from the file: {{error}}": "Gagal mengekstrak kandungan daripada fail: {{error}}",
"Failed to extract content from the file.": "Gagal mengekstrak kandungan daripada fail.",
"Failed to fetch models": "Gagal mengambil model",
- "Failed to fork chat": "",
+ "Failed to fork chat": "Gagal mencipta cabang chat",
"Failed to generate title": "Gagal menjana tajuk",
"Failed to import models": "Gagal mengimport model",
- "Failed to load chat": "",
- "Failed to load chat preview": "Gagal memuatkan pratonton perbualan",
- "Failed to load DOCX file. Please try downloading it instead.": "Gagal memuatkan fail DOCX. Sila cuba muat turun sebaliknya.",
- "Failed to load Excel/CSV file. Please try downloading it instead.": "Gagal memuatkan fail Excel/CSV. Sila cuba muat turun sebaliknya.",
+ "Failed to load chat": "Gagal memuatkan chat",
+ "Failed to load chat preview": "Gagal memuatkan pratonton chat",
+ "Failed to load DOCX file. Please try downloading it instead.": "Gagal memuatkan fail DOCX. Sila cuba memuat turun fail tersebut.",
+ "Failed to load Excel/CSV file. Please try downloading it instead.": "Gagal memuatkan fail Excel/CSV. Sila cuba memuat turun fail tersebut.",
"Failed to load file content.": "Gagal memuatkan kandungan fail.",
- "Failed to load folder": "",
+ "Failed to load folder": "Gagal memuatkan folder",
"Failed to load Interface settings": "Gagal memuatkan tetapan Antara Muka",
- "Failed to load policy: {{error}}": "",
- "Failed to load PPTX file. Please try downloading it instead.": "Gagal memuatkan fail PPTX. Sila cuba muat turun sebaliknya.",
- "Failed to load usage": "",
- "Failed to load valves": "",
- "Failed to move chat": "Gagal memindahkan perbualan",
- "Failed to open database": "",
+ "Failed to load policy: {{error}}": "Gagal memuatkan dasar: {{error}}",
+ "Failed to load PPTX file. Please try downloading it instead.": "Gagal memuatkan fail PPTX. Sila cuba memuat turun fail tersebut.",
+ "Failed to load usage": "Gagal memuatkan penggunaan",
+ "Failed to load valves": "Gagal memuatkan tetapan Valves",
+ "Failed to move chat": "Gagal memindahkan chat",
+ "Failed to open database": "Gagal membuka pangkalan data",
"Failed to process URL: {{url}}": "Gagal memproses URL: {{url}}",
"Failed to read clipboard contents": "Gagal membaca kandungan papan klip",
- "Failed to refresh terminals: {{error}}": "",
+ "Failed to refresh terminals: {{error}}": "Gagal memuat semula terminal: {{error}}",
"Failed to remove member": "Gagal mengeluarkan ahli",
"Failed to render diagram": "Gagal memapar rajah",
"Failed to render visualization": "Gagal memapar visualisasi",
- "Failed to save chat variables": "",
+ "Failed to save chat variables": "Gagal menyimpan pemboleh ubah chat",
"Failed to save connections": "Gagal menyimpan sambungan",
"Failed to save conversation": "Gagal menyimpan perbualan",
- "Failed to save model": "",
+ "Failed to save model": "Gagal menyimpan model",
"Failed to save models configuration": "Gagal menyimpan konfigurasi model",
"Failed to save policy: {{error}}": "Gagal menyimpan dasar: {{error}}",
"Failed to save terminal servers": "Gagal menyimpan pelayan terminal",
- "Failed to save webhook": "",
- "Failed to search files": "",
+ "Failed to save webhook": "Gagal menyimpan webhook",
+ "Failed to search files": "Gagal mencari fail",
"Failed to unshare chat.": "Gagal membatalkan perkongsian perbualan.",
- "Failed to update settings": "Gagal mengemaskini tetapan",
- "Failed to update status": "Gagal mengemaskini status",
- "Failed to update webhook": "",
- "Failed to upload background image.": "",
+ "Failed to update settings": "Gagal mengemas kini tetapan",
+ "Failed to update status": "Gagal mengemas kini status",
+ "Failed to update webhook": "Gagal mengemas kini webhook",
+ "Failed to upload background image.": "Gagal memuat naik imej latar belakang.",
"Failed to upload file.": "Gagal memuat naik fail.",
+ "Fast": "Pantas",
"Features Permissions": "Kebenaran Ciri-ciri",
"February": "Februari",
"Feedback": "Maklum Balas",
@@ -995,34 +1010,34 @@
"Feedback Details": "Butiran Maklum Balas",
"Feel free to add specific details": "Jangan ragu untuk menambah butiran khusus",
"Female": "Perempuan",
- "Fetch page contents without proxy environment variables.": "",
+ "Fetch page contents without proxy environment variables.": "Dapatkan kandungan halaman tanpa pemboleh ubah persekitaran proksi.",
"File": "Fail",
"File added successfully.": "Fail telah ditambah dengan berjaya.",
"File browser": "Pelayar fail",
"File content": "Kandungan fail",
"File content updated successfully.": "Kandungan fail dikemas kini dengan berjaya.",
"File deleted successfully.": "Fail telah dipadamkan dengan berjaya.",
- "File differences": "",
+ "File differences": "Perbezaan fail",
"File Mode": "Mod Fail",
- "File moved.": "",
+ "File moved.": "Fail dialihkan.",
"File name": "Nama fail",
- "File not found.": "Fail tidak dijumpai",
- "File removed successfully.": "Fail telah dialihkan dengan berjaya.",
- "File renamed.": "",
+ "File not found.": "Fail tidak dijumpai.",
+ "File removed successfully.": "Fail telah dialih keluar dengan berjaya.",
+ "File renamed.": "Nama fail ditukar.",
"File size should not exceed {{maxSize}} MB.": "Saiz fail tidak boleh melebihi {{maxSize}} MB.",
"File uploaded successfully": "Fail dimuat naik dengan berjaya",
"Filename": "Nama fail",
- "Filename matches": "",
- "Files": "Fail-Fail",
- "Filesystem": "",
- "Fill the required fields first.": "",
- "Fill the source fields and test query first.": "",
+ "Filename matches": "Nama fail sepadan",
+ "Files": "Fail",
+ "Filesystem": "Sistem fail",
+ "Fill the required fields first.": "Lengkapkan medan yang diperlukan terlebih dahulu.",
+ "Fill the source fields and test query first.": "Lengkapkan medan sumber dan pertanyaan ujian terlebih dahulu.",
"Filter": "Penapis",
- "Filter is now globally disabled": "Tapisan kini dinyahaktifkan secara global",
- "Filter is now globally enabled": "Tapisan kini dibenarkan secara global",
- "Filters": "Tapisan",
- "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Peniruan cap jari dikesan, tidak dapat menggunakan nama pendek sebagai avatar. Lalai kepada imej profail asal",
- "Focus Chat Input": "Fokus Input Perbualan",
+ "Filter is now globally disabled": "Penapis kini dinyahaktifkan secara global",
+ "Filter is now globally enabled": "Penapis kini diaktifkan secara global",
+ "Filters": "Penapis",
+ "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Pemalsuan cap jari dikesan: Tidak dapat menggunakan huruf awal nama sebagai avatar. Imej profil lalai akan digunakan.",
+ "Focus Chat Input": "Fokus Input Chat",
"Folder": "Folder",
"Folder Background Image": "Imej Latar Belakang Folder",
"Folder created successfully": "Folder berjaya dibuat",
@@ -1033,62 +1048,62 @@
"Folder name updated successfully": "Nama folder berjaya dikemas kini",
"Folder options": "Pilihan folder",
"Folder updated successfully": "Folder berjaya dikemas kini",
- "Folders": "Folder-folder",
- "Folders Sharing": "",
+ "Folders": "Folder",
+ "Folders Sharing": "Perkongsian folder",
"Follow up": "Susulan",
"Follow up: {{question}}": "Susulan: {{question}}",
"Followed instructions perfectly": "Mengikut arahan dengan sempurna",
"for placeholders": "untuk pemegang tempat",
- "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": "tentang perkara yang boleh saya lakukan dengan hasil seni anak-anak saya",
+ "Fork": "Cabangkan",
+ "Fork chat": "Cabangkan chat",
+ "Fork the current chat branch into a new chat.": "Cipta chat baharu daripada cabang chat semasa.",
+ "Fork: fork the current chat branch into a new chat.": "Cabangkan: cipta chat baharu daripada cabang chat semasa.",
+ "Forking chat...": "Sedang mencipta cabang chat...",
"Form": "Borang",
- "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.": "Pemformatan mungkin tidak konsisten daripada sumber.",
+ "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Formatkan Markdown semasa menaip dan menampal. Matikan pilihan ini untuk mengekalkan aksara Markdown dan menampal teks biasa. Pemformatan sedia ada dikekalkan.",
+ "Formatting": "Pemformatan",
+ "Formatting may be inconsistent from source.": "Pemformatan mungkin berbeza daripada sumber.",
"Forward": "Ke Hadapan",
- "Forward cookies": "",
- "Forward cookies from your Open WebUI request to this server.": "",
+ "Forward cookies": "Majukan kuki",
+ "Forward cookies from your Open WebUI request to this server.": "Majukan kuki daripada permintaan Open WebUI anda kepada pelayan ini.",
"Forwards system user OAuth access token to authenticate": "Meneruskan token akses OAuth pengguna sistem untuk pengesahan",
"Forwards system user session credentials to authenticate": "Meneruskan bukti kelayakan sesi pengguna sistem untuk pengesahan",
"Fr_day_of_week": "Jum",
- "from {{provider}}": "",
- "Full access": "",
+ "from {{provider}}": "daripada {{provider}}",
+ "Full access": "Akses penuh",
"Function created successfully": "Fungsi berjaya dibuat",
"Function deleted successfully": "Fungsi berjaya dipadamkan",
"Function Description": "Penerangan Fungsi",
"Function ID": "ID Fungsi",
"Function imported successfully": "Fungsi diimport dengan berjaya",
"Function is now globally disabled": "Fungsi kini dinyahaktifkan secara global",
- "Function is now globally enabled": "Fungsi kini dibenarkan secara global",
- "Function Menu": "",
+ "Function is now globally enabled": "Fungsi kini diaktifkan secara global",
+ "Function Menu": "Menu fungsi",
"Function Name": "Nama Fungsi",
"Function Name Filter List": "Senarai Penapis Nama Fungsi",
- "Function starter": "",
+ "Function starter": "Templat permulaan fungsi",
"Function updated successfully": "Fungsi berjaya dikemas kini",
"Functions": "Fungsi",
"Functions allow arbitrary code execution.": "Fungsi membenarkan pelaksanaan kod sewenang-wenangnya.",
- "Functions can execute arbitrary code.": "",
+ "Functions can execute arbitrary code.": "Fungsi boleh menjalankan sebarang kod.",
"Functions imported successfully": "Fungsi berjaya diimport",
"Gemini": "Gemini",
"Gemini API Key is required.": "Kunci API Gemini diperlukan.",
"General": "Umum",
- "Generate": "Janakan",
- "Generate an image": "Janakan imej",
- "Generate message pair": "",
- "Generate Message Pair": "Janakan Pasangan Mesej",
+ "Generate": "Jana",
+ "Generate an image": "Jana imej",
+ "Generate message pair": "Jana pasangan mesej",
+ "Generate Message Pair": "Jana Pasangan Mesej",
"Generated Image": "Imej yang Dijana",
"Generated images will appear here": "Imej yang dijana akan muncul di sini",
- "Generating search query": "Jana pertanyaan carian",
+ "Generating search query": "Menjana pertanyaan carian",
"Generating...": "Menjana...",
"Get information on {{name}} in the UI": "Dapatkan maklumat tentang {{name}} dalam UI",
"Get started": "Mula",
"Get started with {{WEBUI_NAME}}": "Mula dengan {{WEBUI_NAME}}",
- "Give me ideas": "",
- "give me tips": "",
+ "Give me ideas": "Berikan saya idea",
+ "give me tips": "berikan saya petua",
"Global": "Global",
"Good Response": "Respons Baik",
"Google": "Google",
@@ -1096,8 +1111,8 @@
"Gravatar": "Gravatar",
"Grid": "Grid",
"Grokipedia": "Grokipedia",
- "group": "",
- "Group": "",
+ "group": "kumpulan",
+ "Group": "Kumpulan",
"Group Channel": "Saluran Kumpulan",
"Group created successfully": "Kumpulan berjaya dibuat",
"Group deleted successfully": "Kumpulan berjaya dipadamkan",
@@ -1109,114 +1124,114 @@
"H1": "H1",
"H2": "H2",
"H3": "H3",
- "Headers": "Tajuk",
- "Headers must be a valid JSON object": "Tajuk mesti menjadi objek JSON yang sah",
+ "Headers": "Pengepala",
+ "Headers must be a valid JSON object": "Pengepala mestilah objek JSON yang sah",
"Height": "Ketinggian",
- "Hello, {{name}}": "Hello, {{name}}",
+ "Hello, {{name}}": "Helo, {{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 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 kosa kata: tulis ayat dengan tempat kosong untuk saya isi, kemudian saya akan cuba memilih jawapan yang betul.",
"Help the community discover great models": "Bantu komuniti menemui model-model hebat",
- "Help us translate Open WebUI!": "",
+ "Help us translate Open WebUI!": "Bantu kami menterjemah Open WebUI!",
"Hex Color": "Warna Heks",
"Hex Color - Leave empty for default color": "Warna Heks - Biarkan kosong untuk warna lalai",
"Hidden": "Tersembunyi",
"Hide": "Sembunyi",
"Hide All": "Sembunyikan Semua",
"Hide from Sidebar": "Sembunyikan daripada Bar Sisi",
- "Hide Hidden Files": "",
+ "Hide Hidden Files": "Sembunyikan fail tersembunyi",
"Hide Model": "Sembunyikan Model",
- "Hide whitespace": "",
+ "Hide whitespace": "Sembunyikan ruang kosong",
"High": "Tinggi",
"History": "Sejarah",
"Home": "Halaman Utama",
- "Horizontal Layout": "",
+ "Horizontal Layout": "Susun Atur Mendatar",
"Hourly": "Setiap Jam",
"Hourly Messages": "Mesej Setiap Jam",
"How can I help you today?": "Bagaimana saya boleh membantu anda hari ini?",
"How would you rate this response?": "Bagaimana anda menilai respons ini?",
"HTML": "HTML",
- "HTML Preview": "",
+ "HTML Preview": "Pratonton 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 mengakui bahawa saya telah membaca dan saya memahami implikasi tindakan saya. Saya sedar tentang risiko yang berkaitan dengan melaksanakan kod sewenang-wenangnya dan saya telah mengesahkan kebolehpercayaan sumber tersebut.",
"ID": "ID",
"ID cannot contain \":\" or \"|\" characters": "ID tidak boleh mengandungi aksara \":\" atau \"|\"",
"ID copied to clipboard": "ID disalin ke papan klip",
- "Identity audit": "",
- "Idle only": "",
- "Idle Timeout": "Masa Tamat Melahu",
- "if I'm familiar with buying and selling stocks": "",
+ "Identity audit": "Audit identiti",
+ "Idle only": "Melahu sahaja",
+ "Idle Timeout": "Had Masa Melahu",
+ "if I'm familiar with buying and selling stocks": "jika saya sudah biasa membeli dan menjual saham",
"Image": "Imej",
"Image Generation": "Penjanaan Imej",
"Image Max Compression Size": "Saiz Mampatan Imej Maksimum",
"Image Max Compression Size height": "Tinggi Saiz Mampatan Imej Maksimum",
"Image Max Compression Size width": "Lebar Saiz Mampatan Imej Maksimum",
- "Image unavailable": "",
- "image/*, video/*": "",
+ "Image unavailable": "Imej tidak tersedia",
+ "image/*, video/*": "image/*, video/*",
"Images": "Imej",
"Import": "Import",
- "Import CSV": "",
+ "Import CSV": "Import CSV",
"Import From Link": "Import Daripada Pautan",
- "Import JSON": "",
+ "Import JSON": "Import JSON",
"Import Models": "Import Model",
- "Import Prompts": "Import Arahan",
- "Import Skills": "",
+ "Import Prompts": "Import Gesaan",
+ "Import Skills": "Import kemahiran",
"Import successful": "Import Berjaya",
"Import Tools": "Import Alat",
- "Import txt/md": "",
- "Imported automations successfully": "",
- "Imported notes successfully": "",
- "Importing...": "",
+ "Import txt/md": "Import txt/md",
+ "Imported automations successfully": "Automasi berjaya diimport",
+ "Imported notes successfully": "Nota berjaya diimport",
+ "Importing...": "Sedang mengimport...",
"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.": "Mempengaruhi seberapa cepat algoritma bertindak balas terhadap maklum balas daripada teks yang dijana. Kadar pembelajaran yang lebih rendah akan menghasilkan pelarasan yang lebih lambat, manakala kadar pembelajaran yang lebih tinggi akan menjadikan algoritma lebih responsif.",
+ "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.": "Mempengaruhi kelajuan algoritma bertindak balas terhadap maklum balas daripada teks yang dijana. Kadar pembelajaran yang lebih rendah menghasilkan pelarasan yang lebih perlahan, manakala kadar yang lebih tinggi menjadikan algoritma lebih responsif.",
"Info": "Maklumat",
- "Initials": "Inisial",
- "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Suntikkan seluruh kandungan sebagai konteks untuk pemprosesan komprehensif, ini disyorkan untuk pertanyaan yang kompleks.",
- "Inline": "",
+ "Initials": "Huruf Awal",
+ "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Masukkan seluruh kandungan sebagai konteks untuk pemprosesan menyeluruh, ini disyorkan untuk pertanyaan yang kompleks.",
+ "Inline": "Sebaris",
"Input": "Input",
"Input Key (e.g. text, unet_name, steps)": "Kunci Input (cth: text, unet_name, steps)",
- "Input needed": "",
- "Input Variables": "Pembolehubah Input",
- "Insert into note": "",
+ "Input needed": "Input diperlukan",
+ "Input Variables": "Pemboleh Ubah Input",
+ "Insert into note": "Masukkan ke dalam nota",
"Instructions": "Arahan",
"Integrations": "Integrasi",
"Interface Settings Access": "Akses Tetapan Antara Muka",
- "Invalid background image.": "",
+ "Invalid background image.": "Imej latar belakang tidak sah.",
"Invalid file format.": "Format fail tidak sah.",
- "Invalid format.": "",
- "Invalid JSON": "",
+ "Invalid format.": "Format tidak sah.",
+ "Invalid JSON": "JSON tidak sah",
"Invalid JSON file": "Fail JSON tidak sah",
- "Invalid JSON format": "",
- "Invalid JSON format for ComfyUI Edit Workflow.": "Format JSON tidak sah untuk ComfyUI Edit Workflow.",
- "Invalid JSON format for ComfyUI Workflow.": "Format JSON tidak sah untuk ComfyUI Workflow.",
- "Invalid JSON format for Parameters": "Format JSON tidak sah untuk Parameters",
+ "Invalid JSON format": "Format JSON tidak sah",
+ "Invalid JSON format for ComfyUI Edit Workflow.": "Format JSON tidak sah untuk Aliran Kerja Penyuntingan ComfyUI.",
+ "Invalid JSON format for ComfyUI Workflow.": "Format JSON tidak sah untuk Aliran Kerja ComfyUI.",
+ "Invalid JSON format for Parameters": "Format JSON tidak sah untuk Parameter",
"Invalid JSON format in {{NAME}}": "Format JSON tidak sah dalam {{NAME}}",
- "Invalid JSON format in Additional Config": "Format JSON tidak sah dalam Additional Config",
- "Invalid JSON format in MinerU Parameters": "Format JSON tidak sah dalam MinerU Parameters",
+ "Invalid JSON format in Additional Config": "Format JSON tidak sah dalam Konfigurasi Tambahan",
+ "Invalid JSON format in MinerU Parameters": "Format JSON tidak sah dalam Parameter MinerU",
"is typing...": "sedang menaip...",
- "Italic": "Miring",
+ "Italic": "Condong",
"January": "Januari",
"join our Discord for help.": "sertai Discord kami untuk mendapatkan bantuan.",
"JSON": "JSON",
- "JSON Base64": "",
- "JSON parse error: {{error}}": "",
+ "JSON Base64": "JSON Base64",
+ "JSON parse error: {{error}}": "Ralat menghuraikan JSON: {{error}}",
"JSON Preview": "Pratonton JSON",
"JSON Spec": "Spesifikasi JSON",
"July": "Julai",
"June": "Jun",
- "Keep current webhook URL": "",
+ "Keep current webhook URL": "Kekalkan URL webhook semasa",
"Keep in Sidebar": "Simpan dalam Bar Sisi",
"Key": "Kunci",
"Key is required": "Kunci diperlukan",
- "key_name": "",
- "Keyboard": "",
+ "key_name": "nama_kunci",
+ "Keyboard": "Papan kekunci",
"Knowledge": "Pengetahuan",
"Knowledge Access": "Akses Pengetahuan",
"Knowledge Base": "Pangkalan Pengetahuan",
- "Knowledge base has been reset": "",
- "Knowledge base not found.": "",
+ "Knowledge base has been reset": "Pangkalan pengetahuan telah ditetapkan semula",
+ "Knowledge base not found.": "Pangkalan pengetahuan tidak ditemui.",
"Knowledge created successfully.": "Pengetahuan berjaya dibuat.",
"Knowledge deleted successfully.": "Pengetahuan berjaya dipadam.",
"Knowledge Description": "Penerangan Pengetahuan",
@@ -1224,21 +1239,21 @@
"Knowledge Name": "Nama Pengetahuan",
"Knowledge Public Sharing": "Perkongsian Awam Pengetahuan",
"Knowledge Sharing": "Perkongsian Pengetahuan",
- "Knowledge source created.": "",
- "Knowledge source updated.": "",
+ "Knowledge source created.": "Sumber pengetahuan dicipta.",
+ "Knowledge source updated.": "Sumber pengetahuan dikemas kini.",
"Knowledge updated successfully": "Pengetahuan telah dikemas kini dengan berjaya",
"Kokoro.js (Browser)": "Kokoro.js (Penyemak Imbas)",
"Last 24 hours": "24 jam terakhir",
"Last 30 days": "30 hari terakhir",
"Last 7 days": "7 hari lepas",
"Last 90 days": "90 hari lepas",
- "Last Active": "Dilihat aktif terakhir pada",
+ "Last Active": "Terakhir Aktif",
"Last Modified": "Kemas Kini Terakhir",
"Last reply": "Balasan terakhir",
- "Last run": "",
+ "Last run": "Pelaksanaan terakhir",
"Leaderboard": "Papan Kedudukan",
"Learn More": "Ketahui Lebih Lanjut",
- "Learn more about Open Terminal": "Ketahui lebih lanjut tentang Terminal Terbuka",
+ "Learn more about Open Terminal": "Ketahui lebih lanjut tentang Open Terminal",
"Learn more about OpenAPI tool servers.": "Ketahui lebih lanjut tentang pelayan alat OpenAPI.",
"Learn more about Voxtral transcription.": "Ketahui lebih lanjut tentang transkripsi Voxtral.",
"Leave a public review for {{modelName}}": "Tinggalkan ulasan awam untuk {{modelName}}",
@@ -1250,74 +1265,75 @@
"Leave empty to include all models or select specific models": "Biarkan kosong untuk memasukkan 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 lalai, atau masukkan json yang sah (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 arahan lalai, atau masukkan arahan tersuai",
+ "Leave empty to use the default prompt, or enter a custom prompt": "Biarkan kosong untuk menggunakan gesaan lalai, atau masukkan gesaan tersuai",
"Legacy": "Warisan",
"lexical": "leksikal",
- "License Error": "",
- "license purchased by": "",
- "Lifecycle JSON": "",
- "Lifetime tokens": "",
- "Lift List": "Keluarkan Senarai",
+ "License Error": "Ralat Lesen",
+ "license purchased by": "lesen dibeli oleh",
+ "Lifecycle JSON": "JSON kitar hayat",
+ "Lifetime tokens": "Token sepanjang hayat",
+ "Lift List": "Kurangkan Aras Senarai",
"Light": "Cerah",
"List": "Senarai",
"Listening...": "Mendengar...",
- "LiteLLM": "",
+ "LiteLLM": "LiteLLM",
"Live": "Langsung",
"llama.cpp": "llama.cpp",
"LLMs can make mistakes. Verify important information.": "LLM boleh membuat kesilapan. Sahkan maklumat penting.",
- "LM Studio": "",
- "Load Model": "",
+ "LM Studio": "LM Studio",
+ "Load Model": "Muat Model",
"Loaded": "Dimuatkan",
- "Loading": "",
+ "Loading": "Memuat",
"Loading Kokoro.js...": "Memuatkan Kokoro.js...",
- "Loading policy...": "",
- "Loading release notes...": "",
+ "Loading policy...": "Memuatkan dasar...",
+ "Loading release notes...": "Memuatkan nota keluaran...",
"Loading...": "Memuatkan...",
"local": "tempatan",
"Local": "Tempatan",
"Location": "Lokasi",
"Location access not allowed": "Akses lokasi tidak dibenarkan",
- "Longest active chat": "",
- "Longest streak": "",
- "Lost": "Hilang",
+ "Longest active chat": "Chat aktif paling lama",
+ "Longest streak": "Rentetan terpanjang",
+ "Lost": "Kalah",
"Low": "Rendah",
"LTR": "LTR",
- "Made by Open WebUI Community": "Dicipta oleh Komuniti OpenWebUI",
- "Make Default": "",
- "Make password visible in the user interface": "Buat kata laluan kelihatan dalam antara muka pengguna",
- "Make Private": "",
- "Make Public": "",
+ "Made by Open WebUI Community": "Dicipta oleh Komuniti Open WebUI",
+ "Make Default": "Jadikan lalai",
+ "Make password visible in the user interface": "Paparkan kata laluan dalam antara muka pengguna",
+ "Make Private": "Jadikan Persendirian",
+ "Make Public": "Jadikan Umum",
"Male": "Lelaki",
"Manage": "Urus",
"Manage Connections": "Urus Sambungan",
"Manage Models": "Urus Model",
"Manage Ollama": "Urus Ollama",
- "Mapped Source": "",
+ "Mapped Source": "Sumber Dipetakan",
"March": "Mac",
- "Mark all as read": "",
- "Mark as unread": "",
+ "Mark all as read": "Tanda semua sebagai dibaca",
+ "Mark as unread": "Tandakan sebagai belum dibaca",
"Markdown": "Markdown",
- "Market": "",
- "Matching tabs: {{count}}_other": "",
- "Max Snippets": "",
+ "Market": "Pasaran",
+ "Matching tabs: {{count}}_one": "Tab yang sepadan: {{count}}",
+ "Matching tabs: {{count}}_other": "Tab yang sepadan: {{count}}",
+ "Max Snippets": "Petikan Maksimum",
"Max tokens to retrieve (1024-32768, default 8192)": "Token maksimum untuk diambil (1024-32768, lalai 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.": "Bilangan maksimum petikan tambahan yang dikembalikan bagi setiap hasil. Tetapkan kepada 0 untuk menyahdayakannya.",
"Maximum number of files per folder is {{max}}.": "Bilangan maksimum fail setiap folder ialah {{max}}.",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimum 3 model boleh dimuat turun serentak. Sila cuba sebentar lagi.",
"May": "Mei",
"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.": "Sokongan MCP adalah eksperimental dan spesifikasinya kerap berubah, yang boleh menyebabkan ketidakserasian. Sokongan spesifikasi OpenAPI dikekalkan secara langsung oleh pasukan Open WebUI, menjadikannya pilihan yang lebih boleh dipercayai untuk keserasian.",
+ "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.": "Sokongan MCP masih pada peringkat percubaan dan spesifikasinya kerap berubah, yang boleh menyebabkan ketidakserasian. Sokongan spesifikasi OpenAPI diselenggara secara langsung oleh pasukan Open WebUI, menjadikannya pilihan yang lebih boleh dipercayai dari segi keserasian.",
"Medium": "Sederhana",
"Member removed successfully": "Ahli telah dikeluarkan dengan berjaya",
"members": "ahli",
"Members": "Ahli",
"Members added successfully": "Ahli telah ditambah dengan berjaya",
- "Memories": "Ingatan",
- "Memory": "Ingatan",
- "Memory added successfully": "Ingatan berjaya ditambah",
- "Memory cleared successfully": "Ingatan berjaya dikosongkan",
- "Memory deleted successfully": "Ingatan berjaya dipadamkan",
- "Memory updated successfully": "Ingatan berjaya dikemas kini",
+ "Memories": "Memori",
+ "Memory": "Memori",
+ "Memory added successfully": "Memori berjaya ditambah",
+ "Memory cleared successfully": "Memori berjaya dikosongkan",
+ "Memory deleted successfully": "Memori berjaya dipadamkan",
+ "Memory updated successfully": "Memori berjaya dikemas kini",
"Merge Responses": "Gabungkan Respons",
"Merged Response": "Respons Digabungkan",
"Message": "Mesej",
@@ -1328,7 +1344,7 @@
"messages": "mesej",
"Messages": "Mesej",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Mesej yang anda hantar selepas membuat pautan anda tidak akan dikongsi. Pengguna dengan URL akan dapat melihat perbualan yang dikongsi.",
- "Metadata Field": "",
+ "Metadata Field": "Medan Metadata",
"Microsoft OneDrive": "Microsoft OneDrive",
"Microsoft OneDrive (personal)": "Microsoft OneDrive (peribadi)",
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (kerja/sekolah)",
@@ -1340,59 +1356,59 @@
"MistralAI": "MistralAI",
"Mo_day_of_week": "Isn",
"Model": "Model",
- "Model '{{modelName}}' has been successfully downloaded.": "Model '{{ modelName }}' telah berjaya dimuat turun.",
- "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{ modelTag }}' sudah dalam baris gilir untuk dimuat turun.",
+ "Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' berjaya dimuat turun.",
+ "Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' sudah berada dalam baris gilir muat turun.",
"Model {{modelName}} deleted successfully": "Model {{modelName}} berjaya dipadam",
- "Model {{modelName}} is not vision capable": "Model {{ modelName }} tidak mempunyai keupayaan penglihatan",
+ "Model {{modelName}} is not vision capable": "Model {{modelName}} tidak menyokong pemprosesan imej",
"Model {{name}} is now {{status}}": "Model {{name}} kini {{status}}",
"Model {{name}} is now hidden": "Model {{name}} kini tersembunyi",
"Model {{name}} is now visible": "Model {{name}} kini dapat dilihat",
- "Model added to pinned models": "",
- "Model added to selected models": "",
+ "Model added to pinned models": "Model ditambah kepada model tersemat",
+ "Model added to selected models": "Model ditambah kepada model terpilih",
"Model created successfully!": "Model berjaya dibuat!",
- "Model deleted successfully": "",
- "Model download started": "",
+ "Model deleted successfully": "Model berjaya dipadam",
+ "Model download started": "Muat turun model bermula",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Laluan sistem fail model dikesan. Nama pendek model diperlukan untuk kemas kini, tidak boleh diteruskan.",
- "Model Filtering": "Penapis Model",
+ "Model Filtering": "Penapisan Model",
"Model ID": "ID Model",
- "Model ID cannot contain whitespace.": "",
- "Model ID is already added": "",
+ "Model ID cannot contain whitespace.": "ID Model tidak boleh mengandungi ruang putih.",
+ "Model ID is already added": "ID Model sudah ditambah",
"Model ID is required.": "ID Model diperlukan.",
"Model IDs": "ID Model",
- "Model is now private": "",
- "Model is now public": "",
- "Model list refreshed": "",
- "Model loaded successfully": "",
+ "Model is now private": "Model kini peribadi",
+ "Model is now public": "Model kini umum",
+ "Model list refreshed": "Senarai model disegar semula",
+ "Model loaded successfully": "Model berjaya dimuatkan",
"Model Name": "Nama Model",
"Model name already exists, please choose a different one": "Nama model sudah wujud, sila pilih yang lain",
"Model Name is required.": "Nama Model diperlukan.",
- "Model names and usage frequency": "Nama model dan frekuensi penggunaan",
+ "Model names and usage frequency": "Nama model dan kekerapan penggunaan",
"Model not found": "Model tidak dijumpai",
"Model not selected": "Model tidak dipilih",
- "Model order saved successfully": "",
+ "Model order saved successfully": "Susunan model berjaya disimpan",
"Model Params": "Parameter Model",
"Model Permissions": "Kebenaran Model",
- "model profile": "",
- "Model providers": "",
- "Model removed from pinned models": "",
- "Model removed from selected models": "",
+ "model profile": "profil model",
+ "Model providers": "Penyedia model",
+ "Model removed from pinned models": "Model dibuang daripada model yang disematkan",
+ "Model removed from selected models": "Model dikeluarkan daripada model terpilih",
"Model responses or outputs": "Respons atau output model",
"Model unloaded successfully": "Model dimuat keluar dengan berjaya",
"Model updated successfully": "Model berjaya dikemas kini",
"Model Usage": "Penggunaan Model",
- "Model: show or switch the current model.": "",
+ "Model: show or switch the current model.": "Model: tunjukkan atau tukar model semasa.",
"Model(s) do not support file upload": "Model tidak menyokong muat naik fail",
- "Modelfile Content": "Kandungan Modelfail",
- "modelfile profile": "",
+ "Modelfile Content": "Kandungan Modelfile",
+ "modelfile profile": "profil Modelfile",
"Models": "Model",
"Models Access": "Akses Model",
"Models configuration saved successfully": "Konfigurasi model disimpan dengan berjaya",
"Models imported successfully": "Model diimport dengan berjaya",
"Models Public Sharing": "Perkongsian Awam Model",
"Models Sharing": "Perkongsian Model",
- "Modified": "",
+ "Modified": "Diubah Suai",
"Mojeek": "Mojeek",
- "Monday – Friday": "",
+ "Monday – Friday": "Isnin – Jumaat",
"Month": "Bulan",
"Monthly": "Bulanan",
"More": "Lagi",
@@ -1401,212 +1417,212 @@
"More Options": "Pilihan Lanjutan",
"Move": "Pindah",
"Moved {{name}}": "{{name}} telah dipindahkan",
- "Multipart Upload": "",
+ "Multipart Upload": "Muat Naik Berbilang Bahagian",
"Mute": "Redam",
"Muted": "Diredamkan",
"My Terminal": "Terminal Saya",
"Name": "Nama",
- "Name and description are required": "",
+ "Name and description are required": "Nama dan keterangan diperlukan",
"Name and ID are required, please fill them out": "Nama dan ID diperlukan, sila isi semuanya",
"Name is required": "Nama diperlukan",
"Name your knowledge base": "Namakan pangkalan pengetahuan anda",
- "Name, prompt, and model are required": "Nama, arahan, dan model diperlukan",
+ "Name, prompt, and model are required": "Nama, gesaan, dan model diperlukan",
"Native": "Asli",
- "Navigate to Next Chat": "",
- "Navigate to Previous Chat": "",
+ "Navigate to Next Chat": "Navigasi ke Chat Seterusnya",
+ "Navigate to Previous Chat": "Navigasi ke Chat Sebelumnya",
"Never": "Tidak Pernah",
"New": "Baharu",
"New Button": "Butang Baharu",
"New calendar": "Kalendar baharu",
"New Calendar": "Kalendar Baharu",
- "New chat": "",
- "New Chat": "Perbualan Baharu",
- "New directory": "",
- "New Directory": "",
+ "New chat": "Chat baharu",
+ "New Chat": "Chat Baharu",
+ "New directory": "Direktori baharu",
+ "New Directory": "Direktori Baharu",
"New File": "Fail Baharu",
"New Folder": "Folder Baharu",
"New Function": "Fungsi Baharu",
"New Group": "Kumpulan Baharu",
"New Note": "Nota Baharu",
"New Password": "Kata Laluan Baharu",
- "New Temporary Chat": "Perbualan Sementara Baharu",
+ "New Temporary Chat": "Chat Sementara Baharu",
"New Terminal": "Terminal Baharu",
"New Tool": "Alat Baharu",
"New Webhook": "Webhook Baharu",
"new-channel": "saluran-baru",
- "Next": "",
+ "Next": "Seterusnya",
"Next message": "Mesej Seterusnya",
- "Next month": "",
- "Next page": "",
+ "Next month": "Bulan seterusnya",
+ "Next page": "Halaman seterusnya",
"Next run": "Pelaksanaan seterusnya",
- "Next version": "",
- "No access grants. Private to you.": "Tiada geran akses. Peribadi untuk anda.",
- "No actions found": "",
+ "Next version": "Versi seterusnya",
+ "No access grants. Private to you.": "Tiada kebenaran akses diberikan. Hanya anda boleh mengaksesnya.",
+ "No actions found": "Tiada tindakan ditemui",
"No activity data": "Tiada data aktiviti",
- "No additional headers are sent unless configured.": "",
+ "No additional headers are sent unless configured.": "Tiada pengepala tambahan dihantar melainkan dikonfigurasikan.",
"No authentication": "Tiada pengesahan",
"No automations found": "Tiada automasi dijumpai",
- "No channels": "",
- "No chat alerts": "",
- "No chat history": "",
- "No chat to compact": "",
- "No chat to fork": "",
- "No chats": "",
- "No chats found": "Tiada perbualan ditemui",
+ "No channels": "Tiada Saluran",
+ "No chat alerts": "Tiada makluman chat",
+ "No chat history": "Tiada sejarah chat",
+ "No chat to compact": "Tiada chat untuk dipadatkan",
+ "No chat to fork": "Tiada chat untuk dicabangkan",
+ "No chats": "Tiada chat lagi",
+ "No chats found": "Tiada chat ditemui",
"No chats found for this user.": "Tiada perbualan ditemui untuk pengguna ini.",
"No chats found.": "Tiada perbualan ditemui.",
"No content": "Tiada kandungan",
- "No content available": "",
+ "No content available": "Tiada kandungan tersedia",
"No content found": "Tiada kandungan ditemui",
- "No content to speak": "Tiada kandungan untuk bercakap",
+ "No content to speak": "Tiada kandungan untuk dibacakan",
"No conversation to save": "Tiada perbualan untuk disimpan",
"No data": "Tiada data",
- "No description": "",
+ "No description": "Tiada penerangan",
"No distance available": "Tiada jarak tersedia",
- "No event webhooks configured.": "",
- "No expiration can pose security risks.": "Tiada tamat tempoh boleh menimbulkan risiko keselamatan.",
- "No external knowledge sources configured.": "",
+ "No event webhooks configured.": "Tiada webhook acara dikonfigurasikan.",
+ "No expiration can pose security risks.": "Ketiadaan tarikh tamat tempoh boleh menimbulkan risiko keselamatan.",
+ "No external knowledge sources configured.": "Tiada sumber pengetahuan luaran yang dikonfigurasikan.",
"No feedback found": "Tiada maklum balas ditemui",
"No file selected": "Tiada fail dipilih",
"No files found": "Tiada fail ditemui",
"No files in this knowledge base.": "Tiada fail dalam pangkalan pengetahuan ini.",
"No files yet. Upload files or run Python code to create them.": "Tiada fail lagi. Muat naik fail atau jalankan kod Python untuk menciptanya.",
- "No filters found": "",
- "No folders": "",
+ "No filters found": "Tiada penapis ditemui",
+ "No folders": "Tiada folder",
"No functions found": "Tiada fungsi ditemui",
"No groups found": "Tiada kumpulan ditemui",
"No history available": "Tiada sejarah tersedia",
"No HTML, CSS, or JavaScript content found.": "Tiada kandungan HTML, CSS, atau JavaScript ditemui.",
"No inference engine with management support found": "Tiada enjin inferens dengan sokongan pengurusan ditemui",
"No kernel": "Tiada kernel",
- "No knowledge bases accessible": "",
+ "No knowledge bases accessible": "Tiada pangkalan pengetahuan boleh diakses",
"No knowledge bases found.": "Tiada pangkalan pengetahuan ditemui.",
"No knowledge found": "Tiada pengetahuan ditemui",
"No limit": "Tiada had",
- "No matches": "",
- "No model data": "",
+ "No matches": "Tiada padanan",
+ "No model data": "Tiada data model",
"No model IDs": "Tiada ID model",
- "No model usage found": "",
- "No models accessible": "",
+ "No model usage found": "Tiada penggunaan model ditemui",
+ "No models accessible": "Tiada model boleh diakses",
"No models available": "Tiada model tersedia",
"No models found": "Tiada model ditemui",
"No Notes": "Tiada Nota",
"No notes found": "Tiada nota ditemui",
- "No notification targets configured.": "",
+ "No notification targets configured.": "Tiada sasaran pemberitahuan dikonfigurasikan.",
"No one": "Tiada sesiapa",
"No output items": "Tiada item output",
"No pinned messages": "Tiada mesej disematkan",
- "No prompts found": "Tiada arahan ditemui",
- "No Repeat": "",
+ "No prompts found": "Tiada gesaan ditemui",
+ "No Repeat": "Tiada Ulangan",
"No results": "Tiada keputusan dijumpai",
"No results found": "Tiada keputusan dijumpai",
- "No runs yet": "",
+ "No runs yet": "Belum ada pelaksanaan",
"No search query generated": "Tiada pertanyaan carian dijana",
"No servers detected": "Tiada pelayan dikesan",
"No skills found": "Tiada kemahiran ditemui",
"No source available": "Tiada sumber tersedia",
"No sources found": "Tiada sumber ditemui",
- "No suggestion prompts": "Tiada arahan cadangan",
+ "No suggestion prompts": "Tiada gesaan cadangan",
"No Terminal connection configured.": "Tiada sambungan Terminal dikonfigurasi.",
"No terminal connections configured.": "Tiada sambungan terminal dikonfigurasi.",
- "No text differences": "",
+ "No text differences": "Tiada perbezaan teks",
"No tool server connections configured.": "Tiada sambungan pelayan alat dikonfigurasi.",
- "No tools accessible": "",
+ "No tools accessible": "Tiada alat boleh diakses",
"No tools found": "Tiada alat ditemui",
- "No usage data found": "",
- "No user variables configured.": "",
+ "No usage data found": "Tiada data penggunaan ditemui",
+ "No user variables configured.": "Tiada pemboleh ubah pengguna dikonfigurasikan.",
"No users were found.": "Tiada pengguna ditemui.",
"No valves": "Tiada Valves",
"No valves to update": "Tiada Valves untuk dikemas kini",
"No webhooks yet": "Tiada webhook lagi",
"Node Ids": "Id Nod",
"None": "Tiada",
- "Not configured": "",
+ "Not configured": "Belum dikonfigurasikan",
"Not factually correct": "Tidak tepat secara fakta",
- "Not helpful": "Tidak berguna",
+ "Not helpful": "Tidak membantu",
"Not Registered": "Tidak Didaftar",
"Not scheduled": "Tidak dijadualkan",
"Note": "Nota",
"Note deleted successfully": "Nota telah dipadamkan dengan berjaya",
- "Note Menu": "",
+ "Note Menu": "Menu Nota",
"Notes": "Nota-nota",
"Notes Public Sharing": "Perkongsian Awam Nota",
"Notes Sharing": "Perkongsian Nota",
- "Nothing to compact": "",
+ "Nothing to compact": "Tiada apa-apa untuk dipadatkan",
"November": "November",
"OAuth": "OAuth",
"OAuth 2.1": "OAuth 2.1",
"OAuth 2.1 (Static)": "OAuth 2.1 (Statik)",
- "OAuth discovery successful": "",
+ "OAuth discovery successful": "Penemuan OAuth berjaya",
"OAuth ID": "ID OAuth",
- "OAuth Resource Parameter": "",
- "OAuth Scopes": "",
+ "OAuth Resource Parameter": "Parameter sumber OAuth",
+ "OAuth Scopes": "Skop OAuth",
"OAuth Server URL": "URL Pelayan OAuth",
"OAuth session disconnected": "Sesi OAuth diputuskan",
"October": "Oktober",
- "of a website's sticky header": "",
+ "of a website's sticky header": "untuk pengepala laman web yang kekal kelihatan semasa menatal",
"Off": "Mati",
- "Okay, Let's Go!": "Baiklah, Jom!",
+ "Okay, Let's Go!": "Baiklah, Mari Mulakan!",
"OLED Dark": "OLED Gelap",
"Ollama": "Ollama",
"Ollama API settings updated": "Tetapan API Ollama dikemas kini",
- "Omit": "",
+ "Omit": "Abaikan",
"On": "Hidup",
"Once": "Sekali",
- "Only active during Voice Mode.": "",
+ "Only active during Voice Mode.": "Hanya aktif semasa Mod Suara.",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Hanya aktif apabila tetapan \"Tampal Teks Besar sebagai Fail\" dihidupkan.",
- "Only active when a tool call is waiting for approval.": "",
+ "Only active when a tool call is waiting for approval.": "Hanya aktif apabila panggilan alat sedang menunggu kelulusan.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Hanya aktif apabila input perbualan berada dalam fokus dan LLM sedang menjana respons.",
"Only active when the chat input is in focus.": "Hanya aktif apabila input perbualan berada dalam fokus.",
"Only alphanumeric characters and hyphens are allowed": "Hanya aksara alfanumerik dan tanda hubung dibenarkan",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Hanya aksara alfanumerik dan sempang dibenarkan dalam rentetan arahan.",
"Only can be triggered when the chat input is in focus.": "Hanya boleh dicetuskan apabila input perbualan berada dalam fokus.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Hanya koleksi yang boleh disunting, buat pangkalan pengetahuan baharu untuk menyunting/menambah dokumen.",
- "Only install functions from sources you trust.": "",
- "Only install tools from sources you trust.": "",
+ "Only install functions from sources you trust.": "Hanya pasang fungsi daripada sumber yang anda percayai.",
+ "Only install tools from sources you trust.": "Hanya pasang alat daripada sumber yang anda percayai.",
"Only invited users can access": "Hanya pengguna yang dijemput boleh mengakses",
"Only select users and groups with permission can access": "Hanya pengguna dan kumpulan terpilih dengan kebenaran boleh mengakses",
- "Only sync new/updated chats": "Hanya segerak perbualan baharu/terkini",
- "Only when away": "",
+ "Only sync new/updated chats": "Hanya segerakkan chat baharu/dikemas kini",
+ "Only when away": "Hanya apabila tiada",
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Maaf, didapati URL tidak sah. Sila semak semula dan cuba lagi.",
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Maaf, anda menggunakan kaedah yang tidak disokong (bahagian 'frontend' sahaja). Sila sediakan WebUI daripada 'backend'.",
- "Open": "",
- "Open automation": "",
- "Open create menu": "",
+ "Open": "Buka",
+ "Open automation": "Buka automasi",
+ "Open create menu": "Buka menu cipta",
"Open file": "Buka fail",
- "Open Folder": "",
+ "Open Folder": "Buka Folder",
"Open in full screen": "Buka dalam skrin penuh",
"Open in new tab": "Buka dalam tab baharu",
"Open link": "Buka pautan",
- "Open modal to configure connection": "Buka modal untuk mengkonfigurasi sambungan",
+ "Open modal to configure connection": "Buka dialog untuk mengkonfigurasikan sambungan",
"Open Model Selector": "Buka Pemilih Model",
- "Open note": "",
+ "Open note": "Buka nota",
"Open Settings": "Buka Tetapan",
- "Open settings.": "",
+ "Open settings.": "Buka tetapan.",
"Open Sidebar": "Buka Bar Sisi",
- "Open terminal": "",
- "Open the changelog modal after sign-in when enabled.": "",
+ "Open terminal": "Buka terminal",
+ "Open the changelog modal after sign-in when enabled.": "Buka dialog log perubahan selepas login apabila didayakan.",
"Open User Profile Menu": "Buka Menu Profil Pengguna",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI boleh menggunakan alat yang disediakan oleh mana-mana pelayan OpenAPI.",
"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}}) adalah lebih rendah daripada versi yang diperlukan (v{{REQUIRED_VERSION}})",
"OpenAI": "OpenAI",
- "OpenAI API Key is required.": "Kekunci API OpenAI diperlukan",
+ "OpenAI API Key is required.": "Kunci API OpenAI diperlukan.",
"OpenAI API settings updated": "Tetapan API OpenAI telah dikemas kini",
- "OpenAI URL/Key required.": "URL/Kekunci OpenAI diperlukan",
+ "OpenAI URL/Key required.": "URL/Kunci OpenAI diperlukan.",
"OpenAPI Spec": "Spesifikasi OpenAPI",
"openapi.json URL or Path": "URL atau Laluan openapi.json",
"optional": "pilihan",
"Optional": "Pilihan",
"or": "atau",
- "Orchestrator": "",
+ "Orchestrator": "Penyelaras",
"Ordered List": "Senarai Tertib",
- "Original": "",
+ "Original": "Asal",
"Other": "Lain-lain",
"out of": "daripada",
"Output": "Output",
"OUTPUT": "OUTPUT",
- "Overcome procrastination": "",
+ "Overcome procrastination": "Atasi penangguhan",
"Overview": "Gambaran Keseluruhan",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "URL API PaddleOCR-vl diperlukan.",
@@ -1615,45 +1631,45 @@
"Parameters": "Parameter",
"Parent message not found": "Mesej induk tidak ditemui",
"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.": "Sertai papan kedudukan komuniti dan penilaian! Menyegerakkan statistik penggunaan yang diagregat membantu mendorong penyelidikan dan penambahbaikan kepada Open WebUI. Privasi anda adalah yang terpenting: kandungan mesej tidak pernah dikongsi.",
- "Passthrough params": "",
+ "Passthrough params": "Parameter yang diteruskan tanpa perubahan",
"Password": "Kata Laluan",
- "Password updated. Please sign in again.": "",
+ "Password updated. Please sign in again.": "Kata laluan dikemas kini. Sila login sekali lagi.",
"Passwords do not match.": "Kata laluan tidak sepadan.",
- "Path": "",
+ "Path": "Laluan",
"Path copied": "Laluan 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": "Penggunaan token tertinggi",
"pending": "tertangguh",
"Pending": "Tertangguh",
- "Per automation": "",
- "Per chat": "",
+ "Per automation": "Setiap automasi",
+ "Per chat": "Setiap chat",
"Permission denied when accessing media devices": "Tidak mendapat kebenaran apabila cuba mengakses peranti media",
"Permission denied when accessing microphone": "Tidak mendapat kebenaran apabila cuba mengakses mikrofon",
"Permission denied when accessing microphone: {{error}}": "Tidak mendapat kebenaran apabila cuba mengakses mikrofon: {{error}}",
"Permissions": "Kebenaran",
- "Permissions reset to defaults": "",
+ "Permissions reset to defaults": "Kebenaran ditetapkan semula kepada lalai",
"Persistent": "Kekal",
- "Personal": "",
+ "Personal": "Peribadi",
"Pin": "Semat",
"Pin to Sidebar": "Semat pada Bar Sisi",
"Pinned": "Disemat",
"Pinned Messages": "Mesej Disematkan",
- "Pipe": "Saluran",
+ "Pipe": "Pipe",
"Pipeline deleted successfully": "Pipeline berjaya dipadam",
"Pipeline downloaded successfully": "Pipeline berjaya dimuat turun",
- "Pipelines are a plugin system with arbitrary code execution.": "",
+ "Pipelines are a plugin system with arbitrary code execution.": "Pipelines ialah sistem pemalam yang boleh melaksanakan sebarang kod.",
"Pipelines Not Detected": "Pipeline tidak ditemui",
"Plain text (.md)": "Teks Biasa (.md)",
"Plain text (.txt)": "Teks biasa (.txt)",
"Playground": "Playground",
- "Playground Chat": "",
+ "Playground Chat": "Chat Playground",
"Please carefully review the following warnings:": "Sila semak dengan teliti amaran berikut:",
"Please connect all required integrations before sending a message": "Sila sambungkan semua integrasi yang diperlukan sebelum menghantar mesej",
"Please do not close the settings page while loading the model.": "Sila jangan tutup halaman tetapan semasa memuat model.",
"Please enter a message or attach a file.": "Sila masukkan mesej atau lampirkan fail.",
- "Please enter a prompt": "Sila masukkan arahan",
+ "Please enter a prompt": "Sila masukkan gesaan",
"Please enter a valid ID": "Sila masukkan ID yang sah",
"Please enter a valid JSON spec": "Sila masukkan spesifikasi JSON yang sah",
"Please enter a valid path": "Sila masukkan laluan yang sah",
@@ -1662,104 +1678,105 @@
"Please enter Client ID and Client Secret": "Sila masukkan ID Klien dan Rahsia Klien",
"Please fill in all fields.": "Sila isi semua medan.",
"Please register the OAuth client": "Sila daftarkan klien OAuth",
- "Please save the connection before authorizing OAuth": "",
+ "Please save the connection before authorizing OAuth": "Simpan sambungan sebelum memberikan kebenaran OAuth",
"Please save the connection to persist the OAuth client information and do not change the ID": "Sila simpan sambungan untuk mengekalkan maklumat klien OAuth dan jangan ubah ID",
"Please select a model.": "Sila pilih model.",
"Please select a reason": "Sila pilih satu sebab",
"Please select a valid JSON file": "Sila pilih fail JSON yang sah",
- "Please select at least one user for Direct Message channel.": "Sila pilih sekurang-kurangnya satu pengguna untuk saluran Direct Message.",
+ "Please select at least one user for Direct Message channel.": "Sila pilih sekurang-kurangnya seorang pengguna untuk saluran Mesej Langsung.",
"Please wait until all files are uploaded.": "Sila tunggu sehingga semua fail dimuat naik.",
- "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.": "",
+ "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP, atau GIF. Sehingga 5 MiB dan 25 megapiksel.",
+ "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Perubahan dasar terpakai pada terminal yang baharu disediakan. Muat semula terminal yang berkenaan untuk menerapkan perubahan pada terminal sedia ada.",
"Policy ID": "ID Dasar",
- "Policy ID is required": "",
- "Policy is still loading": "",
+ "Policy ID is required": "ID Dasar diperlukan",
+ "Policy is still loading": "Dasar masih dimuatkan",
"Ports": "Port",
"Positive attitude": "Sikap positif",
"Prefer not to say": "Lebih suka tidak menjawab",
- "Preferences": "",
+ "Preferences": "Keutamaan",
"Prefix ID": "ID Awalan",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "ID Awalan digunakan untuk mengelakkan konflik dengan sambungan lain dengan menambah awalan pada ID model - biarkan kosong untuk menyahaktifkan",
- "Preparing {{NAME}}...": "",
- "Preparing download...": "",
- "Press keys...": "",
+ "Preparing {{NAME}}...": "Menyediakan {{NAME}}...",
+ "Preparing download...": "Menyediakan muat turun...",
+ "Press keys...": "Tekan kekunci...",
"Prevent File Creation": "Cegah Penciptaan Fail",
"Preview": "Pratonton",
- "Preview Access": "",
- "Preview failed": "",
- "Previous": "",
+ "Preview Access": "Pratonton Akses",
+ "Preview failed": "Pratonton gagal",
+ "Previous": "Sebelum",
"Previous 30 days": "30 hari sebelumnya",
"Previous 7 days": "7 hari sebelumnya",
"Previous message": "Mesej sebelumnya",
- "Previous month": "",
- "Previous page": "",
- "Previous version": "",
+ "Previous month": "Bulan sebelumnya",
+ "Previous page": "Halaman terdahulu",
+ "Previous version": "Versi sebelumnya",
"Private": "Peribadi",
"Private conversation between selected users": "Perbualan peribadi antara pengguna terpilih",
"Production version updated": "Versi pengeluaran dikemas kini",
"Profile": "Profil",
- "Prompt": "Arahan",
- "Prompt Content": "Kandungan arahan",
- "Prompt created successfully": "Arahan berjaya dibuat",
- "Prompt Menu": "",
- "Prompt Name": "Nama Arahan",
- "Prompt updated successfully": "Arahan dikemas kini dengan berjaya",
- "Prompts": "Arahan",
- "Prompts Access": "Akses Arahan",
- "Prompts Public Sharing": "Perkongsian Awam Arahan",
- "Prompts Sharing": "Perkongsian Arahan",
- "Provider": "Pembekal",
+ "Prompt": "Gesaan",
+ "Prompt Content": "Kandungan gesaan",
+ "Prompt created successfully": "Gesaan berjaya dicipta",
+ "Prompt Menu": "Menu gesaan",
+ "Prompt Name": "Nama Gesaan",
+ "Prompt updated successfully": "Gesaan berjaya dikemas kini",
+ "Prompts": "Gesaan",
+ "Prompts Access": "Akses Gesaan",
+ "Prompts Public Sharing": "Perkongsian Awam Gesaan",
+ "Prompts Sharing": "Perkongsian Gesaan",
+ "Provider": "Penyedia",
"Public": "Awam",
- "Pull \"{{searchValue}}\" from Ollama.com": "Tarik \"{{ searchValue }}\" daripada Ollama.com",
- "Pull a model from Ollama.com": "Tarik model daripada Ollama.com",
- "Pull Model": "Tarik Model",
+ "Pull \"{{searchValue}}\" from Ollama.com": "Muat turun \"{{searchValue}}\" daripada Ollama.com",
+ "Pull a model from Ollama.com": "Muat turun model daripada Ollama.com",
+ "Pull Model": "Muat Turun Model",
"Pyodide file browser": "Pelayar fail Pyodide",
- "Quality": "",
- "Query failed": "",
+ "Quality": "Kualiti",
+ "Query failed": "Pertanyaan gagal",
"Querying": "Sedang Membuat Pertanyaan",
- "Queued messages": "",
+ "Queued messages": "Mesej dalam baris gilir",
"Quick Actions": "Tindakan Pantas",
- "Ran {{COUNT}} analyses": "Menjalankan {{COUNT}} analisis",
- "Ran {{COUNT}} analysis": "Menjalankan {{COUNT}} analisis",
+ "Ran {{COUNT}} analyses": "Telah menjalankan {{COUNT}} analisis",
+ "Ran {{COUNT}} analysis": "Telah menjalankan {{COUNT}} analisis",
"Rate {{rating}} out of 10": "Nilai {{rating}} daripada 10",
"Rating": "Penilaian",
"Read": "Baca",
"Read Aloud": "Baca dengan lantang",
"Read more →": "Baca lanjut →",
- "Read only": "",
+ "Read only": "Baca sahaja",
"Read Only": "Baca Sahaja",
- "Read the docs": "",
- "Read-only": "",
+ "Read the docs": "Baca dokumen",
+ "Read-only": "Baca-sahaja",
"Read-Only Access": "Akses Baca Sahaja",
"Reason": "Sebab",
"Reasoning text...": "Teks penaakulan...",
- "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.": "Bina semula vektor fail pengetahuan, carian pengetahuan dan memori menggunakan model embedding semasa.",
+ "Receives matching events across the instance, including system/config events and events associated with any user.": "Menerima acara yang sepadan daripada seluruh instans, termasuk acara sistem/konfigurasi dan acara yang berkaitan dengan mana-mana pengguna.",
+ "Receives matching events that are not associated with a user.": "Menerima acara sepadan yang tidak dikaitkan 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 acara berkaitan pengguna yang sepadan hanya apabila pelaku, subjek pengguna atau data pengguna sepadan dengan pengguna ini atau ahli kumpulan semasa. Acara sistem/konfigurasi tidak dihantar.",
"Recently Used": "Digunakan Baru-Baru Ini",
- "Recommended": "",
+ "Recommended": "Disyorkan",
"Reconnected": "Disambung semula",
- "Record": "Rakaman",
+ "Record": "Rakam",
"Record voice": "Rakam suara",
- "Redirecting you to Open WebUI Community": "Membawa anda ke Komuniti OpenWebUI",
+ "Redirecting you to Open WebUI Community": "Mengubah hala anda ke Komuniti 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.": "Mengurangkan kebarangkalian menjana jawapan tanpa makna. Nilai yang lebih tinggi (cth. 100) akan memberikan jawapan yang lebih pelbagai, manakala nilai yang lebih rendah (cth. 10) akan lebih konservatif.",
- "Reference Chats": "Perbualan Rujukan",
+ "Reference Chats": "Chat Rujukan",
"Refresh": "Segarkan",
- "Refresh requested: {{count}} terminal(s)_other": "",
- "Refresh Terminals": "",
- "Refreshing...": "",
- "Refused when it shouldn't have": "Menolak di mana ia tidak sepatutnya",
+ "Refresh requested: {{count}} terminal(s)_one": "Permintaan muat semula: {{count}} terminal",
+ "Refresh requested: {{count}} terminal(s)_other": "Permintaan muat semula: {{count}} terminal",
+ "Refresh Terminals": "Segar Semula Terminal",
+ "Refreshing...": "Menyegar semula...",
+ "Refused when it shouldn't have": "Menolak apabila tidak sepatutnya",
"Regenerate": "Jana semula",
- "Regenerate Response": "Respons Jana Semula",
- "Region and language of the search results, e.g. en-us.": "",
+ "Regenerate Response": "Jana Semula Respons",
+ "Region and language of the search results, e.g. en-us.": "Rantau dan bahasa hasil carian, cth. en-us.",
"Register Again": "Daftar Semula",
"Register Client": "Daftar Klien",
"Registered": "Didaftarkan",
- "registered to": "",
+ "registered to": "didaftarkan kepada",
"Registration failed": "Pendaftaran gagal",
"Registration successful": "Pendaftaran berjaya",
- "Reindex Embedding Data": "",
+ "Reindex Embedding Data": "Indeks semula data embedding",
"Release Notes": "Nota Keluaran",
"Releases": "Keluaran",
"Relevance": "Perkaitan",
@@ -1772,113 +1789,115 @@
"Remove File": "Buang Fail",
"Remove from favorites": "Buang daripada kegemaran",
"Remove image": "Buang imej",
- "Remove Pinned Model": "",
- "Remove prompt suggestion": "",
- "Remove Selected Model": "",
- "Removing {{count}} stale files..._other": "",
+ "Remove Pinned Model": "Keluarkan Model Tersemat",
+ "Remove prompt suggestion": "Buang cadangan gesaan",
+ "Remove Selected Model": "Buang Model Terpilih",
+ "Removing {{count}} stale files..._one": "Mengalih keluar {{count}} fail lapuk...",
+ "Removing {{count}} stale files..._other": "Mengalih keluar {{count}} fail lapuk...",
"Rename": "Namakan Semula",
"Renamed to {{name}}": "Dinamakan semula kepada {{name}}",
- "Reorder": "",
- "Repeat": "",
- "Replace": "",
+ "Reorder": "Susun semula",
+ "Repeat": "Ulang",
+ "Replace": "Ganti",
"Reply": "Balas",
- "Reply in Thread": "Balas dalam Benang",
- "Reply to thread...": "Balas ke benang...",
+ "Reply in Thread": "Balas dalam Rantaian",
+ "Reply to thread...": "Balas dalam rantaian...",
"Replying to {{NAME}}": "Membalas kepada {{NAME}}",
"required": "diperlukan",
- "Research Knowledge": "",
+ "Research Knowledge": "Pengetahuan Penyelidikan",
"Reset": "Tetapkan Semula",
"Reset All Models": "Tetapkan Semula Semua Model",
- "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": "Tetapkan semula semua kebenaran kepada nilai konfigurasi asalnya",
+ "Reset Defaults": "Set Semula Lalai",
+ "Reset group permissions to match the current default user permissions": "Tetapkan semula kebenaran kumpulan untuk dipadankan dengan kebenaran pengguna lalai semasa",
+ "Reset knowledge base?": "Tetapkan semula pangkalan pengetahuan?",
+ "Reset persisted files": "Tetapkan semula fail yang disimpan secara kekal",
+ "Reset to Defaults": "Tetap Semula ke Lalai",
"Reset view": "Tetapkan Semula Paparan",
- "Reset zoom": "",
- "Resize panel": "",
+ "Reset zoom": "Set semula zum",
+ "Resize panel": "Saiz semula 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.": "Pemberitahuan respons tidak boleh diaktifkan kerana kebenaran tapak web tidak diberi. Sila lawati tetapan pelayar web anda untuk memberikan akses yang diperlukan.",
"Responses": "Respons",
"Restart": "Mula Semula",
"Result": "Hasil",
"RESULT": "KEPUTUSAN",
- "Retrieved {{count}} sources": "Mengambil {{count}} sumber",
- "Retrieved {{count}} sources_other": "Mengambil {{count}} sumber",
- "Retrieved 1 source": "Mengambil 1 sumber",
- "Retry": "",
- "Rewrite the selected text.": "",
+ "Retrieved {{count}} sources": "{{count}} sumber diperoleh",
+ "Retrieved {{count}} sources_one": "{{count}} sumber diperoleh",
+ "Retrieved {{count}} sources_other": "{{count}} sumber diperoleh",
+ "Retrieved 1 source": "1 sumber diperoleh",
+ "Retry": "Cuba semula",
+ "Rewrite the selected text.": "Tulis semula teks yang dipilih.",
"Role": "Peranan",
"RTL": "RTL",
"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.": "",
+ "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.": "Gunakan AI mengikut cara anda. Sambungkan mana-mana model, luaskan fungsinya dengan kod dan lindungi perkara yang penting tanpa kompromi. Model anda, data anda, mesin anda, di mana-mana sahaja anda menggunakannya.",
"Run All": "Jalankan Semua",
- "Run cell (⌘+Enter)": "",
+ "Run cell (⌘+Enter)": "Jalankan sel (⌘+Enter)",
"Run now": "Jalankan sekarang",
"Run Now": "Jalankan Sekarang",
- "Run tools without asking for approval.": "",
+ "Run tools without asking for approval.": "Jalankan alat tanpa meminta kelulusan.",
"Running": "Sedang dijalankan",
- "Running Open WebUI for a team?": "",
+ "Running Open WebUI for a team?": "Menggunakan Open WebUI untuk pasukan?",
"Running...": "Sedang dijalankan...",
- "runs": "",
- "Runs": "",
+ "runs": "pelaksanaan",
+ "Runs": "Pelaksanaan",
"Sa_day_of_week": "Sab",
"Save": "Simpan",
"Save & Create": "Simpan & Cipta",
"Save & Update": "Simpan & Kemas Kini",
"Save As Copy": "Simpan Sebagai Salinan",
- "Save Chat": "Simpan Perbualan",
+ "Save Chat": "Simpan Chat",
"Saved": "Tersimpan",
- "Saving...": "",
+ "Saving...": "Menyimpan...",
"Schedule": "Jadual",
"Scheduled time must be in the future": "Masa dijadualkan mestilah pada masa hadapan",
- "Screen Share": "",
- "Scroll to bottom": "",
+ "Screen Share": "Perkongsian Skrin",
+ "Scroll to bottom": "Tatal ke Bahagian Bawah",
"Scroll to Top": "Tatal ke Atas",
"Search": "Carian",
"Search a model": "Cari Model",
- "Search actions": "",
+ "Search actions": "Cari tindakan",
"Search all emojis": "Cari semua emoji",
"Search Automations": "Cari Automasi",
- "Search channels": "",
- "Search Chats": "Cari Perbualan",
+ "Search channels": "Cari saluran",
+ "Search Chats": "Cari Chat",
"Search Collection": "Cari Koleksi",
"Search Files": "Cari Fail",
- "Search files and contents": "",
- "Search filters": "",
- "Search folders": "",
- "search for archived chats": "cari untuk perbualan yang diarkibkan",
- "search for folders": "cari untuk folder",
- "search for pinned chats": "cari untuk perbualan yang disematkan",
- "search for shared chats": "cari untuk perbualan yang dikongsi",
- "search for tags": "cari untuk tag",
- "Search Functions": "Carian Fungsi",
+ "Search files and contents": "Cari fail dan kandungan",
+ "Search filters": "Cari penapis",
+ "Search folders": "Cari folder",
+ "search for archived chats": "cari chat yang diarkibkan",
+ "search for folders": "cari folder",
+ "search for pinned chats": "cari chat yang disematkan",
+ "search for shared chats": "cari chat yang dikongsi",
+ "search for tags": "cari tag",
+ "Search Functions": "Cari Fungsi",
"Search Groups": "Cari Kumpulan",
"Search In Models": "Cari Dalam Model",
"Search Knowledge": "Cari Pengetahuan",
- "Search Memories": "Cari Ingatan",
- "Search Models": "Carian Model",
+ "Search Memories": "Cari Memori",
+ "Search Models": "Cari Model",
"Search Notes": "Cari Nota",
"Search options": "Pilihan carian",
- "Search or add pattern": "",
- "Search Prompts": "Carian arahan",
- "Search skills": "",
+ "Search or add pattern": "Cari atau tambah corak",
+ "Search Prompts": "Cari Gesaan",
+ "Search skills": "Cari Kemahiran",
"Search Skills": "Cari Kemahiran",
"Search the internet": "Cari di internet",
- "Search tools": "",
- "Search Tools": "Alat Carian",
- "Search translations": "",
- "Search users or groups": "",
- "Searched {{count}} sites": "Telah mencari {{count}} laman",
+ "Search tools": "Cari alat",
+ "Search Tools": "Cari Alat",
+ "Search translations": "Cari terjemahan",
+ "Search users or groups": "Cari pengguna atau kumpulan",
+ "Searched {{count}} sites": "Telah mencari di {{count}} laman",
"Searching": "Sedang mencari",
- "Searching \"{{searchQuery}}\"": "Mencari \"{{ searchQuery }}\"",
+ "Searching \"{{searchQuery}}\"": "Mencari \"{{searchQuery}}\"",
"Searching Knowledge for \"{{searchQuery}}\"": "Mencari Pengetahuan untuk \"{{searchQuery}}\"",
"Searching the web": "Mencari di web",
"See readme.md for instructions": "Lihat readme.md untuk arahan",
"Select": "Pilih",
"Select {{modelName}} model": "Pilih model {{modelName}}",
- "Select {{name}}": "",
+ "Select {{name}}": "Pilih {{name}}",
"Select a base model (e.g. llama3, gpt-4o)": "Pilih model asas (cth. llama3, gpt-4o)",
"Select a conversation to preview": "Pilih perbualan untuk pratonton",
"Select a engine": "Pilih enjin",
@@ -1895,83 +1914,83 @@
"Select a theme": "Pilih tema",
"Select a tool": "Pilih alat",
"Select a voice": "Pilih suara",
- "Select Action": "",
+ "Select Action": "Pilih satu tindakan",
"Select All": "Pilih Semua",
"Select an auth method": "Pilih kaedah pengesahan",
"Select an embedding model engine": "Pilih enjin model Embedding",
"Select an engine": "Pilih enjin",
- "Select an instance": "",
- "Select an Ollama instance": "Pilih contoh Ollama",
+ "Select an instance": "Pilih instans",
+ "Select an Ollama instance": "Pilih instans Ollama",
"Select an option": "Pilih pilihan",
"Select an output format": "Pilih format keluaran",
"Select dtype": "Pilih dtype",
"Select Engine": "Pilih Enjin",
- "Select Filter": "",
+ "Select Filter": "Pilih Penapis",
"Select how to split message text for TTS requests": "Pilih cara untuk membahagikan teks mesej untuk permintaan TTS",
"Select Knowledge": "Pilih Pengetahuan",
"Select Method": "Pilih Kaedah",
"Select model": "Pilih model",
"Select only one model to call": "Pilih hanya satu model untuk dipanggil",
- "Select options": "",
- "Select Skill": "",
- "Select Tool": "",
+ "Select options": "Pilih pilihan",
+ "Select Skill": "Pilih Kemahiran",
+ "Select Tool": "Pilih Alat",
"Select view": "Pilih paparan",
- "Selected": "",
+ "Selected": "Dipilih",
"Selected model: {{modelName}}": "Model terpilih: {{modelName}}",
"Selected model(s) do not support image inputs": "Model dipilih tidak menyokong input imej",
- "Selected models define incompatible Chat Variables.": "",
+ "Selected models define incompatible Chat Variables.": "Model yang dipilih menentukan Pemboleh Ubah Chat yang tidak serasi.",
"semantic": "semantik",
"Send": "Hantar",
- "Send a Message": "Hantar Pesanan",
- "Send events for": "",
- "Send message": "Hantar pesanan",
+ "Send a Message": "Hantar Mesej",
+ "Send events for": "Hantar acara untuk",
+ "Send message": "Hantar mesej",
"Send now": "Hantar sekarang",
- "Send Test": "",
+ "Send Test": "Hantar Ujian",
"September": "September",
"Server connection failed": "Sambungan pelayan gagal",
"Server connection verified": "Sambungan pelayan disahkan",
- "Service Account": "",
- "Services": "",
+ "Service Account": "Akaun Perkhidmatan",
+ "Services": "Perkhidmatan",
"Session": "Sesi",
- "Session expired. Please sign in again.": "",
- "Set a local zoom level for the app interface.": "",
+ "Session expired. Please sign in again.": "Sesi tamat tempoh. Sila login sekali lagi.",
+ "Set a local zoom level for the app interface.": "Tetapkan tahap zum tempatan untuk antara muka aplikasi.",
"Set as default": "Tetapkan sebagai lalai",
- "Set as Pinned Model": "",
+ "Set as Pinned Model": "Tetapkan sebagai Model Tersemat",
"Set as Production": "Tetapkan sebagai Pengeluaran",
- "Set as Selected Model": "",
+ "Set as Selected Model": "Tetapkan sebagai Model Terpilih",
"Set embedding model": "Tetapkan model Embedding",
"Set embedding model (e.g. {{model}})": "Tetapkan model Embedding (cth {{model}})",
- "Set reranking model (e.g. {{model}})": "Tetapkan model 'reranking' (cth {{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.": "Tetapkan bilangan lapisan yang akan dimunggahkan ke GPU. Meningkatkan nilai ini dapat meningkatkan prestasi dengan ketara untuk model yang dioptimalkan untuk pecutan GPU tetapi mungkin juga menggunakan lebih banyak kuasa dan sumber 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.": "Tetapkan bilangan benang pekerja yang digunakan untuk pengiraan. Pilihan ini mengawal berapa banyak benang yang digunakan untuk memproses permintaan masuk secara serentak. Meningkatkan nilai ini dapat meningkatkan prestasi di bawah beban kerja keserenakan tinggi tetapi mungkin juga menggunakan lebih banyak sumber CPU.",
+ "Set reranking model (e.g. {{model}})": "Tetapkan model penyusunan semula (cth. {{model}})",
+ "Set system-wide interface defaults for every account. Personal settings override these defaults.": "Tetapkan lalai antara muka seluruh sistem untuk setiap akaun. Tetapan peribadi mengatasi lalai 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.": "Tetapkan bilangan lapisan yang akan dipindahkan ke GPU. Meningkatkan nilai ini dapat meningkatkan prestasi dengan ketara untuk model yang dioptimumkan bagi pecutan GPU tetapi mungkin juga menggunakan lebih banyak kuasa dan sumber 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.": "Tetapkan bilangan bebenang pekerja yang digunakan untuk pengiraan. Pilihan ini mengawal bilangan bebenang yang digunakan untuk memproses permintaan masuk secara serentak. Meningkatkan nilai ini boleh meningkatkan prestasi apabila banyak tugas dijalankan serentak tetapi mungkin juga menggunakan lebih banyak sumber CPU.",
"Set whisper model": "Tetapkan model whisper",
"Set your status": "Tetapkan 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 rata terhadap token yang telah muncul sekurang-kurangnya sekali. Nilai yang lebih tinggi (cth. 1.5) akan menghukum pengulangan dengan lebih kuat, manakala nilai yang lebih rendah (cth. 0.9) akan lebih belas kasihan. Pada 0, ia dinyahaktifkan.",
- "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 penskalaan terhadap token untuk menghukum pengulangan, berdasarkan berapa kali ia telah muncul. Nilai yang lebih tinggi (cth. 1.5) akan menghukum pengulangan dengan lebih kuat, manakala nilai yang lebih rendah (cth. 0.9) akan lebih belas kasihan. Pada 0, ia dinyahaktifkan.",
+ "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 sekurang-kurangnya sekali. Nilai yang lebih tinggi (cth., 1.5) mengenakan penalti yang lebih besar terhadap pengulangan, manakala nilai yang lebih rendah (cth., 0.9) mengenakan penalti yang lebih kecil. Pada 0, fungsi ini dinyahdayakan.",
+ "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 mengenakan penalti terhadap pengulangan berdasarkan kekerapan kemunculannya. Nilai yang lebih tinggi (cth., 1.5) mengenakan penalti yang lebih besar terhadap pengulangan, manakala nilai yang lebih rendah (cth., 0.9) mengenakan penalti yang lebih kecil. Pada 0, fungsi ini dinyahdayakan.",
"Sets how far back for the model to look back to prevent repetition.": "Menetapkan sejauh mana model perlu melihat ke belakang untuk mencegah pengulangan.",
"Sets the size of the context window used to generate the next token.": "Menetapkan saiz tetingkap konteks yang digunakan untuk menjana token seterusnya.",
"Setting": "Tetapan",
"Settings": "Tetapan",
- "settings configured": "",
+ "settings configured": "tetapan dikonfigurasikan",
"Settings Permissions": "Kebenaran Tetapan",
"Settings saved successfully!": "Tetapan berjaya disimpan!",
- "Settings: open settings.": "",
+ "Settings: open settings.": "Tetapan: buka tetapan.",
"settings.admin.analytics.title": "Analitik",
- "settings.admin.audio.additionalParameters.description": "",
+ "settings.admin.audio.additionalParameters.description": "Masukkan parameter permintaan TTS serasi OpenAI tambahan sebagai JSON.",
"settings.admin.audio.additionalParameters.label": "Parameter Tambahan",
- "settings.admin.audio.languageLocales.label": "Lokalisasi Bahasa",
- "settings.admin.audio.maxSpeakers.label": "Pembicara Maksimum",
+ "settings.admin.audio.languageLocales.label": "Lokal Bahasa",
+ "settings.admin.audio.maxSpeakers.label": "Bilangan Maksimum Penutur",
"settings.admin.audio.mistralSttModel.description": "Biarkan kosong untuk menggunakan model lalai (voxtral-mini-latest).",
"settings.admin.audio.mistralSttModel.label": "Model STT",
"settings.admin.audio.outputFormat.label": "Format Output",
- "settings.admin.audio.requestFormat.description": "",
- "settings.admin.audio.requestFormat.label": "",
+ "settings.admin.audio.requestFormat.description": "Pilih cara audio dihantar ke titik akhir serasi OpenAI.",
+ "settings.admin.audio.requestFormat.label": "Format Permintaan",
"settings.admin.audio.responseSplitting.description": "Kawal cara teks mesej dibahagi untuk permintaan TTS. 'Punctuation' membahagi kepada ayat, 'paragraphs' membahagi kepada perenggan, dan 'none' mengekalkan mesej sebagai satu rentetan.",
- "settings.admin.audio.responseSplitting.label": "",
+ "settings.admin.audio.responseSplitting.label": "Pemisahan Respons",
"settings.admin.audio.sections.speechToText.title": "Pertuturan-ke-Teks",
- "settings.admin.audio.sections.textToSpeech.title": "Teks-ke-Ucapan",
- "settings.admin.audio.speechToTextEngine.description": "",
+ "settings.admin.audio.sections.textToSpeech.title": "Teks-ke-Pertuturan",
+ "settings.admin.audio.speechToTextEngine.description": "Pilih penyedia transkripsi yang digunakan untuk input audio.",
"settings.admin.audio.speechToTextEngine.label": "Enjin Pertuturan-ke-Teks",
"settings.admin.audio.sttAzureApiKey.label": "Kunci API",
"settings.admin.audio.sttAzureBaseUrl.label": "URL Titik Akhir",
@@ -1985,467 +2004,467 @@
"settings.admin.audio.sttOpenaiApiKey.label": "Kunci API",
"settings.admin.audio.sttWhisperModel.description": "Open WebUI menggunakan faster-whisper secara dalaman.",
"settings.admin.audio.sttWhisperModel.label": "Model STT",
- "settings.admin.audio.supportedMimeTypes.description": "",
+ "settings.admin.audio.supportedMimeTypes.description": "Jenis MIME audio atau video yang dipisahkan koma diterima untuk dimuat naik.",
"settings.admin.audio.supportedMimeTypes.label": "Jenis MIME yang Disokong",
- "settings.admin.audio.textToSpeechEngine.description": "",
- "settings.admin.audio.textToSpeechEngine.label": "Enjin Teks-ke-Ucapan",
+ "settings.admin.audio.textToSpeechEngine.description": "Pilih penyedia pertuturan yang digunakan untuk output audio pembantu.",
+ "settings.admin.audio.textToSpeechEngine.label": "Enjin Teks-ke-Pertuturan",
"settings.admin.audio.title": "Audio",
"settings.admin.audio.ttsApiKey.label": "Kunci API",
"settings.admin.audio.ttsAzureSpeechBaseUrl.label": "URL Titik Akhir",
"settings.admin.audio.ttsAzureSpeechRegion.label": "Kawasan Azure",
"settings.admin.audio.ttsMistralApiBaseUrl.label": "URL Asas API",
"settings.admin.audio.ttsMistralApiKey.label": "Kunci API",
- "settings.admin.audio.ttsModel.description": "Open WebUI menggunakan SpeechT5 dan embedding pembicara CMU Arctic.",
+ "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 Asas 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": "Gunakan titik akhir /v1/chat/completions daripada /v1/audio/transcriptions untuk ketepatan yang berpotensi lebih baik.",
+ "settings.admin.audio.updateModel.label": "Kemas kini model",
+ "settings.admin.audio.useChatCompletionsApi.description": "Gunakan titik akhir /v1/chat/completions dan bukannya /v1/audio/transcriptions untuk ketepatan yang berpotensi lebih baik.",
"settings.admin.audio.useChatCompletionsApi.label": "Gunakan Chat Completions API",
- "settings.admin.authentication.adminContactEmail.description": "",
- "settings.admin.authentication.adminContactEmail.label": "E-mel Pentadbir",
- "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.adminContactEmail.description": "Email yang dipaparkan pada tindanan akaun yang menunggu kelulusan.",
+ "settings.admin.authentication.adminContactEmail.label": "Email Hubungan Pentadbir",
+ "settings.admin.authentication.adminDetails.description": "Tunjukkan butiran hubungan pentadbir sementara akaun menunggu kelulusan.",
+ "settings.admin.authentication.adminDetails.label": "Butiran Pentadbir",
+ "settings.admin.authentication.adminRoles.description": "Peranan penyedia yang memberikan akses pentadbir.",
+ "settings.admin.authentication.adminRoles.label": "Peranan Pentadbir",
+ "settings.admin.authentication.allowedDomains.description": "Domain email yang dibenarkan untuk login dengan OAuth.",
+ "settings.admin.authentication.allowedDomains.label": "Domain yang Dibenarkan",
+ "settings.admin.authentication.allowedEndpoints.description": "Laluan API dipisahkan koma yang boleh diakses oleh kunci API.",
"settings.admin.authentication.allowedEndpoints.label": "Titik Akhir yang Dibenarkan",
- "settings.admin.authentication.allowedRoles.description": "",
- "settings.admin.authentication.allowedRoles.label": "",
- "settings.admin.authentication.apiKeyEndpointRestrictions.description": "",
+ "settings.admin.authentication.allowedRoles.description": "Peranan penyedia dibenarkan untuk login.",
+ "settings.admin.authentication.allowedRoles.label": "Peranan yang Dibenarkan",
+ "settings.admin.authentication.apiKeyEndpointRestrictions.description": "Hadkan kunci API kepada titik akhir yang dikonfigurasikan.",
"settings.admin.authentication.apiKeyEndpointRestrictions.label": "Sekatan Titik Akhir Kunci API",
- "settings.admin.authentication.apiKeys.description": "",
+ "settings.admin.authentication.apiKeys.description": "Benarkan pengguna mencipta kunci API untuk akses melalui kod.",
"settings.admin.authentication.apiKeys.label": "Kunci API",
- "settings.admin.authentication.applicationDn.description": "",
- "settings.admin.authentication.applicationDn.label": "Aplikasi DN",
- "settings.admin.authentication.applicationDnPassword.description": "",
- "settings.admin.authentication.applicationDnPassword.label": "Kata Laluan Aplikasi DN",
- "settings.admin.authentication.attributeForMail.description": "",
- "settings.admin.authentication.attributeForMail.label": "Atribut untuk E-mel",
- "settings.admin.authentication.attributeForUsername.description": "",
+ "settings.admin.authentication.applicationDn.description": "Bind DN digunakan untuk carian direktori.",
+ "settings.admin.authentication.applicationDn.label": "DN Aplikasi",
+ "settings.admin.authentication.applicationDnPassword.description": "Kata laluan untuk bind DN.",
+ "settings.admin.authentication.applicationDnPassword.label": "Kata Laluan 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 digunakan sebagai nama pengguna.",
"settings.admin.authentication.attributeForUsername.label": "Atribut untuk Nama Pengguna",
- "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": "Hantar pengguna terus ke penyedia OAuth dari halaman login.",
+ "settings.admin.authentication.autoRedirect.label": "Ubah hala Auto",
+ "settings.admin.authentication.blockedGroups.description": "Kumpulan penyedia disekat daripada login.",
+ "settings.admin.authentication.blockedGroups.label": "Kumpulan yang Disekat",
+ "settings.admin.authentication.certificatePath.description": "Fail sijil digunakan untuk pengesahan TLS.",
"settings.admin.authentication.certificatePath.label": "Laluan Sijil",
- "settings.admin.authentication.ciphers.description": "",
- "settings.admin.authentication.ciphers.label": "Cipher",
- "settings.admin.authentication.clientId.description": "",
+ "settings.admin.authentication.ciphers.description": "Senarai sifer TLS untuk sambungan LDAP.",
+ "settings.admin.authentication.ciphers.label": "Sifer",
+ "settings.admin.authentication.clientId.description": "Pengecam klien OAuth daripada penyedia.",
"settings.admin.authentication.clientId.label": "ID Klien",
- "settings.admin.authentication.clientSecret.description": "",
+ "settings.admin.authentication.clientSecret.description": "Rahsia klien OAuth daripada penyedia.",
"settings.admin.authentication.clientSecret.label": "Rahsia Klien",
- "settings.admin.authentication.defaultGroup.description": "",
+ "settings.admin.authentication.defaultGroup.description": "Kumpulan diberikan kepada pengguna baharu secara lalai.",
"settings.admin.authentication.defaultGroup.label": "Kumpulan Lalai",
- "settings.admin.authentication.defaultUserRole.description": "",
+ "settings.admin.authentication.defaultUserRole.description": "Peranan diberikan kepada pengguna baharu apabila mereka membuat akaun.",
"settings.admin.authentication.defaultUserRole.label": "Peranan Pengguna Lalai",
- "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": "Tuntutan yang digunakan sebagai alamat email pengguna.",
+ "settings.admin.authentication.emailClaim.label": "Tuntutan Email",
+ "settings.admin.authentication.enableGroupCreation.description": "Buat kumpulan yang tiada daripada kumpulan LDAP.",
+ "settings.admin.authentication.enableGroupCreation.label": "Cipta Kumpulan Secara Automatik",
+ "settings.admin.authentication.enableGroupManagement.description": "Petakan kumpulan LDAP kepada kumpulan Open WebUI.",
+ "settings.admin.authentication.enableGroupManagement.label": "Pemetaan Kumpulan",
+ "settings.admin.authentication.enableOauthGroupCreation.description": "Buat kumpulan yang tiada daripada tuntutan OAuth.",
+ "settings.admin.authentication.enableOauthGroupCreation.label": "Cipta Kumpulan Secara Automatik",
+ "settings.admin.authentication.enableOauthGroupManagement.description": "Petakan tuntutan OAuth kepada kumpulan Open WebUI.",
+ "settings.admin.authentication.enableOauthGroupManagement.label": "Pemetaan Kumpulan",
+ "settings.admin.authentication.groupAttribute.description": "Atribut LDAP yang mengandungi keahlian kumpulan pengguna.",
+ "settings.admin.authentication.groupAttribute.label": "Atribut Kumpulan",
+ "settings.admin.authentication.groupClaim.description": "Tuntutan yang mengandungi kumpulan penyedia.",
+ "settings.admin.authentication.groupClaim.label": "Tuntutan Kumpulan",
+ "settings.admin.authentication.host.description": "Nama hos atau alamat IP pelayan LDAP.",
"settings.admin.authentication.host.label": "Hos",
- "settings.admin.authentication.jwtExpiration.description": "",
+ "settings.admin.authentication.jwtExpiration.description": "Unit masa yang sah: 's', 'm', 'h', 'd', 'w' atau '-1' tanpa tamat tempoh.",
"settings.admin.authentication.jwtExpiration.label": "Tempoh Tamat JWT",
- "settings.admin.authentication.label.description": "",
+ "settings.admin.authentication.label.description": "Nama paparan untuk sambungan LDAP ini.",
"settings.admin.authentication.label.label": "Label",
- "settings.admin.authentication.ldap.description": "",
+ "settings.admin.authentication.ldap.description": "Benarkan pengguna membuat pengesahan dengan direktori 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.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": "Kandungan Lapisan Pengguna Tertangguh",
- "settings.admin.authentication.pendingUserOverlayTitle.description": "",
- "settings.admin.authentication.pendingUserOverlayTitle.label": "Tajuk Lapisan Pengguna Tertangguh",
- "settings.admin.authentication.pictureClaim.description": "",
- "settings.admin.authentication.pictureClaim.label": "",
- "settings.admin.authentication.port.description": "",
+ "settings.admin.authentication.loginForm.description": "Paparkan login menggunakan email dan kata laluan pada halaman login. Sediakan SSO atau LDAP sebelum menyahdayakan ciri ini. Menyahdayakannya juga menyekat pendaftaran tempatan; akses API menggunakan kata laluan tidak berubah.",
+ "settings.admin.authentication.loginForm.label": "Borang Login",
+ "settings.admin.authentication.mergeAccountsByEmail.description": "Pautkan login OAuth kepada akaun sedia ada dengan email yang sama.",
+ "settings.admin.authentication.mergeAccountsByEmail.label": "Gabungkan Akaun Mengikut Email",
+ "settings.admin.authentication.newSignUps.description": "Benarkan pengguna baharu membuat akaun.",
+ "settings.admin.authentication.newSignUps.label": "Pendaftaran Baru",
+ "settings.admin.authentication.oauthOidc.description": "Benarkan pengguna membuat pengesahan dengan penyedia OAuth / OIDC.",
+ "settings.admin.authentication.oauthOidc.label": "OAuth / OIDC",
+ "settings.admin.authentication.oauthSignup.description": "Benarkan pengguna membuat akaun melalui OAuth.",
+ "settings.admin.authentication.oauthSignup.label": "Pendaftaran OAuth",
+ "settings.admin.authentication.pendingUserOverlayContent.description": "Mesej tersuai ditunjukkan semasa akaun menunggu kelulusan.",
+ "settings.admin.authentication.pendingUserOverlayContent.label": "Kandungan Tindanan Pengguna yang Menunggu Kelulusan",
+ "settings.admin.authentication.pendingUserOverlayTitle.description": "Tajuk tersuai ditunjukkan sementara akaun menunggu kelulusan.",
+ "settings.admin.authentication.pendingUserOverlayTitle.label": "Tajuk Tindanan Pengguna yang Menunggu Kelulusan",
+ "settings.admin.authentication.pictureClaim.description": "Tuntutan digunakan sebagai URL gambar profil.",
+ "settings.admin.authentication.pictureClaim.label": "Tuntutan Gambar",
+ "settings.admin.authentication.port.description": "Port pelayan 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.searchBase.label": "Cari Pangkalan",
- "settings.admin.authentication.searchFilters.description": "",
+ "settings.admin.authentication.providerName.description": "Nama paparan yang ditunjukkan 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 didaftarkan dengan penyedia.",
+ "settings.admin.authentication.redirectUri.label": "URI Ubah Hala",
+ "settings.admin.authentication.roleMapping.description": "Petakan tuntutan OAuth kepada peranan Open WebUI.",
+ "settings.admin.authentication.roleMapping.label": "Pemetaan Peranan",
+ "settings.admin.authentication.rolesClaim.description": "Tuntutan yang mengandungi peranan penyedia.",
+ "settings.admin.authentication.rolesClaim.label": "Tuntutan Peranan",
+ "settings.admin.authentication.scopes.description": "Skop OAuth diminta semasa login.",
+ "settings.admin.authentication.scopes.label": "Skop",
+ "settings.admin.authentication.searchBase.description": "DN asas digunakan semasa mencari pengguna.",
+ "settings.admin.authentication.searchBase.label": "Asas Carian",
+ "settings.admin.authentication.searchFilters.description": "Penapis LDAP digunakan untuk memadankan pengguna login.",
"settings.admin.authentication.searchFilters.label": "Penapis Carian",
"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": "Akaun yang Menunggu Kelulusan",
+ "settings.admin.authentication.sections.userAccess.title": "Akses Pengguna",
+ "settings.admin.authentication.subClaim.description": "Tuntutan digunakan sebagai pengecam pengguna yang stabil.",
+ "settings.admin.authentication.subClaim.label": "Tuntutan sub",
"settings.admin.authentication.title": "Pengesahan",
- "settings.admin.authentication.tls.description": "",
+ "settings.admin.authentication.tls.description": "Gunakan TLS apabila menyambung ke pelayan 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": "Kemas kini email akaun daripada OAuth semasa login.",
+ "settings.admin.authentication.updateEmail.label": "Kemas Kini Email",
+ "settings.admin.authentication.updateName.description": "Muat semula nama akaun daripada OAuth semasa login.",
+ "settings.admin.authentication.updateName.label": "Kemas kini Nama",
+ "settings.admin.authentication.updatePicture.description": "Muat semula gambar profil daripada OAuth semasa login.",
+ "settings.admin.authentication.updatePicture.label": "Kemas kini Gambar",
+ "settings.admin.authentication.usernameClaim.description": "Tuntutan digunakan sebagai nama paparan.",
+ "settings.admin.authentication.usernameClaim.label": "Tuntutan Nama Pengguna",
+ "settings.admin.authentication.validateCertificate.description": "Sahkan sijil pelayan LDAP apabila TLS didayakan.",
+ "settings.admin.authentication.validateCertificate.label": "Sahkan Sijil",
+ "settings.admin.codeExecution.codeExecutionEngine.description": "Pilih masa jalan yang digunakan untuk blok kod yang dijana.",
"settings.admin.codeExecution.codeExecutionEngine.label": "Enjin Pelaksanaan Kod",
- "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "",
+ "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "Pilih cara Open WebUI membuat pengesahan dengan pelayan Jupyter.",
"settings.admin.codeExecution.codeExecutionJupyterAuth.label": "Pengesahan 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": "Bukti kelayakan yang digunakan untuk pengesahan dengan pelayan Jupyter.",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "Kata Laluan Jupyter",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "Token Jupyter",
+ "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "Tempoh pelaksanaan maksimum dalam saat sebelum pelaksanaan dihentikan.",
"settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "Tamat Masa Pelaksanaan Kod",
- "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "",
+ "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "Sambungkan pelaksanaan kod ke titik akhir pelayan Jupyter.",
"settings.admin.codeExecution.codeExecutionJupyterUrl.label": "URL Jupyter",
- "settings.admin.codeExecution.codeInterpreterEngine.description": "",
+ "settings.admin.codeExecution.codeInterpreterEngine.description": "Pilih persekitaran masa jalan yang digunakan oleh alat pentafsir kod.",
"settings.admin.codeExecution.codeInterpreterEngine.label": "Enjin Pentafsir Kod",
- "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "Pilih cara Open WebUI membuat pengesahan dengan pelayan Jupyter.",
"settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "Pengesahan 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": "Bukti kelayakan yang digunakan untuk pengesahan dengan pelayan Jupyter.",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "Kata Laluan Jupyter",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "Token Jupyter",
+ "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "Tempoh pelaksanaan maksimum dalam saat sebelum pelaksanaan dihentikan.",
"settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "Tamat Masa Pelaksanaan Kod",
- "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "",
+ "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "Sambungkan pentafsir kod ke titik akhir pelayan Jupyter.",
"settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "URL Jupyter",
- "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "",
- "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "Templat Arahan Pentafsir Kod",
- "settings.admin.codeExecution.enableCodeExecution.description": "",
+ "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "Biarkan kosong untuk menggunakan gesaan lalai, atau masukkan gesaan tersuai.",
+ "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "Templat Gesaan Pentafsir Kod",
+ "settings.admin.codeExecution.enableCodeExecution.description": "Benarkan model menjalankan kod yang dijana dan mengembalikan hasil pelaksanaan.",
"settings.admin.codeExecution.enableCodeExecution.label": "Aktifkan Pelaksanaan Kod",
- "settings.admin.codeExecution.enableCodeInterpreter.description": "",
+ "settings.admin.codeExecution.enableCodeInterpreter.description": "Benarkan model menggunakan alat pentafsir kod semasa chat.",
"settings.admin.codeExecution.enableCodeInterpreter.label": "Aktifkan Pentafsir Kod",
"settings.admin.codeExecution.sections.codeExecution.title": "Pelaksanaan Kod",
"settings.admin.codeExecution.sections.codeInterpreter.title": "Pentafsir Kod",
"settings.admin.codeExecution.title": "Pelaksanaan Kod",
"settings.admin.connections.addConnection.label": "Tambah Sambungan",
- "settings.admin.connections.cacheBaseModelList.description": "Senarai Cache Model Asas mempercepatkan akses dengan mengambil model asas hanya pada permulaan atau penyimpanan tetapan—lebih pantas, tetapi mungkin tidak menunjukkan perubahan model asas terbaru.",
- "settings.admin.connections.cacheBaseModelList.label": "Senarai Model Asas Cache",
+ "settings.admin.connections.cacheBaseModelList.description": "Cache Senarai Model Asas mempercepatkan akses dengan mengambil model asas hanya semasa permulaan atau apabila tetapan disimpan—lebih pantas, tetapi mungkin tidak memaparkan perubahan terkini pada model asas.",
+ "settings.admin.connections.cacheBaseModelList.label": "Cache Senarai Model Asas",
"settings.admin.connections.directConnections.description": "Sambungan Langsung membenarkan pengguna untuk menyambung ke titik akhir API yang serasi dengan OpenAI mereka sendiri.",
"settings.admin.connections.directConnections.label": "Sambungan Langsung",
- "settings.admin.connections.directIntegrations.description": "",
- "settings.admin.connections.directIntegrations.label": "",
+ "settings.admin.connections.directIntegrations.description": "Paparkan tab Integrasi untuk pengguna yang dibenarkan mengurus sambungan alat dan terminal mereka sendiri, termasuk pentadbir. Menyembunyikannya tidak menyahdayakan sambungan sedia ada.",
+ "settings.admin.connections.directIntegrations.label": "Integrasi Langsung",
"settings.admin.connections.manageOllamaApiConnections.description": "Masalah mengakses Ollama?",
"settings.admin.connections.manageOllamaApiConnections.label": "Urus Sambungan API Ollama",
"settings.admin.connections.manageOpenaiApiConnections.label": "Urus Sambungan API OpenAI",
"settings.admin.connections.ollamaApi.label": "API Ollama",
"settings.admin.connections.openaiApi.label": "API OpenAI",
"settings.admin.connections.refreshModels.label": "Segarkan",
- "settings.admin.connections.sections.userConnections.title": "",
+ "settings.admin.connections.sections.userConnections.title": "Sambungan Pengguna",
"settings.admin.connections.title": "Sambungan",
- "settings.admin.db.allChats.description": "",
- "settings.admin.db.allChats.label": "",
- "settings.admin.db.database.description": "",
+ "settings.admin.db.allChats.description": "Muat turun sejarah chat setiap pengguna sebagai JSON.",
+ "settings.admin.db.allChats.label": "Semua chat",
+ "settings.admin.db.database.description": "Muat turun pangkalan data aplikasi apabila disokong.",
"settings.admin.db.database.label": "Pangkalan Data",
- "settings.admin.db.exportConfig.description": "",
+ "settings.admin.db.exportConfig.description": "Muat turun konfigurasi pentadbir semasa sebagai JSON.",
"settings.admin.db.exportConfig.label": "Eksport Konfigurasi",
- "settings.admin.db.importConfig.description": "",
- "settings.admin.db.importConfig.label": "Konfigurasi Import",
+ "settings.admin.db.importConfig.description": "Import konfigurasi pentadbir daripada fail eksport JSON.",
+ "settings.admin.db.importConfig.label": "Import Konfigurasi",
"settings.admin.db.sections.config.title": "Konfigurasi",
"settings.admin.db.sections.export.title": "Eksport",
"settings.admin.db.title": "Pangkalan Data",
- "settings.admin.db.users.description": "",
+ "settings.admin.db.users.description": "Muat turun semua pengguna sebagai CSV.",
"settings.admin.db.users.label": "Pengguna",
- "settings.admin.documents.additionalConfig.description": "",
+ "settings.admin.documents.additionalConfig.description": "Pilihan JSON yang dihantar kepada Marker untuk kaedah penghuraian lanjutan.",
"settings.admin.documents.additionalConfig.label": "Konfigurasi Tambahan",
- "settings.admin.documents.allowedFileExtensions.description": "",
+ "settings.admin.documents.allowedFileExtensions.description": "Sambungan muat naik yang dipisahkan koma. Biarkan kosong untuk semua jenis fail.",
"settings.admin.documents.allowedFileExtensions.label": "Sambungan Fail yang Dibenarkan",
- "settings.admin.documents.apiMode.description": "",
+ "settings.admin.documents.apiMode.description": "Pilih mod API MinerU setempat atau awan.",
"settings.admin.documents.apiMode.label": "Mod API",
- "settings.admin.documents.apiTimeout.description": "",
+ "settings.admin.documents.apiTimeout.description": "Masa maksimum dalam saat untuk menunggu respons API MinerU.",
"settings.admin.documents.apiTimeout.label": "Masa Tamat 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": "Token API dihantar ke PaddleOCR-vl.",
+ "settings.admin.documents.apiToken.label": "Token API",
+ "settings.admin.documents.apiUrl.description": "Titik akhir API MinerU untuk mod yang dipilih.",
+ "settings.admin.documents.apiUrl.label": "URL API",
+ "settings.admin.documents.asyncEmbeddingProcessing.description": "Jalankan tugas embedding secara serentak untuk mempercepatkan pemprosesan.",
"settings.admin.documents.asyncEmbeddingProcessing.label": "Pemprosesan Embedding Tak Segerak",
- "settings.admin.documents.azureopenaikey.description": "",
+ "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": "Titik akhir Azure OpenAI yang digunakan untuk embedding.",
"settings.admin.documents.azureopenaiurl.label": "URL Asas API",
- "settings.admin.documents.bm25Weight.description": "",
- "settings.admin.documents.bm25Weight.label": "Berat BM25",
- "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "",
- "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "Langkau Embedding dan Pencarian Semula",
- "settings.admin.documents.chunkMinSizeTarget.description": "",
- "settings.admin.documents.chunkMinSizeTarget.label": "Sasaran Saiz Minimum Chunk",
- "settings.admin.documents.chunkOverlap.description": "",
- "settings.admin.documents.chunkOverlap.label": "Pertindanan Chunk",
- "settings.admin.documents.chunkSize.description": "",
- "settings.admin.documents.chunkSize.label": "Saiz Chunk",
- "settings.admin.documents.contentExtractionEngine.description": "",
+ "settings.admin.documents.bm25Weight.description": "Seimbangkan pemberat semantik dan leksikal untuk carian hibrid.",
+ "settings.admin.documents.bm25Weight.label": "Pemberat BM25",
+ "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "Masukkan keseluruhan kandungan sebagai konteks untuk pemprosesan menyeluruh.",
+ "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "Langkau Embedding dan Pengambilan",
+ "settings.admin.documents.chunkMinSizeTarget.description": "Gabungkan cebisan yang lebih kecil daripada ambang ini apabila boleh. Tetapkan kepada 0 untuk menyahdayakan penggabungan.",
+ "settings.admin.documents.chunkMinSizeTarget.label": "Sasaran Saiz Minimum Cebisan",
+ "settings.admin.documents.chunkOverlap.description": "Pertindihan yang dikekalkan antara cebisan bersebelahan.",
+ "settings.admin.documents.chunkOverlap.label": "Pertindihan Cebisan",
+ "settings.admin.documents.chunkSize.description": "Saiz maksimum bagi setiap cebisan teks.",
+ "settings.admin.documents.chunkSize.label": "Saiz Cebisan",
+ "settings.admin.documents.contentExtractionEngine.description": "Pilih cara dokumen yang dimuat naik dihuraikan sebelum pengindeksan.",
"settings.admin.documents.contentExtractionEngine.label": "Enjin Pengekstrakan Kandungan",
- "settings.admin.documents.datalabMarkerApiBaseUrl.description": "",
+ "settings.admin.documents.datalabMarkerApiBaseUrl.description": "Titik akhir perkhidmatan Datalab Marker yang digunakan untuk penghuraian dokumen.",
"settings.admin.documents.datalabMarkerApiBaseUrl.label": "URL Asas API",
- "settings.admin.documents.datalabMarkerApiKey.description": "",
+ "settings.admin.documents.datalabMarkerApiKey.description": "Kunci API yang digunakan untuk pengesahan dengan Datalab Marker.",
"settings.admin.documents.datalabMarkerApiKey.label": "Kunci API",
- "settings.admin.documents.disableImageExtraction.description": "",
+ "settings.admin.documents.disableImageExtraction.description": "Jangan ekstrak imej daripada PDF semasa pemprosesan Marker.",
"settings.admin.documents.disableImageExtraction.label": "Nyahaktifkan Pengekstrakan Imej",
- "settings.admin.documents.doclingApiKey.description": "",
+ "settings.admin.documents.doclingApiKey.description": "Kunci API dihantar ke Docling.",
"settings.admin.documents.doclingApiKey.label": "Kunci API",
- "settings.admin.documents.doclingParams.description": "",
+ "settings.admin.documents.doclingParams.description": "Parameter Docling tambahan dalam format JSON.",
"settings.admin.documents.doclingParams.label": "Parameter",
- "settings.admin.documents.doclingServerUrl.description": "",
- "settings.admin.documents.doclingServerUrl.label": "",
- "settings.admin.documents.documentIntelligenceKey.description": "",
+ "settings.admin.documents.doclingServerUrl.description": "Titik akhir perkhidmatan Docling yang digunakan untuk penghuraian.",
+ "settings.admin.documents.doclingServerUrl.label": "URL Pelayan Docling",
+ "settings.admin.documents.documentIntelligenceKey.description": "Bukti kelayakan yang digunakan untuk Document Intelligence.",
"settings.admin.documents.documentIntelligenceKey.label": "Kunci",
- "settings.admin.documents.documentIntelligenceModel.description": "",
- "settings.admin.documents.documentIntelligenceModel.label": "Model Kecerdasan Dokumen",
- "settings.admin.documents.documentLoaderUrl.description": "",
- "settings.admin.documents.documentLoaderUrl.label": "",
- "settings.admin.documents.embeddingBatchSize.description": "",
+ "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": "Titik akhir perkhidmatan luaran digunakan untuk memuatkan kandungan dokumen.",
+ "settings.admin.documents.documentLoaderUrl.label": "URL Pemuat Dokumen",
+ "settings.admin.documents.embeddingBatchSize.description": "Bilangan item yang diproses bagi setiap kelompok embedding.",
"settings.admin.documents.embeddingBatchSize.label": "Saiz Kelompok Embedding",
- "settings.admin.documents.embeddingConcurrentRequests.description": "",
+ "settings.admin.documents.embeddingConcurrentRequests.description": "Bilangan maksimum permintaan embedding serentak. Tetapkan kepada 0 untuk tanpa had.",
"settings.admin.documents.embeddingConcurrentRequests.label": "Permintaan Serentak Embedding",
- "settings.admin.documents.embeddingModel.description": "",
+ "settings.admin.documents.embeddingModel.description": "Model yang digunakan untuk menjana embedding. Indeks semula pengetahuan selepas menukar model ini.",
"settings.admin.documents.embeddingModel.label": "Model Embedding",
- "settings.admin.documents.embeddingModelEngine.description": "",
+ "settings.admin.documents.embeddingModelEngine.description": "Penyedia yang digunakan untuk menjana embedding dokumen.",
"settings.admin.documents.embeddingModelEngine.label": "Enjin Model Embedding",
- "settings.admin.documents.endpoint.description": "",
- "settings.admin.documents.endpoint.label": "",
- "settings.admin.documents.enrichHybridSearchText.description": "",
+ "settings.admin.documents.endpoint.description": "Titik akhir Document Intelligence yang digunakan untuk penghuraian.",
+ "settings.admin.documents.endpoint.label": "Titik akhir",
+ "settings.admin.documents.enrichHybridSearchText.description": "Tambahkan nama fail, tajuk, bahagian dan petikan untuk meningkatkan liputan hasil carian leksikal.",
"settings.admin.documents.enrichHybridSearchText.label": "Perkaya Teks Carian Hibrid",
- "settings.admin.documents.externalDocumentLoaderApiKey.description": "",
+ "settings.admin.documents.externalDocumentLoaderApiKey.description": "Kunci API dihantar kepada pemuat dokumen luaran.",
"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.fileExtensions.description": "Sambungan fail yang perlu dikendalikan oleh MinerU, dipisahkan dengan koma.",
+ "settings.admin.documents.fileExtensions.label": "Sambungan Fail",
+ "settings.admin.documents.forceOcr.description": "Jalankan OCR pada semua halaman PDF, malah halaman dengan teks terbenam.",
"settings.admin.documents.forceOcr.label": "Paksa OCR",
- "settings.admin.documents.formatLines.description": "",
+ "settings.admin.documents.formatLines.description": "Format baris untuk mengesan matematik dan gaya sebaris.",
"settings.admin.documents.formatLines.label": "Format Baris",
- "settings.admin.documents.fullContextMode.description": "",
+ "settings.admin.documents.fullContextMode.description": "Masukkan keseluruhan dokumen sebagai konteks untuk pemprosesan menyeluruh.",
"settings.admin.documents.fullContextMode.label": "Mod Konteks Penuh",
- "settings.admin.documents.googleDrive.description": "",
+ "settings.admin.documents.googleDrive.description": "Benarkan Google Drive sebagai sumber dokumen.",
"settings.admin.documents.googleDrive.label": "Google Drive",
- "settings.admin.documents.headers.description": "",
- "settings.admin.documents.headers.label": "Tajuk",
- "settings.admin.documents.headerVariables.label": "",
- "settings.admin.documents.hybridSearch.description": "",
+ "settings.admin.documents.headers.description": "Pengepala JSON tambahan dihantar kepada pemuat dokumen luaran.",
+ "settings.admin.documents.headers.label": "Pengepala",
+ "settings.admin.documents.headerVariables.label": "Pemboleh ubah pengepala",
+ "settings.admin.documents.hybridSearch.description": "Gabungkan pengambilan semantik dan kata kunci.",
"settings.admin.documents.hybridSearch.label": "Carian Hibrid",
- "settings.admin.documents.imageCompressionHeight.description": "",
+ "settings.admin.documents.imageCompressionHeight.description": "Ketinggian dalam piksel untuk memampatkan imej. Biarkan kosong untuk tiada pemampatan.",
"settings.admin.documents.imageCompressionHeight.label": "Tinggi Mampatan Imej",
- "settings.admin.documents.imageCompressionWidth.description": "",
+ "settings.admin.documents.imageCompressionWidth.description": "Lebar dalam piksel untuk memampatkan imej. Biarkan kosong untuk tiada pemampatan.",
"settings.admin.documents.imageCompressionWidth.label": "Lebar Mampatan Imej",
- "settings.admin.documents.markdownHeaderTextSplitter.description": "",
+ "settings.admin.documents.markdownHeaderTextSplitter.description": "Pisahkan dokumen mengikut tajuk markdown sebelum pemisahan aksara atau token.",
"settings.admin.documents.markdownHeaderTextSplitter.label": "Pemisah Teks Tajuk Markdown",
- "settings.admin.documents.maxUploadCount.description": "",
+ "settings.admin.documents.maxUploadCount.description": "Bilangan maksimum fail yang boleh digunakan sekali gus dalam chat.",
"settings.admin.documents.maxUploadCount.label": "Bilangan Muat Naik Maksimum",
- "settings.admin.documents.maxUploadSize.description": "",
+ "settings.admin.documents.maxUploadSize.description": "Saiz fail maksimum dalam MB. Biarkan kosong untuk tiada had.",
"settings.admin.documents.maxUploadSize.label": "Saiz Muat Naik Maksimum",
- "settings.admin.documents.mineruApiKey.description": "",
+ "settings.admin.documents.mineruApiKey.description": "Kunci API digunakan untuk mod awan MinerU.",
"settings.admin.documents.mineruApiKey.label": "Kunci API",
- "settings.admin.documents.mineruParams.description": "",
+ "settings.admin.documents.mineruParams.description": "Parameter penghuraian MinerU lanjutan dalam format JSON.",
"settings.admin.documents.mineruParams.label": "Parameter",
- "settings.admin.documents.mistralOcrApiBaseUrl.description": "",
+ "settings.admin.documents.mistralOcrApiBaseUrl.description": "Titik akhir perkhidmatan Mistral OCR.",
"settings.admin.documents.mistralOcrApiBaseUrl.label": "URL Asas API",
- "settings.admin.documents.mistralOcrApiKey.description": "",
+ "settings.admin.documents.mistralOcrApiKey.description": "Kunci API dihantar ke Mistral OCR.",
"settings.admin.documents.mistralOcrApiKey.label": "Kunci API",
- "settings.admin.documents.ollamakey.description": "",
+ "settings.admin.documents.ollamakey.description": "Kunci API pilihan 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 Asas API",
- "settings.admin.documents.onedrive.description": "",
+ "settings.admin.documents.onedrive.description": "Benarkan OneDrive sebagai sumber dokumen.",
"settings.admin.documents.onedrive.label": "OneDrive",
- "settings.admin.documents.openaikey.description": "",
+ "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 serasi dengan OpenAI.",
"settings.admin.documents.openaiurl.label": "URL Asas API",
- "settings.admin.documents.outputFormat.description": "",
+ "settings.admin.documents.outputFormat.description": "Format output teks dikembalikan oleh Marker.",
"settings.admin.documents.outputFormat.label": "Format Output",
- "settings.admin.documents.paddleocrVlBaseUrl.description": "",
+ "settings.admin.documents.paddleocrVlBaseUrl.description": "Titik akhir perkhidmatan PaddleOCR-vl.",
"settings.admin.documents.paddleocrVlBaseUrl.label": "URL Asas API",
- "settings.admin.documents.paginate.description": "",
+ "settings.admin.documents.paginate.description": "Pisahkan output mengikut halaman dengan penanda halaman.",
"settings.admin.documents.paginate.label": "Paginasi",
- "settings.admin.documents.pdfExtractImagesOcr.description": "",
- "settings.admin.documents.pdfExtractImagesOcr.label": "Imej Ekstrak PDF (OCR)",
- "settings.admin.documents.pdfLoaderMode.description": "",
+ "settings.admin.documents.pdfExtractImagesOcr.description": "Ekstrak imej daripada PDF supaya OCR boleh memproses halaman imej sahaja.",
+ "settings.admin.documents.pdfExtractImagesOcr.label": "Ekstrak Imej PDF (OCR)",
+ "settings.admin.documents.pdfLoaderMode.description": "Mod halaman mencipta satu dokumen bagi setiap halaman. Mod tunggal mengekalkan halaman bersama untuk membolehkan pembahagian kepada cebisan merentasi sempadan halaman.",
"settings.admin.documents.pdfLoaderMode.label": "Mod Pemuat PDF",
- "settings.admin.documents.ragExternalRerankerApiKey.description": "",
+ "settings.admin.documents.ragExternalRerankerApiKey.description": "Kunci API yang dihantar kepada penyusun semula luaran.",
"settings.admin.documents.ragExternalRerankerApiKey.label": "Kunci API",
- "settings.admin.documents.ragExternalRerankerUrl.description": "",
+ "settings.admin.documents.ragExternalRerankerUrl.description": "Titik akhir penyusun semula luaran.",
"settings.admin.documents.ragExternalRerankerUrl.label": "URL Asas API",
- "settings.admin.documents.ragTemplate.description": "",
+ "settings.admin.documents.ragTemplate.description": "Templat gesaan digunakan apabila konteks yang diambil disuntik.",
"settings.admin.documents.ragTemplate.label": "Templat RAG",
"settings.admin.documents.reindex.label": "Indeks semula",
- "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "",
- "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "",
- "settings.admin.documents.relevanceThreshold.description": "",
+ "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "Bina semula vektor untuk fail pengetahuan sedia ada, carian pengetahuan, dan memori.",
+ "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "Indeks Semula Vektor Pengetahuan dan Memori",
+ "settings.admin.documents.relevanceThreshold.description": "Hanya kembalikan dokumen dengan skor lebih besar daripada atau sama dengan nilai ini.",
"settings.admin.documents.relevanceThreshold.label": "Ambang Perkaitan",
- "settings.admin.documents.rerankingBatchSize.description": "",
+ "settings.admin.documents.rerankingBatchSize.description": "Bilangan hasil yang diproses bagi setiap kelompok penyusunan semula.",
"settings.admin.documents.rerankingBatchSize.label": "Saiz Kelompok Penyusunan Semula",
- "settings.admin.documents.rerankingEngine.description": "",
+ "settings.admin.documents.rerankingEngine.description": "Penyedia yang digunakan untuk menyusun semula hasil carian hibrid.",
"settings.admin.documents.rerankingEngine.label": "Enjin Penyusunan Semula",
- "settings.admin.documents.rerankingModel.description": "",
+ "settings.admin.documents.rerankingModel.description": "Model yang digunakan untuk menyusun semula hasil yang diperoleh.",
"settings.admin.documents.rerankingModel.label": "Model Penyusunan Semula",
- "settings.admin.documents.resetUploadDirectory.description": "",
+ "settings.admin.documents.resetUploadDirectory.description": "Padam fail yang dimuat naik daripada direktori muat naik.",
"settings.admin.documents.resetUploadDirectory.label": "Tetapkan Semula Direktori Muat Naik",
- "settings.admin.documents.resetVectorStorageKnowledge.description": "",
+ "settings.admin.documents.resetVectorStorageKnowledge.description": "Kosongkan storan vektor dan data pengindeksan pengetahuan.",
"settings.admin.documents.resetVectorStorageKnowledge.label": "Tetapkan Semula Storan Vektor/Pengetahuan",
- "settings.admin.documents.sections.contentExtraction.title": "",
+ "settings.admin.documents.sections.contentExtraction.title": "Pengekstrakan Kandungan",
"settings.admin.documents.sections.dangerZone.title": "Zon Bahaya",
"settings.admin.documents.sections.embedding.title": "Embedding",
"settings.admin.documents.sections.files.title": "Fail-Fail",
"settings.admin.documents.sections.integration.title": "Integrasi",
"settings.admin.documents.sections.retrieval.title": "Pengambilan",
- "settings.admin.documents.skipCache.description": "",
+ "settings.admin.documents.skipCache.description": "Langkau hasil Marker dalam cache dan jalankan semula inferens.",
"settings.admin.documents.skipCache.label": "Langkau Cache",
- "settings.admin.documents.stripExistingOcr.description": "",
+ "settings.admin.documents.stripExistingOcr.description": "Alih keluar teks OCR sedia ada dan jalankan semula OCR apabila Paksa OCR dimatikan.",
"settings.admin.documents.stripExistingOcr.label": "Alih Keluar OCR Sedia Ada",
- "settings.admin.documents.supportedMediaMimeTypes.description": "",
- "settings.admin.documents.supportedMediaMimeTypes.label": "",
- "settings.admin.documents.textSplitter.description": "",
+ "settings.admin.documents.supportedMediaMimeTypes.description": "Jenis MIME media yang dimuat naik yang boleh diproses oleh enjin pengekstrakan kandungan.",
+ "settings.admin.documents.supportedMediaMimeTypes.label": "Jenis MIME Media yang Disokong",
+ "settings.admin.documents.textSplitter.description": "Pilih cara teks yang diekstrak dipecahkan sebelum pengindeksan.",
"settings.admin.documents.textSplitter.label": "Pemisah Teks",
- "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": "Titik akhir pelayan Tika digunakan untuk pengekstrakan kandungan.",
+ "settings.admin.documents.tikaServerUrl.label": "URL Pelayan Tika",
+ "settings.admin.documents.tikaServerVersion.description": "Pilih versi API pelayan Tika.",
+ "settings.admin.documents.tikaServerVersion.label": "Versi Pelayan Tika",
"settings.admin.documents.title": "Dokumen",
- "settings.admin.documents.tokenizerModel.description": "",
- "settings.admin.documents.tokenizerModel.label": "",
- "settings.admin.documents.topK.description": "",
- "settings.admin.documents.topK.label": "'Top K'",
- "settings.admin.documents.topKReranker.description": "",
- "settings.admin.documents.topKReranker.label": "Pemeringkat K Teratas",
- "settings.admin.documents.updateEmbeddingModel.label": "",
- "settings.admin.documents.useBase64.description": "",
- "settings.admin.documents.useBase64.label": "",
- "settings.admin.documents.useLlm.description": "",
+ "settings.admin.documents.tokenizerModel.description": "Model tokenizer digunakan untuk pemisahan token transformer.",
+ "settings.admin.documents.tokenizerModel.label": "Model Tokenizer",
+ "settings.admin.documents.topK.description": "Bilangan maksimum cebisan yang diperoleh untuk dikembalikan kepada model.",
+ "settings.admin.documents.topK.label": "Top K",
+ "settings.admin.documents.topKReranker.description": "Bilangan maksimum hasil hibrid yang dihantar kepada penyusun semula.",
+ "settings.admin.documents.topKReranker.label": "Top K Penyusun Semula",
+ "settings.admin.documents.updateEmbeddingModel.label": "Kemas kini model embedding",
+ "settings.admin.documents.useBase64.description": "Hantar PDF sebagai URL data base64 dan bukannya memuat naik dahulu.",
+ "settings.admin.documents.useBase64.label": "Gunakan Base64",
+ "settings.admin.documents.useLlm.description": "Gunakan LLM untuk meningkatkan pengesanan jadual, borang, matematik dan reka letak.",
"settings.admin.documents.useLlm.label": "Gunakan LLM",
- "settings.admin.documents.version.description": "",
+ "settings.admin.documents.version.description": "Versi API Azure OpenAI.",
"settings.admin.documents.version.label": "Versi",
"settings.admin.evaluations.addArenaModel.label": "Tambah Model Arena",
"settings.admin.evaluations.arenaModels.description": "Penilaian mesej mesti didayakan untuk menggunakan ciri ini",
"settings.admin.evaluations.arenaModels.label": "Model Arena",
"settings.admin.evaluations.sections.models.title": "Model",
"settings.admin.evaluations.title": "Penilaian",
- "settings.admin.general.addBanner.label": "",
- "settings.admin.general.automations.description": "",
+ "settings.admin.general.addBanner.label": "Tambah sepanduk",
+ "settings.admin.general.automations.description": "Benarkan pengguna membuat dan menjalankan automasi.",
"settings.admin.general.automations.label": "Automasi",
"settings.admin.general.banners.label": "Sepanduk",
- "settings.admin.general.calendar.description": "",
+ "settings.admin.general.calendar.description": "Benarkan pengguna mengakses ciri kalendar.",
"settings.admin.general.calendar.label": "Kalendar",
- "settings.admin.general.channels.description": "",
- "settings.admin.general.channels.label": "Saluran-saluran",
+ "settings.admin.general.channels.description": "Benarkan pengguna menggunakan saluran untuk perbualan yang dikongsi.",
+ "settings.admin.general.channels.label": "Saluran",
"settings.admin.general.checkForUpdates.label": "Semak kemas kini",
- "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.communitySharing.description": "Benarkan pengguna berkongsi chat dengan komuniti Open WebUI.",
+ "settings.admin.general.communitySharing.label": "Perkongsian Komuniti",
+ "settings.admin.general.events.events.label": "Peristiwa",
+ "settings.admin.general.events.webhooks.description": "Hantar peristiwa produk sebagai JSON kepada perkhidmatan luaran. Destinasi chat menerima mesej yang mudah dibaca.",
"settings.admin.general.events.webhooks.label": "Webhook",
"settings.admin.general.folderMaxFileCount.description": "Bilangan maksimum fail yang dibenarkan setiap folder.",
"settings.admin.general.folderMaxFileCount.label": "Bilangan Fail Maksimum Folder",
- "settings.admin.general.folders.description": "",
- "settings.admin.general.folders.label": "Folder-folder",
+ "settings.admin.general.folders.description": "Benarkan pengguna menyusun chat dalam folder.",
+ "settings.admin.general.folders.label": "Folder",
"settings.admin.general.help.description": "Temui cara menggunakan Open WebUI dan dapatkan sokongan daripada komuniti.",
"settings.admin.general.help.label": "Bantuan",
"settings.admin.general.license.label": "Lesen",
- "settings.admin.general.memories.description": "",
- "settings.admin.general.memories.label": "Ingatan",
- "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": "Nota-nota",
- "settings.admin.general.responseWatermark.description": "",
+ "settings.admin.general.memories.description": "Benarkan pengguna menyimpan memori untuk respons yang lebih diperibadikan.",
+ "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": "Benarkan pengguna menilai respons pembantu.",
+ "settings.admin.general.messageRating.label": "Penilaian Mesej",
+ "settings.admin.general.modelResponseMode.description": "Pilih tempat respons model disiarkan apabila model disebut dalam mesej utama saluran.",
+ "settings.admin.general.modelResponseMode.label": "Mod Respons Model",
+ "settings.admin.general.notes.description": "Benarkan pengguna membuat dan mengurus nota.",
+ "settings.admin.general.notes.label": "Nota",
+ "settings.admin.general.responseWatermark.description": "Tambahkan tera air pada respons pembantu apabila dikonfigurasikan.",
"settings.admin.general.responseWatermark.label": "Tera Air Respons",
"settings.admin.general.sections.features.title": "Ciri-ciri",
"settings.admin.general.sections.ui.title": "UI",
"settings.admin.general.seeWhatSNew.label": "Lihat apa yang terbaru",
"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.translations.addTranslation.label": "Tambah terjemahan",
+ "settings.admin.general.translations.uiTranslations.label": "Terjemahan UI",
+ "settings.admin.general.userStatus.description": "Tunjukkan maklumat status pengguna dalam apl.",
"settings.admin.general.userStatus.label": "Status Pengguna",
- "settings.admin.general.userWebhooks.description": "",
+ "settings.admin.general.userWebhooks.description": "Benarkan pengguna mengkonfigurasi webhook daripada akaun mereka.",
"settings.admin.general.userWebhooks.label": "Webhook Pengguna",
"settings.admin.general.version.label": "Versi",
"settings.admin.general.webuiUrl.description": "Masukkan URL awam WebUI anda. URL ini akan digunakan untuk menjana pautan dalam pemberitahuan.",
"settings.admin.general.webuiUrl.label": "URL 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": "Sediakan nama pengguna dan kata laluan --api-auth apabila diperlukan.",
+ "settings.admin.images.apiAuthString.label": "Rentetan Pengesahan API",
+ "settings.admin.images.automatic1111BaseUrl.description": "Sambung ke pelayan stable-diffusion-webui yang berjalan dengan bendera `--api`.",
+ "settings.admin.images.automatic1111BaseUrl.label": "URL asas",
+ "settings.admin.images.automatic1111Params.description": "Hantar parameter JSON tambahan dengan setiap permintaan AUTOMATIC1111.",
"settings.admin.images.automatic1111Params.label": "Parameter Tambahan",
"settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "Klik di sini untuk memuat naik fail workflow.json.",
- "settings.admin.images.comfyuiApiKey.description": "",
+ "settings.admin.images.comfyuiApiKey.description": "Gunakan kunci API apabila pelayan 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.comfyuiBaseUrl.description": "Sambung ke pelayan ComfyUI yang digunakan untuk penjanaan.",
+ "settings.admin.images.comfyuiBaseUrl.label": "URL asas",
+ "settings.admin.images.comfyuiComfyuiWorkflow.description": "Muat naik fail workflow.json yang dieksport sebagai format API daripada ComfyUI.",
"settings.admin.images.comfyuiComfyuiWorkflow.label": "Aliran Kerja ComfyUI",
- "settings.admin.images.editingWorkflowNodes.description": "",
+ "settings.admin.images.editingWorkflowNodes.description": "Petakan input nod aliran kerja yang digunakan untuk penyuntingan imej.",
"settings.admin.images.editingWorkflowNodes.label": "Nod Aliran Kerja ComfyUI",
"settings.admin.images.editWorkflowJsonContent.label": "Edit kandungan workflow.json",
- "settings.admin.images.geminiEndpointMethod.description": "",
+ "settings.admin.images.geminiEndpointMethod.description": "Pilih kaedah titik akhir Gemini untuk membuat panggilan.",
"settings.admin.images.geminiEndpointMethod.label": "Kaedah Titik Akhir Gemini",
- "settings.admin.images.generationWorkflowNodes.description": "",
+ "settings.admin.images.generationWorkflowNodes.description": "Petakan input nod aliran kerja yang digunakan untuk penjanaan imej.",
"settings.admin.images.generationWorkflowNodes.label": "Nod Aliran Kerja ComfyUI",
- "settings.admin.images.imageEdit.description": "",
+ "settings.admin.images.imageEdit.description": "Benarkan pengguna menyunting imej sedia ada.",
"settings.admin.images.imageEdit.label": "Edit Imej",
- "settings.admin.images.imageEditEngine.description": "",
+ "settings.admin.images.imageEditEngine.description": "Pilih penyedia yang digunakan untuk suntingan imej.",
"settings.admin.images.imageEditEngine.label": "Enjin Edit Imej",
"settings.admin.images.imageEditModel.label": "Model",
"settings.admin.images.imageEditSize.label": "Saiz Imej",
- "settings.admin.images.imageGeneration.description": "",
+ "settings.admin.images.imageGeneration.description": "Benarkan pengguna menjana imej daripada gesaan.",
"settings.admin.images.imageGeneration.label": "Penjanaan Imej",
- "settings.admin.images.imageGenerationEngine.description": "",
+ "settings.admin.images.imageGenerationEngine.description": "Pilih penyedia yang digunakan untuk penjanaan imej.",
"settings.admin.images.imageGenerationEngine.label": "Enjin Penjanaan Imej",
"settings.admin.images.imageGenerationModel.label": "Model",
- "settings.admin.images.imagePromptGeneration.description": "",
- "settings.admin.images.imagePromptGeneration.label": "Penjanaan Arahan Imej",
- "settings.admin.images.imagesEditComfyuiApiKey.description": "",
+ "settings.admin.images.imagePromptGeneration.description": "Hasilkan gesaan imej sebelum menghantar permintaan.",
+ "settings.admin.images.imagePromptGeneration.label": "Penjanaan Gesaan Imej",
+ "settings.admin.images.imagesEditComfyuiApiKey.description": "Gunakan kunci API apabila pelayan 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": "Sambung ke pelayan ComfyUI yang digunakan untuk penyuntingan imej.",
+ "settings.admin.images.imagesEditComfyuiBaseUrl.label": "URL asas",
+ "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "URL asas",
"settings.admin.images.imagesEditGeminiApiKey.label": "Kunci API",
"settings.admin.images.imagesEditOpenaiApiBaseUrl.label": "URL Asas API",
"settings.admin.images.imagesEditOpenaiApiKey.label": "Kunci API",
"settings.admin.images.imagesEditOpenaiApiVersion.label": "Versi API",
- "settings.admin.images.imagesGeminiApiBaseUrl.description": "",
- "settings.admin.images.imagesGeminiApiBaseUrl.label": "",
- "settings.admin.images.imagesGeminiApiKey.description": "",
+ "settings.admin.images.imagesGeminiApiBaseUrl.description": "Gantikan titik akhir penjanaan imej Gemini.",
+ "settings.admin.images.imagesGeminiApiBaseUrl.label": "URL asas",
+ "settings.admin.images.imagesGeminiApiKey.description": "Gunakan kunci API Gemini untuk penjanaan imej.",
"settings.admin.images.imagesGeminiApiKey.label": "Kunci API",
"settings.admin.images.imageSize.label": "Saiz Imej",
"settings.admin.images.imagesOpenaiApiBaseUrl.label": "URL Asas API",
"settings.admin.images.imagesOpenaiApiKey.label": "Kunci API",
- "settings.admin.images.imagesOpenaiApiParams.description": "",
+ "settings.admin.images.imagesOpenaiApiParams.description": "Hantar parameter JSON tambahan dengan setiap permintaan penjanaan imej.",
"settings.admin.images.imagesOpenaiApiParams.label": "Parameter Tambahan",
"settings.admin.images.imagesOpenaiApiVersion.label": "Versi API",
"settings.admin.images.sections.createImage.title": "Buat Imej",
@@ -2453,109 +2472,109 @@
"settings.admin.images.serverConnectionVerified.label": "Sambungan pelayan disahkan",
"settings.admin.images.steps.label": "Langkah-langkah",
"settings.admin.images.title": "Imej",
- "settings.admin.images.verifyConnection.label": "",
+ "settings.admin.images.verifyConnection.label": "sahkan sambungan",
"settings.admin.integrations.addConnection.label": "Tambah Sambungan",
"settings.admin.integrations.externalKnowledge.addConnection.label": "Tambah Sambungan",
- "settings.admin.integrations.externalKnowledge.title": "",
- "settings.admin.integrations.externalToolServers.label": "",
+ "settings.admin.integrations.externalKnowledge.title": "Sumber Pengetahuan Luaran",
+ "settings.admin.integrations.externalToolServers.label": "Pelayan Alat Luaran",
"settings.admin.integrations.mcp.label": "MCP",
"settings.admin.integrations.openApi.label": "OpenAPI",
- "settings.admin.integrations.openTerminal.label": "Buka Terminal",
+ "settings.admin.integrations.openTerminal.label": "Open Terminal",
"settings.admin.integrations.sections.knowledge.title": "Pengetahuan",
"settings.admin.integrations.sections.terminal.title": "Terminal",
"settings.admin.integrations.sections.tools.title": "Alatan",
"settings.admin.integrations.title": "Integrasi",
- "settings.admin.interface.autocompleteGeneration.description": "",
+ "settings.admin.interface.autocompleteGeneration.description": "Cadangkan pelengkapan semasa pengguna menaip mesej chat.",
"settings.admin.interface.autocompleteGeneration.label": "Penjanaan Autolengkap",
- "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "",
+ "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "Hadkan jumlah teks draf yang dihantar untuk penjanaan cadangan.",
"settings.admin.interface.autocompleteGenerationInputMaxLength.label": "Panjang Maksimum Input Penjanaan Autolengkap",
- "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": "Membimbing pelengkapan sebaris semasa pengguna menaip mesej.",
+ "settings.admin.interface.autocompleteGenerationPrompt.label": "Gesaan Penjanaan Autolengkap",
+ "settings.admin.interface.availableVariables.label": "Pemboleh ubah yang tersedia",
+ "settings.admin.interface.contextCompaction.description": "Ringkaskan sejarah chat lama apabila konteks perbualan menjadi besar.",
+ "settings.admin.interface.contextCompaction.label": "Pemadatan Konteks",
+ "settings.admin.interface.contextCompactionModel.description": "Pilih model khusus untuk ringkasan pemadatan konteks. Model Semasa menggunakan model chat yang aktif.",
+ "settings.admin.interface.contextCompactionModel.label": "Model Pemadatan Konteks",
+ "settings.admin.interface.contextCompactionPrompt.description": "Mengawal cara mesej lama ditulis semula menjadi ringkasan yang dikemas kini secara berterusan.",
+ "settings.admin.interface.contextCompactionPrompt.label": "Gesaan Pemadatan Konteks",
"settings.admin.interface.externalTaskModel.label": "Model Tugas Luaran",
- "settings.admin.interface.followUpGeneration.description": "",
+ "settings.admin.interface.followUpGeneration.description": "Tunjukkan cadangan soalan seterusnya selepas jawapan pembantu.",
"settings.admin.interface.followUpGeneration.label": "Penjanaan Susulan",
- "settings.admin.interface.followUpGenerationPrompt.description": "",
- "settings.admin.interface.followUpGenerationPrompt.label": "Arahan Penjanaan Susulan",
- "settings.admin.interface.imagePromptGenerationPrompt.description": "",
- "settings.admin.interface.imagePromptGenerationPrompt.label": "Arahan Penjanaan Imej",
+ "settings.admin.interface.followUpGenerationPrompt.description": "Membimbing cadangan yang ditunjukkan selepas jawapan pembantu.",
+ "settings.admin.interface.followUpGenerationPrompt.label": "Gesaan Penjanaan Susulan",
+ "settings.admin.interface.imagePromptGenerationPrompt.description": "Menulis semula niat pengguna ke dalam gesaan penjanaan imej.",
+ "settings.admin.interface.imagePromptGenerationPrompt.label": "Gesaan untuk Penjanaan Gesaan Imej",
"settings.admin.interface.localTaskModel.label": "Model Tugas Tempatan",
- "settings.admin.interface.promptTemplate.description": "",
- "settings.admin.interface.promptTemplate.label": "Templat Arahan",
- "settings.admin.interface.queryGenerationPrompt.description": "",
- "settings.admin.interface.queryGenerationPrompt.label": "Arahan Penjanaan Pertanyaan",
- "settings.admin.interface.retainedMessages.description": "",
- "settings.admin.interface.retainedMessages.label": "",
- "settings.admin.interface.retrievalQueryGeneration.description": "",
+ "settings.admin.interface.promptTemplate.description": "Mentakrifkan tingkah laku yang digunakan untuk perbualan yang dituturkan.",
+ "settings.admin.interface.promptTemplate.label": "Templat Gesaan",
+ "settings.admin.interface.queryGenerationPrompt.description": "Gesaan bersama untuk menulis semula pertanyaan pengambilan maklumat dan carian web.",
+ "settings.admin.interface.queryGenerationPrompt.label": "Gesaan Penjanaan Pertanyaan",
+ "settings.admin.interface.retainedMessages.description": "Peratusan mesej terbaharu untuk disimpan selepas mesej lama diringkaskan.",
+ "settings.admin.interface.retainedMessages.label": "Mesej Disimpan",
+ "settings.admin.interface.retrievalQueryGeneration.description": "Tulis semula permintaan pengguna untuk mendapatkan semula pengetahuan.",
"settings.admin.interface.retrievalQueryGeneration.label": "Penjanaan Pertanyaan Pengambilan",
- "settings.admin.interface.sections.chat.title": "Perbualan",
- "settings.admin.interface.sections.generation.title": "",
+ "settings.admin.interface.sections.chat.title": "Chat",
+ "settings.admin.interface.sections.generation.title": "Penjanaan",
"settings.admin.interface.sections.tasks.title": "Tugas",
- "settings.admin.interface.tagsGeneration.description": "",
+ "settings.admin.interface.tagsGeneration.description": "Cipta tag chat daripada kandungan perbualan.",
"settings.admin.interface.tagsGeneration.label": "Penjanaan Tag",
- "settings.admin.interface.tagsGenerationPrompt.description": "",
- "settings.admin.interface.tagsGenerationPrompt.label": "Arahan Penjanaan Tag",
- "settings.admin.interface.taskModel.description": "",
+ "settings.admin.interface.tagsGenerationPrompt.description": "Mengawal cara tag chat disimpulkan.",
+ "settings.admin.interface.tagsGenerationPrompt.label": "Gesaan Penjanaan Tag",
+ "settings.admin.interface.taskModel.description": "Pilih model sandaran untuk tugasan latar belakang. Model Semasa menggunakan model chat yang aktif.",
"settings.admin.interface.taskModel.label": "Model Tugas",
- "settings.admin.interface.taskModelParameters.label": "",
- "settings.admin.interface.title": "Antaramuka",
- "settings.admin.interface.titleGeneration.description": "",
+ "settings.admin.interface.taskModelParameters.label": "Parameter Model Tugas",
+ "settings.admin.interface.title": "Antara Muka",
+ "settings.admin.interface.titleGeneration.description": "Benarkan nama automatik untuk chat baharu.",
"settings.admin.interface.titleGeneration.label": "Penjanaan Tajuk",
- "settings.admin.interface.titleGenerationPrompt.description": "",
- "settings.admin.interface.titleGenerationPrompt.label": "Arahan Penjanaan Tajuk",
- "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": "Arahan Pemanggilan Fungsi Alat",
- "settings.admin.interface.voiceModePrompt.description": "",
- "settings.admin.interface.voiceModePrompt.label": "Arahan Mod Suara",
- "settings.admin.interface.webSearchQueryGeneration.description": "",
+ "settings.admin.interface.titleGenerationPrompt.description": "Membentuk label pendek yang dijana untuk setiap chat.",
+ "settings.admin.interface.titleGenerationPrompt.label": "Gesaan Penjanaan Tajuk",
+ "settings.admin.interface.tokenCap.description": "Ambang pemadatan konteks khusus model tidak boleh melebihi had token ini.",
+ "settings.admin.interface.tokenCap.label": "Had Token",
+ "settings.admin.interface.tokenThreshold.description": "Mesej lama diringkaskan apabila anggaran konteks melebihi had token ini.",
+ "settings.admin.interface.tokenThreshold.label": "Ambang Token",
+ "settings.admin.interface.toolPermissions.description": "Tunjukkan Akses penuh dan Minta kelulusan dalam menu input chat.",
+ "settings.admin.interface.toolPermissions.label": "Kebenaran Alat",
+ "settings.admin.interface.toolsFunctionCallingPrompt.description": "Membimbing cara pembantu memformat panggilan alat dan fungsi.",
+ "settings.admin.interface.toolsFunctionCallingPrompt.label": "Gesaan Pemanggilan Fungsi Alat",
+ "settings.admin.interface.voiceModePrompt.description": "Gunakan arahan khusus suara semasa mod suara aktif.",
+ "settings.admin.interface.voiceModePrompt.label": "Gesaan Mod Suara",
+ "settings.admin.interface.webSearchQueryGeneration.description": "Tulis semula permintaan pengguna ke dalam pertanyaan carian web.",
"settings.admin.interface.webSearchQueryGeneration.label": "Penjanaan Pertanyaan Carian Web",
"settings.admin.models.builtinTools.automations.description": "Buat dan urus automasi berjadual",
"settings.admin.models.builtinTools.automations.label": "Automasi",
"settings.admin.models.builtinTools.calendar.description": "Senaraikan kalendar, cari, cipta, kemas kini, dan padamkan acara kalendar",
"settings.admin.models.builtinTools.calendar.label": "Kalendar",
"settings.admin.models.builtinTools.channels.description": "Cari saluran dan mesej saluran",
- "settings.admin.models.builtinTools.channels.label": "Saluran-saluran",
- "settings.admin.models.builtinTools.chats.description": "Cari dan lihat sejarah perbualan pengguna",
- "settings.admin.models.builtinTools.chats.label": "Sejarah Perbualan",
+ "settings.admin.models.builtinTools.channels.label": "Saluran",
+ "settings.admin.models.builtinTools.chats.description": "Cari dan lihat sejarah chat pengguna",
+ "settings.admin.models.builtinTools.chats.label": "Sejarah Chat",
"settings.admin.models.builtinTools.codeInterpreter.description": "Laksanakan kod",
"settings.admin.models.builtinTools.codeInterpreter.label": "Pentafsir Kod",
- "settings.admin.models.builtinTools.files.description": "",
- "settings.admin.models.builtinTools.files.label": "Fail-Fail",
+ "settings.admin.models.builtinTools.files.description": "Senaraikan, cari dan baca fail yang dilampirkan pada chat semasa",
+ "settings.admin.models.builtinTools.files.label": "Fail",
"settings.admin.models.builtinTools.imageGeneration.description": "Janakan dan edit imej",
"settings.admin.models.builtinTools.imageGeneration.label": "Penjanaan Imej",
- "settings.admin.models.builtinTools.knowledge.description": "Semak imbas dan pertanyaan pangkalan pengetahuan",
+ "settings.admin.models.builtinTools.knowledge.description": "Semak imbas dan buat pertanyaan pada pangkalan pengetahuan",
"settings.admin.models.builtinTools.knowledge.label": "Pangkalan Pengetahuan",
- "settings.admin.models.builtinTools.memory.description": "Cari dan urus ingatan pengguna",
- "settings.admin.models.builtinTools.memory.label": "Ingatan",
+ "settings.admin.models.builtinTools.memory.description": "Cari dan urus memori pengguna",
+ "settings.admin.models.builtinTools.memory.label": "Memori",
"settings.admin.models.builtinTools.notes.description": "Cari, lihat, dan urus nota pengguna",
- "settings.admin.models.builtinTools.notes.label": "Nota-nota",
- "settings.admin.models.builtinTools.notifications.description": "",
+ "settings.admin.models.builtinTools.notes.label": "Nota",
+ "settings.admin.models.builtinTools.notifications.description": "Hantar pemberitahuan kepada sasaran webhook yang dikonfigurasikan",
"settings.admin.models.builtinTools.notifications.label": "Pemberitahuan",
- "settings.admin.models.builtinTools.subagents.description": "",
- "settings.admin.models.builtinTools.subagents.label": "",
+ "settings.admin.models.builtinTools.subagents.description": "Agihkan kerja khusus kepada subejen yang bekerja secara selari",
+ "settings.admin.models.builtinTools.subagents.label": "Subejen",
"settings.admin.models.builtinTools.tasks.description": "Pecahkan permintaan kompleks kepada langkah yang boleh dijejak",
"settings.admin.models.builtinTools.tasks.label": "Pengurusan Tugas",
"settings.admin.models.builtinTools.time.description": "Dapatkan masa semasa dan lakukan pengiraan tarikh/masa",
"settings.admin.models.builtinTools.time.label": "Masa & Pengiraan",
- "settings.admin.models.builtinTools.title": "Alat Terbina",
- "settings.admin.models.builtinTools.userInput.description": "",
- "settings.admin.models.builtinTools.userInput.label": "",
+ "settings.admin.models.builtinTools.title": "Alat Terbina Dalam",
+ "settings.admin.models.builtinTools.userInput.description": "Jeda jawapan untuk bertanya kepada pengguna soalan penjelasan",
+ "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": "Carian Web",
- "settings.admin.models.capabilities.builtinTools.description": "Secara automatik suntikkan alat sistem dalam mod panggilan fungsi asli (cth., cap masa, ingatan, sejarah perbualan, nota, dll)",
- "settings.admin.models.capabilities.builtinTools.label": "Alat Terbina",
+ "settings.admin.models.capabilities.builtinTools.description": "Sertakan alat sistem secara automatik dalam mod pemanggilan fungsi asli (cth., cap masa, memori, sejarah chat, nota, dsb.)",
+ "settings.admin.models.capabilities.builtinTools.label": "Alat Terbina Dalam",
"settings.admin.models.capabilities.citations.description": "Memaparkan petikan dalam respons",
"settings.admin.models.capabilities.citations.label": "Petikan",
"settings.admin.models.capabilities.codeInterpreter.description": "Model dapat melaksanakan kod dan melakukan pengiraan",
@@ -2564,16 +2583,16 @@
"settings.admin.models.capabilities.fileContext.label": "Konteks Fail",
"settings.admin.models.capabilities.fileUpload.description": "Model menerima input fail",
"settings.admin.models.capabilities.fileUpload.label": "Muat Naik Fail",
- "settings.admin.models.capabilities.imageGeneration.description": "Model dapat menjana imej berdasarkan arahan teks",
+ "settings.admin.models.capabilities.imageGeneration.description": "Model dapat menjana imej berdasarkan gesaan teks",
"settings.admin.models.capabilities.imageGeneration.label": "Penjanaan Imej",
- "settings.admin.models.capabilities.memory.description": "",
- "settings.admin.models.capabilities.memory.label": "Ingatan",
+ "settings.admin.models.capabilities.memory.description": "Sertakan memori yang disimpan dalam konteks perbualan",
+ "settings.admin.models.capabilities.memory.label": "Memori",
"settings.admin.models.capabilities.statusUpdates.description": "Memaparkan kemas kini status (cth., kemajuan carian web) dalam respons",
"settings.admin.models.capabilities.statusUpdates.label": "Kemas Kini Status",
- "settings.admin.models.capabilities.terminal.description": "Model boleh mengakses Terminal Terbuka untuk pelaksanaan arahan dan pengurusan fail",
+ "settings.admin.models.capabilities.terminal.description": "Model boleh mengakses Open Terminal untuk pelaksanaan arahan dan pengurusan fail",
"settings.admin.models.capabilities.terminal.label": "Terminal",
"settings.admin.models.capabilities.title": "Keupayaan",
- "settings.admin.models.capabilities.usage.description": "Menghantar `stream_options: { include_usage: true }` dalam permintaan. Pembekal yang disokong akan mengembalikan maklumat penggunaan token dalam respons apabila ditetapkan.",
+ "settings.admin.models.capabilities.usage.description": "Menghantar `stream_options: { include_usage: true }` dalam permintaan.\nPenyedia yang disokong akan mengembalikan maklumat penggunaan token dalam respons apabila ditetapkan.",
"settings.admin.models.capabilities.usage.label": "Penggunaan",
"settings.admin.models.capabilities.vision.description": "Model menerima input imej",
"settings.admin.models.capabilities.vision.label": "Penglihatan",
@@ -2581,15 +2600,15 @@
"settings.admin.models.capabilities.webSearch.label": "Carian Web",
"settings.admin.models.defaultFeatures.codeInterpreter.description": "Model dapat melaksanakan kod dan melakukan pengiraan",
"settings.admin.models.defaultFeatures.codeInterpreter.label": "Pentafsir Kod",
- "settings.admin.models.defaultFeatures.imageGeneration.description": "Model dapat menjana imej berdasarkan arahan teks",
+ "settings.admin.models.defaultFeatures.imageGeneration.description": "Model dapat menjana imej berdasarkan gesaan teks",
"settings.admin.models.defaultFeatures.imageGeneration.label": "Penjanaan Imej",
"settings.admin.models.defaultFeatures.title": "Ciri Lalai",
"settings.admin.models.defaultFeatures.webSearch.description": "Model boleh mencari maklumat di web",
"settings.admin.models.defaultFeatures.webSearch.label": "Carian Web",
"settings.admin.models.defaults.modelCapabilities.label": "Keupayaan Model",
- "settings.admin.models.defaults.modelDefaults.label": "",
+ "settings.admin.models.defaults.modelDefaults.label": "Tetapan Lalai Model",
"settings.admin.models.defaults.modelParameters.label": "Parameter Model",
- "settings.admin.models.defaults.promptSuggestions.label": "Cadangan Arahan",
+ "settings.admin.models.defaults.promptSuggestions.label": "Cadangan Gesaan",
"settings.admin.models.disableAllModels.label": "Nyahaktifkan Semua",
"settings.admin.models.enableAllModels.label": "Aktifkan Semua",
"settings.admin.models.exportModels.label": "Eksport",
@@ -2599,43 +2618,43 @@
"settings.admin.models.resetModels.label": "Tetapkan Semula",
"settings.admin.models.showAllModels.label": "Paparkan 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": "Pipeline",
+ "settings.admin.pipelines.githubUrl.label": "URL GitHub",
+ "settings.admin.pipelines.install.label": "Pasang",
+ "settings.admin.pipelines.installing.label": "Memasang",
+ "settings.admin.pipelines.pipeline.description": "Pilih pipeline yang dipasang untuk dikonfigurasikan atau dialih keluar.",
+ "settings.admin.pipelines.pipeline.label": "Pipeline",
+ "settings.admin.pipelines.pipelineUrl.description": "Pilih pelayan Pipelines untuk diurus.",
+ "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": "Valves",
- "settings.admin.pipelines.selectAPyFile.label": "",
- "settings.admin.pipelines.title": "Pipeline",
- "settings.admin.pipelines.uploadPipeline.description": "",
+ "settings.admin.pipelines.selectAPyFile.label": "Pilih fail .py",
+ "settings.admin.pipelines.title": "Pipelines",
+ "settings.admin.pipelines.uploadPipeline.description": "Muat naik fail pipeline Python tempatan ke pelayan yang dipilih.",
"settings.admin.pipelines.uploadPipeline.label": "Muat Naik 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.subagents.enableBackgroundSubAgents.description": "Benarkan subejen yang diberi tugasan terus berjalan semasa chat induk diteruskan.",
+ "settings.admin.subagents.enableBackgroundSubAgents.label": "Dayakan subejen latar belakang",
+ "settings.admin.subagents.enableSubAgents.label": "Dayakan subejen",
+ "settings.admin.subagents.maxBackground.label": "Maksimum di latar belakang",
+ "settings.admin.subagents.maxConcurrent.label": "Maksimum serentak",
+ "settings.admin.subagents.maxIterations.label": "Lelaran maksimum",
+ "settings.admin.subagents.maxOutput.label": "Output maksimum",
+ "settings.admin.subagents.systemPrompt.description": "Biarkan kosong untuk lalai terbina dalam.",
+ "settings.admin.subagents.systemPrompt.label": "Gesaan sistem",
+ "settings.admin.subagents.title": "Subejen",
"settings.admin.web.bingSearchV7Endpoint.label": "Titik Akhir 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 Carian Brave",
- "settings.admin.web.bypassEmbeddingAndRetrieval.description": "",
+ "settings.admin.web.bypassEmbeddingAndRetrieval.description": "Sertakan keseluruhan kandungan sebagai konteks untuk pemprosesan menyeluruh.",
"settings.admin.web.bypassEmbeddingAndRetrieval.label": "Langkau Embedding dan Pencarian Semula",
- "settings.admin.web.bypassWebLoader.description": "",
+ "settings.admin.web.bypassWebLoader.description": "Gunakan hasil carian tanpa mengambil kandungan halaman.",
"settings.admin.web.bypassWebLoader.label": "Langkau Pemuat Web",
- "settings.admin.web.concurrentRequests.description": "",
+ "settings.admin.web.concurrentRequests.description": "Hadkan permintaan pemuat web selari.",
"settings.admin.web.concurrentRequests.label": "Permintaan Serentak",
"settings.admin.web.contextTokens.label": "Token Konteks",
- "settings.admin.web.ddgsBackend.label": "Bahagian Belakang DDGS",
- "settings.admin.web.domainFilterList.description": "",
+ "settings.admin.web.ddgsBackend.label": "Backend DDGS",
+ "settings.admin.web.domainFilterList.description": "Hadkan atau kecualikan domain menggunakan senarai dipisahkan koma.",
"settings.admin.web.domainFilterList.label": "Senarai Penapis Domain",
"settings.admin.web.exaApiKey.label": "Kunci API Exa",
"settings.admin.web.externalWebLoaderApiKey.label": "Kunci API Pemuat Web Luaran",
@@ -2643,68 +2662,69 @@
"settings.admin.web.externalWebSearchApiKey.label": "Kunci API Carian Web Luaran",
"settings.admin.web.externalWebSearchUrl.label": "URL Carian Web Luaran",
"settings.admin.web.fetchUrlContentLengthLimit.description": "Bilangan aksara maksimum untuk dikembalikan daripada URL yang diambil. Biarkan kosong untuk tiada had.",
- "settings.admin.web.fetchUrlContentLengthLimit.label": "Had Panjang Kandungan Ambil URL",
+ "settings.admin.web.fetchUrlContentLengthLimit.label": "Had Panjang Kandungan yang Diambil daripada URL",
"settings.admin.web.firecrawlApiBaseUrl.label": "URL Asas API Firecrawl",
"settings.admin.web.firecrawlApiKey.label": "Kunci API Firecrawl",
- "settings.admin.web.firecrawlTimeoutS.label": "Masa Tamat Firecrawl (s)",
+ "settings.admin.web.firecrawlTimeoutS.label": "Had Masa Firecrawl (s)",
"settings.admin.web.googlePseApiKey.label": "Kunci API Google PSE",
"settings.admin.web.googlePseEngineId.label": "ID Enjin Google PSE",
"settings.admin.web.jinaApiBaseUrl.label": "URL Asas API Jina",
"settings.admin.web.jinaApiKey.label": "Kunci API Jina",
"settings.admin.web.kagiSearchApiKey.label": "Kunci API Pencarian Kagi",
"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.linkupApiKey.label": "Kunci API Linkup",
+ "settings.admin.web.maxContentLength.description": "Aksara maksimum setiap hasil carian Exa. Biarkan kosong tanpa had.",
+ "settings.admin.web.maxContentLength.label": "Panjang Kandungan Maks",
+ "settings.admin.web.microsoftWebIqApiBaseUrl.label": "URL Pangkalan API Microsoft Web IQ",
+ "settings.admin.web.microsoftWebIqApiKey.label": "Kunci API Microsoft Web IQ",
"settings.admin.web.mojeekSearchApiKey.label": "Kunci API Pencarian Mojeek",
"settings.admin.web.ollamaCloudApiKey.label": "Kunci API Ollama Cloud",
- "settings.admin.web.openserpUrl.label": "",
+ "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": "Masa Tamat Playwright (ms)",
+ "settings.admin.web.playwrightTimeoutMs.label": "Had Masa Playwright (ms)",
"settings.admin.web.playwrightWebsocketUrl.label": "URL WebSocket Playwright",
"settings.admin.web.searchapiApiKey.label": "Kunci API SearchApi",
"settings.admin.web.searchapiEngine.label": "Enjin SearchApi",
- "settings.admin.web.searchLimits.description": "",
- "settings.admin.web.searchLimits.label": "",
+ "settings.admin.web.searchLimits.description": "Kawal volum hasil dan permintaan carian selari.",
+ "settings.admin.web.searchLimits.label": "Had Carian",
"settings.admin.web.searchResultCount.description": "Hadkan pertanyaan carian serentak. 0 = tanpa had (lalai). Tetapkan kepada 1 untuk pelaksanaan berurutan (disyorkan untuk API dengan had kadar ketat seperti peringkat percuma Brave).",
"settings.admin.web.searchResultCount.label": "Kiraan Hasil Carian",
"settings.admin.web.searxngQueryUrl.label": "URL Pertanyaan Searxng",
- "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "Bahasa carian Searxng (semua, en, es, de, fr, dsb.)",
+ "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "Bahasa carian Searxng (all, en, es, de, fr, dsb.)",
"settings.admin.web.sections.loader.title": "Pemuat",
"settings.admin.web.sections.search.title": "Carian",
"settings.admin.web.serpapiApiKey.label": "Kunci API SerpApi",
"settings.admin.web.serpapiEngine.label": "Enjin 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": "sID API Carian Sougou",
"settings.admin.web.sougouSearchApiSk.label": "SK API Carian Sougou",
"settings.admin.web.tavilyApiKey.label": "Kunci API Tavily",
"settings.admin.web.tavilyExtractDepth.label": "Kedalaman Ekstrak Tavily",
- "settings.admin.web.timeout.description": "",
- "settings.admin.web.timeout.label": "Tamat Masa",
+ "settings.admin.web.tavilySearchDepth.label": "Kedalaman Carian Tavily",
+ "settings.admin.web.timeout.description": "Masa maksimum untuk menunggu semasa memuatkan kandungan web.",
+ "settings.admin.web.timeout.label": "Had Masa",
"settings.admin.web.title": "Carian Web",
- "settings.admin.web.trustProxyEnvironment.description": "",
- "settings.admin.web.trustProxyEnvironment.label": "Persekitaran Proksi Boleh Dipercaya",
- "settings.admin.web.verifySslCertificate.description": "",
+ "settings.admin.web.trustProxyEnvironment.description": "Gunakan pemboleh ubah persekitaran untuk tetapan proksi semasa mengambil kandungan halaman.",
+ "settings.admin.web.trustProxyEnvironment.label": "Gunakan Tetapan Proksi Persekitaran",
+ "settings.admin.web.verifySslCertificate.description": "Sahkan sijil SSL apabila mengambil kandungan web.",
"settings.admin.web.verifySslCertificate.label": "Sahkan Sijil SSL",
- "settings.admin.web.webLoaderEngine.description": "",
+ "settings.admin.web.webLoaderEngine.description": "Pilih cara halaman hasil web diambil dan dibaca.",
"settings.admin.web.webLoaderEngine.label": "Enjin Pemuatan Web",
- "settings.admin.web.webSearch.description": "",
+ "settings.admin.web.webSearch.description": "Benarkan pengguna mencari di web daripada chat.",
"settings.admin.web.webSearch.label": "Carian 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": "Memerlukan pengguna untuk mengesahkan sebelum menggunakan Carian Web.",
+ "settings.admin.web.webSearchConfirmation.label": "Pengesahan Carian Web",
+ "settings.admin.web.webSearchConfirmationContent.description": "Mesej ditunjukkan sebelum carian web dijalankan.",
+ "settings.admin.web.webSearchConfirmationContent.label": "Kandungan Pengesahan Carian Web",
+ "settings.admin.web.webSearchEngine.description": "Pilih penyedia yang digunakan untuk pertanyaan carian web.",
"settings.admin.web.webSearchEngine.label": "Enjin Carian Web",
"settings.admin.web.yacyInstanceUrl.label": "URL Instans Yacy",
"settings.admin.web.yacyPassword.label": "Kata Laluan Yacy",
@@ -2713,364 +2733,364 @@
"settings.admin.web.yandexWebSearchConfig.label": "Konfigurasi Pencarian Web Yandex",
"settings.admin.web.yandexWebSearchUrl.label": "URL Pencarian Web Yandex",
"settings.admin.web.youComApiKey.label": "Kunci API You.com",
- "settings.admin.web.youtubeLanguage.description": "",
+ "settings.admin.web.youtubeLanguage.description": "Kod bahasa transkrip pilihan, dipisahkan dengan koma.",
"settings.admin.web.youtubeLanguage.label": "Bahasa YouTube",
- "settings.admin.web.youtubeProxyUrl.description": "",
+ "settings.admin.web.youtubeProxyUrl.description": "URL proksi digunakan untuk permintaan pemuat Youtube.",
"settings.admin.web.youtubeProxyUrl.label": "URL Proksi YouTube",
"settings.personal.about.checkForUpdates.label": "Semak kemas kini",
- "settings.personal.about.sections.community.title": "",
+ "settings.personal.about.sections.community.title": "Komuniti",
"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 yang dipasang dan semak kemas kini keluaran.",
"settings.personal.about.seeWhatSNew.label": "Lihat apa yang terbaru",
"settings.personal.about.title": "Mengenai",
- "settings.personal.account.apiKey.description": "",
+ "settings.personal.account.apiKey.description": "Cipta, salin atau gantikan kunci API anda dengan kunci baharu.",
"settings.personal.account.apiKey.label": "Kunci API",
- "settings.personal.account.bio.description": "",
+ "settings.personal.account.bio.description": "Tambahkan konteks profil pilihan yang boleh dilihat di mana profil ditunjukkan.",
"settings.personal.account.bio.label": "Biografi",
- "settings.personal.account.birthDate.description": "",
+ "settings.personal.account.birthDate.description": "Tetapkan tarikh lahir yang disimpan dengan profil anda.",
"settings.personal.account.birthDate.label": "Tarikh Lahir",
- "settings.personal.account.changePassword.description": "",
+ "settings.personal.account.changePassword.description": "Kemas kini kata laluan yang digunakan untuk login dengan email dan kata laluan.",
"settings.personal.account.changePassword.label": "Tukar Kata Laluan",
"settings.personal.account.confirmPassword.label": "Sahkan kata laluan",
- "settings.personal.account.createNewSecretKey.label": "Cipta kekunci rahsia baharu",
+ "settings.personal.account.createNewSecretKey.label": "Cipta kunci rahsia baharu",
"settings.personal.account.currentPassword.label": "Kata laluan semasa",
- "settings.personal.account.gender.description": "",
+ "settings.personal.account.gender.description": "Pilih nilai jantina yang disimpan pada profil anda.",
"settings.personal.account.gender.label": "Jantina",
- "settings.personal.account.jwtToken.description": "",
+ "settings.personal.account.jwtToken.description": "Salin token sesi semasa untuk permintaan yang disahkan.",
"settings.personal.account.jwtToken.label": "Token JWT",
- "settings.personal.account.name.description": "",
+ "settings.personal.account.name.description": "Tetapkan nama paparan yang ditunjukkan di seluruh akaun anda.",
"settings.personal.account.name.label": "Nama",
"settings.personal.account.newPassword.label": "Kata Laluan Baharu",
- "settings.personal.account.secrets.description": "",
- "settings.personal.account.secrets.label": "",
- "settings.personal.account.sections.apiKeys.title": "Kekunci API",
+ "settings.personal.account.secrets.description": "Tunjukkan atau sembunyikan rahsia akaun sensitif.",
+ "settings.personal.account.secrets.label": "Rahsia",
+ "settings.personal.account.sections.apiKeys.title": "Kunci API",
"settings.personal.account.sections.password.title": "Kata Laluan",
"settings.personal.account.sections.profile.title": "Profil",
"settings.personal.account.title": "Akaun",
"settings.personal.account.updatePassword.label": "Kemas Kini Kata Laluan",
"settings.personal.archivedChats.exportArchivedChats.label": "Eksport",
- "settings.personal.archivedChats.title": "Perbualan yang diarkibkan",
+ "settings.personal.archivedChats.title": "Chat yang diarkibkan",
"settings.personal.archivedChats.unarchiveAll.label": "Nyaharkibkan Semua",
- "settings.personal.audio.allowNonLocalVoices.description": "",
+ "settings.personal.audio.allowNonLocalVoices.description": "Sertakan suara yang tidak disediakan oleh perkhidmatan pertuturan tempatan.",
"settings.personal.audio.allowNonLocalVoices.label": "Benarkan suara bukan tempatan",
- "settings.personal.audio.autoPlaybackResponse.description": "",
+ "settings.personal.audio.autoPlaybackResponse.description": "Bacakan respons pembantu secara automatik.",
"settings.personal.audio.autoPlaybackResponse.label": "Main semula respons secara automatik",
- "settings.personal.audio.browserVoice.description": "",
- "settings.personal.audio.browserVoice.label": "Tetapan Suara",
- "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "",
+ "settings.personal.audio.browserVoice.description": "Pilih suara penyemak imbas yang digunakan untuk output pertuturan.",
+ "settings.personal.audio.browserVoice.label": "Tetapkan Suara",
+ "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "Hantar input suara yang ditranskripsi serta-merta selepas pengecaman pertuturan selesai.",
"settings.personal.audio.instantAutoSendAfterVoiceTranscription.label": "Hantar Secara Automatik Dengan Segera Selepas Transkripsi Suara",
- "settings.personal.audio.kokoroJsDtype.description": "",
+ "settings.personal.audio.kokoroJsDtype.description": "Pilih ketepatan model tempatan yang digunakan oleh Kokoro.js.",
"settings.personal.audio.kokoroJsDtype.label": "Kokoro.js Dtype",
- "settings.personal.audio.kokoroVoice.description": "",
- "settings.personal.audio.kokoroVoice.label": "Tetapan Suara",
- "settings.personal.audio.language.description": "",
+ "settings.personal.audio.kokoroVoice.description": "Pilih suara Kokoro.js yang digunakan untuk output pertuturan.",
+ "settings.personal.audio.kokoroVoice.label": "Tetapkan Suara",
+ "settings.personal.audio.language.description": "Tetapkan bahasa pengecaman pertuturan atau biarkan ia kosong untuk mengesan secara automatik.",
"settings.personal.audio.language.label": "Bahasa",
"settings.personal.audio.sections.sttSettings.title": "Tetapan STT",
"settings.personal.audio.sections.ttsSettings.title": "Tetapan TTS",
"settings.personal.audio.sections.voice.title": "Suara",
- "settings.personal.audio.serviceVoice.description": "",
- "settings.personal.audio.serviceVoice.label": "Tetapan Suara",
- "settings.personal.audio.speechPlaybackSpeed.description": "",
+ "settings.personal.audio.serviceVoice.description": "Pilih suara perkhidmatan teks ke pertuturan yang dikonfigurasikan.",
+ "settings.personal.audio.serviceVoice.label": "Tetapkan Suara",
+ "settings.personal.audio.speechPlaybackSpeed.description": "Laraskan kelajuan main balik respons yang dituturkan.",
"settings.personal.audio.speechPlaybackSpeed.label": "Kelajuan Main Balik Suara",
- "settings.personal.audio.speechToTextEngine.description": "",
+ "settings.personal.audio.speechToTextEngine.description": "Pilih enjin yang digunakan untuk mentranskripsikan input suara.",
"settings.personal.audio.speechToTextEngine.label": "Enjin Pertuturan-ke-Teks",
- "settings.personal.audio.textToSpeechEngine.description": "",
- "settings.personal.audio.textToSpeechEngine.label": "Enjin Teks-ke-Ucapan",
+ "settings.personal.audio.textToSpeechEngine.description": "Pilih enjin yang digunakan untuk membacakan respons pembantu.",
+ "settings.personal.audio.textToSpeechEngine.label": "Enjin Teks-ke-Pertuturan",
"settings.personal.audio.title": "Audio",
"settings.personal.connections.addConnection.description": "Sambung ke titik akhir API yang serasi dengan OpenAI anda sendiri.",
"settings.personal.connections.addConnection.label": "Tambah Sambungan",
"settings.personal.connections.sections.directConnections.title": "Sambungan Langsung",
"settings.personal.connections.title": "Sambungan",
"settings.personal.dataControls.archiveAll.label": "Arkibkan Semua",
- "settings.personal.dataControls.archiveAllChats.description": "",
- "settings.personal.dataControls.archiveAllChats.label": "Arkibkan Semua Perbualan",
- "settings.personal.dataControls.deleteAllChats.description": "",
- "settings.personal.dataControls.deleteAllChats.label": "Padam Semua Perbualan",
- "settings.personal.dataControls.exportChats.description": "",
- "settings.personal.dataControls.exportChats.label": "Eksport Perbualan",
- "settings.personal.dataControls.importChats.description": "",
- "settings.personal.dataControls.importChats.label": "Import Perbualan",
- "settings.personal.dataControls.manageFiles.description": "",
+ "settings.personal.dataControls.archiveAllChats.description": "Alihkan setiap chat ke dalam arkib selepas pengesahan.",
+ "settings.personal.dataControls.archiveAllChats.label": "Arkibkan Semua Chat",
+ "settings.personal.dataControls.deleteAllChats.description": "Padamkan setiap chat secara kekal selepas pengesahan.",
+ "settings.personal.dataControls.deleteAllChats.label": "Padam Semua Chat",
+ "settings.personal.dataControls.exportChats.description": "Muat turun sejarah chat anda sebagai eksport JSON.",
+ "settings.personal.dataControls.exportChats.label": "Eksport Chat",
+ "settings.personal.dataControls.importChats.description": "Import sejarah chat daripada fail eksport JSON.",
+ "settings.personal.dataControls.importChats.label": "Import Chat",
+ "settings.personal.dataControls.manageFiles.description": "Buka pengurus fail untuk fail yang dimuat naik.",
"settings.personal.dataControls.manageFiles.label": "Urus Fail",
- "settings.personal.dataControls.sections.chats.title": "Perbualan",
- "settings.personal.dataControls.sections.files.title": "Fail-Fail",
- "settings.personal.dataControls.sharedChats.description": "",
- "settings.personal.dataControls.sharedChats.label": "Perbualan yang Dikongsi",
+ "settings.personal.dataControls.sections.chats.title": "Chat",
+ "settings.personal.dataControls.sections.files.title": "Fail",
+ "settings.personal.dataControls.sharedChats.description": "Semak dan urus chat yang telah anda kongsi.",
+ "settings.personal.dataControls.sharedChats.label": "Chat yang Dikongsi",
"settings.personal.dataControls.title": "Kawalan Data",
- "settings.personal.general.language.description": "",
+ "settings.personal.general.language.description": "Pilih bahasa yang digunakan untuk teks antara muka.",
"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.modelParameters.description": "Tunjukkan atau sembunyikan parameter penjanaan tersuai.",
+ "settings.personal.general.modelParameters.label": "Parameter model",
+ "settings.personal.general.parameters.contextCompactionThreshold.description": "Tetapkan ambang token pemadatan konteks khusus model. Apabila ditetapkan, ini mengatasi ambang global sehingga had global.",
+ "settings.personal.general.parameters.contextCompactionThreshold.label": "Ambang Pemadatan Konteks",
+ "settings.personal.general.parameters.format.label": "format",
+ "settings.personal.general.parameters.frequencyPenalty.label": "frequency_penalty",
+ "settings.personal.general.parameters.functionCalling.description": "Mod asli (lalai) menggunakan keupayaan pemanggilan alat terbina dalam model. Mod legasi menyokong lebih banyak jenis model dengan memanggil alat sekali sebelum pelaksanaan melalui suntikan gesaan.",
"settings.personal.general.parameters.functionCalling.label": "Pemanggilan Fungsi",
- "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": "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": "Pilihan ini mengaktifkan atau menyahaktifkan penggunaan ciri penaakulan dalam Ollama, yang membenarkan model untuk berfikir sebelum menjana respons. Apabila diaktifkan, model boleh mengambil masa untuk memproses konteks perbualan dan menjana respons yang lebih teliti.",
"settings.personal.general.parameters.ollama.label": "Ollama",
- "settings.personal.general.parameters.presencePenalty.label": "",
- "settings.personal.general.parameters.reasoningEffort.description": "Mengehadkan usaha pada penaakulan untuk model penaakulan. Hanya terpakai pada model penaakulan daripada pembekal tertentu yang menyokong usaha penaakulan.",
+ "settings.personal.general.parameters.presencePenalty.label": "presence_penalty",
+ "settings.personal.general.parameters.reasoningEffort.description": "Mengehadkan usaha pada penaakulan untuk model penaakulan. Hanya terpakai pada model penaakulan daripada penyedia tertentu yang menyokong usaha penaakulan.",
"settings.personal.general.parameters.reasoningEffort.label": "Usaha Penaakulan",
"settings.personal.general.parameters.reasoningTags.description": "Aktifkan, nyahaktifkan, atau sesuaikan tag penaakulan yang digunakan oleh model. \"Diaktifkan\" menggunakan tag lalai, \"Dinyahaktifkan\" mematikan tag penaakulan, dan \"Tersuai\" membenarkan anda menentukan tag permulaan dan akhir anda sendiri.",
"settings.personal.general.parameters.reasoningTags.label": "Tag Penaakulan",
- "settings.personal.general.parameters.repeatLastN.label": "",
- "settings.personal.general.parameters.repeatPenalty.label": "",
- "settings.personal.general.parameters.seed.description": "Menetapkan benih nombor rawak yang digunakan untuk penjanaan. Menetapkan ini kepada nombor tertentu akan membuat model menjana teks yang sama untuk prompt yang sama.",
+ "settings.personal.general.parameters.repeatLastN.label": "repeat_last_n",
+ "settings.personal.general.parameters.repeatPenalty.label": "repeat_penalty",
+ "settings.personal.general.parameters.seed.description": "Menetapkan benih nombor rawak yang digunakan untuk penjanaan. Menetapkannya kepada nombor tertentu akan menyebabkan model menjana teks yang sama untuk gesaan yang sama.",
"settings.personal.general.parameters.seed.label": "Benih",
"settings.personal.general.parameters.stopSequence.description": "Menetapkan jujukan berhenti yang akan digunakan. Apabila corak ini dijumpai, LLM akan berhenti menjana teks dan kembali. Berbilang corak berhenti boleh ditetapkan dengan menentukan berbilang parameter berhenti yang berasingan dalam modelfile.",
"settings.personal.general.parameters.stopSequence.label": "Jujukan Henti",
"settings.personal.general.parameters.streamChatResponse.description": "Apabila didayakan, model akan bertindak balas kepada setiap mesej perbualan secara masa nyata, menjana respons sebaik sahaja pengguna menghantar mesej. Mod ini berguna untuk aplikasi perbualan langsung, tetapi mungkin menjejaskan prestasi pada perkakasan yang lebih perlahan.",
- "settings.personal.general.parameters.streamChatResponse.label": "Respons Perbualan Aliran",
- "settings.personal.general.parameters.streamDeltaChunkSize.description": "Saiz chunk delta aliran untuk model. Meningkatkan saiz chunk akan menyebabkan model bertindak balas dengan sekeping teks yang lebih besar sekaligus.",
- "settings.personal.general.parameters.streamDeltaChunkSize.label": "Saiz Ketulan Delta Aliran",
+ "settings.personal.general.parameters.streamChatResponse.label": "Strim Respons Chat",
+ "settings.personal.general.parameters.streamDeltaChunkSize.description": "Saiz cebisan delta strim untuk model. Saiz cebisan yang lebih besar membolehkan model memberikan lebih banyak teks sekali gus.",
+ "settings.personal.general.parameters.streamDeltaChunkSize.label": "Saiz Cebisan Delta Strim",
"settings.personal.general.parameters.temperature.description": "Suhu model. Meningkatkan suhu akan menyebabkan model menjawab dengan 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.title": "Arahan Sistem",
+ "settings.personal.general.sections.systemPrompt.description": "Tetapkan gesaan sistem lalai untuk chat baharu.",
+ "settings.personal.general.sections.systemPrompt.title": "Gesaan Sistem",
"settings.personal.general.sections.webuiSettings.title": "Tetapan WebUI",
- "settings.personal.general.theme.description": "",
+ "settings.personal.general.theme.description": "Pilih tema warna yang digunakan oleh antara muka.",
"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": "Dayakan peningkatan visual berfokuskan kebolehaksesan.",
+ "settings.personal.interface.accessibilityMode.label": "Mod Kebolehcapaian",
+ "settings.personal.interface.allowUserLocation.description": "Kongsi lokasi semasa anda dengan ciri yang boleh menggunakannya.",
"settings.personal.interface.allowUserLocation.label": "Benarkan Lokasi Pengguna",
- "settings.personal.interface.allowVoiceInterruptionInCall.description": "",
+ "settings.personal.interface.allowVoiceInterruptionInCall.description": "Biarkan pertuturan mengganggu pembantu semasa panggilan suara.",
"settings.personal.interface.allowVoiceInterruptionInCall.label": "Benarkan gangguan suara dalam panggilan",
- "settings.personal.interface.alwaysCollapseCodeBlocks.description": "",
+ "settings.personal.interface.alwaysCollapseCodeBlocks.description": "Lipat blok kod secara lalai.",
"settings.personal.interface.alwaysCollapseCodeBlocks.label": "Sentiasa Lipat Blok Kod",
- "settings.personal.interface.alwaysExpandDetails.description": "",
+ "settings.personal.interface.alwaysExpandDetails.description": "Buka blok butiran secara lalai.",
"settings.personal.interface.alwaysExpandDetails.label": "Sentiasa Kembangkan Butiran",
"settings.personal.interface.android.label": "Android",
- "settings.personal.interface.autoCopyResponseToClipboard.description": "",
+ "settings.personal.interface.autoCopyResponseToClipboard.description": "Salin respons pembantu terkini apabila ia selesai.",
"settings.personal.interface.autoCopyResponseToClipboard.label": "Salin Respons secara Automatik ke Papan Klip",
- "settings.personal.interface.chatBackgroundImage.description": "",
- "settings.personal.interface.chatBackgroundImage.label": "Imej Latar Belakang Perbualan",
- "settings.personal.interface.chatBubbleUi.description": "",
- "settings.personal.interface.chatBubbleUi.label": "Antaramuka Buih Perbualan",
- "settings.personal.interface.chatDirection.description": "",
- "settings.personal.interface.chatDirection.label": "Arah Perbualan",
- "settings.personal.interface.chatHoverPreviews.description": "",
- "settings.personal.interface.chatHoverPreviews.label": "",
- "settings.personal.interface.chatTagsAutoGeneration.description": "",
- "settings.personal.interface.chatTagsAutoGeneration.label": "Penjanaan Auto Tag Perbualan",
- "settings.personal.interface.compressImagesInChannels.description": "",
- "settings.personal.interface.compressImagesInChannels.label": "Mampat Imej dalam Saluran",
- "settings.personal.interface.copyFormattedText.description": "",
+ "settings.personal.interface.chatBackgroundImage.description": "Muat naik atau tetapkan semula imej latar belakang kandungan chat.",
+ "settings.personal.interface.chatBackgroundImage.label": "Imej Latar Belakang Chat",
+ "settings.personal.interface.chatBubbleUi.description": "Paparkan mesej dalam gelembung yang padat.",
+ "settings.personal.interface.chatBubbleUi.label": "Antara Muka Gelembung Chat",
+ "settings.personal.interface.chatDirection.description": "Pilih aliran teks automatik, kiri ke kanan atau kanan ke kiri.",
+ "settings.personal.interface.chatDirection.label": "Arah Chat",
+ "settings.personal.interface.chatHoverPreviews.description": "Tunjukkan pratonton terapung mesej terbaharu apabila menuding pada chat di bar sisi.",
+ "settings.personal.interface.chatHoverPreviews.label": "Pratonton Chat semasa Menuding",
+ "settings.personal.interface.chatTagsAutoGeneration.description": "Hasilkan tag untuk chat secara automatik.",
+ "settings.personal.interface.chatTagsAutoGeneration.label": "Penjanaan Auto Tag Chat",
+ "settings.personal.interface.compressImagesInChannels.description": "Gunakan pemampatan imej pada muat naik saluran juga.",
+ "settings.personal.interface.compressImagesInChannels.label": "Mampatkan Imej dalam Saluran",
+ "settings.personal.interface.copyFormattedText.description": "Salin kandungan berformat kaya dan bukannya teks biasa.",
"settings.personal.interface.copyFormattedText.label": "Salin Teks Terformat",
"settings.personal.interface.decreaseUiScale.label": "Kurangkan Skala UI",
- "settings.personal.interface.defaultUploadMode.description": "",
- "settings.personal.interface.defaultUploadMode.label": "",
- "settings.personal.interface.detectArtifactsAutomatically.description": "",
+ "settings.personal.interface.defaultUploadMode.description": "Lampirkan fail dengan kandungan penuh atau pengambilan terfokus secara lalai.",
+ "settings.personal.interface.defaultUploadMode.label": "Mod Muat Naik Lalai",
+ "settings.personal.interface.detectArtifactsAutomatically.description": "Kesan artifak yang dijana dan tunjukkan dalam ruang kerja artifak.",
"settings.personal.interface.detectArtifactsAutomatically.label": "Kesan Artifak Secara Automatik",
- "settings.personal.interface.displayChatTitleInTab.description": "",
- "settings.personal.interface.displayChatTitleInTab.label": "Paparkan tajuk perbualan dalam tab",
- "settings.personal.interface.displayEmojiInCall.description": "",
+ "settings.personal.interface.displayChatTitleInTab.description": "Gunakan tajuk chat aktif sebagai tajuk tab penyemak imbas.",
+ "settings.personal.interface.displayChatTitleInTab.label": "Paparkan tajuk Chat dalam tab",
+ "settings.personal.interface.displayEmojiInCall.description": "Tunjukkan maklum balas emoji dalam antara muka panggilan.",
"settings.personal.interface.displayEmojiInCall.label": "Paparkan Emoji dalam Panggilan",
- "settings.personal.interface.displayMultiModelResponsesInTabs.description": "",
- "settings.personal.interface.displayMultiModelResponsesInTabs.label": "Paparkan Respons Multi-model dalam Tab",
- "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "",
- "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "Paparkan nama pengguna dan bukannya 'Anda' dalam Perbualan",
- "settings.personal.interface.enableMessageQueue.description": "",
- "settings.personal.interface.enableMessageQueue.label": "Aktifkan Barisan Mesej",
- "settings.personal.interface.enterKeyBehavior.description": "",
+ "settings.personal.interface.displayMultiModelResponsesInTabs.description": "Himpunkan respons berbilang model ke dalam tab.",
+ "settings.personal.interface.displayMultiModelResponsesInTabs.label": "Paparkan Respons Berbilang Model dalam Tab",
+ "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "Tunjukkan label nama pengguna anda dan bukannya Anda dalam gelembung chat.",
+ "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "Paparkan nama pengguna dan bukannya 'Anda' dalam Chat",
+ "settings.personal.interface.enableMessageQueue.description": "Masukkan mesej keluar ke dalam baris gilir dan bukannya mengganggu respons aktif.",
+ "settings.personal.interface.enableMessageQueue.label": "Dayakan Baris Gilir Mesej",
+ "settings.personal.interface.enterKeyBehavior.description": "Pilih sama ada Enter menghantar serta-merta atau menggunakan Ctrl+Enter.",
"settings.personal.interface.enterKeyBehavior.label": "Kelakuan Kekunci Enter",
- "settings.personal.interface.fadeEffectForStreamingText.description": "",
+ "settings.personal.interface.fadeEffectForStreamingText.description": "Pudarkan teks penstriman apabila ia sampai.",
"settings.personal.interface.fadeEffectForStreamingText.label": "Kesan Pudar untuk Teks Penstriman",
"settings.personal.interface.floatingQuickActions.label": "Tindakan Pantas Terapung",
- "settings.personal.interface.followUpAutoGeneration.description": "",
+ "settings.personal.interface.followUpAutoGeneration.description": "Hasilkan gesaan susulan yang dicadangkan selepas respons.",
"settings.personal.interface.followUpAutoGeneration.label": "Auto-Penjanaan Susulan",
- "settings.personal.interface.fontFamily.description": "",
- "settings.personal.interface.fontFamily.label": "",
- "settings.personal.interface.hapticFeedback.label": "Maklum Balas Haptic",
- "settings.personal.interface.iframeSandboxAllowDownloads.description": "",
- "settings.personal.interface.iframeSandboxAllowDownloads.label": "",
- "settings.personal.interface.iframeSandboxAllowForms.description": "",
- "settings.personal.interface.iframeSandboxAllowForms.label": "iframe Sandbox Benarkan Borang",
- "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "",
- "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "Benarkan Asal Sama untuk Sandbox iframe",
- "settings.personal.interface.iframeSandboxAllowScripts.description": "",
- "settings.personal.interface.iframeSandboxAllowScripts.label": "",
+ "settings.personal.interface.fontFamily.description": "Gunakan keluarga fon tempatan untuk antara muka apl.",
+ "settings.personal.interface.fontFamily.label": "Keluarga Fon",
+ "settings.personal.interface.hapticFeedback.label": "Maklum Balas Haptik",
+ "settings.personal.interface.iframeSandboxAllowDownloads.description": "Benarkan muat turun dalam iframe yang menggunakan sandbox.",
+ "settings.personal.interface.iframeSandboxAllowDownloads.label": "Benarkan Muat Turun dalam Sandbox iframe",
+ "settings.personal.interface.iframeSandboxAllowForms.description": "Benarkan borang dalam iframe artifak yang menggunakan sandbox.",
+ "settings.personal.interface.iframeSandboxAllowForms.label": "Benarkan Borang dalam Sandbox iframe",
+ "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "Benarkan artifak mengakses API pelayar daripada asal yang sama dalam sandbox.",
+ "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "Benarkan Akses Asal Sama dalam Sandbox iframe",
+ "settings.personal.interface.iframeSandboxAllowScripts.description": "Benarkan skrip dalam iframe yang menggunakan sandbox.",
+ "settings.personal.interface.iframeSandboxAllowScripts.label": "Benarkan Skrip dalam Sandbox iframe",
"settings.personal.interface.imageCompression.label": "Mampatan Imej",
"settings.personal.interface.increaseUiScale.label": "Tingkatkan Skala UI",
- "settings.personal.interface.insertFollowUpPromptToInput.description": "",
- "settings.personal.interface.insertFollowUpPromptToInput.label": "Sisipkan Arahan Susulan ke Input",
- "settings.personal.interface.insertPromptAsRichText.description": "",
- "settings.personal.interface.insertPromptAsRichText.label": "Sisipkan Arahan sebagai Teks Kaya",
- "settings.personal.interface.insertSuggestionPromptToInput.description": "",
- "settings.personal.interface.insertSuggestionPromptToInput.label": "Sisipkan Arahan Cadangan ke Input",
- "settings.personal.interface.keepFollowUpPromptsInChat.description": "",
- "settings.personal.interface.keepFollowUpPromptsInChat.label": "Simpan Arahan Susulan dalam Perbualan",
- "settings.personal.interface.landingPageMode.description": "",
+ "settings.personal.interface.insertFollowUpPromptToInput.description": "Masukkan gesaan susulan yang dipilih terus ke dalam ruang karangan mesej.",
+ "settings.personal.interface.insertFollowUpPromptToInput.label": "Sisipkan Gesaan Susulan ke Input",
+ "settings.personal.interface.insertPromptAsRichText.description": "Tampalkan gesaan yang dimasukkan sebagai teks kaya apabila boleh.",
+ "settings.personal.interface.insertPromptAsRichText.label": "Sisipkan Gesaan sebagai Teks Kaya",
+ "settings.personal.interface.insertSuggestionPromptToInput.description": "Letakkan teks cadangan yang dipilih ke dalam ruang karangan mesej.",
+ "settings.personal.interface.insertSuggestionPromptToInput.label": "Sisipkan Gesaan Cadangan ke Input",
+ "settings.personal.interface.keepFollowUpPromptsInChat.description": "Pastikan gesaan susulan yang dijana kekal kelihatan dalam chat.",
+ "settings.personal.interface.keepFollowUpPromptsInChat.label": "Kekalkan Gesaan Susulan dalam Chat",
+ "settings.personal.interface.landingPageMode.description": "Pilih sama ada apl dibuka pada paparan laman utama lalai atau paparan chat.",
"settings.personal.interface.landingPageMode.label": "Mod Halaman Pendaratan",
"settings.personal.interface.openModalToManageFloatingQuickActions.label": "Buka Modal Untuk Menguruskan Tindakan Pantas Terapung",
"settings.personal.interface.openModalToManageImageCompression.label": "Buka Modal Untuk Menguruskan Pemampatan Imej",
- "settings.personal.interface.pasteLargeTextAsFile.description": "",
- "settings.personal.interface.pasteLargeTextAsFile.label": "Tampal Teks Besar sebagai Fail",
- "settings.personal.interface.promptAutocompletion.description": "",
- "settings.personal.interface.promptAutocompletion.label": "Autolengkap Arahan",
- "settings.personal.interface.regenerateMenu.description": "",
+ "settings.personal.interface.pasteLargeTextAsFile.description": "Tukar teks panjang yang ditampal menjadi lampiran fail.",
+ "settings.personal.interface.pasteLargeTextAsFile.label": "Tampal Teks Panjang sebagai Fail",
+ "settings.personal.interface.promptAutocompletion.description": "Cadangkan pelengkapan semasa mengarang gesaan.",
+ "settings.personal.interface.promptAutocompletion.label": "Autolengkap Gesaan",
+ "settings.personal.interface.regenerateMenu.description": "Tunjukkan menu tindakan jana semula untuk respons pembantu.",
"settings.personal.interface.regenerateMenu.label": "Menu Jana Semula",
- "settings.personal.interface.renderMarkdownInAssistantMessages.description": "",
+ "settings.personal.interface.renderMarkdownInAssistantMessages.description": "Format sintaks Markdown dalam respons pembantu.",
"settings.personal.interface.renderMarkdownInAssistantMessages.label": "Papar Markdown dalam Mesej Pembantu",
- "settings.personal.interface.renderMarkdownInPreviews.description": "",
+ "settings.personal.interface.renderMarkdownInPreviews.description": "Format Markdown dalam pratonton dan paparan kandungan padat.",
"settings.personal.interface.renderMarkdownInPreviews.label": "Papar Markdown dalam Pratonton",
- "settings.personal.interface.renderMarkdownInUserMessages.description": "",
+ "settings.personal.interface.renderMarkdownInUserMessages.description": "Format sintaks Markdown dalam mesej anda sendiri.",
"settings.personal.interface.renderMarkdownInUserMessages.label": "Papar Markdown dalam Mesej Pengguna",
- "settings.personal.interface.responseAutoScroll.description": "",
- "settings.personal.interface.responseAutoScroll.label": "",
- "settings.personal.interface.richTextInputForChat.description": "",
- "settings.personal.interface.richTextInputForChat.label": "Input Teks Kaya untuk Perbualan",
- "settings.personal.interface.scrollOnBranchChange.description": "",
- "settings.personal.interface.scrollOnBranchChange.label": "Skrol Semasa Pertukaran Cabang",
+ "settings.personal.interface.responseAutoScroll.description": "Ikuti respons pembantu semasa ia dijana.",
+ "settings.personal.interface.responseAutoScroll.label": "Tatal Respons Secara Automatik",
+ "settings.personal.interface.richTextInputForChat.description": "Gunakan ruang karangan teks kaya dan bukannya ruang teks biasa.",
+ "settings.personal.interface.richTextInputForChat.label": "Input Teks Kaya untuk Chat",
+ "settings.personal.interface.scrollOnBranchChange.description": "Tatal ke cabang aktif apabila menukar cabang respons.",
+ "settings.personal.interface.scrollOnBranchChange.label": "Tatal Semasa Pertukaran Cabang",
"settings.personal.interface.sections.artifacts.title": "Artifak",
- "settings.personal.interface.sections.chat.title": "Perbualan",
+ "settings.personal.interface.sections.chat.title": "Chat",
"settings.personal.interface.sections.file.title": "Fail",
"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.showFilesOnTerminalSelect.description": "Buka pelayar fail selepas memilih terminal.",
+ "settings.personal.interface.showFilesOnTerminalSelect.label": "Tunjukkan Fail apabila Terminal Dipilih",
+ "settings.personal.interface.showFormattingToolbar.description": "Tunjukkan kawalan pemformatan dalam ruang karangan teks kaya.",
"settings.personal.interface.showFormattingToolbar.label": "Paparkan Bar Alatan Format",
- "settings.personal.interface.stylizedPdfExport.description": "",
+ "settings.personal.interface.stylizedPdfExport.description": "Gunakan pemformatan bergaya apabila mengeksport chat ke PDF.",
"settings.personal.interface.stylizedPdfExport.label": "Eksport PDF Bergaya",
- "settings.personal.interface.temporaryChatByDefault.description": "",
- "settings.personal.interface.temporaryChatByDefault.label": "Perbualan Sementara secara Lalai",
- "settings.personal.interface.terminalFileDisplay.description": "",
- "settings.personal.interface.terminalFileDisplay.label": "",
- "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "",
- "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "",
- "settings.personal.interface.title": "Antaramuka",
- "settings.personal.interface.titleAutoGeneration.description": "",
+ "settings.personal.interface.temporaryChatByDefault.description": "Mulakan chat baharu sebagai chat sementara melainkan tetapan ini diubah.",
+ "settings.personal.interface.temporaryChatByDefault.label": "Chat Sementara secara Lalai",
+ "settings.personal.interface.terminalFileDisplay.description": "Pilih tempat hasil display_file terminal dipaparkan secara lalai.",
+ "settings.personal.interface.terminalFileDisplay.label": "Paparan Fail Terminal",
+ "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "Benarkan pratonton terminal mengakses API pelayar daripada asal yang sama.",
+ "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "Benarkan Akses Asal Sama dalam Pratonton Terminal",
+ "settings.personal.interface.title": "Antara Muka",
+ "settings.personal.interface.titleAutoGeneration.description": "Hasilkan tajuk chat secara automatik daripada kandungan perbualan.",
"settings.personal.interface.titleAutoGeneration.label": "Penjanaan Auto Tajuk",
- "settings.personal.interface.toastNotificationsForNewUpdates.description": "",
- "settings.personal.interface.toastNotificationsForNewUpdates.label": "Pemberitahuan Toast untuk kemas kini baharu",
+ "settings.personal.interface.toastNotificationsForNewUpdates.description": "Tunjukkan pemberitahuan ringkas tentang kemas kini kepada pentadbir apabila versi baharu tersedia.",
+ "settings.personal.interface.toastNotificationsForNewUpdates.label": "Pemberitahuan Ringkas untuk Kemas Kini Baharu",
"settings.personal.interface.uiScale.label": "Skala UI",
- "settings.personal.interface.webSearchInChat.description": "",
- "settings.personal.interface.webSearchInChat.label": "Carian Web dalam Perbualan",
- "settings.personal.interface.widescreenMode.description": "",
+ "settings.personal.interface.webSearchInChat.description": "Tetapkan ketersediaan carian web untuk chat baharu.",
+ "settings.personal.interface.webSearchInChat.label": "Carian Web dalam Chat",
+ "settings.personal.interface.widescreenMode.description": "Gunakan reka letak chat yang lebih luas pada paparan besar.",
"settings.personal.interface.widescreenMode.label": "Mod Skrin Lebar",
- "settings.personal.notifications.addNotificationTarget.label": "",
- "settings.personal.notifications.browserNotifications.label": "",
+ "settings.personal.notifications.addNotificationTarget.label": "Tambah Sasaran Pemberitahuan",
+ "settings.personal.notifications.browserNotifications.label": "Pemberitahuan Penyemak Imbas",
"settings.personal.notifications.notificationSound.label": "Bunyi Pemberitahuan",
- "settings.personal.notifications.notificationTargets.label": "",
+ "settings.personal.notifications.notificationTargets.label": "Sasaran Pemberitahuan",
"settings.personal.notifications.title": "Pemberitahuan",
- "settings.personal.personalization.clearMemory.label": "Kosongkan ingatan",
+ "settings.personal.personalization.clearMemory.label": "Kosongkan memori",
"settings.personal.personalization.manageMemories.label": "Urus",
- "settings.personal.personalization.memory.description": "Anda boleh memperibadikan interaksi anda dengan LLM dengan menambahkan ingatan melalui butang 'Urus' di bawah, menjadikannya lebih membantu dan disesuaikan dengan anda.",
- "settings.personal.personalization.memory.label": "Ingatan",
- "settings.personal.personalization.noResultsFound.description": "Ingatan yang boleh diakses oleh LLM akan ditunjukkan di sini.",
- "settings.personal.personalization.savedMemories.label": "",
- "settings.personal.personalization.sections.memory.title": "Ingatan",
+ "settings.personal.personalization.memory.description": "Anda boleh memperibadikan interaksi anda dengan LLM dengan menambahkan memori melalui butang 'Urus' di bawah, supaya responsnya lebih membantu dan sesuai dengan anda.",
+ "settings.personal.personalization.memory.label": "Memori",
+ "settings.personal.personalization.noResultsFound.description": "Memori yang boleh diakses oleh LLM akan ditunjukkan di sini.",
+ "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": "Tambah Prompt Tersuai",
- "settings.personal.shortcuts.allowToolCall.label": "",
+ "settings.personal.shortcuts.acceptAutocomplete.label": "Terima Penjanaan Autolengkap\\nLompat ke Pemboleh Ubah Gesaan",
+ "settings.personal.shortcuts.addPrompt.label": "Tambah Gesaan Tersuai",
+ "settings.personal.shortcuts.allowToolCall.label": "Benarkan Panggilan Alat",
"settings.personal.shortcuts.attachFile.label": "Lampirkan Fail Daripada Pengetahuan",
"settings.personal.shortcuts.closeModal.label": "Tutup Modal",
"settings.personal.shortcuts.command.label": "Arahan",
"settings.personal.shortcuts.copyLastCodeBlock.label": "Salin Blok Kod Terakhir",
"settings.personal.shortcuts.copyLastResponse.label": "Salin Respons Terakhir",
- "settings.personal.shortcuts.deleteChat.label": "Padam Perbualan",
- "settings.personal.shortcuts.denyToolCall.label": "",
- "settings.personal.shortcuts.enableKeyboardShortcuts.description": "",
- "settings.personal.shortcuts.enableKeyboardShortcuts.label": "",
- "settings.personal.shortcuts.focusInput.label": "Fokus Input Perbualan",
+ "settings.personal.shortcuts.deleteChat.label": "Padam Chat",
+ "settings.personal.shortcuts.denyToolCall.label": "Tolak Panggilan Alat",
+ "settings.personal.shortcuts.enableKeyboardShortcuts.description": "Apabila dilumpuhkan, pintasan papan kekunci tidak akan mencetuskan sebarang tindakan.",
+ "settings.personal.shortcuts.enableKeyboardShortcuts.label": "Dayakan Pintasan Papan Kekunci",
+ "settings.personal.shortcuts.focusInput.label": "Fokus Input Chat",
"settings.personal.shortcuts.generateMessagePair.label": "Janakan Pasangan Mesej",
- "settings.personal.shortcuts.navigateChatDown.label": "",
- "settings.personal.shortcuts.navigateChatUp.label": "",
+ "settings.personal.shortcuts.navigateChatDown.label": "Navigasi ke Chat Seterusnya",
+ "settings.personal.shortcuts.navigateChatUp.label": "Navigasi ke Chat Sebelumnya",
"settings.personal.shortcuts.navigatePromptHistoryUp.label": "Edit Mesej Terakhir",
- "settings.personal.shortcuts.newChat.label": "Perbualan Baharu",
- "settings.personal.shortcuts.newTemporaryChat.label": "Perbualan Sementara Baharu",
+ "settings.personal.shortcuts.newChat.label": "Chat Baharu",
+ "settings.personal.shortcuts.newTemporaryChat.label": "Chat Sementara Baharu",
"settings.personal.shortcuts.openModelSelector.label": "Buka Pemilih Model",
"settings.personal.shortcuts.openSettings.label": "Buka Tetapan",
"settings.personal.shortcuts.preventFileCreation.label": "Cegah Penciptaan Fail",
- "settings.personal.shortcuts.regenerateResponse.label": "Respons Jana Semula",
- "settings.personal.shortcuts.resetDefaults.label": "",
- "settings.personal.shortcuts.search.label": "Carian",
+ "settings.personal.shortcuts.regenerateResponse.label": "Jana Semula Respons",
+ "settings.personal.shortcuts.resetDefaults.label": "Tetapkan Semula Lalai",
+ "settings.personal.shortcuts.search.label": "Cari",
"settings.personal.shortcuts.showShortcuts.label": "Tunjukkan Pintasan",
"settings.personal.shortcuts.stopGenerating.label": "Hentikan Penjanaan",
"settings.personal.shortcuts.talkToModel.label": "Bual dengan Model",
- "settings.personal.shortcuts.title": "",
- "settings.personal.shortcuts.toggleControls.label": "",
- "settings.personal.shortcuts.toggleDictation.label": "Suis Diktasi",
- "settings.personal.shortcuts.toggleMute.label": "",
- "settings.personal.shortcuts.toggleSidebar.label": "Suis Bar Sisi",
+ "settings.personal.shortcuts.title": "Papan Kekunci",
+ "settings.personal.shortcuts.toggleControls.label": "Togol Kawalan",
+ "settings.personal.shortcuts.toggleDictation.label": "Togol Diktasi",
+ "settings.personal.shortcuts.toggleMute.label": "Togol Redam",
+ "settings.personal.shortcuts.toggleSidebar.label": "Togol Bar Sisi",
"settings.personal.tools.addConnection.description": "Sambung ke pelayan alat luaran yang serasi dengan OpenAPI anda sendiri.",
"settings.personal.tools.addConnection.label": "Tambah Sambungan",
"settings.personal.tools.openApi.label": "OpenAPI",
- "settings.personal.tools.sections.externalToolServers.title": "",
- "settings.personal.tools.terminals.addConnection.description": "Sambung ke instans Terminal Terbuka untuk menyemak imbas fail dan gunakannya sebagai alat sentiasa aktif. Hanya satu boleh aktif pada satu masa.",
+ "settings.personal.tools.sections.externalToolServers.title": "Pelayan Alat Luaran",
+ "settings.personal.tools.terminals.addConnection.description": "Sambung ke instans Open Terminal untuk menyemak imbas fail dan menggunakannya sebagai alat yang sentiasa aktif. Hanya satu boleh aktif pada satu masa.",
"settings.personal.tools.terminals.addConnection.label": "Tambah Sambungan",
- "settings.personal.tools.terminals.sections.openTerminal.title": "Buka Terminal",
+ "settings.personal.tools.terminals.sections.openTerminal.title": "Open Terminal",
"settings.personal.tools.title": "Integrasi",
"settings.personal.usage.sections.activity.title": "Aktiviti",
- "settings.personal.usage.sections.activityInsights.title": "",
- "settings.personal.usage.sections.mostUsedTools.title": "",
+ "settings.personal.usage.sections.activityInsights.title": "Cerapan aktiviti",
+ "settings.personal.usage.sections.mostUsedTools.title": "Alat yang paling banyak digunakan",
"settings.personal.usage.sections.overview.title": "Gambaran Keseluruhan",
- "settings.personal.usage.sections.topModels.title": "",
+ "settings.personal.usage.sections.topModels.title": "Model teratas",
"settings.personal.usage.title": "Penggunaan",
"Share": "Kongsi",
- "Share Chat": "Kongsi Perbualan",
+ "Share Chat": "Kongsi Chat",
"Share link copied to clipboard.": "Pautan kongsi telah disalin ke papan klip.",
- "Share to Open WebUI Community": "Kongsi kepada Komuniti OpenWebUI",
+ "Share to Open WebUI Community": "Kongsi kepada Komuniti Open WebUI",
"Share your background and interests": "Kongsi latar belakang dan minat anda",
- "Shared": "",
- "Shared Chats": "Perbualan yang Dikongsi",
+ "Shared": "Dikongsi",
+ "Shared Chats": "Chat yang Dikongsi",
"Shared with you": "Dikongsi dengan anda",
"Sharing Permissions": "Kebenaran Berkongsi",
- "Shell": "",
- "Shorten older messages so this chat can keep going.": "",
+ "Shell": "Shell",
+ "Shorten older messages so this chat can keep going.": "Pendekkan mesej lama supaya chat ini dapat diteruskan.",
"Show": "Tunjukkan",
- "Show \"What's New\" Modal on Login": "Paparkan modal \"Apa yang Baru\" semasa log masuk",
+ "Show \"What's New\" Modal on Login": "Paparkan modal \"Apa yang Baru\" semasa login",
"Show All": "Paparkan Semua",
"Show all ({{COUNT}} characters)": "Paparkan semua ({{COUNT}} aksara)",
"Show Files": "Paparkan Fail",
- "Show Hidden Files": "",
+ "Show Hidden Files": "Tunjuk Fail Tersembunyi",
"Show image preview": "Tunjukkan pratonton imej",
- "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": "Tunjukkan saya coretan kod",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Tunjukkan saya coretan kod pengepala lekat laman web dalam CSS dan JavaScript.",
"Show Model": "Tunjukkan Model",
- "Show more": "",
- "Show or switch the current model.": "",
+ "Show more": "Tunjuk lebih banyak",
+ "Show or switch the current model.": "Tunjukkan atau tukar model semasa.",
"Show Shortcuts": "Tunjukkan Pintasan",
- "Show the floating quick-action toolbar in chat.": "",
+ "Show the floating quick-action toolbar in chat.": "Tunjukkan bar alat tindakan pantas terapung dalam chat.",
"Show your support!": "Tunjukkan sokongan anda!",
"Showcased creativity": "Kreativiti yang dipamerkan",
- "Sidebar": "",
- "Sign in": "Daftar masuk",
- "Sign in to {{WEBUI_NAME}}": "Daftar masuk ke {{WEBUI_NAME}}",
- "Sign in to {{WEBUI_NAME}} with LDAP": "Daftar masuk ke {{WEBUI_NAME}} dengan LDAP",
- "Sign Out": "Daftar keluar",
+ "Sidebar": "Bar sisi",
+ "Sign in": "Login",
+ "Sign in to {{WEBUI_NAME}}": "Login ke {{WEBUI_NAME}}",
+ "Sign in to {{WEBUI_NAME}} with LDAP": "Login ke {{WEBUI_NAME}} dengan LDAP",
+ "Sign Out": "Log Keluar",
"Sign up": "Daftar",
- "Sign up to {{WEBUI_NAME}}": "Daftar akaun ke {{WEBUI_NAME}}",
- "Signing in to {{WEBUI_NAME}}": "Sedang daftar masuk ke {{WEBUI_NAME}}",
- "simultaneous sub-agents": "",
+ "Sign up to {{WEBUI_NAME}}": "Daftar akaun di {{WEBUI_NAME}}",
+ "Signing in to {{WEBUI_NAME}}": "Sedang login ke {{WEBUI_NAME}}",
+ "simultaneous sub-agents": "subejen serentak",
"Single": "Tunggal",
"Sink List": "Lekukkan Senarai",
- "Size": "",
+ "Size": "Saiz",
"sk-1234": "sk-1234",
"Skill created successfully": "Kemahiran berjaya dibuat",
"Skill deleted successfully": "Kemahiran berjaya dipadam",
@@ -3078,33 +3098,34 @@
"Skill ID": "ID Kemahiran",
"Skill imported successfully": "Kemahiran berjaya diimport",
"Skill Instructions": "Arahan Kemahiran",
- "Skill Menu": "",
+ "Skill Menu": "Menu Kemahiran",
"Skill Name": "Nama Kemahiran",
"Skill updated successfully": "Kemahiran berjaya dikemas kini",
"Skills": "Kemahiran",
"Skills Access": "Akses Kemahiran",
"Skills Public Sharing": "Perkongsian Awam Kemahiran",
"Skills Sharing": "Perkongsian Kemahiran",
- "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": "Langkau ke kandungan utama",
+ "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "Slim memerlukan perkhidmatan luaran untuk embedding, storan vektor dan pengekstrakan dokumen. Fail teks asas boleh dibaca secara setempat.",
+ "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "Slim memerlukan penyedia pertuturan luaran. Model pertuturan tempatan dan penukaran audio tidak tersedia.",
"Something went wrong :/": "Ada yang salah :/",
"Sonar": "Sonar",
- "Sonar Deep Research": "Penyelidikan Mendalam Sonar",
+ "Sonar Deep Research": "Sonar Deep Research",
"Sonar Pro": "Sonar Pro",
- "Sonar Reasoning": "Penaakulan Sonar",
- "Sonar Reasoning Pro": "Penaakulan Sonar Pro",
+ "Sonar Reasoning": "Sonar Reasoning",
+ "Sonar Reasoning Pro": "Sonar Reasoning Pro",
"Sort": "Isih",
"Source": "Sumber",
- "Specific users or groups": "",
+ "Specific users or groups": "Pengguna atau kumpulan tertentu",
"Speech recognition error: {{error}}": "Ralat pengecaman pertuturan: {{error}}",
"Speech-to-Text Language": "Bahasa Pertuturan-ke-Teks",
- "Sponsor on GitHub": "",
- "Staan API Key": "",
+ "Sponsor on GitHub": "Taja di GitHub",
+ "Staan API Key": "Kunci API Staan",
"Start a new conversation": "Mula perbualan baharu",
"Start of the channel": "Permulaan saluran",
"Start Tag": "Tag Permulaan",
- "Start the chat to use this terminal.": "",
+ "Start the chat to use this terminal.": "Mulakan chat untuk menggunakan terminal ini.",
+ "Starting in {{count}} minutes_one": "Bermula dalam {{count}} minit",
"Starting in {{count}} minutes_other": "Bermula dalam {{count}} minit",
"Starting in 1 minute": "Bermula dalam 1 minit",
"Starting kernel...": "Kernel sedang dimulakan...",
@@ -3112,344 +3133,345 @@
"Status": "Status",
"Status cleared successfully": "Status telah dipadamkan dengan berjaya",
"Status updated successfully": "Status telah dikemas kini dengan berjaya",
- "Status: check what is running in this chat.": "",
+ "Status: check what is running in this chat.": "Status: semak apa yang sedang berjalan dalam chat ini.",
"STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Henti",
- "Stop before each tool call until you allow or deny it.": "",
- "Stop camera": "",
+ "Stop before each tool call until you allow or deny it.": "Berhenti sebelum setiap panggilan alat sehingga anda membenarkan atau menolaknya.",
+ "Stop camera": "Hentikan kamera",
"Stop Download": "Hentikan Muat Turun",
"Stop Generating": "Hentikan Penjanaan",
"Storage": "Storan",
- "Streamable HTTP": "HTTP Boleh Alir",
+ "Streamable HTTP": "Streamable HTTP",
"Strikethrough": "Garis Potong",
"Su_day_of_week": "Ahd",
- "Submit answers": "",
+ "Submit answers": "Serahkan Jawapan",
"Submit question": "Hantar soalan",
"Submit suggestion": "Hantar cadangan",
- "Subtitle": "Subtitle",
+ "Subtitle": "Subtajuk",
"Success": "Berjaya",
"Successfully imported {{userCount}} users.": "Berjaya mengimport {{userCount}} pengguna.",
"Suggest a change": "Cadangkan perubahan",
"Suggested": "Cadangan",
- "Suggested prompts": "",
- "Summarize this note.": "",
+ "Suggested prompts": "Gesaan yang dicadangkan",
+ "Summarize this note.": "Ringkaskan nota ini.",
"Support": "Sokongan",
- "Support this plugin:": "Sokong plugin ini",
- "Swap": "",
- "Switch camera": "",
+ "Support this plugin:": "Sokong plugin ini:",
+ "Swap": "Tukar",
+ "Switch camera": "Tukar kamera",
"Switch to JSON editor": "Tukar ke penyunting JSON",
"Switch to visual editor": "Tukar ke penyunting visual",
"Sync": "Segerak",
- "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!": "Segerak Selesai!",
- "Sync directory": "Direktori Segerak",
- "Sync Failed": "Segerak Gagal",
- "Sync Usage Stats": "Statistik Penggunaan Segerak",
+ "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "Segerakkan direktori setempat dengan pangkalan pengetahuan ini. Hanya fail baharu dan yang diubah akan dimuat naik. Struktur direktori akan dikekalkan.",
+ "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "Penyegerakan selesai: {{added}} ditambah, {{modified}} diubah, {{deleted}} dipadamkan, {{unmodified}} tidak berubah",
+ "Sync Complete!": "Penyegerakan Selesai!",
+ "Sync directory": "Segerakkan direktori",
+ "Sync Failed": "Penyegerakan Gagal",
+ "Sync Usage Stats": "Segerakkan Statistik Penggunaan",
"Syncing stats...": "Menyegerakkan statistik...",
"Syncing...": "Sedang menyegerak...",
"Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "Hanya menyegerak perbualan dengan kemas kini selepas cap masa segerak terakhir anda. Nyahaktifkan untuk menyegerak semula semua perbualan.",
"System": "Sistem",
- "System events only": "",
+ "System events only": "Peristiwa sistem sahaja",
"System Instructions": "Arahan Sistem",
- "System Prompt": "Arahan Sistem",
- "Table": "",
+ "System Prompt": "Gesaan Sistem",
+ "Table": "Jadual",
"Tag": "Tag",
"Tags": "Tag-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.": "Persampelan bebas ekor digunakan untuk mengurangkan kesan token yang kurang berkemungkinan daripada output. Nilai yang lebih tinggi (cth., 2.0) akan mengurangkan kesan lebih banyak, manakala nilai 1.0 menyahaktifkan tetapan ini.",
"Talk to Model": "Bual dengan Model",
"Tap to interrupt": "Sentuh untuk mengganggu",
- "Target ID": "",
- "Target ID for notify": "",
+ "Target ID": "ID sasaran",
+ "Target ID for notify": "ID sasaran untuk dimaklumkan",
"Task List": "Senarai Tugas",
"Tasks": "Tugas",
"tasks completed": "tugas selesai",
- "Tell me a fun fact": "",
- "Tell me a random fun fact about the Roman Empire": "",
- "Tell us more:": "Beritahu kami lebih lanjut",
- "Temporary": "",
- "Temporary Chat": "Perbualan Sementara",
- "Temporary: toggle temporary chat for this new chat.": "",
+ "Tell me a fun fact": "Beritahu saya fakta yang menyeronokkan",
+ "Tell me a random fun fact about the Roman Empire": "Beritahu saya satu fakta menarik secara rawak tentang Empayar Rom",
+ "Tell us more:": "Beritahu kami lebih lanjut:",
+ "Temporary": "Sementara",
+ "Temporary Chat": "Chat Sementara",
+ "Temporary: toggle temporary chat for this new chat.": "Sementara: togol mod chat sementara untuk chat baharu ini.",
"Terminal": "Terminal",
- "Terminal Contexts": "",
+ "Terminal Contexts": "Konteks Terminal",
"Terminal servers saved": "Pelayan Terminal Disimpan",
- "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.": "",
+ "Test": "Uji",
+ "Test must pass before a source is created.": "Ujian mesti lulus sebelum sumber dicipta.",
+ "Test notification sent.": "Pemberitahuan ujian dihantar.",
+ "Test Query": "Pertanyaan Ujian",
+ "Test returned no results.": "Ujian tidak memberikan hasil.",
+ "Test succeeded.": "Ujian berjaya.",
+ "Test the source before creating it.": "Uji sumber sebelum menciptanya.",
+ "Test the source before saving it.": "Uji sumber sebelum menyimpannya.",
"Th_day_of_week": "Kha",
"Thanks for your feedback!": "Terima kasih atas maklum balas anda!",
"The Application Account DN you bind with for search": "DN Akaun Aplikasi yang anda ikat untuk carian",
"The base to search for users": "Pangkalan 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.": "Saiz kelompok menentukan berapa banyak permintaan teks yang diproses bersama sekaligus. Saiz kelompok yang lebih tinggi dapat meningkatkan prestasi dan kelajuan model, tetapi ia juga memerlukan lebih banyak ingatan.",
+ "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.": "Saiz kelompok menentukan berapa banyak permintaan teks yang diproses bersama sekali gus. Saiz kelompok yang lebih besar dapat meningkatkan prestasi dan kelajuan model, tetapi juga memerlukan 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.": "Pembangun di sebalik 'plugin' ini adalah sukarelawan yang bersemangat daripada komuniti. Jika anda mendapati 'plugin' ini membantu, sila pertimbangkan untuk menyumbang kepada pembangunannya.",
"The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Papan kedudukan penilaian berdasarkan sistem penarafan Elo dan dikemas kini secara masa nyata.",
"The format to return a response in. Format can be json or a JSON schema.": "Format untuk mengembalikan respons. Format boleh 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. Membekalkan bahasa input dalam format ISO-639-1 (cth. en) akan meningkatkan ketepatan dan kependaman. Biarkan kosong untuk mengesan bahasa secara automatik.",
- "The LDAP attribute that maps to the mail that users use to sign in.": "Atribut LDAP yang dipetakan ke mel yang digunakan pengguna untuk log masuk.",
- "The LDAP attribute that maps to the username that users use to sign in.": "Atribut LDAP yang dipetakan ke nama pengguna yang digunakan pengguna untuk log masuk.",
- "The notify tool always sends to an enabled target, regardless of automatic event settings.": "",
+ "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. Membekalkan bahasa input dalam format ISO-639-1 (cth. en) akan meningkatkan ketepatan dan mengurangkan kependaman. Biarkan kosong untuk mengesan bahasa secara automatik.",
+ "The LDAP attribute that maps to the mail that users use to sign in.": "Atribut LDAP yang dipetakan kepada alamat email yang digunakan pengguna untuk login.",
+ "The LDAP attribute that maps to the username that users use to sign in.": "Atribut LDAP yang dipetakan ke nama pengguna yang digunakan pengguna untuk login.",
+ "The notify tool always sends to an enabled target, regardless of automatic event settings.": "Alat notify sentiasa menghantar pemberitahuan kepada sasaran yang didayakan, tanpa mengira tetapan peristiwa automatik.",
"The passwords you entered don't quite match. Please double-check and try again.": "Kata laluan yang anda masukkan tidak sepadan. Sila semak semula dan cuba lagi.",
- "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Skor hendaklah berada diantara 0.0 (0%) dan 1.0 (100%).",
+ "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Skor hendaklah berada di antara 0.0 (0%) dan 1.0 (100%).",
"There was an error syncing your stats. Please try again.": "Terdapat ralat dalam menyegerakkan statistik anda. Sila cuba lagi.",
- "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.": "Tetapan ini dibaca daripada pemboleh ubah persekitaran dan tidak boleh diedit di sini selagi {{ENV_VAR}} dilumpuhkan.",
+ "thinking, output_config": "thinking, output_config",
"Thinking...": "Berfikir...",
- "This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak boleh diubah semula kepada asal. Adakah anda ingin teruskan",
+ "This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak boleh dibatalkan. Adakah anda ingin meneruskan?",
"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Saluran ini telah diwujudkan pada {{createdAt}}. Ini adalah permulaan saluran {{channelName}}.",
"This chat won't appear in history and your messages will not be saved.": "Perbualan ini tidak akan dipaparkan dalam sejarah dan mesej anda tidak akan disimpan.",
"This folder is empty": "Folder ini kosong",
"This is a default user permission and will remain enabled.": "Ini ialah kebenaran pengguna lalai dan akan tetap didayakan.",
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ini adalah ciri percubaan, ia mungkin tidak berfungsi seperti yang diharapkan dan tertakluk kepada perubahan pada bila-bila masa.",
- "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.": "Pangkalan pengetahuan ini mendapatkan data daripada sumber yang disambungkan. Open WebUI boleh membuat pertanyaan, tetapi tidak boleh memuat naik, menyegerakkan, menyunting, memadam, menetapkan semula atau mengindeks semula data sumber tersebut.",
"This model is not publicly available. Please select another model.": "Model ini tidak tersedia secara terbuka. Sila pilih model lain.",
- "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Pilihan ini mengawal berapa lama model akan tetap dimuatkan ke dalam ingatan selepas permintaan (lalai: 5m)",
+ "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Pilihan ini mengawal tempoh model kekal dimuatkan dalam memori selepas permintaan (lalai: 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.": "Pilihan ini mengawal berapa banyak token yang disimpan apabila menyegarkan konteks. Sebagai contoh, jika ditetapkan kepada 2, 2 token terakhir konteks perbualan akan dikekalkan. Memelihara konteks boleh membantu mengekalkan kesinambungan perbualan, tetapi ia mungkin mengurangkan keupayaan untuk bertindak balas terhadap 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.": "Pilihan ini menetapkan bilangan maksimum token yang boleh dijana oleh model dalam responsnya. Meningkatkan had ini membenarkan model memberikan jawapan yang lebih panjang, tetapi ia juga mungkin meningkatkan kemungkinan kandungan yang tidak berguna atau tidak relevan dijana.",
"This response was generated by \"{{model}}\"": "Respons ini dijana oleh \"{{model}}\"",
"This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Templat ini mengandungi pemegang tempat konteks berganda ([context] atau {{CONTEXT}}). Konteks akan disuntikkan pada setiap kemunculan.",
"This will delete": "Ini akan memadam",
"This will delete {{NAME}} and all its contents.": "Ini akan memadam {{NAME}} dan semua kandungannya.",
- "This will delete all models including custom models and cannot be undone.": "Ini akan memadam semua model termasuk model tersuai dan tidak boleh dibuat asal.",
- "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.": "Ini akan memadam secara kekal kalendar \"{{name}}\" dan semua acaranya. Tindakan ini tidak boleh dibuat asal.",
- "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 all models including custom models and cannot be undone.": "Ini akan memadam semua model termasuk model tersuai dan tidak boleh dibatalkan.",
+ "This will delete the cached model and cannot be undone.": "Ini akan menghapuskan model cache dan tidak boleh dibatalkan.",
+ "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Ini akan memadam secara kekal kalendar \"{{name}}\" dan semua acaranya. Tindakan ini tidak boleh dibatalkan.",
+ "This will remove all files and directories from this knowledge base. This action cannot be undone.": "Ini akan membuang semua fail dan direktori daripada pangkalan pengetahuan ini. Tindakan ini tidak boleh dibatalkan.",
+ "This will revoke the current API key.": "Ini akan membatalkan kunci API semasa.",
"Thorough explanation": "Penjelasan menyeluruh",
"Thought": "Fikiran",
"Thought for {{DURATION}}": "Berfikir selama {{DURATION}}",
"Thought for {{DURATION}} seconds": "Berfikir selama {{DURATION}} saat",
"Thought for less than a second": "Berfikir selama kurang daripada satu saat",
"Thread": "Utas",
- "Through": "",
+ "Through": "Sehingga",
"Thumbs up/down ratings from users on model responses": "Penilaian ibu jari naik/turun daripada pengguna pada respons model",
"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 Pelayan Tika diperlukan.",
"Tiktoken": "Tiktoken",
"Time": "Masa",
- "Timeout": "Tamat Masa",
- "Timer": "",
+ "Timeout": "Had Masa",
+ "Timer": "Pemasa",
"Title": "Tajuk",
- "Title cannot be an empty string.": "Tajuk tidak boleh menjadi rentetan kosong",
+ "Title cannot be an empty string.": "Tajuk tidak boleh menjadi rentetan kosong.",
"Title is required": "Tajuk diperlukan",
"To access the available model names for downloading,": "Untuk mengakses nama model yang tersedia untuk dimuat turun,",
"To access the GGUF models available for downloading,": "Untuk mengakses model GGUF yang tersedia untuk dimuat turun,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Untuk mengakses WebUI, sila hubungi pentadbir. Pentadbir boleh menguruskan status pengguna daripada Panel Pentadbir.",
- "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Untuk melampirkan pangkalan pengetahuan di sini, tambahkannya ke ruang kerja \"Knowledge\" terlebih dahulu.",
+ "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Untuk melampirkan pangkalan pengetahuan di sini, tambahkannya ke ruang kerja \"Pengetahuan\" terlebih dahulu.",
"To learn more about available endpoints, visit our documentation.": "Untuk mengetahui lebih lanjut tentang titik akhir yang tersedia, lawati dokumentasi kami.",
- "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.": "Untuk memilih kemahiran di sini, tambahkannya ke ruang kerja \"Skills\" terlebih dahulu.",
- "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "",
+ "To learn more about SpeechT5,": "Untuk mengetahui lebih lanjut mengenai SpeechT5,",
+ "To see the available CMU Arctic speaker embeddings,": "Untuk melihat embedding suara CMU Arctic yang tersedia,",
+ "To select actions here, add them to the \"Functions\" workspace first.": "Untuk memilih tindakan di sini, tambahkannya ke ruang kerja \"Fungsi\" terlebih dahulu.",
+ "To select default filters here, enable toggleable filters for this model first.": "Untuk memilih penapis lalai di sini, dayakan penapis boleh togol untuk model ini terlebih dahulu.",
+ "To select filters here, add them to the \"Functions\" workspace first.": "Untuk memilih penapis di sini, tambahkannya ke ruang kerja \"Fungsi\" terlebih dahulu.",
+ "To select skills here, add them to the \"Skills\" workspace first.": "Untuk memilih kemahiran di sini, tambahkannya ke ruang kerja \"Kemahiran\" terlebih dahulu.",
+ "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "Untuk memilih kit alat di sini, tambahkannya ke ruang kerja \"Alatan\" atau dayakan pelayan alat terlebih dahulu.",
"Today": "Hari Ini",
"Today at": "Hari ini pada",
- "Toggle {{COUNT}} sources": "Suis {{COUNT}} sumber",
- "Toggle 1 source": "Suis 1 sumber",
- "Toggle Controls": "",
- "Toggle details": "Suis butiran",
- "Toggle Dictation": "Suis Diktasi",
- "Toggle Mute": "",
- "Toggle Sidebar": "Suis Bar Sisi",
- "Toggle status history": "Suis sejarah status",
- "Toggle temporary chat for this new chat.": "",
+ "Toggle {{COUNT}} sources": "Togol {{COUNT}} sumber",
+ "Toggle 1 source": "Togol 1 sumber",
+ "Toggle Controls": "Togol kawalan",
+ "Toggle details": "Togol butiran",
+ "Toggle Dictation": "Togol Diktasi",
+ "Toggle Mute": "Togol Redam",
+ "Toggle Sidebar": "Togol Bar Sisi",
+ "Toggle status history": "Togol sejarah status",
+ "Toggle temporary chat for this new chat.": "Togol mod chat sementara untuk chat baharu ini.",
"Toggle whether current connection is active.": "Togol sama ada sambungan semasa aktif.",
"Token": "Token",
- "Token activity": "",
+ "Token activity": "Aktiviti token",
"Token counts are estimates and may not reflect actual API usage": "Kiraan token adalah anggaran dan mungkin tidak mencerminkan penggunaan API sebenar",
"tokens": "token",
"Tokens": "Token",
"Too verbose": "Terlalu panjang lebar",
- "tool": "",
+ "tool": "alat",
"Tool created successfully": "Alat berjaya dibuat",
"Tool deleted successfully": "Alat berjaya dipadamkan",
"Tool Description": "Penerangan Alat",
"Tool ID": "ID Alat",
"Tool imported successfully": "Alat berjaya diimport",
- "tool loops per sub-agent": "",
- "Tool Menu": "",
+ "tool loops per sub-agent": "gelung alat bagi setiap subejen",
+ "Tool Menu": "Menu Alat",
"Tool Name": "Nama Alat",
- "Tool Permissions": "",
+ "Tool Permissions": "Kebenaran Alat",
"Tool Servers": "Pelayan Alat",
"Tool updated successfully": "Alat berjaya dikemas kini",
"Tools": "Alatan",
"Tools Access": "Akses Alat",
- "Tools can execute arbitrary code.": "",
+ "Tools can execute arbitrary code.": "Alat boleh melaksanakan kod sewenang-wenangnya.",
"Tools have a function calling system that allows arbitrary code execution.": "Alatan mempunyai sistem panggilan fungsi yang membolehkan pelaksanaan kod sewenang-wenangnya.",
"Tools Public Sharing": "Perkongsian Awam Alat",
"Tools Sharing": "Perkongsian Alat",
"Top": "Teratas",
- "Total chats": "",
+ "Total chats": "Jumlah chat",
"Transformers": "Transformers",
- "Translation key": "",
- "Trial License": "",
+ "Translation key": "Kunci terjemahan",
+ "Trial License": "Lesen Percubaan",
"Try adjusting your search or filter to find what you are looking for.": "Cuba laraskan carian atau penapis anda untuk mencari apa yang anda cari.",
"Try Again": "Cuba Lagi",
"TTS Voice": "Suara TTS",
"Tu_day_of_week": "Sel",
- "Type": "jenis",
- "Type a model ref": "",
+ "Type": "Jenis",
+ "Type a model ref": "Taip rujukan model",
"Type here...": "Taip di sini...",
- "Type Hugging Face Resolve (Download) URL": "Taip URL 'Hugging Face Resolve (Download)'",
- "Type your answer": "",
- "Uh-oh! There was an issue with the response.": "Alamak! Ada masalah dengan respons.",
- "Unarchive": "",
- "Unarchive Chat": "Nyaharkibkan Perbualan",
- "Unassigned": "",
+ "Type Hugging Face Resolve (Download) URL": "Taip URL Resolve (Muat Turun) Hugging Face",
+ "Type your answer": "Taip jawapan anda",
+ "Uh-oh! There was an issue with the response.": "Maaf! Terdapat masalah dengan respons.",
+ "Ultra-fast": "Sangat pantas",
+ "Unarchive": "Nyaharkibkan",
+ "Unarchive Chat": "Nyaharkibkan Chat",
+ "Unassigned": "Belum Ditetapkan",
"Underline": "Garis Bawah",
- "unknown": "",
+ "unknown": "tidak diketahui",
"Unknown": "Tidak Diketahui",
"Unknown User": "Pengguna Tidak Diketahui",
- "Unload Model": "",
- "Unloads {{FROM_NOW}}": "Membuang {{FROM_NOW}}",
+ "Unload Model": "Nyahmuat Model",
+ "Unloads {{FROM_NOW}}": "Dinyahmuat {{FROM_NOW}}",
"Unmute": "Nyahredam",
"Unpin": "Nyahsematkan",
"Unpin from Sidebar": "Nyahsemat daripada Bar Sisi",
- "Unread": "",
- "Unshare All": "",
- "Unshare All Shared Chats": "",
- "Unshare Chat": "Batalkan Perkongsian Perbualan",
+ "Unread": "Belum dibaca",
+ "Unshare All": "Nyahkongsi Semua",
+ "Unshare All Shared Chats": "Nyahkongsi Semua Chat Dikongsi",
+ "Unshare Chat": "Batalkan Perkongsian Chat",
"Unsupported file type.": "Jenis fail tidak disokong.",
"Untagged": "Tanpa Tag",
"Untitled": "Tanpa Tajuk",
"Update": "Kemas Kini",
- "Update All Models": "",
+ "Update All Models": "Kemas Kini Semua Model",
"Update and Copy Link": "Kemas Kini dan Salin Pautan",
"Update for the latest features and improvements.": "Kemas kini untuk ciri dan penambahbaikan terbaru.",
"Update your status": "Kemas kini status anda",
"Updated": "Dikemas kini",
"Updated at": "Dikemas kini pada",
"Updated At": "Dikemas kini Pada",
- "Updating \"{{modelId}}\"": "",
+ "Updating \"{{modelId}}\"": "Mengemas kini \"{{modelId}}\"",
"Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Tingkatkan ke pelan berlesen untuk keupayaan yang ditingkatkan, termasuk tema khusus dan penjenamaan, serta sokongan berdedikasi.",
"Upload": "Muat Naik",
"Upload a GGUF model": "Muat Naik model GGUF",
"Upload Audio": "Muat Naik Audio",
"Upload directory": "Muat Naik Direktori",
- "Upload failed": "",
- "Upload failed for {{failed}} of {{total}} files.": "",
+ "Upload failed": "Muat naik gagal",
+ "Upload failed for {{failed}} of {{total}} files.": "Muat naik gagal untuk {{failed}} daripada {{total}} fail.",
"Upload files": "Muat Naik Fail",
"Upload Files": "Muat Naik Fail",
- "Upload Folder": "",
+ "Upload Folder": "Muat naik folder",
"Upload Model": "Muat Naik Model",
- "Upload Photo": "",
+ "Upload Photo": "Muat Naik Foto",
"Upload profile image": "Muat Naik Imej Profil",
"Upload Progress": "Kemajuan Muat Naik",
"Uploaded files or images": "Fail atau imej yang dimuat naik",
- "Uploading": "",
- "Uploading {{current}}/{{total}}: {{file}}": "",
+ "Uploading": "Memuat naik",
+ "Uploading {{current}}/{{total}}: {{file}}": "Memuat naik {{current}}/{{total}}: {{file}}",
"Uploading...": "Memuat naik...",
"URL": "URL",
"URL is required": "URL diperlukan",
"URL Mode": "Mod URL",
"Use": "Gunakan",
- "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.*": "Gunakan nama atau corak peristiwa yang sah seperti user.*",
+ "Use default": "Gunakan lalai",
+ "Use device vibration feedback on supported Android devices.": "Gunakan maklum balas getaran peranti pada peranti Android yang disokong.",
+ "Use discovered scopes": "Gunakan skop yang ditemui",
"Use groups to organize your users and assign permissions.": "Gunakan kumpulan untuk menguruskan pengguna anda dan menetapkan kebenaran.",
- "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.": "Gunakan pengambilan bersegmen untuk pengekstrakan kandungan yang fokus dan relevan.",
+ "Use segmented retrieval for focused and relevant context.": "Gunakan pengambilan bersegmen untuk konteks yang fokus dan relevan.",
+ "Use segmented retrieval for focused context.": "Gunakan pengambilan bersegmen untuk konteks fokus.",
+ "Use these in model system prompts as {{example}}.": "Gunakan ini dalam gesaan sistem model sebagai {{example}}.",
+ "Use Web Search?": "Gunakan Carian Web?",
"user": "pengguna",
"User": "Pengguna",
"User Activity": "Aktiviti Pengguna",
- "User Count": "",
+ "User Count": "Kiraan Pengguna",
"User Groups": "Kumpulan Pengguna",
"User location successfully retrieved.": "Lokasi pengguna berjaya diambil.",
"User menu": "Menu Pengguna",
- "User messages": "",
- "User not found.": "",
- "User Preview": "",
+ "User messages": "Mesej pengguna",
+ "User not found.": "Pengguna tidak dijumpai.",
+ "User Preview": "Pratonton Pengguna",
"User ratings (thumbs up/down)": "Penilaian Pengguna (ibu jari naik/turun)",
- "User Variables": "",
+ "User Variables": "Pemboleh Ubah Pengguna",
"User Webhooks": "Webhook Pengguna",
"Username": "Nama Pengguna",
"users": "pengguna",
"Users": "Pengguna",
"Uses DefaultAzureCredential to authenticate": "Menggunakan DefaultAzureCredential untuk pengesahan",
- "Uses defaults": "",
+ "Uses defaults": "Menggunakan lalai",
"Uses OAuth 2.1 Dynamic Client Registration": "Menggunakan Pendaftaran Klien Dinamik OAuth 2.1",
"Using Entire Document": "Menggunakan Seluruh Dokumen",
"Using Focused Retrieval": "Menggunakan Pengambilan Tertumpu",
"Using the default arena model with all models. Click the plus button to add custom models.": "Menggunakan model arena lalai dengan semua model. Klik butang tambah untuk menambah model tersuai.",
- "Value": "",
+ "Value": "Nilai",
"Valves": "Valves",
"Valves updated": "Valves dikemas kini",
"Valves updated successfully": "Valves berjaya dikemas kini",
- "variable": "pembolehubah",
- "Variable key": "",
- "Variable keys must be unique.": "",
- "Variable keys must use lowercase snake case.": "",
- "Variable value": "",
- "Vector Field": "",
+ "variable": "pemboleh ubah",
+ "Variable key": "Kunci pemboleh ubah",
+ "Variable keys must be unique.": "Kunci pemboleh ubah mestilah unik.",
+ "Variable keys must use lowercase snake case.": "Kunci pemboleh ubah mesti menggunakan format snake_case dengan huruf kecil.",
+ "Variable value": "Nilai pemboleh ubah",
+ "Vector Field": "Medan Vektor",
"Verify Connection": "Sahkan Sambungan",
"Version {{selectedVersion}} of {{totalVersions}}": "Versi {{selectedVersion}} daripada {{totalVersions}}",
"Version deleted": "Versi telah dipadam",
- "Vertical Layout": "",
- "Video player": "",
- "View channel": "",
- "View chat": "",
+ "Vertical Layout": "Susun Atur Menegak",
+ "Video player": "Pemain Video",
+ "View channel": "Lihat saluran",
+ "View chat": "Lihat chat",
"View Replies": "Lihat Balasan",
- "View Result from {{NAME}}": "",
+ "View Result from {{NAME}}": "Lihat hasil daripada {{NAME}}",
"View source: {{name}}": "Lihat sumber: {{name}}",
"View source: {{title}}": "Lihat sumber: {{title}}",
- "Viewport Pinned": "",
- "Viewport Unpinned": "",
+ "Viewport Pinned": "Viewport Disematkan",
+ "Viewport Unpinned": "Viewport Dinyahsematkan",
"Visibility": "Ketampakan",
"Visible": "Boleh Dilihat",
"Visible to all users": "Kelihatan kepada semua pengguna",
"Visual": "Visual",
- "vocabulary for a college entrance exam": "",
+ "vocabulary for a college entrance exam": "kosa kata untuk peperiksaan kemasukan kolej",
"Voice": "Suara",
"Voice Input": "Input Suara",
"Voice mode": "Mod Suara",
- "Wait for the current response to finish before compacting.": "",
- "Wait for the current response to finish before forking.": "",
- "Waiting for upload": "",
- "Waiting for upload...": "Menunggu pemuat...",
+ "Wait for the current response to finish before compacting.": "Tunggu sehingga respons semasa selesai sebelum memadatkan konteks.",
+ "Wait for the current response to finish before forking.": "Tunggu sehingga respons semasa selesai sebelum mencipta cabang.",
+ "Waiting for upload": "Menunggu untuk dimuat naik",
+ "Waiting for upload...": "Menunggu muat naik...",
"Warning": "Amaran",
"Warning:": "Amaran:",
- "Warning: Enabling this will allow users to run scheduled prompts automatically.": "Amaran: Mengaktifkan ini akan membenarkan pengguna menjalankan arahan berjadual secara automatik.",
+ "Warning: Enabling this will allow users to run scheduled prompts automatically.": "Amaran: Mengaktifkan ini akan membenarkan pengguna menjalankan gesaan berjadual secara automatik.",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Amaran: Mengaktifkan ini akan membenarkan pengguna memuat naik kod arbitrari pada pelayan.",
- "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Amaran: Pelaksanaan Jupyter membolehkan pelaksanaan kod arbitrari, menimbulkan risiko keselamatan yang teruk—teruskan dengan berhati-hati.",
+ "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Amaran: Pelaksanaan Jupyter membolehkan pelaksanaan kod arbitrari, yang menimbulkan risiko keselamatan serius—teruskan dengan amat berhati-hati.",
"We_day_of_week": "Rab",
"Web": "Web",
"Web API": "API Web",
"Web Search": "Carian Web",
- "Webhook": "",
- "Webhook deleted": "",
+ "Webhook": "Webhook",
+ "Webhook deleted": "Webhook dipadamkan",
"Webhook Name": "Nama Webhook",
- "Webhook saved": "",
+ "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": "",
+ "Week of": "Minggu",
"Weekly": "Mingguan",
- "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": "Mingguan pada",
+ "Welcome to your AI home.": "Selamat datang ke rumah 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.": "Apakah lima cara kreatif untuk menggunakan hasil seni anak-anak saya? Saya tidak mahu membuangnya, tetapi hasil seni itu sudah memenuhi ruang.",
"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:": "Apa yang TIDAK dikongsi:",
"What is shared:": "Apa yang dikongsi:",
"What's New in": "Apakah yang terbaru dalam",
"What's on your mind?": "Apa yang terlintas di fikiran anda?",
- "When": "Apabila",
- "Whisper (Local)": "Whisper (Local)",
+ "When": "Bila",
+ "Whisper (Local)": "Whisper (Setempat)",
"Who can share to this group": "Siapa yang boleh berkongsi kepada kumpulan ini",
"Why?": "Mengapa?",
"Width": "Lebar",
@@ -3458,46 +3480,46 @@
"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.": "Berfungsi bersama dengan top-k. Nilai yang lebih tinggi (contohnya, 0.95) akan menghasilkan teks yang lebih pelbagai, manakala nilai yang lebih rendah (contohnya, 0.5) akan menghasilkan teks yang lebih fokus dan konservatif.",
"Workspace": "Ruangan Kerja",
- "Workspace Models": "",
+ "Workspace Models": "Model Ruang Kerja",
"Workspace Permissions": "Kebenaran Ruangan Kerja",
"Write": "Tulis",
- "Write a summary in 50 words that summarizes {{topic}}.": "Tulis ringkasan dalam 50 patah perkataan yang meringkaskan [topik atau kata kunci].",
+ "Write a summary in 50 words that summarizes {{topic}}.": "Tulis ringkasan tentang {{topic}} dalam 50 patah perkataan.",
"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 kandungan arahan sistem (system prompt) model anda di sini\ncth.: Anda ialah Mario daripada Super Mario Bros dan bertindak sebagai pembantu.",
+ "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Tulis kandungan gesaan sistem model anda di sini\ncth.) Anda ialah Mario daripada Super Mario Bros, yang bertindak sebagai pembantu.",
"Yahoo": "Yahoo",
"Yandex": "Yandex",
- "Yearly": "",
+ "Yearly": "Tahunan",
"Yesterday": "Semalam",
"You": "Anda",
- "You are a sub-agent...": "",
+ "You are a sub-agent...": "Anda ialah subejen...",
"You are currently using a trial license. Please contact support to upgrade your license.": "Anda sedang menggunakan lesen percubaan. Sila hubungi sokongan untuk menaik taraf lesen anda.",
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Anda hanya boleh berbual dengan maksimum {{maxCount}} fail sekaligus.",
"You cannot upload an empty file.": "Anda tidak boleh memuat naik fail kosong.",
- "You do not have permission to edit this model": "Anda tidak mempunyai kebenaran untuk mengedit model ini.",
- "You do not have permission to edit this prompt.": "Anda tidak mempunyai kebenaran untuk menyunting arahan ini.",
- "You do not have permission to edit this skill.": "Anda tidak mempunyai kebenaran untuk mengedit kemahiran ini.",
- "You do not have permission to edit this tool": "Anda tidak mempunyai kebenaran untuk mengedit alat ini.",
- "You do not have permission to make this public": "Anda tidak mempunyai kebenaran untuk menjadikan ini awam.",
+ "You do not have permission to edit this model": "Anda tidak mempunyai kebenaran untuk menyunting model ini",
+ "You do not have permission to edit this prompt.": "Anda tidak mempunyai kebenaran untuk menyunting gesaan ini.",
+ "You do not have permission to edit this skill.": "Anda tidak mempunyai kebenaran untuk menyunting kemahiran ini.",
+ "You do not have permission to edit this tool": "Anda tidak mempunyai kebenaran untuk menyunting alat ini",
+ "You do not have permission to make this public": "Anda tidak mempunyai kebenaran untuk menjadikan ini awam",
"You do not have permission to send messages in this channel.": "Anda tidak mempunyai kebenaran untuk menghantar mesej dalam saluran ini.",
"You do not have permission to send messages in this thread.": "Anda tidak mempunyai kebenaran untuk menghantar mesej dalam utas ini.",
"You do not have permission to upload files to this knowledge base.": "Anda tidak mempunyai kebenaran untuk memuat naik fail ke pangkalan pengetahuan ini.",
"You do not have permission to upload files.": "Anda tidak mempunyai kebenaran untuk memuat naik fail.",
"You do not have permission to upload web content.": "Anda tidak mempunyai kebenaran untuk memuat naik kandungan 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 no archived conversations.": "Anda tidak mempunyai perbualan yang diarkibkan",
+ "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.": "Ruang kerja ini mempunyai lebih daripada 50 pengguna, yang biasanya menandakan penggunaan oleh organisasi. Open WebUI boleh digunakan secara percuma tanpa sekatan atau had tersembunyi, dan kami mahu mengekalkannya begitu.",
+ "You have no archived conversations.": "Anda tidak mempunyai perbualan yang diarkibkan.",
"You have no shared conversations.": "Anda tidak mempunyai perbualan yang dikongsi.",
- "You have shared this chat": "Anda telah berkongsi perbualan ini",
- "You're a helpful assistant.": "Anda seorang pembantu yang bagus",
- "You're now logged in.": "Anda kini telah log masuk.",
- "Your account status is currently pending activation.": "Status akaun anda ialah sedang menunggu pengaktifan.",
+ "You have shared this chat": "Anda telah berkongsi chat ini",
+ "You're a helpful assistant.": "Anda ialah pembantu yang sedia membantu.",
+ "You're now logged in.": "Anda kini telah login.",
+ "Your account status is currently pending activation.": "Akaun anda kini sedang menunggu pengaktifan.",
"Your browser does not support the audio tag.": "Pelayar anda tidak menyokong tag audio.",
"Your browser does not support the video tag.": "Pelayar anda tidak menyokong 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 sumbangan anda akan dihantar terus kepada pembangun 'plugin'; Open WebUI tidak mengambil sebarang peratusan keuntungan daripadanya. Walau bagaimanapun, platform pembiayaan yang dipilih mungkin mempunyai caj tersendiri.",
"Your message text or inputs": "Teks atau input mesej anda",
- "Your query will be sent to the configured web search provider.": "",
+ "Your query will be sent to the configured web search provider.": "Pertanyaan anda akan dihantar kepada penyedia carian web yang dikonfigurasi.",
"Your usage stats have been successfully synced.": "Statistik penggunaan anda telah berjaya disegerakkan.",
"YouTube": "YouTube",
- "YouTube video player": "",
- "Zoom in": "",
- "Zoom out": ""
+ "YouTube video player": "Pemain video YouTube",
+ "Zoom in": "Zum masuk",
+ "Zoom out": "Zum keluar"
}
From c1f245845ce516541d5225af85834ad90645e8a4 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:00:20 +0200
Subject: [PATCH 03/79] fix: MCP tool calls ignore
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER (#31641)
A tool call to an MCP server had no time limit, so a server that hung kept the chat waiting until a reverse proxy or the server itself closed the connection, even with AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER set. The call now stops after the configured number of seconds and the model sees the timeout as a tool error, which is how OpenAPI tool servers already behave. When the variable is unset it falls back to AIOHTTP_CLIENT_TIMEOUT, and with neither set (or a value of 0 or below) MCP tool calls still have no time limit.
Fixes #31640
---
backend/open_webui/utils/mcp/client.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/backend/open_webui/utils/mcp/client.py b/backend/open_webui/utils/mcp/client.py
index 29e67f04fbb9..35256b89b2a4 100644
--- a/backend/open_webui/utils/mcp/client.py
+++ b/backend/open_webui/utils/mcp/client.py
@@ -1,6 +1,7 @@
import asyncio
import logging
from contextlib import AsyncExitStack
+from datetime import timedelta
from typing import Optional
log = logging.getLogger(__name__)
@@ -116,7 +117,11 @@ async def call_tool(self, function_name: str, function_args: dict) -> Optional[d
if not self.session:
raise RuntimeError('MCP client is not connected.')
- result = await self.session.call_tool(function_name, function_args)
+ tool_call_timeout = None
+ if AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER is not None and AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER > 0:
+ tool_call_timeout = timedelta(seconds=AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER)
+
+ result = await self.session.call_tool(function_name, function_args, read_timeout_seconds=tool_call_timeout)
if not result:
raise Exception('No result returned from MCP tool call.')
From 6419eca3a271c86f7267833f363bbdd623f2e1ca Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:00:23 +0200
Subject: [PATCH 04/79] chore: bump pycrdt to 0.14.8 (#31636)
Bumps pycrdt from 0.13.1 to 0.14.8.
---
backend/requirements-slim.txt | 2 +-
backend/requirements.txt | 2 +-
pyproject.toml | 2 +-
uv.lock | 74 +++++++++++++++++------------------
4 files changed, 40 insertions(+), 40 deletions(-)
diff --git a/backend/requirements-slim.txt b/backend/requirements-slim.txt
index c688c89d23f3..e5f83c4faf99 100644
--- a/backend/requirements-slim.txt
+++ b/backend/requirements-slim.txt
@@ -36,7 +36,7 @@ aiosqlite==0.22.1
psycopg[binary]==3.3.4
alembic==1.18.4
-pycrdt==0.13.1
+pycrdt==0.14.8
redis==8.0.1
hiredis==3.4.2
diff --git a/backend/requirements.txt b/backend/requirements.txt
index adbc0e560ee8..d3050f6464e4 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -32,7 +32,7 @@ aiosqlite==0.22.1
psycopg[binary]==3.3.4
alembic==1.18.4
-pycrdt==0.13.1
+pycrdt==0.14.8
redis==8.0.1
hiredis==3.4.2
diff --git a/pyproject.toml b/pyproject.toml
index e410b2b788fd..776dc418ce9b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -38,7 +38,7 @@ dependencies = [
"psycopg[binary]==3.3.4",
"alembic==1.18.4",
- "pycrdt==0.13.1",
+ "pycrdt==0.14.8",
"redis==8.0.1",
"hiredis==3.4.2",
# "valkey-glide-sync==2.3.1", # optional: install manually if VECTOR_DB=valkey
diff --git a/uv.lock b/uv.lock
index 5ce2b3e15b77..990170537e14 100644
--- a/uv.lock
+++ b/uv.lock
@@ -2950,7 +2950,7 @@ requires-dist = [
{ name = "psycopg2-binary", marker = "extra == 'all'", specifier = "==2.9.12" },
{ name = "psycopg2-binary", marker = "extra == 'postgres'", specifier = "==2.9.12" },
{ name = "pyarrow", specifier = "==20.0.0" },
- { name = "pycrdt", specifier = "==0.13.1" },
+ { name = "pycrdt", specifier = "==0.14.8" },
{ name = "pydantic", specifier = "==2.13.4" },
{ name = "pydub", specifier = "==0.25.1" },
{ name = "pyjwt", extras = ["crypto"], specifier = "==2.13.0" },
@@ -3797,46 +3797,46 @@ wheels = [
[[package]]
name = "pycrdt"
-version = "0.13.1"
+version = "0.14.8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/e6/88/e0c1b145f25f02ae0b95ce98cfa653941fc3e13ec95b1c90a62cd717a932/pycrdt-0.13.1.tar.gz", hash = "sha256:3d888fc5dafe17d6f53a1430c5342cd58f0f704cafb6ff3f565e597c50d99934", size = 85504, upload-time = "2026-05-21T12:36:25.545Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/e8/3c/7d6c850fcbd7cf011c1818cf27c85c04c23a91c20c660c89f40658d51561/pycrdt-0.13.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:ab8e797a7e7658a4765acd25ca6c175e33327be4cecf6cbf6299bd13d4b7d5f5", size = 1702440, upload-time = "2026-05-21T12:34:39.488Z" },
- { url = "https://files.pythonhosted.org/packages/fe/ea/2a1a42358ad9a0fbca3a84193ea6ad5c965412e6b9175080a37c53026261/pycrdt-0.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc4eb42e3ccc7fa265a181c0f1b322f263ed367f456b5cc2b09981e5830b5d56", size = 948038, upload-time = "2026-05-21T12:34:41.011Z" },
- { url = "https://files.pythonhosted.org/packages/53/34/c2e08ddb3253ff53629ce3db23ec806b669b7015570588d5e526c811aed2/pycrdt-0.13.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6cc68323d1a3c7b7c7e5c595308b52d6ae6141709724b043cfd333f431d6d259", size = 961904, upload-time = "2026-05-21T12:34:42.528Z" },
- { url = "https://files.pythonhosted.org/packages/6d/96/ce1bd0827887b44cdb4f522dbde524b237bedafcf10de288e18169271248/pycrdt-0.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:28e3abb9a5c9642cd05a73871f58982d56a56aa86c3373e93c9c690cc187a683", size = 1135191, upload-time = "2026-05-21T12:34:44.391Z" },
- { url = "https://files.pythonhosted.org/packages/f2/71/4dd73ff84e1ed4f05328d09988551bed88c7e10d1bb0e2b0656ee6d4046c/pycrdt-0.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e24ff42e99aa67452b4bfec72d09de36425ec2eabc7e78d4c59ea671baef81e", size = 988852, upload-time = "2026-05-21T12:34:45.936Z" },
- { url = "https://files.pythonhosted.org/packages/d2/4c/da70355291570a1c61465791b2ee648457bef9dde62e66b1617349bf5d18/pycrdt-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689c3e1c100c86096802bc27356f8b686fea3abbd2e1641ae87783f68dd4081c", size = 957219, upload-time = "2026-05-21T12:34:47.411Z" },
- { url = "https://files.pythonhosted.org/packages/03/d5/0454874f4817b4a759b4bf9731511f452d404d8bf1d4a9a5fc30ab76c2d4/pycrdt-0.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0f49ad9d702c0ef09f8346e4cb445ca34d0a1760186178acb0fd9c7dcedd5a7d", size = 1057747, upload-time = "2026-05-21T12:34:49.044Z" },
- { url = "https://files.pythonhosted.org/packages/15/b3/ddcb2636e5c5d5efa5b52c87b772fe8708d62c423c5a84bd01b4cead706d/pycrdt-0.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0c07b7d7e6914900c2b878827e772a9f4226248d7dba098965c5bdd9b9aab062", size = 1123471, upload-time = "2026-05-21T12:34:50.477Z" },
- { url = "https://files.pythonhosted.org/packages/57/74/28e63a2e46a7cb4eef0ed9961b02f1f4bb15ef62ee27abe89e43ed5433c0/pycrdt-0.13.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:dd3b5e58ae6fe8acfeceeb10fd23a5778fdb67596c5411a16b5bf51bdab6b277", size = 1236330, upload-time = "2026-05-21T12:34:51.965Z" },
- { url = "https://files.pythonhosted.org/packages/34/5f/8b8fcc48a46a721c4c38ccd30a718a56e4eff282926b9dffe7c817e56aaa/pycrdt-0.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9ab6caa63565d4ba7f109126336ac1c30fbe146b25b16574669013e52c65feb5", size = 1232793, upload-time = "2026-05-21T12:34:53.59Z" },
- { url = "https://files.pythonhosted.org/packages/81/ea/59e0814910e181af50a3f3e20d68e005b5e2598aa6401812168ccedd11b1/pycrdt-0.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:23be7d711363b51324cdba90c1e67d8f5c4e37e14eb503c38a9b35de8b329be1", size = 1170011, upload-time = "2026-05-21T12:34:55.508Z" },
- { url = "https://files.pythonhosted.org/packages/57/a9/2c6fa5c160b328b08a21ab1c75caffdfce2a24bf0cf0edfd7c6f329ab1bf/pycrdt-0.13.1-cp311-cp311-win32.whl", hash = "sha256:6926f156e8a0e88c967a5b4bea2af1425054775943fc9e0be08f4c9523fba509", size = 696030, upload-time = "2026-05-21T12:34:57.473Z" },
- { url = "https://files.pythonhosted.org/packages/65/f0/036f521770e156e5250dc6a930516b0acf70482792a563afc9ac2cca133c/pycrdt-0.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:a65d09e383debe2a00d13a3e1415cd599037e0dbf3976adca8cc36483eafc1db", size = 756974, upload-time = "2026-05-21T12:34:58.898Z" },
- { url = "https://files.pythonhosted.org/packages/86/47/61ecc2f5a2d2127a00ffeb3eae5e515f7fc07e203883001cd0c5f8e2c319/pycrdt-0.13.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0269fefddef54f529ef360554ec7ac967d01ba22677c65fc155addbb5c4329d1", size = 1700474, upload-time = "2026-05-21T12:35:00.511Z" },
- { url = "https://files.pythonhosted.org/packages/cc/e5/595d8582952be13060556f2faa29bff2b10b9247011a1a5882240fea6f33/pycrdt-0.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:084fd1c3a680764a1717c638d26dd238a953b8a66801ce34d0f4041963c525cf", size = 942672, upload-time = "2026-05-21T12:35:01.979Z" },
- { url = "https://files.pythonhosted.org/packages/e4/0b/429b57dd1e0a1e8eb79ce8bbd97e1ecea8566c1ed7fea08f79bcd54ad0b0/pycrdt-0.13.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8fb8a417723c723764f4621e03df16e7a19e55ed28048b7015afa04cc4e71338", size = 958984, upload-time = "2026-05-21T12:35:03.625Z" },
- { url = "https://files.pythonhosted.org/packages/0f/a8/be64722f870b03cd8b50505567692f5615ebcc40c03b7dc7b1c1efe15547/pycrdt-0.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b69026155572547633af419d7e6da728aa53175b9df95b65a4850365ffc4d79", size = 1134053, upload-time = "2026-05-21T12:35:05.622Z" },
- { url = "https://files.pythonhosted.org/packages/e5/44/b5ba4ed6b2be26ded680a0a2115e749275f779c0db93d8bdc20dcf9f5874/pycrdt-0.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d5a4f4ff430a5ed71c33680ec69f6d914c12a4332ba67f4566c82688357046b", size = 984448, upload-time = "2026-05-21T12:35:07.104Z" },
- { url = "https://files.pythonhosted.org/packages/00/ec/7363504d395d6785f159830430e24ecb1e9d074e2ce364db39fbc104d94f/pycrdt-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:190819bf2eebb9153ae6cf35e62d09a57fd0de15176a5047c2cb27130f57381d", size = 954167, upload-time = "2026-05-21T12:35:08.794Z" },
- { url = "https://files.pythonhosted.org/packages/f8/83/46ab10d688add2a3dce155a3b3062f8cbf8080cd0b87b4e0f04cfeb1170b/pycrdt-0.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:425541aeb3c6809938685a680b21fecb09b352e7fb8a21a97e0742fa27cb8cb6", size = 1052431, upload-time = "2026-05-21T12:35:10.327Z" },
- { url = "https://files.pythonhosted.org/packages/fd/4d/015157ec60a82cedcf9322b55bb8cc0c31fe15bb0582f0644d7655b04d49/pycrdt-0.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ea52a06fc84bebd719f515ce9a590e8bc5fc58f2a6c262db1cd01d727cf253", size = 1118940, upload-time = "2026-05-21T12:35:12.303Z" },
- { url = "https://files.pythonhosted.org/packages/1e/82/c9cab9cfc73cfa87ad97580822274f3a51aba47f9432b8c95795dae84f7a/pycrdt-0.13.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:06066675f65e228c22ebf5e5bb1e79fe463f89832b48899b092259c206256880", size = 1233250, upload-time = "2026-05-21T12:35:14.013Z" },
- { url = "https://files.pythonhosted.org/packages/9d/64/9d9069e7572c8350206c315cf8431d50b03a8c7af8d8b8a4c19338d99fd5/pycrdt-0.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:29e99ae8c2c7eb31363af386f22221fb5b685710b7e665ac90a5f772c0dc3df5", size = 1226052, upload-time = "2026-05-21T12:35:15.688Z" },
- { url = "https://files.pythonhosted.org/packages/cf/c6/2f2b36043170c511b0284987ecb346fa7e90709712600c9e298219b58bd3/pycrdt-0.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:07692df4f1d493fabe7e337004a4cd671978833486f0d1dd481748f1f91350d2", size = 1167999, upload-time = "2026-05-21T12:35:17.532Z" },
- { url = "https://files.pythonhosted.org/packages/a2/14/d1dc34597666a491683a1fd61439f3350180d0bc53101effb465f56698e9/pycrdt-0.13.1-cp312-cp312-win32.whl", hash = "sha256:b4640674e88978cdd12ad531c6b73ac2d72697b854ca04c968113a36cb98c867", size = 693890, upload-time = "2026-05-21T12:35:19.148Z" },
- { url = "https://files.pythonhosted.org/packages/29/d5/2b84f8e3e6aae2632c6ee7351b73fa74093795ba24751ec582773d881ca3/pycrdt-0.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:6502dc5eae7f9489da534fc847d61c7bedcaf014c65fd46dbb4a30ca298594a7", size = 753915, upload-time = "2026-05-21T12:35:21.208Z" },
- { url = "https://files.pythonhosted.org/packages/04/4d/56a44130870221ff86bde308585e079254f0b44bcd4ee5776d924be85d16/pycrdt-0.13.1-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:1110cd4460afb0fdae5ff88a8356dbf0cc963904d6fbc222ea68f4f4e6b9dd84", size = 1708730, upload-time = "2026-05-21T12:36:10.465Z" },
- { url = "https://files.pythonhosted.org/packages/ee/85/d8779cfd4d288d4382bb148f13bb02e423983418616577dc1142eddd4073/pycrdt-0.13.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b864bef9c42a7c18c1652f31907b2eda68e18a87bcc33369e342e667c1b9381", size = 947592, upload-time = "2026-05-21T12:36:12.286Z" },
- { url = "https://files.pythonhosted.org/packages/d5/3a/5240398ec6adce9a7807de918c1dfd1325085eb07e1a32533085e9ff15f5/pycrdt-0.13.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:21e1a73cf7b28391b2f52461590f3be4262df811b0648e4faf7a1503abe2c8d0", size = 965927, upload-time = "2026-05-21T12:36:14.434Z" },
- { url = "https://files.pythonhosted.org/packages/f0/d8/7af8f8ee7e82987bf0b3bffb1f10b03715d47f929b4407c9566290c74d8d/pycrdt-0.13.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4fbb82675b0a6130cd7df1fe60c53ef02515d9f79f7c106f1bbb37fe2368239", size = 1132014, upload-time = "2026-05-21T12:36:16.728Z" },
- { url = "https://files.pythonhosted.org/packages/22/95/e56e7b4ffdd12824d0a78f8ebe31d150a806a23aee065dc83ad9b3497875/pycrdt-0.13.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7d2424598c2b960a92ae705b1e213ad65d83b3210774ba08cd1d5c246a294b3", size = 989719, upload-time = "2026-05-21T12:36:19.202Z" },
- { url = "https://files.pythonhosted.org/packages/ce/da/9154643a1d93b32d8cb16cc30a2eaaec3beb791fb4e240c84b2bc11a0d13/pycrdt-0.13.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69fc50d94b4adf6f87bcb7ce70beee1a9af2684e9a43bc46c04f7bf909cc5a05", size = 956173, upload-time = "2026-05-21T12:36:21.061Z" },
- { url = "https://files.pythonhosted.org/packages/af/c4/3058ea744cd72c89a982e5c9b5d85dedd6bd8b93602828759708403dd100/pycrdt-0.13.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dfec67ce79abc92d60cf5727dd58a762d6be361b550943d533a1407c73e62b4f", size = 1056620, upload-time = "2026-05-21T12:36:23.112Z" },
+sdist = { url = "https://files.pythonhosted.org/packages/c6/9f/540084c927f3ff2d22883abb722c6b9af1630b0ac31d7f4cf4ec4f1342df/pycrdt-0.14.8.tar.gz", hash = "sha256:45867f5ff08006d852d0cbb3e26b581977122b8f77dcd300359a16188b6cc931", size = 98177, upload-time = "2026-09-30T07:59:48.553Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/62/4c/e725ecfdd367cd21dc9a29569e3d692e5f342731da5fffd8eee6e0f5ed0a/pycrdt-0.14.8-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:dc8b17443acbeb1668e9e442e18f5f6bb5cad6e1904c3b9144d512b2489f3499", size = 1939220, upload-time = "2026-09-30T07:57:53.766Z" },
+ { url = "https://files.pythonhosted.org/packages/3a/5f/94b91aeec65371846c968b10c2b983e107ff51b1d2a774d03520cac16ffe/pycrdt-0.14.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d3f6694066aafdf0e7014af3a89dcc26db75619dd99259a002e6954b04c5e27", size = 1074712, upload-time = "2026-09-30T07:57:55.458Z" },
+ { url = "https://files.pythonhosted.org/packages/79/8c/6c9c397ea7fa7ce99c0ce3c947ad3415940568018c703949c2d7e0d4363d/pycrdt-0.14.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2564a348d8125d12c4891a724c1baf36601df2da3e0140abf29f40b65c5b4265", size = 1098768, upload-time = "2026-09-30T07:57:57.2Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/66/7c06bae084d1ccc6c20e42989e94d8931b8170e42452e47d6ccab16ec69b/pycrdt-0.14.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a55d9be59106b52f5b209e6a796994535f40a0f83af3aae75a5de18656248ebc", size = 1290230, upload-time = "2026-09-30T07:57:59.352Z" },
+ { url = "https://files.pythonhosted.org/packages/c4/29/a171029873629ca87f26df37249e0d582c75b22658008676b32832f0053c/pycrdt-0.14.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18bd511f71b6a2a90f3955f1d7cec6dfdba389527ef105fb2598cdd987365c5f", size = 1126302, upload-time = "2026-09-30T07:58:01.01Z" },
+ { url = "https://files.pythonhosted.org/packages/c9/ab/5aeef5e966d5fc51dcd87e971fce9d6fa2e03addd876f5e782fe6eb4473a/pycrdt-0.14.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98fa6226a9f402c00b6a4f0654f7ba032291cfff5c1dc7154dfdf0db74653fe", size = 1081298, upload-time = "2026-09-30T07:58:02.734Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/46/44ef9ebb9728216ade30cca1478e76205e5bc2c80577708b1b3fc477d228/pycrdt-0.14.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ddebf695a4cd846f2750fbfaf657233910a1a33daf280aa4cbde5f38a4c1e0e", size = 1212135, upload-time = "2026-09-30T07:58:04.461Z" },
+ { url = "https://files.pythonhosted.org/packages/65/2d/280a9c13b830bac82d690984730383bb8ad42ffdbdec2efd769690b9263a/pycrdt-0.14.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cb8f669ec1b8d5c783db4ad94a25da2df010b3ee0fa756e9025530ec57657433", size = 1250917, upload-time = "2026-09-30T07:58:06.104Z" },
+ { url = "https://files.pythonhosted.org/packages/5e/82/7af0c55470dd6563c106fac7162b442eb3262d665adbce4318a06bcc4c27/pycrdt-0.14.8-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:fa5a9531cc245253e7400eb684a3de357a6c44d5355cf51ec7aa603536a12b03", size = 1374029, upload-time = "2026-09-30T07:58:07.795Z" },
+ { url = "https://files.pythonhosted.org/packages/6e/c2/2abff768d3e63b161a989d6204f91598a1d53ffd9c01c95c0b41db30b73b/pycrdt-0.14.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dab9b0e5eb9abbdf20c9b8c159f16d681512aaf11c2b975c3b2f2f8fca8c7fbf", size = 1379658, upload-time = "2026-09-30T07:58:09.525Z" },
+ { url = "https://files.pythonhosted.org/packages/75/9c/6052266979223afd0b78074748d6b6fa1dfd981359e35531fd84a0e2d580/pycrdt-0.14.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fa7bb3e4cb0bc9d6c9d77567b141847aa5da90004d4c8e2b588d8ed1cb933ae2", size = 1309915, upload-time = "2026-09-30T07:58:11.189Z" },
+ { url = "https://files.pythonhosted.org/packages/e7/7b/8fd45190f55ac85ecb18695b8d89316c26f7fd13a54ee3ff056bb224868e/pycrdt-0.14.8-cp311-cp311-win32.whl", hash = "sha256:53942c09503d3c4c42f0b2c59b95dc5a80b18982871cdc57d04e7070c3700a5d", size = 828399, upload-time = "2026-09-30T07:58:12.94Z" },
+ { url = "https://files.pythonhosted.org/packages/e7/a8/80279dc4eff64d4609aec3dd1036898628a90305f0e0413d661a81640b7f/pycrdt-0.14.8-cp311-cp311-win_amd64.whl", hash = "sha256:180b587d9561eea6858cc503a288b44e8891fd21d8eb3fd02665728c48f6beeb", size = 884067, upload-time = "2026-09-30T07:58:14.741Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/dd/f6abc67c12ca906c977685f2fc8532b6b8d84c3b999089d78274fe1422d1/pycrdt-0.14.8-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:dcfdb452743ae02a3d1cff83bf7ef3a95de3e054732add89e3fa5ae5bbac3ba7", size = 1932928, upload-time = "2026-09-30T07:58:16.673Z" },
+ { url = "https://files.pythonhosted.org/packages/a3/b4/8073c090a2130cb09f455f75a9ed5b5e2e0feb39ca12af88357aca0b3e52/pycrdt-0.14.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0827c9809899f5ceb52572f5421b1344d019de8c13df8e5c7b085bce554c463c", size = 1066250, upload-time = "2026-09-30T07:58:18.435Z" },
+ { url = "https://files.pythonhosted.org/packages/2d/ef/0a6347ea10ade0991dc15ed5b138f88253d74e19c2ebea9f806f0888f12e/pycrdt-0.14.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:822a7b68ea6274c0df6ba8f4f52e8592d607cf5cc9ab88a91992165e9e3c1b9f", size = 1094538, upload-time = "2026-09-30T07:58:20.362Z" },
+ { url = "https://files.pythonhosted.org/packages/b4/d5/446e965ebe08f2f2737d041cd49314386b25bb0bfc9553b48d657f82c192/pycrdt-0.14.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d299bdbe7fb0bc2fc81ca6c734252d757b873b12ac604824129a6238740153a", size = 1281969, upload-time = "2026-09-30T07:58:22.491Z" },
+ { url = "https://files.pythonhosted.org/packages/c1/cd/f3b03152dee00f559e54faa0850bffcb817d4a9efb19f98f564bc36d8dbc/pycrdt-0.14.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:60d49df3203cd5e51197ff02898c474871618742d28a0da680831af4cc2ed854", size = 1124068, upload-time = "2026-09-30T07:58:24.289Z" },
+ { url = "https://files.pythonhosted.org/packages/da/24/158eea1800e1d12c6c05d2d321fa161da5ec896ce7ee466ac1354b28e2ce/pycrdt-0.14.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0496ade0ec92904f244c04c6791f9585aedab9065359e5f4c770522ea755695e", size = 1073691, upload-time = "2026-09-30T07:58:26.076Z" },
+ { url = "https://files.pythonhosted.org/packages/48/d2/f6dc68037c0312c0bfa59fcc2fe8c9522fafb20d6793d6cff947503c41e6/pycrdt-0.14.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f88f775836bd9a6897aaf9020f2df84e59ab9e3d669cd1dd8c111dc2239822d", size = 1205759, upload-time = "2026-09-30T07:58:28.155Z" },
+ { url = "https://files.pythonhosted.org/packages/19/01/4f543c17582ee3319952103c1dd6a4c5935119091070ee28bc7a6e83bb52/pycrdt-0.14.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5871a239cbf8e8428aeee9db7250ad01fbde0d3f73761f3fd99b25c12f363d4d", size = 1243621, upload-time = "2026-09-30T07:58:29.933Z" },
+ { url = "https://files.pythonhosted.org/packages/e2/06/3676b46449ab54e19c17dc51beba8ae5c80c5a34c0fee9ea84715cabe991/pycrdt-0.14.8-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:3d173c730424d777f8d315c8407e7f221d981ce233cc9450731abb347049d09a", size = 1372362, upload-time = "2026-09-30T07:58:31.738Z" },
+ { url = "https://files.pythonhosted.org/packages/cb/9a/cfb116e6283dc0ff32559a01be9732db5f579b2752041458751fb8ec2a27/pycrdt-0.14.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:725ed3241d0a748e374f1b8891d42b05b697c7d6cc65932cc6bf2f316146d6e6", size = 1372653, upload-time = "2026-09-30T07:58:33.475Z" },
+ { url = "https://files.pythonhosted.org/packages/be/bf/d14c1c8b39302df43342cd6f29027afa03e709cd49bc8ac5ee2135e8d0d7/pycrdt-0.14.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8822a1da5a9252b18465b10203780400babbdf75f3284858652490c6ea2a759b", size = 1299725, upload-time = "2026-09-30T07:58:35.432Z" },
+ { url = "https://files.pythonhosted.org/packages/65/52/a4b61c0edfdf136ef3e1c1a9153e08c61ae2e5143e2597a6f9df58bd533d/pycrdt-0.14.8-cp312-cp312-win32.whl", hash = "sha256:29b5689393acb6b9475f2e5ea122e80b5eb1a96c6cbb9f362cfb44cd4279f3e4", size = 822498, upload-time = "2026-09-30T07:58:37.599Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/da/f5108de83a48b62ae289802e751e5bd98189e1e425adf98dbd2d403ed719/pycrdt-0.14.8-cp312-cp312-win_amd64.whl", hash = "sha256:ff7c417c59e2bd72bea576323a3042017313eddebc5dd06c153a38a6016b80ba", size = 877355, upload-time = "2026-09-30T07:58:39.42Z" },
+ { url = "https://files.pythonhosted.org/packages/95/0c/1c419aea13103e8c6296eea95f9dc09763ee58f98edf707e417a6f0935c1/pycrdt-0.14.8-pp311-pypy311_pp73-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:49e4de3e62bfa05404ea6dea5d850a8102a0a73cf02eca434807825c831d2e61", size = 1953141, upload-time = "2026-09-30T07:59:33.769Z" },
+ { url = "https://files.pythonhosted.org/packages/45/fd/dafeeeae019969dab168d20b93efe9b62f34aa30acaed841662897f02a41/pycrdt-0.14.8-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e66c0aef0a32f8d8d86cfdfa84d132ab14a651ffdbc4d0c63e6215e5d1fe73ee", size = 1082192, upload-time = "2026-09-30T07:59:35.934Z" },
+ { url = "https://files.pythonhosted.org/packages/0f/05/62982574024283afc246f743f760d2df1230fa40c353f5577ffd7733c06a/pycrdt-0.14.8-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25294f8eb74e4006ff4e78588616924e40c9c8ba8f33444154ad4616adcbe041", size = 1103067, upload-time = "2026-09-30T07:59:38.116Z" },
+ { url = "https://files.pythonhosted.org/packages/78/63/aa0022807dc71828cba605111814f31fa09ff5a18da0c6a3729a9571fde2/pycrdt-0.14.8-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01480e703423f981bfedfb1fcf32caad37a67c706e5b228e90dade9f97cca33b", size = 1290942, upload-time = "2026-09-30T07:59:40.501Z" },
+ { url = "https://files.pythonhosted.org/packages/2e/8c/a59de72336786189d43bf87c2c3532f6a9c19efb323d24a88e425b864dff/pycrdt-0.14.8-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b741a54351db58642fe310f193dd27db6ef67fe75ab5d0b6b0e25d805ecb561", size = 1133036, upload-time = "2026-09-30T07:59:42.521Z" },
+ { url = "https://files.pythonhosted.org/packages/e1/95/9c5fefeb1dc14ac654cab67210ce37d09e1ae88a615f79c560d4cc033597/pycrdt-0.14.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:507adbe13e15d0ea871349156cc619e7c9797789098c0f70547f5bc21387a9cf", size = 1089400, upload-time = "2026-09-30T07:59:44.564Z" },
+ { url = "https://files.pythonhosted.org/packages/1f/40/f7e69b241c492051304d5310d65ab867a7e0d2e359fa5675ee2304ecadbb/pycrdt-0.14.8-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8dabcd216adedee5a6fa5c2175d8a377831eeafe5b68f598939467b3ba51c5b4", size = 1221648, upload-time = "2026-09-30T07:59:46.568Z" },
]
[[package]]
From e26da4307661e69f57336fee7cee4339e391e0e8 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:01:42 +0200
Subject: [PATCH 05/79] fix: automation still shows "Last run Never" after "Run
now" (#31583)
* fix: automation still shows "Last run Never" after "Run now"
Running an automation with "Run now" added the run to its history, but the automation page and the Automations list kept showing "Last run Never" (or the time of the last scheduled run). Only scheduled runs recorded a last run time. A manual run now records it too, so the automation page and the Automations list show the time of the run you just started.
Fixes #31580
* fix: show the new last run time right after Run now
The automation page now takes the automation the server returns after Run now, so the last run time updates on the spot and no reload is needed.
---
backend/open_webui/models/automations.py | 9 +++++++++
backend/open_webui/routers/automations.py | 1 +
src/lib/components/automations/AutomationEditor.svelte | 1 +
3 files changed, 11 insertions(+)
diff --git a/backend/open_webui/models/automations.py b/backend/open_webui/models/automations.py
index 954026cfc8c4..0aab02e5f697 100644
--- a/backend/open_webui/models/automations.py
+++ b/backend/open_webui/models/automations.py
@@ -244,6 +244,15 @@ async def update_by_id(
await db.commit()
return AutomationModel.model_validate(row)
+ async def update_last_run_at(self, id: str, db: Optional[AsyncSession] = None) -> Optional[AutomationModel]:
+ async with get_async_db_context(db) as db:
+ row = await db.get(Automation, id)
+ if not row:
+ return None
+ row.last_run_at = int(time.time_ns())
+ await db.commit()
+ return AutomationModel.model_validate(row)
+
async def clear_folder_ids(
self,
user_id: str,
diff --git a/backend/open_webui/routers/automations.py b/backend/open_webui/routers/automations.py
index 4b44a8b8ed21..f5ab9b9536ce 100644
--- a/backend/open_webui/routers/automations.py
+++ b/backend/open_webui/routers/automations.py
@@ -341,6 +341,7 @@ async def run_automation_by_id(
await check_automations_permission(request, user)
automation = await Automations.get_by_id(id, db=db)
check_automation_access(automation, user)
+ automation = await Automations.update_last_run_at(automation.id, db=db)
asyncio.create_task(execute_automation(request.app, automation))
await publish_event(
request,
diff --git a/src/lib/components/automations/AutomationEditor.svelte b/src/lib/components/automations/AutomationEditor.svelte
index e71bb4e9cf72..821efc1eecc6 100644
--- a/src/lib/components/automations/AutomationEditor.svelte
+++ b/src/lib/components/automations/AutomationEditor.svelte
@@ -167,6 +167,7 @@
return null;
});
if (res) {
+ automation = res;
toast.success($i18n.t('Automation triggered'));
setTimeout(() => loadRuns(false), 2000);
}
From 028dab8f1fea8e6719af256adeea2df472c3a8ae Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:02:21 +0200
Subject: [PATCH 06/79] fix: apply the Channels permission to real-time channel
messages (#31578)
Real-time channel messages are now only delivered to users who have the Channels permission set in the admin user permission settings.
---
backend/open_webui/socket/main.py | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py
index f157ed2f81ba..dbfb0f417da5 100644
--- a/backend/open_webui/socket/main.py
+++ b/backend/open_webui/socket/main.py
@@ -36,6 +36,7 @@
from open_webui.models.access_grants import AccessGrants
from open_webui.models.channels import Channels
from open_webui.models.chats import Chats
+from open_webui.models.config import Config
from open_webui.models.folders import Folders
from open_webui.models.notes import Notes, NoteUpdateForm
from open_webui.models.users import UserNameResponse, Users
@@ -392,8 +393,12 @@ async def enter_room_for_users(room: str, user_ids: list[str]):
user_ids (list[str]): The target user's IDs.
"""
try:
- for user_id in user_ids:
- session_ids = get_session_ids_from_room(f'user:{user_id}')
+ default_permissions = await Config.get('user.permissions')
+ for user in await Users.get_users_by_user_ids(user_ids):
+ if user.role != 'admin' and not await has_permission(user.id, 'features.channels', default_permissions):
+ continue
+
+ session_ids = get_session_ids_from_room(f'user:{user.id}')
for sid in session_ids:
await sio.enter_room(sid, room)
except Exception as e:
@@ -501,7 +506,7 @@ async def user_join(sid, data):
await sio.enter_room(sid, f'user:{user.id}')
# Join all the channels only if user has channels permission
- if user.role == 'admin' or await has_permission(user.id, 'features.channels'):
+ if user.role == 'admin' or await has_permission(user.id, 'features.channels', await Config.get('user.permissions')):
channels = await Channels.get_channels_by_user_id(user.id)
log.debug('channels=%r', channels)
for channel in channels:
@@ -533,7 +538,7 @@ async def join_channel(sid, data):
return
# Join all the channels only if user has channels permission
- if user.role == 'admin' or await has_permission(user.id, 'features.channels'):
+ if user.role == 'admin' or await has_permission(user.id, 'features.channels', await Config.get('user.permissions')):
channels = await Channels.get_channels_by_user_id(user.id)
log.debug('channels=%r', channels)
for channel in channels:
From 9b45bedeaf9b7aefa91c2ce0538ba8c46410ba9e Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:02:37 +0200
Subject: [PATCH 07/79] fix: check the Channels permission when a channel
automation runs (#31577)
An automation that posts into a channel now only runs when the user who created it has the Channels permission.
---
backend/open_webui/utils/automations.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/backend/open_webui/utils/automations.py b/backend/open_webui/utils/automations.py
index be5d6868f1df..d6c0f4dfe45a 100644
--- a/backend/open_webui/utils/automations.py
+++ b/backend/open_webui/utils/automations.py
@@ -261,6 +261,13 @@ async def _execute_channel_automation(
if not channel_id or not await Config.get('channels.enable'):
raise ValueError('Channel not found')
+ from open_webui.utils.access_control import has_permission
+
+ if user.role != 'admin' and not await has_permission(
+ user.id, 'features.channels', await Config.get('user.permissions')
+ ):
+ raise ValueError('Owner no longer permitted to use channels')
+
model = getattr(app.state, 'MODELS', {}).get(model_id, {})
request = _build_request(app, token=token)
From fa66b0f306616664fa33f4f0ffa6c2f67769a06c Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:03:01 +0200
Subject: [PATCH 08/79] fix: background sub-agent and timer replies only show
in the open chat after a page reload (#31576)
When a sub-agent running in the background finished, or a timer the model set went off, the result and the model's follow-up reply were saved but did not show in the chat the user had open. They only appeared after a manual page reload. They now show in the open chat as soon as they arrive.
Fixes #31566
---
backend/open_webui/utils/subagents.py | 1 +
backend/open_webui/utils/timers.py | 1 +
2 files changed, 2 insertions(+)
diff --git a/backend/open_webui/utils/subagents.py b/backend/open_webui/utils/subagents.py
index 13b9699216ce..f020e0cd942b 100644
--- a/backend/open_webui/utils/subagents.py
+++ b/backend/open_webui/utils/subagents.py
@@ -219,6 +219,7 @@ async def process_pending_internal_messages(
history['messages'] = messages
history['currentId'] = assistant_message_id
chat.chat = {**(chat.chat or {}), 'history': history}
+ chat.current_message_id = assistant_message_id
chat.updated_at = int(time.time())
await db.commit()
diff --git a/backend/open_webui/utils/timers.py b/backend/open_webui/utils/timers.py
index 15a6b898db59..c2a91139efca 100644
--- a/backend/open_webui/utils/timers.py
+++ b/backend/open_webui/utils/timers.py
@@ -351,6 +351,7 @@ async def execute_due_timer(app, timer_id: str, claim_id: str | None = None) ->
parent.chat = parent_chat
history['currentId'] = assistant_message_id
+ parent.current_message_id = assistant_message_id
parent.updated_at = int(time.time())
timer_row = await db.get(Chat, timer_id)
if timer_row:
From 3d70d43a1c929f6bb8162a82feba8facb396794e Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:03:32 +0200
Subject: [PATCH 09/79] fix: members can be added to or removed from a direct
message through the API (#31575)
The person who started a direct message could add or remove people through the API, although the app only offers this in group channels. Someone added this way could read the whole earlier conversation, and because the original pair no longer matched the conversation, their next message opened a second, empty direct message. Changing the members of a direct message now answers with a 403.
Fixes #31570
---
backend/open_webui/routers/channels.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/backend/open_webui/routers/channels.py b/backend/open_webui/routers/channels.py
index c9d38bf2ced3..2a16e23be250 100644
--- a/backend/open_webui/routers/channels.py
+++ b/backend/open_webui/routers/channels.py
@@ -642,6 +642,9 @@ async def add_members_by_id(
if channel.user_id != user.id and user.role != 'admin':
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())
+ if channel.type == 'dm':
+ raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())
+
try:
memberships = await Channels.add_members_to_channel(
channel.id, user.id, form_data.user_ids, form_data.group_ids, db=db
@@ -686,9 +689,12 @@ async def remove_members_by_id(
if channel.user_id != user.id and user.role != 'admin':
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())
+ if channel.type == 'dm':
+ raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())
+
try:
deleted = await Channels.remove_members_from_channel(channel.id, form_data.user_ids, db=db)
- if channel.type in ['group', 'dm']:
+ if channel.type == 'group':
await leave_room_for_users(f'channel:{channel.id}', form_data.user_ids)
await publish_event(
From c488f60e8bb3f1c2d4bf2a8220114d1820ba6602 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:05:21 +0200
Subject: [PATCH 10/79] fix: temporary chats save sub-agent conversations on
the server (#31573)
In a temporary chat, when the model handed a task to a sub-agent, the sub-agent's conversation with the task and its answer was saved on the server, although a temporary chat should leave nothing behind. The model is no longer offered sub-agents in temporary chats.
Fixes #31567
---
backend/open_webui/utils/tools.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py
index 7bd6a8dd69e6..120bbb39b4ed 100644
--- a/backend/open_webui/utils/tools.py
+++ b/backend/open_webui/utils/tools.py
@@ -101,7 +101,7 @@
write_note,
)
from open_webui.utils.access_control import has_access, has_connection_access, has_permission
-from open_webui.utils.chat_id import is_saved_chat_id
+from open_webui.utils.chat_id import is_saved_chat_id, is_temporary_chat_id
from open_webui.utils.headers import (
bearer_auth_header,
get_custom_headers,
@@ -650,6 +650,7 @@ async def has_user_chat_permission(permission_key: str) -> bool:
and config.get('subagents.enable')
and getattr(request.state, 'internal', False) is not True
and getattr(request.state, 'direct', False) is not True
+ and not is_temporary_chat_id(metadata.get('chat_id'))
):
builtin_functions.extend([delegate_task, timer])
From b6dfa3799d19315f416da0b66b0e723277cc0e84 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:05:45 +0200
Subject: [PATCH 11/79] fix: chat links in finished and failed webhook
notifications open a 404 (#31572)
The link in "chat finished" and "chat failed" webhook notifications was missing the `/c/` part of the chat address, so clicking it opened a 404 page. The link is sent as `/c/` again and opens the chat.
Fixes #31565
---
backend/open_webui/utils/notifications.py | 6 ------
1 file changed, 6 deletions(-)
diff --git a/backend/open_webui/utils/notifications.py b/backend/open_webui/utils/notifications.py
index 8b6f090b4c5c..a35ad9b88fbc 100644
--- a/backend/open_webui/utils/notifications.py
+++ b/backend/open_webui/utils/notifications.py
@@ -268,9 +268,6 @@ def _notification_webhook_content(event: Any) -> tuple[str, str, dict[str, Any],
title = str(data.get('title') or event.message or 'Chat finished')
content = str(data.get('message') or '')
url = str(data.get('url') or '')
- chat_id = str(data.get('chat_id') or '')
- if chat_id and url.endswith(f'/c/{chat_id}'):
- url = f'{url[: -len(f"/c/{chat_id}")].rstrip("/")}/{chat_id}'
body = '\n'.join(part for part in (content, url) if part)
return (
f'**{title}**',
@@ -288,9 +285,6 @@ def _notification_webhook_content(event: Any) -> tuple[str, str, dict[str, Any],
title = str(event.message or 'Chat failed')
content = str(data.get('message') or '')
url = str(data.get('url') or '')
- chat_id = str(data.get('chat_id') or '')
- if chat_id and url.endswith(f'/c/{chat_id}'):
- url = f'{url[: -len(f"/c/{chat_id}")].rstrip("/")}/{chat_id}'
body = '\n'.join(part for part in (content, url) if part)
return (
f'**{title}**',
From 6a2aad92f2049657915e33b78a60cd170407eab9 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:07:49 +0200
Subject: [PATCH 12/79] fix: SSO login failures show the email/password error
(#31629)
When signing in through an OAuth/OIDC provider failed, for example because the provider denied access, the account had no email or its email domain was not allowed, the login page told the user their email or password was wrong, even though they never typed one. Every such failure now shows "Sign-in with your identity provider failed. Please contact your administrator for assistance." The text is the same for every cause so it does not reveal which check failed, and the exact reason is still written to the server log as a warning.
Fixes #31627
---
backend/open_webui/constants.py | 1 +
backend/open_webui/utils/oauth.py | 18 +++++++++---------
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/backend/open_webui/constants.py b/backend/open_webui/constants.py
index c6c78de35a0a..2e5b0ff60c70 100644
--- a/backend/open_webui/constants.py
+++ b/backend/open_webui/constants.py
@@ -58,6 +58,7 @@ def __str__(self) -> str:
INVALID_TOKEN = 'Your session has expired or the token is invalid. Please sign in again.'
INVALID_CRED = 'The email or password provided is incorrect. Please check for typos and try logging in again.'
+ OAUTH_LOGIN_FAILED = 'Sign-in with your identity provider failed. Please contact your administrator for assistance.'
INVALID_EMAIL_FORMAT = "The email format you entered is invalid. Please double-check and make sure you're using a valid email address (e.g., yourname@example.com)."
INCORRECT_PASSWORD = 'The password provided is incorrect. Please check for typos and try again.'
INVALID_TRUSTED_HEADER = (
diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py
index 061737a35b19..281d352716e8 100644
--- a/backend/open_webui/utils/oauth.py
+++ b/backend/open_webui/utils/oauth.py
@@ -1917,7 +1917,7 @@ async def handle_callback(self, request, provider, response, db=None):
detailed_error,
exc_info=True,
)
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
except Exception as e:
detailed_error = _build_oauth_callback_error_message(e)
log.warning(
@@ -1926,7 +1926,7 @@ async def handle_callback(self, request, provider, response, db=None):
detailed_error,
exc_info=True,
)
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
# Try to get userinfo from the token first, some providers include it there
user_data: UserInfo = token.get('userinfo')
@@ -1949,7 +1949,7 @@ async def handle_callback(self, request, provider, response, db=None):
user_data = user_data['data']
if not user_data:
log.warning('OAuth callback failed for provider %s, user data is missing', provider)
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
# Extract the "sub" claim, using custom claim if configured
if auth_config.OAUTH_SUB_CLAIM:
@@ -1959,7 +1959,7 @@ async def handle_callback(self, request, provider, response, db=None):
sub = user_data.get(OAUTH_PROVIDERS[provider].get('sub_claim', 'sub'))
if not sub:
log.warning(f'OAuth callback failed, sub is missing: {user_data}')
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
sub = str(sub)
oauth_data = {}
@@ -1994,18 +1994,18 @@ async def handle_callback(self, request, provider, response, db=None):
email = primary_email
else:
log.warning('No primary email found in GitHub response')
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
else:
log.warning('Failed to fetch GitHub email')
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
except Exception as e:
log.warning(f'Error fetching GitHub email: {e}')
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
elif ENABLE_OAUTH_EMAIL_FALLBACK:
email = f'{provider}@{sub}.local'
else:
log.warning(f'OAuth callback failed, email is missing: {user_data}')
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
email = email.lower()
# If allowed domains are configured, check if the email domain is in the list
@@ -2014,7 +2014,7 @@ async def handle_callback(self, request, provider, response, db=None):
and email.split('@')[-1] not in auth_config.OAUTH_ALLOWED_DOMAINS
):
log.warning(f'OAuth callback failed, e-mail domain is not in the list of allowed domains: {user_data}')
- raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_CRED)
+ raise HTTPException(400, detail=ERROR_MESSAGES.OAUTH_LOGIN_FAILED)
# Check if the user exists
user = await Users.get_user_by_oauth_sub(provider, sub, db=db)
From b4ebd0d62fccd902484e861015ef9fc384987338 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:08:48 +0200
Subject: [PATCH 13/79] refac(hardening): apply the same safety checks to
generated image downloads (#31623)
When an image generation backend returns a link instead of the image itself, the download now goes through the same safety checks used for other external image downloads. Links on the configured ComfyUI address are still trusted as before, so a ComfyUI server on a local network keeps working.
---
backend/open_webui/routers/images.py | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py
index c894f2c65148..28a037a99302 100644
--- a/backend/open_webui/routers/images.py
+++ b/backend/open_webui/routers/images.py
@@ -7,6 +7,7 @@
import mimetypes
import re
import uuid
+from contextlib import nullcontext
from pathlib import Path
from types import SimpleNamespace
from typing import Optional
@@ -488,14 +489,18 @@ async def get_image_data(data: str, headers=None, trusted_base_url: str | None =
# that would follow arbitrary redirects.
if trusted_base_url and _is_same_origin(data, trusted_base_url):
log.debug('Skipping URL validation for trusted backend: %s', data)
+ session_context = nullcontext(await get_session())
else:
await asyncio.to_thread(validate_url, data)
- session = await get_session()
- async with session.get(
- data,
- headers=headers,
- ssl=AIOHTTP_CLIENT_SESSION_SSL,
- ) as r:
+ session_context = get_ssrf_safe_session()
+ async with (
+ session_context as session,
+ session.get(
+ data,
+ headers=headers,
+ ssl=AIOHTTP_CLIENT_SESSION_SSL,
+ ) as r,
+ ):
r.raise_for_status()
content_type = r.headers.get('content-type', '')
if content_type.split('/')[0] == 'image':
From d3dde3609db20e8f5086d1cb4311db6f70cf6854 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:09:03 +0200
Subject: [PATCH 14/79] fix: audit log records new passwords in plain text
(#31622)
With request auditing turned on, the audit log only masked fields named exactly "password". The new password from a password change, and passwords entered in admin settings such as YaCy or Jupyter, were written to the log as-is. Any field whose name ends in "password", in any letter case, is now replaced with asterisks.
---
backend/open_webui/utils/audit.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/backend/open_webui/utils/audit.py b/backend/open_webui/utils/audit.py
index 7354b2c64130..177036acb617 100644
--- a/backend/open_webui/utils/audit.py
+++ b/backend/open_webui/utils/audit.py
@@ -282,11 +282,12 @@ async def _log_audit_entry(self, request: Request, context: AuditContext):
response_body = context.response_body.decode('utf-8', errors='replace')
# Redact sensitive information
- if 'password' in request_body:
+ if 'password' in request_body.lower():
request_body = re.sub(
- r'"password":\s*"(.*?)"',
- '"password": "********"',
+ r'"(\w*password)":\s*".*?"',
+ r'"\1": "********"',
request_body,
+ flags=re.IGNORECASE,
)
entry = AuditLogEntry(
From 2062231f9cd69ea62556ec7682b7c673cf08987a Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:09:34 +0200
Subject: [PATCH 15/79] fix: apply the usual login check when the app loads its
settings (#31621)
Loading the app's settings now uses the same login check as every other request, so a session that is no longer valid gets the logged-out settings.
---
backend/open_webui/main.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py
index ecba6407f342..da2eea353d42 100644
--- a/backend/open_webui/main.py
+++ b/backend/open_webui/main.py
@@ -221,6 +221,7 @@
get_http_authorization_cred,
get_license_data,
get_verified_user,
+ is_valid_token,
)
from open_webui.utils.chat import (
chat_completed as chat_completed_handler,
@@ -2242,7 +2243,7 @@ async def get_app_config(request: Request):
status_code=status.HTTP_401_UNAUTHORIZED,
detail='Invalid token',
)
- if data is not None and 'id' in data:
+ if data is not None and 'id' in data and await is_valid_token(data, request.app.state.redis):
user = await Users.get_user_by_id(data['id'])
onboarding = False
From 8b1ae1d331d96bdfac3a51f09a2bcbba3b876358 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:10:48 +0200
Subject: [PATCH 16/79] fix: renaming a folder with Enter saves it twice
(#31584)
Renaming a folder in the sidebar and pressing Enter sent the rename to the server twice and showed "Folder updated successfully" twice, because Enter saved the name and closing the text field saved it again. Enter now just closes the text field, which saves the new name once and shows one confirmation.
Fixes #31582
---
src/lib/components/layout/Sidebar/RecursiveFolder.svelte | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/lib/components/layout/Sidebar/RecursiveFolder.svelte b/src/lib/components/layout/Sidebar/RecursiveFolder.svelte
index 79c76986637f..e8bdf7e8940b 100644
--- a/src/lib/components/layout/Sidebar/RecursiveFolder.svelte
+++ b/src/lib/components/layout/Sidebar/RecursiveFolder.svelte
@@ -835,8 +835,7 @@
}}
on:keydown={(e) => {
if (e.key === 'Enter') {
- updateHandler({ name });
- edit = false;
+ e.currentTarget.blur();
}
}}
class="w-full h-full bg-transparent outline-hidden"
From 321a24dfea226f1171b8f0b514d763e083dd12e5 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:19:29 +0200
Subject: [PATCH 17/79] fix: non-English text is missed by searches and counted
six times against size limits (#31615)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
With ENABLE_ORJSON off (the default), non-English letters were saved to the database as escape codes, so "Ü" was stored as \u00dc. Searches that ignore upper and lower case compare against that saved text, so they missed any match that differs only in the case of a non-English letter: filtering models by the tag "Überblick" found nothing on Postgres, and searching automations for "отчёт" missed a prompt containing "Отчёт" on SQLite and Postgres. The 100,000 character size limit for user and chat variables counted the escape codes too, so Cyrillic or Chinese variables were refused as too large (or chat variables silently came out empty in the system prompt) at about a sixth of that size. Non-English text is now saved as written, which is how it is already saved with ENABLE_ORJSON on, so nothing changes for those instances, and the limit counts real characters. Anything saved before this keeps the escape codes until it is next edited.
---
backend/open_webui/internal/db.py | 4 ++--
backend/open_webui/utils/chat_variables.py | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/backend/open_webui/internal/db.py b/backend/open_webui/internal/db.py
index e2f523cfc233..ed691663fbef 100644
--- a/backend/open_webui/internal/db.py
+++ b/backend/open_webui/internal/db.py
@@ -134,7 +134,7 @@ class JSONField(types.TypeDecorator): # TEXT-backed JSON storage
cache_ok = True
def process_bind_param(self, value: _T | None, dialect: Dialect) -> Any:
- return JSONCodec.dumps(value) if value is not None else None
+ return JSONCodec.dumps(value, ensure_ascii=False) if value is not None else None
def process_result_value(self, value: _T | None, dialect: Dialect) -> Any:
return JSONCodec.loads(value) if value is not None else None
@@ -265,7 +265,7 @@ def _json_codec_kwargs(kwargs: dict) -> dict:
Unlike ``JSONField``, those serialize through the engine, which otherwise uses
stdlib ``json``. With ``ENABLE_ORJSON`` off JSONCodec is stdlib ``json`` anyway.
"""
- kwargs.setdefault('json_serializer', JSONCodec.dumps)
+ kwargs.setdefault('json_serializer', lambda value: JSONCodec.dumps(value, ensure_ascii=False))
kwargs.setdefault('json_deserializer', JSONCodec.loads)
return kwargs
diff --git a/backend/open_webui/utils/chat_variables.py b/backend/open_webui/utils/chat_variables.py
index c1776f333fb5..aea222ddcdfd 100644
--- a/backend/open_webui/utils/chat_variables.py
+++ b/backend/open_webui/utils/chat_variables.py
@@ -185,7 +185,7 @@ def validate_user_variables(variables: Any) -> dict[str, str]:
raise ChatVariablesError('User variables must be an object.')
try:
- if len(JSONCodec.dumps(variables)) > MAX_VARIABLES_JSON_LENGTH:
+ if len(JSONCodec.dumps(variables, ensure_ascii=False)) > MAX_VARIABLES_JSON_LENGTH:
raise ChatVariablesError('User variables are too large.')
except TypeError:
raise ChatVariablesError('User variables must be JSON serializable.')
@@ -214,7 +214,7 @@ def validate_chat_variables(
variables = normalize_chat_variables(variables)
try:
- if len(JSONCodec.dumps(variables)) > MAX_VARIABLES_JSON_LENGTH:
+ if len(JSONCodec.dumps(variables, ensure_ascii=False)) > MAX_VARIABLES_JSON_LENGTH:
raise ChatVariablesError('Chat variables are too large.')
except TypeError:
raise ChatVariablesError('Chat variables must be JSON serializable.')
From 6d409da9d290d93129e94becab49230d463aad84 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:19:53 +0200
Subject: [PATCH 18/79] refac: apply the Notes permission to live note editing
(#31552)
Opening a note for live collaborative editing now follows the same Notes permission as the rest of the Notes feature.
---
backend/open_webui/socket/main.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py
index dbfb0f417da5..b901c658c4b9 100644
--- a/backend/open_webui/socket/main.py
+++ b/backend/open_webui/socket/main.py
@@ -559,6 +559,11 @@ async def join_note(sid, data):
if not user:
return
+ if user.role != 'admin' and not await has_permission(
+ user.id, 'features.notes', await Config.get('user.permissions')
+ ):
+ return
+
note = await Notes.get_note_by_id(data['note_id'])
if not note:
log.error(f'Note {data["note_id"]} not found for user {user.id}')
@@ -692,6 +697,11 @@ async def ydoc_document_join(sid, data):
document_id = normalize_document_id(data['document_id'])
if document_id.startswith('note:'):
+ if user.get('role') != 'admin' and not await has_permission(
+ user.get('id'), 'features.notes', await Config.get('user.permissions')
+ ):
+ return
+
note_id = document_id.split(':')[1]
note = await Notes.get_note_by_id(note_id)
if not note:
From 288bf91f73b9b1bc0c1a6b9d2700b108e50742df Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:24:03 +0200
Subject: [PATCH 19/79] fix: tool prompts time out when the user's tab is on
another instance (#31620)
With WEBSOCKET_MANAGER=redis and several instances or workers, an instance only subscribed to Redis once a browser tab had connected to it. Until then, when a tool or Function asked the user something (a confirmation or an input dialog) and the user's tab was connected to another instance, the user's reply never reached the tool and it waited until it timed out. Every instance now subscribes at startup, so the reply arrives whichever instance the tab is on.
---
backend/open_webui/main.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py
index da2eea353d42..ab9387e47f66 100644
--- a/backend/open_webui/main.py
+++ b/backend/open_webui/main.py
@@ -193,6 +193,7 @@
periodic_session_pool_cleanup,
periodic_usage_pool_cleanup,
redis_event_listener,
+ sio,
)
from open_webui.socket.main import (
app as socket_app,
@@ -398,6 +399,9 @@ async def lifespan(app: FastAPI):
if WEBSOCKET_MANAGER == 'redis':
app.state.redis_event_listener = asyncio.create_task(redis_event_listener())
+ # socket.io only starts listening on its first connect; event call answers need it earlier
+ sio.manager_initialized = True
+ sio.manager.initialize()
app.state.periodic_usage_pool_cleanup = asyncio.create_task(periodic_usage_pool_cleanup())
app.state.periodic_session_pool_cleanup = asyncio.create_task(periodic_session_pool_cleanup())
From 5338aeca8956ed6a49ff6f72ec1e4242c01d5d77 Mon Sep 17 00:00:00 2001
From: G30 <50341825+silentoplayz@users.noreply.github.com>
Date: Wed, 30 Sep 2026 11:25:01 -0400
Subject: [PATCH 20/79] fix: render tilde-fenced code blocks as code blocks
(#31543)
---
src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte
index 2f8f39329582..11281526fef1 100644
--- a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte
+++ b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte
@@ -190,7 +190,7 @@
/>
{:else if token.type === 'code'}
- {#if token.raw.includes('```')}
+ {#if token.codeBlockStyle !== 'indented'}
Date: Wed, 30 Sep 2026 17:25:16 +0200
Subject: [PATCH 21/79] fix: DEFAULT_LOCALE is ignored on a user's first visit
(#31551)
Since v0.11.4 a new visitor always got their browser's language even when an admin set DEFAULT_LOCALE, because the browser language was remembered as if the user had picked it, so the configured default never applied. The configured default now applies on the first visit again, as it did up to v0.11.3. A language the user picks in Settings and a ?lang= link still take precedence, and instances without DEFAULT_LOCALE keep following the browser language.
Fixes #31548
---
src/routes/+layout.svelte | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 1e8919a5c990..a3272177af6e 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1269,7 +1269,10 @@
// Initialize i18n even if we didn't get a backend config,
// so `/error` can show something that's not `undefined`.
- await initI18n(localStorage?.locale, backendConfig?.i18n ?? {});
+ await initI18n(
+ localStorage?.locale ?? backendConfig?.default_locale,
+ backendConfig?.i18n ?? {}
+ );
if (!localStorage.locale) {
const languages = await getLanguages();
const browserLanguages = navigator.languages
From 8600ab9fa7639e04dd7e0863d68e966e6d3573d2 Mon Sep 17 00:00:00 2001
From: G30 <50341825+silentoplayz@users.noreply.github.com>
Date: Wed, 30 Sep 2026 11:25:38 -0400
Subject: [PATCH 22/79] fix: keep a table cell's line breaks inside its row
when converting to Markdown (#31539)
---
src/lib/components/common/RichTextInput.svelte | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte
index b4b54d7b439c..ce298ef837e7 100644
--- a/src/lib/components/common/RichTextInput.svelte
+++ b/src/lib/components/common/RichTextInput.svelte
@@ -78,6 +78,7 @@
let cellContent = turndownService.turndown(cell.innerHTML).trim();
// Remove extra paragraph tags that might be added
cellContent = cellContent.replace(/^\n+|\n+$/g, '');
+ cellContent = cellContent.replace(/\n/g, ' ');
return cellContent;
});
From 52533c567586c363a1baa48e8a5b3c4e20aea115 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:29:19 +0200
Subject: [PATCH 23/79] refac: calendar event tools use the calendar's access
check (#31537)
Editing or deleting a calendar event through the chat tools now checks access to the event's calendar the same way the calendar API does.
---
backend/open_webui/tools/builtin.py | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/backend/open_webui/tools/builtin.py b/backend/open_webui/tools/builtin.py
index c1d1b164d626..c974c68b4646 100644
--- a/backend/open_webui/tools/builtin.py
+++ b/backend/open_webui/tools/builtin.py
@@ -4413,10 +4413,10 @@ async def update_calendar_event(
return JSONCodec.dumps({'error': 'Event not found'})
# Check write access to the event's calendar
- if event.user_id != user_id and __user__.get('role') != 'admin':
- cal = await Calendars.get_calendar_by_id(event.calendar_id)
- if not cal:
- return JSONCodec.dumps({'error': 'Access denied'})
+ cal = await Calendars.get_calendar_by_id(event.calendar_id)
+ if not cal:
+ return JSONCodec.dumps({'error': 'Access denied'})
+ if cal.user_id != user_id and __user__.get('role') != 'admin':
user_group_ids = [g.id for g in await Groups.get_groups_by_member_id(user_id)]
if not await AccessGrants.has_access(
user_id=user_id,
@@ -4517,10 +4517,10 @@ async def delete_calendar_event(
return JSONCodec.dumps({'error': 'Event not found'})
# Check write access
- if event.user_id != user_id and __user__.get('role') != 'admin':
- cal = await Calendars.get_calendar_by_id(event.calendar_id)
- if not cal:
- return JSONCodec.dumps({'error': 'Access denied'})
+ cal = await Calendars.get_calendar_by_id(event.calendar_id)
+ if not cal:
+ return JSONCodec.dumps({'error': 'Access denied'})
+ if cal.user_id != user_id and __user__.get('role') != 'admin':
user_group_ids = [g.id for g in await Groups.get_groups_by_member_id(user_id)]
if not await AccessGrants.has_access(
user_id=user_id,
From 710b9f1e2c7934baca5d83299538cf88a2cb6f3f Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:29:59 +0200
Subject: [PATCH 24/79] fix: exact matches score as the worst result on
Weaviate (#31531)
With Weaviate as the vector database, a chunk identical to the query (distance 0) was treated as having no distance and got a relevance score of 0. Perfect matches could land at the bottom of the results or fall below the relevance threshold. They now score 1 as expected.
Fixes #31527
---
backend/open_webui/retrieval/vector/dbs/weaviate.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backend/open_webui/retrieval/vector/dbs/weaviate.py b/backend/open_webui/retrieval/vector/dbs/weaviate.py
index 6d398d4cedb7..8ccb15972128 100644
--- a/backend/open_webui/retrieval/vector/dbs/weaviate.py
+++ b/backend/open_webui/retrieval/vector/dbs/weaviate.py
@@ -212,7 +212,7 @@ def search(
# Weaviate has cosine distance, 2 (worst) -> 0 (best). Re-ordering to 0 -> 1
raw_distances = [
- (obj.metadata.distance if obj.metadata and obj.metadata.distance else 2.0)
+ (obj.metadata.distance if obj.metadata and obj.metadata.distance is not None else 2.0)
for obj in response.objects
]
distances = [(2 - dist) / 2 for dist in raw_distances]
From e5b57540f6fa30bd636adefc338398f4cc315cf3 Mon Sep 17 00:00:00 2001
From: G30 <50341825+silentoplayz@users.noreply.github.com>
Date: Wed, 30 Sep 2026 11:33:19 -0400
Subject: [PATCH 25/79] fix: use the moved chat's pinned state when a folder
chat is dropped on Chats or Pinned (#31368)
---
src/lib/components/layout/Sidebar.svelte | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte
index adbbc6157dab..2c34c60faf0d 100644
--- a/src/lib/components/layout/Sidebar.svelte
+++ b/src/lib/components/layout/Sidebar.svelte
@@ -1464,6 +1464,10 @@
});
folderRegistry[chat.folder_id]?.setFolderItems();
+
+ if (res) {
+ chat = res;
+ }
}
if (chat.pinned) {
@@ -1561,6 +1565,10 @@
toast.error(`${error}`);
return null;
});
+
+ if (res) {
+ chat = res;
+ }
}
if (!chat.pinned) {
From bee06b08bae38c8ff7ed477d46f09e533d556051 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:34:20 +0200
Subject: [PATCH 26/79] fix: jina-colbert-v2 reranker fails to load and turns
hybrid search off (#31532)
Choosing jinaai/jina-colbert-v2 as the reranking model failed on the current transformers release with "'HF_ColBERT' object has no attribute 'all_tied_weights_keys'", and saving the Documents settings quietly switched hybrid search back off. The ColBERT reranker now finishes loading, reranks search results and hybrid search stays on after saving.
Fixes #31522
---
backend/open_webui/retrieval/models/colbert.py | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/backend/open_webui/retrieval/models/colbert.py b/backend/open_webui/retrieval/models/colbert.py
index 94e6f8af5ea3..0a12f13b8b2b 100644
--- a/backend/open_webui/retrieval/models/colbert.py
+++ b/backend/open_webui/retrieval/models/colbert.py
@@ -4,12 +4,29 @@
import numpy as np
import torch
from colbert.infra import ColBERTConfig
+from colbert.modeling import base_colbert, hf_colbert
from colbert.modeling.checkpoint import Checkpoint
from open_webui.retrieval.models.base_reranker import BaseReranker
+from transformers import PretrainedConfig
log = logging.getLogger(__name__)
+def class_factory(name_or_path: str) -> type:
+ hf_colbert_class = hf_colbert.class_factory(name_or_path)
+
+ # colbert-ai never calls post_init, which transformers 5 needs to finish setting up the model
+ class HF_ColBERT(hf_colbert_class):
+ def __init__(self, config: PretrainedConfig, colbert_config: ColBERTConfig) -> None:
+ super().__init__(config, colbert_config)
+ self.post_init()
+
+ return HF_ColBERT
+
+
+base_colbert.class_factory = class_factory
+
+
class ColBERT(BaseReranker):
def __init__(self, name, **kwargs) -> None:
log.info('ColBERT: Loading model %s', name)
From 2f6addf35173d7b57dd1f05768d26c71e9040c6c Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:35:38 +0200
Subject: [PATCH 27/79] fix: new chat from the search dialog cuts off or
changes text containing #, & or + (#31592)
Starting a new chat from the search dialog with "Start a new conversation" sent a different message than the one typed: everything from a # or & onwards was dropped and + turned into a space. The typed text now reaches the new chat unchanged.
Fixes #31469
---
src/lib/components/layout/SearchModal.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/components/layout/SearchModal.svelte b/src/lib/components/layout/SearchModal.svelte
index 16983b53f6c9..3d137ffeaacc 100644
--- a/src/lib/components/layout/SearchModal.svelte
+++ b/src/lib/components/layout/SearchModal.svelte
@@ -255,7 +255,7 @@
{
label: $i18n.t('Start a new conversation'),
onClick: async () => {
- await goto(`/${query ? `?q=${query}` : ''}`);
+ await goto(`/${query ? `?q=${encodeURIComponent(query)}` : ''}`);
show = false;
onClose();
},
From bff0492b5f5470043673f8e85e0d79abcfc26a4d Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:36:43 +0200
Subject: [PATCH 28/79] fix: every log line is exported twice to the
OpenTelemetry collector when traces and logs are both on (#31528)
With ENABLE_OTEL, ENABLE_OTEL_TRACES and ENABLE_OTEL_LOGS all on, the collector received each log line twice, once with code location attributes and once without, because the logging instrumentation for traces now attaches its own log exporter next to Open WebUI's. It now keeps trace context on log lines without adding that second exporter, so each log line reaches the collector once, and OTEL_PYTHON_LOG_AUTO_INSTRUMENTATION=false is no longer needed as a workaround.
Fixes #31524
---
backend/open_webui/utils/telemetry/instrumentors.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backend/open_webui/utils/telemetry/instrumentors.py b/backend/open_webui/utils/telemetry/instrumentors.py
index 7daf0a835443..3f72339a9dba 100644
--- a/backend/open_webui/utils/telemetry/instrumentors.py
+++ b/backend/open_webui/utils/telemetry/instrumentors.py
@@ -178,7 +178,7 @@ def _instrument(self, **kwargs):
SQLAlchemyInstrumentor().instrument(engine=self.db_engine)
RedisInstrumentor().instrument(request_hook=redis_request_hook)
RequestsInstrumentor().instrument(request_hook=requests_hook, response_hook=response_hook)
- LoggingInstrumentor().instrument()
+ LoggingInstrumentor().instrument(enable_log_auto_instrumentation=False)
HTTPXClientInstrumentor().instrument(
request_hook=httpx_request_hook,
response_hook=httpx_response_hook,
From 3d46a59b2db77c21bacf5f0d0ed70bdecc40b329 Mon Sep 17 00:00:00 2001
From: G30 <50341825+silentoplayz@users.noreply.github.com>
Date: Wed, 30 Sep 2026 11:42:46 -0400
Subject: [PATCH 29/79] fix: turn a large channel paste into a file when Paste
Large Text as File is on (#31366)
---
.../components/channel/MessageInput.svelte | 26 +++++++++++++++----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/src/lib/components/channel/MessageInput.svelte b/src/lib/components/channel/MessageInput.svelte
index ff432ae89a60..c7db91a44802 100644
--- a/src/lib/components/channel/MessageInput.svelte
+++ b/src/lib/components/channel/MessageInput.svelte
@@ -24,7 +24,7 @@
import { getSessionUser } from '$lib/apis/auths';
import { uploadFile } from '$lib/apis/files';
- import { WEBUI_API_BASE_URL } from '$lib/constants';
+ import { WEBUI_API_BASE_URL, PASTED_TEXT_CHARACTER_LIMIT } from '$lib/constants';
import { getSuggestionRenderer } from '../common/RichTextInput/suggestions';
import CommandSuggestionList from '../chat/MessageInput/CommandSuggestionList.svelte';
@@ -971,10 +971,26 @@
if (clipboardData && clipboardData.items) {
for (const item of clipboardData.items) {
- const file = item.getAsFile();
- if (file) {
- await inputFilesHandler([file]);
- e.preventDefault();
+ if (item.type === 'text/plain') {
+ if ($settings?.largeTextAsFile ?? false) {
+ const text = clipboardData.getData('text/plain');
+
+ if (text.length > PASTED_TEXT_CHARACTER_LIMIT) {
+ e.preventDefault();
+ const blob = new Blob([text], { type: 'text/plain' });
+ const file = new File([blob], `Pasted_Text_${Date.now()}.txt`, {
+ type: 'text/plain'
+ });
+
+ await uploadFileHandler(file);
+ }
+ }
+ } else {
+ const file = item.getAsFile();
+ if (file) {
+ await inputFilesHandler([file]);
+ e.preventDefault();
+ }
}
}
}
From f98ca224c5d84cdcbcaf9bcbfdd1bf438f16d625 Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:42:53 +0200
Subject: [PATCH 30/79] perf: use the faster JSON encoder by default (#31616)
ENABLE_ORJSON has shipped as an option since v0.11.0 (2026-07-27), five releases and two months ago, and orjson is already installed with every instance. The only two problems ever found with it (rare line break characters splitting a stream, and extra encoding options being ignored) were fixed in v0.11.1 and nothing has come up since. The regression suite at https://github.com/open-webui/tests now runs 222 tests with the option on and off side by side, on SQLite, Postgres, several workers sharing one Redis with some on and some off, and in the browser: chats, completions for every provider format, tool calls, citations, all workspace and admin data, exports and imports, notes and live socket updates behave the same, and every API response is byte for byte identical. The only differences were in how non-English text gets saved to the database, where the standard encoder is the one with bugs (missed searches and too small size limits). Turning it on by default gives every instance the speedup measured in #27583 (live socket updates encode 17x and decode 3x faster), and ENABLE_ORJSON=false keeps the old encoder.
---
backend/open_webui/env.py | 2 +-
backend/open_webui/main.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py
index dc160e15925d..275e25495790 100644
--- a/backend/open_webui/env.py
+++ b/backend/open_webui/env.py
@@ -159,7 +159,7 @@ def format(self, record: logging.LogRecord) -> str:
# Swap the JSON encoder/decoder used across the app (HTTP request bodies, JSONResponse
# bodies, upstream provider responses, socket.io payloads) from the stdlib `json` module
# to orjson. Faster, but stricter: see open_webui/utils/json_codec.py for the differences.
-ENABLE_ORJSON = os.getenv('ENABLE_ORJSON', 'False').lower() == 'true'
+ENABLE_ORJSON = os.getenv('ENABLE_ORJSON', 'True').lower() == 'true'
# Function to parse each section
diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py
index ab9387e47f66..694c62a5437d 100644
--- a/backend/open_webui/main.py
+++ b/backend/open_webui/main.py
@@ -502,7 +502,7 @@ async def lifespan(app: FastAPI):
await publish_event(app, EVENTS.SYSTEM_SHUTDOWN_COMPLETED, source='system')
-# Opt-in (ENABLE_ORJSON): orjson for request-body parsing and JSONResponse bodies;
+# ENABLE_ORJSON: orjson for request-body parsing and JSONResponse bodies;
# response_model routes keep FastAPI's Pydantic fast path either way.
apply_orjson_http_json()
From d7a74450b529b246a2649c2256918d6670430c1a Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:43:13 +0200
Subject: [PATCH 31/79] fix: question and answer vanish from the chat when a
background sub-agent finishes before the answer (#31557)
When a background sub-agent finished while the model was still writing the answer that started it, the sub-agent's report was placed as a reply to the previous answer instead. Once the answer ended, the chat switched to that other branch of the conversation, which hid the latest question and answer, and the model replied to the report without seeing that question and answer. The report now follows the answer that started the sub-agent (or the newest completed reply after it), so the conversation stays on one branch.
Fixes #31507
---
backend/open_webui/utils/subagents.py | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/backend/open_webui/utils/subagents.py b/backend/open_webui/utils/subagents.py
index f020e0cd942b..b2f9693af85c 100644
--- a/backend/open_webui/utils/subagents.py
+++ b/backend/open_webui/utils/subagents.py
@@ -615,10 +615,16 @@ async def run_background() -> dict:
updated_chat = copy.deepcopy(parent.chat or {})
updated_history = updated_chat.setdefault('history', {})
updated_messages = updated_history.setdefault('messages', {})
+ parent_message = updated_messages.get(parent_message_id)
done_assistants = [
message
- for message in updated_messages.values()
- if message.get('role') == 'assistant' and message.get('done') is not False
+ for message_id, message in updated_messages.items()
+ if message.get('role') == 'assistant'
+ and message.get('done') is not False
+ and (
+ parent_message is None
+ or any(entry is parent_message for entry in get_message_list(updated_messages, message_id))
+ )
]
result_parent_id = (
max(done_assistants, key=lambda message: message.get('timestamp', 0)).get('id')
From 32e532b459b60b811cfae9a0ea1237d1e03c136f Mon Sep 17 00:00:00 2001
From: Classic298 <27028174+Classic298@users.noreply.github.com>
Date: Wed, 30 Sep 2026 17:43:24 +0200
Subject: [PATCH 32/79] fix: copy last code block shortcut copies the Artifacts
pane instead of the last code block (#31613)
With the Artifacts pane open, the Copy Last Code Block shortcut put the pane's full HTML document on the clipboard instead of the last code block in the chat. The pane opens on its own whenever a reply contains an HTML block, so the shortcut was wrong in every such chat.
The shortcut clicks the last Copy button of chat code blocks on the page, and the Artifacts Copy button carried the same marker class. The pane renders after the messages, so it always won. The marker class is now removed from the Artifacts button. It had no styling attached, so the button looks and works as before.
Fixes #31476
---
src/lib/components/chat/Artifacts.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lib/components/chat/Artifacts.svelte b/src/lib/components/chat/Artifacts.svelte
index d0a6e195eeef..98b6604b032c 100644
--- a/src/lib/components/chat/Artifacts.svelte
+++ b/src/lib/components/chat/Artifacts.svelte
@@ -190,7 +190,7 @@