strapi-plugin-magic-mail 3.0.4 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +192 -0
- package/README.md +625 -1336
- package/dist/admin/App-Bi6mzEff.mjs +10973 -0
- package/dist/admin/App-aaEU9cpu.js +10976 -0
- package/dist/admin/PluginSettings-BR2-PVHx.mjs +705 -0
- package/dist/admin/PluginSettings-DbTkOzCh.js +707 -0
- package/dist/admin/analyticsLogs-BCY0Zv3Y.mjs +685 -0
- package/dist/admin/analyticsLogs-DNU09hoB.js +686 -0
- package/dist/admin/de-B5bPRK6l.js +717 -0
- package/dist/admin/de-BqYqMhOn.mjs +717 -0
- package/dist/admin/en-8xANOQdO.mjs +717 -0
- package/dist/admin/en-Bk5eVrtc.js +717 -0
- package/dist/admin/es-BfPsCsam.js +717 -0
- package/dist/admin/es-DgpTufJ_.mjs +717 -0
- package/dist/admin/fr-BuotP0Gc.mjs +717 -0
- package/dist/admin/fr-IQ3KPUoS.js +717 -0
- package/dist/admin/index-QGqbGw6k.js +102 -0
- package/dist/admin/index-qvFJ-a0Q.mjs +103 -0
- package/dist/admin/index.js +2 -99
- package/dist/admin/index.mjs +2 -99
- package/dist/admin/pt-BI63Lncs.js +717 -0
- package/dist/admin/pt-DBZu2cDY.mjs +717 -0
- package/dist/server/index.js +4655 -3374
- package/dist/server/index.mjs +4655 -3374
- package/package.json +54 -48
- package/strapi-admin.js +3 -2
- package/strapi-server.js +3 -2
- package/dist/admin/App-D3TchJYB.js +0 -8028
- package/dist/admin/App-DkyWmEgv.mjs +0 -8007
- package/dist/admin/PluginSettings-B6TdA1qd.js +0 -388
- package/dist/admin/PluginSettings-DTqdZ-nW.mjs +0 -386
- package/dist/admin/StyledButtons-aq1EWrQ-.mjs +0 -433
- package/dist/admin/StyledButtons-jHF7TXal.js +0 -434
- package/dist/admin/de-DKEFnBGC.js +0 -63
- package/dist/admin/de-SKsLY2de.mjs +0 -63
- package/dist/admin/en-CvtZE1HH.js +0 -63
- package/dist/admin/en-Ds2Q7fue.mjs +0 -63
- package/dist/admin/es-BEvzLtTg.mjs +0 -63
- package/dist/admin/es-BbLLes3D.js +0 -63
- package/dist/admin/fr-CRpwImX6.mjs +0 -63
- package/dist/admin/fr-nH9uN6s9.js +0 -63
- package/dist/admin/pt-CjOe2N_n.mjs +0 -63
- package/dist/admin/pt-qt_48NxL.js +0 -63
- package/pics/EmailAccountDashboard.png +0 -0
- package/pics/Emailaddccount1.png +0 -0
- package/pics/RoutingEmailTemplates.png +0 -0
- package/pics/Templates.png +0 -0
- package/pics/codesnippet.png +0 -0
- package/pics/emailAnalytics.png +0 -0
- package/pics/emailDesigner.png +0 -0
- package/pics/emailTemplateSendTest.png +0 -0
- package/pics/emailVersionHistory.png +0 -0
- package/pics/emailaddaccount2.png +0 -0
- package/pics/emailaddaccount3.png +0 -0
|
@@ -0,0 +1,717 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"accountModal.back": "Back",
|
|
5
|
+
"accountModal.continue": "Continue",
|
|
6
|
+
"accountModal.credentials.apiKeySecurityBody": "Your API key is encrypted with AES-256-GCM before it is stored.",
|
|
7
|
+
"accountModal.credentials.apiKeySecurityTitle": "API key security",
|
|
8
|
+
"accountModal.credentials.maskedHint": "A secret is stored. Leave this value unchanged to keep it, or enter a new one to replace it.",
|
|
9
|
+
"accountModal.credentials.oauthSecurityBody": "No mailbox password is stored. You authenticate directly with {provider}.",
|
|
10
|
+
"accountModal.credentials.oauthSecurityTitle": "OAuth 2.0 security",
|
|
11
|
+
"accountModal.credentials.secureStorageBody": "All credentials are encrypted with AES-256-GCM before they are stored. No plain-text passwords are kept in the database.",
|
|
12
|
+
"accountModal.credentials.secureStorageTitle": "Secure storage",
|
|
13
|
+
"accountModal.credentials.unreadableBody": "The encryption key changed since this account was saved. Re-enter all credentials below to restore the account.",
|
|
14
|
+
"accountModal.credentials.unreadableOAuth": "The encryption key changed since this account was saved, so its OAuth tokens are lost. Add the account again and delete this one. You can still save the other settings.",
|
|
15
|
+
"accountModal.credentials.unreadableTitle": "Stored credentials cannot be decrypted",
|
|
16
|
+
"accountModal.details.description": "Account description",
|
|
17
|
+
"accountModal.details.descriptionHint": "Notes about the purpose of this account. Only visible to admins.",
|
|
18
|
+
"accountModal.details.descriptionPlaceholder": "What is this account used for? For example marketing campaigns, order confirmations or password resets.",
|
|
19
|
+
"accountModal.details.fromEmail": "From email address",
|
|
20
|
+
"accountModal.details.fromEmailHint": "The address that appears as the sender in the recipients’ inbox.",
|
|
21
|
+
"accountModal.details.fromEmailInvalid": "Enter a valid sender email address.",
|
|
22
|
+
"accountModal.details.fromName": "From display name",
|
|
23
|
+
"accountModal.details.fromNameHint": 'The friendly name shown next to the email address, e.g. "ACME Corp" instead of only "noreply@acme.com".',
|
|
24
|
+
"accountModal.details.fromNamePlaceholder": "Company name",
|
|
25
|
+
"accountModal.details.name": "Account name",
|
|
26
|
+
"accountModal.details.nameHint": "Give this email account a unique, descriptive name so you can identify it later.",
|
|
27
|
+
"accountModal.details.namePlaceholder": "e.g. Company Gmail, Marketing SendGrid, Transactional Emails",
|
|
28
|
+
"accountModal.details.oauthEmailBody": "The sender address is retrieved from {provider} after authorization. You do not need to enter it.",
|
|
29
|
+
"accountModal.details.oauthEmailTitle": "Email address",
|
|
30
|
+
"accountModal.details.renameGeneric": "Routing rules refer to accounts by name. Check the routing rules after renaming this account.",
|
|
31
|
+
"accountModal.details.renameRules": 'Routing rules refer to "{name}" by name ({count, plural, one {# rule} other {# rules}}). Update them after renaming, otherwise routing falls back to the default account.',
|
|
32
|
+
"accountModal.details.renameTitle": "Renaming affects routing rules",
|
|
33
|
+
"accountModal.details.replyTo": "Reply-To email address",
|
|
34
|
+
"accountModal.details.replyToHint": "Replies from recipients go to this address. Leave it empty to use the sender address.",
|
|
35
|
+
"accountModal.details.replyToInvalid": "Enter a valid Reply-To email address or leave the field empty.",
|
|
36
|
+
"accountModal.gmail.app": "Google OAuth application",
|
|
37
|
+
"accountModal.gmail.clientIdHint": "Found in Google Cloud Console under APIs & Services, Credentials. Ends with .apps.googleusercontent.com.",
|
|
38
|
+
"accountModal.gmail.clientSecretHint": "Found in the same OAuth client settings. Keep it secret and never commit it to a repository.",
|
|
39
|
+
"accountModal.gmail.step1": "Open {link}",
|
|
40
|
+
"accountModal.gmail.step2": "Enable the Gmail API (search for it and select Enable).",
|
|
41
|
+
"accountModal.gmail.step3": "Create credentials of type OAuth client ID.",
|
|
42
|
+
"accountModal.guide.addRedirect": "Add this redirect URI:",
|
|
43
|
+
"accountModal.guide.copy": "Copy",
|
|
44
|
+
"accountModal.guide.copyRedirect": "Copy redirect URI",
|
|
45
|
+
"accountModal.guide.dashboard": "Dashboard",
|
|
46
|
+
"accountModal.guide.docs": "Documentation",
|
|
47
|
+
"accountModal.guide.newTab": "opens in a new tab",
|
|
48
|
+
"accountModal.guide.redirectHint": "The URI must exactly match the public URL of your Strapi server (server.url). Admin and API must be served from the same origin for the popup to report back.",
|
|
49
|
+
"accountModal.guide.title": "Setup guide",
|
|
50
|
+
"accountModal.loadError.body": "Check your connection and permissions, then try again.",
|
|
51
|
+
"accountModal.loadError.retry": "Try again",
|
|
52
|
+
"accountModal.loadError.title": "The account could not be loaded",
|
|
53
|
+
"accountModal.loading": "Loading account...",
|
|
54
|
+
"accountModal.mailgun.apiKey": "Mailgun API key",
|
|
55
|
+
"accountModal.mailgun.apiKeyHint": "Found in the Mailgun dashboard under Settings, API Keys. Use the private API key, not the public validation key.",
|
|
56
|
+
"accountModal.mailgun.domain": "Mailgun domain",
|
|
57
|
+
"accountModal.mailgun.domainHint": "Your verified Mailgun domain (for example mg.example.com) or a sandbox domain for testing.",
|
|
58
|
+
"accountModal.mailgun.region": "Mailgun region",
|
|
59
|
+
"accountModal.mailgun.regionEu": "EU (api.eu.mailgun.net)",
|
|
60
|
+
"accountModal.mailgun.regionHint": "The region where your Mailgun domain was created. EU domains are sent through api.eu.mailgun.net, US domains through api.mailgun.net.",
|
|
61
|
+
"accountModal.mailgun.regionUs": "US (api.mailgun.net)",
|
|
62
|
+
"accountModal.mailgun.resources": "Mailgun resources",
|
|
63
|
+
"accountModal.mailgun.resourcesBody": "API keys: Settings, API Security, Private API key. Domains: Sending, Domains (verify your domain or use the sandbox).",
|
|
64
|
+
"accountModal.mailgun.title": "Mailgun API configuration",
|
|
65
|
+
"accountModal.microsoft.app": "Microsoft Azure application",
|
|
66
|
+
"accountModal.microsoft.clientId": "Application (client) ID",
|
|
67
|
+
"accountModal.microsoft.clientIdHint": "Found in Azure Portal under App registrations, your app, Overview. A GUID.",
|
|
68
|
+
"accountModal.microsoft.clientSecret": "Client secret value",
|
|
69
|
+
"accountModal.microsoft.clientSecretHint": "From Azure Portal under Certificates & secrets, Client secrets. Copy the value, not the secret ID, and keep it secret.",
|
|
70
|
+
"accountModal.microsoft.important": "<b>Important:</b> copy both the <b>Application (client) ID</b> and the <b>Directory (tenant) ID</b> from the Overview page.",
|
|
71
|
+
"accountModal.microsoft.scopeEmail": "<c>email</c> - view the user’s email address",
|
|
72
|
+
"accountModal.microsoft.scopeMailSend": "<c>Mail.Send</c> - send email as the signed-in user",
|
|
73
|
+
"accountModal.microsoft.scopeOffline": "<c>offline_access</c> - keep access (refresh tokens)",
|
|
74
|
+
"accountModal.microsoft.scopeOpenid": "<c>openid</c> - sign users in",
|
|
75
|
+
"accountModal.microsoft.scopeUserRead": "<c>User.Read</c> - read the user profile (email address)",
|
|
76
|
+
"accountModal.microsoft.step1": "Open {link}",
|
|
77
|
+
"accountModal.microsoft.step2": "Go to Microsoft Entra ID, App registrations, New registration.",
|
|
78
|
+
"accountModal.microsoft.step3": 'Name the app (for example "MagicMail") and select "Accounts in this organizational directory only".',
|
|
79
|
+
"accountModal.microsoft.step5": "Under API permissions, add a permission: Microsoft Graph, Delegated permissions:",
|
|
80
|
+
"accountModal.microsoft.step6": 'Select "Grant admin consent" for your organization (required).',
|
|
81
|
+
"accountModal.microsoft.step7": "Under Certificates & secrets, create a new client secret.",
|
|
82
|
+
"accountModal.microsoft.step8": "Copy the <b>value</b> (not the secret ID) immediately. It is shown only once.",
|
|
83
|
+
"accountModal.microsoft.tenantId": "Tenant (directory) ID",
|
|
84
|
+
"accountModal.microsoft.tenantIdHint": "Found in Azure Portal under App registrations, your app, Overview (next to the application ID). A GUID, required for OAuth.",
|
|
85
|
+
"accountModal.oauth.authorizedBody": 'Authorization with {provider} succeeded. Select "Continue" to configure the account settings.',
|
|
86
|
+
"accountModal.oauth.authorizedTitle": "Authorized",
|
|
87
|
+
"accountModal.oauth.blocked": "The authorization window was blocked. Allow pop-ups for this site and try again.",
|
|
88
|
+
"accountModal.oauth.clientId": "OAuth client ID",
|
|
89
|
+
"accountModal.oauth.clientSecret": "OAuth client secret",
|
|
90
|
+
"accountModal.oauth.closed": "The authorization window was closed before the authorization finished. Try again if needed.",
|
|
91
|
+
"accountModal.oauth.connect": "Connect with {provider}",
|
|
92
|
+
"accountModal.oauth.connecting": "Opening authorization window...",
|
|
93
|
+
"accountModal.oauth.connectIntro": "After entering the credentials above, connect the account with {provider}:",
|
|
94
|
+
"accountModal.oauth.editBody": "Saving keeps the existing {provider} authorization. If sending fails because access was revoked or expired, reconnect with the same mailbox. To use a different mailbox or app, add a new account.",
|
|
95
|
+
"accountModal.oauth.editTitle": "Authorization is kept",
|
|
96
|
+
"accountModal.oauth.failed": "The authorization could not be started. Check the client ID and try again.",
|
|
97
|
+
"accountModal.oauth.lockedHint": "Bound to the existing authorization and cannot be changed. Add a new account to use a different app.",
|
|
98
|
+
"accountModal.oauth.started": "Complete the authorization in the pop-up window.",
|
|
99
|
+
"accountModal.oauth.success": "{provider} authorization succeeded. Complete the account setup.",
|
|
100
|
+
"accountModal.providers.custom": "Custom and transactional APIs",
|
|
101
|
+
"accountModal.providers.gmailTagline": "Google Workspace and personal accounts · 1-click OAuth",
|
|
102
|
+
"accountModal.providers.mailgunTagline": "Developer-first API · EU/US regions · routes and webhooks",
|
|
103
|
+
"accountModal.providers.microsoftTagline": "Outlook · Exchange · Azure AD · 1-click OAuth",
|
|
104
|
+
"accountModal.providers.oauth": "OAuth providers",
|
|
105
|
+
"accountModal.providers.recommended": "Recommended",
|
|
106
|
+
"accountModal.providers.sendgridTagline": "Transactional API · high deliverability · analytics",
|
|
107
|
+
"accountModal.providers.smtpTagline": "Any SMTP server · full control over host, port and authentication",
|
|
108
|
+
"accountModal.providers.yahooTagline": "Yahoo and AOL accounts · 1-click OAuth",
|
|
109
|
+
"accountModal.redirectCopied": "Redirect URI copied",
|
|
110
|
+
"accountModal.sendgrid.apiKey": "SendGrid API key",
|
|
111
|
+
"accountModal.sendgrid.apiKeyHint": 'Found in the SendGrid dashboard under Settings, API Keys. Create a key with the "Mail Send" permission.',
|
|
112
|
+
"accountModal.sendgrid.resources": "SendGrid resources",
|
|
113
|
+
"accountModal.sendgrid.resourcesBody": "API keys: Settings, API Keys, Create API Key. Required scope: Mail Send (full access).",
|
|
114
|
+
"accountModal.sendgrid.title": "SendGrid API configuration",
|
|
115
|
+
"accountModal.settings.active": "Account active",
|
|
116
|
+
"accountModal.settings.activeLabel": "Account active",
|
|
117
|
+
"accountModal.settings.activeOff": "This account does not send emails until it is turned on again.",
|
|
118
|
+
"accountModal.settings.activeOn": "This account can send emails. Turn it off to pause sending without deleting the account.",
|
|
119
|
+
"accountModal.settings.dailyLimit": "Daily email limit",
|
|
120
|
+
"accountModal.settings.dailyLimitHint": "Maximum number of emails this account can send per day. Set 0 for unlimited.",
|
|
121
|
+
"accountModal.settings.hourlyLimit": "Hourly email limit",
|
|
122
|
+
"accountModal.settings.hourlyLimitHint": "Maximum number of emails this account can send per hour. Set 0 for unlimited.",
|
|
123
|
+
"accountModal.settings.limitInvalid": "Enter a whole number from 0 to {max}.",
|
|
124
|
+
"accountModal.settings.primary": "Set as primary account",
|
|
125
|
+
"accountModal.settings.primaryHint": "Used by default when no routing rule selects an account. Only one account can be primary at a time.",
|
|
126
|
+
"accountModal.settings.primaryLabel": "Primary account",
|
|
127
|
+
"accountModal.settings.priority": "Account priority",
|
|
128
|
+
"accountModal.settings.priorityHint": "When routing emails, accounts with a higher priority (1-10) are preferred. Use 10 for your most reliable account.",
|
|
129
|
+
"accountModal.settings.priorityInvalid": "Enter a whole number from 1 to 10.",
|
|
130
|
+
"accountModal.smtp.authentication": "Authentication",
|
|
131
|
+
"accountModal.smtp.connection": "Server connection",
|
|
132
|
+
"accountModal.smtp.host": "SMTP host",
|
|
133
|
+
"accountModal.smtp.hostHint": "The address of your mail server, for example smtp.gmail.com (Gmail), smtp-mail.outlook.com (Outlook) or smtp.sendgrid.net (SendGrid).",
|
|
134
|
+
"accountModal.smtp.password": "Password or app password",
|
|
135
|
+
"accountModal.smtp.passwordHint": "For Gmail with 2-step verification, create an app password in your Google account (Security, 2-Step Verification, App passwords). Regular passwords do not work.",
|
|
136
|
+
"accountModal.smtp.passwordPlaceholder": "Enter the password",
|
|
137
|
+
"accountModal.smtp.port": "Port",
|
|
138
|
+
"accountModal.smtp.portHint": "Standard ports: 587 (recommended, STARTTLS), 465 (SSL/TLS) or 25 (unencrypted, not recommended).",
|
|
139
|
+
"accountModal.smtp.portInvalid": "Enter a port between 1 and 65535.",
|
|
140
|
+
"accountModal.smtp.secure": "Use SSL/TLS encryption",
|
|
141
|
+
"accountModal.smtp.secureLabel": "Use SSL/TLS encryption",
|
|
142
|
+
"accountModal.smtp.secureOff": "Port 587 uses STARTTLS instead. Confirm that the server supports STARTTLS before sending.",
|
|
143
|
+
"accountModal.smtp.secureOn": "Use this for implicit SSL/TLS connections, typically on port 465.",
|
|
144
|
+
"accountModal.smtp.user": "Username or email",
|
|
145
|
+
"accountModal.smtp.userHint": "Usually the full email address. Some providers use only the part before the @.",
|
|
146
|
+
"accountModal.step1.subtitle": "Select the email service that sends for this account.",
|
|
147
|
+
"accountModal.step1.title": "Choose an email provider",
|
|
148
|
+
"accountModal.step2.subtitle": "Configure how emails appear to recipients.",
|
|
149
|
+
"accountModal.step2.title": "Account details",
|
|
150
|
+
"accountModal.step3.subtitle": "Enter your {provider} credentials. They are stored encrypted.",
|
|
151
|
+
"accountModal.step3.title": "Authentication",
|
|
152
|
+
"accountModal.step4.subtitle": "Set rate limits and the priority of this account.",
|
|
153
|
+
"accountModal.step4.title": "Configuration",
|
|
154
|
+
"accountModal.steps.completedLabel": "Step {step}: {title}, completed",
|
|
155
|
+
"accountModal.steps.credentials": "Credentials",
|
|
156
|
+
"accountModal.steps.details": "Details",
|
|
157
|
+
"accountModal.steps.label": "Wizard progress",
|
|
158
|
+
"accountModal.steps.provider": "Provider",
|
|
159
|
+
"accountModal.steps.settings": "Settings",
|
|
160
|
+
"accountModal.steps.stepLabel": "Step {step}: {title}",
|
|
161
|
+
"accountModal.submit.create": "Create account",
|
|
162
|
+
"accountModal.submit.update": "Update account",
|
|
163
|
+
"accountModal.switch.active": "Active",
|
|
164
|
+
"accountModal.switch.disabled": "Disabled",
|
|
165
|
+
"accountModal.switch.enabled": "Enabled",
|
|
166
|
+
"accountModal.switch.inactive": "Inactive",
|
|
167
|
+
"accountModal.switch.notPrimary": "Not primary",
|
|
168
|
+
"accountModal.switch.primary": "Primary",
|
|
169
|
+
"accountModal.title.add": "Add email account",
|
|
170
|
+
"accountModal.title.edit": "Edit email account",
|
|
171
|
+
"accountModal.toast.created": "{name} was created.",
|
|
172
|
+
"accountModal.toast.createdOAuth": "{name} was created with {provider} OAuth.",
|
|
173
|
+
"accountModal.toast.createFailed": "The account could not be created.",
|
|
174
|
+
"accountModal.toast.saveFailedReason": "The account could not be saved: {reason}",
|
|
175
|
+
"accountModal.toast.updated": "{name} was updated.",
|
|
176
|
+
"accountModal.toast.updateFailed": "The account could not be updated.",
|
|
177
|
+
"accountModal.yahoo.app": "Yahoo developer application",
|
|
178
|
+
"accountModal.yahoo.clientId": "Yahoo client ID",
|
|
179
|
+
"accountModal.yahoo.clientIdHint": 'Found in the Yahoo developer console under your app, App information. Starts with "dj0y".',
|
|
180
|
+
"accountModal.yahoo.clientSecret": "Yahoo client secret",
|
|
181
|
+
"accountModal.yahoo.clientSecretHint": "Found in the same App information section. Keep it secret and never commit it to a repository.",
|
|
182
|
+
"accountModal.yahoo.scopeMail": "<c>Mail</c> - send and manage email",
|
|
183
|
+
"accountModal.yahoo.scopeOpenid": "<c>OpenID Connect</c> - user authentication",
|
|
184
|
+
"accountModal.yahoo.step1": "Open {link}",
|
|
185
|
+
"accountModal.yahoo.step2": 'Select "Create an App".',
|
|
186
|
+
"accountModal.yahoo.step3": "Fill in the app details (name, description).",
|
|
187
|
+
"accountModal.yahoo.step5": "Under API permissions, enable:",
|
|
188
|
+
"accountModal.yahoo.step6": "Note the client ID and client secret from the app settings.",
|
|
189
|
+
"accounts.actions.delete": "Delete account {name}",
|
|
190
|
+
"accounts.actions.edit": "Edit account {name}",
|
|
191
|
+
"accounts.actions.test": "Test account {name}",
|
|
192
|
+
"accounts.add": "Add account",
|
|
193
|
+
"accounts.delete.body": 'Delete "{name}"? This cannot be undone.',
|
|
194
|
+
"accounts.delete.failed": "The account could not be deleted.",
|
|
195
|
+
"accounts.delete.rulesCount": "{count, plural, one {# routing rule uses this account} other {# routing rules use this account}}. Update the rules, otherwise routing falls back to the default account.",
|
|
196
|
+
"accounts.delete.rulesHint": "Routing rules that use this account fall back to the default account.",
|
|
197
|
+
"accounts.delete.success": "{name} was deleted.",
|
|
198
|
+
"accounts.delete.title": "Delete email account?",
|
|
199
|
+
"accounts.empty.body": "Add your first email account to start sending emails through MagicMail’s multi-account routing.",
|
|
200
|
+
"accounts.empty.cta": "Add first account",
|
|
201
|
+
"accounts.empty.readOnly": "No email accounts have been set up yet. Ask an administrator with manage permission to add one.",
|
|
202
|
+
"accounts.empty.title": "No email accounts yet",
|
|
203
|
+
"accounts.error.body": "Check your connection and try again. If the problem persists, check the server logs.",
|
|
204
|
+
"accounts.error.retry": "Try again",
|
|
205
|
+
"accounts.error.title": "Email accounts could not be loaded",
|
|
206
|
+
"accounts.filters.allAccounts": "All accounts",
|
|
207
|
+
"accounts.filters.allProviders": "All providers",
|
|
208
|
+
"accounts.filters.noResults": "No accounts match your filters",
|
|
209
|
+
"accounts.filters.provider": "Filter by provider",
|
|
210
|
+
"accounts.filters.providerPlaceholder": "Provider",
|
|
211
|
+
"accounts.filters.reset": "Reset filters",
|
|
212
|
+
"accounts.filters.status": "Filter by status",
|
|
213
|
+
"accounts.filters.statusPlaceholder": "Status",
|
|
214
|
+
"accounts.hero.subtitle": "Multi-account email management with smart routing and OAuth support",
|
|
215
|
+
"accounts.hero.title": "MagicMail - Email Business Suite",
|
|
216
|
+
"accounts.loading": "Loading email accounts...",
|
|
217
|
+
"accounts.oauth.fallback": "The authorization result could not be passed back to the account wizard. Close this window and start the connection again from the original tab.",
|
|
218
|
+
"accounts.search.label": "Search accounts",
|
|
219
|
+
"accounts.search.placeholder": "Search by name, email or provider...",
|
|
220
|
+
"accounts.section.title": "Email accounts",
|
|
221
|
+
"accounts.stats.active": "Active accounts",
|
|
222
|
+
"accounts.stats.activeValue": "{active} / {total}",
|
|
223
|
+
"accounts.stats.today": "Emails today",
|
|
224
|
+
"accounts.stats.totalSent": "Total sent",
|
|
225
|
+
"accounts.status.active": "Active",
|
|
226
|
+
"accounts.status.inactive": "Inactive",
|
|
227
|
+
"accounts.status.primary": "Primary",
|
|
228
|
+
"accounts.table.account": "Account",
|
|
229
|
+
"accounts.table.actions": "Actions",
|
|
230
|
+
"accounts.table.lastUsed": "Last used",
|
|
231
|
+
"accounts.table.never": "Never",
|
|
232
|
+
"accounts.table.priority": "Priority",
|
|
233
|
+
"accounts.table.priorityHint": "Routing priority (higher = preferred)",
|
|
234
|
+
"accounts.table.priorityValue": "{priority}/10",
|
|
235
|
+
"accounts.table.provider": "Provider",
|
|
236
|
+
"accounts.table.status": "Status",
|
|
237
|
+
"accounts.table.totalSent": "Total sent",
|
|
238
|
+
"accounts.table.unlimited": "unlimited",
|
|
239
|
+
"accounts.table.usageLabel": "Daily limit used: {percent}%",
|
|
240
|
+
"accounts.table.usageToday": "Usage today",
|
|
241
|
+
"accounts.test.advanced": "Advanced options",
|
|
242
|
+
"accounts.test.cc": "CC recipients (optional)",
|
|
243
|
+
"accounts.test.ccHint": "Separate multiple addresses with commas.",
|
|
244
|
+
"accounts.test.ccInvalid": "Enter valid email addresses separated by commas.",
|
|
245
|
+
"accounts.test.ccTooMany": "Enter at most {max} CC recipients.",
|
|
246
|
+
"accounts.test.direct": "Direct test",
|
|
247
|
+
"accounts.test.directHint": "Send directly through this account, even if it is inactive.",
|
|
248
|
+
"accounts.test.directSuccess": "Test email sent to {email} via {name}.",
|
|
249
|
+
"accounts.test.failed": "The test email failed.",
|
|
250
|
+
"accounts.test.failedReason": "The test email failed: {reason}",
|
|
251
|
+
"accounts.test.mode": "Test mode",
|
|
252
|
+
"accounts.test.priority": "Priority",
|
|
253
|
+
"accounts.test.priorityHigh": "High priority",
|
|
254
|
+
"accounts.test.priorityNormal": "Normal",
|
|
255
|
+
"accounts.test.sendDirect": "Send test email",
|
|
256
|
+
"accounts.test.sendStrapi": "Test Strapi service",
|
|
257
|
+
"accounts.test.strapi": "Strapi service test",
|
|
258
|
+
"accounts.test.strapiFailed": "The Strapi email service test failed.",
|
|
259
|
+
"accounts.test.strapiFailedReason": "The Strapi email service test failed: {reason}",
|
|
260
|
+
"accounts.test.strapiHint": "Verify that MagicMail intercepts the Strapi email service.",
|
|
261
|
+
"accounts.test.strapiInactive": "Only available for active accounts, because routing skips inactive accounts.",
|
|
262
|
+
"accounts.test.strapiSuccess": "Strapi email service test sent via {name}.",
|
|
263
|
+
"accounts.test.testing": "Testing account",
|
|
264
|
+
"accounts.test.title": "Test email account",
|
|
265
|
+
"accounts.test.to": "Recipient email",
|
|
266
|
+
"accounts.test.toInvalid": "Enter a valid email address.",
|
|
267
|
+
"accounts.test.toRequired": "Enter a recipient email address.",
|
|
268
|
+
"accounts.test.type": "Email type",
|
|
269
|
+
"accounts.test.typeMarketing": "Marketing",
|
|
270
|
+
"accounts.test.typeNotification": "Notification",
|
|
271
|
+
"accounts.test.typeTransactional": "Transactional",
|
|
272
|
+
"accounts.test.unsubscribe": "Unsubscribe URL",
|
|
273
|
+
"accounts.test.unsubscribeHint": "Required for GDPR and CAN-SPAM compliance.",
|
|
274
|
+
"accounts.test.unsubscribeInvalid": "Enter a URL that starts with http:// or https://.",
|
|
275
|
+
"accounts.test.unsubscribeRequired": "Marketing emails need an unsubscribe URL.",
|
|
276
|
+
"accounts.test.warning": "The test finished with warnings.",
|
|
277
|
+
"accounts.test.warningReason": "The test finished with warnings: {reason}",
|
|
278
|
+
"analytics.clear.body": "Are you sure you want to delete all email logs? This action cannot be undone.",
|
|
279
|
+
"analytics.clear.button": "Clear All",
|
|
280
|
+
"analytics.clear.confirm": "Delete All",
|
|
281
|
+
"analytics.clear.count": "This will permanently delete {count, plural, one {# email log} other {# email logs}} and all associated tracking data.",
|
|
282
|
+
"analytics.clear.countUnknown": "This will permanently delete every email log and all associated tracking data.",
|
|
283
|
+
"analytics.clear.error": "Failed to clear email logs",
|
|
284
|
+
"analytics.clear.none": "No email logs to delete",
|
|
285
|
+
"analytics.clear.partial": "{count, plural, one {# email log deleted} other {# email logs deleted}}. Some logs remain. Run Clear All again to continue.",
|
|
286
|
+
"analytics.clear.success": "{count, plural, one {# email log deleted} other {# email logs deleted}}",
|
|
287
|
+
"analytics.clear.title": "Clear all email logs?",
|
|
288
|
+
"analytics.delivery.failed": "Failed",
|
|
289
|
+
"analytics.delivery.pending": "Pending",
|
|
290
|
+
"analytics.delivery.sent": "Sent",
|
|
291
|
+
"analytics.delivery.unverified": "Unverified",
|
|
292
|
+
"analytics.empty.body": "Send your first email to see analytics and tracking information here.",
|
|
293
|
+
"analytics.empty.searchBody": "Try adjusting your search terms",
|
|
294
|
+
"analytics.empty.searchTitle": "No emails found",
|
|
295
|
+
"analytics.empty.title": "No emails sent yet",
|
|
296
|
+
"analytics.loading": "Loading analytics...",
|
|
297
|
+
"analytics.logs.errorTitle": "Couldn't load email logs",
|
|
298
|
+
"analytics.logs.heading": "Recent emails ({count})",
|
|
299
|
+
"analytics.logs.headingFiltered": "Matching emails ({count})",
|
|
300
|
+
"analytics.logs.headingUnknown": "Recent emails",
|
|
301
|
+
"analytics.logs.listLabel": "Email logs",
|
|
302
|
+
"analytics.logs.loadError": "Failed to load email logs",
|
|
303
|
+
"analytics.pagination.label": "Email log pages",
|
|
304
|
+
"analytics.pagination.next": "Next",
|
|
305
|
+
"analytics.pagination.previous": "Previous",
|
|
306
|
+
"analytics.pagination.status": "Page {page} of {pageCount}",
|
|
307
|
+
"analytics.retry": "Retry",
|
|
308
|
+
"analytics.search.label": "Search email logs",
|
|
309
|
+
"analytics.search.placeholder": "Search by recipient or subject...",
|
|
310
|
+
"analytics.stats.bounced": "Bounced",
|
|
311
|
+
"analytics.stats.clicked": "Clicked",
|
|
312
|
+
"analytics.stats.label": "Email statistics",
|
|
313
|
+
"analytics.stats.loadError": "Statistics could not be loaded. The counters above are unknown, not zero.",
|
|
314
|
+
"analytics.stats.opened": "Opened",
|
|
315
|
+
"analytics.stats.totalSent": "Total sent",
|
|
316
|
+
"analytics.subtitle": "Track your email performance and engagement",
|
|
317
|
+
"analytics.table.attemptedAt": "Attempted At",
|
|
318
|
+
"analytics.table.clicked": "Clicked",
|
|
319
|
+
"analytics.table.deliveryStatus": "Delivery Status",
|
|
320
|
+
"analytics.table.no": "No",
|
|
321
|
+
"analytics.table.opened": "Opened",
|
|
322
|
+
"analytics.table.recipient": "Recipient",
|
|
323
|
+
"analytics.table.subject": "Subject",
|
|
324
|
+
"analytics.table.template": "Template",
|
|
325
|
+
"analytics.table.times": "{count, plural, one {# time} other {# times}}",
|
|
326
|
+
"analytics.title": "Email Analytics",
|
|
327
|
+
"app.tabs.accounts": "Email Accounts",
|
|
328
|
+
"app.tabs.analytics": "Analytics",
|
|
329
|
+
"app.tabs.label": "MagicMail sections",
|
|
330
|
+
"app.tabs.routing": "Routing Rules",
|
|
331
|
+
"app.tabs.templates": "Email Templates",
|
|
332
|
+
"common.cancel": "Cancel",
|
|
333
|
+
"common.clipboard.copied": "Copied to clipboard",
|
|
334
|
+
"common.clipboard.failed": "Copy failed. Select the text and copy it manually.",
|
|
335
|
+
"common.close": "Close",
|
|
336
|
+
"common.confirm": "Confirm",
|
|
337
|
+
"common.delete": "Delete",
|
|
338
|
+
"common.error.generic": "An error occurred",
|
|
339
|
+
"common.loading": "Loading...",
|
|
340
|
+
"common.pageTitle": "{page} | MagicMail",
|
|
341
|
+
"common.permissions.loadError": "Your permissions could not be loaded. Reload the page to try again.",
|
|
342
|
+
"common.save": "Save",
|
|
343
|
+
"common.search.clear": "Clear search",
|
|
344
|
+
"common.unsaved.cancel": "Keep editing",
|
|
345
|
+
"common.unsaved.confirm": "Discard changes",
|
|
346
|
+
"common.unsaved.description": "You have unsaved changes. If you continue, they will be lost.",
|
|
347
|
+
"common.unsaved.title": "Discard unsaved changes?",
|
|
348
|
+
"editor.back": "Back to email templates",
|
|
349
|
+
"editor.backToList": "Back to templates",
|
|
350
|
+
"editor.category.custom": "Custom",
|
|
351
|
+
"editor.category.marketing": "Marketing",
|
|
352
|
+
"editor.category.notification": "Notification",
|
|
353
|
+
"editor.category.transactional": "Transactional",
|
|
354
|
+
"editor.core.emailConfirmation": "Email confirmation",
|
|
355
|
+
"editor.core.resetPassword": "Reset password",
|
|
356
|
+
"editor.coreSubtitle": "Core Strapi email template",
|
|
357
|
+
"editor.design.export": "Export design",
|
|
358
|
+
"editor.design.exported": "Design exported",
|
|
359
|
+
"editor.design.exportUnavailable": "The visual editor is not ready yet. Try again in a moment.",
|
|
360
|
+
"editor.design.import": "Import design",
|
|
361
|
+
"editor.design.imported": "Design imported",
|
|
362
|
+
"editor.design.importPending": "The design will load when the visual editor is ready.",
|
|
363
|
+
"editor.design.invalid": "The file is not a valid design export.",
|
|
364
|
+
"editor.designer.cspHint": 'If your Content Security Policy blocks editor.unlayer.com, see the "Content Security Policy" section of the MagicMail README.',
|
|
365
|
+
"editor.designer.errorText": "The visual editor is unavailable. You can continue in Plain Text.",
|
|
366
|
+
"editor.designer.errorTitle": "Visual Designer could not load",
|
|
367
|
+
"editor.designer.loading": "Loading email designer...",
|
|
368
|
+
"editor.designer.switchToText": "Switch to Plain Text",
|
|
369
|
+
"editor.fields.active": "Template active",
|
|
370
|
+
"editor.fields.active.off": "Inactive",
|
|
371
|
+
"editor.fields.active.on": "Active",
|
|
372
|
+
"editor.fields.category": "Category",
|
|
373
|
+
"editor.fields.name": "Name",
|
|
374
|
+
"editor.fields.name.placeholder": "Welcome email",
|
|
375
|
+
"editor.fields.referenceId": "Reference ID",
|
|
376
|
+
"editor.fields.referenceId.invalid": "Use a positive whole number.",
|
|
377
|
+
"editor.fields.referenceId.locked": "Cannot be changed after creation.",
|
|
378
|
+
"editor.fields.required": "This field is required.",
|
|
379
|
+
"editor.fields.subject": "Subject",
|
|
380
|
+
"editor.loadError": "The template could not be loaded.",
|
|
381
|
+
"editor.loading": "Loading template...",
|
|
382
|
+
"editor.mergeTags.address": "Address",
|
|
383
|
+
"editor.mergeTags.company": "Company",
|
|
384
|
+
"editor.mergeTags.companyName": "Name",
|
|
385
|
+
"editor.mergeTags.currentDate": "Current date",
|
|
386
|
+
"editor.mergeTags.currentYear": "Current year",
|
|
387
|
+
"editor.mergeTags.email": "Email",
|
|
388
|
+
"editor.mergeTags.firstName": "First name",
|
|
389
|
+
"editor.mergeTags.lastName": "Last name",
|
|
390
|
+
"editor.mergeTags.order": "Order",
|
|
391
|
+
"editor.mergeTags.orderDate": "Date",
|
|
392
|
+
"editor.mergeTags.orderNumber": "Number",
|
|
393
|
+
"editor.mergeTags.orderStatus": "Status",
|
|
394
|
+
"editor.mergeTags.orderTotal": "Total",
|
|
395
|
+
"editor.mergeTags.system": "System",
|
|
396
|
+
"editor.mergeTags.unsubscribe": "Unsubscribe link",
|
|
397
|
+
"editor.mergeTags.user": "User",
|
|
398
|
+
"editor.mergeTags.username": "Username",
|
|
399
|
+
"editor.mergeTags.website": "Website",
|
|
400
|
+
"editor.newTemplate": "New template",
|
|
401
|
+
"editor.pageTitle": "Edit template",
|
|
402
|
+
"editor.permissions.loading": "Checking permissions...",
|
|
403
|
+
"editor.readOnly.noHtml": "This template has no HTML content yet.",
|
|
404
|
+
"editor.readOnly.previewTitle": "Email preview",
|
|
405
|
+
"editor.readOnly.text": "Editing this template requires the MagicMail manage permission.",
|
|
406
|
+
"editor.readOnly.title": "Read-only view",
|
|
407
|
+
"editor.retry": "Try again",
|
|
408
|
+
"editor.save.button": "Save template",
|
|
409
|
+
"editor.save.coreSuccess": "Core email template saved",
|
|
410
|
+
"editor.save.created": "Template created",
|
|
411
|
+
"editor.save.failure": "The template could not be saved.",
|
|
412
|
+
"editor.save.invalid": "Please complete the highlighted fields.",
|
|
413
|
+
"editor.save.noPermission": "Editing requires the MagicMail manage permission.",
|
|
414
|
+
"editor.save.saving": "Saving...",
|
|
415
|
+
"editor.save.success": "Template saved",
|
|
416
|
+
"editor.specialLinks.unsubscribe": "Unsubscribe",
|
|
417
|
+
"editor.tabs.label": "Editor mode",
|
|
418
|
+
"editor.tabs.text": "Plain Text",
|
|
419
|
+
"editor.tabs.visual": "Visual Designer",
|
|
420
|
+
"editor.text.label": "Plain text version",
|
|
421
|
+
"editor.text.placeholder": "Plain text version of your email...",
|
|
422
|
+
"editor.text.variables": "Use Mustache variables:",
|
|
423
|
+
"editor.unsavedChanges": "Unsaved changes",
|
|
424
|
+
"editor.upload.failure": "The image could not be uploaded to the Media Library.",
|
|
425
|
+
"editor.versioningEnabled": "Versioning enabled",
|
|
426
|
+
"editor.versions.close": "Close version history",
|
|
427
|
+
"editor.versions.count": "({count})",
|
|
428
|
+
"editor.versions.delete.body": "Delete version {number}? This cannot be undone.",
|
|
429
|
+
"editor.versions.delete.failure": "The version could not be deleted.",
|
|
430
|
+
"editor.versions.delete.success": "Version {number} deleted",
|
|
431
|
+
"editor.versions.delete.title": "Delete this version?",
|
|
432
|
+
"editor.versions.deleteAll": "Delete all",
|
|
433
|
+
"editor.versions.deleteAll.body": "Delete all {count, plural, one {# version} other {# versions}}? This cannot be undone.",
|
|
434
|
+
"editor.versions.deleteAll.failure": "The versions could not be deleted.",
|
|
435
|
+
"editor.versions.deleteAll.success": "{count, plural, one {# version deleted} other {# versions deleted}}",
|
|
436
|
+
"editor.versions.deleteAll.title": "Delete all versions?",
|
|
437
|
+
"editor.versions.deleteLabel": "Delete version {number}",
|
|
438
|
+
"editor.versions.empty.text": "A version is created automatically each time you save changes.",
|
|
439
|
+
"editor.versions.empty.title": "No versions yet",
|
|
440
|
+
"editor.versions.error": "Version history could not be loaded",
|
|
441
|
+
"editor.versions.loading": "Loading versions...",
|
|
442
|
+
"editor.versions.noSubject": "No subject",
|
|
443
|
+
"editor.versions.open": "Version history",
|
|
444
|
+
"editor.versions.restore": "Restore",
|
|
445
|
+
"editor.versions.restore.body": "Restore the template to version {number}? The current content is saved as a new version first.",
|
|
446
|
+
"editor.versions.restore.failure": "The version could not be restored.",
|
|
447
|
+
"editor.versions.restore.success": "Restored version {number}",
|
|
448
|
+
"editor.versions.restore.title": "Restore this version?",
|
|
449
|
+
"editor.versions.restoreLabel": "Restore version {number}",
|
|
450
|
+
"editor.versions.subject": "Subject:",
|
|
451
|
+
"editor.versions.title": "Version history",
|
|
452
|
+
"plugin.description": "Email Business Suite for Strapi 5",
|
|
453
|
+
"plugin.name": "MagicMail",
|
|
454
|
+
"plugin.settings.pluginSettings": "Plugin Settings",
|
|
455
|
+
"plugin.settings.section": "MagicMail",
|
|
456
|
+
"routing.accountsError": "Email accounts could not be loaded, so rules cannot be created or edited right now.",
|
|
457
|
+
"routing.actions.create": "Create Rule",
|
|
458
|
+
"routing.actions.delete": 'Delete rule "{name}"',
|
|
459
|
+
"routing.actions.edit": 'Edit rule "{name}"',
|
|
460
|
+
"routing.brokenRules": "{count, plural, one {# rule uses} other {# rules use}} a missing or inactive account. Edit these rules so matching emails go through the intended account.",
|
|
461
|
+
"routing.delete.body": 'Delete "{name}"? This cannot be undone.',
|
|
462
|
+
"routing.delete.hint": "Emails that matched this rule will be routed by the remaining rules instead.",
|
|
463
|
+
"routing.delete.title": "Delete routing rule?",
|
|
464
|
+
"routing.empty.cta": "Create First Rule",
|
|
465
|
+
"routing.empty.descriptionManage": "Create your first routing rule to route emails based on type, recipient, subject, template, or a custom field.",
|
|
466
|
+
"routing.empty.descriptionReadOnly": "No routing rules have been set up yet.",
|
|
467
|
+
"routing.empty.title": "No Routing Rules Yet",
|
|
468
|
+
"routing.error.description": "Check your connection and permissions, then try again.",
|
|
469
|
+
"routing.error.retry": "Retry",
|
|
470
|
+
"routing.error.title": "Routing rules could not be loaded",
|
|
471
|
+
"routing.filters.allStatuses": "All Rules",
|
|
472
|
+
"routing.filters.allTypes": "All Types",
|
|
473
|
+
"routing.filters.matchType": "Filter by match type",
|
|
474
|
+
"routing.filters.noResults": "No rules found matching your filters",
|
|
475
|
+
"routing.filters.reset": "Reset filters",
|
|
476
|
+
"routing.filters.status": "Filter by status",
|
|
477
|
+
"routing.form.account.hint": "The email account to use when this rule matches",
|
|
478
|
+
"routing.form.account.inactiveOption": "{account} - inactive",
|
|
479
|
+
"routing.form.account.label": "Target Account",
|
|
480
|
+
"routing.form.account.missingOption": "{account} - not found",
|
|
481
|
+
"routing.form.account.noneActive": "There is no active email account. Add or activate an account first.",
|
|
482
|
+
"routing.form.account.placeholder": "Select account...",
|
|
483
|
+
"routing.form.active.aria": "Routing rule active",
|
|
484
|
+
"routing.form.active.label": "Rule Active",
|
|
485
|
+
"routing.form.active.off": "This rule is disabled and will be ignored",
|
|
486
|
+
"routing.form.active.on": "This rule is active and will be used for email routing",
|
|
487
|
+
"routing.form.createTitle": "Create Routing Rule",
|
|
488
|
+
"routing.form.description.label": "Description (optional)",
|
|
489
|
+
"routing.form.description.placeholder": "Route all marketing emails through SendGrid for better deliverability...",
|
|
490
|
+
"routing.form.editTitle": "Edit Routing Rule",
|
|
491
|
+
"routing.form.error.accountInactive": "This account is inactive. Choose an active account.",
|
|
492
|
+
"routing.form.error.accountMissing": "This account no longer exists (renamed or deleted). Choose another account.",
|
|
493
|
+
"routing.form.error.priorityRange": "Enter a whole number from {min} to {max}.",
|
|
494
|
+
"routing.form.error.required": "This field is required.",
|
|
495
|
+
"routing.form.error.sameAsTarget": "The fallback account must differ from the target account.",
|
|
496
|
+
"routing.form.fallback.hint": "Use this account if the target account is unavailable or rate-limited",
|
|
497
|
+
"routing.form.fallback.label": "Fallback Account (optional)",
|
|
498
|
+
"routing.form.fallback.none": "No fallback",
|
|
499
|
+
"routing.form.matchType.help.custom": "Match based on the custom field value passed in emailData.customField.",
|
|
500
|
+
"routing.form.matchType.help.emailType": 'Match based on email type (e.g. "transactional", "marketing", "notification").',
|
|
501
|
+
"routing.form.matchType.help.recipient": 'Match if the recipient address contains this value (e.g. "@vip-customers.com").',
|
|
502
|
+
"routing.form.matchType.help.subject": 'Match if the subject line contains this value (e.g. "Invoice", "Password Reset").',
|
|
503
|
+
"routing.form.matchType.help.template": "Match if the email uses this template name (exact match).",
|
|
504
|
+
"routing.form.matchType.label": "Match Type",
|
|
505
|
+
"routing.form.matchValue.hint": "The value to match against. Case-insensitive for recipient and subject.",
|
|
506
|
+
"routing.form.matchValue.label": "Match Value",
|
|
507
|
+
"routing.form.name.hint": "A descriptive name for this routing rule",
|
|
508
|
+
"routing.form.name.label": "Rule Name",
|
|
509
|
+
"routing.form.name.placeholder": "Marketing emails via SendGrid",
|
|
510
|
+
"routing.form.priority.hint": "Rules are evaluated from the highest to the lowest priority ({min}-{max}); the first matching rule wins. Give more specific rules a higher priority.",
|
|
511
|
+
"routing.form.priority.label": "Rule Priority",
|
|
512
|
+
"routing.form.submit.create": "Create Rule",
|
|
513
|
+
"routing.form.submit.update": "Update Rule",
|
|
514
|
+
"routing.loading": "Loading routing rules...",
|
|
515
|
+
"routing.matchType.custom": "Custom Field",
|
|
516
|
+
"routing.matchType.emailType": "Email Type",
|
|
517
|
+
"routing.matchType.recipient": "Recipient",
|
|
518
|
+
"routing.matchType.subject": "Subject",
|
|
519
|
+
"routing.matchType.template": "Template",
|
|
520
|
+
"routing.notify.created": "Routing rule created",
|
|
521
|
+
"routing.notify.createFailed": "The routing rule could not be created.",
|
|
522
|
+
"routing.notify.deleted": 'Routing rule "{name}" deleted',
|
|
523
|
+
"routing.notify.deleteFailed": "The routing rule could not be deleted.",
|
|
524
|
+
"routing.notify.loadFailed": "Routing rules could not be loaded.",
|
|
525
|
+
"routing.notify.updated": "Routing rule updated",
|
|
526
|
+
"routing.notify.updateFailed": "The routing rule could not be updated.",
|
|
527
|
+
"routing.search.label": "Search routing rules",
|
|
528
|
+
"routing.search.placeholder": "Search by name, description, value, or account...",
|
|
529
|
+
"routing.section.orderHint": "Rules are listed in evaluation order: the highest priority is checked first, and the first matching rule wins.",
|
|
530
|
+
"routing.section.title": "Routing Rules",
|
|
531
|
+
"routing.stats.active": "Active rules",
|
|
532
|
+
"routing.stats.highPriority": "High priority ({threshold}+)",
|
|
533
|
+
"routing.stats.total": "Total rules",
|
|
534
|
+
"routing.status.active": "Active",
|
|
535
|
+
"routing.status.inactive": "Inactive",
|
|
536
|
+
"routing.subtitle": "Define routing rules to send emails through specific accounts based on conditions",
|
|
537
|
+
"routing.table.account": "Target Account",
|
|
538
|
+
"routing.table.accountInactive": "Account inactive",
|
|
539
|
+
"routing.table.accountMissing": "Account not found",
|
|
540
|
+
"routing.table.accountNotSet": "No account set",
|
|
541
|
+
"routing.table.actions": "Actions",
|
|
542
|
+
"routing.table.fallback": "Fallback: {account}",
|
|
543
|
+
"routing.table.highPriority": "High priority",
|
|
544
|
+
"routing.table.label": "Routing rules in evaluation order",
|
|
545
|
+
"routing.table.matchType": "Match Type",
|
|
546
|
+
"routing.table.matchValue": "Match Value",
|
|
547
|
+
"routing.table.name": "Rule Name",
|
|
548
|
+
"routing.table.priority": "Priority",
|
|
549
|
+
"routing.table.status": "Status",
|
|
550
|
+
"routing.title": "Email Routing Rules",
|
|
551
|
+
"settings.errors.invalidEmail": "Enter a valid email address",
|
|
552
|
+
"settings.errors.invalidProtocol": "This URL type is not allowed here",
|
|
553
|
+
"settings.errors.invalidText": "Use a single line of at most 1000 characters",
|
|
554
|
+
"settings.errors.invalidUrl": "Enter a valid URL, for example https://api.example.com",
|
|
555
|
+
"settings.fromEmail.hint": "Reference only. Emails are always sent from the selected account's address.",
|
|
556
|
+
"settings.fromEmail.label": "Default From Email",
|
|
557
|
+
"settings.fromName.hint": "The sender name shown in recipients' inboxes",
|
|
558
|
+
"settings.fromName.label": "Default From Name",
|
|
559
|
+
"settings.fromName.placeholder": "Your Company",
|
|
560
|
+
"settings.linkTracking.description": "Rewrite links in outgoing emails to measure click-through rates. Links with sensitive tokens are never rewritten.",
|
|
561
|
+
"settings.linkTracking.label": "Enable Link Tracking",
|
|
562
|
+
"settings.linkTracking.subtitle": "Track when recipients click links in your emails",
|
|
563
|
+
"settings.linkTracking.title": "Link Tracking",
|
|
564
|
+
"settings.loadError": "Failed to load settings",
|
|
565
|
+
"settings.loadErrorHint": "Saving is disabled until the current settings have been loaded.",
|
|
566
|
+
"settings.loadErrorTitle": "Settings could not be loaded",
|
|
567
|
+
"settings.loading": "Loading settings...",
|
|
568
|
+
"settings.openTracking.description": "Add an invisible tracking pixel to emails to detect when they are opened. Some email clients block tracking pixels.",
|
|
569
|
+
"settings.openTracking.label": "Enable Open Tracking",
|
|
570
|
+
"settings.openTracking.subtitle": "Track when recipients open your emails",
|
|
571
|
+
"settings.openTracking.title": "Open Tracking",
|
|
572
|
+
"settings.override.body": "Disable tracking for sensitive emails (password resets, magic links) by passing {code} when sending.",
|
|
573
|
+
"settings.override.title": "Per-Email Override",
|
|
574
|
+
"settings.pageTitle": "Plugin Settings",
|
|
575
|
+
"settings.refresh": "Refresh",
|
|
576
|
+
"settings.retry": "Retry",
|
|
577
|
+
"settings.save": "Save Changes",
|
|
578
|
+
"settings.saveError": "Failed to save settings",
|
|
579
|
+
"settings.saveSuccess": "Settings saved",
|
|
580
|
+
"settings.sender.subtitle": "Fallback sender information when not specified per email",
|
|
581
|
+
"settings.sender.title": "Default Sender",
|
|
582
|
+
"settings.status.invalid": "Please correct the highlighted fields",
|
|
583
|
+
"settings.status.readOnly": "Read-only access. You need the MagicMail manage permission to change settings.",
|
|
584
|
+
"settings.status.saved": "All changes saved",
|
|
585
|
+
"settings.status.unsaved": "You have unsaved changes",
|
|
586
|
+
"settings.subtitle": "Configure email tracking, analytics, and default sender information",
|
|
587
|
+
"settings.switch.off": "Disabled",
|
|
588
|
+
"settings.switch.on": "Enabled",
|
|
589
|
+
"settings.title": "Plugin Settings",
|
|
590
|
+
"settings.trackingBaseUrl.hint": "Public URL where your Strapi API is reachable. Leave empty to use the server URL.",
|
|
591
|
+
"settings.trackingBaseUrl.httpWarning": "This URL uses http. Use https in production so tracked links stay secure.",
|
|
592
|
+
"settings.trackingBaseUrl.label": "Tracking Base URL",
|
|
593
|
+
"settings.unsubscribe.description": "Add RFC 8058 unsubscribe headers to non-marketing emails too. Marketing emails always get them when an unsubscribe URL is known. This enables the Unsubscribe button in clients such as Gmail and Outlook.",
|
|
594
|
+
"settings.unsubscribe.label": "Enable List-Unsubscribe Header",
|
|
595
|
+
"settings.unsubscribe.subtitle": "List-Unsubscribe headers for one-click unsubscribe",
|
|
596
|
+
"settings.unsubscribe.title": "Unsubscribe Settings",
|
|
597
|
+
"settings.unsubscribeUrl.hint": "Default unsubscribe link (https, http or mailto) used when a send does not pass its own. Without a URL, no List-Unsubscribe header is added.",
|
|
598
|
+
"settings.unsubscribeUrl.label": "Unsubscribe URL",
|
|
599
|
+
"templates.actions.code": "Show code snippets",
|
|
600
|
+
"templates.actions.delete": "Delete template",
|
|
601
|
+
"templates.actions.downloadHtml": "Download as HTML",
|
|
602
|
+
"templates.actions.downloadJson": "Download as JSON",
|
|
603
|
+
"templates.actions.duplicate": "Duplicate template",
|
|
604
|
+
"templates.actions.edit": "Edit template {name}",
|
|
605
|
+
"templates.actions.testSend": "Send test email",
|
|
606
|
+
"templates.actions.view": "View template {name}",
|
|
607
|
+
"templates.category.custom": "Custom",
|
|
608
|
+
"templates.category.marketing": "Marketing",
|
|
609
|
+
"templates.category.notification": "Notification",
|
|
610
|
+
"templates.category.transactional": "Transactional",
|
|
611
|
+
"templates.code.copied": "Code copied to clipboard",
|
|
612
|
+
"templates.code.copiedShort": "Copied",
|
|
613
|
+
"templates.code.copy": "Copy",
|
|
614
|
+
"templates.code.copyLabel": "Copy {section} code",
|
|
615
|
+
"templates.code.curl.description": "For external applications and API tests. Authenticate with a Strapi API token.",
|
|
616
|
+
"templates.code.curl.title": "REST API (cURL)",
|
|
617
|
+
"templates.code.inactiveWarning": "This template is inactive and will not be sent.",
|
|
618
|
+
"templates.code.native.description": "Use the standard Strapi email service. MagicMail intercepts it automatically and applies all features.",
|
|
619
|
+
"templates.code.native.title": "Native Strapi email service",
|
|
620
|
+
"templates.code.plugin.description": "Direct access to the MagicMail service for advanced options.",
|
|
621
|
+
"templates.code.plugin.title": "MagicMail plugin service",
|
|
622
|
+
"templates.code.recommended": "Recommended",
|
|
623
|
+
"templates.code.status": "Status:",
|
|
624
|
+
"templates.code.templateId": "Template ID:",
|
|
625
|
+
"templates.code.title": "Code snippets: {name}",
|
|
626
|
+
"templates.core.description": "Design the default Strapi system emails (password reset and email confirmation).",
|
|
627
|
+
"templates.core.edit": "Edit {name}",
|
|
628
|
+
"templates.core.emailConfirmation.description": "Sent to confirm a user email address",
|
|
629
|
+
"templates.core.emailConfirmation.name": "Email address confirmation",
|
|
630
|
+
"templates.core.heading": "Core email templates",
|
|
631
|
+
"templates.core.resetPassword.description": "Sent when a user requests a password reset",
|
|
632
|
+
"templates.core.resetPassword.name": "Reset password",
|
|
633
|
+
"templates.core.table.type": "Email type",
|
|
634
|
+
"templates.core.view": "View {name}",
|
|
635
|
+
"templates.create": "Create template",
|
|
636
|
+
"templates.delete.body": 'Delete "{name}"? This cannot be undone.',
|
|
637
|
+
"templates.delete.failure": "The template could not be deleted.",
|
|
638
|
+
"templates.delete.hint": "Code that sends this template by its ID will fail afterwards.",
|
|
639
|
+
"templates.delete.success": 'Template "{name}" deleted',
|
|
640
|
+
"templates.delete.title": "Delete template?",
|
|
641
|
+
"templates.download.failure": "The template could not be downloaded.",
|
|
642
|
+
"templates.download.success": "Template downloaded as {format}",
|
|
643
|
+
"templates.duplicate.failure": "The template could not be duplicated.",
|
|
644
|
+
"templates.duplicate.success": 'Template "{name}" duplicated',
|
|
645
|
+
"templates.empty.create": "Create your first template",
|
|
646
|
+
"templates.empty.description": "Start creating professional email templates with the visual designer.",
|
|
647
|
+
"templates.empty.feature.dynamic.text": "Use Mustache variables for personalised emails",
|
|
648
|
+
"templates.empty.feature.dynamic.title": "Dynamic content",
|
|
649
|
+
"templates.empty.feature.editor.text": "Build emails visually with the Unlayer editor",
|
|
650
|
+
"templates.empty.feature.editor.title": "Drag-and-drop editor",
|
|
651
|
+
"templates.empty.feature.versions.text": "Track changes and restore earlier versions",
|
|
652
|
+
"templates.empty.feature.versions.title": "Version history",
|
|
653
|
+
"templates.empty.readOnlyDescription": "Templates created by users with the manage permission appear here.",
|
|
654
|
+
"templates.empty.title": "No email templates yet",
|
|
655
|
+
"templates.error.description": "Check your connection and permissions, then try again.",
|
|
656
|
+
"templates.error.title": "Templates could not be loaded",
|
|
657
|
+
"templates.export.failure": "The templates could not be exported.",
|
|
658
|
+
"templates.export.short": "Export",
|
|
659
|
+
"templates.export.success": "Templates exported",
|
|
660
|
+
"templates.import.button": "Import templates",
|
|
661
|
+
"templates.import.failure": "The import failed.",
|
|
662
|
+
"templates.import.invalidFile": "The file is not valid JSON.",
|
|
663
|
+
"templates.import.partial": "{successful, plural, one {# template imported} other {# templates imported}}, {failed, plural, one {# failed} other {# failed}}.",
|
|
664
|
+
"templates.import.short": "Import",
|
|
665
|
+
"templates.import.success": "{successful, plural, one {# template imported} other {# templates imported}}.",
|
|
666
|
+
"templates.list.heading": "Your templates",
|
|
667
|
+
"templates.loading": "Loading templates...",
|
|
668
|
+
"templates.noResults.clear": "Clear search",
|
|
669
|
+
"templates.noResults.text": "Try a different search term.",
|
|
670
|
+
"templates.noResults.title": "No templates found",
|
|
671
|
+
"templates.pagination.label": "Template pages",
|
|
672
|
+
"templates.pagination.next": "Next page",
|
|
673
|
+
"templates.pagination.nextShort": "Next",
|
|
674
|
+
"templates.pagination.page": "Page {page}",
|
|
675
|
+
"templates.pagination.perPage": "Per page",
|
|
676
|
+
"templates.pagination.previous": "Previous page",
|
|
677
|
+
"templates.pagination.previousShort": "Previous",
|
|
678
|
+
"templates.pagination.showing": "Showing {from}-{to} of {total}",
|
|
679
|
+
"templates.permissions.loading": "Checking permissions...",
|
|
680
|
+
"templates.retry": "Try again",
|
|
681
|
+
"templates.search.label": "Search templates",
|
|
682
|
+
"templates.search.placeholder": "Search by name, subject, or ID...",
|
|
683
|
+
"templates.stats.active": "Active",
|
|
684
|
+
"templates.stats.total": "Total templates",
|
|
685
|
+
"templates.status.active": "Active",
|
|
686
|
+
"templates.status.inactive": "Inactive",
|
|
687
|
+
"templates.subtitle": "{count, plural, one {# template created} other {# templates created}}",
|
|
688
|
+
"templates.table.actions": "Actions",
|
|
689
|
+
"templates.table.category": "Category",
|
|
690
|
+
"templates.table.id": "ID",
|
|
691
|
+
"templates.table.name": "Name",
|
|
692
|
+
"templates.table.status": "Status",
|
|
693
|
+
"templates.tabs.core": "Core emails",
|
|
694
|
+
"templates.tabs.custom": "Custom templates",
|
|
695
|
+
"templates.tabs.label": "Template types",
|
|
696
|
+
"templates.testSend.account": "Send from account (optional)",
|
|
697
|
+
"templates.testSend.accountHint": "Leave on automatic to use smart routing.",
|
|
698
|
+
"templates.testSend.accountsUnavailable": "Accounts could not be loaded. Smart routing selects the account.",
|
|
699
|
+
"templates.testSend.autoAccount": "Automatic (smart routing)",
|
|
700
|
+
"templates.testSend.cc": "CC recipients (optional)",
|
|
701
|
+
"templates.testSend.ccHint": "Separate multiple addresses with commas.",
|
|
702
|
+
"templates.testSend.errors.ccInvalid": "One or more CC addresses are not valid.",
|
|
703
|
+
"templates.testSend.errors.toInvalid": "Enter a valid email address, for example name@example.com.",
|
|
704
|
+
"templates.testSend.errors.toRequired": "Enter a recipient email address.",
|
|
705
|
+
"templates.testSend.failure": "The test email could not be sent.",
|
|
706
|
+
"templates.testSend.recipient": "Recipient email",
|
|
707
|
+
"templates.testSend.submit": "Send test email",
|
|
708
|
+
"templates.testSend.success": "Test email sent to {email}",
|
|
709
|
+
"templates.testSend.template": "Template",
|
|
710
|
+
"templates.testSend.title": "Send test email",
|
|
711
|
+
"templates.title": "Email Templates",
|
|
712
|
+
"accountModal.oauth.reconnect": "Reconnect with {provider}",
|
|
713
|
+
"accountModal.oauth.reconnectedTitle": "New authorization received",
|
|
714
|
+
"accountModal.oauth.reconnectedBody": "Save the account to store the new {provider} authorization.",
|
|
715
|
+
"accountModal.toast.reconnected": "{name} was reconnected with {provider}."
|
|
716
|
+
};
|
|
717
|
+
exports.default = en;
|