@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
@@ -14,6 +14,7 @@
14
14
  },
15
15
  "auth": {
16
16
  "headline": "把任何資料庫變成儀表板。",
17
+ "description": "連上 PostgreSQL,Adminium 就會產生一套可換佈景、懂權限的管理後台——完全不必寫程式。",
17
18
  "trust": "AGPL 核心 · 自行架設 · 資料永遠屬於你",
18
19
  "signIn": {
19
20
  "title": "歡迎回來",
@@ -104,6 +105,11 @@
104
105
  "audit": "稽核紀錄",
105
106
  "security": "密碼與工作階段"
106
107
  },
108
+ "apps": {
109
+ "frame": {
110
+ "noFrames": "此應用程式需要支援框架的瀏覽器。"
111
+ }
112
+ },
107
113
  "topbar": {
108
114
  "search": "搜尋…",
109
115
  "notifications": "通知",
@@ -115,6 +121,8 @@
115
121
  "profile": "個人資料",
116
122
  "preferences": "偏好設定",
117
123
  "studio": "Studio",
124
+ "dataConnections": "資料連線",
125
+ "workspaceSettings": "工作區設定",
118
126
  "signOut": "登出"
119
127
  },
120
128
  "palette": {
@@ -231,10 +239,16 @@
231
239
  "body": "這個工作區已被管理員停權。你的資料仍完整保留——請聯絡工作區擁有者以恢復存取權限。",
232
240
  "primary": "聯絡擁有者",
233
241
  "secondary": "返回上頁"
242
+ },
243
+ "connectionPaused": {
244
+ "title": "此連線已暫停",
245
+ "body": "管理員暫停了此頁面所用的資料庫,因此目前不會載入資料。沒有任何內容被刪除 — 在 Studio → 資料連線中恢復該連線後即可恢復正常。",
246
+ "secondary": "返回"
234
247
  }
235
248
  },
236
249
  "notFound": {
237
250
  "title": "找不到這個頁面",
251
+ "body": "你要找的頁面不存在或已被移動。請檢查網址,或回到你的儀表板。",
238
252
  "errorLine": "錯誤 404",
239
253
  "searchPlaceholder": "搜尋頁面…",
240
254
  "matches": "符合的頁面",
@@ -252,10 +266,12 @@
252
266
  "title": "此頁面無法呈現"
253
267
  },
254
268
  "tooNew": {
255
- "title": "此頁面需要較新版本的 Adminium"
269
+ "title": "此頁面需要較新版本的 Adminium",
270
+ "body": "此頁面儲存時使用的組態版本是 {version},但目前的組建最高只支援到版本 {latest}。請先更新 Adminium 再開啟。"
256
271
  },
257
272
  "unknownTemplate": {
258
- "title": "未知的頁面範本"
273
+ "title": "未知的頁面範本",
274
+ "body": "此頁面使用了目前組建無法辨識的範本。它可能來自較新版本的 Adminium,或來自尚未安裝的擴充功能。"
259
275
  }
260
276
  },
