@adminiumjs/i18n 0.3.0-rc.1 → 0.3.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/dist/a11y-keys.d.ts +1 -1
  2. package/dist/a11y-keys.d.ts.map +1 -1
  3. package/dist/a11y-keys.js +122 -24
  4. package/dist/a11y-keys.js.map +1 -1
  5. package/dist/resources/ar-eg/apiDocs.d.ts +101 -0
  6. package/dist/resources/ar-eg/apiDocs.d.ts.map +1 -0
  7. package/dist/resources/ar-eg/apiDocs.js +101 -0
  8. package/dist/resources/ar-eg/apiDocs.js.map +1 -0
  9. package/dist/resources/ar-eg/common.d.ts +35 -55
  10. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  11. package/dist/resources/ar-eg/common.js +42 -62
  12. package/dist/resources/ar-eg/common.js.map +1 -1
  13. package/dist/resources/ar-eg/studio.d.ts +369 -5
  14. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  15. package/dist/resources/ar-eg/studio.js +379 -15
  16. package/dist/resources/ar-eg/studio.js.map +1 -1
  17. package/dist/resources/ar-eg/ui.d.ts +14 -0
  18. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  19. package/dist/resources/ar-eg/ui.js +15 -1
  20. package/dist/resources/ar-eg/ui.js.map +1 -1
  21. package/dist/resources/cs-cz/apiDocs.d.ts +101 -0
  22. package/dist/resources/cs-cz/apiDocs.d.ts.map +1 -0
  23. package/dist/resources/cs-cz/apiDocs.js +101 -0
  24. package/dist/resources/cs-cz/apiDocs.js.map +1 -0
  25. package/dist/resources/cs-cz/common.d.ts +35 -55
  26. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  27. package/dist/resources/cs-cz/common.js +42 -62
  28. package/dist/resources/cs-cz/common.js.map +1 -1
  29. package/dist/resources/cs-cz/studio.d.ts +369 -5
  30. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  31. package/dist/resources/cs-cz/studio.js +379 -15
  32. package/dist/resources/cs-cz/studio.js.map +1 -1
  33. package/dist/resources/cs-cz/ui.d.ts +14 -0
  34. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  35. package/dist/resources/cs-cz/ui.js +15 -1
  36. package/dist/resources/cs-cz/ui.js.map +1 -1
  37. package/dist/resources/da-dk/apiDocs.d.ts +101 -0
  38. package/dist/resources/da-dk/apiDocs.d.ts.map +1 -0
  39. package/dist/resources/da-dk/apiDocs.js +101 -0
  40. package/dist/resources/da-dk/apiDocs.js.map +1 -0
  41. package/dist/resources/da-dk/common.d.ts +35 -55
  42. package/dist/resources/da-dk/common.d.ts.map +1 -1
  43. package/dist/resources/da-dk/common.js +42 -62
  44. package/dist/resources/da-dk/common.js.map +1 -1
  45. package/dist/resources/da-dk/studio.d.ts +369 -5
  46. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  47. package/dist/resources/da-dk/studio.js +379 -15
  48. package/dist/resources/da-dk/studio.js.map +1 -1
  49. package/dist/resources/da-dk/ui.d.ts +14 -0
  50. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  51. package/dist/resources/da-dk/ui.js +15 -1
  52. package/dist/resources/da-dk/ui.js.map +1 -1
  53. package/dist/resources/de-de/apiDocs.d.ts +101 -0
  54. package/dist/resources/de-de/apiDocs.d.ts.map +1 -0
  55. package/dist/resources/de-de/apiDocs.js +101 -0
  56. package/dist/resources/de-de/apiDocs.js.map +1 -0
  57. package/dist/resources/de-de/common.d.ts +35 -55
  58. package/dist/resources/de-de/common.d.ts.map +1 -1
  59. package/dist/resources/de-de/common.js +42 -62
  60. package/dist/resources/de-de/common.js.map +1 -1
  61. package/dist/resources/de-de/studio.d.ts +369 -5
  62. package/dist/resources/de-de/studio.d.ts.map +1 -1
  63. package/dist/resources/de-de/studio.js +379 -15
  64. package/dist/resources/de-de/studio.js.map +1 -1
  65. package/dist/resources/de-de/ui.d.ts +14 -0
  66. package/dist/resources/de-de/ui.d.ts.map +1 -1
  67. package/dist/resources/de-de/ui.js +15 -1
  68. package/dist/resources/de-de/ui.js.map +1 -1
  69. package/dist/resources/en-us/apiDocs.d.ts +101 -0
  70. package/dist/resources/en-us/apiDocs.d.ts.map +1 -0
  71. package/dist/resources/en-us/apiDocs.js +101 -0
  72. package/dist/resources/en-us/apiDocs.js.map +1 -0
  73. package/dist/resources/en-us/common.d.ts +35 -55
  74. package/dist/resources/en-us/common.d.ts.map +1 -1
  75. package/dist/resources/en-us/common.js +42 -62
  76. package/dist/resources/en-us/common.js.map +1 -1
  77. package/dist/resources/en-us/studio.d.ts +369 -5
  78. package/dist/resources/en-us/studio.d.ts.map +1 -1
  79. package/dist/resources/en-us/studio.js +379 -15
  80. package/dist/resources/en-us/studio.js.map +1 -1
  81. package/dist/resources/en-us/ui.d.ts +14 -0
  82. package/dist/resources/en-us/ui.d.ts.map +1 -1
  83. package/dist/resources/en-us/ui.js +15 -1
  84. package/dist/resources/en-us/ui.js.map +1 -1
  85. package/dist/resources/fr-fr/apiDocs.d.ts +101 -0
  86. package/dist/resources/fr-fr/apiDocs.d.ts.map +1 -0
  87. package/dist/resources/fr-fr/apiDocs.js +101 -0
  88. package/dist/resources/fr-fr/apiDocs.js.map +1 -0
  89. package/dist/resources/fr-fr/common.d.ts +35 -55
  90. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  91. package/dist/resources/fr-fr/common.js +42 -62
  92. package/dist/resources/fr-fr/common.js.map +1 -1
  93. package/dist/resources/fr-fr/studio.d.ts +369 -5
  94. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  95. package/dist/resources/fr-fr/studio.js +379 -15
  96. package/dist/resources/fr-fr/studio.js.map +1 -1
  97. package/dist/resources/fr-fr/ui.d.ts +14 -0
  98. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  99. package/dist/resources/fr-fr/ui.js +15 -1
  100. package/dist/resources/fr-fr/ui.js.map +1 -1
  101. package/dist/resources/index.d.ts.map +1 -1
  102. package/dist/resources/index.js +2 -0
  103. package/dist/resources/index.js.map +1 -1
  104. package/dist/resources/lazy.d.ts.map +1 -1
  105. package/dist/resources/lazy.js +8 -0
  106. package/dist/resources/lazy.js.map +1 -1
  107. package/dist/resources/namespaces.d.ts +5 -4
  108. package/dist/resources/namespaces.d.ts.map +1 -1
  109. package/dist/resources/namespaces.js +11 -2
  110. package/dist/resources/namespaces.js.map +1 -1
  111. package/dist/resources/zh-cn/apiDocs.d.ts +101 -0
  112. package/dist/resources/zh-cn/apiDocs.d.ts.map +1 -0
  113. package/dist/resources/zh-cn/apiDocs.js +101 -0
  114. package/dist/resources/zh-cn/apiDocs.js.map +1 -0
  115. package/dist/resources/zh-cn/common.d.ts +35 -55
  116. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  117. package/dist/resources/zh-cn/common.js +42 -62
  118. package/dist/resources/zh-cn/common.js.map +1 -1
  119. package/dist/resources/zh-cn/studio.d.ts +369 -5
  120. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  121. package/dist/resources/zh-cn/studio.js +379 -15
  122. package/dist/resources/zh-cn/studio.js.map +1 -1
  123. package/dist/resources/zh-cn/ui.d.ts +14 -0
  124. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  125. package/dist/resources/zh-cn/ui.js +15 -1
  126. package/dist/resources/zh-cn/ui.js.map +1 -1
  127. package/dist/resources/zh-tw/apiDocs.d.ts +101 -0
  128. package/dist/resources/zh-tw/apiDocs.d.ts.map +1 -0
  129. package/dist/resources/zh-tw/apiDocs.js +101 -0
  130. package/dist/resources/zh-tw/apiDocs.js.map +1 -0
  131. package/dist/resources/zh-tw/common.d.ts +35 -55
  132. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  133. package/dist/resources/zh-tw/common.js +42 -62
  134. package/dist/resources/zh-tw/common.js.map +1 -1
  135. package/dist/resources/zh-tw/studio.d.ts +369 -5
  136. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  137. package/dist/resources/zh-tw/studio.js +379 -15
  138. package/dist/resources/zh-tw/studio.js.map +1 -1
  139. package/dist/resources/zh-tw/ui.d.ts +14 -0
  140. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  141. package/dist/resources/zh-tw/ui.js +15 -1
  142. package/dist/resources/zh-tw/ui.js.map +1 -1
  143. package/dist/review-status.js +7 -7
  144. package/locales/ar-EG/.meta.json +1395 -155
  145. package/locales/ar-EG/apiDocs.json +90 -0
  146. package/locales/ar-EG/common.json +42 -62
  147. package/locales/ar-EG/studio.json +379 -15
  148. package/locales/ar-EG/ui.json +15 -1
  149. package/locales/cs-CZ/.meta.json +1395 -155
  150. package/locales/cs-CZ/apiDocs.json +90 -0
  151. package/locales/cs-CZ/common.json +42 -62
  152. package/locales/cs-CZ/studio.json +379 -15
  153. package/locales/cs-CZ/ui.json +15 -1
  154. package/locales/da-DK/.meta.json +1396 -156
  155. package/locales/da-DK/apiDocs.json +90 -0
  156. package/locales/da-DK/common.json +42 -62
  157. package/locales/da-DK/studio.json +379 -15
  158. package/locales/da-DK/ui.json +15 -1
  159. package/locales/de-DE/.meta.json +1395 -155
  160. package/locales/de-DE/apiDocs.json +90 -0
  161. package/locales/de-DE/common.json +42 -62
  162. package/locales/de-DE/studio.json +379 -15
  163. package/locales/de-DE/ui.json +15 -1
  164. package/locales/en-US/apiDocs.json +90 -0
  165. package/locales/en-US/common.json +42 -62
  166. package/locales/en-US/studio.json +379 -15
  167. package/locales/en-US/ui.json +15 -1
  168. package/locales/fr-FR/.meta.json +1394 -154
  169. package/locales/fr-FR/apiDocs.json +90 -0
  170. package/locales/fr-FR/common.json +42 -62
  171. package/locales/fr-FR/studio.json +379 -15
  172. package/locales/fr-FR/ui.json +15 -1
  173. package/locales/zh-CN/.meta.json +1397 -157
  174. package/locales/zh-CN/apiDocs.json +90 -0
  175. package/locales/zh-CN/common.json +42 -62
  176. package/locales/zh-CN/studio.json +379 -15
  177. package/locales/zh-CN/ui.json +15 -1
  178. package/locales/zh-TW/.meta.json +1395 -155
  179. package/locales/zh-TW/apiDocs.json +90 -0
  180. package/locales/zh-TW/common.json +42 -62
  181. package/locales/zh-TW/studio.json +379 -15
  182. package/locales/zh-TW/ui.json +15 -1
  183. package/package.json +1 -1
