@lobehub/chat 1.4.0 → 1.4.1
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 +27 -0
- package/locales/ar/chat.json +2 -0
- package/locales/ar/common.json +9 -0
- package/locales/bg-BG/chat.json +2 -0
- package/locales/bg-BG/common.json +9 -0
- package/locales/de-DE/chat.json +2 -0
- package/locales/de-DE/common.json +9 -0
- package/locales/en-US/chat.json +2 -0
- package/locales/en-US/common.json +11 -2
- package/locales/es-ES/chat.json +2 -0
- package/locales/es-ES/common.json +9 -0
- package/locales/fr-FR/chat.json +2 -0
- package/locales/fr-FR/common.json +9 -0
- package/locales/it-IT/chat.json +2 -0
- package/locales/it-IT/common.json +9 -0
- package/locales/ja-JP/chat.json +2 -0
- package/locales/ja-JP/common.json +9 -0
- package/locales/ko-KR/chat.json +2 -0
- package/locales/ko-KR/common.json +9 -0
- package/locales/nl-NL/chat.json +2 -0
- package/locales/nl-NL/common.json +9 -0
- package/locales/pl-PL/chat.json +2 -0
- package/locales/pl-PL/common.json +9 -0
- package/locales/pt-BR/chat.json +2 -0
- package/locales/pt-BR/common.json +9 -0
- package/locales/ru-RU/chat.json +2 -0
- package/locales/ru-RU/common.json +9 -0
- package/locales/tr-TR/chat.json +2 -0
- package/locales/tr-TR/common.json +9 -0
- package/locales/vi-VN/chat.json +2 -0
- package/locales/vi-VN/common.json +9 -0
- package/locales/vi-VN/setting.json +6 -10
- package/locales/zh-CN/chat.json +2 -0
- package/locales/zh-CN/common.json +9 -0
- package/locales/zh-TW/chat.json +2 -0
- package/locales/zh-TW/common.json +9 -0
- package/next-sitemap.config.mjs +2 -2
- package/package.json +2 -1
- package/src/app/(main)/_layout/Desktop.tsx +19 -12
- package/src/app/(main)/_layout/Mobile.tsx +5 -0
- package/src/app/(main)/chat/(workspace)/@topic/features/TopicListContent/TopicContent.tsx +4 -1
- package/src/config/featureFlags/schema.ts +6 -0
- package/src/const/guide.ts +8 -4
- package/src/const/url.ts +2 -1
- package/src/features/AlertBanner/CloudBanner.tsx +91 -0
- package/src/features/ChatInput/ActionBar/Clear.tsx +15 -6
- package/src/features/ChatInput/Topic/index.tsx +44 -9
- package/src/features/User/UserPanel/useMenu.tsx +21 -2
- package/src/locales/default/chat.ts +2 -0
- package/src/locales/default/common.ts +10 -0
- package/src/store/serverConfig/selectors.test.ts +1 -0
- package/src/types/user/index.ts +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
+
### [Version 1.4.1](https://github.com/lobehub/lobe-chat/compare/v1.4.0...v1.4.1)
|
|
6
|
+
|
|
7
|
+
<sup>Released on **2024-07-13**</sup>
|
|
8
|
+
|
|
9
|
+
#### 💄 Styles
|
|
10
|
+
|
|
11
|
+
- **ui**: Confirmation when `adding a new topic`.
|
|
12
|
+
- **misc**: Add cloud promotion banner.
|
|
13
|
+
|
|
14
|
+
<br/>
|
|
15
|
+
|
|
16
|
+
<details>
|
|
17
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
|
18
|
+
|
|
19
|
+
#### Styles
|
|
20
|
+
|
|
21
|
+
- **ui**: Confirmation when `adding a new topic`, closes [#3030](https://github.com/lobehub/lobe-chat/issues/3030) ([dc38cd4](https://github.com/lobehub/lobe-chat/commit/dc38cd4))
|
|
22
|
+
- **misc**: Add cloud promotion banner, closes [#3194](https://github.com/lobehub/lobe-chat/issues/3194) ([62db0f8](https://github.com/lobehub/lobe-chat/commit/62db0f8))
|
|
23
|
+
|
|
24
|
+
</details>
|
|
25
|
+
|
|
26
|
+
<div align="right">
|
|
27
|
+
|
|
28
|
+
[](#readme-top)
|
|
29
|
+
|
|
30
|
+
</div>
|
|
31
|
+
|
|
5
32
|
## [Version 1.4.0](https://github.com/lobehub/lobe-chat/compare/v1.3.6...v1.4.0)
|
|
6
33
|
|
|
7
34
|
<sup>Released on **2024-07-12**</sup>
|
package/locales/ar/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "إنشاء نسخة",
|
|
100
100
|
"export": "تصدير الموضوع"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "هل ترغب في فتح موضوع جديد؟",
|
|
103
|
+
"checkSaveCurrentMessages": "هل ترغب في حفظ الدردشة الحالية كموضوع؟",
|
|
102
104
|
"confirmRemoveAll": "سيتم حذف جميع المواضيع قريبًا، وبمجرد الحذف لن يمكن استعادتها، يرجى التحلي بالحذر.",
|
|
103
105
|
"confirmRemoveTopic": "سيتم حذف هذا الموضوع قريبًا، وبمجرد الحذف لن يمكن استعادته، يرجى التحلي بالحذر.",
|
|
104
106
|
"confirmRemoveUnstarred": "سيتم حذف المواضيع غير المحفوظة قريبًا، وبمجرد الحذف لن يمكن استعادتها، يرجى التحلي بالحذر.",
|
package/locales/ar/common.json
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "حول",
|
|
3
3
|
"advanceSettings": "إعدادات متقدمة",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "تجربة مجانية",
|
|
7
|
+
"desc": "نحن نقدم {{credit}} نقطة حساب مجانية لجميع المستخدمين المسجلين، بدون الحاجة إلى تكوين معقد، فقط قم بتشغيلها، تدعم تاريخ الدردشة غير المحدود ومزامنة السحابة العالمية، والمزيد من الميزات المتقدمة بانتظار استكشافها معًا.",
|
|
8
|
+
"descOnMobile": "نحن نقدم {{credit}} نقطة حساب مجانية لجميع المستخدمين المسجلين، بدون الحاجة إلى إعدادات معقدة، فقط قم بالاستخدام.",
|
|
9
|
+
"title": "مرحبًا بك في التجربة {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "جاري تشغيل التطبيق، يرجى الانتظار...",
|
|
5
13
|
"autoGenerate": "توليد تلقائي",
|
|
6
14
|
"autoGenerateTooltip": "إكمال تلقائي بناءً على الكلمات المقترحة لوصف المساعد",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "مستخدم مجهول",
|
|
208
216
|
"billing": "إدارة الفواتير",
|
|
217
|
+
"cloud": "تجربة {{name}}",
|
|
209
218
|
"data": "تخزين البيانات",
|
|
210
219
|
"defaultNickname": "مستخدم النسخة المجتمعية",
|
|
211
220
|
"discord": "الدعم المجتمعي",
|
package/locales/bg-BG/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Създай копие",
|
|
100
100
|
"export": "Експортирай тема"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Да се отвори ли нова тема?",
|
|
103
|
+
"checkSaveCurrentMessages": "Искате ли да запазите текущата сесия като тема?",
|
|
102
104
|
"confirmRemoveAll": "На път си да изтриеш всички теми. След като бъдат изтрити, те не могат да бъдат възстановени. Моля, продължи с повишено внимание.",
|
|
103
105
|
"confirmRemoveTopic": "На път си да изтриеш тази тема. След като бъде изтрита, тя не може да бъде възстановена. Моля, продължи с повишено внимание.",
|
|
104
106
|
"confirmRemoveUnstarred": "На път си да изтриеш немаркираните теми. След като бъдат изтрити, те не могат да бъдат възстановени. Моля, продължи с повишено внимание.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Относно",
|
|
3
3
|
"advanceSettings": "Разширени настройки",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Безплатен пробен период",
|
|
7
|
+
"desc": "Предлагаме на всички регистрирани потребители {{credit}} безплатни изчислителни точки, без необходимост от сложна конфигурация, готови за употреба, поддържащи неограничен обем на историята на разговорите и глобална синхронизация в облака. Очакват ви още много напреднали функции за изследване.",
|
|
8
|
+
"descOnMobile": "Предлагаме {{credit}} безплатни изчислителни точки на всички регистрирани потребители, без необходимост от сложна конфигурация, готови за употреба.",
|
|
9
|
+
"title": "Добре дошли в {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Приложението се стартира, моля, бъдете търпеливи...",
|
|
5
13
|
"autoGenerate": "Автоматично генериране",
|
|
6
14
|
"autoGenerateTooltip": "Автоматично генериране на описание на агент въз основа на подкани",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Анонимен потребител",
|
|
208
216
|
"billing": "Управление на сметките",
|
|
217
|
+
"cloud": "Изпробвайте {{name}}",
|
|
209
218
|
"data": "Съхранение на данни",
|
|
210
219
|
"defaultNickname": "Потребител на общността",
|
|
211
220
|
"discord": "Поддръжка на общността",
|
package/locales/de-DE/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Kopie erstellen",
|
|
100
100
|
"export": "Thema exportieren"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Soll ein neues Thema eröffnet werden?",
|
|
103
|
+
"checkSaveCurrentMessages": "Möchten Sie die aktuelle Konversation als Thema speichern?",
|
|
102
104
|
"confirmRemoveAll": "Möchtest du wirklich alle Themen löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
103
105
|
"confirmRemoveTopic": "Möchtest du dieses Thema wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
104
106
|
"confirmRemoveUnstarred": "Möchtest du die nicht markierten Themen wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Über",
|
|
3
3
|
"advanceSettings": "Erweiterte Einstellungen",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Kostenlose Testversion",
|
|
7
|
+
"desc": "Wir bieten allen registrierten Benutzern {{credit}} kostenlose Berechnungspunkte an, ohne komplizierte Konfiguration, sofort einsatzbereit, unterstützt unbegrenzte Chat-Verlaufsprotokolle und globale Cloud-Synchronisierung. Entdecken Sie gemeinsam weitere fortschrittliche Funktionen.",
|
|
8
|
+
"descOnMobile": "Wir bieten allen registrierten Benutzern {{credit}} kostenlose Rechenpunkte, die ohne komplizierte Konfiguration sofort einsatzbereit sind.",
|
|
9
|
+
"title": "Willkommen bei {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Die App wird gestartet, bitte haben Sie etwas Geduld...",
|
|
5
13
|
"autoGenerate": "Automatisch generieren",
|
|
6
14
|
"autoGenerateTooltip": "Assistentenbeschreibung automatisch auf Basis von Vorschlägen vervollständigen",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Anonymer Benutzer",
|
|
208
216
|
"billing": "Abrechnung verwalten",
|
|
217
|
+
"cloud": "Erleben Sie {{name}}",
|
|
209
218
|
"data": "Daten speichern",
|
|
210
219
|
"defaultNickname": "Community User",
|
|
211
220
|
"discord": "Community-Support",
|
package/locales/en-US/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Create Copy",
|
|
100
100
|
"export": "Export Topic"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Enable new topic?",
|
|
103
|
+
"checkSaveCurrentMessages": "Do you want to save the current conversation as a topic?",
|
|
102
104
|
"confirmRemoveAll": "You are about to delete all topics. Once deleted, they cannot be recovered. Please proceed with caution.",
|
|
103
105
|
"confirmRemoveTopic": "You are about to delete this topic. Once deleted, it cannot be recovered. Please proceed with caution.",
|
|
104
106
|
"confirmRemoveUnstarred": "You are about to delete unstarred topics. Once deleted, they cannot be recovered. Please proceed with caution.",
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "About",
|
|
3
3
|
"advanceSettings": "Advanced Settings",
|
|
4
|
-
"
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Free Trial",
|
|
7
|
+
"desc": "We offer {{credit}} free computing credits to all registered users, no complex configuration required, ready to use out of the box, support unlimited conversation history and global cloud synchronization.",
|
|
8
|
+
"descOnMobile": "We provide {{credit}} free computing credits for all registered users, ready to use without complex configuration.",
|
|
9
|
+
"title": "Launch {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"appInitializing": "The application is initializing, please wait for a moment...",
|
|
5
13
|
"autoGenerate": "Auto Generate",
|
|
6
14
|
"autoGenerateTooltip": "Auto-generate assistant description based on prompts",
|
|
7
15
|
"autoGenerateTooltipDisabled": "Please enter a tooltip before using the autocomplete feature",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Anonymous User",
|
|
208
216
|
"billing": "Billing Management",
|
|
217
|
+
"cloud": "Launch {{name}}",
|
|
209
218
|
"data": "Data Storage",
|
|
210
219
|
"defaultNickname": "Community User",
|
|
211
220
|
"discord": "Community Support",
|
|
@@ -217,7 +226,7 @@
|
|
|
217
226
|
"plans": "Subscription Plans",
|
|
218
227
|
"preview": "Preview",
|
|
219
228
|
"profile": "Account Management",
|
|
220
|
-
"setting": "
|
|
229
|
+
"setting": "Settings",
|
|
221
230
|
"usages": "Usage Statistics"
|
|
222
231
|
},
|
|
223
232
|
"version": "Version"
|
package/locales/es-ES/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Crear copia",
|
|
100
100
|
"export": "Exportar tema"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "¿Abrir un nuevo tema?",
|
|
103
|
+
"checkSaveCurrentMessages": "¿Desea guardar la conversación actual como tema?",
|
|
102
104
|
"confirmRemoveAll": "Estás a punto de eliminar todos los temas. Una vez eliminados, no se podrán recuperar. Por favor, procede con precaución.",
|
|
103
105
|
"confirmRemoveTopic": "Estás a punto de eliminar este tema. Una vez eliminado, no se podrá recuperar. Por favor, procede con precaución.",
|
|
104
106
|
"confirmRemoveUnstarred": "Estás a punto de eliminar los temas no marcados como favoritos. Una vez eliminados, no se podrán recuperar. Por favor, procede con precaución.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Acerca de",
|
|
3
3
|
"advanceSettings": "Configuración avanzada",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Prueba gratuita",
|
|
7
|
+
"desc": "Ofrecemos {{credit}} créditos de cálculo gratuitos para todos los usuarios registrados, sin necesidad de configuración complicada, listos para usar, con soporte para historial de conversaciones ilimitado y sincronización en la nube global. ¡Explora más funciones avanzadas juntos!",
|
|
8
|
+
"descOnMobile": "Ofrecemos {{credit}} créditos de cálculo gratuitos para todos los usuarios registrados, sin necesidad de configuraciones complicadas, listos para usar.",
|
|
9
|
+
"title": "Bienvenido a {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Iniciando la aplicación, por favor espere...",
|
|
5
13
|
"autoGenerate": "Generación automática",
|
|
6
14
|
"autoGenerateTooltip": "Completar automáticamente la descripción del asistente basándose en las sugerencias",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Usuario Anónimo",
|
|
208
216
|
"billing": "Gestión de facturación",
|
|
217
|
+
"cloud": "Prueba {{name}}",
|
|
209
218
|
"data": "Almacenamiento de datos",
|
|
210
219
|
"defaultNickname": "Usuario de la comunidad",
|
|
211
220
|
"discord": "Soporte de la comunidad",
|
package/locales/fr-FR/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Créer une copie",
|
|
100
100
|
"export": "Exporter le sujet"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Voulez-vous ouvrir un nouveau sujet ?",
|
|
103
|
+
"checkSaveCurrentMessages": "Voulez-vous enregistrer la conversation actuelle en tant que sujet ?",
|
|
102
104
|
"confirmRemoveAll": "Vous êtes sur le point de supprimer tous les sujets. Cette action est irréversible. Veuillez confirmer.",
|
|
103
105
|
"confirmRemoveTopic": "Vous êtes sur le point de supprimer ce sujet. Cette action est irréversible. Veuillez confirmer.",
|
|
104
106
|
"confirmRemoveUnstarred": "Vous êtes sur le point de supprimer les sujets non favoris. Cette action est irréversible. Veuillez confirmer.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "À propos",
|
|
3
3
|
"advanceSettings": "Paramètres avancés",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Découvrir gratuitement",
|
|
7
|
+
"desc": "Nous offrons {{credit}} crédits de calcul gratuits à tous les utilisateurs inscrits, sans configuration compliquée, prêts à l'emploi, prenant en charge l'historique des conversations illimité et la synchronisation cloud globale. Découvrez davantage de fonctionnalités avancées ensemble.",
|
|
8
|
+
"descOnMobile": "Nous offrons {{credit}} crédits de calcul gratuits à tous les utilisateurs inscrits, sans configuration compliquée, prêts à l'emploi.",
|
|
9
|
+
"title": "Bienvenue à {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "L'application est en cours de démarrage, veuillez patienter...",
|
|
5
13
|
"autoGenerate": "Générer automatiquement",
|
|
6
14
|
"autoGenerateTooltip": "Générer automatiquement la description de l'agent basée sur les suggestions",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Utilisateur anonyme",
|
|
208
216
|
"billing": "Gestion de la facturation",
|
|
217
|
+
"cloud": "Découvrir {{name}}",
|
|
209
218
|
"data": "Stockage des données",
|
|
210
219
|
"defaultNickname": "Utilisateur de la version communautaire",
|
|
211
220
|
"discord": "Support de la communauté",
|
package/locales/it-IT/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Crea copia",
|
|
100
100
|
"export": "Esporta argomento"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Abilitare un nuovo argomento?",
|
|
103
|
+
"checkSaveCurrentMessages": "Vuoi salvare la conversazione attuale come argomento?",
|
|
102
104
|
"confirmRemoveAll": "Stai per rimuovere tutti gli argomenti, questa operazione non potrà essere annullata. Procedere con cautela.",
|
|
103
105
|
"confirmRemoveTopic": "Stai per rimuovere questo argomento, l'operazione non potrà essere annullata. Procedere con cautela.",
|
|
104
106
|
"confirmRemoveUnstarred": "Stai per rimuovere gli argomenti non contrassegnati, questa operazione non potrà essere annullata. Procedere con cautela.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Informazioni",
|
|
3
3
|
"advanceSettings": "Impostazioni avanzate",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Provalo gratuitamente",
|
|
7
|
+
"desc": "Abbiamo fornito a tutti gli utenti registrati {{credit}} crediti di calcolo gratuiti, senza la necessità di configurazioni complesse, pronto all'uso, supporta la cronologia delle conversazioni illimitata e la sincronizzazione cloud globale. Ci sono molte altre funzionalità avanzate che ti aspettano da scoprire.",
|
|
8
|
+
"descOnMobile": "Offriamo a tutti gli utenti registrati {{credit}} crediti di calcolo gratuiti, pronti all'uso senza configurazioni complesse.",
|
|
9
|
+
"title": "Benvenuto a {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Inizializzazione dell'app in corso, attendere pazientemente...",
|
|
5
13
|
"autoGenerate": "Generazione automatica",
|
|
6
14
|
"autoGenerateTooltip": "Completamento automatico basato su suggerimenti",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Utente Anonimo",
|
|
208
216
|
"billing": "Gestione fatturazione",
|
|
217
|
+
"cloud": "Prova {{name}}",
|
|
209
218
|
"data": "Archiviazione dati",
|
|
210
219
|
"defaultNickname": "Utente Community",
|
|
211
220
|
"discord": "Supporto della community",
|
package/locales/ja-JP/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "コピーを作成",
|
|
100
100
|
"export": "トピックをエクスポート"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "新しいトピックを開始しますか?",
|
|
103
|
+
"checkSaveCurrentMessages": "現在の会話をトピックとして保存しますか?",
|
|
102
104
|
"confirmRemoveAll": "すべてのトピックを削除します。削除した後は元に戻すことはできません。注意して操作してください。",
|
|
103
105
|
"confirmRemoveTopic": "このトピックを削除します。削除した後は元に戻すことはできません。注意して操作してください。",
|
|
104
106
|
"confirmRemoveUnstarred": "スターをつけていないトピックを削除します。削除した後は元に戻すことはできません。注意して操作してください。",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "概要",
|
|
3
3
|
"advanceSettings": "高度な設定",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "無料体験",
|
|
7
|
+
"desc": "我々はすべての登録ユーザーに {{credit}} 無料の計算ポイントを提供しています。複雑な設定は不要で、すぐに使用できます。無制限の会話履歴とグローバルクラウド同期をサポートし、さらに多くの高度な機能があなたを待っています。",
|
|
8
|
+
"descOnMobile": "すべての登録ユーザーに {{credit}} の無料コンピューティングポイントを提供しています。複雑な設定は不要で、すぐにご利用いただけます。",
|
|
9
|
+
"title": "{{name}} を体験してみてください"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "アプリケーションを初期化しています。しばらくお待ちください...",
|
|
5
13
|
"autoGenerate": "自動生成",
|
|
6
14
|
"autoGenerateTooltip": "ヒントに基づいてエージェントの説明を自動生成します",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "匿名ユーザー",
|
|
208
216
|
"billing": "請求管理",
|
|
217
|
+
"cloud": "{{name}} を体験",
|
|
209
218
|
"data": "データストレージ",
|
|
210
219
|
"defaultNickname": "コミュニティユーザー",
|
|
211
220
|
"discord": "コミュニティサポート",
|
package/locales/ko-KR/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "복사본 만들기",
|
|
100
100
|
"export": "주제 내보내기"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "새 주제를 열까요?",
|
|
103
|
+
"checkSaveCurrentMessages": "현재 대화를 주제로 저장하시겠습니까?",
|
|
102
104
|
"confirmRemoveAll": "모든 주제를 삭제하시면 되돌릴 수 없습니다. 신중하게 작업하시겠습니까?",
|
|
103
105
|
"confirmRemoveTopic": "이 주제를 삭제하시면 되돌릴 수 없습니다. 신중하게 작업하시겠습니까?",
|
|
104
106
|
"confirmRemoveUnstarred": "별표가 없는 주제를 삭제하시면 되돌릴 수 없습니다. 신중하게 작업하시겠습니까?",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "소개",
|
|
3
3
|
"advanceSettings": "고급 설정",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "무료 체험",
|
|
7
|
+
"desc": "우리는 모든 등록 사용자에게 {{credit}}의 무료 계산 포인트를 제공합니다. 복잡한 설정이 필요 없이 즉시 사용할 수 있으며, 무제한 대화 기록 및 전역 클라우드 동기화를 지원합니다. 더 많은 고급 기능을 함께 탐험해 보세요.",
|
|
8
|
+
"descOnMobile": "모든 등록 사용자에게 {{credit}}의 무료 계산 포인트를 제공하며, 복잡한 설정 없이 즉시 사용할 수 있습니다.",
|
|
9
|
+
"title": "환영합니다 {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "앱을 시작하는 중입니다. 잠시 기다려주세요...",
|
|
5
13
|
"autoGenerate": "자동 생성",
|
|
6
14
|
"autoGenerateTooltip": "힌트 단어를 기반으로 에이전트 설명을 자동으로 완성합니다",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "익명 사용자",
|
|
208
216
|
"billing": "결제 관리",
|
|
217
|
+
"cloud": "체험 {{name}}",
|
|
209
218
|
"data": "데이터 저장",
|
|
210
219
|
"defaultNickname": "커뮤니티 사용자",
|
|
211
220
|
"discord": "커뮤니티 지원",
|
package/locales/nl-NL/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Dupliceren",
|
|
100
100
|
"export": "Exporteren"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Is het openen van een nieuw onderwerp ingeschakeld?",
|
|
103
|
+
"checkSaveCurrentMessages": "Wil je het huidige gesprek opslaan als onderwerp?",
|
|
102
104
|
"confirmRemoveAll": "Alle onderwerpen worden verwijderd en kunnen niet worden hersteld. Wees voorzichtig.",
|
|
103
105
|
"confirmRemoveTopic": "Dit onderwerp wordt verwijderd en kan niet worden hersteld. Wees voorzichtig.",
|
|
104
106
|
"confirmRemoveUnstarred": "Niet-gefavoriseerde onderwerpen worden verwijderd en kunnen niet worden hersteld. Wees voorzichtig.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Over",
|
|
3
3
|
"advanceSettings": "Geavanceerde instellingen",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Gratis proberen",
|
|
7
|
+
"desc": "We bieden alle geregistreerde gebruikers {{credit}} gratis rekenpunten aan, zonder ingewikkelde configuratie, direct klaar voor gebruik. Ondersteunt onbeperkte chatgeschiedenis en wereldwijde cloudsynchronisatie. Ontdek samen meer geavanceerde functies.",
|
|
8
|
+
"descOnMobile": "We bieden alle geregistreerde gebruikers {{credit}} gratis rekenpunten aan, zonder ingewikkelde configuratie direct klaar voor gebruik.",
|
|
9
|
+
"title": "Welkom bij {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Applicatie wordt gestart, gelieve geduld te hebben...",
|
|
5
13
|
"autoGenerate": "Automatisch genereren",
|
|
6
14
|
"autoGenerateTooltip": "Automatisch assistentbeschrijving genereren op basis van suggesties",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "anonieme gebruiker",
|
|
208
216
|
"billing": "facturatie",
|
|
217
|
+
"cloud": "Ervaar {{name}}",
|
|
209
218
|
"data": "gegevensopslag",
|
|
210
219
|
"defaultNickname": "communitygebruiker",
|
|
211
220
|
"discord": "communityondersteuning",
|
package/locales/pl-PL/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Utwórz kopię",
|
|
100
100
|
"export": "Eksportuj temat"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Czy otworzyć nowy temat?",
|
|
103
|
+
"checkSaveCurrentMessages": "Czy zapisać bieżącą rozmowę jako temat?",
|
|
102
104
|
"confirmRemoveAll": "Czy na pewno chcesz usunąć wszystkie tematy? Tej operacji nie można cofnąć. Proszę potwierdź swoją decyzję.",
|
|
103
105
|
"confirmRemoveTopic": "Czy na pewno chcesz usunąć ten temat? Tej operacji nie można cofnąć. Proszę potwierdź swoją decyzję.",
|
|
104
106
|
"confirmRemoveUnstarred": "Czy na pewno chcesz usunąć nieoznaczone tematy? Tej operacji nie można cofnąć. Proszę potwierdź swoją decyzję.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "O nas",
|
|
3
3
|
"advanceSettings": "Zaawansowane ustawienia",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Darmowa wersja próbna",
|
|
7
|
+
"desc": "Dla wszystkich zarejestrowanych użytkowników mamy {{credit}} bezpłatnych punktów obliczeniowych, gotowych do użycia bez konieczności skomplikowanej konfiguracji. Wsparcie dla nieograniczonej historii rozmów i globalnej synchronizacji w chmurze. Czekają na Ciebie zaawansowane funkcje do odkrycia.",
|
|
8
|
+
"descOnMobile": "Dla wszystkich zarejestrowanych użytkowników oferujemy {{credit}} bezpłatnych punktów obliczeniowych, gotowych do użycia bez konieczności skomplikowanej konfiguracji.",
|
|
9
|
+
"title": "Witaj w {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Inicjowanie aplikacji, prosimy o cierpliwość...",
|
|
5
13
|
"autoGenerate": "Automatyczne generowanie",
|
|
6
14
|
"autoGenerateTooltip": "Automatyczne uzupełnianie opisu asystenta na podstawie sugestii",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Użytkownik Anonimowy",
|
|
208
216
|
"billing": "Zarządzanie rachunkami",
|
|
217
|
+
"cloud": "Wypróbuj {{name}}",
|
|
209
218
|
"data": "Przechowywanie danych",
|
|
210
219
|
"defaultNickname": "Użytkownik Wersji Społecznościowej",
|
|
211
220
|
"discord": "Wsparcie społeczności",
|
package/locales/pt-BR/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Criar Cópia",
|
|
100
100
|
"export": "Exportar Tópico"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Deseja abrir um novo tópico?",
|
|
103
|
+
"checkSaveCurrentMessages": "Salvar a conversa atual como tópico?",
|
|
102
104
|
"confirmRemoveAll": "Você está prestes a remover todos os tópicos. Depois de remover, não será possível recuperá-los. Por favor, confirme sua ação.",
|
|
103
105
|
"confirmRemoveTopic": "Você está prestes a remover este tópico. Depois de remover, não será possível recuperá-lo. Por favor, confirme sua ação.",
|
|
104
106
|
"confirmRemoveUnstarred": "Você está prestes a remover os tópicos não favoritados. Depois de remover, não será possível recuperá-los. Por favor, confirme sua ação.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Sobre",
|
|
3
3
|
"advanceSettings": "Configurações avançadas",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Experimente de graça",
|
|
7
|
+
"desc": "Oferecemos {{credit}} pontos de computação gratuitos para todos os usuários registrados, sem necessidade de configuração complicada, pronto para uso, suporta histórico de conversas ilimitado e sincronização em nuvem global. Mais recursos avançados esperam por você para explorar.",
|
|
8
|
+
"descOnMobile": "Oferecemos {{credit}} créditos de computação gratuitos para todos os usuários registrados, sem necessidade de configurações complicadas, pronto para uso.",
|
|
9
|
+
"title": "Bem-vindo para experimentar {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Inicializando o aplicativo, por favor, aguarde...",
|
|
5
13
|
"autoGenerate": "Auto completar",
|
|
6
14
|
"autoGenerateTooltip": "Auto completar descrição do assistente com base em sugestões",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Usuário Anônimo",
|
|
208
216
|
"billing": "Gerenciamento de faturas",
|
|
217
|
+
"cloud": "Experimente {{name}}",
|
|
209
218
|
"data": "Armazenamento de dados",
|
|
210
219
|
"defaultNickname": "Usuário da Comunidade",
|
|
211
220
|
"discord": "Suporte da Comunidade",
|
package/locales/ru-RU/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Создать копию",
|
|
100
100
|
"export": "Экспорт темы"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Открыть новую тему?",
|
|
103
|
+
"checkSaveCurrentMessages": "Сохранить текущий разговор как тему?",
|
|
102
104
|
"confirmRemoveAll": "Вы уверены, что хотите удалить все темы? После этого их нельзя будет восстановить.",
|
|
103
105
|
"confirmRemoveTopic": "Вы уверены, что хотите удалить эту тему? После этого ее нельзя будет восстановить.",
|
|
104
106
|
"confirmRemoveUnstarred": "Вы уверены, что хотите удалить неотмеченные темы? После этого их нельзя будет восстановить.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "О нас",
|
|
3
3
|
"advanceSettings": "Расширенные настройки",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Бесплатный опыт",
|
|
7
|
+
"desc": "Мы предоставляем {{credit}} бесплатных вычислительных баллов для всех зарегистрированных пользователей, не требуется сложная настройка, просто распакуйте и используйте, поддерживает бесконечную историю диалогов и глобальную синхронизацию в облаке. Больше продвинутых функций ждут вас для исследования.",
|
|
8
|
+
"descOnMobile": "Мы предоставляем {{credit}} бесплатных вычислительных баллов для всех зарегистрированных пользователей, не требуется сложная настройка, просто распакуйте и используйте.",
|
|
9
|
+
"title": "Добро пожаловать в {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Приложение запускается, пожалуйста, подождите...",
|
|
5
13
|
"autoGenerate": "Автозаполнение",
|
|
6
14
|
"autoGenerateTooltip": "Автоматическое дополнение описания агента на основе подсказок",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Анонимный пользователь",
|
|
208
216
|
"billing": "Управление счетами",
|
|
217
|
+
"cloud": "Опыт {{name}}",
|
|
209
218
|
"data": "Хранилище данных",
|
|
210
219
|
"defaultNickname": "Пользователь сообщества",
|
|
211
220
|
"discord": "Поддержка сообщества",
|
package/locales/tr-TR/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Kopya Oluştur",
|
|
100
100
|
"export": "Konuyu Dışa Aktar"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Yeni bir konu açılsın mı?",
|
|
103
|
+
"checkSaveCurrentMessages": "Mevcut sohbeti konu olarak kaydetmek istiyor musunuz?",
|
|
102
104
|
"confirmRemoveAll": "Tüm konuları silmek üzeresiniz. Bir kere silindiğinde, geri alınamazlar. Lütfen dikkatli bir şekilde devam edin.",
|
|
103
105
|
"confirmRemoveTopic": "Bu konuyu silmek üzeresiniz. Bir kere silindiğinde, geri alınamaz. Lütfen dikkatli bir şekilde devam edin.",
|
|
104
106
|
"confirmRemoveUnstarred": "Yıldızlanmamış konuları silmek üzeresiniz. Bir kere silindiğinde, geri alınamazlar. Lütfen dikkatli bir şekilde devam edin.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Hakkında",
|
|
3
3
|
"advanceSettings": "Gelişmiş Ayarlar",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Ücretsiz Deneyin",
|
|
7
|
+
"desc": "Tüm kayıtlı kullanıcılarımıza {{credit}} ücretsiz hesaplama puanı sunuyoruz, karmaşık yapılandırmaya gerek yok, hemen kullanıma hazır, sınırsız konuşma geçmişi ve global bulut senkronizasyonu desteği, daha fazla gelişmiş özellikleri keşfetmeye hazır olun.",
|
|
8
|
+
"descOnMobile": "Tüm kayıtlı kullanıcılara {{credit}} ücretsiz hesaplama puanı sunuyoruz, karmaşık yapılandırmaya gerek yok, hemen kullanıma hazır.",
|
|
9
|
+
"title": "{{name}}'i Denemek İçin Hoş Geldiniz"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Uygulama başlatılıyor, lütfen bekleyin...",
|
|
5
13
|
"autoGenerate": "Otomatik Oluştur",
|
|
6
14
|
"autoGenerateTooltip": "Auto-generate agent description based on prompts",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Anonim Kullanıcı",
|
|
208
216
|
"billing": "Fatura Yönetimi",
|
|
217
|
+
"cloud": "{{name}}'i Deneyin",
|
|
209
218
|
"data": "Veri Depolama",
|
|
210
219
|
"defaultNickname": "Topluluk Kullanıcısı",
|
|
211
220
|
"discord": "Topluluk Destek",
|
package/locales/vi-VN/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "Tạo bản sao",
|
|
100
100
|
"export": "Xuất chủ đề"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "Có muốn mở chủ đề mới không?",
|
|
103
|
+
"checkSaveCurrentMessages": "Bạn có muốn lưu cuộc trò chuyện hiện tại thành chủ đề không?",
|
|
102
104
|
"confirmRemoveAll": "Bạn sắp xóa tất cả chủ đề. Hành động này không thể hoàn tác, vui lòng xác nhận.",
|
|
103
105
|
"confirmRemoveTopic": "Bạn sắp xóa chủ đề này. Hành động này không thể hoàn tác, vui lòng xác nhận.",
|
|
104
106
|
"confirmRemoveUnstarred": "Bạn sắp xóa các chủ đề chưa được đánh dấu. Hành động này không thể hoàn tác, vui lòng xác nhận.",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "Giới thiệu",
|
|
3
3
|
"advanceSettings": "Cài đặt nâng cao",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "Trải nghiệm miễn phí",
|
|
7
|
+
"desc": "Chúng tôi cung cấp {{credit}} điểm tính toán miễn phí cho tất cả người dùng đăng ký, không cần cấu hình phức tạp, sẵn sàng sử dụng ngay, hỗ trợ lưu trữ vô hạn lịch sử trò chuyện và đồng bộ toàn cầu, cùng nhiều tính năng cao cấp khác đang chờ bạn khám phá.",
|
|
8
|
+
"descOnMobile": "Chúng tôi cung cấp {{credit}} điểm tính toán miễn phí cho tất cả người dùng đăng ký, không cần cấu hình phức tạp, sẵn sàng sử dụng ngay.",
|
|
9
|
+
"title": "Chào mừng bạn trải nghiệm {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "Ứng dụng đang khởi động, vui lòng chờ...",
|
|
5
13
|
"autoGenerate": "Tự động tạo",
|
|
6
14
|
"autoGenerateTooltip": "Tự động hoàn thành mô tả trợ lý dựa trên từ gợi ý",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "Người dùng ẩn danh",
|
|
208
216
|
"billing": "Quản lý hóa đơn",
|
|
217
|
+
"cloud": "Trải nghiệm {{name}}",
|
|
209
218
|
"data": "Lưu trữ dữ liệu",
|
|
210
219
|
"defaultNickname": "Người dùng phiên bản cộng đồng",
|
|
211
220
|
"discord": "Hỗ trợ cộng đồng",
|
|
@@ -361,8 +361,14 @@
|
|
|
361
361
|
},
|
|
362
362
|
"desc": "Truyền thông dữ liệu thời gian thực, điểm-điểm, cần thiết bị cùng online mới có thể đồng bộ",
|
|
363
363
|
"enabled": {
|
|
364
|
+
"invalid": "Vui lòng nhập địa chỉ máy chủ tín hiệu và tên kênh đồng bộ trước khi bật",
|
|
364
365
|
"title": "Bật đồng bộ"
|
|
365
366
|
},
|
|
367
|
+
"signaling": {
|
|
368
|
+
"desc": "WebRTC sẽ sử dụng địa chỉ này để đồng bộ",
|
|
369
|
+
"placeholder": "Vui lòng nhập địa chỉ máy chủ tín hiệu",
|
|
370
|
+
"title": "Máy chủ tín hiệu"
|
|
371
|
+
},
|
|
366
372
|
"title": "WebRTC Đồng bộ"
|
|
367
373
|
}
|
|
368
374
|
},
|
|
@@ -406,15 +412,5 @@
|
|
|
406
412
|
"store": "Cửa hàng tiện ích"
|
|
407
413
|
},
|
|
408
414
|
"title": "Công cụ mở rộng"
|
|
409
|
-
},
|
|
410
|
-
"webrtc": {
|
|
411
|
-
"enabled": {
|
|
412
|
-
"invalid": "请填写信令服务器和同步频道名称后再开启"
|
|
413
|
-
},
|
|
414
|
-
"signaling": {
|
|
415
|
-
"desc": "WebRTC sẽ sử dụng địa chỉ này để đồng bộ",
|
|
416
|
-
"placeholder": "Vui lòng nhập địa chỉ máy chủ tín hiệu",
|
|
417
|
-
"title": "Máy chủ tín hiệu"
|
|
418
|
-
}
|
|
419
415
|
}
|
|
420
416
|
}
|
package/locales/zh-CN/chat.json
CHANGED
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
"duplicate": "创建副本",
|
|
100
100
|
"export": "导出话题"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "是否开启新话题?",
|
|
102
103
|
"confirmRemoveAll": "即将删除全部话题,删除后将不可恢复,请谨慎操作。",
|
|
103
104
|
"confirmRemoveTopic": "即将删除该话题,删除后将不可恢复,请谨慎操作。",
|
|
104
105
|
"confirmRemoveUnstarred": "即将删除未收藏话题,删除后将不可恢复,请谨慎操作。",
|
|
@@ -112,6 +113,7 @@
|
|
|
112
113
|
"openNewTopic": "开启新话题",
|
|
113
114
|
"removeAll": "删除全部话题",
|
|
114
115
|
"removeUnstarred": "删除未收藏话题",
|
|
116
|
+
"checkSaveCurrentMessages": "是否保存当前会话为话题?",
|
|
115
117
|
"saveCurrentMessages": "将当前会话保存为话题",
|
|
116
118
|
"searchPlaceholder": "搜索话题...",
|
|
117
119
|
"title": "话题"
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "关于",
|
|
3
3
|
"advanceSettings": "高级设置",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "立即体验",
|
|
7
|
+
"desc": "我们为所有注册用户提供了免费的 {{credit}} 额度计算积分,无需复杂配置开箱即用, 支持全局云同步与进阶联网查询,更多高级特性等你探索。",
|
|
8
|
+
"descOnMobile": "我们为所有注册用户提供了免费的 {{credit}} 额度计算积分,无需复杂配置开箱即用。",
|
|
9
|
+
"title": "{{name}} 开始公测"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "应用启动中,请耐心等待...",
|
|
5
13
|
"autoGenerate": "自动补全",
|
|
6
14
|
"autoGenerateTooltip": "基于提示词自动补全助手描述",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "匿名用户",
|
|
208
216
|
"billing": "账单管理",
|
|
217
|
+
"cloud": "体验 {{name}}",
|
|
209
218
|
"data": "数据存储",
|
|
210
219
|
"defaultNickname": "社区版用户",
|
|
211
220
|
"discord": "社区支持",
|
package/locales/zh-TW/chat.json
CHANGED
|
@@ -99,6 +99,8 @@
|
|
|
99
99
|
"duplicate": "建立副本",
|
|
100
100
|
"export": "匯出主題"
|
|
101
101
|
},
|
|
102
|
+
"checkOpenNewTopic": "是否開啟新主題?",
|
|
103
|
+
"checkSaveCurrentMessages": "是否將當前對話保存為話題?",
|
|
102
104
|
"confirmRemoveAll": "即將刪除全部話題,刪除後將不可恢復,請謹慎操作。",
|
|
103
105
|
"confirmRemoveTopic": "即將刪除該話題,刪除後將不可恢復,請謹慎操作。",
|
|
104
106
|
"confirmRemoveUnstarred": "即將刪除未收藏話題,刪除後將不可恢復,請謹慎操作。",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"about": "關於",
|
|
3
3
|
"advanceSettings": "進階設定",
|
|
4
|
+
"alert": {
|
|
5
|
+
"cloud": {
|
|
6
|
+
"action": "免費體驗",
|
|
7
|
+
"desc": "我們為所有註冊用戶提供了 {{credit}} 免費的計算積分,無需複雜配置開箱即用,支持無限對話歷史記錄與全局雲同步,更多高級特性等你一起探索。",
|
|
8
|
+
"descOnMobile": "我們為所有註冊用戶提供了 {{credit}} 免費的計算積分,無需複雜配置即可使用。",
|
|
9
|
+
"title": "歡迎體驗 {{name}}"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
4
12
|
"appInitializing": "應用程式初始化中,請耐心等候...",
|
|
5
13
|
"autoGenerate": "自動生成",
|
|
6
14
|
"autoGenerateTooltip": "基於提示詞自動生成助手描述",
|
|
@@ -206,6 +214,7 @@
|
|
|
206
214
|
"userPanel": {
|
|
207
215
|
"anonymousNickName": "匿名使用者",
|
|
208
216
|
"billing": "帳單管理",
|
|
217
|
+
"cloud": "體驗 {{name}}",
|
|
209
218
|
"data": "資料儲存",
|
|
210
219
|
"defaultNickname": "社群版使用者",
|
|
211
220
|
"discord": "社區支援",
|
package/next-sitemap.config.mjs
CHANGED
|
@@ -4,7 +4,7 @@ const isVercelPreview = process.env.VERCEL === '1' && process.env.VERCEL_ENV !==
|
|
|
4
4
|
|
|
5
5
|
const vercelPreviewUrl = `https://${process.env.VERCEL_URL}`;
|
|
6
6
|
|
|
7
|
-
const siteUrl = isVercelPreview ? vercelPreviewUrl : 'https://
|
|
7
|
+
const siteUrl = isVercelPreview ? vercelPreviewUrl : 'https://lobechat.com';
|
|
8
8
|
|
|
9
9
|
/** @type {import('next-sitemap').IConfig} */
|
|
10
10
|
const config = {
|
|
@@ -46,8 +46,8 @@ const config = {
|
|
|
46
46
|
|
|
47
47
|
return paths;
|
|
48
48
|
},
|
|
49
|
-
siteUrl,
|
|
50
49
|
generateRobotsTxt: true,
|
|
50
|
+
siteUrl,
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
export default config;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/chat",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
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",
|
|
@@ -170,6 +170,7 @@
|
|
|
170
170
|
"random-words": "^2.0.1",
|
|
171
171
|
"react": "^18.3.1",
|
|
172
172
|
"react-dom": "^18.3.1",
|
|
173
|
+
"react-fast-marquee": "^1.6.5",
|
|
173
174
|
"react-hotkeys-hook": "^4.5.0",
|
|
174
175
|
"react-i18next": "14.0.2",
|
|
175
176
|
"react-layout-kit": "^1.9.0",
|
|
@@ -4,7 +4,9 @@ import { useTheme } from 'antd-style';
|
|
|
4
4
|
import { memo } from 'react';
|
|
5
5
|
import { Flexbox } from 'react-layout-kit';
|
|
6
6
|
|
|
7
|
+
import CloudBanner, { BANNER_HEIGHT } from '@/features/AlertBanner/CloudBanner';
|
|
7
8
|
import { usePlatform } from '@/hooks/usePlatform';
|
|
9
|
+
import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
|
|
8
10
|
|
|
9
11
|
import { LayoutProps } from './type';
|
|
10
12
|
|
|
@@ -12,19 +14,24 @@ const Layout = memo<LayoutProps>(({ children, nav }) => {
|
|
|
12
14
|
const { isPWA } = usePlatform();
|
|
13
15
|
const theme = useTheme();
|
|
14
16
|
|
|
17
|
+
const { showCloudPromotion } = useServerConfigStore(featureFlagsSelectors);
|
|
18
|
+
|
|
15
19
|
return (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
<>
|
|
21
|
+
{showCloudPromotion && <CloudBanner />}
|
|
22
|
+
<Flexbox
|
|
23
|
+
height={showCloudPromotion ? `calc(100% - ${BANNER_HEIGHT}px)` : '100%'}
|
|
24
|
+
horizontal
|
|
25
|
+
style={{
|
|
26
|
+
borderTop: isPWA ? `1px solid ${theme.colorBorder}` : undefined,
|
|
27
|
+
position: 'relative',
|
|
28
|
+
}}
|
|
29
|
+
width={'100%'}
|
|
30
|
+
>
|
|
31
|
+
{nav}
|
|
32
|
+
{children}
|
|
33
|
+
</Flexbox>
|
|
34
|
+
</>
|
|
28
35
|
);
|
|
29
36
|
});
|
|
30
37
|
|
|
@@ -4,7 +4,9 @@ import { usePathname } from 'next/navigation';
|
|
|
4
4
|
import qs from 'query-string';
|
|
5
5
|
import { memo } from 'react';
|
|
6
6
|
|
|
7
|
+
import CloudBanner from '@/features/AlertBanner/CloudBanner';
|
|
7
8
|
import { useQuery } from '@/hooks/useQuery';
|
|
9
|
+
import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
|
|
8
10
|
|
|
9
11
|
import { LayoutProps } from './type';
|
|
10
12
|
|
|
@@ -16,8 +18,11 @@ const Layout = memo(({ children, nav }: LayoutProps) => {
|
|
|
16
18
|
const { url } = qs.parseUrl(pathname);
|
|
17
19
|
const showNav = !showMobileWorkspace && MOBILE_NAV_ROUTES.has(url);
|
|
18
20
|
|
|
21
|
+
const { showCloudPromotion } = useServerConfigStore(featureFlagsSelectors);
|
|
22
|
+
|
|
19
23
|
return (
|
|
20
24
|
<>
|
|
25
|
+
{showCloudPromotion && <CloudBanner mobile />}
|
|
21
26
|
{children}
|
|
22
27
|
{showNav && nav}
|
|
23
28
|
</>
|
|
@@ -14,6 +14,7 @@ import { memo, useMemo } from 'react';
|
|
|
14
14
|
import { useTranslation } from 'react-i18next';
|
|
15
15
|
import { Flexbox } from 'react-layout-kit';
|
|
16
16
|
|
|
17
|
+
import { useIsMobile } from '@/hooks/useIsMobile';
|
|
17
18
|
import { useChatStore } from '@/store/chat';
|
|
18
19
|
|
|
19
20
|
const useStyles = createStyles(({ css }) => ({
|
|
@@ -41,6 +42,8 @@ interface TopicContentProps {
|
|
|
41
42
|
const TopicContent = memo<TopicContentProps>(({ id, title, fav, showMore }) => {
|
|
42
43
|
const { t } = useTranslation('common');
|
|
43
44
|
|
|
45
|
+
const mobile = useIsMobile();
|
|
46
|
+
|
|
44
47
|
const [
|
|
45
48
|
editing,
|
|
46
49
|
favoriteTopic,
|
|
@@ -183,7 +186,7 @@ const TopicContent = memo<TopicContentProps>(({ id, title, fav, showMore }) => {
|
|
|
183
186
|
value={title}
|
|
184
187
|
/>
|
|
185
188
|
)}
|
|
186
|
-
{showMore && !editing && (
|
|
189
|
+
{(showMore || mobile) && !editing && (
|
|
187
190
|
<Dropdown
|
|
188
191
|
arrow={false}
|
|
189
192
|
menu={{
|
|
@@ -18,6 +18,8 @@ export const FeatureFlagsSchema = z.object({
|
|
|
18
18
|
welcome_suggest: z.boolean().optional(),
|
|
19
19
|
|
|
20
20
|
clerk_sign_up: z.boolean().optional(),
|
|
21
|
+
|
|
22
|
+
cloud_promotion: z.boolean().optional(),
|
|
21
23
|
});
|
|
22
24
|
|
|
23
25
|
// TypeScript 类型,从 Zod schema 生成
|
|
@@ -40,6 +42,8 @@ export const DEFAULT_FEATURE_FLAGS: IFeatureFlags = {
|
|
|
40
42
|
welcome_suggest: true,
|
|
41
43
|
|
|
42
44
|
clerk_sign_up: true,
|
|
45
|
+
|
|
46
|
+
cloud_promotion: false,
|
|
43
47
|
};
|
|
44
48
|
|
|
45
49
|
export const mapFeatureFlagsEnvToState = (config: IFeatureFlags) => {
|
|
@@ -59,5 +63,7 @@ export const mapFeatureFlagsEnvToState = (config: IFeatureFlags) => {
|
|
|
59
63
|
showWelcomeSuggest: config.welcome_suggest,
|
|
60
64
|
|
|
61
65
|
enableClerkSignUp: config.clerk_sign_up,
|
|
66
|
+
|
|
67
|
+
showCloudPromotion: config.cloud_promotion,
|
|
62
68
|
};
|
|
63
69
|
};
|
package/src/const/guide.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
EMAIL_BUSINESS,
|
|
7
7
|
EMAIL_SUPPORT,
|
|
8
8
|
GITHUB,
|
|
9
|
+
OFFICIAL_PREVIEW_URL,
|
|
9
10
|
OFFICIAL_SITE,
|
|
10
11
|
OFFICIAL_URL,
|
|
11
12
|
SELF_HOSTING_DOCUMENTS,
|
|
@@ -39,10 +40,12 @@ and offers a one-click FREE deployment for a private ChatGPT chat application, m
|
|
|
39
40
|
- [Plugin System (Function Calling)](${urlJoin(USAGE_DOCUMENTS, '/features/plugin-system')})
|
|
40
41
|
- [Agent Market (GPTs)](${urlJoin(USAGE_DOCUMENTS, '/features/agent-market')})
|
|
41
42
|
|
|
42
|
-
###
|
|
43
|
+
### Community Edition and Cloud Version
|
|
43
44
|
|
|
44
|
-
LobeChat is currently available as a community preview version, completely open-source and free of charge.
|
|
45
|
-
|
|
45
|
+
LobeChat is currently available as a community preview version, completely open-source and free of charge.
|
|
46
|
+
|
|
47
|
+
In the LobeChat Cloud version, we provide 500,000 free computing credits to all registered users. It is ready to use without complex configurations.
|
|
48
|
+
If you require more usage, you can subscribe to the Basic, Advanced, or Professional versions for a fee.
|
|
46
49
|
|
|
47
50
|
### Self Hosting
|
|
48
51
|
|
|
@@ -60,7 +63,8 @@ Learn more about [Build your own LobeChat](${SELF_HOSTING_DOCUMENTS}) by checkin
|
|
|
60
63
|
In the response, please try to pick and include the relevant links below, and if a relevant answer cannot be provided, also offer the user these related links:
|
|
61
64
|
|
|
62
65
|
- Official Website: ${OFFICIAL_SITE}
|
|
63
|
-
-
|
|
66
|
+
- Cloud Version: ${OFFICIAL_URL}
|
|
67
|
+
- Community Edition: ${OFFICIAL_PREVIEW_URL}
|
|
64
68
|
- GitHub Repository: ${GITHUB}
|
|
65
69
|
- Latest News: ${BLOG}
|
|
66
70
|
- Usage Documentation: ${USAGE_DOCUMENTS}
|
package/src/const/url.ts
CHANGED
|
@@ -6,7 +6,8 @@ import { withBasePath } from '@/utils/basePath';
|
|
|
6
6
|
import pkg from '../../package.json';
|
|
7
7
|
import { INBOX_SESSION_ID } from './session';
|
|
8
8
|
|
|
9
|
-
export const OFFICIAL_URL = 'https://
|
|
9
|
+
export const OFFICIAL_URL = 'https://lobechat.com/';
|
|
10
|
+
export const OFFICIAL_PREVIEW_URL = 'https://chat-preview.lobehub.com/';
|
|
10
11
|
export const OFFICIAL_SITE = 'https://lobehub.com/';
|
|
11
12
|
|
|
12
13
|
export const getCanonicalUrl = (path: string) => urlJoin(OFFICIAL_URL, path);
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { Icon } from '@lobehub/ui';
|
|
4
|
+
import { useSize } from 'ahooks';
|
|
5
|
+
import { Button } from 'antd';
|
|
6
|
+
import { createStyles } from 'antd-style';
|
|
7
|
+
import { ArrowRightIcon } from 'lucide-react';
|
|
8
|
+
import Link from 'next/link';
|
|
9
|
+
import { memo, useEffect, useRef, useState } from 'react';
|
|
10
|
+
import Marquee from 'react-fast-marquee';
|
|
11
|
+
import { useTranslation } from 'react-i18next';
|
|
12
|
+
import { Center, Flexbox } from 'react-layout-kit';
|
|
13
|
+
|
|
14
|
+
import { OFFICIAL_URL } from '@/const/url';
|
|
15
|
+
import { isOnServerSide } from '@/utils/env';
|
|
16
|
+
|
|
17
|
+
export const BANNER_HEIGHT = 40;
|
|
18
|
+
|
|
19
|
+
const useStyles = createStyles(({ css, token, stylish, cx, isDarkMode }) => ({
|
|
20
|
+
background: cx(
|
|
21
|
+
stylish.gradientAnimation,
|
|
22
|
+
css`
|
|
23
|
+
position: absolute;
|
|
24
|
+
|
|
25
|
+
width: max(64%, 1280px);
|
|
26
|
+
height: 100%;
|
|
27
|
+
|
|
28
|
+
opacity: 0.8;
|
|
29
|
+
filter: blur(60px);
|
|
30
|
+
`,
|
|
31
|
+
),
|
|
32
|
+
container: css`
|
|
33
|
+
position: relative;
|
|
34
|
+
overflow: hidden;
|
|
35
|
+
background-color: ${isDarkMode ? token.colorFill : token.colorFillSecondary};
|
|
36
|
+
`,
|
|
37
|
+
wrapper: css`
|
|
38
|
+
z-index: 1;
|
|
39
|
+
overflow: hidden;
|
|
40
|
+
max-width: 100%;
|
|
41
|
+
`,
|
|
42
|
+
}));
|
|
43
|
+
|
|
44
|
+
const CloudBanner = memo<{ mobile?: boolean }>(({ mobile }) => {
|
|
45
|
+
const ref = useRef(null);
|
|
46
|
+
const contentRef = useRef(null);
|
|
47
|
+
const size = useSize(ref);
|
|
48
|
+
const contentSize = useSize(contentRef);
|
|
49
|
+
const { styles } = useStyles();
|
|
50
|
+
const { t } = useTranslation('common');
|
|
51
|
+
const [isTruncated, setIsTruncated] = useState(mobile);
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (mobile || isOnServerSide || !size || !contentSize) return;
|
|
55
|
+
setIsTruncated(contentSize.width > size.width - 120);
|
|
56
|
+
}, [size, contentSize, mobile]);
|
|
57
|
+
|
|
58
|
+
const content = (
|
|
59
|
+
<Flexbox align={'center'} flex={'none'} gap={8} horizontal ref={contentRef}>
|
|
60
|
+
<b>{t('alert.cloud.title', { name: 'LobeChat Cloud' })}:</b>
|
|
61
|
+
<span>
|
|
62
|
+
{t(mobile ? 'alert.cloud.descOnMobile' : 'alert.cloud.desc', {
|
|
63
|
+
credit: new Intl.NumberFormat('en-US').format(500_000),
|
|
64
|
+
name: 'LobeChat Cloud',
|
|
65
|
+
})}
|
|
66
|
+
</span>
|
|
67
|
+
</Flexbox>
|
|
68
|
+
);
|
|
69
|
+
return (
|
|
70
|
+
<Center
|
|
71
|
+
className={styles.container}
|
|
72
|
+
flex={'none'}
|
|
73
|
+
height={BANNER_HEIGHT}
|
|
74
|
+
paddingInline={16}
|
|
75
|
+
ref={ref}
|
|
76
|
+
width={'100%'}
|
|
77
|
+
>
|
|
78
|
+
<div className={styles.background} />
|
|
79
|
+
<Center className={styles.wrapper} gap={16} horizontal width={'100%'}>
|
|
80
|
+
{isTruncated ? <Marquee pauseOnHover>{content}</Marquee> : content}
|
|
81
|
+
<Link href={OFFICIAL_URL} target={'_blank'}>
|
|
82
|
+
<Button size={'small'} type="primary">
|
|
83
|
+
{t('alert.cloud.action')} <Icon icon={ArrowRightIcon} />
|
|
84
|
+
</Button>
|
|
85
|
+
</Link>
|
|
86
|
+
</Center>
|
|
87
|
+
</Center>
|
|
88
|
+
);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
export default CloudBanner;
|
|
@@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next';
|
|
|
6
6
|
|
|
7
7
|
import HotKeys from '@/components/HotKeys';
|
|
8
8
|
import { ALT_KEY, CLEAN_MESSAGE_KEY, META_KEY } from '@/const/hotkeys';
|
|
9
|
+
import { useIsMobile } from '@/hooks/useIsMobile';
|
|
9
10
|
import { useChatStore } from '@/store/chat';
|
|
10
11
|
import { useFileStore } from '@/store/file';
|
|
11
12
|
|
|
@@ -15,6 +16,7 @@ const Clear = memo(() => {
|
|
|
15
16
|
const [clearImageList] = useFileStore((s) => [s.clearImageList]);
|
|
16
17
|
const hotkeys = [META_KEY, ALT_KEY, CLEAN_MESSAGE_KEY].join('+');
|
|
17
18
|
const [confirmOpened, updateConfirmOpened] = useState(false);
|
|
19
|
+
const mobile = useIsMobile();
|
|
18
20
|
|
|
19
21
|
const resetConversation = useCallback(async () => {
|
|
20
22
|
await clearMessage();
|
|
@@ -27,6 +29,8 @@ const Clear = memo(() => {
|
|
|
27
29
|
<HotKeys desc={t('clearCurrentMessages', { ns: 'chat' })} inverseTheme keys={hotkeys} />
|
|
28
30
|
);
|
|
29
31
|
|
|
32
|
+
const popconfirmPlacement = mobile ? 'top' : 'topRight';
|
|
33
|
+
|
|
30
34
|
return (
|
|
31
35
|
<Popconfirm
|
|
32
36
|
arrow={false}
|
|
@@ -34,14 +38,19 @@ const Clear = memo(() => {
|
|
|
34
38
|
onConfirm={resetConversation}
|
|
35
39
|
onOpenChange={updateConfirmOpened}
|
|
36
40
|
open={confirmOpened}
|
|
37
|
-
placement={
|
|
38
|
-
title={
|
|
41
|
+
placement={popconfirmPlacement}
|
|
42
|
+
title={
|
|
43
|
+
<div style={{ marginBottom: '8px', whiteSpace: 'pre-line', wordBreak: 'break-word' }}>
|
|
44
|
+
{t('confirmClearCurrentMessages', { ns: 'chat' })}
|
|
45
|
+
</div>
|
|
46
|
+
}
|
|
39
47
|
>
|
|
40
|
-
<ActionIcon
|
|
41
|
-
icon={Eraser}
|
|
48
|
+
<ActionIcon
|
|
49
|
+
icon={Eraser}
|
|
42
50
|
overlayStyle={{ maxWidth: 'none' }}
|
|
43
|
-
placement={'bottom'}
|
|
44
|
-
title={actionTitle}
|
|
51
|
+
placement={'bottom'}
|
|
52
|
+
title={actionTitle}
|
|
53
|
+
/>
|
|
45
54
|
</Popconfirm>
|
|
46
55
|
);
|
|
47
56
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ActionIcon, Icon, Tooltip } from '@lobehub/ui';
|
|
2
|
-
import { Button } from 'antd';
|
|
2
|
+
import { Button, Popconfirm } from 'antd';
|
|
3
3
|
import { LucideGalleryVerticalEnd, LucideMessageSquarePlus } from 'lucide-react';
|
|
4
|
-
import { memo } from 'react';
|
|
4
|
+
import { memo, useState } from 'react';
|
|
5
5
|
import { useHotkeys } from 'react-hotkeys-hook';
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
|
|
@@ -19,9 +19,9 @@ const SaveTopic = memo<{ mobile?: boolean }>(({ mobile }) => {
|
|
|
19
19
|
|
|
20
20
|
const { mutate, isValidating } = useActionSWR('openNewTopicOrSaveTopic', openNewTopicOrSaveTopic);
|
|
21
21
|
|
|
22
|
+
const [confirmOpened, setConfirmOpened] = useState(false);
|
|
23
|
+
|
|
22
24
|
const icon = hasTopic ? LucideMessageSquarePlus : LucideGalleryVerticalEnd;
|
|
23
|
-
const Render = mobile ? ActionIcon : Button;
|
|
24
|
-
const iconRender: any = mobile ? icon : <Icon icon={icon} />;
|
|
25
25
|
const desc = t(hasTopic ? 'topic.openNewTopic' : 'topic.saveCurrentMessages');
|
|
26
26
|
|
|
27
27
|
const hotkeys = [ALT_KEY, SAVE_TOPIC_KEY].join('+');
|
|
@@ -31,11 +31,46 @@ const SaveTopic = memo<{ mobile?: boolean }>(({ mobile }) => {
|
|
|
31
31
|
preventDefault: true,
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
if (mobile) {
|
|
35
|
+
return (
|
|
36
|
+
<Popconfirm
|
|
37
|
+
arrow={false}
|
|
38
|
+
okButtonProps={{ danger: false, type: 'primary' }}
|
|
39
|
+
onConfirm={() => mutate()}
|
|
40
|
+
onOpenChange={setConfirmOpened}
|
|
41
|
+
open={confirmOpened}
|
|
42
|
+
placement={'top'}
|
|
43
|
+
title={
|
|
44
|
+
<div style={{ alignItems: 'center', display: 'flex', marginBottom: '8px' }}>
|
|
45
|
+
<div style={{ marginRight: '16px', whiteSpace: 'pre-line', wordBreak: 'break-word' }}>
|
|
46
|
+
{t(hasTopic ? 'topic.checkOpenNewTopic' : 'topic.checkSaveCurrentMessages')}
|
|
47
|
+
</div>
|
|
48
|
+
<HotKeys inverseTheme={false} keys={hotkeys} />
|
|
49
|
+
</div>
|
|
50
|
+
}
|
|
51
|
+
>
|
|
52
|
+
<Tooltip>
|
|
53
|
+
<ActionIcon
|
|
54
|
+
aria-label={desc}
|
|
55
|
+
icon={icon}
|
|
56
|
+
loading={isValidating}
|
|
57
|
+
onClick={() => setConfirmOpened(true)}
|
|
58
|
+
/>
|
|
59
|
+
</Tooltip>
|
|
60
|
+
</Popconfirm>
|
|
61
|
+
);
|
|
62
|
+
} else {
|
|
63
|
+
return (
|
|
64
|
+
<Tooltip title={<HotKeys desc={desc} inverseTheme keys={hotkeys} />}>
|
|
65
|
+
<Button
|
|
66
|
+
aria-label={desc}
|
|
67
|
+
icon={<Icon icon={icon} />}
|
|
68
|
+
loading={isValidating}
|
|
69
|
+
onClick={() => mutate()}
|
|
70
|
+
/>
|
|
71
|
+
</Tooltip>
|
|
72
|
+
);
|
|
73
|
+
}
|
|
39
74
|
});
|
|
40
75
|
|
|
41
76
|
export default SaveTopic;
|
|
@@ -4,6 +4,7 @@ import { ItemType } from 'antd/es/menu/interface';
|
|
|
4
4
|
import {
|
|
5
5
|
Book,
|
|
6
6
|
CircleUserRound,
|
|
7
|
+
Cloudy,
|
|
7
8
|
Download,
|
|
8
9
|
Feather,
|
|
9
10
|
HardDriveDownload,
|
|
@@ -21,7 +22,14 @@ import { Flexbox } from 'react-layout-kit';
|
|
|
21
22
|
import urlJoin from 'url-join';
|
|
22
23
|
|
|
23
24
|
import type { MenuProps } from '@/components/Menu';
|
|
24
|
-
import {
|
|
25
|
+
import {
|
|
26
|
+
DISCORD,
|
|
27
|
+
DOCUMENTS,
|
|
28
|
+
EMAIL_SUPPORT,
|
|
29
|
+
GITHUB_ISSUES,
|
|
30
|
+
OFFICIAL_URL,
|
|
31
|
+
mailTo,
|
|
32
|
+
} from '@/const/url';
|
|
25
33
|
import { isServerMode } from '@/const/version';
|
|
26
34
|
import DataImporter from '@/features/DataImporter';
|
|
27
35
|
import { useOpenSettings } from '@/hooks/useInterceptingRoutes';
|
|
@@ -29,6 +37,7 @@ import { usePWAInstall } from '@/hooks/usePWAInstall';
|
|
|
29
37
|
import { useQueryRoute } from '@/hooks/useQueryRoute';
|
|
30
38
|
import { configService } from '@/services/config';
|
|
31
39
|
import { SettingsTabs } from '@/store/global/initialState';
|
|
40
|
+
import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
|
|
32
41
|
import { useUserStore } from '@/store/user';
|
|
33
42
|
import { authSelectors } from '@/store/user/selectors';
|
|
34
43
|
|
|
@@ -62,6 +71,7 @@ export const useMenu = () => {
|
|
|
62
71
|
const hasNewVersion = useNewVersion();
|
|
63
72
|
const openSettings = useOpenSettings();
|
|
64
73
|
const { t } = useTranslation(['common', 'setting', 'auth']);
|
|
74
|
+
const { showCloudPromotion } = useServerConfigStore(featureFlagsSelectors);
|
|
65
75
|
const [isLogin, isLoginWithAuth, isLoginWithClerk, openUserProfile] = useUserStore((s) => [
|
|
66
76
|
authSelectors.isLogin(s),
|
|
67
77
|
authSelectors.isLoginWithAuth(s),
|
|
@@ -163,6 +173,15 @@ export const useMenu = () => {
|
|
|
163
173
|
].filter(Boolean) as ItemType[]);
|
|
164
174
|
|
|
165
175
|
const helps: MenuProps['items'] = [
|
|
176
|
+
showCloudPromotion && {
|
|
177
|
+
icon: <Icon icon={Cloudy} />,
|
|
178
|
+
key: 'cloud',
|
|
179
|
+
label: (
|
|
180
|
+
<Link href={OFFICIAL_URL} target={'_blank'}>
|
|
181
|
+
{t('userPanel.cloud', { name: 'LobeChat Cloud' })}
|
|
182
|
+
</Link>
|
|
183
|
+
),
|
|
184
|
+
},
|
|
166
185
|
{
|
|
167
186
|
icon: <Icon icon={DiscordIcon} />,
|
|
168
187
|
key: 'discord',
|
|
@@ -209,7 +228,7 @@ export const useMenu = () => {
|
|
|
209
228
|
{
|
|
210
229
|
type: 'divider',
|
|
211
230
|
},
|
|
212
|
-
];
|
|
231
|
+
].filter(Boolean) as ItemType[];
|
|
213
232
|
|
|
214
233
|
const mainItems = [
|
|
215
234
|
{
|
|
@@ -100,6 +100,8 @@ export default {
|
|
|
100
100
|
duplicate: '创建副本',
|
|
101
101
|
export: '导出话题',
|
|
102
102
|
},
|
|
103
|
+
checkOpenNewTopic: '是否开启新话题?',
|
|
104
|
+
checkSaveCurrentMessages: '是否保存当前会话为话题?',
|
|
103
105
|
confirmRemoveAll: '即将删除全部话题,删除后将不可恢复,请谨慎操作。',
|
|
104
106
|
confirmRemoveTopic: '即将删除该话题,删除后将不可恢复,请谨慎操作。',
|
|
105
107
|
confirmRemoveUnstarred: '即将删除未收藏话题,删除后将不可恢复,请谨慎操作。',
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
about: '关于',
|
|
3
3
|
advanceSettings: '高级设置',
|
|
4
|
+
alert: {
|
|
5
|
+
cloud: {
|
|
6
|
+
action: '立即体验',
|
|
7
|
+
desc: '我们为所有注册用户提供了免费的 {{credit}} 额度计算积分,无需复杂配置开箱即用, 支持全局云同步与进阶联网查询,更多高级特性等你探索。',
|
|
8
|
+
descOnMobile:
|
|
9
|
+
'我们为所有注册用户提供了免费的 {{credit}} 额度计算积分,无需复杂配置开箱即用。',
|
|
10
|
+
title: '{{name}} 开始公测',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
4
13
|
appInitializing: '应用启动中,请耐心等待...',
|
|
5
14
|
autoGenerate: '自动补全',
|
|
6
15
|
autoGenerateTooltip: '基于提示词自动补全助手描述',
|
|
@@ -198,6 +207,7 @@ export default {
|
|
|
198
207
|
userPanel: {
|
|
199
208
|
anonymousNickName: '匿名用户',
|
|
200
209
|
billing: '账单管理',
|
|
210
|
+
cloud: '体验 {{name}}',
|
|
201
211
|
data: '数据存储',
|
|
202
212
|
defaultNickname: '社区版用户',
|
|
203
213
|
discord: '社区支持',
|