@lobehub/chat 1.105.1 → 1.105.2

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 (60) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/changelog/v1.json +9 -0
  3. package/locales/ar/auth.json +54 -0
  4. package/locales/bg-BG/auth.json +54 -0
  5. package/locales/de-DE/auth.json +54 -0
  6. package/locales/en-US/auth.json +54 -0
  7. package/locales/es-ES/auth.json +54 -0
  8. package/locales/fa-IR/auth.json +54 -0
  9. package/locales/fr-FR/auth.json +54 -0
  10. package/locales/it-IT/auth.json +54 -0
  11. package/locales/ja-JP/auth.json +54 -0
  12. package/locales/ko-KR/auth.json +54 -0
  13. package/locales/nl-NL/auth.json +54 -0
  14. package/locales/pl-PL/auth.json +54 -0
  15. package/locales/pt-BR/auth.json +54 -0
  16. package/locales/ru-RU/auth.json +54 -0
  17. package/locales/tr-TR/auth.json +54 -0
  18. package/locales/vi-VN/auth.json +54 -0
  19. package/locales/zh-CN/auth.json +54 -0
  20. package/locales/zh-TW/auth.json +54 -0
  21. package/package.json +2 -2
  22. package/src/app/(backend)/middleware/auth/index.test.ts +5 -5
  23. package/src/app/(backend)/middleware/auth/index.ts +6 -6
  24. package/src/app/(backend)/webapi/chat/[provider]/route.test.ts +11 -9
  25. package/src/app/(backend)/webapi/plugin/gateway/route.ts +2 -2
  26. package/src/app/sitemap.tsx +1 -10
  27. package/src/config/aiModels/giteeai.ts +269 -2
  28. package/src/config/aiModels/siliconcloud.ts +24 -2
  29. package/src/config/aiModels/stepfun.ts +67 -2
  30. package/src/config/aiModels/volcengine.ts +56 -2
  31. package/src/config/aiModels/wenxin.ts +62 -2
  32. package/src/config/aiModels/xai.ts +19 -2
  33. package/src/const/auth.ts +2 -3
  34. package/src/libs/model-runtime/ModelRuntime.test.ts +3 -3
  35. package/src/libs/trpc/async/context.ts +3 -3
  36. package/src/libs/trpc/edge/context.ts +7 -2
  37. package/src/libs/trpc/edge/middleware/jwtPayload.test.ts +4 -4
  38. package/src/libs/trpc/edge/middleware/jwtPayload.ts +2 -2
  39. package/src/libs/trpc/lambda/context.ts +2 -2
  40. package/src/libs/trpc/lambda/middleware/keyVaults.ts +2 -2
  41. package/src/server/modules/AgentRuntime/index.test.ts +28 -25
  42. package/src/server/modules/AgentRuntime/index.ts +3 -3
  43. package/src/server/routers/async/caller.ts +2 -2
  44. package/src/server/routers/lambda/market/index.ts +0 -14
  45. package/src/server/routers/tools/search.test.ts +2 -2
  46. package/src/server/services/chunk/index.ts +3 -3
  47. package/src/server/services/discover/index.ts +0 -13
  48. package/src/server/sitemap.test.ts +0 -52
  49. package/src/server/sitemap.ts +1 -38
  50. package/src/services/_auth.ts +3 -3
  51. package/src/services/discover.ts +0 -4
  52. package/src/store/discover/slices/mcp/action.ts +0 -8
  53. package/src/utils/client/xor-obfuscation.test.ts +370 -0
  54. package/src/utils/client/xor-obfuscation.ts +39 -0
  55. package/src/utils/server/xor.test.ts +123 -0
  56. package/src/utils/server/xor.ts +42 -0
  57. package/src/utils/jwt.test.ts +0 -27
  58. package/src/utils/jwt.ts +0 -37
  59. package/src/utils/server/jwt.test.ts +0 -62
  60. package/src/utils/server/jwt.ts +0 -28