@@ -398,7 +398,15 @@
398
398
  "noteTitle": "What counts as a change",
399
399
  "updated": "When a row changes"
400
400
  },
401
- "unbound": "Still to fill: {slots}"
401
+ "unbound": "Still to fill: {slots}",
402
+ "deleteConfirm": {
403
+ "title": "Delete this mapping?",
404
+ "body": "The rule that fires it goes too, and documents already drawn from it lose their link back. This cannot be undone.",
405
+ "prompt": "Type {name} to confirm",
406
+ "confirm": "Delete mapping"
407
+ },
408
+ "deleteFailed": "The mapping was not deleted",
409
+ "loadFailed": "The mappings could not be loaded"
402
410
  },
403
411
  "enrich": {
404
412
  "byo": {
@@ -454,6 +462,8 @@
454
462
  },
455
463
  "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.",
456
464
  "fileTitle": "AI enrichment needs a live database",
465
+ "noTablesBody": "This database has no tables yet, so there is nothing for AI to label or group. Continue — once tables exist, you can run AI enrichment any time from Settings → AI.",
466
+ "noTablesTitle": "No tables to enrich",
457
467
  "generatePrompt": "Generate prompt",
458
468
  "intentLabel": "How would you like to enrich?",
459
469
  "localeLocked": "(required)",
@@ -518,7 +528,10 @@
518
528
  "subtitle": "One page per included table plus dashboards per domain — intent:",
519
529
  "successBody": "{pages} pages across {groups} navigation groups — generated from your schema, editable in Studio.",
520
530
  "successTitle": "Your dashboard is ready",
521
- "title": "Generate your app"
531
+ "title": "Generate your app",
532
+ "blankBody": "Nothing was generated, exactly as you asked. Build your first page from this connection whenever you are ready.",
533
+ "blankTitle": "Your connection is ready",
534
+ "createPage": "Create a page"
522
535
  },
