@lobehub/lobehub 2.0.0-next.127 → 2.0.0-next.128

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.
Files changed (46) hide show
  1. package/.env.example +23 -3
  2. package/.env.example.development +5 -0
  3. package/CHANGELOG.md +25 -0
  4. package/changelog/v1.json +9 -0
  5. package/docker-compose/local/docker-compose.yml +24 -1
  6. package/docker-compose/local/logto/docker-compose.yml +25 -2
  7. package/docker-compose.development.yml +6 -0
  8. package/locales/ar/auth.json +114 -1
  9. package/locales/bg-BG/auth.json +114 -1
  10. package/locales/de-DE/auth.json +114 -1
  11. package/locales/en-US/auth.json +42 -22
  12. package/locales/es-ES/auth.json +114 -1
  13. package/locales/fa-IR/auth.json +114 -1
  14. package/locales/fr-FR/auth.json +114 -1
  15. package/locales/it-IT/auth.json +114 -1
  16. package/locales/ja-JP/auth.json +114 -1
  17. package/locales/ko-KR/auth.json +114 -1
  18. package/locales/nl-NL/auth.json +114 -1
  19. package/locales/pl-PL/auth.json +114 -1
  20. package/locales/pt-BR/auth.json +114 -1
  21. package/locales/ru-RU/auth.json +114 -1
  22. package/locales/tr-TR/auth.json +114 -1
  23. package/locales/vi-VN/auth.json +114 -1
  24. package/locales/zh-CN/auth.json +36 -29
  25. package/locales/zh-TW/auth.json +114 -1
  26. package/package.json +4 -1
  27. package/packages/database/src/client/db.ts +21 -21
  28. package/packages/database/src/repositories/dataImporter/deprecated/index.ts +5 -5
  29. package/packages/database/src/repositories/dataImporter/index.ts +59 -59
  30. package/packages/database/src/schemas/generation.ts +16 -16
  31. package/packages/database/src/schemas/oidc.ts +36 -36
  32. package/packages/model-runtime/src/providers/newapi/index.ts +61 -18
  33. package/packages/model-runtime/src/runtimeMap.ts +1 -0
  34. package/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/UpdateProviderInfo/SettingModal.tsx +10 -6
  35. package/src/envs/redis.ts +106 -0
  36. package/src/libs/redis/index.ts +5 -0
  37. package/src/libs/redis/manager.test.ts +107 -0
  38. package/src/libs/redis/manager.ts +56 -0
  39. package/src/libs/redis/redis.test.ts +158 -0
  40. package/src/libs/redis/redis.ts +117 -0
  41. package/src/libs/redis/types.ts +71 -0
  42. package/src/libs/redis/upstash.test.ts +154 -0
  43. package/src/libs/redis/upstash.ts +109 -0
  44. package/src/libs/redis/utils.test.ts +46 -0
  45. package/src/libs/redis/utils.ts +53 -0
  46. package/.github/workflows/check-console-log.yml +0 -117
package/.env.example CHANGED
@@ -24,9 +24,29 @@
24
24
  # Example: Allow specific internal servers while keeping SSRF protection
25
25
  # SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
26
26
 
27
- # #######################################
28
- # ######### AI Provider Service #########
29
- # #######################################
27
+ ########################################
28
+ ############ Redis Settings ############
29
+ ########################################
30
+
31
+ # Connection string for self-hosted Redis (Docker/K8s/managed). Use container hostname when running via docker-compose.
32
+ # REDIS_URL=redis://localhost:6379
33
+
34
+ # Optional database index.
35
+ # REDIS_DATABASE=0
36
+
37
+ # Optional authentication for managed Redis.
38
+ # REDIS_USERNAME=default
39
+ # REDIS_PASSWORD=yourpassword
40
+
41
+ # Set to '1' to enforce TLS when connecting to managed Redis or rediss:// endpoints.
42
+ # REDIS_TLS=0
43
+
44
+ # Namespace prefix for cache/queue keys.
45
+ # REDIS_PREFIX=lobechat
46
+
47
+ ########################################
48
+ ########## AI Provider Service #########
49
+ ########################################
30
50
 
31
51
  # ## OpenAI ###
32
52
 
@@ -31,6 +31,11 @@ DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@localhost:5432/${LOBE_DB
31
31
  # Database driver type
32
32
  DATABASE_DRIVER=node
33
33
 
34
+ # Redis Cache/Queue Configuration
35
+ REDIS_URL=redis://localhost:6379
36
+ REDIS_PREFIX=lobechat
37
+ REDIS_TLS=0
38
+
34
39
  # Authentication Configuration
35
40
  # Enable Better Auth authentication
36
41
  NEXT_PUBLIC_ENABLE_BETTER_AUTH=1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.128](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.127...v2.0.0-next.128)
