@adminiumjs/i18n 0.2.2-rc.0 → 0.2.3

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 (229) hide show
  1. package/dist/a11y-keys.d.ts +1 -1
  2. package/dist/a11y-keys.d.ts.map +1 -1
  3. package/dist/a11y-keys.js +481 -172
  4. package/dist/a11y-keys.js.map +1 -1
  5. package/dist/create-i18n.d.ts +16 -6
  6. package/dist/create-i18n.d.ts.map +1 -1
  7. package/dist/create-i18n.js +23 -9
  8. package/dist/create-i18n.js.map +1 -1
  9. package/dist/editing.d.ts +1 -1
  10. package/dist/editing.js +1 -1
  11. package/dist/index.d.ts +2 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +19 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/keys.d.ts +6 -4
  16. package/dist/keys.d.ts.map +1 -1
  17. package/dist/keys.js +6 -4
  18. package/dist/keys.js.map +1 -1
  19. package/dist/overrides.d.ts +1 -1
  20. package/dist/overrides.d.ts.map +1 -1
  21. package/dist/resources/ar-eg/common.d.ts +96 -970
  22. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  23. package/dist/resources/ar-eg/common.js +99 -973
  24. package/dist/resources/ar-eg/common.js.map +1 -1
  25. package/dist/resources/ar-eg/errors.d.ts +3 -2
  26. package/dist/resources/ar-eg/errors.d.ts.map +1 -1
  27. package/dist/resources/ar-eg/errors.js +3 -2
  28. package/dist/resources/ar-eg/errors.js.map +1 -1
  29. package/dist/resources/ar-eg/generated.d.ts +3 -2
  30. package/dist/resources/ar-eg/generated.d.ts.map +1 -1
  31. package/dist/resources/ar-eg/generated.js +3 -2
  32. package/dist/resources/ar-eg/generated.js.map +1 -1
  33. package/dist/resources/ar-eg/studio.d.ts +1282 -2
  34. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  35. package/dist/resources/ar-eg/studio.js +1282 -2
  36. package/dist/resources/ar-eg/studio.js.map +1 -1
  37. package/dist/resources/ar-eg/ui.d.ts +60 -2
  38. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  39. package/dist/resources/ar-eg/ui.js +72 -14
  40. package/dist/resources/ar-eg/ui.js.map +1 -1
  41. package/dist/resources/cs-cz/common.d.ts +96 -970
  42. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  43. package/dist/resources/cs-cz/common.js +99 -973
  44. package/dist/resources/cs-cz/common.js.map +1 -1
  45. package/dist/resources/cs-cz/errors.d.ts +3 -2
  46. package/dist/resources/cs-cz/errors.d.ts.map +1 -1
  47. package/dist/resources/cs-cz/errors.js +3 -2
  48. package/dist/resources/cs-cz/errors.js.map +1 -1
  49. package/dist/resources/cs-cz/generated.d.ts +3 -2
  50. package/dist/resources/cs-cz/generated.d.ts.map +1 -1
  51. package/dist/resources/cs-cz/generated.js +3 -2
  52. package/dist/resources/cs-cz/generated.js.map +1 -1
  53. package/dist/resources/cs-cz/studio.d.ts +1282 -2
  54. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  55. package/dist/resources/cs-cz/studio.js +1282 -2
  56. package/dist/resources/cs-cz/studio.js.map +1 -1
  57. package/dist/resources/cs-cz/ui.d.ts +60 -2
  58. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  59. package/dist/resources/cs-cz/ui.js +72 -14
  60. package/dist/resources/cs-cz/ui.js.map +1 -1
  61. package/dist/resources/da-dk/common.d.ts +96 -970
  62. package/dist/resources/da-dk/common.d.ts.map +1 -1
  63. package/dist/resources/da-dk/common.js +99 -973
  64. package/dist/resources/da-dk/common.js.map +1 -1
  65. package/dist/resources/da-dk/errors.d.ts +3 -2
  66. package/dist/resources/da-dk/errors.d.ts.map +1 -1
  67. package/dist/resources/da-dk/errors.js +3 -2
  68. package/dist/resources/da-dk/errors.js.map +1 -1
  69. package/dist/resources/da-dk/generated.d.ts +3 -2
  70. package/dist/resources/da-dk/generated.d.ts.map +1 -1
  71. package/dist/resources/da-dk/generated.js +3 -2
  72. package/dist/resources/da-dk/generated.js.map +1 -1
  73. package/dist/resources/da-dk/studio.d.ts +1282 -2
  74. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  75. package/dist/resources/da-dk/studio.js +1282 -2
  76. package/dist/resources/da-dk/studio.js.map +1 -1
  77. package/dist/resources/da-dk/ui.d.ts +60 -2
  78. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  79. package/dist/resources/da-dk/ui.js +72 -14
  80. package/dist/resources/da-dk/ui.js.map +1 -1
  81. package/dist/resources/de-de/common.d.ts +96 -970
  82. package/dist/resources/de-de/common.d.ts.map +1 -1
  83. package/dist/resources/de-de/common.js +99 -973
  84. package/dist/resources/de-de/common.js.map +1 -1
  85. package/dist/resources/de-de/errors.d.ts +3 -2
  86. package/dist/resources/de-de/errors.d.ts.map +1 -1
  87. package/dist/resources/de-de/errors.js +3 -2
  88. package/dist/resources/de-de/errors.js.map +1 -1
  89. package/dist/resources/de-de/generated.d.ts +3 -2
  90. package/dist/resources/de-de/generated.d.ts.map +1 -1
  91. package/dist/resources/de-de/generated.js +3 -2
  92. package/dist/resources/de-de/generated.js.map +1 -1
  93. package/dist/resources/de-de/studio.d.ts +1282 -2
  94. package/dist/resources/de-de/studio.d.ts.map +1 -1
  95. package/dist/resources/de-de/studio.js +1282 -2
  96. package/dist/resources/de-de/studio.js.map +1 -1
  97. package/dist/resources/de-de/ui.d.ts +60 -2
  98. package/dist/resources/de-de/ui.d.ts.map +1 -1
  99. package/dist/resources/de-de/ui.js +72 -14
  100. package/dist/resources/de-de/ui.js.map +1 -1
  101. package/dist/resources/eager.d.ts +3 -0
  102. package/dist/resources/eager.d.ts.map +1 -0
  103. package/dist/resources/eager.js +25 -0
  104. package/dist/resources/eager.js.map +1 -0
  105. package/dist/resources/en-us/common.d.ts +96 -970
  106. package/dist/resources/en-us/common.d.ts.map +1 -1
  107. package/dist/resources/en-us/common.js +99 -973
  108. package/dist/resources/en-us/common.js.map +1 -1
  109. package/dist/resources/en-us/errors.d.ts +3 -2
  110. package/dist/resources/en-us/errors.d.ts.map +1 -1
  111. package/dist/resources/en-us/errors.js +3 -2
  112. package/dist/resources/en-us/errors.js.map +1 -1
  113. package/dist/resources/en-us/generated.d.ts +3 -2
  114. package/dist/resources/en-us/generated.d.ts.map +1 -1
  115. package/dist/resources/en-us/generated.js +3 -2
  116. package/dist/resources/en-us/generated.js.map +1 -1
  117. package/dist/resources/en-us/studio.d.ts +1282 -2
  118. package/dist/resources/en-us/studio.d.ts.map +1 -1
  119. package/dist/resources/en-us/studio.js +1282 -2
  120. package/dist/resources/en-us/studio.js.map +1 -1
  121. package/dist/resources/en-us/ui.d.ts +60 -2
  122. package/dist/resources/en-us/ui.d.ts.map +1 -1
  123. package/dist/resources/en-us/ui.js +72 -14
  124. package/dist/resources/en-us/ui.js.map +1 -1
  125. package/dist/resources/fr-fr/common.d.ts +96 -970
  126. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  127. package/dist/resources/fr-fr/common.js +99 -973
  128. package/dist/resources/fr-fr/common.js.map +1 -1
  129. package/dist/resources/fr-fr/errors.d.ts +3 -2
  130. package/dist/resources/fr-fr/errors.d.ts.map +1 -1
  131. package/dist/resources/fr-fr/errors.js +3 -2
  132. package/dist/resources/fr-fr/errors.js.map +1 -1
  133. package/dist/resources/fr-fr/generated.d.ts +3 -2
  134. package/dist/resources/fr-fr/generated.d.ts.map +1 -1
  135. package/dist/resources/fr-fr/generated.js +3 -2
  136. package/dist/resources/fr-fr/generated.js.map +1 -1
  137. package/dist/resources/fr-fr/studio.d.ts +1282 -2
  138. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  139. package/dist/resources/fr-fr/studio.js +1282 -2
  140. package/dist/resources/fr-fr/studio.js.map +1 -1
  141. package/dist/resources/fr-fr/ui.d.ts +60 -2
  142. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  143. package/dist/resources/fr-fr/ui.js +72 -14
  144. package/dist/resources/fr-fr/ui.js.map +1 -1
  145. package/dist/resources/index.d.ts +3 -6
  146. package/dist/resources/index.d.ts.map +1 -1
  147. package/dist/resources/index.js +15 -14
  148. package/dist/resources/index.js.map +1 -1
  149. package/dist/resources/lazy.d.ts +19 -9
  150. package/dist/resources/lazy.d.ts.map +1 -1
  151. package/dist/resources/lazy.js +4 -2
  152. package/dist/resources/lazy.js.map +1 -1
  153. package/dist/resources/namespaces.d.ts +43 -0
  154. package/dist/resources/namespaces.d.ts.map +1 -0
  155. package/dist/resources/namespaces.js +37 -0
  156. package/dist/resources/namespaces.js.map +1 -0
  157. package/dist/resources/zh-cn/common.d.ts +96 -970
  158. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  159. package/dist/resources/zh-cn/common.js +99 -973
  160. package/dist/resources/zh-cn/common.js.map +1 -1
  161. package/dist/resources/zh-cn/errors.d.ts +3 -2
  162. package/dist/resources/zh-cn/errors.d.ts.map +1 -1
  163. package/dist/resources/zh-cn/errors.js +3 -2
  164. package/dist/resources/zh-cn/errors.js.map +1 -1
  165. package/dist/resources/zh-cn/generated.d.ts +3 -2
  166. package/dist/resources/zh-cn/generated.d.ts.map +1 -1
  167. package/dist/resources/zh-cn/generated.js +3 -2
  168. package/dist/resources/zh-cn/generated.js.map +1 -1
  169. package/dist/resources/zh-cn/studio.d.ts +1282 -2
  170. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  171. package/dist/resources/zh-cn/studio.js +1282 -2
  172. package/dist/resources/zh-cn/studio.js.map +1 -1
  173. package/dist/resources/zh-cn/ui.d.ts +60 -2
  174. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  175. package/dist/resources/zh-cn/ui.js +72 -14
  176. package/dist/resources/zh-cn/ui.js.map +1 -1
  177. package/dist/resources/zh-tw/common.d.ts +96 -970
  178. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  179. package/dist/resources/zh-tw/common.js +99 -973
  180. package/dist/resources/zh-tw/common.js.map +1 -1
  181. package/dist/resources/zh-tw/errors.d.ts +3 -2
  182. package/dist/resources/zh-tw/errors.d.ts.map +1 -1
  183. package/dist/resources/zh-tw/errors.js +3 -2
  184. package/dist/resources/zh-tw/errors.js.map +1 -1
  185. package/dist/resources/zh-tw/generated.d.ts +3 -2
  186. package/dist/resources/zh-tw/generated.d.ts.map +1 -1
  187. package/dist/resources/zh-tw/generated.js +3 -2
  188. package/dist/resources/zh-tw/generated.js.map +1 -1
  189. package/dist/resources/zh-tw/studio.d.ts +1282 -2
  190. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  191. package/dist/resources/zh-tw/studio.js +1282 -2
  192. package/dist/resources/zh-tw/studio.js.map +1 -1
  193. package/dist/resources/zh-tw/ui.d.ts +60 -2
  194. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  195. package/dist/resources/zh-tw/ui.js +72 -14
  196. package/dist/resources/zh-tw/ui.js.map +1 -1
  197. package/dist/review-status.js +7 -7
  198. package/locales/ar-EG/.meta.json +3783 -2339
  199. package/locales/ar-EG/common.json +96 -971
  200. package/locales/ar-EG/studio.json +1279 -0
  201. package/locales/ar-EG/ui.json +69 -12
  202. package/locales/cs-CZ/.meta.json +3849 -2405
  203. package/locales/cs-CZ/common.json +96 -971
  204. package/locales/cs-CZ/studio.json +1279 -0
  205. package/locales/cs-CZ/ui.json +69 -12
  206. package/locales/da-DK/.meta.json +3935 -2491
  207. package/locales/da-DK/common.json +96 -971
  208. package/locales/da-DK/studio.json +1279 -0
  209. package/locales/da-DK/ui.json +69 -12
  210. package/locales/de-DE/.meta.json +3895 -2451
  211. package/locales/de-DE/common.json +96 -971
  212. package/locales/de-DE/studio.json +1279 -0
  213. package/locales/de-DE/ui.json +69 -12
  214. package/locales/en-US/common.json +96 -971
  215. package/locales/en-US/studio.json +1279 -0
  216. package/locales/en-US/ui.json +69 -12
  217. package/locales/fr-FR/.meta.json +3964 -2520
  218. package/locales/fr-FR/common.json +96 -971
  219. package/locales/fr-FR/studio.json +1279 -0
  220. package/locales/fr-FR/ui.json +69 -12
  221. package/locales/zh-CN/.meta.json +3781 -2337
  222. package/locales/zh-CN/common.json +96 -971
  223. package/locales/zh-CN/studio.json +1279 -0
  224. package/locales/zh-CN/ui.json +69 -12
  225. package/locales/zh-TW/.meta.json +3785 -2341
  226. package/locales/zh-TW/common.json +96 -971
  227. package/locales/zh-TW/studio.json +1279 -0
  228. package/locales/zh-TW/ui.json +69 -12
  229. package/package.json +1 -1