523
536
  "hostedApps": {
524
537
  "browse": {
@@ -601,7 +614,8 @@
601
614
  "toggleDdl": "Show the DDL preview",
602
615
  "ddl": "DDL preview",
603
616
  "ddlNote": "Illustrative. The server emits the exact statement for your engine, including foreign keys.",
604
- "summary": "{created} created · {reused} reused"
617
+ "summary": "{created} created · {reused} reused",
618
+ "pageWarnings": "Some of this app’s pages will arrive without a table"
605
619
  },
606
620
  "done": {
607
621
  "title": "Installed",
@@ -649,7 +663,9 @@
649
663
  "needsNewer": "v{version} needs Adminium {minimum} or later",
650
664
  "missing": "Missing",
651
665
  "missingBody": "Its files are not on this server, so it is not served. Install the same version again, or uninstall it.",
652
- "update": "Update"
666
+ "update": "Update",
667
+ "discardFailed": "The upload was not discarded",
668
+ "uninstallFailed": "The app was not uninstalled"
653
669
  },
654
670
  "instances": {
655
671
  "add": "Add an instance",
@@ -705,6 +721,16 @@
705
721
  "veto": {
706
722
  "title": "This deployment cannot browse online",
707
723
  "body": "The setting is saved, but network features are off for this server and that wins. Installed apps keep working, and you can still upload one yourself."
724
+ },
725
+ "columns": {
726
+ "title": "Update {app} to v{version}",
727
+ "subtitle": "This version needs columns that tables in your database do not have yet.",
728
+ "body": "Adminium can add them for you. You will see the exact statement before anything runs, nothing is removed, and the app is updated only once the columns exist.",
729
+ "alsoCreates": "The update also creates these tables:",
730
+ "noDdl": "Adminium cannot add these columns here",
731
+ "failed": "The columns could not be added",
732
+ "valuesFailed": "The columns were added, but their allowed values could not be recorded",
733
+ "confirm": "Add the columns and update"
708
734
  }
709
735
  },
710
736
  "hub": {
@@ -743,7 +769,12 @@
743
769
  "failed": "Could not delete the connection. Try again.",
744
770
  "prompt": "Type {name} to confirm",
745
771
  "success": "Connection “{name}” deleted",
746
- "title": "Delete connection"
772
+ "title": "Delete connection",
773
+ "forbidden": "Your role does not include managing connections, so this one was not deleted.",
774
+ "liveKeys": {
775
+ "body": "Pages built on these keys would stop working. Revoke them on the Public API page first, then delete the connection.",
776
+ "title": "Publishable keys still use this connection"
777
+ }
747
778
  },
748
779
  "empty": {
749
780
  "body": "Connect a database and Adminium generates your admin panel from its schema.",
@@ -833,7 +864,11 @@
833
864
  "title": "Support console"
834
865
  },
835
866
  "title": "What do you need?",
836
- "trust": "We read your schema only — never your row data during setup."
867
+ "trust": "We read your schema only — never your row data during setup.",
868
+ "blank": {
869
+ "description": "Generate nothing. Connect a database and build the pages you want, one at a time.",
870
+ "title": "Blank canvas"
871
+ }
837
872
  },