6
+
7
+ <sup>Released on **2025-11-28**</sup>
8
+
9
+ #### 💄 Styles
10
+
11
+ - **misc**: Update i18n.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Styles
19
+
20
+ - **misc**: Update i18n, closes [#10466](https://github.com/lobehub/lobe-chat/issues/10466) ([37bd67a](https://github.com/lobehub/lobe-chat/commit/37bd67a))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
5
30
  ## [Version 2.0.0-next.127](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.126...v2.0.0-next.127)
6
31
 
7
32
  <sup>Released on **2025-11-27**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Update i18n."
6
+ ]
7
+ },
8
+ "date": "2025-11-28",
9
+ "version": "2.0.0-next.128"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "fixes": [
@@ -35,6 +35,23 @@ services:
35
35
  networks:
36
36
  - lobe-network
37
37
 
38
+ redis:
39
+ image: redis:7-alpine
40
+ container_name: lobe-redis
41
+ ports:
42
+ - '6379:6379'
43
+ command: redis-server --save 60 1000 --appendonly yes
44
+ volumes:
45
+ - 'redis_data:/data'
46
+ healthcheck:
47
+ test: ['CMD', 'redis-cli', 'ping']
48
+ interval: 5s
49
+ timeout: 3s
50
+ retries: 5
51
+ restart: always
52
+ networks:
53
+ - lobe-network
54
+
38
55
  minio:
39
56
  image: minio/minio:RELEASE.2025-04-22T22-12-26Z
40
57
  container_name: lobe-minio
@@ -107,6 +124,8 @@ services:
107
124
  condition: service_started
108
125
  casdoor:
109
126
  condition: service_started
127
+ redis:
128
+ condition: service_healthy
110
129
 
111
130
  environment:
112
131
  - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
@@ -121,6 +140,9 @@ services:
121
140
  - 'LLM_VISION_IMAGE_USE_BASE64=1'
122
141
  - 'S3_SET_ACL=0'
123
142
  - 'SEARXNG_URL=http://searxng:8080'
143
+ - 'REDIS_URL=redis://redis:6379'
144
+ - 'REDIS_PREFIX=lobechat'
145
+ - 'REDIS_TLS=0'
124
146
  env_file:
125
147
  - .env
126
148
  restart: always
@@ -248,7 +270,8 @@ volumes:
248
270
  driver: local
249
271
  prometheus_data:
250
272
  driver: local
251
-
273
+ redis_data:
274
+ driver: local
252
275
 
253
276
  networks:
254
277
  lobe-network:
@@ -32,10 +32,27 @@ services:
32
32
  networks:
33
33
  - lobe-network
34
34
 
35
+ redis:
36
+ image: redis:7-alpine
37
+ container_name: lobe-redis
38
+ ports:
39
+ - '6379:6379'
40
+ command: redis-server --save 60 1000 --appendonly yes
41
+ volumes:
42
+ - 'redis_data:/data'
43
+ healthcheck:
44
+ test: ['CMD', 'redis-cli', 'ping']
45
+ interval: 5s
46
+ timeout: 3s
47
+ retries: 5
48
+ restart: always
49
+ networks:
50
+ - lobe-network
51
+
35
52
  minio:
36
53
  image: minio/minio:RELEASE.2025-04-22T22-12-26Z
37
54
  container_name: lobe-minio
38
- network_mode: 'service:network-service'
55
+ network_mode: "service:network-service"
39
56
  volumes:
40
57
  - './s3_data:/etc/minio/data'
41
58
  environment:
@@ -46,7 +63,6 @@ services:
46
63
  command: >
47
64
  server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001"
48
65
 
49
-
50
66
  logto:
51
67
  image: svhd/logto
52
68
  container_name: lobe-logto
@@ -75,6 +91,8 @@ services:
75
91
  condition: service_started
76
92
  logto:
77
93
  condition: service_started
94
+ redis:
95
+ condition: service_healthy
78
96
 
79
97
  environment:
80
98
  - 'APP_URL=http://localhost:3210'
@@ -88,6 +106,9 @@ services:
88
106
  - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
89
107
  - 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
90
108
  - 'S3_ENABLE_PATH_STYLE=1'
109
+ - 'REDIS_URL=redis://redis:6379'
110
+ - 'REDIS_PREFIX=lobechat'
111
+ - 'REDIS_TLS=0'
91
112
  env_file:
92
113
  - .env
93
114
  restart: always
@@ -97,6 +118,8 @@ volumes:
97
118
  driver: local
98
119
  s3_data:
99
120
  driver: local
121
+ redis_data:
122
+ driver: local
100
123
 
101
124
  networks:
102
125
  lobe-network:
@@ -19,6 +19,10 @@ services:
19
19
  extends:
20
20
  file: docker-compose/local/docker-compose.yml
21
21
  service: postgresql
22
+ redis:
23
+ extends:
24
+ file: docker-compose/local/docker-compose.yml
25
+ service: redis
22
26
  minio:
23
27
  extends:
24
28
  file: docker-compose/local/docker-compose.yml
@@ -78,6 +82,8 @@ volumes:
78
82
  driver: local
79
83
  prometheus_data:
80
84
  driver: local
85
+ redis_data:
86
+ driver: local
81
87
 
82
88
  networks:
83
89
  lobe-network:
@@ -52,6 +52,104 @@
52
52
  "required": "لا يمكن أن يكون المحتوى فارغًا"
53
53
  }
