@masterteam/system-settings 0.0.21 → 0.0.23

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.
@@ -1,441 +1,601 @@
1
- {
2
- "system-settings": {
3
- "general-configuration-title": "Experience & Appearance",
4
- "general-configuration-description": "Product-wide defaults for how the app looks and where users land.",
5
- "explore-default-view": "Default Explore View",
6
- "explore-default-view-hint": "The view the Explore page opens with. Users can still switch views at any time.",
7
- "explore-default-view-cards": "Cards",
8
- "explore-default-view-timeline": "Timeline",
9
- "explore-default-view-table": "Table",
10
- "design-switcher": "Show Design Switcher",
11
- "design-switcher-hint": "Adds the Classic / DS switcher to the topbar so users can preview the experimental Masterteam design system. Off by default — everyone stays on the Classic design.",
12
- "page-title": "System Settings",
13
- "page-subtitle": "Manage holidays, weekend, timezone, currency, and TimeSheet policy from one screen.",
14
- "save": "Save",
15
- "save-tooltip": "Save changes ",
16
- "cancel": "Cancel",
17
- "loading": "Loading settings...",
18
- "holidays-title": "Holidays",
19
- "holidays-description": "Add the holidays that should be applied across the product.",
20
- "add-holiday": "Add Holiday",
21
- "update-holiday": "Update Holiday",
22
- "holiday-name": "Holiday Name",
23
- "holiday-name-placeholder": "Enter holiday name",
24
- "from-date": "From Date",
25
- "to-date": "To Date",
26
- "edit-holiday": "Edit holiday",
27
- "remove-holiday": "Remove holiday",
28
- "holiday-range-error": "The end date must be on or after the start date.",
29
- "no-holidays-title": "No holidays added yet",
30
- "no-holidays-description": "Add a holiday row to define product-wide holiday periods.",
31
- "date-time-title": "Date & Time",
32
- "date-time-description": "Configure the default date and time formats.",
33
- "date-format": "Date Format",
34
- "date-format-placeholder": "Select date format",
35
- "time-format": "Time Format",
36
- "time-format-placeholder": "Select time format",
37
- "format-token-year": "Year",
38
- "format-token-month": "Month",
39
- "format-token-day": "Day",
40
- "format-token-hour-24": "Hour (24h)",
41
- "format-token-hour-12": "Hour (12h)",
42
- "format-token-minute": "Minute",
43
- "format-token-second": "Second",
44
- "format-token-period": "AM/PM",
45
- "currency-title": "Currency",
46
- "currency-description": "Set the default currency and display format used across the product.",
47
- "currency": "Currency",
48
- "currency-placeholder": "Select currency",
49
- "currency-format": "Currency Format",
50
- "currency-format-placeholder": "Select currency format",
51
- "weekend-days": "Weekend Days",
52
- "weekend-placeholder": "Select weekend days",
53
- "monday": "Monday",
54
- "tuesday": "Tuesday",
55
- "wednesday": "Wednesday",
56
- "thursday": "Thursday",
57
- "friday": "Friday",
58
- "saturday": "Saturday",
59
- "sunday": "Sunday",
60
- "timesheet-policy-title": "TimeSheet Policy",
61
- "timesheet-policy-description": "Configure TimeSheet validation and generation behavior. Approval is always controlled by Process Builder.",
62
- "timesheet-policy-workflow-note": "Approval is configured in Process Builder. This page controls validation and generation only.",
63
- "general-card-title": "TimeSheet",
64
- "general-card-description": "Configure how TimeSheets are captured and submitted. Approval is always controlled by Process Builder.",
65
- "frequency": "TimeSheet Frequency",
66
- "frequency-placeholder": "Select frequency",
67
- "frequency-daily": "Daily",
68
- "frequency-weekly": "Weekly",
69
- "frequency-biweekly": "Bi-Weekly",
70
- "frequency-monthly": "Monthly",
71
- "allow-backdated-entry": "Allow Backdated Entry",
72
- "auto-lock-on-approve": "Auto-Lock on Approve",
73
- "submission-deadline-days": "Submission Deadline (Days)",
74
- "submission-deadline-days-placeholder": "Enter number of days",
75
- "submission-deadline-hint": "Days after the period ends before submission is locked. Use 0 for no deadline.",
76
- "working-hours-card-title": "Working Hours",
77
- "working-hours-card-description": "Configure the organization-level working calendar used when a record does not have its own override.",
78
- "daily-working-hours": "Daily Working Hours",
79
- "daily-working-hours-placeholder": "Enter hours per day",
80
- "max-daily-below-daily": "Maximum daily hours is below the configured daily working hours.",
81
- "week-start-day": "Week Start Day",
82
- "week-start-day-placeholder": "Select week start day",
83
- "allowed-schedule-item-types": "Allowed Schedule Item Types",
84
- "allowed-schedule-item-types-placeholder": "Select item types",
85
- "regular-daily-hours": "Regular Daily Hours",
86
- "regular-daily-hours-placeholder": "Enter regular daily hours",
87
- "max-daily-hours": "Maximum Daily Hours",
88
- "max-daily-hours-placeholder": "Enter maximum daily hours",
89
- "past-entry-lock-days": "Past Entry Lock Days",
90
- "past-entry-lock-days-placeholder": "Leave empty for no lock",
91
- "rate-source": "Rate Source",
92
- "rate-source-placeholder": "Select rate source",
93
- "generation-enabled": "Generation Enabled",
94
- "manual-generation-enabled": "Manual Generation Enabled",
95
- "allow-overtime": "Allow Overtime",
96
- "require-overtime-reason": "Require Overtime Reason",
97
- "require-description": "Require Description",
98
- "allow-future-entry": "Allow Future Entry",
99
- "assigned-items-only": "Assigned Items Only",
100
- "allow-zero-hour-submit": "Allow Zero-Hour Submit",
101
- "cost-enabled": "Cost Enabled",
102
- "schedule-item-task": "Task",
103
- "schedule-item-milestone": "Milestone",
104
- "schedule-item-deliverable": "Deliverable",
105
- "rate-source-user-hourly-rate": "User Hourly Rate",
106
- "rate-source-none": "None",
107
- "global-working-hours-title": "Global Working Hours",
108
- "global-working-hours-description": "Configure the inherited organization-level working calendar used when a record does not have its own override.",
109
- "global-timezone": "Timezone",
110
- "global-timezone-placeholder": "Select timezone",
111
- "work-day-start": "Work Day Start",
112
- "work-day-start-placeholder": "Select start time",
113
- "work-day-end": "Work Day End",
114
- "work-day-end-placeholder": "Select end time",
115
- "working-days": "Working Days",
116
- "working-days-placeholder": "Select working days",
117
- "global-holidays": "Holiday Dates",
118
- "global-holidays-placeholder": "YYYY-MM-DD dates separated by commas",
119
- "saved-successfully": "Settings saved successfully.",
120
- "no-changes-message": "There are no changes to save."
121
- },
122
- "email-delivery": {
123
- "title": "Email Delivery",
124
- "tabs": {
125
- "connections": "Connections",
126
- "activity": "Activity"
127
- },
128
- "loading": "Loading...",
129
- "access-denied-title": "Access denied",
130
- "access-denied-description": "Control Panel access is required to manage email delivery.",
131
- "access-checking": "Checking Control Panel access...",
132
- "access-error-title": "Control Panel access could not be checked.",
133
- "access-error-description": "This is not a permission decision. Try again, and contact an administrator if it keeps failing.",
134
- "access-retry": "Try again",
135
- "connections-title": "Connections",
136
- "create-connection": "Add connection",
137
- "connection-details": "Connection details",
138
- "connection-not-found": "Connection not found",
139
- "no-providers-title": "No providers available",
140
- "no-providers-description": "Ask an administrator to enable an approved email provider.",
141
- "no-connections-title": "No email connections",
142
- "no-connections-description": "Add an approved provider connection to begin setup.",
143
- "details": "Details",
144
- "view-details": "View details",
145
- "edit": "Edit",
146
- "validate": "Validate",
147
- "authorize": "Authorize",
148
- "test-send": "Send test",
149
- "bind": "Use for notifications",
150
- "unbind": "Stop using",
151
- "use-for-notifications": "Use for notifications",
152
- "stop-using": "Stop using",
153
- "delete": "Delete",
154
- "revoke": "Revoke authorization",
155
- "save": "Save",
156
- "cancel": "Cancel",
157
- "close": "Close",
158
- "configured": "Configured",
159
- "not-configured": "Not configured",
160
- "safe-settings": "Safe settings",
161
- "connection-overview": "Connection overview",
162
- "provider-settings": "Provider settings",
163
- "credential-status": "Credential status",
164
- "last-rotated": "Last rotated",
165
- "no-credentials": "This connection has no stored credential fields.",
166
- "used-for-notifications": "Used for notifications",
167
- "yes": "Yes",
168
- "no": "No",
169
- "authorization-state": "Authorization state",
170
- "provider-warnings": "Provider guidance",
171
- "connection": {
172
- "name": "Name",
173
- "provider": "Provider",
174
- "authentication-mode": "Sign-in method",
175
- "sender": "Sender",
176
- "sender-address": "Sender email",
177
- "sender-display-name": "Sender name",
178
- "state": "Status",
179
- "bindings": "Used for",
180
- "last-validation": "Last checked"
181
- },
182
- "editor": {
183
- "create-title": "Add email connection",
184
- "edit-title": "Edit email connection",
185
- "basics": "Connection",
186
- "configuration": "Provider settings",
187
- "credentials": "Credentials",
188
- "select-provider-mode": "Select a provider and sign-in method to see its settings.",
189
- "update-invalidates-proof": "Saving changes invalidates the previous validation and controlled-test proof. Validate and test again."
190
- },
191
- "credential": {
192
- "operation": "Update action",
193
- "keep": "Keep current credential",
194
- "replace": "Replace credential",
195
- "clear": "Clear credential",
196
- "storage-choice": "Credential storage",
197
- "protected-value": "Protected value",
198
- "protected-value-hint": "Submitted once and protected before storage. It cannot be displayed later.",
199
- "external-reference": "External secret reference",
200
- "external-reference-hint": "The value is stored by DevOps. Pplus saves only an EmailSecrets reference alias."
201
- },
202
- "validation": {
203
- "host": "Enter an approved DNS host, not localhost or an IP address.",
204
- "https-url": "Enter an approved HTTPS URL without credentials or fragments."
205
- },
206
- "test": {
207
- "title": "Send controlled test",
208
- "real-email-warning-title": "This sends a real email.",
209
- "real-email-warning": "Confirm the recipients and content before sending.",
210
- "recipients": "Recipients",
211
- "recipients-placeholder": "name@example.com",
212
- "recipients-hint": "Enter 1–100 distinct addresses separated by commas, spaces, or semicolons.",
213
- "recipients-invalid": "Enter 1–100 valid, distinct email addresses.",
214
- "subject": "Subject",
215
- "body": "Body",
216
- "html": "Send as HTML",
217
- "send": "Send test",
218
- "retrieve": "Retrieve result",
219
- "timeout-title": "The send result was not received.",
220
- "timeout-description": "Retrieve the stored result with the same request ID. This will not send another email."
221
- },
222
- "user-test": {
223
- "real-email-warning-title": "This sends a real email.",
224
- "real-email-warning": "Use a safe test address and confirm the placeholder values before sending.",
225
- "test-request-id": "Test request ID",
226
- "recipients": "Test recipients",
227
- "recipients-placeholder": "name@example.com",
228
- "recipients-hint": "Enter 1–10 distinct addresses separated by commas, spaces, or semicolons.",
229
- "recipients-invalid": "Enter 1–10 valid, distinct email addresses.",
230
- "placeholder-values": "Placeholder values",
231
- "placeholder-values-hint": "These values replace the placeholders in the saved email template.",
232
- "placeholder-value": "Enter a test value",
233
- "no-placeholders": "This saved email template has no placeholders.",
234
- "pending-title": "Waiting for the send result…",
235
- "pending-description": "The same request ID is being checked. The email will not be sent again.",
236
- "timeout-title": "The send result was not received.",
237
- "timeout-description": "Retrieve the stored result with the same request ID. This will not send another email.",
238
- "accepted": "The provider accepted every test email.",
239
- "not-accepted": "One or more test emails were not accepted.",
240
- "request-state": "Request state",
241
- "recipient-count": "Expected recipients",
242
- "accepted-unconfirmed": "Accepted by the provider does not confirm final delivery to the mailbox.",
243
- "close": "Close",
244
- "retrieve": "Check result",
245
- "send": "Send test email"
246
- },
247
- "accepted-unconfirmed": "Accepted by provider — final mailbox delivery is not confirmed.",
248
- "accepted-copy": "Accepted by provider — final mailbox delivery is not confirmed.",
249
- "outcome-unknown-warning": "The provider outcome is unknown. Do not resend until an operator investigates.",
250
- "outcome-unknown-copy": "The provider outcome is unknown. Do not resend until an operator investigates.",
251
- "activity-title": "Recent delivery attempts",
252
- "attempt-details": "Attempt details",
253
- "delivery-summary": "Delivery summary",
254
- "technical-identifiers": "Technical identifiers",
255
- "no-attempts-title": "No delivery attempts",
256
- "no-attempts-description": "Recent notification and controlled-test attempts will appear here.",
257
- "load-more": "Load more",
258
- "recipient-fingerprint": "Recipient fingerprint",
259
- "provider-request-id": "Provider request ID",
260
- "correlation-id": "Correlation ID",
261
- "attempt": {
262
- "id": "Attempt ID",
263
- "status": "Status",
264
- "provider": "Provider",
265
- "created": "Time",
266
- "count": "Attempts",
267
- "outcome": "Provider outcome",
268
- "operation": "Operation",
269
- "result": "Result"
270
- },
271
- "replay-attempt": "Replay attempt",
272
- "replay-warning": "Replay schedules a new provider operation. Confirm that retry is safe.",
273
- "replay-exceptional-warning": "The original email may already have been accepted. Replay can duplicate it and requires an explicit exceptional override.",
274
- "operator-reason": "Operator reason",
275
- "operator-reason-hint": "Required for the audit record; maximum 500 characters.",
276
- "exceptional-override": "I approve an exceptional replay",
277
- "exceptional-override-hint": "Use only after investigating the possibility that the provider accepted the original message.",
278
- "confirm-action": "Confirm",
279
- "advanced-support": "Advanced support",
280
- "advanced-support-description": "Recovery and evidence tools for trained operators.",
281
- "quarantine-title": "Finalization quarantine",
282
- "quarantine-description": "Scope-owned results that need operator recovery or acknowledgement.",
283
- "no-quarantine-title": "No quarantined results",
284
- "no-quarantine-description": "There are no scope-owned finalization items to review.",
285
- "recovery-classification": "Recovery classification",
286
- "code": "Code",
287
- "issue": "Issue",
288
- "detected": "Detected",
289
- "actions": "Actions",
290
- "retry": "Retry",
291
- "acknowledge": "Acknowledge",
292
- "retry-quarantine": "Retry quarantined result",
293
- "acknowledge-quarantine": "Acknowledge quarantined result",
294
- "quarantine-retry-warning": "Retry finalization using the preserved provider result.",
295
- "quarantine-acknowledge-warning": "Acknowledgement terminalizes the related unknown outcome.",
296
- "host-evidence-title": "Host evidence",
297
- "host-evidence-description": "Orphan, conflict, and unresolved evidence. Export files are never previewed or persisted.",
298
- "no-evidence-title": "No host evidence",
299
- "no-evidence-description": "There are no unresolved evidence occurrences.",
300
- "evidence-kind": "Evidence kind",
301
- "evidence-occurrence-id": "Evidence occurrence ID",
302
- "resolution-state": "Resolution state",
303
- "ownership-state": "Ownership state",
304
- "export": "Export",
305
- "repair": "Repair",
306
- "repair-evidence": "Repair evidence",
307
- "acknowledge-evidence": "Acknowledge evidence",
308
- "evidence-repair-warning": "Repair uses the latest decision token and may update the related attempt.",
309
- "evidence-acknowledge-warning": "Acknowledgement records this occurrence as reviewed without repair.",
310
- "rebuild-evidence-index": "Rebuild evidence index",
311
- "rebuild-evidence-warning": "Rebuild the host evidence index with a scan budget of 200?",
312
- "scan-budget-exhausted": "The scan budget was exhausted. Rebuild again or load the refreshed results.",
313
- "confirm": {
314
- "unbind": "This disables notification email for this purpose.",
315
- "delete": "Delete this unbound connection and its credential and authorization state?",
316
- "revoke": "Revoke stored authorization? New authorization and a controlled test will be required."
317
- },
318
- "unknown-code": "An email delivery error occurred.",
319
- "connection-created": "Connection created.",
320
- "connection-updated": "Connection updated.",
321
- "connection-deleted": "Connection deleted.",
322
- "connection-bound": "This connection is now used for notifications.",
323
- "connection-unbound": "Notification email has been stopped for this purpose.",
324
- "authorization-revoked": "Authorization revoked.",
325
- "attempt-replay-scheduled": "Replay was scheduled.",
326
- "quarantine-retry-submitted": "Quarantine retry submitted.",
327
- "quarantine-acknowledged": "Quarantine item acknowledged.",
328
- "evidence-repaired": "Evidence repaired.",
329
- "evidence-acknowledged": "Evidence acknowledged.",
330
- "evidence-index-rebuilt": "Evidence index rebuilt.",
331
- "status": {
332
- "readiness": {
333
- "ready": "Ready",
334
- "needs-setup": "Needs setup",
335
- "unavailable": "Unavailable"
336
- },
337
- "connection": {
338
- "draft": "Draft",
339
- "pending-authorization": "Pending authorization",
340
- "pending-validation": "Pending validation",
341
- "ready": "Ready",
342
- "reauthorization-required": "Reauthorization required",
343
- "conditional-access-required": "Conditional access required",
344
- "disabled": "Disabled",
345
- "invalid": "Invalid"
346
- },
347
- "attempt": {
348
- "reserved": "Reserved",
349
- "provider-invocation-started": "Sending",
350
- "provider-not-accepted": "Not accepted",
351
- "reconciling": "Reconciling",
352
- "pending": "Pending",
353
- "blocked": "Blocked",
354
- "retry-scheduled": "Retry scheduled",
355
- "accepted": "Accepted by provider",
356
- "outcome-unknown": "Outcome unknown",
357
- "failed-permanent": "Permanently failed",
358
- "dead-lettered": "Needs operator review"
359
- },
360
- "support": {
361
- "active": "Active",
362
- "repair-pending": "Repair pending",
363
- "repaired": "Repaired",
364
- "acknowledgement-pending": "Acknowledgement pending",
365
- "conflict": "Conflict",
366
- "owned": "Owned",
367
- "missing": "Missing",
368
- "identity-incomplete": "Identity incomplete",
369
- "retryable-after-upgrade": "Retry after upgrade",
370
- "repair-required": "Repair required",
371
- "acknowledge-only": "Acknowledge only",
372
- "configured": "Configured",
373
- "not-configured": "Not configured",
374
- "acknowledged": "Acknowledged"
375
- }
376
- },
377
- "error-actions": {
378
- "refresh": "Refresh the latest state",
379
- "request_permission": "Request the required permission",
380
- "authorize": "Authorize the connection",
381
- "retry_later": "Try again later",
382
- "poll_status": "Check the stored status",
383
- "review_evidence": "Review recovery evidence",
384
- "inspect_notification": "Review notification configuration",
385
- "contact_administrator": "Contact an administrator",
386
- "correct_input": "Correct the entered information",
387
- "correct_configuration": "Correct the connection configuration",
388
- "contact_support": "Contact support"
389
- },
390
- "codes": {
391
- "email.ready": "Email delivery is ready.",
392
- "email.not_ready": "Complete connection setup, validation, and a controlled test.",
393
- "email.management_disabled": "Email delivery management is unavailable in this deployment.",
394
- "email.validation_succeeded": "Connection validation succeeded.",
395
- "email.authorization_completed": "Mailbox authorization completed.",
396
- "email.delivery_result_quarantined": "A delivery result requires operator review.",
397
- "email.secret_unavailable": "The configured credential is unavailable.",
398
- "email.concurrency_conflict": "This item changed. Refresh and try again.",
399
- "email.connection_not_ready": "Complete connection setup, validation, and a controlled test.",
400
- "email.accepted_delivery_unconfirmed": "The provider accepted the email. Mailbox delivery is not confirmed.",
401
- "email.binding_missing": "No connection is in use for this purpose. Test a connection, then use it for notifications.",
402
- "email.delivery_test_request_in_progress": "The test is still running. Retrieve the stored result instead of sending again.",
403
- "email.delivery_test_request_conflict": "This test request ID was already used with different content. Start a new test.",
404
- "email.provider_outcome_unknown": "The provider did not report an outcome. Do not resend until an operator investigates.",
405
- "email.timeout_outcome_unknown": "The provider request timed out without an outcome. Do not resend until an operator investigates.",
406
- "email.configuration_changed_after_test": "The configuration changed after the last test. Validate and test the current version again.",
407
- "REQ_001": "The request was rejected before it reached the service because its idempotency key was missing. Try the action again."
408
- },
409
- "operation": {
410
- "connection-test": "Connection test"
411
- },
412
- "test-request-id": "Test request ID",
413
- "recipient-fingerprint-hint": "A non-reversible fingerprint. It is not a recipient address.",
414
- "refresh": "Refresh",
415
- "in-use": "In use",
416
- "breadcrumb": {
417
- "product-settings": "Product Settings"
418
- },
419
- "retry-after": "Try again in {{seconds}} seconds.",
420
- "http": {
421
- "unauthorized": "Your session is no longer valid. Sign in again to continue.",
422
- "forbidden": "You do not have access to email delivery management.",
423
- "conflict": "This item changed on the server. The latest state was reloaded — review it before saving again.",
424
- "unprocessable": "The submitted configuration was rejected. Correct the highlighted values and try again.",
425
- "authorization-required": "Provider authorization is required before this action can run.",
426
- "too-many-requests": "Too many requests were sent. Try again shortly.",
427
- "unavailable": "The provider or platform is unavailable. Try again later."
428
- },
429
- "state-guidance": {
430
- "draft": "Finish the configuration, then validate it and send a controlled test.",
431
- "pending-authorization": "Authorize this connection with the provider, then validate it and send a controlled test.",
432
- "pending-validation": "Validate this connection, then send a controlled test.",
433
- "ready": "This connection can be used for notification email.",
434
- "reauthorization-required": "Provider authorization is no longer valid. Reauthorize, then validate and test again.",
435
- "conditional-access-required": "The provider requires additional access approval. Follow the provider guidance below.",
436
- "disabled": "This connection is disabled. Contact an administrator.",
437
- "invalid": "The last check did not succeed. Correct the configuration, then validate and test again."
438
- },
439
- "last-result": "Last result"
440
- }
441
- }
1
+ {
2
+ "system-settings": {
3
+ "general-configuration-title": "Experience & Appearance",
4
+ "general-configuration-description": "Product-wide defaults for how the app looks and where users land.",
5
+ "explore-default-view": "Default Explore View",
6
+ "explore-default-view-hint": "The view the Explore page opens with. Users can still switch views at any time.",
7
+ "explore-default-view-cards": "Cards",
8
+ "explore-default-view-timeline": "Timeline",
9
+ "explore-default-view-table": "Table",
10
+ "design-switcher": "Show Design Switcher",
11
+ "design-switcher-hint": "Adds the Classic / DS switcher to the topbar so users can preview the experimental Masterteam design system. Off by default — everyone stays on the Classic design.",
12
+ "page-title": "System Settings",
13
+ "page-subtitle": "Manage holidays, weekend, timezone, currency, and TimeSheet policy from one screen.",
14
+ "save": "Save",
15
+ "save-tooltip": "Save changes ",
16
+ "cancel": "Cancel",
17
+ "loading": "Loading settings...",
18
+ "holidays-title": "Holidays",
19
+ "holidays-description": "Add the holidays that should be applied across the product.",
20
+ "add-holiday": "Add Holiday",
21
+ "update-holiday": "Update Holiday",
22
+ "holiday-name": "Holiday Name",
23
+ "holiday-name-placeholder": "Enter holiday name",
24
+ "from-date": "From Date",
25
+ "to-date": "To Date",
26
+ "edit-holiday": "Edit holiday",
27
+ "remove-holiday": "Remove holiday",
28
+ "holiday-range-error": "The end date must be on or after the start date.",
29
+ "no-holidays-title": "No holidays added yet",
30
+ "no-holidays-description": "Add a holiday row to define product-wide holiday periods.",
31
+ "date-time-title": "Date & Time",
32
+ "date-time-description": "Configure the default date and time formats.",
33
+ "date-format": "Date Format",
34
+ "date-format-placeholder": "Select date format",
35
+ "time-format": "Time Format",
36
+ "time-format-placeholder": "Select time format",
37
+ "format-token-year": "Year",
38
+ "format-token-month": "Month",
39
+ "format-token-day": "Day",
40
+ "format-token-hour-24": "Hour (24h)",
41
+ "format-token-hour-12": "Hour (12h)",
42
+ "format-token-minute": "Minute",
43
+ "format-token-second": "Second",
44
+ "format-token-period": "AM/PM",
45
+ "currency-title": "Currency",
46
+ "currency-description": "Set the default currency and display format used across the product.",
47
+ "currency": "Currency",
48
+ "currency-placeholder": "Select currency",
49
+ "currency-format": "Currency Format",
50
+ "currency-format-placeholder": "Select currency format",
51
+ "weekend-days": "Weekend Days",
52
+ "weekend-placeholder": "Select weekend days",
53
+ "monday": "Monday",
54
+ "tuesday": "Tuesday",
55
+ "wednesday": "Wednesday",
56
+ "thursday": "Thursday",
57
+ "friday": "Friday",
58
+ "saturday": "Saturday",
59
+ "sunday": "Sunday",
60
+ "timesheet-policy-title": "TimeSheet Policy",
61
+ "timesheet-policy-description": "Configure TimeSheet validation and generation behavior. Approval is always controlled by Process Builder.",
62
+ "timesheet-policy-workflow-note": "Approval is configured in Process Builder. This page controls validation and generation only.",
63
+ "general-card-title": "TimeSheet",
64
+ "general-card-description": "Configure how TimeSheets are captured and submitted. Approval is always controlled by Process Builder.",
65
+ "frequency": "TimeSheet Frequency",
66
+ "frequency-placeholder": "Select frequency",
67
+ "frequency-daily": "Daily",
68
+ "frequency-weekly": "Weekly",
69
+ "frequency-biweekly": "Bi-Weekly",
70
+ "frequency-monthly": "Monthly",
71
+ "allow-backdated-entry": "Allow Backdated Entry",
72
+ "auto-lock-on-approve": "Auto-Lock on Approve",
73
+ "submission-deadline-days": "Submission Deadline (Days)",
74
+ "submission-deadline-days-placeholder": "Enter number of days",
75
+ "submission-deadline-hint": "Days after the period ends before submission is locked. Use 0 for no deadline.",
76
+ "working-hours-card-title": "Working Hours",
77
+ "working-hours-card-description": "Configure the organization-level working calendar used when a record does not have its own override.",
78
+ "daily-working-hours": "Daily Working Hours",
79
+ "daily-working-hours-placeholder": "Enter hours per day",
80
+ "daily-working-hours-min-message": "Daily working hours must be greater than 0.",
81
+ "max-daily-below-daily": "Maximum daily hours is below the configured daily working hours.",
82
+ "week-start-day": "Week Start Day",
83
+ "week-start-day-placeholder": "Select week start day",
84
+ "allowed-schedule-item-types": "Allowed Schedule Item Types",
85
+ "allowed-schedule-item-types-placeholder": "Select item types",
86
+ "regular-daily-hours": "Regular Daily Hours",
87
+ "regular-daily-hours-placeholder": "Enter regular daily hours",
88
+ "max-daily-hours": "Maximum Daily Hours",
89
+ "max-daily-hours-placeholder": "Enter maximum daily hours",
90
+ "past-entry-lock-days": "Past Entry Lock Days",
91
+ "past-entry-lock-days-placeholder": "Leave empty for no lock",
92
+ "rate-source": "Rate Source",
93
+ "rate-source-placeholder": "Select rate source",
94
+ "generation-enabled": "Generation Enabled",
95
+ "manual-generation-enabled": "Manual Generation Enabled",
96
+ "allow-overtime": "Allow Overtime",
97
+ "require-overtime-reason": "Require Overtime Reason",
98
+ "require-description": "Require Description",
99
+ "allow-future-entry": "Allow Future Entry",
100
+ "assigned-items-only": "Assigned Items Only",
101
+ "allow-zero-hour-submit": "Allow Zero-Hour Submit",
102
+ "cost-enabled": "Cost Enabled",
103
+ "schedule-item-task": "Task",
104
+ "schedule-item-milestone": "Milestone",
105
+ "schedule-item-deliverable": "Deliverable",
106
+ "rate-source-user-hourly-rate": "User Hourly Rate",
107
+ "rate-source-none": "None",
108
+ "global-working-hours-title": "Global Working Hours",
109
+ "global-working-hours-description": "Configure the inherited organization-level working calendar used when a record does not have its own override.",
110
+ "global-timezone": "Timezone",
111
+ "global-timezone-placeholder": "Select timezone",
112
+ "work-day-start": "Work Day Start",
113
+ "work-day-start-placeholder": "Select start time",
114
+ "work-day-end": "Work Day End",
115
+ "work-day-end-placeholder": "Select end time",
116
+ "working-days": "Working Days",
117
+ "working-days-placeholder": "Select working days",
118
+ "global-holidays": "Holiday Dates",
119
+ "global-holidays-placeholder": "YYYY-MM-DD dates separated by commas",
120
+ "saved-successfully": "Settings saved successfully.",
121
+ "no-changes-message": "There are no changes to save."
122
+ },
123
+ "email-delivery": {
124
+ "title": "Email Settings",
125
+ "tabs": {
126
+ "connections": "Connections",
127
+ "activity": "Activity",
128
+ "design": "Email design"
129
+ },
130
+ "loading": "Loading...",
131
+ "access-denied-title": "Access denied",
132
+ "access-denied-description": "Control Panel access is required to manage email delivery.",
133
+ "access-checking": "Checking Control Panel access...",
134
+ "access-error-title": "Control Panel access could not be checked.",
135
+ "access-error-description": "This is not a permission decision. Try again, and contact an administrator if it keeps failing.",
136
+ "access-retry": "Try again",
137
+ "connections-title": "Connections",
138
+ "create-connection": "Add connection",
139
+ "connection-details": "Connection details",
140
+ "connection-not-found": "Connection not found",
141
+ "no-providers-title": "No providers available",
142
+ "no-providers-description": "Ask an administrator to enable an approved email provider.",
143
+ "no-connections-title": "No email connections",
144
+ "no-connections-description": "Add an approved provider connection to begin setup.",
145
+ "details": "Details",
146
+ "view-details": "View details",
147
+ "edit": "Edit",
148
+ "validate": "Validate",
149
+ "authorize": "Authorize",
150
+ "test-send": "Send test",
151
+ "bind": "Use for notifications",
152
+ "unbind": "Stop using",
153
+ "use-for-notifications": "Use for notifications",
154
+ "stop-using": "Stop using",
155
+ "delete": "Delete",
156
+ "revoke": "Revoke authorization",
157
+ "save": "Save",
158
+ "cancel": "Cancel",
159
+ "close": "Close",
160
+ "configured": "Configured",
161
+ "not-configured": "Not configured",
162
+ "safe-settings": "Safe settings",
163
+ "connection-overview": "Connection overview",
164
+ "provider-settings": "Provider settings",
165
+ "credential-status": "Credential status",
166
+ "last-rotated": "Last rotated",
167
+ "no-credentials": "This connection has no stored credential fields.",
168
+ "used-for-notifications": "Used for notifications",
169
+ "yes": "Yes",
170
+ "no": "No",
171
+ "authorization-state": "Authorization state",
172
+ "provider-warnings": "Provider guidance",
173
+ "connection": {
174
+ "name": "Name",
175
+ "provider": "Provider",
176
+ "authentication-mode": "Sign-in method",
177
+ "sender": "Sender",
178
+ "sender-address": "Sender email",
179
+ "sender-display-name": "Sender name",
180
+ "state": "Status",
181
+ "bindings": "Used for",
182
+ "last-validation": "Last checked"
183
+ },
184
+ "editor": {
185
+ "design": "Visual",
186
+ "html": "HTML",
187
+ "toolbar": "Formatting",
188
+ "canvas": "Email editor",
189
+ "slot": "Notification content appears here",
190
+ "empty": "The email is empty.",
191
+ "bilingual": "Start with English and Arabic sections",
192
+ "design-blocked": "This is a complete HTML document, so it can only be edited as HTML.",
193
+ "actions": {
194
+ "paragraph": "Normal text",
195
+ "heading": "Heading",
196
+ "subheading": "Subheading",
197
+ "bold": "Bold",
198
+ "italic": "Italic",
199
+ "underline": "Underline",
200
+ "bullets": "Bulleted list",
201
+ "numbers": "Numbered list",
202
+ "link": "Link",
203
+ "ltr": "English paragraph (left to right)",
204
+ "rtl": "Arabic paragraph (right to left)",
205
+ "clear": "Clear formatting",
206
+ "undo": "Undo",
207
+ "redo": "Redo",
208
+ "image": "Image",
209
+ "image-edit": "Edit the selected image",
210
+ "strike": "Strikethrough",
211
+ "quote": "Quote",
212
+ "divider": "Divider line",
213
+ "text-color": "Text colour",
214
+ "highlight": "Highlight colour",
215
+ "size": "Text size",
216
+ "align-left": "Align left",
217
+ "align-center": "Align centre",
218
+ "align-right": "Align right"
219
+ },
220
+ "link": {
221
+ "placeholder": "https://",
222
+ "apply": "Apply",
223
+ "record": "Link to the record",
224
+ "remove": "Remove link",
225
+ "invalid": "Use a web address that starts with https://, or link to the record."
226
+ },
227
+ "image": {
228
+ "src": "Image address",
229
+ "alt": "Description",
230
+ "alt-hint": "Shown when images are blocked and read by screen readers.",
231
+ "width": "Width (px)",
232
+ "height": "Height (px)",
233
+ "hint": "Images can only come from: {{origins}}",
234
+ "insert": "Insert image",
235
+ "update": "Update image",
236
+ "remove": "Remove image",
237
+ "cancel": "Cancel",
238
+ "errors": {
239
+ "no-origins": "This server does not accept any image addresses yet. An administrator must add the image host (for example the organization website) to the approved image list before images can be used.",
240
+ "url": "Use an https:// address with no ? or # part.",
241
+ "origin": "This address is not on the approved list. Approved: {{origins}}",
242
+ "alt": "Describe the image.",
243
+ "size": "Width and height must be whole numbers between {{min}} and {{max}}."
244
+ }
245
+ },
246
+ "style": {
247
+ "remove-color": "No colour",
248
+ "text-color": "Text colour",
249
+ "highlight": "Highlight",
250
+ "size": "Text size",
251
+ "sizes": {
252
+ "small": "Small",
253
+ "normal": "Normal",
254
+ "large": "Large",
255
+ "huge": "Huge"
256
+ },
257
+ "colors": {
258
+ "black": "Black",
259
+ "gray": "Grey",
260
+ "red": "Red",
261
+ "orange": "Orange",
262
+ "amber": "Amber",
263
+ "yellow": "Yellow",
264
+ "green": "Green",
265
+ "teal": "Teal",
266
+ "blue": "Blue",
267
+ "purple": "Purple",
268
+ "pink": "Pink"
269
+ }
270
+ }
271
+ },
272
+ "credential": {
273
+ "operation": "Update action",
274
+ "keep": "Keep current credential",
275
+ "replace": "Replace credential",
276
+ "clear": "Clear credential",
277
+ "storage-choice": "Credential storage",
278
+ "protected-value": "Protected value",
279
+ "protected-value-hint": "Submitted once and protected before storage. It cannot be displayed later.",
280
+ "external-reference": "External secret reference",
281
+ "external-reference-hint": "The value is stored by DevOps. Pplus saves only an EmailSecrets reference alias."
282
+ },
283
+ "validation": {
284
+ "host": "Enter an approved DNS host, not localhost or an IP address.",
285
+ "https-url": "Enter an approved HTTPS URL without credentials or fragments."
286
+ },
287
+ "test": {
288
+ "title": "Send controlled test",
289
+ "real-email-warning-title": "This sends a real email.",
290
+ "real-email-warning": "Confirm the receivers and content before sending.",
291
+ "recipients": "Receivers",
292
+ "recipients-placeholder": "name@example.com",
293
+ "recipients-hint": "Enter 1–100 distinct addresses separated by commas, spaces, or semicolons.",
294
+ "recipients-invalid": "Enter 1–100 valid, distinct email addresses.",
295
+ "subject": "Subject",
296
+ "body": "Body",
297
+ "html": "Send as HTML",
298
+ "send": "Send test",
299
+ "retrieve": "Retrieve result",
300
+ "timeout-title": "The send result was not received.",
301
+ "timeout-description": "Retrieve the stored result with the same request ID. This will not send another email."
302
+ },
303
+ "user-test": {
304
+ "real-email-warning-title": "This sends a real email.",
305
+ "real-email-warning": "Use a safe test address and confirm the placeholder values before sending.",
306
+ "recipients": "Test receivers",
307
+ "recipients-placeholder": "name@example.com",
308
+ "recipients-hint": "Enter 1–10 distinct addresses separated by commas, spaces, or semicolons.",
309
+ "recipients-invalid": "Enter 1–10 valid, distinct email addresses.",
310
+ "placeholder-values": "Placeholder values",
311
+ "placeholder-values-hint": "These values replace the placeholders in the saved email template.",
312
+ "placeholder-value": "Enter a test value",
313
+ "no-placeholders": "This saved email template has no placeholders.",
314
+ "pending-title": "Waiting for the send result…",
315
+ "pending-description": "Checking the result. The email will not be sent again.",
316
+ "timeout-title": "The send result was not received.",
317
+ "timeout-description": "Check the stored result. This will not send another email.",
318
+ "accepted": "The provider accepted every test email.",
319
+ "not-accepted": "One or more test emails were not accepted.",
320
+ "recipient-count": "Expected receivers",
321
+ "accepted-unconfirmed": "Accepted by the provider does not confirm final delivery to the mailbox.",
322
+ "close": "Close",
323
+ "retrieve": "Check result",
324
+ "send": "Send test email",
325
+ "real-email-warning-samples": "Use a safe test address. Placeholders are filled with sample values such as [Receiver]."
326
+ },
327
+ "accepted-unconfirmed": "Accepted by provider — final mailbox delivery is not confirmed.",
328
+ "accepted-copy": "Accepted by provider — final mailbox delivery is not confirmed.",
329
+ "outcome-unknown-warning": "The provider outcome is unknown. Do not resend until an operator investigates.",
330
+ "outcome-unknown-copy": "The provider outcome is unknown. Do not resend until an operator investigates.",
331
+ "activity-title": "Recent delivery attempts",
332
+ "attempt-details": "Attempt details",
333
+ "delivery-summary": "Delivery summary",
334
+ "technical-identifiers": "Technical identifiers",
335
+ "no-attempts-title": "No delivery attempts",
336
+ "no-attempts-description": "Recent notification and controlled-test attempts will appear here.",
337
+ "load-more": "Load more",
338
+ "recipient-fingerprint": "Receiver fingerprint",
339
+ "provider-request-id": "Provider request ID",
340
+ "correlation-id": "Correlation ID",
341
+ "attempt": {
342
+ "id": "Attempt ID",
343
+ "status": "Status",
344
+ "provider": "Provider",
345
+ "created": "Time",
346
+ "count": "Attempts",
347
+ "outcome": "Provider outcome",
348
+ "operation": "Operation",
349
+ "result": "Result"
350
+ },
351
+ "replay-attempt": "Replay attempt",
352
+ "replay-warning": "Replay schedules a new provider operation. Confirm that retry is safe.",
353
+ "replay-exceptional-warning": "The original email may already have been accepted. Replay can duplicate it and requires an explicit exceptional override.",
354
+ "operator-reason": "Operator reason",
355
+ "operator-reason-hint": "Required for the audit record; maximum 500 characters.",
356
+ "exceptional-override": "I approve an exceptional replay",
357
+ "exceptional-override-hint": "Use only after investigating the possibility that the provider accepted the original message.",
358
+ "confirm-action": "Confirm",
359
+ "advanced-support": "Advanced support",
360
+ "advanced-support-description": "Recovery and evidence tools for trained operators.",
361
+ "quarantine-title": "Finalization quarantine",
362
+ "quarantine-description": "Scope-owned results that need operator recovery or acknowledgement.",
363
+ "no-quarantine-title": "No quarantined results",
364
+ "no-quarantine-description": "There are no scope-owned finalization items to review.",
365
+ "recovery-classification": "Recovery classification",
366
+ "code": "Code",
367
+ "issue": "Issue",
368
+ "detected": "Detected",
369
+ "actions": "Actions",
370
+ "retry": "Retry",
371
+ "acknowledge": "Acknowledge",
372
+ "retry-quarantine": "Retry quarantined result",
373
+ "acknowledge-quarantine": "Acknowledge quarantined result",
374
+ "quarantine-retry-warning": "Retry finalization using the preserved provider result.",
375
+ "quarantine-acknowledge-warning": "Acknowledgement terminalizes the related unknown outcome.",
376
+ "host-evidence-title": "Host evidence",
377
+ "host-evidence-description": "Orphan, conflict, and unresolved evidence. Export files are never previewed or persisted.",
378
+ "no-evidence-title": "No host evidence",
379
+ "no-evidence-description": "There are no unresolved evidence occurrences.",
380
+ "evidence-kind": "Evidence kind",
381
+ "evidence-occurrence-id": "Evidence occurrence ID",
382
+ "resolution-state": "Resolution state",
383
+ "ownership-state": "Ownership state",
384
+ "export": "Export",
385
+ "repair": "Repair",
386
+ "repair-evidence": "Repair evidence",
387
+ "acknowledge-evidence": "Acknowledge evidence",
388
+ "evidence-repair-warning": "Repair uses the latest decision token and may update the related attempt.",
389
+ "evidence-acknowledge-warning": "Acknowledgement records this occurrence as reviewed without repair.",
390
+ "rebuild-evidence-index": "Rebuild evidence index",
391
+ "rebuild-evidence-warning": "Rebuild the host evidence index with a scan budget of 200?",
392
+ "scan-budget-exhausted": "The scan budget was exhausted. Rebuild again or load the refreshed results.",
393
+ "confirm": {
394
+ "unbind": "This disables notification email for this purpose.",
395
+ "delete": "Delete this unbound connection and its credential and authorization state?",
396
+ "revoke": "Revoke stored authorization? New authorization and a controlled test will be required."
397
+ },
398
+ "unknown-code": "An email delivery error occurred.",
399
+ "connection-created": "Connection created.",
400
+ "connection-updated": "Connection updated.",
401
+ "connection-deleted": "Connection deleted.",
402
+ "connection-bound": "This connection is now used for notifications.",
403
+ "connection-unbound": "Notification email has been stopped for this purpose.",
404
+ "authorization-revoked": "Authorization revoked.",
405
+ "attempt-replay-scheduled": "Replay was scheduled.",
406
+ "quarantine-retry-submitted": "Quarantine retry submitted.",
407
+ "quarantine-acknowledged": "Quarantine item acknowledged.",
408
+ "evidence-repaired": "Evidence repaired.",
409
+ "evidence-acknowledged": "Evidence acknowledged.",
410
+ "evidence-index-rebuilt": "Evidence index rebuilt.",
411
+ "status": {
412
+ "readiness": {
413
+ "ready": "Ready",
414
+ "needs-setup": "Needs setup",
415
+ "unavailable": "Unavailable"
416
+ },
417
+ "connection": {
418
+ "draft": "Draft",
419
+ "pending-authorization": "Pending authorization",
420
+ "pending-validation": "Pending validation",
421
+ "ready": "Ready",
422
+ "reauthorization-required": "Reauthorization required",
423
+ "conditional-access-required": "Conditional access required",
424
+ "disabled": "Disabled",
425
+ "invalid": "Invalid"
426
+ },
427
+ "attempt": {
428
+ "reserved": "Reserved",
429
+ "provider-invocation-started": "Sending",
430
+ "provider-not-accepted": "Not accepted",
431
+ "reconciling": "Reconciling",
432
+ "pending": "Pending",
433
+ "blocked": "Blocked",
434
+ "retry-scheduled": "Retry scheduled",
435
+ "accepted": "Accepted by provider",
436
+ "outcome-unknown": "Outcome unknown",
437
+ "failed-permanent": "Permanently failed",
438
+ "dead-lettered": "Needs operator review"
439
+ },
440
+ "support": {
441
+ "active": "Active",
442
+ "repair-pending": "Repair pending",
443
+ "repaired": "Repaired",
444
+ "acknowledgement-pending": "Acknowledgement pending",
445
+ "conflict": "Conflict",
446
+ "owned": "Owned",
447
+ "missing": "Missing",
448
+ "identity-incomplete": "Identity incomplete",
449
+ "retryable-after-upgrade": "Retry after upgrade",
450
+ "repair-required": "Repair required",
451
+ "acknowledge-only": "Acknowledge only",
452
+ "configured": "Configured",
453
+ "not-configured": "Not configured",
454
+ "acknowledged": "Acknowledged"
455
+ }
456
+ },
457
+ "error-actions": {
458
+ "refresh": "Refresh the latest state",
459
+ "request_permission": "Request the required permission",
460
+ "authorize": "Authorize the connection",
461
+ "retry_later": "Try again later",
462
+ "poll_status": "Check the stored status",
463
+ "review_evidence": "Review recovery evidence",
464
+ "inspect_notification": "Review notification configuration",
465
+ "contact_administrator": "Contact an administrator",
466
+ "correct_input": "Correct the entered information",
467
+ "correct_configuration": "Correct the connection configuration",
468
+ "contact_support": "Contact support"
469
+ },
470
+ "codes": {
471
+ "email.ready": "Email delivery is ready.",
472
+ "email.not_ready": "Complete connection setup, validation, and a controlled test.",
473
+ "email.management_disabled": "Email delivery management is unavailable in this deployment.",
474
+ "email.validation_succeeded": "Connection validation succeeded.",
475
+ "email.authorization_completed": "Mailbox authorization completed.",
476
+ "email.delivery_result_quarantined": "A delivery result requires operator review.",
477
+ "email.secret_unavailable": "The configured credential is unavailable.",
478
+ "email.concurrency_conflict": "This item changed. Refresh and try again.",
479
+ "email.connection_not_ready": "Complete connection setup, validation, and a controlled test.",
480
+ "email.accepted_delivery_unconfirmed": "The provider accepted the email. Mailbox delivery is not confirmed.",
481
+ "email.binding_missing": "No connection is in use for this purpose. Test a connection, then use it for notifications.",
482
+ "email.delivery_test_request_in_progress": "The test is still running. Retrieve the stored result instead of sending again.",
483
+ "email.delivery_test_request_conflict": "This test request ID was already used with different content. Start a new test.",
484
+ "email.provider_outcome_unknown": "The provider did not report an outcome. Do not resend until an operator investigates.",
485
+ "email.timeout_outcome_unknown": "The provider request timed out without an outcome. Do not resend until an operator investigates.",
486
+ "email.configuration_changed_after_test": "The configuration changed after the last test. Validate and test the current version again.",
487
+ "REQ_001": "The request was rejected before it reached the service because its idempotency key was missing. Try the action again."
488
+ },
489
+ "operation": {
490
+ "connection-test": "Connection test"
491
+ },
492
+ "test-request-id": "Test request ID",
493
+ "recipient-fingerprint-hint": "A non-reversible fingerprint. It is not a receiver address.",
494
+ "refresh": "Refresh",
495
+ "in-use": "In use",
496
+ "breadcrumb": {
497
+ "product-settings": "Product Settings"
498
+ },
499
+ "retry-after": "Try again in {{seconds}} seconds.",
500
+ "http": {
501
+ "unauthorized": "Your session is no longer valid. Sign in again to continue.",
502
+ "forbidden": "You do not have access to email delivery management.",
503
+ "conflict": "This item changed on the server. The latest state was reloaded — review it before saving again.",
504
+ "unprocessable": "The submitted configuration was rejected. Correct the highlighted values and try again.",
505
+ "authorization-required": "Provider authorization is required before this action can run.",
506
+ "too-many-requests": "Too many requests were sent. Try again shortly.",
507
+ "unavailable": "The provider or platform is unavailable. Try again later."
508
+ },
509
+ "state-guidance": {
510
+ "draft": "Finish the configuration, then validate it and send a controlled test.",
511
+ "pending-authorization": "Authorize this connection with the provider, then validate it and send a controlled test.",
512
+ "pending-validation": "Validate this connection, then send a controlled test.",
513
+ "ready": "This connection can be used for notification email.",
514
+ "reauthorization-required": "Provider authorization is no longer valid. Reauthorize, then validate and test again.",
515
+ "conditional-access-required": "The provider requires additional access approval. Follow the provider guidance below.",
516
+ "disabled": "This connection is disabled. Contact an administrator.",
517
+ "invalid": "The last check did not succeed. Correct the configuration, then validate and test again."
518
+ },
519
+ "last-result": "Last result",
520
+ "design": {
521
+ "source-title": "Design",
522
+ "source-label": "Shared email design",
523
+ "source-hint": "Wraps every notification email. The dashed box marks where each notification text goes — keep exactly one.",
524
+ "size": "{{used}} KB of {{limit}} KB",
525
+ "slot-missing": "The notification content box is missing. Undo the change, or add '{content}' in the HTML tab.",
526
+ "slot-duplicate": "Keep only one notification content box.",
527
+ "preview-title": "Preview",
528
+ "preview-updating": "Updating…",
529
+ "narrow": "Phone width",
530
+ "unsaved": "Unpublished changes",
531
+ "revision": "version {{revision}}",
532
+ "source": {
533
+ "published": "Published",
534
+ "configured": "Configured default",
535
+ "recommended": "Recommended default"
536
+ },
537
+ "conflict": "Someone published a newer design. Your edits are kept — choose how to continue.",
538
+ "blocked": "Emails are blocked until the design is corrected:",
539
+ "load-error-title": "The email design could not be loaded",
540
+ "published": "The email design is published.",
541
+ "restored": "The previous email design is published again.",
542
+ "actions": {
543
+ "publish": "Publish",
544
+ "restore": "Restore previous",
545
+ "discard": "Discard changes",
546
+ "retry": "Retry",
547
+ "keep-mine": "Keep my edits",
548
+ "load-latest": "Load the latest"
549
+ },
550
+ "publish-blocked": {
551
+ "size-limit": "The HTML is larger than 128 KB.",
552
+ "slot": "The design needs exactly one '{content}' slot.",
553
+ "conflict": "Resolve the newer published design first.",
554
+ "preview-required": "Wait for the preview of your latest changes.",
555
+ "no-changes": "There are no changes to publish."
556
+ },
557
+ "confirm-publish": {
558
+ "header": "Publish email design",
559
+ "message": "Every notification email prepared from now on will use this design. Emails already prepared keep their original design."
560
+ },
561
+ "confirm-restore": {
562
+ "header": "Restore previous design",
563
+ "message": "The previous design will be published again as a new version for future emails.",
564
+ "message-dirty": "The previous design will be published again as a new version for future emails. Your unpublished edits will be discarded."
565
+ },
566
+ "leave": {
567
+ "header": "Unpublished design changes",
568
+ "message": "Your email design changes are not published yet.",
569
+ "discard": "Discard changes",
570
+ "stay": "Stay"
571
+ },
572
+ "codes": {
573
+ "generic": "The request could not be completed ({{code}}).",
574
+ "EMAIL_REVISION_CONFLICT": "Someone published a newer design while you were editing.",
575
+ "EMAIL_REVISION_REQUIRED": "Reload the design and try again.",
576
+ "EMAIL_CONTENT_SLOT_REQUIRED": "The design must contain the '{content}' slot exactly once.",
577
+ "EMAIL_CONTENT_SLOT_LOCATION": "Put '{content}' on its own inside a div, td or th — not in an attribute, a paragraph or an inline element.",
578
+ "EMAIL_BASE_TOKEN_NOT_ALLOWED": "Placeholders such as the receiver name belong in notification templates, not in the shared design.",
579
+ "EMAIL_TOKEN_LOCATION": "A placeholder is in a place it is not allowed.",
580
+ "EMAIL_TOKEN_INVALID": "A placeholder is written incorrectly.",
581
+ "EMAIL_SIZE_LIMIT": "The HTML is larger than allowed.",
582
+ "EMAIL_PREVIOUS_LAYOUT_UNAVAILABLE": "There is no previous design to restore.",
583
+ "EMAIL_WRITE_CONTEXT_BUSY": "The design could not be saved right now. Your changes are kept — try again.",
584
+ "EMAIL_STORED_LAYOUT_INVALID": "The saved design is damaged and needs an administrator to repair it.",
585
+ "EMAIL_LAYOUT_REVALIDATION_REQUIRED": "The published design no longer passes the current safety rules. Emails are blocked until it is corrected or restored.",
586
+ "EMAIL_CONFIGURED_LAYOUT_INVALID": "The configured design is invalid, so the recommended design is used.",
587
+ "EMAIL_BODY_REVALIDATION_REQUIRED": "This content no longer passes the current safety rules. Correct it and save again.",
588
+ "EMAIL_STYLE_REMOVED": "An unsupported style was removed.",
589
+ "EMAIL_IMAGE_REMOVED": "An image was removed. Images need an approved HTTPS address, a width and height between 16 and 1200, and alt text.",
590
+ "EMAIL_IMAGE_ORIGIN_INVALID": "An image address is not on the approved list.",
591
+ "EMAIL_TAG_REMOVED": "An unsupported element was removed.",
592
+ "EMAIL_ATTRIBUTE_REMOVED": "An unsupported attribute was removed.",
593
+ "EMAIL_URL_REMOVED": "A link was removed. Links must use HTTPS.",
594
+ "EMAIL_URL_UNRESOLVED": "A link could not be resolved.",
595
+ "EMAIL_VALUE_MISSING": "A placeholder has no sample value.",
596
+ "EMAIL_BODY_EMPTY": "The content is empty.",
597
+ "EMAIL_BODY_CONTENT_SLOT_NOT_ALLOWED": "'{content}' belongs in the shared design, not in a notification."
598
+ }
599
+ }
600
+ }
601
+ }