838
873
  "llmRuns": {
839
874
  "review": {
@@ -1153,7 +1188,8 @@
1153
1188
  "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.",
1154
1189
  "confirm": "Delete page",
1155
1190
  "prompt": "Type {slug} to confirm",
1156
- "title": "Delete this page?"
1191
+ "title": "Delete this page?",
1192
+ "failed": "The page was not deleted"
1157
1193
  },
1158
1194
  "derived": {
1159
1195
  "add": "Add column",
@@ -1237,8 +1273,10 @@
1237
1273
  "slugTaken": "Another page already uses this address.",
1238
1274
  "slugWarning": "Changing the address breaks existing links and bookmarks to this page.",
1239
1275
  "table": "Table",
1240
- "tableCreateHint": "The table this page reads. You can bind it later.",
1276
+ "tableChoose": "Choose a table…",
1277
+ "tableCreateHint": "The table this page reads.",
1241
1278
  "tableNeedsConnection": "Pick a data source first.",
1279
+ "tableNoConnection": "Connect a database first — this page is built from one of its tables.",
1242
1280
  "tableNone": "Not bound",
1243
1281
  "template": "Template",
1244
1282
  "templateHint": "Decides what the page can hold. You can change it later.",
@@ -1262,6 +1300,69 @@
1262
1300
  "title": "Filters",
1263
1301
  "up": "Move {column} up"
1264
1302
  },
1303
+ "fit": {
1304
+ "alternatives": {
1305
+ "title": "Use a table that already fits",
1306
+ "help": "Nothing is written to your database — this only points the page at a table that already has what it needs.",
1307
+ "use": "Use this table"
1308
+ },
1309
+ "checkFailed": "Adminium could not check this table",
1310
+ "checkFailedBody": "You can still create the page. If the table cannot back it, creating it will say so.",
1311
+ "columns": {
1312
+ "title": "Add what is missing to this table",
1313
+ "help": "Adminium adds these columns to your table. You will see the exact statement before anything runs, and nothing is removed.",
1314
+ "review": "Review the change",
1315
+ "confirm": "Run it",
1316
+ "failed": "That did not work",
1317
+ "partial": "One thing this page needs cannot be added for you, so it will still be incomplete afterwards.",
1318
+ "cannot": "Adminium cannot add this one for you",
1319
+ "cannotBody": "This page needs a link to another table, which has to be set up in Studio → Schema.",
1320
+ "halfDone": "The columns were added, but Adminium could not record what they mean",
1321
+ "halfDoneBody": "Nothing needs running again — the columns exist. Set their meaning in Studio → Schema, or ask an administrator to."
1322
+ },
1323
+ "needs": "To build this page, the table needs:",
1324
+ "noDdl": "Adminium cannot change this table for you",
1325
+ "role": {
1326
+ "eventDate": "a date on each row",
1327
+ "title": "a text column to show as each row’s title",
1328
+ "status": "a status column whose values read as workflow states",
1329
+ "personFk": "a link to a table of people",
1330
+ "shiftType": "a column saying which kind of shift each row is"
1331
+ },
1332
+ "slotOnly": "Nothing on this table can fill its “{slot}” area.",
1333
+ "tag": {
1334
+ "title": "Use a column you already have",
1335
+ "help": "This only records what the column means. Your database is not changed, and you can undo it in Studio → Schema.",
1336
+ "action": "Use this column",
1337
+ "failed": "That column could not be marked"
1338
+ },
1339
+ "title": "This table cannot back this page yet",
1340
+ "table": {
1341
+ "title": "Start a new table for this page",
1342
+ "help": "Adminium creates a table with everything this page needs. You will see the exact statement before anything runs, and your other tables are not touched.",
1343
+ "open": "Or start a new table for this page",
1344
+ "name": "Table name",
1345
+ "nameTaken": "A table with this name already exists.",
1346
+ "nameInvalid": "Use lowercase letters, numbers and underscores, starting with a letter.",
1347
+ "people": "Assign each row to someone from",
1348
+ "peopleNew": "A new table of people",
1349
+ "peopleCreated": "Also creates “{table}”, a small table of the people rows are assigned to.",
1350
+ "noCompose": "A table under this name would not work for this page. Try another name.",
1351
+ "confirm": "Create the table",
1352
+ "noDdl": "Adminium cannot create a table here",
1353
+ "halfDone": "The table was created, but Adminium could not record what its columns mean",
1354
+ "halfDoneBody": "Nothing needs running again — the table exists. Set its columns’ meaning in Studio → Schema, or ask an administrator to.",
1355
+ "notReread": "The table was created, but Adminium could not read it back yet",
1356
+ "notRereadBody": "Nothing needs running again. Refresh the schema from Studio → Data connections, then choose the new table here."
1357
+ },
1358
+ "related": {
1359
+ "title": "Use the dates of a linked table",
1360
+ "help": "Nothing is written to your database. The page is built on a table linked to this one, and each entry shows a name from this table.",
1361
+ "reason": "Dates from “{date}”, each titled with “{title}” through “{via}”",
1362
+ "chosen": "Built on {table}, each entry titled with “{title}” from {from}",
1363
+ "undo": "Go back to {table}"
1364
+ }
1365
+ },
1265
1366
  "form": {
1266
1367
  "addLines": "{label} as lines",
1267
1368
  "dialog": {
@@ -1465,7 +1566,8 @@
1465
1566
  "narrow": "Narrow (720px)",
1466
1567
  "page": "Page (1080px)",
1467
1568
  "wide": "Wide (1800px)"
1468
- }
1569
+ },
1570
+ "toggleFailed": "The page was not changed"
1469
1571
  },
