diff --git a/README.md b/README.md index 6aaea41561..e7f863e896 100644 --- a/README.md +++ b/README.md @@ -154,7 +154,7 @@ See [Requirements](#requirements) and [Local Development Guide](#local-developme Once you have followed [Requirements](#requirements), you should now have all the dependencies, repository, and npm packages installed. -You can start any of the services using our pre-built commands to make it easy. Note that all of these pre-built commands are using [nps](https://github.com/sezna/nps) and [ttab](https://github.com/mklement0/ttab) (it will automatically open a new tab in terminal for you!). +You can start any of the services using our pre-built commands to make it easy. Note that all of these pre-built commands are using [nps](https://github.com/sezna/nps). | Service Name | Command | Default Development Port | Development Preview URL | | ------------ | ------------------ | :----------------------: | ----------------------- | diff --git a/app/controllers/web/admin/inquiries.js b/app/controllers/web/admin/inquiries.js index 3c9b3c8159..db761bd29d 100644 --- a/app/controllers/web/admin/inquiries.js +++ b/app/controllers/web/admin/inquiries.js @@ -8,7 +8,7 @@ const paginate = require('koa-ctx-paginate'); const { Inquiries, Users } = require('#models'); const config = require('#config'); -const email = require('#helpers/email'); +const emailHelper = require('#helpers/email'); async function list(ctx) { let $sort = { created_at: -1 }; @@ -91,7 +91,7 @@ async function remove(ctx) { const inquiry = await Inquiries.findById(ctx.params.id); if (!inquiry) throw Boom.notFound(ctx.translateError('INVALID_INQUIRY')); - await Inquiries.deleteOne({ _id: inquiry.id }); + await Inquiries.findById({ id: inquiry.id }); ctx.flash('custom', { title: ctx.request.t('Success'), @@ -116,7 +116,7 @@ async function reply(ctx) { const { message } = ctx.request.body; - await email({ + await emailHelper({ template: 'inquiry-response', message: { to: user[config.userFields.fullEmail], @@ -132,12 +132,9 @@ async function reply(ctx) { } }); - await Inquiries.findOneAndUpdate( - { id: inquiry.id }, - { - $set: { is_resolved: true } - } - ); + await Inquiries.findByIdAndUpdate(inquiry._id, { + $set: { is_resolved: true } + }); ctx.flash('custom', { title: ctx.request.t('Success'), @@ -172,7 +169,7 @@ async function bulkReply(ctx) { // in bulk to a previous message then let's skip the email if (!repliedTo.has(user)) { // eslint-disable-next-line no-await-in-loop - await email({ + await emailHelper({ template: 'inquiry-response', message: { to: user[config.userFields.fullEmail], @@ -190,20 +187,28 @@ async function bulkReply(ctx) { } // eslint-disable-next-line no-await-in-loop - await Inquiries.findOneAndUpdate( - { id: inquiry.id }, - { - $set: { is_resolved: true } - } - ); + await Inquiries.findByIdAndUpdate(inquiry._id, { + $set: { is_resolved: true } + }); repliedTo.add(user); } - } catch (err) { - ctx.flash('error', `Error replying: ${err.message}`); - return; + } catch { + throw Boom.badImplementation( + ctx.translateError('INQUIRY_RESPONSE_BULK_REPLY_ERROR') + ); } + ctx.flash('custom', { + title: ctx.request.t('Success'), + text: `Successfully replied to ${repliedTo.size} inquiries!`, + type: 'success', + toast: true, + showConfirmButton: false, + timer: 3000, + position: 'top' + }); + if (ctx.accepts('html')) ctx.redirect('/admin/inquiries'); else ctx.body = { redirectTo: '/admin/inquiries' }; } diff --git a/app/controllers/web/help.js b/app/controllers/web/help.js index 3b5d47d522..78325ed8e8 100644 --- a/app/controllers/web/help.js +++ b/app/controllers/web/help.js @@ -8,7 +8,7 @@ const isSANB = require('is-string-and-not-blank'); const Boom = require('@hapi/boom'); const _ = require('lodash'); -const email = require('#helpers/email'); +const emailHelper = require('#helpers/email'); const { Domains, Inquiries } = require('#models'); const config = require('#config'); @@ -43,7 +43,15 @@ async function help(ctx) { ctx.logger.debug('created inquiry', { inquiry }); - const emaild = await email({ + const user = ctx.state.user.toObject(); + + const emoji = ctx.state.emoji(user.plan === 'free' ? 'mega' : 'star'); + const createdAt = new Date(inquiry.created_at).getTime(); + const subject = `${emoji} ${ + user.plan === 'free' ? '' : 'Premium Support: ' + }${ctx.translate('YOUR_HELP_REQUEST')} #${createdAt}`; + + const email = await emailHelper({ template: 'inquiry', message: { to: ctx.state.user[config.userFields.fullEmail], @@ -52,16 +60,15 @@ async function help(ctx) { locals: { user: ctx.state.user.toObject(), domains, - inquiry + inquiry, + subject } }); - const { subject } = JSON.parse(emaild.message); - await Inquiries.findOneAndUpdate( { id: inquiry.id }, { - $set: { references: [emaild.messageId], subject } + $set: { references: [email.messageId], subject } } ); diff --git a/app/views/admin/inquiries/_table.pug b/app/views/admin/inquiries/_table.pug index d775b0990a..3ca17ed31c 100644 --- a/app/views/admin/inquiries/_table.pug +++ b/app/views/admin/inquiries/_table.pug @@ -15,9 +15,6 @@ include ../../_pagination +sortHeader('created_at', 'Created', '#table-inquiries') th(scope="col") +sortHeader('updated_at', 'Updated', '#table-inquiries') - if passport && passport.otp - th(scope="col") - +sortHeader(config.passport.fields.otpEnabled, 'OTP Enabled', '#table-inquiries') th.text-center.align-middle(scope="col")= t("Actions") tbody if inquiries.length === 0 @@ -27,11 +24,11 @@ include ../../_pagination tr td.align-middle.text-center .form-group.form-check.form-check-inline.mb-0 - input#is-inquiry-selected.form-check-input( - type="checkbox", - name="is_inquiry_selected", - value=inquiry.id - ) + input#is-inquiry-selected.form-check-input( + type="checkbox", + name="is_inquiry_selected", + value=inquiry.id + ) td.align-middle a( href=`mailto:${inquiry.email}`, @@ -39,9 +36,9 @@ include ../../_pagination rel="noopener noreferrer" )= inquiry.email td.align-middle - =inquiry.message + = inquiry.message td.align-middle - =inquiry.plan + = inquiry.plan td.align-middle.dayjs( data-time=new Date(inquiry.created_at).getTime() )= dayjs(inquiry.created_at).format("M/D/YY h:mm A z") @@ -68,35 +65,31 @@ include ../../_pagination ): i.fa.fa-fw.fa-remove button#bulk-reply-button.btn.btn-secondary.float-right.mb-3 Bulk Reply #bulk-reply-modal.modal.fade( - tabindex="-1", - role="dialog", - aria-labelledby="modal-bulk-reply-title", - aria-hidden="true" - ) - .modal-dialog(role="document") - .modal-content - .modal-header.text-center.d-block - h4#modal-bulk-reply-title.d-inline-block.ml-4= t("Bulk Reply") - button.close( - type="button", - data-dismiss="modal", - aria-label="Close" - ) - span(aria-hidden="true") × - .modal-body - .text-center - form.form-group - label(for="bulk-reply-message") - h5= t("Message") - = " " - textarea#textarea-bulk-reply-message.form-control( - name="bulk-reply-message", - maxlength=300, - rows=8 - ) - p.form-text.small.text-black.text-themed-50= t("Message has a max of 300 characters.") - button.btn.btn-lg.btn-block.btn-primary(type='button' id='submit-bulk-reply') - i.fa.fa-edit + tabindex="-1", + role="dialog", + aria-labelledby="modal-bulk-reply-title", + aria-hidden="true" + ) + .modal-dialog(role="document") + .modal-content + .modal-header.text-center.d-block + h4#modal-bulk-reply-title.d-inline-block.ml-4= t("Bulk Reply") + button.close(type="button", data-dismiss="modal", aria-label="Close") + span(aria-hidden="true") × + .modal-body + .text-center + form.form-group + label(for="bulk-reply-message") + h5= t("Message") = " " - = t("Submit Bulk Reply") + textarea#textarea-bulk-reply-message.form-control( + name="bulk-reply-message", + rows=8 + ) + button#submit-bulk-reply.btn.btn-lg.btn-block.btn-primary.mt-3( + type="button" + ) + i.fa.fa-edit + = " " + = t("Submit Bulk Reply") +paginate('#table-inquiries') diff --git a/assets/js/core.js b/assets/js/core.js index dca1b69c32..11fe0d5289 100644 --- a/assets/js/core.js +++ b/assets/js/core.js @@ -870,25 +870,14 @@ async function handleSubmitBulkReply() { const url = `${window.location.pathname}/bulk`; const response = await sendRequest({ ids, message }, url); - if (response.err) throw response.err; - - if ( - typeof response.body !== 'object' || - response.body === null || - typeof response.body.challenge !== 'string' - ) - throw new Error( - response.statusText || - response.text || - 'Invalid response, please try again' - ); + if (response.err) { + console.log('error in response', { response }); + throw response.err; + } spinner.hide(); - Swal.fire( - window._types.error, - `Successfully replied to ${ids.length} inquiries!`, - 'success' - ); + + $('#bulk-reply-modal').modal('hide'); } catch (err) { console.error(err); spinner.hide(); diff --git a/config/phrases.js b/config/phrases.js index 58fefabd66..a3905a8865 100644 --- a/config/phrases.js +++ b/config/phrases.js @@ -218,6 +218,7 @@ module.exports = { 'You cannot download a backup for a catch-all or regex.', INVALID_SLUG: 'Please slightly change values to ensure slug uniqueness.', INVALID_STRING: '%s was missing or blank.', + INVALID_INQUIRY: 'Inquiry does not exist.', INVALID_USER: 'User does not exist.', INVALID_LOG: 'Log does not exist.', INVALID_MEMBER: 'Member does not exist.', @@ -307,6 +308,8 @@ module.exports = { SIGNED_OUT: 'You have successfully signed out.', PENDING_RECOVERY_VERIFICATION_SUCCESS: 'Your email has been successfully verified. You should receive a support email from an admin within the next 3-5 business days.', + INQUIRY_RESPONSE_BULK_REPLY_ERROR: + 'An error occurred while attempting to send bulk reply. Please try again.', SUPPORT_REQUEST_ERROR: 'We were unable to send your help request. We have been alerted of this problem. Please try again or directly email support@forwardemail.net.', SUPPORT_REQUEST_LIMIT: @@ -551,6 +554,7 @@ module.exports = { 'Your vanity domain aliases are disabled due to past due payment. Please %s to re-enable them. As of January 1, 2023, we require vanity domain aliases to be on paid plans. We sent notifications in advance of this new policy starting in November 2022. If you no longer use vanity domain aliases, then disable or remove them from Domains → Vanity Domain → Aliases.', PAST_DUE_REQUIRED_ONE_TIME: 'Your account is %s past due. You must pay this amount before you can enable auto-renew.', + YOUR_HELP_REQUEST: 'Your Help Request', AND: 'and', PLAN_MORE_THAN_TWO_YEARS_FROM_EXPIRY: 'You cannot start a subscription nor enable auto-renew more than two years from your plan\'s current expiration date of %s. Please try again %s.', diff --git a/emails/inquiry-response/html.pug b/emails/inquiry-response/html.pug index 9f0dde2877..e181612ff1 100644 --- a/emails/inquiry-response/html.pug +++ b/emails/inquiry-response/html.pug @@ -5,12 +5,28 @@ block content .row .col-12 .card.border-dark.d-block - h1.h5.card-header.text-center= t("Your Help Request") + h1.h5.card-header.text-center= "Your Help Request" .card-body.p-0 - //- replace line breaks with
.p-3 - .card-text.text-monospace.small!= splitLines(response.message).join("
") + .card-text + = "Hi there, " + br + br + != splitLines(response.message).join("
") + br + br + = "Thank you," + br + br + = "Forward Email" + br + a(href="https://forwardemail.net") https://forwardemail.net + br + br + = "P.S. Happy with our efforts? Write us a review @ " + br + a(href="https://www.trustpilot.com/review/forwardemail.net") https://www.trustpilot.com/review/forwardemail.net .card-footer.text-center.small.text-muted - strong= t("Have attachments?") + strong= "Have attachments?" = " " - = t("Reply to this email with them.") + = "Reply to this email with them." diff --git a/emails/inquiry/subject.pug b/emails/inquiry/subject.pug index cc6399ea74..37e6d29d6f 100644 --- a/emails/inquiry/subject.pug +++ b/emails/inquiry/subject.pug @@ -1 +1 @@ -= `${emoji(user.plan === "free" ? "mega" : "star")} ${user.plan === "free" ? "" : "Premium Support: "}${t("Your Help Request")} #${new Date(inquiry.created_at).getTime()}` += subject diff --git a/locales/ar.json b/locales/ar.json index 738e50db67..b55511f37e 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "لا يمكن أن يكون لديك أكثر من 3 أسماء مستعارة لهذا المجال.", "Launchpad username was missing or not detected, please try again later.": "اسم مستخدم Launchpad مفقود أو لم يتم اكتشافه، يرجى المحاولة مرة أخرى لاحقًا.", "Invalid response from Launchpad API, please try again later.": "استجابة غير صالحة من Launchpad API، يرجى المحاولة مرة أخرى لاحقًا.", - "You have exceeded your daily SMTP outbound rate limit.": "لقد تجاوزت حد معدل الصادر اليومي لـ SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "لقد تجاوزت حد معدل الصادر اليومي لـ SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/cs.json b/locales/cs.json index 44035c6822..09de0c03bc 100644 --- a/locales/cs.json +++ b/locales/cs.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Pro tuto doménu nemůžete mít více než 3 aliasy.", "Launchpad username was missing or not detected, please try again later.": "Uživatelské jméno Launchpadu chybělo nebo nebylo zjištěno, zkuste to prosím znovu později.", "Invalid response from Launchpad API, please try again later.": "Neplatná odpověď z Launchpad API, zkuste to znovu později.", - "You have exceeded your daily SMTP outbound rate limit.": "Překročili jste svůj denní limit odchozí rychlosti SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "Překročili jste svůj denní limit odchozí rychlosti SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/da.json b/locales/da.json index c471c632fc..733d493b9f 100644 --- a/locales/da.json +++ b/locales/da.json @@ -3805,5 +3805,49 @@ "Outbound SMTP emails are shown below – click here to setup your email client to receive email.": "Udgående SMTP-e-mails er vist nedenfor – klik her for at konfigurere din e-mail-klient til at modtage e-mail.", "Email": "E-mail", "No emails have been stored yet. Please check back later.": "Ingen e-mails er blevet gemt endnu. Kom venligst tilbage senere.", - "You have exceeded your daily SMTP outbound rate limit.": "Du har overskredet din daglige grænse for udgående SMTP-hastighed." + "You have exceeded your daily SMTP outbound rate limit.": "Du har overskredet din daglige grænse for udgående SMTP-hastighed.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "email": "email", + "plan": "plan", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "First Page": "First Page", + "Your Help Request": "Your Help Request", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "Have attachments?": "Have attachments?", + "Reply to this email with them.": "Reply to this email with them.", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "👋 Welcome!": "👋 Welcome!", + "If you have a domain with Namecheap, Cloudflare, GoDaddy, or another registrar, then enter it below:": "If you have a domain with Namecheap, Cloudflare, GoDaddy, or another registrar, then enter it below:", + "Use one of our domains:": "Use one of our domains:", + "Register a new domain name": "Register a new domain name", + "Unlock this feature": "Unlock this feature", + "You are currently on the free plan, which requires your aliases to be managed in DNS records.": "You are currently on the free plan, which requires your aliases to be managed in DNS records.", + "If you upgrade to a paid plan, then you will unlock our alias manager feature.": "If you upgrade to a paid plan, then you will unlock our alias manager feature.", + "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.": "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.", + "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.": "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.", + "Click to watch our product tour.": "Click to watch our product tour.", + "Not ready?": "Not ready?", + "Visit our FAQ for more options": "Visit our FAQ for more options", + "Upgrade Now": "Upgrade Now", + "Change plan to:": "Change plan to:", + "Admin - Users": "Admin - Users", + "Search for users": "Search for users", + "Search by first name, last name, or email": "Search by first name, last name, or email", + "First Name": "First Name", + "Last Name": "Last Name", + "group": "group", + "Last Login": "Last Login", + "Log in as user": "Log in as user", + "Admin - Allowlist": "Admin - Allowlist", + "Search by key": "Search by key", + "Key": "Key", + "No keys exist for that search.": "No keys exist for that search.", + "Admin - Denylist": "Admin - Denylist", + "Hi there, ": "Hi there, ", + "Thank you,": "Thank you," } \ No newline at end of file diff --git a/locales/de.json b/locales/de.json index 63325e85eb..6c1ce50842 100644 --- a/locales/de.json +++ b/locales/de.json @@ -6403,5 +6403,16 @@ "You cannot have more than 3 aliases for this domain.": "Sie können nicht mehr als 3 Aliase für diese Domäne haben.", "Launchpad username was missing or not detected, please try again later.": "Der Launchpad-Benutzername fehlte oder wurde nicht erkannt. Bitte versuchen Sie es später erneut.", "Invalid response from Launchpad API, please try again later.": "Ungültige Antwort von der Launchpad-API. Bitte versuchen Sie es später erneut.", - "You have exceeded your daily SMTP outbound rate limit.": "Sie haben Ihr tägliches SMTP-Ausgangsratenlimit überschritten." + "You have exceeded your daily SMTP outbound rate limit.": "Sie haben Ihr tägliches SMTP-Ausgangsratenlimit überschritten.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index cf89468de0..6574985f7b 100644 --- a/locales/en.json +++ b/locales/en.json @@ -7127,5 +7127,17 @@ "You must be a member of a specific Launchpad group to get access. Supported groups include ~ubuntumembers, ~kubuntu-members, ~lubuntu-members, ~edubuntu-members, and ~ubuntustudio-core.": "You must be a member of a specific Launchpad group to get access. Supported groups include ~ubuntumembers, ~kubuntu-members, ~lubuntu-members, ~edubuntu-members, and ~ubuntustudio-core.", "Log in with Ubuntu One": "Log in with Ubuntu One", "470,000+ custom domain names": "470,000+ custom domain names", - "You have exceeded your daily SMTP outbound rate limit.": "You have exceeded your daily SMTP outbound rate limit." + "You have exceeded your daily SMTP outbound rate limit.": "You have exceeded your daily SMTP outbound rate limit.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, ", + "We were unable to send your help request. We have been alerted of this problem. Please try again or directly email support@forwardemail.net.": "We were unable to send your help request. We have been alerted of this problem. Please try again or directly email support@forwardemail.net." } \ No newline at end of file diff --git a/locales/es.json b/locales/es.json index d2c97c8970..aa60c58cd4 100644 --- a/locales/es.json +++ b/locales/es.json @@ -7363,5 +7363,16 @@ "You cannot have more than 3 aliases for this domain.": "No puedes tener más de 3 alias para este dominio.", "Launchpad username was missing or not detected, please try again later.": "Faltaba el nombre de usuario de Launchpad o no se detectó. Vuelva a intentarlo más tarde.", "Invalid response from Launchpad API, please try again later.": "Respuesta no válida de la API de Launchpad. Vuelva a intentarlo más tarde.", - "You have exceeded your daily SMTP outbound rate limit.": "Ha excedido su límite de tasa de salida SMTP diaria." + "You have exceeded your daily SMTP outbound rate limit.": "Ha excedido su límite de tasa de salida SMTP diaria.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/fi.json b/locales/fi.json index b7fd4a0658..409b9af014 100644 --- a/locales/fi.json +++ b/locales/fi.json @@ -7212,5 +7212,16 @@ "You cannot have more than 3 aliases for this domain.": "Sinulla voi olla enintään 3 aliasta tälle verkkotunnukselle.", "Launchpad username was missing or not detected, please try again later.": "Launchpad-käyttäjänimi puuttui tai sitä ei havaittu. Yritä myöhemmin uudelleen.", "Invalid response from Launchpad API, please try again later.": "Virheellinen vastaus Launchpad API:lta, yritä myöhemmin uudelleen.", - "You have exceeded your daily SMTP outbound rate limit.": "Olet ylittänyt päivittäisen lähtevän SMTP-nopeusrajan." + "You have exceeded your daily SMTP outbound rate limit.": "Olet ylittänyt päivittäisen lähtevän SMTP-nopeusrajan.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index a19968fdaf..c0c08944a6 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -4838,5 +4838,34 @@ "You cannot have more than 3 aliases for this domain.": "Vous ne pouvez pas avoir plus de 3 alias pour ce domaine.", "Launchpad username was missing or not detected, please try again later.": "Le nom d'utilisateur du Launchpad était manquant ou n'était pas détecté, veuillez réessayer plus tard.", "Invalid response from Launchpad API, please try again later.": "Réponse invalide de l'API Launchpad. Veuillez réessayer plus tard.", - "You have exceeded your daily SMTP outbound rate limit.": "Vous avez dépassé votre limite quotidienne de débit sortant SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "Vous avez dépassé votre limite quotidienne de débit sortant SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "First Page": "First Page", + "Your Help Request": "Your Help Request", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "Have attachments?": "Have attachments?", + "Reply to this email with them.": "Reply to this email with them.", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Unlock this feature": "Unlock this feature", + "You are currently on the free plan, which requires your aliases to be managed in DNS records.": "You are currently on the free plan, which requires your aliases to be managed in DNS records.", + "If you upgrade to a paid plan, then you will unlock our alias manager feature.": "If you upgrade to a paid plan, then you will unlock our alias manager feature.", + "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.": "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.", + "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.": "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.", + "Click to watch our product tour.": "Click to watch our product tour.", + "Not ready?": "Not ready?", + "Visit our FAQ for more options": "Visit our FAQ for more options", + "Upgrade Now": "Upgrade Now", + "Admin - Allowlist": "Admin - Allowlist", + "Search by key": "Search by key", + "Key": "Key", + "No keys exist for that search.": "No keys exist for that search.", + "Admin - Denylist": "Admin - Denylist", + "Hi there, ": "Hi there, ", + "Thank you,": "Thank you," } \ No newline at end of file diff --git a/locales/he.json b/locales/he.json index a54da85ffc..4da1625f25 100644 --- a/locales/he.json +++ b/locales/he.json @@ -5338,5 +5338,33 @@ "You cannot have more than 3 aliases for this domain.": "אתה לא יכול לקבל יותר מ-3 כינויים עבור הדומיין הזה.", "Launchpad username was missing or not detected, please try again later.": "שם המשתמש של Launchpad היה חסר או לא זוהה, אנא נסה שוב מאוחר יותר.", "Invalid response from Launchpad API, please try again later.": "תגובה לא חוקית מממשק ה-API של Launchpad, אנא נסה שוב מאוחר יותר.", - "You have exceeded your daily SMTP outbound rate limit.": "חרגת ממגבלת תעריף היציאה היומי של SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "חרגת ממגבלת תעריף היציאה היומי של SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "Your Help Request": "Your Help Request", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "Have attachments?": "Have attachments?", + "Reply to this email with them.": "Reply to this email with them.", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Unlock this feature": "Unlock this feature", + "You are currently on the free plan, which requires your aliases to be managed in DNS records.": "You are currently on the free plan, which requires your aliases to be managed in DNS records.", + "If you upgrade to a paid plan, then you will unlock our alias manager feature.": "If you upgrade to a paid plan, then you will unlock our alias manager feature.", + "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.": "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.", + "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.": "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.", + "Click to watch our product tour.": "Click to watch our product tour.", + "Not ready?": "Not ready?", + "Visit our FAQ for more options": "Visit our FAQ for more options", + "Upgrade Now": "Upgrade Now", + "Admin - Allowlist": "Admin - Allowlist", + "Search by key": "Search by key", + "Key": "Key", + "No keys exist for that search.": "No keys exist for that search.", + "Admin - Denylist": "Admin - Denylist", + "Hi there, ": "Hi there, ", + "Thank you,": "Thank you," } \ No newline at end of file diff --git a/locales/hu.json b/locales/hu.json index 0a4a902a01..f39653cc69 100644 --- a/locales/hu.json +++ b/locales/hu.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Ehhez a domainhez legfeljebb 3 alias lehet.", "Launchpad username was missing or not detected, please try again later.": "Az indítópult-felhasználónév hiányzik vagy nem észlelhető. Kérjük, próbálja újra később.", "Invalid response from Launchpad API, please try again later.": "Érvénytelen válasz a Launchpad API-tól, próbálkozzon újra később.", - "You have exceeded your daily SMTP outbound rate limit.": "Túllépte a napi SMTP kimenő sebességkorlátot." + "You have exceeded your daily SMTP outbound rate limit.": "Túllépte a napi SMTP kimenő sebességkorlátot.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/id.json b/locales/id.json index 1558001c87..9346f577e2 100644 --- a/locales/id.json +++ b/locales/id.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Anda tidak boleh memiliki lebih dari 3 alias untuk domain ini.", "Launchpad username was missing or not detected, please try again later.": "Nama pengguna Launchpad hilang atau tidak terdeteksi, silakan coba lagi nanti.", "Invalid response from Launchpad API, please try again later.": "Respons tidak valid dari Launchpad API, silakan coba lagi nanti.", - "You have exceeded your daily SMTP outbound rate limit.": "Anda telah melampaui batas kecepatan keluar SMTP harian." + "You have exceeded your daily SMTP outbound rate limit.": "Anda telah melampaui batas kecepatan keluar SMTP harian.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/it.json b/locales/it.json index 3af951e2f8..726afd3693 100644 --- a/locales/it.json +++ b/locales/it.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Non puoi avere più di 3 alias per questo dominio.", "Launchpad username was missing or not detected, please try again later.": "Il nome utente del Launchpad mancava o non veniva rilevato, riprova più tardi.", "Invalid response from Launchpad API, please try again later.": "Risposta non valida dall'API Launchpad, riprova più tardi.", - "You have exceeded your daily SMTP outbound rate limit.": "Hai superato il limite di velocità in uscita SMTP giornaliero." + "You have exceeded your daily SMTP outbound rate limit.": "Hai superato il limite di velocità in uscita SMTP giornaliero.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/ja.json b/locales/ja.json index 8edfeb4d43..b7045ad94b 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "このドメインには 3 つ以上のエイリアスを設定することはできません。", "Launchpad username was missing or not detected, please try again later.": "Launchpad のユーザー名が見つからないか、検出されませんでした。後でもう一度お試しください。", "Invalid response from Launchpad API, please try again later.": "Launchpad API からの応答が無効です。後でもう一度お試しください。", - "You have exceeded your daily SMTP outbound rate limit.": "1 日の SMTP 送信レート制限を超えました。" + "You have exceeded your daily SMTP outbound rate limit.": "1 日の SMTP 送信レート制限を超えました。", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/ko.json b/locales/ko.json index 65d3460dda..f76d116e65 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "이 도메인에는 3개 이상의 별칭을 사용할 수 없습니다.", "Launchpad username was missing or not detected, please try again later.": "Launchpad 사용자 이름이 누락되었거나 감지되지 않았습니다. 나중에 다시 시도해 주세요.", "Invalid response from Launchpad API, please try again later.": "Launchpad API의 응답이 잘못되었습니다. 나중에 다시 시도해 주세요.", - "You have exceeded your daily SMTP outbound rate limit.": "일일 SMTP 아웃바운드 속도 제한을 초과했습니다." + "You have exceeded your daily SMTP outbound rate limit.": "일일 SMTP 아웃바운드 속도 제한을 초과했습니다.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/nl.json b/locales/nl.json index b7bb82e885..b3b94e7076 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "U kunt niet meer dan drie aliassen hebben voor dit domein.", "Launchpad username was missing or not detected, please try again later.": "De Launchpad-gebruikersnaam ontbreekt of is niet gedetecteerd. Probeer het later opnieuw.", "Invalid response from Launchpad API, please try again later.": "Ongeldig antwoord van Launchpad API. Probeer het later opnieuw.", - "You have exceeded your daily SMTP outbound rate limit.": "U heeft uw dagelijkse uitgaande SMTP-limiet overschreden." + "You have exceeded your daily SMTP outbound rate limit.": "U heeft uw dagelijkse uitgaande SMTP-limiet overschreden.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/no.json b/locales/no.json index 5deefb4bac..a22225f970 100644 --- a/locales/no.json +++ b/locales/no.json @@ -7370,5 +7370,16 @@ "You cannot have more than 3 aliases for this domain.": "Du kan ikke ha mer enn 3 aliaser for dette domenet.", "Launchpad username was missing or not detected, please try again later.": "Launchpad-brukernavnet manglet eller ble ikke oppdaget. Prøv igjen senere.", "Invalid response from Launchpad API, please try again later.": "Ugyldig svar fra Launchpad API. Prøv igjen senere.", - "You have exceeded your daily SMTP outbound rate limit.": "Du har overskredet den daglige grensen for utgående SMTP-hastighet." + "You have exceeded your daily SMTP outbound rate limit.": "Du har overskredet den daglige grensen for utgående SMTP-hastighet.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/pl.json b/locales/pl.json index 287a5e2772..71864f7a48 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Nie możesz mieć więcej niż 3 aliasów dla tej domeny.", "Launchpad username was missing or not detected, please try again later.": "Brakowało nazwy użytkownika Launchpada lub nie została wykryta. Spróbuj ponownie później.", "Invalid response from Launchpad API, please try again later.": "Nieprawidłowa odpowiedź z API Launchpad. Spróbuj ponownie później.", - "You have exceeded your daily SMTP outbound rate limit.": "Przekroczono dzienny limit szybkości ruchu wychodzącego SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "Przekroczono dzienny limit szybkości ruchu wychodzącego SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/pt.json b/locales/pt.json index c378443322..8efa3ec58a 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Você não pode ter mais de três aliases para este domínio.", "Launchpad username was missing or not detected, please try again later.": "O nome de usuário do Launchpad estava ausente ou não foi detectado. Tente novamente mais tarde.", "Invalid response from Launchpad API, please try again later.": "Resposta inválida da API do Launchpad. Tente novamente mais tarde.", - "You have exceeded your daily SMTP outbound rate limit.": "Você excedeu seu limite diário de taxa de saída SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "Você excedeu seu limite diário de taxa de saída SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/ru.json b/locales/ru.json index 075c9ca893..e14968da8d 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Для этого домена не может быть более трех псевдонимов.", "Launchpad username was missing or not detected, please try again later.": "Имя пользователя Launchpad отсутствует или не обнаружено. Повторите попытку позже.", "Invalid response from Launchpad API, please try again later.": "Неверный ответ от API Launchpad. Повторите попытку позже.", - "You have exceeded your daily SMTP outbound rate limit.": "Вы превысили дневной лимит исходящей скорости SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "Вы превысили дневной лимит исходящей скорости SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/sv.json b/locales/sv.json index 739ccbd3b7..c8eb455300 100644 --- a/locales/sv.json +++ b/locales/sv.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Du kan inte ha fler än 3 alias för den här domänen.", "Launchpad username was missing or not detected, please try again later.": "Launchpad-användarnamnet saknades eller upptäcktes inte, försök igen senare.", "Invalid response from Launchpad API, please try again later.": "Ogiltigt svar från Launchpad API, försök igen senare.", - "You have exceeded your daily SMTP outbound rate limit.": "Du har överskridit din dagliga gräns för utgående SMTP-hastighet." + "You have exceeded your daily SMTP outbound rate limit.": "Du har överskridit din dagliga gräns för utgående SMTP-hastighet.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/th.json b/locales/th.json index 156b28e719..eeec05a18a 100644 --- a/locales/th.json +++ b/locales/th.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "คุณไม่สามารถมีชื่อแทนได้มากกว่า 3 ชื่อสำหรับโดเมนนี้", "Launchpad username was missing or not detected, please try again later.": "ไม่พบชื่อผู้ใช้ Launchpad หรือตรวจไม่พบ โปรดลองอีกครั้งในภายหลัง", "Invalid response from Launchpad API, please try again later.": "การตอบกลับจาก Launchpad API ไม่ถูกต้อง โปรดลองอีกครั้งในภายหลัง", - "You have exceeded your daily SMTP outbound rate limit.": "คุณเกินขีดจำกัดอัตราขาออก SMTP รายวันของคุณแล้ว" + "You have exceeded your daily SMTP outbound rate limit.": "คุณเกินขีดจำกัดอัตราขาออก SMTP รายวันของคุณแล้ว", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/tr.json b/locales/tr.json index 1fcde5b3d7..da0ddc7db9 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Bu alan adı için 3'ten fazla takma adınız olamaz.", "Launchpad username was missing or not detected, please try again later.": "Launchpad kullanıcı adı eksik veya algılanamadı, lütfen daha sonra tekrar deneyin.", "Invalid response from Launchpad API, please try again later.": "Launchpad API'sinden geçersiz yanıt. Lütfen daha sonra tekrar deneyin.", - "You have exceeded your daily SMTP outbound rate limit.": "Günlük SMTP giden hız sınırınızı aştınız." + "You have exceeded your daily SMTP outbound rate limit.": "Günlük SMTP giden hız sınırınızı aştınız.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/uk.json b/locales/uk.json index 44bfff5e44..43d6c9e77e 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -7365,5 +7365,16 @@ "You cannot have more than 3 aliases for this domain.": "Ви не можете мати більше 3 псевдонімів для цього домену.", "Launchpad username was missing or not detected, please try again later.": "Ім’я користувача Launchpad відсутнє або не виявлено, спробуйте пізніше.", "Invalid response from Launchpad API, please try again later.": "Недійсна відповідь від API Launchpad, спробуйте пізніше.", - "You have exceeded your daily SMTP outbound rate limit.": "Ви перевищили щоденний ліміт вихідної швидкості SMTP." + "You have exceeded your daily SMTP outbound rate limit.": "Ви перевищили щоденний ліміт вихідної швидкості SMTP.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/locales/vi.json b/locales/vi.json index 0254190b13..28f67caf58 100644 --- a/locales/vi.json +++ b/locales/vi.json @@ -4844,5 +4844,34 @@ "You cannot have more than 3 aliases for this domain.": "Bạn không thể có nhiều hơn 3 bí danh cho tên miền này.", "Launchpad username was missing or not detected, please try again later.": "Tên người dùng Launchpad bị thiếu hoặc không được phát hiện, vui lòng thử lại sau.", "Invalid response from Launchpad API, please try again later.": "Phản hồi không hợp lệ từ API Launchpad, vui lòng thử lại sau.", - "You have exceeded your daily SMTP outbound rate limit.": "Bạn đã vượt quá giới hạn tốc độ gửi đi SMTP hàng ngày của mình." + "You have exceeded your daily SMTP outbound rate limit.": "Bạn đã vượt quá giới hạn tốc độ gửi đi SMTP hàng ngày của mình.", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "First Page": "First Page", + "Your Help Request": "Your Help Request", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "Have attachments?": "Have attachments?", + "Reply to this email with them.": "Reply to this email with them.", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Unlock this feature": "Unlock this feature", + "You are currently on the free plan, which requires your aliases to be managed in DNS records.": "You are currently on the free plan, which requires your aliases to be managed in DNS records.", + "If you upgrade to a paid plan, then you will unlock our alias manager feature.": "If you upgrade to a paid plan, then you will unlock our alias manager feature.", + "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.": "Our alias manager allows you to update records with ease and in real-time – unlike DNS records.", + "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.": "If you do not wish to upgrade, then please see Options A to G in our FAQ in order to manage your aliases.", + "Click to watch our product tour.": "Click to watch our product tour.", + "Not ready?": "Not ready?", + "Visit our FAQ for more options": "Visit our FAQ for more options", + "Upgrade Now": "Upgrade Now", + "Admin - Allowlist": "Admin - Allowlist", + "Search by key": "Search by key", + "Key": "Key", + "No keys exist for that search.": "No keys exist for that search.", + "Admin - Denylist": "Admin - Denylist", + "Hi there, ": "Hi there, ", + "Thank you,": "Thank you," } \ No newline at end of file diff --git a/locales/zh.json b/locales/zh.json index a2e6768e04..97c8df7a1e 100644 --- a/locales/zh.json +++ b/locales/zh.json @@ -7058,5 +7058,16 @@ "You cannot have more than 3 aliases for this domain.": "此域名的别名不能超过 3 个。", "Launchpad username was missing or not detected, please try again later.": "Launchpad 用户名缺失或未被检测到,请稍后重试。", "Invalid response from Launchpad API, please try again later.": "Launchpad API 的响应无效,请稍后重试。", - "You have exceeded your daily SMTP outbound rate limit.": "您已超出每日 SMTP 出站速率限制。" + "You have exceeded your daily SMTP outbound rate limit.": "您已超出每日 SMTP 出站速率限制。", + "Admin - Inquiries": "Admin - Inquiries", + "Inquiries": "Inquiries", + "Selected": "Selected", + "Bulk Reply": "Bulk Reply", + "Submit Bulk Reply": "Submit Bulk Reply", + "P.S. Happy with our efforts? Write us a review @": "P.S. Happy with our efforts? Write us a review @", + "P.S. Happy with our efforts? Write us a review @ ": "P.S. Happy with our efforts? Write us a review @ ", + "Hi there,": "Hi there,", + "No inquiries exist for that search.": "No inquiries exist for that search.", + "Thank you,": "Thank you,", + "Hi there, ": "Hi there, " } \ No newline at end of file diff --git a/package.json b/package.json index 0f86e638da..e0a0a92fdd 100644 --- a/package.json +++ b/package.json @@ -274,6 +274,7 @@ "@babel/preset-env": "7.23.9", "@commitlint/cli": "18.6.1", "@commitlint/config-conventional": "18.6.2", + "@faker-js/faker": "^8.4.1", "@ladjs/browserslist-config": "1.0.0", "@ladjs/gulp-envify": "2.0.1", "@ladjs/pug-lint": "2.6.1", @@ -349,7 +350,6 @@ "stylelint-scss": "5.3.1", "supertest": "6.3.4", "through2": "4.0.2", - "ttab": "0.8.0", "xo": "0.53.1" }, "engines": { diff --git a/scripts/generate-dev-data.js b/scripts/generate-dev-data.js new file mode 100755 index 0000000000..31deed66e7 --- /dev/null +++ b/scripts/generate-dev-data.js @@ -0,0 +1,58 @@ +/** + * Copyright (c) Forward Email LLC + * SPDX-License-Identifier: BUSL-1.1 + */ + +// eslint-disable-next-line import/no-unassigned-import +require('#config/env'); + +const process = require('node:process'); + +// eslint-disable-next-line import/no-unassigned-import +require('#config/env'); +// eslint-disable-next-line import/no-unassigned-import +require('#config/mongoose'); + +const Graceful = require('@ladjs/graceful'); + +const mongoose = require('mongoose'); +const { faker } = require('@faker-js/faker'); +const { Inquiries, Users } = require('#models'); +const setupMongoose = require('#helpers/setup-mongoose'); + +const INQUIRY_COUNT = 50; + +const graceful = new Graceful({ + mongooses: [mongoose] +}); + +graceful.listen(); + +const createFakeInquiry = async () => { + const randomEmail = faker.internet.email(); + const randomPassword = faker.internet.password(); + const randomUsername = faker.internet.userName(); + + console.log(`Generating user with email: ${randomEmail}`); + + const user = await Users.create({ + email: randomEmail, + password: randomPassword + }); + + await Inquiries.create({ + user: user.id, + message: `Hey this is ${randomUsername}, \n I am looking for some help! Thanks in advance.` + }); +}; + +(async () => { + await setupMongoose(); + + for (let count = 0; count <= INQUIRY_COUNT; count++) { + // eslint-disable-next-line no-await-in-loop + await createFakeInquiry(); + } + + process.exit(0); +})();