54
54
  },
55
+ "betterAuth": {
56
+ "errors": {
57
+ "emailInvalid": "يرجى إدخال عنوان بريد إلكتروني صالح",
58
+ "emailNotRegistered": "هذا البريد الإلكتروني غير مسجل",
59
+ "emailNotVerified": "لم يتم التحقق من البريد الإلكتروني، يرجى التحقق أولاً",
60
+ "emailRequired": "يرجى إدخال عنوان البريد الإلكتروني",
61
+ "firstNameRequired": "يرجى إدخال الاسم الأول",
62
+ "lastNameRequired": "يرجى إدخال اسم العائلة",
63
+ "loginFailed": "فشل تسجيل الدخول، يرجى التحقق من البريد الإلكتروني وكلمة المرور",
64
+ "passwordFormat": "يجب أن تحتوي كلمة المرور على أحرف وأرقام",
65
+ "passwordMaxLength": "يجب ألا تتجاوز كلمة المرور 64 حرفًا",
66
+ "passwordMinLength": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل",
67
+ "passwordRequired": "يرجى إدخال كلمة المرور",
68
+ "usernameRequired": "يرجى إدخال اسم المستخدم"
69
+ },
70
+ "resetPassword": {
71
+ "backToSignIn": "العودة إلى تسجيل الدخول",
72
+ "confirmPasswordPlaceholder": "تأكيد كلمة المرور الجديدة",
73
+ "confirmPasswordRequired": "يرجى تأكيد كلمة المرور الجديدة",
74
+ "description": "يرجى إدخال كلمة المرور الجديدة",
75
+ "error": "فشل إعادة تعيين كلمة المرور، يرجى المحاولة مرة أخرى",
76
+ "invalidToken": "رابط إعادة التعيين غير صالح أو منتهي الصلاحية",
77
+ "newPasswordPlaceholder": "أدخل كلمة المرور الجديدة",
78
+ "passwordMismatch": "كلمتا المرور غير متطابقتين",
79
+ "submit": "إعادة تعيين كلمة المرور",
80
+ "success": "تمت إعادة تعيين كلمة المرور بنجاح، يرجى تسجيل الدخول باستخدام كلمة المرور الجديدة",
81
+ "title": "إعادة تعيين كلمة المرور"
82
+ },
83
+ "signin": {
84
+ "backToEmail": "العودة لتعديل البريد الإلكتروني",
85
+ "continueWithAuth0": "تسجيل الدخول باستخدام Auth0",
86
+ "continueWithAuthelia": "تسجيل الدخول باستخدام Authelia",
87
+ "continueWithAuthentik": "تسجيل الدخول باستخدام Authentik",
88
+ "continueWithCasdoor": "تسجيل الدخول باستخدام Casdoor",
89
+ "continueWithCloudflareZeroTrust": "تسجيل الدخول باستخدام Cloudflare Zero Trust",
90
+ "continueWithCognito": "تسجيل الدخول باستخدام AWS Cognito",
91
+ "continueWithFeishu": "تسجيل الدخول باستخدام Feishu",
92
+ "continueWithGithub": "تسجيل الدخول باستخدام GitHub",
93
+ "continueWithGoogle": "تسجيل الدخول باستخدام Google",
94
+ "continueWithKeycloak": "تسجيل الدخول باستخدام Keycloak",
95
+ "continueWithLogto": "تسجيل الدخول باستخدام Logto",
96
+ "continueWithMicrosoft": "تسجيل الدخول باستخدام Microsoft",
97
+ "continueWithOIDC": "تسجيل الدخول باستخدام OIDC",
98
+ "continueWithOkta": "تسجيل الدخول باستخدام Okta",
99
+ "continueWithWechat": "تسجيل الدخول باستخدام WeChat",
100
+ "continueWithZitadel": "تسجيل الدخول باستخدام Zitadel",
101
+ "emailPlaceholder": "يرجى إدخال عنوان البريد الإلكتروني",
102
+ "emailStep": {
103
+ "subtitle": "يرجى إدخال بريدك الإلكتروني للمتابعة",
104
+ "title": "تسجيل الدخول"
105
+ },
106
+ "error": "فشل تسجيل الدخول، يرجى التحقق من البريد الإلكتروني وكلمة المرور",
107
+ "forgotPassword": "هل نسيت كلمة المرور؟",
108
+ "forgotPasswordError": "فشل إرسال رابط إعادة تعيين كلمة المرور",
109
+ "forgotPasswordSent": "تم إرسال رابط إعادة تعيين كلمة المرور، يرجى التحقق من بريدك الإلكتروني",
110
+ "magicLinkButton": "إرسال رابط تسجيل الدخول",
111
+ "magicLinkError": "فشل إرسال رابط تسجيل الدخول، يرجى المحاولة لاحقًا",
112
+ "magicLinkSent": "تم إرسال رابط تسجيل الدخول، يرجى التحقق من بريدك الإلكتروني",
113
+ "nextStep": "الخطوة التالية",
114
+ "noAccount": "ليس لديك حساب؟",
115
+ "orContinueWith": "أو المتابعة باستخدام",
116
+ "passwordPlaceholder": "يرجى إدخال كلمة المرور",
117
+ "passwordStep": {
118
+ "subtitle": "يرجى إدخال كلمة المرور للمتابعة"
119
+ },
120
+ "signupLink": "سجّل الآن",
121
+ "socialError": "فشل تسجيل الدخول عبر الشبكات الاجتماعية، يرجى المحاولة مرة أخرى",
122
+ "socialOnlyHint": "تم تسجيل هذا البريد الإلكتروني باستخدام حساب اجتماعي، يرجى تسجيل الدخول باستخدامه",
123
+ "submit": "تسجيل الدخول"
124
+ },
125
+ "signup": {
126
+ "emailPlaceholder": "يرجى إدخال عنوان البريد الإلكتروني",
127
+ "error": "فشل التسجيل، يرجى المحاولة مرة أخرى",
128
+ "firstNamePlaceholder": "الاسم الأول",
129
+ "hasAccount": "هل لديك حساب؟",
130
+ "lastNamePlaceholder": "اسم العائلة",
131
+ "passwordPlaceholder": "يرجى إدخال كلمة المرور",
132
+ "signinLink": "تسجيل الدخول الآن",
133
+ "submit": "تسجيل",
134
+ "subtitle": "انضم إلى مجتمع LobeChat",
135
+ "success": "تم التسجيل بنجاح! يرجى التحقق من بريدك الإلكتروني لتأكيد الحساب",
136
+ "title": "إنشاء حساب",
137
+ "usernamePlaceholder": "يرجى إدخال اسم المستخدم"
138
+ },
139
+ "verifyEmail": {
140
+ "backToSignIn": "العودة إلى تسجيل الدخول",
141
+ "checkSpam": "إذا لم تتلقَ البريد الإلكتروني، يرجى التحقق من مجلد الرسائل غير المرغوب فيها",
142
+ "descriptionPrefix": "لقد أرسلنا رسالة تحقق إلى",
143
+ "descriptionSuffix": "",
144
+ "resend": {
145
+ "button": "إعادة إرسال رسالة التحقق",
146
+ "error": "فشل الإرسال، يرجى المحاولة لاحقًا",
147
+ "noEmail": "عنوان البريد الإلكتروني مفقود",
148
+ "success": "تمت إعادة إرسال رسالة التحقق، يرجى التحقق من بريدك الإلكتروني"
149
+ },
150
+ "title": "تحقق من بريدك الإلكتروني"
151
+ }
152
+ },
55
153
  "date": {
56
154
  "prevMonth": "الشهر الماضي",
57
155
  "recent30Days": "آخر 30 يومًا"
@@ -86,16 +184,31 @@
86
184
  "loginOrSignup": "تسجيل الدخول / الاشتراك",
87
185
  "profile": {
88
186
  "avatar": "الصورة الشخصية",
187
+ "cancel": "إلغاء",
188
+ "changePassword": "إعادة تعيين كلمة المرور",
89
189
  "email": "عنوان البريد الإلكتروني",
190
+ "fullName": "الاسم الكامل",
191
+ "fullNameInputHint": "يرجى إدخال الاسم الكامل الجديد",
192
+ "password": "كلمة المرور",
193
+ "resetPasswordError": "فشل إرسال رابط إعادة تعيين كلمة المرور",
194
+ "resetPasswordSent": "تم إرسال رابط إعادة تعيين كلمة المرور، يرجى التحقق من بريدك الإلكتروني",
195
+ "save": "حفظ",
90
196
  "sso": {
197
+ "link": {
198
+ "button": "ربط الحساب",
199
+ "success": "تم ربط الحساب بنجاح"
200
+ },
91
201
  "loading": "جارٍ تحميل الحسابات المرتبطة من طرف ثالث",
92
202
  "providers": "الحسابات المتصلة",
93
203
  "unlink": {
94
- "description": "بعد unlink ، لن تتمكن من تسجيل الدخول باستخدام حساب {{provider}} \"{{providerAccountId}}\". إذا كنت بحاجة إلى إعادة ربط حساب {{provider}} بالحساب الحالي، يرجى التأكد من أن عنوان البريد الإلكتروني لحساب {{provider}} هو {{email}}، وسنقوم بربطه تلقائيًا بالحساب المسجل الدخول عند تسجيل الدخول.",
204
+ "description": "بعد إلغاء الربط، لن تتمكن من تسجيل الدخول باستخدام حساب {{provider}} \"{{providerAccountId}}\". إذا كنت ترغب في ربط حساب {{provider}} بهذا الحساب مرة أخرى، يرجى التأكد من أن عنوان البريد الإلكتروني لحساب {{provider}} هو {{email}}، وسنقوم بربطه تلقائيًا عند تسجيل الدخول.",
95
205
  "forbidden": "يجب أن تحتفظ بحساب طرف ثالث واحد على الأقل مرتبطًا.",
96
206
  "title": "هل تريد فصل حساب الطرف الثالث {{provider}}؟"
97
207
  }
98
208
  },
209
+ "title": "تفاصيل الملف الشخصي",
210
+ "updateAvatar": "تحديث الصورة الشخصية",
211
+ "updateFullName": "تحديث الاسم الكامل",
99
212
  "username": "اسم المستخدم"
100
213
  },
101
214
  "signout": "تسجيل الخروج",
@@ -52,6 +52,104 @@
52
52
  "required": "Полето не може да бъде празно"
53
53
  }