1470
1572
  "project": {
1471
1573
  "actions": {
@@ -1579,7 +1681,6 @@
1579
1681
  "connectionLabel": "Connection ID",
1580
1682
  "create": "Create scope",
1581
1683
  "delete": "Delete",
1582
- "deleteBody": "Any page using a key bound to this scope stops loading data. Keys are not deleted — revoke them first if that is what you meant.",
1583
1684
  "deleteConfirm": "Delete scope",
1584
1685
  "deletePrompt": "Type the scope name to confirm",
1585
1686
  "deleteTitle": "Delete this scope",
@@ -1592,7 +1693,12 @@
1592
1693
  "keyCount": "{count, plural, =0 {no keys} one {# key} other {# keys}}",
1593
1694
  "nameLabel": "Name",
1594
1695
  "subtitle": "A scope is the whole of what a key may reach — the tables, the exact columns, and a filter the caller can narrow but never remove.",
1595
- "title": "Scopes"
1696
+ "title": "Scopes",
1697
+ "deleteBodyKeys": "A scope with live keys cannot be deleted. Revoke its keys first. Keys that are already revoked or expired are deleted with the scope.",
1698
+ "liveKeys": {
1699
+ "body": "Pages built on these keys would stop working. Revoke them in the keys list first, then delete the scope.",
1700
+ "title": "Publishable keys still use this scope"
1701
+ }
1596
1702
  },
1597
1703
  "status": {
1598
1704
  "heading": "Status"
@@ -1907,6 +2013,22 @@
1907
2013
  "cta": "Open AI settings",
1908
2014
  "heading": "AI enrichment"
1909
2015
  },
2016
+ "apiCard": {
2017
+ "api": {
2018
+ "helper": "Serve the endpoints your keys are scoped to. Off, every key stops working at once; nothing is deleted.",
2019
+ "label": "Public API"
2020
+ },
2021
+ "docs": {
2022
+ "helper": "A public page at /api-docs listing the endpoints your live keys can call — staff-level ones included — with their paths, methods and column names, to anyone who can reach this server. It shows no data and no keys.",
2023
+ "label": "API documentation page"
2024
+ },
2025
+ "failed": "The switch did not change. Try again.",
2026
+ "heading": "Public API",
2027
+ "notRegistered": {
2028
+ "body": "Set ADMINIUM_PUBLIC_API_ORIGINS and restart. Until then these switches change nothing.",
2029
+ "title": "Not enabled on this server"
2030
+ }
2031
+ },
1910
2032
  "danger": {
1911
2033
  "deleteCta": "Delete connection",
1912
2034
  "deleteDesc": "Deletes the connection and its generated pages. Your database is not touched. Cannot be undone.",
@@ -2011,9 +2133,9 @@
2011
2133
  "heading": "Project"
2012
2134
  },
2013
2135
  "publicApiCard": {
2014
- "body": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
2015
- "cta": "Open public API",
2016
- "heading": "Public API"
2136
+ "body": "Create endpoints and the keys that may call them.",
2137
+ "cta": "Open API keys",
2138
+ "heading": "API keys"
2017
2139
  },
2018
2140
  "review": {
2019
2141
  "cancel": "Cancel",
@@ -2256,7 +2378,10 @@
2256
2378
  "usedBytes": "{size} used"
2257
2379
  },
2258
2380
  "tables": {
2381
+ "emptyBody": "This database has no tables yet. You can still continue — once you create tables, use Re-introspect on this connection to bring them in.",
2382
+ "emptyFileBody": "This schema file defines no tables. Go back and upload a different file, or continue anyway.",
2259
2383
  "emptyFilter": "No tables match your filter.",
2384
+ "emptyTitle": "No tables found",
2260
2385
  "highVolume": "high volume",
2261
2386
  "highVolumeNote": "Tables over 100,000 rows start unchecked — ops tables rarely belong in a dashboard.",
2262
2387
  "importNoCounts": "Schema files carry no row counts — the column shows — until a live database is connected.",
@@ -2329,7 +2454,8 @@
2329
2454
  "meta": "Meta storage",
2330
2455
  "source": "Source",
2331
2456
  "tables": "Tables",
2332
- "test": "Analyze"
2457
+ "test": "Analyze",
2458
+ "finish": "Finish"
2333
2459
  },
2334
2460
  "title": "New connection"
2335
2461
  },
