From 84f3c410c4e2042ff5ffc9a5f30144c11edfe380 Mon Sep 17 00:00:00 2001
From: Wu Tianwei <30284043+WTW0313@users.noreply.github.com>
Date: Wed, 22 Jul 2026 11:57:35 +0800
Subject: [PATCH] fix(datasets): update empty state handling and permissions
messaging (#39360)
---
.../datasets/list/__tests__/index.spec.tsx | 5 +-
.../__tests__/index.spec.tsx | 9 +-
.../datasets/list/first-empty-state/index.tsx | 87 ++++++++++---------
web/app/components/datasets/list/index.tsx | 6 +-
web/i18n/ar-TN/dataset.json | 1 +
web/i18n/de-DE/dataset.json | 1 +
web/i18n/en-US/dataset.json | 1 +
web/i18n/es-ES/dataset.json | 1 +
web/i18n/fa-IR/dataset.json | 1 +
web/i18n/fr-FR/dataset.json | 1 +
web/i18n/hi-IN/dataset.json | 1 +
web/i18n/id-ID/dataset.json | 1 +
web/i18n/it-IT/dataset.json | 1 +
web/i18n/ja-JP/dataset.json | 1 +
web/i18n/ko-KR/dataset.json | 1 +
web/i18n/nl-NL/dataset.json | 1 +
web/i18n/pl-PL/dataset.json | 1 +
web/i18n/pt-BR/dataset.json | 1 +
web/i18n/ro-RO/dataset.json | 1 +
web/i18n/ru-RU/dataset.json | 1 +
web/i18n/sl-SI/dataset.json | 1 +
web/i18n/th-TH/dataset.json | 1 +
web/i18n/tr-TR/dataset.json | 1 +
web/i18n/uk-UA/dataset.json | 1 +
web/i18n/vi-VN/dataset.json | 1 +
web/i18n/zh-Hans/dataset.json | 1 +
web/i18n/zh-Hant/dataset.json | 1 +
27 files changed, 77 insertions(+), 53 deletions(-)
diff --git a/web/app/components/datasets/list/__tests__/index.spec.tsx b/web/app/components/datasets/list/__tests__/index.spec.tsx
index a1d6ba7fbf9..912e883309b 100644
--- a/web/app/components/datasets/list/__tests__/index.spec.tsx
+++ b/web/app/components/datasets/list/__tests__/index.spec.tsx
@@ -342,7 +342,7 @@ describe('List', () => {
).toHaveAttribute('href', '/datasets/create-from-pipeline')
})
- it('should not render first empty state for legacy editors without dataset creation permissions', async () => {
+ it('should render a permission empty state without dataset creation permissions', async () => {
mockConsoleState = {
isCurrentWorkspaceEditor: true,
isCurrentWorkspaceManager: true,
@@ -361,7 +361,8 @@ describe('List', () => {
render(
)
expect(screen.queryByText('dataset.firstEmpty.title')).not.toBeInTheDocument()
- expect(screen.getByTestId('datasets-component')).toBeInTheDocument()
+ expect(screen.getByText('dataset.firstEmpty.noCreatePermission')).toBeInTheDocument()
+ expect(screen.queryByTestId('datasets-component')).not.toBeInTheDocument()
})
it('should not render first empty state before the first dataset page resolves', async () => {
diff --git a/web/app/components/datasets/list/first-empty-state/__tests__/index.spec.tsx b/web/app/components/datasets/list/first-empty-state/__tests__/index.spec.tsx
index 0119cf02421..6315bf835c8 100644
--- a/web/app/components/datasets/list/first-empty-state/__tests__/index.spec.tsx
+++ b/web/app/components/datasets/list/first-empty-state/__tests__/index.spec.tsx
@@ -82,11 +82,10 @@ describe('DatasetFirstEmptyState', () => {
)
})
- it('renders nothing when no empty-state action is available', () => {
- const { container } = render(
- ,
- )
+ it('shows a permission message when no empty-state action is available', () => {
+ render()
- expect(container).toBeEmptyDOMElement()
+ expect(screen.getByText('dataset.firstEmpty.noCreatePermission')).toBeInTheDocument()
+ expect(screen.queryByRole('link')).not.toBeInTheDocument()
})
})
diff --git a/web/app/components/datasets/list/first-empty-state/index.tsx b/web/app/components/datasets/list/first-empty-state/index.tsx
index bfe508a0a20..cb178f96853 100644
--- a/web/app/components/datasets/list/first-empty-state/index.tsx
+++ b/web/app/components/datasets/list/first-empty-state/index.tsx
@@ -67,8 +67,6 @@ function DatasetFirstEmptyState({
: undefined
const hasActions = createActions.length > 0 || !!connectAction
- if (!hasActions) return null
-
return (
@@ -89,47 +87,54 @@ function DatasetFirstEmptyState({
-
- {t(($) => $['firstEmpty.title'], { ns: 'dataset' })}
+
+ {t(($) => $[hasActions ? 'firstEmpty.title' : 'firstEmpty.noCreatePermission'], {
+ ns: 'dataset',
+ })}
-
- {createActions.length > 0 && (
-
- {createActions.map((action) => (
-
- ))}
-
- )}
- {createActions.length > 0 && connectAction && (
-
-
-
- {t(($) => $['firstEmpty.or'], { ns: 'dataset' })}
-
-
-
- )}
- {connectAction && (
-
- )}
-
+ {hasActions && (
+
+ {createActions.length > 0 && (
+
+ {createActions.map((action) => (
+
+ ))}
+
+ )}
+ {createActions.length > 0 && connectAction && (
+
+
+
+ {t(($) => $['firstEmpty.or'], { ns: 'dataset' })}
+
+
+
+ )}
+ {connectAction && (
+
+ )}
+
+ )}
diff --git a/web/app/components/datasets/list/index.tsx b/web/app/components/datasets/list/index.tsx
index ce8c775b2b5..6029e2b8845 100644
--- a/web/app/components/datasets/list/index.tsx
+++ b/web/app/components/datasets/list/index.tsx
@@ -91,11 +91,7 @@ const List = () => {
keywords.trim().length > 0 ||
searchKeywords.trim().length > 0 ||
includeAll
- const showEmptyDataList =
- !hasAnyDataset &&
- (canCreateDataset || canConnectExternalDataset) &&
- hasResolvedFirstPage &&
- !hasActiveFilters
+ const showEmptyDataList = !hasAnyDataset && hasResolvedFirstPage && !hasActiveFilters
const showFilteredEmptyState = !hasAnyDataset && hasResolvedFirstPage && hasActiveFilters
const activeStepByStepTourTaskId = useAtomValue(activeStepByStepTourTaskIdAtom)
const activeStepByStepTourGuideIndex = useAtomValue(activeStepByStepTourGuideIndexAtom)
diff --git a/web/i18n/ar-TN/dataset.json b/web/i18n/ar-TN/dataset.json
index 84001c9b298..809a78b746a 100644
--- a/web/i18n/ar-TN/dataset.json
+++ b/web/i18n/ar-TN/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "هل لديك قاعدة معرفة بالفعل؟ اربطها عبر API دون ترحيل البيانات.",
"firstEmpty.createDescription": "أسرع طريقة للبدء. يمكنك التبديل إلى التخصيص في أي وقت.",
"firstEmpty.createTitle": "إنشاء قاعدة معرفة جاهزة للاستخدام",
+ "firstEmpty.noCreatePermission": "لا توجد قواعد معرفة يمكنك الوصول إليها.\nتواصل مع مشرف صيانة المورد أو مالك مساحة العمل لطلب الوصول.",
"firstEmpty.or": "أو",
"firstEmpty.pipelineDescription": "عرّف تدفق التقسيم والتنظيف والفهرسة الخاص بك للبيانات المتخصصة.",
"firstEmpty.pipelineTitle": "إنشاء قاعدة معرفة مخصصة",
diff --git a/web/i18n/de-DE/dataset.json b/web/i18n/de-DE/dataset.json
index 63f81f38312..42e5381cd26 100644
--- a/web/i18n/de-DE/dataset.json
+++ b/web/i18n/de-DE/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Hast du bereits eine Wissensdatenbank? Verbinde sie per API, ohne Daten zu migrieren.",
"firstEmpty.createDescription": "Der schnellste Einstieg. Du kannst jederzeit zu benutzerdefiniert wechseln.",
"firstEmpty.createTitle": "Einsatzbereite Wissensdatenbank erstellen",
+ "firstEmpty.noCreatePermission": "Keine zugänglichen Wissensdatenbanken.\nWende dich an den Ressourcenbetreuer oder Workspace-Inhaber, um Zugriff anzufordern.",
"firstEmpty.or": "Oder",
"firstEmpty.pipelineDescription": "Definiere eigene Chunking-, Bereinigungs- und Indexierungsabläufe für spezialisierte Daten.",
"firstEmpty.pipelineTitle": "Benutzerdefinierte Wissensdatenbank erstellen",
diff --git a/web/i18n/en-US/dataset.json b/web/i18n/en-US/dataset.json
index 5c6e012a91c..8a6a099fc14 100644
--- a/web/i18n/en-US/dataset.json
+++ b/web/i18n/en-US/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "Upload documents and let Dify handle the rest. The fastest way to get started.",
"firstEmpty.createTitle": "Create a ready-to-use knowledge base",
+ "firstEmpty.noCreatePermission": "No accessible knowledge bases.\nContact the resource maintainer or your Workspace Owner to request access.",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "Build a custom data processing workflow with flexible nodes and steps.",
"firstEmpty.pipelineTitle": "Build a custom knowledge base",
diff --git a/web/i18n/es-ES/dataset.json b/web/i18n/es-ES/dataset.json
index 54b080e555b..72f17df723f 100644
--- a/web/i18n/es-ES/dataset.json
+++ b/web/i18n/es-ES/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "¿Ya tienes una base de conocimiento? Conéctala mediante API sin migrar datos.",
"firstEmpty.createDescription": "La forma más rápida de empezar. Puedes cambiar a personalizado en cualquier momento.",
"firstEmpty.createTitle": "Crear una base de conocimiento lista para usar",
+ "firstEmpty.noCreatePermission": "No hay bases de conocimiento accesibles.\nContacta con el mantenedor del recurso o el propietario del espacio de trabajo para solicitar acceso.",
"firstEmpty.or": "O",
"firstEmpty.pipelineDescription": "Define tu propio flujo de fragmentación, limpieza e indexación para datos especializados.",
"firstEmpty.pipelineTitle": "Crear una base de conocimiento personalizada",
diff --git a/web/i18n/fa-IR/dataset.json b/web/i18n/fa-IR/dataset.json
index 1e4a043329b..1a52b1ec7c6 100644
--- a/web/i18n/fa-IR/dataset.json
+++ b/web/i18n/fa-IR/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "ایجاد پایگاه دانش آماده استفاده",
+ "firstEmpty.noCreatePermission": "هیچ پایگاه دانشی در دسترس نیست.\nبرای درخواست دسترسی با نگهدارنده منبع یا مالک فضای کاری تماس بگیرید.",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "جریان قطعهبندی، پاکسازی و نمایهسازی خود را برای دادههای تخصصی تعریف کنید.",
"firstEmpty.pipelineTitle": "ساخت پایگاه دانش سفارشی",
diff --git a/web/i18n/fr-FR/dataset.json b/web/i18n/fr-FR/dataset.json
index d1d6eb73690..74f35ad9776 100644
--- a/web/i18n/fr-FR/dataset.json
+++ b/web/i18n/fr-FR/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Vous avez déjà une base de connaissances ? Connectez-la via API sans migrer les données.",
"firstEmpty.createDescription": "La façon la plus rapide de commencer. Vous pouvez passer au personnalisé à tout moment.",
"firstEmpty.createTitle": "Créer une base de connaissances prête à l’emploi",
+ "firstEmpty.noCreatePermission": "Aucune base de connaissances accessible.\nContactez le mainteneur de la ressource ou le propriétaire de l’espace de travail pour demander l’accès.",
"firstEmpty.or": "Ou",
"firstEmpty.pipelineDescription": "Définissez votre propre flux de découpage, nettoyage et indexation pour des données spécialisées.",
"firstEmpty.pipelineTitle": "Créer une base de connaissances personnalisée",
diff --git a/web/i18n/hi-IN/dataset.json b/web/i18n/hi-IN/dataset.json
index 6cbc6872062..44b0e92b5e4 100644
--- a/web/i18n/hi-IN/dataset.json
+++ b/web/i18n/hi-IN/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "उपयोग के लिए तैयार नॉलेज बेस बनाएं",
+ "firstEmpty.noCreatePermission": "कोई सुलभ नॉलेज बेस नहीं है।\nऐक्सेस का अनुरोध करने के लिए संसाधन के रखरखावकर्ता या वर्कस्पेस के मालिक से संपर्क करें।",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "विशेष डेटा के लिए अपना चंकिंग, क्लीनअप और इंडेक्सिंग फ़्लो परिभाषित करें.",
"firstEmpty.pipelineTitle": "कस्टम नॉलेज बेस बनाएं",
diff --git a/web/i18n/id-ID/dataset.json b/web/i18n/id-ID/dataset.json
index cfcc2b078b9..dee2bf50d21 100644
--- a/web/i18n/id-ID/dataset.json
+++ b/web/i18n/id-ID/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "Buat basis pengetahuan siap pakai",
+ "firstEmpty.noCreatePermission": "Tidak ada basis pengetahuan yang dapat diakses.\nHubungi pengelola sumber daya atau Pemilik Workspace untuk meminta akses.",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "Tentukan alur chunking, pembersihan, dan pengindeksan Anda sendiri untuk data khusus.",
"firstEmpty.pipelineTitle": "Bangun basis pengetahuan kustom",
diff --git a/web/i18n/it-IT/dataset.json b/web/i18n/it-IT/dataset.json
index 4683043b2dc..f6871d8e8bb 100644
--- a/web/i18n/it-IT/dataset.json
+++ b/web/i18n/it-IT/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Hai già una knowledge base? Collegala via API senza migrare i dati.",
"firstEmpty.createDescription": "Il modo più rapido per iniziare. Puoi passare al personalizzato in qualsiasi momento.",
"firstEmpty.createTitle": "Crea una knowledge base pronta all’uso",
+ "firstEmpty.noCreatePermission": "Nessuna knowledge base accessibile.\nContatta il manutentore della risorsa o il proprietario del workspace per richiedere l’accesso.",
"firstEmpty.or": "Oppure",
"firstEmpty.pipelineDescription": "Definisci il tuo flusso di suddivisione, pulizia e indicizzazione per dati specializzati.",
"firstEmpty.pipelineTitle": "Crea una knowledge base personalizzata",
diff --git a/web/i18n/ja-JP/dataset.json b/web/i18n/ja-JP/dataset.json
index 22c87f51004..55cb4cdeca5 100644
--- a/web/i18n/ja-JP/dataset.json
+++ b/web/i18n/ja-JP/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "既にナレッジベースをお持ちですか?データを移行せずに API 経由で接続できます。",
"firstEmpty.createDescription": "ドキュメントをアップロードするだけで、あとは Dify にお任せ。最も手軽な始め方です。",
"firstEmpty.createTitle": "すぐに使えるナレッジベースを作成",
+ "firstEmpty.noCreatePermission": "アクセス可能なナレッジベースがありません。\nアクセスを申請するには、リソースのメンテナーまたはワークスペースのオーナーにお問い合わせください。",
"firstEmpty.or": "または",
"firstEmpty.pipelineDescription": "柔軟なノードとステップで、カスタムのデータ処理ワークフローを構築できます。",
"firstEmpty.pipelineTitle": "カスタムナレッジベースを構築",
diff --git a/web/i18n/ko-KR/dataset.json b/web/i18n/ko-KR/dataset.json
index 7abd4fcedd7..d7c36a07186 100644
--- a/web/i18n/ko-KR/dataset.json
+++ b/web/i18n/ko-KR/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "이미 지식 베이스가 있나요? 데이터를 이전하지 않고 API로 연결하세요.",
"firstEmpty.createDescription": "가장 빠르게 시작하는 방법입니다. 언제든 사용자 지정으로 전환할 수 있습니다.",
"firstEmpty.createTitle": "바로 사용할 수 있는 지식 베이스 만들기",
+ "firstEmpty.noCreatePermission": "액세스할 수 있는 지식 베이스가 없습니다.\n액세스를 요청하려면 리소스 관리자 또는 워크스페이스 소유자에게 문의하세요.",
"firstEmpty.or": "또는",
"firstEmpty.pipelineDescription": "전문 데이터에 맞게 청킹, 정리, 인덱싱 흐름을 직접 정의하세요.",
"firstEmpty.pipelineTitle": "사용자 지정 지식 베이스 만들기",
diff --git a/web/i18n/nl-NL/dataset.json b/web/i18n/nl-NL/dataset.json
index 09f5dfd4ceb..da3020af4c7 100644
--- a/web/i18n/nl-NL/dataset.json
+++ b/web/i18n/nl-NL/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "Een gebruiksklare kennisbank maken",
+ "firstEmpty.noCreatePermission": "Er zijn geen toegankelijke kennisbanken.\nNeem contact op met de beheerder van de resource of de eigenaar van de workspace om toegang aan te vragen.",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "Definieer je eigen flow voor chunking, opschoning en indexering voor gespecialiseerde data.",
"firstEmpty.pipelineTitle": "Een aangepaste kennisbank bouwen",
diff --git a/web/i18n/pl-PL/dataset.json b/web/i18n/pl-PL/dataset.json
index c05812f8da5..61028b11788 100644
--- a/web/i18n/pl-PL/dataset.json
+++ b/web/i18n/pl-PL/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "Utwórz gotową do użycia bazę wiedzy",
+ "firstEmpty.noCreatePermission": "Brak dostępnych baz wiedzy.\nSkontaktuj się z opiekunem zasobu lub właścicielem obszaru roboczego, aby poprosić o dostęp.",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "Zdefiniuj własny przepływ dzielenia na fragmenty, czyszczenia i indeksowania dla specjalistycznych danych.",
"firstEmpty.pipelineTitle": "Zbuduj niestandardową bazę wiedzy",
diff --git a/web/i18n/pt-BR/dataset.json b/web/i18n/pt-BR/dataset.json
index 19a8475b388..c35099ff91c 100644
--- a/web/i18n/pt-BR/dataset.json
+++ b/web/i18n/pt-BR/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Já tem uma base de conhecimento? Conecte-a via API sem migrar dados.",
"firstEmpty.createDescription": "A forma mais rápida de começar. Você pode mudar para personalizado a qualquer momento.",
"firstEmpty.createTitle": "Criar uma base de conhecimento pronta para uso",
+ "firstEmpty.noCreatePermission": "Nenhuma base de conhecimento acessível.\nEntre em contato com o mantenedor do recurso ou o proprietário do workspace para solicitar acesso.",
"firstEmpty.or": "Ou",
"firstEmpty.pipelineDescription": "Defina seu próprio fluxo de divisão, limpeza e indexação para dados especializados.",
"firstEmpty.pipelineTitle": "Criar uma base de conhecimento personalizada",
diff --git a/web/i18n/ro-RO/dataset.json b/web/i18n/ro-RO/dataset.json
index 1e17c8fdd99..c340e2476a5 100644
--- a/web/i18n/ro-RO/dataset.json
+++ b/web/i18n/ro-RO/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "Creează o bază de cunoștințe gata de utilizare",
+ "firstEmpty.noCreatePermission": "Nu există baze de cunoștințe accesibile.\nContactează întreținătorul resursei sau proprietarul spațiului de lucru pentru a solicita acces.",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "Definește propriul flux de fragmentare, curățare și indexare pentru date specializate.",
"firstEmpty.pipelineTitle": "Construiește o bază de cunoștințe personalizată",
diff --git a/web/i18n/ru-RU/dataset.json b/web/i18n/ru-RU/dataset.json
index 43690351a2c..5251f291f63 100644
--- a/web/i18n/ru-RU/dataset.json
+++ b/web/i18n/ru-RU/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "У вас уже есть база знаний? Подключите ее через API без миграции данных.",
"firstEmpty.createDescription": "Самый быстрый способ начать. В любой момент можно перейти к настройке вручную.",
"firstEmpty.createTitle": "Создать готовую к использованию базу знаний",
+ "firstEmpty.noCreatePermission": "Нет доступных баз знаний.\nОбратитесь к сопровождающему ресурса или владельцу рабочего пространства, чтобы запросить доступ.",
"firstEmpty.or": "Или",
"firstEmpty.pipelineDescription": "Настройте собственный поток разбиения, очистки и индексации для специализированных данных.",
"firstEmpty.pipelineTitle": "Создать пользовательскую базу знаний",
diff --git a/web/i18n/sl-SI/dataset.json b/web/i18n/sl-SI/dataset.json
index 3d15b17e1c8..8b1f0522dd3 100644
--- a/web/i18n/sl-SI/dataset.json
+++ b/web/i18n/sl-SI/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "Ustvari bazo znanja, pripravljeno za uporabo",
+ "firstEmpty.noCreatePermission": "Ni dostopnih baz znanja.\nZa dostop se obrnite na vzdrževalca vira ali lastnika delovnega prostora.",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "Določite svoj potek razčlenjevanja, čiščenja in indeksiranja za specializirane podatke.",
"firstEmpty.pipelineTitle": "Zgradi prilagojeno bazo znanja",
diff --git a/web/i18n/th-TH/dataset.json b/web/i18n/th-TH/dataset.json
index f9aa463c538..ee6c6d41283 100644
--- a/web/i18n/th-TH/dataset.json
+++ b/web/i18n/th-TH/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Already have a knowledge base? Connect it via API without migrating data.",
"firstEmpty.createDescription": "The fastest way to start. Switch to custom anytime.",
"firstEmpty.createTitle": "สร้างฐานความรู้ที่พร้อมใช้งาน",
+ "firstEmpty.noCreatePermission": "ไม่มีฐานความรู้ที่เข้าถึงได้\nโปรดติดต่อผู้ดูแลทรัพยากรหรือเจ้าของเวิร์กสเปซเพื่อขอสิทธิ์เข้าถึง",
"firstEmpty.or": "Or",
"firstEmpty.pipelineDescription": "กำหนดโฟลว์การแบ่งส่วน การล้างข้อมูล และการจัดทำดัชนีของคุณเองสำหรับข้อมูลเฉพาะทาง",
"firstEmpty.pipelineTitle": "สร้างฐานความรู้แบบกำหนดเอง",
diff --git a/web/i18n/tr-TR/dataset.json b/web/i18n/tr-TR/dataset.json
index 8a298e8d0e9..6f74525b48d 100644
--- a/web/i18n/tr-TR/dataset.json
+++ b/web/i18n/tr-TR/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Zaten bir bilgi tabanınız var mı? Verileri taşımadan API ile bağlayın.",
"firstEmpty.createDescription": "Başlamanın en hızlı yolu. İstediğiniz zaman özele geçebilirsiniz.",
"firstEmpty.createTitle": "Kullanıma hazır bilgi tabanı oluştur",
+ "firstEmpty.noCreatePermission": "Erişilebilir bilgi tabanı yok.\nErişim istemek için kaynak bakımcısı veya çalışma alanı sahibiyle iletişime geçin.",
"firstEmpty.or": "Veya",
"firstEmpty.pipelineDescription": "Özel veriler için kendi parçalama, temizleme ve indeksleme akışınızı tanımlayın.",
"firstEmpty.pipelineTitle": "Özel bilgi tabanı oluştur",
diff --git a/web/i18n/uk-UA/dataset.json b/web/i18n/uk-UA/dataset.json
index 26e19511f55..980247db8c3 100644
--- a/web/i18n/uk-UA/dataset.json
+++ b/web/i18n/uk-UA/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Уже маєте базу знань? Підключіть її через API без міграції даних.",
"firstEmpty.createDescription": "Найшвидший спосіб почати. У будь-який момент можна перейти до власного налаштування.",
"firstEmpty.createTitle": "Створити готову до використання базу знань",
+ "firstEmpty.noCreatePermission": "Немає доступних баз знань.\nЗверніться до супроводжувача ресурсу або власника робочого простору, щоб отримати доступ.",
"firstEmpty.or": "Або",
"firstEmpty.pipelineDescription": "Визначте власний процес поділу, очищення та індексації для спеціалізованих даних.",
"firstEmpty.pipelineTitle": "Створити власну базу знань",
diff --git a/web/i18n/vi-VN/dataset.json b/web/i18n/vi-VN/dataset.json
index 1f54bf9d74b..65eb32146c4 100644
--- a/web/i18n/vi-VN/dataset.json
+++ b/web/i18n/vi-VN/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "Đã có cơ sở tri thức? Kết nối qua API mà không cần di chuyển dữ liệu.",
"firstEmpty.createDescription": "Cách nhanh nhất để bắt đầu. Bạn có thể chuyển sang tùy chỉnh bất cứ lúc nào.",
"firstEmpty.createTitle": "Tạo cơ sở tri thức dùng ngay",
+ "firstEmpty.noCreatePermission": "Không có cơ sở tri thức nào có thể truy cập.\nHãy liên hệ người bảo trì tài nguyên hoặc Chủ sở hữu workspace để yêu cầu quyền truy cập.",
"firstEmpty.or": "Hoặc",
"firstEmpty.pipelineDescription": "Tự định nghĩa luồng chia đoạn, làm sạch và lập chỉ mục cho dữ liệu chuyên biệt.",
"firstEmpty.pipelineTitle": "Xây dựng cơ sở tri thức tùy chỉnh",
diff --git a/web/i18n/zh-Hans/dataset.json b/web/i18n/zh-Hans/dataset.json
index 0d0ff0ec062..85f79325a95 100644
--- a/web/i18n/zh-Hans/dataset.json
+++ b/web/i18n/zh-Hans/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "已有知识库?通过 API 直接接入,无需迁移数据。",
"firstEmpty.createDescription": "上传文档,剩下的交给 Dify。最快的上手方式。",
"firstEmpty.createTitle": "创建即用型知识库",
+ "firstEmpty.noCreatePermission": "暂无可访问的知识库。\n请联系资源维护者或工作区所有者获取权限。",
"firstEmpty.or": "或",
"firstEmpty.pipelineDescription": "用灵活的节点和步骤搭建自定义的数据处理工作流。",
"firstEmpty.pipelineTitle": "构建自定义知识库",
diff --git a/web/i18n/zh-Hant/dataset.json b/web/i18n/zh-Hant/dataset.json
index ab9a3e12ddd..d1d9aa1a532 100644
--- a/web/i18n/zh-Hant/dataset.json
+++ b/web/i18n/zh-Hant/dataset.json
@@ -75,6 +75,7 @@
"firstEmpty.connectDescription": "已有知識庫?透過 API 直接連接,無需遷移資料。",
"firstEmpty.createDescription": "最快的開始方式。之後可隨時切換為自訂。",
"firstEmpty.createTitle": "建立即用型知識庫",
+ "firstEmpty.noCreatePermission": "暫無可存取的知識庫。\n請聯絡資源維護者或工作空間擁有者以取得權限。",
"firstEmpty.or": "或",
"firstEmpty.pipelineDescription": "為專用資料定義自己的分段、清理與索引流程。",
"firstEmpty.pipelineTitle": "建立自訂知識庫",