package/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.105.2](https://github.com/lobehub/lobe-chat/compare/v1.105.1...v1.105.2)
6
+
7
+ <sup>Released on **2025-07-29**</sup>
8
+
9
+ #### ♻ Code Refactoring
10
+
11
+ - **misc**: Clean mcp sitemap, refactor jose-JWT to xor obfuscation.
12
+
13
+ #### 💄 Styles
14
+
15
+ - **misc**: Add more OpenAI SDK Text2Image providers, update i18n.
16
+
17
+ <br/>
18
+
19
+ <details>
20
+ <summary><kbd>Improvements and Fixes</kbd></summary>
21
+
22
+ #### Code refactoring
23
+
24
+ - **misc**: Clean mcp sitemap, closes [#8596](https://github.com/lobehub/lobe-chat/issues/8596) ([b9e3e66](https://github.com/lobehub/lobe-chat/commit/b9e3e66))
25
+ - **misc**: Refactor jose-JWT to xor obfuscation, closes [#8595](https://github.com/lobehub/lobe-chat/issues/8595) ([be98d56](https://github.com/lobehub/lobe-chat/commit/be98d56))
26
+
27
+ #### Styles
28
+
29
+ - **misc**: Add more OpenAI SDK Text2Image providers, closes [#8573](https://github.com/lobehub/lobe-chat/issues/8573) ([403aebd](https://github.com/lobehub/lobe-chat/commit/403aebd))
30
+ - **misc**: Update i18n, closes [#8593](https://github.com/lobehub/lobe-chat/issues/8593) ([356cf0c](https://github.com/lobehub/lobe-chat/commit/356cf0c))
31
+
32
+ </details>
33
+
34
+ <div align="right">
35
+
36
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
37
+
38
+ </div>
39
+
5
40
  ### [Version 1.105.1](https://github.com/lobehub/lobe-chat/compare/v1.105.0...v1.105.1)
6
41
 
7
42
  <sup>Released on **2025-07-29**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Add more OpenAI SDK Text2Image providers, update i18n."
6
+ ]
7
+ },
8
+ "date": "2025-07-29",
9
+ "version": "1.105.2"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "improvements": [
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "تم الإنشاء تلقائيًا",
5
+ "copy": "نسخ",
6
+ "copyError": "فشل النسخ",
7
+ "copySuccess": "تم نسخ مفتاح API إلى الحافظة",
8
+ "enterPlaceholder": "الرجاء الإدخال",
9
+ "hide": "إخفاء",
10
+ "neverExpires": "لا تنتهي صلاحيتها أبدًا",
11
+ "neverUsed": "لم يُستخدم أبدًا",
12
+ "show": "عرض"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "تاريخ الانتهاء",
18
+ "placeholder": "لا تنتهي صلاحيتها أبدًا"
19
+ },
20
+ "name": {
21
+ "label": "الاسم",
22
+ "placeholder": "الرجاء إدخال اسم مفتاح API"
23
+ }
24
+ },
25
+ "submit": "إنشاء",
26
+ "title": "إنشاء مفتاح API"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "إنشاء مفتاح API",
31
+ "delete": "حذف",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "إلغاء",
35
+ "ok": "تأكيد"
36
+ },
37
+ "content": "هل أنت متأكد من حذف هذا المفتاح؟",
38
+ "title": "تأكيد العملية"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "الإجراءات",
43
+ "expiresAt": "تاريخ الانتهاء",
44
+ "key": "المفتاح",
45
+ "lastUsedAt": "آخر استخدام",
46
+ "name": "الاسم",
47
+ "status": "حالة التفعيل"
48
+ },
49
+ "title": "قائمة مفاتيح API"
50
+ },
51
+ "validation": {
52
+ "required": "لا يمكن أن يكون المحتوى فارغًا"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "الشهر الماضي",
4
57
  "recent30Days": "آخر 30 يومًا"
@@ -89,6 +142,7 @@
89
142
  "words": "كلمات"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "إدارة مفاتيح API",
92
146
  "profile": "الملف الشخصي",
93
147
  "security": "الأمان",
94
148
  "stats": "الإحصائيات"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "Автоматично генериран",
5
+ "copy": "Копирай",
6
+ "copyError": "Грешка при копиране",
7
+ "copySuccess": "API ключът е копиран в клипборда",
8
+ "enterPlaceholder": "Моля, въведете",
9
+ "hide": "Скрий",
10
+ "neverExpires": "Никога не изтича",
11
+ "neverUsed": "Никога не е използван",
12
+ "show": "Покажи"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "Дата на изтичане",
18
+ "placeholder": "Никога не изтича"
19
+ },
20
+ "name": {
21
+ "label": "Име",
22
+ "placeholder": "Моля, въведете име на API ключ"
23
+ }
24
+ },
25
+ "submit": "Създай",
26
+ "title": "Създаване на API ключ"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "Създай API ключ",
31
+ "delete": "Изтрий",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "Отказ",
35
+ "ok": "Потвърди"
36
+ },
37
+ "content": "Сигурни ли сте, че искате да изтриете този API ключ?",
38
+ "title": "Потвърждение на действие"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "Действия",
43
+ "expiresAt": "Дата на изтичане",
44
+ "key": "Ключ",
45
+ "lastUsedAt": "Последна употреба",
46
+ "name": "Име",
47
+ "status": "Статус на активиране"
48
+ },
49
+ "title": "Списък с API ключове"
50
+ },
51
+ "validation": {
52
+ "required": "Полето не може да бъде празно"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "Миналия месец",
4
57
  "recent30Days": "Последните 30 дни"
@@ -89,6 +142,7 @@
89
142
  "words": "Думи"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "Управление на API ключове",
92
146
  "profile": "Профил",
93
147
  "security": "Сигурност",
94
148
  "stats": "Статистика"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "Automatisch generiert",
5
+ "copy": "Kopieren",
6
+ "copyError": "Kopieren fehlgeschlagen",
7
+ "copySuccess": "API-Schlüssel wurde in die Zwischenablage kopiert",
8
+ "enterPlaceholder": "Bitte eingeben",
9
+ "hide": "Verbergen",
10
+ "neverExpires": "Läuft nie ab",
11
+ "neverUsed": "Nie verwendet",
12
+ "show": "Anzeigen"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "Ablaufdatum",
18
+ "placeholder": "Läuft nie ab"
19
+ },
20
+ "name": {
21
+ "label": "Name",
22
+ "placeholder": "Bitte API-Schlüsselname eingeben"
23
+ }
24
+ },
25
+ "submit": "Erstellen",
26
+ "title": "API-Schlüssel erstellen"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "API-Schlüssel erstellen",
31
+ "delete": "Löschen",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "Abbrechen",
35
+ "ok": "Bestätigen"
36
+ },
37
+ "content": "Möchten Sie diesen API-Schlüssel wirklich löschen?",
38
+ "title": "Bestätigung"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "Aktionen",
43
+ "expiresAt": "Ablaufdatum",
44
+ "key": "Schlüssel",
45
+ "lastUsedAt": "Letzte Verwendung",
46
+ "name": "Name",
47
+ "status": "Aktivierungsstatus"
48
+ },
49
+ "title": "API-Schlüssel Liste"
50
+ },
51
+ "validation": {
52
+ "required": "Inhalt darf nicht leer sein"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "Letzter Monat",
4
57
  "recent30Days": "Letzte 30 Tage"
@@ -89,6 +142,7 @@
89
142
  "words": "Wörter"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "API-Schlüssel Verwaltung",
92
146
  "profile": "Profil",
93
147
  "security": "Sicherheit",
94
148
  "stats": "Statistiken"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "Auto-generated",
5
+ "copy": "Copy",
6
+ "copyError": "Copy failed",
7
+ "copySuccess": "API Key copied to clipboard",
8
+ "enterPlaceholder": "Please enter",
9
+ "hide": "Hide",
10
+ "neverExpires": "Never expires",
11
+ "neverUsed": "Never used",
12
+ "show": "Show"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "Expiration Date",
18
+ "placeholder": "Never expires"
19
+ },
20
+ "name": {
21
+ "label": "Name",
22
+ "placeholder": "Please enter API Key name"
23
+ }
24
+ },
25
+ "submit": "Create",
26
+ "title": "Create API Key"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "Create API Key",
31
+ "delete": "Delete",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "Cancel",
35
+ "ok": "Confirm"
36
+ },
37
+ "content": "Are you sure you want to delete this API Key?",
38
+ "title": "Confirm Action"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "Actions",
43
+ "expiresAt": "Expiration Date",
44
+ "key": "Key",
45
+ "lastUsedAt": "Last Used",
46
+ "name": "Name",
47
+ "status": "Enabled Status"
48
+ },
49
+ "title": "API Key List"
50
+ },
51
+ "validation": {
52
+ "required": "This field cannot be empty"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "Last Month",
4
57
  "recent30Days": "Last 30 Days"
@@ -89,6 +142,7 @@
89
142
  "words": "Total Words"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "API Key Management",
92
146
  "profile": "Profile",
93
147
  "security": "Security",
94
148
  "stats": "Statistics"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "Generado automáticamente",
5
+ "copy": "Copiar",
6
+ "copyError": "Error al copiar",
7
+ "copySuccess": "Clave API copiada al portapapeles",
8
+ "enterPlaceholder": "Por favor ingrese",
9
+ "hide": "Ocultar",
10
+ "neverExpires": "Nunca expira",
11
+ "neverUsed": "Nunca usado",
12
+ "show": "Mostrar"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "Fecha de expiración",
18
+ "placeholder": "Nunca expira"
19
+ },
20
+ "name": {
21
+ "label": "Nombre",
22
+ "placeholder": "Por favor ingrese el nombre de la clave API"
23
+ }
24
+ },
25
+ "submit": "Crear",
26
+ "title": "Crear Clave API"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "Crear Clave API",
31
+ "delete": "Eliminar",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "Cancelar",
35
+ "ok": "Confirmar"
36
+ },
37
+ "content": "¿Está seguro de eliminar esta clave API?",
38
+ "title": "Confirmar acción"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "Acciones",
43
+ "expiresAt": "Fecha de expiración",
44
+ "key": "Clave",
45
+ "lastUsedAt": "Último uso",
46
+ "name": "Nombre",
47
+ "status": "Estado"
48
+ },
49
+ "title": "Lista de Claves API"
50
+ },
51
+ "validation": {
52
+ "required": "El contenido no puede estar vacío"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "Último mes",
4
57
  "recent30Days": "Últimos 30 días"
@@ -89,6 +142,7 @@
89
142
  "words": "Palabras"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "Gestión de Claves API",
92
146
  "profile": "Perfil",
93
147
  "security": "Seguridad",
94
148
  "stats": "Estadísticas"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "تولید خودکار",
5
+ "copy": "کپی",
6
+ "copyError": "کپی ناموفق بود",
7
+ "copySuccess": "کلید API به کلیپ‌بورد کپی شد",
8
+ "enterPlaceholder": "لطفاً وارد کنید",
9
+ "hide": "مخفی کردن",
10
+ "neverExpires": "هرگز منقضی نمی‌شود",
11
+ "neverUsed": "هرگز استفاده نشده",
12
+ "show": "نمایش"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "تاریخ انقضا",
18
+ "placeholder": "هرگز منقضی نمی‌شود"
19
+ },
20
+ "name": {
21
+ "label": "نام",
22
+ "placeholder": "لطفاً نام کلید API را وارد کنید"
23
+ }
24
+ },
25
+ "submit": "ایجاد",
26
+ "title": "ایجاد کلید API"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "ایجاد کلید API",
31
+ "delete": "حذف",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "لغو",
35
+ "ok": "تأیید"
36
+ },
37
+ "content": "آیا از حذف این کلید API مطمئن هستید؟",
38
+ "title": "تأیید عملیات"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "عملیات",
43
+ "expiresAt": "تاریخ انقضا",
44
+ "key": "کلید",
45
+ "lastUsedAt": "آخرین زمان استفاده",
46
+ "name": "نام",
47
+ "status": "وضعیت فعال"
48
+ },
49
+ "title": "فهرست کلیدهای API"
50
+ },
51
+ "validation": {
52
+ "required": "محتوا نباید خالی باشد"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "ماه گذشته",
4
57
  "recent30Days": "۳۰ روز گذشته"
@@ -89,6 +142,7 @@
89
142
  "words": "کلمات"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "مدیریت کلید API",
92
146
  "profile": "پروفایل",
93
147
  "security": "امنیت",
94
148
  "stats": "آمار"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "Généré automatiquement",
5
+ "copy": "Copier",
6
+ "copyError": "Échec de la copie",
7
+ "copySuccess": "Clé API copiée dans le presse-papiers",
8
+ "enterPlaceholder": "Veuillez saisir",
9
+ "hide": "Cacher",
10
+ "neverExpires": "N'expire jamais",
11
+ "neverUsed": "Jamais utilisé",
12
+ "show": "Afficher"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "Date d'expiration",
18
+ "placeholder": "N'expire jamais"
19
+ },
20
+ "name": {
21
+ "label": "Nom",
22
+ "placeholder": "Veuillez saisir le nom de la clé API"
23
+ }
24
+ },
25
+ "submit": "Créer",
26
+ "title": "Créer une clé API"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "Créer une clé API",
31
+ "delete": "Supprimer",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "Annuler",
35
+ "ok": "Confirmer"
36
+ },
37
+ "content": "Confirmez-vous la suppression de cette clé API ?",
38
+ "title": "Confirmation"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "Actions",
43
+ "expiresAt": "Date d'expiration",
44
+ "key": "Clé",
45
+ "lastUsedAt": "Dernière utilisation",
46
+ "name": "Nom",
47
+ "status": "Statut d'activation"
48
+ },
49
+ "title": "Liste des clés API"
50
+ },
51
+ "validation": {
52
+ "required": "Ce champ est obligatoire"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "Le mois dernier",
4
57
  "recent30Days": "Les 30 derniers jours"
@@ -89,6 +142,7 @@
89
142
  "words": "Mots"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "Gestion des clés API",
92
146
  "profile": "Profil",
93
147
  "security": "Sécurité",
94
148
  "stats": "Statistiques"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "Generato automaticamente",
5
+ "copy": "Copia",
6
+ "copyError": "Copia non riuscita",
7
+ "copySuccess": "Chiave API copiata negli appunti",
8
+ "enterPlaceholder": "Inserisci",
9
+ "hide": "Nascondi",
10
+ "neverExpires": "Non scade mai",
11
+ "neverUsed": "Mai usato",
12
+ "show": "Mostra"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "Data di scadenza",
18
+ "placeholder": "Non scade mai"
19
+ },
20
+ "name": {
21
+ "label": "Nome",
22
+ "placeholder": "Inserisci il nome della Chiave API"
23
+ }
24
+ },
25
+ "submit": "Crea",
26
+ "title": "Crea Chiave API"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "Crea Chiave API",
31
+ "delete": "Elimina",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "Annulla",
35
+ "ok": "Conferma"
36
+ },
37
+ "content": "Sei sicuro di voler eliminare questa Chiave API?",
38
+ "title": "Conferma azione"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "Azioni",
43
+ "expiresAt": "Data di scadenza",
44
+ "key": "Chiave",
45
+ "lastUsedAt": "Ultimo utilizzo",
46
+ "name": "Nome",
47
+ "status": "Stato attivo"
48
+ },
49
+ "title": "Elenco Chiavi API"
50
+ },
51
+ "validation": {
52
+ "required": "Il contenuto non può essere vuoto"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "Mese Scorso",
4
57
  "recent30Days": "Ultimi 30 Giorni"
@@ -89,6 +142,7 @@
89
142
  "words": "Parole"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "Gestione Chiavi API",
92
146
  "profile": "Profilo",
93
147
  "security": "Sicurezza",
94
148
  "stats": "Statistiche"
@@ -1,4 +1,57 @@
1
1
  {
2
+ "apikey": {
3
+ "display": {
4
+ "autoGenerated": "自動生成",
5
+ "copy": "コピー",
6
+ "copyError": "コピーに失敗しました",
7
+ "copySuccess": "APIキーがクリップボードにコピーされました",
8
+ "enterPlaceholder": "入力してください",
9
+ "hide": "非表示",
10
+ "neverExpires": "期限なし",
11
+ "neverUsed": "未使用",
12
+ "show": "表示"
13
+ },
14
+ "form": {
15
+ "fields": {
16
+ "expiresAt": {
17
+ "label": "有効期限",
18
+ "placeholder": "期限なし"
19
+ },
20
+ "name": {
21
+ "label": "名前",
22
+ "placeholder": "APIキーの名前を入力してください"
23
+ }
24
+ },
25
+ "submit": "作成",
26
+ "title": "APIキーを作成"
27
+ },
28
+ "list": {
29
+ "actions": {
30
+ "create": "APIキーを作成",
31
+ "delete": "削除",
32
+ "deleteConfirm": {
33
+ "actions": {
34
+ "cancel": "キャンセル",
35
+ "ok": "確認"
36
+ },
37
+ "content": "このAPIキーを削除してもよろしいですか?",
38
+ "title": "操作の確認"
39
+ }
40
+ },
41
+ "columns": {
42
+ "actions": "操作",
43
+ "expiresAt": "有効期限",
44
+ "key": "キー",
45
+ "lastUsedAt": "最終使用日時",
46
+ "name": "名前",
47
+ "status": "有効状態"
48
+ },
49
+ "title": "APIキー一覧"
50
+ },
51
+ "validation": {
52
+ "required": "内容を入力してください"
53
+ }
54
+ },
2
55
  "date": {
3
56
  "prevMonth": "先月",
4
57
  "recent30Days": "過去30日間"
@@ -89,6 +142,7 @@
89
142
  "words": "単語"
90
143
  },
91
144
  "tab": {
145
+ "apikey": "APIキー管理",
92
146
  "profile": "プロフィール",
93
147
  "security": "セキュリティ",
94
148
  "stats": "統計"