@lobehub/chat 1.36.34 → 1.36.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/README.ja-JP.md +1 -1
- package/README.md +8 -8
- package/README.zh-CN.md +1 -1
- package/changelog/v1.json +14 -0
- package/locales/ar/common.json +27 -7
- package/locales/bg-BG/common.json +27 -7
- package/locales/de-DE/common.json +27 -7
- package/locales/en-US/common.json +27 -7
- package/locales/es-ES/common.json +27 -7
- package/locales/fa-IR/common.json +27 -7
- package/locales/fr-FR/common.json +27 -7
- package/locales/it-IT/common.json +27 -7
- package/locales/ja-JP/common.json +27 -7
- package/locales/ko-KR/common.json +27 -7
- package/locales/nl-NL/common.json +27 -7
- package/locales/pl-PL/common.json +27 -7
- package/locales/pt-BR/common.json +27 -7
- package/locales/ru-RU/common.json +27 -7
- package/locales/tr-TR/common.json +27 -7
- package/locales/vi-VN/common.json +27 -7
- package/locales/zh-CN/common.json +28 -8
- package/locales/zh-TW/common.json +27 -7
- package/package.json +1 -1
- package/src/app/loading/Client/Content.tsx +38 -0
- package/src/app/loading/Client/Redirect.tsx +47 -0
- package/src/app/loading/Client/index.tsx +22 -0
- package/src/app/loading/{Content.tsx → Server/Content.tsx} +6 -2
- package/src/app/loading/{Redirect.tsx → Server/Redirect.tsx} +3 -12
- package/src/app/loading/Server/index.tsx +22 -0
- package/src/app/loading/index.tsx +4 -16
- package/src/app/loading/stage.ts +22 -0
- package/src/components/FullscreenLoading/index.tsx +9 -8
- package/src/components/InitProgress/index.tsx +42 -0
- package/src/database/server/models/message.ts +10 -0
- package/src/database/server/models/session.ts +10 -0
- package/src/features/MobileSwitchLoading/index.tsx +20 -7
- package/src/layout/AuthProvider/NextAuth/UserUpdater.tsx +3 -1
- package/src/locales/default/common.ts +29 -8
- package/src/server/routers/lambda/user.ts +6 -5
- package/src/app/loading/type.ts +0 -6
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "앱을 초기화하는 중...",
|
14
|
+
"finished": "데이터베이스 초기화 완료",
|
15
|
+
"goToChat": "대화 페이지 로딩 중...",
|
16
|
+
"initAuth": "인증 서비스 초기화 중...",
|
17
|
+
"initUser": "사용자 상태 초기화 중...",
|
18
|
+
"initializing": "PGlite 데이터베이스 초기화 중...",
|
19
|
+
"loadingDependencies": "의존성 초기화 중...",
|
20
|
+
"loadingWasm": "WASM 모듈 로드 중...",
|
21
|
+
"migrating": "데이터베이스 테이블 마이그레이션 중...",
|
22
|
+
"ready": "데이터베이스 준비 완료"
|
17
23
|
},
|
18
24
|
"autoGenerate": "자동 생성",
|
19
25
|
"autoGenerateTooltip": "힌트 단어를 기반으로 에이전트 설명을 자동으로 완성합니다",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "오류가 발생했습니다. 재시도해 주세요.",
|
39
45
|
"idle": "초기화 대기 중...",
|
40
46
|
"initializing": "초기화 중...",
|
41
|
-
"loadingDependencies": "의존성
|
42
|
-
"loadingWasmModule": "WASM 모듈
|
43
|
-
"migrating": "
|
47
|
+
"loadingDependencies": "의존성 로드 중...",
|
48
|
+
"loadingWasmModule": "WASM 모듈 로드 중...",
|
49
|
+
"migrating": "데이터베이스 마이그레이션 실행 중...",
|
44
50
|
"ready": "데이터베이스 준비 완료"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "PGlite 클라이언트 데이터베이스를 활성화하여 브라우저에서 채팅 데이터를 영구 저장하고 지식베이스 등 고급 기능을 사용하세요.",
|
48
54
|
"enable": "즉시 활성화",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "개인 지식 기반을 구축하고, 당신의 도우미와 쉽게 지식 기반 대화를 시작하세요(곧 출시 예정)",
|
58
|
+
"title": "지식 기반 대화 지원, 두 번째 뇌를 열다"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "채팅 데이터는 완전히 브라우저에 저장되며, 당신의 데이터는 항상 당신의 손에 있습니다.",
|
62
|
+
"title": "로컬 우선, 프라이버시 최우선"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "PGlite를 기반으로 구축되어, AI 네이티브 고급 기능(벡터 검색)을 원활하게 지원합니다.",
|
66
|
+
"title": "차세대 클라이언트 저장 아키텍처"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "데이터베이스를 초기화 중입니다. 네트워크 차이에 따라 5~30초가 소요될 수 있습니다.",
|
51
71
|
"title": "PGlite 데이터베이스 초기화 중"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "Applicatie wordt gestart...",
|
14
|
+
"finished": "Database-initialisatie voltooid",
|
15
|
+
"goToChat": "De chatpagina wordt geladen...",
|
16
|
+
"initAuth": "Authenticatiedienst wordt geïnitialiseerd...",
|
17
|
+
"initUser": "Gebruikersstatus wordt geïnitialiseerd...",
|
18
|
+
"initializing": "PGlite-database wordt geïnitialiseerd...",
|
19
|
+
"loadingDependencies": "Afhankelijkheden worden geïnitialiseerd...",
|
20
|
+
"loadingWasm": "WASM-modules worden geladen...",
|
21
|
+
"migrating": "Gegevens migreren...",
|
22
|
+
"ready": "Database is gereed"
|
17
23
|
},
|
18
24
|
"autoGenerate": "Automatisch genereren",
|
19
25
|
"autoGenerateTooltip": "Automatisch assistentbeschrijving genereren op basis van suggesties",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "Er is een fout opgetreden, probeer het opnieuw",
|
39
45
|
"idle": "Wachten op initialisatie...",
|
40
46
|
"initializing": "Bezig met initialiseren...",
|
41
|
-
"loadingDependencies": "Afhankelijkheden laden
|
42
|
-
"loadingWasmModule": "WASM-module laden
|
43
|
-
"migrating": "
|
47
|
+
"loadingDependencies": "Afhankelijkheden laden...",
|
48
|
+
"loadingWasmModule": "WASM-module laden...",
|
49
|
+
"migrating": "Gegevens migreren...",
|
44
50
|
"ready": "Database is gereed"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "Schakel de PGlite-clientdatabase in om chatgegevens permanent op te slaan in je browser en gebruik geavanceerde functies zoals de kennisbank.",
|
48
54
|
"enable": "Nu inschakelen",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "Bouw je persoonlijke kennisbasis op en start eenvoudig een gesprek met je assistent (binnenkort beschikbaar)",
|
58
|
+
"title": "Ondersteuning voor kennisbasisgesprekken, activeer je tweede brein"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "Chatgegevens worden volledig in de browser opgeslagen, jouw gegevens zijn altijd in jouw beheer.",
|
62
|
+
"title": "Lokaal eerst, privacy voorop"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "Gebaseerd op PGlite, native ondersteuning voor AI Native geavanceerde functies (vectorzoekopdrachten)",
|
66
|
+
"title": "Nieuwe generatie clientopslagarchitectuur"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "Bezig met het initialiseren van de database, afhankelijk van de netwerksnelheid kan dit 5 tot 30 seconden duren.",
|
51
71
|
"title": "Bezig met het initialiseren van de PGlite-database"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "Aplikacja się uruchamia...",
|
14
|
+
"finished": "Inicjalizacja bazy danych zakończona",
|
15
|
+
"goToChat": "Ładowanie strony czatu...",
|
16
|
+
"initAuth": "Inicjalizacja usługi autoryzacji...",
|
17
|
+
"initUser": "Inicjalizacja stanu użytkownika...",
|
18
|
+
"initializing": "Inicjalizacja bazy danych PGlite...",
|
19
|
+
"loadingDependencies": "Inicjalizacja zależności...",
|
20
|
+
"loadingWasm": "Ładowanie modułu WASM...",
|
21
|
+
"migrating": "Wykonywanie migracji tabeli danych...",
|
22
|
+
"ready": "Baza danych jest gotowa"
|
17
23
|
},
|
18
24
|
"autoGenerate": "Automatyczne generowanie",
|
19
25
|
"autoGenerateTooltip": "Automatyczne uzupełnianie opisu asystenta na podstawie sugestii",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "Wystąpił błąd, proszę spróbować ponownie",
|
39
45
|
"idle": "Oczekiwanie na inicjalizację...",
|
40
46
|
"initializing": "Inicjalizowanie...",
|
41
|
-
"loadingDependencies": "Ładowanie zależności
|
42
|
-
"loadingWasmModule": "Ładowanie modułu WASM
|
43
|
-
"migrating": "
|
47
|
+
"loadingDependencies": "Ładowanie zależności...",
|
48
|
+
"loadingWasmModule": "Ładowanie modułu WASM...",
|
49
|
+
"migrating": "Wykonywanie migracji tabeli danych...",
|
44
50
|
"ready": "Baza danych gotowa"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "Włącz klienta bazy danych PGlite, aby trwale przechowywać dane czatu w przeglądarce i korzystać z zaawansowanych funkcji, takich jak baza wiedzy",
|
48
54
|
"enable": "Włącz teraz",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "Zgromadź swoją osobistą bazę wiedzy i łatwo rozpocznij rozmowę z asystentem (wkrótce dostępne)",
|
58
|
+
"title": "Wsparcie dla rozmów w bazie wiedzy, uruchomienie drugiego mózgu"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "Dane czatu są całkowicie przechowywane w przeglądarce, twoje dane są zawsze pod twoją kontrolą.",
|
62
|
+
"title": "Lokalnie najpierw, prywatność przede wszystkim"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "Zbudowane na PGlite, natywne wsparcie dla zaawansowanych funkcji AI Native (wyszukiwanie wektorowe)",
|
66
|
+
"title": "Nowa generacja architektury przechowywania klienta"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "Inicjalizacja bazy danych trwa, w zależności od jakości sieci może zająć od 5 do 30 sekund",
|
51
71
|
"title": "Inicjalizacja bazy danych PGlite"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "Iniciando o aplicativo...",
|
14
|
+
"finished": "Inicialização do banco de dados concluída",
|
15
|
+
"goToChat": "Carregando página de conversa...",
|
16
|
+
"initAuth": "Inicializando serviço de autenticação...",
|
17
|
+
"initUser": "Inicializando estado do usuário...",
|
18
|
+
"initializing": "Inicializando banco de dados PGlite...",
|
19
|
+
"loadingDependencies": "Inicializando dependências...",
|
20
|
+
"loadingWasm": "Carregando módulo WASM...",
|
21
|
+
"migrating": "Executando migração de tabelas de dados...",
|
22
|
+
"ready": "Banco de dados pronto"
|
17
23
|
},
|
18
24
|
"autoGenerate": "Auto completar",
|
19
25
|
"autoGenerateTooltip": "Auto completar descrição do assistente com base em sugestões",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "Ocorreu um erro, por favor tente novamente",
|
39
45
|
"idle": "Aguardando inicialização...",
|
40
46
|
"initializing": "Inicializando...",
|
41
|
-
"loadingDependencies": "Carregando dependências
|
42
|
-
"loadingWasmModule": "Carregando módulo WASM
|
43
|
-
"migrating": "
|
47
|
+
"loadingDependencies": "Carregando dependências...",
|
48
|
+
"loadingWasmModule": "Carregando módulo WASM...",
|
49
|
+
"migrating": "Executando migração de tabela de dados...",
|
44
50
|
"ready": "Banco de dados pronto"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "Ative o banco de dados cliente PGlite para armazenar dados de chat de forma persistente no seu navegador e usar recursos avançados como a base de conhecimento",
|
48
54
|
"enable": "Ativar agora",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "Consolide seu repositório de conhecimento pessoal e inicie conversas sobre ele com seu assistente de forma fácil (em breve)",
|
58
|
+
"title": "Suporte a conversas sobre o repositório de conhecimento, ative seu segundo cérebro"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "Os dados do chat são armazenados completamente no navegador, seus dados estão sempre sob seu controle.",
|
62
|
+
"title": "Prioridade local, privacidade em primeiro lugar"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "Construído com base no PGlite, suporte nativo para recursos avançados de IA (busca vetorial)",
|
66
|
+
"title": "Nova geração de arquitetura de armazenamento de cliente"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "Inicializando o banco de dados, pode levar de 5 a 30 segundos dependendo da rede",
|
51
71
|
"title": "Inicializando o banco de dados PGlite"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "Инициализация приложения...",
|
14
|
+
"finished": "Инициализация базы данных завершена",
|
15
|
+
"goToChat": "Загрузка страницы чата...",
|
16
|
+
"initAuth": "Инициализация службы аутентификации...",
|
17
|
+
"initUser": "Инициализация состояния пользователя...",
|
18
|
+
"initializing": "Инициализация базы данных PGlite...",
|
19
|
+
"loadingDependencies": "Инициализация зависимостей...",
|
20
|
+
"loadingWasm": "Загрузка модуля WASM...",
|
21
|
+
"migrating": "Выполнение миграции таблиц данных...",
|
22
|
+
"ready": "База данных готова"
|
17
23
|
},
|
18
24
|
"autoGenerate": "Автозаполнение",
|
19
25
|
"autoGenerateTooltip": "Автоматическое дополнение описания агента на основе подсказок",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "Произошла ошибка, пожалуйста, повторите попытку",
|
39
45
|
"idle": "Ожидание инициализации...",
|
40
46
|
"initializing": "Инициализация...",
|
41
|
-
"loadingDependencies": "Загрузка
|
42
|
-
"loadingWasmModule": "Загрузка модуля WASM
|
43
|
-
"migrating": "
|
47
|
+
"loadingDependencies": "Загрузка зависимостей...",
|
48
|
+
"loadingWasmModule": "Загрузка модуля WASM...",
|
49
|
+
"migrating": "Выполнение миграции таблицы данных...",
|
44
50
|
"ready": "База данных готова"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "Включите клиентскую базу данных PGlite для постоянного хранения данных чата в вашем браузере и использования таких расширенных функций, как база знаний.",
|
48
54
|
"enable": "Включить сейчас",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "Создайте свою личную базу знаний и легко начните диалог с вашим помощником (скоро будет доступно)",
|
58
|
+
"title": "Поддержка диалога с базой знаний, откройте второй мозг"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "Данные чата полностью хранятся в браузере, ваши данные всегда под вашим контролем.",
|
62
|
+
"title": "Локальный приоритет, конфиденциальность превыше всего"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "Построено на основе PGlite, нативная поддержка высокоуровневых функций AI Native (векторный поиск)",
|
66
|
+
"title": "Новая архитектура клиентского хранения"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "Идет инициализация базы данных, в зависимости от сети это может занять от 5 до 30 секунд.",
|
51
71
|
"title": "Инициализация базы данных PGlite"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "Uygulama başlatılıyor...",
|
14
|
+
"finished": "Veritabanı başlatma tamamlandı",
|
15
|
+
"goToChat": "Sohbet sayfası yükleniyor...",
|
16
|
+
"initAuth": "Kimlik doğrulama servisi başlatılıyor...",
|
17
|
+
"initUser": "Kullanıcı durumu başlatılıyor...",
|
18
|
+
"initializing": "PGlite veritabanı başlatılıyor...",
|
19
|
+
"loadingDependencies": "Bağımlılıklar yükleniyor...",
|
20
|
+
"loadingWasm": "WASM modülü yükleniyor...",
|
21
|
+
"migrating": "Veri tablosu taşınıyor...",
|
22
|
+
"ready": "Veritabanı hazır"
|
17
23
|
},
|
18
24
|
"autoGenerate": "Otomatik Oluştur",
|
19
25
|
"autoGenerateTooltip": "Auto-generate agent description based on prompts",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "Hata oluştu, lütfen tekrar deneyin",
|
39
45
|
"idle": "Başlatma bekleniyor...",
|
40
46
|
"initializing": "Başlatılıyor...",
|
41
|
-
"loadingDependencies": "
|
42
|
-
"loadingWasmModule": "WASM modülü yükleniyor
|
43
|
-
"migrating": "Veri taşınıyor...",
|
47
|
+
"loadingDependencies": "Bağlantılar yükleniyor...",
|
48
|
+
"loadingWasmModule": "WASM modülü yükleniyor...",
|
49
|
+
"migrating": "Veri tablosu taşınıyor...",
|
44
50
|
"ready": "Veritabanı hazır"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "PGlite istemci veritabanını etkinleştirerek, tarayıcınızda sohbet verilerini kalıcı olarak depolayın ve bilgi bankası gibi gelişmiş özellikleri kullanın.",
|
48
54
|
"enable": "Hemen Etkinleştir",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "Kişisel bilgi havuzunuzu oluşturun ve asistanınızla kolayca bilgi havuzu sohbetine başlayın (yakında gelecek)",
|
58
|
+
"title": "Bilgi havuzu sohbetini destekleyin, ikinci beyninizi açın"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "Sohbet verileri tamamen tarayıcıda saklanır, verileriniz her zaman sizin kontrolünüzde.",
|
62
|
+
"title": "Yerel öncelik, gizlilik öncelikli"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "PGlite tabanlı, AI Native yüksek düzey özellikleri (vektör arama) yerel olarak destekler",
|
66
|
+
"title": "Yeni nesil istemci depolama mimarisi"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "Veritabanı başlatılıyor, ağ farklılıklarına bağlı olarak 5-30 saniye sürebilir.",
|
51
71
|
"title": "PGlite veritabanı başlatılıyor"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "Đang khởi động ứng dụng...",
|
14
|
+
"finished": "Khởi tạo cơ sở dữ liệu hoàn tất",
|
15
|
+
"goToChat": "Đang tải trang trò chuyện...",
|
16
|
+
"initAuth": "Đang khởi tạo dịch vụ xác thực...",
|
17
|
+
"initUser": "Đang khởi tạo trạng thái người dùng...",
|
18
|
+
"initializing": "Đang khởi tạo cơ sở dữ liệu PGlite...",
|
19
|
+
"loadingDependencies": "Đang khởi tạo phụ thuộc...",
|
20
|
+
"loadingWasm": "Đang tải mô-đun WASM...",
|
21
|
+
"migrating": "Đang thực hiện di chuyển bảng dữ liệu...",
|
22
|
+
"ready": "Cơ sở dữ liệu đã sẵn sàng"
|
17
23
|
},
|
18
24
|
"autoGenerate": "Tự động tạo",
|
19
25
|
"autoGenerateTooltip": "Tự động hoàn thành mô tả trợ lý dựa trên từ gợi ý",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "Đã xảy ra lỗi, vui lòng thử lại",
|
39
45
|
"idle": "Đang chờ khởi tạo...",
|
40
46
|
"initializing": "Đang khởi tạo...",
|
41
|
-
"loadingDependencies": "Đang tải phụ thuộc
|
42
|
-
"loadingWasmModule": "Đang tải mô-đun WASM
|
43
|
-
"migrating": "Đang di chuyển dữ liệu...",
|
47
|
+
"loadingDependencies": "Đang tải phụ thuộc...",
|
48
|
+
"loadingWasmModule": "Đang tải mô-đun WASM...",
|
49
|
+
"migrating": "Đang thực hiện di chuyển bảng dữ liệu...",
|
44
50
|
"ready": "Cơ sở dữ liệu đã sẵn sàng"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "Kích hoạt cơ sở dữ liệu khách hàng PGlite, lưu trữ dữ liệu trò chuyện của bạn trong trình duyệt và sử dụng các tính năng nâng cao như kho kiến thức",
|
48
54
|
"enable": "Kích hoạt ngay",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "Xây dựng kho kiến thức cá nhân của bạn và dễ dàng bắt đầu cuộc trò chuyện với trợ lý của bạn (sắp ra mắt)",
|
58
|
+
"title": "Hỗ trợ trò chuyện kho kiến thức, mở ra bộ não thứ hai"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "Dữ liệu trò chuyện hoàn toàn được lưu trữ trên trình duyệt, dữ liệu của bạn luôn nằm trong tầm kiểm soát của bạn.",
|
62
|
+
"title": "Ưu tiên địa phương, bảo mật hàng đầu"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "Xây dựng trên nền tảng PGlite, hỗ trợ nguyên bản các tính năng cao cấp AI Native (tìm kiếm vector)",
|
66
|
+
"title": "Kiến trúc lưu trữ khách hàng thế hệ mới"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "Đang khởi tạo cơ sở dữ liệu, thời gian có thể từ 5~30 giây tùy thuộc vào mạng",
|
51
71
|
"title": "Đang khởi tạo cơ sở dữ liệu PGlite"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "应用启动中...",
|
14
|
+
"finished": "数据库初始化完成",
|
15
|
+
"goToChat": "对话页面加载中...",
|
16
|
+
"initAuth": "鉴权服务初始化...",
|
17
|
+
"initUser": "用户状态初始化...",
|
18
|
+
"initializing": "PGlite 数据库初始化...",
|
19
|
+
"loadingDependencies": "初始化依赖...",
|
20
|
+
"loadingWasm": "加载 WASM 模块...",
|
21
|
+
"migrating": "执行数据表迁移...",
|
22
|
+
"ready": "数据库已就绪"
|
17
23
|
},
|
18
24
|
"autoGenerate": "自动补全",
|
19
25
|
"autoGenerateTooltip": "基于提示词自动补全助手描述",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "发生错误,请重试",
|
39
45
|
"idle": "等待初始化...",
|
40
46
|
"initializing": "正在初始化...",
|
41
|
-
"loadingDependencies": "
|
42
|
-
"loadingWasmModule": "加载 WASM
|
43
|
-
"migrating": "
|
47
|
+
"loadingDependencies": "加载依赖中...",
|
48
|
+
"loadingWasmModule": "加载 WASM 模块中...",
|
49
|
+
"migrating": "执行数据表迁移...",
|
44
50
|
"ready": "数据库已就绪"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
|
-
"desc": "
|
53
|
+
"desc": "立即启用下一代客户端数据库。在你的浏览器中持久存储聊天数据,并使用知识库等进阶特性。",
|
48
54
|
"enable": "立即启用",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "沉淀你的个人知识库,并与你的助手轻松开启知识库对话(即将上线)",
|
58
|
+
"title": "支持知识库对话,开启第二大脑"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "聊天数据完全存储在浏览器中,你的数据始终在你的掌握。",
|
62
|
+
"title": "本地优先,隐私至上"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "基于 PGlite 构建,原生支持 AI Native 高阶特性(向量检索)",
|
66
|
+
"title": "新一代客户端存储架构"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "正在初始化数据库,视网络差异可能会用时 5~30 秒不等",
|
51
71
|
"title": "正在初始化 PGlite 数据库"
|
@@ -10,10 +10,16 @@
|
|
10
10
|
}
|
11
11
|
},
|
12
12
|
"appLoading": {
|
13
|
-
"
|
14
|
-
"
|
15
|
-
"
|
16
|
-
"
|
13
|
+
"appInitializing": "應用啟動中...",
|
14
|
+
"finished": "資料庫初始化完成",
|
15
|
+
"goToChat": "對話頁面加載中...",
|
16
|
+
"initAuth": "鑑權服務初始化...",
|
17
|
+
"initUser": "用戶狀態初始化...",
|
18
|
+
"initializing": "PGlite 資料庫初始化...",
|
19
|
+
"loadingDependencies": "初始化依賴...",
|
20
|
+
"loadingWasm": "加載 WASM 模組...",
|
21
|
+
"migrating": "執行資料表遷移...",
|
22
|
+
"ready": "資料庫已就緒"
|
17
23
|
},
|
18
24
|
"autoGenerate": "自動生成",
|
19
25
|
"autoGenerateTooltip": "基於提示詞自動生成助手描述",
|
@@ -38,14 +44,28 @@
|
|
38
44
|
"error": "發生錯誤,請重試",
|
39
45
|
"idle": "等待初始化...",
|
40
46
|
"initializing": "正在初始化...",
|
41
|
-
"loadingDependencies": "
|
42
|
-
"loadingWasmModule": "
|
43
|
-
"migrating": "
|
47
|
+
"loadingDependencies": "載入依賴中...",
|
48
|
+
"loadingWasmModule": "載入 WASM 模組中...",
|
49
|
+
"migrating": "執行資料表遷移...",
|
44
50
|
"ready": "數據庫已就緒"
|
45
51
|
},
|
46
52
|
"modal": {
|
47
53
|
"desc": "啟用 PGlite 客戶端數據庫,在你的瀏覽器中持久存儲聊天數據,並使用知識庫等進階特性",
|
48
54
|
"enable": "立即啟用",
|
55
|
+
"features": {
|
56
|
+
"knowledgeBase": {
|
57
|
+
"desc": "沉澱你的個人知識庫,並與你的助手輕鬆開啟知識庫對話(即將上線)",
|
58
|
+
"title": "支持知識庫對話,開啟第二大腦"
|
59
|
+
},
|
60
|
+
"localFirst": {
|
61
|
+
"desc": "聊天數據完全存儲在瀏覽器中,你的數據始終在你的掌握。",
|
62
|
+
"title": "本地優先,隱私至上"
|
63
|
+
},
|
64
|
+
"pglite": {
|
65
|
+
"desc": "基於 PGlite 構建,原生支持 AI Native 高階特性(向量檢索)",
|
66
|
+
"title": "新一代客戶端存儲架構"
|
67
|
+
}
|
68
|
+
},
|
49
69
|
"init": {
|
50
70
|
"desc": "正在初始化數據庫,視網絡差異可能會用時 5~30 秒不等",
|
51
71
|
"title": "正在初始化 PGlite 數據庫"
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.36.
|
3
|
+
"version": "1.36.36",
|
4
4
|
"description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
|
5
5
|
"keywords": [
|
6
6
|
"framework",
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import React, { memo } from 'react';
|
2
|
+
import { useTranslation } from 'react-i18next';
|
3
|
+
|
4
|
+
import FullscreenLoading from '@/components/FullscreenLoading';
|
5
|
+
import { useGlobalStore } from '@/store/global';
|
6
|
+
import { systemStatusSelectors } from '@/store/global/selectors';
|
7
|
+
|
8
|
+
import { CLIENT_LOADING_STAGES } from '../stage';
|
9
|
+
|
10
|
+
interface InitProps {
|
11
|
+
setActiveStage: (value: string) => void;
|
12
|
+
}
|
13
|
+
|
14
|
+
const Init = memo<InitProps>(() => {
|
15
|
+
return null;
|
16
|
+
});
|
17
|
+
|
18
|
+
interface ContentProps {
|
19
|
+
loadingStage: string;
|
20
|
+
setActiveStage: (value: string) => void;
|
21
|
+
}
|
22
|
+
|
23
|
+
const Content = memo<ContentProps>(({ loadingStage, setActiveStage }) => {
|
24
|
+
const { t } = useTranslation('common');
|
25
|
+
const isPgliteNotInited = useGlobalStore(systemStatusSelectors.isPgliteNotInited);
|
26
|
+
|
27
|
+
return (
|
28
|
+
<>
|
29
|
+
{isPgliteNotInited && <Init setActiveStage={setActiveStage} />}
|
30
|
+
<FullscreenLoading
|
31
|
+
activeStage={CLIENT_LOADING_STAGES.indexOf(loadingStage)}
|
32
|
+
stages={CLIENT_LOADING_STAGES.map((key) => t(`appLoading.${key}` as any))}
|
33
|
+
/>
|
34
|
+
</>
|
35
|
+
);
|
36
|
+
});
|
37
|
+
|
38
|
+
export default Content;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
'use client';
|
2
|
+
|
3
|
+
import { useRouter } from 'next/navigation';
|
4
|
+
import { memo, useEffect } from 'react';
|
5
|
+
|
6
|
+
import { useGlobalStore } from '@/store/global';
|
7
|
+
import { systemStatusSelectors } from '@/store/global/selectors';
|
8
|
+
import { useUserStore } from '@/store/user';
|
9
|
+
|
10
|
+
import { AppLoadingStage } from '../stage';
|
11
|
+
|
12
|
+
interface RedirectProps {
|
13
|
+
setActiveStage: (value: AppLoadingStage) => void;
|
14
|
+
}
|
15
|
+
|
16
|
+
const Redirect = memo<RedirectProps>(({ setActiveStage }) => {
|
17
|
+
const router = useRouter();
|
18
|
+
const isUserStateInit = useUserStore((s) => s.isUserStateInit);
|
19
|
+
|
20
|
+
const isPgliteNotEnabled = useGlobalStore(systemStatusSelectors.isPgliteNotEnabled);
|
21
|
+
|
22
|
+
const navToChat = () => {
|
23
|
+
setActiveStage(AppLoadingStage.GoToChat);
|
24
|
+
router.replace('/chat');
|
25
|
+
};
|
26
|
+
|
27
|
+
useEffect(() => {
|
28
|
+
// if pglite is not enabled, redirect to chat
|
29
|
+
if (isPgliteNotEnabled) {
|
30
|
+
navToChat();
|
31
|
+
return;
|
32
|
+
}
|
33
|
+
|
34
|
+
// if user state not init, wait for loading
|
35
|
+
if (!isUserStateInit) {
|
36
|
+
setActiveStage(AppLoadingStage.InitUser);
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
|
40
|
+
// finally check the conversation status
|
41
|
+
navToChat();
|
42
|
+
}, [isUserStateInit, isPgliteNotEnabled]);
|
43
|
+
|
44
|
+
return null;
|
45
|
+
});
|
46
|
+
|
47
|
+
export default Redirect;
|
@@ -0,0 +1,22 @@
|
|
1
|
+
'use client';
|
2
|
+
|
3
|
+
import { useState } from 'react';
|
4
|
+
|
5
|
+
import { AppLoadingStage } from '../stage';
|
6
|
+
import Content from './Content';
|
7
|
+
import Redirect from './Redirect';
|
8
|
+
|
9
|
+
const ClientMode = () => {
|
10
|
+
const [activeStage, setActiveStage] = useState<string>(AppLoadingStage.Initializing);
|
11
|
+
|
12
|
+
return (
|
13
|
+
<>
|
14
|
+
<Content loadingStage={activeStage} setActiveStage={setActiveStage} />
|
15
|
+
<Redirect setActiveStage={setActiveStage} />
|
16
|
+
</>
|
17
|
+
);
|
18
|
+
};
|
19
|
+
|
20
|
+
ClientMode.displayName = 'ClientMode';
|
21
|
+
|
22
|
+
export default ClientMode;
|
@@ -3,15 +3,19 @@ import { useTranslation } from 'react-i18next';
|
|
3
3
|
|
4
4
|
import FullscreenLoading from '@/components/FullscreenLoading';
|
5
5
|
|
6
|
-
import { AppLoadingStage } from '
|
6
|
+
import { AppLoadingStage, SERVER_LOADING_STAGES } from '../stage';
|
7
7
|
|
8
8
|
interface ContentProps {
|
9
9
|
loadingStage: AppLoadingStage;
|
10
10
|
}
|
11
|
+
|
11
12
|
const Content = memo<ContentProps>(({ loadingStage }) => {
|
12
13
|
const { t } = useTranslation('common');
|
14
|
+
const activeStage = SERVER_LOADING_STAGES.indexOf(loadingStage);
|
15
|
+
|
16
|
+
const stages = SERVER_LOADING_STAGES.map((key) => t(`appLoading.${key}`));
|
13
17
|
|
14
|
-
return <FullscreenLoading
|
18
|
+
return <FullscreenLoading activeStage={activeStage} stages={stages} />;
|
15
19
|
});
|
16
20
|
|
17
21
|
export default Content;
|