@@ -2,8 +2,9 @@
2
2
  /**
3
3
  * GENERATED MIRROR of ../../../locales/zh-CN/common.json — do not edit by hand.
4
4
  * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);
5
- * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits
6
- * the other locales) without JSON import attributes (browser + NodeNext safe).
5
+ * this TS mirror exists so the runtime can bundle a namespace (en-US's eager
6
+ * ones) or chunk-split it (every other locale, and en-US's deferred `studio`)
7
+ * without JSON import attributes (browser + NodeNext safe).
7
8
  * Parity is enforced by src/resources/parity.test.ts. Regenerate with
8
9
  * scripts/gen-resources.mjs.
9
10
  */
@@ -23,6 +24,7 @@ export default {
23
24
  },
24
25
  "auth": {
25
26
  "headline": "把任何数据库变成仪表盘。",
27
+ "description": "连接 PostgreSQL,Adminium 就会生成一个可换主题、懂权限的管理后台——无需写代码。",
26
28
  "trust": "AGPL 核心 · 自托管 · 数据始终归你所有",
27
29
  "signIn": {
28
30
  "title": "欢迎回来",
@@ -113,6 +115,11 @@ export default {
113
115
  "audit": "审计日志",
114
116
  "security": "密码与会话"
115
117
  },
118
+ "apps": {
119
+ "frame": {
120
+ "noFrames": "此应用需要支持框架的浏览器。"
121
+ }
122
+ },
116
123
  "topbar": {
117
124
  "search": "搜索…",
118
125
  "notifications": "通知",
@@ -124,6 +131,8 @@ export default {
124
131
  "profile": "个人资料",
125
132
  "preferences": "偏好设置",
126
133
  "studio": "Studio",
134
+ "dataConnections": "数据连接",
135
+ "workspaceSettings": "工作区设置",
127
136
  "signOut": "退出登录"
128
137
  },
129
138
  "palette": {
@@ -240,10 +249,16 @@ export default {
240
249
  "body": "管理员已暂停此工作区。你的数据仍完整保留——请联系工作区所有者以恢复访问权限。",
241
250
  "primary": "联系所有者",
242
251
  "secondary": "返回"
252
+ },
253
+ "connectionPaused": {
254
+ "title": "此连接已暂停",
255
+ "body": "管理员暂停了此页面所用的数据库,因此当前不会加载数据。没有任何内容被删除 — 在 Studio → 数据连接中恢复该连接后即可恢复正常。",
256
+ "secondary": "返回"
243
257
  }
244
258
  },
245
259
  "notFound": {
246
260
  "title": "页面不见了",
261
+ "body": "你要找的页面不存在或已被移动。请检查网址,或返回你的仪表盘。",
247
262
  "errorLine": "错误 404",
248
263
  "searchPlaceholder": "搜索页面…",
249
264
  "matches": "匹配的页面",
@@ -261,10 +276,12 @@ export default {
261
276
  "title": "此页面渲染失败"
262
277
  },
263
278
  "tooNew": {
264
- "title": "此页面需要更新版本的 Adminium"
279
+ "title": "此页面需要更新版本的 Adminium",
280
+ "body": "此页面保存时使用的配置版本是 {version},而当前版本最高只支持到版本 {latest}。请升级 Adminium 后再打开。"
265
281
  },
266
282
  "unknownTemplate": {
267
- "title": "未知的页面模板"
283
+ "title": "未知的页面模板",
284
+ "body": "此页面使用了当前版本无法识别的模板。它可能来自更新版本的 Adminium,或来自尚未安装的扩展。"
268
285
  }
269
286
  },
270
287
  "mutation": {
@@ -316,6 +333,20 @@ export default {
316
333
  "twoFactor": "双重验证",
317
334
  "on": "已启用",
318
335
  "off": "未启用",
336
+ "nameRequired": "请输入你的姓名。",
337
+ "emailHelper": "用于登录。修改需要输入密码。",
338
+ "confirmPassword": "当前密码",
339
+ "confirmPasswordHelper": "在更改登录地址前,请确认是你本人。",
340
+ "save": "保存更改",
341
+ "saveFailed": "无法保存你的个人资料",
342
+ "saved": "个人资料已更新",
343
+ "savedBody": "新的信息已在整个工作区生效。如果你更改了邮箱,今后请使用新地址登录。",
344
+ "accessTitle": "访问权限",
345
+ "accessSubtitle": "此账户可以做什么,以及它如何证明身份。",
346
+ "rolesHelper": "角色由管理员授予,无法在自己的账户中更改。",
347
+ "manageTwoFactor": "管理",
348
+ "setUpTwoFactor": "设置",
349
+ "securityLink": "密码与会话",
319
350
  "preferences": {
320
351
  "title": "偏好设置",
321
352
  "subtitle": "Adminium 在你这里的外观与语言——在这台设备和你登录的每台设备上生效。",
@@ -353,816 +384,70 @@ export default {
353
384
  "emptyTitle": "暂无可配置项",
354
385
  "emptyBody": "随着功能上线,通知事件将显示在这里。",
355
386
  "saveFailed": "无法保存此更改。"
356
- }
357
- },
358
- "studio": {
359
- "source": {
360
- "engine": {
361
- "label": "数据库引擎",
362
- "postgres": "PostgreSQL",
363
- "mysql": "MySQL / MariaDB",
364
- "sqlite": "SQLite"
365
- },
366
- "format": {
367
- "label": "架构格式",
368
- "helper": "除非自动检测出错,否则保持自动检测即可。",
369
- "auto": "自动检测",
370
- "sql": "SQL DDL / pg_dump",
371
- "prisma": "Prisma 架构",
372
- "drizzle": "Drizzle ORM",
373
- "typeorm": "TypeORM 实体",
374
- "sequelize": "Sequelize 模型",
375
- "rails": "Rails schema.rb",
376
- "django": "Django models.py",
377
- "json": "Adminium JSON"
378
- },
379
- "sqlite": {
380
- "file": "数据库文件路径",
381
- "helper": "SQLite 是文件而非服务器——请填写运行 Adminium 的机器上的绝对路径。"
382
- },
383
- "file": {
384
- "detectedAs": "检测到:{format}",
385
- "moreWarnings": "另有 {count} 条警告——完整列表将在分析步骤中显示。",
386
- "dropTitle": "将架构文件拖放到此处,或浏览选择",
387
- "dropHint": "SQL DDL / pg_dump、Prisma、Drizzle、TypeORM、Sequelize、Rails schema.rb、Django 模型、Adminium JSON",
388
- "pitch": "无需数据库连接——我们解析你的架构文件并构建相同的仪表板。",
389
- "parsing": "正在读取上传的架构文件…",
390
- "tables": "个表",
391
- "columns": "列",
392
- "warnings": "警告",
393
- "errorTitle": "无法解析该文件",
394
- "parseFailed": "我们无法解析该文件。如果自动检测判断有误,请明确选择格式后重试。",
395
- "unsupported": "无法识别该格式——支持 SQL DDL、Prisma、Drizzle、TypeORM、Sequelize、Rails schema.rb、Django 模型和 Adminium JSON。请明确选择一种后重试。",
396
- "requestFailed": "上传失败——请检查网络连接后重试。"
397
- },
398
- "title": "连接你的数据库",
399
- "subtitle": "将 Adminium 指向一个数据库,我们会根据其架构生成管理仪表板。",
400
- "name": "连接名称",
401
- "namePlaceholder": "生产环境 Postgres",
402
- "modeLabel": "来源输入方式",
403
- "mode": {
404
- "dsn": "连接字符串",
405
- "fields": "逐项填写",
406
- "file": "架构文件"
407
- },
408
- "dsn": {
409
- "label": "连接字符串",
410
- "helper": "postgres://user:password@host:5432/database——mysql:// 和 sqlite: 也可用。",
411
- "incomplete": "请补全主机和数据库,例如 postgres://user@host:5432/db",
412
- "invalidScheme": "无法识别的协议——应为 postgres://、mysql://、mariadb:// 或 sqlite:",
413
- "quickFill": "快速填充:"
414
- },
415
- "fields": {
416
- "host": "主机",
417
- "port": "端口",
418
- "database": "数据库",
419
- "user": "用户",
420
- "password": "密码",
421
- "ssl": "SSL 模式",
422
- "preview": "连接字符串预览:"
423
- },
424
- "readOnlyRole": {
425
- "title": "使用只读角色",
426
- "body": "Adminium 绝不会写入你的数据库——设置过程仅使用架构元数据。建议使用仅有 SELECT 权限的专用用户;Adminium 自己的表放在哪里,可在元数据存储步骤中决定。"
427
- }
428
- },
429
- "capability": {
430
- "mysqlApproxRows": "MySQL 的行数来自存储引擎估算(偏差可达 ±40%),以 ≈ 显示。",
431
- "mysqlFkEnum": "MySQL 的外键/枚举元数据较弱:MyISAM 表不声明外键,枚举是按列的 enum(…) 类型,CHECK 约束需要 MySQL 8.0.16+ / MariaDB 10.2+。",
432
- "sqliteCheckEnums": "SQLite 没有原生枚举类型——枚举由 CHECK (col IN (…)) 约束合成。",
433
- "sqliteNoComments": "SQLite 不支持列注释——请在架构重映射编辑器中添加标签。",
434
- "importNoRowCounts": "架构文件不包含行数——表格列表显示 — 而不是编造的数字。",
435
- "importNoLiveHealth": "没有实时数据库连接——此来源无法进行健康检查和架构漂移检测。",
436
- "rowsUnavailable": "架构文件没有实时数据库——在连接数据库之前行数未知。",
437
- "rowsRunAnalyze": "尚无估算——请在数据库上运行 ANALYZE 以获取行数。",
438
- "rowsNoEstimate": "引擎未报告此表的行数估算。",
439
- "rowsApproximate": "存储引擎估算——在 InnoDB 上偏差可达 ±40%。"
440
- },
441
- "test": {
442
- "log": {
443
- "moreWarnings": "另有 {count} 条解析器警告",
444
- "connecting": "正在建立安全连接…",
445
- "connected": "已连接({latency} 毫秒)· 只读自省",
446
- "connectFailed": "连接失败。",
447
- "readingSchema": "正在读取架构:public",
448
- "readingFile": "正在读取上传的架构文件…",
449
- "parsingFile": "正在解析 {file}…",
450
- "detected": "检测到 {tables} 个表 · {columns} 列",
451
- "found": "共发现 {tables} 个表 · {columns} 列",
452
- "mapping": "正在映射列类型 → 输入组件",
453
- "relations": "正在检测关系…",
454
- "piiScan": "正在扫描 PII 列…",
455
- "piiDone": "PII 扫描完成——默认屏蔽 {count} 列",
456
- "piiDoneUnknown": "PII 扫描完成",
457
- "jobFailed": "自省失败。",
458
- "networkFailed": "请求失败——请检查网络连接后重试。",
459
- "ready": "就绪"
460
- },
461
- "title": "正在分析你的架构",
462
- "subtitle": "正在自省表、列和关系。这需要几秒钟。",
463
- "trust": "我们只读取你的架构和数据,不会做任何修改。",
464
- "errorTitle": "连接失败",
465
- "retry": "重试",
466
- "logLabel": "自省日志",
467
- "hint": {
468
- "auth": "身份验证失败——请检查 DSN 中的用户名和密码。",
469
- "hostUnreachable": "主机不可达——请检查主机名和端口,并确认数据库接受来自本机的连接(将我们的 IP 加入允许列表)。",
470
- "metaPlacement": "该数据源无法承载 Adminium 的元数据表——请改用单独的元数据库继续。",
471
- "permission": "该角色已连接,但缺少读取架构的权限——请为自省角色授予该架构的 USAGE 权限。",
472
- "timeout": "数据库未及时响应——请检查网络路径和负载后重试。",
473
- "tls": "TLS 协商失败——请尝试 sslmode=require,或上传服务器所需的 CA 证书。",
474
- "unknown": "连接失败——请核对 DSN 后重试。"
475
- }
476
- },
477
- "tables": {
478
- "importNoCounts": "架构文件不包含行数——在连接实时数据库之前,该列显示 —。",
479
- "title": "选择数据表",
480
- "subtitle": "选择要包含的表。之后可随时更改。",
481
- "search": "筛选表…",
482
- "listLabel": "可包含的表",
483
- "emptyFilter": "没有匹配筛选条件的表。",
484
- "pii": "PII",
485
- "highVolume": "高数据量",
486
- "highVolumeNote": "超过 100,000 行的表默认不勾选——运维类表很少适合放进仪表板。",
487
- "joinHidden": "{count} 个关联/系统表已预先隐藏——它们仍支撑多对多关系。"
488
- },
489
- "hub": {
490
- "title": "数据连接",
491
- "subtitle": "{total, plural, other {# 个连接中 {healthy, number} 个}}状态正常",
492
- "connectNew": "新建连接",
493
- "stats": {
494
- "connections": "连接",
495
- "healthy": "正常",
496
- "tables": "已包含的表",
497
- "pages": "已生成的页面"
498
- },
499
- "status": {
500
- "connected": "已连接",
501
- "error": "错误",
502
- "unconfigured": "草稿",
503
- "testing": "测试中…"
504
- },
505
- "card": {
506
- "readOnly": "只读",
507
- "tables": "表",
508
- "pages": "页面",
509
- "latency": "延迟",
510
- "latencyMs": "{latency, number} 毫秒",
511
- "lastIntrospected": "上次内省",
512
- "never": "从未"
513
- },
514
- "action": {
515
- "test": "测试",
516
- "reintrospect": "重新内省",
517
- "reintrospectFile": "架构文件来源没有在线数据库——请改为重新上传文件。",
518
- "remap": "重映射架构",
519
- "delete": "删除"
520
- },
521
- "test": {
522
- "ok": "连接正常 · {latency, number} 毫秒",
523
- "failed": "连接测试失败"
524
- },
525
- "introspect": {
526
- "noChanges": "架构无变化——未创建新快照。",
527
- "updated": "已重新内省架构",
528
- "masksProposed": "{count, plural, other {建议对 # 列进行脱敏}}——请在重映射编辑器中查看。",
529
- "failed": "内省失败,请重试。"
530
- },
531
- "delete": {
532
- "title": "删除连接",
533
- "body": "此操作将删除“{name}”及其生成的页面。您的数据库本身不会被改动。",
534
- "prompt": "输入 {name} 以确认",
535
- "confirm": "删除连接",
536
- "cancel": "取消",
537
- "close": "关闭",
538
- "success": "连接“{name}”已删除",
539
- "failed": "无法删除连接,请重试。"
540
- },
541
- "empty": {
542
- "title": "还没有数据源",
543
- "body": "连接数据库后,Adminium 会根据其架构生成您的管理面板。",
544
- "cta": "连接数据库"
545
- }
546
- },
547
- "settingsHub": {
548
- "title": "工作区设置",
549
- "subtitle": "此工作区的标识、安全与危险操作。",
550
- "save": "保存更改",
551
- "saved": "工作区设置已更新",
552
- "saveFailed": "无法保存工作区设置,请重试。",
553
- "superAdminOnlyTitle": "需要超级管理员",
554
- "superAdminOnly": "只有超级管理员才能更改工作区标识和安全设置。",
555
- "identity": {
556
- "heading": "工作区标识",
557
- "appName": {
558
- "label": "应用名称",
559
- "helper": "显示在侧边栏、浏览器标题和邮件中。",
560
- "error": "请输入不超过 60 个字符的名称。"
561
- },
562
- "logo": {
563
- "label": "标志",
564
- "drop": "将图片拖放到此处",
565
- "helper": "支持 PNG、JPEG、WebP、GIF 或 SVG,最大 1 MB。将在所有位置替换内置标志。",
566
- "upload": "上传标志",
567
- "replace": "更换标志",
568
- "remove": "移除",
569
- "uploaded": "标志已更新",
570
- "removed": "标志已移除",
571
- "tooLarge": "该图片大于 1 MB。",
572
- "badType": "请选择 PNG、JPEG、WebP、GIF 或 SVG 图片。",
573
- "undo": "撤销"
574
- },
575
- "showVersion": {
576
- "label": "侧边栏中的版本",
577
- "helper": "标志旁的版本号。关闭后将隐藏您运行的版本。"
578
- }
579
- },
580
- "security": {
581
- "heading": "安全",
582
- "require2fa": {
583
- "label": "强制双重验证",
584
- "desc": "每位成员都必须启用双重验证才能登录。"
585
- },
586
- "allowSignup": {
587
- "label": "允许自助注册",
588
- "desc": "任何人都可以创建账户——关闭后此工作区仅限邀请。"
589
- },
590
- "sessionTtl": {
591
- "label": "会话有效期(小时)",
592
- "error": "介于 {min, number} 到 {max, number} 小时之间。"
593
- },
594
- "passwordMin": {
595
- "label": "密码最小长度",
596
- "error": "介于 {min, number} 到 {max, number} 个字符之间。"
597
- }
598
- },
599
- "review": {
600
- "title": "保存工作区设置",
601
- "subtitle": "保存前请确认您的更改。",
602
- "confirm": "保存更改",
603
- "cancel": "取消",
604
- "close": "关闭",
605
- "on": "开",
606
- "off": "关",
607
- "shown": "显示",
608
- "hidden": "隐藏",
609
- "change": "{before} → {after}"
610
- },
611
- "defaultsCard": {
612
- "heading": "外观与语言默认值",
613
- "body": "工作区级的主题、强调色、密度和语言设置位于全局默认值中。",
614
- "cta": "打开全局默认值"
615
- },
616
- "danger": {
617
- "heading": "危险区域",
618
- "subtitle": "不可逆的操作。",
619
- "empty": "没有可删除的内容——还没有连接。",
620
- "deleteDesc": "删除该连接及其生成的页面。您的数据库不会被改动。此操作无法撤销。",
621
- "deleteCta": "删除连接"
622
- },
623
- "aiCard": {
624
- "heading": "AI 增强",
625
- "body": "配置 AI 提供方(或复制粘贴往返)来增强标签、分组和关系。",
626
- "cta": "打开 AI 设置"
627
- },
628
- "pagesCard": {
629
- "heading": "页面",
630
- "body": "添加、编辑和删除页面,更改每个页面的内容,并重新排列侧边栏。",
631
- "cta": "管理页面"
632
- }
633
- },
634
- "settingsAi": {
635
- "title": "AI 增强",
636
- "subtitle": "连接一个模型,让 Adminium 建议标签、分组、关系等——在应用之前始终以差异形式审阅。",
637
- "saved": "AI 提供方已保存",
638
- "saveFailed": "无法保存 AI 提供方。请重试。",
639
- "save": "保存提供方",
640
- "test": "测试连接",
641
- "testHintDirty": "测试前请先保存更改。",
642
- "testing": "正在连接提供方…",
643
- "testError": "测试失败",
644
- "testErrorBody": "无法连接到提供方。请检查密钥和基础 URL。",
645
- "testOk": "已连接到 {model},用时 {latency} 毫秒",
646
- "testUnknownModel": "提供方",
647
- "provider": {
648
- "heading": "AI 提供方",
649
- "subtitle": "选择 Adminium 如何访问模型来增强你的架构。密钥将加密存储且不再显示。",
650
- "active": "使用中",
651
- "anthropic": {
652
- "label": "Anthropic",
653
- "desc": "通过 Anthropic API 使用 Claude 模型。"
654
- },
655
- "openai": {
656
- "label": "OpenAI",
657
- "desc": "通过 OpenAI API 使用 GPT 模型。"
658
- },
659
- "openaiCompatible": {
660
- "label": "兼容 OpenAI",
661
- "desc": "任何使用 OpenAI 协议的端点——Groq、Together、vLLM、LM Studio。"
662
- },
663
- "ollama": {
664
- "label": "Ollama(本地)",
665
- "desc": "通过 Ollama 在本地运行模型——无需密钥,无需云端。"
666
- },
667
- "requiresNetwork": "需要联网和 API 密钥",
668
- "networkDisabledTitle": "此安装已关闭直连 AI 服务商",
669
- "networkDisabledBody": "此 Adminium 配置为无出站网络访问,无法连接服务商 API。请使用下方的复制粘贴往返方式——无需密钥,也无需联网。"
670
- },
671
- "configure": {
672
- "heading": "配置 {provider}"
673
- },
674
- "field": {
675
- "baseUrl": "基础 URL",
676
- "baseUrlOptional": "除非 Ollama 运行在其他主机上,否则保持不变。",
677
- "baseUrlHelper": "提供 /chat/completions 的端点根地址。",
678
- "model": "模型",
679
- "modelFreeText": "输入你的端点所提供的确切模型 ID。",
680
- "modelLive": "已从提供方实时加载。",
681
- "modelStatic": "一份经过验证的列表;保存后输入自定义 ID 可刷新它。",
682
- "modelLoading": "加载中…",
683
- "modelPlaceholder": "选择一个模型…",
684
- "key": "API 密钥",
685
- "keyStored": "已加密存储。替换它以使用其他密钥。",
686
- "keyMask": "sk-…{last4}",
687
- "keyReplace": "替换密钥",
688
- "keyOptional": "可选——某些端点无需密钥。",
689
- "keyWriteOnly": "仅写入:保存后将不再显示。",
690
- "noKeyTitle": "无需 API 密钥",
691
- "noKeyBody": "Ollama 在本地运行,因此没有任何内容离开这台机器。"
692
- },
693
- "runStatus": {
694
- "draft": "草稿",
695
- "running": "运行中",
696
- "awaitingResponse": "等待响应",
697
- "validated": "已验证",
698
- "applied": "已应用",
699
- "partiallyApplied": "部分应用",
700
- "failed": "失败",
701
- "discarded": "已丢弃"
702
- },
703
- "byo": {
704
- "heading": "没有密钥?使用你自己的 AI 工具",
705
- "subtitle": "复制粘贴往返——没有任何内容离开这台机器。",
706
- "body": "Studio 可以根据你的架构生成一个自包含的提示词。在 Claude Code、ChatGPT 或任意工具中运行它,然后将返回的 JSON 粘贴回连接向导。验证、审阅和结果都与直连方式相同。",
707
- "guaranteeTitle": "无遥测保证",
708
- "guarantee1": "提示词仅包含你的架构和聚合统计——默认绝不包含行数据。",
709
- "guarantee2": "不嵌入任何凭据、实例 URL 或标识符。",
710
- "guarantee3": "BYO 运行不进行任何网络调用。",
711
- "promptVersion": "提示词 {version}",
712
- "schemaVersion": "架构 {version}",
713
- "headingRecommended": "使用你自己的 AI 工具——无需密钥",
714
- "recommended": "推荐"
715
- },
716
- "history": {
717
- "heading": "运行历史",
718
- "subtitle": "过往的增强运行。打开其中一个以审阅其建议。",
719
- "tableLabel": "增强运行",
720
- "colDate": "日期",
721
- "colSource": "来源",
722
- "colStatus": "状态",
723
- "colChunks": "分块",
724
- "openReview": "打开 {date} 的运行审阅",
725
- "connection": "连接",
726
- "empty": "暂无增强运行。在连接向导中增强架构后,历史将显示在这里。",
727
- "errorTitle": "无法加载运行",
728
- "errorBody": "刷新页面以重试。",
729
- "noConnections": "请先连接数据库——增强运行按连接记录。",
730
- "byo": "BYO",
731
- "directPath": "直连"
732
- }
733
387
  },
734
- "enrich": {
735
- "title": "使用 AI 丰富",
736
- "subtitle": "可选择使用 LLM 优化生成的标签、分组、枚举和仪表板。启发式基线无需它即可工作——这仅添加供你在应用前审阅的建议。",
737
- "intentLabel": "你希望如何丰富?",
738
- "sectionsLegend": "应由 AI 决定哪些内容?",
739
- "localesLegend": "将标签翻译为",
740
- "localeLocked": "(必填)",
741
- "samplingTitle": "包含示例值",
742
- "samplingHint": "在提示中为每个非 PII 列最多包含 20 个真实值。",
743
- "samplingPreviewTitle": "离开此机器的内容",
744
- "samplingPreviewBody": "每个非 PII 列最多 20 个最常见值,以及数值和日期列的最小/最大值。标记为 PII 的列永不采样。其余所有内容仅保留聚合值。复制前请审阅确切的提示(BYO)——未经你的操作不会发送任何内容。",
745
- "noSections": "请至少选择一个要丰富的决策组。",
746
- "generatePrompt": "生成提示",
747
- "startProvider": "开始丰富",
748
- "startOver": "重新开始",
749
- "copied": "已复制",
750
- "createFailed": "无法构建丰富提示——请重试。",
751
- "createFailedTitle": "无法启动",
752
- "providerFallback": "你的 AI 提供商",
753
- "fileTitle": "AI 丰富需要一个在线数据库",
754
- "fileBody": "架构文件来源尚无可丰富的快照。连接一个在线数据库以使用 AI 丰富,或继续——启发式基线仍会生成完整的应用。",
755
- "section": {
756
- "labels": "标签与描述",
757
- "groups": "导航分组",
758
- "enums": "枚举语义",
759
- "relations": "关系",
760
- "keys": "关键列",
761
- "templates": "页面模板",
762
- "widgets": "仪表板小组件",
763
- "pii": "PII 与脱敏",
764
- "icons": "图标",
765
- "microcopy": "微文案"
766
- },
767
- "provider": {
768
- "title": "使用我的 AI 提供商",
769
- "description": "立即使用已配置的提供商运行丰富。你将以差异形式审阅每条建议。",
770
- "unconfigured": "尚未配置 AI 提供商——请在下方将提示复制到你自己的工具,或先配置一个提供商。",
771
- "settingsHint": "想直接运行吗?",
772
- "settingsLink": "在“设置 → AI”中配置提供商",
773
- "networkDisabled": "此 Adminium 无出站网络访问,无法连接服务商 API。请改用复制粘贴往返方式——同样的提示词,同样的审阅。"
774
- },
775
- "byo": {
776
- "cardTitle": "复制提示到我自己的 AI 工具",
777
- "cardDescription": "将一个自包含的提示复制到 Claude Code、ChatGPT 或任何工具——然后将 JSON 粘贴回来。无需密钥,不会自动将任何内容传出此机器。",
778
- "guidance": "在任意 AI 工具中运行——Claude Code、ChatGPT,皆可。将其返回的 JSON 粘贴到下方。",
779
- "promptLabel": "丰富提示",
780
- "promptLabelN": "丰富提示 第 {index} 个,共 {total} 个",
781
- "tokenChip": "≈ {tokens} 个 token",
782
- "copyPrompt": "复制提示",
783
- "copyPromptDone": "提示已复制",
784
- "download": "下载 .md",
785
- "chunkTabs": "提示分块",
786
- "chunkTab": "提示 {index}",
787
- "chunkValid": "分块 {index} 已验证",
788
- "pasteLabel": "粘贴 JSON 响应",
789
- "pastePlaceholder": "在此粘贴 JSON 响应…",
790
- "validate": "验证",
791
- "valid": "响应已验证",
792
- "mergedTitle": "全部 {count} 个分块已验证并合并",
793
- "mergedTitleSingle": "响应已验证",
794
- "mergedBody": "建议已准备好,可对照启发式基线进行审阅。",
795
- "errorsTitle": "验证发现 {count} 个问题",
796
- "copyErrors": "为你的 AI 工具复制错误",
797
- "copyErrorsDone": "错误已复制",
798
- "copyErrorsHint": "将其粘贴回你的 AI 工具以获取更正后的响应。",
799
- "droppedItems": "有 {count} 条建议在验证时被丢弃——审阅中显示其余内容。",
800
- "pendingTitle": "验证每个提示以继续",
801
- "pendingBody": "在上方粘贴 JSON 响应并验证,以继续进行审阅。",
802
- "pendingBodyChunked": "每个分块都必须先验证,建议才会合并。请粘贴并验证上方的每个提示。",
803
- "requestFailed": "无法连接服务器进行验证——请重试。",
804
- "continueReview": "继续审阅",
805
- "wholeDocument": "整个文档",
806
- "cardTitleRecommended": "把提示词复制到我自己的 AI 工具——推荐"
807
- },
808
- "direct": {
809
- "title": "正在使用 AI 丰富",
810
- "subtitle": "正在将你的架构发送至",
811
- "building": "正在构建提示…",
812
- "logLabel": "丰富日志",
813
- "cancel": "取消",
814
- "back": "返回选项",
815
- "retry": "重试",
816
- "done": "丰富完成——请审阅建议。",
817
- "continueReview": "继续审阅",
818
- "failed": "提供商运行失败。请检查你的 AI 设置并重试。",
819
- "jobFailed": "丰富运行未完成。",
820
- "startFailed": "无法启动运行——请重试。",
821
- "errorTitle": "丰富失败"
822
- },
823
- "skip": {
824
- "title": "跳过——仅使用启发式",
825
- "description": "从启发式基线生成。你之后可在“设置 → AI”中丰富——跳过绝不会受到惩罚。",
826
- "confirmTitle": "继续使用启发式",
827
- "confirmBody": "生成的应用将使用启发式的标签、分组和仪表板。继续生成——你可随时在“设置 → AI”中运行 AI 丰富。"
828
- }
829
- },
830
- "review": {
831
- "unavailableTitle": "审阅界面不可用",
832
- "unavailableBody": "此版本尚未包含增强审阅界面(06-T14)。它将随差异与应用流程一起推出。"
833
- },
834
- "llmRuns": {
835
- "review": {
836
- "header": {
837
- "title": "审查 AI 建议",
838
- "model": "模型",
839
- "snapshot": "快照",
840
- "byo": "自带",
841
- "pathDirect": "直接 API",
842
- "pathByo": "复制粘贴",
843
- "agree": "{n} 项一致",
844
- "conflict": "{n} 项冲突",
845
- "new": "{n} 项新增",
846
- "rejects": "{n} 项拒绝",
847
- "countsAria": "建议数量"
848
- },
849
- "bulk": {
850
- "thresholdLabel": "置信度阈值",
851
- "thresholdAria": "“全部接受”的置信度阈值",
852
- "acceptAll": "接受所有 ≥ {pct}%",
853
- "clear": "清除选择"
854
- },
855
- "section": {
856
- "selectAllAria": "全选 {group}",
857
- "acceptedCount": "已接受 {n} 项"
858
- },
859
- "group": {
860
- "labels": "标签与翻译",
861
- "navigation": "导航与领域",
862
- "enums": "枚举语义",
863
- "relations": "关系",
864
- "keys": "键列",
865
- "templates": "页面模板",
866
- "dashboards": "仪表盘与小组件",
867
- "pii": "个人信息与脱敏",
868
- "icons": "图标",
869
- "microcopy": "微文案"
870
- },
871
- "status": {
872
- "agree": "一致",
873
- "conflict": "冲突",
874
- "new": "新增",
875
- "heuristicOnly": "仅启发式",
876
- "rejects": "拒绝启发式",
877
- "locked": "已锁定"
878
- },
879
- "row": {
880
- "acceptAria": "接受 {target} 的{noun}建议",
881
- "keptEdited": "已保留——由您编辑",
882
- "rejectsCallout": "AI 拒绝了某项启发式决策——接受前请确认。",
883
- "showTranslations": "显示翻译",
884
- "hideTranslations": "隐藏翻译",
885
- "confidenceAria": "置信度 {pct}%",
886
- "noAi": "无 AI 建议"
887
- },
888
- "value": {
889
- "none": "无值",
890
- "absent": "无",
891
- "dash": "—",
892
- "display": "显示",
893
- "key": "键",
894
- "rank": "排名 {n}",
895
- "span": "跨度 {n}",
896
- "tableCount": "{n} 张表",
897
- "widgetCount": "{n} 个小组件",
898
- "enumWorkflow": "工作流",
899
- "enumCategory": "分类",
900
- "notPii": "非个人信息",
901
- "label": "标签",
902
- "description": "描述",
903
- "subtitle": "页面副标题",
904
- "headline": "空状态标题",
905
- "guidance": "空状态提示"
906
- },
907
- "apply": {
908
- "title": "应用 {n} 项建议",
909
- "subtitle": "这些更改将在一个事务中写入,并可撤销。",
910
- "empty": "未选择任何要应用的内容。",
911
- "confirm": "应用更改"
912
- },
913
- "footer": {
914
- "count": "已选择 {n} 项建议",
915
- "apply": "应用 {n} 项已接受的建议",
916
- "failed": "应用失败"
917
- },
918
- "toast": {
919
- "applied": "已应用 {n} 项建议",
920
- "appliedPartial": "已应用 {n} 项建议(部分已跳过)",
921
- "applyFailed": "无法应用建议",
922
- "undoFailed": "无法撤销此更改"
923
- },
924
- "error": {
925
- "title": "无法加载此运行"
926
- },
927
- "notReady": {
928
- "title": "此运行尚无可审查的建议",
929
- "body": "运行必须先通过验证,才能审查其建议。请先生成或粘贴响应。"
930
- },
931
- "applied": {
932
- "title": "此运行已应用",
933
- "body": "下方已接受的建议为只读。"
934
- },
935
- "empty": {
936
- "title": "无建议",
937
- "body": "此运行未生成可审查的建议。"
938
- },
939
- "cat": {
940
- "label": "标签",
941
- "key": "键列",
942
- "enum": "枚举",
943
- "relation": "关系",
944
- "pii": "个人信息",
945
- "template": "页面模板",
946
- "group": "导航分组",
947
- "dashboard": "仪表盘",
948
- "widget": "小组件",
949
- "copy": "微文案"
950
- }
951
- }
952
- },
953
- "wizard": {
954
- "title": "新建连接",
955
- "back": "返回",
956
- "continue": "继续",
957
- "progress": "设置进度",
958
- "persistFailed": "无法保存你的表选择——请重试。",
959
- "persistFailedTitle": "保存失败",
960
- "bridgeAppliedTitle": "已收到连接字符串",
961
- "bridgeAppliedBody": "由你的浏览器从 adminium.dev 直接交给本机——它从未被上传到任何服务器。请在下方核对后继续。",
962
- "bridgeFailedTitle": "无法使用这次交接",
963
- "bridgeFailedBody": "它已被使用或已过期。请改为在下方粘贴你的连接字符串。",
964
- "step": {
965
- "source": "来源",
966
- "test": "分析",
967
- "tables": "数据表",
968
- "meta": "元数据存储",
969
- "intent": "意图",
970
- "enrich": "丰富",
971
- "generate": "生成"
972
- }
973
- },
974
- "meta": {
975
- "title": "Adminium 应把自己的表放在哪里?",
976
- "subtitle": "页面、角色、审计日志和设置存放在以 adminium_ 为前缀的表中——绝不混入你的数据。",
977
- "sameDb": {
978
- "title": "同一数据库",
979
- "description": "adminium_* 表将创建在你的源表旁边。这是最简单的设置——需要具有写入和 CREATE TABLE 权限的角色。",
980
- "disabledReadOnly": "你的角色是只读的——Adminium 绝不会写入此数据库。请为 Adminium 自己的表选择单独的数据库。",
981
- "disabledNoDdl": "该角色无法执行 DDL——Adminium 迁移需要 CREATE TABLE 权限。请为 Adminium 自己的表选择单独的数据库。",
982
- "disabledFile": "架构文件没有实时数据库——请为 Adminium 自己的表选择单独的数据库。"
983
- },
984
- "separate": {
985
- "title": "单独的数据库",
986
- "description": "Adminium 将其表保存在另一个数据库中。你的源保持不变——只读源必须如此。",
987
- "dsn": "元数据库连接字符串",
988
- "helper": "需要写入和 DDL 权限——Adminium 会在那里运行自己的迁移。",
989
- "test": "测试连接",
990
- "ok": "兼容——写入 ✓ · DDL ✓",
991
- "insufficient": "该角色无法承载元数据存储——Adminium 在那里需要写入和 CREATE TABLE 权限。",
992
- "errorTitle": "元数据存储不兼容"
993
- },
994
- "testFailed": "连接失败。",
995
- "v1Note": {
996
- "title": "关于此安装",
997
- "body": "此服务器已将自有数据表保存在配置好的数据库中,本步骤不会迁移它们。它只校验你的选择是否与此连接兼容——服务器会独立执行同一规则(409 META_PLACEMENT_INVALID)。"
998
- },
999
- "move": {
1000
- "title": "正在迁移 Adminium 的数据表",
1001
- "copying": "正在迁移 Adminium 的数据表…",
1002
- "restarting": "正在重启…",
1003
- "copyingBody": "正在将每张 adminium_ 表复制到新数据库。你的源数据不会被改动,只有在校验通过后才会切换。",
1004
- "restartingBody": "复制已完成。Adminium 正在新数据库上重启——本页面将在几秒后自动继续。",
1005
- "failed": "无法迁移 Adminium 的数据表——请重试。",
1006
- "timeout": "Adminium 已迁移数据表,但尚未恢复。你的数据已安全存放在新数据库中——请稍后刷新本页面。"
1007
- },
1008
- "willMove": {
1009
- "title": "此操作将迁移 Adminium 的数据表",
1010
- "body": "Adminium 目前使用内置的 SQLite 存储。点击“继续”会把该存储复制到你选择的数据库并在其上重启——账号、页面和设置都会一起迁移,你将保持登录状态。"
1011
- }
1012
- },
1013
- "intent": {
1014
- "title": "你需要什么?",
1015
- "subtitle": "意图决定生成哪些页面。之后可以更改——更改会提议重新生成,绝不会静默重写。",
1016
- "trust": "我们只读取你的架构——设置期间绝不读取行数据。",
1017
- "fullAdmin": {
1018
- "title": "完整管理面板",
1019
- "description": "仪表板、CRUD 页面、搜索、导入与导出——你的架构支持的一切。"
1020
- },
1021
- "analytics": {
1022
- "title": "只读分析",
1023
- "description": "仪表板、图表和只读网格。没有表单、没有写入——所有角色上限为查看者。"
1024
- },
1025
- "crud": {
1026
- "title": "CRUD 数据表",
1027
- "description": "每个表一个编辑页面,外加搜索和导入/导出——极简主页,没有仪表板。"
1028
- },
1029
- "support": {
1030
- "title": "客服控制台",
1031
- "description": "优先生成队列、工单和客户详情页面。默认关闭删除。(队列模板在 M7 提供——v1 页面集与完整管理面板相同。)"
1032
- }
1033
- },
1034
- "generate": {
1035
- "title": "生成你的应用",
1036
- "subtitle": "每个已包含的表一个页面,外加按领域生成的仪表板——意图:",
1037
- "run": "生成仪表板",
1038
- "openApp": "打开你的应用",
1039
- "logLabel": "生成日志",
1040
- "log": {
1041
- "classifying": "正在对架构分类…",
1042
- "composing": "正在组合模板…",
1043
- "writing": "正在写入页面…",
1044
- "done": "已生成 {pages} 个页面,分布于 {groups} 个导航组"
1045
- },
1046
- "successTitle": "你的仪表板已就绪",
1047
- "successBody": "{pages} 个页面,分布于 {groups} 个导航组——由你的架构生成,可在 Studio 中编辑。",
1048
- "errorTitle": "生成失败",
1049
- "failed": "生成失败——请重试,或先重新运行自省。",
1050
- "fileTitle": "架构文件已解析——生成需要实时数据库",
1051
- "fileBody": "你的架构解析顺利,上方预览是真实的。直接从架构文件生成可运行的应用(含占位行)尚不可用——请连接实时数据库立即生成。"
1052
- },
1053
- "remap": {
1054
- "column": {
1055
- "nullable": "可为空",
1056
- "labelOverride": "显示标签",
1057
- "labelHelper": "推断:{name}",
1058
- "logicalType": "逻辑类型",
1059
- "logicalTypeHelper": "推断:{type}(来自 {dbType})——由适配器映射;v1 中不可覆盖。",
1060
- "semantic": "语义类型",
1061
- "unclassified": "尚未分类。",
1062
- "semanticHelper": "分类器:{tag} · 置信度 {confidence}% · 来源:{source}",
1063
- "semanticInferred": "推断:{tag}",
1064
- "currency": "货币",
1065
- "currencyHelper": "应用于金额格式化的 ISO 4217 代码。",
1066
- "pii": "默认脱敏",
1067
- "piiHelper": "脱敏值以遮盖形式显示;取消脱敏需要 data.unmask_pii 权限,并会记录到审计日志。",
1068
- "enum": "枚举语义",
1069
- "enumKind": "枚举种类",
1070
- "enumWorkflow": "工作流",
1071
- "enumCategory": "分类",
1072
- "enumLabelFor": "{value} 的标签",
1073
- "enumToneFor": "{value} 的色调",
1074
- "enumToneAuto": "自动",
1075
- "enumHelper": "工作流枚举驱动状态徽章和看板列;色调将各值映射到语义色阶上。"
1076
- },
1077
- "diff": {
1078
- "one": "1 项更改",
1079
- "count": "{count} 项更改",
1080
- "saved": "覆盖已保存。",
1081
- "revertOne": "还原 {change}",
1082
- "regenerate": "重新生成页面",
1083
- "revertAll": "全部还原",
1084
- "save": "保存覆盖"
1085
- },
1086
- "table": {
1087
- "iconPicker": "表图标",
1088
- "system": "系统",
1089
- "labelOverride": "显示标签",
1090
- "labelHelper": "推断:{name}",
1091
- "icon": "图标",
1092
- "navGroup": "导航组",
1093
- "navGroupHelper": "导航位置由生成器决定——table.navGroup 覆盖不在 v1 词汇表中。",
1094
- "include": "包含在生成的应用中",
1095
- "includeHelper": "被排除的表不会生成页面,也不会出现在导航中。",
1096
- "shape": "表形态(已分类)",
1097
- "role": "角色",
1098
- "unclassified": "未分类",
1099
- "kind": "种类",
1100
- "hierarchy": "层级",
1101
- "selfFk": "通过 {column} 自引用",
1102
- "polymorphic": "多态列对",
1103
- "rows": "行数估算",
1104
- "shapeHelper": "每次自省都会重新计算分类;覆盖叠加在其上,并在重新生成后保留。"
1105
- },
1106
- "relations": {
1107
- "declared": "已声明的外键",
1108
- "noneDeclared": "没有已声明的外键涉及此表。",
1109
- "inferred": "推断的关系",
1110
- "noneInferred": "此表没有推断结果。",
1111
- "confidence": "推断 · {pct}%",
1112
- "accepted": "已接受",
1113
- "suppressed": "已屏蔽",
1114
- "accept": "接受",
1115
- "suppress": "屏蔽",
1116
- "overrides": "覆盖关系(已应用)",
1117
- "overrideBadge": "覆盖",
1118
- "add": "添加虚拟关系",
1119
- "fromColumn": "源列",
1120
- "noColumns": "没有匹配的列",
1121
- "fromPlaceholder": "customer_id",
1122
- "toTable": "目标表",
1123
- "noTables": "没有匹配的表",
1124
- "toColumn": "目标列",
1125
- "cardinality": "基数",
1126
- "addButton": "添加关系"
1127
- },
1128
- "toast": {
1129
- "saved": "架构覆盖已保存",
1130
- "savedDetail": "下方已应用的架构反映了你的更改。",
1131
- "regenerated": "已创建 {created} · 已更新 {updated} · 未变化 {unchanged}",
1132
- "regeneratedDetail": "你手动编辑过的页面会被保留——只有 generated_hash 未被改动的页面才会原地重新生成。",
1133
- "regenerateFailed": "重新生成失败"
1134
- },
1135
- "title": "架构重映射",
1136
- "subtitle": "{tables} 张表 · 已应用 {applied} 项覆盖",
1137
- "saveFailed": "保存失败:{message}",
1138
- "loadFailed": "无法加载此连接的架构。",
1139
- "inspector": "检查器",
1140
- "empty": {
1141
- "title": "选择一个表或列",
1142
- "description": "在架构树中选择一项,以重映射其标签、类型、关系或脱敏设置。"
1143
- },
1144
- "tabs": {
1145
- "details": "详情",
1146
- "relations": "关系"
1147
- },
1148
- "tree": {
1149
- "label": "架构",
1150
- "search": "搜索表和列",
1151
- "searchPlaceholder": "搜索表…",
1152
- "noMatches": "没有与搜索匹配的表。",
1153
- "collapse": "折叠表",
1154
- "expand": "展开表",
1155
- "unsaved": "未保存的更改",
1156
- "excluded": "已排除"
1157
- },
388
+ "translations": {
389
+ "title": "语言与翻译",
390
+ "subtitle": "修改 Adminium 中的任何文案,决定用户可以选择哪些语言,并添加你自己的语言。",
391
+ "warning": "错误提示和登录文案同样可以修改。出问题时用户读到的正是这些内容,请谨慎改动。",
392
+ "editor": {
393
+ "heading": "编辑翻译"
394
+ },
395
+ "localeLabel": "语言",
396
+ "groupLabel": "区域",
397
+ "allAreas": "全部区域",
398
+ "stateLabel": "显示",
399
+ "state": {
400
+ "all": "全部",
401
+ "overridden": "仅已自定义",
402
+ "untranslated": "仅未翻译",
403
+ "stale": "此后英文有改动"
404
+ },
405
+ "searchLabel": "搜索",
406
+ "searchPlaceholder": "键名或英文原文",
407
+ "loading": "正在加载文案…",
408
+ "noMatches": "没有符合这些筛选条件的文案。",
409
+ "count": "{total, plural, other {# 条文案}}",
1158
410
  "badge": {
1159
- "pk": "主键",
1160
- "fk": "外键",
1161
- "unique": "唯一",
1162
- "pii": "PII",
1163
- "masked": "已脱敏"
1164
- },
1165
- "unavailableTitle": "架构重映射编辑器不可用"
411
+ "custom": "已自定义",
412
+ "stale": "英文已更改",
413
+ "a11y": "无障碍名称"
414
+ },
415
+ "sourceLabel": "英文原文",
416
+ "valueLabel": "翻译",
417
+ "save": "保存",
418
+ "saved": "翻译已保存",
419
+ "resetAction": "恢复为内置文案",
420
+ "reset": "已恢复为内置文案",
421
+ "locales": {
422
+ "heading": "可用语言",
423
+ "help": "关闭某种语言后,它会从所有语言选择器中消失。已经在使用它的人会继续使用,直到自己改选其他语言。"
424
+ },
425
+ "locale": {
426
+ "builtin": "内置",
427
+ "custom": "自定义",
428
+ "overrides": "{count, plural, =0 {暂无自定义文案} other {# 条自定义文案}}",
429
+ "enable": "开启",
430
+ "disable": "关闭",
431
+ "delete": "删除",
432
+ "deleted": "语言已移除",
433
+ "deletedDetail": "{users, plural, other {# 位用户}}已改回工作区默认语言;已删除 {strings, plural, other {# 条翻译}}。",
434
+ "deleteFailed": "无法移除该语言",
435
+ "add": "添加语言",
436
+ "added": "语言已添加",
437
+ "create": "确认添加",
438
+ "id": "语言代码",
439
+ "intlTag": "格式规则参照",
440
+ "native": "该语言中的名称",
441
+ "english": "英文名称",
442
+ "dir": "文字方向",
443
+ "ltr": "从左到右",
444
+ "rtl": "从右到左",
445
+ "font": "文字系统",
446
+ "latin": "拉丁文",
447
+ "arabic": "阿拉伯文",
448
+ "cjk": "中文 / 日文 / 韩文",
449
+ "intlHelp": "格式规则决定数字、日期和复数的表现方式。请选择最接近且已有这些规则的语言——它不必与你的语言代码一致。"
450
+ }
1166
451
  }
1167
452
  },
1168
453
  "onboarding": {
@@ -2262,166 +1547,6 @@ export default {
2262
1547
  "toLight": "浅色模式",
2263
1548
  "toDark": "深色模式"
2264
1549
  },
2265
- "studioPages": {
2266
- "title": "页面",
2267
- "subtitle": "添加、编辑和整理应用的页面,以及它们在侧边栏中的顺序。",
2268
- "createButton": "新建页面",
2269
- "loadFailed": {
2270
- "title": "无法加载页面",
2271
- "body": "管理页面需要“管理页面”权限。请联系管理员将该权限授予你的某个角色。"
2272
- },
2273
- "tab": {
2274
- "pages": "全部页面",
2275
- "sidebar": "侧边栏顺序"
2276
- },
2277
- "list": {
2278
- "title": "页面",
2279
- "count": "{count, plural, other {# 个页面}}"
2280
- },
2281
- "empty": {
2282
- "title": "暂无页面",
2283
- "body": "连接数据库即可自动生成页面,也可以手动创建一个。"
2284
- },
2285
- "status": {
2286
- "live": "已上线",
2287
- "hidden": "已隐藏"
2288
- },
2289
- "origin": {
2290
- "generated": "自动生成",
2291
- "manifest": "插件",
2292
- "llm": "助手",
2293
- "system": "系统",
2294
- "user": "自定义"
2295
- },
2296
- "row": {
2297
- "menu": "{title} 的操作"
2298
- },
2299
- "action": {
2300
- "edit": "编辑页面",
2301
- "duplicate": "创建副本",
2302
- "hide": "在侧边栏中隐藏",
2303
- "show": "在侧边栏中显示",
2304
- "delete": "删除页面"
2305
- },
2306
- "create": {
2307
- "title": "新建页面",
2308
- "failed": "无法创建页面",
2309
- "submit": "创建页面",
2310
- "subtitle": "选择此页面显示什么以及外观如何。预览会跟随你的选择。"
2311
- },
2312
- "duplicate": {
2313
- "title": "创建页面副本",
2314
- "failed": "无法创建副本",
2315
- "submit": "创建副本"
2316
- },
2317
- "delete": {
2318
- "title": "确定删除此页面吗?",
2319
- "body": "此操作无法撤销。该页面上所有已保存的视图和个人布局将对所有人删除。",
2320
- "bodyGenerated": "此页面由架构生成创建,下次重新生成时会再次出现。已保存的视图和个人布局将对所有人删除。",
2321
- "prompt": "输入 {slug} 以确认",
2322
- "confirm": "删除页面"
2323
- },
2324
- "field": {
2325
- "title": "标题",
2326
- "titleHint": "显示在侧边栏和页面标题栏中。",
2327
- "slug": "页面地址",
2328
- "slugHint": "仅限小写字母、数字和连字符。只需填写最后一段,其余部分会自动补全。",
2329
- "slugTaken": "已有其他页面使用该地址。",
2330
- "slugWarning": "修改地址会导致指向此页面的现有链接和书签失效。",
2331
- "template": "模板",
2332
- "templateHint": "决定页面可以承载哪些内容,之后可以更改。",
2333
- "group": "侧边栏分组",
2334
- "groupHint": "页面出现在侧边栏的哪个区块。",
2335
- "icon": "图标",
2336
- "iconHint": "显示在侧边栏中页面名称的旁边。",
2337
- "visible": "在侧边栏中显示",
2338
- "visibleHint": "隐藏的页面仍可通过网址访问,只要对方有链接。",
2339
- "table": "数据表",
2340
- "tableCreateHint": "此页面读取的数据表。现在选择即可直接使用;留空则可稍后再绑定。",
2341
- "tableNone": "未绑定",
2342
- "tableNeedsConnection": "请先选择数据源。",
2343
- "connection": "数据源",
2344
- "connectionNone": "无",
2345
- "iconPick": "选择页面图标",
2346
- "padding": "页面内边距"
2347
- },
2348
- "editor": {
2349
- "title": "编辑页面",
2350
- "save": "保存更改",
2351
- "saveFailed": "无法保存更改",
2352
- "openPage": "打开页面",
2353
- "generated": {
2354
- "title": "此页面根据你的数据库架构生成",
2355
- "body": "重新生成时会保留你的修改:页面会被标记为已编辑并原样保留。但删除只在下次生成前有效,届时页面会被重新创建。"
2356
- },
2357
- "contentUnavailable": "无法加载页面内容",
2358
- "contentUnavailableBody": "以上信息仍可保存。",
2359
- "contentInvalid": "无法读取此页面的配置",
2360
- "contentInvalidBody": "配置由更新的版本写入,或已损坏。请重新生成或删除该页面。",
2361
- "data": "数据",
2362
- "schemaFailed": "无法列出数据表",
2363
- "schemaFailedBody": "此连接可能尚未分析。请在“工作室 → 数据连接”中运行架构分析。",
2364
- "notBindable": "此模板不绑定单个数据表",
2365
- "notBindableBody": "它的内容由小组件逐个搭建。打开页面并点击“编辑”即可添加。",
2366
- "recompose": "此页面将被重建",
2367
- "recomposeBody": "保存后将依据上方的模板和数据表用全新布局替换页面内容。此页面上的列调整和小组件改动将会丢失。",
2368
- "missing": "此页面已不存在",
2369
- "missingBody": "它可能已被删除,或被某次重新生成移除。",
2370
- "details": "详细信息",
2371
- "itemsPending": "请先保存上方的更改——页面内容将依据新的模板和数据表重建。",
2372
- "columns": "列",
2373
- "appearance": "外观"
2374
- },
2375
- "sidebar": {
2376
- "help": "在分组内重新排序页面,或将页面移到其他分组。更改对所有人生效。",
2377
- "discard": "放弃",
2378
- "save": "保存顺序",
2379
- "saveFailed": "无法保存新顺序",
2380
- "emptyGroup": "此分组中没有页面。",
2381
- "moveUp": "将 {title} 上移",
2382
- "moveDown": "将 {title} 下移",
2383
- "moveTo": "将 {title} 移到其他分组",
2384
- "ungrouped": {
2385
- "title": "有些页面不属于任何侧边栏分组",
2386
- "body": "这些页面可以通过网址访问,但不会出现在侧边栏中。请逐个打开并选择分组。"
2387
- }
2388
- },
2389
- "columns": {
2390
- "help": "重新排序列、重命名列标题,并选择哪些列显示在表格中。",
2391
- "discard": "放弃",
2392
- "save": "保存列",
2393
- "saveFailed": "无法保存列",
2394
- "pk": "主键",
2395
- "pii": "个人信息",
2396
- "header": "{name} 的列标题",
2397
- "shown": "显示",
2398
- "toggle": "在表格中显示 {name}",
2399
- "moveUp": "将 {name} 上移",
2400
- "moveDown": "将 {name} 下移",
2401
- "remove": "移除 {name}",
2402
- "none": {
2403
- "title": "此页面还没有列",
2404
- "body": "生成页面时会从数据表读取列。请将此页面绑定到数据表后重新生成。"
2405
- }
2406
- },
2407
- "icon": {
2408
- "none": "选择图标",
2409
- "search": "搜索图标",
2410
- "noMatches": "没有图标符合该搜索。"
2411
- },
2412
- "preview": {
2413
- "untitled": "未命名页面",
2414
- "note": "这是版式示意图,不是你的数据。保存后真实页面才会填充内容。"
2415
- },
2416
- "padding": {
2417
- "default": "此模板的默认值",
2418
- "none": "无",
2419
- "standard": "标准 (28 × 24)",
2420
- "custom": "自定义…",
2421
- "x": "左右 (px)",
2422
- "y": "上下 (px)"
2423
- }
2424
- },
2425
1550
  "audit": {
2426
1551
  "action": {
2427
1552
  "view": "查看"
@@ -2553,6 +1678,7 @@ export default {
2553
1678
  "exportsManage": "管理所有人的导出",
2554
1679
  "importsManage": "管理所有人的导入",
2555
1680
  "jobsManage": "启动和取消后台任务",
1681
+ "manifestsManage": "安装并连接插件",
2556
1682
  "jobsRead": "查看所有后台任务",
2557
1683
  "llmRun": "运行 AI 辅助",
2558
1684
  "pagesManage": "创建和整理页面",
@@ -2574,7 +1700,7 @@ export default {
2574
1700
  },
2575
1701
  "security": {
2576
1702
  "password": {
2577
- "changedBody": "下次登录时请使用新密码。其他设备上的会话不受影响——如果希望它们退出登录,请在下方结束这些会话。",
1703
+ "changedBody": "下次登录时请使用新密码。其他设备仍保持登录——如果希望它们退出,请结束这些会话。",
2578
1704
  "changed": "密码已更改",
2579
1705
  "confirm": "确认新密码",
2580
1706
  "current": "当前密码",