inicontent 1.0.0
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/.github/pull_request.yml +18 -0
- package/CONTRIBUTING.md +67 -0
- package/LICENSE +21 -0
- package/README.md +142 -0
- package/app/app.vue +106 -0
- package/app/assets/main.css +974 -0
- package/app/components/Api/EndpointCard.vue +169 -0
- package/app/components/Api/SchemaDocsTable.vue +208 -0
- package/app/components/Asset/Card.vue +1363 -0
- package/app/components/Asset/Grid.vue +295 -0
- package/app/components/Asset/Icon.vue +38 -0
- package/app/components/Asset/Preview.vue +486 -0
- package/app/components/Asset/Scanner.vue +700 -0
- package/app/components/Asset/Thumb.vue +708 -0
- package/app/components/Auth/Reset.vue +99 -0
- package/app/components/Auth/index.vue +346 -0
- package/app/components/ChatInterface.vue +2326 -0
- package/app/components/ChatPagePreview.vue +34 -0
- package/app/components/Column/Array.vue +29 -0
- package/app/components/Column/Asset.vue +21 -0
- package/app/components/Column/Boolean.vue +12 -0
- package/app/components/Column/Color.vue +9 -0
- package/app/components/Column/Date.vue +57 -0
- package/app/components/Column/Edit.vue +215 -0
- package/app/components/Column/Email.vue +9 -0
- package/app/components/Column/Html.vue +27 -0
- package/app/components/Column/Id.vue +20 -0
- package/app/components/Column/Locale.vue +32 -0
- package/app/components/Column/Object.vue +18 -0
- package/app/components/Column/Password.vue +7 -0
- package/app/components/Column/Role.vue +15 -0
- package/app/components/Column/S.vue +14 -0
- package/app/components/Column/Table/Single.vue +49 -0
- package/app/components/Column/Table/index.vue +42 -0
- package/app/components/Column/Tags.vue +31 -0
- package/app/components/Column/Text.vue +9 -0
- package/app/components/Column/Url.vue +9 -0
- package/app/components/Column/index.vue +41 -0
- package/app/components/Dashboard/Editor.vue +221 -0
- package/app/components/Dashboard/Grid.vue +270 -0
- package/app/components/Dashboard/View.vue +131 -0
- package/app/components/Dashboard/Widget/BarChart.vue +73 -0
- package/app/components/Dashboard/Widget/Counter.vue +51 -0
- package/app/components/Dashboard/Widget/LineChart.vue +76 -0
- package/app/components/Dashboard/Widget/PieChart.vue +75 -0
- package/app/components/Dashboard/Widget/Table.vue +94 -0
- package/app/components/Dashboard/WidgetEditor.vue +274 -0
- package/app/components/Data/Array.vue +102 -0
- package/app/components/Data/Html.vue +9 -0
- package/app/components/Data/Icon.vue +9 -0
- package/app/components/Data/Object.vue +10 -0
- package/app/components/Data/S.vue +16 -0
- package/app/components/Data/Table.vue +53 -0
- package/app/components/Data/Value.vue +34 -0
- package/app/components/Data/index.vue +14 -0
- package/app/components/Field/Array.vue +324 -0
- package/app/components/Field/Asset/Actions.vue +97 -0
- package/app/components/Field/Asset/index.vue +639 -0
- package/app/components/Field/Boolean.vue +26 -0
- package/app/components/Field/Checkbox.vue +48 -0
- package/app/components/Field/Color.vue +27 -0
- package/app/components/Field/Date.vue +30 -0
- package/app/components/Field/Email.vue +51 -0
- package/app/components/Field/EmailTemplate.vue +420 -0
- package/app/components/Field/Html/ColorPicker.vue +127 -0
- package/app/components/Field/Html/Editor.vue +544 -0
- package/app/components/Field/Html/index.vue +25 -0
- package/app/components/Field/Icon.vue +114 -0
- package/app/components/Field/JSON.vue +113 -0
- package/app/components/Field/Mention.vue +36 -0
- package/app/components/Field/Number.vue +27 -0
- package/app/components/Field/Object.vue +92 -0
- package/app/components/Field/Password.vue +55 -0
- package/app/components/Field/Radio.vue +47 -0
- package/app/components/Field/S.vue +44 -0
- package/app/components/Field/Select.vue +49 -0
- package/app/components/Field/Table.vue +348 -0
- package/app/components/Field/Tags.vue +113 -0
- package/app/components/Field/Text.vue +31 -0
- package/app/components/Field/Textarea.vue +33 -0
- package/app/components/Field/Url.vue +40 -0
- package/app/components/Field/Wrapper.vue +128 -0
- package/app/components/Field/index.vue +68 -0
- package/app/components/FloatingChatbot.vue +73 -0
- package/app/components/Form/Card.vue +151 -0
- package/app/components/Form/Drawer.vue +195 -0
- package/app/components/Form/index.vue +621 -0
- package/app/components/Header.vue +328 -0
- package/app/components/Offline/ConflictModal.vue +200 -0
- package/app/components/Offline/SyncStatus.vue +249 -0
- package/app/components/PlatformFeatureLanding.vue +65 -0
- package/app/components/Table/Backups.vue +638 -0
- package/app/components/Table/Flows.vue +814 -0
- package/app/components/Table/Grid.vue +296 -0
- package/app/components/Table/Icon.vue +36 -0
- package/app/components/Table/Logs.vue +181 -0
- package/app/components/Table/Schedules.vue +722 -0
- package/app/components/Table/Search/Button.vue +256 -0
- package/app/components/Table/Search/Items.vue +286 -0
- package/app/components/Table/Search/index.vue +87 -0
- package/app/components/Table/Settings/Schema.vue +801 -0
- package/app/components/Table/Settings/index.vue +631 -0
- package/app/components/Table/TranslateDrawer.vue +526 -0
- package/app/components/Table/Views/Kanban.vue +289 -0
- package/app/components/Table/Views/Table.vue +1273 -0
- package/app/components/Table/index.vue +890 -0
- package/app/composables/Translation/define.ts +41 -0
- package/app/composables/Translation/fetch.ts +107 -0
- package/app/composables/Translation/languages.ts +1 -0
- package/app/composables/Translation/loadCoreTranslations.ts +38 -0
- package/app/composables/Translation/translate.ts +250 -0
- package/app/composables/databaseCookies.ts +79 -0
- package/app/composables/fieldValidator.ts +72 -0
- package/app/composables/fieldsList.ts +301 -0
- package/app/composables/formatDatabase.ts +101 -0
- package/app/composables/index.ts +444 -0
- package/app/composables/openDrawer.ts +118 -0
- package/app/composables/optimizeFile.ts +287 -0
- package/app/composables/renderLabel.ts +88 -0
- package/app/composables/schemaClipboard.ts +95 -0
- package/app/composables/search.ts +353 -0
- package/app/composables/setThemeConfig.ts +48 -0
- package/app/composables/translationValue.ts +169 -0
- package/app/composables/useAssetPreview.ts +84 -0
- package/app/composables/useAssetUploader.ts +56 -0
- package/app/composables/useDashboardData.ts +310 -0
- package/app/composables/useDocumentThumbnail.ts +351 -0
- package/app/composables/useEcharts.ts +33 -0
- package/app/composables/useLocalDatabaseConfig.ts +51 -0
- package/app/composables/useOcr.ts +300 -0
- package/app/composables/useOfflineFetch.ts +194 -0
- package/app/composables/useOfflineItem.ts +107 -0
- package/app/composables/useOfflineQueue.ts +302 -0
- package/app/composables/useOfflineSync.ts +235 -0
- package/app/composables/usePasskeyAuth.ts +156 -0
- package/app/composables/usePdfCompressor.ts +180 -0
- package/app/composables/usePlatformRedirect.ts +72 -0
- package/app/composables/useRealtimeSync.ts +233 -0
- package/app/composables/useReferencedItems.ts +180 -0
- package/app/composables/useScanner.ts +664 -0
- package/app/composables/useSubscription.ts +650 -0
- package/app/composables/useThumbnailCache.ts +136 -0
- package/app/composables/useVideoCompressor.ts +194 -0
- package/app/error.vue +112 -0
- package/app/layouts/api.vue +188 -0
- package/app/layouts/dashboard.vue +91 -0
- package/app/layouts/default.vue +228 -0
- package/app/layouts/table.vue +471 -0
- package/app/locales/ar.ts +996 -0
- package/app/locales/en.ts +655 -0
- package/app/locales/es.ts +996 -0
- package/app/locales/fr.ts +997 -0
- package/app/middleware/dashboard.ts +33 -0
- package/app/middleware/database.ts +83 -0
- package/app/middleware/global.ts +1 -0
- package/app/middleware/sid-ingest.global.ts +29 -0
- package/app/middleware/table.ts +54 -0
- package/app/middleware/user.ts +26 -0
- package/app/pages/[[database]]/admin/api/auth/index.vue +306 -0
- package/app/pages/[[database]]/admin/api/index.vue +18 -0
- package/app/pages/[[database]]/admin/api/tables/[table]/index.vue +497 -0
- package/app/pages/[[database]]/admin/api/tables/index.vue +87 -0
- package/app/pages/[[database]]/admin/billing/index.vue +16 -0
- package/app/pages/[[database]]/admin/dashboards/[id]/edit.vue +66 -0
- package/app/pages/[[database]]/admin/dashboards/[id]/index.vue +117 -0
- package/app/pages/[[database]]/admin/dashboards/index.vue +20 -0
- package/app/pages/[[database]]/admin/index.vue +28 -0
- package/app/pages/[[database]]/admin/settings.vue +526 -0
- package/app/pages/[[database]]/admin/tables/[table]/[id]/edit.vue +143 -0
- package/app/pages/[[database]]/admin/tables/[table]/[id]/index.vue +146 -0
- package/app/pages/[[database]]/admin/tables/[table]/flows.vue +10 -0
- package/app/pages/[[database]]/admin/tables/[table]/index.vue +10 -0
- package/app/pages/[[database]]/admin/tables/[table]/new.vue +12 -0
- package/app/pages/[[database]]/admin/tables/[table]/schedules.vue +10 -0
- package/app/pages/[[database]]/admin/tables/[table]/settings.vue +30 -0
- package/app/pages/[[database]]/admin/tables/assets/[...path].vue +24 -0
- package/app/pages/[[database]]/admin/tables/assets/flows.vue +10 -0
- package/app/pages/[[database]]/admin/tables/backups/index.vue +10 -0
- package/app/pages/[[database]]/admin/tables/blocks/index.vue +16 -0
- package/app/pages/[[database]]/admin/tables/index.vue +20 -0
- package/app/pages/[[database]]/admin/tables/pages/index.vue +16 -0
- package/app/pages/[[database]]/admin/tables/templates/index.vue +16 -0
- package/app/pages/[[database]]/api/index.vue +120 -0
- package/app/pages/[[database]]/auth/index.vue +12 -0
- package/app/pages/[[database]]/auth/reset.vue +10 -0
- package/app/pages/[[database]]/index.vue +10 -0
- package/app/plugins/offline-warmup.client.ts +53 -0
- package/app/plugins/template-globals.ts +9 -0
- package/app/spa-loading-template.html +93 -0
- package/biome.json +53 -0
- package/index.d.ts +380 -0
- package/modules/naiveui.ts +41 -0
- package/nuxt.config.ts +269 -0
- package/package.json +56 -0
- package/pnpm-workspace.yaml +5 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/pwa-192x192.png +0 -0
- package/public/pwa-512x512.png +0 -0
- package/public/pwa-maskable-192x192.png +0 -0
- package/public/pwa-maskable-512x512.png +0 -0
- package/public/vendor/opencv.js +48 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,655 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
en: {
|
|
3
|
+
// Confirmation messages
|
|
4
|
+
areYouSure: "Are you sure?",
|
|
5
|
+
folderNameRequired: "Folder name is required",
|
|
6
|
+
deleteSelectedAssetsConfirm:
|
|
7
|
+
"Delete {count} selected item(s)? This action cannot be undone.",
|
|
8
|
+
deleteAssetConfirm: "Delete this asset?",
|
|
9
|
+
deleteFolderConfirm:
|
|
10
|
+
'Delete folder "{name}" and everything inside it? This action cannot be undone.',
|
|
11
|
+
theFollowingActionIsIrreversible: "The following action is irreversible",
|
|
12
|
+
|
|
13
|
+
// HTTP Methods
|
|
14
|
+
get: "Read",
|
|
15
|
+
post: "Create",
|
|
16
|
+
put: "Update",
|
|
17
|
+
|
|
18
|
+
// API
|
|
19
|
+
apiDocumentation: "API Documentation",
|
|
20
|
+
|
|
21
|
+
// Admin
|
|
22
|
+
auth: "Authentication",
|
|
23
|
+
importedRows: "Imported {count} rows",
|
|
24
|
+
databaseExport: "Database export",
|
|
25
|
+
databaseExportDescription:
|
|
26
|
+
"Create a private archive of all schemas and records. Asset files are not included.",
|
|
27
|
+
startDatabaseExport: "Create export",
|
|
28
|
+
databaseExportFailed: "Database export failed",
|
|
29
|
+
databaseExportExpires: "Available until {date}",
|
|
30
|
+
databaseExportState: {
|
|
31
|
+
queued: "Export queued",
|
|
32
|
+
running: "Exporting database",
|
|
33
|
+
completed: "Export ready",
|
|
34
|
+
failed: "Export failed",
|
|
35
|
+
expired: "Export expired",
|
|
36
|
+
},
|
|
37
|
+
forgotPassword: "Forgot password?",
|
|
38
|
+
passwordMinimumLength: "Password must be at least 8 characters.",
|
|
39
|
+
passwordsDoNotMatch: "Passwords do not match.",
|
|
40
|
+
invalidResetLink: "This password reset link is invalid or expired.",
|
|
41
|
+
backToSignIn: "Back to sign in",
|
|
42
|
+
|
|
43
|
+
// Copy / paste schema fields
|
|
44
|
+
copyFields: "Copy fields",
|
|
45
|
+
pasteFields: "Paste fields from clipboard",
|
|
46
|
+
noFieldsInClipboard: "No fields found in the clipboard",
|
|
47
|
+
noFieldsToCopy: "There are no fields to copy",
|
|
48
|
+
cutSuccessfully: "Cut successfully",
|
|
49
|
+
|
|
50
|
+
// Field types that differ from default
|
|
51
|
+
fields: {
|
|
52
|
+
html: "Rich Editor",
|
|
53
|
+
json: "JSON",
|
|
54
|
+
dateTime: "Date & time",
|
|
55
|
+
dateRange: "Date range",
|
|
56
|
+
dateTimeRange: "Date & time range",
|
|
57
|
+
monthRange: "Month range",
|
|
58
|
+
yearRange: "Year range",
|
|
59
|
+
quarterRange: "Quarter range",
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
apiDocs: {
|
|
63
|
+
availableMethods: "Available methods",
|
|
64
|
+
sessionNoticeTitle: "Session authentication",
|
|
65
|
+
sessionNoticeDescription:
|
|
66
|
+
"Provide your session id via the {param} parameter either as a query string value or a cookie.",
|
|
67
|
+
sessionAsQuery: "Send it as a query parameter:",
|
|
68
|
+
sessionAsCookie: "Or attach it as a cookie on every request.",
|
|
69
|
+
sessionAuthLinkPrefix: "Need a session id? Read",
|
|
70
|
+
viewAuthDocs: "the auth docs",
|
|
71
|
+
schemaTitle: "Schema fields",
|
|
72
|
+
endpointPath: "Endpoint",
|
|
73
|
+
queryParams: "Query parameters",
|
|
74
|
+
requestExample: "Request",
|
|
75
|
+
responseExample: "Response",
|
|
76
|
+
responseFormat: "Response format",
|
|
77
|
+
statusCode: "Status code",
|
|
78
|
+
localeParam: "locale — preferred language code (e.g. en, ar, fr, es)",
|
|
79
|
+
pageParam: "page — page number for pagination (default: 1)",
|
|
80
|
+
limitParam: "limit — number of items per page (default: 25)",
|
|
81
|
+
isSignedInParam:
|
|
82
|
+
"isSignedIn — set to true to check if the session is valid",
|
|
83
|
+
searchParam: "search — search query encoded in Inison format",
|
|
84
|
+
columnsParam: "columns — comma-separated list of fields to return",
|
|
85
|
+
assetsUploadTitle: "Uploading assets",
|
|
86
|
+
assetsUploadIntro:
|
|
87
|
+
"Send a POST request to /assets or /assets/<folder> with one or more objects that describe the files you plan to upload.",
|
|
88
|
+
assetsUploadStep1:
|
|
89
|
+
"Each object must contain name, size, type, and extension. Arrays are supported if you upload multiple files at once.",
|
|
90
|
+
assetsUploadStep2:
|
|
91
|
+
"The API responds with the same fields plus id, createdAt, publicURL, and uploadURL.",
|
|
92
|
+
assetsUploadStep3:
|
|
93
|
+
"Upload the binary file to the returned uploadURL using a standard POST request.",
|
|
94
|
+
assetsUploadCustomEndpoint:
|
|
95
|
+
"If you rely on a custom upload endpoint, include publicURL in the initial /assets request and the API will skip returning uploadURL.",
|
|
96
|
+
noSchemaFields: "No schema fields were found for this table.",
|
|
97
|
+
tableNotFoundTitle: "Table not found",
|
|
98
|
+
tableNotFoundDescription:
|
|
99
|
+
"Double-check the slug or pick another table from the list.",
|
|
100
|
+
backToTables: "Back to API tables",
|
|
101
|
+
tableEndpoints: {
|
|
102
|
+
title: "Table endpoints",
|
|
103
|
+
listTitle: "List items",
|
|
104
|
+
listDescription:
|
|
105
|
+
"List all items in the {table} table with pagination and filtering.",
|
|
106
|
+
singleTitle: "Get single item",
|
|
107
|
+
singleDescription:
|
|
108
|
+
"Get a single item by its ID from the {table} table.",
|
|
109
|
+
createTitle: "Create item",
|
|
110
|
+
createDescription: "Create a new item in the {table} table.",
|
|
111
|
+
updateTitle: "Update item",
|
|
112
|
+
updateDescription:
|
|
113
|
+
"Update an existing item in the {table} table by its ID.",
|
|
114
|
+
deleteTitle: "Delete item",
|
|
115
|
+
deleteDescription: "Delete an item from the {table} table by its ID.",
|
|
116
|
+
schemaTitle: "Get table schema",
|
|
117
|
+
schemaDescription:
|
|
118
|
+
"Returns the schema definition for the {table} table.",
|
|
119
|
+
logsTitle: "Activity logs",
|
|
120
|
+
logsDescription: "Returns recent activity logs for the {table} table.",
|
|
121
|
+
},
|
|
122
|
+
auth: {
|
|
123
|
+
title: "Authentication endpoints",
|
|
124
|
+
description:
|
|
125
|
+
"Use the following endpoints to create sessions and populate the {param} parameter.",
|
|
126
|
+
signinDescription:
|
|
127
|
+
"Authenticate an existing user by providing username and password. Returns a session id that must be sent on subsequent requests.",
|
|
128
|
+
signinEndpoint: "/auth/signin",
|
|
129
|
+
usernameField: "username — unique identifier for the account",
|
|
130
|
+
passwordField:
|
|
131
|
+
"password — plain text password that will be hashed on the server",
|
|
132
|
+
signupDescription:
|
|
133
|
+
"Create a new user. The payload follows the users table schema shown below.",
|
|
134
|
+
signupEndpoint: "/auth/signup",
|
|
135
|
+
currentDescription:
|
|
136
|
+
"Returns the full user object for the session associated with your {param} token.",
|
|
137
|
+
currentEndpoint: "/auth/current",
|
|
138
|
+
signoutDescription:
|
|
139
|
+
"Invalidates the active session and clears the related cookie.",
|
|
140
|
+
signoutEndpoint: "/auth/signout",
|
|
141
|
+
resetRequestDescription:
|
|
142
|
+
"Request a password reset email. Sends a token to the registered email address.",
|
|
143
|
+
resetRequestEndpoint: "/auth/reset",
|
|
144
|
+
resetRequestEmailField: "email — the registered email address",
|
|
145
|
+
resetCompleteDescription:
|
|
146
|
+
"Set a new password using the token received via the password reset email.",
|
|
147
|
+
resetCompleteEndpoint: "/auth/reset",
|
|
148
|
+
resetTokenField: "token — the reset token from the email link",
|
|
149
|
+
resetPasswordField: "password — new password (minimum 8 characters)",
|
|
150
|
+
signupSchemaTitle: "Users schema",
|
|
151
|
+
cookieHint:
|
|
152
|
+
"Successful signin stores the session id inside the {param} cookie. You can also send it manually if needed.",
|
|
153
|
+
},
|
|
154
|
+
publicApi: {
|
|
155
|
+
title: "Public API",
|
|
156
|
+
description:
|
|
157
|
+
"Read-only access to tables that have been made publicly visible. No authentication required.",
|
|
158
|
+
collectionEndpoint: "List items",
|
|
159
|
+
singleEndpoint: "Get single item",
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
|
|
163
|
+
// Relative date terms
|
|
164
|
+
relativeGroup: "Relative",
|
|
165
|
+
relativePlaceholder: "e.g. 3 days ago",
|
|
166
|
+
|
|
167
|
+
// Plural examples
|
|
168
|
+
items: {
|
|
169
|
+
zero: "No items",
|
|
170
|
+
one: "{{count}} item",
|
|
171
|
+
other: "{{count}} items",
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
compression: {
|
|
175
|
+
label: "Compression",
|
|
176
|
+
videoLarge:
|
|
177
|
+
"Large video detected ({size}). We'll optimize it locally before uploading.",
|
|
178
|
+
videoHuge:
|
|
179
|
+
"Huge video detected ({size}). Compression happens locally and may take a while.",
|
|
180
|
+
pdfLarge:
|
|
181
|
+
"Large PDF detected ({size}). We'll rebuild it in your browser before upload.",
|
|
182
|
+
pdfHuge:
|
|
183
|
+
"Huge PDF detected ({size}). Rendering pages locally may take some time.",
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
// Schema fields - assets
|
|
187
|
+
optimizeAssetsDescription:
|
|
188
|
+
"Automatically compress and optimize uploaded files for better performance",
|
|
189
|
+
|
|
190
|
+
// AI Chatbot
|
|
191
|
+
chatbot: "AI Assistant",
|
|
192
|
+
chatWelcomeDefault:
|
|
193
|
+
"Hi! I can help you create new database tables or modify existing ones. Describe what you need and I'll generate the schemas for you.",
|
|
194
|
+
chatWelcomeScopedDatabase:
|
|
195
|
+
"Hi! I can help you create and update tables in this database. For creating a new database, use the Inicontent database workspace.",
|
|
196
|
+
chatWelcomeTables:
|
|
197
|
+
"I'm ready to help you design and manage your database tables. You can ask me to create new tables or edit existing ones.",
|
|
198
|
+
chatWelcomePages:
|
|
199
|
+
"I can help you build website pages. Describe the page you'd like and I'll generate the structure.",
|
|
200
|
+
chatPlaceholder: "Describe a database you'd like to build...",
|
|
201
|
+
chatPlaceholderScopedDatabase:
|
|
202
|
+
"Describe the tables you want to create or update in this database...",
|
|
203
|
+
chatPlaceholderShort: "Type a message...",
|
|
204
|
+
applied: "Applied",
|
|
205
|
+
billing: "Billing",
|
|
206
|
+
chatPaidPlanRequired:
|
|
207
|
+
"This AI assistant is available only with an active paid plan.",
|
|
208
|
+
close: "Close",
|
|
209
|
+
continue: "Continue",
|
|
210
|
+
continued: "Continued",
|
|
211
|
+
dataPreview: "Data Preview",
|
|
212
|
+
generatingMoreTables: "Generating the remaining tables...",
|
|
213
|
+
homePage: "Home page",
|
|
214
|
+
namesUpdated: "Names updated",
|
|
215
|
+
newChat: "New chat",
|
|
216
|
+
pagePreviewUnavailable:
|
|
217
|
+
"Live page preview is available in the Inicontent website builder.",
|
|
218
|
+
published: "Published",
|
|
219
|
+
role: "Role",
|
|
220
|
+
applyChanges: "Apply changes",
|
|
221
|
+
skipAiHelp: "Skip AI help",
|
|
222
|
+
publishData: "Publish data",
|
|
223
|
+
translateData: "Translate",
|
|
224
|
+
tableSchedules: "Table schedules",
|
|
225
|
+
addSchedule: "Add schedule",
|
|
226
|
+
runNow: "Run now",
|
|
227
|
+
runAllActive: "Run all active",
|
|
228
|
+
noActiveSchedules: "No active schedules to run",
|
|
229
|
+
allActiveSchedulesRan: "All active schedules executed successfully",
|
|
230
|
+
someSchedulesFailed: "{count} schedule(s) failed to execute",
|
|
231
|
+
editSchedule: "Edit schedule",
|
|
232
|
+
cronExpression: "Cron expression",
|
|
233
|
+
payloadTemplate: "Payload template",
|
|
234
|
+
nextRunAt: "Next run",
|
|
235
|
+
lastRunAt: "Last run",
|
|
236
|
+
lastError: "Last error",
|
|
237
|
+
excludeDays: "Exclude days",
|
|
238
|
+
excludeDaysHelp:
|
|
239
|
+
"Checked days will be skipped even if the cron expression matches them.",
|
|
240
|
+
excludedDays: "Excluded days",
|
|
241
|
+
noExcludedDays: "None",
|
|
242
|
+
payloadHelp:
|
|
243
|
+
"Use a JSON object or an Inison-stringified object for the row you want to create.",
|
|
244
|
+
payloadTemplateVariablesHelp:
|
|
245
|
+
"Templates: {{ now }}, {{ now + 2h }}, {{ now|iso }}, {{ today|date }}, {{ schedule.id }}, {{ database.slug }}, {{ table.slug }}, {{ run.iso }}.",
|
|
246
|
+
previewResolvedPayload: "Preview resolved payload",
|
|
247
|
+
resolvedPayloadPreview: "Resolved payload preview",
|
|
248
|
+
formatJSON: "Format as JSON",
|
|
249
|
+
fillExample: "Fill example",
|
|
250
|
+
customCronHint: "Use a standard 5-part cron expression in UTC.",
|
|
251
|
+
presetDescriptionHourly: "Runs once every hour.",
|
|
252
|
+
presetDescriptionDaily: "Runs once every day at midnight UTC.",
|
|
253
|
+
presetDescriptionWeekly: "Runs every Monday at midnight UTC.",
|
|
254
|
+
presetDescriptionMonthly:
|
|
255
|
+
"Runs on the first day of each month at midnight UTC.",
|
|
256
|
+
presetDescriptionCustom:
|
|
257
|
+
"Use your own cron expression for advanced schedules.",
|
|
258
|
+
scheduleSummaryNoExcluded: "This schedule will run on all matching days.",
|
|
259
|
+
scheduleSummaryWithExcluded: "This schedule will skip: {days}.",
|
|
260
|
+
tableDemo: "Table preview",
|
|
261
|
+
|
|
262
|
+
billingUi: {
|
|
263
|
+
title: "Billing & Subscription",
|
|
264
|
+
subtitle: "Manage your plan, invoices, and payment settings.",
|
|
265
|
+
noSubscriptionTitle: "No active subscription",
|
|
266
|
+
noSubscriptionBody:
|
|
267
|
+
"Choose a plan to enable billing and unlock storage features.",
|
|
268
|
+
choosePlanTitle: "Choose your plan",
|
|
269
|
+
currentPlanTitle: "Current plan",
|
|
270
|
+
statusLabels: {
|
|
271
|
+
past_due: "Past due",
|
|
272
|
+
},
|
|
273
|
+
upgradePlanTitle: "Upgrade or change plan",
|
|
274
|
+
storageUsageTitle: "Storage usage",
|
|
275
|
+
storageLimitExceededTitle: "Storage limit exceeded",
|
|
276
|
+
storageLimitExceededBody:
|
|
277
|
+
"You are exceeding your storage quota. Consider upgrading your plan or removing unused data.",
|
|
278
|
+
invoicesEmpty: "No invoices yet.",
|
|
279
|
+
paymentSettingsTitle: "Payment settings",
|
|
280
|
+
paymentMethodTitle: "Payment Method",
|
|
281
|
+
paymentMethodSubtitle: "Manage your payment method on PayPal",
|
|
282
|
+
billingEmailTitle: "Billing Email",
|
|
283
|
+
autoRenewalTitle: "Auto-renewal",
|
|
284
|
+
autoRenewalMessage:
|
|
285
|
+
"{{status}} - Your subscription will {{action}} at the end of the billing period.",
|
|
286
|
+
autoRenew: {
|
|
287
|
+
renew: "automatically renew",
|
|
288
|
+
notRenew: "not renew",
|
|
289
|
+
enable: "Enable Auto-renewal",
|
|
290
|
+
disable: "Disable Auto-renewal",
|
|
291
|
+
},
|
|
292
|
+
cancelModalTitle: "Cancel Subscription",
|
|
293
|
+
cancelModalBody:
|
|
294
|
+
"Are you sure you want to cancel your subscription? You will lose access to paid features at the end of the current billing period.",
|
|
295
|
+
cancelModalKeep: "Keep Subscription",
|
|
296
|
+
cancelModalConfirm: "Yes, Cancel",
|
|
297
|
+
invoiceId: "Transaction ID",
|
|
298
|
+
downloadPdf: "Download PDF",
|
|
299
|
+
checkoutSuccess: {
|
|
300
|
+
processingPayment: "Processing your payment...",
|
|
301
|
+
subscriptionActivated: "Subscription Activated!",
|
|
302
|
+
thankYou: "Thank you for choosing Inicontent.",
|
|
303
|
+
orderId: "Order ID",
|
|
304
|
+
firstProject: "You can now create your first project.",
|
|
305
|
+
confirmationEmail:
|
|
306
|
+
"A confirmation email has been sent to your PayPal email address. To get started, head to your dashboard and create your first CMS database.",
|
|
307
|
+
errors: {
|
|
308
|
+
noPaymentToken: "No payment token found. Please try again.",
|
|
309
|
+
failedToProcess: "Failed to process payment. Please contact support.",
|
|
310
|
+
paymentProcessingFailed: "Payment processing failed",
|
|
311
|
+
},
|
|
312
|
+
},
|
|
313
|
+
checkoutCanceled: {
|
|
314
|
+
title: "Checkout Canceled",
|
|
315
|
+
description:
|
|
316
|
+
"Your subscription was not completed. No charges were made.",
|
|
317
|
+
supportMessage:
|
|
318
|
+
"If you encountered any issues during checkout, please contact our support team:",
|
|
319
|
+
},
|
|
320
|
+
credit: {
|
|
321
|
+
balance: "Credit Balance",
|
|
322
|
+
balanceSubtitle: "Your account credit used for monthly charges.",
|
|
323
|
+
topupTitle: "Add Account Credit",
|
|
324
|
+
topupDescription:
|
|
325
|
+
"Add credit via PayPal. Your credit will be used to pay monthly charges automatically.",
|
|
326
|
+
amount: "Amount (USD)",
|
|
327
|
+
amountPlaceholder: "Enter amount",
|
|
328
|
+
youWillAdd: "You will add",
|
|
329
|
+
payWithPayPal: "Pay with PayPal",
|
|
330
|
+
amountTooLow: "Minimum amount is $1",
|
|
331
|
+
amountTooHigh: "Maximum amount is $1,000",
|
|
332
|
+
topupFailed: "Failed to initiate top-up. Please try again.",
|
|
333
|
+
topupSuccess: "Credit Added Successfully",
|
|
334
|
+
topupSuccessDescription: "Your account credit has been updated.",
|
|
335
|
+
topupCanceled: "Top-up Canceled",
|
|
336
|
+
topupCanceledDescription:
|
|
337
|
+
"Your PayPal payment was canceled. No charges were made.",
|
|
338
|
+
processingTopup: "Processing your payment…",
|
|
339
|
+
orderId: "Order ID",
|
|
340
|
+
requestTitle: "Request Bank Transfer Credit",
|
|
341
|
+
requestDescription:
|
|
342
|
+
"Submit a bank transfer request. An admin will verify and apply the credit to your account.",
|
|
343
|
+
note: "Transfer Reference / Note",
|
|
344
|
+
notePlaceholder: "Enter bank transfer reference or additional notes",
|
|
345
|
+
noteRequired: "Please provide a transfer reference or note",
|
|
346
|
+
requestSubmitted:
|
|
347
|
+
"Your credit request has been submitted. An admin will review it shortly.",
|
|
348
|
+
requestFailed: "Failed to submit credit request. Please try again.",
|
|
349
|
+
pendingRequests: "Pending Credit Requests",
|
|
350
|
+
noPendingRequests: "No pending credit requests",
|
|
351
|
+
refreshRequests: "Refresh",
|
|
352
|
+
requestUser: "User",
|
|
353
|
+
requestAmount: "Amount",
|
|
354
|
+
requestNote: "Note",
|
|
355
|
+
requestStatus: "Status",
|
|
356
|
+
graceWarning:
|
|
357
|
+
"Your subscription is in a grace period. Please add credit before the grace period expires to avoid suspension.",
|
|
358
|
+
},
|
|
359
|
+
autoCharge: {
|
|
360
|
+
title: "PayPal Auto-Charge",
|
|
361
|
+
subtitle:
|
|
362
|
+
"Automatically charge your PayPal account when credit is insufficient.",
|
|
363
|
+
statusEnabled: "Enabled",
|
|
364
|
+
enable: "Enable Auto-Charge",
|
|
365
|
+
disable: "Disable Auto-Charge",
|
|
366
|
+
activating: "Activating auto-charge…",
|
|
367
|
+
activatedTitle: "Auto-Charge Enabled",
|
|
368
|
+
activatedDescription:
|
|
369
|
+
"Your PayPal account has been saved. Monthly charges will be collected automatically.",
|
|
370
|
+
activationFailed: "Failed to activate auto-charge",
|
|
371
|
+
missingApprovalSession: "Missing approval session. Please try again.",
|
|
372
|
+
setupCanceled: "Auto-Charge Setup Canceled",
|
|
373
|
+
setupCanceledDescription:
|
|
374
|
+
"You canceled the PayPal authorization. Auto-charge was not enabled.",
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
|
|
378
|
+
pricingUi: {
|
|
379
|
+
title: "Choose Your Plan",
|
|
380
|
+
subtitle: "Simple, transparent pricing with no hidden fees.",
|
|
381
|
+
databaseStorageLabel: "Database Storage (GB)",
|
|
382
|
+
assetStorageLabel: "Asset Storage (GB)",
|
|
383
|
+
currentUsage: "Current Storage Usage",
|
|
384
|
+
usageWarning:
|
|
385
|
+
"You are exceeding your storage quota. Consider upgrading your plan.",
|
|
386
|
+
faqTitle: "Frequently Asked Questions",
|
|
387
|
+
faq: {
|
|
388
|
+
changePlanTitle: "Can I change my storage plan anytime?",
|
|
389
|
+
changePlanBody:
|
|
390
|
+
"Yes. You can upgrade or downgrade your storage plan at any time. Changes take effect on your next billing cycle.",
|
|
391
|
+
exceedQuotaTitle: "What happens if I exceed my storage quota?",
|
|
392
|
+
exceedQuotaBody:
|
|
393
|
+
"You will be notified when you approach your limit. If you exceed it, we will bill you for the additional storage at our stated rates.",
|
|
394
|
+
contractTitle: "Is there a long-term contract?",
|
|
395
|
+
contractBody:
|
|
396
|
+
"No. All plans are month-to-month with no long-term commitment. You can cancel anytime.",
|
|
397
|
+
annualDiscountTitle: "Do you offer annual discounts?",
|
|
398
|
+
annualDiscountBody:
|
|
399
|
+
"Contact our sales team for custom enterprise pricing and volume discounts.",
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
|
|
403
|
+
pricingPageUi: {
|
|
404
|
+
headerTitle: "Pricing Plans",
|
|
405
|
+
headerSubtitle:
|
|
406
|
+
"Simple, transparent pricing with no hidden fees. Pay only for what you use.",
|
|
407
|
+
ctaTitle: "Ready to get started?",
|
|
408
|
+
ctaSubtitle:
|
|
409
|
+
"Join thousands of developers using Inicontent to manage their content.",
|
|
410
|
+
viewSubscription: "View Your Subscription",
|
|
411
|
+
},
|
|
412
|
+
|
|
413
|
+
// JSON Field
|
|
414
|
+
|
|
415
|
+
// Dashboards
|
|
416
|
+
createDatabase: "Create database",
|
|
417
|
+
basicInformation: "Basic information",
|
|
418
|
+
basicInformationDescription: "Set database details and default locale.",
|
|
419
|
+
buildTables: "Build tables",
|
|
420
|
+
buildTablesDescription:
|
|
421
|
+
"Describe your tables and we will generate a starter schema.",
|
|
422
|
+
languages: {
|
|
423
|
+
ar: "Arabic",
|
|
424
|
+
en: "English",
|
|
425
|
+
fr: "French",
|
|
426
|
+
es: "Spanish",
|
|
427
|
+
},
|
|
428
|
+
dashboardName: "Dashboard name",
|
|
429
|
+
dashboardSettings: "Dashboard settings",
|
|
430
|
+
editDashboard: "Edit dashboard",
|
|
431
|
+
createDashboard: "Create dashboard",
|
|
432
|
+
addWidget: "Add widget",
|
|
433
|
+
editWidget: "Edit widget",
|
|
434
|
+
widgetTitle: "Widget title",
|
|
435
|
+
untitledWidget: "Untitled widget",
|
|
436
|
+
noWidgets: "No widgets yet. Add one to get started.",
|
|
437
|
+
widgetCount: {
|
|
438
|
+
zero: "No widgets",
|
|
439
|
+
one: "{count} widget",
|
|
440
|
+
other: "{count} widgets",
|
|
441
|
+
},
|
|
442
|
+
line: "Line chart",
|
|
443
|
+
bar: "Bar chart",
|
|
444
|
+
pie: "Pie chart",
|
|
445
|
+
table: "Table",
|
|
446
|
+
lineChart: "Line chart",
|
|
447
|
+
barChart: "Bar chart",
|
|
448
|
+
pieChart: "Pie chart",
|
|
449
|
+
sourceTable: "Source table",
|
|
450
|
+
selectTable: "Select table",
|
|
451
|
+
selectField: "Select field",
|
|
452
|
+
selectType: "Select type",
|
|
453
|
+
groupBy: "Group by",
|
|
454
|
+
dateField: "Date field",
|
|
455
|
+
dateRange: "Date range",
|
|
456
|
+
last7Days: "Last 7 days",
|
|
457
|
+
last30Days: "Last 30 days",
|
|
458
|
+
last90Days: "Last 90 days",
|
|
459
|
+
lastYear: "Last year",
|
|
460
|
+
allTime: "All time",
|
|
461
|
+
limit: "Limit",
|
|
462
|
+
noData: "No data",
|
|
463
|
+
columnsToDisplay: "Columns to display",
|
|
464
|
+
sortField: "Sort by",
|
|
465
|
+
sortOrder: "Sort order",
|
|
466
|
+
asc: "Ascending",
|
|
467
|
+
desc: "Descending",
|
|
468
|
+
|
|
469
|
+
// Translation drawer
|
|
470
|
+
translateItem: "Translate item",
|
|
471
|
+
original: "Original",
|
|
472
|
+
noSecondaryLanguages:
|
|
473
|
+
"No secondary languages are configured for this database.",
|
|
474
|
+
noTranslatableFields: "No translatable text fields found in this table.",
|
|
475
|
+
translationPlaceholder: "Enter translation…",
|
|
476
|
+
translationsSaved: "Translations saved",
|
|
477
|
+
translationCount: "{count} translations",
|
|
478
|
+
translated: "Translated",
|
|
479
|
+
|
|
480
|
+
passkey: {
|
|
481
|
+
securityTitle: "Passkey Security",
|
|
482
|
+
description:
|
|
483
|
+
"Register a passkey to sign in using your device verification.",
|
|
484
|
+
register: "Register passkey",
|
|
485
|
+
enrollmentTitle: "Set up a passkey",
|
|
486
|
+
enrollmentPrompt:
|
|
487
|
+
"Would you like to set up a passkey for faster, more secure sign-in on this device?",
|
|
488
|
+
notNow: "Not now",
|
|
489
|
+
notSupported: "This browser does not support passkeys.",
|
|
490
|
+
hint: "You can use Face ID, Touch ID, or a security key after registration.",
|
|
491
|
+
registeredSuccessfully: "Passkey registered successfully.",
|
|
492
|
+
registrationFailed: "Passkey registration failed.",
|
|
493
|
+
signin: "Sign in with passkey",
|
|
494
|
+
signinHintUsername:
|
|
495
|
+
"Enter your username or email, then continue with passkey.",
|
|
496
|
+
signinHintDevice:
|
|
497
|
+
"Use your device verification (Face ID, Touch ID, or security key).",
|
|
498
|
+
signinFailed: "Passkey sign-in failed.",
|
|
499
|
+
},
|
|
500
|
+
|
|
501
|
+
// Email settings
|
|
502
|
+
emailConfig: {
|
|
503
|
+
use_custom_smtp: "Use Custom SMTP",
|
|
504
|
+
from_name: "Sender Name",
|
|
505
|
+
smtp_host: "SMTP Host",
|
|
506
|
+
smtp_port: "SMTP Port",
|
|
507
|
+
smtp_user: "SMTP Username",
|
|
508
|
+
smtp_pass: "SMTP Password",
|
|
509
|
+
smtp_secure: "Secure Connection (TLS)",
|
|
510
|
+
},
|
|
511
|
+
smtpPasswordUnchanged: "Leave blank to keep the current password",
|
|
512
|
+
emailSendFailed: "The email could not be sent. Check the email settings.",
|
|
513
|
+
|
|
514
|
+
// Email template editor
|
|
515
|
+
templates: "Email templates",
|
|
516
|
+
emailTemplates: {
|
|
517
|
+
variables: "Variables",
|
|
518
|
+
variableName: "Variable name (e.g. booking_date)",
|
|
519
|
+
add: "Add",
|
|
520
|
+
contentPlaceholder:
|
|
521
|
+
"<mjml>…</mjml> markup (or plain text) — placeholders like {{@user.email}} and {{@data.field}} are replaced on send.",
|
|
522
|
+
preview: "Preview with sample data",
|
|
523
|
+
previewLoading: "Rendering preview…",
|
|
524
|
+
previewSubject: "Subject",
|
|
525
|
+
previewEmpty: "Start writing to see the preview.",
|
|
526
|
+
recordFieldsHint:
|
|
527
|
+
"Every field of the record that triggers the email is available as {{field}} or {{@data.field}}; the current user as {{@user.field}}.",
|
|
528
|
+
sendTest: "Send test",
|
|
529
|
+
sendTestHint:
|
|
530
|
+
"Sends the current template (even unsaved) to the email address below.",
|
|
531
|
+
testRecipient: "Recipient email",
|
|
532
|
+
},
|
|
533
|
+
|
|
534
|
+
// Offline / sync
|
|
535
|
+
online: "Online",
|
|
536
|
+
offline: "Offline",
|
|
537
|
+
onlineTooltip: "Connected to the server",
|
|
538
|
+
offlineTooltip:
|
|
539
|
+
"You are offline. You can keep viewing and editing — changes are saved locally and synced when you reconnect.",
|
|
540
|
+
syncingPending: "Syncing…",
|
|
541
|
+
pendingChanges: "{count} pending change(s)",
|
|
542
|
+
syncNow: "Sync now",
|
|
543
|
+
conflictsPending: "{count} conflict(s) to resolve",
|
|
544
|
+
updateAvailable: "Update available",
|
|
545
|
+
installApp: "Install app",
|
|
546
|
+
resolveConflicts: "Resolve conflicts",
|
|
547
|
+
conflictModalIntro:
|
|
548
|
+
"Your offline change conflicts with a newer version on the server. Choose which version to keep.",
|
|
549
|
+
noConflicts: "No conflicts to resolve",
|
|
550
|
+
discardAll: "Discard all",
|
|
551
|
+
localVersion: "Your version",
|
|
552
|
+
serverVersion: "Server version",
|
|
553
|
+
keepLocal: "Keep mine",
|
|
554
|
+
keepServer: "Keep server",
|
|
555
|
+
changeQueuedForSync: "Change queued for sync",
|
|
556
|
+
localChangeDiscarded: "Local change discarded",
|
|
557
|
+
allLocalChangesDiscarded: "All local changes discarded",
|
|
558
|
+
queuedOfflineToast:
|
|
559
|
+
"You're offline — your change was saved locally and will sync when you're back online.",
|
|
560
|
+
createFailed: "Could not create the item.",
|
|
561
|
+
updateFailed: "Could not update the item.",
|
|
562
|
+
deleteFailed: "Could not delete the item.",
|
|
563
|
+
errorFetchingSchema: "Could not fetch the table schema.",
|
|
564
|
+
|
|
565
|
+
// Document scanner
|
|
566
|
+
documentScanner: "Document scanner",
|
|
567
|
+
camera: "Camera",
|
|
568
|
+
uploadImage: "Upload image",
|
|
569
|
+
openCamera: "Open camera",
|
|
570
|
+
capture: "Capture",
|
|
571
|
+
retake: "Retake",
|
|
572
|
+
reset: "Reset",
|
|
573
|
+
cameraUnavailable: "Camera unavailable",
|
|
574
|
+
loadingScanner: "Loading document scanner",
|
|
575
|
+
error: "Error",
|
|
576
|
+
retry: "Retry",
|
|
577
|
+
dropImageOrClick: "Drop an image here, or click to browse",
|
|
578
|
+
preview: "Preview",
|
|
579
|
+
extractingDocument: "Extracting document",
|
|
580
|
+
ocr: "OCR",
|
|
581
|
+
language: "Language",
|
|
582
|
+
extractedText: "Extracted text",
|
|
583
|
+
copy: "Copy",
|
|
584
|
+
insertAsText: "Insert as text",
|
|
585
|
+
insertAsImage: "Insert as image",
|
|
586
|
+
useThisScan: "Use this scan",
|
|
587
|
+
documentNotDetected: "Document not detected",
|
|
588
|
+
adjustCorners: "Adjust corners",
|
|
589
|
+
dragHandlesToAdjust:
|
|
590
|
+
"Drag the green handles to outline the card, then apply.",
|
|
591
|
+
cancel: "Cancel",
|
|
592
|
+
applyCrop: "Apply crop",
|
|
593
|
+
scanDocument: "Scan document",
|
|
594
|
+
|
|
595
|
+
// Platform workspaces (pages, blocks, templates, billing)
|
|
596
|
+
openInPlatform: "Open in Inicontent",
|
|
597
|
+
platformFeatureIntro:
|
|
598
|
+
"The {{feature}} workspace is part of the Inicontent platform.",
|
|
599
|
+
platformFeatureAt: "Open it at:",
|
|
600
|
+
platformFeatureHint:
|
|
601
|
+
"You'll be signed in automatically with your current session.",
|
|
602
|
+
|
|
603
|
+
// Backups
|
|
604
|
+
backups: "Backups",
|
|
605
|
+
backupsAdminOnly: "Only the database owner (admin) can manage backups.",
|
|
606
|
+
createBackup: "Create backup",
|
|
607
|
+
backupName: "Backup name",
|
|
608
|
+
backupNamePlaceholder: "e.g. Before launch day",
|
|
609
|
+
backupNameHelp:
|
|
610
|
+
"Leave empty to auto-generate a name with the date and time.",
|
|
611
|
+
backupType: "Backup type",
|
|
612
|
+
fullBackup: "Full database",
|
|
613
|
+
tableBackup: "Table",
|
|
614
|
+
fullBackupHelp:
|
|
615
|
+
"Snapshot the whole database folder (all tables and metadata) as a raw archive.",
|
|
616
|
+
tableBackupHelp: "Snapshot a single table folder as a raw archive.",
|
|
617
|
+
backupCreatedSuccessfully:
|
|
618
|
+
"Backup started. It will appear here when finished.",
|
|
619
|
+
backupDeletedSuccessfully: "Backup deleted",
|
|
620
|
+
backupOrigin: "Origin",
|
|
621
|
+
automaticBackup: "Automatic",
|
|
622
|
+
manualBackup: "Manual",
|
|
623
|
+
backupSize: "Size",
|
|
624
|
+
backupState: "State",
|
|
625
|
+
queued: "Queued",
|
|
626
|
+
running: "Running",
|
|
627
|
+
completed: "Completed",
|
|
628
|
+
failed: "Failed",
|
|
629
|
+
restoring: "Restoring",
|
|
630
|
+
restoreBackup: "Restore backup",
|
|
631
|
+
restoreScope: "Restore scope",
|
|
632
|
+
restoreWarning:
|
|
633
|
+
"Restoring overwrites existing data with the content of this backup. This action cannot be undone.",
|
|
634
|
+
restoreConfirmation: "Confirmation",
|
|
635
|
+
restoreConfirmationHelp: "I understand this will overwrite existing data.",
|
|
636
|
+
restoreStarted: "Restore started. You will be notified when it completes.",
|
|
637
|
+
restore: "Restore",
|
|
638
|
+
backupScopeTable: "Table (whole folder)",
|
|
639
|
+
backupScopeTableSchema: "Table schema only",
|
|
640
|
+
backupScopeTableData: "Table data only",
|
|
641
|
+
backupScopeDatabaseSchema: "All table schemas",
|
|
642
|
+
backupScopeDatabaseData: "All table data",
|
|
643
|
+
backupScopeDatabaseFull: "Entire database (schemas + data)",
|
|
644
|
+
folder: "Folder",
|
|
645
|
+
folderName: "Folder name",
|
|
646
|
+
refresh: "Refresh",
|
|
647
|
+
delete: "Delete",
|
|
648
|
+
createdAt: "Created at",
|
|
649
|
+
actions: "Actions",
|
|
650
|
+
accessDenied: "Access denied",
|
|
651
|
+
folderCreatedSuccessfully: "Folder created successfully",
|
|
652
|
+
deleteBackupConfirm:
|
|
653
|
+
'Delete backup "{name}"? This action cannot be undone.',
|
|
654
|
+
},
|
|
655
|
+
} as const;
|