@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.
- package/dist/a11y-keys.d.ts +1 -1
- package/dist/a11y-keys.d.ts.map +1 -1
- package/dist/a11y-keys.js +481 -172
- package/dist/a11y-keys.js.map +1 -1
- package/dist/create-i18n.d.ts +16 -6
- package/dist/create-i18n.d.ts.map +1 -1
- package/dist/create-i18n.js +23 -9
- package/dist/create-i18n.js.map +1 -1
- package/dist/editing.d.ts +1 -1
- package/dist/editing.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -8
- package/dist/index.js.map +1 -1
- package/dist/keys.d.ts +6 -4
- package/dist/keys.d.ts.map +1 -1
- package/dist/keys.js +6 -4
- package/dist/keys.js.map +1 -1
- package/dist/overrides.d.ts +1 -1
- package/dist/overrides.d.ts.map +1 -1
- package/dist/resources/ar-eg/common.d.ts +96 -970
- package/dist/resources/ar-eg/common.d.ts.map +1 -1
- package/dist/resources/ar-eg/common.js +99 -973
- package/dist/resources/ar-eg/common.js.map +1 -1
- package/dist/resources/ar-eg/errors.d.ts +3 -2
- package/dist/resources/ar-eg/errors.d.ts.map +1 -1
- package/dist/resources/ar-eg/errors.js +3 -2
- package/dist/resources/ar-eg/errors.js.map +1 -1
- package/dist/resources/ar-eg/generated.d.ts +3 -2
- package/dist/resources/ar-eg/generated.d.ts.map +1 -1
- package/dist/resources/ar-eg/generated.js +3 -2
- package/dist/resources/ar-eg/generated.js.map +1 -1
- package/dist/resources/ar-eg/studio.d.ts +1282 -2
- package/dist/resources/ar-eg/studio.d.ts.map +1 -1
- package/dist/resources/ar-eg/studio.js +1282 -2
- package/dist/resources/ar-eg/studio.js.map +1 -1
- package/dist/resources/ar-eg/ui.d.ts +60 -2
- package/dist/resources/ar-eg/ui.d.ts.map +1 -1
- package/dist/resources/ar-eg/ui.js +72 -14
- package/dist/resources/ar-eg/ui.js.map +1 -1
- package/dist/resources/cs-cz/common.d.ts +96 -970
- package/dist/resources/cs-cz/common.d.ts.map +1 -1
- package/dist/resources/cs-cz/common.js +99 -973
- package/dist/resources/cs-cz/common.js.map +1 -1
- package/dist/resources/cs-cz/errors.d.ts +3 -2
- package/dist/resources/cs-cz/errors.d.ts.map +1 -1
- package/dist/resources/cs-cz/errors.js +3 -2
- package/dist/resources/cs-cz/errors.js.map +1 -1
- package/dist/resources/cs-cz/generated.d.ts +3 -2
- package/dist/resources/cs-cz/generated.d.ts.map +1 -1
- package/dist/resources/cs-cz/generated.js +3 -2
- package/dist/resources/cs-cz/generated.js.map +1 -1
- package/dist/resources/cs-cz/studio.d.ts +1282 -2
- package/dist/resources/cs-cz/studio.d.ts.map +1 -1
- package/dist/resources/cs-cz/studio.js +1282 -2
- package/dist/resources/cs-cz/studio.js.map +1 -1
- package/dist/resources/cs-cz/ui.d.ts +60 -2
- package/dist/resources/cs-cz/ui.d.ts.map +1 -1
- package/dist/resources/cs-cz/ui.js +72 -14
- package/dist/resources/cs-cz/ui.js.map +1 -1
- package/dist/resources/da-dk/common.d.ts +96 -970
- package/dist/resources/da-dk/common.d.ts.map +1 -1
- package/dist/resources/da-dk/common.js +99 -973
- package/dist/resources/da-dk/common.js.map +1 -1
- package/dist/resources/da-dk/errors.d.ts +3 -2
- package/dist/resources/da-dk/errors.d.ts.map +1 -1
- package/dist/resources/da-dk/errors.js +3 -2
- package/dist/resources/da-dk/errors.js.map +1 -1
- package/dist/resources/da-dk/generated.d.ts +3 -2
- package/dist/resources/da-dk/generated.d.ts.map +1 -1
- package/dist/resources/da-dk/generated.js +3 -2
- package/dist/resources/da-dk/generated.js.map +1 -1
- package/dist/resources/da-dk/studio.d.ts +1282 -2
- package/dist/resources/da-dk/studio.d.ts.map +1 -1
- package/dist/resources/da-dk/studio.js +1282 -2
- package/dist/resources/da-dk/studio.js.map +1 -1
- package/dist/resources/da-dk/ui.d.ts +60 -2
- package/dist/resources/da-dk/ui.d.ts.map +1 -1
- package/dist/resources/da-dk/ui.js +72 -14
- package/dist/resources/da-dk/ui.js.map +1 -1
- package/dist/resources/de-de/common.d.ts +96 -970
- package/dist/resources/de-de/common.d.ts.map +1 -1
- package/dist/resources/de-de/common.js +99 -973
- package/dist/resources/de-de/common.js.map +1 -1
- package/dist/resources/de-de/errors.d.ts +3 -2
- package/dist/resources/de-de/errors.d.ts.map +1 -1
- package/dist/resources/de-de/errors.js +3 -2
- package/dist/resources/de-de/errors.js.map +1 -1
- package/dist/resources/de-de/generated.d.ts +3 -2
- package/dist/resources/de-de/generated.d.ts.map +1 -1
- package/dist/resources/de-de/generated.js +3 -2
- package/dist/resources/de-de/generated.js.map +1 -1
- package/dist/resources/de-de/studio.d.ts +1282 -2
- package/dist/resources/de-de/studio.d.ts.map +1 -1
- package/dist/resources/de-de/studio.js +1282 -2
- package/dist/resources/de-de/studio.js.map +1 -1
- package/dist/resources/de-de/ui.d.ts +60 -2
- package/dist/resources/de-de/ui.d.ts.map +1 -1
- package/dist/resources/de-de/ui.js +72 -14
- package/dist/resources/de-de/ui.js.map +1 -1
- package/dist/resources/eager.d.ts +3 -0
- package/dist/resources/eager.d.ts.map +1 -0
- package/dist/resources/eager.js +25 -0
- package/dist/resources/eager.js.map +1 -0
- package/dist/resources/en-us/common.d.ts +96 -970
- package/dist/resources/en-us/common.d.ts.map +1 -1
- package/dist/resources/en-us/common.js +99 -973
- package/dist/resources/en-us/common.js.map +1 -1
- package/dist/resources/en-us/errors.d.ts +3 -2
- package/dist/resources/en-us/errors.d.ts.map +1 -1
- package/dist/resources/en-us/errors.js +3 -2
- package/dist/resources/en-us/errors.js.map +1 -1
- package/dist/resources/en-us/generated.d.ts +3 -2
- package/dist/resources/en-us/generated.d.ts.map +1 -1
- package/dist/resources/en-us/generated.js +3 -2
- package/dist/resources/en-us/generated.js.map +1 -1
- package/dist/resources/en-us/studio.d.ts +1282 -2
- package/dist/resources/en-us/studio.d.ts.map +1 -1
- package/dist/resources/en-us/studio.js +1282 -2
- package/dist/resources/en-us/studio.js.map +1 -1
- package/dist/resources/en-us/ui.d.ts +60 -2
- package/dist/resources/en-us/ui.d.ts.map +1 -1
- package/dist/resources/en-us/ui.js +72 -14
- package/dist/resources/en-us/ui.js.map +1 -1
- package/dist/resources/fr-fr/common.d.ts +96 -970
- package/dist/resources/fr-fr/common.d.ts.map +1 -1
- package/dist/resources/fr-fr/common.js +99 -973
- package/dist/resources/fr-fr/common.js.map +1 -1
- package/dist/resources/fr-fr/errors.d.ts +3 -2
- package/dist/resources/fr-fr/errors.d.ts.map +1 -1
- package/dist/resources/fr-fr/errors.js +3 -2
- package/dist/resources/fr-fr/errors.js.map +1 -1
- package/dist/resources/fr-fr/generated.d.ts +3 -2
- package/dist/resources/fr-fr/generated.d.ts.map +1 -1
- package/dist/resources/fr-fr/generated.js +3 -2
- package/dist/resources/fr-fr/generated.js.map +1 -1
- package/dist/resources/fr-fr/studio.d.ts +1282 -2
- package/dist/resources/fr-fr/studio.d.ts.map +1 -1
- package/dist/resources/fr-fr/studio.js +1282 -2
- package/dist/resources/fr-fr/studio.js.map +1 -1
- package/dist/resources/fr-fr/ui.d.ts +60 -2
- package/dist/resources/fr-fr/ui.d.ts.map +1 -1
- package/dist/resources/fr-fr/ui.js +72 -14
- package/dist/resources/fr-fr/ui.js.map +1 -1
- package/dist/resources/index.d.ts +3 -6
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +15 -14
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/lazy.d.ts +19 -9
- package/dist/resources/lazy.d.ts.map +1 -1
- package/dist/resources/lazy.js +4 -2
- package/dist/resources/lazy.js.map +1 -1
- package/dist/resources/namespaces.d.ts +43 -0
- package/dist/resources/namespaces.d.ts.map +1 -0
- package/dist/resources/namespaces.js +37 -0
- package/dist/resources/namespaces.js.map +1 -0
- package/dist/resources/zh-cn/common.d.ts +96 -970
- package/dist/resources/zh-cn/common.d.ts.map +1 -1
- package/dist/resources/zh-cn/common.js +99 -973
- package/dist/resources/zh-cn/common.js.map +1 -1
- package/dist/resources/zh-cn/errors.d.ts +3 -2
- package/dist/resources/zh-cn/errors.d.ts.map +1 -1
- package/dist/resources/zh-cn/errors.js +3 -2
- package/dist/resources/zh-cn/errors.js.map +1 -1
- package/dist/resources/zh-cn/generated.d.ts +3 -2
- package/dist/resources/zh-cn/generated.d.ts.map +1 -1
- package/dist/resources/zh-cn/generated.js +3 -2
- package/dist/resources/zh-cn/generated.js.map +1 -1
- package/dist/resources/zh-cn/studio.d.ts +1282 -2
- package/dist/resources/zh-cn/studio.d.ts.map +1 -1
- package/dist/resources/zh-cn/studio.js +1282 -2
- package/dist/resources/zh-cn/studio.js.map +1 -1
- package/dist/resources/zh-cn/ui.d.ts +60 -2
- package/dist/resources/zh-cn/ui.d.ts.map +1 -1
- package/dist/resources/zh-cn/ui.js +72 -14
- package/dist/resources/zh-cn/ui.js.map +1 -1
- package/dist/resources/zh-tw/common.d.ts +96 -970
- package/dist/resources/zh-tw/common.d.ts.map +1 -1
- package/dist/resources/zh-tw/common.js +99 -973
- package/dist/resources/zh-tw/common.js.map +1 -1
- package/dist/resources/zh-tw/errors.d.ts +3 -2
- package/dist/resources/zh-tw/errors.d.ts.map +1 -1
- package/dist/resources/zh-tw/errors.js +3 -2
- package/dist/resources/zh-tw/errors.js.map +1 -1
- package/dist/resources/zh-tw/generated.d.ts +3 -2
- package/dist/resources/zh-tw/generated.d.ts.map +1 -1
- package/dist/resources/zh-tw/generated.js +3 -2
- package/dist/resources/zh-tw/generated.js.map +1 -1
- package/dist/resources/zh-tw/studio.d.ts +1282 -2
- package/dist/resources/zh-tw/studio.d.ts.map +1 -1
- package/dist/resources/zh-tw/studio.js +1282 -2
- package/dist/resources/zh-tw/studio.js.map +1 -1
- package/dist/resources/zh-tw/ui.d.ts +60 -2
- package/dist/resources/zh-tw/ui.d.ts.map +1 -1
- package/dist/resources/zh-tw/ui.js +72 -14
- package/dist/resources/zh-tw/ui.js.map +1 -1
- package/dist/review-status.js +7 -7
- package/locales/ar-EG/.meta.json +3783 -2339
- package/locales/ar-EG/common.json +96 -971
- package/locales/ar-EG/studio.json +1279 -0
- package/locales/ar-EG/ui.json +69 -12
- package/locales/cs-CZ/.meta.json +3849 -2405
- package/locales/cs-CZ/common.json +96 -971
- package/locales/cs-CZ/studio.json +1279 -0
- package/locales/cs-CZ/ui.json +69 -12
- package/locales/da-DK/.meta.json +3935 -2491
- package/locales/da-DK/common.json +96 -971
- package/locales/da-DK/studio.json +1279 -0
- package/locales/da-DK/ui.json +69 -12
- package/locales/de-DE/.meta.json +3895 -2451
- package/locales/de-DE/common.json +96 -971
- package/locales/de-DE/studio.json +1279 -0
- package/locales/de-DE/ui.json +69 -12
- package/locales/en-US/common.json +96 -971
- package/locales/en-US/studio.json +1279 -0
- package/locales/en-US/ui.json +69 -12
- package/locales/fr-FR/.meta.json +3964 -2520
- package/locales/fr-FR/common.json +96 -971
- package/locales/fr-FR/studio.json +1279 -0
- package/locales/fr-FR/ui.json +69 -12
- package/locales/zh-CN/.meta.json +3781 -2337
- package/locales/zh-CN/common.json +96 -971
- package/locales/zh-CN/studio.json +1279 -0
- package/locales/zh-CN/ui.json +69 -12
- package/locales/zh-TW/.meta.json +3785 -2341
- package/locales/zh-TW/common.json +96 -971
- package/locales/zh-TW/studio.json +1279 -0
- package/locales/zh-TW/ui.json +69 -12
- package/package.json +1 -1
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"auth": {
|
|
16
16
|
"headline": "Turn any database into a dashboard.",
|
|
17
|
+
"description": "Connect PostgreSQL and Adminium generates a themeable, permission-aware admin app — no code required.",
|
|
17
18
|
"trust": "AGPL core · Self-hosted · Your data stays yours",
|
|
18
19
|
"signIn": {
|
|
19
20
|
"title": "Welcome back",
|
|
@@ -104,6 +105,11 @@
|
|
|
104
105
|
"audit": "Audit log",
|
|
105
106
|
"security": "Password & sessions"
|
|
106
107
|
},
|
|
108
|
+
"apps": {
|
|
109
|
+
"frame": {
|
|
110
|
+
"noFrames": "This app needs a browser that supports frames."
|
|
111
|
+
}
|
|
112
|
+
},
|
|
107
113
|
"topbar": {
|
|
108
114
|
"search": "Search…",
|
|
109
115
|
"notifications": "Notifications",
|
|
@@ -115,6 +121,8 @@
|
|
|
115
121
|
"profile": "Profile",
|
|
116
122
|
"preferences": "Preferences",
|
|
117
123
|
"studio": "Studio",
|
|
124
|
+
"dataConnections": "Data connections",
|
|
125
|
+
"workspaceSettings": "Workspace settings",
|
|
118
126
|
"signOut": "Sign out"
|
|
119
127
|
},
|
|
120
128
|
"palette": {
|
|
@@ -231,10 +239,16 @@
|
|
|
231
239
|
"body": "This workspace has been suspended by an administrator. Your data is preserved — contact the workspace owner to restore access.",
|
|
232
240
|
"primary": "Contact owner",
|
|
233
241
|
"secondary": "Go back"
|
|
242
|
+
},
|
|
243
|
+
"connectionPaused": {
|
|
244
|
+
"title": "This connection is paused",
|
|
245
|
+
"body": "An admin paused the database behind this page, so it is not loading data right now. Nothing has been deleted — it comes back as soon as the connection is resumed in Studio → Data connections.",
|
|
246
|
+
"secondary": "Go back"
|
|
234
247
|
}
|
|
235
248
|
},
|
|
236
249
|
"notFound": {
|
|
237
250
|
"title": "This page went missing",
|
|
251
|
+
"body": "The page you're looking for doesn't exist or was moved. Check the URL, or head back to your dashboard.",
|
|
238
252
|
"errorLine": "Error 404",
|
|
239
253
|
"searchPlaceholder": "Search for a page…",
|
|
240
254
|
"matches": "Matching pages",
|
|
@@ -252,10 +266,12 @@
|
|
|
252
266
|
"title": "This page failed to render"
|
|
253
267
|
},
|
|
254
268
|
"tooNew": {
|
|
255
|
-
"title": "This page needs a newer Adminium"
|
|
269
|
+
"title": "This page needs a newer Adminium",
|
|
270
|
+
"body": "This page was saved with config version {version}, but this build understands up to version {latest}. Upgrade Adminium to open it."
|
|
256
271
|
},
|
|
257
272
|
"unknownTemplate": {
|
|
258
|
-
"title": "Unknown page template"
|
|
273
|
+
"title": "Unknown page template",
|
|
274
|
+
"body": "This page uses a template this build doesn’t recognize. It may come from a newer Adminium or an extension that isn’t installed."
|
|
259
275
|
}
|
|
260
276
|
},
|
|
261
277
|
"mutation": {
|
|
@@ -307,6 +323,20 @@
|
|
|
307
323
|
"twoFactor": "Two-factor",
|
|
308
324
|
"on": "Enabled",
|
|
309
325
|
"off": "Off",
|
|
326
|
+
"nameRequired": "Enter your name.",
|
|
327
|
+
"emailHelper": "Used to sign in. Changing it needs your password.",
|
|
328
|
+
"confirmPassword": "Current password",
|
|
329
|
+
"confirmPasswordHelper": "Confirm it is you before your sign-in address changes.",
|
|
330
|
+
"save": "Save changes",
|
|
331
|
+
"saveFailed": "Could not save your profile",
|
|
332
|
+
"saved": "Profile updated",
|
|
333
|
+
"savedBody": "Your new details are in use across this workspace. If you changed your email, sign in with the new address from now on.",
|
|
334
|
+
"accessTitle": "Access",
|
|
335
|
+
"accessSubtitle": "What this account may do, and how it proves who it is.",
|
|
336
|
+
"rolesHelper": "Roles are granted by an administrator and cannot be changed from your own account.",
|
|
337
|
+
"manageTwoFactor": "Manage",
|
|
338
|
+
"setUpTwoFactor": "Set up",
|
|
339
|
+
"securityLink": "Password & sessions",
|
|
310
340
|
"preferences": {
|
|
311
341
|
"title": "Preferences",
|
|
312
342
|
"subtitle": "How Adminium looks and reads for you — on this and every device you sign in from.",
|
|
@@ -344,816 +374,70 @@
|
|
|
344
374
|
"emptyTitle": "Nothing to configure yet",
|
|
345
375
|
"emptyBody": "Notification events appear here as producers ship.",
|
|
346
376
|
"saveFailed": "Could not save this change."
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
"studio": {
|
|
350
|
-
"source": {
|
|
351
|
-
"engine": {
|
|
352
|
-
"label": "Database engine",
|
|
353
|
-
"postgres": "PostgreSQL",
|
|
354
|
-
"mysql": "MySQL / MariaDB",
|
|
355
|
-
"sqlite": "SQLite"
|
|
356
|
-
},
|
|
357
|
-
"format": {
|
|
358
|
-
"label": "Schema format",
|
|
359
|
-
"helper": "Leave on auto-detect unless the detection gets it wrong.",
|
|
360
|
-
"auto": "Auto-detect",
|
|
361
|
-
"sql": "SQL DDL / pg_dump",
|
|
362
|
-
"prisma": "Prisma schema",
|
|
363
|
-
"drizzle": "Drizzle ORM",
|
|
364
|
-
"typeorm": "TypeORM entities",
|
|
365
|
-
"sequelize": "Sequelize models",
|
|
366
|
-
"rails": "Rails schema.rb",
|
|
367
|
-
"django": "Django models.py",
|
|
368
|
-
"json": "Adminium JSON"
|
|
369
|
-
},
|
|
370
|
-
"sqlite": {
|
|
371
|
-
"file": "Database file path",
|
|
372
|
-
"helper": "SQLite is a file, not a server — give the absolute path on the machine running Adminium."
|
|
373
|
-
},
|
|
374
|
-
"file": {
|
|
375
|
-
"detectedAs": "Detected: {format}",
|
|
376
|
-
"moreWarnings": "+{count} more warnings — the full list appears in the analyze step.",
|
|
377
|
-
"dropTitle": "Drop your schema file here, or browse",
|
|
378
|
-
"dropHint": "SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django models, Adminium JSON",
|
|
379
|
-
"pitch": "No database connection required — we parse your schema file and build the same dashboards.",
|
|
380
|
-
"parsing": "Reading uploaded schema file…",
|
|
381
|
-
"tables": "tables",
|
|
382
|
-
"columns": "columns",
|
|
383
|
-
"warnings": "warnings",
|
|
384
|
-
"errorTitle": "Could not parse the file",
|
|
385
|
-
"parseFailed": "We could not parse that file. If auto-detect guessed wrong, pick the format explicitly and retry.",
|
|
386
|
-
"unsupported": "That format is not recognized — SQL DDL, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django models and Adminium JSON are supported. Pick one explicitly and retry.",
|
|
387
|
-
"requestFailed": "Upload failed — check your connection and try again."
|
|
388
|
-
},
|
|
389
|
-
"title": "Connect your database",
|
|
390
|
-
"subtitle": "Point Adminium at a database and we'll generate an admin dashboard from its schema.",
|
|
391
|
-
"name": "Connection name",
|
|
392
|
-
"namePlaceholder": "Production Postgres",
|
|
393
|
-
"modeLabel": "Source input mode",
|
|
394
|
-
"mode": {
|
|
395
|
-
"dsn": "Connection string",
|
|
396
|
-
"fields": "Individual fields",
|
|
397
|
-
"file": "Schema file"
|
|
398
|
-
},
|
|
399
|
-
"dsn": {
|
|
400
|
-
"label": "Connection string",
|
|
401
|
-
"helper": "postgres://user:password@host:5432/database — mysql:// and sqlite: work too.",
|
|
402
|
-
"incomplete": "Add host and database, e.g. postgres://user@host:5432/db",
|
|
403
|
-
"invalidScheme": "Unrecognized scheme — expected postgres://, mysql://, mariadb:// or sqlite:",
|
|
404
|
-
"quickFill": "Quick fill:"
|
|
405
|
-
},
|
|
406
|
-
"fields": {
|
|
407
|
-
"host": "Host",
|
|
408
|
-
"port": "Port",
|
|
409
|
-
"database": "Database",
|
|
410
|
-
"user": "User",
|
|
411
|
-
"password": "Password",
|
|
412
|
-
"ssl": "SSL mode",
|
|
413
|
-
"preview": "Connection string preview:"
|
|
414
|
-
},
|
|
415
|
-
"readOnlyRole": {
|
|
416
|
-
"title": "Use a read-only role",
|
|
417
|
-
"body": "Adminium never writes to your database — setup uses schema metadata only. We recommend a dedicated user with SELECT-only grants; you can decide where Adminium keeps its own tables in the meta-storage step."
|
|
418
|
-
}
|
|
419
|
-
},
|
|
420
|
-
"capability": {
|
|
421
|
-
"mysqlApproxRows": "MySQL row counts are storage-engine estimates (they can drift up to ±40%) — shown with ≈.",
|
|
422
|
-
"mysqlFkEnum": "MySQL FK/enum metadata is weaker: MyISAM tables declare no foreign keys, enums are per-column enum(…) types, and CHECK constraints need MySQL 8.0.16+ / MariaDB 10.2+.",
|
|
423
|
-
"sqliteCheckEnums": "SQLite has no native enum type — enums are synthesized from CHECK (col IN (…)) constraints.",
|
|
424
|
-
"sqliteNoComments": "SQLite has no column comments — use the schema remap editor to add labels.",
|
|
425
|
-
"importNoRowCounts": "Schema files carry no row counts — the tables list shows — instead of made-up numbers.",
|
|
426
|
-
"importNoLiveHealth": "No live database connection — health checks and schema-drift detection are unavailable for this source.",
|
|
427
|
-
"rowsUnavailable": "Schema files have no live database — row counts are unknown until you connect one.",
|
|
428
|
-
"rowsRunAnalyze": "No estimate yet — run ANALYZE on the database for row counts.",
|
|
429
|
-
"rowsNoEstimate": "The engine reported no estimate for this table.",
|
|
430
|
-
"rowsApproximate": "Storage-engine estimate — can drift up to ±40% on InnoDB."
|
|
431
|
-
},
|
|
432
|
-
"test": {
|
|
433
|
-
"log": {
|
|
434
|
-
"moreWarnings": "+{count} more parser warnings",
|
|
435
|
-
"connecting": "Establishing secure connection…",
|
|
436
|
-
"connected": "Connected ({latency} ms) · read-only introspection",
|
|
437
|
-
"connectFailed": "Connection failed.",
|
|
438
|
-
"readingSchema": "Reading schema: public",
|
|
439
|
-
"readingFile": "Reading uploaded schema file…",
|
|
440
|
-
"parsingFile": "Parsing {file}…",
|
|
441
|
-
"detected": "Detected {tables} tables · {columns} columns",
|
|
442
|
-
"found": "Found {tables} tables · {columns} columns",
|
|
443
|
-
"mapping": "Mapping column types → input widgets",
|
|
444
|
-
"relations": "Detecting relations…",
|
|
445
|
-
"piiScan": "Scanning for PII columns…",
|
|
446
|
-
"piiDone": "PII scan complete — {count} columns masked by default",
|
|
447
|
-
"piiDoneUnknown": "PII scan complete",
|
|
448
|
-
"jobFailed": "Introspection failed.",
|
|
449
|
-
"networkFailed": "Request failed — check your connection and retry.",
|
|
450
|
-
"ready": "Ready"
|
|
451
|
-
},
|
|
452
|
-
"title": "Analyzing your schema",
|
|
453
|
-
"subtitle": "Introspecting tables, columns, and relationships. This takes a few seconds.",
|
|
454
|
-
"trust": "We only read your schema and data. Nothing is modified.",
|
|
455
|
-
"errorTitle": "Connection failed",
|
|
456
|
-
"retry": "Retry",
|
|
457
|
-
"logLabel": "Introspection log",
|
|
458
|
-
"hint": {
|
|
459
|
-
"auth": "Authentication failed — check the user name and password in your DSN.",
|
|
460
|
-
"hostUnreachable": "Host unreachable — check the hostname and port, and that the database accepts connections from this machine (allowlist our IPs).",
|
|
461
|
-
"metaPlacement": "This source cannot host Adminium’s meta tables — continue with a separate meta database.",
|
|
462
|
-
"permission": "The role connected but lacks schema-read privileges — grant USAGE on the schema to your introspection role.",
|
|
463
|
-
"timeout": "The database did not answer in time — check network path and load, then retry.",
|
|
464
|
-
"tls": "TLS negotiation failed — try sslmode=require, or upload the CA certificate your server expects.",
|
|
465
|
-
"unknown": "Connection failed — verify the DSN and retry."
|
|
466
|
-
}
|
|
467
377
|
},
|
|
468
|
-
"
|
|
469
|
-
"
|
|
470
|
-
"
|
|
471
|
-
"
|
|
472
|
-
"
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
"
|
|
476
|
-
"
|
|
477
|
-
"
|
|
478
|
-
"
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
},
|
|
490
|
-
"status": {
|
|
491
|
-
"connected": "Connected",
|
|
492
|
-
"error": "Error",
|
|
493
|
-
"unconfigured": "Draft",
|
|
494
|
-
"testing": "Testing…"
|
|
495
|
-
},
|
|
496
|
-
"card": {
|
|
497
|
-
"readOnly": "Read-only",
|
|
498
|
-
"tables": "Tables",
|
|
499
|
-
"pages": "Pages",
|
|
500
|
-
"latency": "Latency",
|
|
501
|
-
"latencyMs": "{latency, number} ms",
|
|
502
|
-
"lastIntrospected": "Last introspected",
|
|
503
|
-
"never": "Never"
|
|
504
|
-
},
|
|
505
|
-
"action": {
|
|
506
|
-
"test": "Test",
|
|
507
|
-
"reintrospect": "Re-introspect",
|
|
508
|
-
"reintrospectFile": "Schema-file sources have no live database — re-upload the file instead.",
|
|
509
|
-
"remap": "Remap schema",
|
|
510
|
-
"delete": "Delete"
|
|
511
|
-
},
|
|
512
|
-
"test": {
|
|
513
|
-
"ok": "Connection healthy · {latency, number} ms",
|
|
514
|
-
"failed": "Connection test failed"
|
|
515
|
-
},
|
|
516
|
-
"introspect": {
|
|
517
|
-
"noChanges": "Schema unchanged — no new snapshot.",
|
|
518
|
-
"updated": "Schema re-introspected",
|
|
519
|
-
"masksProposed": "{count, plural, one {# column} other {# columns}} proposed for masking — review in the remap editor.",
|
|
520
|
-
"failed": "Introspection failed. Try again."
|
|
521
|
-
},
|
|
522
|
-
"delete": {
|
|
523
|
-
"title": "Delete connection",
|
|
524
|
-
"body": "This deletes “{name}” and its generated pages. Your database itself is never touched.",
|
|
525
|
-
"prompt": "Type {name} to confirm",
|
|
526
|
-
"confirm": "Delete connection",
|
|
527
|
-
"cancel": "Cancel",
|
|
528
|
-
"close": "Close",
|
|
529
|
-
"success": "Connection “{name}” deleted",
|
|
530
|
-
"failed": "Could not delete the connection. Try again."
|
|
531
|
-
},
|
|
532
|
-
"empty": {
|
|
533
|
-
"title": "No data sources yet",
|
|
534
|
-
"body": "Connect a database and Adminium generates your admin panel from its schema.",
|
|
535
|
-
"cta": "Connect a database"
|
|
536
|
-
}
|
|
537
|
-
},
|
|
538
|
-
"settingsHub": {
|
|
539
|
-
"title": "Workspace settings",
|
|
540
|
-
"subtitle": "Identity, security and destructive actions for this workspace.",
|
|
541
|
-
"save": "Save changes",
|
|
542
|
-
"saved": "Workspace settings updated",
|
|
543
|
-
"saveFailed": "Could not save workspace settings. Try again.",
|
|
544
|
-
"superAdminOnlyTitle": "Super admin required",
|
|
545
|
-
"superAdminOnly": "Only a super admin can change workspace identity and security settings.",
|
|
546
|
-
"identity": {
|
|
547
|
-
"heading": "Workspace identity",
|
|
548
|
-
"appName": {
|
|
549
|
-
"label": "Application name",
|
|
550
|
-
"helper": "Shown in the sidebar, browser title, and emails.",
|
|
551
|
-
"error": "Enter a name of at most 60 characters."
|
|
552
|
-
},
|
|
553
|
-
"logo": {
|
|
554
|
-
"label": "Logo",
|
|
555
|
-
"drop": "Drop an image here",
|
|
556
|
-
"helper": "PNG, JPEG, WebP, GIF or SVG, up to 1 MB. Replaces the built-in mark everywhere.",
|
|
557
|
-
"upload": "Upload logo",
|
|
558
|
-
"replace": "Replace logo",
|
|
559
|
-
"remove": "Remove",
|
|
560
|
-
"uploaded": "Logo updated",
|
|
561
|
-
"removed": "Logo removed",
|
|
562
|
-
"tooLarge": "That image is larger than 1 MB.",
|
|
563
|
-
"badType": "Choose a PNG, JPEG, WebP, GIF or SVG image.",
|
|
564
|
-
"undo": "Undo"
|
|
565
|
-
},
|
|
566
|
-
"showVersion": {
|
|
567
|
-
"label": "Version in the sidebar",
|
|
568
|
-
"helper": "The build number beside the logo. Off hides which version you run."
|
|
569
|
-
}
|
|
570
|
-
},
|
|
571
|
-
"security": {
|
|
572
|
-
"heading": "Security",
|
|
573
|
-
"require2fa": {
|
|
574
|
-
"label": "Require two-factor auth",
|
|
575
|
-
"desc": "Every member must enable 2FA to sign in."
|
|
576
|
-
},
|
|
577
|
-
"allowSignup": {
|
|
578
|
-
"label": "Allow self-signup",
|
|
579
|
-
"desc": "Anyone can create an account — off keeps this workspace invite-only."
|
|
580
|
-
},
|
|
581
|
-
"sessionTtl": {
|
|
582
|
-
"label": "Session lifetime (hours)",
|
|
583
|
-
"error": "Between {min, number} and {max, number} hours."
|
|
584
|
-
},
|
|
585
|
-
"passwordMin": {
|
|
586
|
-
"label": "Minimum password length",
|
|
587
|
-
"error": "Between {min, number} and {max, number} characters."
|
|
588
|
-
}
|
|
589
|
-
},
|
|
590
|
-
"review": {
|
|
591
|
-
"title": "Save workspace settings",
|
|
592
|
-
"subtitle": "Review your changes before saving.",
|
|
593
|
-
"confirm": "Save changes",
|
|
594
|
-
"cancel": "Cancel",
|
|
595
|
-
"close": "Close",
|
|
596
|
-
"on": "On",
|
|
597
|
-
"off": "Off",
|
|
598
|
-
"shown": "Shown",
|
|
599
|
-
"hidden": "Hidden",
|
|
600
|
-
"change": "{before} → {after}"
|
|
601
|
-
},
|
|
602
|
-
"defaultsCard": {
|
|
603
|
-
"heading": "Appearance & language defaults",
|
|
604
|
-
"body": "Workspace-wide theme, accent, density and language live under Global defaults.",
|
|
605
|
-
"cta": "Open global defaults"
|
|
606
|
-
},
|
|
607
|
-
"danger": {
|
|
608
|
-
"heading": "Danger zone",
|
|
609
|
-
"subtitle": "Irreversible actions.",
|
|
610
|
-
"empty": "Nothing to delete — no connections yet.",
|
|
611
|
-
"deleteDesc": "Deletes the connection and its generated pages. Your database is not touched. Cannot be undone.",
|
|
612
|
-
"deleteCta": "Delete connection"
|
|
613
|
-
},
|
|
614
|
-
"aiCard": {
|
|
615
|
-
"heading": "AI enrichment",
|
|
616
|
-
"body": "Configure an AI provider (or the copy-paste round-trip) to enrich labels, groups and relations.",
|
|
617
|
-
"cta": "Open AI settings"
|
|
618
|
-
},
|
|
619
|
-
"pagesCard": {
|
|
620
|
-
"heading": "Pages",
|
|
621
|
-
"body": "Add, edit and delete pages, change what each one shows, and reorder the sidebar.",
|
|
622
|
-
"cta": "Manage pages"
|
|
623
|
-
}
|
|
624
|
-
},
|
|
625
|
-
"settingsAi": {
|
|
626
|
-
"title": "AI enrichment",
|
|
627
|
-
"subtitle": "Connect a model to let Adminium suggest labels, groups, relations and more — always reviewed as a diff before anything applies.",
|
|
628
|
-
"saved": "AI provider saved",
|
|
629
|
-
"saveFailed": "Could not save the AI provider. Try again.",
|
|
630
|
-
"save": "Save provider",
|
|
631
|
-
"test": "Test connection",
|
|
632
|
-
"testHintDirty": "Save your changes before testing.",
|
|
633
|
-
"testing": "Pinging the provider…",
|
|
634
|
-
"testError": "Test failed",
|
|
635
|
-
"testErrorBody": "Could not reach the provider. Check the key and base URL.",
|
|
636
|
-
"testOk": "Connected to {model} in {latency} ms",
|
|
637
|
-
"testUnknownModel": "the provider",
|
|
638
|
-
"provider": {
|
|
639
|
-
"heading": "AI provider",
|
|
640
|
-
"subtitle": "Choose how Adminium reaches a model to enrich your schema. Keys are stored encrypted and never shown again.",
|
|
641
|
-
"active": "Active",
|
|
642
|
-
"anthropic": {
|
|
643
|
-
"label": "Anthropic",
|
|
644
|
-
"desc": "Claude models via the Anthropic API."
|
|
645
|
-
},
|
|
646
|
-
"openai": {
|
|
647
|
-
"label": "OpenAI",
|
|
648
|
-
"desc": "GPT models via the OpenAI API."
|
|
649
|
-
},
|
|
650
|
-
"openaiCompatible": {
|
|
651
|
-
"label": "OpenAI-compatible",
|
|
652
|
-
"desc": "Any endpoint that speaks the OpenAI wire format — Groq, Together, vLLM, LM Studio."
|
|
653
|
-
},
|
|
654
|
-
"ollama": {
|
|
655
|
-
"label": "Ollama (local)",
|
|
656
|
-
"desc": "Models running locally through Ollama — no key, no cloud."
|
|
657
|
-
},
|
|
658
|
-
"requiresNetwork": "Requires internet & an API key",
|
|
659
|
-
"networkDisabledTitle": "Direct AI providers are turned off on this install",
|
|
660
|
-
"networkDisabledBody": "This Adminium is configured with no outbound internet access, so it cannot reach a provider API. Use the copy-paste round-trip below — it needs no key and no network."
|
|
661
|
-
},
|
|
662
|
-
"configure": {
|
|
663
|
-
"heading": "Configure {provider}"
|
|
664
|
-
},
|
|
665
|
-
"field": {
|
|
666
|
-
"baseUrl": "Base URL",
|
|
667
|
-
"baseUrlOptional": "Leave as-is unless Ollama runs on another host.",
|
|
668
|
-
"baseUrlHelper": "The endpoint root that serves /chat/completions.",
|
|
669
|
-
"model": "Model",
|
|
670
|
-
"modelFreeText": "Enter the exact model id your endpoint serves.",
|
|
671
|
-
"modelLive": "Loaded live from the provider.",
|
|
672
|
-
"modelStatic": "A known-good list; type a custom id after saving to refresh it.",
|
|
673
|
-
"modelLoading": "Loading…",
|
|
674
|
-
"modelPlaceholder": "Select a model…",
|
|
675
|
-
"key": "API key",
|
|
676
|
-
"keyStored": "Stored encrypted. Replace it to use a different key.",
|
|
677
|
-
"keyMask": "sk-…{last4}",
|
|
678
|
-
"keyReplace": "Replace key",
|
|
679
|
-
"keyOptional": "Optional — some endpoints need no key.",
|
|
680
|
-
"keyWriteOnly": "Write-only: once saved it is never shown again.",
|
|
681
|
-
"noKeyTitle": "No API key needed",
|
|
682
|
-
"noKeyBody": "Ollama runs locally, so nothing leaves this machine."
|
|
683
|
-
},
|
|
684
|
-
"runStatus": {
|
|
685
|
-
"draft": "Draft",
|
|
686
|
-
"running": "Running",
|
|
687
|
-
"awaitingResponse": "Awaiting response",
|
|
688
|
-
"validated": "Validated",
|
|
689
|
-
"applied": "Applied",
|
|
690
|
-
"partiallyApplied": "Partially applied",
|
|
691
|
-
"failed": "Failed",
|
|
692
|
-
"discarded": "Discarded"
|
|
693
|
-
},
|
|
694
|
-
"byo": {
|
|
695
|
-
"heading": "No key? Use your own AI tool",
|
|
696
|
-
"subtitle": "The copy-paste round-trip — nothing leaves this machine.",
|
|
697
|
-
"body": "Studio can generate a self-contained prompt from your schema. Run it in Claude Code, ChatGPT, or any tool you like, then paste the JSON it returns back into the connect wizard. Same validation, same review, same result as the direct path.",
|
|
698
|
-
"guaranteeTitle": "Telemetry-free guarantee",
|
|
699
|
-
"guarantee1": "The prompt carries only your schema and aggregate stats — never row data by default.",
|
|
700
|
-
"guarantee2": "No credentials, instance URL, or identifiers are embedded.",
|
|
701
|
-
"guarantee3": "BYO runs make zero network calls.",
|
|
702
|
-
"promptVersion": "Prompt {version}",
|
|
703
|
-
"schemaVersion": "Schema {version}",
|
|
704
|
-
"headingRecommended": "Use your own AI tool — no key needed",
|
|
705
|
-
"recommended": "Recommended"
|
|
706
|
-
},
|
|
707
|
-
"history": {
|
|
708
|
-
"heading": "Run history",
|
|
709
|
-
"subtitle": "Past enrichment runs. Open one to review its suggestions.",
|
|
710
|
-
"tableLabel": "Enrichment runs",
|
|
711
|
-
"colDate": "Date",
|
|
712
|
-
"colSource": "Source",
|
|
713
|
-
"colStatus": "Status",
|
|
714
|
-
"colChunks": "Chunks",
|
|
715
|
-
"openReview": "Open review for the run from {date}",
|
|
716
|
-
"connection": "Connection",
|
|
717
|
-
"empty": "No enrichment runs yet. Enrich a schema from the connect wizard to see history here.",
|
|
718
|
-
"errorTitle": "Could not load runs",
|
|
719
|
-
"errorBody": "Refresh the page to try again.",
|
|
720
|
-
"noConnections": "Connect a database first — enrichment runs are recorded per connection.",
|
|
721
|
-
"byo": "BYO",
|
|
722
|
-
"directPath": "Direct"
|
|
723
|
-
}
|
|
724
|
-
},
|
|
725
|
-
"enrich": {
|
|
726
|
-
"title": "Enrich with AI",
|
|
727
|
-
"subtitle": "Optionally refine the generated labels, groups, enums and dashboards with an LLM. The heuristic baseline works without it — this only adds suggestions you review before anything applies.",
|
|
728
|
-
"intentLabel": "How would you like to enrich?",
|
|
729
|
-
"sectionsLegend": "What should the AI decide?",
|
|
730
|
-
"localesLegend": "Translate labels into",
|
|
731
|
-
"localeLocked": "(required)",
|
|
732
|
-
"samplingTitle": "Include sample values",
|
|
733
|
-
"samplingHint": "Includes up to 20 real values per non-PII column in the prompt.",
|
|
734
|
-
"samplingPreviewTitle": "What leaves this machine",
|
|
735
|
-
"samplingPreviewBody": "Up to 20 most-common values per non-PII column, plus min/max for numeric and date columns. PII-flagged columns are never sampled. Everything else stays aggregate-only. Review the exact prompt before copying (BYO) — nothing is sent without your action.",
|
|
736
|
-
"noSections": "Select at least one decision group to enrich.",
|
|
737
|
-
"generatePrompt": "Generate prompt",
|
|
738
|
-
"startProvider": "Start enrichment",
|
|
739
|
-
"startOver": "Start over",
|
|
740
|
-
"copied": "Copied",
|
|
741
|
-
"createFailed": "Could not build the enrichment prompt — retry.",
|
|
742
|
-
"createFailedTitle": "Could not start",
|
|
743
|
-
"providerFallback": "your AI provider",
|
|
744
|
-
"fileTitle": "AI enrichment needs a live database",
|
|
745
|
-
"fileBody": "Schema-file sources have no snapshot to enrich yet. Connect a live database to use AI enrichment, or continue — the heuristic baseline still generates a complete app.",
|
|
746
|
-
"section": {
|
|
747
|
-
"labels": "Labels & descriptions",
|
|
748
|
-
"groups": "Navigation groups",
|
|
749
|
-
"enums": "Enum semantics",
|
|
750
|
-
"relations": "Relations",
|
|
751
|
-
"keys": "Key columns",
|
|
752
|
-
"templates": "Page templates",
|
|
753
|
-
"widgets": "Dashboard widgets",
|
|
754
|
-
"pii": "PII & masking",
|
|
755
|
-
"icons": "Icons",
|
|
756
|
-
"microcopy": "Micro-copy"
|
|
757
|
-
},
|
|
758
|
-
"provider": {
|
|
759
|
-
"title": "Use my AI provider",
|
|
760
|
-
"description": "Run enrichment now against your configured provider. You review every suggestion as a diff.",
|
|
761
|
-
"unconfigured": "No AI provider is configured yet — copy a prompt to your own tool below, or configure a provider first.",
|
|
762
|
-
"settingsHint": "Want to run it directly?",
|
|
763
|
-
"settingsLink": "Configure a provider in Settings → AI",
|
|
764
|
-
"networkDisabled": "This Adminium has no outbound internet access, so it cannot reach a provider API. Use the copy-paste round-trip instead — same prompt, same review."
|
|
765
|
-
},
|
|
766
|
-
"byo": {
|
|
767
|
-
"cardTitle": "Copy a prompt to my own AI tool",
|
|
768
|
-
"cardDescription": "Copy a self-contained prompt into Claude Code, ChatGPT, anything — then paste the JSON back. No key needed, nothing leaves this machine automatically.",
|
|
769
|
-
"guidance": "Run this in any AI tool — Claude Code, ChatGPT, anything. Paste the JSON it returns below.",
|
|
770
|
-
"promptLabel": "Enrichment prompt",
|
|
771
|
-
"promptLabelN": "Enrichment prompt {index} of {total}",
|
|
772
|
-
"tokenChip": "≈ {tokens} tokens",
|
|
773
|
-
"copyPrompt": "Copy prompt",
|
|
774
|
-
"copyPromptDone": "Prompt copied",
|
|
775
|
-
"download": "Download .md",
|
|
776
|
-
"chunkTabs": "Prompt chunks",
|
|
777
|
-
"chunkTab": "Prompt {index}",
|
|
778
|
-
"chunkValid": "Chunk {index} validated",
|
|
779
|
-
"pasteLabel": "Paste the JSON response",
|
|
780
|
-
"pastePlaceholder": "Paste the JSON response here…",
|
|
781
|
-
"validate": "Validate",
|
|
782
|
-
"valid": "Response validated",
|
|
783
|
-
"mergedTitle": "All {count} chunks validated and merged",
|
|
784
|
-
"mergedTitleSingle": "Response validated",
|
|
785
|
-
"mergedBody": "Suggestions are ready to review against the heuristic baseline.",
|
|
786
|
-
"errorsTitle": "Validation found {count} issues",
|
|
787
|
-
"copyErrors": "Copy errors for your AI tool",
|
|
788
|
-
"copyErrorsDone": "Errors copied",
|
|
789
|
-
"copyErrorsHint": "Paste this back into your AI tool to get a corrected response.",
|
|
790
|
-
"droppedItems": "{count} suggestions were dropped during validation — review shows the rest.",
|
|
791
|
-
"pendingTitle": "Validate every prompt to continue",
|
|
792
|
-
"pendingBody": "Paste the JSON response above and validate it to continue to review.",
|
|
793
|
-
"pendingBodyChunked": "Each chunk must validate before the suggestions merge. Paste and validate every prompt above.",
|
|
794
|
-
"requestFailed": "Could not reach the server to validate — retry.",
|
|
795
|
-
"continueReview": "Continue to review",
|
|
796
|
-
"wholeDocument": "whole document",
|
|
797
|
-
"cardTitleRecommended": "Copy a prompt to my own AI tool — recommended"
|
|
798
|
-
},
|
|
799
|
-
"direct": {
|
|
800
|
-
"title": "Enriching with AI",
|
|
801
|
-
"subtitle": "Sending your schema to",
|
|
802
|
-
"building": "Building prompt…",
|
|
803
|
-
"logLabel": "Enrichment log",
|
|
804
|
-
"cancel": "Cancel",
|
|
805
|
-
"back": "Back to options",
|
|
806
|
-
"retry": "Retry",
|
|
807
|
-
"done": "Enrichment complete — review the suggestions.",
|
|
808
|
-
"continueReview": "Continue to review",
|
|
809
|
-
"failed": "The provider run failed. Check your AI settings and retry.",
|
|
810
|
-
"jobFailed": "The enrichment run did not finish.",
|
|
811
|
-
"startFailed": "Could not start the run — retry.",
|
|
812
|
-
"errorTitle": "Enrichment failed"
|
|
813
|
-
},
|
|
814
|
-
"skip": {
|
|
815
|
-
"title": "Skip — use heuristics only",
|
|
816
|
-
"description": "Generate from the heuristic baseline. You can enrich later from Settings → AI — skipping is never penalized.",
|
|
817
|
-
"confirmTitle": "Continuing with heuristics",
|
|
818
|
-
"confirmBody": "The generated app will use the heuristic labels, groups and dashboards. Continue to generate — you can run AI enrichment any time from Settings → AI."
|
|
819
|
-
}
|
|
820
|
-
},
|
|
821
|
-
"review": {
|
|
822
|
-
"unavailableTitle": "Review screen not available",
|
|
823
|
-
"unavailableBody": "This build does not include the enrichment review screen yet (06-T14). It lands with the diff-and-apply flow."
|
|
824
|
-
},
|
|
825
|
-
"llmRuns": {
|
|
826
|
-
"review": {
|
|
827
|
-
"header": {
|
|
828
|
-
"title": "Review AI suggestions",
|
|
829
|
-
"model": "Model",
|
|
830
|
-
"snapshot": "Snapshot",
|
|
831
|
-
"byo": "BYO",
|
|
832
|
-
"pathDirect": "Direct API",
|
|
833
|
-
"pathByo": "Copy-paste",
|
|
834
|
-
"agree": "{n} agree",
|
|
835
|
-
"conflict": "{n} conflict",
|
|
836
|
-
"new": "{n} new",
|
|
837
|
-
"rejects": "{n} rejects",
|
|
838
|
-
"countsAria": "Suggestion counts"
|
|
839
|
-
},
|
|
840
|
-
"bulk": {
|
|
841
|
-
"thresholdLabel": "Confidence threshold",
|
|
842
|
-
"thresholdAria": "Accept-all confidence threshold",
|
|
843
|
-
"acceptAll": "Accept all ≥ {pct}%",
|
|
844
|
-
"clear": "Clear selection"
|
|
845
|
-
},
|
|
846
|
-
"section": {
|
|
847
|
-
"selectAllAria": "Select all in {group}",
|
|
848
|
-
"acceptedCount": "{n} accepted"
|
|
849
|
-
},
|
|
850
|
-
"group": {
|
|
851
|
-
"labels": "Labels & translations",
|
|
852
|
-
"navigation": "Navigation & domains",
|
|
853
|
-
"enums": "Enum semantics",
|
|
854
|
-
"relations": "Relations",
|
|
855
|
-
"keys": "Key columns",
|
|
856
|
-
"templates": "Page templates",
|
|
857
|
-
"dashboards": "Dashboards & widgets",
|
|
858
|
-
"pii": "PII & masking",
|
|
859
|
-
"icons": "Icons",
|
|
860
|
-
"microcopy": "Micro-copy"
|
|
861
|
-
},
|
|
862
|
-
"status": {
|
|
863
|
-
"agree": "Agrees",
|
|
864
|
-
"conflict": "Conflict",
|
|
865
|
-
"new": "New",
|
|
866
|
-
"heuristicOnly": "Heuristic only",
|
|
867
|
-
"rejects": "Rejects heuristic",
|
|
868
|
-
"locked": "Locked"
|
|
869
|
-
},
|
|
870
|
-
"row": {
|
|
871
|
-
"acceptAria": "Accept {noun} suggestion for {target}",
|
|
872
|
-
"keptEdited": "kept — edited by you",
|
|
873
|
-
"rejectsCallout": "The AI rejects a heuristic decision — confirm before accepting.",
|
|
874
|
-
"showTranslations": "Show translations",
|
|
875
|
-
"hideTranslations": "Hide translations",
|
|
876
|
-
"confidenceAria": "Confidence {pct}%",
|
|
877
|
-
"noAi": "No AI suggestion"
|
|
878
|
-
},
|
|
879
|
-
"value": {
|
|
880
|
-
"none": "No value",
|
|
881
|
-
"absent": "None",
|
|
882
|
-
"dash": "—",
|
|
883
|
-
"display": "Display",
|
|
884
|
-
"key": "Key",
|
|
885
|
-
"rank": "rank {n}",
|
|
886
|
-
"span": "span {n}",
|
|
887
|
-
"tableCount": "{n} tables",
|
|
888
|
-
"widgetCount": "{n} widgets",
|
|
889
|
-
"enumWorkflow": "Workflow",
|
|
890
|
-
"enumCategory": "Category",
|
|
891
|
-
"notPii": "Not PII",
|
|
892
|
-
"label": "Label",
|
|
893
|
-
"description": "Description",
|
|
894
|
-
"subtitle": "Page subtitle",
|
|
895
|
-
"headline": "Empty-state headline",
|
|
896
|
-
"guidance": "Empty-state guidance"
|
|
897
|
-
},
|
|
898
|
-
"apply": {
|
|
899
|
-
"title": "Apply {n} suggestions",
|
|
900
|
-
"subtitle": "These changes are written in one transaction and can be undone.",
|
|
901
|
-
"empty": "Nothing selected to apply.",
|
|
902
|
-
"confirm": "Apply changes"
|
|
903
|
-
},
|
|
904
|
-
"footer": {
|
|
905
|
-
"count": "{n} suggestions selected",
|
|
906
|
-
"apply": "Apply {n} accepted suggestions",
|
|
907
|
-
"failed": "Apply failed"
|
|
908
|
-
},
|
|
909
|
-
"toast": {
|
|
910
|
-
"applied": "Applied {n} suggestions",
|
|
911
|
-
"appliedPartial": "Applied {n} suggestions (some skipped)",
|
|
912
|
-
"applyFailed": "Could not apply suggestions",
|
|
913
|
-
"undoFailed": "Could not undo this change"
|
|
914
|
-
},
|
|
915
|
-
"error": {
|
|
916
|
-
"title": "Could not load this run"
|
|
917
|
-
},
|
|
918
|
-
"notReady": {
|
|
919
|
-
"title": "This run has no suggestions to review yet",
|
|
920
|
-
"body": "A run must be validated before its suggestions can be reviewed. Generate or paste a response first."
|
|
921
|
-
},
|
|
922
|
-
"applied": {
|
|
923
|
-
"title": "This run has been applied",
|
|
924
|
-
"body": "The accepted suggestions below are read-only."
|
|
925
|
-
},
|
|
926
|
-
"empty": {
|
|
927
|
-
"title": "No suggestions",
|
|
928
|
-
"body": "This run produced no suggestions to review."
|
|
929
|
-
},
|
|
930
|
-
"cat": {
|
|
931
|
-
"label": "label",
|
|
932
|
-
"key": "key columns",
|
|
933
|
-
"enum": "enum",
|
|
934
|
-
"relation": "relation",
|
|
935
|
-
"pii": "PII",
|
|
936
|
-
"template": "page template",
|
|
937
|
-
"group": "navigation group",
|
|
938
|
-
"dashboard": "dashboard",
|
|
939
|
-
"widget": "widget",
|
|
940
|
-
"copy": "micro-copy"
|
|
941
|
-
}
|
|
942
|
-
}
|
|
943
|
-
},
|
|
944
|
-
"wizard": {
|
|
945
|
-
"title": "New connection",
|
|
946
|
-
"back": "Back",
|
|
947
|
-
"continue": "Continue",
|
|
948
|
-
"progress": "Setup progress",
|
|
949
|
-
"persistFailed": "Could not save your table selection — retry.",
|
|
950
|
-
"persistFailedTitle": "Save failed",
|
|
951
|
-
"bridgeAppliedTitle": "Connection string received",
|
|
952
|
-
"bridgeAppliedBody": "Handed over from adminium.dev by your browser — it went straight to this machine and was never uploaded. Check it below, then continue.",
|
|
953
|
-
"bridgeFailedTitle": "That hand-off could not be used",
|
|
954
|
-
"bridgeFailedBody": "It has already been used or has expired. Paste your connection string below instead.",
|
|
955
|
-
"step": {
|
|
956
|
-
"source": "Source",
|
|
957
|
-
"test": "Analyze",
|
|
958
|
-
"tables": "Tables",
|
|
959
|
-
"meta": "Meta storage",
|
|
960
|
-
"intent": "Intent",
|
|
961
|
-
"enrich": "Enrich",
|
|
962
|
-
"generate": "Generate"
|
|
963
|
-
}
|
|
964
|
-
},
|
|
965
|
-
"meta": {
|
|
966
|
-
"title": "Where should Adminium keep its own tables?",
|
|
967
|
-
"subtitle": "Pages, roles, audit log and settings live in adminium_-prefixed tables — never mixed into your data.",
|
|
968
|
-
"sameDb": {
|
|
969
|
-
"title": "Same database",
|
|
970
|
-
"description": "adminium_* tables are created beside your source tables. Simplest setup — needs a role with write and CREATE TABLE privileges.",
|
|
971
|
-
"disabledReadOnly": "Your role is read-only — Adminium never writes to this database. Choose a separate database for Adminium’s own tables.",
|
|
972
|
-
"disabledNoDdl": "This role cannot run DDL — Adminium migrations need CREATE TABLE. Choose a separate database for Adminium’s own tables.",
|
|
973
|
-
"disabledFile": "A schema file has no live database — choose a separate database for Adminium’s own tables."
|
|
974
|
-
},
|
|
975
|
-
"separate": {
|
|
976
|
-
"title": "Separate database",
|
|
977
|
-
"description": "Adminium keeps its tables in a different database. Your source stays untouched — required for read-only sources.",
|
|
978
|
-
"dsn": "Meta database connection string",
|
|
979
|
-
"helper": "Needs write + DDL privileges — Adminium runs its own migrations there.",
|
|
980
|
-
"test": "Test connection",
|
|
981
|
-
"ok": "Compatible — write ✓ · DDL ✓",
|
|
982
|
-
"insufficient": "This role cannot host the meta store — Adminium needs write and CREATE TABLE privileges there.",
|
|
983
|
-
"errorTitle": "Meta store not compatible"
|
|
984
|
-
},
|
|
985
|
-
"testFailed": "Connection failed.",
|
|
986
|
-
"v1Note": {
|
|
987
|
-
"title": "About this install",
|
|
988
|
-
"body": "This server already keeps its own tables in a configured database, and this step does not move them. It validates that your choice is compatible with this connection — the server enforces the same rule independently (409 META_PLACEMENT_INVALID)."
|
|
989
|
-
},
|
|
990
|
-
"move": {
|
|
991
|
-
"title": "Moving Adminium’s tables",
|
|
992
|
-
"copying": "Moving Adminium’s tables…",
|
|
993
|
-
"restarting": "Restarting…",
|
|
994
|
-
"copyingBody": "Copying every adminium_ table into the new database. Your source data is not touched, and nothing is switched over until the copy is verified.",
|
|
995
|
-
"restartingBody": "The copy is done. Adminium is restarting onto the new database — this page will continue by itself in a few seconds.",
|
|
996
|
-
"failed": "Could not move Adminium’s tables — retry.",
|
|
997
|
-
"timeout": "Adminium moved its tables but has not come back yet. Your data is safe in the new database — reload this page in a moment."
|
|
998
|
-
},
|
|
999
|
-
"willMove": {
|
|
1000
|
-
"title": "This will move Adminium’s tables",
|
|
1001
|
-
"body": "Adminium is currently using its built-in SQLite store. Continue copies that store into the database you picked and restarts onto it — accounts, pages and settings come with it, so you stay signed in."
|
|
1002
|
-
}
|
|
1003
|
-
},
|
|
1004
|
-
"intent": {
|
|
1005
|
-
"title": "What do you need?",
|
|
1006
|
-
"subtitle": "The intent shapes which pages get generated. You can change it later — changing it proposes a regeneration, never a silent rewrite.",
|
|
1007
|
-
"trust": "We read your schema only — never your row data during setup.",
|
|
1008
|
-
"fullAdmin": {
|
|
1009
|
-
"title": "Full admin panel",
|
|
1010
|
-
"description": "Dashboards, CRUD pages, search, imports and exports — everything your schema supports."
|
|
1011
|
-
},
|
|
1012
|
-
"analytics": {
|
|
1013
|
-
"title": "Read-only analytics",
|
|
1014
|
-
"description": "Dashboards, charts and read-only grids. No forms, no writes — every role capped at Viewer."
|
|
1015
|
-
},
|
|
1016
|
-
"crud": {
|
|
1017
|
-
"title": "CRUD tables",
|
|
1018
|
-
"description": "One editing page per table plus search and import/export — a minimal home, no dashboards."
|
|
1019
|
-
},
|
|
1020
|
-
"support": {
|
|
1021
|
-
"title": "Support console",
|
|
1022
|
-
"description": "Queues, ticket and customer detail pages first. Deletes off by default. (Queue templates land in M7 — the v1 page set matches Full admin.)"
|
|
1023
|
-
}
|
|
1024
|
-
},
|
|
1025
|
-
"generate": {
|
|
1026
|
-
"title": "Generate your app",
|
|
1027
|
-
"subtitle": "One page per included table plus dashboards per domain — intent:",
|
|
1028
|
-
"run": "Generate dashboard",
|
|
1029
|
-
"openApp": "Open your app",
|
|
1030
|
-
"logLabel": "Generation log",
|
|
1031
|
-
"log": {
|
|
1032
|
-
"classifying": "Classifying schema…",
|
|
1033
|
-
"composing": "Composing templates…",
|
|
1034
|
-
"writing": "Writing pages…",
|
|
1035
|
-
"done": "{pages} pages generated across {groups} nav groups"
|
|
1036
|
-
},
|
|
1037
|
-
"successTitle": "Your dashboard is ready",
|
|
1038
|
-
"successBody": "{pages} pages across {groups} navigation groups — generated from your schema, editable in Studio.",
|
|
1039
|
-
"errorTitle": "Generation failed",
|
|
1040
|
-
"failed": "Generation failed — retry, or re-run introspection first.",
|
|
1041
|
-
"fileTitle": "Schema file parsed — generation needs a live database",
|
|
1042
|
-
"fileBody": "Your schema parsed cleanly and the preview above is real. Generating a running app straight from a schema file (with placeholder rows) is not available yet — connect a live database to generate today."
|
|
1043
|
-
},
|
|
1044
|
-
"remap": {
|
|
1045
|
-
"column": {
|
|
1046
|
-
"nullable": "nullable",
|
|
1047
|
-
"labelOverride": "Display label",
|
|
1048
|
-
"labelHelper": "Inferred: {name}",
|
|
1049
|
-
"logicalType": "Logical type",
|
|
1050
|
-
"logicalTypeHelper": "Inferred: {type} (from {dbType}) — mapped by the adapter; not overridable in v1.",
|
|
1051
|
-
"semantic": "Semantic type",
|
|
1052
|
-
"unclassified": "Not classified yet.",
|
|
1053
|
-
"semanticHelper": "Classifier: {tag} · {confidence}% confidence · source: {source}",
|
|
1054
|
-
"semanticInferred": "inferred: {tag}",
|
|
1055
|
-
"currency": "Currency",
|
|
1056
|
-
"currencyHelper": "ISO 4217 code applied to money formatting.",
|
|
1057
|
-
"pii": "Mask by default",
|
|
1058
|
-
"piiHelper": "Masked values render redacted; unmasking requires the data.unmask_pii permission and is audit-logged.",
|
|
1059
|
-
"enum": "Enum semantics",
|
|
1060
|
-
"enumKind": "Enum kind",
|
|
1061
|
-
"enumWorkflow": "Workflow",
|
|
1062
|
-
"enumCategory": "Category",
|
|
1063
|
-
"enumLabelFor": "Label for {value}",
|
|
1064
|
-
"enumToneFor": "Tone for {value}",
|
|
1065
|
-
"enumToneAuto": "auto",
|
|
1066
|
-
"enumHelper": "Workflow enums drive status pills and board columns; tones map values onto the semantic tint scale."
|
|
1067
|
-
},
|
|
1068
|
-
"diff": {
|
|
1069
|
-
"one": "1 change",
|
|
1070
|
-
"count": "{count} changes",
|
|
1071
|
-
"saved": "Overrides saved.",
|
|
1072
|
-
"revertOne": "Revert {change}",
|
|
1073
|
-
"regenerate": "Regenerate pages",
|
|
1074
|
-
"revertAll": "Revert all",
|
|
1075
|
-
"save": "Save overrides"
|
|
1076
|
-
},
|
|
1077
|
-
"table": {
|
|
1078
|
-
"iconPicker": "Table icon",
|
|
1079
|
-
"system": "System",
|
|
1080
|
-
"labelOverride": "Display label",
|
|
1081
|
-
"labelHelper": "Inferred: {name}",
|
|
1082
|
-
"icon": "Icon",
|
|
1083
|
-
"navGroup": "Nav group",
|
|
1084
|
-
"navGroupHelper": "Nav placement is decided by the generator — a table.navGroup override is not in the v1 vocabulary.",
|
|
1085
|
-
"include": "Include in generated app",
|
|
1086
|
-
"includeHelper": "Excluded tables get no pages and disappear from nav.",
|
|
1087
|
-
"shape": "Table shape (classified)",
|
|
1088
|
-
"role": "Role",
|
|
1089
|
-
"unclassified": "Not classified",
|
|
1090
|
-
"kind": "Kind",
|
|
1091
|
-
"hierarchy": "Hierarchy",
|
|
1092
|
-
"selfFk": "Self-reference via {column}",
|
|
1093
|
-
"polymorphic": "Polymorphic pairs",
|
|
1094
|
-
"rows": "Row estimate",
|
|
1095
|
-
"shapeHelper": "Classification is recomputed on every introspection; overrides layer on top and survive regeneration."
|
|
1096
|
-
},
|
|
1097
|
-
"relations": {
|
|
1098
|
-
"declared": "Declared foreign keys",
|
|
1099
|
-
"noneDeclared": "No declared foreign keys touch this table.",
|
|
1100
|
-
"inferred": "Inferred relations",
|
|
1101
|
-
"noneInferred": "Nothing inferred for this table.",
|
|
1102
|
-
"confidence": "inferred · {pct}%",
|
|
1103
|
-
"accepted": "Accepted",
|
|
1104
|
-
"suppressed": "Suppressed",
|
|
1105
|
-
"accept": "Accept",
|
|
1106
|
-
"suppress": "Suppress",
|
|
1107
|
-
"overrides": "Override relations (applied)",
|
|
1108
|
-
"overrideBadge": "override",
|
|
1109
|
-
"add": "Add virtual relation",
|
|
1110
|
-
"fromColumn": "From column",
|
|
1111
|
-
"noColumns": "No matching column",
|
|
1112
|
-
"fromPlaceholder": "customer_id",
|
|
1113
|
-
"toTable": "To table",
|
|
1114
|
-
"noTables": "No matching table",
|
|
1115
|
-
"toColumn": "To column",
|
|
1116
|
-
"cardinality": "Cardinality",
|
|
1117
|
-
"addButton": "Add relation"
|
|
1118
|
-
},
|
|
1119
|
-
"toast": {
|
|
1120
|
-
"saved": "Schema overrides saved",
|
|
1121
|
-
"savedDetail": "The applied schema below reflects your changes.",
|
|
1122
|
-
"regenerated": "{created} created · {updated} updated · {unchanged} unchanged",
|
|
1123
|
-
"regeneratedDetail": "Pages you edited by hand are preserved — only pages with an untouched generated_hash were regenerated in place.",
|
|
1124
|
-
"regenerateFailed": "Regeneration failed"
|
|
1125
|
-
},
|
|
1126
|
-
"title": "Schema remap",
|
|
1127
|
-
"subtitle": "{tables} tables · {applied} overrides applied",
|
|
1128
|
-
"saveFailed": "Save failed: {message}",
|
|
1129
|
-
"loadFailed": "Could not load the schema for this connection.",
|
|
1130
|
-
"inspector": "Inspector",
|
|
1131
|
-
"empty": {
|
|
1132
|
-
"title": "Pick a table or column",
|
|
1133
|
-
"description": "Select something in the schema tree to remap its label, type, relations or masking."
|
|
1134
|
-
},
|
|
1135
|
-
"tabs": {
|
|
1136
|
-
"details": "Details",
|
|
1137
|
-
"relations": "Relations"
|
|
1138
|
-
},
|
|
1139
|
-
"tree": {
|
|
1140
|
-
"label": "Schema",
|
|
1141
|
-
"search": "Search tables and columns",
|
|
1142
|
-
"searchPlaceholder": "Search tables…",
|
|
1143
|
-
"noMatches": "No tables match your search.",
|
|
1144
|
-
"collapse": "Collapse table",
|
|
1145
|
-
"expand": "Expand table",
|
|
1146
|
-
"unsaved": "Unsaved change",
|
|
1147
|
-
"excluded": "Excluded"
|
|
1148
|
-
},
|
|
378
|
+
"translations": {
|
|
379
|
+
"title": "Languages & translations",
|
|
380
|
+
"subtitle": "Change any wording in Adminium, choose which languages people can pick, and add languages of your own.",
|
|
381
|
+
"warning": "Error messages and sign-in text are editable too. Those are what people read when something goes wrong, so change them carefully.",
|
|
382
|
+
"editor": {
|
|
383
|
+
"heading": "Edit translations"
|
|
384
|
+
},
|
|
385
|
+
"localeLabel": "Language",
|
|
386
|
+
"groupLabel": "Area",
|
|
387
|
+
"allAreas": "All areas",
|
|
388
|
+
"stateLabel": "Show",
|
|
389
|
+
"state": {
|
|
390
|
+
"all": "Everything",
|
|
391
|
+
"overridden": "Customised only",
|
|
392
|
+
"untranslated": "Untranslated only",
|
|
393
|
+
"stale": "English changed since"
|
|
394
|
+
},
|
|
395
|
+
"searchLabel": "Search",
|
|
396
|
+
"searchPlaceholder": "Key or English text",
|
|
397
|
+
"loading": "Loading strings…",
|
|
398
|
+
"noMatches": "No strings match those filters.",
|
|
399
|
+
"count": "{total, plural, one {# string} other {# strings}}",
|
|
1149
400
|
"badge": {
|
|
1150
|
-
"
|
|
1151
|
-
"
|
|
1152
|
-
"
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
"
|
|
401
|
+
"custom": "Customised",
|
|
402
|
+
"stale": "English changed",
|
|
403
|
+
"a11y": "Accessible name"
|
|
404
|
+
},
|
|
405
|
+
"sourceLabel": "English source",
|
|
406
|
+
"valueLabel": "Translation",
|
|
407
|
+
"save": "Save",
|
|
408
|
+
"saved": "Translation saved",
|
|
409
|
+
"resetAction": "Reset to built-in",
|
|
410
|
+
"reset": "Reset to the built-in text",
|
|
411
|
+
"locales": {
|
|
412
|
+
"heading": "Available languages",
|
|
413
|
+
"help": "Turn a language off to remove it from every language picker. Anyone already using it keeps it until they choose another."
|
|
414
|
+
},
|
|
415
|
+
"locale": {
|
|
416
|
+
"builtin": "Built in",
|
|
417
|
+
"custom": "Custom",
|
|
418
|
+
"overrides": "{count, plural, =0 {no custom text} one {# custom string} other {# custom strings}}",
|
|
419
|
+
"enable": "Turn on",
|
|
420
|
+
"disable": "Turn off",
|
|
421
|
+
"delete": "Delete",
|
|
422
|
+
"deleted": "Language removed",
|
|
423
|
+
"deletedDetail": "{users, plural, one {# person} other {# people}} moved back to the workspace default; {strings, plural, one {# translation} other {# translations}} deleted.",
|
|
424
|
+
"deleteFailed": "Could not remove that language",
|
|
425
|
+
"add": "Add a language",
|
|
426
|
+
"added": "Language added",
|
|
427
|
+
"create": "Add language",
|
|
428
|
+
"id": "Language code",
|
|
429
|
+
"intlTag": "Formatting rules from",
|
|
430
|
+
"native": "Name in the language itself",
|
|
431
|
+
"english": "Name in English",
|
|
432
|
+
"dir": "Text direction",
|
|
433
|
+
"ltr": "Left to right",
|
|
434
|
+
"rtl": "Right to left",
|
|
435
|
+
"font": "Script",
|
|
436
|
+
"latin": "Latin",
|
|
437
|
+
"arabic": "Arabic",
|
|
438
|
+
"cjk": "Chinese / Japanese / Korean",
|
|
439
|
+
"intlHelp": "Formatting rules decide how numbers, dates and plurals behave. Pick the closest language that already has them — it does not have to match your language code."
|
|
440
|
+
}
|
|
1157
441
|
}
|
|
1158
442
|
},
|
|
1159
443
|
"onboarding": {
|
|
@@ -2253,166 +1537,6 @@
|
|
|
2253
1537
|
"toLight": "Light mode",
|
|
2254
1538
|
"toDark": "Dark mode"
|
|
2255
1539
|
},
|
|
2256
|
-
"studioPages": {
|
|
2257
|
-
"title": "Pages",
|
|
2258
|
-
"subtitle": "Add, edit and organise the pages of your app, and the order they appear in the sidebar.",
|
|
2259
|
-
"createButton": "New page",
|
|
2260
|
-
"loadFailed": {
|
|
2261
|
-
"title": "Pages could not be loaded",
|
|
2262
|
-
"body": "Managing pages needs the “Manage pages” permission. Ask an administrator to grant it to one of your roles."
|
|
2263
|
-
},
|
|
2264
|
-
"tab": {
|
|
2265
|
-
"pages": "All pages",
|
|
2266
|
-
"sidebar": "Sidebar order"
|
|
2267
|
-
},
|
|
2268
|
-
"list": {
|
|
2269
|
-
"title": "Pages",
|
|
2270
|
-
"count": "{count, plural, one {# page} other {# pages}}"
|
|
2271
|
-
},
|
|
2272
|
-
"empty": {
|
|
2273
|
-
"title": "No pages yet",
|
|
2274
|
-
"body": "Connect a database to generate pages automatically, or create one by hand."
|
|
2275
|
-
},
|
|
2276
|
-
"status": {
|
|
2277
|
-
"live": "Live",
|
|
2278
|
-
"hidden": "Hidden"
|
|
2279
|
-
},
|
|
2280
|
-
"origin": {
|
|
2281
|
-
"generated": "Generated",
|
|
2282
|
-
"manifest": "Add-on",
|
|
2283
|
-
"llm": "Assistant",
|
|
2284
|
-
"system": "System",
|
|
2285
|
-
"user": "Custom"
|
|
2286
|
-
},
|
|
2287
|
-
"row": {
|
|
2288
|
-
"menu": "Actions for {title}"
|
|
2289
|
-
},
|
|
2290
|
-
"action": {
|
|
2291
|
-
"edit": "Edit page",
|
|
2292
|
-
"duplicate": "Duplicate",
|
|
2293
|
-
"hide": "Hide from sidebar",
|
|
2294
|
-
"show": "Show in sidebar",
|
|
2295
|
-
"delete": "Delete page"
|
|
2296
|
-
},
|
|
2297
|
-
"create": {
|
|
2298
|
-
"title": "New page",
|
|
2299
|
-
"failed": "The page could not be created",
|
|
2300
|
-
"submit": "Create page",
|
|
2301
|
-
"subtitle": "Pick what this page shows and how it looks."
|
|
2302
|
-
},
|
|
2303
|
-
"duplicate": {
|
|
2304
|
-
"title": "Duplicate page",
|
|
2305
|
-
"failed": "The page could not be duplicated",
|
|
2306
|
-
"submit": "Duplicate"
|
|
2307
|
-
},
|
|
2308
|
-
"delete": {
|
|
2309
|
-
"title": "Delete this page?",
|
|
2310
|
-
"body": "This cannot be undone. Saved views and personal layouts on this page are deleted for everyone.",
|
|
2311
|
-
"bodyGenerated": "This page was created by schema generation, so it will come back the next time you regenerate. Saved views and personal layouts on it are deleted for everyone.",
|
|
2312
|
-
"prompt": "Type {slug} to confirm",
|
|
2313
|
-
"confirm": "Delete page"
|
|
2314
|
-
},
|
|
2315
|
-
"field": {
|
|
2316
|
-
"title": "Title",
|
|
2317
|
-
"titleHint": "Shown in the sidebar and the page header.",
|
|
2318
|
-
"slug": "Page address",
|
|
2319
|
-
"slugHint": "Lowercase letters, numbers and dashes. Just the last part — the rest of the address is added for you.",
|
|
2320
|
-
"slugTaken": "Another page already uses this address.",
|
|
2321
|
-
"slugWarning": "Changing the address breaks existing links and bookmarks to this page.",
|
|
2322
|
-
"template": "Template",
|
|
2323
|
-
"templateHint": "Decides what the page can hold. You can change it later.",
|
|
2324
|
-
"group": "Sidebar group",
|
|
2325
|
-
"groupHint": "Which section of the sidebar it appears in.",
|
|
2326
|
-
"icon": "Icon",
|
|
2327
|
-
"iconHint": "Shown beside the page name in the sidebar.",
|
|
2328
|
-
"visible": "Show in sidebar",
|
|
2329
|
-
"visibleHint": "A hidden page stays reachable at its URL for anyone who has the link.",
|
|
2330
|
-
"table": "Table",
|
|
2331
|
-
"tableCreateHint": "The table this page reads. You can bind it later.",
|
|
2332
|
-
"tableNone": "Not bound",
|
|
2333
|
-
"tableNeedsConnection": "Pick a data source first.",
|
|
2334
|
-
"connection": "Data source",
|
|
2335
|
-
"connectionNone": "None",
|
|
2336
|
-
"iconPick": "Choose the page icon",
|
|
2337
|
-
"padding": "Page padding"
|
|
2338
|
-
},
|
|
2339
|
-
"editor": {
|
|
2340
|
-
"title": "Edit page",
|
|
2341
|
-
"save": "Save changes",
|
|
2342
|
-
"saveFailed": "Changes could not be saved",
|
|
2343
|
-
"openPage": "Open page",
|
|
2344
|
-
"generated": {
|
|
2345
|
-
"title": "This page was generated from your schema",
|
|
2346
|
-
"body": "Your changes survive regeneration. Deleting only lasts until the next run recreates it."
|
|
2347
|
-
},
|
|
2348
|
-
"contentUnavailable": "Page contents could not be loaded",
|
|
2349
|
-
"contentUnavailableBody": "The details above can still be saved.",
|
|
2350
|
-
"contentInvalid": "This page’s configuration is not readable",
|
|
2351
|
-
"contentInvalidBody": "It was written by a newer version, or it is malformed. Regenerate the page or delete it.",
|
|
2352
|
-
"data": "Data",
|
|
2353
|
-
"schemaFailed": "Tables could not be listed",
|
|
2354
|
-
"schemaFailedBody": "This connection may not have been analysed yet. Run introspection from Studio → Data connections.",
|
|
2355
|
-
"notBindable": "This template is not bound to one table",
|
|
2356
|
-
"notBindableBody": "Its contents are built widget by widget instead. Open the page and use Edit to add them.",
|
|
2357
|
-
"recompose": "This page will be rebuilt",
|
|
2358
|
-
"recomposeBody": "Saving rebuilds the contents. Column and widget edits here are lost.",
|
|
2359
|
-
"missing": "That page no longer exists",
|
|
2360
|
-
"missingBody": "It may have been deleted, or removed by a regeneration run.",
|
|
2361
|
-
"details": "Details",
|
|
2362
|
-
"itemsPending": "Save the change above first — the contents are rebuilt from it.",
|
|
2363
|
-
"columns": "Columns",
|
|
2364
|
-
"appearance": "Appearance"
|
|
2365
|
-
},
|
|
2366
|
-
"sidebar": {
|
|
2367
|
-
"help": "Reorder pages within a group, or move one to another group. Changes apply to every user.",
|
|
2368
|
-
"discard": "Discard",
|
|
2369
|
-
"save": "Save order",
|
|
2370
|
-
"saveFailed": "The new order could not be saved",
|
|
2371
|
-
"emptyGroup": "No pages in this group.",
|
|
2372
|
-
"moveUp": "Move {title} up",
|
|
2373
|
-
"moveDown": "Move {title} down",
|
|
2374
|
-
"moveTo": "Move {title} to a group",
|
|
2375
|
-
"ungrouped": {
|
|
2376
|
-
"title": "Some pages are in no sidebar group",
|
|
2377
|
-
"body": "These pages work at their URL but appear nowhere in the sidebar. Open each one and pick a group."
|
|
2378
|
-
}
|
|
2379
|
-
},
|
|
2380
|
-
"columns": {
|
|
2381
|
-
"help": "Reorder columns, rename their headers, and choose which are shown in the table.",
|
|
2382
|
-
"discard": "Discard",
|
|
2383
|
-
"save": "Save columns",
|
|
2384
|
-
"saveFailed": "Columns could not be saved",
|
|
2385
|
-
"pk": "Key",
|
|
2386
|
-
"pii": "PII",
|
|
2387
|
-
"header": "Header for {name}",
|
|
2388
|
-
"shown": "Shown",
|
|
2389
|
-
"toggle": "Show {name} in the table",
|
|
2390
|
-
"moveUp": "Move {name} up",
|
|
2391
|
-
"moveDown": "Move {name} down",
|
|
2392
|
-
"remove": "Remove {name}",
|
|
2393
|
-
"none": {
|
|
2394
|
-
"title": "This page has no columns yet",
|
|
2395
|
-
"body": "Columns are read from the table when the page is generated. Bind this page to a table and regenerate to fill them in."
|
|
2396
|
-
}
|
|
2397
|
-
},
|
|
2398
|
-
"icon": {
|
|
2399
|
-
"none": "Choose an icon",
|
|
2400
|
-
"search": "Search icons",
|
|
2401
|
-
"noMatches": "No icons match that search."
|
|
2402
|
-
},
|
|
2403
|
-
"preview": {
|
|
2404
|
-
"untitled": "Untitled page",
|
|
2405
|
-
"note": "An illustration of the layout, not your data."
|
|
2406
|
-
},
|
|
2407
|
-
"padding": {
|
|
2408
|
-
"default": "Default for this template",
|
|
2409
|
-
"none": "None",
|
|
2410
|
-
"standard": "Standard (28 × 24)",
|
|
2411
|
-
"custom": "Custom…",
|
|
2412
|
-
"x": "Sides (px)",
|
|
2413
|
-
"y": "Top and bottom (px)"
|
|
2414
|
-
}
|
|
2415
|
-
},
|
|
2416
1540
|
"audit": {
|
|
2417
1541
|
"action": {
|
|
2418
1542
|
"view": "View"
|
|
@@ -2544,6 +1668,7 @@
|
|
|
2544
1668
|
"exportsManage": "Manage everyone’s exports",
|
|
2545
1669
|
"importsManage": "Manage everyone’s imports",
|
|
2546
1670
|
"jobsManage": "Start and cancel background jobs",
|
|
1671
|
+
"manifestsManage": "Install and connect add-ons",
|
|
2547
1672
|
"jobsRead": "See all background jobs",
|
|
2548
1673
|
"llmRun": "Run AI assist",
|
|
2549
1674
|
"pagesManage": "Create and organize pages",
|
|
@@ -2565,7 +1690,7 @@
|
|
|
2565
1690
|
},
|
|
2566
1691
|
"security": {
|
|
2567
1692
|
"password": {
|
|
2568
|
-
"changedBody": "Use the new password the next time you sign in.
|
|
1693
|
+
"changedBody": "Use the new password the next time you sign in. Other devices stay signed in — end those sessions if you want them out.",
|
|
2569
1694
|
"changed": "Password changed",
|
|
2570
1695
|
"confirm": "Confirm new password",
|
|
2571
1696
|
"current": "Current password",
|