@fayz-ai/core 0.8.3 → 0.8.5
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/access/engine.d.ts +8 -1
- package/dist/access/engine.d.ts.map +1 -1
- package/dist/access/index.d.ts +1 -1
- package/dist/access/index.d.ts.map +1 -1
- package/dist/access/index.js +6 -1
- package/dist/access/index.js.map +1 -1
- package/dist/chunk-HN7PTOSH.js +1149 -0
- package/dist/chunk-HN7PTOSH.js.map +1 -0
- package/dist/{chunk-KSI2L3E4.cjs → chunk-V2MSAUHO.js} +165 -40
- package/dist/chunk-V2MSAUHO.js.map +1 -0
- package/dist/data/archetype.d.ts.map +1 -1
- package/dist/data/bulk.d.ts +17 -0
- package/dist/data/bulk.d.ts.map +1 -0
- package/dist/data/filters.d.ts +29 -0
- package/dist/data/filters.d.ts.map +1 -0
- package/dist/data/index.d.ts +2 -2
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/mock.d.ts.map +1 -1
- package/dist/data/platform-api.d.ts.map +1 -1
- package/dist/data/refresh.d.ts.map +1 -1
- package/dist/data/resolve.d.ts +10 -0
- package/dist/data/resolve.d.ts.map +1 -1
- package/dist/data/supabase.d.ts.map +1 -1
- package/dist/data/types.d.ts +22 -0
- package/dist/data/types.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +7 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/shell-translations.en.d.ts +2 -0
- package/dist/i18n/shell-translations.en.d.ts.map +1 -0
- package/dist/i18n/shell-translations.pt-br.d.ts +2 -0
- package/dist/i18n/shell-translations.pt-br.d.ts.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/search/engine.d.ts.map +1 -1
- package/dist/shell-translations.pt-br-2GWRQRRP.js +875 -0
- package/dist/shell-translations.pt-br-2GWRQRRP.js.map +1 -0
- package/dist/tenant/index.d.ts +10 -0
- package/dist/tenant/index.d.ts.map +1 -1
- package/dist/types/org.d.ts +9 -3
- package/dist/types/org.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +8 -0
- package/dist/types/plugins.d.ts.map +1 -1
- package/package.json +21 -29
- package/src/access/engine.ts +16 -1
- package/src/access/index.ts +1 -0
- package/src/app/render.tsx +1 -1
- package/src/data/archetype.ts +23 -0
- package/src/data/bulk.ts +35 -0
- package/src/data/filters.test.ts +70 -0
- package/src/data/filters.ts +90 -0
- package/src/data/index.ts +2 -2
- package/src/data/mock.ts +8 -2
- package/src/data/platform-api.ts +12 -3
- package/src/data/refresh.ts +11 -1
- package/src/data/resolve.ts +16 -4
- package/src/data/supabase.ts +60 -1
- package/src/data/types.ts +24 -0
- package/src/i18n/index.ts +58 -6
- package/src/i18n/shell-translations.en.ts +875 -0
- package/src/i18n/shell-translations.pt-br.ts +873 -0
- package/src/index.ts +11 -3
- package/src/search/engine.ts +8 -0
- package/src/tenant/index.ts +20 -0
- package/src/types/org.ts +9 -3
- package/src/types/plugins.ts +8 -0
- package/dist/access/index.cjs +0 -60
- package/dist/access/index.cjs.map +0 -1
- package/dist/chunk-56GH3WC2.cjs +0 -35
- package/dist/chunk-56GH3WC2.cjs.map +0 -1
- package/dist/chunk-5TKIZVVJ.cjs +0 -16
- package/dist/chunk-5TKIZVVJ.cjs.map +0 -1
- package/dist/chunk-AXTWKF5X.cjs +0 -38
- package/dist/chunk-AXTWKF5X.cjs.map +0 -1
- package/dist/chunk-CATASHPK.cjs +0 -2018
- package/dist/chunk-CATASHPK.cjs.map +0 -1
- package/dist/chunk-DZALZ6Q6.js +0 -1988
- package/dist/chunk-DZALZ6Q6.js.map +0 -1
- package/dist/chunk-KSI2L3E4.cjs.map +0 -1
- package/dist/chunk-P5OJUH25.cjs +0 -81
- package/dist/chunk-P5OJUH25.cjs.map +0 -1
- package/dist/chunk-TYPVSWLG.js +0 -718
- package/dist/chunk-TYPVSWLG.js.map +0 -1
- package/dist/chunk-UKU4RIWM.cjs +0 -32
- package/dist/chunk-UKU4RIWM.cjs.map +0 -1
- package/dist/chunk-ZOPJB5FN.cjs +0 -369
- package/dist/chunk-ZOPJB5FN.cjs.map +0 -1
- package/dist/data/cloud.d.ts +0 -5
- package/dist/data/cloud.d.ts.map +0 -1
- package/dist/data/index.cjs +0 -52
- package/dist/data/index.cjs.map +0 -1
- package/dist/entity/index.cjs +0 -28
- package/dist/entity/index.cjs.map +0 -1
- package/dist/i18n/index.cjs +0 -44
- package/dist/i18n/index.cjs.map +0 -1
- package/dist/i18n/shell-translations.d.ts +0 -2
- package/dist/i18n/shell-translations.d.ts.map +0 -1
- package/dist/index.cjs +0 -2462
- package/dist/index.cjs.map +0 -1
- package/dist/integrations/index.cjs +0 -12
- package/dist/integrations/index.cjs.map +0 -1
- package/dist/plugin/index.cjs +0 -32
- package/dist/plugin/index.cjs.map +0 -1
- package/dist/router/index.cjs +0 -16
- package/dist/router/index.cjs.map +0 -1
- package/dist/runtime/index.cjs +0 -16
- package/dist/runtime/index.cjs.map +0 -1
- package/dist/testing/index.cjs +0 -20
- package/dist/testing/index.cjs.map +0 -1
- package/dist/types/index.cjs +0 -4
- package/dist/types/index.cjs.map +0 -1
- package/src/data/cloud.ts +0 -28
- package/src/i18n/shell-translations.ts +0 -1748
|
@@ -0,0 +1,1149 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
// src/i18n/index.ts
|
|
4
|
+
|
|
5
|
+
// src/i18n/shell-translations.en.ts
|
|
6
|
+
var shellTranslationsEn = {
|
|
7
|
+
"common.save": "Save",
|
|
8
|
+
"common.saveChanges": "Save Changes",
|
|
9
|
+
"common.saving": "Saving...",
|
|
10
|
+
"common.cancel": "Cancel",
|
|
11
|
+
"common.delete": "Delete",
|
|
12
|
+
"common.edit": "Edit",
|
|
13
|
+
"common.close": "Close",
|
|
14
|
+
"common.confirm": "Confirm",
|
|
15
|
+
"common.back": "Back",
|
|
16
|
+
"common.add": "Add",
|
|
17
|
+
"common.loading": "Loading...",
|
|
18
|
+
"common.error": "Something went wrong",
|
|
19
|
+
"common.noResults": "No results found.",
|
|
20
|
+
"common.search": "Search",
|
|
21
|
+
"common.actions": "Actions",
|
|
22
|
+
"common.continue": "Continue",
|
|
23
|
+
"common.done": "Done",
|
|
24
|
+
"common.yes": "Yes",
|
|
25
|
+
"common.no": "No",
|
|
26
|
+
"common.active": "Active",
|
|
27
|
+
"common.inactive": "Inactive",
|
|
28
|
+
"common.overview": "Overview",
|
|
29
|
+
"common.notFound": "Not Found",
|
|
30
|
+
"common.untitled": "Untitled",
|
|
31
|
+
"common.noContentYet": "No content yet",
|
|
32
|
+
"common.selectDate": "Select date",
|
|
33
|
+
"common.plugins": "Plugins",
|
|
34
|
+
"auth.login.title": "Sign in",
|
|
35
|
+
"auth.login.titleCentered": "Welcome Back",
|
|
36
|
+
"auth.login.subtitle": "Enter your credentials to access your account",
|
|
37
|
+
"auth.login.emailLabel": "Email",
|
|
38
|
+
"auth.login.emailPlaceholder": "you@example.com",
|
|
39
|
+
"auth.login.passwordLabel": "Password",
|
|
40
|
+
"auth.login.passwordPlaceholder": "Enter your password",
|
|
41
|
+
"auth.login.forgotPassword": "Forgot password?",
|
|
42
|
+
"auth.login.submit": "Sign in",
|
|
43
|
+
"auth.login.submitting": "Signing in...",
|
|
44
|
+
"auth.login.error": "Failed to sign in. Please try again.",
|
|
45
|
+
"auth.login.oauthDivider": "or continue with",
|
|
46
|
+
"auth.login.noAccount": "Don't have an account?",
|
|
47
|
+
"auth.login.noAccountCentered": "Don't have an account yet?",
|
|
48
|
+
"auth.login.signUpLink": "Sign up",
|
|
49
|
+
"auth.login.socialProof": "Join thousands of businesses already using {{appName}}",
|
|
50
|
+
"auth.signup.title": "Create account",
|
|
51
|
+
"auth.signup.titleCentered": "Create Account",
|
|
52
|
+
"auth.signup.subtitle": "Get started with your new account",
|
|
53
|
+
"auth.signup.nameLabel": "Full name",
|
|
54
|
+
"auth.signup.namePlaceholder": "John Doe",
|
|
55
|
+
"auth.signup.emailLabel": "Email",
|
|
56
|
+
"auth.signup.emailPlaceholder": "you@example.com",
|
|
57
|
+
"auth.signup.passwordLabel": "Password",
|
|
58
|
+
"auth.signup.passwordPlaceholder": "At least 8 characters",
|
|
59
|
+
"auth.signup.confirmPasswordLabel": "Confirm password",
|
|
60
|
+
"auth.signup.confirmPasswordPlaceholder": "Repeat your password",
|
|
61
|
+
"auth.signup.termsPrefix": "By creating an account, you agree to our",
|
|
62
|
+
"auth.signup.termsOfService": "Terms of Service",
|
|
63
|
+
"auth.signup.privacyPolicy": "Privacy Policy",
|
|
64
|
+
"auth.signup.submit": "Create account",
|
|
65
|
+
"auth.signup.submitting": "Creating account...",
|
|
66
|
+
"auth.signup.error": "Failed to create account. Please try again.",
|
|
67
|
+
"auth.signup.passwordMismatch": "Passwords do not match.",
|
|
68
|
+
"auth.signup.passwordTooShort": "Password must be at least 8 characters.",
|
|
69
|
+
"auth.signup.success": "Account created for {{email}}. Check your inbox to confirm your email before signing in.",
|
|
70
|
+
"auth.signup.hasAccount": "Already have an account?",
|
|
71
|
+
"auth.signup.signInLink": "Sign in",
|
|
72
|
+
"auth.recovery.title": "Reset password",
|
|
73
|
+
"auth.recovery.titleCentered": "Reset Password",
|
|
74
|
+
"auth.recovery.instruction": "Enter your email address and we will send you a link to reset your password.",
|
|
75
|
+
"auth.recovery.subtitle": "We'll send you a reset link",
|
|
76
|
+
"auth.recovery.emailLabel": "Email",
|
|
77
|
+
"auth.recovery.emailPlaceholder": "you@example.com",
|
|
78
|
+
"auth.recovery.submit": "Send reset link",
|
|
79
|
+
"auth.recovery.submitting": "Sending...",
|
|
80
|
+
"auth.recovery.error": "Failed to send reset email. Please try again.",
|
|
81
|
+
"auth.recovery.successHeading": "Check your email",
|
|
82
|
+
"auth.recovery.successMessage": "We sent a password reset link to {{email}}. Please check your inbox and follow the instructions.",
|
|
83
|
+
"auth.recovery.backToLogin": "Back to login",
|
|
84
|
+
"auth.oauth.continueWith": "Continue with {{provider}}",
|
|
85
|
+
"auth.signIn": "Sign In",
|
|
86
|
+
"auth.signUp": "Sign Up",
|
|
87
|
+
"auth.signOut": "Sign Out",
|
|
88
|
+
"auth.email": "Email",
|
|
89
|
+
"auth.password": "Password",
|
|
90
|
+
"auth.forgotPassword": "Forgot Password?",
|
|
91
|
+
"crud.list.empty": "No {{entities}} yet",
|
|
92
|
+
"crud.list.addFirst": "Add your first {{entity}}",
|
|
93
|
+
"crud.list.totalCount": "{{count}} total {{entities}}",
|
|
94
|
+
"crud.list.searchPlaceholder": "Search {{entities}}...",
|
|
95
|
+
"crud.list.allFacet": "All",
|
|
96
|
+
"crud.list.addButton": "+ Add {{entity}}",
|
|
97
|
+
"crud.detail.notFound": "{{entity}} not found.",
|
|
98
|
+
"crud.detail.backTo": "Back to {{entities}}",
|
|
99
|
+
"crud.form.addTitle": "Add {{entity}}",
|
|
100
|
+
"crud.form.editTitle": "Edit {{entity}}",
|
|
101
|
+
"crud.form.createSubtitle": "Create a new {{entity}}.",
|
|
102
|
+
"crud.form.editSubtitle": "Update {{entity}} details.",
|
|
103
|
+
"crud.form.newBreadcrumb": "New {{entity}}",
|
|
104
|
+
"crud.form.selectPlaceholder": "Select {{label}}...",
|
|
105
|
+
"crud.form.saveError": "Failed to save {{entity}}",
|
|
106
|
+
"crud.form.saving": "Saving...",
|
|
107
|
+
"crud.form.requiredIndicator": "*",
|
|
108
|
+
"crud.import.action": "Import",
|
|
109
|
+
"crud.import.title": "Import {{entity}}",
|
|
110
|
+
"crud.import.step.download": "Template",
|
|
111
|
+
"crud.import.step.upload": "Upload",
|
|
112
|
+
"crud.import.step.mapping": "Mapping",
|
|
113
|
+
"crud.import.step.importing": "Import",
|
|
114
|
+
"crud.import.downloadTitle": "Download the template",
|
|
115
|
+
"crud.import.downloadDescription": "Download a CSV template with all available fields for {{entity}}. Fill it in and upload it in the next step.",
|
|
116
|
+
"crud.import.downloadTemplate": "Download CSV template",
|
|
117
|
+
"crud.import.downloadHint": "{{count}} fields available",
|
|
118
|
+
"crud.import.alreadyHaveFile": "I already have a file",
|
|
119
|
+
"crud.import.uploadTitle": "Drop your CSV file here or click to browse",
|
|
120
|
+
"crud.import.uploadHint": "Only .csv files are accepted",
|
|
121
|
+
"crud.import.invalidFile": "Please upload a .csv file.",
|
|
122
|
+
"crud.import.emptyFile": "The file appears to be empty.",
|
|
123
|
+
"crud.import.noRows": "The file has headers but no data rows.",
|
|
124
|
+
"crud.import.mappingTitle": "Map your columns",
|
|
125
|
+
"crud.import.mappingDescription": "{{file}} \u2014 {{columns}} columns, {{rows}} rows",
|
|
126
|
+
"crud.import.mappedCount": "{{count}} of {{total}} mapped",
|
|
127
|
+
"crud.import.csvColumn": "CSV Column",
|
|
128
|
+
"crud.import.mapsTo": "Maps to",
|
|
129
|
+
"crud.import.preview": "Preview",
|
|
130
|
+
"crud.import.skip": "\u2014 Skip this column",
|
|
131
|
+
"crud.import.startImport": "Start import",
|
|
132
|
+
"crud.import.importing": "Importing...",
|
|
133
|
+
"crud.import.importingHint": "Processing {{count}} rows",
|
|
134
|
+
"crud.import.progressCount": "{{processed}} of {{total}} rows processed",
|
|
135
|
+
"crud.import.doneSuccess": "Import complete!",
|
|
136
|
+
"crud.import.doneWithErrors": "Import completed with errors",
|
|
137
|
+
"crud.import.doneCount": "{{success}} of {{total}} rows imported successfully",
|
|
138
|
+
"crud.import.rowNumber": "Row {{row}}:",
|
|
139
|
+
"crud.import.toastSuccess": "{{count}} records imported",
|
|
140
|
+
"crud.import.noConnection": "Not connected to the database. Import requires an active connection.",
|
|
141
|
+
"crud.import.limitExceeded": "This import exceeds your plan limit. Upgrade or import fewer rows.",
|
|
142
|
+
"crud.export.action": "Export",
|
|
143
|
+
"crud.export.noData": "No data to export.",
|
|
144
|
+
"crud.export.toastSuccess": "{{count}} records exported",
|
|
145
|
+
"crud.delete.title": "Delete {{entity}}?",
|
|
146
|
+
"crud.delete.confirmNamed": 'Are you sure you want to delete "{{displayValue}}"? This action cannot be undone.',
|
|
147
|
+
"crud.delete.confirmGeneric": "Are you sure you want to delete this {{entity}}? This action cannot be undone.",
|
|
148
|
+
"crud.delete.cancel": "Cancel",
|
|
149
|
+
"crud.delete.delete": "Delete",
|
|
150
|
+
"crud.tabs.access": "Access",
|
|
151
|
+
"crud.tabs.schedule": "Schedule",
|
|
152
|
+
"crud.tabs.documents": "Documents",
|
|
153
|
+
"crud.tabs.financial": "Statement",
|
|
154
|
+
"crud.tabs.activity": "Activity",
|
|
155
|
+
"crud.tabs.inventory": "Inventory",
|
|
156
|
+
"crud.tabs.suppliers": "Suppliers",
|
|
157
|
+
"crud.tabs.pricing": "Pricing",
|
|
158
|
+
"crud.tabs.members": "Team",
|
|
159
|
+
"crud.tabs.stats": "Statistics",
|
|
160
|
+
"crud.tabs.availability": "Availability",
|
|
161
|
+
"crud.tabs.orders": "Orders",
|
|
162
|
+
"crud.orders.all": "All",
|
|
163
|
+
"crud.orders.columnDate": "Date",
|
|
164
|
+
"crud.orders.columnStage": "Stage",
|
|
165
|
+
"crud.orders.columnDescription": "Description",
|
|
166
|
+
"crud.orders.columnAmount": "Amount",
|
|
167
|
+
"crud.orders.searchPlaceholder": "Search orders...",
|
|
168
|
+
"crud.orders.noDocuments": "No orders yet",
|
|
169
|
+
"crud.orders.stage.draft": "Draft",
|
|
170
|
+
"crud.orders.stage.quoted": "Quoted",
|
|
171
|
+
"crud.orders.stage.booked": "Booked",
|
|
172
|
+
"crud.orders.stage.invoiced": "Invoiced",
|
|
173
|
+
"crud.orders.stage.paid": "Paid",
|
|
174
|
+
"crud.orders.stage.partial": "Partial",
|
|
175
|
+
"crud.orders.stage.overdue": "Overdue",
|
|
176
|
+
"crud.orders.stage.cancelled": "Cancelled",
|
|
177
|
+
"crud.orders.stage.no_show": "No Show",
|
|
178
|
+
"crud.orders.stage.completed": "Completed",
|
|
179
|
+
"layout.userMenu.profile": "Profile",
|
|
180
|
+
"layout.userMenu.settings": "Settings",
|
|
181
|
+
"layout.userMenu.billing": "Billing",
|
|
182
|
+
"layout.userMenu.help": "Help",
|
|
183
|
+
"layout.userMenu.lightMode": "Light mode",
|
|
184
|
+
"layout.userMenu.darkMode": "Dark mode",
|
|
185
|
+
"layout.userMenu.systemMode": "System",
|
|
186
|
+
"layout.userMenu.language": "Language",
|
|
187
|
+
"layout.userMenu.selectLocation": "Select location",
|
|
188
|
+
"layout.switchingLocation": "Switching location\u2026",
|
|
189
|
+
"layout.userMenu.signOut": "Sign out",
|
|
190
|
+
"layout.topbar.searchPlaceholder": "Search...",
|
|
191
|
+
"layout.topbar.keyboardShortcut": "\u2318K",
|
|
192
|
+
"layout.sidebar.collapse": "Collapse sidebar",
|
|
193
|
+
"layout.sidebar.expand": "Expand sidebar",
|
|
194
|
+
"layout.commandPalette.placeholder": "Search pages, people, products, services...",
|
|
195
|
+
"layout.commandPalette.resultsCount": "{{count}} result{{plural}}",
|
|
196
|
+
"layout.commandPalette.commandsCount": "{{count}} command{{plural}}",
|
|
197
|
+
"layout.commandPalette.noResults": "No results found.",
|
|
198
|
+
"layout.commandPalette.searching": "Searching\u2026",
|
|
199
|
+
"layout.commandPalette.navigate": "navigate",
|
|
200
|
+
"layout.commandPalette.open": "open",
|
|
201
|
+
"billing.title": "Billing",
|
|
202
|
+
"billing.subtitle": "Manage your subscription and billing.",
|
|
203
|
+
"billing.currentPlan": "Current Plan",
|
|
204
|
+
"billing.subscription.title": "Subscription",
|
|
205
|
+
"billing.subscription.subtitle": "Manage your plan and unlock more features.",
|
|
206
|
+
"billing.changeToPlan": "Switch to this plan",
|
|
207
|
+
"billing.featureMatrix": "Feature comparison",
|
|
208
|
+
"billing.changePlanConfirmTitle": "Change plan?",
|
|
209
|
+
"billing.changePlanConfirmBody": "You're switching to the {{plan}} plan.",
|
|
210
|
+
"billing.changePlanConfirm": "Switch plan",
|
|
211
|
+
"billing.planChanged": "You're now on the {{plan}} plan.",
|
|
212
|
+
"billing.planChangeFailed": "Couldn't change your plan. Please try again.",
|
|
213
|
+
"billing.noPlans": "No plans are configured.",
|
|
214
|
+
"billing.pro": "Pro",
|
|
215
|
+
"billing.upgrade": "Upgrade",
|
|
216
|
+
"billing.downgrade": "Downgrade",
|
|
217
|
+
"billing.monthly": "Monthly",
|
|
218
|
+
"billing.yearly": "Yearly",
|
|
219
|
+
"billing.yearlySave": "Save 20%",
|
|
220
|
+
"billing.free": "Free",
|
|
221
|
+
"billing.cancelSubscription": "Cancel Subscription",
|
|
222
|
+
"billing.canceling": "Canceling...",
|
|
223
|
+
"billing.resumeSubscription": "Resume Subscription",
|
|
224
|
+
"billing.resuming": "Resuming...",
|
|
225
|
+
"billing.features": "Features",
|
|
226
|
+
"billing.perMonth": "/mo",
|
|
227
|
+
"billing.perYear": "/yr",
|
|
228
|
+
"billing.getStarted": "Get Started",
|
|
229
|
+
"billing.processing": "Processing...",
|
|
230
|
+
"billing.mostPopular": "Most Popular",
|
|
231
|
+
"billing.nextBilling": "Next billing: {{date}}",
|
|
232
|
+
"billing.cancelsOn": "Cancels on {{date}}",
|
|
233
|
+
"billing.trialEnds": "Trial ends {{date}}",
|
|
234
|
+
"billing.pastDueWarning": "Your payment is past due. Please update your payment method to avoid service interruption.",
|
|
235
|
+
"billing.status.active": "Active",
|
|
236
|
+
"billing.status.trialing": "Trial",
|
|
237
|
+
"billing.status.pastDue": "Past Due",
|
|
238
|
+
"billing.status.canceled": "Canceled",
|
|
239
|
+
"billing.status.paused": "Paused",
|
|
240
|
+
"organization.invite": "Invite",
|
|
241
|
+
"organization.members": "Members",
|
|
242
|
+
"organization.memberCount": "{{count}} member{{plural}} in this organization.",
|
|
243
|
+
"organization.role": "Role",
|
|
244
|
+
"organization.emailPlaceholder": "team@example.com",
|
|
245
|
+
"organization.sendInvites": "Send Invites",
|
|
246
|
+
"organization.sending": "Sending...",
|
|
247
|
+
"organization.pending": "Pending Invites",
|
|
248
|
+
"organization.remove": "Remove member",
|
|
249
|
+
"organization.resend": "Resend",
|
|
250
|
+
"organization.revoke": "Revoke",
|
|
251
|
+
"organization.inviteTitle": "Invite Team Members",
|
|
252
|
+
"organization.inviteDescription": "Send invites to join your organization.",
|
|
253
|
+
"organization.inviteSent": "Invitations sent",
|
|
254
|
+
"organization.inviteSentDescription": "Your team members will receive an email with instructions to join.",
|
|
255
|
+
"organization.emailAddresses": "Email addresses",
|
|
256
|
+
"organization.addAnother": "Add another",
|
|
257
|
+
"organization.selectRole": "Select a role",
|
|
258
|
+
"organization.sent": "Sent {{date}}",
|
|
259
|
+
"organization.you": "(you)",
|
|
260
|
+
"organization.joined": "Joined",
|
|
261
|
+
"organization.failedInvites": "Failed to send invites",
|
|
262
|
+
"organization.onboarding.title": "Set up your workspace",
|
|
263
|
+
"organization.onboarding.namePrompt": "What should we call your workspace?",
|
|
264
|
+
"organization.onboarding.preferencesPrompt": "Regional preferences",
|
|
265
|
+
"organization.onboarding.workspaceName": "Workspace name",
|
|
266
|
+
"organization.onboarding.workspaceNamePlaceholder": "My Company",
|
|
267
|
+
"organization.onboarding.timezone": "Timezone",
|
|
268
|
+
"organization.onboarding.currency": "Currency",
|
|
269
|
+
"organization.onboarding.creating": "Setting up your workspace",
|
|
270
|
+
"organization.onboarding.creatingDescription": "This will only take a moment...",
|
|
271
|
+
"organization.onboarding.createWorkspace": "Create Workspace",
|
|
272
|
+
"organization.onboarding.failedCreate": "Failed to create workspace",
|
|
273
|
+
"settings.title": "Settings",
|
|
274
|
+
"settings.subtitle": "Manage your account and organization preferences.",
|
|
275
|
+
"settings.backToHome": "Back to home",
|
|
276
|
+
"settings.navLinks": "Settings links",
|
|
277
|
+
"settings.general": "General",
|
|
278
|
+
"settings.properties": "Properties",
|
|
279
|
+
"settings.profile": "Profile",
|
|
280
|
+
"settings.branding": "Branding",
|
|
281
|
+
"settings.security": "Security",
|
|
282
|
+
"settings.sites": "Sites",
|
|
283
|
+
"settings.connectors": "Connectors",
|
|
284
|
+
"settings.subscription": "Subscription",
|
|
285
|
+
"upgrade.title": "Premium feature",
|
|
286
|
+
"upgrade.description": "This feature is available on a higher plan. Upgrade to unlock it.",
|
|
287
|
+
"upgrade.descriptionFeature": "The {feature} feature is available on a higher plan. Upgrade to unlock it.",
|
|
288
|
+
"contactPicker.search": "Search contact...",
|
|
289
|
+
"contactPicker.newContact": "New contact",
|
|
290
|
+
"contactPicker.name": "Name",
|
|
291
|
+
"contactPicker.phone": "Phone",
|
|
292
|
+
"contactPicker.emailOptional": "Email (optional)",
|
|
293
|
+
"contactPicker.create": "Create",
|
|
294
|
+
"contactPicker.creating": "Creating...",
|
|
295
|
+
"contactPicker.cancel": "Cancel",
|
|
296
|
+
"contactPicker.clear": "Clear contact",
|
|
297
|
+
"contactPicker.createFailed": "Could not create the contact",
|
|
298
|
+
"contactPicker.addField": "Add {label}",
|
|
299
|
+
"upgrade.includes": "Includes {feature}",
|
|
300
|
+
"upgrade.cta": "View plans",
|
|
301
|
+
"upgrade.badgeTooltip": "Available on a higher plan",
|
|
302
|
+
"upgrade.unlock": "Unlock {feature}",
|
|
303
|
+
"upgrade.currentPlan": "Your plan: {plan}",
|
|
304
|
+
"upgrade.recommended": "Recommended",
|
|
305
|
+
"upgrade.ctaUpgrade": "Upgrade",
|
|
306
|
+
"upgrade.ctaUpgradeTo": "Upgrade to {plan}",
|
|
307
|
+
"upgrade.compareAll": "Compare all plans",
|
|
308
|
+
"upgrade.valueGeneric": "Get everything you need to grow \u2014 included in the plans below.",
|
|
309
|
+
"upgrade.value.marketing": "Campaigns, funnel and content to grow your client base.",
|
|
310
|
+
"upgrade.value.reports": "Advanced reports and insights to make sharper decisions.",
|
|
311
|
+
"upgrade.value.fin_reconciliation": "Reconcile payments and keep your cash flow under control.",
|
|
312
|
+
"upgrade.value.assistant": "Your operations copilot \u2014 ask, analyze and act with AI.",
|
|
313
|
+
"upgrade.feature.assistant": "AI Assistant",
|
|
314
|
+
"billing.unlimited": "Unlimited",
|
|
315
|
+
"billing.upTo": "Up to {count}",
|
|
316
|
+
"limit.label.clients": "clients",
|
|
317
|
+
"limit.label.users": "team members",
|
|
318
|
+
"limit.label.locations": "locations",
|
|
319
|
+
"limit.label.bookings_month": "monthly bookings",
|
|
320
|
+
"limit.label.products": "products",
|
|
321
|
+
"limit.label.students": "students",
|
|
322
|
+
"limit.label.courses": "courses",
|
|
323
|
+
"limit.label.contacts": "contacts",
|
|
324
|
+
"limit.label.deals": "deals",
|
|
325
|
+
"limit.label.menu_items": "menu items",
|
|
326
|
+
"limit.label.orders_month": "monthly orders",
|
|
327
|
+
"limit.label.connected_banks": "connected banks",
|
|
328
|
+
"limit.label.movements_month": "monthly movements",
|
|
329
|
+
"limit.label.leads": "leads",
|
|
330
|
+
"limit.label.quotes": "quotes",
|
|
331
|
+
"limit.label.conversations_month": "monthly conversations",
|
|
332
|
+
"limit.label.ai_credits_month": "AI credits per month",
|
|
333
|
+
"limit.label.recipes": "recipes",
|
|
334
|
+
"limit.label.form_templates": "form templates",
|
|
335
|
+
"limit.label.documents_month": "monthly documents",
|
|
336
|
+
"limit.label.content_posts_month": "monthly content posts",
|
|
337
|
+
"limit.label.blog_posts": "blog posts",
|
|
338
|
+
"limit.reached": "Voc\xEA atingiu o limite de {label} do plano {plan}.",
|
|
339
|
+
"banner.overLimit": "Voc\xEA excedeu o limite de {label} do seu plano \u2014 fa\xE7a upgrade para continuar crescendo.",
|
|
340
|
+
"settings.team": "Team",
|
|
341
|
+
"settings.permissions": "Permissions",
|
|
342
|
+
"settings.locations": "Locations",
|
|
343
|
+
"settings.holidays": "Holidays",
|
|
344
|
+
"settings.notifications": "Notifications",
|
|
345
|
+
"settings.save": "Save Changes",
|
|
346
|
+
"settings.saving": "Saving...",
|
|
347
|
+
"settings.companyInfo": "Company Information",
|
|
348
|
+
"settings.companyInfoDescription": "Update your organization details and regional preferences.",
|
|
349
|
+
"settings.companyName": "Company Name",
|
|
350
|
+
"settings.companyNamePlaceholder": "Acme Inc.",
|
|
351
|
+
"settings.timezone": "Timezone",
|
|
352
|
+
"settings.timezonePlaceholder": "Select timezone",
|
|
353
|
+
"settings.currency": "Currency",
|
|
354
|
+
"settings.currencyPlaceholder": "Select currency",
|
|
355
|
+
"settings.locale": "Locale",
|
|
356
|
+
"settings.localePlaceholder": "Select locale",
|
|
357
|
+
"settings.uploadLogo": "Upload Logo",
|
|
358
|
+
"settings.uiLanguage": "Interface Language",
|
|
359
|
+
"settings.uiLanguageDescription": "Choose the language for the user interface. This applies to your session only.",
|
|
360
|
+
"notifications.title": "Notifications",
|
|
361
|
+
"notifications.markAllRead": "Mark all read",
|
|
362
|
+
"notifications.empty": "No notifications",
|
|
363
|
+
"notifications.whatsNew": "What's New",
|
|
364
|
+
"notifications.inbox": "Inbox",
|
|
365
|
+
"user.profile": "Profile",
|
|
366
|
+
"user.settings": "Settings",
|
|
367
|
+
"user.help": "Help",
|
|
368
|
+
"user.shortcuts": "Keyboard Shortcuts",
|
|
369
|
+
"user.theme": "Theme",
|
|
370
|
+
"user.themeLight": "Light",
|
|
371
|
+
"user.themeDark": "Dark",
|
|
372
|
+
"user.themeSystem": "System",
|
|
373
|
+
"app.notFound.title": "404",
|
|
374
|
+
"app.notFound.heading": "Page not found",
|
|
375
|
+
"app.notFound.message": "The page you're looking for doesn't exist or has been moved.",
|
|
376
|
+
"app.notFound.goToDashboard": "Go to Dashboard",
|
|
377
|
+
"app.accessDenied.heading": "Access Denied",
|
|
378
|
+
"app.accessDenied.message": "You don't have permission to view this page.",
|
|
379
|
+
"shell.accessDenied.title": "Access restricted",
|
|
380
|
+
"shell.accessDenied.message": "You don't have permission to view this page.",
|
|
381
|
+
"organization.workspaces": "Workspaces",
|
|
382
|
+
"organization.onlyWorkspace": "This is your only workspace.",
|
|
383
|
+
"auth.login.enterCredentials": "Enter your credentials to access your account",
|
|
384
|
+
"auth.login.failedDefault": "Failed to sign in. Please try again.",
|
|
385
|
+
"auth.login.failedWithProvider": "Failed to sign in with {{provider}}.",
|
|
386
|
+
"auth.login.orContinueWith": "or continue with",
|
|
387
|
+
"auth.login.placeholder.email": "you@example.com",
|
|
388
|
+
"auth.login.placeholder.password": "Enter your password",
|
|
389
|
+
"auth.login.signingIn": "Signing in...",
|
|
390
|
+
"auth.login.welcomeBack": "Welcome Back",
|
|
391
|
+
"auth.login.welcomeTo": "Welcome to {{appName}}",
|
|
392
|
+
"auth.recovery.checkEmail": "Check your email",
|
|
393
|
+
"auth.recovery.description": "Enter your email address and we will send you a link to reset your password.",
|
|
394
|
+
"auth.recovery.failedDefault": "Failed to send reset email. Please try again.",
|
|
395
|
+
"auth.recovery.resetLinkSent": "We sent a password reset link to <strong>{{email}}</strong>. Please check your inbox and follow the instructions.",
|
|
396
|
+
"auth.recovery.sendResetLink": "Send reset link",
|
|
397
|
+
"auth.recovery.sending": "Sending...",
|
|
398
|
+
"auth.signup.confirmPassword": "Confirm password",
|
|
399
|
+
"auth.signup.creating": "Creating account...",
|
|
400
|
+
"auth.signup.emailVerification": "Account created for {{email}}. Check your inbox to confirm your email before signing in.",
|
|
401
|
+
"auth.signup.failedDefault": "Failed to create account. Please try again.",
|
|
402
|
+
"auth.signup.fullName": "Full name",
|
|
403
|
+
"auth.signup.getStarted": "Get started with your new account",
|
|
404
|
+
"auth.signup.passwordMinLength": "Password must be at least 8 characters.",
|
|
405
|
+
"auth.signup.passwordsMismatch": "Passwords do not match.",
|
|
406
|
+
"auth.signup.placeholder.confirm": "Repeat your password",
|
|
407
|
+
"auth.signup.placeholder.name": "John Doe",
|
|
408
|
+
"auth.signup.placeholder.password": "At least 8 characters",
|
|
409
|
+
"auth.signup.termsAgreement": "By creating an account, you agree to our",
|
|
410
|
+
"billing.invoice.amount": "Amount",
|
|
411
|
+
"billing.invoice.date": "Date",
|
|
412
|
+
"billing.invoice.invoice": "Invoice",
|
|
413
|
+
"billing.invoice.noInvoices": "No invoices yet",
|
|
414
|
+
"billing.invoice.status": "Status",
|
|
415
|
+
"billing.paywall.notAvailable": "This feature is not available on your current plan.",
|
|
416
|
+
"billing.paywall.requiresPlan": "This feature requires the {{plan}} plan or higher.",
|
|
417
|
+
"billing.paywall.upgradeRequired": "Upgrade Required",
|
|
418
|
+
"billing.paywall.viewPlans": "View Plans",
|
|
419
|
+
"chat.defaultTitle": "Assistant",
|
|
420
|
+
"chat.tryAsking": "Try asking",
|
|
421
|
+
"chat.fab.tryIt": "Try it",
|
|
422
|
+
"chat.fab.dismiss": "Don't show suggestions here",
|
|
423
|
+
"chat.fab.open": "Open assistant",
|
|
424
|
+
"chat.fab.close": "Close assistant",
|
|
425
|
+
"chat.messagePlaceholder": "How can I help?",
|
|
426
|
+
"chat.send": "Send message",
|
|
427
|
+
"chat.notConfigured": "Assistant not configured \u2014 set chat.apiEndpoint to enable conversations.",
|
|
428
|
+
"chat.unavailable": "Assistant unavailable",
|
|
429
|
+
"chat.greeting": "How can I help?",
|
|
430
|
+
"chat.greetingNamed": "Hi {{name}}, how can I help?",
|
|
431
|
+
"chat.greetingHint": "Ask in plain words, or tap the mic and just say it.",
|
|
432
|
+
"chat.status.ready": "Ready",
|
|
433
|
+
"chat.status.working": "Working on it...",
|
|
434
|
+
"chat.status.offline": "Not connected",
|
|
435
|
+
"chat.jumpToLatest": "Latest",
|
|
436
|
+
"chat.confirmAction.title": "Confirm this action?",
|
|
437
|
+
"chat.confirmAction.confirm": "Confirm",
|
|
438
|
+
"chat.confirmAction.cancel": "Cancel",
|
|
439
|
+
"chat.confirmAction.always": "Always allow",
|
|
440
|
+
"chat.confirmAction.alwaysSession": "Allow this session",
|
|
441
|
+
"chat.confirmAction.alwaysHint": 'Stop asking before "{{label}}"',
|
|
442
|
+
"chat.confirmAction.autoApproved": "auto",
|
|
443
|
+
"chat.confirmAction.autoApprovedHint": "Ran without asking \u2014 you allowed this action",
|
|
444
|
+
"chat.confirmAction.blocked": "Respond to the confirmation above first",
|
|
445
|
+
"chat.confirmAction.fillRequired": "Fill in to continue: {{fields}}",
|
|
446
|
+
"chat.confirmAction.showAll": "Add more fields ({{count}})",
|
|
447
|
+
"chat.confirmAction.showLess": "Show fewer fields",
|
|
448
|
+
"chat.tool.createAppointment": "Book an appointment",
|
|
449
|
+
"chat.tool.createRecord": "Create record",
|
|
450
|
+
"chat.tool.updateRecord": "Update record",
|
|
451
|
+
"chat.tool.deleteRecord": "Delete record",
|
|
452
|
+
"chat.tool.createOrder": "Create order",
|
|
453
|
+
"chat.tool.createInvoice": "Create invoice",
|
|
454
|
+
"chat.tool.markPaymentReceived": "Mark payment as received",
|
|
455
|
+
"chat.tool.createCampaign": "Create campaign",
|
|
456
|
+
"chat.tool.sendMessage": "Send message",
|
|
457
|
+
"chat.tool.seatGuests": "Seat guests",
|
|
458
|
+
"chat.tool.toggleMenuItemAvailability": "Change item availability",
|
|
459
|
+
"chat.autoApprovals.title": "Auto-approved actions",
|
|
460
|
+
"chat.autoApprovals.revoke": "Ask me again",
|
|
461
|
+
"chat.autoApprovals.revokeAll": "Ask for everything",
|
|
462
|
+
"chat.suggestions.show": "Show suggestions",
|
|
463
|
+
"chat.suggestions.hide": "Hide suggestions",
|
|
464
|
+
"chat.voice.start": "Speak",
|
|
465
|
+
"chat.voice.stop": "Stop recording",
|
|
466
|
+
"chat.voice.listening": "Listening \u2014 speak now",
|
|
467
|
+
"chat.voice.transcribing": "Transcribing...",
|
|
468
|
+
"chat.voice.denied": "Microphone blocked. Allow access in your browser settings.",
|
|
469
|
+
"chat.voice.network": "Could not reach the transcription service.",
|
|
470
|
+
"chat.voice.failed": "Could not hear that \u2014 try again.",
|
|
471
|
+
"chat.voice.speakOn": "Speak replies out loud",
|
|
472
|
+
"chat.voice.speakOff": "Mute spoken replies",
|
|
473
|
+
"chat.signingIn": "One moment \u2014 still confirming your session.",
|
|
474
|
+
"chat.history": "Previous conversations",
|
|
475
|
+
"chat.history.search": "Search conversations",
|
|
476
|
+
"chat.history.empty": "No conversations found.",
|
|
477
|
+
"chat.history.today": "Today",
|
|
478
|
+
"chat.history.yesterday": "Yesterday",
|
|
479
|
+
"chat.history.week": "Last 7 days",
|
|
480
|
+
"chat.history.older": "Earlier",
|
|
481
|
+
"chat.newConversation": "New conversation",
|
|
482
|
+
"chat.untitledConversation": "Untitled conversation",
|
|
483
|
+
"chat.recentConversations": "Recent",
|
|
484
|
+
"chat.backToConversations": "Back to conversations",
|
|
485
|
+
"chat.renameConversation": "Rename",
|
|
486
|
+
"chat.saveTitle": "Save title",
|
|
487
|
+
"chat.toolsAvailable": "{{count}} tools available",
|
|
488
|
+
"chat.suggestion.dashboard.kpi-summary.0": "How is my business doing today?",
|
|
489
|
+
"chat.suggestion.dashboard.kpi-summary.1": "What's my revenue today?",
|
|
490
|
+
"chat.suggestion.dashboard.kpi-summary.2": "Give me a summary of today",
|
|
491
|
+
"chat.suggestion.agenda.list-appointments.0": "What's on the agenda today?",
|
|
492
|
+
"chat.suggestion.agenda.list-appointments.1": "Show me tomorrow's appointments",
|
|
493
|
+
"chat.suggestion.agenda.list-appointments.2": "Who has the most bookings this week?",
|
|
494
|
+
"chat.suggestion.agenda.create-appointment.0": "Book a haircut for Sarah tomorrow at 10am",
|
|
495
|
+
"chat.suggestion.agenda.check-availability.0": "When is Ana available tomorrow?",
|
|
496
|
+
"chat.suggestion.agenda.check-availability.1": "Find a 90-minute slot for Carlos this week",
|
|
497
|
+
"chat.suggestion.financial.get-revenue.0": "How much did we make today?",
|
|
498
|
+
"chat.suggestion.financial.get-revenue.1": "What's this month's revenue?",
|
|
499
|
+
"chat.suggestion.financial.get-revenue.2": "Compare this week's revenue to last week",
|
|
500
|
+
"chat.suggestion.financial.create-invoice.0": "Create an invoice for a new client",
|
|
501
|
+
"chat.suggestion.financial.list-payables.0": "Show me overdue bills",
|
|
502
|
+
"chat.suggestion.financial.list-payables.1": "What bills are due this week?",
|
|
503
|
+
"chat.suggestion.inventory.low-stock.0": "Which products are running low?",
|
|
504
|
+
"chat.suggestion.inventory.low-stock.1": "Show me a stock summary",
|
|
505
|
+
"chat.suggestion.inventory.low-stock.2": "What are my most used products?",
|
|
506
|
+
"chat.suggestion.crm.count-customers.0": "How many customers do we have?",
|
|
507
|
+
"chat.suggestion.crm.count-customers.1": "Who are my top customers?",
|
|
508
|
+
"chat.suggestion.crm.list-leads.0": "Show new leads from this week",
|
|
509
|
+
"chat.suggestion.crm.list-leads.1": "Which leads need follow-up?",
|
|
510
|
+
"chat.suggestion.crm.list-leads.2": "What's our conversion rate?",
|
|
511
|
+
"chat.suggestion.custom_forms.list-templates.0": "What forms do we have?",
|
|
512
|
+
"chat.suggestion.custom_forms.list-templates.1": "Show me anamnesis templates",
|
|
513
|
+
"chat.suggestion.custom_forms.list-documents.0": "Show this client's documents",
|
|
514
|
+
"common.create": "Create",
|
|
515
|
+
"common.feature": "Feature",
|
|
516
|
+
"common.message": "Message...",
|
|
517
|
+
"common.more": "More",
|
|
518
|
+
"common.noContent": "No content yet",
|
|
519
|
+
"crud.form.createDescription": "Create a new {{entity}}.",
|
|
520
|
+
"crud.form.editDescription": "Update {{entity}} details.",
|
|
521
|
+
"crud.form.failedToSave": "Failed to save {{entity}}",
|
|
522
|
+
"crud.form.saveChanges": "Save Changes",
|
|
523
|
+
"crud.form.select": "Select {{field}}...",
|
|
524
|
+
"crud.list.addEntity": "+ Add {{entity}}",
|
|
525
|
+
"crud.list.search": "Search {{entities}}...",
|
|
526
|
+
"layout.bottomNav.chat": "Chat",
|
|
527
|
+
"layout.commandPalette.commandCount": "{{count}} command{{plural}}",
|
|
528
|
+
"layout.commandPalette.description": "Search for pages, actions, people, products and services",
|
|
529
|
+
"layout.commandPalette.resultCount": "{{count}} result{{plural}}",
|
|
530
|
+
"layout.commandPalette.title": "Command palette",
|
|
531
|
+
"layout.mobileDrawer.description": "Application navigation links",
|
|
532
|
+
"layout.mobileDrawer.title": "Navigation menu",
|
|
533
|
+
"layout.topbar.search": "Search...",
|
|
534
|
+
"notifications.noUpdates": "No updates yet",
|
|
535
|
+
"organization.createOrg": "Create organization",
|
|
536
|
+
"organization.createOrgDescription": "Create a new workspace for your team.",
|
|
537
|
+
"organization.createOrgTitle": "Create Organization",
|
|
538
|
+
"organization.creating": "Creating...",
|
|
539
|
+
"organization.invite.addAnother": "Add another",
|
|
540
|
+
"organization.invite.description": "Send invites to join your organization.",
|
|
541
|
+
"organization.invite.emailLabel": "Email addresses",
|
|
542
|
+
"organization.invite.roleLabel": "Role",
|
|
543
|
+
"organization.invite.rolePlaceholder": "Select a role",
|
|
544
|
+
"organization.invite.sendInvites": "Send Invites",
|
|
545
|
+
"organization.invite.sending": "Sending...",
|
|
546
|
+
"organization.invite.sent": "Invitations sent",
|
|
547
|
+
"organization.invite.sentDescription": "Your team members will receive an email with instructions to join.",
|
|
548
|
+
"organization.invite.title": "Invite Team Members",
|
|
549
|
+
"organization.onboarding.oneMoment": "This will only take a moment...",
|
|
550
|
+
"organization.onboarding.preferences": "Regional preferences",
|
|
551
|
+
"organization.onboarding.settingUp": "Setting up your workspace",
|
|
552
|
+
"organization.onboarding.setupWorkspace": "Set up your workspace",
|
|
553
|
+
"organization.onboarding.whatName": "What should we call your workspace?",
|
|
554
|
+
"organization.orgNamePlaceholder": "Organization name",
|
|
555
|
+
"organization.permissions.createCustom": "Create Custom Profile",
|
|
556
|
+
"organization.permissions.createProfile": "Create Profile",
|
|
557
|
+
"organization.permissions.duplicate": "Duplicate",
|
|
558
|
+
"organization.permissions.copyName": "{{name}} (copy)",
|
|
559
|
+
"organization.permissions.description": "Description",
|
|
560
|
+
"organization.permissions.descriptionPlaceholder": "Optional description",
|
|
561
|
+
"organization.permissions.editProfile": "Edit: {{name}}",
|
|
562
|
+
"organization.permissions.manageBilling": "Manage Billing",
|
|
563
|
+
"organization.permissions.managePermissions": "Manage Permissions",
|
|
564
|
+
"organization.permissions.manageSettings": "Manage Settings",
|
|
565
|
+
"organization.permissions.manageTeam": "Manage Team",
|
|
566
|
+
"organization.permissions.memberCount": "{{count}} member{{plural}}",
|
|
567
|
+
"organization.permissions.previewAs": "Preview as",
|
|
568
|
+
"organization.permissions.previewingAs": "Previewing as",
|
|
569
|
+
"organization.permissions.exitPreview": "Exit Preview",
|
|
570
|
+
"organization.permissions.searchFeatures": "Search features...",
|
|
571
|
+
"organization.permissions.profileName": "Profile Name",
|
|
572
|
+
"organization.permissions.profileNamePlaceholder": "e.g. Custom Role",
|
|
573
|
+
"organization.permissions.subtitle": "Manage roles and their permissions.",
|
|
574
|
+
"organization.permissions.system": "System",
|
|
575
|
+
"organization.permissions.systemPermissions": "System Permissions",
|
|
576
|
+
"organization.permissions.title": "Permission Profiles",
|
|
577
|
+
"organization.permissions.updateProfile": "Update Profile",
|
|
578
|
+
"organization.team.invite": "Invite",
|
|
579
|
+
"organization.team.joined": "Joined",
|
|
580
|
+
"organization.team.member": "Member",
|
|
581
|
+
"organization.team.memberCount": "{{count}} member{{plural}} in this organization.",
|
|
582
|
+
"organization.team.pendingInvites": "Pending Invites",
|
|
583
|
+
"organization.team.removeMember": "Remove member",
|
|
584
|
+
"organization.team.resend": "Resend",
|
|
585
|
+
"organization.team.revoke": "Revoke",
|
|
586
|
+
"organization.team.inviteResent": "Invite resent",
|
|
587
|
+
"organization.team.inviteRevoked": "Invite revoked",
|
|
588
|
+
"organization.team.inviteActionFailed": "Couldn't complete that",
|
|
589
|
+
"organization.team.role": "Role",
|
|
590
|
+
"organization.team.sent": "Sent {{date}}",
|
|
591
|
+
"organization.team.title": "Members",
|
|
592
|
+
"organization.team.you": "(you)",
|
|
593
|
+
"settings.branding.accentColor": "Accent Color",
|
|
594
|
+
"settings.branding.chooseFile": "Choose File",
|
|
595
|
+
"settings.branding.favicon": "Favicon",
|
|
596
|
+
"settings.branding.faviconHint": "Recommended: 32x32px, PNG or ICO",
|
|
597
|
+
"settings.branding.logo": "Logo",
|
|
598
|
+
"settings.branding.logoHint": "Recommended: 200x50px, PNG or SVG",
|
|
599
|
+
"settings.branding.preview": "Preview",
|
|
600
|
+
"settings.branding.primaryColor": "Primary Color",
|
|
601
|
+
"settings.branding.saveBranding": "Save Branding",
|
|
602
|
+
"settings.branding.subtitle": "Customize the look and feel of your workspace.",
|
|
603
|
+
"settings.branding.title": "Branding",
|
|
604
|
+
"settings.company.currency": "Currency",
|
|
605
|
+
"settings.company.currencyPlaceholder": "Select currency",
|
|
606
|
+
"settings.company.locale": "Locale",
|
|
607
|
+
"settings.company.localePlaceholder": "Select locale",
|
|
608
|
+
"settings.company.name": "Company Name",
|
|
609
|
+
"settings.company.subtitle": "Update your organization details and regional preferences.",
|
|
610
|
+
"settings.company.timezone": "Timezone",
|
|
611
|
+
"settings.company.timezonePlaceholder": "Select timezone",
|
|
612
|
+
"settings.company.title": "Company Information",
|
|
613
|
+
"settings.holidays.addHoliday": "Add Holiday",
|
|
614
|
+
"settings.holidays.annual": "Annual",
|
|
615
|
+
"settings.holidays.descriptionPlaceholder": "Description (optional)",
|
|
616
|
+
"settings.holidays.empty": "No holidays configured yet.",
|
|
617
|
+
"settings.holidays.namePlaceholder": "Holiday name *",
|
|
618
|
+
"settings.holidays.newHoliday": "New Holiday",
|
|
619
|
+
"settings.holidays.recurringAnnually": "Recurring annually",
|
|
620
|
+
"settings.holidays.subtitle": "Non-working days and recurring holidays.",
|
|
621
|
+
"settings.holidays.title": "Holidays",
|
|
622
|
+
"settings.fieldRules": "Field Rules",
|
|
623
|
+
"settings.fieldRules.subtitle": "Configure which fields are required or visible for each register type.",
|
|
624
|
+
"settings.fieldRules.required": "Required",
|
|
625
|
+
"settings.fieldRules.inForm": "Form",
|
|
626
|
+
"settings.fieldRules.inTable": "Table",
|
|
627
|
+
"settings.fieldRules.inDetail": "Detail",
|
|
628
|
+
"settings.fieldRules.field": "Field",
|
|
629
|
+
"settings.fieldRules.resetDefaults": "Reset to Defaults",
|
|
630
|
+
"settings.fieldRules.resetConfirm": "Reset all field rules for {{entity}} to their defaults?",
|
|
631
|
+
"settings.fieldRules.saved": "Field rules saved",
|
|
632
|
+
"settings.fieldRules.saveFailed": "Failed to save field rules",
|
|
633
|
+
"settings.fieldRules.modified": "{{count}} modified",
|
|
634
|
+
"settings.fieldRules.searchPlaceholder": "Search register types...",
|
|
635
|
+
"settings.fieldRules.noEntities": "No register types available.",
|
|
636
|
+
"settings.fieldRules.coreRegisters": "Register Types",
|
|
637
|
+
"settings.fieldRules.otherRegisters": "Other",
|
|
638
|
+
"settings.fieldRules.showMore": "{{count}} more register types...",
|
|
639
|
+
"settings.fieldRules.showLess": "Show less",
|
|
640
|
+
"settings.locations.addFirst": "Add your first location",
|
|
641
|
+
"settings.locations.addLocation": "Add Location",
|
|
642
|
+
"settings.locations.adding": "Adding...",
|
|
643
|
+
"settings.locations.addressPlaceholder": "Address",
|
|
644
|
+
"settings.locations.cityPlaceholder": "City",
|
|
645
|
+
"settings.locations.countDescription": "{{count}} location{{plural}} registered.",
|
|
646
|
+
"settings.locations.countryPlaceholder": "Country",
|
|
647
|
+
"settings.locations.empty": "No locations have been added to this organization yet.",
|
|
648
|
+
"settings.locations.headquarters": "Headquarters",
|
|
649
|
+
"settings.locations.namePlaceholder": "Location name *",
|
|
650
|
+
"settings.locations.newLocation": "New Location",
|
|
651
|
+
"settings.locations.noLocations": "No locations configured yet.",
|
|
652
|
+
"settings.locations.phonePlaceholder": "Phone",
|
|
653
|
+
"settings.locations.statePlaceholder": "State",
|
|
654
|
+
"settings.locations.title": "Locations",
|
|
655
|
+
"settings.profile.email": "Email",
|
|
656
|
+
"settings.profile.emailHelp": "Email cannot be changed directly. Contact support for assistance.",
|
|
657
|
+
"settings.profile.fullName": "Full Name",
|
|
658
|
+
"settings.profile.saveProfile": "Save Profile",
|
|
659
|
+
"settings.profile.subtitle": "Manage your personal information and account settings.",
|
|
660
|
+
"settings.profile.title": "Profile",
|
|
661
|
+
"settings.security.inviteOnly": "Invite-Only Access",
|
|
662
|
+
"settings.security.inviteOnlyDescription": "New users can only join this organization via invite.",
|
|
663
|
+
"settings.security.linkSent": "Link Sent",
|
|
664
|
+
"settings.security.orgSecuritySubtitle": "Security policies applied to all members of this organization.",
|
|
665
|
+
"settings.security.orgSecurityTitle": "Organization Security",
|
|
666
|
+
"settings.security.passwordSubtitle": "Manage your account password. A reset link will be sent to your email.",
|
|
667
|
+
"settings.security.passwordTitle": "Password",
|
|
668
|
+
"settings.security.require2FA": "Require Two-Factor Authentication",
|
|
669
|
+
"settings.security.require2FADescription": "All members must enable 2FA to access this organization.",
|
|
670
|
+
"settings.security.resetLinkDescription": "Send a password reset link to your email address.",
|
|
671
|
+
"settings.security.resetLinkSent": "Reset link sent \u2014 check your inbox.",
|
|
672
|
+
"settings.security.resetPassword": "Reset Password",
|
|
673
|
+
"settings.security.sessionTimeout": "Session Timeout",
|
|
674
|
+
"settings.security.sessionTimeoutDescription": "Automatically sign out inactive users after this period.",
|
|
675
|
+
"settings.plugin.agenda": "Agenda",
|
|
676
|
+
"settings.plugin.financial": "Financial",
|
|
677
|
+
"settings.plugin.inventory": "Inventory",
|
|
678
|
+
"settings.plugin.crm": "Sales & CRM",
|
|
679
|
+
"crud.archetype.comingSoon": "Coming Soon",
|
|
680
|
+
"crud.archetype.access.title": "Access & Permissions",
|
|
681
|
+
"crud.archetype.access.description": "Manage login credentials, assign permission roles, and control what this person can access in the system.",
|
|
682
|
+
"crud.access.accountStatus": "Account Status",
|
|
683
|
+
"crud.access.statusLinked": "Active",
|
|
684
|
+
"crud.access.statusPending": "Invite pending",
|
|
685
|
+
"crud.access.statusAccepted": "Accepted",
|
|
686
|
+
"crud.access.statusExpired": "Invite expired",
|
|
687
|
+
"crud.access.statusRevoked": "Revoked",
|
|
688
|
+
"crud.access.acceptedAt": "Accepted {{date}}",
|
|
689
|
+
"crud.access.revokedDesc": "Access was revoked. You can send a new invite.",
|
|
690
|
+
"crud.access.grantAccess": "Grant Access",
|
|
691
|
+
"crud.access.account": "Account",
|
|
692
|
+
"crud.access.accountDesc": "Login credentials and account status for this person.",
|
|
693
|
+
"crud.access.resetPassword": "Reset Password",
|
|
694
|
+
"crud.access.passwordResetSent": "Password reset email sent.",
|
|
695
|
+
"crud.access.profileUpdated": "Permission profile updated.",
|
|
696
|
+
"crud.access.inviteResent": "Invite resent.",
|
|
697
|
+
"crud.access.inviteRevoked": "Invite revoked.",
|
|
698
|
+
"crud.access.accessRemoved": "Access removed.",
|
|
699
|
+
"crud.access.dangerZone": "Danger Zone",
|
|
700
|
+
"crud.access.dangerZoneDesc": "Irreversible actions that affect this person's access to the system.",
|
|
701
|
+
"crud.access.removeAccess": "Remove Access",
|
|
702
|
+
"crud.access.revokeInvite": "Revoke Invite",
|
|
703
|
+
"crud.access.confirmRemoveTitle": "Are you sure?",
|
|
704
|
+
"crud.access.confirmRemoveDesc": "This person will lose all system access immediately. This action cannot be undone.",
|
|
705
|
+
"crud.access.accountLinked": "Account linked",
|
|
706
|
+
"crud.access.noAccount": "No account linked",
|
|
707
|
+
"crud.access.noAccountDesc": "This person does not have a login account and cannot access the system.",
|
|
708
|
+
"crud.access.setupDesc": "Set up system access for this person by entering their email and choosing a permission profile.",
|
|
709
|
+
"crud.access.emailPlaceholder": "person@example.com",
|
|
710
|
+
"crud.access.sendInvite": "Send Invite",
|
|
711
|
+
"crud.access.invitePending": "Invite pending",
|
|
712
|
+
"crud.access.inviteSent": "Invite sent {{date}}",
|
|
713
|
+
"crud.access.permissionProfile": "Permission Profile",
|
|
714
|
+
"crud.access.profileDesc": "Define what this person can access and do in the system.",
|
|
715
|
+
"crud.access.systemAccess": "System Access",
|
|
716
|
+
"crud.access.effectivePermissions": "Effective Permissions",
|
|
717
|
+
"crud.access.effectiveDesc": "What this person can do based on their assigned profile.",
|
|
718
|
+
"crud.access.feature": "Feature",
|
|
719
|
+
"crud.access.joined": "Joined {{date}}",
|
|
720
|
+
"crud.access.noEmail": "No email address",
|
|
721
|
+
"crud.access.noEmailDesc": "Add an email address to this person to link them to a system account.",
|
|
722
|
+
"crud.access.manageTeam": "Manage Team",
|
|
723
|
+
"crud.access.manageBilling": "Manage Billing",
|
|
724
|
+
"crud.access.manageSettings": "Manage Settings",
|
|
725
|
+
"crud.access.managePermissions": "Manage Permissions",
|
|
726
|
+
"crud.archetype.activity.title": "Activity Timeline",
|
|
727
|
+
"crud.archetype.activity.description": "View a chronological log of all actions, changes, and events related to this person.",
|
|
728
|
+
"crud.archetype.documents.title": "Documents",
|
|
729
|
+
"crud.archetype.documents.description": "Attach and manage files, contracts, certifications, and other documents for this person.",
|
|
730
|
+
"crud.archetype.addresses.add": "Add address",
|
|
731
|
+
"crud.archetype.addresses.addTitle": "New address",
|
|
732
|
+
"crud.archetype.addresses.editTitle": "Edit address",
|
|
733
|
+
"crud.archetype.addresses.formDescription": "Postal code, street and city are required; everything else is optional.",
|
|
734
|
+
"crud.archetype.addresses.emptyTitle": "No address on file",
|
|
735
|
+
"crud.archetype.addresses.emptyDescription": "Add where this person is delivered to, collected from, or billed at.",
|
|
736
|
+
"crud.archetype.addresses.fallbackLabel": "Address",
|
|
737
|
+
"crud.archetype.addresses.labelPlaceholder": "Home, Work\u2026",
|
|
738
|
+
"crud.archetype.addresses.default": "Default",
|
|
739
|
+
"crud.archetype.addresses.setDefault": "Use as the default address",
|
|
740
|
+
"crud.archetype.addresses.kind.both": "Shipping and billing",
|
|
741
|
+
"crud.archetype.addresses.kind.shipping": "Shipping",
|
|
742
|
+
"crud.archetype.addresses.kind.billing": "Billing",
|
|
743
|
+
"crud.archetype.addresses.field.label": "Label",
|
|
744
|
+
"crud.archetype.addresses.field.kind": "Use",
|
|
745
|
+
"crud.archetype.addresses.field.postalCode": "Postal code",
|
|
746
|
+
"crud.archetype.addresses.field.street": "Street",
|
|
747
|
+
"crud.archetype.addresses.field.number": "Number",
|
|
748
|
+
"crud.archetype.addresses.field.complement": "Complement",
|
|
749
|
+
"crud.archetype.addresses.field.district": "District",
|
|
750
|
+
"crud.archetype.addresses.field.city": "City",
|
|
751
|
+
"crud.archetype.addresses.field.state": "State",
|
|
752
|
+
"crud.archetype.addresses.field.recipient": "Recipient",
|
|
753
|
+
"crud.archetype.addresses.field.phone": "Phone",
|
|
754
|
+
"crud.archetype.addresses.created": "Address added",
|
|
755
|
+
"crud.archetype.addresses.updated": "Address updated",
|
|
756
|
+
"crud.archetype.addresses.deleted": "Address removed",
|
|
757
|
+
"crud.archetype.addresses.deleteTitle": "Remove this address?",
|
|
758
|
+
"crud.archetype.addresses.loadFailed": "Could not load the addresses.",
|
|
759
|
+
"crud.archetype.addresses.saveFailed": "Could not save the address.",
|
|
760
|
+
"crud.archetype.addresses.deleteFailed": "Could not remove the address.",
|
|
761
|
+
"crud.archetype.addresses.noTenant": "No active organization \u2014 reload the page and try again.",
|
|
762
|
+
"crud.archetype.schedule.title": "Schedule",
|
|
763
|
+
"crud.archetype.schedule.description": "View and manage appointments, shifts, and availability for this person.",
|
|
764
|
+
"crud.archetype.inventory.title": "Inventory & Stock",
|
|
765
|
+
"crud.archetype.inventory.description": "Track stock levels, view movement history, set reorder alerts, and manage inventory across locations.",
|
|
766
|
+
"crud.archetype.suppliers.title": "Suppliers",
|
|
767
|
+
"crud.archetype.suppliers.description": "View and manage which suppliers provide this product, compare costs, and track purchase orders.",
|
|
768
|
+
"crud.archetype.pricing.title": "Pricing History",
|
|
769
|
+
"crud.archetype.pricing.description": "View price changes over time, manage promotional pricing, and set location-specific prices.",
|
|
770
|
+
"crud.archetype.productActivity.title": "Activity",
|
|
771
|
+
"crud.archetype.productActivity.description": "View a log of all changes, stock adjustments, and events related to this product.",
|
|
772
|
+
"crud.archetype.availability.title": "Availability",
|
|
773
|
+
"crud.archetype.availability.description": "Configure when this service can be booked, set duration rules, and manage capacity limits.",
|
|
774
|
+
"crud.archetype.servicePricing.title": "Pricing Tiers",
|
|
775
|
+
"crud.archetype.servicePricing.description": "Manage pricing tiers, member discounts, and location-specific pricing for this service.",
|
|
776
|
+
"crud.archetype.serviceActivity.title": "Activity",
|
|
777
|
+
"crud.archetype.serviceActivity.description": "View a log of all bookings, changes, and events related to this service.",
|
|
778
|
+
"crud.archetype.members.title": "Team Members",
|
|
779
|
+
"crud.archetype.members.description": "View and manage staff assigned to this location, their roles and schedules.",
|
|
780
|
+
"crud.archetype.locationSchedule.title": "Operating Hours",
|
|
781
|
+
"crud.archetype.locationSchedule.description": "Set business hours, holidays, and special schedules for this location.",
|
|
782
|
+
"crud.archetype.locationStats.title": "Statistics",
|
|
783
|
+
"crud.archetype.locationStats.description": "View performance metrics, revenue, and activity for this location.",
|
|
784
|
+
"crud.archetype.locationActivity.title": "Activity",
|
|
785
|
+
"crud.archetype.locationActivity.description": "View a log of all events, changes, and operations at this location.",
|
|
786
|
+
"crud.archetype.owner.noOwner": "No owner assigned",
|
|
787
|
+
"crud.archetype.owner.assignHint": "Edit this record to assign an owner.",
|
|
788
|
+
"crud.archetype.owner.name": "Name",
|
|
789
|
+
"crud.archetype.owner.phone": "Phone",
|
|
790
|
+
"crud.archetype.owner.email": "Email",
|
|
791
|
+
"crud.archetype.owner.document": "Document",
|
|
792
|
+
"crud.archetype.owner.address": "Address",
|
|
793
|
+
"crud.archetype.owner.active": "Active",
|
|
794
|
+
"crud.archetype.owner.inactive": "Inactive",
|
|
795
|
+
"crud.archetype.history.title": "History",
|
|
796
|
+
"crud.archetype.history.description": "View visit history, past reports, treatments, and timeline of events.",
|
|
797
|
+
"crud.archetype.subjectDocuments.title": "Documents",
|
|
798
|
+
"crud.archetype.subjectDocuments.description": "Attach and manage files, lab results, images, and certificates.",
|
|
799
|
+
"schedule.days.sun": "Sun",
|
|
800
|
+
"schedule.days.mon": "Mon",
|
|
801
|
+
"schedule.days.tue": "Tue",
|
|
802
|
+
"schedule.days.wed": "Wed",
|
|
803
|
+
"schedule.days.thu": "Thu",
|
|
804
|
+
"schedule.days.fri": "Fri",
|
|
805
|
+
"schedule.days.sat": "Sat",
|
|
806
|
+
"schedule.editor.weeklyTitle": "Weekly Working Hours",
|
|
807
|
+
"schedule.editor.weeklyDescription": "Set when this professional is regularly available",
|
|
808
|
+
"schedule.editor.unavailable": "Unavailable",
|
|
809
|
+
"schedule.editor.newInterval": "New interval for {{day}}",
|
|
810
|
+
"schedule.editor.addHoursFor": "Add hours for {{day}}",
|
|
811
|
+
"schedule.editor.removeInterval": "Remove interval",
|
|
812
|
+
"schedule.editor.copyToAll": "Copy to all days",
|
|
813
|
+
"schedule.editor.bufferTooltip": "Buffer time between appointments",
|
|
814
|
+
"schedule.editor.min": "min",
|
|
815
|
+
"schedule.editor.exceptionsTitle": "Date Exceptions",
|
|
816
|
+
"schedule.editor.exceptionsDescription": "Override working hours for specific dates",
|
|
817
|
+
"schedule.editor.addException": "Add Exception",
|
|
818
|
+
"schedule.editor.noExceptions": "No date exceptions configured",
|
|
819
|
+
"schedule.editor.startDate": "Start date",
|
|
820
|
+
"schedule.editor.endDate": "End date",
|
|
821
|
+
"schedule.editor.type": "Type",
|
|
822
|
+
"schedule.editor.customHours": "Custom hours",
|
|
823
|
+
"schedule.editor.workingHours": "Working hours",
|
|
824
|
+
"schedule.editor.to": "to",
|
|
825
|
+
"schedule.editor.addTimeBlock": "Add time block",
|
|
826
|
+
"schedule.editor.notes": "Notes",
|
|
827
|
+
"schedule.editor.notesPlaceholder": "e.g. Vacation, Holiday, Training...",
|
|
828
|
+
"schedule.editor.saveException": "Save Exception",
|
|
829
|
+
"schedule.editor.removeException": "Remove exception",
|
|
830
|
+
"schedule.editor.failedToLoad": "Failed to load schedule",
|
|
831
|
+
"schedule.editor.saved": "Working hours saved",
|
|
832
|
+
"schedule.editor.failedToSave": "Failed to save",
|
|
833
|
+
"schedule.editor.selectStartDate": "Please select a start date",
|
|
834
|
+
"schedule.editor.endDateAfterStart": "End date must be after start date",
|
|
835
|
+
"schedule.editor.exceptionAdded": "Exception added",
|
|
836
|
+
"schedule.editor.failedToSaveException": "Failed to save exception",
|
|
837
|
+
"schedule.editor.exceptionRemoved": "Exception removed",
|
|
838
|
+
"schedule.editor.failedToDelete": "Failed to delete",
|
|
839
|
+
"schedule.blockSettings.title": "Block Settings",
|
|
840
|
+
"schedule.blockSettings.location": "Location",
|
|
841
|
+
"schedule.blockSettings.noLocation": "No location",
|
|
842
|
+
"schedule.blockSettings.maxConcurrent": "Max concurrent",
|
|
843
|
+
"schedule.blockSettings.minAdvance": "Min advance",
|
|
844
|
+
"schedule.blockSettings.maxAdvance": "Max advance",
|
|
845
|
+
"schedule.blockSettings.hrs": "hrs",
|
|
846
|
+
"schedule.blockSettings.days": "days",
|
|
847
|
+
"schedule.blockSettings.label": "Label",
|
|
848
|
+
"schedule.blockSettings.labelPlaceholder": "e.g. Morning - Cuts only",
|
|
849
|
+
"schedule.blockSettings.allowedServices": "Allowed services",
|
|
850
|
+
"schedule.blockSettings.allServices": "All services",
|
|
851
|
+
"schedule.blockSettings.oneService": "1 service",
|
|
852
|
+
"schedule.blockSettings.nServices": "{{count}} services",
|
|
853
|
+
"registry.suppliers": "Supplier",
|
|
854
|
+
"registry.suppliers.description": "Manage your product and material suppliers",
|
|
855
|
+
"registry.product-categories": "Product Category",
|
|
856
|
+
"registry.product-categories.description": "Product categories for organization",
|
|
857
|
+
"registry.stock-locations": "Stock Location",
|
|
858
|
+
"registry.stock-locations.description": "Physical storage locations for inventory",
|
|
859
|
+
"registry.measurement-units": "Measurement Unit",
|
|
860
|
+
"registry.measurement-units.description": "Standard units of measure",
|
|
861
|
+
"registry.payment-methods": "Payment Method",
|
|
862
|
+
"registry.chart-of-accounts": "Chart of Accounts",
|
|
863
|
+
"registry.cost-centers": "Cost Center",
|
|
864
|
+
"registry.bank-accounts": "Bank Account",
|
|
865
|
+
"registry.commission-rules": "Commission Rule",
|
|
866
|
+
"registry.price-tables": "Price Table",
|
|
867
|
+
"registry.price-variations": "Price Variation",
|
|
868
|
+
"registry.payment-method-types": "Payment Type",
|
|
869
|
+
"registry.card-brands": "Card Brand",
|
|
870
|
+
"registry.lead-sources": "Lead Source",
|
|
871
|
+
"registry.tags": "Tag",
|
|
872
|
+
"registry.activity-types": "Activity Type",
|
|
873
|
+
"org.connectionError.title": "Connection failed",
|
|
874
|
+
"org.connectionError.description": "Unable to connect to the server. Please check your internet connection and try again.",
|
|
875
|
+
"org.connectionError.retry": "Try again",
|
|
876
|
+
"app.mockMode.banner": "You are in offline mode. Data shown may not be up to date."
|
|
877
|
+
};
|
|
878
|
+
|
|
879
|
+
// src/i18n/index.ts
|
|
880
|
+
var I18nContext = React.createContext({
|
|
881
|
+
defaultLocale: "en",
|
|
882
|
+
supported: ["en"],
|
|
883
|
+
translations: {}
|
|
884
|
+
});
|
|
885
|
+
var I18nProvider = I18nContext.Provider;
|
|
886
|
+
function useI18nConfig() {
|
|
887
|
+
return React.useContext(I18nContext);
|
|
888
|
+
}
|
|
889
|
+
function useTranslation() {
|
|
890
|
+
const config = React.useContext(I18nContext);
|
|
891
|
+
const localeStore = useLocaleStore();
|
|
892
|
+
const locale = localeStore.locale;
|
|
893
|
+
return React.useCallback(
|
|
894
|
+
(key, params) => {
|
|
895
|
+
const localizedTranslations = config.translations[locale] ?? {};
|
|
896
|
+
const fallback = config.translations[config.defaultLocale] ?? {};
|
|
897
|
+
const gLocale = _globalTranslations[locale] ?? {};
|
|
898
|
+
const gFallback = _globalTranslations[config.defaultLocale] ?? {};
|
|
899
|
+
let raw = localizedTranslations[key] ?? gLocale[key] ?? fallback[key] ?? gFallback[key] ?? key;
|
|
900
|
+
if (params) {
|
|
901
|
+
for (const [k, v] of Object.entries(params)) {
|
|
902
|
+
raw = raw.replace(new RegExp(`\\{\\{${k}\\}\\}`, "g"), String(v));
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
return raw;
|
|
906
|
+
},
|
|
907
|
+
[config, locale]
|
|
908
|
+
);
|
|
909
|
+
}
|
|
910
|
+
var _localeStore = {
|
|
911
|
+
locale: "en",
|
|
912
|
+
setLocale: (l) => {
|
|
913
|
+
_localeStore.locale = l;
|
|
914
|
+
}
|
|
915
|
+
};
|
|
916
|
+
var _localeListeners = /* @__PURE__ */ new Set();
|
|
917
|
+
function setLocaleStore(store) {
|
|
918
|
+
_localeStore = store;
|
|
919
|
+
}
|
|
920
|
+
var _i18nVersion = 0;
|
|
921
|
+
function getI18nSnapshot() {
|
|
922
|
+
return `${_localeStore.locale} ${_i18nVersion}`;
|
|
923
|
+
}
|
|
924
|
+
function useLocaleStore() {
|
|
925
|
+
const snapshot = React.useSyncExternalStore(
|
|
926
|
+
(listener) => {
|
|
927
|
+
_localeListeners.add(listener);
|
|
928
|
+
return () => _localeListeners.delete(listener);
|
|
929
|
+
},
|
|
930
|
+
getI18nSnapshot,
|
|
931
|
+
getI18nSnapshot
|
|
932
|
+
);
|
|
933
|
+
return React.useMemo(() => {
|
|
934
|
+
const locale = snapshot.slice(0, snapshot.indexOf(" "));
|
|
935
|
+
return { locale, setLocale: setCurrentLocale };
|
|
936
|
+
}, [snapshot]);
|
|
937
|
+
}
|
|
938
|
+
function getCurrentLocale() {
|
|
939
|
+
return _localeStore.locale;
|
|
940
|
+
}
|
|
941
|
+
function setCurrentLocale(locale) {
|
|
942
|
+
if (_localeStore.locale === locale) return;
|
|
943
|
+
_localeStore.setLocale(locale);
|
|
944
|
+
void preloadLocale(locale);
|
|
945
|
+
_localeListeners.forEach((listener) => listener());
|
|
946
|
+
}
|
|
947
|
+
var coreTranslations = {
|
|
948
|
+
en: {
|
|
949
|
+
"common.save": "Save",
|
|
950
|
+
"common.saveChanges": "Save Changes",
|
|
951
|
+
"common.saving": "Saving...",
|
|
952
|
+
"common.cancel": "Cancel",
|
|
953
|
+
"common.delete": "Delete",
|
|
954
|
+
"common.edit": "Edit",
|
|
955
|
+
"common.close": "Close",
|
|
956
|
+
"common.confirm": "Confirm",
|
|
957
|
+
"common.discard": "Discard",
|
|
958
|
+
"common.back": "Back",
|
|
959
|
+
"common.formIncomplete": "Fill in the required fields before saving.",
|
|
960
|
+
"connectors.title": "Integrations",
|
|
961
|
+
"connectors.subtitle": "Connect external providers to this module.",
|
|
962
|
+
"connectors.connected": "Connected",
|
|
963
|
+
"connectors.notConnected": "Not connected",
|
|
964
|
+
"connectors.connect": "Connect",
|
|
965
|
+
"connectors.disconnect": "Disconnect",
|
|
966
|
+
"connectors.test": "Test",
|
|
967
|
+
"connectors.save": "Save connection",
|
|
968
|
+
"connectors.testing": "Testing\u2026",
|
|
969
|
+
"connectors.saving": "Saving\u2026",
|
|
970
|
+
"connectors.empty": "No integrations available for this module yet.",
|
|
971
|
+
"connectors.configure": "Configure",
|
|
972
|
+
"saveBar.unsaved": "Unsaved changes",
|
|
973
|
+
"common.add": "Add",
|
|
974
|
+
"common.loading": "Loading...",
|
|
975
|
+
"common.error": "Something went wrong",
|
|
976
|
+
"common.noResults": "No results found.",
|
|
977
|
+
"common.search": "Search",
|
|
978
|
+
"common.actions": "Actions",
|
|
979
|
+
"common.continue": "Continue",
|
|
980
|
+
"common.done": "Done",
|
|
981
|
+
"common.yes": "Yes",
|
|
982
|
+
"common.no": "No",
|
|
983
|
+
"common.active": "Active",
|
|
984
|
+
"common.inactive": "Inactive",
|
|
985
|
+
"common.overview": "Overview",
|
|
986
|
+
"common.settings": "Settings",
|
|
987
|
+
"common.plugins": "Plugins",
|
|
988
|
+
"common.new": "New",
|
|
989
|
+
"common.filter": "Filter",
|
|
990
|
+
"common.export": "Export",
|
|
991
|
+
"common.import": "Import",
|
|
992
|
+
"common.preview": "Preview",
|
|
993
|
+
"common.total": "Total",
|
|
994
|
+
"crud.newItem": "New {{name}}",
|
|
995
|
+
"crud.editItem": "Edit {{name}}",
|
|
996
|
+
"crud.deleteConfirm": "Delete {{name}}?",
|
|
997
|
+
"crud.deleteMessage": "This action cannot be undone.",
|
|
998
|
+
"crud.created": "{{name}} created",
|
|
999
|
+
"crud.updated": "{{name}} updated",
|
|
1000
|
+
"crud.deleted": "{{name}} deleted",
|
|
1001
|
+
"crud.noItems": "No {{namePlural}} yet.",
|
|
1002
|
+
"auth.login.title": "Sign in",
|
|
1003
|
+
"auth.login.subtitle": "Enter your credentials to access your account",
|
|
1004
|
+
"auth.login.emailLabel": "Email",
|
|
1005
|
+
"auth.login.passwordLabel": "Password",
|
|
1006
|
+
"auth.login.submit": "Sign in",
|
|
1007
|
+
"auth.login.forgotPassword": "Forgot password?",
|
|
1008
|
+
"auth.login.noAccount": "Don't have an account?",
|
|
1009
|
+
"auth.login.signUpLink": "Sign up",
|
|
1010
|
+
"auth.signup.title": "Create account",
|
|
1011
|
+
"auth.signup.submit": "Create account",
|
|
1012
|
+
"auth.signup.hasAccount": "Already have an account?",
|
|
1013
|
+
"auth.signup.signInLink": "Sign in",
|
|
1014
|
+
"settings.title": "Settings",
|
|
1015
|
+
"settings.company": "Company",
|
|
1016
|
+
"settings.branding": "Branding",
|
|
1017
|
+
"settings.security": "Security",
|
|
1018
|
+
"settings.sites": "Sites",
|
|
1019
|
+
"settings.team": "Team",
|
|
1020
|
+
"settings.billing": "Billing",
|
|
1021
|
+
"settings.locations": "Locations",
|
|
1022
|
+
"billing.title": "Plans & Billing",
|
|
1023
|
+
"billing.currentPlan": "Current Plan",
|
|
1024
|
+
"billing.upgrade": "Upgrade",
|
|
1025
|
+
"billing.manage": "Manage Subscription"
|
|
1026
|
+
},
|
|
1027
|
+
"pt-BR": {
|
|
1028
|
+
"common.save": "Salvar",
|
|
1029
|
+
"common.saveChanges": "Salvar Altera\xE7\xF5es",
|
|
1030
|
+
"common.saving": "Salvando...",
|
|
1031
|
+
"common.cancel": "Cancelar",
|
|
1032
|
+
"common.delete": "Excluir",
|
|
1033
|
+
"common.edit": "Editar",
|
|
1034
|
+
"common.close": "Fechar",
|
|
1035
|
+
"common.confirm": "Confirmar",
|
|
1036
|
+
"common.discard": "Descartar",
|
|
1037
|
+
"common.back": "Voltar",
|
|
1038
|
+
"common.formIncomplete": "Preencha os campos obrigat\xF3rios antes de salvar.",
|
|
1039
|
+
"connectors.title": "Integra\xE7\xF5es",
|
|
1040
|
+
"connectors.subtitle": "Conecte provedores externos a este m\xF3dulo.",
|
|
1041
|
+
"connectors.connected": "Conectado",
|
|
1042
|
+
"connectors.notConnected": "N\xE3o conectado",
|
|
1043
|
+
"connectors.connect": "Conectar",
|
|
1044
|
+
"connectors.disconnect": "Desconectar",
|
|
1045
|
+
"connectors.test": "Testar",
|
|
1046
|
+
"connectors.save": "Salvar conex\xE3o",
|
|
1047
|
+
"connectors.testing": "Testando\u2026",
|
|
1048
|
+
"connectors.saving": "Salvando\u2026",
|
|
1049
|
+
"connectors.empty": "Nenhuma integra\xE7\xE3o dispon\xEDvel para este m\xF3dulo ainda.",
|
|
1050
|
+
"connectors.configure": "Configurar",
|
|
1051
|
+
"saveBar.unsaved": "Altera\xE7\xF5es n\xE3o salvas",
|
|
1052
|
+
"common.add": "Adicionar",
|
|
1053
|
+
"common.loading": "Carregando...",
|
|
1054
|
+
"common.error": "Algo deu errado",
|
|
1055
|
+
"common.noResults": "Nenhum resultado encontrado.",
|
|
1056
|
+
"common.search": "Buscar",
|
|
1057
|
+
"common.actions": "A\xE7\xF5es",
|
|
1058
|
+
"common.continue": "Continuar",
|
|
1059
|
+
"common.done": "Conclu\xEDdo",
|
|
1060
|
+
"common.yes": "Sim",
|
|
1061
|
+
"common.no": "N\xE3o",
|
|
1062
|
+
"common.active": "Ativo",
|
|
1063
|
+
"common.inactive": "Inativo",
|
|
1064
|
+
"common.overview": "Vis\xE3o Geral",
|
|
1065
|
+
"common.settings": "Configura\xE7\xF5es",
|
|
1066
|
+
"common.plugins": "Plugins",
|
|
1067
|
+
"common.new": "Novo",
|
|
1068
|
+
"common.filter": "Filtrar",
|
|
1069
|
+
"common.export": "Exportar",
|
|
1070
|
+
"common.import": "Importar",
|
|
1071
|
+
"common.preview": "Pr\xE9-visualizar",
|
|
1072
|
+
"common.total": "Total",
|
|
1073
|
+
"crud.newItem": "Novo {{name}}",
|
|
1074
|
+
"crud.editItem": "Editar {{name}}",
|
|
1075
|
+
"crud.deleteConfirm": "Excluir {{name}}?",
|
|
1076
|
+
"crud.deleteMessage": "Esta a\xE7\xE3o n\xE3o pode ser desfeita.",
|
|
1077
|
+
"crud.created": "{{name}} criado",
|
|
1078
|
+
"crud.updated": "{{name}} atualizado",
|
|
1079
|
+
"crud.deleted": "{{name}} exclu\xEDdo",
|
|
1080
|
+
"crud.noItems": "Nenhum {{namePlural}} ainda.",
|
|
1081
|
+
"auth.login.title": "Entrar",
|
|
1082
|
+
"auth.login.subtitle": "Digite suas credenciais para acessar sua conta",
|
|
1083
|
+
"auth.login.emailLabel": "E-mail",
|
|
1084
|
+
"auth.login.passwordLabel": "Senha",
|
|
1085
|
+
"auth.login.submit": "Entrar",
|
|
1086
|
+
"auth.login.forgotPassword": "Esqueceu a senha?",
|
|
1087
|
+
"auth.login.noAccount": "N\xE3o tem uma conta?",
|
|
1088
|
+
"auth.login.signUpLink": "Cadastrar",
|
|
1089
|
+
"auth.signup.title": "Criar conta",
|
|
1090
|
+
"auth.signup.submit": "Criar conta",
|
|
1091
|
+
"auth.signup.hasAccount": "J\xE1 tem uma conta?",
|
|
1092
|
+
"auth.signup.signInLink": "Entrar",
|
|
1093
|
+
"settings.title": "Configura\xE7\xF5es",
|
|
1094
|
+
"settings.company": "Empresa",
|
|
1095
|
+
"settings.branding": "Identidade Visual",
|
|
1096
|
+
"settings.security": "Seguran\xE7a",
|
|
1097
|
+
"settings.sites": "Sites",
|
|
1098
|
+
"settings.team": "Equipe",
|
|
1099
|
+
"settings.billing": "Faturamento",
|
|
1100
|
+
"settings.locations": "Localiza\xE7\xF5es",
|
|
1101
|
+
"billing.title": "Planos e Faturamento",
|
|
1102
|
+
"billing.currentPlan": "Plano Atual",
|
|
1103
|
+
"billing.upgrade": "Fazer Upgrade",
|
|
1104
|
+
"billing.manage": "Gerenciar Assinatura"
|
|
1105
|
+
}
|
|
1106
|
+
};
|
|
1107
|
+
var _globalTranslations = {};
|
|
1108
|
+
function registerTranslations(translations) {
|
|
1109
|
+
if (!translations) return;
|
|
1110
|
+
_globalTranslations = mergeTranslations(_globalTranslations, translations);
|
|
1111
|
+
}
|
|
1112
|
+
function mergeTranslations(base, ...overrides) {
|
|
1113
|
+
const result = { ...base };
|
|
1114
|
+
for (const override of overrides) {
|
|
1115
|
+
if (!override) continue;
|
|
1116
|
+
for (const [locale, translations] of Object.entries(override)) {
|
|
1117
|
+
result[locale] = { ...result[locale] ?? {}, ...translations };
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
return result;
|
|
1121
|
+
}
|
|
1122
|
+
registerTranslations(coreTranslations);
|
|
1123
|
+
registerTranslations({ en: shellTranslationsEn });
|
|
1124
|
+
var _lazyShellLocales = {
|
|
1125
|
+
"pt-BR": () => import('./shell-translations.pt-br-2GWRQRRP.js').then((m) => m.shellTranslationsPtBr)
|
|
1126
|
+
};
|
|
1127
|
+
var _loadedShellLocales = /* @__PURE__ */ new Set(["en"]);
|
|
1128
|
+
var _pendingShellLocales = /* @__PURE__ */ new Map();
|
|
1129
|
+
function preloadLocale(locale) {
|
|
1130
|
+
if (_loadedShellLocales.has(locale)) return Promise.resolve();
|
|
1131
|
+
const loader = _lazyShellLocales[locale];
|
|
1132
|
+
if (!loader) return Promise.resolve();
|
|
1133
|
+
let pending = _pendingShellLocales.get(locale);
|
|
1134
|
+
if (!pending) {
|
|
1135
|
+
pending = loader().then((translations) => {
|
|
1136
|
+
_loadedShellLocales.add(locale);
|
|
1137
|
+
_pendingShellLocales.delete(locale);
|
|
1138
|
+
registerTranslations({ [locale]: translations });
|
|
1139
|
+
_i18nVersion++;
|
|
1140
|
+
_localeListeners.forEach((listener) => listener());
|
|
1141
|
+
});
|
|
1142
|
+
_pendingShellLocales.set(locale, pending);
|
|
1143
|
+
}
|
|
1144
|
+
return pending;
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
export { I18nProvider, coreTranslations, getCurrentLocale, mergeTranslations, preloadLocale, registerTranslations, setCurrentLocale, setLocaleStore, useI18nConfig, useTranslation };
|
|
1148
|
+
//# sourceMappingURL=chunk-HN7PTOSH.js.map
|
|
1149
|
+
//# sourceMappingURL=chunk-HN7PTOSH.js.map
|