54
54
  },
55
+ "betterAuth": {
56
+ "errors": {
57
+ "emailInvalid": "Моля, въведете валиден имейл адрес",
58
+ "emailNotRegistered": "Този имейл все още не е регистриран",
59
+ "emailNotVerified": "Имейлът не е потвърден, моля първо го потвърдете",
60
+ "emailRequired": "Моля, въведете имейл адрес",
61
+ "firstNameRequired": "Моля, въведете собствено име",
62
+ "lastNameRequired": "Моля, въведете фамилно име",
63
+ "loginFailed": "Входът не бе успешен, моля проверете имейла и паролата",
64
+ "passwordFormat": "Паролата трябва да съдържа както букви, така и цифри",
65
+ "passwordMaxLength": "Паролата не може да надвишава 64 знака",
66
+ "passwordMinLength": "Паролата трябва да бъде поне 8 знака",
67
+ "passwordRequired": "Моля, въведете парола",
68
+ "usernameRequired": "Моля, въведете потребителско име"
69
+ },
70
+ "resetPassword": {
71
+ "backToSignIn": "Обратно към вход",
72
+ "confirmPasswordPlaceholder": "Потвърдете новата парола",
73
+ "confirmPasswordRequired": "Моля, потвърдете новата парола",
74
+ "description": "Моля, въведете новата си парола",
75
+ "error": "Неуспешно нулиране на паролата, моля опитайте отново",
76
+ "invalidToken": "Невалиден или изтекъл линк за нулиране",
77
+ "newPasswordPlaceholder": "Въведете нова парола",
78
+ "passwordMismatch": "Двете пароли не съвпадат",
79
+ "submit": "Нулирай паролата",
80
+ "success": "Паролата е успешно нулирана, моля влезте с новата парола",
81
+ "title": "Нулиране на парола"
82
+ },
83
+ "signin": {
84
+ "backToEmail": "Обратно към редактиране на имейл",
85
+ "continueWithAuth0": "Вход с Auth0",
86
+ "continueWithAuthelia": "Вход с Authelia",
87
+ "continueWithAuthentik": "Вход с Authentik",
88
+ "continueWithCasdoor": "Вход с Casdoor",
89
+ "continueWithCloudflareZeroTrust": "Вход с Cloudflare Zero Trust",
90
+ "continueWithCognito": "Вход с AWS Cognito",
91
+ "continueWithFeishu": "Вход с Feishu",
92
+ "continueWithGithub": "Вход с GitHub",
93
+ "continueWithGoogle": "Вход с Google",
94
+ "continueWithKeycloak": "Вход с Keycloak",
95
+ "continueWithLogto": "Вход с Logto",
96
+ "continueWithMicrosoft": "Вход с Microsoft",
97
+ "continueWithOIDC": "Вход с OIDC",
98
+ "continueWithOkta": "Вход с Okta",
99
+ "continueWithWechat": "Вход с WeChat",
100
+ "continueWithZitadel": "Вход с Zitadel",
101
+ "emailPlaceholder": "Моля, въведете имейл адрес",
102
+ "emailStep": {
103
+ "subtitle": "Моля, въведете имейл адреса си, за да продължите",
104
+ "title": "Вход"
105
+ },
106
+ "error": "Входът не бе успешен, моля проверете имейла и паролата",
107
+ "forgotPassword": "Забравена парола?",
108
+ "forgotPasswordError": "Неуспешно изпращане на линк за нулиране на парола",
109
+ "forgotPasswordSent": "Линк за нулиране на парола е изпратен, моля проверете имейла си",
110
+ "magicLinkButton": "Изпрати линк за вход",
111
+ "magicLinkError": "Неуспешно изпращане на линк за вход, моля опитайте по-късно",
112
+ "magicLinkSent": "Линк за вход е изпратен, моля проверете имейла си",
113
+ "nextStep": "Следваща стъпка",
114
+ "noAccount": "Нямате акаунт?",
115
+ "orContinueWith": "или",
116
+ "passwordPlaceholder": "Моля, въведете парола",
117
+ "passwordStep": {
118
+ "subtitle": "Моля, въведете паролата си, за да продължите"
119
+ },
120
+ "signupLink": "Регистрирайте се сега",
121
+ "socialError": "Неуспешен социален вход, моля опитайте отново",
122
+ "socialOnlyHint": "Този имейл е регистриран чрез социален акаунт, моля влезте чрез него",
123
+ "submit": "Вход"
124
+ },
125
+ "signup": {
126
+ "emailPlaceholder": "Моля, въведете имейл адрес",
127
+ "error": "Регистрацията не бе успешна, моля опитайте отново",
128
+ "firstNamePlaceholder": "Собствено име",
129
+ "hasAccount": "Вече имате акаунт?",
130
+ "lastNamePlaceholder": "Фамилно име",
131
+ "passwordPlaceholder": "Моля, въведете парола",
132
+ "signinLink": "Влезте сега",
133
+ "submit": "Регистрация",
134
+ "subtitle": "Присъединете се към общността на LobeChat",
135
+ "success": "Регистрацията е успешна! Моля, проверете имейла си за потвърждение",
136
+ "title": "Създаване на акаунт",
137
+ "usernamePlaceholder": "Моля, въведете потребителско име"
138
+ },
139
+ "verifyEmail": {
140
+ "backToSignIn": "Обратно към вход",
141
+ "checkSpam": "Ако не сте получили имейл, моля проверете папката със спам",
142
+ "descriptionPrefix": "Изпратихме имейл за потвърждение на",
143
+ "descriptionSuffix": "",
144
+ "resend": {
145
+ "button": "Изпрати отново имейл за потвърждение",
146
+ "error": "Изпращането не бе успешно, моля опитайте по-късно",
147
+ "noEmail": "Липсва имейл адрес",
148
+ "success": "Имейлът за потвърждение е изпратен отново, моля проверете пощата си"
149
+ },
150
+ "title": "Потвърдете имейла си"
151
+ }
152
+ },
55
153
  "date": {
56
154
  "prevMonth": "Миналия месец",
57
155
  "recent30Days": "Последните 30 дни"
@@ -86,16 +184,31 @@
86
184
  "loginOrSignup": "Вход / Регистрация",
87
185
  "profile": {
88
186
  "avatar": "Аватар",
187
+ "cancel": "Отказ",
188
+ "changePassword": "Нулиране на парола",
89
189
  "email": "Имейл адрес",
190
+ "fullName": "Пълно име",
191
+ "fullNameInputHint": "Моля, въведете новото си пълно име",
192
+ "password": "Парола",
193
+ "resetPasswordError": "Неуспешно изпращане на линк за нулиране на парола",
194
+ "resetPasswordSent": "Линк за нулиране на парола е изпратен, моля проверете имейла си",
195
+ "save": "Запази",
90
196
  "sso": {
197
+ "link": {
198
+ "button": "Свържи акаунт",
199
+ "success": "Акаунтът е успешно свързан"
200
+ },
91
201
  "loading": "Зареждане на свързаните трети страни акаунти",
92
202
  "providers": "Свързани акаунти",
93
203
  "unlink": {
94
- "description": "След като свържете, няма да можете да използвате акаунта на {{provider}} {{providerAccountId}} за вход. Ако искате отново да свържете акаунта на {{provider}} с текущия акаунт, уверете се, че имейл адресът на акаунта на {{provider}} е {{email}}, а ние автоматично ще ви свържем с текущия влезлия акаунт при вход.",
204
+ "description": "След като прекъснете връзката, няма да можете да влизате с акаунта {{provider}} \"{{providerAccountId}}\". Ако искате отново да свържете акаунта {{provider}} с текущия акаунт, уверете се, че имейл адресът на акаунта {{provider}} е {{email}}. Ще го свържем автоматично при следващ вход.",
95
205
  "forbidden": "Трябва да имате поне един свързан акаунт на трета страна.",
96
206
  "title": "Наистина ли искате да свържете акаунта на трета страна {{provider}}?"
97
207
  }
98
208
  },
209
+ "title": "Детайли на профила",
210
+ "updateAvatar": "Актуализирай аватара",
211
+ "updateFullName": "Актуализирай пълното име",
99
212
  "username": "Потребителско име"
100
213
  },
101
214
  "signout": "Изход",
@@ -52,6 +52,104 @@
52
52
  "required": "Inhalt darf nicht leer sein"
53
53
  }