@@ -2381,5 +2507,243 @@
2381
2507
  "valueCount": "{count} values",
2382
2508
  "values": "Values",
2383
2509
  "view": "View"
2510
+ },
2511
+ "apiKeys": {
2512
+ "banner": {
2513
+ "bodyOnce": "Copy it now — you won't be able to see it again. Scoped to {summary}.",
2514
+ "bodyRevealable": "Copy it now — you can reveal it again from the list below. Scoped to {summary}.",
2515
+ "copied": "Copied",
2516
+ "copy": "Copy",
2517
+ "titleNamed": "{name} created"
2518
+ },
2519
+ "builder": {
2520
+ "auth": {
2521
+ "anon": "Anon",
2522
+ "authenticated": "Authenticated",
2523
+ "label": "Auth requirement",
2524
+ "service": "Service role"
2525
+ },
2526
+ "cancel": "Cancel",
2527
+ "columns": {
2528
+ "all": "All",
2529
+ "label": "Exposed columns",
2530
+ "none": "None"
2531
+ },
2532
+ "create": "Create endpoint",
2533
+ "delete": "Delete endpoint",
2534
+ "deleteRefused": "{count, plural, one {# key still uses} other {# keys still use}} this endpoint: {names}.",
2535
+ "filters": {
2536
+ "add": "Add",
2537
+ "empty": "No filters — every row of the source is reachable.",
2538
+ "label": "Default filters",
2539
+ "remove": "Remove filter",
2540
+ "value": "value"
2541
+ },
2542
+ "footer": {
2543
+ "applyFirst": "Apply or revert the edited definition first."
2544
+ },
2545
+ "methodUnsupported": "This source cannot support {method}: it has no primary key.",
2546
+ "methods": "Methods",
2547
+ "op": {
2548
+ "between": "between",
2549
+ "eq": "equals",
2550
+ "gt": "greater than",
2551
+ "gte": "at least",
2552
+ "ilike": "contains (any case)",
2553
+ "in": "in list",
2554
+ "is_null": "is empty",
2555
+ "like": "contains",
2556
+ "lt": "less than",
2557
+ "lte": "at most",
2558
+ "neq": "not equals",
2559
+ "not_null": "is not empty"
2560
+ },
2561
+ "paging": {
2562
+ "asc": "Asc",
2563
+ "defaultLimit": "Default limit",
2564
+ "desc": "Desc",
2565
+ "label": "Pagination & sorting",
2566
+ "maxLimit": "Max limit",
2567
+ "orderBy": "Order by"
2568
+ },
2569
+ "pane": {
2570
+ "apply": "Apply to form",
2571
+ "dirty": "edited — not applied",
2572
+ "format": "Format",
2573
+ "label": "Route definition, JSON",
2574
+ "more": "{first} (+{n} more)",
2575
+ "revert": "Revert",
2576
+ "synced": "synced with form",
2577
+ "title": "Route definition"
2578
+ },
2579
+ "rate": {
2580
+ "hour": "hour",
2581
+ "label": "Rate limit & response",
2582
+ "minute": "minute",
2583
+ "per": "Per",
2584
+ "requests": "Requests",
2585
+ "second": "second"
2586
+ },
2587
+ "refused": {
2588
+ "keys": "Saving this would break {count, plural, one {# key} other {# keys}}: {names}."
2589
+ },
2590
+ "route": "Route",
2591
+ "routePlaceholder": "customers",
2592
+ "routeRename": "Callers must switch to the new path.",
2593
+ "save": "Save changes",
2594
+ "shape": {
2595
+ "array": "Bare array",
2596
+ "label": "Response shape",
2597
+ "single": "Single object",
2598
+ "wrapped": "Wrapped in '{' data '}'"
2599
+ },
2600
+ "source": "Source table or view",
2601
+ "subtitle": "Configure it visually — Adminium writes the route definition for you",
2602
+ "titleEdit": "Edit endpoint",
2603
+ "titleNew": "New endpoint"
2604
+ },
2605
+ "connection": {
2606
+ "label": "Connection"
2607
+ },
2608
+ "create": "Create key",
2609
+ "endpoints": {
2610
+ "col": {
2611
+ "auth": "Auth",
2612
+ "methods": "Methods",
2613
+ "rate": "Rate limit",
2614
+ "route": "Route"
2615
+ },
2616
+ "custom": "CUSTOM",
2617
+ "edit": "Edit endpoint",
2618
+ "explore": "Explore API",
2619
+ "new": "New endpoint",
2620
+ "subtitle": "Generated from your schema. Keys are scoped to these.",
2621
+ "title": "Endpoints",
2622
+ "unavailable": "UNAVAILABLE"
2623
+ },
2624
+ "keys": {
2625
+ "col": {
2626
+ "access": "Access",
2627
+ "actions": "Actions",
2628
+ "key": "Key",
2629
+ "lastUsed": "Last used",
2630
+ "name": "Name"
2631
+ },
2632
+ "count": "{n, plural, one {# key} other {# keys}}",
2633
+ "empty": "No active keys. Create one to get started.",
2634
+ "hide": "Hide key",
2635
+ "kind": {
2636
+ "browser": "BROWSER",
2637
+ "server": "SERVER"
2638
+ },
2639
+ "never": "Never",
2640
+ "reveal": "Reveal key",
2641
+ "revoke": "Revoke",
2642
+ "revokeConfirm": {
2643
+ "body": "Anything using this key stops working at once. This cannot be undone.",
2644
+ "confirm": "Revoke key",
2645
+ "prompt": "Type “{name}” to confirm",
2646
+ "title": "Revoke {name}?"
2647
+ },
2648
+ "revokeFailed": "That key could not be revoked. It is still active.",
2649
+ "title": "Active keys",
2650
+ "untitled": "Untitled key"
2651
+ },
2652
+ "method": {
2653
+ "BATCH": {
2654
+ "desc": "Bulk insert or upsert, up to 500 rows",
2655
+ "title": "Batch"
2656
+ },
2657
+ "DELETE": {
2658
+ "desc": "Remove a row by primary key",
2659
+ "title": "Delete"
2660
+ },
2661
+ "GET": {
2662
+ "desc": "List rows and fetch a single record",
2663
+ "title": "Read"
2664
+ },
2665
+ "PATCH": {
2666
+ "desc": "Partial update of a row by primary key",
2667
+ "title": "Update"
2668
+ },
2669
+ "POST": {
2670
+ "desc": "Insert a new row",
2671
+ "title": "Create"
2672
+ },
2673
+ "PUT": {
2674
+ "desc": "Replace a full row by primary key",
2675
+ "title": "Replace"
2676
+ }
2677
+ },
2678
+ "note": {
2679
+ "notRegistered": "The public API is not enabled on this server. Set ADMINIUM_PUBLIC_API_ORIGINS and restart — keys made here will work from then on.",
2680
+ "off": "The public API is switched off, so no key works right now.",
2681
+ "offLink": "Open Workspace settings"
2682
+ },
2683
+ "quick": {
2684
+ "body": "Authenticate requests with your key in the Authorization header.",
2685
+ "title": "Quick start"
2686
+ },
2687
+ "sheet": {
2688
+ "allMethods": "Select all methods",
2689
+ "app": {
2690
+ "label": "App",
2691
+ "none": "None"
2692
+ },
2693
+ "cancel": "Cancel",
2694
+ "clear": "Clear",
2695
+ "close": "Close",
2696
+ "count": "{permissions, plural, one {permission} other {permissions}} on {endpoints, plural, one {# endpoint} other {# endpoints}}",
2697
+ "deselectAll": "Deselect all",
2698
+ "edit": "Edit endpoint",
2699
+ "expires": {
2700
+ "d30": "30 days",
2701
+ "d90": "90 days",
2702
+ "label": "Expires",
2703
+ "never": "Never"
2704
+ },
2705
+ "filter": "Filter endpoints",
2706
+ "focusMeta": "{source} · {rows} rows · limit {limit}, order {order}",
2707
+ "focusMetaNoRows": "{source} · limit {limit}, order {order}",
2708
+ "footer": {
2709
+ "empty": "Select at least one method to create a key.",
2710
+ "more": "+{n} more",
2711
+ "refused": "This key cannot be created yet: {issue}",
2712
+ "summary": "This key will be able to call {paths}"
2713
+ },
2714
+ "kind": {
2715
+ "browser": "Browser",
2716
+ "label": "Used from",
2717
+ "server": "Server"
2718
+ },
2719
+ "layout": {
2720
+ "label": "Layout",
2721
+ "list": "List",
2722
+ "panes": "Panes"
2723
+ },
2724
+ "name": {
2725
+ "label": "Key name",
2726
+ "placeholder": "e.g. Orders sync worker"
2727
+ },
2728
+ "newEndpoint": "New endpoint",
2729
+ "readOnly": "Read-only preset",
2730
+ "rowMeta": "{source} · {rows} rows",
2731
+ "rowMetaNoRows": "{source}",
2732
+ "selectAll": "Select all",
2733
+ "selectAllShort": "Select all",
2734
+ "submit": "Create key",
2735
+ "subtitle": "Pick the endpoints and methods this key may call",
2736
+ "title": "Create API key",
2737
+ "toggleAll": "Toggle all methods",
2738
+ "unsupported": "{count, plural, one {{methods} is not exposed on this route. Edit the endpoint to enable it.} other {{methods} are not exposed on this route. Edit the endpoint to enable them.}}"
2739
+ },
2740
+ "stats": {
2741
+ "endpoints": "Endpoints",
2742
+ "keys": "Active keys",
2743
+ "requests": "Requests · 24h"
2744
+ },
2745
+ "subtitle": "Manage programmatic access to your workspace",
2746
+ "summary": "{endpoints, plural, one {# endpoint} other {# endpoints}} · {methods, plural, one {# method} other {# methods}}",
2747
+ "title": "API keys & tokens"
2384
2748
  }