261
277
  "mutation": {
@@ -307,6 +323,20 @@
307
323
  "twoFactor": "兩步驟驗證",
308
324
  "on": "已啟用",
309
325
  "off": "未啟用",
326
+ "nameRequired": "請輸入你的姓名。",
327
+ "emailHelper": "用於登入。變更時需要輸入密碼。",
328
+ "confirmPassword": "目前密碼",
329
+ "confirmPasswordHelper": "在變更登入地址前,請確認是你本人。",
330
+ "save": "儲存變更",
331
+ "saveFailed": "無法儲存你的個人資料",
332
+ "saved": "個人資料已更新",
333
+ "savedBody": "新的資訊已在整個工作區生效。若你變更了電子郵件,日後請使用新地址登入。",
334
+ "accessTitle": "存取權限",
335
+ "accessSubtitle": "此帳戶可以做什麼,以及它如何證明身分。",
336
+ "rolesHelper": "角色由管理員授予,無法在自己的帳戶中變更。",
337
+ "manageTwoFactor": "管理",
338
+ "setUpTwoFactor": "設定",
339
+ "securityLink": "密碼與工作階段",
310
340
  "preferences": {
311
341
  "title": "偏好設定",
312
342
  "subtitle": "Adminium 為你呈現的外觀與語言——在這部裝置以及你登入的每部裝置上都適用。",
@@ -344,816 +374,70 @@
344
374
  "emptyTitle": "尚無可設定項目",
345
375
  "emptyBody": "隨著功能推出,通知事件會顯示在這裡。",
346
376
  "saveFailed": "無法儲存此變更。"
347
- }
348
- },
349
- "studio": {
350
- "source": {
351
- "engine": {
352
- "label": "資料庫引擎",
353
- "postgres": "PostgreSQL",
354
- "mysql": "MySQL / MariaDB",
355
- "sqlite": "SQLite"
356
- },
357
- "format": {
358
- "label": "綱要格式",
359
- "helper": "除非自動偵測判斷錯誤,否則保持自動偵測即可。",
360
- "auto": "自動偵測",
361
- "sql": "SQL DDL / pg_dump",
362
- "prisma": "Prisma 綱要",
363
- "drizzle": "Drizzle ORM",
364
- "typeorm": "TypeORM 實體",
365
- "sequelize": "Sequelize 模型",
366
- "rails": "Rails schema.rb",
367
- "django": "Django models.py",
368
- "json": "Adminium JSON"
369
- },
370
- "sqlite": {
371
- "file": "資料庫檔案路徑",
372
- "helper": "SQLite 是檔案而非伺服器——請填寫執行 Adminium 的機器上的絕對路徑。"
373
- },
374
- "file": {
375
- "detectedAs": "偵測到:{format}",
376
- "moreWarnings": "還有 {count} 則警告——完整清單會在分析步驟顯示。",
377
- "dropTitle": "將結構描述檔案拖放到此處,或瀏覽選取",
378
- "dropHint": "SQL DDL / pg_dump、Prisma、Drizzle、TypeORM、Sequelize、Rails schema.rb、Django 模型、Adminium JSON",
379
- "pitch": "無需資料庫連線——我們會解析你的結構描述檔案並建立相同的儀表板。",
380
- "parsing": "正在讀取上傳的結構描述檔案…",
381
- "tables": "個資料表",
382
- "columns": "欄",
383
- "warnings": "警告",
384
- "errorTitle": "無法解析該檔案",
385
- "parseFailed": "我們無法解析該檔案。如果自動偵測判斷錯誤,請明確選擇格式後重試。",
386
- "unsupported": "無法辨識該格式——支援 SQL DDL、Prisma、Drizzle、TypeORM、Sequelize、Rails schema.rb、Django 模型與 Adminium JSON。請明確選擇一種後重試。",
387
- "requestFailed": "上傳失敗——請檢查網路連線後重試。"
388
- },
389
- "title": "連接你的資料庫",
390
- "subtitle": "將 Adminium 指向資料庫,我們會根據其結構描述產生管理儀表板。",
391
- "name": "連線名稱",
392
- "namePlaceholder": "正式環境 Postgres",
393
- "modeLabel": "來源輸入方式",
394
- "mode": {
395
- "dsn": "連線字串",
396
- "fields": "逐項欄位",
397
- "file": "結構描述檔案"
398
- },
399
- "dsn": {
400
- "label": "連線字串",
401
- "helper": "postgres://user:password@host:5432/database——mysql:// 與 sqlite: 也可使用。",
402
- "incomplete": "請補齊主機與資料庫,例如 postgres://user@host:5432/db",
403
- "invalidScheme": "無法辨識的協定——應為 postgres://、mysql://、mariadb:// 或 sqlite:",
404
- "quickFill": "快速填入:"
405
- },
406
- "fields": {
407
- "host": "主機",
408
- "port": "連接埠",
409
- "database": "資料庫",
410
- "user": "使用者",
411
- "password": "密碼",
412
- "ssl": "SSL 模式",
413
- "preview": "連線字串預覽:"
414
- },
415
- "readOnlyRole": {
416
- "title": "使用唯讀角色",
417
- "body": "Adminium 絕不會寫入你的資料庫——設定過程僅使用結構描述中繼資料。建議使用僅具 SELECT 權限的專用使用者;Adminium 自身資料表的存放位置可在中繼資料儲存步驟中決定。"
418
- }
419
- },
420
- "capability": {
421
- "mysqlApproxRows": "MySQL 的資料列數為儲存引擎估計值(誤差可達 ±40%),以 ≈ 顯示。",
422
- "mysqlFkEnum": "MySQL 的外鍵/列舉中繼資料較弱:MyISAM 資料表不宣告外鍵,列舉是逐欄的 enum(…) 型別,CHECK 條件約束需要 MySQL 8.0.16+ / MariaDB 10.2+。",
423
- "sqliteCheckEnums": "SQLite 沒有原生列舉型別——列舉由 CHECK (col IN (…)) 條件約束合成。",
424
- "sqliteNoComments": "SQLite 不支援欄位註解——請在綱要重對應編輯器中新增標籤。",
425
- "importNoRowCounts": "綱要檔案不含資料列數——資料表清單會顯示 — 而不是虛構的數字。",
426
- "importNoLiveHealth": "沒有即時資料庫連線——此來源無法進行健康檢查與綱要漂移偵測。",
427
- "rowsUnavailable": "綱要檔案沒有即時資料庫——在連接資料庫之前,資料列數未知。",
428
- "rowsRunAnalyze": "尚無估計值——請在資料庫上執行 ANALYZE 以取得資料列數。",
429
- "rowsNoEstimate": "引擎未回報此資料表的估計值。",
430
- "rowsApproximate": "儲存引擎估計值——在 InnoDB 上誤差可達 ±40%。"
431
- },
432
- "test": {
433
- "log": {
434
- "moreWarnings": "還有 {count} 則解析器警告",
435
- "connecting": "正在建立安全連線…",
436
- "connected": "已連線({latency} 毫秒)· 唯讀內省",
437
- "connectFailed": "連線失敗。",
438
- "readingSchema": "正在讀取結構描述:public",
439
- "readingFile": "正在讀取上傳的結構描述檔案…",
440
- "parsingFile": "正在解析 {file}…",
441
- "detected": "偵測到 {tables} 個資料表 · {columns} 欄",
442
- "found": "共找到 {tables} 個資料表 · {columns} 欄",
443
- "mapping": "正在對應欄類型 → 輸入元件",
444
- "relations": "正在偵測關聯…",
445
- "piiScan": "正在掃描 PII 欄…",
446
- "piiDone": "PII 掃描完成——預設遮罩 {count} 欄",
447
- "piiDoneUnknown": "PII 掃描完成",
448
- "jobFailed": "內省失敗。",
449
- "networkFailed": "要求失敗——請檢查網路連線後重試。",
450
- "ready": "就緒"
451
- },
452
- "title": "正在分析你的結構描述",
453
- "subtitle": "正在內省資料表、欄與關聯。這需要幾秒鐘。",
454
- "trust": "我們只讀取你的結構描述與資料,不會進行任何修改。",
455
- "errorTitle": "連線失敗",
456
- "retry": "重試",
457
- "logLabel": "內省記錄",
458
- "hint": {
459
- "auth": "驗證失敗——請檢查 DSN 中的使用者名稱與密碼。",
460
- "hostUnreachable": "無法連上主機——請檢查主機名稱與連接埠,並確認資料庫接受來自本機的連線(將我們的 IP 加入允許清單)。",
461
- "metaPlacement": "該資料來源無法承載 Adminium 的中繼資料表——請改用獨立的中繼資料庫繼續。",
462
- "permission": "該角色已連線,但缺少讀取結構描述的權限——請為內省角色授予該結構描述的 USAGE 權限。",
463
- "timeout": "資料庫未及時回應——請檢查網路路徑與負載後重試。",
464
- "tls": "TLS 交涉失敗——請嘗試 sslmode=require,或上傳伺服器所需的 CA 憑證。",
465
- "unknown": "連線失敗——請核對 DSN 後重試。"
466
- }
467
377
  },
468
- "tables": {
469
- "importNoCounts": "綱要檔案不含資料列數——在連接即時資料庫之前,此欄會顯示 —。",
470
- "title": "選擇資料表",
471
- "subtitle": "選擇要納入的資料表。之後可隨時變更。",
472
- "search": "篩選資料表…",
473
- "listLabel": "可納入的資料表",
474
- "emptyFilter": "沒有符合篩選條件的資料表。",
475
- "pii": "PII",
476
- "highVolume": "高資料量",
477
- "highVolumeNote": "超過 100,000 列的資料表預設不勾選——維運類資料表很少適合放進儀表板。",
478
- "joinHidden": "{count} 個關聯/系統資料表已預先隱藏——它們仍支撐多對多關聯。"
479
- },
480
- "hub": {
481
- "title": "資料連線",
482
- "subtitle": "{total, plural, other {# 個連線中 {healthy, number} 個}}狀態正常",
483
- "connectNew": "新增連線",
484
- "stats": {
485
- "connections": "連線",
486
- "healthy": "正常",
487
- "tables": "已包含的資料表",
488
- "pages": "已產生的頁面"
489
- },
490
- "status": {
491
- "connected": "已連線",
492
- "error": "錯誤",
493
- "unconfigured": "草稿",
494
- "testing": "測試中…"
495
- },
496
- "card": {
497
- "readOnly": "唯讀",
498
- "tables": "資料表",
499
- "pages": "頁面",
500
- "latency": "延遲",
501
- "latencyMs": "{latency, number} 毫秒",
502
- "lastIntrospected": "上次內省",
503
- "never": "從未"
504
- },
505
- "action": {
506
- "test": "測試",
507
- "reintrospect": "重新內省",
508
- "reintrospectFile": "結構檔案來源沒有線上資料庫——請改為重新上傳檔案。",
509
- "remap": "重新對應結構",
510
- "delete": "刪除"
511
- },
512
- "test": {
513
- "ok": "連線正常 · {latency, number} 毫秒",
514
- "failed": "連線測試失敗"
515
- },
516
- "introspect": {
517
- "noChanges": "結構沒有變更——未建立新快照。",
518
- "updated": "已重新內省結構",
519
- "masksProposed": "{count, plural, other {建議對 # 個欄位進行遮罩}}——請在重新對應編輯器中檢視。",
520
- "failed": "內省失敗,請再試一次。"
521
- },
522
- "delete": {
523
- "title": "刪除連線",
524
- "body": "此操作會刪除「{name}」及其產生的頁面。您的資料庫本身不會被更動。",
525
- "prompt": "輸入 {name} 以確認",
526
- "confirm": "刪除連線",
527
- "cancel": "取消",
528
- "close": "關閉",
529
- "success": "已刪除連線「{name}」",
530
- "failed": "無法刪除連線,請再試一次。"
531
- },
532
- "empty": {
533
- "title": "尚無資料來源",
534
- "body": "連接資料庫後,Adminium 會根據其結構產生您的管理面板。",
535
- "cta": "連接資料庫"
536
- }
537
- },
538
- "settingsHub": {
539
- "title": "工作區設定",
540
- "subtitle": "此工作區的識別、安全性與危險操作。",
541
- "save": "儲存變更",
542
- "saved": "工作區設定已更新",
543
- "saveFailed": "無法儲存工作區設定,請再試一次。",
544
- "superAdminOnlyTitle": "需要超級管理員",
545
- "superAdminOnly": "只有超級管理員才能變更工作區識別與安全性設定。",
546
- "identity": {
547
- "heading": "工作區識別",
548
- "appName": {
549
- "label": "應用程式名稱",
550
- "helper": "顯示在側邊欄、瀏覽器標題與電子郵件中。",
551
- "error": "請輸入不超過 60 個字元的名稱。"
552
- },
553
- "logo": {
554
- "label": "標誌",
555
- "drop": "將圖片拖放到此處",
556
- "helper": "支援 PNG、JPEG、WebP、GIF 或 SVG,上限 1 MB。將在所有位置取代內建標誌。",
557
- "upload": "上傳標誌",
558
- "replace": "更換標誌",
559
- "remove": "移除",
560
- "uploaded": "標誌已更新",
561
- "removed": "標誌已移除",
562
- "tooLarge": "此圖片大於 1 MB。",
563
- "badType": "請選擇 PNG、JPEG、WebP、GIF 或 SVG 圖片。",
564
- "undo": "復原"
565
- },
566
- "showVersion": {
567
- "label": "側邊欄中的版本",
568
- "helper": "標誌旁的版本編號。關閉後將隱藏您執行的版本。"
569
- }
570
- },
571
- "security": {
572
- "heading": "安全性",
573
- "require2fa": {
574
- "label": "強制雙重驗證",
575
- "desc": "每位成員都必須啟用雙重驗證才能登入。"
576
- },
577
- "allowSignup": {
578
- "label": "允許自行註冊",
579
- "desc": "任何人都可以建立帳戶——關閉後此工作區僅限邀請。"
580
- },
581
- "sessionTtl": {
582
- "label": "工作階段有效期(小時)",
583
- "error": "介於 {min, number} 到 {max, number} 小時之間。"
584
- },
585
- "passwordMin": {
586
- "label": "密碼最小長度",
587
- "error": "介於 {min, number} 到 {max, number} 個字元之間。"
588
- }
589
- },
590
- "review": {
591
- "title": "儲存工作區設定",
592
- "subtitle": "儲存前請確認您的變更。",
593
- "confirm": "儲存變更",
594
- "cancel": "取消",
595
- "close": "關閉",
596
- "on": "開",
597
- "off": "關",
598
- "shown": "顯示",
599
- "hidden": "隱藏",
600
- "change": "{before} → {after}"
601
- },
602
- "defaultsCard": {
603
- "heading": "外觀與語言預設值",
604
- "body": "整個工作區的主題、強調色、密度與語言設定位於全域預設值。",
605
- "cta": "開啟全域預設值"
606
- },
607
- "danger": {
608
- "heading": "危險區域",
609
- "subtitle": "不可逆的操作。",
610
- "empty": "沒有可刪除的項目——尚無連線。",
611
- "deleteDesc": "刪除該連線及其產生的頁面。您的資料庫不會被更動。此操作無法復原。",
612
- "deleteCta": "刪除連線"
613
- },
614
- "aiCard": {
615
- "heading": "AI 增強",
616
- "body": "設定 AI 供應商(或複製貼上往返)以增強標籤、分組與關聯。",
617
- "cta": "開啟 AI 設定"
618
- },
619
- "pagesCard": {
620
- "heading": "頁面",
621
- "body": "新增、編輯與刪除頁面,變更每個頁面的內容,並重新排列側邊欄。",
622
- "cta": "管理頁面"
623
- }
624
- },
625
- "settingsAi": {
626
- "title": "AI 增強",
627
- "subtitle": "連接一個模型,讓 Adminium 建議標籤、分組、關聯等——在套用之前一律以差異形式審閱。",
628
- "saved": "AI 供應商已儲存",
629
- "saveFailed": "無法儲存 AI 供應商。請重試。",
630
- "save": "儲存供應商",
631
- "test": "測試連線",
632
- "testHintDirty": "測試前請先儲存變更。",
633
- "testing": "正在連線供應商…",
634
- "testError": "測試失敗",
635
- "testErrorBody": "無法連線到供應商。請檢查金鑰與基礎 URL。",
636
- "testOk": "已連線到 {model},耗時 {latency} 毫秒",
637
- "testUnknownModel": "供應商",
638
- "provider": {
639
- "heading": "AI 供應商",
640
- "subtitle": "選擇 Adminium 如何存取模型以增強你的結構描述。金鑰會加密儲存且不再顯示。",
641
- "active": "使用中",
642
- "anthropic": {
643
- "label": "Anthropic",
644
- "desc": "透過 Anthropic API 使用 Claude 模型。"
645
- },
646
- "openai": {
647
- "label": "OpenAI",
648
- "desc": "透過 OpenAI API 使用 GPT 模型。"
649
- },
650
- "openaiCompatible": {
651
- "label": "相容 OpenAI",
652
- "desc": "任何使用 OpenAI 協定的端點——Groq、Together、vLLM、LM Studio。"
653
- },
654
- "ollama": {
655
- "label": "Ollama(本機)",
656
- "desc": "透過 Ollama 在本機執行模型——免金鑰,免雲端。"
657
- },
658
- "requiresNetwork": "需要網際網路與 API 金鑰",
659
- "networkDisabledTitle": "此安裝已關閉直連 AI 服務商",
660
- "networkDisabledBody": "此 Adminium 設定為無對外網路存取,無法連線服務商 API。請使用下方的複製貼上往返方式——不需金鑰,也不需連網。"
661
- },
662
- "configure": {
663
- "heading": "設定 {provider}"
664
- },
665
- "field": {
666
- "baseUrl": "基礎 URL",
667
- "baseUrlOptional": "除非 Ollama 執行於其他主機,否則保持不變。",
668
- "baseUrlHelper": "提供 /chat/completions 的端點根位址。",
669
- "model": "模型",
670
- "modelFreeText": "輸入你的端點所提供的確切模型 ID。",
671
- "modelLive": "已從供應商即時載入。",
672
- "modelStatic": "一份經過驗證的清單;儲存後輸入自訂 ID 可重新整理。",
673
- "modelLoading": "載入中…",
674
- "modelPlaceholder": "選擇一個模型…",
675
- "key": "API 金鑰",
676
- "keyStored": "已加密儲存。替換它以使用其他金鑰。",
677
- "keyMask": "sk-…{last4}",
678
- "keyReplace": "替換金鑰",
679
- "keyOptional": "選填——部分端點不需要金鑰。",
680
- "keyWriteOnly": "僅供寫入:一旦儲存即不再顯示。",
681
- "noKeyTitle": "不需要 API 金鑰",
682
- "noKeyBody": "Ollama 在本機執行,因此沒有任何內容離開這台機器。"
683
- },
684
- "runStatus": {
685
- "draft": "草稿",
686
- "running": "執行中",
687
- "awaitingResponse": "等待回應",
688
- "validated": "已驗證",
689
- "applied": "已套用",
690
- "partiallyApplied": "部分套用",
691
- "failed": "失敗",
692
- "discarded": "已捨棄"
693
- },
694
- "byo": {
695
- "heading": "沒有金鑰?使用你自己的 AI 工具",
696
- "subtitle": "複製貼上往返——沒有任何內容離開這台機器。",
697
- "body": "Studio 可以依你的結構描述產生一個自足的提示詞。在 Claude Code、ChatGPT 或任何工具中執行它,然後將回傳的 JSON 貼回連線精靈。驗證、審閱與結果都與直連方式相同。",
698
- "guaranteeTitle": "無遙測保證",
699
- "guarantee1": "提示詞僅包含你的結構描述與彙總統計——預設絕不包含列資料。",
700
- "guarantee2": "不嵌入任何憑證、執行個體 URL 或識別碼。",
701
- "guarantee3": "BYO 執行不進行任何網路呼叫。",
702
- "promptVersion": "提示詞 {version}",
703
- "schemaVersion": "結構描述 {version}",
704
- "headingRecommended": "使用你自己的 AI 工具——不需金鑰",
705
- "recommended": "建議"
706
- },
707
- "history": {
708
- "heading": "執行紀錄",
709
- "subtitle": "過往的增強執行。開啟其中一個以審閱其建議。",
710
- "tableLabel": "增強執行",
711
- "colDate": "日期",
712
- "colSource": "來源",
713
- "colStatus": "狀態",
714
- "colChunks": "區塊",
715
- "openReview": "開啟 {date} 的執行審閱",
716
- "connection": "連線",
717
- "empty": "尚無增強執行。在連線精靈中增強結構描述後,紀錄將顯示於此。",
718
- "errorTitle": "無法載入執行",
719
- "errorBody": "重新整理頁面以再試一次。",
720
- "noConnections": "請先連線資料庫——增強執行會依連線分別記錄。",
721
- "byo": "BYO",
722
- "directPath": "直連"
723
- }
724
- },
725
- "enrich": {
726
- "title": "使用 AI 豐富",
727
- "subtitle": "可選擇使用 LLM 優化生成的標籤、分組、列舉和儀表板。啟發式基準無需它即可運作——這僅新增供你在套用前審閱的建議。",
728
- "intentLabel": "你希望如何豐富?",
729
- "sectionsLegend": "應由 AI 決定哪些內容?",
730
- "localesLegend": "將標籤翻譯為",
731
- "localeLocked": "(必填)",
732
- "samplingTitle": "包含範例值",
733
- "samplingHint": "在提示中為每個非 PII 欄位最多包含 20 個真實值。",
734
- "samplingPreviewTitle": "離開此機器的內容",
735
- "samplingPreviewBody": "每個非 PII 欄位最多 20 個最常見值,以及數值與日期欄位的最小/最大值。標記為 PII 的欄位永不取樣。其餘所有內容僅保留彙總值。複製前請審閱確切的提示(BYO)——未經你的操作不會傳送任何內容。",
736
- "noSections": "請至少選擇一個要豐富的決策群組。",
737
- "generatePrompt": "生成提示",
738
- "startProvider": "開始豐富",
739
- "startOver": "重新開始",
740
- "copied": "已複製",
741
- "createFailed": "無法建立豐富提示——請重試。",
742
- "createFailedTitle": "無法啟動",
743
- "providerFallback": "你的 AI 供應商",
744
- "fileTitle": "AI 豐富需要一個線上資料庫",
745
- "fileBody": "結構描述檔案來源尚無可豐富的快照。連接一個線上資料庫以使用 AI 豐富,或繼續——啟發式基準仍會生成完整的應用程式。",
746
- "section": {
747
- "labels": "標籤與描述",
748
- "groups": "導覽分組",
749
- "enums": "列舉語意",
750
- "relations": "關聯",
751
- "keys": "關鍵欄位",
752
- "templates": "頁面範本",
753
- "widgets": "儀表板小工具",
754
- "pii": "PII 與遮罩",
755
- "icons": "圖示",
756
- "microcopy": "微文案"
757
- },
758
- "provider": {
759
- "title": "使用我的 AI 供應商",
760
- "description": "立即使用已設定的供應商執行豐富。你將以差異形式審閱每則建議。",
761
- "unconfigured": "尚未設定 AI 供應商——請在下方將提示複製到你自己的工具,或先設定一個供應商。",
762
- "settingsHint": "想直接執行嗎?",
763
- "settingsLink": "在「設定 → AI」中設定供應商",
764
- "networkDisabled": "此 Adminium 無對外網路存取,無法連線服務商 API。請改用複製貼上往返方式——同樣的提示詞,同樣的審閱。"
765
- },
766
- "byo": {
767
- "cardTitle": "複製提示到我自己的 AI 工具",
768
- "cardDescription": "將一個自包含的提示複製到 Claude Code、ChatGPT 或任何工具——然後將 JSON 貼回。無需金鑰,不會自動將任何內容傳出此機器。",
769
- "guidance": "在任意 AI 工具中執行——Claude Code、ChatGPT,皆可。將其回傳的 JSON 貼到下方。",
770
- "promptLabel": "豐富提示",
771
- "promptLabelN": "豐富提示 第 {index} 個,共 {total} 個",
772
- "tokenChip": "≈ {tokens} 個 token",
773
- "copyPrompt": "複製提示",
774
- "copyPromptDone": "提示已複製",
775
- "download": "下載 .md",
776
- "chunkTabs": "提示分塊",
777
- "chunkTab": "提示 {index}",
778
- "chunkValid": "分塊 {index} 已驗證",
779
- "pasteLabel": "貼上 JSON 回應",
780
- "pastePlaceholder": "在此貼上 JSON 回應…",
781
- "validate": "驗證",
782
- "valid": "回應已驗證",
783
- "mergedTitle": "全部 {count} 個分塊已驗證並合併",
784
- "mergedTitleSingle": "回應已驗證",
785
- "mergedBody": "建議已準備好,可對照啟發式基準進行審閱。",
786
- "errorsTitle": "驗證發現 {count} 個問題",
787
- "copyErrors": "為你的 AI 工具複製錯誤",
788
- "copyErrorsDone": "錯誤已複製",
789
- "copyErrorsHint": "將其貼回你的 AI 工具以取得更正後的回應。",
790
- "droppedItems": "有 {count} 則建議在驗證時被捨棄——審閱中顯示其餘內容。",
791
- "pendingTitle": "驗證每個提示以繼續",
792
- "pendingBody": "在上方貼上 JSON 回應並驗證,以繼續進行審閱。",
793
- "pendingBodyChunked": "每個分塊都必須先驗證,建議才會合併。請貼上並驗證上方的每個提示。",
794
- "requestFailed": "無法連接伺服器進行驗證——請重試。",
795
- "continueReview": "繼續審閱",
796
- "wholeDocument": "整份文件",
797
- "cardTitleRecommended": "把提示詞複製到我自己的 AI 工具——建議"
798
- },
799
- "direct": {
800
- "title": "正在使用 AI 豐富",
801
- "subtitle": "正在將你的結構描述傳送至",
802
- "building": "正在建立提示…",
803
- "logLabel": "豐富日誌",
804
- "cancel": "取消",
805
- "back": "返回選項",
806
- "retry": "重試",
807
- "done": "豐富完成——請審閱建議。",
808
- "continueReview": "繼續審閱",
809
- "failed": "供應商執行失敗。請檢查你的 AI 設定並重試。",
810
- "jobFailed": "豐富執行未完成。",
811
- "startFailed": "無法啟動執行——請重試。",
812
- "errorTitle": "豐富失敗"
813
- },
814
- "skip": {
815
- "title": "略過——僅使用啟發式",
816
- "description": "從啟發式基準生成。你之後可在「設定 → AI」中豐富——略過絕不會受到懲罰。",
817
- "confirmTitle": "繼續使用啟發式",
818
- "confirmBody": "生成的應用程式將使用啟發式的標籤、分組和儀表板。繼續生成——你可隨時在「設定 → AI」中執行 AI 豐富。"
819
- }
820
- },
821
- "review": {
822
- "unavailableTitle": "審閱畫面不可用",
823
- "unavailableBody": "此組建尚未包含增強審閱畫面(06-T14)。它將隨差異與套用流程一起推出。"
824
- },
825
- "llmRuns": {
826
- "review": {
827
- "header": {
828
- "title": "審查 AI 建議",
829
- "model": "模型",
830
- "snapshot": "快照",
831
- "byo": "自帶",
832
- "pathDirect": "直接 API",
833
- "pathByo": "複製貼上",
834
- "agree": "{n} 項一致",
835
- "conflict": "{n} 項衝突",
836
- "new": "{n} 項新增",
837
- "rejects": "{n} 項拒絕",
838
- "countsAria": "建議數量"
839
- },
840
- "bulk": {
841
- "thresholdLabel": "信心度門檻",
842
- "thresholdAria": "「全部接受」的信心度門檻",
843
- "acceptAll": "接受所有 ≥ {pct}%",
844
- "clear": "清除選取"
845
- },
846
- "section": {
847
- "selectAllAria": "全選 {group}",
848
- "acceptedCount": "已接受 {n} 項"
849
- },
850
- "group": {
851
- "labels": "標籤與翻譯",
852
- "navigation": "導覽與領域",
853
- "enums": "列舉語意",
854
- "relations": "關聯",
855
- "keys": "鍵欄位",
856
- "templates": "頁面範本",
857
- "dashboards": "儀表板與小工具",
858
- "pii": "個人資料與遮罩",
859
- "icons": "圖示",
860
- "microcopy": "微文案"
861
- },
862
- "status": {
863
- "agree": "一致",
864
- "conflict": "衝突",
865
- "new": "新增",
866
- "heuristicOnly": "僅啟發式",
867
- "rejects": "拒絕啟發式",
868
- "locked": "已鎖定"
869
- },
870
- "row": {
871
- "acceptAria": "接受 {target} 的{noun}建議",
872
- "keptEdited": "已保留——由您編輯",
873
- "rejectsCallout": "AI 拒絕了某項啟發式決策——接受前請確認。",
874
- "showTranslations": "顯示翻譯",
875
- "hideTranslations": "隱藏翻譯",
876
- "confidenceAria": "信心度 {pct}%",
877
- "noAi": "無 AI 建議"
878
- },
879
- "value": {
880
- "none": "無值",
881
- "absent": "無",
882
- "dash": "—",
883
- "display": "顯示",
884
- "key": "鍵",
885
- "rank": "排名 {n}",
886
- "span": "跨距 {n}",
887
- "tableCount": "{n} 張資料表",
888
- "widgetCount": "{n} 個小工具",
889
- "enumWorkflow": "工作流程",
890
- "enumCategory": "分類",
891
- "notPii": "非個人資料",
892
- "label": "標籤",
893
- "description": "描述",
894
- "subtitle": "頁面副標題",
895
- "headline": "空狀態標題",
896
- "guidance": "空狀態提示"
897
- },
898
- "apply": {
899
- "title": "套用 {n} 項建議",
900
- "subtitle": "這些變更將在單一交易中寫入,並可復原。",
901
- "empty": "未選擇任何要套用的內容。",
902
- "confirm": "套用變更"
903
- },
904
- "footer": {
905
- "count": "已選擇 {n} 項建議",
906
- "apply": "套用 {n} 項已接受的建議",
907
- "failed": "套用失敗"
908
- },
909
- "toast": {
910
- "applied": "已套用 {n} 項建議",
911
- "appliedPartial": "已套用 {n} 項建議(部分已略過)",
912
- "applyFailed": "無法套用建議",
913
- "undoFailed": "無法復原此變更"
914
- },
915
- "error": {
916
- "title": "無法載入此執行"
917
- },
918
- "notReady": {
919
- "title": "此執行尚無可審查的建議",
920
- "body": "執行必須先通過驗證,才能審查其建議。請先產生或貼上回應。"
921
- },
922
- "applied": {
923
- "title": "此執行已套用",
924
- "body": "下方已接受的建議為唯讀。"
925
- },
926
- "empty": {
927
- "title": "無建議",
928
- "body": "此執行未產生可審查的建議。"
929
- },
930
- "cat": {
931
- "label": "標籤",
932
- "key": "鍵欄位",
933
- "enum": "列舉",
934
- "relation": "關聯",
935
- "pii": "個人資料",
936
- "template": "頁面範本",
937
- "group": "導覽群組",
938
- "dashboard": "儀表板",
939
- "widget": "小工具",
940
- "copy": "微文案"
941
- }
942
- }
943
- },
944
- "wizard": {
945
- "title": "新增連線",
946
- "back": "返回",
947
- "continue": "繼續",
948
- "progress": "設定進度",
949
- "persistFailed": "無法儲存你的資料表選擇——請重試。",
950
- "persistFailedTitle": "儲存失敗",
951
- "bridgeAppliedTitle": "已收到連線字串",
952
- "bridgeAppliedBody": "由你的瀏覽器從 adminium.dev 直接交給本機——它從未被上傳到任何伺服器。請在下方核對後繼續。",
953
- "bridgeFailedTitle": "無法使用這次交接",
954
- "bridgeFailedBody": "它已被使用或已過期。請改為在下方貼上你的連線字串。",
955
- "step": {
956
- "source": "來源",
957
- "test": "分析",
958
- "tables": "資料表",
959
- "meta": "中繼資料儲存",
960
- "intent": "意圖",
961
- "enrich": "豐富",
962
- "generate": "產生"
963
- }
964
- },
965
- "meta": {
966
- "title": "Adminium 應將自己的資料表放在哪裡?",
967
- "subtitle": "頁面、角色、稽核記錄與設定存放在以 adminium_ 為前綴的資料表中——絕不混入你的資料。",
968
- "sameDb": {
969
- "title": "同一資料庫",
970
- "description": "adminium_* 資料表會建立在你的來源資料表旁。這是最簡單的設定——需要具有寫入與 CREATE TABLE 權限的角色。",
971
- "disabledReadOnly": "你的角色為唯讀——Adminium 絕不會寫入此資料庫。請為 Adminium 自身的資料表選擇獨立的資料庫。",
972
- "disabledNoDdl": "該角色無法執行 DDL——Adminium 遷移需要 CREATE TABLE 權限。請為 Adminium 自身的資料表選擇獨立的資料庫。",
973
- "disabledFile": "結構描述檔案沒有即時資料庫——請為 Adminium 自身的資料表選擇獨立的資料庫。"
974
- },
975
- "separate": {
976
- "title": "獨立的資料庫",
977
- "description": "Adminium 會將其資料表保存在另一個資料庫中。你的來源保持不變——唯讀來源必須如此。",
978
- "dsn": "中繼資料庫連線字串",
979
- "helper": "需要寫入與 DDL 權限——Adminium 會在那裡執行自己的遷移。",
980
- "test": "測試連線",
981
- "ok": "相容——寫入 ✓ · DDL ✓",
982
- "insufficient": "該角色無法承載中繼資料存放區——Adminium 在那裡需要寫入與 CREATE TABLE 權限。",
983
- "errorTitle": "中繼資料存放區不相容"
984
- },
985
- "testFailed": "連線失敗。",
986
- "v1Note": {
987
- "title": "關於此安裝",
988
- "body": "此伺服器已將自有資料表保存在設定好的資料庫中,本步驟不會搬移它們。它只驗證您的選擇是否與此連線相容——伺服器會獨立執行相同規則(409 META_PLACEMENT_INVALID)。"
989
- },
990
- "move": {
991
- "title": "正在搬移 Adminium 的資料表",
992
- "copying": "正在搬移 Adminium 的資料表…",
993
- "restarting": "正在重新啟動…",
994
- "copyingBody": "正在將每張 adminium_ 資料表複製到新資料庫。您的來源資料不會被更動,且必須通過驗證後才會切換。",
995
- "restartingBody": "複製已完成。Adminium 正在新資料庫上重新啟動——本頁面將在數秒後自動繼續。",
996
- "failed": "無法搬移 Adminium 的資料表——請重試。",
997
- "timeout": "Adminium 已搬移資料表,但尚未恢復。您的資料已安全存放於新資料庫——請稍後重新載入本頁面。"
998
- },
999
- "willMove": {
1000
- "title": "此步驟將搬移 Adminium 的資料表",
1001
- "body": "Adminium 目前使用內建的 SQLite 儲存區。按「繼續」會將該儲存區複製到您選擇的資料庫並在其上重新啟動——帳號、頁面與設定都會一併搬移,您將保持登入狀態。"
1002
- }
1003
- },
1004
- "intent": {
1005
- "title": "你需要什麼?",
1006
- "subtitle": "意圖決定會產生哪些頁面。之後可以變更——變更會提議重新產生,絕不會靜默改寫。",
1007
- "trust": "我們只讀取你的結構描述——設定期間絕不讀取列資料。",
1008
- "fullAdmin": {
1009
- "title": "完整管理面板",
1010
- "description": "儀表板、CRUD 頁面、搜尋、匯入與匯出——你的結構描述支援的一切。"
1011
- },
1012
- "analytics": {
1013
- "title": "唯讀分析",
1014
- "description": "儀表板、圖表與唯讀網格。沒有表單、沒有寫入——所有角色上限為檢視者。"
1015
- },
1016
- "crud": {
1017
- "title": "CRUD 資料表",
1018
- "description": "每個資料表一個編輯頁面,外加搜尋與匯入/匯出——極簡首頁,沒有儀表板。"
1019
- },
1020
- "support": {
1021
- "title": "客服主控台",
1022
- "description": "優先產生佇列、工單與客戶詳情頁面。預設關閉刪除。(佇列範本將於 M7 推出——v1 頁面集與完整管理面板相同。)"
1023
- }
1024
- },
1025
- "generate": {
1026
- "title": "產生你的應用程式",
1027
- "subtitle": "每個已納入的資料表一個頁面,外加依領域產生的儀表板——意圖:",
1028
- "run": "產生儀表板",
1029
- "openApp": "開啟你的應用程式",
1030
- "logLabel": "產生記錄",
1031
- "log": {
1032
- "classifying": "正在對結構描述分類…",
1033
- "composing": "正在組合範本…",
1034
- "writing": "正在寫入頁面…",
1035
- "done": "已產生 {pages} 個頁面,分佈於 {groups} 個導覽群組"
1036
- },
1037
- "successTitle": "你的儀表板已就緒",
1038
- "successBody": "{pages} 個頁面,分佈於 {groups} 個導覽群組——由你的結構描述產生,可在 Studio 中編輯。",
1039
- "errorTitle": "產生失敗",
1040
- "failed": "產生失敗——請重試,或先重新執行內省。",
1041
- "fileTitle": "結構描述檔案已解析——產生需要即時資料庫",
1042
- "fileBody": "你的結構描述解析順利,上方預覽是真實的。直接從結構描述檔案產生可執行的應用程式(含佔位列)尚不可用——請連接即時資料庫立即產生。"
1043
- },
1044
- "remap": {
1045
- "column": {
1046
- "nullable": "可為 null",
1047
- "labelOverride": "顯示標籤",
1048
- "labelHelper": "推斷:{name}",
1049
- "logicalType": "邏輯型別",
1050
- "logicalTypeHelper": "推斷:{type}(來自 {dbType})——由配接器對應;v1 不可覆寫。",
1051
- "semantic": "語意型別",
1052
- "unclassified": "尚未分類。",
1053
- "semanticHelper": "分類器:{tag} · 信心度 {confidence}% · 來源:{source}",
1054
- "semanticInferred": "推斷:{tag}",
1055
- "currency": "貨幣",
1056
- "currencyHelper": "套用於金額格式的 ISO 4217 代碼。",
1057
- "pii": "預設遮罩",
1058
- "piiHelper": "遮罩的值會以隱匿形式呈現;取消遮罩需要 data.unmask_pii 權限,且會寫入稽核記錄。",
1059
- "enum": "列舉語意",
1060
- "enumKind": "列舉種類",
1061
- "enumWorkflow": "工作流程",
1062
- "enumCategory": "類別",
1063
- "enumLabelFor": "{value} 的標籤",
1064
- "enumToneFor": "{value} 的色調",
1065
- "enumToneAuto": "自動",
1066
- "enumHelper": "工作流程列舉會驅動狀態膠囊與看板欄;色調會將各值對應到語意色調刻度。"
1067
- },
1068
- "diff": {
1069
- "one": "1 項變更",
1070
- "count": "{count} 項變更",
1071
- "saved": "已儲存覆寫。",
1072
- "revertOne": "還原 {change}",
1073
- "regenerate": "重新產生頁面",
1074
- "revertAll": "全部還原",
1075
- "save": "儲存覆寫"
1076
- },
1077
- "table": {
1078
- "iconPicker": "資料表圖示",
1079
- "system": "系統",
1080
- "labelOverride": "顯示標籤",
1081
- "labelHelper": "推斷:{name}",
1082
- "icon": "圖示",
1083
- "navGroup": "導覽群組",
1084
- "navGroupHelper": "導覽位置由產生器決定——table.navGroup 覆寫不在 v1 詞彙表中。",
1085
- "include": "納入產生的應用程式",
1086
- "includeHelper": "被排除的資料表不會產生頁面,並會從導覽中消失。",
1087
- "shape": "資料表形態(已分類)",
1088
- "role": "角色",
1089
- "unclassified": "未分類",
1090
- "kind": "種類",
1091
- "hierarchy": "階層",
1092
- "selfFk": "透過 {column} 自我參照",
1093
- "polymorphic": "多型配對",
1094
- "rows": "資料列估計值",
1095
- "shapeHelper": "每次內省都會重新計算分類;覆寫會疊加在其上,並在重新產生後保留。"
1096
- },
1097
- "relations": {
1098
- "declared": "已宣告的外鍵",
1099
- "noneDeclared": "沒有已宣告的外鍵涉及此資料表。",
1100
- "inferred": "推斷的關聯",
1101
- "noneInferred": "此資料表沒有任何推斷結果。",
1102
- "confidence": "推斷 · {pct}%",
1103
- "accepted": "已接受",
1104
- "suppressed": "已抑制",
1105
- "accept": "接受",
1106
- "suppress": "抑制",
1107
- "overrides": "覆寫關聯(已套用)",
1108
- "overrideBadge": "覆寫",
1109
- "add": "新增虛擬關聯",
1110
- "fromColumn": "來源欄位",
1111
- "noColumns": "沒有符合的欄位",
1112
- "fromPlaceholder": "customer_id",
1113
- "toTable": "目標資料表",
1114
- "noTables": "沒有符合的資料表",
1115
- "toColumn": "目標欄位",
1116
- "cardinality": "基數",
1117
- "addButton": "新增關聯"
1118
- },
1119
- "toast": {
1120
- "saved": "已儲存結構描述覆寫",
1121
- "savedDetail": "下方已套用的結構描述已反映你的變更。",
1122
- "regenerated": "已建立 {created} · 已更新 {updated} · 未變更 {unchanged}",
1123
- "regeneratedDetail": "你手動編輯過的頁面會被保留——只有 generated_hash 未被更動的頁面才會就地重新產生。",
1124
- "regenerateFailed": "重新產生失敗"
1125
- },
1126
- "title": "結構描述重新對應",
1127
- "subtitle": "{tables} 個資料表 · 已套用 {applied} 項覆寫",
1128
- "saveFailed": "儲存失敗:{message}",
1129
- "loadFailed": "無法載入此連線的結構描述。",
1130
- "inspector": "檢閱器",
1131
- "empty": {
1132
- "title": "選擇資料表或欄位",
1133
- "description": "在結構描述樹中選取項目,即可重新對應其標籤、型別、關聯或遮罩。"
1134
- },
1135
- "tabs": {
1136
- "details": "詳細資料",
1137
- "relations": "關聯"
1138
- },
1139
- "tree": {
1140
- "label": "結構描述",
1141
- "search": "搜尋資料表與欄位",
1142
- "searchPlaceholder": "搜尋資料表…",
1143
- "noMatches": "沒有符合搜尋條件的資料表。",
1144
- "collapse": "收合資料表",
1145
- "expand": "展開資料表",
1146
- "unsaved": "未儲存的變更",
1147
- "excluded": "已排除"
1148
- },
378
+ "translations": {
379
+ "title": "語言與翻譯",
380
+ "subtitle": "修改 Adminium 中的任何文字,決定使用者可以選哪些語言,並加入你自己的語言。",
381
+ "warning": "錯誤訊息與登入文字同樣可以編輯。出狀況時使用者讀到的正是這些內容,請謹慎修改。",
382
+ "editor": {
383
+ "heading": "編輯翻譯"
384
+ },
385
+ "localeLabel": "語言",
386
+ "groupLabel": "區域",
387
+ "allAreas": "所有區域",
388
+ "stateLabel": "顯示",
389
+ "state": {
390
+ "all": "全部",
391
+ "overridden": "僅已自訂",
392
+ "untranslated": "僅未翻譯",
393
+ "stale": "之後英文有變更"
394
+ },
395
+ "searchLabel": "搜尋",
396
+ "searchPlaceholder": "鍵名或英文原文",
397
+ "loading": "正在載入文字…",
398
+ "noMatches": "沒有符合這些篩選條件的文字。",
399
+ "count": "{total, plural, other {# 則文字}}",
1149
400
  "badge": {
1150
- "pk": "PK",
1151
- "fk": "FK",
1152
- "unique": "UNIQUE",
1153
- "pii": "PII",
1154
- "masked": "已遮罩"
1155
- },
1156
- "unavailableTitle": "結構描述重新對應編輯器無法使用"
401
+ "custom": "已自訂",
402
+ "stale": "英文已變更",
403
+ "a11y": "無障礙名稱"
404
+ },
405
+ "sourceLabel": "英文原文",
406
+ "valueLabel": "翻譯",
407
+ "save": "儲存",
408
+ "saved": "翻譯已儲存",
409
+ "resetAction": "還原為內建文字",
410
+ "reset": "已還原為內建文字",
411
+ "locales": {
412
+ "heading": "可用語言",
413
+ "help": "關閉某個語言後,它會從所有語言選單中消失。已經在使用的人會繼續沿用,直到自己改選其他語言。"
414
+ },
415
+ "locale": {
416
+ "builtin": "內建",
417
+ "custom": "自訂",
418
+ "overrides": "{count, plural, =0 {尚無自訂文字} other {# 則自訂文字}}",
419
+ "enable": "開啟",
420
+ "disable": "關閉",
421
+ "delete": "刪除",
422
+ "deleted": "已移除語言",
423
+ "deletedDetail": "{users, plural, other {# 位使用者}}已改回工作區預設語言;已刪除 {strings, plural, other {# 則翻譯}}。",
424
+ "deleteFailed": "無法移除該語言",
425
+ "add": "新增語言",
426
+ "added": "已新增語言",
427
+ "create": "確認新增",
428
+ "id": "語言代碼",
429
+ "intlTag": "格式規則參照",
430
+ "native": "該語言中的名稱",
431
+ "english": "英文名稱",
432
+ "dir": "文字方向",
433
+ "ltr": "由左至右",
434
+ "rtl": "由右至左",
435
+ "font": "文字系統",
436
+ "latin": "拉丁文",
437
+ "arabic": "阿拉伯文",
438
+ "cjk": "中文 / 日文 / 韓文",
439
+ "intlHelp": "格式規則決定數字、日期與複數的呈現方式。請挑選最接近且已具備這些規則的語言——它不必和你的語言代碼一致。"
440
+ }
1157
441
  }
1158
442
  },
