@adminiumjs/i18n 0.2.5 → 0.2.6
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 +545 -18
- package/dist/a11y-keys.js.map +1 -1
- package/dist/format/index.d.ts +15 -3
- package/dist/format/index.d.ts.map +1 -1
- package/dist/format/index.js +15 -4
- package/dist/format/index.js.map +1 -1
- package/dist/resources/ar-eg/automations.d.ts +417 -0
- package/dist/resources/ar-eg/automations.d.ts.map +1 -0
- package/dist/resources/ar-eg/automations.js +417 -0
- package/dist/resources/ar-eg/automations.js.map +1 -0
- package/dist/resources/ar-eg/common.d.ts +23 -91
- package/dist/resources/ar-eg/common.d.ts.map +1 -1
- package/dist/resources/ar-eg/common.js +25 -93
- package/dist/resources/ar-eg/common.js.map +1 -1
- package/dist/resources/ar-eg/dataio.d.ts +260 -0
- package/dist/resources/ar-eg/dataio.d.ts.map +1 -0
- package/dist/resources/ar-eg/dataio.js +260 -0
- package/dist/resources/ar-eg/dataio.js.map +1 -0
- package/dist/resources/ar-eg/email.d.ts +824 -0
- package/dist/resources/ar-eg/email.d.ts.map +1 -0
- package/dist/resources/ar-eg/email.js +824 -0
- package/dist/resources/ar-eg/email.js.map +1 -0
- package/dist/resources/ar-eg/files.d.ts +112 -0
- package/dist/resources/ar-eg/files.d.ts.map +1 -0
- package/dist/resources/ar-eg/files.js +112 -0
- package/dist/resources/ar-eg/files.js.map +1 -0
- package/dist/resources/ar-eg/invoices.d.ts +717 -0
- package/dist/resources/ar-eg/invoices.d.ts.map +1 -0
- package/dist/resources/ar-eg/invoices.js +717 -0
- package/dist/resources/ar-eg/invoices.js.map +1 -0
- package/dist/resources/ar-eg/onboarding.d.ts +190 -0
- package/dist/resources/ar-eg/onboarding.d.ts.map +1 -0
- package/dist/resources/ar-eg/onboarding.js +190 -0
- package/dist/resources/ar-eg/onboarding.js.map +1 -0
- package/dist/resources/ar-eg/reportBuilder.d.ts +415 -0
- package/dist/resources/ar-eg/reportBuilder.d.ts.map +1 -0
- package/dist/resources/ar-eg/reportBuilder.js +415 -0
- package/dist/resources/ar-eg/reportBuilder.js.map +1 -0
- package/dist/resources/ar-eg/studio.d.ts +1760 -1117
- package/dist/resources/ar-eg/studio.d.ts.map +1 -1
- package/dist/resources/ar-eg/studio.js +1782 -1139
- package/dist/resources/ar-eg/studio.js.map +1 -1
- package/dist/resources/ar-eg/ui.d.ts +45 -9
- package/dist/resources/ar-eg/ui.d.ts.map +1 -1
- package/dist/resources/ar-eg/ui.js +47 -11
- package/dist/resources/ar-eg/ui.js.map +1 -1
- package/dist/resources/cs-cz/automations.d.ts +417 -0
- package/dist/resources/cs-cz/automations.d.ts.map +1 -0
- package/dist/resources/cs-cz/automations.js +417 -0
- package/dist/resources/cs-cz/automations.js.map +1 -0
- package/dist/resources/cs-cz/common.d.ts +23 -91
- package/dist/resources/cs-cz/common.d.ts.map +1 -1
- package/dist/resources/cs-cz/common.js +25 -93
- package/dist/resources/cs-cz/common.js.map +1 -1
- package/dist/resources/cs-cz/dataio.d.ts +260 -0
- package/dist/resources/cs-cz/dataio.d.ts.map +1 -0
- package/dist/resources/cs-cz/dataio.js +260 -0
- package/dist/resources/cs-cz/dataio.js.map +1 -0
- package/dist/resources/cs-cz/email.d.ts +824 -0
- package/dist/resources/cs-cz/email.d.ts.map +1 -0
- package/dist/resources/cs-cz/email.js +824 -0
- package/dist/resources/cs-cz/email.js.map +1 -0
- package/dist/resources/cs-cz/files.d.ts +112 -0
- package/dist/resources/cs-cz/files.d.ts.map +1 -0
- package/dist/resources/cs-cz/files.js +112 -0
- package/dist/resources/cs-cz/files.js.map +1 -0
- package/dist/resources/cs-cz/invoices.d.ts +717 -0
- package/dist/resources/cs-cz/invoices.d.ts.map +1 -0
- package/dist/resources/cs-cz/invoices.js +717 -0
- package/dist/resources/cs-cz/invoices.js.map +1 -0
- package/dist/resources/cs-cz/onboarding.d.ts +190 -0
- package/dist/resources/cs-cz/onboarding.d.ts.map +1 -0
- package/dist/resources/cs-cz/onboarding.js +190 -0
- package/dist/resources/cs-cz/onboarding.js.map +1 -0
- package/dist/resources/cs-cz/reportBuilder.d.ts +415 -0
- package/dist/resources/cs-cz/reportBuilder.d.ts.map +1 -0
- package/dist/resources/cs-cz/reportBuilder.js +415 -0
- package/dist/resources/cs-cz/reportBuilder.js.map +1 -0
- package/dist/resources/cs-cz/studio.d.ts +1759 -1116
- package/dist/resources/cs-cz/studio.d.ts.map +1 -1
- package/dist/resources/cs-cz/studio.js +1774 -1131
- package/dist/resources/cs-cz/studio.js.map +1 -1
- package/dist/resources/cs-cz/ui.d.ts +45 -9
- package/dist/resources/cs-cz/ui.d.ts.map +1 -1
- package/dist/resources/cs-cz/ui.js +47 -11
- package/dist/resources/cs-cz/ui.js.map +1 -1
- package/dist/resources/da-dk/automations.d.ts +417 -0
- package/dist/resources/da-dk/automations.d.ts.map +1 -0
- package/dist/resources/da-dk/automations.js +417 -0
- package/dist/resources/da-dk/automations.js.map +1 -0
- package/dist/resources/da-dk/common.d.ts +23 -91
- package/dist/resources/da-dk/common.d.ts.map +1 -1
- package/dist/resources/da-dk/common.js +25 -93
- package/dist/resources/da-dk/common.js.map +1 -1
- package/dist/resources/da-dk/dataio.d.ts +260 -0
- package/dist/resources/da-dk/dataio.d.ts.map +1 -0
- package/dist/resources/da-dk/dataio.js +260 -0
- package/dist/resources/da-dk/dataio.js.map +1 -0
- package/dist/resources/da-dk/email.d.ts +824 -0
- package/dist/resources/da-dk/email.d.ts.map +1 -0
- package/dist/resources/da-dk/email.js +824 -0
- package/dist/resources/da-dk/email.js.map +1 -0
- package/dist/resources/da-dk/files.d.ts +112 -0
- package/dist/resources/da-dk/files.d.ts.map +1 -0
- package/dist/resources/da-dk/files.js +112 -0
- package/dist/resources/da-dk/files.js.map +1 -0
- package/dist/resources/da-dk/invoices.d.ts +717 -0
- package/dist/resources/da-dk/invoices.d.ts.map +1 -0
- package/dist/resources/da-dk/invoices.js +717 -0
- package/dist/resources/da-dk/invoices.js.map +1 -0
- package/dist/resources/da-dk/onboarding.d.ts +190 -0
- package/dist/resources/da-dk/onboarding.d.ts.map +1 -0
- package/dist/resources/da-dk/onboarding.js +190 -0
- package/dist/resources/da-dk/onboarding.js.map +1 -0
- package/dist/resources/da-dk/reportBuilder.d.ts +415 -0
- package/dist/resources/da-dk/reportBuilder.d.ts.map +1 -0
- package/dist/resources/da-dk/reportBuilder.js +415 -0
- package/dist/resources/da-dk/reportBuilder.js.map +1 -0
- package/dist/resources/da-dk/studio.d.ts +1760 -1117
- package/dist/resources/da-dk/studio.d.ts.map +1 -1
- package/dist/resources/da-dk/studio.js +1771 -1128
- package/dist/resources/da-dk/studio.js.map +1 -1
- package/dist/resources/da-dk/ui.d.ts +45 -9
- package/dist/resources/da-dk/ui.d.ts.map +1 -1
- package/dist/resources/da-dk/ui.js +47 -11
- package/dist/resources/da-dk/ui.js.map +1 -1
- package/dist/resources/de-de/automations.d.ts +417 -0
- package/dist/resources/de-de/automations.d.ts.map +1 -0
- package/dist/resources/de-de/automations.js +417 -0
- package/dist/resources/de-de/automations.js.map +1 -0
- package/dist/resources/de-de/common.d.ts +23 -91
- package/dist/resources/de-de/common.d.ts.map +1 -1
- package/dist/resources/de-de/common.js +25 -93
- package/dist/resources/de-de/common.js.map +1 -1
- package/dist/resources/de-de/dataio.d.ts +260 -0
- package/dist/resources/de-de/dataio.d.ts.map +1 -0
- package/dist/resources/de-de/dataio.js +260 -0
- package/dist/resources/de-de/dataio.js.map +1 -0
- package/dist/resources/de-de/email.d.ts +824 -0
- package/dist/resources/de-de/email.d.ts.map +1 -0
- package/dist/resources/de-de/email.js +824 -0
- package/dist/resources/de-de/email.js.map +1 -0
- package/dist/resources/de-de/files.d.ts +112 -0
- package/dist/resources/de-de/files.d.ts.map +1 -0
- package/dist/resources/de-de/files.js +112 -0
- package/dist/resources/de-de/files.js.map +1 -0
- package/dist/resources/de-de/invoices.d.ts +717 -0
- package/dist/resources/de-de/invoices.d.ts.map +1 -0
- package/dist/resources/de-de/invoices.js +717 -0
- package/dist/resources/de-de/invoices.js.map +1 -0
- package/dist/resources/de-de/onboarding.d.ts +190 -0
- package/dist/resources/de-de/onboarding.d.ts.map +1 -0
- package/dist/resources/de-de/onboarding.js +190 -0
- package/dist/resources/de-de/onboarding.js.map +1 -0
- package/dist/resources/de-de/reportBuilder.d.ts +415 -0
- package/dist/resources/de-de/reportBuilder.d.ts.map +1 -0
- package/dist/resources/de-de/reportBuilder.js +415 -0
- package/dist/resources/de-de/reportBuilder.js.map +1 -0
- package/dist/resources/de-de/studio.d.ts +1759 -1116
- package/dist/resources/de-de/studio.d.ts.map +1 -1
- package/dist/resources/de-de/studio.js +1770 -1127
- package/dist/resources/de-de/studio.js.map +1 -1
- package/dist/resources/de-de/ui.d.ts +45 -9
- package/dist/resources/de-de/ui.d.ts.map +1 -1
- package/dist/resources/de-de/ui.js +47 -11
- package/dist/resources/de-de/ui.js.map +1 -1
- package/dist/resources/en-us/automations.d.ts +417 -0
- package/dist/resources/en-us/automations.d.ts.map +1 -0
- package/dist/resources/en-us/automations.js +417 -0
- package/dist/resources/en-us/automations.js.map +1 -0
- package/dist/resources/en-us/common.d.ts +23 -91
- package/dist/resources/en-us/common.d.ts.map +1 -1
- package/dist/resources/en-us/common.js +25 -93
- package/dist/resources/en-us/common.js.map +1 -1
- package/dist/resources/en-us/dataio.d.ts +260 -0
- package/dist/resources/en-us/dataio.d.ts.map +1 -0
- package/dist/resources/en-us/dataio.js +260 -0
- package/dist/resources/en-us/dataio.js.map +1 -0
- package/dist/resources/en-us/email.d.ts +824 -0
- package/dist/resources/en-us/email.d.ts.map +1 -0
- package/dist/resources/en-us/email.js +824 -0
- package/dist/resources/en-us/email.js.map +1 -0
- package/dist/resources/en-us/files.d.ts +112 -0
- package/dist/resources/en-us/files.d.ts.map +1 -0
- package/dist/resources/en-us/files.js +112 -0
- package/dist/resources/en-us/files.js.map +1 -0
- package/dist/resources/en-us/invoices.d.ts +717 -0
- package/dist/resources/en-us/invoices.d.ts.map +1 -0
- package/dist/resources/en-us/invoices.js +717 -0
- package/dist/resources/en-us/invoices.js.map +1 -0
- package/dist/resources/en-us/onboarding.d.ts +190 -0
- package/dist/resources/en-us/onboarding.d.ts.map +1 -0
- package/dist/resources/en-us/onboarding.js +190 -0
- package/dist/resources/en-us/onboarding.js.map +1 -0
- package/dist/resources/en-us/reportBuilder.d.ts +415 -0
- package/dist/resources/en-us/reportBuilder.d.ts.map +1 -0
- package/dist/resources/en-us/reportBuilder.js +415 -0
- package/dist/resources/en-us/reportBuilder.js.map +1 -0
- package/dist/resources/en-us/studio.d.ts +1742 -1099
- package/dist/resources/en-us/studio.d.ts.map +1 -1
- package/dist/resources/en-us/studio.js +1769 -1126
- package/dist/resources/en-us/studio.js.map +1 -1
- package/dist/resources/en-us/ui.d.ts +37 -1
- package/dist/resources/en-us/ui.d.ts.map +1 -1
- package/dist/resources/en-us/ui.js +39 -3
- package/dist/resources/en-us/ui.js.map +1 -1
- package/dist/resources/fr-fr/automations.d.ts +417 -0
- package/dist/resources/fr-fr/automations.d.ts.map +1 -0
- package/dist/resources/fr-fr/automations.js +417 -0
- package/dist/resources/fr-fr/automations.js.map +1 -0
- package/dist/resources/fr-fr/common.d.ts +23 -91
- package/dist/resources/fr-fr/common.d.ts.map +1 -1
- package/dist/resources/fr-fr/common.js +25 -93
- package/dist/resources/fr-fr/common.js.map +1 -1
- package/dist/resources/fr-fr/dataio.d.ts +260 -0
- package/dist/resources/fr-fr/dataio.d.ts.map +1 -0
- package/dist/resources/fr-fr/dataio.js +260 -0
- package/dist/resources/fr-fr/dataio.js.map +1 -0
- package/dist/resources/fr-fr/email.d.ts +824 -0
- package/dist/resources/fr-fr/email.d.ts.map +1 -0
- package/dist/resources/fr-fr/email.js +824 -0
- package/dist/resources/fr-fr/email.js.map +1 -0
- package/dist/resources/fr-fr/files.d.ts +112 -0
- package/dist/resources/fr-fr/files.d.ts.map +1 -0
- package/dist/resources/fr-fr/files.js +112 -0
- package/dist/resources/fr-fr/files.js.map +1 -0
- package/dist/resources/fr-fr/invoices.d.ts +717 -0
- package/dist/resources/fr-fr/invoices.d.ts.map +1 -0
- package/dist/resources/fr-fr/invoices.js +717 -0
- package/dist/resources/fr-fr/invoices.js.map +1 -0
- package/dist/resources/fr-fr/onboarding.d.ts +190 -0
- package/dist/resources/fr-fr/onboarding.d.ts.map +1 -0
- package/dist/resources/fr-fr/onboarding.js +190 -0
- package/dist/resources/fr-fr/onboarding.js.map +1 -0
- package/dist/resources/fr-fr/reportBuilder.d.ts +415 -0
- package/dist/resources/fr-fr/reportBuilder.d.ts.map +1 -0
- package/dist/resources/fr-fr/reportBuilder.js +415 -0
- package/dist/resources/fr-fr/reportBuilder.js.map +1 -0
- package/dist/resources/fr-fr/studio.d.ts +1759 -1116
- package/dist/resources/fr-fr/studio.d.ts.map +1 -1
- package/dist/resources/fr-fr/studio.js +1774 -1131
- package/dist/resources/fr-fr/studio.js.map +1 -1
- package/dist/resources/fr-fr/ui.d.ts +44 -8
- package/dist/resources/fr-fr/ui.d.ts.map +1 -1
- package/dist/resources/fr-fr/ui.js +46 -10
- package/dist/resources/fr-fr/ui.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +14 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/lazy.d.ts.map +1 -1
- package/dist/resources/lazy.js +57 -1
- package/dist/resources/lazy.js.map +1 -1
- package/dist/resources/namespaces.d.ts +62 -3
- package/dist/resources/namespaces.d.ts.map +1 -1
- package/dist/resources/namespaces.js +84 -3
- package/dist/resources/namespaces.js.map +1 -1
- package/dist/resources/zh-cn/automations.d.ts +417 -0
- package/dist/resources/zh-cn/automations.d.ts.map +1 -0
- package/dist/resources/zh-cn/automations.js +417 -0
- package/dist/resources/zh-cn/automations.js.map +1 -0
- package/dist/resources/zh-cn/common.d.ts +23 -91
- package/dist/resources/zh-cn/common.d.ts.map +1 -1
- package/dist/resources/zh-cn/common.js +25 -93
- package/dist/resources/zh-cn/common.js.map +1 -1
- package/dist/resources/zh-cn/dataio.d.ts +260 -0
- package/dist/resources/zh-cn/dataio.d.ts.map +1 -0
- package/dist/resources/zh-cn/dataio.js +260 -0
- package/dist/resources/zh-cn/dataio.js.map +1 -0
- package/dist/resources/zh-cn/email.d.ts +824 -0
- package/dist/resources/zh-cn/email.d.ts.map +1 -0
- package/dist/resources/zh-cn/email.js +824 -0
- package/dist/resources/zh-cn/email.js.map +1 -0
- package/dist/resources/zh-cn/files.d.ts +112 -0
- package/dist/resources/zh-cn/files.d.ts.map +1 -0
- package/dist/resources/zh-cn/files.js +112 -0
- package/dist/resources/zh-cn/files.js.map +1 -0
- package/dist/resources/zh-cn/invoices.d.ts +717 -0
- package/dist/resources/zh-cn/invoices.d.ts.map +1 -0
- package/dist/resources/zh-cn/invoices.js +717 -0
- package/dist/resources/zh-cn/invoices.js.map +1 -0
- package/dist/resources/zh-cn/onboarding.d.ts +190 -0
- package/dist/resources/zh-cn/onboarding.d.ts.map +1 -0
- package/dist/resources/zh-cn/onboarding.js +190 -0
- package/dist/resources/zh-cn/onboarding.js.map +1 -0
- package/dist/resources/zh-cn/reportBuilder.d.ts +415 -0
- package/dist/resources/zh-cn/reportBuilder.d.ts.map +1 -0
- package/dist/resources/zh-cn/reportBuilder.js +415 -0
- package/dist/resources/zh-cn/reportBuilder.js.map +1 -0
- package/dist/resources/zh-cn/studio.d.ts +1758 -1115
- package/dist/resources/zh-cn/studio.d.ts.map +1 -1
- package/dist/resources/zh-cn/studio.js +1764 -1121
- package/dist/resources/zh-cn/studio.js.map +1 -1
- package/dist/resources/zh-cn/ui.d.ts +45 -9
- package/dist/resources/zh-cn/ui.d.ts.map +1 -1
- package/dist/resources/zh-cn/ui.js +47 -11
- package/dist/resources/zh-cn/ui.js.map +1 -1
- package/dist/resources/zh-tw/automations.d.ts +417 -0
- package/dist/resources/zh-tw/automations.d.ts.map +1 -0
- package/dist/resources/zh-tw/automations.js +417 -0
- package/dist/resources/zh-tw/automations.js.map +1 -0
- package/dist/resources/zh-tw/common.d.ts +23 -91
- package/dist/resources/zh-tw/common.d.ts.map +1 -1
- package/dist/resources/zh-tw/common.js +25 -93
- package/dist/resources/zh-tw/common.js.map +1 -1
- package/dist/resources/zh-tw/dataio.d.ts +260 -0
- package/dist/resources/zh-tw/dataio.d.ts.map +1 -0
- package/dist/resources/zh-tw/dataio.js +260 -0
- package/dist/resources/zh-tw/dataio.js.map +1 -0
- package/dist/resources/zh-tw/email.d.ts +824 -0
- package/dist/resources/zh-tw/email.d.ts.map +1 -0
- package/dist/resources/zh-tw/email.js +824 -0
- package/dist/resources/zh-tw/email.js.map +1 -0
- package/dist/resources/zh-tw/files.d.ts +112 -0
- package/dist/resources/zh-tw/files.d.ts.map +1 -0
- package/dist/resources/zh-tw/files.js +112 -0
- package/dist/resources/zh-tw/files.js.map +1 -0
- package/dist/resources/zh-tw/invoices.d.ts +717 -0
- package/dist/resources/zh-tw/invoices.d.ts.map +1 -0
- package/dist/resources/zh-tw/invoices.js +717 -0
- package/dist/resources/zh-tw/invoices.js.map +1 -0
- package/dist/resources/zh-tw/onboarding.d.ts +190 -0
- package/dist/resources/zh-tw/onboarding.d.ts.map +1 -0
- package/dist/resources/zh-tw/onboarding.js +190 -0
- package/dist/resources/zh-tw/onboarding.js.map +1 -0
- package/dist/resources/zh-tw/reportBuilder.d.ts +415 -0
- package/dist/resources/zh-tw/reportBuilder.d.ts.map +1 -0
- package/dist/resources/zh-tw/reportBuilder.js +415 -0
- package/dist/resources/zh-tw/reportBuilder.js.map +1 -0
- package/dist/resources/zh-tw/studio.d.ts +1759 -1116
- package/dist/resources/zh-tw/studio.d.ts.map +1 -1
- package/dist/resources/zh-tw/studio.js +1773 -1130
- package/dist/resources/zh-tw/studio.js.map +1 -1
- package/dist/resources/zh-tw/ui.d.ts +45 -9
- package/dist/resources/zh-tw/ui.d.ts.map +1 -1
- package/dist/resources/zh-tw/ui.js +47 -11
- package/dist/resources/zh-tw/ui.js.map +1 -1
- package/dist/review-status.js +7 -7
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +14 -1
- package/dist/server.js.map +1 -1
- package/locales/ar-EG/.meta.json +15999 -5979
- package/locales/ar-EG/automations.json +406 -0
- package/locales/ar-EG/common.json +25 -93
- package/locales/ar-EG/dataio.json +249 -0
- package/locales/ar-EG/email.json +813 -0
- package/locales/ar-EG/files.json +101 -0
- package/locales/ar-EG/invoices.json +706 -0
- package/locales/ar-EG/onboarding.json +179 -0
- package/locales/ar-EG/reportBuilder.json +404 -0
- package/locales/ar-EG/studio.json +1782 -1139
- package/locales/ar-EG/ui.json +47 -11
- package/locales/cs-CZ/.meta.json +16271 -6251
- package/locales/cs-CZ/automations.json +406 -0
- package/locales/cs-CZ/common.json +25 -93
- package/locales/cs-CZ/dataio.json +249 -0
- package/locales/cs-CZ/email.json +813 -0
- package/locales/cs-CZ/files.json +101 -0
- package/locales/cs-CZ/invoices.json +706 -0
- package/locales/cs-CZ/onboarding.json +179 -0
- package/locales/cs-CZ/reportBuilder.json +404 -0
- package/locales/cs-CZ/studio.json +1774 -1131
- package/locales/cs-CZ/ui.json +47 -11
- package/locales/da-DK/.meta.json +16245 -6225
- package/locales/da-DK/automations.json +406 -0
- package/locales/da-DK/common.json +25 -93
- package/locales/da-DK/dataio.json +249 -0
- package/locales/da-DK/email.json +813 -0
- package/locales/da-DK/files.json +101 -0
- package/locales/da-DK/invoices.json +706 -0
- package/locales/da-DK/onboarding.json +179 -0
- package/locales/da-DK/reportBuilder.json +404 -0
- package/locales/da-DK/studio.json +1771 -1128
- package/locales/da-DK/ui.json +47 -11
- package/locales/de-DE/.meta.json +16094 -6074
- package/locales/de-DE/automations.json +406 -0
- package/locales/de-DE/common.json +25 -93
- package/locales/de-DE/dataio.json +249 -0
- package/locales/de-DE/email.json +813 -0
- package/locales/de-DE/files.json +101 -0
- package/locales/de-DE/invoices.json +706 -0
- package/locales/de-DE/onboarding.json +179 -0
- package/locales/de-DE/reportBuilder.json +404 -0
- package/locales/de-DE/studio.json +1770 -1127
- package/locales/de-DE/ui.json +47 -11
- package/locales/en-US/automations.json +406 -0
- package/locales/en-US/common.json +25 -93
- package/locales/en-US/dataio.json +249 -0
- package/locales/en-US/email.json +813 -0
- package/locales/en-US/files.json +101 -0
- package/locales/en-US/invoices.json +706 -0
- package/locales/en-US/onboarding.json +179 -0
- package/locales/en-US/reportBuilder.json +404 -0
- package/locales/en-US/studio.json +1769 -1126
- package/locales/en-US/ui.json +39 -3
- package/locales/fr-FR/.meta.json +14117 -4097
- package/locales/fr-FR/automations.json +406 -0
- package/locales/fr-FR/common.json +25 -93
- package/locales/fr-FR/dataio.json +249 -0
- package/locales/fr-FR/email.json +813 -0
- package/locales/fr-FR/files.json +101 -0
- package/locales/fr-FR/invoices.json +706 -0
- package/locales/fr-FR/onboarding.json +179 -0
- package/locales/fr-FR/reportBuilder.json +404 -0
- package/locales/fr-FR/studio.json +1774 -1131
- package/locales/fr-FR/ui.json +46 -10
- package/locales/zh-CN/.meta.json +16223 -6203
- package/locales/zh-CN/automations.json +406 -0
- package/locales/zh-CN/common.json +25 -93
- package/locales/zh-CN/dataio.json +249 -0
- package/locales/zh-CN/email.json +813 -0
- package/locales/zh-CN/files.json +101 -0
- package/locales/zh-CN/invoices.json +706 -0
- package/locales/zh-CN/onboarding.json +179 -0
- package/locales/zh-CN/reportBuilder.json +404 -0
- package/locales/zh-CN/studio.json +1764 -1121
- package/locales/zh-CN/ui.json +47 -11
- package/locales/zh-TW/.meta.json +15999 -5979
- package/locales/zh-TW/automations.json +406 -0
- package/locales/zh-TW/common.json +25 -93
- package/locales/zh-TW/dataio.json +249 -0
- package/locales/zh-TW/email.json +813 -0
- package/locales/zh-TW/files.json +101 -0
- package/locales/zh-TW/invoices.json +706 -0
- package/locales/zh-TW/onboarding.json +179 -0
- package/locales/zh-TW/reportBuilder.json +404 -0
- package/locales/zh-TW/studio.json +1773 -1130
- package/locales/zh-TW/ui.json +47 -11
- package/package.json +1 -1
|
@@ -1,657 +1,833 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
2
|
+
"addOns": {
|
|
3
|
+
"browse": {
|
|
4
|
+
"all": "All",
|
|
5
|
+
"bundled": "Included",
|
|
6
|
+
"categories": "Categories",
|
|
7
|
+
"discard": "Discard",
|
|
8
|
+
"download": "Download",
|
|
9
|
+
"emptyBody": "This build shipped none, and the online catalogue is off.",
|
|
10
|
+
"emptyOnlineBody": "The online catalogue is on, but the last check found nothing. Try checking for newer.",
|
|
11
|
+
"emptyTitle": "No add-ons available",
|
|
12
|
+
"install": "Install",
|
|
13
|
+
"noMatchBody": "No add-on here matches that search and category.",
|
|
14
|
+
"noMatchTitle": "Nothing matches",
|
|
15
|
+
"offline": "Showing the add-ons that came with this build. Browsing online is switched off, and nothing here has contacted the internet.",
|
|
16
|
+
"online": "Includes add-ons from the online catalogue. Checking for newer versions is a separate action.",
|
|
17
|
+
"refresh": "Check for newer",
|
|
18
|
+
"search": "Search add-ons",
|
|
19
|
+
"title": "Available",
|
|
20
|
+
"toggle": "Browse the online catalogue",
|
|
21
|
+
"upgrade": "v{version} available",
|
|
22
|
+
"upgradeAction": "Upgrade"
|
|
14
23
|
},
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"auto": "Auto-detect",
|
|
19
|
-
"sql": "SQL DDL / pg_dump",
|
|
20
|
-
"prisma": "Prisma schema",
|
|
21
|
-
"drizzle": "Drizzle ORM",
|
|
22
|
-
"typeorm": "TypeORM entities",
|
|
23
|
-
"sequelize": "Sequelize models",
|
|
24
|
-
"rails": "Rails schema.rb",
|
|
25
|
-
"django": "Django models.py",
|
|
26
|
-
"json": "Adminium JSON"
|
|
24
|
+
"card": {
|
|
25
|
+
"needsApiKey": "Needs an API key",
|
|
26
|
+
"needsOauth": "Connects with OAuth"
|
|
27
27
|
},
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
28
|
+
"category": {
|
|
29
|
+
"artwork": "Artwork",
|
|
30
|
+
"data": "Data",
|
|
31
|
+
"delivery": "Delivery",
|
|
32
|
+
"email": "Email",
|
|
33
|
+
"payments": "Payments"
|
|
31
34
|
},
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"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.",
|
|
45
|
-
"requestFailed": "Upload failed — check your connection and try again."
|
|
35
|
+
"confirm": {
|
|
36
|
+
"cancel": "Cancel",
|
|
37
|
+
"close": "Close",
|
|
38
|
+
"discard": "Discard",
|
|
39
|
+
"discardBody": "The downloaded files are deleted. Nothing was installed, so nothing else changes — you can download it again whenever you like.",
|
|
40
|
+
"discardTitle": "Discard this download",
|
|
41
|
+
"disconnect": "Disconnect",
|
|
42
|
+
"disconnectBody": "Its keys are deleted and it stops making calls. Every table and every row it created stays exactly as it is, and you can reconnect at any time.",
|
|
43
|
+
"disconnectTitle": "Disconnect this add-on",
|
|
44
|
+
"uninstall": "Uninstall",
|
|
45
|
+
"uninstallBody": "Its keys are deleted and its files are removed from this server. Every table and every row it created stays exactly as it is. You can install it again later.",
|
|
46
|
+
"uninstallTitle": "Uninstall this add-on"
|
|
46
47
|
},
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"namePlaceholder": "Production Postgres",
|
|
51
|
-
"modeLabel": "Source input mode",
|
|
52
|
-
"mode": {
|
|
53
|
-
"dsn": "Connection string",
|
|
54
|
-
"fields": "Individual fields",
|
|
55
|
-
"file": "Schema file"
|
|
48
|
+
"connect": {
|
|
49
|
+
"apiKey": "API key",
|
|
50
|
+
"submit": "Connect"
|
|
56
51
|
},
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
52
|
+
"consent": {
|
|
53
|
+
"cancel": "Cancel",
|
|
54
|
+
"close": "Close",
|
|
55
|
+
"confirm": "Install",
|
|
56
|
+
"hosts": "Attach to",
|
|
57
|
+
"loading": "Working out what this would do…",
|
|
58
|
+
"subtitle": "What this add-on will do, before it can do it.",
|
|
59
|
+
"title": "Install {name}"
|
|
63
60
|
},
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
61
|
+
"error": "Something went wrong",
|
|
62
|
+
"installed": {
|
|
63
|
+
"connected": "Connected",
|
|
64
|
+
"disconnect": "Disconnect",
|
|
65
|
+
"egress": "May contact: {hosts}",
|
|
66
|
+
"emptyBody": "Install an add-on above and it will appear here with its hosts and connection.",
|
|
67
|
+
"emptyTitle": "Nothing installed yet",
|
|
68
|
+
"notConnected": "Not connected",
|
|
69
|
+
"off": "off",
|
|
70
|
+
"on": "on",
|
|
71
|
+
"title": "Installed",
|
|
72
|
+
"uninstall": "Uninstall"
|
|
72
73
|
},
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
74
|
+
"job": {
|
|
75
|
+
"body": "Fetching and verifying. Nothing is installed until you say so.",
|
|
76
|
+
"failed": "The download did not finish. Nothing was installed.",
|
|
77
|
+
"title": "Downloading"
|
|
78
|
+
},
|
|
79
|
+
"plan": {
|
|
80
|
+
"blocked": "This cannot be installed here",
|
|
81
|
+
"needsColumns": "This add-on needs columns you do not have",
|
|
82
|
+
"needsColumnsBody": "Adminium will not add columns to tables you already own. Add them yourself, then install.",
|
|
83
|
+
"noData": "This add-on reads and writes no tables of its own.",
|
|
84
|
+
"reuse": "This add-on will use tables you already have:",
|
|
85
|
+
"willCreate": "This will create tables in your database",
|
|
86
|
+
"willCreateBody": "Installing creates these tables. Uninstalling later leaves them, and their data, alone."
|
|
87
|
+
},
|
|
88
|
+
"settings": {
|
|
89
|
+
"badJson": "That is not valid JSON, so it was not saved.",
|
|
90
|
+
"save": "Save settings",
|
|
91
|
+
"title": "Settings"
|
|
92
|
+
},
|
|
93
|
+
"sideload": {
|
|
94
|
+
"file": "Package file (.tgz)",
|
|
95
|
+
"hint": "For a server with no internet. It is checked exactly as a download would be, so it needs the hash that came with it.",
|
|
96
|
+
"key": "Add-on key",
|
|
97
|
+
"sha": "Integrity (sha512-…)",
|
|
98
|
+
"shaHint": "The `integrity` value `npm pack --json` printed. The upload is refused if the bytes do not match.",
|
|
99
|
+
"submit": "Upload",
|
|
100
|
+
"title": "Upload a package",
|
|
101
|
+
"version": "Version"
|
|
102
|
+
},
|
|
103
|
+
"subtitle": "Extra capabilities you can add to your apps — shipping, artwork, data. Each one says what it needs before you install it.",
|
|
104
|
+
"title": "Add-ons",
|
|
105
|
+
"upgradeNote": "Upgrading keeps the hosts an add-on is attached to and the connection it already has.",
|
|
106
|
+
"veto": {
|
|
107
|
+
"body": "The setting is saved, but network features are off for this server and that wins. Downloaded add-ons still work, and you can still upload one yourself.",
|
|
108
|
+
"title": "This deployment cannot browse online"
|
|
76
109
|
}
|
|
77
110
|
},
|
|
78
111
|
"capability": {
|
|
112
|
+
"importNoLiveHealth": "No live database connection — health checks and schema-drift detection are unavailable for this source.",
|
|
113
|
+
"importNoRowCounts": "Schema files carry no row counts — the tables list shows — instead of made-up numbers.",
|
|
79
114
|
"mysqlApproxRows": "MySQL row counts are storage-engine estimates (they can drift up to ±40%) — shown with ≈.",
|
|
80
115
|
"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+.",
|
|
81
|
-
"
|
|
82
|
-
"sqliteNoComments": "SQLite has no column comments — use the schema remap editor to add labels.",
|
|
83
|
-
"importNoRowCounts": "Schema files carry no row counts — the tables list shows — instead of made-up numbers.",
|
|
84
|
-
"importNoLiveHealth": "No live database connection — health checks and schema-drift detection are unavailable for this source.",
|
|
85
|
-
"rowsUnavailable": "Schema files have no live database — row counts are unknown until you connect one.",
|
|
86
|
-
"rowsRunAnalyze": "No estimate yet — run ANALYZE on the database for row counts.",
|
|
116
|
+
"rowsApproximate": "Storage-engine estimate — can drift up to ±40% on InnoDB.",
|
|
87
117
|
"rowsNoEstimate": "The engine reported no estimate for this table.",
|
|
88
|
-
"
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
"
|
|
92
|
-
"moreWarnings": "+{count} more parser warnings",
|
|
93
|
-
"connecting": "Establishing secure connection…",
|
|
94
|
-
"connected": "Connected ({latency} ms) · read-only introspection",
|
|
95
|
-
"connectFailed": "Connection failed.",
|
|
96
|
-
"readingSchema": "Reading schema: public",
|
|
97
|
-
"readingFile": "Reading uploaded schema file…",
|
|
98
|
-
"parsingFile": "Parsing {file}…",
|
|
99
|
-
"detected": "Detected {tables} tables · {columns} columns",
|
|
100
|
-
"found": "Found {tables} tables · {columns} columns",
|
|
101
|
-
"mapping": "Mapping column types → input widgets",
|
|
102
|
-
"relations": "Detecting relations…",
|
|
103
|
-
"piiScan": "Scanning for PII columns…",
|
|
104
|
-
"piiDone": "PII scan complete — {count} columns masked by default",
|
|
105
|
-
"piiDoneUnknown": "PII scan complete",
|
|
106
|
-
"jobFailed": "Introspection failed.",
|
|
107
|
-
"networkFailed": "Request failed — check your connection and retry.",
|
|
108
|
-
"ready": "Ready"
|
|
109
|
-
},
|
|
110
|
-
"title": "Analyzing your schema",
|
|
111
|
-
"subtitle": "Introspecting tables, columns, and relationships. This takes a few seconds.",
|
|
112
|
-
"trust": "We only read your schema and data. Nothing is modified.",
|
|
113
|
-
"errorTitle": "Connection failed",
|
|
114
|
-
"retry": "Retry",
|
|
115
|
-
"logLabel": "Introspection log",
|
|
116
|
-
"hint": {
|
|
117
|
-
"auth": "Authentication failed — check the user name and password in your DSN.",
|
|
118
|
-
"hostUnreachable": "Host unreachable — check the hostname and port, and that the database accepts connections from this machine (allowlist our IPs).",
|
|
119
|
-
"metaPlacement": "This source cannot host Adminium’s meta tables — continue with a separate meta database.",
|
|
120
|
-
"permission": "The role connected but lacks schema-read privileges — grant USAGE on the schema to your introspection role.",
|
|
121
|
-
"timeout": "The database did not answer in time — check network path and load, then retry.",
|
|
122
|
-
"tls": "TLS negotiation failed — try sslmode=require, or upload the CA certificate your server expects.",
|
|
123
|
-
"unknown": "Connection failed — verify the DSN and retry."
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
"tables": {
|
|
127
|
-
"importNoCounts": "Schema files carry no row counts — the column shows — until a live database is connected.",
|
|
128
|
-
"title": "Choose your tables",
|
|
129
|
-
"subtitle": "Choose which to include. You can change this anytime.",
|
|
130
|
-
"search": "Filter tables…",
|
|
131
|
-
"listLabel": "Includable tables",
|
|
132
|
-
"emptyFilter": "No tables match your filter.",
|
|
133
|
-
"pii": "PII",
|
|
134
|
-
"highVolume": "high volume",
|
|
135
|
-
"highVolumeNote": "Tables over 100,000 rows start unchecked — ops tables rarely belong in a dashboard.",
|
|
136
|
-
"joinHidden": "{count} join/system tables are pre-hidden — they still power many-to-many relations."
|
|
118
|
+
"rowsRunAnalyze": "No estimate yet — run ANALYZE on the database for row counts.",
|
|
119
|
+
"rowsUnavailable": "Schema files have no live database — row counts are unknown until you connect one.",
|
|
120
|
+
"sqliteCheckEnums": "SQLite has no native enum type — enums are synthesized from CHECK (col IN (…)) constraints.",
|
|
121
|
+
"sqliteNoComments": "SQLite has no column comments — use the schema remap editor to add labels."
|
|
137
122
|
},
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
},
|
|
148
|
-
"
|
|
149
|
-
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
|
|
155
|
-
"card": {
|
|
156
|
-
"readOnly": "Read-only",
|
|
157
|
-
"tables": "Tables",
|
|
158
|
-
"pages": "Pages",
|
|
159
|
-
"latency": "Latency",
|
|
160
|
-
"latencyMs": "{latency, number} ms",
|
|
161
|
-
"lastIntrospected": "Last introspected",
|
|
162
|
-
"never": "Never",
|
|
163
|
-
"timezone": "Timezone",
|
|
164
|
-
"timezoneGuessed": "from this server",
|
|
165
|
-
"paused": "Adminium is not connecting to this database. Its pages load again when you resume it.",
|
|
166
|
-
"pausedSince": "Paused {when} — Adminium is not connecting to this database. Its pages load again when you resume it."
|
|
167
|
-
},
|
|
168
|
-
"action": {
|
|
169
|
-
"test": "Test",
|
|
170
|
-
"reintrospect": "Re-introspect",
|
|
171
|
-
"reintrospectFile": "Schema-file sources have no live database — re-upload the file instead.",
|
|
172
|
-
"remap": "Remap schema",
|
|
173
|
-
"delete": "Delete",
|
|
174
|
-
"regional": "Regional settings",
|
|
175
|
-
"pause": "Pause",
|
|
176
|
-
"resume": "Resume",
|
|
177
|
-
"pausedHint": "This connection is paused — resume it to reach the database.",
|
|
178
|
-
"rename": "Rename"
|
|
179
|
-
},
|
|
180
|
-
"regional": {
|
|
181
|
-
"title": "Regional settings",
|
|
182
|
-
"intro": "These describe the business this database belongs to, not the person reading it. Apps served from Adminium read them from here.",
|
|
183
|
-
"timezone": "Timezone",
|
|
184
|
-
"timezoneHelper": "Dates and times render in this zone. Apps hosted by Adminium fall back to UTC without one, and say on screen that they are doing it.",
|
|
185
|
-
"guessedTitle": "This zone came from the server",
|
|
186
|
-
"guessedBody": "Adminium filled it in from the machine it runs on, not from anyone here. Save to confirm it, or pick the zone this business actually keeps.",
|
|
187
|
-
"timezonePlaceholder": "Region/City",
|
|
188
|
-
"currency": "Currency",
|
|
189
|
-
"currencyHelper": "Used to format money. Optional — leaving it unset affects formatting only.",
|
|
190
|
-
"currencyPlaceholder": "ISO-4217 code",
|
|
191
|
-
"notSet": "Not set",
|
|
192
|
-
"noMatch": "No matching zone",
|
|
193
|
-
"noMatchCurrency": "No matching currency",
|
|
194
|
-
"save": "Save",
|
|
195
|
-
"failed": "Regional settings could not be saved",
|
|
196
|
-
"saved": "Regional settings updated"
|
|
197
|
-
},
|
|
198
|
-
"test": {
|
|
199
|
-
"ok": "Connection healthy · {latency, number} ms",
|
|
200
|
-
"failed": "Connection test failed"
|
|
123
|
+
"design": {
|
|
124
|
+
"adopt": {
|
|
125
|
+
"action": "Add to my app",
|
|
126
|
+
"done": "{created} pages created, {updated} updated, {unchanged} already current.",
|
|
127
|
+
"everything": "This connection already shows every table, so nothing had to be included.",
|
|
128
|
+
"forbidden": "Your role can change the schema but not generate pages. Ask an admin with connection management to add these tables to the app.",
|
|
129
|
+
"grants": "No role is given access automatically — grant it in Settings → Roles.",
|
|
130
|
+
"offer": "A new table does nothing until it has a page. Add {tables} to your app?",
|
|
131
|
+
"skippedEdited": "Left untouched because you edited them: {pages}."
|
|
132
|
+
},
|
|
133
|
+
"apply": "Apply",
|
|
134
|
+
"ceiling": {
|
|
135
|
+
"authorise": "Authorise this rewrite",
|
|
136
|
+
"body": "{table} holds over {rows} rows — past the size Adminium rewrites on its own. Only a Super Admin can authorise this, and the table will be locked for as long as the rewrite takes.",
|
|
137
|
+
"hint": "Type the table name exactly as it appears above.",
|
|
138
|
+
"notYours": "{table} holds over {rows} rows. Only a Super Admin can authorise a rewrite this large — ask one, or run the change during a maintenance window with your own tooling.",
|
|
139
|
+
"prompt": "Type {table} again to authorise the rewrite"
|
|
201
140
|
},
|
|
202
|
-
"
|
|
203
|
-
"
|
|
204
|
-
"
|
|
205
|
-
"
|
|
206
|
-
"
|
|
141
|
+
"column": {
|
|
142
|
+
"help": "What do these settings mean?",
|
|
143
|
+
"key": "Key",
|
|
144
|
+
"length": "Length",
|
|
145
|
+
"link": "Links to",
|
|
146
|
+
"linkHelp": "Connect this to a row in another table.",
|
|
147
|
+
"linkTypeNote": "The type is matched to the linked table’s key.",
|
|
148
|
+
"name": "Name",
|
|
149
|
+
"namePlaceholder": "client_id",
|
|
150
|
+
"noLink": "Nothing",
|
|
151
|
+
"onDelete": "If the linked row is deleted",
|
|
152
|
+
"precision": "Precision",
|
|
153
|
+
"primaryKey": "Primary key",
|
|
154
|
+
"remove": "Remove {name}",
|
|
155
|
+
"required": "Required",
|
|
156
|
+
"type": "Type",
|
|
157
|
+
"unique": "Unique"
|
|
207
158
|
},
|
|
208
|
-
"
|
|
209
|
-
"
|
|
210
|
-
"body": "This deletes “{name}” and its generated pages. Your database itself is never touched.",
|
|
211
|
-
"prompt": "Type {name} to confirm",
|
|
212
|
-
"confirm": "Delete connection",
|
|
159
|
+
"confirm": {
|
|
160
|
+
"body": "This change discards data or removes an object. Adminium cannot undo it.",
|
|
213
161
|
"cancel": "Cancel",
|
|
214
162
|
"close": "Close",
|
|
215
|
-
"
|
|
216
|
-
"
|
|
163
|
+
"confirm": "Apply changes",
|
|
164
|
+
"prompt": "Type {word} to confirm",
|
|
165
|
+
"title": "Apply a destructive change"
|
|
217
166
|
},
|
|
167
|
+
"designer": "Table designer",
|
|
168
|
+
"discard": "Discard changes",
|
|
169
|
+
"dropping": "Marked for deletion",
|
|
218
170
|
"empty": {
|
|
219
|
-
"
|
|
220
|
-
"
|
|
221
|
-
|
|
171
|
+
"body": "Create a table, or pick one to edit. Nothing reaches your database until you review the statements and apply them.",
|
|
172
|
+
"title": "Design your schema"
|
|
173
|
+
},
|
|
174
|
+
"error": {
|
|
175
|
+
"atColumn": "Column {n}, {field}",
|
|
176
|
+
"atTable": "Table {field}",
|
|
177
|
+
"empty": "A name is required.",
|
|
178
|
+
"identifier": "Use lowercase letters, numbers and underscores, starting with a letter.",
|
|
179
|
+
"tooLong": "Too long — {dialect} allows {max} characters."
|
|
180
|
+
},
|
|
181
|
+
"existing": "Existing tables",
|
|
182
|
+
"hazard": {
|
|
183
|
+
"irreversible": "Cannot be undone",
|
|
184
|
+
"locking": "Holds a lock",
|
|
185
|
+
"lossy": "Discards data",
|
|
186
|
+
"refused": "Refused",
|
|
187
|
+
"rewrite": "Rewrites the table",
|
|
188
|
+
"safe": "Safe"
|
|
189
|
+
},
|
|
190
|
+
"help": {
|
|
191
|
+
"close": "Close",
|
|
192
|
+
"link": {
|
|
193
|
+
"example": "A reservation links to a client. Adminium then shows the client on the reservation, and the reservations on the client.",
|
|
194
|
+
"term": "Link to another table",
|
|
195
|
+
"what": "Connects this row to a row in another table, and asks the database to keep the connection honest — you cannot point at something that is not there."
|
|
196
|
+
},
|
|
197
|
+
"primaryKey": {
|
|
198
|
+
"example": "Without a primary key, Adminium can list the rows but cannot edit or delete an individual one.",
|
|
199
|
+
"term": "Primary key",
|
|
200
|
+
"what": "The field that identifies each row — the one Adminium uses to tell one row from another. Every table should have exactly one, and it is almost always the \"id\" field created for you."
|
|
201
|
+
},
|
|
202
|
+
"required": {
|
|
203
|
+
"example": "An order needs a customer, so that field is required. A delivery note is optional, so it is not.",
|
|
204
|
+
"term": "Required",
|
|
205
|
+
"what": "The field must be filled in. A row cannot be saved while it is empty."
|
|
206
|
+
},
|
|
207
|
+
"subtitle": "Plain-language descriptions of each setting, and what it changes for the people using your app.",
|
|
208
|
+
"title": "What these fields mean",
|
|
209
|
+
"type": {
|
|
210
|
+
"example": "A phone number is usually text, not a number — numbers drop leading zeros.",
|
|
211
|
+
"term": "Type",
|
|
212
|
+
"what": "What kind of information the field holds — words, whole numbers, money, a date, a yes/no answer. Picking the right one is what lets Adminium show a date picker instead of a text box, and add up a column of money."
|
|
213
|
+
},
|
|
214
|
+
"unique": {
|
|
215
|
+
"example": "Two customers should not share an email address — mark it unique and they cannot.",
|
|
216
|
+
"term": "Unique",
|
|
217
|
+
"what": "No two rows may hold the same value. The database refuses the second one."
|
|
218
|
+
}
|
|
222
219
|
},
|
|
223
|
-
"
|
|
224
|
-
"
|
|
225
|
-
"
|
|
226
|
-
"
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
"confirm": "Pause connection",
|
|
230
|
-
"pausedToast": "Connection “{name}” paused",
|
|
231
|
-
"resumedToast": "Connection “{name}” resumed",
|
|
232
|
-
"pauseFailed": "Could not pause the connection. Try again.",
|
|
233
|
-
"resumeFailed": "Could not resume the connection. Try again."
|
|
220
|
+
"keepTable": "Keep {table}",
|
|
221
|
+
"newTable": "New table",
|
|
222
|
+
"onDelete": {
|
|
223
|
+
"cascade": "Delete this row too",
|
|
224
|
+
"restrict": "Prevent the deletion",
|
|
225
|
+
"setNull": "Leave this field empty"
|
|
234
226
|
},
|
|
235
|
-
"
|
|
236
|
-
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"failed": "The connection could not be renamed"
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
"settingsHub": {
|
|
245
|
-
"title": "Workspace settings",
|
|
246
|
-
"subtitle": "Identity, security and destructive actions for this workspace.",
|
|
247
|
-
"save": "Save changes",
|
|
248
|
-
"saved": "Workspace settings updated",
|
|
249
|
-
"saveFailed": "Could not save workspace settings. Try again.",
|
|
250
|
-
"superAdminOnlyTitle": "Super admin required",
|
|
251
|
-
"superAdminOnly": "Only a super admin can change workspace identity and security settings.",
|
|
252
|
-
"identity": {
|
|
253
|
-
"heading": "Workspace identity",
|
|
254
|
-
"appName": {
|
|
255
|
-
"label": "Application name",
|
|
256
|
-
"helper": "Shown in the sidebar, browser title, and emails.",
|
|
257
|
-
"error": "Enter a name of at most 60 characters."
|
|
258
|
-
},
|
|
259
|
-
"logo": {
|
|
260
|
-
"label": "Logo",
|
|
261
|
-
"drop": "Drop an image here",
|
|
262
|
-
"helper": "PNG, JPEG, WebP, GIF or SVG, up to 1 MB. Replaces the built-in mark everywhere.",
|
|
263
|
-
"upload": "Upload logo",
|
|
264
|
-
"replace": "Replace logo",
|
|
265
|
-
"remove": "Remove",
|
|
266
|
-
"uploaded": "Logo updated",
|
|
267
|
-
"removed": "Logo removed",
|
|
268
|
-
"tooLarge": "That image is larger than 1 MB.",
|
|
269
|
-
"badType": "Choose a PNG, JPEG, WebP, GIF or SVG image.",
|
|
270
|
-
"undo": "Undo"
|
|
271
|
-
},
|
|
272
|
-
"showVersion": {
|
|
273
|
-
"label": "Version in the sidebar",
|
|
274
|
-
"helper": "The build number beside the logo. Off hides which version you run."
|
|
275
|
-
}
|
|
276
|
-
},
|
|
277
|
-
"security": {
|
|
278
|
-
"heading": "Security",
|
|
279
|
-
"require2fa": {
|
|
280
|
-
"label": "Require two-factor auth",
|
|
281
|
-
"desc": "Every member must enable 2FA to sign in.",
|
|
282
|
-
"note": "Advisory, not a barrier: members without 2FA are sent to set it up and can no longer turn it off, but their sign-in is never blocked, and API keys are unaffected."
|
|
283
|
-
},
|
|
284
|
-
"allowSignup": {
|
|
285
|
-
"label": "Allow self-signup",
|
|
286
|
-
"desc": "Anyone can create an account — off keeps this workspace invite-only."
|
|
287
|
-
},
|
|
288
|
-
"sessionTtl": {
|
|
289
|
-
"label": "Session lifetime (hours)",
|
|
290
|
-
"error": "Between {min, number} and {max, number} hours."
|
|
291
|
-
},
|
|
292
|
-
"passwordMin": {
|
|
293
|
-
"label": "Minimum password length",
|
|
294
|
-
"error": "Between {min, number} and {max, number} characters."
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
"email": {
|
|
298
|
-
"heading": "Email (SMTP)",
|
|
299
|
-
"unconfigured": "No mail server is set, so Adminium cannot send password resets, user invites or scheduled reports.",
|
|
300
|
-
"host": {
|
|
301
|
-
"label": "SMTP host",
|
|
302
|
-
"error": "A bare hostname or IP address — no scheme, port or credentials."
|
|
303
|
-
},
|
|
304
|
-
"port": {
|
|
305
|
-
"label": "Port",
|
|
306
|
-
"error": "Between {min, number} and {max, number}."
|
|
307
|
-
},
|
|
308
|
-
"user": {
|
|
309
|
-
"label": "Username",
|
|
310
|
-
"helper": "Leave empty for a relay that does not authenticate."
|
|
311
|
-
},
|
|
312
|
-
"pass": {
|
|
313
|
-
"label": "Password",
|
|
314
|
-
"helper": "Stored encrypted and never shown again. Leave blank to keep the current one.",
|
|
315
|
-
"error": "This username needs a password."
|
|
316
|
-
},
|
|
317
|
-
"from": {
|
|
318
|
-
"label": "From address",
|
|
319
|
-
"helper": "A bare address, or a display name in front of one.",
|
|
320
|
-
"error": "Enter an email address."
|
|
321
|
-
},
|
|
322
|
-
"secure": {
|
|
323
|
-
"label": "Implicit TLS",
|
|
324
|
-
"helper": "On for port 465. Off starts in cleartext and upgrades with STARTTLS, which is what port 587 expects."
|
|
325
|
-
},
|
|
326
|
-
"remove": "Remove mail server",
|
|
327
|
-
"review": {
|
|
328
|
-
"removed": "Removed",
|
|
329
|
-
"password": "Replaced"
|
|
330
|
-
}
|
|
227
|
+
"plan": "Review changes",
|
|
228
|
+
"result": {
|
|
229
|
+
"applied": "Applied. Adminium re-read your schema.",
|
|
230
|
+
"failed": "Nothing was applied — your database is unchanged. {error}",
|
|
231
|
+
"partial": "Partly applied: {done} of {total} steps ran. Applying the same changes again completes them.",
|
|
232
|
+
"repaired": "The rename was carried into {pages, plural, one {# page} other {# pages}}, {grants, plural, one {# role grant} other {# role grants}} and {overrides, plural, one {# schema override} other {# schema overrides}}."
|
|
331
233
|
},
|
|
332
234
|
"review": {
|
|
333
|
-
"
|
|
334
|
-
"
|
|
335
|
-
"
|
|
336
|
-
"
|
|
337
|
-
"
|
|
338
|
-
"on": "On",
|
|
339
|
-
"off": "Off",
|
|
340
|
-
"shown": "Shown",
|
|
341
|
-
"hidden": "Hidden",
|
|
342
|
-
"change": "{before} → {after}"
|
|
343
|
-
},
|
|
344
|
-
"defaultsCard": {
|
|
345
|
-
"heading": "Appearance & language defaults",
|
|
346
|
-
"body": "Workspace-wide theme, accent, density and language live under Global defaults.",
|
|
347
|
-
"cta": "Open global defaults"
|
|
348
|
-
},
|
|
349
|
-
"danger": {
|
|
350
|
-
"heading": "Danger zone",
|
|
351
|
-
"subtitle": "Irreversible actions.",
|
|
352
|
-
"empty": "Nothing to delete — no connections yet.",
|
|
353
|
-
"deleteDesc": "Deletes the connection and its generated pages. Your database is not touched. Cannot be undone.",
|
|
354
|
-
"deleteCta": "Delete connection"
|
|
355
|
-
},
|
|
356
|
-
"aiCard": {
|
|
357
|
-
"heading": "AI enrichment",
|
|
358
|
-
"body": "Configure an AI provider (or the copy-paste round-trip) to enrich labels, groups and relations.",
|
|
359
|
-
"cta": "Open AI settings"
|
|
360
|
-
},
|
|
361
|
-
"pagesCard": {
|
|
362
|
-
"heading": "Pages",
|
|
363
|
-
"body": "Add, edit and delete pages, change what each one shows, and reorder the sidebar.",
|
|
364
|
-
"cta": "Manage pages"
|
|
235
|
+
"noChanges": "No schema changes yet.",
|
|
236
|
+
"pending": "Review your changes to see the exact statements Adminium will run.",
|
|
237
|
+
"steps": "Planned steps",
|
|
238
|
+
"superAdmin": "Super Admin",
|
|
239
|
+
"unfinished": "A previous apply on this connection never reported an outcome. Its schema may be part-way between two shapes — check the change history before applying more."
|
|
365
240
|
},
|
|
366
|
-
"
|
|
367
|
-
|
|
368
|
-
"
|
|
369
|
-
"
|
|
370
|
-
|
|
241
|
+
"reviewPane": "Review",
|
|
242
|
+
"table": {
|
|
243
|
+
"addColumn": "Add column",
|
|
244
|
+
"columns": "Columns",
|
|
245
|
+
"drop": "Drop this table",
|
|
246
|
+
"dropHelp": "The table and every row in it are destroyed. You will see exactly what breaks before anything runs.",
|
|
247
|
+
"name": "Table name",
|
|
248
|
+
"nameHelp": "Lowercase letters, numbers and underscores.",
|
|
249
|
+
"namePlaceholder": "reservations",
|
|
250
|
+
"noKey": "This table has no primary key, so Adminium will treat it as read-only — rows can be listed but not edited.",
|
|
251
|
+
"renameHelp": "Changing this renames the table in your database.",
|
|
252
|
+
"uuidKeyUnavailable": "On this engine a key must be a generated integer: a database-generated uuid cannot be read back after an insert."
|
|
253
|
+
},
|
|
254
|
+
"unnamed": "Name every table and column to review the changes.",
|
|
255
|
+
"unrepresentableDefaults": "These columns keep a database-generated default Adminium cannot edit here, and it is left as it is: {columns}"
|
|
371
256
|
},
|
|
372
|
-
"
|
|
373
|
-
"
|
|
374
|
-
"
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
"
|
|
380
|
-
"
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
"
|
|
386
|
-
"
|
|
387
|
-
"
|
|
388
|
-
"
|
|
389
|
-
"
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
"
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
"
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
"
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
"
|
|
422
|
-
"
|
|
423
|
-
"
|
|
424
|
-
"
|
|
425
|
-
"
|
|
426
|
-
"
|
|
427
|
-
"
|
|
428
|
-
"
|
|
429
|
-
"
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
"
|
|
436
|
-
"
|
|
437
|
-
"
|
|
438
|
-
"
|
|
439
|
-
"
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
"
|
|
443
|
-
"
|
|
444
|
-
"
|
|
445
|
-
"
|
|
446
|
-
"guarantee1": "The prompt carries only your schema and aggregate stats — never row data by default.",
|
|
447
|
-
"guarantee2": "No credentials, instance URL, or identifiers are embedded.",
|
|
448
|
-
"guarantee3": "BYO runs make zero network calls.",
|
|
449
|
-
"promptVersion": "Prompt {version}",
|
|
450
|
-
"schemaVersion": "Schema {version}",
|
|
451
|
-
"headingRecommended": "Use your own AI tool — no key needed",
|
|
452
|
-
"recommended": "Recommended"
|
|
257
|
+
"diagram": {
|
|
258
|
+
"ceiling": "Showing the {shown} most connected tables. {omitted} more are hidden — search to bring one in.",
|
|
259
|
+
"legend": {
|
|
260
|
+
"declared": "Foreign key",
|
|
261
|
+
"inferred": "Inferred",
|
|
262
|
+
"virtual": "Added in Adminium"
|
|
263
|
+
},
|
|
264
|
+
"legendLabel": "Legend",
|
|
265
|
+
"node": {
|
|
266
|
+
"foreignKey": "Foreign key",
|
|
267
|
+
"more": "+{count} more",
|
|
268
|
+
"primaryKey": "Primary key"
|
|
269
|
+
},
|
|
270
|
+
"outline": {
|
|
271
|
+
"intro": "{tables} tables and {relations} relations, as a list.",
|
|
272
|
+
"more": " and {count} more",
|
|
273
|
+
"referencedBy": "Referenced by: {list}",
|
|
274
|
+
"references": "References: {list}"
|
|
275
|
+
},
|
|
276
|
+
"saveLayout": "Save layout",
|
|
277
|
+
"search": "Find a table or column",
|
|
278
|
+
"showDiagram": "Show diagram",
|
|
279
|
+
"showList": "Show as list"
|
|
280
|
+
},
|
|
281
|
+
"documents": {
|
|
282
|
+
"cancel": "Cancel",
|
|
283
|
+
"connectionLabel": "Connection",
|
|
284
|
+
"delete": "Delete",
|
|
285
|
+
"delivery": {
|
|
286
|
+
"email": "Email it to",
|
|
287
|
+
"noEmail": "Nobody — keep it on the record",
|
|
288
|
+
"noEmailSlot": "This kind of document has no address field, so it cannot be emailed.",
|
|
289
|
+
"noSmtp": "This Adminium has no email server set up yet, so nothing can be sent. Set one up in Studio → Settings → Email.",
|
|
290
|
+
"stored": "Kept on the record, always."
|
|
291
|
+
},
|
|
292
|
+
"disabled": "switched off",
|
|
293
|
+
"edit": "Edit",
|
|
294
|
+
"empty": "No mappings yet.",
|
|
295
|
+
"grants": {
|
|
296
|
+
"refused": "This mapping reads {tables}, which you may not read. Documents from it will fail for you.",
|
|
297
|
+
"title": "You cannot read all of this"
|
|
298
|
+
},
|
|
299
|
+
"intro": "A mapping says which columns of which table make one kind of document, what draws it, and where it goes.",
|
|
300
|
+
"name": "Name this mapping",
|
|
301
|
+
"newFrom": "New mapping for:",
|
|
302
|
+
"noProvider": "No installed add-on can draw documents yet. Install one from Add-ons, and the mappings you can make will appear here.",
|
|
303
|
+
"pickTable": "Choose a table…",
|
|
304
|
+
"prefix": "Number prefix",
|
|
305
|
+
"render": {
|
|
306
|
+
"failedRow": "It did not draw: {reason}",
|
|
307
|
+
"intro": "Draw one now, from a row you choose. Nothing is sent anywhere — it is kept on the record like any other.",
|
|
308
|
+
"noRows": "No rows to draw from yet.",
|
|
309
|
+
"open": "Open it",
|
|
310
|
+
"pending": "Drawing…",
|
|
311
|
+
"pick": "Draw this one",
|
|
312
|
+
"ready": "Drawn.",
|
|
313
|
+
"saveFirst": "Save the mapping first. A document is drawn from a saved one, so you can see what it makes before anybody else does.",
|
|
314
|
+
"search": "Search rows",
|
|
315
|
+
"slow": "No document has appeared yet. It may still be waiting its turn, or this installation may not be running background jobs — nothing draws until it does.",
|
|
316
|
+
"slowTitle": "Still nothing"
|
|
317
|
+
},
|
|
318
|
+
"save": "Save mapping",
|
|
319
|
+
"slot": {
|
|
320
|
+
"byDefault": "Filled by Adminium",
|
|
321
|
+
"lineColumnOf": "{column} of each line",
|
|
322
|
+
"lineColumns": "What fills each column of a line",
|
|
323
|
+
"looksLikeLines": "looks like lines",
|
|
324
|
+
"noChildren": "Nothing in your database points at this table, so there are no lines to draw. A document needs a child table with a foreign key back to this one.",
|
|
325
|
+
"noLines": "No lines",
|
|
326
|
+
"pii": "hidden data",
|
|
327
|
+
"typed": "A value I type",
|
|
328
|
+
"typedHint": "Entered here, not read from your data — every document from this mapping gets the same value.",
|
|
329
|
+
"typedValue": "Value for {slot}",
|
|
330
|
+
"unmapped": "Not filled"
|
|
453
331
|
},
|
|
454
|
-
"
|
|
455
|
-
"
|
|
456
|
-
"
|
|
457
|
-
"
|
|
458
|
-
"
|
|
459
|
-
"
|
|
460
|
-
"
|
|
461
|
-
"
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
"
|
|
467
|
-
"
|
|
468
|
-
"
|
|
469
|
-
"
|
|
470
|
-
|
|
332
|
+
"step": {
|
|
333
|
+
"delivery": "Where it goes",
|
|
334
|
+
"kind": "Kind",
|
|
335
|
+
"mapping": "What fills each field",
|
|
336
|
+
"mappingHelp": "Each field reads a column, or takes a value you type here.",
|
|
337
|
+
"render": "Try it on a row",
|
|
338
|
+
"table": "Connection and table",
|
|
339
|
+
"trigger": "What draws it"
|
|
340
|
+
},
|
|
341
|
+
"tableLabel": "Table",
|
|
342
|
+
"title": "Document mappings",
|
|
343
|
+
"trigger": {
|
|
344
|
+
"created": "When a row is added",
|
|
345
|
+
"manual": "Only when somebody asks",
|
|
346
|
+
"manualShort": "on request",
|
|
347
|
+
"note": "Rows added by an import or written straight into the database do not draw anything — only writes through Adminium do.",
|
|
348
|
+
"noteTitle": "What counts as a change",
|
|
349
|
+
"updated": "When a row changes"
|
|
350
|
+
},
|
|
351
|
+
"unbound": "Still to fill: {slots}"
|
|
471
352
|
},
|
|
472
353
|
"enrich": {
|
|
473
|
-
"title": "Enrich with AI",
|
|
474
|
-
"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.",
|
|
475
|
-
"intentLabel": "How would you like to enrich?",
|
|
476
|
-
"sectionsLegend": "What should the AI decide?",
|
|
477
|
-
"localesLegend": "Translate labels into",
|
|
478
|
-
"localeLocked": "(required)",
|
|
479
|
-
"samplingTitle": "Include sample values",
|
|
480
|
-
"samplingHint": "Includes up to 20 real values per non-PII column in the prompt.",
|
|
481
|
-
"samplingPreviewTitle": "What leaves this machine",
|
|
482
|
-
"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.",
|
|
483
|
-
"noSections": "Select at least one decision group to enrich.",
|
|
484
|
-
"generatePrompt": "Generate prompt",
|
|
485
|
-
"startProvider": "Start enrichment",
|
|
486
|
-
"startOver": "Start over",
|
|
487
|
-
"copied": "Copied",
|
|
488
|
-
"createFailed": "Could not build the enrichment prompt — retry.",
|
|
489
|
-
"createFailedTitle": "Could not start",
|
|
490
|
-
"providerFallback": "your AI provider",
|
|
491
|
-
"fileTitle": "AI enrichment needs a live database",
|
|
492
|
-
"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.",
|
|
493
|
-
"section": {
|
|
494
|
-
"labels": "Labels & descriptions",
|
|
495
|
-
"groups": "Navigation groups",
|
|
496
|
-
"enums": "Enum semantics",
|
|
497
|
-
"relations": "Relations",
|
|
498
|
-
"keys": "Key columns",
|
|
499
|
-
"templates": "Page templates",
|
|
500
|
-
"widgets": "Dashboard widgets",
|
|
501
|
-
"pii": "PII & masking",
|
|
502
|
-
"icons": "Icons",
|
|
503
|
-
"microcopy": "Micro-copy"
|
|
504
|
-
},
|
|
505
|
-
"provider": {
|
|
506
|
-
"title": "Use my AI provider",
|
|
507
|
-
"description": "Run enrichment now against your configured provider. You review every suggestion as a diff.",
|
|
508
|
-
"unconfigured": "No AI provider is configured yet — copy a prompt to your own tool below, or configure a provider first.",
|
|
509
|
-
"settingsHint": "Want to run it directly?",
|
|
510
|
-
"settingsLink": "Configure a provider in Settings → AI",
|
|
511
|
-
"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."
|
|
512
|
-
},
|
|
513
354
|
"byo": {
|
|
514
|
-
"cardTitle": "Copy a prompt to my own AI tool",
|
|
515
355
|
"cardDescription": "Copy a self-contained prompt into Claude Code, ChatGPT, anything — then paste the JSON back. No key needed, nothing leaves this machine automatically.",
|
|
516
|
-
"
|
|
517
|
-
"
|
|
518
|
-
"promptLabelN": "Enrichment prompt {index} of {total}",
|
|
519
|
-
"tokenChip": "≈ {tokens} tokens",
|
|
520
|
-
"copyPrompt": "Copy prompt",
|
|
521
|
-
"copyPromptDone": "Prompt copied",
|
|
522
|
-
"download": "Download .md",
|
|
523
|
-
"chunkTabs": "Prompt chunks",
|
|
356
|
+
"cardTitle": "Copy a prompt to my own AI tool",
|
|
357
|
+
"cardTitleRecommended": "Copy a prompt to my own AI tool — recommended",
|
|
524
358
|
"chunkTab": "Prompt {index}",
|
|
359
|
+
"chunkTabs": "Prompt chunks",
|
|
525
360
|
"chunkValid": "Chunk {index} validated",
|
|
526
|
-
"
|
|
527
|
-
"pastePlaceholder": "Paste the JSON response here…",
|
|
528
|
-
"validate": "Validate",
|
|
529
|
-
"valid": "Response validated",
|
|
530
|
-
"mergedTitle": "All {count} chunks validated and merged",
|
|
531
|
-
"mergedTitleSingle": "Response validated",
|
|
532
|
-
"mergedBody": "Suggestions are ready to review against the heuristic baseline.",
|
|
533
|
-
"errorsTitle": "Validation found {count} issues",
|
|
361
|
+
"continueReview": "Continue to review",
|
|
534
362
|
"copyErrors": "Copy errors for your AI tool",
|
|
535
363
|
"copyErrorsDone": "Errors copied",
|
|
536
364
|
"copyErrorsHint": "Paste this back into your AI tool to get a corrected response.",
|
|
365
|
+
"copyPrompt": "Copy prompt",
|
|
366
|
+
"copyPromptDone": "Prompt copied",
|
|
367
|
+
"download": "Download .md",
|
|
537
368
|
"droppedItems": "{count} suggestions were dropped during validation — review shows the rest.",
|
|
538
|
-
"
|
|
369
|
+
"errorsTitle": "Validation found {count} issues",
|
|
370
|
+
"guidance": "Run this in any AI tool — Claude Code, ChatGPT, anything. Paste the JSON it returns below.",
|
|
371
|
+
"mergedBody": "Suggestions are ready to review against the heuristic baseline.",
|
|
372
|
+
"mergedTitle": "All {count} chunks validated and merged",
|
|
373
|
+
"mergedTitleSingle": "Response validated",
|
|
374
|
+
"pasteLabel": "Paste the JSON response",
|
|
375
|
+
"pastePlaceholder": "Paste the JSON response here…",
|
|
539
376
|
"pendingBody": "Paste the JSON response above and validate it to continue to review.",
|
|
540
377
|
"pendingBodyChunked": "Each chunk must validate before the suggestions merge. Paste and validate every prompt above.",
|
|
378
|
+
"pendingTitle": "Validate every prompt to continue",
|
|
379
|
+
"promptLabel": "Enrichment prompt",
|
|
380
|
+
"promptLabelN": "Enrichment prompt {index} of {total}",
|
|
541
381
|
"requestFailed": "Could not reach the server to validate — retry.",
|
|
542
|
-
"
|
|
543
|
-
"
|
|
544
|
-
"
|
|
382
|
+
"tokenChip": "≈ {tokens} tokens",
|
|
383
|
+
"valid": "Response validated",
|
|
384
|
+
"validate": "Validate",
|
|
385
|
+
"wholeDocument": "whole document"
|
|
545
386
|
},
|
|
387
|
+
"copied": "Copied",
|
|
388
|
+
"createFailed": "Could not build the enrichment prompt — retry.",
|
|
389
|
+
"createFailedTitle": "Could not start",
|
|
546
390
|
"direct": {
|
|
547
|
-
"
|
|
548
|
-
"subtitle": "Sending your schema to",
|
|
391
|
+
"back": "Back to options",
|
|
549
392
|
"building": "Building prompt…",
|
|
550
|
-
"logLabel": "Enrichment log",
|
|
551
393
|
"cancel": "Cancel",
|
|
552
|
-
"back": "Back to options",
|
|
553
|
-
"retry": "Retry",
|
|
554
|
-
"done": "Enrichment complete — review the suggestions.",
|
|
555
394
|
"continueReview": "Continue to review",
|
|
395
|
+
"done": "Enrichment complete — review the suggestions.",
|
|
396
|
+
"errorTitle": "Enrichment failed",
|
|
556
397
|
"failed": "The provider run failed. Check your AI settings and retry.",
|
|
557
398
|
"jobFailed": "The enrichment run did not finish.",
|
|
399
|
+
"logLabel": "Enrichment log",
|
|
400
|
+
"retry": "Retry",
|
|
558
401
|
"startFailed": "Could not start the run — retry.",
|
|
559
|
-
"
|
|
402
|
+
"subtitle": "Sending your schema to",
|
|
403
|
+
"title": "Enriching with AI"
|
|
404
|
+
},
|
|
405
|
+
"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.",
|
|
406
|
+
"fileTitle": "AI enrichment needs a live database",
|
|
407
|
+
"generatePrompt": "Generate prompt",
|
|
408
|
+
"intentLabel": "How would you like to enrich?",
|
|
409
|
+
"localeLocked": "(required)",
|
|
410
|
+
"localesLegend": "Translate labels into",
|
|
411
|
+
"noSections": "Select at least one decision group to enrich.",
|
|
412
|
+
"provider": {
|
|
413
|
+
"configError": "Could not load the provider settings — set one up in Settings → AI, then come back to this step.",
|
|
414
|
+
"description": "Run enrichment now against your configured provider. You review every suggestion as a diff.",
|
|
415
|
+
"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.",
|
|
416
|
+
"readyBody": "Pick “Use my AI provider” above to run enrichment on this connection now.",
|
|
417
|
+
"readyTitle": "AI provider configured",
|
|
418
|
+
"setUpHere": "Set up a provider here",
|
|
419
|
+
"setUpHide": "Hide provider setup",
|
|
420
|
+
"settingsHint": "Want to run it directly?",
|
|
421
|
+
"settingsLink": "Configure a provider in Settings → AI",
|
|
422
|
+
"title": "Use my AI provider",
|
|
423
|
+
"unconfigured": "No AI provider is configured yet — set one up below, or copy a prompt to your own AI tool."
|
|
424
|
+
},
|
|
425
|
+
"providerFallback": "your AI provider",
|
|
426
|
+
"samplingHint": "Includes up to 20 real values per non-PII column in the prompt.",
|
|
427
|
+
"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.",
|
|
428
|
+
"samplingPreviewTitle": "What leaves this machine",
|
|
429
|
+
"samplingTitle": "Include sample values",
|
|
430
|
+
"section": {
|
|
431
|
+
"enums": "Enum semantics",
|
|
432
|
+
"groups": "Navigation groups",
|
|
433
|
+
"icons": "Icons",
|
|
434
|
+
"keys": "Key columns",
|
|
435
|
+
"labels": "Labels & descriptions",
|
|
436
|
+
"microcopy": "Micro-copy",
|
|
437
|
+
"pii": "PII & masking",
|
|
438
|
+
"relations": "Relations",
|
|
439
|
+
"templates": "Page templates",
|
|
440
|
+
"widgets": "Dashboard widgets"
|
|
560
441
|
},
|
|
442
|
+
"sectionsLegend": "What should the AI decide?",
|
|
561
443
|
"skip": {
|
|
562
|
-
"
|
|
563
|
-
"description": "Generate from the heuristic baseline. You can enrich later from Settings → AI — skipping is never penalized.",
|
|
444
|
+
"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.",
|
|
564
445
|
"confirmTitle": "Continuing with heuristics",
|
|
565
|
-
"
|
|
446
|
+
"description": "Generate from the heuristic baseline. You can enrich later from Settings → AI — skipping is never penalized.",
|
|
447
|
+
"title": "Skip — use heuristics only"
|
|
448
|
+
},
|
|
449
|
+
"startOver": "Start over",
|
|
450
|
+
"startProvider": "Start enrichment",
|
|
451
|
+
"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.",
|
|
452
|
+
"title": "Enrich with AI"
|
|
453
|
+
},
|
|
454
|
+
"generate": {
|
|
455
|
+
"errorTitle": "Generation failed",
|
|
456
|
+
"failed": "Generation failed — retry, or re-run introspection first.",
|
|
457
|
+
"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.",
|
|
458
|
+
"fileTitle": "Schema file parsed — generation needs a live database",
|
|
459
|
+
"log": {
|
|
460
|
+
"classifying": "Classifying schema…",
|
|
461
|
+
"composing": "Composing templates…",
|
|
462
|
+
"done": "{pages} pages generated across {groups} nav groups",
|
|
463
|
+
"writing": "Writing pages…"
|
|
464
|
+
},
|
|
465
|
+
"logLabel": "Generation log",
|
|
466
|
+
"openApp": "Open your app",
|
|
467
|
+
"run": "Generate dashboard",
|
|
468
|
+
"subtitle": "One page per included table plus dashboards per domain — intent:",
|
|
469
|
+
"successBody": "{pages} pages across {groups} navigation groups — generated from your schema, editable in Studio.",
|
|
470
|
+
"successTitle": "Your dashboard is ready",
|
|
471
|
+
"title": "Generate your app"
|
|
472
|
+
},
|
|
473
|
+
"hostedApps": {
|
|
474
|
+
"domains": {
|
|
475
|
+
"add": "Attach a domain",
|
|
476
|
+
"hostLabel": "Host",
|
|
477
|
+
"instanceLabel": "Instance",
|
|
478
|
+
"instanceOwn": "The app's own",
|
|
479
|
+
"issuesTitle": "The domain map was refused",
|
|
480
|
+
"none": "No domains are attached.",
|
|
481
|
+
"remove": "Remove",
|
|
482
|
+
"save": "Save domains",
|
|
483
|
+
"savedBody": "Mappings take effect within a few seconds. A host only answers once its DNS and your proxy actually reach this instance.",
|
|
484
|
+
"savedTitle": "Saved",
|
|
485
|
+
"subtitle": "Point a domain’s DNS at your proxy, pass the Host header through to Adminium, and attach it here — that host then serves the surface instead of this dashboard. Certificates stay on your proxy.",
|
|
486
|
+
"surfaceLabel": "Surface",
|
|
487
|
+
"title": "Domains"
|
|
488
|
+
},
|
|
489
|
+
"emptyBody": "Point ADMINIUM_SURFACES_DIR at a directory of built surfaces — one folder per app and side, each with its index.html — and restart. They are then served under /apps/ and appear here.",
|
|
490
|
+
"emptyTitle": "No app surfaces are being served",
|
|
491
|
+
"error": "Something went wrong",
|
|
492
|
+
"instances": {
|
|
493
|
+
"add": "Add an instance",
|
|
494
|
+
"appLabel": "App",
|
|
495
|
+
"body": "Serve the same app over more than one database. Each instance is reachable at /apps/<app>/<segment>/<side>/ and reads only the connection you give it.",
|
|
496
|
+
"empty": "No extra instances.",
|
|
497
|
+
"failed": "Instances were not saved",
|
|
498
|
+
"readsLabel": "Reads",
|
|
499
|
+
"remove": "Remove",
|
|
500
|
+
"save": "Save instances",
|
|
501
|
+
"slugLabel": "URL segment",
|
|
502
|
+
"title": "Instances"
|
|
503
|
+
},
|
|
504
|
+
"subtitle": "The app surfaces this instance serves — where each one appears, and the domains pointed at them.",
|
|
505
|
+
"surfaces": {
|
|
506
|
+
"boundKey": "Serves key",
|
|
507
|
+
"connectionLabel": "Reads",
|
|
508
|
+
"connectionUnset": "Whichever is serving",
|
|
509
|
+
"customer": "Customer",
|
|
510
|
+
"mintLink": "Mint one under Public API",
|
|
511
|
+
"noKey": "No key bound — this surface cannot read data until one is minted for it.",
|
|
512
|
+
"noNav": "Internal placement unavailable — rebuild this surface with the current toolkit so it emits surface.json.",
|
|
513
|
+
"placementExternal": "External (own URL only)",
|
|
514
|
+
"placementInternal": "In the sidebar (blended)",
|
|
515
|
+
"placementLabel": "Placement",
|
|
516
|
+
"staff": "Staff",
|
|
517
|
+
"subtitle": "A staff surface can blend into this dashboard’s sidebar or stand on its own; a customer surface is public and reads through its bound key.",
|
|
518
|
+
"title": "Surfaces"
|
|
519
|
+
},
|
|
520
|
+
"title": "Hosted apps",
|
|
521
|
+
"install": {
|
|
522
|
+
"steps": {
|
|
523
|
+
"bundle": "Bundle",
|
|
524
|
+
"database": "Database",
|
|
525
|
+
"plan": "Schema plan",
|
|
526
|
+
"done": "Done"
|
|
527
|
+
},
|
|
528
|
+
"progress": "Install progress",
|
|
529
|
+
"failed": "Install failed",
|
|
530
|
+
"bundle": {
|
|
531
|
+
"title": "Upload the app bundle",
|
|
532
|
+
"hint": "The .tgz that `npm pack` produces for a built surface — it holds manifest.json and a staff/ or customer/ directory.",
|
|
533
|
+
"file": "Bundle file (.tgz)",
|
|
534
|
+
"fileHint": "Nothing is created until you confirm on the schema-plan step.",
|
|
535
|
+
"key": "App key",
|
|
536
|
+
"version": "Version",
|
|
537
|
+
"integrity": "Integrity (optional)",
|
|
538
|
+
"integrityHint": "Paste the sha512- value from `npm pack --json` to have the server check these exact bytes. Left empty, it is computed here."
|
|
539
|
+
},
|
|
540
|
+
"database": {
|
|
541
|
+
"title": "Install into which database?",
|
|
542
|
+
"hint": "Pick a writable connection. This is where the tables will be created, and it is what the app reads afterwards.",
|
|
543
|
+
"tables": "Tables: {count}",
|
|
544
|
+
"readOnly": "Read-only",
|
|
545
|
+
"writable": "Writable",
|
|
546
|
+
"noWritable": "No writable connection",
|
|
547
|
+
"allReadOnly": "Every connection here uses a read-only role, so no app can create its tables. Connect one that can run DDL first."
|
|
548
|
+
},
|
|
549
|
+
"plan": {
|
|
550
|
+
"title": "Review the schema plan",
|
|
551
|
+
"hint": "Exactly what will be created in your database. Nothing has been written yet.",
|
|
552
|
+
"refused": "This app cannot be installed here",
|
|
553
|
+
"create": "Create",
|
|
554
|
+
"reuse": "Reuse existing",
|
|
555
|
+
"toggleDdl": "Show the DDL preview",
|
|
556
|
+
"ddl": "DDL preview",
|
|
557
|
+
"ddlNote": "Illustrative. The server emits the exact statement for your engine, including foreign keys.",
|
|
558
|
+
"summary": "{created} created · {reused} reused"
|
|
559
|
+
},
|
|
560
|
+
"done": {
|
|
561
|
+
"title": "Installed",
|
|
562
|
+
"body": "{key} is being served now. Choose where its staff side appears below.",
|
|
563
|
+
"schema": "Tables created: {created} · reused: {reused}"
|
|
564
|
+
},
|
|
565
|
+
"cancel": "Cancel",
|
|
566
|
+
"back": "Back",
|
|
567
|
+
"upload": "Upload",
|
|
568
|
+
"continue": "Continue",
|
|
569
|
+
"confirm": "Install",
|
|
570
|
+
"finish": "Manage apps",
|
|
571
|
+
"staged": "Files unpacked: {files}",
|
|
572
|
+
"footerStep": "Step {n} of {total}",
|
|
573
|
+
"footerStepApp": "Step {n} of {total} · {app}",
|
|
574
|
+
"chosen": {
|
|
575
|
+
"title": "Install {app}",
|
|
576
|
+
"hint": "This app came with your build and is already on disk. Nothing is created until you confirm the schema plan."
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
"installed": {
|
|
580
|
+
"title": "Installed apps",
|
|
581
|
+
"install": "Install an app",
|
|
582
|
+
"emptyTitle": "No apps installed yet",
|
|
583
|
+
"emptyBody": "Upload a built surface bundle to install one. Apps installed here are served immediately — no restart, unlike a directory you point at.",
|
|
584
|
+
"uninstall": "Uninstall",
|
|
585
|
+
"confirmTitle": "Uninstall this app?",
|
|
586
|
+
"confirmBody": "Its surfaces stop being served and the bundle is deleted. Any tables it created in your database are left alone.",
|
|
587
|
+
"confirmPrompt": "Type {key} to confirm",
|
|
588
|
+
"confirmCancel": "Cancel",
|
|
589
|
+
"confirmClose": "Close",
|
|
590
|
+
"stagedTitle": "Uploaded but not installed",
|
|
591
|
+
"stagedHint": "Discard one you decided against, or upload the same key again to replace it.",
|
|
592
|
+
"discard": "Discard",
|
|
593
|
+
"installedAt": "installed {when}"
|
|
594
|
+
},
|
|
595
|
+
"browse": {
|
|
596
|
+
"title": "Apps you can install",
|
|
597
|
+
"subtitle": "Ready-made apps that came with this build. Installing one creates the tables it needs and serves its screens — nothing happens until you confirm the plan.",
|
|
598
|
+
"search": "Search apps…",
|
|
599
|
+
"clear": "Clear the search",
|
|
600
|
+
"all": "All",
|
|
601
|
+
"by": "by {publisher}",
|
|
602
|
+
"install": "Install",
|
|
603
|
+
"installed": "Installed",
|
|
604
|
+
"noMatch": "No apps match that search",
|
|
605
|
+
"noMatchBody": "Try a different term, or another category.",
|
|
606
|
+
"emptyTitle": "No apps are available to install",
|
|
607
|
+
"emptyBody": "Apps shipped with this build appear here. Point ADMINIUM_BUNDLED_APPS at a directory of app bundles, or upload one yourself.",
|
|
608
|
+
"unreadable": "This package’s manifest could not be read. It cannot be installed — discard it below."
|
|
566
609
|
}
|
|
567
610
|
},
|
|
568
|
-
"
|
|
569
|
-
"
|
|
570
|
-
|
|
611
|
+
"hub": {
|
|
612
|
+
"action": {
|
|
613
|
+
"delete": "Delete",
|
|
614
|
+
"pause": "Pause",
|
|
615
|
+
"pausedHint": "This connection is paused — resume it to reach the database.",
|
|
616
|
+
"regional": "Regional settings",
|
|
617
|
+
"reintrospect": "Re-introspect",
|
|
618
|
+
"reintrospectFile": "Schema-file sources have no live database — re-upload the file instead.",
|
|
619
|
+
"remap": "Remap schema",
|
|
620
|
+
"rename": "Rename",
|
|
621
|
+
"resume": "Resume",
|
|
622
|
+
"test": "Test"
|
|
623
|
+
},
|
|
624
|
+
"card": {
|
|
625
|
+
"lastIntrospected": "Last introspected",
|
|
626
|
+
"latency": "Latency",
|
|
627
|
+
"latencyMs": "{latency, number} ms",
|
|
628
|
+
"never": "Never",
|
|
629
|
+
"pages": "Pages",
|
|
630
|
+
"paused": "Adminium is not connecting to this database. Its pages load again when you resume it.",
|
|
631
|
+
"pausedSince": "Paused {when} — Adminium is not connecting to this database. Its pages load again when you resume it.",
|
|
632
|
+
"readOnly": "Read-only",
|
|
633
|
+
"tables": "Tables",
|
|
634
|
+
"timezone": "Timezone",
|
|
635
|
+
"timezoneGuessed": "from this server"
|
|
636
|
+
},
|
|
637
|
+
"connectNew": "New connection",
|
|
638
|
+
"delete": {
|
|
639
|
+
"body": "This deletes “{name}” and its generated pages. Your database itself is never touched.",
|
|
640
|
+
"cancel": "Cancel",
|
|
641
|
+
"close": "Close",
|
|
642
|
+
"confirm": "Delete connection",
|
|
643
|
+
"failed": "Could not delete the connection. Try again.",
|
|
644
|
+
"prompt": "Type {name} to confirm",
|
|
645
|
+
"success": "Connection “{name}” deleted",
|
|
646
|
+
"title": "Delete connection"
|
|
647
|
+
},
|
|
648
|
+
"empty": {
|
|
649
|
+
"body": "Connect a database and Adminium generates your admin panel from its schema.",
|
|
650
|
+
"cta": "Connect a database",
|
|
651
|
+
"title": "No data sources yet"
|
|
652
|
+
},
|
|
653
|
+
"hostedApps": "Hosted apps",
|
|
654
|
+
"introspect": {
|
|
655
|
+
"failed": "Introspection failed. Try again.",
|
|
656
|
+
"masksProposed": "{count, plural, one {# column} other {# columns}} proposed for masking — review in the remap editor.",
|
|
657
|
+
"noChanges": "Schema unchanged — no new snapshot.",
|
|
658
|
+
"updated": "Schema re-introspected"
|
|
659
|
+
},
|
|
660
|
+
"pause": {
|
|
661
|
+
"body": "Adminium stops opening any connection to “{name}”. Its {pages, plural, one {# page} other {# pages}}, scheduled reports and hosted apps stop loading data until you resume it.",
|
|
662
|
+
"confirm": "Pause connection",
|
|
663
|
+
"keeps": "Nothing is deleted — the connection, its schema and its {pages, plural, one {# page} other {# pages}} are all kept, and one click brings them back.",
|
|
664
|
+
"pauseFailed": "Could not pause the connection. Try again.",
|
|
665
|
+
"pausedToast": "Connection “{name}” paused",
|
|
666
|
+
"resumeFailed": "Could not resume the connection. Try again.",
|
|
667
|
+
"resumedToast": "Connection “{name}” resumed",
|
|
668
|
+
"title": "Pause this connection?"
|
|
669
|
+
},
|
|
670
|
+
"regional": {
|
|
671
|
+
"currency": "Currency",
|
|
672
|
+
"currencyHelper": "Used to format money. Optional — leaving it unset affects formatting only.",
|
|
673
|
+
"currencyPlaceholder": "ISO-4217 code",
|
|
674
|
+
"failed": "Regional settings could not be saved",
|
|
675
|
+
"guessedBody": "Adminium filled it in from the machine it runs on, not from anyone here. Save to confirm it, or pick the zone this business actually keeps.",
|
|
676
|
+
"guessedTitle": "This zone came from the server",
|
|
677
|
+
"intro": "These describe the business this database belongs to, not the person reading it. Apps served from Adminium read them from here.",
|
|
678
|
+
"noMatch": "No matching zone",
|
|
679
|
+
"noMatchCurrency": "No matching currency",
|
|
680
|
+
"notSet": "Not set",
|
|
681
|
+
"save": "Save",
|
|
682
|
+
"saved": "Regional settings updated",
|
|
683
|
+
"timezone": "Timezone",
|
|
684
|
+
"timezoneHelper": "Dates and times render in this zone. Apps hosted by Adminium fall back to UTC without one, and say on screen that they are doing it.",
|
|
685
|
+
"timezonePlaceholder": "Region/City",
|
|
686
|
+
"title": "Regional settings"
|
|
687
|
+
},
|
|
688
|
+
"rename": {
|
|
689
|
+
"failed": "The connection could not be renamed",
|
|
690
|
+
"helper": "What this database is called throughout Adminium — the card, the sidebar group over its pages, and every picker that offers it. The database itself is not renamed.",
|
|
691
|
+
"label": "Name",
|
|
692
|
+
"save": "Rename",
|
|
693
|
+
"saved": "Connection renamed",
|
|
694
|
+
"title": "Rename connection"
|
|
695
|
+
},
|
|
696
|
+
"stats": {
|
|
697
|
+
"connections": "Connections",
|
|
698
|
+
"healthy": "Healthy",
|
|
699
|
+
"pages": "Generated pages",
|
|
700
|
+
"tables": "Tables included"
|
|
701
|
+
},
|
|
702
|
+
"status": {
|
|
703
|
+
"connected": "Connected",
|
|
704
|
+
"error": "Error",
|
|
705
|
+
"paused": "Paused",
|
|
706
|
+
"testing": "Testing…",
|
|
707
|
+
"unconfigured": "Draft"
|
|
708
|
+
},
|
|
709
|
+
"subtitle": "{healthy, number} of {total, plural, one {# connection} other {# connections}} healthy",
|
|
710
|
+
"subtitlePaused": "{healthy, number} of {total, plural, one {# connection} other {# connections}} healthy · {paused, number} paused",
|
|
711
|
+
"test": {
|
|
712
|
+
"failed": "Connection test failed",
|
|
713
|
+
"ok": "Connection healthy · {latency, number} ms"
|
|
714
|
+
},
|
|
715
|
+
"title": "Data connections"
|
|
716
|
+
},
|
|
717
|
+
"intent": {
|
|
718
|
+
"analytics": {
|
|
719
|
+
"description": "Dashboards, charts and read-only grids. No forms, no writes — every role capped at Viewer.",
|
|
720
|
+
"title": "Read-only analytics"
|
|
721
|
+
},
|
|
722
|
+
"crud": {
|
|
723
|
+
"description": "One editing page per table plus search and import/export — a minimal home, no dashboards.",
|
|
724
|
+
"title": "CRUD tables"
|
|
725
|
+
},
|
|
726
|
+
"fullAdmin": {
|
|
727
|
+
"description": "Dashboards, CRUD pages, search, imports and exports — everything your schema supports.",
|
|
728
|
+
"title": "Full admin panel"
|
|
729
|
+
},
|
|
730
|
+
"subtitle": "The intent shapes which pages get generated. You can change it later — changing it proposes a regeneration, never a silent rewrite.",
|
|
731
|
+
"support": {
|
|
732
|
+
"description": "Queues, ticket and customer detail pages first. Deletes off by default. (Queue templates land in M7 — the v1 page set matches Full admin.)",
|
|
733
|
+
"title": "Support console"
|
|
734
|
+
},
|
|
735
|
+
"title": "What do you need?",
|
|
736
|
+
"trust": "We read your schema only — never your row data during setup."
|
|
571
737
|
},
|
|
572
738
|
"llmRuns": {
|
|
573
739
|
"review": {
|
|
574
|
-
"
|
|
575
|
-
"
|
|
576
|
-
"
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
"
|
|
580
|
-
"
|
|
581
|
-
"
|
|
582
|
-
"
|
|
583
|
-
"new": "{n} new",
|
|
584
|
-
"rejects": "{n} rejects",
|
|
585
|
-
"countsAria": "Suggestion counts"
|
|
740
|
+
"applied": {
|
|
741
|
+
"body": "The accepted suggestions below are read-only.",
|
|
742
|
+
"title": "This run has been applied"
|
|
743
|
+
},
|
|
744
|
+
"apply": {
|
|
745
|
+
"confirm": "Apply changes",
|
|
746
|
+
"empty": "Nothing selected to apply.",
|
|
747
|
+
"subtitle": "These changes are written in one transaction and can be undone.",
|
|
748
|
+
"title": "Apply {n} suggestions"
|
|
586
749
|
},
|
|
750
|
+
"applyFailed": "Nothing was applied",
|
|
751
|
+
"applyUnknown": "The server did not say why.",
|
|
587
752
|
"bulk": {
|
|
588
|
-
"thresholdLabel": "Confidence threshold",
|
|
589
|
-
"thresholdAria": "Accept-all confidence threshold",
|
|
590
753
|
"acceptAll": "Accept all ≥ {pct}%",
|
|
591
|
-
"clear": "Clear selection"
|
|
754
|
+
"clear": "Clear selection",
|
|
755
|
+
"thresholdAria": "Accept-all confidence threshold",
|
|
756
|
+
"thresholdLabel": "Confidence threshold"
|
|
592
757
|
},
|
|
593
|
-
"
|
|
594
|
-
"
|
|
595
|
-
"
|
|
758
|
+
"cat": {
|
|
759
|
+
"copy": "micro-copy",
|
|
760
|
+
"dashboard": "dashboard",
|
|
761
|
+
"enum": "enum",
|
|
762
|
+
"group": "navigation group",
|
|
763
|
+
"key": "key columns",
|
|
764
|
+
"label": "label",
|
|
765
|
+
"pii": "PII",
|
|
766
|
+
"relation": "relation",
|
|
767
|
+
"template": "page template",
|
|
768
|
+
"widget": "widget"
|
|
769
|
+
},
|
|
770
|
+
"empty": {
|
|
771
|
+
"body": "This run produced no suggestions to review.",
|
|
772
|
+
"title": "No suggestions"
|
|
773
|
+
},
|
|
774
|
+
"error": {
|
|
775
|
+
"title": "Could not load this run"
|
|
776
|
+
},
|
|
777
|
+
"footer": {
|
|
778
|
+
"apply": "Apply {n} accepted suggestions",
|
|
779
|
+
"count": "{n} suggestions selected",
|
|
780
|
+
"failed": "Apply failed"
|
|
596
781
|
},
|
|
597
782
|
"group": {
|
|
598
|
-
"
|
|
599
|
-
"navigation": "Navigation & domains",
|
|
783
|
+
"dashboards": "Dashboards & widgets",
|
|
600
784
|
"enums": "Enum semantics",
|
|
601
|
-
"
|
|
785
|
+
"icons": "Icons",
|
|
602
786
|
"keys": "Key columns",
|
|
603
|
-
"
|
|
604
|
-
"
|
|
787
|
+
"labels": "Labels & translations",
|
|
788
|
+
"microcopy": "Micro-copy",
|
|
789
|
+
"navigation": "Navigation & domains",
|
|
605
790
|
"pii": "PII & masking",
|
|
606
|
-
"
|
|
607
|
-
"
|
|
791
|
+
"relations": "Relations",
|
|
792
|
+
"templates": "Page templates"
|
|
608
793
|
},
|
|
609
|
-
"
|
|
610
|
-
"agree": "
|
|
611
|
-
"
|
|
612
|
-
"
|
|
613
|
-
"
|
|
614
|
-
"
|
|
615
|
-
"
|
|
794
|
+
"header": {
|
|
795
|
+
"agree": "{n} agree",
|
|
796
|
+
"byo": "BYO",
|
|
797
|
+
"conflict": "{n} conflict",
|
|
798
|
+
"countsAria": "Suggestion counts",
|
|
799
|
+
"model": "Model",
|
|
800
|
+
"new": "{n} new",
|
|
801
|
+
"pathByo": "Copy-paste",
|
|
802
|
+
"pathDirect": "Direct API",
|
|
803
|
+
"rejects": "{n} rejects",
|
|
804
|
+
"snapshot": "Snapshot",
|
|
805
|
+
"title": "Review AI suggestions"
|
|
806
|
+
},
|
|
807
|
+
"notReady": {
|
|
808
|
+
"body": "A run must be validated before its suggestions can be reviewed. Generate or paste a response first.",
|
|
809
|
+
"title": "This run has no suggestions to review yet"
|
|
616
810
|
},
|
|
617
811
|
"row": {
|
|
618
812
|
"acceptAria": "Accept {noun} suggestion for {target}",
|
|
813
|
+
"confidenceAria": "Confidence {pct}%",
|
|
814
|
+
"hideTranslations": "Hide translations",
|
|
619
815
|
"keptEdited": "kept — edited by you",
|
|
816
|
+
"noAi": "No AI suggestion",
|
|
620
817
|
"rejectsCallout": "The AI rejects a heuristic decision — confirm before accepting.",
|
|
621
|
-
"showTranslations": "Show translations"
|
|
622
|
-
"hideTranslations": "Hide translations",
|
|
623
|
-
"confidenceAria": "Confidence {pct}%",
|
|
624
|
-
"noAi": "No AI suggestion"
|
|
625
|
-
},
|
|
626
|
-
"value": {
|
|
627
|
-
"none": "No value",
|
|
628
|
-
"absent": "None",
|
|
629
|
-
"dash": "—",
|
|
630
|
-
"display": "Display",
|
|
631
|
-
"key": "Key",
|
|
632
|
-
"rank": "rank {n}",
|
|
633
|
-
"span": "span {n}",
|
|
634
|
-
"tableCount": "{n} tables",
|
|
635
|
-
"widgetCount": "{n} widgets",
|
|
636
|
-
"enumWorkflow": "Workflow",
|
|
637
|
-
"enumCategory": "Category",
|
|
638
|
-
"notPii": "Not PII",
|
|
639
|
-
"label": "Label",
|
|
640
|
-
"description": "Description",
|
|
641
|
-
"subtitle": "Page subtitle",
|
|
642
|
-
"headline": "Empty-state headline",
|
|
643
|
-
"guidance": "Empty-state guidance"
|
|
818
|
+
"showTranslations": "Show translations"
|
|
644
819
|
},
|
|
645
|
-
"
|
|
646
|
-
"
|
|
647
|
-
"
|
|
648
|
-
"empty": "Nothing selected to apply.",
|
|
649
|
-
"confirm": "Apply changes"
|
|
820
|
+
"section": {
|
|
821
|
+
"acceptedCount": "{n} accepted",
|
|
822
|
+
"selectAllAria": "Select all in {group}"
|
|
650
823
|
},
|
|
651
|
-
"
|
|
652
|
-
"
|
|
653
|
-
"
|
|
654
|
-
"
|
|
824
|
+
"status": {
|
|
825
|
+
"agree": "Agrees",
|
|
826
|
+
"conflict": "Conflict",
|
|
827
|
+
"heuristicOnly": "Heuristic only",
|
|
828
|
+
"locked": "Locked",
|
|
829
|
+
"new": "New",
|
|
830
|
+
"rejects": "Rejects heuristic"
|
|
655
831
|
},
|
|
656
832
|
"toast": {
|
|
657
833
|
"applied": "Applied {n} suggestions",
|
|
@@ -659,629 +835,1096 @@
|
|
|
659
835
|
"applyFailed": "Could not apply suggestions",
|
|
660
836
|
"undoFailed": "Could not undo this change"
|
|
661
837
|
},
|
|
662
|
-
"
|
|
663
|
-
"
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
"
|
|
667
|
-
"
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
"
|
|
671
|
-
"
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
"
|
|
675
|
-
"
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
"
|
|
679
|
-
"
|
|
680
|
-
"enum": "enum",
|
|
681
|
-
"relation": "relation",
|
|
682
|
-
"pii": "PII",
|
|
683
|
-
"template": "page template",
|
|
684
|
-
"group": "navigation group",
|
|
685
|
-
"dashboard": "dashboard",
|
|
686
|
-
"widget": "widget",
|
|
687
|
-
"copy": "micro-copy"
|
|
838
|
+
"value": {
|
|
839
|
+
"absent": "None",
|
|
840
|
+
"dash": "—",
|
|
841
|
+
"description": "Description",
|
|
842
|
+
"display": "Display",
|
|
843
|
+
"enumCategory": "Category",
|
|
844
|
+
"enumWorkflow": "Workflow",
|
|
845
|
+
"guidance": "Empty-state guidance",
|
|
846
|
+
"headline": "Empty-state headline",
|
|
847
|
+
"key": "Key",
|
|
848
|
+
"label": "Label",
|
|
849
|
+
"none": "No value",
|
|
850
|
+
"notPii": "Not PII",
|
|
851
|
+
"rank": "rank {n}",
|
|
852
|
+
"span": "span {n}",
|
|
853
|
+
"subtitle": "Page subtitle",
|
|
854
|
+
"tableCount": "{n} tables",
|
|
855
|
+
"widgetCount": "{n} widgets"
|
|
688
856
|
}
|
|
689
857
|
}
|
|
690
858
|
},
|
|
691
|
-
"wizard": {
|
|
692
|
-
"title": "New connection",
|
|
693
|
-
"back": "Back",
|
|
694
|
-
"continue": "Continue",
|
|
695
|
-
"progress": "Setup progress",
|
|
696
|
-
"persistFailed": "Could not save your table selection — retry.",
|
|
697
|
-
"persistFailedTitle": "Save failed",
|
|
698
|
-
"bridgeAppliedTitle": "Connection string received",
|
|
699
|
-
"bridgeAppliedBody": "Handed over from adminium.dev by your browser — it went straight to this machine and was never uploaded. Check it below, then continue.",
|
|
700
|
-
"bridgeFailedTitle": "That hand-off could not be used",
|
|
701
|
-
"bridgeFailedBody": "It has already been used or has expired. Paste your connection string below instead.",
|
|
702
|
-
"step": {
|
|
703
|
-
"source": "Source",
|
|
704
|
-
"test": "Analyze",
|
|
705
|
-
"tables": "Tables",
|
|
706
|
-
"meta": "Meta storage",
|
|
707
|
-
"intent": "Intent",
|
|
708
|
-
"enrich": "Enrich",
|
|
709
|
-
"generate": "Generate"
|
|
710
|
-
}
|
|
711
|
-
},
|
|
712
859
|
"meta": {
|
|
713
|
-
"
|
|
714
|
-
|
|
860
|
+
"move": {
|
|
861
|
+
"copying": "Moving Adminium’s tables…",
|
|
862
|
+
"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.",
|
|
863
|
+
"failed": "Could not move Adminium’s tables — retry.",
|
|
864
|
+
"restarting": "Restarting…",
|
|
865
|
+
"restartingBody": "The copy is done. Adminium is restarting onto the new database — this page will continue by itself in a few seconds.",
|
|
866
|
+
"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.",
|
|
867
|
+
"title": "Moving Adminium’s tables"
|
|
868
|
+
},
|
|
715
869
|
"sameDb": {
|
|
716
|
-
"title": "Same database",
|
|
717
870
|
"description": "adminium_* tables are created beside your source tables. Simplest setup — needs a role with write and CREATE TABLE privileges.",
|
|
718
|
-
"
|
|
871
|
+
"disabledFile": "A schema file has no live database — choose a separate database for Adminium’s own tables.",
|
|
719
872
|
"disabledNoDdl": "This role cannot run DDL — Adminium migrations need CREATE TABLE. Choose a separate database for Adminium’s own tables.",
|
|
720
|
-
"
|
|
873
|
+
"disabledReadOnly": "Your role is read-only — Adminium never writes to this database. Choose a separate database for Adminium’s own tables.",
|
|
874
|
+
"title": "Same database"
|
|
721
875
|
},
|
|
722
876
|
"separate": {
|
|
723
|
-
"title": "Separate database",
|
|
724
877
|
"description": "Adminium keeps its tables in a different database. Your source stays untouched — required for read-only sources.",
|
|
725
878
|
"dsn": "Meta database connection string",
|
|
879
|
+
"errorTitle": "Meta store not compatible",
|
|
726
880
|
"helper": "Needs write + DDL privileges — Adminium runs its own migrations there.",
|
|
727
|
-
"test": "Test connection",
|
|
728
|
-
"ok": "Compatible — write ✓ · DDL ✓",
|
|
729
881
|
"insufficient": "This role cannot host the meta store — Adminium needs write and CREATE TABLE privileges there.",
|
|
730
|
-
"
|
|
882
|
+
"ok": "Compatible — write ✓ · DDL ✓",
|
|
883
|
+
"test": "Test connection",
|
|
884
|
+
"title": "Separate database"
|
|
731
885
|
},
|
|
886
|
+
"subtitle": "Pages, roles, audit log and settings live in adminium_-prefixed tables — never mixed into your data.",
|
|
732
887
|
"testFailed": "Connection failed.",
|
|
888
|
+
"title": "Where should Adminium keep its own tables?",
|
|
733
889
|
"v1Note": {
|
|
734
|
-
"
|
|
735
|
-
"
|
|
736
|
-
},
|
|
737
|
-
"move": {
|
|
738
|
-
"title": "Moving Adminium’s tables",
|
|
739
|
-
"copying": "Moving Adminium’s tables…",
|
|
740
|
-
"restarting": "Restarting…",
|
|
741
|
-
"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.",
|
|
742
|
-
"restartingBody": "The copy is done. Adminium is restarting onto the new database — this page will continue by itself in a few seconds.",
|
|
743
|
-
"failed": "Could not move Adminium’s tables — retry.",
|
|
744
|
-
"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."
|
|
890
|
+
"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).",
|
|
891
|
+
"title": "About this install"
|
|
745
892
|
},
|
|
746
893
|
"willMove": {
|
|
747
|
-
"
|
|
748
|
-
"
|
|
894
|
+
"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.",
|
|
895
|
+
"title": "This will move Adminium’s tables"
|
|
749
896
|
}
|
|
750
897
|
},
|
|
751
|
-
"
|
|
752
|
-
"
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
"
|
|
757
|
-
"
|
|
758
|
-
},
|
|
759
|
-
"
|
|
760
|
-
"
|
|
761
|
-
"
|
|
898
|
+
"pages": {
|
|
899
|
+
"action": {
|
|
900
|
+
"delete": "Delete page",
|
|
901
|
+
"duplicate": "Duplicate",
|
|
902
|
+
"edit": "Edit page",
|
|
903
|
+
"hide": "Hide from sidebar",
|
|
904
|
+
"show": "Show in sidebar"
|
|
905
|
+
},
|
|
906
|
+
"attachments": {
|
|
907
|
+
"accept": "Accepted file types",
|
|
908
|
+
"acceptHint": "Choosing none accepts everything this workspace allows. A choice here can only narrow that list, never widen it.",
|
|
909
|
+
"column": {
|
|
910
|
+
"adoptHint": "This table already has that column, so nothing is created — it is used as it is.",
|
|
911
|
+
"bound": "Files are stored in this table’s {column} column.",
|
|
912
|
+
"boundHint": "Turning attachments off later unbinds this page. The column and the files in it are left alone.",
|
|
913
|
+
"confirm": "Run it",
|
|
914
|
+
"create": "Create the column",
|
|
915
|
+
"createHint": "Adminium adds one text column to this table. You will see the exact statement before anything runs.",
|
|
916
|
+
"createdHint": "The column exists now. Save this page to finish wiring it up.",
|
|
917
|
+
"failed": "That did not work",
|
|
918
|
+
"invalid": "A column name must start with a letter and use only lowercase letters, digits and underscores.",
|
|
919
|
+
"label": "Column that holds the files",
|
|
920
|
+
"required": "Give the column a name.",
|
|
921
|
+
"tooLong": "That name is too long for a column.",
|
|
922
|
+
"use": "Use this column",
|
|
923
|
+
"wrongType": "This table already has a column with that name, and it cannot hold a file reference. Pick another name."
|
|
924
|
+
},
|
|
925
|
+
"destination": "Where the files go",
|
|
926
|
+
"destinationDefault": "The default destination",
|
|
927
|
+
"destinationHint": "Leave this on the default unless this table’s files belong somewhere else.",
|
|
928
|
+
"destinationIsDefault": "{name} (the default)",
|
|
929
|
+
"destinationLocal": "This server’s disk",
|
|
930
|
+
"enable": "Allow attachments on this table’s records",
|
|
931
|
+
"enableHint": "Files are linked on Adminium’s side, so this table needs no new column — it works on a read-only connection, and on a table you would rather not alter.",
|
|
932
|
+
"enableHintColumn": "Files are stored in one column on this table, so they appear in the New and Edit dialogs as well as on each record.",
|
|
933
|
+
"enableHintSidecar": "Files are linked on Adminium’s side instead. They appear on each record’s page, not in the New dialog.",
|
|
934
|
+
"maxBytes": "Largest file (MB)",
|
|
935
|
+
"maxBytesHint": "Leave empty to follow the workspace limit. A number here can only lower it.",
|
|
936
|
+
"maxCount": "Most files per record",
|
|
937
|
+
"maxCountHint": "Leave empty to accept as many as a record needs.",
|
|
938
|
+
"sidecar": {
|
|
939
|
+
"noPrivilege": "This connection's role cannot alter tables, so Adminium cannot add a column to it.",
|
|
940
|
+
"readOnlyIntent": "This connection is set up for read-only analytics, so Adminium cannot add a column to it.",
|
|
941
|
+
"readOnlyRole": "This connection signs in with a read-only role, so Adminium cannot add a column to it.",
|
|
942
|
+
"schemaFile": "This connection was created from a schema file, so Adminium cannot add a column to it."
|
|
943
|
+
},
|
|
944
|
+
"type": {
|
|
945
|
+
"office": "Office documents",
|
|
946
|
+
"text": "Plain text"
|
|
947
|
+
}
|
|
762
948
|
},
|
|
763
|
-
"
|
|
764
|
-
"
|
|
765
|
-
"
|
|
949
|
+
"columns": {
|
|
950
|
+
"addFromLinked": "From linked tables",
|
|
951
|
+
"addFromTable": "From {table}",
|
|
952
|
+
"addLinkedFrom": "Tables that link here",
|
|
953
|
+
"addLinkedFromHelp": "Count the rows that point at each record, or add up one of their numbers.",
|
|
954
|
+
"addLinkedHelp": "Show a value from the table a link column points to.",
|
|
955
|
+
"addNoMatches": "No columns match “{query}”.",
|
|
956
|
+
"addOpen": "Add column",
|
|
957
|
+
"addSearch": "Search columns…",
|
|
958
|
+
"addTitle": "Add a column",
|
|
959
|
+
"addVia": "via {column}",
|
|
960
|
+
"avatar": "Avatar",
|
|
961
|
+
"avatarToggle": "Show a monogram beside {name}",
|
|
962
|
+
"countBadge": "Count",
|
|
963
|
+
"dragHandle": "Reorder {name}",
|
|
964
|
+
"empty": "No columns yet — add them below.",
|
|
965
|
+
"file": {
|
|
966
|
+
"acceptHelp": "Leave every type off to accept whatever this workspace accepts. Choosing types can only narrow that list — a column can never accept a type the workspace refuses.",
|
|
967
|
+
"acceptLabel": "Accepted types",
|
|
968
|
+
"badge": "File",
|
|
969
|
+
"destinationDefault": "The default destination",
|
|
970
|
+
"destinationHelp": "Where the bytes uploaded through this column are kept.",
|
|
971
|
+
"destinationLabel": "Destination",
|
|
972
|
+
"inlineHelp": "Only images are drawn in the cell. Everything else stays a chip with its name and size, however this is set.",
|
|
973
|
+
"inlineLabel": "Show it in the table",
|
|
974
|
+
"maxCountHelp": "Leave empty to accept as many as a record needs.",
|
|
975
|
+
"maxCountLabel": "Most files per record",
|
|
976
|
+
"maxCountToggle": "Most files on one {name}",
|
|
977
|
+
"maxHelp": "Leave empty to use the workspace limit. A column can only ask for less.",
|
|
978
|
+
"maxLabel": "Largest file (MB)",
|
|
979
|
+
"maxToggle": "Largest file accepted by {name}, in MB",
|
|
980
|
+
"multipleHelp": "The column stores a list of files instead of one. Existing single values keep working — they read as a list of one.",
|
|
981
|
+
"multipleLabel": "Hold more than one file",
|
|
982
|
+
"ref": {
|
|
983
|
+
"id": "Adminium's file id",
|
|
984
|
+
"key": "The key in the destination",
|
|
985
|
+
"url": "A link to the file"
|
|
986
|
+
},
|
|
987
|
+
"refHelp": "What is written into this column when a file is uploaded. Values already stored keep working — this only changes the next one.",
|
|
988
|
+
"refLabel": "Stored value",
|
|
989
|
+
"refTooNarrow": "This column is too short to hold that value. Pick one it can hold, or widen the column in the database.",
|
|
990
|
+
"refWidth": "{shape} — needs {needs} characters, this column holds {holds}",
|
|
991
|
+
"switch": "File",
|
|
992
|
+
"switchToggle": "{name} stores a file",
|
|
993
|
+
"type": {
|
|
994
|
+
"csv": "CSV",
|
|
995
|
+
"gif": "GIF",
|
|
996
|
+
"heic": "HEIC",
|
|
997
|
+
"jpeg": "JPEG",
|
|
998
|
+
"json": "JSON",
|
|
999
|
+
"markdown": "Markdown",
|
|
1000
|
+
"mp3": "MP3 audio",
|
|
1001
|
+
"mp4": "MP4 video",
|
|
1002
|
+
"office": "Office documents",
|
|
1003
|
+
"ogg": "Ogg",
|
|
1004
|
+
"pdf": "PDF",
|
|
1005
|
+
"png": "PNG",
|
|
1006
|
+
"svg": "SVG",
|
|
1007
|
+
"text": "Plain text",
|
|
1008
|
+
"wav": "WAV audio",
|
|
1009
|
+
"webm": "WebM",
|
|
1010
|
+
"webp": "WebP",
|
|
1011
|
+
"zip": "ZIP"
|
|
1012
|
+
}
|
|
1013
|
+
},
|
|
1014
|
+
"fold": {
|
|
1015
|
+
"avg": "Average",
|
|
1016
|
+
"max": "Max",
|
|
1017
|
+
"min": "Min",
|
|
1018
|
+
"sum": "Sum"
|
|
1019
|
+
},
|
|
1020
|
+
"foldAdd": "Add",
|
|
1021
|
+
"foldLabel": "Aggregate",
|
|
1022
|
+
"followColumn": "Follow {name}",
|
|
1023
|
+
"header": "Header for {name}",
|
|
1024
|
+
"help": "Drag to reorder columns, rename their headers, and choose which are shown in the table.",
|
|
1025
|
+
"lookupBack": "Back",
|
|
1026
|
+
"lookupBadge": "Linked",
|
|
1027
|
+
"lookupBroken": "That link no longer resolves",
|
|
1028
|
+
"lookupBrokenBody": "The schema changed while you were browsing. Start the link again.",
|
|
1029
|
+
"lookupBrowse": "Pick what to show from {table}",
|
|
1030
|
+
"mask": "Mask",
|
|
1031
|
+
"maskHelp": "Mask hides a value behind a reveal control for readers allowed to see it. Whether the data leaves the database at all is set on the connection, not here.",
|
|
1032
|
+
"maskToggle": "Hide {name} behind a reveal control",
|
|
1033
|
+
"masked": "Masked",
|
|
1034
|
+
"none": {
|
|
1035
|
+
"body": "Columns are read from the table when the page is generated. Bind this page to a table and regenerate to fill them in.",
|
|
1036
|
+
"title": "This page has no columns yet"
|
|
1037
|
+
},
|
|
1038
|
+
"pk": "Key",
|
|
1039
|
+
"remove": "Remove {name}",
|
|
1040
|
+
"schemaUnavailable": "Database columns could not be listed, so columns cannot be added back here.",
|
|
1041
|
+
"shown": "Shown",
|
|
1042
|
+
"toggle": "Show {name} in the table"
|
|
766
1043
|
},
|
|
767
|
-
"
|
|
768
|
-
"
|
|
769
|
-
"
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
"generate": {
|
|
773
|
-
"title": "Generate your app",
|
|
774
|
-
"subtitle": "One page per included table plus dashboards per domain — intent:",
|
|
775
|
-
"run": "Generate dashboard",
|
|
776
|
-
"openApp": "Open your app",
|
|
777
|
-
"logLabel": "Generation log",
|
|
778
|
-
"log": {
|
|
779
|
-
"classifying": "Classifying schema…",
|
|
780
|
-
"composing": "Composing templates…",
|
|
781
|
-
"writing": "Writing pages…",
|
|
782
|
-
"done": "{pages} pages generated across {groups} nav groups"
|
|
1044
|
+
"create": {
|
|
1045
|
+
"failed": "The page could not be created",
|
|
1046
|
+
"submit": "Create page",
|
|
1047
|
+
"subtitle": "Pick what this page shows and how it looks.",
|
|
1048
|
+
"title": "New page"
|
|
783
1049
|
},
|
|
784
|
-
"
|
|
785
|
-
"
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
"remap": {
|
|
792
|
-
"column": {
|
|
793
|
-
"nullable": "nullable",
|
|
794
|
-
"labelOverride": "Display label",
|
|
795
|
-
"labelHelper": "Inferred: {name}",
|
|
796
|
-
"logicalType": "Logical type",
|
|
797
|
-
"logicalTypeHelper": "Inferred: {type} (from {dbType}) — mapped by the adapter; not overridable in v1.",
|
|
798
|
-
"semantic": "Semantic type",
|
|
799
|
-
"unclassified": "Not classified yet.",
|
|
800
|
-
"semanticHelper": "Classifier: {tag} · {confidence}% confidence · source: {source}",
|
|
801
|
-
"semanticInferred": "inferred: {tag}",
|
|
802
|
-
"currency": "Currency",
|
|
803
|
-
"currencyHelper": "ISO 4217 code applied to money formatting.",
|
|
804
|
-
"pii": "Mask by default",
|
|
805
|
-
"piiHelper": "Masked values render redacted; unmasking requires the data.unmask_pii permission and is audit-logged.",
|
|
806
|
-
"enum": "Enum semantics",
|
|
807
|
-
"enumKind": "Enum kind",
|
|
808
|
-
"enumWorkflow": "Workflow",
|
|
809
|
-
"enumCategory": "Category",
|
|
810
|
-
"enumLabelFor": "Label for {value}",
|
|
811
|
-
"enumToneFor": "Tone for {value}",
|
|
812
|
-
"enumToneAuto": "auto",
|
|
813
|
-
"enumHelper": "Workflow enums drive status pills and board columns; tones map values onto the semantic tint scale."
|
|
1050
|
+
"createButton": "New page",
|
|
1051
|
+
"delete": {
|
|
1052
|
+
"body": "This cannot be undone. Saved views and personal layouts on this page are deleted for everyone.",
|
|
1053
|
+
"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.",
|
|
1054
|
+
"confirm": "Delete page",
|
|
1055
|
+
"prompt": "Type {slug} to confirm",
|
|
1056
|
+
"title": "Delete this page?"
|
|
814
1057
|
},
|
|
815
|
-
"
|
|
816
|
-
"
|
|
817
|
-
"
|
|
818
|
-
"
|
|
819
|
-
"
|
|
820
|
-
"
|
|
821
|
-
"
|
|
822
|
-
"
|
|
1058
|
+
"derived": {
|
|
1059
|
+
"add": "Add column",
|
|
1060
|
+
"atLeast": "is at least",
|
|
1061
|
+
"cancel": "Cancel",
|
|
1062
|
+
"emptyBody": "Summarize a linked table in the Columns card first — the rules here are built from those numbers.",
|
|
1063
|
+
"emptyTitle": "No computed numbers yet",
|
|
1064
|
+
"fieldBadge": "Computed",
|
|
1065
|
+
"foldBadge": "Fold",
|
|
1066
|
+
"help": "Work out numbers from the summaries above and this record’s own columns. They are calculated when the page loads and cannot be sorted.",
|
|
1067
|
+
"label": "Column header",
|
|
1068
|
+
"minus": "minus",
|
|
1069
|
+
"numberHelp": "Numbers are plain decimals — 500 or 12.50, never 1,000 or 5e3.",
|
|
1070
|
+
"operandA": "Number",
|
|
1071
|
+
"operandB": "Number",
|
|
1072
|
+
"operator": "Operator",
|
|
1073
|
+
"otherwise": "otherwise",
|
|
1074
|
+
"percentOf": "per cent from this record",
|
|
1075
|
+
"plus": "plus",
|
|
1076
|
+
"preset": {
|
|
1077
|
+
"combine": "Add or subtract two numbers",
|
|
1078
|
+
"percent": "Percentage of a number",
|
|
1079
|
+
"rule": "Rule with a threshold"
|
|
1080
|
+
},
|
|
1081
|
+
"previewHelp": "Sample values, calculated by the same code the page uses.",
|
|
1082
|
+
"previewTitle": "Preview",
|
|
1083
|
+
"remove": "Remove {name}",
|
|
1084
|
+
"thenShow": "then show"
|
|
823
1085
|
},
|
|
824
|
-
"
|
|
825
|
-
"
|
|
826
|
-
"
|
|
827
|
-
"
|
|
828
|
-
"labelHelper": "Inferred: {name}",
|
|
829
|
-
"icon": "Icon",
|
|
830
|
-
"navGroup": "Nav group",
|
|
831
|
-
"navGroupHelper": "Nav placement is decided by the generator — a table.navGroup override is not in the v1 vocabulary.",
|
|
832
|
-
"include": "Include in generated app",
|
|
833
|
-
"includeHelper": "Excluded tables get no pages and disappear from nav.",
|
|
834
|
-
"shape": "Table shape (classified)",
|
|
835
|
-
"role": "Role",
|
|
836
|
-
"unclassified": "Not classified",
|
|
837
|
-
"kind": "Kind",
|
|
838
|
-
"hierarchy": "Hierarchy",
|
|
839
|
-
"selfFk": "Self-reference via {column}",
|
|
840
|
-
"polymorphic": "Polymorphic pairs",
|
|
841
|
-
"rows": "Row estimate",
|
|
842
|
-
"shapeHelper": "Classification is recomputed on every introspection; overrides layer on top and survive regeneration."
|
|
1086
|
+
"duplicate": {
|
|
1087
|
+
"failed": "The page could not be duplicated",
|
|
1088
|
+
"submit": "Duplicate",
|
|
1089
|
+
"title": "Duplicate page"
|
|
843
1090
|
},
|
|
844
|
-
"
|
|
845
|
-
"
|
|
846
|
-
"
|
|
847
|
-
"
|
|
848
|
-
"
|
|
849
|
-
"
|
|
850
|
-
"
|
|
851
|
-
"
|
|
852
|
-
"
|
|
853
|
-
"
|
|
854
|
-
"
|
|
855
|
-
"
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
"
|
|
860
|
-
"
|
|
861
|
-
"
|
|
862
|
-
"
|
|
863
|
-
"
|
|
864
|
-
"
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
"
|
|
868
|
-
"
|
|
869
|
-
"
|
|
870
|
-
"
|
|
871
|
-
"
|
|
1091
|
+
"editor": {
|
|
1092
|
+
"appearance": "Appearance",
|
|
1093
|
+
"attachments": "Attachments",
|
|
1094
|
+
"columns": "Columns",
|
|
1095
|
+
"contentInvalid": "This page’s configuration is not readable",
|
|
1096
|
+
"contentInvalidBody": "It was written by a newer version, or it is malformed. Regenerate the page or delete it.",
|
|
1097
|
+
"contentUnavailable": "Page contents could not be loaded",
|
|
1098
|
+
"contentUnavailableBody": "The details above can still be saved.",
|
|
1099
|
+
"data": "Data",
|
|
1100
|
+
"derived": "Derived numbers",
|
|
1101
|
+
"details": "Details",
|
|
1102
|
+
"generated": {
|
|
1103
|
+
"body": "Your changes survive regeneration. Deleting only lasts until the next run recreates it.",
|
|
1104
|
+
"title": "This page was generated from your schema"
|
|
1105
|
+
},
|
|
1106
|
+
"itemsPending": "Save the change above first — the contents are rebuilt from it.",
|
|
1107
|
+
"missing": "That page no longer exists",
|
|
1108
|
+
"missingBody": "It may have been deleted, or removed by a regeneration run.",
|
|
1109
|
+
"notBindable": "This template is not bound to one table",
|
|
1110
|
+
"notBindableBody": "Its contents are built widget by widget instead. Open the page and use Edit to add them.",
|
|
1111
|
+
"openPage": "Open page",
|
|
1112
|
+
"recompose": "This page will be rebuilt",
|
|
1113
|
+
"recomposeBody": "Saving rebuilds the contents. Column and widget edits here are lost.",
|
|
1114
|
+
"save": "Save changes",
|
|
1115
|
+
"saveFailed": "Changes could not be saved",
|
|
1116
|
+
"schemaFailed": "Tables could not be listed",
|
|
1117
|
+
"schemaFailedBody": "This connection may not have been analysed yet. Run introspection from Studio → Data connections.",
|
|
1118
|
+
"title": "Edit page"
|
|
872
1119
|
},
|
|
873
|
-
"title": "Schema remap",
|
|
874
|
-
"subtitle": "{tables} tables · {applied} overrides applied",
|
|
875
|
-
"saveFailed": "Save failed: {message}",
|
|
876
|
-
"loadFailed": "Could not load the schema for this connection.",
|
|
877
|
-
"inspector": "Inspector",
|
|
878
1120
|
"empty": {
|
|
879
|
-
"
|
|
880
|
-
"
|
|
1121
|
+
"body": "Connect a database to generate pages automatically, or create one by hand.",
|
|
1122
|
+
"title": "No pages yet"
|
|
881
1123
|
},
|
|
882
|
-
"
|
|
883
|
-
"
|
|
884
|
-
"
|
|
1124
|
+
"field": {
|
|
1125
|
+
"connection": "Data source",
|
|
1126
|
+
"connectionNone": "None",
|
|
1127
|
+
"group": "Sidebar group",
|
|
1128
|
+
"groupHint": "Which section of the sidebar it appears in.",
|
|
1129
|
+
"icon": "Icon",
|
|
1130
|
+
"iconHint": "Shown beside the page name in the sidebar.",
|
|
1131
|
+
"iconPick": "Choose the page icon",
|
|
1132
|
+
"newRowLabel": "Add button",
|
|
1133
|
+
"newRowLabelHint": "What the button that adds a record says. Leave empty to use the default, which is translated.",
|
|
1134
|
+
"padding": "Page padding",
|
|
1135
|
+
"slug": "Page address",
|
|
1136
|
+
"slugHint": "Lowercase letters, numbers and dashes. Just the last part — the rest of the address is added for you.",
|
|
1137
|
+
"slugTaken": "Another page already uses this address.",
|
|
1138
|
+
"slugWarning": "Changing the address breaks existing links and bookmarks to this page.",
|
|
1139
|
+
"table": "Table",
|
|
1140
|
+
"tableCreateHint": "The table this page reads. You can bind it later.",
|
|
1141
|
+
"tableNeedsConnection": "Pick a data source first.",
|
|
1142
|
+
"tableNone": "Not bound",
|
|
1143
|
+
"template": "Template",
|
|
1144
|
+
"templateHint": "Decides what the page can hold. You can change it later.",
|
|
1145
|
+
"title": "Title",
|
|
1146
|
+
"titleHint": "Shown in the sidebar and the page header.",
|
|
1147
|
+
"visible": "Show in sidebar",
|
|
1148
|
+
"visibleHint": "A hidden page stays reachable at its URL for anyone who has the link.",
|
|
1149
|
+
"width": "Content width",
|
|
1150
|
+
"widthHint": "How wide the page’s content column may grow on a large screen."
|
|
885
1151
|
},
|
|
886
|
-
"
|
|
887
|
-
"
|
|
888
|
-
"
|
|
889
|
-
"
|
|
890
|
-
"noMatches": "No tables match your search.",
|
|
891
|
-
"collapse": "Collapse table",
|
|
892
|
-
"expand": "Expand table",
|
|
893
|
-
"unsaved": "Unsaved change",
|
|
894
|
-
"excluded": "Excluded"
|
|
1152
|
+
"icon": {
|
|
1153
|
+
"noMatches": "No icons match that search.",
|
|
1154
|
+
"none": "Choose an icon",
|
|
1155
|
+
"search": "Search icons"
|
|
895
1156
|
},
|
|
896
|
-
"
|
|
897
|
-
"
|
|
898
|
-
"
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
"
|
|
1157
|
+
"list": {
|
|
1158
|
+
"count": "{count, plural, one {# page} other {# pages}}",
|
|
1159
|
+
"title": "Pages"
|
|
1160
|
+
},
|
|
1161
|
+
"loadFailed": {
|
|
1162
|
+
"body": "Managing pages needs the “Manage pages” permission. Ask an administrator to grant it to one of your roles.",
|
|
1163
|
+
"title": "Pages could not be loaded"
|
|
1164
|
+
},
|
|
1165
|
+
"origin": {
|
|
1166
|
+
"generated": "Generated",
|
|
1167
|
+
"llm": "Assistant",
|
|
1168
|
+
"manifest": "Add-on",
|
|
1169
|
+
"system": "System",
|
|
1170
|
+
"user": "Custom"
|
|
1171
|
+
},
|
|
1172
|
+
"padding": {
|
|
1173
|
+
"custom": "Custom…",
|
|
1174
|
+
"default": "Default for this template",
|
|
1175
|
+
"none": "None",
|
|
1176
|
+
"standard": "Standard (28 × 24)",
|
|
1177
|
+
"x": "Sides (px)",
|
|
1178
|
+
"y": "Top and bottom (px)"
|
|
1179
|
+
},
|
|
1180
|
+
"preview": {
|
|
1181
|
+
"note": "An illustration of the layout, not your data.",
|
|
1182
|
+
"untitled": "Untitled page"
|
|
1183
|
+
},
|
|
1184
|
+
"row": {
|
|
1185
|
+
"menu": "Actions for {title}"
|
|
1186
|
+
},
|
|
1187
|
+
"sidebar": {
|
|
1188
|
+
"discard": "Discard",
|
|
1189
|
+
"emptyGroup": "No pages in this group.",
|
|
1190
|
+
"help": "Reorder pages within a group, or move one to another group. Changes apply to every user.",
|
|
1191
|
+
"moveDown": "Move {title} down",
|
|
1192
|
+
"moveTo": "Move {title} to a group",
|
|
1193
|
+
"moveUp": "Move {title} up",
|
|
1194
|
+
"save": "Save order",
|
|
1195
|
+
"saveFailed": "The new order could not be saved",
|
|
1196
|
+
"ungrouped": {
|
|
1197
|
+
"body": "These pages work at their URL but appear nowhere in the sidebar. Open each one and pick a group.",
|
|
1198
|
+
"title": "Some pages are in no sidebar group"
|
|
1199
|
+
}
|
|
1200
|
+
},
|
|
1201
|
+
"status": {
|
|
1202
|
+
"hidden": "Hidden",
|
|
1203
|
+
"live": "Live"
|
|
1204
|
+
},
|
|
1205
|
+
"subtitle": "Add, edit and organise the pages of your app, and the order they appear in the sidebar.",
|
|
1206
|
+
"tab": {
|
|
1207
|
+
"pages": "All pages",
|
|
1208
|
+
"sidebar": "Sidebar order"
|
|
902
1209
|
},
|
|
903
|
-
"
|
|
904
|
-
"
|
|
1210
|
+
"title": "Pages",
|
|
1211
|
+
"width": {
|
|
1212
|
+
"content": "Content (900px)",
|
|
1213
|
+
"dash": "Dashboard (1320px)",
|
|
1214
|
+
"default": "Default for this template",
|
|
1215
|
+
"full": "Full width (no limit)",
|
|
1216
|
+
"narrow": "Narrow (720px)",
|
|
1217
|
+
"page": "Page (1080px)",
|
|
1218
|
+
"wide": "Wide (1800px)"
|
|
1219
|
+
}
|
|
905
1220
|
},
|
|
906
1221
|
"publicApi": {
|
|
1222
|
+
"cancel": "Cancel",
|
|
1223
|
+
"close": "Close",
|
|
907
1224
|
"error": "Something went wrong",
|
|
908
|
-
"
|
|
909
|
-
"
|
|
910
|
-
"
|
|
911
|
-
"
|
|
912
|
-
"
|
|
913
|
-
"
|
|
914
|
-
"
|
|
915
|
-
"
|
|
916
|
-
"emptyTitle": "No scopes yet",
|
|
917
|
-
"emptyBody": "Create one below. It is checked against your live schema before it is saved.",
|
|
918
|
-
"keyCount": "{count, plural, =0 {no keys} one {# key} other {# keys}}",
|
|
919
|
-
"delete": "Delete",
|
|
1225
|
+
"keys": {
|
|
1226
|
+
"appHint": "The app’s customer surface then serves this key itself — rotating it needs no rebuild.",
|
|
1227
|
+
"appLabel": "Bind to a hosted app surface (optional)",
|
|
1228
|
+
"appNone": "Not bound",
|
|
1229
|
+
"create": "Create key",
|
|
1230
|
+
"emptyBody": "Create a scope first, then mint a key for it.",
|
|
1231
|
+
"emptyTitle": "No keys yet",
|
|
1232
|
+
"formLabel": "Create a key",
|
|
920
1233
|
"nameLabel": "Name",
|
|
921
|
-
"
|
|
922
|
-
"
|
|
923
|
-
"
|
|
924
|
-
"
|
|
925
|
-
"
|
|
1234
|
+
"reveal": "Show key",
|
|
1235
|
+
"revoke": "Revoke",
|
|
1236
|
+
"rotate": "Rotate",
|
|
1237
|
+
"scopeIsAuthBody": "A key can reach exactly what its scope lists and nothing else. It does not use roles or table permissions, and it cannot read anything through the rest of the API.",
|
|
1238
|
+
"scopeIsAuthTitle": "The scope is the only permission",
|
|
1239
|
+
"scopeLabel": "Scope",
|
|
1240
|
+
"scopePlaceholder": "Choose a scope",
|
|
1241
|
+
"subtitle": "These go in your page’s JavaScript, so anyone can read them. That is expected — a key can only ever do what its scope allows.",
|
|
1242
|
+
"title": "Keys"
|
|
926
1243
|
},
|
|
927
|
-
"cancel": "Cancel",
|
|
928
|
-
"close": "Close",
|
|
929
|
-
"title": "Public API",
|
|
930
|
-
"subtitle": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
|
|
931
1244
|
"notRegistered": {
|
|
932
|
-
"
|
|
933
|
-
"
|
|
934
|
-
},
|
|
935
|
-
"toggle": {
|
|
936
|
-
"label": "Serve the public API",
|
|
937
|
-
"hint": "Turning this off stops every public request immediately. Nothing is deleted — keys, scopes and data all survive."
|
|
1245
|
+
"body": "Set ADMINIUM_PUBLIC_API_ORIGINS to the exact origins allowed to call it, then restart. Until then these routes are not served at all.",
|
|
1246
|
+
"title": "Not enabled on this server"
|
|
938
1247
|
},
|
|
939
1248
|
"origins": {
|
|
940
1249
|
"label": "Origins allowed to call it"
|
|
941
1250
|
},
|
|
942
|
-
"
|
|
943
|
-
"
|
|
944
|
-
"
|
|
945
|
-
"
|
|
946
|
-
"
|
|
947
|
-
"
|
|
948
|
-
"
|
|
949
|
-
"
|
|
1251
|
+
"scopes": {
|
|
1252
|
+
"connectionLabel": "Connection ID",
|
|
1253
|
+
"create": "Create scope",
|
|
1254
|
+
"delete": "Delete",
|
|
1255
|
+
"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.",
|
|
1256
|
+
"deleteConfirm": "Delete scope",
|
|
1257
|
+
"deletePrompt": "Type the scope name to confirm",
|
|
1258
|
+
"deleteTitle": "Delete this scope",
|
|
1259
|
+
"documentHint": "Compiled against your schema when you save. Every column a caller can reach is listed here and nowhere else. A default may be '{'\"$generate\": \"uuid\"'}' or '{'\"$generate\": \"now\"'}' — the server fills those in on create, so a visitor can add a row without choosing its id.",
|
|
1260
|
+
"documentLabel": "Scope document",
|
|
1261
|
+
"emptyBody": "Create one below. It is checked against your live schema before it is saved.",
|
|
1262
|
+
"emptyTitle": "No scopes yet",
|
|
1263
|
+
"formLabel": "Create a scope",
|
|
1264
|
+
"issuesTitle": "This scope did not compile",
|
|
1265
|
+
"keyCount": "{count, plural, =0 {no keys} one {# key} other {# keys}}",
|
|
950
1266
|
"nameLabel": "Name",
|
|
951
|
-
"
|
|
952
|
-
"
|
|
953
|
-
"create": "Create key",
|
|
954
|
-
"formLabel": "Create a key",
|
|
955
|
-
"scopeIsAuthTitle": "The scope is the only permission",
|
|
956
|
-
"scopeIsAuthBody": "A key can reach exactly what its scope lists and nothing else. It does not use roles or table permissions, and it cannot read anything through the rest of the API.",
|
|
957
|
-
"appLabel": "Bind to a hosted app surface (optional)",
|
|
958
|
-
"appHint": "The app’s customer surface then serves this key itself — rotating it needs no rebuild.",
|
|
959
|
-
"appNone": "Not bound"
|
|
1267
|
+
"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.",
|
|
1268
|
+
"title": "Scopes"
|
|
960
1269
|
},
|
|
961
1270
|
"status": {
|
|
962
1271
|
"heading": "Status"
|
|
963
|
-
}
|
|
964
|
-
},
|
|
965
|
-
"hostedApps": {
|
|
966
|
-
"title": "Hosted apps",
|
|
967
|
-
"subtitle": "The app surfaces this instance serves — where each one appears, and the domains pointed at them.",
|
|
968
|
-
"error": "Something went wrong",
|
|
969
|
-
"emptyTitle": "No app surfaces are being served",
|
|
970
|
-
"emptyBody": "Point ADMINIUM_SURFACES_DIR at a directory of built surfaces — one folder per app and side, each with its index.html — and restart. They are then served under /apps/ and appear here.",
|
|
971
|
-
"surfaces": {
|
|
972
|
-
"title": "Surfaces",
|
|
973
|
-
"subtitle": "A staff surface can blend into this dashboard’s sidebar or stand on its own; a customer surface is public and reads through its bound key.",
|
|
974
|
-
"staff": "Staff",
|
|
975
|
-
"customer": "Customer",
|
|
976
|
-
"noNav": "Internal placement unavailable — rebuild this surface with the current toolkit so it emits surface.json.",
|
|
977
|
-
"noKey": "No key bound — this surface cannot read data until one is minted for it.",
|
|
978
|
-
"mintLink": "Mint one under Public API",
|
|
979
|
-
"boundKey": "Serves key",
|
|
980
|
-
"placementLabel": "Placement",
|
|
981
|
-
"placementInternal": "In the sidebar (blended)",
|
|
982
|
-
"placementExternal": "External (own URL only)",
|
|
983
|
-
"connectionLabel": "Reads",
|
|
984
|
-
"connectionUnset": "Whichever is serving"
|
|
985
|
-
},
|
|
986
|
-
"domains": {
|
|
987
|
-
"title": "Domains",
|
|
988
|
-
"subtitle": "Point a domain’s DNS at your proxy, pass the Host header through to Adminium, and attach it here — that host then serves the surface instead of this dashboard. Certificates stay on your proxy.",
|
|
989
|
-
"issuesTitle": "The domain map was refused",
|
|
990
|
-
"savedTitle": "Saved",
|
|
991
|
-
"savedBody": "Mappings take effect within a few seconds. A host only answers once its DNS and your proxy actually reach this instance.",
|
|
992
|
-
"none": "No domains are attached.",
|
|
993
|
-
"hostLabel": "Host",
|
|
994
|
-
"surfaceLabel": "Surface",
|
|
995
|
-
"remove": "Remove",
|
|
996
|
-
"add": "Attach a domain",
|
|
997
|
-
"save": "Save domains",
|
|
998
|
-
"instanceLabel": "Instance",
|
|
999
|
-
"instanceOwn": "The app's own"
|
|
1000
1272
|
},
|
|
1001
|
-
"
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
"
|
|
1005
|
-
"
|
|
1006
|
-
"readsLabel": "Reads",
|
|
1007
|
-
"add": "Add an instance",
|
|
1008
|
-
"save": "Save instances",
|
|
1009
|
-
"remove": "Remove",
|
|
1010
|
-
"empty": "No extra instances.",
|
|
1011
|
-
"failed": "Instances were not saved"
|
|
1273
|
+
"subtitle": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
|
|
1274
|
+
"title": "Public API",
|
|
1275
|
+
"toggle": {
|
|
1276
|
+
"hint": "Turning this off stops every public request immediately. Nothing is deleted — keys, scopes and data all survive.",
|
|
1277
|
+
"label": "Serve the public API"
|
|
1012
1278
|
}
|
|
1013
1279
|
},
|
|
1014
|
-
"
|
|
1015
|
-
"
|
|
1016
|
-
"
|
|
1017
|
-
"
|
|
1018
|
-
"
|
|
1019
|
-
"
|
|
1020
|
-
"
|
|
1021
|
-
"noData": "This add-on reads and writes no tables of its own.",
|
|
1022
|
-
"reuse": "This add-on will use tables you already have:"
|
|
1280
|
+
"remap": {
|
|
1281
|
+
"badge": {
|
|
1282
|
+
"fk": "FK",
|
|
1283
|
+
"masked": "Masked",
|
|
1284
|
+
"pii": "PII",
|
|
1285
|
+
"pk": "PK",
|
|
1286
|
+
"unique": "UNIQUE"
|
|
1023
1287
|
},
|
|
1024
|
-
"
|
|
1025
|
-
"
|
|
1026
|
-
"
|
|
1027
|
-
"
|
|
1028
|
-
"
|
|
1029
|
-
"
|
|
1030
|
-
"
|
|
1031
|
-
"
|
|
1288
|
+
"column": {
|
|
1289
|
+
"currency": "Currency",
|
|
1290
|
+
"currencyHelper": "ISO 4217 code applied to money formatting.",
|
|
1291
|
+
"enum": "Enum semantics",
|
|
1292
|
+
"enumCategory": "Category",
|
|
1293
|
+
"enumHelper": "Workflow enums drive status pills and board columns; tones map values onto the semantic tint scale.",
|
|
1294
|
+
"enumKind": "Enum kind",
|
|
1295
|
+
"enumLabelFor": "Label for {value}",
|
|
1296
|
+
"enumToneAuto": "auto",
|
|
1297
|
+
"enumToneFor": "Tone for {value}",
|
|
1298
|
+
"enumWorkflow": "Workflow",
|
|
1299
|
+
"labelHelper": "Inferred: {name}",
|
|
1300
|
+
"labelOverride": "Display label",
|
|
1301
|
+
"logicalType": "Logical type",
|
|
1302
|
+
"logicalTypeHelper": "Inferred: {type} (from {dbType}) — mapped by the adapter; not overridable in v1.",
|
|
1303
|
+
"nullable": "nullable",
|
|
1304
|
+
"pii": "Mask by default",
|
|
1305
|
+
"piiHelper": "Masked values render redacted; unmasking requires the data.unmask_pii permission and is audit-logged.",
|
|
1306
|
+
"semantic": "Semantic type",
|
|
1307
|
+
"semanticHelper": "Classifier: {tag} · {confidence}% confidence · source: {source}",
|
|
1308
|
+
"semanticInferred": "inferred: {tag}",
|
|
1309
|
+
"unclassified": "Not classified yet."
|
|
1032
1310
|
},
|
|
1033
|
-
"
|
|
1034
|
-
"
|
|
1035
|
-
"
|
|
1311
|
+
"diff": {
|
|
1312
|
+
"count": "{count} changes",
|
|
1313
|
+
"one": "1 change",
|
|
1314
|
+
"regenerate": "Regenerate pages",
|
|
1315
|
+
"revertAll": "Revert all",
|
|
1316
|
+
"revertOne": "Revert {change}",
|
|
1317
|
+
"save": "Save overrides",
|
|
1318
|
+
"saved": "Overrides saved."
|
|
1036
1319
|
},
|
|
1037
|
-
"
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
"browse": {
|
|
1041
|
-
"title": "Available",
|
|
1042
|
-
"online": "Includes add-ons from the online catalogue. Checking for newer versions is a separate action.",
|
|
1043
|
-
"offline": "Showing the add-ons that came with this build. Browsing online is switched off, and nothing here has contacted the internet.",
|
|
1044
|
-
"refresh": "Check for newer",
|
|
1045
|
-
"emptyTitle": "No add-ons available",
|
|
1046
|
-
"emptyBody": "This build shipped none, and the online catalogue is off.",
|
|
1047
|
-
"bundled": "Included",
|
|
1048
|
-
"upgrade": "v{version} available",
|
|
1049
|
-
"download": "Download",
|
|
1050
|
-
"install": "Install",
|
|
1051
|
-
"discard": "Discard",
|
|
1052
|
-
"upgradeAction": "Upgrade",
|
|
1053
|
-
"toggle": "Browse the online catalogue"
|
|
1320
|
+
"empty": {
|
|
1321
|
+
"description": "Select something in the schema tree to remap its label, type, relations or masking.",
|
|
1322
|
+
"title": "Pick a table or column"
|
|
1054
1323
|
},
|
|
1055
|
-
"
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
"
|
|
1059
|
-
"
|
|
1060
|
-
"
|
|
1061
|
-
"egress": "May contact: {hosts}",
|
|
1062
|
-
"on": "on",
|
|
1063
|
-
"off": "off",
|
|
1064
|
-
"disconnect": "Disconnect",
|
|
1065
|
-
"uninstall": "Uninstall"
|
|
1324
|
+
"inspector": "Inspector",
|
|
1325
|
+
"loadFailed": "Could not load the schema for this connection.",
|
|
1326
|
+
"mode": {
|
|
1327
|
+
"design": "Design",
|
|
1328
|
+
"diagram": "Diagram",
|
|
1329
|
+
"remap": "Labels & relations"
|
|
1066
1330
|
},
|
|
1067
|
-
"
|
|
1068
|
-
|
|
1069
|
-
"
|
|
1070
|
-
"
|
|
1071
|
-
"
|
|
1072
|
-
"
|
|
1073
|
-
"uninstallBody": "Its keys are deleted and its files are removed from this server. Every table and every row it created stays exactly as it is. You can install it again later.",
|
|
1074
|
-
"discardBody": "The downloaded files are deleted. Nothing was installed, so nothing else changes — you can download it again whenever you like.",
|
|
1075
|
-
"cancel": "Cancel",
|
|
1076
|
-
"disconnect": "Disconnect",
|
|
1077
|
-
"uninstall": "Uninstall",
|
|
1078
|
-
"discard": "Discard"
|
|
1331
|
+
"modeLabel": "Editor mode",
|
|
1332
|
+
"noDesign": {
|
|
1333
|
+
"noPrivilege": "This connection's role cannot create or alter tables. Grant it schema privileges, or connect a role that has them.",
|
|
1334
|
+
"readOnlyIntent": "This connection was set up for read-only analytics. Change its intent in Settings to edit its schema.",
|
|
1335
|
+
"readOnlyRole": "This connection signs in with a read-only role, so Adminium cannot change its schema.",
|
|
1336
|
+
"schemaFile": "This connection was created from a schema file, so there is no database to change. Labels and relations still work."
|
|
1079
1337
|
},
|
|
1080
|
-
"
|
|
1081
|
-
|
|
1082
|
-
"
|
|
1083
|
-
"
|
|
1084
|
-
"
|
|
1338
|
+
"relations": {
|
|
1339
|
+
"accept": "Accept",
|
|
1340
|
+
"accepted": "Accepted",
|
|
1341
|
+
"add": "Add virtual relation",
|
|
1342
|
+
"addButton": "Add relation",
|
|
1343
|
+
"cardinality": "Cardinality",
|
|
1344
|
+
"confidence": "inferred · {pct}%",
|
|
1345
|
+
"declared": "Declared foreign keys",
|
|
1346
|
+
"fromColumn": "From column",
|
|
1347
|
+
"fromPlaceholder": "customer_id",
|
|
1348
|
+
"inferred": "Inferred relations",
|
|
1349
|
+
"noColumns": "No matching column",
|
|
1350
|
+
"noTables": "No matching table",
|
|
1351
|
+
"noneDeclared": "No declared foreign keys touch this table.",
|
|
1352
|
+
"noneInferred": "Nothing inferred for this table.",
|
|
1353
|
+
"overrideBadge": "override",
|
|
1354
|
+
"overrides": "Override relations (applied)",
|
|
1355
|
+
"suppress": "Suppress",
|
|
1356
|
+
"suppressed": "Suppressed",
|
|
1357
|
+
"toColumn": "To column",
|
|
1358
|
+
"toTable": "To table"
|
|
1085
1359
|
},
|
|
1086
|
-
"
|
|
1087
|
-
|
|
1088
|
-
|
|
1360
|
+
"saveFailed": "Save failed: {message}",
|
|
1361
|
+
"subtitle": "{tables} tables · {applied} overrides applied",
|
|
1362
|
+
"table": {
|
|
1363
|
+
"hierarchy": "Hierarchy",
|
|
1364
|
+
"icon": "Icon",
|
|
1365
|
+
"iconPicker": "Table icon",
|
|
1366
|
+
"include": "Include in generated app",
|
|
1367
|
+
"includeHelper": "Excluded tables get no pages and disappear from nav.",
|
|
1368
|
+
"kind": "Kind",
|
|
1369
|
+
"labelHelper": "Inferred: {name}",
|
|
1370
|
+
"labelOverride": "Display label",
|
|
1371
|
+
"navGroup": "Nav group",
|
|
1372
|
+
"navGroupHelper": "Nav placement is decided by the generator — a table.navGroup override is not in the v1 vocabulary.",
|
|
1373
|
+
"polymorphic": "Polymorphic pairs",
|
|
1374
|
+
"role": "Role",
|
|
1375
|
+
"rows": "Row estimate",
|
|
1376
|
+
"selfFk": "Self-reference via {column}",
|
|
1377
|
+
"shape": "Table shape (classified)",
|
|
1378
|
+
"shapeHelper": "Classification is recomputed on every introspection; overrides layer on top and survive regeneration.",
|
|
1379
|
+
"system": "System",
|
|
1380
|
+
"unclassified": "Not classified"
|
|
1089
1381
|
},
|
|
1090
|
-
"
|
|
1091
|
-
"
|
|
1092
|
-
"
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
"
|
|
1097
|
-
"
|
|
1098
|
-
"
|
|
1099
|
-
|
|
1382
|
+
"tabs": {
|
|
1383
|
+
"details": "Details",
|
|
1384
|
+
"relations": "Relations"
|
|
1385
|
+
},
|
|
1386
|
+
"title": "Schema",
|
|
1387
|
+
"toast": {
|
|
1388
|
+
"regenerateFailed": "Regeneration failed",
|
|
1389
|
+
"regenerated": "{created} created · {updated} updated · {unchanged} unchanged",
|
|
1390
|
+
"regeneratedDetail": "Pages you edited by hand are preserved — only pages with an untouched generated_hash were regenerated in place.",
|
|
1391
|
+
"saved": "Schema overrides saved",
|
|
1392
|
+
"savedDetail": "The applied schema below reflects your changes."
|
|
1393
|
+
},
|
|
1394
|
+
"tree": {
|
|
1395
|
+
"collapse": "Collapse table",
|
|
1396
|
+
"excluded": "Excluded",
|
|
1397
|
+
"expand": "Expand table",
|
|
1398
|
+
"label": "Schema",
|
|
1399
|
+
"noMatches": "No tables match your search.",
|
|
1400
|
+
"search": "Search tables and columns",
|
|
1401
|
+
"searchPlaceholder": "Search tables…",
|
|
1402
|
+
"unsaved": "Unsaved change"
|
|
1403
|
+
},
|
|
1404
|
+
"unavailableBody": "This build does not include the remap editor yet (09-T12). Re-run generation after it lands to remap labels, types and relations.",
|
|
1405
|
+
"unavailableTitle": "Schema remap editor not available"
|
|
1100
1406
|
},
|
|
1101
|
-
"
|
|
1102
|
-
"
|
|
1103
|
-
"
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1407
|
+
"review": {
|
|
1408
|
+
"unavailableBody": "This build does not include the enrichment review screen yet (06-T14). It lands with the diff-and-apply flow.",
|
|
1409
|
+
"unavailableTitle": "Review screen not available"
|
|
1410
|
+
},
|
|
1411
|
+
"settings": {
|
|
1412
|
+
"globalDefaultsNav": "Global defaults",
|
|
1413
|
+
"title": "Settings",
|
|
1414
|
+
"workspaceSection": "Workspace"
|
|
1415
|
+
},
|
|
1416
|
+
"settingsAi": {
|
|
1417
|
+
"byo": {
|
|
1418
|
+
"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.",
|
|
1419
|
+
"guarantee1": "The prompt carries only your schema and aggregate stats — never row data by default.",
|
|
1420
|
+
"guarantee2": "No credentials, instance URL, or identifiers are embedded.",
|
|
1421
|
+
"guarantee3": "BYO runs make zero network calls.",
|
|
1422
|
+
"guaranteeTitle": "Telemetry-free guarantee",
|
|
1423
|
+
"heading": "No key? Use your own AI tool",
|
|
1424
|
+
"headingRecommended": "Use your own AI tool — no key needed",
|
|
1425
|
+
"promptVersion": "Prompt {version}",
|
|
1426
|
+
"recommended": "Recommended",
|
|
1427
|
+
"schemaVersion": "Schema {version}",
|
|
1428
|
+
"subtitle": "The copy-paste round-trip — nothing leaves this machine."
|
|
1429
|
+
},
|
|
1430
|
+
"configure": {
|
|
1431
|
+
"heading": "Configure {provider}"
|
|
1432
|
+
},
|
|
1433
|
+
"field": {
|
|
1434
|
+
"baseUrl": "Base URL",
|
|
1435
|
+
"baseUrlHelper": "The endpoint root that serves /chat/completions.",
|
|
1436
|
+
"baseUrlOptional": "Leave as-is unless Ollama runs on another host.",
|
|
1437
|
+
"key": "API key",
|
|
1438
|
+
"keyMask": "sk-…{last4}",
|
|
1439
|
+
"keyOptional": "Optional — some endpoints need no key.",
|
|
1440
|
+
"keyReplace": "Replace key",
|
|
1441
|
+
"keyStored": "Stored encrypted. Replace it to use a different key.",
|
|
1442
|
+
"keyWriteOnly": "Write-only: once saved it is never shown again.",
|
|
1443
|
+
"model": "Model",
|
|
1444
|
+
"modelFreeText": "Enter the exact model id your endpoint serves.",
|
|
1445
|
+
"modelLive": "Loaded live from the provider.",
|
|
1446
|
+
"modelLoading": "Loading…",
|
|
1447
|
+
"modelPlaceholder": "Select a model…",
|
|
1448
|
+
"modelStatic": "A known-good list; type a custom id after saving to refresh it.",
|
|
1449
|
+
"noKeyBody": "Ollama runs locally, so nothing leaves this machine.",
|
|
1450
|
+
"noKeyTitle": "No API key needed"
|
|
1451
|
+
},
|
|
1452
|
+
"history": {
|
|
1453
|
+
"byo": "BYO",
|
|
1454
|
+
"colChunks": "Chunks",
|
|
1455
|
+
"colDate": "Date",
|
|
1456
|
+
"colSource": "Source",
|
|
1457
|
+
"colStatus": "Status",
|
|
1458
|
+
"connection": "Connection",
|
|
1459
|
+
"directPath": "Direct",
|
|
1460
|
+
"empty": "No enrichment runs yet. Enrich a schema from the connect wizard to see history here.",
|
|
1461
|
+
"errorBody": "Refresh the page to try again.",
|
|
1462
|
+
"errorTitle": "Could not load runs",
|
|
1463
|
+
"heading": "Run history",
|
|
1464
|
+
"noConnections": "Connect a database first — enrichment runs are recorded per connection.",
|
|
1465
|
+
"openReview": "Open review for the run from {date}",
|
|
1466
|
+
"subtitle": "Past enrichment runs. Open one to review its suggestions.",
|
|
1467
|
+
"tableLabel": "Enrichment runs"
|
|
1468
|
+
},
|
|
1469
|
+
"provider": {
|
|
1470
|
+
"active": "Active",
|
|
1471
|
+
"anthropic": {
|
|
1472
|
+
"desc": "Claude models via the Anthropic API.",
|
|
1473
|
+
"label": "Anthropic"
|
|
1474
|
+
},
|
|
1475
|
+
"heading": "AI provider",
|
|
1476
|
+
"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.",
|
|
1477
|
+
"networkDisabledTitle": "Direct AI providers are turned off on this install",
|
|
1478
|
+
"ollama": {
|
|
1479
|
+
"desc": "Models running locally through Ollama — no key, no cloud.",
|
|
1480
|
+
"label": "Ollama (local)"
|
|
1481
|
+
},
|
|
1482
|
+
"openai": {
|
|
1483
|
+
"desc": "GPT models via the OpenAI API.",
|
|
1484
|
+
"label": "OpenAI"
|
|
1485
|
+
},
|
|
1486
|
+
"openaiCompatible": {
|
|
1487
|
+
"desc": "Any endpoint that speaks the OpenAI wire format — Groq, Together, vLLM, LM Studio.",
|
|
1488
|
+
"label": "OpenAI-compatible"
|
|
1489
|
+
},
|
|
1490
|
+
"requiresNetwork": "Requires internet & an API key",
|
|
1491
|
+
"subtitle": "Choose how Adminium reaches a model to enrich your schema. Keys are stored encrypted and never shown again."
|
|
1492
|
+
},
|
|
1493
|
+
"runStatus": {
|
|
1494
|
+
"applied": "Applied",
|
|
1495
|
+
"awaitingResponse": "Awaiting response",
|
|
1496
|
+
"discarded": "Discarded",
|
|
1497
|
+
"draft": "Draft",
|
|
1498
|
+
"failed": "Failed",
|
|
1499
|
+
"partiallyApplied": "Partially applied",
|
|
1500
|
+
"running": "Running",
|
|
1501
|
+
"validated": "Validated"
|
|
1502
|
+
},
|
|
1503
|
+
"save": "Save provider",
|
|
1504
|
+
"saveFailed": "Could not save the AI provider. Try again.",
|
|
1505
|
+
"saved": "AI provider saved",
|
|
1506
|
+
"subtitle": "Connect a model to let Adminium suggest labels, groups, relations and more — always reviewed as a diff before anything applies.",
|
|
1507
|
+
"test": "Test connection",
|
|
1508
|
+
"testError": "Test failed",
|
|
1509
|
+
"testErrorBody": "Could not reach the provider. Check the key and base URL.",
|
|
1510
|
+
"testHintDirty": "Save your changes before testing.",
|
|
1511
|
+
"testOk": "Connected to {model} in {latency} ms",
|
|
1512
|
+
"testUnknownModel": "the provider",
|
|
1513
|
+
"testing": "Pinging the provider…",
|
|
1514
|
+
"title": "AI enrichment"
|
|
1515
|
+
},
|
|
1516
|
+
"settingsHub": {
|
|
1517
|
+
"addOnsCard": {
|
|
1518
|
+
"body": "Browse, install and connect add-ons — extra blocks, data packs and integrations — or upload one yourself.",
|
|
1519
|
+
"cta": "Open add-ons",
|
|
1520
|
+
"heading": "Add-ons"
|
|
1521
|
+
},
|
|
1522
|
+
"aiCard": {
|
|
1523
|
+
"body": "Configure an AI provider (or the copy-paste round-trip) to enrich labels, groups and relations.",
|
|
1524
|
+
"cta": "Open AI settings",
|
|
1525
|
+
"heading": "AI enrichment"
|
|
1526
|
+
},
|
|
1527
|
+
"danger": {
|
|
1528
|
+
"deleteCta": "Delete connection",
|
|
1529
|
+
"deleteDesc": "Deletes the connection and its generated pages. Your database is not touched. Cannot be undone.",
|
|
1530
|
+
"empty": "Nothing to delete — no connections yet.",
|
|
1531
|
+
"heading": "Danger zone",
|
|
1532
|
+
"subtitle": "Irreversible actions."
|
|
1533
|
+
},
|
|
1534
|
+
"defaultsCard": {
|
|
1535
|
+
"body": "Workspace-wide theme, accent, density and language live under Global defaults.",
|
|
1536
|
+
"cta": "Open global defaults",
|
|
1537
|
+
"heading": "Appearance & language defaults"
|
|
1538
|
+
},
|
|
1539
|
+
"email": {
|
|
1540
|
+
"attachmentCap": {
|
|
1541
|
+
"error": "Between {min, number} and {max, number} MB.",
|
|
1542
|
+
"helper": "The most one message may carry in attachments.",
|
|
1543
|
+
"label": "Attachment limit (MB)"
|
|
1544
|
+
},
|
|
1545
|
+
"from": {
|
|
1546
|
+
"error": "Enter an email address.",
|
|
1547
|
+
"helper": "A bare address, or a display name in front of one.",
|
|
1548
|
+
"label": "From address"
|
|
1549
|
+
},
|
|
1550
|
+
"heading": "Email (SMTP)",
|
|
1551
|
+
"host": {
|
|
1552
|
+
"error": "A bare hostname or IP address — no scheme, port or credentials.",
|
|
1553
|
+
"label": "SMTP host"
|
|
1554
|
+
},
|
|
1555
|
+
"pass": {
|
|
1556
|
+
"error": "This username needs a password.",
|
|
1557
|
+
"helper": "Stored encrypted and never shown again. Leave blank to keep the current one.",
|
|
1558
|
+
"label": "Password"
|
|
1559
|
+
},
|
|
1560
|
+
"port": {
|
|
1561
|
+
"error": "Between {min, number} and {max, number}.",
|
|
1562
|
+
"label": "Port"
|
|
1563
|
+
},
|
|
1564
|
+
"remove": "Remove mail server",
|
|
1565
|
+
"review": {
|
|
1566
|
+
"password": "Replaced",
|
|
1567
|
+
"removed": "Removed"
|
|
1568
|
+
},
|
|
1569
|
+
"secure": {
|
|
1570
|
+
"helper": "On for port 465. Off starts in cleartext and upgrades with STARTTLS, which is what port 587 expects.",
|
|
1571
|
+
"label": "Implicit TLS"
|
|
1572
|
+
},
|
|
1573
|
+
"senders": {
|
|
1574
|
+
"add": "Add sender",
|
|
1575
|
+
"address": "Address",
|
|
1576
|
+
"error": "Enter an email address.",
|
|
1577
|
+
"heading": "Senders",
|
|
1578
|
+
"helper": "Addresses an email may be sent from. The SMTP From address is always available.",
|
|
1579
|
+
"implicit": "SMTP From address",
|
|
1580
|
+
"name": "Display name",
|
|
1581
|
+
"remove": "Remove sender",
|
|
1582
|
+
"review": "Senders"
|
|
1583
|
+
},
|
|
1584
|
+
"unconfigured": "No mail server is set, so Adminium cannot send password resets, user invites or scheduled reports.",
|
|
1585
|
+
"user": {
|
|
1586
|
+
"helper": "Leave empty for a relay that does not authenticate.",
|
|
1587
|
+
"label": "Username"
|
|
1588
|
+
}
|
|
1589
|
+
},
|
|
1590
|
+
"identity": {
|
|
1591
|
+
"appName": {
|
|
1592
|
+
"error": "Enter a name of at most 60 characters.",
|
|
1593
|
+
"helper": "Shown in the sidebar, browser title, and emails.",
|
|
1594
|
+
"label": "Application name"
|
|
1595
|
+
},
|
|
1596
|
+
"heading": "Workspace identity",
|
|
1597
|
+
"logo": {
|
|
1598
|
+
"badType": "Choose a PNG, JPEG, WebP, GIF or SVG image.",
|
|
1599
|
+
"drop": "Drop an image here",
|
|
1600
|
+
"helper": "PNG, JPEG, WebP, GIF or SVG, up to 1 MB. Replaces the built-in mark everywhere.",
|
|
1601
|
+
"label": "Logo",
|
|
1602
|
+
"remove": "Remove",
|
|
1603
|
+
"removed": "Logo removed",
|
|
1604
|
+
"replace": "Replace logo",
|
|
1605
|
+
"tooLarge": "That image is larger than 1 MB.",
|
|
1606
|
+
"undo": "Undo",
|
|
1607
|
+
"upload": "Upload logo",
|
|
1608
|
+
"uploaded": "Logo updated"
|
|
1609
|
+
},
|
|
1610
|
+
"showVersion": {
|
|
1611
|
+
"helper": "The build number beside the logo. Off hides which version you run.",
|
|
1612
|
+
"label": "Version in the sidebar"
|
|
1613
|
+
}
|
|
1614
|
+
},
|
|
1615
|
+
"pagesCard": {
|
|
1616
|
+
"body": "Add, edit and delete pages, change what each one shows, and reorder the sidebar.",
|
|
1617
|
+
"cta": "Manage pages",
|
|
1618
|
+
"heading": "Pages"
|
|
1619
|
+
},
|
|
1620
|
+
"publicApiCard": {
|
|
1621
|
+
"body": "Let your own customer- or staff-facing pages read this database, through a scope you define.",
|
|
1622
|
+
"cta": "Open public API",
|
|
1623
|
+
"heading": "Public API"
|
|
1624
|
+
},
|
|
1625
|
+
"review": {
|
|
1626
|
+
"cancel": "Cancel",
|
|
1627
|
+
"change": "{before} → {after}",
|
|
1628
|
+
"close": "Close",
|
|
1629
|
+
"confirm": "Save changes",
|
|
1630
|
+
"hidden": "Hidden",
|
|
1631
|
+
"off": "Off",
|
|
1632
|
+
"on": "On",
|
|
1633
|
+
"shown": "Shown",
|
|
1634
|
+
"subtitle": "Review your changes before saving.",
|
|
1635
|
+
"title": "Save workspace settings"
|
|
1636
|
+
},
|
|
1637
|
+
"save": "Save changes",
|
|
1638
|
+
"saveFailed": "Could not save workspace settings. Try again.",
|
|
1639
|
+
"saved": "Workspace settings updated",
|
|
1640
|
+
"security": {
|
|
1641
|
+
"allowSignup": {
|
|
1642
|
+
"desc": "Anyone can create an account — off keeps this workspace invite-only.",
|
|
1643
|
+
"label": "Allow self-signup"
|
|
1644
|
+
},
|
|
1645
|
+
"heading": "Security",
|
|
1646
|
+
"passwordMin": {
|
|
1647
|
+
"error": "Between {min, number} and {max, number} characters.",
|
|
1648
|
+
"label": "Minimum password length"
|
|
1649
|
+
},
|
|
1650
|
+
"require2fa": {
|
|
1651
|
+
"desc": "Every member must enable 2FA to sign in.",
|
|
1652
|
+
"label": "Require two-factor auth",
|
|
1653
|
+
"note": "Advisory, not a barrier: members without 2FA are sent to set it up and can no longer turn it off, but their sign-in is never blocked, and API keys are unaffected."
|
|
1654
|
+
},
|
|
1655
|
+
"sessionTtl": {
|
|
1656
|
+
"error": "Between {min, number} and {max, number} hours.",
|
|
1657
|
+
"label": "Session lifetime (hours)"
|
|
1658
|
+
}
|
|
1108
1659
|
},
|
|
1109
|
-
"
|
|
1110
|
-
"
|
|
1111
|
-
"
|
|
1660
|
+
"storageCard": {
|
|
1661
|
+
"body": "Choose where uploaded files, exports and other stored bytes live — this server, a bucket, or your own server.",
|
|
1662
|
+
"cta": "Open storage",
|
|
1663
|
+
"heading": "Storage"
|
|
1112
1664
|
},
|
|
1113
|
-
"
|
|
1114
|
-
|
|
1115
|
-
|
|
1665
|
+
"subtitle": "Identity, security and destructive actions for this workspace.",
|
|
1666
|
+
"superAdminOnly": "Only a super admin can change workspace identity and security settings.",
|
|
1667
|
+
"superAdminOnlyTitle": "Super admin required",
|
|
1668
|
+
"title": "Workspace settings",
|
|
1669
|
+
"translationsCard": {
|
|
1670
|
+
"body": "Reword anything in Adminium, choose which languages people can pick, and add your own.",
|
|
1671
|
+
"cta": "Open translations",
|
|
1672
|
+
"heading": "Languages & translations"
|
|
1673
|
+
}
|
|
1674
|
+
},
|
|
1675
|
+
"source": {
|
|
1676
|
+
"dsn": {
|
|
1677
|
+
"helper": "postgres://user:password@host:5432/database — mysql:// and sqlite: work too.",
|
|
1678
|
+
"incomplete": "Add host and database, e.g. postgres://user@host:5432/db",
|
|
1679
|
+
"invalidScheme": "Unrecognized scheme — expected postgres://, mysql://, mariadb:// or sqlite:",
|
|
1680
|
+
"label": "Connection string",
|
|
1681
|
+
"quickFill": "Quick fill:"
|
|
1116
1682
|
},
|
|
1117
|
-
"
|
|
1118
|
-
"
|
|
1119
|
-
"
|
|
1683
|
+
"engine": {
|
|
1684
|
+
"label": "Database engine",
|
|
1685
|
+
"mysql": "MySQL / MariaDB",
|
|
1686
|
+
"postgres": "PostgreSQL",
|
|
1687
|
+
"sqlite": "SQLite"
|
|
1120
1688
|
},
|
|
1121
|
-
"
|
|
1122
|
-
"
|
|
1123
|
-
"
|
|
1689
|
+
"fields": {
|
|
1690
|
+
"database": "Database",
|
|
1691
|
+
"host": "Host",
|
|
1692
|
+
"password": "Password",
|
|
1693
|
+
"port": "Port",
|
|
1694
|
+
"preview": "Connection string preview:",
|
|
1695
|
+
"ssl": "SSL mode",
|
|
1696
|
+
"user": "User"
|
|
1124
1697
|
},
|
|
1125
|
-
"
|
|
1126
|
-
"
|
|
1127
|
-
"
|
|
1128
|
-
"
|
|
1129
|
-
"
|
|
1130
|
-
"
|
|
1698
|
+
"file": {
|
|
1699
|
+
"columns": "columns",
|
|
1700
|
+
"detectedAs": "Detected: {format}",
|
|
1701
|
+
"dropHint": "SQL DDL / pg_dump, Prisma, Drizzle, TypeORM, Sequelize, Rails schema.rb, Django models, Adminium JSON",
|
|
1702
|
+
"dropTitle": "Drop your schema file here, or browse",
|
|
1703
|
+
"errorTitle": "Could not parse the file",
|
|
1704
|
+
"moreWarnings": "+{count} more warnings — the full list appears in the analyze step.",
|
|
1705
|
+
"parseFailed": "We could not parse that file. If auto-detect guessed wrong, pick the format explicitly and retry.",
|
|
1706
|
+
"parsing": "Reading uploaded schema file…",
|
|
1707
|
+
"pitch": "No database connection required — we parse your schema file and build the same dashboards.",
|
|
1708
|
+
"requestFailed": "Upload failed — check your connection and try again.",
|
|
1709
|
+
"tables": "tables",
|
|
1710
|
+
"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.",
|
|
1711
|
+
"warnings": "warnings"
|
|
1131
1712
|
},
|
|
1132
|
-
"
|
|
1133
|
-
"
|
|
1713
|
+
"format": {
|
|
1714
|
+
"auto": "Auto-detect",
|
|
1715
|
+
"django": "Django models.py",
|
|
1716
|
+
"drizzle": "Drizzle ORM",
|
|
1717
|
+
"helper": "Leave on auto-detect unless the detection gets it wrong.",
|
|
1718
|
+
"json": "Adminium JSON",
|
|
1719
|
+
"label": "Schema format",
|
|
1720
|
+
"prisma": "Prisma schema",
|
|
1721
|
+
"rails": "Rails schema.rb",
|
|
1722
|
+
"sequelize": "Sequelize models",
|
|
1723
|
+
"sql": "SQL DDL / pg_dump",
|
|
1724
|
+
"typeorm": "TypeORM entities"
|
|
1134
1725
|
},
|
|
1135
|
-
"
|
|
1136
|
-
"
|
|
1137
|
-
"
|
|
1138
|
-
"
|
|
1139
|
-
"show": "Show in sidebar",
|
|
1140
|
-
"delete": "Delete page"
|
|
1726
|
+
"mode": {
|
|
1727
|
+
"dsn": "Connection string",
|
|
1728
|
+
"fields": "Individual fields",
|
|
1729
|
+
"file": "Schema file"
|
|
1141
1730
|
},
|
|
1142
|
-
"
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
"
|
|
1731
|
+
"modeLabel": "Source input mode",
|
|
1732
|
+
"name": "Connection name",
|
|
1733
|
+
"namePlaceholder": "Production Postgres",
|
|
1734
|
+
"readOnlyRole": {
|
|
1735
|
+
"body": "During setup Adminium reads schema metadata only — never your rows. We recommend a dedicated user with SELECT-only grants; you can decide where Adminium keeps its own tables in the meta-storage step.",
|
|
1736
|
+
"title": "Use a read-only role"
|
|
1147
1737
|
},
|
|
1148
|
-
"
|
|
1149
|
-
"
|
|
1150
|
-
"
|
|
1151
|
-
"submit": "Duplicate"
|
|
1738
|
+
"sqlite": {
|
|
1739
|
+
"file": "Database file path",
|
|
1740
|
+
"helper": "SQLite is a file, not a server — give the absolute path on the machine running Adminium."
|
|
1152
1741
|
},
|
|
1742
|
+
"subtitle": "Point Adminium at a database and we'll generate an admin dashboard from its schema.",
|
|
1743
|
+
"title": "Connect your database"
|
|
1744
|
+
},
|
|
1745
|
+
"storage": {
|
|
1746
|
+
"actionFailed": "That did not work",
|
|
1747
|
+
"add": "Add a destination",
|
|
1748
|
+
"availableOnDisk": "{size} available on this disk",
|
|
1749
|
+
"default": "Default",
|
|
1750
|
+
"defaultBlockedByDisabled": "A disabled destination cannot be the default. Enable it first.",
|
|
1153
1751
|
"delete": {
|
|
1154
|
-
"
|
|
1155
|
-
"
|
|
1156
|
-
"
|
|
1157
|
-
"
|
|
1158
|
-
"
|
|
1752
|
+
"blockedBody": "{name} still holds {count, plural, one {# file} other {# files}}. Move them to another destination first, then delete it.",
|
|
1753
|
+
"blockedTitle": "This destination still holds files",
|
|
1754
|
+
"body": "Adminium forgets {name} and its credential. Nothing stored in it is touched — the bucket or server itself is yours, and files still recorded against it will refuse the delete.",
|
|
1755
|
+
"confirm": "Delete destination",
|
|
1756
|
+
"title": "Delete this destination"
|
|
1757
|
+
},
|
|
1758
|
+
"deleteButton": "Delete",
|
|
1759
|
+
"disable": "Disable",
|
|
1760
|
+
"disabled": "Disabled",
|
|
1761
|
+
"driver": {
|
|
1762
|
+
"local": "A path on this machine",
|
|
1763
|
+
"s3": "S3-compatible bucket",
|
|
1764
|
+
"webdav": "WebDAV server"
|
|
1765
|
+
},
|
|
1766
|
+
"edit": "Edit",
|
|
1767
|
+
"editor": {
|
|
1768
|
+
"createTitle": "Add a destination",
|
|
1769
|
+
"editTitle": "Edit destination",
|
|
1770
|
+
"subtitle": "Adminium reads and writes through this destination on your behalf; it is infrastructure you control."
|
|
1159
1771
|
},
|
|
1772
|
+
"enable": "Enable",
|
|
1160
1773
|
"field": {
|
|
1161
|
-
"
|
|
1162
|
-
"
|
|
1163
|
-
"
|
|
1164
|
-
"
|
|
1165
|
-
"
|
|
1166
|
-
"
|
|
1167
|
-
"
|
|
1168
|
-
"
|
|
1169
|
-
"
|
|
1170
|
-
"
|
|
1171
|
-
"
|
|
1172
|
-
"
|
|
1173
|
-
"
|
|
1174
|
-
"
|
|
1175
|
-
"
|
|
1176
|
-
"
|
|
1177
|
-
"
|
|
1178
|
-
"
|
|
1179
|
-
"
|
|
1180
|
-
"
|
|
1181
|
-
"
|
|
1182
|
-
"
|
|
1183
|
-
"
|
|
1184
|
-
"
|
|
1774
|
+
"accessKeyId": "Access key ID",
|
|
1775
|
+
"bucket": "Bucket",
|
|
1776
|
+
"driver": "Kind",
|
|
1777
|
+
"driverLocked": "Changing the kind of a destination that already holds files would leave those files unreachable.",
|
|
1778
|
+
"endpoint": "Endpoint",
|
|
1779
|
+
"endpointDerived": "Leave empty for AWS itself — the endpoint follows from the region.",
|
|
1780
|
+
"name": "Name",
|
|
1781
|
+
"namePlaceholder": "Uploads bucket",
|
|
1782
|
+
"password": "Password",
|
|
1783
|
+
"pathStyle": "Path-style addressing",
|
|
1784
|
+
"pathStyleToggle": "Address the bucket as a path rather than a hostname",
|
|
1785
|
+
"prefix": "Prefix",
|
|
1786
|
+
"prefixHelper": "A folder inside the destination. Two destinations on one bucket that differ only here share the bucket without sharing a namespace.",
|
|
1787
|
+
"preset": "Provider",
|
|
1788
|
+
"presetHelper": "Fills in the endpoint, region and addressing style. Anything the provider cannot know about your account is left blank for you to type.",
|
|
1789
|
+
"publicBaseUrl": "Public base URL",
|
|
1790
|
+
"publicBaseUrlHelper": "Optional. Where these objects are readable without Adminium — a CDN in front of a public bucket. Used only when a column stores a link.",
|
|
1791
|
+
"region": "Region",
|
|
1792
|
+
"root": "Directory",
|
|
1793
|
+
"rootHelper": "An absolute path this server can write to — a mounted volume or a network share. Not the default directory, which is already the first entry in the list.",
|
|
1794
|
+
"secretAccessKey": "Secret access key",
|
|
1795
|
+
"secretKept": "A key is stored. Leave both fields blank to keep it; fill in both to replace it.",
|
|
1796
|
+
"url": "Collection URL",
|
|
1797
|
+
"urlHelper": "The collection Adminium writes into, as your server publishes it.",
|
|
1798
|
+
"username": "Username"
|
|
1799
|
+
},
|
|
1800
|
+
"fileCount": "{count, plural, one {# file} other {# files}}",
|
|
1801
|
+
"kind": {
|
|
1802
|
+
"archive": "Archived audit batches",
|
|
1803
|
+
"branding": "The workspace logo",
|
|
1804
|
+
"export": "Export artifacts",
|
|
1805
|
+
"import": "Uploaded CSVs and their error reports",
|
|
1806
|
+
"schema": "Imported schema files",
|
|
1807
|
+
"upload": "Files attached to records"
|
|
1185
1808
|
},
|
|
1186
|
-
"
|
|
1187
|
-
"
|
|
1188
|
-
"
|
|
1189
|
-
"saveFailed": "Changes could not be saved",
|
|
1190
|
-
"openPage": "Open page",
|
|
1191
|
-
"generated": {
|
|
1192
|
-
"title": "This page was generated from your schema",
|
|
1193
|
-
"body": "Your changes survive regeneration. Deleting only lasts until the next run recreates it."
|
|
1194
|
-
},
|
|
1195
|
-
"contentUnavailable": "Page contents could not be loaded",
|
|
1196
|
-
"contentUnavailableBody": "The details above can still be saved.",
|
|
1197
|
-
"contentInvalid": "This page’s configuration is not readable",
|
|
1198
|
-
"contentInvalidBody": "It was written by a newer version, or it is malformed. Regenerate the page or delete it.",
|
|
1199
|
-
"data": "Data",
|
|
1200
|
-
"schemaFailed": "Tables could not be listed",
|
|
1201
|
-
"schemaFailedBody": "This connection may not have been analysed yet. Run introspection from Studio → Data connections.",
|
|
1202
|
-
"notBindable": "This template is not bound to one table",
|
|
1203
|
-
"notBindableBody": "Its contents are built widget by widget instead. Open the page and use Edit to add them.",
|
|
1204
|
-
"recompose": "This page will be rebuilt",
|
|
1205
|
-
"recomposeBody": "Saving rebuilds the contents. Column and widget edits here are lost.",
|
|
1206
|
-
"missing": "That page no longer exists",
|
|
1207
|
-
"missingBody": "It may have been deleted, or removed by a regeneration run.",
|
|
1208
|
-
"details": "Details",
|
|
1209
|
-
"itemsPending": "Save the change above first — the contents are rebuilt from it.",
|
|
1210
|
-
"columns": "Columns",
|
|
1211
|
-
"appearance": "Appearance"
|
|
1809
|
+
"list": {
|
|
1810
|
+
"subtitle": "New files go to the default destination. Existing files stay where they are until you move them.",
|
|
1811
|
+
"title": "Destinations"
|
|
1212
1812
|
},
|
|
1213
|
-
"
|
|
1214
|
-
"
|
|
1215
|
-
"
|
|
1216
|
-
"save": "Save order",
|
|
1217
|
-
"saveFailed": "The new order could not be saved",
|
|
1218
|
-
"emptyGroup": "No pages in this group.",
|
|
1219
|
-
"moveUp": "Move {title} up",
|
|
1220
|
-
"moveDown": "Move {title} down",
|
|
1221
|
-
"moveTo": "Move {title} to a group",
|
|
1222
|
-
"ungrouped": {
|
|
1223
|
-
"title": "Some pages are in no sidebar group",
|
|
1224
|
-
"body": "These pages work at their URL but appear nowhere in the sidebar. Open each one and pick a group."
|
|
1225
|
-
}
|
|
1813
|
+
"loadFailed": {
|
|
1814
|
+
"forbidden": "Changing where files are stored needs the “Manage storage” permission. Ask an administrator to grant it to one of your roles.",
|
|
1815
|
+
"title": "Destinations could not be loaded"
|
|
1226
1816
|
},
|
|
1227
|
-
"
|
|
1228
|
-
|
|
1229
|
-
"
|
|
1230
|
-
"
|
|
1231
|
-
"
|
|
1232
|
-
"
|
|
1233
|
-
"
|
|
1234
|
-
"
|
|
1235
|
-
"
|
|
1236
|
-
"
|
|
1237
|
-
"
|
|
1238
|
-
"
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
"
|
|
1242
|
-
"
|
|
1243
|
-
"
|
|
1244
|
-
"
|
|
1245
|
-
"
|
|
1246
|
-
"
|
|
1247
|
-
"
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
"
|
|
1252
|
-
"
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1817
|
+
"localDisk": "This server's disk",
|
|
1818
|
+
"move": {
|
|
1819
|
+
"from": "From",
|
|
1820
|
+
"kinds": "Limit to",
|
|
1821
|
+
"kindsHelp": "Leave everything unticked to move all of them. Uploads are the files people attach; the rest are artifacts Adminium made.",
|
|
1822
|
+
"open": "Move files…",
|
|
1823
|
+
"start": "Start the move",
|
|
1824
|
+
"startedBody": "It runs in the background as job {jobId} and keeps going if you leave this page. The counts below change as files arrive — reload to see them.",
|
|
1825
|
+
"startedTitle": "The move has started",
|
|
1826
|
+
"subtitle": "Copies every file from one destination to another and then forgets the old copy. Downloads keep working throughout.",
|
|
1827
|
+
"title": "Move files",
|
|
1828
|
+
"to": "To"
|
|
1829
|
+
},
|
|
1830
|
+
"preset": {
|
|
1831
|
+
"aws": "AWS S3",
|
|
1832
|
+
"b2": "Backblaze B2",
|
|
1833
|
+
"minio": "MinIO or another S3-compatible server",
|
|
1834
|
+
"r2": "Cloudflare R2",
|
|
1835
|
+
"spaces": "DigitalOcean Spaces",
|
|
1836
|
+
"tigris": "Tigris",
|
|
1837
|
+
"wasabi": "Wasabi"
|
|
1838
|
+
},
|
|
1839
|
+
"save": "Save destination",
|
|
1840
|
+
"secret": {
|
|
1841
|
+
"partialBody": "Fill in both fields to replace the stored credential, or clear both to keep it. Saving one alone would quietly keep the old one.",
|
|
1842
|
+
"partialTitle": "Half a credential is not a credential"
|
|
1843
|
+
},
|
|
1844
|
+
"setDefault": "Set as default",
|
|
1845
|
+
"status": {
|
|
1846
|
+
"error": "Unreachable",
|
|
1847
|
+
"ok": "Reachable",
|
|
1848
|
+
"untested": "Not tested"
|
|
1259
1849
|
},
|
|
1260
|
-
"
|
|
1261
|
-
|
|
1262
|
-
"
|
|
1263
|
-
"
|
|
1850
|
+
"subtitle": "Where this instance keeps uploaded files, exports and other stored bytes.",
|
|
1851
|
+
"test": {
|
|
1852
|
+
"button": "Test",
|
|
1853
|
+
"failed": "Could not reach this destination",
|
|
1854
|
+
"ok": "Reached in {ms}ms",
|
|
1855
|
+
"unreachable": "The test could not be run"
|
|
1264
1856
|
},
|
|
1265
|
-
"
|
|
1266
|
-
|
|
1267
|
-
|
|
1857
|
+
"title": "Storage",
|
|
1858
|
+
"usedBytes": "{size} used"
|
|
1859
|
+
},
|
|
1860
|
+
"tables": {
|
|
1861
|
+
"emptyFilter": "No tables match your filter.",
|
|
1862
|
+
"highVolume": "high volume",
|
|
1863
|
+
"highVolumeNote": "Tables over 100,000 rows start unchecked — ops tables rarely belong in a dashboard.",
|
|
1864
|
+
"importNoCounts": "Schema files carry no row counts — the column shows — until a live database is connected.",
|
|
1865
|
+
"joinHidden": "{count} join/system tables are pre-hidden — they still power many-to-many relations.",
|
|
1866
|
+
"listLabel": "Includable tables",
|
|
1867
|
+
"pii": "PII",
|
|
1868
|
+
"search": "Filter tables…",
|
|
1869
|
+
"subtitle": "Choose which to include. You can change this anytime.",
|
|
1870
|
+
"title": "Choose your tables"
|
|
1871
|
+
},
|
|
1872
|
+
"test": {
|
|
1873
|
+
"errorTitle": "Connection failed",
|
|
1874
|
+
"hint": {
|
|
1875
|
+
"auth": "Authentication failed — check the user name and password in your DSN.",
|
|
1876
|
+
"hostUnreachable": "Host unreachable — check the hostname and port, and that the database accepts connections from this machine (allowlist our IPs).",
|
|
1877
|
+
"metaPlacement": "This source cannot host Adminium’s meta tables — continue with a separate meta database.",
|
|
1878
|
+
"permission": "The role connected but lacks schema-read privileges — grant USAGE on the schema to your introspection role.",
|
|
1879
|
+
"timeout": "The database did not answer in time — check network path and load, then retry.",
|
|
1880
|
+
"tls": "TLS negotiation failed — try sslmode=require, or upload the CA certificate your server expects.",
|
|
1881
|
+
"unknown": "Connection failed — verify the DSN and retry."
|
|
1268
1882
|
},
|
|
1269
|
-
"
|
|
1270
|
-
"
|
|
1271
|
-
"
|
|
1272
|
-
"
|
|
1273
|
-
"
|
|
1274
|
-
"
|
|
1275
|
-
"
|
|
1883
|
+
"log": {
|
|
1884
|
+
"connectFailed": "Connection failed.",
|
|
1885
|
+
"connected": "Connected ({latency} ms) · read-only introspection",
|
|
1886
|
+
"connecting": "Establishing secure connection…",
|
|
1887
|
+
"detected": "Detected {tables} tables · {columns} columns",
|
|
1888
|
+
"found": "Found {tables} tables · {columns} columns",
|
|
1889
|
+
"jobFailed": "Introspection failed.",
|
|
1890
|
+
"mapping": "Mapping column types → input widgets",
|
|
1891
|
+
"moreWarnings": "+{count} more parser warnings",
|
|
1892
|
+
"networkFailed": "Request failed — check your connection and retry.",
|
|
1893
|
+
"parsingFile": "Parsing {file}…",
|
|
1894
|
+
"piiDone": "PII scan complete — {count} columns masked by default",
|
|
1895
|
+
"piiDoneUnknown": "PII scan complete",
|
|
1896
|
+
"piiScan": "Scanning for PII columns…",
|
|
1897
|
+
"readingFile": "Reading uploaded schema file…",
|
|
1898
|
+
"readingSchema": "Reading schema: public",
|
|
1899
|
+
"ready": "Ready",
|
|
1900
|
+
"relations": "Detecting relations…"
|
|
1276
1901
|
},
|
|
1277
|
-
"
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1902
|
+
"logLabel": "Introspection log",
|
|
1903
|
+
"retry": "Retry",
|
|
1904
|
+
"subtitle": "Introspecting tables, columns, and relationships. This takes a few seconds.",
|
|
1905
|
+
"title": "Analyzing your schema",
|
|
1906
|
+
"trust": "We only read your schema and data. Nothing is modified."
|
|
1907
|
+
},
|
|
1908
|
+
"title": "Studio",
|
|
1909
|
+
"wizard": {
|
|
1910
|
+
"back": "Back",
|
|
1911
|
+
"bridgeAppliedBody": "Handed over from adminium.dev by your browser — it went straight to this machine and was never uploaded. Check it below, then continue.",
|
|
1912
|
+
"bridgeAppliedTitle": "Connection string received",
|
|
1913
|
+
"bridgeFailedBody": "It has already been used or has expired. Paste your connection string below instead.",
|
|
1914
|
+
"bridgeFailedTitle": "That hand-off could not be used",
|
|
1915
|
+
"continue": "Continue",
|
|
1916
|
+
"persistFailed": "Could not save your table selection — retry.",
|
|
1917
|
+
"persistFailedTitle": "Save failed",
|
|
1918
|
+
"progress": "Setup progress",
|
|
1919
|
+
"step": {
|
|
1920
|
+
"enrich": "Enrich",
|
|
1921
|
+
"generate": "Generate",
|
|
1922
|
+
"intent": "Intent",
|
|
1923
|
+
"meta": "Meta storage",
|
|
1924
|
+
"source": "Source",
|
|
1925
|
+
"tables": "Tables",
|
|
1926
|
+
"test": "Analyze"
|
|
1927
|
+
},
|
|
1928
|
+
"title": "New connection"
|
|
1286
1929
|
}
|
|
1287
1930
|
}
|