2385
2749
  }
@@ -1774,6 +1774,11 @@
1774
1774
  "backToLatest": "Back to latest",
1775
1775
  "eventFallback": "Event"
1776
1776
  },
1777
+ "board": {
1778
+ "invalidLayout": "This board’s stored layout is invalid. Regenerate the page or reset its layout.",
1779
+ "noRowsTitle": "No cards yet",
1780
+ "noRowsBody": "Cards appear here as soon as the table has rows."
1781
+ },
1777
1782
  "calendar": {
1778
1783
  "eventCount": "{count, plural, one {{n} event} other {{n} events}}",
1779
1784
  "composePlaceholder": "Event title…",
@@ -1782,7 +1787,9 @@
1782
1787
  "agendaTitle": "Agenda",
1783
1788
  "categoriesTitle": "Categories",
1784
1789
  "upcomingTitle": "Upcoming",
1785
- "invalidLayout": "This calendar’s stored layout is invalid. Regenerate the page or reset its layout."
1790
+ "invalidLayout": "This calendar’s stored layout is invalid. Regenerate the page or reset its layout.",
1791
+ "composeChoose": "What this event is for",
1792
+ "composeChoosePlaceholder": "Choose…"
1786
1793
  },
1787
1794
  "scheduler": {
1788
1795
  "previousWeek": "Previous week",
@@ -1873,6 +1880,13 @@
1873
1880
  },
1874
1881
  "pageRecord": {
1875
1882
  "description": "One record as a full page: its fields, related records with live counts, and its change activity."
1883
+ },
1884
+ "planning": {
1885
+ "unplaced": {
1886
+ "calendar": "None of this table’s rows has a date yet, so the calendar is empty. A row appears here as soon as it has one.",
1887
+ "board": "None of this table’s rows has a status yet, so the board is empty. A row appears here as soon as it has one.",
1888
+ "scheduler": "None of this table’s rows has a person, a date and a shift type yet, so the schedule is empty. A row appears here as soon as it has all three."
1889
+ }
1876
1890
  }
1877
1891
  },
1878
1892
  "frame": {