1159
443
  "onboarding": {
@@ -2253,166 +1537,6 @@
2253
1537
  "toLight": "淺色模式",
2254
1538
  "toDark": "深色模式"
2255
1539
  },
2256
- "studioPages": {
2257
- "title": "頁面",
2258
- "subtitle": "新增、編輯與整理應用程式的頁面,以及它們在側邊欄中的排序。",
2259
- "createButton": "新增頁面",
2260
- "loadFailed": {
2261
- "title": "無法載入頁面",
2262
- "body": "管理頁面需要「管理頁面」權限。請聯絡管理員將該權限授予您的其中一個角色。"
2263
- },
2264
- "tab": {
2265
- "pages": "所有頁面",
2266
- "sidebar": "側邊欄排序"
2267
- },
2268
- "list": {
2269
- "title": "頁面",
2270
- "count": "{count, plural, other {# 個頁面}}"
2271
- },
2272
- "empty": {
2273
- "title": "尚無頁面",
2274
- "body": "連線資料庫即可自動產生頁面,也可以手動建立一個。"
2275
- },
2276
- "status": {
2277
- "live": "已啟用",
2278
- "hidden": "已隱藏"
2279
- },
2280
- "origin": {
2281
- "generated": "自動產生",
2282
- "manifest": "外掛",
2283
- "llm": "助理",
2284
- "system": "系統",
2285
- "user": "自訂"
2286
- },
2287
- "row": {
2288
- "menu": "{title} 的操作"
2289
- },
2290
- "action": {
2291
- "edit": "編輯頁面",
2292
- "duplicate": "建立複本",
2293
- "hide": "在側邊欄中隱藏",
2294
- "show": "在側邊欄中顯示",
2295
- "delete": "刪除頁面"
2296
- },
2297
- "create": {
2298
- "title": "新增頁面",
2299
- "failed": "無法建立頁面",
2300
- "submit": "建立頁面",
2301
- "subtitle": "選擇此頁面顯示什麼以及外觀如何。預覽會跟隨您的選擇。"
2302
- },
2303
- "duplicate": {
2304
- "title": "建立頁面複本",
2305
- "failed": "無法建立複本",
2306
- "submit": "建立複本"
2307
- },
2308
- "delete": {
2309
- "title": "確定要刪除此頁面嗎?",
2310
- "body": "此操作無法復原。此頁面上所有已儲存的檢視與個人版面配置將對所有人刪除。",
2311
- "bodyGenerated": "此頁面由結構描述產生,下次重新產生時會再次出現。已儲存的檢視與個人版面配置將對所有人刪除。",
2312
- "prompt": "輸入 {slug} 以確認",
2313
- "confirm": "刪除頁面"
2314
- },
2315
- "field": {
2316
- "title": "標題",
2317
- "titleHint": "顯示在側邊欄與頁面標題列中。",
2318
- "slug": "頁面網址",
2319
- "slugHint": "僅限小寫字母、數字與連字號。只需填寫最後一段,其餘部分會自動補上。",
2320
- "slugTaken": "已有其他頁面使用此網址。",
2321
- "slugWarning": "變更網址會使指向此頁面的現有連結與書籤失效。",
2322
- "template": "範本",
2323
- "templateHint": "決定頁面可以承載哪些內容,之後可以變更。",
2324
- "group": "側邊欄群組",
2325
- "groupHint": "頁面出現在側邊欄的哪個區塊。",
2326
- "icon": "圖示",
2327
- "iconHint": "顯示在側邊欄中頁面名稱的旁邊。",
2328
- "visible": "在側邊欄中顯示",
2329
- "visibleHint": "隱藏的頁面仍可透過網址存取,只要對方有連結。",
2330
- "table": "資料表",
2331
- "tableCreateHint": "此頁面讀取的資料表。現在選擇即可直接使用;留空則可稍後再繫結。",
2332
- "tableNone": "未繫結",
2333
- "tableNeedsConnection": "請先選擇資料來源。",
2334
- "connection": "資料來源",
2335
- "connectionNone": "無",
2336
- "iconPick": "選擇頁面圖示",
2337
- "padding": "頁面內距"
2338
- },
2339
- "editor": {
2340
- "title": "編輯頁面",
2341
- "save": "儲存變更",
2342
- "saveFailed": "無法儲存變更",
2343
- "openPage": "開啟頁面",
2344
- "generated": {
2345
- "title": "此頁面依您的結構描述產生",
2346
- "body": "重新產生時會保留您的修改:頁面會標記為已編輯並原樣保留。但刪除只在下次產生前有效,屆時頁面會重新建立。"
2347
- },
2348
- "contentUnavailable": "無法載入頁面內容",
2349
- "contentUnavailableBody": "上方的設定仍可儲存。",
2350
- "contentInvalid": "無法讀取此頁面的設定",
2351
- "contentInvalidBody": "設定由較新的版本寫入,或已損毀。請重新產生或刪除此頁面。",
2352
- "data": "資料",
2353
- "schemaFailed": "無法列出資料表",
2354
- "schemaFailedBody": "此連線可能尚未分析。請在「工作室 → 資料連線」中執行結構分析。",
2355
- "notBindable": "此範本不繫結單一資料表",
2356
- "notBindableBody": "它的內容由小工具逐一組成。開啟頁面並點選「編輯」即可加入。",
2357
- "recompose": "此頁面將重新建立",
2358
- "recomposeBody": "儲存後會依上方的範本與資料表用全新版面配置取代頁面內容。此頁面上的欄位調整與小工具變更將會遺失。",
2359
- "missing": "此頁面已不存在",
2360
- "missingBody": "它可能已被刪除,或被某次重新產生移除。",
2361
- "details": "詳細資訊",
2362
- "itemsPending": "請先儲存上方的變更——頁面內容將依新的範本與資料表重建。",
2363
- "columns": "欄位",
2364
- "appearance": "外觀"
2365
- },
2366
- "sidebar": {
2367
- "help": "在群組內重新排序頁面,或將頁面移至其他群組。變更會對所有人生效。",
2368
- "discard": "捨棄",
2369
- "save": "儲存排序",
2370
- "saveFailed": "無法儲存新的排序",
2371
- "emptyGroup": "此群組中沒有頁面。",
2372
- "moveUp": "將 {title} 上移",
2373
- "moveDown": "將 {title} 下移",
2374
- "moveTo": "將 {title} 移至其他群組",
2375
- "ungrouped": {
2376
- "title": "有些頁面不屬於任何側邊欄群組",
2377
- "body": "這些頁面可透過網址存取,但不會出現在側邊欄中。請逐一開啟並選擇群組。"
2378
- }
2379
- },
2380
- "columns": {
2381
- "help": "重新排序欄位、重新命名欄位標題,並選擇哪些欄位顯示在表格中。",
2382
- "discard": "捨棄",
2383
- "save": "儲存欄位",
2384
- "saveFailed": "無法儲存欄位",
2385
- "pk": "主鍵",
2386
- "pii": "個人資料",
2387
- "header": "{name} 的欄位標題",
2388
- "shown": "顯示",
2389
- "toggle": "在表格中顯示 {name}",
2390
- "moveUp": "將 {name} 上移",
2391
- "moveDown": "將 {name} 下移",
2392
- "remove": "移除 {name}",
2393
- "none": {
2394
- "title": "此頁面尚無欄位",
2395
- "body": "產生頁面時會從資料表讀取欄位。請將此頁面繫結至資料表後重新產生。"
2396
- }
2397
- },
2398
- "icon": {
2399
- "none": "選擇圖示",
2400
- "search": "搜尋圖示",
2401
- "noMatches": "沒有圖示符合此搜尋。"
2402
- },
2403
- "preview": {
2404
- "untitled": "未命名頁面",
2405
- "note": "這是版面示意圖,不是您的資料。儲存後真實頁面才會填入內容。"
2406
- },
2407
- "padding": {
2408
- "default": "此範本的預設值",
2409
- "none": "無",
2410
- "standard": "標準 (28 × 24)",
2411
- "custom": "自訂…",
2412
- "x": "左右 (px)",
2413
- "y": "上下 (px)"
2414
- }
2415
- },
2416
1540
  "audit": {
2417
1541
  "action": {
2418
1542
  "view": "檢視"
@@ -2544,6 +1668,7 @@
2544
1668
  "exportsManage": "管理所有人的匯出",
2545
1669
  "importsManage": "管理所有人的匯入",
2546
1670
  "jobsManage": "啟動與取消背景工作",
1671
+ "manifestsManage": "安裝並連接外掛",
2547
1672
  "jobsRead": "檢視所有背景工作",
2548
1673
  "llmRun": "執行 AI 協助",
2549
1674
  "pagesManage": "建立與整理頁面",
@@ -2565,7 +1690,7 @@
2565
1690
  },
2566
1691
  "security": {
2567
1692
  "password": {
2568
- "changedBody": "下次登入時請使用新密碼。其他裝置上的工作階段不受影響——若你希望它們登出,請在下方撤銷。",
1693
+ "changedBody": "下次登入時請使用新密碼。其他裝置仍保持登入——若你希望它們登出,請結束這些工作階段。",
2569
1694
  "changed": "密碼已變更",
2570
1695
  "confirm": "確認新密碼",
2571
1696
  "current": "目前的密碼",