@adminiumjs/i18n 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/LICENSE +661 -0
  2. package/dist/create-i18n.d.ts +48 -0
  3. package/dist/create-i18n.d.ts.map +1 -0
  4. package/dist/create-i18n.js +98 -0
  5. package/dist/create-i18n.js.map +1 -0
  6. package/dist/format/index.d.ts +70 -0
  7. package/dist/format/index.d.ts.map +1 -0
  8. package/dist/format/index.js +217 -0
  9. package/dist/format/index.js.map +1 -0
  10. package/dist/icu-format.d.ts +17 -0
  11. package/dist/icu-format.d.ts.map +1 -0
  12. package/dist/icu-format.js +52 -0
  13. package/dist/icu-format.js.map +1 -0
  14. package/dist/index.d.ts +16 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +12 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/locales.d.ts +99 -0
  19. package/dist/locales.d.ts.map +1 -0
  20. package/dist/locales.js +55 -0
  21. package/dist/locales.js.map +1 -0
  22. package/dist/react.d.ts +26 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +61 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/resources/ar-eg/common.d.ts +1964 -0
  27. package/dist/resources/ar-eg/common.d.ts.map +1 -0
  28. package/dist/resources/ar-eg/common.js +1963 -0
  29. package/dist/resources/ar-eg/common.js.map +1 -0
  30. package/dist/resources/ar-eg/errors.d.ts +45 -0
  31. package/dist/resources/ar-eg/errors.d.ts.map +1 -0
  32. package/dist/resources/ar-eg/errors.js +44 -0
  33. package/dist/resources/ar-eg/errors.js.map +1 -0
  34. package/dist/resources/ar-eg/generated.d.ts +20 -0
  35. package/dist/resources/ar-eg/generated.d.ts.map +1 -0
  36. package/dist/resources/ar-eg/generated.js +19 -0
  37. package/dist/resources/ar-eg/generated.js.map +1 -0
  38. package/dist/resources/ar-eg/studio.d.ts +18 -0
  39. package/dist/resources/ar-eg/studio.d.ts.map +1 -0
  40. package/dist/resources/ar-eg/studio.js +17 -0
  41. package/dist/resources/ar-eg/studio.js.map +1 -0
  42. package/dist/resources/ar-eg/ui.d.ts +996 -0
  43. package/dist/resources/ar-eg/ui.d.ts.map +1 -0
  44. package/dist/resources/ar-eg/ui.js +995 -0
  45. package/dist/resources/ar-eg/ui.js.map +1 -0
  46. package/dist/resources/cs-cz/common.d.ts +1964 -0
  47. package/dist/resources/cs-cz/common.d.ts.map +1 -0
  48. package/dist/resources/cs-cz/common.js +1963 -0
  49. package/dist/resources/cs-cz/common.js.map +1 -0
  50. package/dist/resources/cs-cz/errors.d.ts +45 -0
  51. package/dist/resources/cs-cz/errors.d.ts.map +1 -0
  52. package/dist/resources/cs-cz/errors.js +44 -0
  53. package/dist/resources/cs-cz/errors.js.map +1 -0
  54. package/dist/resources/cs-cz/generated.d.ts +20 -0
  55. package/dist/resources/cs-cz/generated.d.ts.map +1 -0
  56. package/dist/resources/cs-cz/generated.js +19 -0
  57. package/dist/resources/cs-cz/generated.js.map +1 -0
  58. package/dist/resources/cs-cz/studio.d.ts +18 -0
  59. package/dist/resources/cs-cz/studio.d.ts.map +1 -0
  60. package/dist/resources/cs-cz/studio.js +17 -0
  61. package/dist/resources/cs-cz/studio.js.map +1 -0
  62. package/dist/resources/cs-cz/ui.d.ts +996 -0
  63. package/dist/resources/cs-cz/ui.d.ts.map +1 -0
  64. package/dist/resources/cs-cz/ui.js +995 -0
  65. package/dist/resources/cs-cz/ui.js.map +1 -0
  66. package/dist/resources/da-dk/common.d.ts +1964 -0
  67. package/dist/resources/da-dk/common.d.ts.map +1 -0
  68. package/dist/resources/da-dk/common.js +1963 -0
  69. package/dist/resources/da-dk/common.js.map +1 -0
  70. package/dist/resources/da-dk/errors.d.ts +45 -0
  71. package/dist/resources/da-dk/errors.d.ts.map +1 -0
  72. package/dist/resources/da-dk/errors.js +44 -0
  73. package/dist/resources/da-dk/errors.js.map +1 -0
  74. package/dist/resources/da-dk/generated.d.ts +20 -0
  75. package/dist/resources/da-dk/generated.d.ts.map +1 -0
  76. package/dist/resources/da-dk/generated.js +19 -0
  77. package/dist/resources/da-dk/generated.js.map +1 -0
  78. package/dist/resources/da-dk/studio.d.ts +18 -0
  79. package/dist/resources/da-dk/studio.d.ts.map +1 -0
  80. package/dist/resources/da-dk/studio.js +17 -0
  81. package/dist/resources/da-dk/studio.js.map +1 -0
  82. package/dist/resources/da-dk/ui.d.ts +996 -0
  83. package/dist/resources/da-dk/ui.d.ts.map +1 -0
  84. package/dist/resources/da-dk/ui.js +995 -0
  85. package/dist/resources/da-dk/ui.js.map +1 -0
  86. package/dist/resources/de-de/common.d.ts +1964 -0
  87. package/dist/resources/de-de/common.d.ts.map +1 -0
  88. package/dist/resources/de-de/common.js +1963 -0
  89. package/dist/resources/de-de/common.js.map +1 -0
  90. package/dist/resources/de-de/errors.d.ts +45 -0
  91. package/dist/resources/de-de/errors.d.ts.map +1 -0
  92. package/dist/resources/de-de/errors.js +44 -0
  93. package/dist/resources/de-de/errors.js.map +1 -0
  94. package/dist/resources/de-de/generated.d.ts +20 -0
  95. package/dist/resources/de-de/generated.d.ts.map +1 -0
  96. package/dist/resources/de-de/generated.js +19 -0
  97. package/dist/resources/de-de/generated.js.map +1 -0
  98. package/dist/resources/de-de/studio.d.ts +18 -0
  99. package/dist/resources/de-de/studio.d.ts.map +1 -0
  100. package/dist/resources/de-de/studio.js +17 -0
  101. package/dist/resources/de-de/studio.js.map +1 -0
  102. package/dist/resources/de-de/ui.d.ts +996 -0
  103. package/dist/resources/de-de/ui.d.ts.map +1 -0
  104. package/dist/resources/de-de/ui.js +995 -0
  105. package/dist/resources/de-de/ui.js.map +1 -0
  106. package/dist/resources/en-us/common.d.ts +1964 -0
  107. package/dist/resources/en-us/common.d.ts.map +1 -0
  108. package/dist/resources/en-us/common.js +1963 -0
  109. package/dist/resources/en-us/common.js.map +1 -0
  110. package/dist/resources/en-us/errors.d.ts +45 -0
  111. package/dist/resources/en-us/errors.d.ts.map +1 -0
  112. package/dist/resources/en-us/errors.js +44 -0
  113. package/dist/resources/en-us/errors.js.map +1 -0
  114. package/dist/resources/en-us/generated.d.ts +20 -0
  115. package/dist/resources/en-us/generated.d.ts.map +1 -0
  116. package/dist/resources/en-us/generated.js +19 -0
  117. package/dist/resources/en-us/generated.js.map +1 -0
  118. package/dist/resources/en-us/studio.d.ts +18 -0
  119. package/dist/resources/en-us/studio.d.ts.map +1 -0
  120. package/dist/resources/en-us/studio.js +17 -0
  121. package/dist/resources/en-us/studio.js.map +1 -0
  122. package/dist/resources/en-us/ui.d.ts +996 -0
  123. package/dist/resources/en-us/ui.d.ts.map +1 -0
  124. package/dist/resources/en-us/ui.js +995 -0
  125. package/dist/resources/en-us/ui.js.map +1 -0
  126. package/dist/resources/fr-fr/common.d.ts +1964 -0
  127. package/dist/resources/fr-fr/common.d.ts.map +1 -0
  128. package/dist/resources/fr-fr/common.js +1963 -0
  129. package/dist/resources/fr-fr/common.js.map +1 -0
  130. package/dist/resources/fr-fr/errors.d.ts +45 -0
  131. package/dist/resources/fr-fr/errors.d.ts.map +1 -0
  132. package/dist/resources/fr-fr/errors.js +44 -0
  133. package/dist/resources/fr-fr/errors.js.map +1 -0
  134. package/dist/resources/fr-fr/generated.d.ts +20 -0
  135. package/dist/resources/fr-fr/generated.d.ts.map +1 -0
  136. package/dist/resources/fr-fr/generated.js +19 -0
  137. package/dist/resources/fr-fr/generated.js.map +1 -0
  138. package/dist/resources/fr-fr/studio.d.ts +18 -0
  139. package/dist/resources/fr-fr/studio.d.ts.map +1 -0
  140. package/dist/resources/fr-fr/studio.js +17 -0
  141. package/dist/resources/fr-fr/studio.js.map +1 -0
  142. package/dist/resources/fr-fr/ui.d.ts +996 -0
  143. package/dist/resources/fr-fr/ui.d.ts.map +1 -0
  144. package/dist/resources/fr-fr/ui.js +995 -0
  145. package/dist/resources/fr-fr/ui.js.map +1 -0
  146. package/dist/resources/index.d.ts +8 -0
  147. package/dist/resources/index.d.ts.map +1 -0
  148. package/dist/resources/index.js +21 -0
  149. package/dist/resources/index.js.map +1 -0
  150. package/dist/resources/lazy.d.ts +20 -0
  151. package/dist/resources/lazy.d.ts.map +1 -0
  152. package/dist/resources/lazy.js +49 -0
  153. package/dist/resources/lazy.js.map +1 -0
  154. package/dist/resources/zh-cn/common.d.ts +1964 -0
  155. package/dist/resources/zh-cn/common.d.ts.map +1 -0
  156. package/dist/resources/zh-cn/common.js +1963 -0
  157. package/dist/resources/zh-cn/common.js.map +1 -0
  158. package/dist/resources/zh-cn/errors.d.ts +45 -0
  159. package/dist/resources/zh-cn/errors.d.ts.map +1 -0
  160. package/dist/resources/zh-cn/errors.js +44 -0
  161. package/dist/resources/zh-cn/errors.js.map +1 -0
  162. package/dist/resources/zh-cn/generated.d.ts +20 -0
  163. package/dist/resources/zh-cn/generated.d.ts.map +1 -0
  164. package/dist/resources/zh-cn/generated.js +19 -0
  165. package/dist/resources/zh-cn/generated.js.map +1 -0
  166. package/dist/resources/zh-cn/studio.d.ts +18 -0
  167. package/dist/resources/zh-cn/studio.d.ts.map +1 -0
  168. package/dist/resources/zh-cn/studio.js +17 -0
  169. package/dist/resources/zh-cn/studio.js.map +1 -0
  170. package/dist/resources/zh-cn/ui.d.ts +996 -0
  171. package/dist/resources/zh-cn/ui.d.ts.map +1 -0
  172. package/dist/resources/zh-cn/ui.js +995 -0
  173. package/dist/resources/zh-cn/ui.js.map +1 -0
  174. package/dist/resources/zh-tw/common.d.ts +1964 -0
  175. package/dist/resources/zh-tw/common.d.ts.map +1 -0
  176. package/dist/resources/zh-tw/common.js +1963 -0
  177. package/dist/resources/zh-tw/common.js.map +1 -0
  178. package/dist/resources/zh-tw/errors.d.ts +45 -0
  179. package/dist/resources/zh-tw/errors.d.ts.map +1 -0
  180. package/dist/resources/zh-tw/errors.js +44 -0
  181. package/dist/resources/zh-tw/errors.js.map +1 -0
  182. package/dist/resources/zh-tw/generated.d.ts +20 -0
  183. package/dist/resources/zh-tw/generated.d.ts.map +1 -0
  184. package/dist/resources/zh-tw/generated.js +19 -0
  185. package/dist/resources/zh-tw/generated.js.map +1 -0
  186. package/dist/resources/zh-tw/studio.d.ts +18 -0
  187. package/dist/resources/zh-tw/studio.d.ts.map +1 -0
  188. package/dist/resources/zh-tw/studio.js +17 -0
  189. package/dist/resources/zh-tw/studio.js.map +1 -0
  190. package/dist/resources/zh-tw/ui.d.ts +996 -0
  191. package/dist/resources/zh-tw/ui.d.ts.map +1 -0
  192. package/dist/resources/zh-tw/ui.js +995 -0
  193. package/dist/resources/zh-tw/ui.js.map +1 -0
  194. package/locales/ar-EG/common.json +1954 -0
  195. package/locales/ar-EG/errors.json +35 -0
  196. package/locales/ar-EG/generated.json +10 -0
  197. package/locales/ar-EG/studio.json +8 -0
  198. package/locales/ar-EG/ui.json +986 -0
  199. package/locales/cs-CZ/common.json +1954 -0
  200. package/locales/cs-CZ/errors.json +35 -0
  201. package/locales/cs-CZ/generated.json +10 -0
  202. package/locales/cs-CZ/studio.json +8 -0
  203. package/locales/cs-CZ/ui.json +986 -0
  204. package/locales/da-DK/common.json +1954 -0
  205. package/locales/da-DK/errors.json +35 -0
  206. package/locales/da-DK/generated.json +10 -0
  207. package/locales/da-DK/studio.json +8 -0
  208. package/locales/da-DK/ui.json +986 -0
  209. package/locales/de-DE/common.json +1954 -0
  210. package/locales/de-DE/errors.json +35 -0
  211. package/locales/de-DE/generated.json +10 -0
  212. package/locales/de-DE/studio.json +8 -0
  213. package/locales/de-DE/ui.json +986 -0
  214. package/locales/en-US/common.json +1954 -0
  215. package/locales/en-US/errors.json +35 -0
  216. package/locales/en-US/generated.json +10 -0
  217. package/locales/en-US/studio.json +8 -0
  218. package/locales/en-US/ui.json +986 -0
  219. package/locales/fr-FR/common.json +1954 -0
  220. package/locales/fr-FR/errors.json +35 -0
  221. package/locales/fr-FR/generated.json +10 -0
  222. package/locales/fr-FR/studio.json +8 -0
  223. package/locales/fr-FR/ui.json +986 -0
  224. package/locales/zh-CN/common.json +1954 -0
  225. package/locales/zh-CN/errors.json +35 -0
  226. package/locales/zh-CN/generated.json +10 -0
  227. package/locales/zh-CN/studio.json +8 -0
  228. package/locales/zh-CN/ui.json +986 -0
  229. package/locales/zh-TW/common.json +1954 -0
  230. package/locales/zh-TW/errors.json +35 -0
  231. package/locales/zh-TW/generated.json +10 -0
  232. package/locales/zh-TW/studio.json +8 -0
  233. package/locales/zh-TW/ui.json +986 -0
  234. package/package.json +51 -0