54
54
  },
55
+ "betterAuth": {
56
+ "errors": {
57
+ "emailInvalid": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
58
+ "emailNotRegistered": "Diese E-Mail-Adresse ist noch nicht registriert",
59
+ "emailNotVerified": "E-Mail-Adresse nicht verifiziert, bitte zuerst verifizieren",
60
+ "emailRequired": "Bitte geben Sie eine E-Mail-Adresse ein",
61
+ "firstNameRequired": "Bitte geben Sie Ihren Vornamen ein",
62
+ "lastNameRequired": "Bitte geben Sie Ihren Nachnamen ein",
63
+ "loginFailed": "Anmeldung fehlgeschlagen, bitte überprüfen Sie E-Mail und Passwort",
64
+ "passwordFormat": "Das Passwort muss Buchstaben und Zahlen enthalten",
65
+ "passwordMaxLength": "Das Passwort darf maximal 64 Zeichen lang sein",
66
+ "passwordMinLength": "Das Passwort muss mindestens 8 Zeichen lang sein",
67
+ "passwordRequired": "Bitte geben Sie ein Passwort ein",
68
+ "usernameRequired": "Bitte geben Sie einen Benutzernamen ein"
69
+ },
70
+ "resetPassword": {
71
+ "backToSignIn": "Zurück zur Anmeldung",
72
+ "confirmPasswordPlaceholder": "Neues Passwort bestätigen",
73
+ "confirmPasswordRequired": "Bitte bestätigen Sie Ihr neues Passwort",
74
+ "description": "Bitte geben Sie Ihr neues Passwort ein",
75
+ "error": "Passwort zurücksetzen fehlgeschlagen, bitte versuchen Sie es erneut",
76
+ "invalidToken": "Ungültiger oder abgelaufener Zurücksetzungslink",
77
+ "newPasswordPlaceholder": "Neues Passwort eingeben",
78
+ "passwordMismatch": "Die Passwörter stimmen nicht überein",
79
+ "submit": "Passwort zurücksetzen",
80
+ "success": "Passwort erfolgreich zurückgesetzt, bitte melden Sie sich mit dem neuen Passwort an",
81
+ "title": "Passwort zurücksetzen"
82
+ },
83
+ "signin": {
84
+ "backToEmail": "Zurück zur E-Mail-Adresse",
85
+ "continueWithAuth0": "Mit Auth0 anmelden",
86
+ "continueWithAuthelia": "Mit Authelia anmelden",
87
+ "continueWithAuthentik": "Mit Authentik anmelden",
88
+ "continueWithCasdoor": "Mit Casdoor anmelden",
89
+ "continueWithCloudflareZeroTrust": "Mit Cloudflare Zero Trust anmelden",
90
+ "continueWithCognito": "Mit AWS Cognito anmelden",
91
+ "continueWithFeishu": "Mit Feishu anmelden",
92
+ "continueWithGithub": "Mit GitHub anmelden",
93
+ "continueWithGoogle": "Mit Google anmelden",
94
+ "continueWithKeycloak": "Mit Keycloak anmelden",
95
+ "continueWithLogto": "Mit Logto anmelden",
96
+ "continueWithMicrosoft": "Mit Microsoft anmelden",
97
+ "continueWithOIDC": "Mit OIDC anmelden",
98
+ "continueWithOkta": "Mit Okta anmelden",
99
+ "continueWithWechat": "Mit WeChat anmelden",
100
+ "continueWithZitadel": "Mit Zitadel anmelden",
101
+ "emailPlaceholder": "Bitte geben Sie Ihre E-Mail-Adresse ein",
102
+ "emailStep": {
103
+ "subtitle": "Bitte geben Sie Ihre E-Mail-Adresse ein, um fortzufahren",
104
+ "title": "Anmelden"
105
+ },
106
+ "error": "Anmeldung fehlgeschlagen, bitte überprüfen Sie E-Mail und Passwort",
107
+ "forgotPassword": "Passwort vergessen?",
108
+ "forgotPasswordError": "Link zum Zurücksetzen des Passworts konnte nicht gesendet werden",
109
+ "forgotPasswordSent": "Link zum Zurücksetzen des Passworts wurde gesendet, bitte überprüfen Sie Ihre E-Mail",
110
+ "magicLinkButton": "Anmeldelink senden",
111
+ "magicLinkError": "Anmeldelink konnte nicht gesendet werden, bitte versuchen Sie es später erneut",
112
+ "magicLinkSent": "Anmeldelink wurde gesendet, bitte überprüfen Sie Ihre E-Mail",
113
+ "nextStep": "Nächster Schritt",
114
+ "noAccount": "Noch kein Konto?",
115
+ "orContinueWith": "oder",
116
+ "passwordPlaceholder": "Bitte geben Sie Ihr Passwort ein",
117
+ "passwordStep": {
118
+ "subtitle": "Bitte geben Sie Ihr Passwort ein, um fortzufahren"
119
+ },
120
+ "signupLink": "Jetzt registrieren",
121
+ "socialError": "Soziale Anmeldung fehlgeschlagen, bitte versuchen Sie es erneut",
122
+ "socialOnlyHint": "Diese E-Mail-Adresse wurde mit einem sozialen Konto registriert. Bitte melden Sie sich mit dem sozialen Konto an",
123
+ "submit": "Anmelden"
124
+ },
125
+ "signup": {
126
+ "emailPlaceholder": "Bitte geben Sie Ihre E-Mail-Adresse ein",
127
+ "error": "Registrierung fehlgeschlagen, bitte versuchen Sie es erneut",
128
+ "firstNamePlaceholder": "Vorname",
129
+ "hasAccount": "Bereits ein Konto?",
130
+ "lastNamePlaceholder": "Nachname",
131
+ "passwordPlaceholder": "Bitte geben Sie ein Passwort ein",
132
+ "signinLink": "Jetzt anmelden",
133
+ "submit": "Registrieren",
134
+ "subtitle": "Treten Sie der LobeChat-Community bei",
135
+ "success": "Registrierung erfolgreich! Bitte überprüfen Sie Ihre E-Mail zur Verifizierung",
136
+ "title": "Konto erstellen",
137
+ "usernamePlaceholder": "Bitte geben Sie einen Benutzernamen ein"
138
+ },
139
+ "verifyEmail": {
140
+ "backToSignIn": "Zurück zur Anmeldung",
141
+ "checkSpam": "Wenn Sie keine E-Mail erhalten haben, überprüfen Sie bitte Ihren Spam-Ordner",
142
+ "descriptionPrefix": "Wir haben eine Bestätigungs-E-Mail an",
143
+ "descriptionSuffix": "gesendet",
144
+ "resend": {
145
+ "button": "Bestätigungs-E-Mail erneut senden",
146
+ "error": "Senden fehlgeschlagen, bitte versuchen Sie es später erneut",
147
+ "noEmail": "E-Mail-Adresse fehlt",
148
+ "success": "Bestätigungs-E-Mail wurde erneut gesendet, bitte überprüfen Sie Ihre E-Mail"
149
+ },
150
+ "title": "Bestätigen Sie Ihre E-Mail-Adresse"
151
+ }
152
+ },
55
153
  "date": {
56
154
  "prevMonth": "Letzter Monat",
57
155
  "recent30Days": "Letzte 30 Tage"
@@ -86,16 +184,31 @@
86
184
  "loginOrSignup": "Einloggen / Registrieren",
87
185
  "profile": {
88
186
  "avatar": "Avatar",
187
+ "cancel": "Abbrechen",
188
+ "changePassword": "Passwort zurücksetzen",
89
189
  "email": "E-Mail-Adresse",
190
+ "fullName": "Vollständiger Name",
191
+ "fullNameInputHint": "Bitte geben Sie einen neuen vollständigen Namen ein",
192
+ "password": "Passwort",
193
+ "resetPasswordError": "Link zum Zurücksetzen des Passworts konnte nicht gesendet werden",
194
+ "resetPasswordSent": "Link zum Zurücksetzen des Passworts wurde gesendet, bitte überprüfen Sie Ihre E-Mail",
195
+ "save": "Speichern",
90
196
  "sso": {
197
+ "link": {
198
+ "button": "Konto verbinden",
199
+ "success": "Konto erfolgreich verbunden"
200
+ },
91
201
  "loading": "Laden der verknüpften Drittanbieter-Konten",
92
202
  "providers": "Verbundene Konten",
93
203
  "unlink": {
94
- "description": "Wenn Sie die Verknüpfung aufheben, können Sie sich nicht mehr mit dem {{provider}}-Konto {{providerAccountId}} anmelden. Wenn Sie das {{provider}}-Konto erneut mit dem aktuellen Konto verknüpfen möchten, stellen Sie bitte sicher, dass die E-Mail-Adresse des {{provider}}-Kontos {{email}} ist, und wir werden es Ihnen automatisch bei der Anmeldung mit dem aktuellen Konto zuordnen.",
204
+ "description": "Nach dem Trennen können Sie sich nicht mehr mit dem {{provider}}-Konto \"{{providerAccountId}}\" anmelden. Wenn Sie das {{provider}}-Konto erneut mit diesem Konto verbinden möchten, stellen Sie bitte sicher, dass die E-Mail-Adresse des {{provider}}-Kontos {{email}} ist. Wir werden es beim nächsten Login automatisch mit Ihrem aktuellen Konto verknüpfen.",
95
205
  "forbidden": "Sie müssen mindestens ein Drittanbieter-Konto verbunden behalten.",
96
206
  "title": "Möchten Sie das Drittanbieter-Konto {{provider}} wirklich trennen?"
97
207
  }
98
208
  },
209
+ "title": "Profilinformationen",
210
+ "updateAvatar": "Avatar aktualisieren",
211
+ "updateFullName": "Vollständigen Namen aktualisieren",
99
212
  "username": "Benutzername"
100
213
  },
101
214
  "signout": "Ausloggen",