@@ -0,0 +1,1964 @@
1
+ /**
2
+ * GENERATED MIRROR of ../../../locales/zh-CN/common.json — do not edit by hand.
3
+ * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);
4
+ * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits
5
+ * the other locales) without JSON import attributes (browser + NodeNext safe).
6
+ * Parity is enforced by src/resources/parity.test.ts. Regenerate with
7
+ * scripts/gen-resources.mjs.
8
+ */
9
+ declare const _default: {
10
+ readonly common: {
11
+ readonly dismiss: "关闭";
12
+ readonly notifications: "通知";
13
+ readonly retry: "重试";
14
+ readonly undo: "撤销";
15
+ readonly close: "关闭";
16
+ readonly cancel: "取消";
17
+ readonly back: "返回";
18
+ readonly loading: "加载中";
19
+ readonly clearSearch: "清除搜索";
20
+ readonly clear: "清除";
21
+ readonly save: "保存";
22
+ };
23
+ readonly auth: {
24
+ readonly headline: "把任何数据库变成仪表盘。";
25
+ readonly trust: "AGPL 核心 · 自托管 · 数据始终归你所有";
26
+ readonly signIn: {
27
+ readonly title: "欢迎回来";
28
+ readonly subtitle: "登录你的 Adminium 工作区。";
29
+ readonly email: "邮箱";
30
+ readonly emailInvalid: "请输入有效的邮箱地址。";
31
+ readonly password: "密码";
32
+ readonly passwordRequired: "请输入密码。";
33
+ readonly showPassword: "显示密码";
34
+ readonly hidePassword: "隐藏密码";
35
+ readonly remember: "保持登录状态";
36
+ readonly forgot: "忘记了?";
37
+ readonly submit: "登录";
38
+ readonly invalid: "邮箱或密码不正确。";
39
+ readonly rateLimited: "尝试次数过多——请一分钟后再试。";
40
+ readonly failed: "登录失败。请检查网络连接后重试。";
41
+ };
42
+ readonly forgot: {
43
+ readonly title: "重置密码";
44
+ readonly email: "邮箱";
45
+ readonly emailInvalid: "请输入有效的邮箱地址。";
46
+ readonly submit: "发送重置链接";
47
+ readonly sentTitle: "请查收邮件";
48
+ readonly resend: "再发一次";
49
+ readonly back: "返回登录";
50
+ readonly done: "返回登录";
51
+ readonly rateLimited: "请求过多——请稍后再试。";
52
+ readonly failed: "出错了。请重试。";
53
+ readonly smtpUnconfigured: "此 Adminium 未配置邮件服务器,无法发送重置链接。请让管理员为你重置密码。";
54
+ };
55
+ readonly reset: {
56
+ readonly title: "设置新密码";
57
+ readonly subtitle: "至少 8 个字符。";
58
+ readonly password: "新密码";
59
+ readonly confirm: "确认密码";
60
+ readonly showPassword: "显示密码";
61
+ readonly hidePassword: "隐藏密码";
62
+ readonly strength: "密码强度";
63
+ readonly weak: "弱";
64
+ readonly fair: "一般";
65
+ readonly good: "良好";
66
+ readonly strong: "强";
67
+ readonly tooShort: "请至少使用 8 个字符。";
68
+ readonly submit: "重置密码";
69
+ readonly failed: "重置失败。请重试。";
70
+ };
71
+ readonly otp: {
72
+ readonly title: "双重验证";
73
+ readonly subtitle: "请输入验证器应用中的 6 位数字验证码。";
74
+ readonly code: "一次性验证码";
75
+ readonly recoveryCode: "恢复代码";
76
+ readonly useRecovery: "设备丢失?使用恢复代码";
77
+ readonly useAuthenticator: "改用验证器应用";
78
+ readonly submit: "验证";
79
+ readonly invalid: "验证码不正确。请重试。";
80
+ readonly failed: "验证失败。请检查网络连接后重试。";
81
+ };
82
+ };
83
+ readonly nav: {
84
+ readonly home: "首页";
85
+ readonly primary: "主要";
86
+ readonly account: "账户";
87
+ readonly signOut: "退出登录";
88
+ readonly empty: "连接数据库后,页面会显示在这里。";
89
+ readonly connection: {
90
+ readonly shared: "共享";
91
+ readonly unnamed: "连接";
92
+ };
93
+ readonly imports: "导入数据";
94
+ readonly exports: "数据导出";
95
+ readonly emailTemplates: "邮件模板";
96
+ readonly notificationSettings: "通知设置";
97
+ readonly scheduledReports: "定时报告";
98
+ readonly group: {
99
+ readonly workspace: "工作区";
100
+ readonly library: "资源库";
101
+ readonly planning: "规划";
102
+ readonly people: "人员";
103
+ readonly account: "账户";
104
+ };
105
+ };
106
+ readonly topbar: {
107
+ readonly search: "搜索…";
108
+ readonly notifications: "通知";
109
+ readonly notificationsLoading: "正在加载通知";
110
+ readonly notificationsError: "无法加载通知。";
111
+ readonly notificationsEmpty: "没有新通知。";
112
+ readonly theme: "切换浅色 / 深色";
113
+ readonly userMenu: "账户菜单";
114
+ readonly profile: "个人资料";
115
+ readonly preferences: "偏好设置";
116
+ readonly signOut: "退出登录";
117
+ };
118
+ readonly palette: {
119
+ readonly dialog: "命令面板";
120
+ readonly placeholder: "输入命令或搜索…";
121
+ readonly navigate: "导航";
122
+ readonly actions: "操作";
123
+ readonly askAi: "询问 AI";
124
+ readonly shortcuts: "键盘快捷键";
125
+ readonly signOut: "退出登录";
126
+ readonly themeDark: "切换到深色主题";
127
+ readonly themeLight: "切换到浅色主题";
128
+ readonly footerNavigate: "导航";
129
+ readonly footerOpen: "选择";
130
+ readonly footerClose: "关闭";
131
+ };
132
+ readonly shortcuts: {
133
+ readonly title: "键盘快捷键";
134
+ readonly subtitle: "在 Adminium 中更高效地工作";
135
+ readonly close: "关闭";
136
+ readonly dismiss: "关闭或取消";
137
+ readonly palette: "打开命令面板";
138
+ readonly panel: "显示快捷键面板";
139
+ readonly search: "聚焦搜索框";
140
+ readonly sidebar: "切换侧边栏";
141
+ readonly theme: "切换浅色 / 深色";
142
+ readonly then: "然后";
143
+ readonly footerPre: "随时按";
144
+ readonly footerPost: "即可打开此面板。";
145
+ };
146
+ readonly states: {
147
+ readonly checked: "8 秒前检查过";
148
+ readonly diagnostics: "诊断";
149
+ };
150
+ readonly notFound: {
151
+ readonly title: "页面不见了";
152
+ readonly errorLine: "错误 404";
153
+ readonly searchPlaceholder: "搜索页面…";
154
+ readonly matches: "匹配的页面";
155
+ readonly popular: "常用页面";
156
+ readonly goBack: "返回";
157
+ readonly backToDashboard: "回到仪表盘";
158
+ };
159
+ readonly page: {
160
+ readonly invalid: {
161
+ readonly title: "此页面的配置无效";
162
+ readonly body: "存储的页面文档未通过校验,无法渲染。";
163
+ };
164
+ readonly renderError: {
165
+ readonly title: "此页面渲染失败";
166
+ };
167
+ readonly tooNew: {
168
+ readonly title: "此页面需要更新版本的 Adminium";
169
+ };
170
+ readonly unknownTemplate: {
171
+ readonly title: "未知的页面模板";
172
+ };
173
+ };
174
+ readonly mutation: {
175
+ readonly created: "记录已创建";
176
+ readonly updated: "记录已更新";
177
+ readonly deleted: "记录已删除";
178
+ };
179
+ readonly undo: {
180
+ readonly done: "更改已撤销";
181
+ readonly failed: "无法撤销此更改";
182
+ };
183
+ readonly prefs: {
184
+ readonly theme: {
185
+ readonly label: "主题";
186
+ readonly light: "浅色";
187
+ readonly dark: "深色";
188
+ readonly system: "跟随系统";
189
+ };
190
+ readonly accent: {
191
+ readonly label: "强调色";
192
+ readonly indigo: "靛蓝";
193
+ readonly blue: "蓝色";
194
+ readonly teal: "青色";
195
+ readonly violet: "紫色";
196
+ readonly rose: "玫红";
197
+ readonly red: "红色";
198
+ readonly orange: "橙色";
199
+ readonly black: "黑色";
200
+ };
201
+ readonly density: {
202
+ readonly label: "密度";
203
+ readonly comfortable: "舒适";
204
+ readonly compact: "紧凑";
205
+ };
206
+ readonly locale: {
207
+ readonly label: "语言";
208
+ readonly directionNote: "文字方向:从右到左(由语言自动设定)";
209
+ };
210
+ };
211
+ readonly account: {
212
+ readonly title: "账户";
213
+ readonly subtitle: "当前会话的身份信息。显示偏好和通知设置请在各自的专属页面中管理。";
214
+ readonly preferencesLink: "偏好设置";
215
+ readonly notificationsLink: "通知设置";
216
+ readonly name: "姓名";
217
+ readonly email: "邮箱";
218
+ readonly roles: "角色";
219
+ readonly twoFactor: "双重验证";
220
+ readonly on: "已启用";
221
+ readonly off: "未启用";
222
+ readonly preferences: {
223
+ readonly title: "偏好设置";
224
+ readonly subtitle: "Adminium 在你这里的外观与语言——在这台设备和你登录的每台设备上生效。";
225
+ readonly workspaceDefault: "工作区默认";
226
+ readonly personal: "个人";
227
+ readonly usingDefault: "正在使用工作区默认值({value})";
228
+ readonly reset: "恢复为工作区默认值";
229
+ readonly resetFailed: "无法重置此偏好。请重试。";
230
+ readonly appliesInstantly: "更改会立即生效,并保存到你的个人资料。";
231
+ };
232
+ };
233
+ readonly settings: {
234
+ readonly defaults: {
235
+ readonly title: "全局默认值";
236
+ readonly subtitle: "适用于整个工作区的外观与语言默认值。";
237
+ readonly explainer: "这些默认值适用于所有未自行覆盖的用户。任何人都可以在「个人资料 → 偏好设置」中设置自己的偏好——对该用户而言,个人偏好始终优先。";
238
+ readonly appearanceHeading: "外观默认值";
239
+ readonly languageHeading: "语言与区域默认值";
240
+ readonly adoption: "共 {total, plural, other {# 位用户}},其中 {following, number} 位遵循此默认值。";
241
+ readonly weekStartNote: "每周起始日与数字格式跟随所选语言。";
242
+ readonly save: "保存默认值";
243
+ readonly saved: "工作区默认值已更新";
244
+ readonly saveFailed: "无法保存工作区默认值。请重试。";
245
+ readonly liveNote: "保存后更改会实时推送——遵循默认值的在线用户无需刷新即可看到。";
246
+ };
247
+ readonly notifications: {
248
+ readonly subtitle: "选择通知内容与方式";
249
+ readonly matrixLabel: "通知我";
250
+ readonly rowHeader: "事件";
251
+ readonly saving: "保存中…";
252
+ readonly saved: "已保存";
253
+ readonly unavailable: "暂不可用";
254
+ readonly loading: "正在加载偏好设置";
255
+ readonly errorTitle: "无法加载这些设置";
256
+ readonly emptyTitle: "暂无可配置项";
257
+ readonly emptyBody: "随着功能上线,通知事件将显示在这里。";
258
+ readonly saveFailed: "无法保存此更改。";
259
+ };
260
+ };
261
+ readonly studio: {
262
+ readonly source: {
263
+ readonly engine: {
264
+ readonly label: "数据库引擎";
265
+ readonly postgres: "PostgreSQL";
266
+ readonly mysql: "MySQL / MariaDB";
267
+ readonly sqlite: "SQLite";
268
+ };
269
+ readonly format: {
270
+ readonly label: "架构格式";
271
+ readonly helper: "除非自动检测出错,否则保持自动检测即可。";
272
+ readonly auto: "自动检测";
273
+ readonly sql: "SQL DDL / pg_dump";
274
+ readonly prisma: "Prisma 架构";
275
+ readonly drizzle: "Drizzle ORM";
276
+ readonly typeorm: "TypeORM 实体";
277
+ readonly sequelize: "Sequelize 模型";
278
+ readonly rails: "Rails schema.rb";
279
+ readonly django: "Django models.py";
280
+ readonly json: "Adminium JSON";
281
+ };
282
+ readonly sqlite: {
283
+ readonly file: "数据库文件路径";
284
+ readonly helper: "SQLite 是文件而非服务器——请填写运行 Adminium 的机器上的绝对路径。";
285
+ };
286
+ readonly file: {
287
+ readonly detectedAs: "检测到:{format}";
288
+ readonly moreWarnings: "另有 {count} 条警告——完整列表将在分析步骤中显示。";
289
+ readonly dropTitle: "将架构文件拖放到此处,或浏览选择";
290
+ readonly dropHint: "SQL DDL / pg_dump、Prisma、Drizzle、TypeORM、Sequelize、Rails schema.rb、Django 模型、Adminium JSON";
291
+ readonly pitch: "无需数据库连接——我们解析你的架构文件并构建相同的仪表板。";
292
+ readonly parsing: "正在读取上传的架构文件…";
293
+ readonly tables: "个表";
294
+ readonly columns: "列";
295
+ readonly warnings: "警告";
296
+ readonly errorTitle: "无法解析该文件";
297
+ readonly parseFailed: "我们无法解析该文件。如果自动检测判断有误,请明确选择格式后重试。";
298
+ readonly unsupported: "无法识别该格式——支持 SQL DDL、Prisma、Drizzle、TypeORM、Sequelize、Rails schema.rb、Django 模型和 Adminium JSON。请明确选择一种后重试。";
299
+ readonly requestFailed: "上传失败——请检查网络连接后重试。";
300
+ };
301
+ readonly title: "连接你的数据库";
302
+ readonly subtitle: "将 Adminium 指向一个数据库,我们会根据其架构生成管理仪表板。";
303
+ readonly name: "连接名称";
304
+ readonly namePlaceholder: "生产环境 Postgres";
305
+ readonly modeLabel: "来源输入方式";
306
+ readonly mode: {
307
+ readonly dsn: "连接字符串";
308
+ readonly fields: "逐项填写";
309
+ readonly file: "架构文件";
310
+ };
311
+ readonly dsn: {
312
+ readonly label: "连接字符串";
313
+ readonly helper: "postgres://user:password@host:5432/database——mysql:// 和 sqlite: 也可用。";
314
+ readonly incomplete: "请补全主机和数据库,例如 postgres://user@host:5432/db";
315
+ readonly invalidScheme: "无法识别的协议——应为 postgres://、mysql://、mariadb:// 或 sqlite:";
316
+ readonly quickFill: "快速填充:";
317
+ };
318
+ readonly fields: {
319
+ readonly host: "主机";
320
+ readonly port: "端口";
321
+ readonly database: "数据库";
322
+ readonly user: "用户";
323
+ readonly password: "密码";
324
+ readonly ssl: "SSL 模式";
325
+ readonly preview: "连接字符串预览:";
326
+ };
327
+ readonly readOnlyRole: {
328
+ readonly title: "使用只读角色";
329
+ readonly body: "Adminium 绝不会写入你的数据库——设置过程仅使用架构元数据。建议使用仅有 SELECT 权限的专用用户;Adminium 自己的表放在哪里,可在元数据存储步骤中决定。";
330
+ };
331
+ };
332
+ readonly capability: {
333
+ readonly mysqlApproxRows: "MySQL 的行数来自存储引擎估算(偏差可达 ±40%),以 ≈ 显示。";
334
+ readonly mysqlFkEnum: "MySQL 的外键/枚举元数据较弱:MyISAM 表不声明外键,枚举是按列的 enum(…) 类型,CHECK 约束需要 MySQL 8.0.16+ / MariaDB 10.2+。";
335
+ readonly sqliteCheckEnums: "SQLite 没有原生枚举类型——枚举由 CHECK (col IN (…)) 约束合成。";
336
+ readonly sqliteNoComments: "SQLite 不支持列注释——请在架构重映射编辑器中添加标签。";
337
+ readonly importNoRowCounts: "架构文件不包含行数——表格列表显示 — 而不是编造的数字。";
338
+ readonly importNoLiveHealth: "没有实时数据库连接——此来源无法进行健康检查和架构漂移检测。";
339
+ readonly rowsUnavailable: "架构文件没有实时数据库——在连接数据库之前行数未知。";
340
+ readonly rowsRunAnalyze: "尚无估算——请在数据库上运行 ANALYZE 以获取行数。";
341
+ readonly rowsNoEstimate: "引擎未报告此表的行数估算。";
342
+ readonly rowsApproximate: "存储引擎估算——在 InnoDB 上偏差可达 ±40%。";
343
+ };
344
+ readonly test: {
345
+ readonly log: {
346
+ readonly moreWarnings: "另有 {count} 条解析器警告";
347
+ readonly connecting: "正在建立安全连接…";
348
+ readonly connected: "已连接({latency} 毫秒)· 只读自省";
349
+ readonly connectFailed: "连接失败。";
350
+ readonly readingSchema: "正在读取架构:public";
351
+ readonly readingFile: "正在读取上传的架构文件…";
352
+ readonly parsingFile: "正在解析 {file}…";
353
+ readonly detected: "检测到 {tables} 个表 · {columns} 列";
354
+ readonly found: "共发现 {tables} 个表 · {columns} 列";
355
+ readonly mapping: "正在映射列类型 → 输入组件";
356
+ readonly relations: "正在检测关系…";
357
+ readonly piiScan: "正在扫描 PII 列…";
358
+ readonly piiDone: "PII 扫描完成——默认屏蔽 {count} 列";
359
+ readonly piiDoneUnknown: "PII 扫描完成";
360
+ readonly jobFailed: "自省失败。";
361
+ readonly networkFailed: "请求失败——请检查网络连接后重试。";
362
+ readonly ready: "就绪";
363
+ };
364
+ readonly title: "正在分析你的架构";
365
+ readonly subtitle: "正在自省表、列和关系。这需要几秒钟。";
366
+ readonly trust: "我们只读取你的架构和数据,不会做任何修改。";
367
+ readonly errorTitle: "连接失败";
368
+ readonly retry: "重试";
369
+ readonly logLabel: "自省日志";
370
+ readonly hint: {
371
+ readonly auth: "身份验证失败——请检查 DSN 中的用户名和密码。";
372
+ readonly hostUnreachable: "主机不可达——请检查主机名和端口,并确认数据库接受来自本机的连接(将我们的 IP 加入允许列表)。";
373
+ readonly metaPlacement: "该数据源无法承载 Adminium 的元数据表——请改用单独的元数据库继续。";
374
+ readonly permission: "该角色已连接,但缺少读取架构的权限——请为自省角色授予该架构的 USAGE 权限。";
375
+ readonly timeout: "数据库未及时响应——请检查网络路径和负载后重试。";
376
+ readonly tls: "TLS 协商失败——请尝试 sslmode=require,或上传服务器所需的 CA 证书。";
377
+ readonly unknown: "连接失败——请核对 DSN 后重试。";
378
+ };
379
+ };
380
+ readonly tables: {
381
+ readonly importNoCounts: "架构文件不包含行数——在连接实时数据库之前,该列显示 —。";
382
+ readonly title: "选择数据表";
383
+ readonly subtitle: "选择要包含的表。之后可随时更改。";
384
+ readonly search: "筛选表…";
385
+ readonly listLabel: "可包含的表";
386
+ readonly emptyFilter: "没有匹配筛选条件的表。";
387
+ readonly pii: "PII";
388
+ readonly highVolume: "高数据量";
389
+ readonly highVolumeNote: "超过 100,000 行的表默认不勾选——运维类表很少适合放进仪表板。";
390
+ readonly joinHidden: "{count} 个关联/系统表已预先隐藏——它们仍支撑多对多关系。";
391
+ };
392
+ readonly hub: {
393
+ readonly title: "数据连接";
394
+ readonly subtitle: "{total, plural, other {# 个连接中 {healthy, number} 个}}状态正常";
395
+ readonly connectNew: "新建连接";
396
+ readonly stats: {
397
+ readonly connections: "连接";
398
+ readonly healthy: "正常";
399
+ readonly tables: "已包含的表";
400
+ readonly pages: "已生成的页面";
401
+ };
402
+ readonly status: {
403
+ readonly connected: "已连接";
404
+ readonly error: "错误";
405
+ readonly unconfigured: "草稿";
406
+ readonly testing: "测试中…";
407
+ };
408
+ readonly card: {
409
+ readonly readOnly: "只读";
410
+ readonly tables: "表";
411
+ readonly pages: "页面";
412
+ readonly latency: "延迟";
413
+ readonly latencyMs: "{latency, number} 毫秒";
414
+ readonly lastIntrospected: "上次内省";
415
+ readonly never: "从未";
416
+ };
417
+ readonly action: {
418
+ readonly test: "测试";
419
+ readonly reintrospect: "重新内省";
420
+ readonly reintrospectFile: "架构文件来源没有在线数据库——请改为重新上传文件。";
421
+ readonly remap: "重映射架构";
422
+ readonly delete: "删除";
423
+ };
424
+ readonly test: {
425
+ readonly ok: "连接正常 · {latency, number} 毫秒";
426
+ readonly failed: "连接测试失败";
427
+ };
428
+ readonly introspect: {
429
+ readonly noChanges: "架构无变化——未创建新快照。";
430
+ readonly updated: "已重新内省架构";
431
+ readonly masksProposed: "{count, plural, other {建议对 # 列进行脱敏}}——请在重映射编辑器中查看。";
432
+ readonly failed: "内省失败,请重试。";
433
+ };
434
+ readonly delete: {
435
+ readonly title: "删除连接";
436
+ readonly body: "此操作将删除“{name}”及其生成的页面。您的数据库本身不会被改动。";
437
+ readonly prompt: "输入 {name} 以确认";
438
+ readonly confirm: "删除连接";
439
+ readonly cancel: "取消";
440
+ readonly close: "关闭";
441
+ readonly success: "连接“{name}”已删除";
442
+ readonly failed: "无法删除连接,请重试。";
443
+ };
444
+ readonly empty: {
445
+ readonly title: "还没有数据源";
446
+ readonly body: "连接数据库后,Adminium 会根据其架构生成您的管理面板。";
447
+ readonly cta: "连接数据库";
448
+ };
449
+ };
450
+ readonly settingsHub: {
451
+ readonly title: "工作区设置";
452
+ readonly subtitle: "此工作区的标识、安全与危险操作。";
453
+ readonly save: "保存更改";
454
+ readonly saved: "工作区设置已更新";
455
+ readonly saveFailed: "无法保存工作区设置,请重试。";
456
+ readonly superAdminOnlyTitle: "需要超级管理员";
457
+ readonly superAdminOnly: "只有超级管理员才能更改工作区标识和安全设置。";
458
+ readonly identity: {
459
+ readonly heading: "工作区标识";
460
+ readonly appName: {
461
+ readonly label: "应用名称";
462
+ readonly helper: "显示在侧边栏、浏览器标题和邮件中。";
463
+ readonly error: "请输入不超过 60 个字符的名称。";
464
+ };
465
+ };
466
+ readonly security: {
467
+ readonly heading: "安全";
468
+ readonly require2fa: {
469
+ readonly label: "强制双重验证";
470
+ readonly desc: "每位成员都必须启用双重验证才能登录。";
471
+ };
472
+ readonly allowSignup: {
473
+ readonly label: "允许自助注册";
474
+ readonly desc: "任何人都可以创建账户——关闭后此工作区仅限邀请。";
475
+ };
476
+ readonly sessionTtl: {
477
+ readonly label: "会话有效期(小时)";
478
+ readonly error: "介于 {min, number} 到 {max, number} 小时之间。";
479
+ };
480
+ readonly passwordMin: {
481
+ readonly label: "密码最小长度";
482
+ readonly error: "介于 {min, number} 到 {max, number} 个字符之间。";
483
+ };
484
+ };
485
+ readonly review: {
486
+ readonly title: "保存工作区设置";
487
+ readonly subtitle: "保存前请确认您的更改。";
488
+ readonly confirm: "保存更改";
489
+ readonly cancel: "取消";
490
+ readonly close: "关闭";
491
+ readonly on: "开";
492
+ readonly off: "关";
493
+ readonly change: "{before} → {after}";
494
+ };
495
+ readonly defaultsCard: {
496
+ readonly heading: "外观与语言默认值";
497
+ readonly body: "工作区级的主题、强调色、密度和语言设置位于全局默认值中。";
498
+ readonly cta: "打开全局默认值";
499
+ };
500
+ readonly danger: {
501
+ readonly heading: "危险区域";
502
+ readonly subtitle: "不可逆的操作。";
503
+ readonly empty: "没有可删除的内容——还没有连接。";
504
+ readonly deleteDesc: "删除该连接及其生成的页面。您的数据库不会被改动。此操作无法撤销。";
505
+ readonly deleteCta: "删除连接";
506
+ };
507
+ readonly aiCard: {
508
+ readonly heading: "AI 增强";
509
+ readonly body: "配置 AI 提供方(或复制粘贴往返)来增强标签、分组和关系。";
510
+ readonly cta: "打开 AI 设置";
511
+ };
512
+ };
513
+ readonly settingsAi: {
514
+ readonly title: "AI 增强";
515
+ readonly subtitle: "连接一个模型,让 Adminium 建议标签、分组、关系等——在应用之前始终以差异形式审阅。";
516
+ readonly saved: "AI 提供方已保存";
517
+ readonly saveFailed: "无法保存 AI 提供方。请重试。";
518
+ readonly save: "保存提供方";
519
+ readonly test: "测试连接";
520
+ readonly testHintDirty: "测试前请先保存更改。";
521
+ readonly testing: "正在连接提供方…";
522
+ readonly testError: "测试失败";
523
+ readonly testErrorBody: "无法连接到提供方。请检查密钥和基础 URL。";
524
+ readonly testOk: "已连接到 {model},用时 {latency} 毫秒";
525
+ readonly testUnknownModel: "提供方";
526
+ readonly provider: {
527
+ readonly heading: "AI 提供方";
528
+ readonly subtitle: "选择 Adminium 如何访问模型来增强你的架构。密钥将加密存储且不再显示。";
529
+ readonly active: "使用中";
530
+ readonly anthropic: {
531
+ readonly label: "Anthropic";
532
+ readonly desc: "通过 Anthropic API 使用 Claude 模型。";
533
+ };
534
+ readonly openai: {
535
+ readonly label: "OpenAI";
536
+ readonly desc: "通过 OpenAI API 使用 GPT 模型。";
537
+ };
538
+ readonly openaiCompatible: {
539
+ readonly label: "兼容 OpenAI";
540
+ readonly desc: "任何使用 OpenAI 协议的端点——Groq、Together、vLLM、LM Studio。";
541
+ };
542
+ readonly ollama: {
543
+ readonly label: "Ollama(本地)";
544
+ readonly desc: "通过 Ollama 在本地运行模型——无需密钥,无需云端。";
545
+ };
546
+ readonly requiresNetwork: "需要联网和 API 密钥";
547
+ readonly networkDisabledTitle: "此安装已关闭直连 AI 服务商";
548
+ readonly networkDisabledBody: "此 Adminium 配置为无出站网络访问,无法连接服务商 API。请使用下方的复制粘贴往返方式——无需密钥,也无需联网。";
549
+ };
550
+ readonly configure: {
551
+ readonly heading: "配置 {provider}";
552
+ };
553
+ readonly field: {
554
+ readonly baseUrl: "基础 URL";
555
+ readonly baseUrlOptional: "除非 Ollama 运行在其他主机上,否则保持不变。";
556
+ readonly baseUrlHelper: "提供 /chat/completions 的端点根地址。";
557
+ readonly model: "模型";
558
+ readonly modelFreeText: "输入你的端点所提供的确切模型 ID。";
559
+ readonly modelLive: "已从提供方实时加载。";
560
+ readonly modelStatic: "一份经过验证的列表;保存后输入自定义 ID 可刷新它。";
561
+ readonly modelLoading: "加载中…";
562
+ readonly modelPlaceholder: "选择一个模型…";
563
+ readonly key: "API 密钥";
564
+ readonly keyStored: "已加密存储。替换它以使用其他密钥。";
565
+ readonly keyMask: "sk-…{last4}";
566
+ readonly keyReplace: "替换密钥";
567
+ readonly keyOptional: "可选——某些端点无需密钥。";
568
+ readonly keyWriteOnly: "仅写入:保存后将不再显示。";
569
+ readonly noKeyTitle: "无需 API 密钥";
570
+ readonly noKeyBody: "Ollama 在本地运行,因此没有任何内容离开这台机器。";
571
+ };
572
+ readonly runStatus: {
573
+ readonly draft: "草稿";
574
+ readonly running: "运行中";
575
+ readonly awaitingResponse: "等待响应";
576
+ readonly validated: "已验证";
577
+ readonly applied: "已应用";
578
+ readonly partiallyApplied: "部分应用";
579
+ readonly failed: "失败";
580
+ readonly discarded: "已丢弃";
581
+ };
582
+ readonly byo: {
583
+ readonly heading: "没有密钥?使用你自己的 AI 工具";
584
+ readonly subtitle: "复制粘贴往返——没有任何内容离开这台机器。";
585
+ readonly body: "Studio 可以根据你的架构生成一个自包含的提示词。在 Claude Code、ChatGPT 或任意工具中运行它,然后将返回的 JSON 粘贴回连接向导。验证、审阅和结果都与直连方式相同。";
586
+ readonly guaranteeTitle: "无遥测保证";
587
+ readonly guarantee1: "提示词仅包含你的架构和聚合统计——默认绝不包含行数据。";
588
+ readonly guarantee2: "不嵌入任何凭据、实例 URL 或标识符。";
589
+ readonly guarantee3: "BYO 运行不进行任何网络调用。";
590
+ readonly promptVersion: "提示词 {version}";
591
+ readonly schemaVersion: "架构 {version}";
592
+ readonly headingRecommended: "使用你自己的 AI 工具——无需密钥";
593
+ readonly recommended: "推荐";
594
+ };
595
+ readonly history: {
596
+ readonly heading: "运行历史";
597
+ readonly subtitle: "过往的增强运行。打开其中一个以审阅其建议。";
598
+ readonly tableLabel: "增强运行";
599
+ readonly colDate: "日期";
600
+ readonly colSource: "来源";
601
+ readonly colStatus: "状态";
602
+ readonly colChunks: "分块";
603
+ readonly openReview: "打开 {date} 的运行审阅";
604
+ readonly connection: "连接";
605
+ readonly empty: "暂无增强运行。在连接向导中增强架构后,历史将显示在这里。";
606
+ readonly errorTitle: "无法加载运行";
607
+ readonly errorBody: "刷新页面以重试。";
608
+ readonly noConnections: "请先连接数据库——增强运行按连接记录。";
609
+ readonly byo: "BYO";
610
+ readonly directPath: "直连";
611
+ };
612
+ };
613
+ readonly enrich: {
614
+ readonly title: "使用 AI 丰富";
615
+ readonly subtitle: "可选择使用 LLM 优化生成的标签、分组、枚举和仪表板。启发式基线无需它即可工作——这仅添加供你在应用前审阅的建议。";
616
+ readonly intentLabel: "你希望如何丰富?";
617
+ readonly sectionsLegend: "应由 AI 决定哪些内容?";
618
+ readonly localesLegend: "将标签翻译为";
619
+ readonly localeLocked: "(必填)";
620
+ readonly samplingTitle: "包含示例值";
621
+ readonly samplingHint: "在提示中为每个非 PII 列最多包含 20 个真实值。";
622
+ readonly samplingPreviewTitle: "离开此机器的内容";
623
+ readonly samplingPreviewBody: "每个非 PII 列最多 20 个最常见值,以及数值和日期列的最小/最大值。标记为 PII 的列永不采样。其余所有内容仅保留聚合值。复制前请审阅确切的提示(BYO)——未经你的操作不会发送任何内容。";
624
+ readonly noSections: "请至少选择一个要丰富的决策组。";
625
+ readonly generatePrompt: "生成提示";
626
+ readonly startProvider: "开始丰富";
627
+ readonly startOver: "重新开始";
628
+ readonly copied: "已复制";
629
+ readonly createFailed: "无法构建丰富提示——请重试。";
630
+ readonly createFailedTitle: "无法启动";
631
+ readonly providerFallback: "你的 AI 提供商";
632
+ readonly fileTitle: "AI 丰富需要一个在线数据库";
633
+ readonly fileBody: "架构文件来源尚无可丰富的快照。连接一个在线数据库以使用 AI 丰富,或继续——启发式基线仍会生成完整的应用。";
634
+ readonly section: {
635
+ readonly labels: "标签与描述";
636
+ readonly groups: "导航分组";
637
+ readonly enums: "枚举语义";
638
+ readonly relations: "关系";
639
+ readonly keys: "关键列";
640
+ readonly templates: "页面模板";
641
+ readonly widgets: "仪表板小组件";
642
+ readonly pii: "PII 与脱敏";
643
+ readonly icons: "图标";
644
+ readonly microcopy: "微文案";
645
+ };
646
+ readonly provider: {
647
+ readonly title: "使用我的 AI 提供商";
648
+ readonly description: "立即使用已配置的提供商运行丰富。你将以差异形式审阅每条建议。";
649
+ readonly unconfigured: "尚未配置 AI 提供商——请在下方将提示复制到你自己的工具,或先配置一个提供商。";
650
+ readonly settingsHint: "想直接运行吗?";
651
+ readonly settingsLink: "在“设置 → AI”中配置提供商";
652
+ readonly networkDisabled: "此 Adminium 无出站网络访问,无法连接服务商 API。请改用复制粘贴往返方式——同样的提示词,同样的审阅。";
653
+ };
654
+ readonly byo: {
655
+ readonly cardTitle: "复制提示到我自己的 AI 工具";
656
+ readonly cardDescription: "将一个自包含的提示复制到 Claude Code、ChatGPT 或任何工具——然后将 JSON 粘贴回来。无需密钥,不会自动将任何内容传出此机器。";
657
+ readonly guidance: "在任意 AI 工具中运行——Claude Code、ChatGPT,皆可。将其返回的 JSON 粘贴到下方。";
658
+ readonly promptLabel: "丰富提示";
659
+ readonly promptLabelN: "丰富提示 第 {index} 个,共 {total} 个";
660
+ readonly tokenChip: "≈ {tokens} 个 token";
661
+ readonly copyPrompt: "复制提示";
662
+ readonly copyPromptDone: "提示已复制";
663
+ readonly download: "下载 .md";
664
+ readonly chunkTabs: "提示分块";
665
+ readonly chunkTab: "提示 {index}";
666
+ readonly chunkValid: "分块 {index} 已验证";
667
+ readonly pasteLabel: "粘贴 JSON 响应";
668
+ readonly pastePlaceholder: "在此粘贴 JSON 响应…";
669
+ readonly validate: "验证";
670
+ readonly valid: "响应已验证";
671
+ readonly mergedTitle: "全部 {count} 个分块已验证并合并";
672
+ readonly mergedTitleSingle: "响应已验证";
673
+ readonly mergedBody: "建议已准备好,可对照启发式基线进行审阅。";
674
+ readonly errorsTitle: "验证发现 {count} 个问题";
675
+ readonly copyErrors: "为你的 AI 工具复制错误";
676
+ readonly copyErrorsDone: "错误已复制";
677
+ readonly copyErrorsHint: "将其粘贴回你的 AI 工具以获取更正后的响应。";
678
+ readonly droppedItems: "有 {count} 条建议在验证时被丢弃——审阅中显示其余内容。";
679
+ readonly pendingTitle: "验证每个提示以继续";
680
+ readonly pendingBody: "在上方粘贴 JSON 响应并验证,以继续进行审阅。";
681
+ readonly pendingBodyChunked: "每个分块都必须先验证,建议才会合并。请粘贴并验证上方的每个提示。";
682
+ readonly requestFailed: "无法连接服务器进行验证——请重试。";
683
+ readonly continueReview: "继续审阅";
684
+ readonly wholeDocument: "整个文档";
685
+ readonly cardTitleRecommended: "把提示词复制到我自己的 AI 工具——推荐";
686
+ };
687
+ readonly direct: {
688
+ readonly title: "正在使用 AI 丰富";
689
+ readonly subtitle: "正在将你的架构发送至";
690
+ readonly building: "正在构建提示…";
691
+ readonly logLabel: "丰富日志";
692
+ readonly cancel: "取消";
693
+ readonly back: "返回选项";
694
+ readonly retry: "重试";
695
+ readonly done: "丰富完成——请审阅建议。";
696
+ readonly continueReview: "继续审阅";
697
+ readonly failed: "提供商运行失败。请检查你的 AI 设置并重试。";
698
+ readonly jobFailed: "丰富运行未完成。";
699
+ readonly startFailed: "无法启动运行——请重试。";
700
+ readonly errorTitle: "丰富失败";
701
+ };
702
+ readonly skip: {
703
+ readonly title: "跳过——仅使用启发式";
704
+ readonly description: "从启发式基线生成。你之后可在“设置 → AI”中丰富——跳过绝不会受到惩罚。";
705
+ readonly confirmTitle: "继续使用启发式";
706
+ readonly confirmBody: "生成的应用将使用启发式的标签、分组和仪表板。继续生成——你可随时在“设置 → AI”中运行 AI 丰富。";
707
+ };
708
+ };
709
+ readonly review: {
710
+ readonly unavailableTitle: "审阅界面不可用";
711
+ readonly unavailableBody: "此版本尚未包含增强审阅界面(06-T14)。它将随差异与应用流程一起推出。";
712
+ };
713
+ readonly llmRuns: {
714
+ readonly review: {
715
+ readonly header: {
716
+ readonly title: "审查 AI 建议";
717
+ readonly model: "模型";
718
+ readonly snapshot: "快照";
719
+ readonly byo: "自带";
720
+ readonly pathDirect: "直接 API";
721
+ readonly pathByo: "复制粘贴";
722
+ readonly agree: "{n} 项一致";
723
+ readonly conflict: "{n} 项冲突";
724
+ readonly new: "{n} 项新增";
725
+ readonly rejects: "{n} 项拒绝";
726
+ readonly countsAria: "建议数量";
727
+ };
728
+ readonly bulk: {
729
+ readonly thresholdLabel: "置信度阈值";
730
+ readonly thresholdAria: "“全部接受”的置信度阈值";
731
+ readonly acceptAll: "接受所有 ≥ {pct}%";
732
+ readonly clear: "清除选择";
733
+ };
734
+ readonly section: {
735
+ readonly selectAllAria: "全选 {group}";
736
+ readonly acceptedCount: "已接受 {n} 项";
737
+ };
738
+ readonly group: {
739
+ readonly labels: "标签与翻译";
740
+ readonly navigation: "导航与领域";
741
+ readonly enums: "枚举语义";
742
+ readonly relations: "关系";
743
+ readonly keys: "键列";
744
+ readonly templates: "页面模板";
745
+ readonly dashboards: "仪表盘与小组件";
746
+ readonly pii: "个人信息与脱敏";
747
+ readonly icons: "图标";
748
+ readonly microcopy: "微文案";
749
+ };
750
+ readonly status: {
751
+ readonly agree: "一致";
752
+ readonly conflict: "冲突";
753
+ readonly new: "新增";
754
+ readonly heuristicOnly: "仅启发式";
755
+ readonly rejects: "拒绝启发式";
756
+ readonly locked: "已锁定";
757
+ };
758
+ readonly row: {
759
+ readonly acceptAria: "接受 {target} 的{noun}建议";
760
+ readonly keptEdited: "已保留——由您编辑";
761
+ readonly rejectsCallout: "AI 拒绝了某项启发式决策——接受前请确认。";
762
+ readonly showTranslations: "显示翻译";
763
+ readonly hideTranslations: "隐藏翻译";
764
+ readonly confidenceAria: "置信度 {pct}%";
765
+ readonly noAi: "无 AI 建议";
766
+ };
767
+ readonly value: {
768
+ readonly none: "无值";
769
+ readonly absent: "无";
770
+ readonly dash: "—";
771
+ readonly display: "显示";
772
+ readonly key: "键";
773
+ readonly rank: "排名 {n}";
774
+ readonly span: "跨度 {n}";
775
+ readonly tableCount: "{n} 张表";
776
+ readonly widgetCount: "{n} 个小组件";
777
+ readonly enumWorkflow: "工作流";
778
+ readonly enumCategory: "分类";
779
+ readonly notPii: "非个人信息";
780
+ readonly label: "标签";
781
+ readonly description: "描述";
782
+ readonly subtitle: "页面副标题";
783
+ readonly headline: "空状态标题";
784
+ readonly guidance: "空状态提示";
785
+ };
786
+ readonly apply: {
787
+ readonly title: "应用 {n} 项建议";
788
+ readonly subtitle: "这些更改将在一个事务中写入,并可撤销。";
789
+ readonly empty: "未选择任何要应用的内容。";
790
+ readonly confirm: "应用更改";
791
+ };
792
+ readonly footer: {
793
+ readonly count: "已选择 {n} 项建议";
794
+ readonly apply: "应用 {n} 项已接受的建议";
795
+ readonly failed: "应用失败";
796
+ };
797
+ readonly toast: {
798
+ readonly applied: "已应用 {n} 项建议";
799
+ readonly appliedPartial: "已应用 {n} 项建议(部分已跳过)";
800
+ readonly applyFailed: "无法应用建议";
801
+ readonly undoFailed: "无法撤销此更改";
802
+ };
803
+ readonly error: {
804
+ readonly title: "无法加载此运行";
805
+ };
806
+ readonly notReady: {
807
+ readonly title: "此运行尚无可审查的建议";
808
+ readonly body: "运行必须先通过验证,才能审查其建议。请先生成或粘贴响应。";
809
+ };
810
+ readonly applied: {
811
+ readonly title: "此运行已应用";
812
+ readonly body: "下方已接受的建议为只读。";
813
+ };
814
+ readonly empty: {
815
+ readonly title: "无建议";
816
+ readonly body: "此运行未生成可审查的建议。";
817
+ };
818
+ readonly cat: {
819
+ readonly label: "标签";
820
+ readonly key: "键列";
821
+ readonly enum: "枚举";
822
+ readonly relation: "关系";
823
+ readonly pii: "个人信息";
824
+ readonly template: "页面模板";
825
+ readonly group: "导航分组";
826
+ readonly dashboard: "仪表盘";
827
+ readonly widget: "小组件";
828
+ readonly copy: "微文案";
829
+ };
830
+ };
831
+ };
832
+ readonly wizard: {
833
+ readonly title: "新建连接";
834
+ readonly back: "返回";
835
+ readonly continue: "继续";
836
+ readonly progress: "设置进度";
837
+ readonly persistFailed: "无法保存你的表选择——请重试。";
838
+ readonly persistFailedTitle: "保存失败";
839
+ readonly step: {
840
+ readonly source: "来源";
841
+ readonly test: "分析";
842
+ readonly tables: "数据表";
843
+ readonly meta: "元数据存储";
844
+ readonly intent: "意图";
845
+ readonly enrich: "丰富";
846
+ readonly generate: "生成";
847
+ };
848
+ };
849
+ readonly meta: {
850
+ readonly title: "Adminium 应把自己的表放在哪里?";
851
+ readonly subtitle: "页面、角色、审计日志和设置存放在以 adminium_ 为前缀的表中——绝不混入你的数据。";
852
+ readonly sameDb: {
853
+ readonly title: "同一数据库";
854
+ readonly description: "adminium_* 表将创建在你的源表旁边。这是最简单的设置——需要具有写入和 CREATE TABLE 权限的角色。";
855
+ readonly disabledReadOnly: "你的角色是只读的——Adminium 绝不会写入此数据库。请为 Adminium 自己的表选择单独的数据库。";
856
+ readonly disabledNoDdl: "该角色无法执行 DDL——Adminium 迁移需要 CREATE TABLE 权限。请为 Adminium 自己的表选择单独的数据库。";
857
+ readonly disabledFile: "架构文件没有实时数据库——请为 Adminium 自己的表选择单独的数据库。";
858
+ };
859
+ readonly separate: {
860
+ readonly title: "单独的数据库";
861
+ readonly description: "Adminium 将其表保存在另一个数据库中。你的源保持不变——只读源必须如此。";
862
+ readonly dsn: "元数据库连接字符串";
863
+ readonly helper: "需要写入和 DDL 权限——Adminium 会在那里运行自己的迁移。";
864
+ readonly test: "测试连接";
865
+ readonly ok: "兼容——写入 ✓ · DDL ✓";
866
+ readonly insufficient: "该角色无法承载元数据存储——Adminium 在那里需要写入和 CREATE TABLE 权限。";
867
+ readonly errorTitle: "元数据存储不兼容";
868
+ };
869
+ readonly testFailed: "连接失败。";
870
+ readonly v1Note: {
871
+ readonly title: "关于此安装";
872
+ readonly body: "此服务器在首次启动时选择了元数据存储。此步骤验证你的选择与此连接兼容并记录下来——服务器会独立执行同一规则(409 META_PLACEMENT_INVALID)。迁移现有元数据存储属于运维任务(M10)。";
873
+ };
874
+ };
875
+ readonly intent: {
876
+ readonly title: "你需要什么?";
877
+ readonly subtitle: "意图决定生成哪些页面。之后可以更改——更改会提议重新生成,绝不会静默重写。";
878
+ readonly trust: "我们只读取你的架构——设置期间绝不读取行数据。";
879
+ readonly fullAdmin: {
880
+ readonly title: "完整管理面板";
881
+ readonly description: "仪表板、CRUD 页面、搜索、导入与导出——你的架构支持的一切。";
882
+ };
883
+ readonly analytics: {
884
+ readonly title: "只读分析";
885
+ readonly description: "仪表板、图表和只读网格。没有表单、没有写入——所有角色上限为查看者。";
886
+ };
887
+ readonly crud: {
888
+ readonly title: "CRUD 数据表";
889
+ readonly description: "每个表一个编辑页面,外加搜索和导入/导出——极简主页,没有仪表板。";
890
+ };
891
+ readonly support: {
892
+ readonly title: "客服控制台";
893
+ readonly description: "优先生成队列、工单和客户详情页面。默认关闭删除。(队列模板在 M7 提供——v1 页面集与完整管理面板相同。)";
894
+ };
895
+ };
896
+ readonly generate: {
897
+ readonly title: "生成你的应用";
898
+ readonly subtitle: "每个已包含的表一个页面,外加按领域生成的仪表板——意图:";
899
+ readonly run: "生成仪表板";
900
+ readonly openApp: "打开你的应用";
901
+ readonly logLabel: "生成日志";
902
+ readonly log: {
903
+ readonly classifying: "正在对架构分类…";
904
+ readonly composing: "正在组合模板…";
905
+ readonly writing: "正在写入页面…";
906
+ readonly done: "已生成 {pages} 个页面,分布于 {groups} 个导航组";
907
+ };
908
+ readonly successTitle: "你的仪表板已就绪";
909
+ readonly successBody: "{pages} 个页面,分布于 {groups} 个导航组——由你的架构生成,可在 Studio 中编辑。";
910
+ readonly errorTitle: "生成失败";
911
+ readonly failed: "生成失败——请重试,或先重新运行自省。";
912
+ readonly fileTitle: "架构文件已解析——生成需要实时数据库";
913
+ readonly fileBody: "你的架构解析顺利,上方预览是真实的。直接从架构文件生成可运行的应用(含占位行)尚不可用——请连接实时数据库立即生成。";
914
+ };
915
+ readonly remap: {
916
+ readonly column: {
917
+ readonly nullable: "可为空";
918
+ readonly labelOverride: "显示标签";
919
+ readonly labelHelper: "推断:{name}";
920
+ readonly logicalType: "逻辑类型";
921
+ readonly logicalTypeHelper: "推断:{type}(来自 {dbType})——由适配器映射;v1 中不可覆盖。";
922
+ readonly semantic: "语义类型";
923
+ readonly unclassified: "尚未分类。";
924
+ readonly semanticHelper: "分类器:{tag} · 置信度 {confidence}% · 来源:{source}";
925
+ readonly semanticInferred: "推断:{tag}";
926
+ readonly currency: "货币";
927
+ readonly currencyHelper: "应用于金额格式化的 ISO 4217 代码。";
928
+ readonly pii: "默认脱敏";
929
+ readonly piiHelper: "脱敏值以遮盖形式显示;取消脱敏需要 data.unmask_pii 权限,并会记录到审计日志。";
930
+ readonly enum: "枚举语义";
931
+ readonly enumKind: "枚举种类";
932
+ readonly enumWorkflow: "工作流";
933
+ readonly enumCategory: "分类";
934
+ readonly enumLabelFor: "{value} 的标签";
935
+ readonly enumToneFor: "{value} 的色调";
936
+ readonly enumToneAuto: "自动";
937
+ readonly enumHelper: "工作流枚举驱动状态徽章和看板列;色调将各值映射到语义色阶上。";
938
+ };
939
+ readonly diff: {
940
+ readonly one: "1 项更改";
941
+ readonly count: "{count} 项更改";
942
+ readonly saved: "覆盖已保存。";
943
+ readonly revertOne: "还原 {change}";
944
+ readonly regenerate: "重新生成页面";
945
+ readonly revertAll: "全部还原";
946
+ readonly save: "保存覆盖";
947
+ };
948
+ readonly table: {
949
+ readonly iconPicker: "表图标";
950
+ readonly system: "系统";
951
+ readonly labelOverride: "显示标签";
952
+ readonly labelHelper: "推断:{name}";
953
+ readonly icon: "图标";
954
+ readonly navGroup: "导航组";
955
+ readonly navGroupHelper: "导航位置由生成器决定——table.navGroup 覆盖不在 v1 词汇表中。";
956
+ readonly include: "包含在生成的应用中";
957
+ readonly includeHelper: "被排除的表不会生成页面,也不会出现在导航中。";
958
+ readonly shape: "表形态(已分类)";
959
+ readonly role: "角色";
960
+ readonly unclassified: "未分类";
961
+ readonly kind: "种类";
962
+ readonly hierarchy: "层级";
963
+ readonly selfFk: "通过 {column} 自引用";
964
+ readonly polymorphic: "多态列对";
965
+ readonly rows: "行数估算";
966
+ readonly shapeHelper: "每次自省都会重新计算分类;覆盖叠加在其上,并在重新生成后保留。";
967
+ };
968
+ readonly relations: {
969
+ readonly declared: "已声明的外键";
970
+ readonly noneDeclared: "没有已声明的外键涉及此表。";
971
+ readonly inferred: "推断的关系";
972
+ readonly noneInferred: "此表没有推断结果。";
973
+ readonly confidence: "推断 · {pct}%";
974
+ readonly accepted: "已接受";
975
+ readonly suppressed: "已屏蔽";
976
+ readonly accept: "接受";
977
+ readonly suppress: "屏蔽";
978
+ readonly overrides: "覆盖关系(已应用)";
979
+ readonly overrideBadge: "覆盖";
980
+ readonly add: "添加虚拟关系";
981
+ readonly fromColumn: "源列";
982
+ readonly noColumns: "没有匹配的列";
983
+ readonly fromPlaceholder: "customer_id";
984
+ readonly toTable: "目标表";
985
+ readonly noTables: "没有匹配的表";
986
+ readonly toColumn: "目标列";
987
+ readonly cardinality: "基数";
988
+ readonly addButton: "添加关系";
989
+ };
990
+ readonly toast: {
991
+ readonly saved: "架构覆盖已保存";
992
+ readonly savedDetail: "下方已应用的架构反映了你的更改。";
993
+ readonly regenerated: "已创建 {created} · 已更新 {updated} · 未变化 {unchanged}";
994
+ readonly regeneratedDetail: "你手动编辑过的页面会被保留——只有 generated_hash 未被改动的页面才会原地重新生成。";
995
+ readonly regenerateFailed: "重新生成失败";
996
+ };
997
+ readonly title: "架构重映射";
998
+ readonly subtitle: "{tables} 张表 · 已应用 {applied} 项覆盖";
999
+ readonly saveFailed: "保存失败:{message}";
1000
+ readonly loadFailed: "无法加载此连接的架构。";
1001
+ readonly inspector: "检查器";
1002
+ readonly empty: {
1003
+ readonly title: "选择一个表或列";
1004
+ readonly description: "在架构树中选择一项,以重映射其标签、类型、关系或脱敏设置。";
1005
+ };
1006
+ readonly tabs: {
1007
+ readonly details: "详情";
1008
+ readonly relations: "关系";
1009
+ };
1010
+ readonly tree: {
1011
+ readonly label: "架构";
1012
+ readonly search: "搜索表和列";
1013
+ readonly searchPlaceholder: "搜索表…";
1014
+ readonly noMatches: "没有与搜索匹配的表。";
1015
+ readonly collapse: "折叠表";
1016
+ readonly expand: "展开表";
1017
+ readonly unsaved: "未保存的更改";
1018
+ readonly excluded: "已排除";
1019
+ };
1020
+ readonly badge: {
1021
+ readonly pk: "主键";
1022
+ readonly fk: "外键";
1023
+ readonly unique: "唯一";
1024
+ readonly pii: "PII";
1025
+ readonly masked: "已脱敏";
1026
+ };
1027
+ };
1028
+ };
1029
+ readonly onboarding: {
1030
+ readonly title: "开始使用";
1031
+ readonly subtitle: "几个步骤,让你的工作区准备就绪。";
1032
+ readonly loading: "正在加载设置清单…";
1033
+ readonly welcome: "欢迎使用 Adminium,{name} 👋";
1034
+ readonly progressBody: "你已完成 {total} 个设置步骤中的 {done} 个。完成其余步骤以解锁完整工作区。";
1035
+ readonly completeBody: "全部就绪 — 你的工作区已完全配置。";
1036
+ readonly ringLabel: "已完成 {total} 个步骤中的 {done} 个";
1037
+ readonly done: "完成";
1038
+ readonly skip: "暂时跳过";
1039
+ readonly goToWorkspace: "前往工作区";
1040
+ readonly help: {
1041
+ readonly title: "需要帮助?";
1042
+ readonly body: "我们随时帮助你快速完成设置。";
1043
+ };
1044
+ readonly steps: {
1045
+ readonly connectDatabase: {
1046
+ readonly title: "连接数据库";
1047
+ readonly desc: "将 Adminium 指向你的 Postgres、MySQL 或 SQLite — 只读角色也可以。";
1048
+ readonly time: "5 分钟";
1049
+ readonly action: "连接";
1050
+ };
1051
+ readonly chooseTables: {
1052
+ readonly title: "选择你的表";
1053
+ readonly desc: "选择哪些表成为页面 — 个人信息默认已脱敏。";
1054
+ readonly time: "2 分钟";
1055
+ readonly action: "选择";
1056
+ };
1057
+ readonly inviteTeammates: {
1058
+ readonly title: "邀请团队成员";
1059
+ readonly desc: "邀请团队一起探索和协作。";
1060
+ readonly time: "2 分钟";
1061
+ readonly action: "邀请";
1062
+ };
1063
+ readonly workspaceDefaults: {
1064
+ readonly title: "设置工作区默认值";
1065
+ readonly desc: "为所有人设置主题、强调色、密度和语言。";
1066
+ readonly time: "1 分钟";
1067
+ readonly action: "设置";
1068
+ };
1069
+ };
1070
+ readonly entry: {
1071
+ readonly wayBack: "开始使用 · {done}/{total}";
1072
+ readonly dismiss: "隐藏设置清单";
1073
+ readonly continue: "继续设置";
1074
+ readonly banner: "完成工作区设置 — 已完成 {total} 个步骤中的 {done} 个。";
1075
+ };
1076
+ };
1077
+ readonly views: {
1078
+ readonly baseView: "全部记录";
1079
+ readonly menuLabel: "已保存视图";
1080
+ readonly saveAs: "将当前保存为视图…";
1081
+ readonly updateActive: "更新“{name}”";
1082
+ readonly rename: "重命名…";
1083
+ readonly setDefault: "设为默认";
1084
+ readonly delete: "删除…";
1085
+ readonly saveTitle: "保存视图";
1086
+ readonly save: "保存视图";
1087
+ readonly renameTitle: "重命名视图";
1088
+ readonly saveName: "保存名称";
1089
+ readonly nameLabel: "视图名称";
1090
+ readonly namePlaceholder: "例如:本月活跃";
1091
+ readonly nameRequired: "请输入此视图的名称。";
1092
+ readonly saveFailed: "无法保存视图。";
1093
+ readonly deleteTitle: "删除视图";
1094
+ readonly deleteBody: "这将移除已保存的视图。你的数据不受影响。";
1095
+ readonly deletePrompt: "输入视图名称以确认";
1096
+ readonly deleteConfirm: "删除视图";
1097
+ readonly savedToast: "视图“{name}”已保存。";
1098
+ readonly updatedToast: "视图“{name}”已更新。";
1099
+ readonly defaultToast: "“{name}”现在是默认视图。";
1100
+ readonly deletedToast: "视图“{name}”已删除。";
1101
+ };
1102
+ readonly builder: {
1103
+ readonly view: "查看";
1104
+ readonly edit: "编辑";
1105
+ readonly done: "完成";
1106
+ readonly addWidget: "添加小组件";
1107
+ readonly saveLayout: "保存布局";
1108
+ readonly saving: "正在保存…";
1109
+ readonly savedShort: "已保存";
1110
+ readonly options: "仪表盘选项";
1111
+ readonly resetLayout: "重置布局";
1112
+ readonly resetTitle: "重置为共享布局?";
1113
+ readonly resetBody: "这将移除你的个人更改并恢复所有人看到的仪表盘。你的数据不受影响。";
1114
+ readonly resetConfirm: "重置布局";
1115
+ readonly resetDone: "布局已重置为共享默认值。";
1116
+ readonly sharedNote: "你正在编辑所有人都能看到的共享仪表盘。";
1117
+ readonly personalNote: "你正在编辑个人布局——只有你能看到这些更改。";
1118
+ readonly savedShared: "仪表盘已为所有有权限的人保存。";
1119
+ readonly empty: "此仪表盘尚无任何小组件。";
1120
+ readonly emptyAction: "添加小组件";
1121
+ readonly palette: {
1122
+ readonly title: "添加小组件";
1123
+ readonly count: "{count} 个小组件";
1124
+ readonly searchLabel: "搜索小组件";
1125
+ readonly searchPlaceholder: "搜索小组件…";
1126
+ readonly clear: "清除搜索";
1127
+ readonly noResults: "没有小组件匹配“{query}”。";
1128
+ readonly add: "添加 {name}";
1129
+ readonly added: "已添加 {name}。";
1130
+ };
1131
+ readonly inspector: {
1132
+ readonly title: "配置小组件";
1133
+ readonly empty: "此小组件没有可配置的选项。";
1134
+ readonly locked: "已锁定";
1135
+ readonly lockedHint: "此字段由数据源设置,无法在此处编辑。";
1136
+ readonly selectPlaceholder: "选择…";
1137
+ readonly increment: "增加";
1138
+ readonly decrement: "减少";
1139
+ readonly done: "完成";
1140
+ };
1141
+ readonly item: {
1142
+ readonly configure: "配置 {name}";
1143
+ readonly duplicate: "复制 {name}";
1144
+ readonly remove: "移除 {name}";
1145
+ readonly removed: "已移除 {name}。";
1146
+ readonly duplicated: "已复制 {name}。";
1147
+ };
1148
+ readonly families: {
1149
+ readonly kpi: "关键指标";
1150
+ readonly charts: "图表";
1151
+ readonly tables: "表格";
1152
+ readonly feeds: "动态";
1153
+ readonly calendar: "日历";
1154
+ readonly boards: "看板";
1155
+ readonly geo: "地图";
1156
+ readonly media: "媒体";
1157
+ readonly communication: "沟通";
1158
+ readonly forms: "表单";
1159
+ readonly chrome: "导航";
1160
+ readonly system: "系统";
1161
+ readonly domain: "领域";
1162
+ };
1163
+ readonly versions: "版本";
1164
+ readonly versionsEmpty: "还没有保存的版本";
1165
+ readonly saveAsVersion: "保存为版本";
1166
+ readonly saveVersionTitle: "保存版本";
1167
+ readonly saveVersionBody: "为当前文档创建快照。可随时从“版本”中恢复。";
1168
+ readonly versionName: "版本名称";
1169
+ readonly versionNamePlaceholder: "例如:Q3 费率调整前";
1170
+ };
1171
+ readonly setup: {
1172
+ readonly title: "设置 Adminium";
1173
+ readonly subtitle: "创建第一位管理员。此操作只进行一次。";
1174
+ readonly progress: "设置进度";
1175
+ readonly steps: {
1176
+ readonly account: "管理员账户";
1177
+ readonly consent: "隐私";
1178
+ };
1179
+ readonly account: {
1180
+ readonly name: "你的姓名";
1181
+ readonly email: "邮箱";
1182
+ readonly emailInvalid: "请输入有效的邮箱地址。";
1183
+ readonly password: "密码";
1184
+ readonly passwordHelper: "至少 {min} 个字符。";
1185
+ readonly passwordTooShort: "请至少使用 {min} 个字符。";
1186
+ readonly confirm: "确认密码";
1187
+ readonly passwordMismatch: "两次输入的密码不一致。";
1188
+ readonly continue: "继续";
1189
+ readonly strength: "密码强度";
1190
+ readonly strengthLevels: {
1191
+ readonly weak: "弱";
1192
+ readonly fair: "一般";
1193
+ readonly good: "良好";
1194
+ readonly strong: "强";
1195
+ };
1196
+ };
1197
+ readonly consent: {
1198
+ readonly telemetry: {
1199
+ readonly title: "共享匿名使用数据";
1200
+ readonly description: "帮助我们了解应优先支持哪些数据库引擎。默认关闭,除非你主动开启。";
1201
+ };
1202
+ readonly updates: {
1203
+ readonly title: "检查新版本";
1204
+ readonly description: "当有新版本(包括安全修复)可用时显示提示。这会向 GitHub 查询最新发行版,因而会向 GitHub 暴露本实例的 IP 地址和版本。除此之外不会发送任何内容。";
1205
+ };
1206
+ readonly sentTitle: "发送的内容仅限于:";
1207
+ readonly sent: {
1208
+ readonly instanceId: "一个随机实例 ID(在本地生成的 UUID;不由你的姓名、主机或数据库推导而来)";
1209
+ readonly version: "本实例运行的 Adminium 版本";
1210
+ readonly engines: "已连接的数据库引擎类型(例如 “postgres”)——仅类型";
1211
+ };
1212
+ readonly neverTitle: "绝不发送:";
1213
+ readonly never: {
1214
+ readonly schema: "你的表结构——不含任何表名、列名或枚举名";
1215
+ readonly rows: "你的数据——从不发送任何一行";
1216
+ readonly connections: "连接字符串、主机名或凭据";
1217
+ readonly people: "用户的邮箱、姓名或 ID";
1218
+ readonly llm: "AI 提示词或运行内容";
1219
+ };
1220
+ readonly reversible: "两项默认均为关闭,之后你可以随时在“设置”中更改。";
1221
+ readonly back: "返回";
1222
+ readonly finish: "创建管理员账户";
1223
+ };
1224
+ readonly error: {
1225
+ readonly alreadyCompleted: "本实例已完成设置。请使用现有的管理员账户登录。";
1226
+ readonly rejected: "服务器拒绝了这些信息。请检查邮箱和密码后重试。";
1227
+ readonly failed: "设置失败。请检查网络连接后重试。";
1228
+ };
1229
+ };
1230
+ readonly about: {
1231
+ readonly title: "关于 Adminium";
1232
+ readonly subtitle: "版本、许可证,以及本实例源代码的位置。";
1233
+ readonly version: "版本";
1234
+ readonly license: "许可证";
1235
+ readonly metaStore: "元数据存储";
1236
+ readonly node: "Node.js";
1237
+ readonly engine: {
1238
+ readonly postgres: "PostgreSQL";
1239
+ readonly mysql: "MySQL / MariaDB";
1240
+ readonly sqlite: "SQLite";
1241
+ };
1242
+ readonly licenseCard: {
1243
+ readonly title: "自由与开源";
1244
+ readonly body: "Adminium 基于 GNU Affero 通用公共许可证 v3.0 授权。你可以自由地运行、研究、修改和分享它。如果你通过网络向他人提供修改后的版本,AGPL 要求你同样向他们提供其源代码。";
1245
+ };
1246
+ readonly viewLicense: "阅读许可证";
1247
+ readonly viewSource: "获取源代码";
1248
+ readonly updates: {
1249
+ readonly title: "更新";
1250
+ readonly description: "本实例是否检查新版本。";
1251
+ };
1252
+ readonly update: {
1253
+ readonly disabled: "更新检查已关闭,因此本实例从不联系 GitHub。可在“设置”中开启以获知新版本。";
1254
+ readonly current: "你正在使用最新版本。";
1255
+ readonly available: "Adminium {version} 已发布";
1256
+ readonly availableBody: "你当前运行的是 {version}。";
1257
+ readonly viewRelease: "查看发行说明";
1258
+ };
1259
+ readonly desktop: {
1260
+ readonly unknown: "未知";
1261
+ readonly appVersion: "应用版本";
1262
+ readonly serverVersion: "服务器版本";
1263
+ readonly migration: "元数据库迁移";
1264
+ readonly electron: "Electron";
1265
+ readonly chromium: "Chromium";
1266
+ readonly runtimeNode: "Node 运行时";
1267
+ readonly system: {
1268
+ readonly title: "系统";
1269
+ };
1270
+ readonly dataDir: "数据目录";
1271
+ readonly reveal: "在文件夹中显示";
1272
+ readonly secret: {
1273
+ readonly title: "密钥存储";
1274
+ readonly safe: "由操作系统加密";
1275
+ readonly plainWarning: "此电脑没有可用的系统钥匙串,因此你的 Adminium 密钥以未加密方式存储在磁盘上。任何能读取本机文件的人都能读取它。请设置登录钥匙串(或 Linux 密钥服务)并重启 Adminium 以保护它。";
1276
+ };
1277
+ readonly updates: {
1278
+ readonly title: "更新";
1279
+ readonly mode: {
1280
+ readonly notify: "有新版本时通知我";
1281
+ readonly manual: "仅在我检查时";
1282
+ readonly disabled: "关闭(离线)";
1283
+ };
1284
+ readonly disabledBody: "自动更新已关闭(离线)。请手动安装新版本。";
1285
+ readonly check: "检查更新";
1286
+ readonly checking: "正在检查…";
1287
+ readonly lastChecked: "上次检查 {when}";
1288
+ readonly available: "版本 {version} 可用";
1289
+ readonly none: "你已是最新版本。";
1290
+ readonly unavailable: "此安装已关闭更新。";
1291
+ readonly error: "无法检查更新。";
1292
+ readonly download: "下载更新";
1293
+ readonly downloading: "正在下载… {percent}%";
1294
+ readonly downloaded: "版本 {version} 已可安装";
1295
+ readonly restart: "重启以安装";
1296
+ readonly downloadError: "下载未完成。你可以重试。";
1297
+ readonly toast: {
1298
+ readonly available: "有新版本的 Adminium 可用";
1299
+ readonly view: "查看";
1300
+ readonly downloaded: "更新已可安装";
1301
+ readonly restart: "立即重启";
1302
+ };
1303
+ };
1304
+ readonly legal: {
1305
+ readonly title: "许可证";
1306
+ readonly agpl: "Adminium Desktop 是遵循 GNU Affero General Public License v3.0 的自由软件。";
1307
+ readonly viewLicense: "查看许可证";
1308
+ readonly licenseTitle: "GNU Affero General Public License v3.0";
1309
+ readonly licenseUnavailable: "此构建中没有随附的许可证文件。";
1310
+ readonly viewNotices: "第三方许可证";
1311
+ readonly noticesTitle: "第三方声明";
1312
+ readonly noticesUnavailable: "第三方声明在应用打包时生成,此构建中不可用。";
1313
+ readonly source: "源代码";
1314
+ readonly close: "关闭";
1315
+ };
1316
+ readonly telemetry: {
1317
+ readonly title: "匿名使用数据";
1318
+ readonly label: "共享匿名使用数据";
1319
+ readonly description: "帮助我们决定优先支持哪些数据库引擎。除非你开启,否则默认关闭;绝不会发送架构、数据或个人信息。";
1320
+ readonly saveFailed: "无法保存该设置。请重试。";
1321
+ };
1322
+ readonly diagnostics: {
1323
+ readonly title: "诊断";
1324
+ readonly description: "有助于你报告问题的详细信息。不包含任何架构或数据。";
1325
+ readonly copy: "复制诊断信息";
1326
+ readonly copied: "已复制";
1327
+ readonly showLogs: "显示日志";
1328
+ readonly dataSize: "数据大小:{size}";
1329
+ };
1330
+ };
1331
+ };
1332
+ readonly apiKeys: {
1333
+ readonly title: "API 密钥与令牌";
1334
+ readonly subtitle: "管理对工作区的程序化访问。";
1335
+ readonly createButton: "创建密钥";
1336
+ readonly copy: "复制";
1337
+ readonly copied: "已复制";
1338
+ readonly revoke: "吊销密钥";
1339
+ readonly neverUsed: "从未使用";
1340
+ readonly lastUsed: "上次使用于 {since}";
1341
+ readonly scopesOverflow: "另有 {count} 项";
1342
+ readonly status: {
1343
+ readonly active: "有效";
1344
+ readonly revoked: "已吊销";
1345
+ readonly expired: "已过期";
1346
+ };
1347
+ readonly list: {
1348
+ readonly title: "密钥";
1349
+ readonly activeCount: "{count, plural, other {# 个有效密钥}}";
1350
+ };
1351
+ readonly empty: {
1352
+ readonly title: "尚无 API 密钥";
1353
+ readonly body: "创建一个,即可在自己的代码中调用 Adminium API。";
1354
+ };
1355
+ readonly revealed: {
1356
+ readonly title: "新密钥已创建";
1357
+ readonly body: "请立即复制 —— 之后将无法再次查看。";
1358
+ };
1359
+ readonly rolesUnavailable: {
1360
+ readonly title: "你无权查看角色";
1361
+ readonly body: "创建密钥需要选择它所代表的角色,而你的账号无法读取角色列表。请向管理员申请“管理角色”权限。";
1362
+ };
1363
+ readonly quickStart: {
1364
+ readonly title: "快速开始";
1365
+ readonly body: "在 Authorization 请求头中携带密钥完成鉴权。";
1366
+ };
1367
+ readonly create: {
1368
+ readonly title: "创建 API 密钥";
1369
+ readonly description: "该密钥将以你所选角色的权限运行。";
1370
+ readonly name: "名称";
1371
+ readonly namePlaceholder: "例如:分析数据管道";
1372
+ readonly role: "角色";
1373
+ readonly roleHelper: "选择能完成任务的最小权限角色。";
1374
+ readonly expires: "过期时间";
1375
+ readonly expiresHelper: "留空表示密钥永不过期。";
1376
+ readonly submit: "创建密钥";
1377
+ readonly failed: "无法创建密钥";
1378
+ };
1379
+ readonly revokeConfirm: {
1380
+ readonly title: "吊销 API 密钥";
1381
+ readonly body: "任何仍在使用“{name}”调用 API 的代码将立即失败。此操作无法撤销。";
1382
+ readonly prompt: "输入“{name}”以确认";
1383
+ readonly confirm: "吊销密钥";
1384
+ };
1385
+ };
1386
+ readonly changelog: {
1387
+ readonly title: "更新日志";
1388
+ readonly subtitle: "产品更新与版本发布。";
1389
+ readonly allReleases: "全部版本";
1390
+ readonly tag: {
1391
+ readonly new: "新增";
1392
+ readonly improved: "改进";
1393
+ readonly fixed: "修复";
1394
+ readonly security: "安全";
1395
+ };
1396
+ readonly filter: {
1397
+ readonly all: "全部";
1398
+ readonly label: "按类型筛选变更";
1399
+ };
1400
+ readonly empty: {
1401
+ readonly title: "该筛选下暂无内容";
1402
+ readonly body: "还没有版本包含此类变更。";
1403
+ readonly clear: "显示全部变更";
1404
+ };
1405
+ };
1406
+ readonly kb: {
1407
+ readonly title: "知识库";
1408
+ readonly subtitle: "{count, plural, other {# 篇指南}} · 完整文档见 docs.adminium.dev";
1409
+ readonly openDocs: "打开文档";
1410
+ readonly browse: "按主题浏览";
1411
+ readonly hero: {
1412
+ readonly title: "需要什么帮助?";
1413
+ readonly subtitle: "搜索指南、API 文档与故障排查。";
1414
+ readonly placeholder: "搜索知识库…";
1415
+ readonly label: "搜索知识库";
1416
+ readonly clear: "清除搜索";
1417
+ };
1418
+ readonly category: {
1419
+ readonly start: "入门";
1420
+ readonly connect: "连接数据";
1421
+ readonly api: "API 与开发";
1422
+ readonly security: "安全与访问";
1423
+ readonly selfhost: "自托管";
1424
+ readonly trouble: "故障排查";
1425
+ readonly count: "{count, plural, other {# 篇文章}}";
1426
+ readonly selected: "筛选中";
1427
+ };
1428
+ readonly list: {
1429
+ readonly all: "全部指南";
1430
+ readonly clear: "清除筛选";
1431
+ };
1432
+ readonly empty: {
1433
+ readonly title: "没有匹配的指南";
1434
+ readonly body: "换个关键词,或前往 docs.adminium.dev 搜索完整文档。";
1435
+ readonly openDocs: "打开文档";
1436
+ };
1437
+ readonly article: {
1438
+ readonly install: {
1439
+ readonly title: "安装 Adminium";
1440
+ readonly excerpt: "从源码检出运行,或使用 docker run,一分钟内进入首次运行向导。";
1441
+ };
1442
+ readonly firstAdmin: {
1443
+ readonly title: "创建第一位超级管理员";
1444
+ readonly excerpt: "首次运行向导会询问什么,以及它为何只能运行一次。";
1445
+ };
1446
+ readonly connectDb: {
1447
+ readonly title: "连接你的第一个数据库";
1448
+ readonly excerpt: "将 Adminium 指向 PostgreSQL、MySQL 或 SQLite,生成后台管理应用。";
1449
+ };
1450
+ readonly schemaFile: {
1451
+ readonly title: "从模式文件生成";
1452
+ readonly excerpt: "上传 Prisma schema、Django models.py、Rails schema.rb 或 .sql 转储 —— 无需数据库连接。";
1453
+ };
1454
+ readonly readOnly: {
1455
+ readonly title: "使用只读角色";
1456
+ readonly excerpt: "内省仅读取模式元数据。请只授予 Adminium 必需的最小权限。";
1457
+ };
1458
+ readonly apiKeys: {
1459
+ readonly title: "使用 API 密钥鉴权";
1460
+ readonly excerpt: "创建与吊销密钥,以及密钥为何只向你展示一次。";
1461
+ };
1462
+ readonly rest: {
1463
+ readonly title: "REST API 参考";
1464
+ readonly excerpt: "生成应用暴露的每个端点,含请求与响应结构。";
1465
+ };
1466
+ readonly manifest: {
1467
+ readonly title: "页面清单";
1468
+ readonly excerpt: "页面如何以配置描述,以及如何手工编辑。";
1469
+ };
1470
+ readonly roles: {
1471
+ readonly title: "角色与权限";
1472
+ readonly excerpt: "分配查看者、编辑者与管理员,并用权限矩阵自建角色。";
1473
+ };
1474
+ readonly audit: {
1475
+ readonly title: "阅读审计日志";
1476
+ readonly excerpt: "谁在何时、从何处更改了什么。";
1477
+ };
1478
+ readonly secrets: {
1479
+ readonly title: "Adminium 如何保存你的机密";
1480
+ readonly excerpt: "连接凭据使用 ADMINIUM_SECRET 加密存储,API 密钥则以哈希保存。";
1481
+ };
1482
+ readonly docker: {
1483
+ readonly title: "使用 Docker 自托管";
1484
+ readonly excerpt: "官方镜像、docker-compose,以及独立元数据库的运行方式。";
1485
+ };
1486
+ readonly backup: {
1487
+ readonly title: "备份与迁移实例";
1488
+ readonly excerpt: "export-zip 打包服务器配置;导入后可在别处重放同一套设置。";
1489
+ };
1490
+ readonly telemetry: {
1491
+ readonly title: "遥测与更新检查";
1492
+ readonly excerpt: "两者均为选择性开启,默认关闭。开启后会发送哪些内容。";
1493
+ };
1494
+ readonly connectionFails: {
1495
+ readonly title: "数据库连接失败";
1496
+ readonly excerpt: "查看诊断卡片:主机、端口、TLS,以及数据库需放行的 IP。";
1497
+ };
1498
+ readonly missingTables: {
1499
+ readonly title: "内省后缺少表";
1500
+ readonly excerpt: "模式可见性、被排除的表,以及重新运行生成。";
1501
+ };
1502
+ };
1503
+ };
1504
+ readonly desktop: {
1505
+ readonly menu: {
1506
+ readonly file: "文件";
1507
+ readonly fileNewDatabase: "新建本地数据库…";
1508
+ readonly fileOpenSqlite: "打开 SQLite 文件…";
1509
+ readonly fileBackupNow: "立即备份…";
1510
+ readonly fileRestore: "从备份恢复…";
1511
+ readonly edit: "编辑";
1512
+ readonly view: "视图";
1513
+ readonly window: "窗口";
1514
+ readonly help: "帮助";
1515
+ readonly helpDocs: "Adminium 文档";
1516
+ readonly helpShortcuts: "键盘快捷键";
1517
+ readonly helpLogs: "显示日志";
1518
+ readonly helpCheckForUpdates: "检查更新…";
1519
+ readonly helpAbout: "关于 Adminium";
1520
+ };
1521
+ readonly settings: {
1522
+ readonly explainer: "这些设置仅适用于这台电脑上的 Adminium 应用,保存在本机,不会保存到你的工作区。";
1523
+ };
1524
+ readonly security: {
1525
+ readonly heading: "登录";
1526
+ };
1527
+ readonly requireLogin: {
1528
+ readonly label: "在此设备上要求登录";
1529
+ readonly description: "Adminium 通常会在这台电脑上自动登录。开启后,每次启动都会要求输入密码——如果其他人也能使用这台电脑,建议开启。该设置将在下次打开 Adminium 时生效。";
1530
+ readonly savedOn: "下次启动时需要登录";
1531
+ readonly savedOff: "Adminium 将在这台电脑上跳过登录";
1532
+ readonly saveFailed: "无法保存该设置,请重试。";
1533
+ };
1534
+ readonly chip: {
1535
+ readonly local: "本地";
1536
+ readonly lanShare: "本地 · 已在局域网共享";
1537
+ readonly remoteDb: "本地 + 远程数据库";
1538
+ readonly remoteDbOffline: "远程数据库离线";
1539
+ readonly remoteDbOfflineDetail: "无法连接 {names}。这些连接的页面会显示重新连接状态。";
1540
+ };
1541
+ readonly lan: {
1542
+ readonly heading: "在局域网中共享";
1543
+ readonly label: "允许此网络中的其他设备使用 Adminium";
1544
+ readonly description: "同一网络中的其他电脑、平板和手机可以在浏览器中打开 Adminium,并用各自的账户登录。Adminium 必须在这台电脑上保持打开,他们才能访问。";
1545
+ readonly savedOn: "正在局域网中共享";
1546
+ readonly savedOff: "已停止共享 — Adminium 恢复为仅限这台电脑";
1547
+ readonly saveFailed: "无法更改网络共享";
1548
+ readonly noUsers: "目前只有你拥有账户,因此还没有其他人能登录。共享仍然可用 — 只是需要先邀请其他人才能使用。";
1549
+ readonly usersUnknown: "Adminium 无法检查这台电脑上还有谁拥有账户。共享仍然有效,任何拥有账户的人都可以登录——只有这项检查失败了。";
1550
+ readonly acknowledge: "我知道了 — 我接下来会邀请其他人";
1551
+ readonly port: "端口";
1552
+ readonly portHelper: "默认 {port}";
1553
+ readonly portInvalid: "请输入 1024 到 65535 之间的数字。";
1554
+ readonly applyPort: "更改端口";
1555
+ readonly portInUse: "端口 {port} 已被其他程序占用。";
1556
+ readonly portInUseHint: "未做任何更改 — 共享仍处于关闭状态。";
1557
+ readonly portInUseNoSuggestion: "未做任何更改。请尝试其他端口。";
1558
+ readonly tryPort: "尝试 {port}";
1559
+ readonly urlsHeading: "在其他设备上打开";
1560
+ readonly noUrls: "这台电脑当前未连接到网络,因此没有可共享的地址。连接 Wi-Fi 或插入网线后,此列表会自动填充。";
1561
+ readonly copyUrl: "复制";
1562
+ readonly sessions: "{count, plural, =0 {没有来自此网络的设备登录} other {已有 # 台设备从此网络登录}}";
1563
+ readonly sessionsUnknown: "正在检查已连接的设备…";
1564
+ readonly pending: "正在开始共享…";
1565
+ readonly mismatch: "Adminium 在此网络中仍可访问";
1566
+ readonly mismatchBody: "共享已关闭,但服务器尚未释放网络。请重启 Adminium 以关闭它。";
1567
+ readonly transportTitle: "局域网中的流量未加密。";
1568
+ readonly transportBody: "仅在你信任的网络中共享。如需远程访问,请使用置于 HTTPS 之后的 Adminium 自托管版本。";
1569
+ readonly firewall: "首次共享时,操作系统会询问是否允许传入连接 — 请选择\"允许\",否则其他设备将无法访问 Adminium。";
1570
+ };
1571
+ readonly setup: {
1572
+ readonly title: "欢迎使用 Adminium";
1573
+ readonly subtitle: "只需四个简短步骤,Adminium 就能从你的数据库生成一个管理应用。所有内容都保留在这台电脑上。";
1574
+ readonly progress: "设置进度";
1575
+ readonly back: "上一步";
1576
+ readonly continue: "继续";
1577
+ readonly createAccount: "创建账户并继续";
1578
+ readonly step: {
1579
+ readonly location: "欢迎";
1580
+ readonly database: "你的第一个数据库";
1581
+ readonly account: "你的账户";
1582
+ readonly generate: "生成";
1583
+ };
1584
+ readonly dataDir: {
1585
+ readonly heading: "Adminium 应该把你的数据保存在哪里?";
1586
+ readonly description: "你的数据库、设置和备份都存放在这个文件夹中。所有内容都保留在这台电脑上——不会上传到任何地方。";
1587
+ readonly label: "数据文件夹";
1588
+ readonly loading: "正在读取当前位置…";
1589
+ readonly pending: "继续时 Adminium 会重启,以便切换到这个文件夹。";
1590
+ readonly change: "更改…";
1591
+ readonly revert: "撤销";
1592
+ readonly dialogTitle: "选择 Adminium 保存数据的位置";
1593
+ readonly cloudSyncTitle: "该文件夹会同步到云端";
1594
+ readonly cloudSyncWarning: "Adminium 将数据存储在 SQLite 文件中。{provider} 会在后台复制“{folder}”中的文件进行同步,这可能损坏正在打开的数据库——并在毫无提示的情况下丢失数据。请选择 {provider} 之外的文件夹。";
1595
+ readonly chooseAnother: "选择其他文件夹";
1596
+ readonly useAnyway: "仍然使用——我接受风险";
1597
+ readonly unusableTitle: "Adminium 无法使用该文件夹";
1598
+ readonly failed: "Adminium 无法使用该文件夹。";
1599
+ };
1600
+ readonly source: {
1601
+ readonly heading: "Adminium 应该基于什么来构建?";
1602
+ readonly description: "Adminium 会读取数据库的结构并据此生成管理应用。你之后可以添加更多数据库。";
1603
+ readonly groupLabel: "数据库来源";
1604
+ readonly local: {
1605
+ readonly title: "创建新的本地数据库";
1606
+ readonly description: "从零开始,或使用你已有的结构文件。数据库会创建在你的数据文件夹中。";
1607
+ readonly name: "数据库名称";
1608
+ readonly namePlaceholder: "运营";
1609
+ readonly nameUnusable: "请至少使用一个字母或数字——文件名由此生成。";
1610
+ readonly fileHelper: "将创建 {file}";
1611
+ readonly schemaLabel: "起始方式";
1612
+ readonly blank: "空白";
1613
+ readonly fromFile: "结构文件";
1614
+ readonly schemaFile: "结构文件";
1615
+ readonly schemaFileHelper: ".sql、pg_dump、Prisma、Drizzle、TypeORM、Sequelize、schema.rb、Django 或 Adminium JSON。Adminium 会将其转换为 SQLite。";
1616
+ readonly placeholder: "自动生成占位数据";
1617
+ readonly placeholderHelper: "你导入的结构没有数据行。为每个表填充逼真的示例数据,让仪表板和图表立刻能够呈现。";
1618
+ };
1619
+ readonly openSqlite: {
1620
+ readonly title: "打开现有的 SQLite 文件";
1621
+ readonly description: "让 Adminium 指向这台电脑上的 .sqlite 文件。文件会在原位打开——不会复制或移动。";
1622
+ readonly browse: "选择一个 .sqlite 文件…";
1623
+ readonly change: "选择其他文件…";
1624
+ readonly networkTitle: "该文件位于网络共享上";
1625
+ readonly networkBody: "SQLite 的锁机制在网络文件共享上并不可靠,写入过程中断开连接可能损坏数据库。复制到这台电脑本地磁盘上更安全。";
1626
+ };
1627
+ readonly remote: {
1628
+ readonly title: "连接到服务器数据库";
1629
+ readonly description: "PostgreSQL 或 MySQL。需要一个可访问的网络数据库;Adminium 自身的数据表仍然保留在这台电脑上。";
1630
+ readonly networkNote: "需要一个可访问的网络数据库";
1631
+ readonly metaNote: "无论如何,Adminium 自身的数据表——你的页面、设置和登录信息——都保留在这台电脑的数据文件夹中。";
1632
+ readonly engine: "引擎";
1633
+ readonly name: "连接名称";
1634
+ readonly namePlaceholder: "生产环境";
1635
+ readonly dsn: "连接字符串";
1636
+ readonly dsnHelper: "Adminium 会在连接时测试它。如果你只需要仪表板,请使用只读角色。";
1637
+ };
1638
+ readonly demo: {
1639
+ readonly title: "体验演示数据库";
1640
+ readonly description: "一个现成的团队运营数据库,让你在指向自己的数据之前先看看 Adminium 会构建出什么。你可以随时删除它。";
1641
+ readonly unavailable: "此版本不包含演示数据,因此没有可加载的内容。请选择上面的某个选项。";
1642
+ };
1643
+ };
1644
+ readonly account: {
1645
+ readonly heading: "创建你的账户";
1646
+ readonly description: "这是这份 Adminium 的管理员账户。密码用于保护你的备份以及你在网络上共享的对象——每次启动时不会向你索取密码。";
1647
+ readonly name: "你的姓名";
1648
+ readonly email: "邮箱";
1649
+ readonly password: "密码";
1650
+ readonly passwordHelper: "至少 {min} 个字符。";
1651
+ readonly confirm: "确认密码";
1652
+ readonly strength: "密码强度";
1653
+ readonly strengthLevels: {
1654
+ readonly weak: "弱";
1655
+ readonly fair: "一般";
1656
+ readonly good: "良好";
1657
+ readonly strong: "强";
1658
+ };
1659
+ readonly singleUser: "在这台电脑上跳过登录";
1660
+ readonly singleUserHelper: "在这里打开时,Adminium 会自动为你登录。如果其他人也使用这台机器,请关闭此项。你之后可以在 设置 → 桌面 中更改。";
1661
+ readonly locale: "语言";
1662
+ readonly theme: "外观";
1663
+ readonly alreadyExists: "这份 Adminium 已经有一个账户。请改用该账户登录。";
1664
+ readonly failed: "Adminium 无法创建该账户。";
1665
+ };
1666
+ readonly generate: {
1667
+ readonly creating: "正在设置你的数据库…";
1668
+ readonly introspecting: "正在读取你的结构——表、列和关系…";
1669
+ readonly working: "处理中…";
1670
+ readonly offlineNote: "这一切都在这台电脑上完成。";
1671
+ readonly failedTitle: "Adminium 无法设置该数据库";
1672
+ readonly failedBody: "出了点问题。请重试。";
1673
+ readonly retry: "重试";
1674
+ };
1675
+ };
1676
+ };
1677
+ readonly capabilities: {
1678
+ readonly heading: "应用权限";
1679
+ readonly description: "您安装的应用可以请求使用本计算机的硬件。您需逐一批准,并可随时撤销访问权限。";
1680
+ readonly grantedTo: "已允许 {app}";
1681
+ readonly status: {
1682
+ readonly available: "可用";
1683
+ readonly stub: "尚不可用";
1684
+ readonly unavailable: "不可用";
1685
+ };
1686
+ readonly allow: {
1687
+ readonly action: "允许…";
1688
+ };
1689
+ readonly revoke: {
1690
+ readonly action: "撤销";
1691
+ readonly saved: "已撤销访问权限";
1692
+ readonly failed: "无法撤销访问权限,请重试。";
1693
+ };
1694
+ readonly grant: {
1695
+ readonly saved: "已允许访问";
1696
+ readonly failed: "无法允许访问,请重试。";
1697
+ };
1698
+ readonly catalog: {
1699
+ readonly printerEscpos: {
1700
+ readonly name: "小票打印机 (ESC/POS)";
1701
+ readonly scope: "在小票打印机上打印并打开连接的钱箱";
1702
+ };
1703
+ };
1704
+ readonly consent: {
1705
+ readonly title: "允许 {app}?";
1706
+ readonly subtitle: "{app} 请求使用本计算机的硬件。";
1707
+ readonly willAllow: "这将允许 {app}:";
1708
+ readonly revokeNote: "您可以随时在“设置 → 桌面”中撤销。仅允许您信任的应用。";
1709
+ readonly deny: "暂不";
1710
+ readonly approve: "允许";
1711
+ };
1712
+ };
1713
+ readonly emailTemplates: {
1714
+ readonly title: "邮件模板";
1715
+ readonly subtitle: "工作区发送的事务性和生命周期邮件。";
1716
+ readonly search: "搜索模板…";
1717
+ readonly loadFailed: "无法加载模板";
1718
+ readonly empty: "还没有邮件模板";
1719
+ readonly emptyBody: "服务器初始化模板或您创建模板后,将显示在这里。";
1720
+ readonly noMatches: "没有匹配的模板";
1721
+ readonly noMatchesBody: "试试其他搜索词。";
1722
+ readonly live: "已启用";
1723
+ readonly disabled: "已禁用";
1724
+ readonly name: "模板名称";
1725
+ readonly subject: "主题";
1726
+ readonly enabled: "已启用";
1727
+ };
1728
+ readonly board: {
1729
+ readonly addCard: "添加卡片";
1730
+ readonly compose: {
1731
+ readonly placeholder: "卡片标题…";
1732
+ readonly add: "添加";
1733
+ readonly cancel: "取消";
1734
+ };
1735
+ readonly empty: {
1736
+ readonly title: "没有看板列";
1737
+ readonly body: "添加状态字段以将卡片分组到列中。";
1738
+ };
1739
+ };
1740
+ readonly calendar: {
1741
+ readonly dateRange: "日期范围";
1742
+ readonly compose: {
1743
+ readonly placeholder: "事件标题…";
1744
+ readonly add: "添加";
1745
+ readonly cancel: "取消";
1746
+ readonly open: "添加事件";
1747
+ };
1748
+ readonly agenda: {
1749
+ readonly empty: "暂无安排";
1750
+ };
1751
+ };
1752
+ readonly scheduler: {
1753
+ readonly prevWeek: "上一周";
1754
+ readonly nextWeek: "下一周";
1755
+ readonly week: "周";
1756
+ readonly month: "月";
1757
+ readonly resource: "资源";
1758
+ readonly coverage: "覆盖";
1759
+ readonly addShift: "添加班次";
1760
+ readonly shiftCount: "{n} 个班次";
1761
+ };
1762
+ readonly planning: {
1763
+ readonly drawer: {
1764
+ readonly close: "关闭";
1765
+ readonly loading: "正在加载记录";
1766
+ readonly error: "无法加载此记录。";
1767
+ };
1768
+ };
1769
+ readonly files: {
1770
+ readonly uploadsUnavailable: "此页面暂不支持上传。";
1771
+ };
1772
+ readonly chat: {
1773
+ readonly messageSent: "消息已发送";
1774
+ readonly sendFailed: "消息发送失败。";
1775
+ };
1776
+ readonly templates: {
1777
+ readonly crud: {
1778
+ readonly title: "记录";
1779
+ };
1780
+ readonly dashboard: {
1781
+ readonly title: "仪表盘";
1782
+ };
1783
+ readonly board: {
1784
+ readonly title: "看板";
1785
+ };
1786
+ readonly calendar: {
1787
+ readonly title: "日历";
1788
+ };
1789
+ readonly scheduler: {
1790
+ readonly title: "排班";
1791
+ };
1792
+ readonly logViewer: {
1793
+ readonly title: "日志";
1794
+ };
1795
+ readonly files: {
1796
+ readonly title: "文件";
1797
+ };
1798
+ readonly chat: {
1799
+ readonly title: "聊天";
1800
+ };
1801
+ readonly builder: {
1802
+ readonly title: "构建器";
1803
+ };
1804
+ readonly wizard: {
1805
+ readonly title: "向导";
1806
+ };
1807
+ readonly settings: {
1808
+ readonly title: "设置";
1809
+ };
1810
+ readonly directory: {
1811
+ readonly title: "通讯录";
1812
+ readonly searchPlaceholder: "搜索人员…";
1813
+ readonly allFilter: "全部";
1814
+ readonly clearFilters: "清除筛选";
1815
+ readonly detailTitle: "人员";
1816
+ readonly emptyTitle: "还没有人员";
1817
+ readonly emptyBody: "表中有数据后,人员将显示在这里。";
1818
+ readonly noMatchesTitle: "没有匹配的人员";
1819
+ readonly noMatchesBody: "试试其他搜索词或移除筛选。";
1820
+ readonly errorTitle: "无法加载此通讯录";
1821
+ readonly loading: "正在加载人员";
1822
+ readonly memberCount: "{count} 人";
1823
+ };
1824
+ readonly masterDetail: {
1825
+ readonly title: "列表与详情";
1826
+ readonly allFilter: "全部";
1827
+ readonly clearFilters: "清除筛选";
1828
+ readonly emptyTitle: "这里还没有内容";
1829
+ readonly emptyBody: "表中有数据后,记录将显示在这里。";
1830
+ readonly noMatchesTitle: "没有匹配的记录";
1831
+ readonly noMatchesBody: "试试移除筛选。";
1832
+ readonly errorTitle: "无法加载此列表";
1833
+ readonly loading: "正在加载记录";
1834
+ readonly selectPrompt: "选择一条记录";
1835
+ };
1836
+ readonly queueInbox: {
1837
+ readonly title: "队列";
1838
+ readonly approve: "批准";
1839
+ readonly reject: "拒绝";
1840
+ readonly allSegment: "全部";
1841
+ readonly approvedToast: "已批准 {count} 项。";
1842
+ readonly rejectedToast: "已拒绝 {count} 项。";
1843
+ readonly undoneToast: "已撤销该决定。";
1844
+ readonly failedToast: "操作失败。";
1845
+ readonly bulkFailed: "所选行中有 {failed}/{total} 行未能更新。";
1846
+ readonly undoFailedToast: "无法撤销该决定。";
1847
+ readonly rejectTitle: "拒绝请求";
1848
+ readonly rejectCount: "已选 · {count}";
1849
+ readonly rejectNote: "请求者将收到通知及您的备注。";
1850
+ readonly rejectPlaceholder: "为请求者添加备注…";
1851
+ readonly rejectConfirm: "拒绝";
1852
+ readonly emptyTitle: "队列为空";
1853
+ readonly emptyBody: "新请求到达后将显示在这里。";
1854
+ readonly caughtUpTitle: "全部处理完毕";
1855
+ readonly caughtUpBody: "此标签页当前没有请求。";
1856
+ readonly errorTitle: "无法加载此队列";
1857
+ readonly loading: "正在加载队列";
1858
+ readonly selectPrompt: "选择一个请求";
1859
+ readonly daysUnit: "{count} 天";
1860
+ };
1861
+ };
1862
+ readonly dataio: {
1863
+ readonly back: "返回";
1864
+ readonly import: {
1865
+ readonly title: "导入数据";
1866
+ readonly stepUpload: "上传";
1867
+ readonly stepMap: "映射列";
1868
+ readonly stepValidate: "校验";
1869
+ readonly stepRun: "导入并核查";
1870
+ readonly targetLabel: "目标表";
1871
+ readonly targetPlaceholder: "选择一个表页面…";
1872
+ readonly notATable: "该页面不是数据表——请选择要导入的表页面。";
1873
+ readonly dropTitle: "拖放 CSV 文件以导入";
1874
+ readonly dropHint: "CSV 最大 32 MB——第一行必须是表头";
1875
+ readonly skipTarget: "不导入";
1876
+ readonly mapHint: "{file} 中有 {count} 行数据——请为每一列选择目标。";
1877
+ readonly validating: "正在校验…";
1878
+ readonly toValidate: "校验";
1879
+ readonly validateFailed: "校验失败。";
1880
+ readonly validationSummary: "{total} 行中有 {valid} 行可导入——将跳过 {invalid} 行。";
1881
+ readonly allValid: "所有行均通过校验";
1882
+ readonly run: "运行导入";
1883
+ readonly runSkipping: "导入 {valid} 行(跳过 {invalid} 行)";
1884
+ readonly progressLabel: "导入进度";
1885
+ readonly running: "正在导入…";
1886
+ readonly kpiTotal: "文件中的行数";
1887
+ readonly kpiCreated: "已创建";
1888
+ readonly kpiUpdated: "已更新";
1889
+ readonly kpiSkipped: "已跳过";
1890
+ readonly inconsistent: "导入数字不一致——总数必须等于已创建 + 已更新 + 已跳过。";
1891
+ readonly downloadErrors: "下载跳过行报告(CSV)";
1892
+ readonly runFailed: "导入失败。";
1893
+ };
1894
+ readonly exports: {
1895
+ readonly title: "数据导出";
1896
+ readonly tableLabel: "数据表";
1897
+ readonly tablePlaceholder: "选择数据表…";
1898
+ readonly notATable: "该页面不是数据表——请选择要导出的表页面。";
1899
+ readonly formatLabel: "格式";
1900
+ readonly create: "导出";
1901
+ readonly createFailed: "无法发起导出。";
1902
+ readonly retention: "导出文件保留 30 天后过期。";
1903
+ readonly statusProcessing: "处理中…";
1904
+ readonly statusReady: "已就绪——{rows} 行·点击下载";
1905
+ readonly statusFailed: "失败——{error}";
1906
+ readonly statusCancelled: "已取消";
1907
+ readonly statusExpired: "已过期";
1908
+ readonly emptyTitle: "还没有导出";
1909
+ readonly emptyBody: "在上方发起导出——生成的文件将连同状态显示在这里。";
1910
+ };
1911
+ };
1912
+ readonly reports: {
1913
+ readonly title: "定时报告";
1914
+ readonly subtitle: "页面的定期数据快照,以应用内通知送达。";
1915
+ readonly new: "新建报告";
1916
+ readonly loadFailed: "无法加载定时报告。";
1917
+ readonly saveFailed: "无法保存此报告。";
1918
+ readonly nextRun: "下次运行";
1919
+ readonly emptyTitle: "还没有定时报告";
1920
+ readonly emptyBody: "创建一个,即可定期获取任意表页面的数据快照。";
1921
+ readonly createTitle: "新建定时报告";
1922
+ readonly editTitle: "编辑定时报告";
1923
+ readonly nameLabel: "名称";
1924
+ readonly namePlaceholder: "例如:每周营收";
1925
+ readonly pageLabel: "页面";
1926
+ readonly pagePlaceholder: "选择页面…";
1927
+ readonly frequencyLabel: "频率";
1928
+ readonly frequency: {
1929
+ readonly daily: "每天";
1930
+ readonly weekly: "每周";
1931
+ readonly monthly: "每月";
1932
+ };
1933
+ readonly dayOfWeekLabel: "星期";
1934
+ readonly dayOfMonthLabel: "每月日期";
1935
+ readonly timeLabel: "时间";
1936
+ readonly timezoneLabel: "时区";
1937
+ readonly formatLabel: "送达方式";
1938
+ readonly formatHint: "数据快照(PDF/PNG 渲染将在后续版本推出)——每次运行都会生成 CSV 快照和应用内通知。";
1939
+ readonly recipientsLabel: "收件人";
1940
+ readonly recipientsHint: "与报告一起保存。邮件送达将在后续版本推出——目前运行结果以应用内通知提醒您。";
1941
+ readonly deliveryBadge: "CSV 快照";
1942
+ readonly delete: "删除";
1943
+ readonly create: "创建";
1944
+ readonly cadence: {
1945
+ readonly daily: "每天 {time}({zone})";
1946
+ readonly weekly: "每周 · {day} {time}({zone})";
1947
+ readonly monthly: "每月 · {day} 日 {time}({zone})";
1948
+ };
1949
+ };
1950
+ readonly notifications: {
1951
+ readonly channel: {
1952
+ readonly inApp: "应用内";
1953
+ readonly email: "邮件";
1954
+ readonly push: "推送";
1955
+ };
1956
+ readonly event: {
1957
+ readonly reportReady: "定时报告已就绪";
1958
+ readonly reportFailed: "定时报告失败";
1959
+ readonly backupCompleted: "备份完成";
1960
+ };
1961
+ };
1962
+ };
1963
+ export default _default;
1964
+ //# sourceMappingURL=common.d.ts.map