diff --git a/cmd/tx.go b/cmd/tx.go index 6771766..757a4ad 100644 --- a/cmd/tx.go +++ b/cmd/tx.go @@ -4,6 +4,7 @@ import ( "fmt" "net/http" "net/textproto" + "strings" "github.com/knadh/listmonk/internal/manager" "github.com/knadh/listmonk/models" @@ -35,58 +36,110 @@ func handleSendTxMessage(c echo.Context) error { app.i18n.Ts("globals.messages.notFound", "name", fmt.Sprintf("template %d", m.TemplateID))) } - // Get the subscriber. - sub, err := app.core.GetSubscriber(m.SubscriberID, "", m.SubscriberEmail) - if err != nil { - return err + var ( + num = len(m.SubscriberEmails) + isEmails = true + ) + if len(m.SubscriberIDs) > 0 { + num = len(m.SubscriberIDs) + isEmails = false } - // Render the message. - if err := m.Render(sub, tpl); err != nil { - return echo.NewHTTPError(http.StatusBadRequest, - app.i18n.Ts("globals.messages.errorFetching", "name")) - } + notFound := []string{} + for n := 0; n < num; n++ { + var ( + subID int + subEmail string + ) - // Prepare the final message. - msg := manager.Message{} - msg.Subscriber = sub - msg.To = []string{sub.Email} - msg.From = m.FromEmail - msg.Subject = m.Subject - msg.ContentType = m.ContentType - msg.Messenger = m.Messenger - msg.Body = m.Body + if !isEmails { + subID = m.SubscriberIDs[n] + } else { + subEmail = m.SubscriberEmails[n] + } - // Optional headers. - if len(m.Headers) != 0 { - msg.Headers = make(textproto.MIMEHeader, len(m.Headers)) - for _, set := range m.Headers { - for hdr, val := range set { - msg.Headers.Add(hdr, val) + // Get the subscriber. + sub, err := app.core.GetSubscriber(subID, "", subEmail) + if err != nil { + // If the subscriber is not found, log that error and move on without halting on the list. + if er, ok := err.(*echo.HTTPError); ok && er.Code == http.StatusBadRequest { + notFound = append(notFound, fmt.Sprintf("%v", er.Message)) + continue } + + return err + } + + // Render the message. + if err := m.Render(sub, tpl); err != nil { + return echo.NewHTTPError(http.StatusBadRequest, + app.i18n.Ts("globals.messages.errorFetching", "name")) + } + + // Prepare the final message. + msg := manager.Message{} + msg.Subscriber = sub + msg.To = []string{sub.Email} + msg.From = m.FromEmail + msg.Subject = m.Subject + msg.ContentType = m.ContentType + msg.Messenger = m.Messenger + msg.Body = m.Body + + // Optional headers. + if len(m.Headers) != 0 { + msg.Headers = make(textproto.MIMEHeader, len(m.Headers)) + for _, set := range m.Headers { + for hdr, val := range set { + msg.Headers.Add(hdr, val) + } + } + } + + if err := app.manager.PushMessage(msg); err != nil { + app.log.Printf("error sending message (%s): %v", msg.Subject, err) + return err } } - if err := app.manager.PushMessage(msg); err != nil { - app.log.Printf("error sending message (%s): %v", msg.Subject, err) - return err + if len(notFound) > 0 { + return echo.NewHTTPError(http.StatusBadRequest, strings.Join(notFound, "; ")) } return c.JSON(http.StatusOK, okResp{true}) } func validateTxMessage(m models.TxMessage, app *App) (models.TxMessage, error) { - if m.SubscriberEmail == "" && m.SubscriberID == 0 { + if len(m.SubscriberEmails) > 0 && m.SubscriberEmail != "" { return m, echo.NewHTTPError(http.StatusBadRequest, - app.i18n.Ts("globals.messages.missingFields", "name", "subscriber_email or subscriber_id")) + app.i18n.Ts("globals.messages.invalidFields", "name", "do not send `subscriber_email`")) + } + if len(m.SubscriberIDs) > 0 && m.SubscriberID != 0 { + return m, echo.NewHTTPError(http.StatusBadRequest, + app.i18n.Ts("globals.messages.invalidFields", "name", "do not send `subscriber_id`")) } if m.SubscriberEmail != "" { - em, err := app.importer.SanitizeEmail(m.SubscriberEmail) - if err != nil { - return m, echo.NewHTTPError(http.StatusBadRequest, err.Error()) + m.SubscriberEmails = append(m.SubscriberEmails, m.SubscriberEmail) + } + + if m.SubscriberID != 0 { + m.SubscriberIDs = append(m.SubscriberIDs, m.SubscriberID) + } + + if (len(m.SubscriberEmails) == 0 && len(m.SubscriberIDs) == 0) || (len(m.SubscriberEmails) > 0 && len(m.SubscriberIDs) > 0) { + return m, echo.NewHTTPError(http.StatusBadRequest, + app.i18n.Ts("globals.messages.invalidFields", "name", "send subscriber_emails OR subscriber_ids")) + } + + for n, email := range m.SubscriberEmails { + if m.SubscriberEmail != "" { + em, err := app.importer.SanitizeEmail(email) + if err != nil { + return m, echo.NewHTTPError(http.StatusBadRequest, err.Error()) + } + m.SubscriberEmails[n] = em } - m.SubscriberEmail = em } if m.FromEmail == "" { diff --git a/i18n/ca.json b/i18n/ca.json index 8c01484..2031da0 100644 --- a/i18n/ca.json +++ b/i18n/ca.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "Error en actualitzar {name}: {error}", "globals.messages.internalError": "Error del servidor intern", "globals.messages.invalidData": "Dades no vàlides", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID(s) no vàlid", "globals.messages.invalidUUID": "UUID(s) no vàlid", "globals.messages.missingFields": "Falten camps: {name}", diff --git a/i18n/cs-cz.json b/i18n/cs-cz.json index d310aeb..4564bf9 100644 --- a/i18n/cs-cz.json +++ b/i18n/cs-cz.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "Chyba při aktualizaci {name}: {error}", "globals.messages.internalError": "Interní chyba serveru", "globals.messages.invalidData": "Neplatná data", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Neplatné ID", "globals.messages.invalidUUID": "Neplatné UUID", "globals.messages.missingFields": "Chybějící pole: {name}", diff --git a/i18n/cy.json b/i18n/cy.json index e6cfc37..b219128 100644 --- a/i18n/cy.json +++ b/i18n/cy.json @@ -1,551 +1,552 @@ { - "_.code": "cy", - "_.name": "Cymraeg (cy)", - "admin.errorMarshallingConfig": "Gwall wrth farsialu ffurfweddiad: {error}", - "analytics.count": "Nifer", - "analytics.fromDate": "Gan", - "analytics.invalidDates": "Dyddiadau 'o' neu 'i' annilys", - "analytics.isUnique": "Mae'r niferoedd yn unigryw i bob tanysgrifiwr.", - "analytics.links": "Dolenni", - "analytics.nonUnique": "Nid yw'r niferoedd yn unigryw gan fod y system olrhain tanysgrifiwr unigol wedi'i diffodd", - "analytics.title": "Dadansoddeg", - "analytics.toDate": "At", - "bounces.source": "Ffynhonnell", - "bounces.unknownService": "Gwasanaeth anhysbys.", - "bounces.view": "Gweld beth sydd wedi sboncio", - "campaigns.addAltText": "Ychwanegu neges destun blaen", - "campaigns.archive": "Archif", - "campaigns.archiveEnable": "Cyhoeddi i archif gyhoeddus", - "campaigns.archiveHelp": "Cyhoeddi neges yr ymgyrch (wrthi'n rhedeg", - "campaigns.archiveMeta": "Ymgyrch metaddata", - "campaigns.archiveMetaHelp": "Data tanysgrifiwr ffug i'w defnyddio yn y neges gyhoeddus", - "campaigns.cantUpdate": "Does dim modd diweddaru ymgyrch fyw neu ymgyrch sydd wedi dod i ben.", - "campaigns.clicks": "Cliciau", - "campaigns.confirmDelete": "Dileu {name}", - "campaigns.confirmSchedule": "Bydd yr ymgyrch hon yn dechrau'n awtomatig ar y dyddiad a'r amser sydd wedi'i drefnu. Dechrau nawr?", - "campaigns.confirmSwitchFormat": "Gallai'r cynnwys golli ei fformat. Parhau?", - "campaigns.content": "Cynnwys", - "campaigns.contentHelp": "Cynnwys yma", - "campaigns.continue": "Parhau", - "campaigns.copyOf": "Copi o {name}", - "campaigns.customHeadersHelp": "Ystod eang o benynnau i'w hatodi i negeseuon. ee: [{\"\"X-Custom\"\": \"\"gwerth\"\"}", - "campaigns.dateAndTime": "Dyddiad ac amser", - "campaigns.ended": "Wedi gorffen", - "campaigns.errorSendTest": "Gwall wrth geisio anfon: {error}", - "campaigns.fieldInvalidBody": "Gwall wrth lunio corff yr ymgyrch: {error}", - "campaigns.fieldInvalidFromEmail": "'ebost_gan' annilys.", - "campaigns.fieldInvalidListIDs": "ID rhestr annilys", - "campaigns.fieldInvalidMessenger": "Negesydd anhysbys {name}.", - "campaigns.fieldInvalidName": "Hyd annilys ar gyfer enw.", - "campaigns.fieldInvalidSendAt": "Dylai'r dyddiad fod yn y dyfodol.", - "campaigns.fieldInvalidSubject": "Hyd annilys ar gyfer y pwnc.", - "campaigns.formatHTML": "Fformat HTML", - "campaigns.fromAddress": "Cyfeiriad yr anfonwr", - "campaigns.fromAddressPlaceholder": "Eich Enw ", - "campaigns.invalid": "Ymgyrch annilys", - "campaigns.invalidCustomHeaders": "Penawdau personol annilys: {error}", - "campaigns.markdown": "Markdown", - "campaigns.needsSendAt": "Angen trefnu dyddiad ar gyfer yr ymgyrch", - "campaigns.newCampaign": "Ymgyrch newydd", - "campaigns.noKnownSubsToTest": "Dim tanysgrifwyr hysbys i'w profi.", - "campaigns.noOptinLists": "Heb ddod o hyd i restrau optio i mewn i greu ymgyrch.", - "campaigns.noSubs": "Nid oes tanysgrifwyr yn y rhestrau a ddewiswyd i greu'r ymgyrch.", - "campaigns.noSubsToTest": "Nid oes tanysgrifwyr i'w targedu.", - "campaigns.notFound": "Heb ddod o hyd i ymgyrch.", - "campaigns.onlyActiveCancel": "Dim ond ymgyrchoedd byw y mae modd eu canslo.", - "campaigns.onlyActivePause": "Dim ond ymgyrchoedd byw y mae modd eu rhewi.", - "campaigns.onlyDraftAsScheduled": "Dim ond ymgyrchoedd drafft y mae modd eu trefnu.", - "campaigns.onlyPausedDraft": "Dim ond ymgyrchoedd drafft a rhai wedi'u rhewi y mae modd eu dechrau.", - "campaigns.onlyScheduledAsDraft": "Dim ond ymgyrchoedd sydd wedi'u trefnu y mae modd eu harbed fel drafft.", - "campaigns.pause": "Rhewi", - "campaigns.plainText": "Testun Plaen", - "campaigns.preview": "Rhagolwg", - "campaigns.progress": "Cynnydd", - "campaigns.queryPlaceholder": "Enw neu bwnc", - "campaigns.rateMinuteShort": "isafswm", - "campaigns.rawHTML": "HTML crai", - "campaigns.removeAltText": "Dileu'r neges destun blaen arall", - "campaigns.richText": "Testun cyfoethog", - "campaigns.schedule": "Trefnu ymgyrch", - "campaigns.scheduled": "Wedi'i threfnu", - "campaigns.send": "Anfon", - "campaigns.sendLater": "Anfon yn nes ymlaen", - "campaigns.sendTest": "Anfon neges brawf", - "campaigns.sendTestHelp": "Pwyswch Enter ar ôl teipio cyfeiriad er mwyn ychwanegu derbynwyr. Rhaid i'r cyfeiriadau fod ar gyfer tanysgrifwyr presennol.", - "campaigns.sendToLists": "Rhestrau i'w hanfon at", - "campaigns.sent": "Wedi anfon", - "campaigns.start": "Dechrau ymgyrch", - "campaigns.started": "“[enw]” wedi dechrau", - "campaigns.startedAt": "Wedi dechrau", - "campaigns.stats": "Ystadegau", - "campaigns.status.cancelled": "Wedi canslo", - "campaigns.status.draft": "Drafft", - "campaigns.status.finished": "Wedi gorffen", - "campaigns.status.paused": "Wedi rhewi", - "campaigns.status.running": "Wrthi'n rhedeg", - "campaigns.status.scheduled": "Wedi'i drefnu", - "campaigns.statusChanged": "Mae “[enw]” {status}", - "campaigns.subject": "Pwnc", - "campaigns.testEmails": "E-byst", - "campaigns.testSent": "Wedi anfon neges brawf", - "campaigns.timestamps": "Stamp amser", - "campaigns.trackLink": "Olrhain dolen", - "campaigns.views": "Nifer y bobl sydd wedi'i gweld", - "dashboard.campaignViews": "Nifer y bobl sydd wedi gweld yr ymgyrch", - "dashboard.linkClicks": "Nifer y bobl sydd wedi clicio'r ddolen", - "dashboard.messagesSent": "Negeseuon wedi'u hanfon", - "dashboard.orphanSubs": "Amddifad", - "email.data.info": "Mae copi o'r data sydd wedi'u cadw amdanoch chi wedi'i atodi fel ffeil JSON. Gallwch edrych ar y ffeil mewn golygydd testun.", - "email.data.title": "Eich data", - "email.optin.confirmSub": "Cadarnhau tanysgrifiad", - "email.optin.confirmSubHelp": "Cadarnhewch eich tanysgrifiad drwy glicio'r botwm isod", - "email.optin.confirmSubInfo": "Rydych chi wedi cael eich ychwanegu at y rhestrau canlynol:", - "email.optin.confirmSubTitle": "Cadarnhau tanysgrifiad", - "email.optin.confirmSubWelcome": "Helo", - "email.optin.privateList": "Rhestr Breifat", - "email.status.campaignReason": "Rheswm", - "email.status.campaignSent": "Wedi anfon", - "email.status.campaignUpdateTitle": "Yr wybodaeth diweddaraf am yr ymgyrch", - "email.status.importFile": "Ffeil", - "email.status.importRecords": "Cofnodion", - "email.status.importTitle": "Yr wybodaeth ddiweddaraf am fewngludo", - "email.status.status": "Statws", - "email.unsub": "Dad-danysgrifio", - "email.unsubHelp": "Ddim eisiau derbyn yr e-byst hyn?", - "email.viewInBrowser": "Gweld mewn porwr", - "forms.formHTML": "HTML ffurflen", - "forms.formHTMLHelp": "Defnyddiwch yr HTML canlynol i ddangos ffurflen tanysgrifio ar wefan allanol. Dylai'r ffurflen gynnwys maes cyfeiriad e-bost ac un neu fwy o feysydd 'at' (UUID rhestr). Mae'r maes enw yn ddewisol.", - "forms.noPublicLists": "Nid oes rhestrau cyhoeddus ar gyfer llunio ffurflenni.", - "forms.publicLists": "Rhestrau cyhoeddus", - "forms.publicSubPage": "Tudalen tanysgrifio gyhoeddus", - "forms.selectHelp": "Dewiswch restrau i'w hychwanegu at y ffurflen.", - "forms.title": "Ffurflenni", - "globals.buttons.add": "Ychwanegu", - "globals.buttons.addNew": "Ychwanegu newydd", - "globals.buttons.back": "Yn ôl", - "globals.buttons.cancel": "Canslo", - "globals.buttons.clone": "Clonio", - "globals.buttons.close": "Cau", - "globals.buttons.continue": "Parhau", - "globals.buttons.delete": "Dileu", - "globals.buttons.deleteAll": "Dileu'r cyfan", - "globals.buttons.edit": "Golygu", - "globals.buttons.enabled": "Wedi galluogi", - "globals.buttons.insert": "Mewnosod", - "globals.buttons.learnMore": "Dysgu mwy", - "globals.buttons.more": "Mwy", - "globals.buttons.new": "Newydd", - "globals.buttons.ok": "Iawn", - "globals.buttons.remove": "Dileu", - "globals.buttons.save": "Cadw", - "globals.buttons.saveChanges": "Cadw'r newidiadau", - "globals.days.0": "Sul", - "globals.days.1": "Sul", - "globals.days.2": "Llun", - "globals.days.3": "Maw", - "globals.days.4": "Mer", - "globals.days.5": "Iau", - "globals.days.6": "Gwen", - "globals.days.7": "Sad", - "globals.fields.createdAt": "Wedi creu", - "globals.fields.description": "Disgrifiad", - "globals.fields.id": "ID", - "globals.fields.name": "Enw", - "globals.fields.status": "Statws", - "globals.fields.type": "Math", - "globals.fields.updatedAt": "Diweddaru", - "globals.fields.uuid": "UUID", - "globals.messages.confirm": "Ydych yn siŵr?", - "globals.messages.confirmDiscard": "Dileu'r newidiadau?", - "globals.messages.created": "wedi creu “[enw]”", - "globals.messages.deleted": "wedi dileu “{name}”", - "globals.messages.deletedCount": "wedi dileu {name} ({num})", - "globals.messages.done": "Gorffen", - "globals.messages.emptyState": "Dim yma", - "globals.messages.errorCreating": "Gwall wrth greu {name}: {error}", - "globals.messages.errorDeleting": "Gwall wrth ddileu {name}: {error}", - "globals.messages.errorFetching": "Gwall wrth nôl {name}: {error}", - "globals.messages.errorInvalidIDs": "Mae un ID neu fwy yn annilys: {error}", - "globals.messages.errorUUID": "Gwall wrth gynhyrchu UUID: {error}", - "globals.messages.errorUpdating": "Gwall wrth ddiweddaru {name}: {error}", - "globals.messages.internalError": "Gwall ar y gweinydd mewnol", - "globals.messages.invalidData": "Data annilys", - "globals.messages.invalidID": "ID annilys", - "globals.messages.invalidUUID": "UUID annilys", - "globals.messages.missingFields": "Maes/meysydd coll: {name}", - "globals.messages.notFound": "Heb ddod o hyd i {enw]", - "globals.messages.passwordChange": "Rhoi gwerth i'w newid", - "globals.messages.updated": "Wedi diweddaru “{name}”", - "globals.months.1": "Ion", - "globals.months.10": "Hyd", - "globals.months.11": "Tach", - "globals.months.12": "Rhag", - "globals.months.2": "Chwe", - "globals.months.3": "Maw", - "globals.months.4": "Ebr", - "globals.months.5": "Mai", - "globals.months.6": "Meh", - "globals.months.7": "Gorff", - "globals.months.8": "Awst", - "globals.months.9": "Med", - "globals.states.off": "Ffwrdd", - "globals.terms.all": "Pawb", - "globals.terms.analytics": "Dadansoddeg", - "globals.terms.bounce": "Wedi sboncio'n ôl", - "globals.terms.bounces": "Wedi sboncio'n ôl", - "globals.terms.campaign": "Ymgyrch | Ymgyrchoedd", - "globals.terms.campaigns": "Ymgyrchoedd", - "globals.terms.dashboard": "Dangosfwrdd", - "globals.terms.day": "Diwrnod | Diwrnodau", - "globals.terms.hour": "Awr | Oriau", - "globals.terms.list": "Rhestr | Rhestrau", - "globals.terms.lists": "Rhestrau", - "globals.terms.media": "Cyfryngau", - "globals.terms.messenger": "Negesydd | Negeseuwyr", - "globals.terms.messengers": "Negeseuwyr", - "globals.terms.minute": "Munud | Munudau", - "globals.terms.month": "Mis | Misoedd", - "globals.terms.second": "Eiliad | Eiliadau", - "globals.terms.settings": "Gosodiadau", - "globals.terms.subscriber": "Tanysgrifiwr | Tanysgrifwyr", - "globals.terms.subscribers": "Tanysgrifwyr", - "globals.terms.subscriptions": "Tanysgrifiad | Tanysgrifiadau", - "globals.terms.tag": "Tag | Tagiau", - "globals.terms.tags": "Tagiau", - "globals.terms.template": "Templed | Templedi", - "globals.terms.templates": "Templedi", - "globals.terms.tx": "Trafodion", - "globals.terms.year": "Blwyddyn | Blynyddoedd", - "import.alreadyRunning": "Mae rhywbeth wrthi'n cael ei fewngludo. Arhoswch iddo orffen neu ei stopio cyn rhoi cynnig arall arni.", - "import.blocklist": "Rhestr rwystro", - "import.csvDelim": "Amffinydd CSV", - "import.csvDelimHelp": "Yr amffinydd diofyn yw coma.", - "import.csvExample": "CSV crai enghreifftiol", - "import.csvFile": "Ffeil CSV neu ZIP", - "import.csvFileHelp": "Cliciwch neu lusgo'r ffeil CSV neu Zip yma", - "import.errorCopyingFile": "Gwall wrth gopïo ffeil: {error}", - "import.errorProcessingZIP": "Gwall wrth brosesu ffeil ZIP: {error}", - "import.errorStarting": "Gwall wrth ddechrau mewngludo: {error}", - "import.importDone": "Gorffen", - "import.importStarted": "Wedi dechrau mewngludo", - "import.instructions": "Cyfarwyddiadau", - "import.instructionsHelp": "Llwythwch ffeil CSV neu ZIP i fyny sy'n cynnwys un ffeil CSV er mwyn mewngludo tanysgrifwyr mewn swp. Dylai'r ffeil CSV gynnwys y penynnau a'r enwau colofnau canlynol. Dylai priodoleddau (dewisol) fod yn llinyn JSON dilys gyda dyfynnod bob ochr.", - "import.invalidDelim": "Ni ddylai'r amffinydd fod yn fwy nag un nod.", - "import.invalidFile": "Ffeil annilys: {error}", - "import.invalidMode": "Modd annilys", - "import.invalidParams": "Paramedrau annilys: {error}", - "import.invalidSubStatus": "Statws tanysgrifio annilys", - "import.listSubHelp": "Rhestrau y gellid tanysgrifio iddynt.", - "import.mode": "Modd", - "import.overwrite": "Disodli?", - "import.overwriteHelp": "Disodli enw", - "import.recordsCount": "{num} / {total} cofnod", - "import.stopImport": "Rhoi'r gorau i fewngludo", - "import.subscribe": "Tanysgrifio", - "import.title": "Mewngludo tanysgrifwyr", - "import.upload": "Llwytho i fyny", - "lists.confirmDelete": "Ydych chi'n siŵr? Nid yw hyn yn dileu tanysgrifwyr.", - "lists.confirmSub": "Cadarnhau tanysgrifiad i {name}", - "lists.invalidName": "Enw annilys", - "lists.newList": "Rhestr newydd", - "lists.optin": "Optio i mewn", - "lists.optinHelp": "Wrth optio i mewn ddwywaith", - "lists.optinTo": "Optio i mewn i {name}", - "lists.optins.double": "Optio i mewn ddwywaith", - "lists.optins.single": "Optio i mewn unwaith", - "lists.sendCampaign": "Anfon ymgyrch", - "lists.sendOptinCampaign": "Anfon ymgyrch optio i mewn", - "lists.type": "Math", - "lists.typeHelp": "Gall unrhyw un yn y byd danysgrifio i restrau cyhoeddus a gall eu henwau ymddangos ar dudalennau cyhoeddus fel y dudalen rheoli tanysgrifiadau.", - "lists.types.private": "Preifat", - "lists.types.public": "Cyhoeddus", - "logs.title": "Logos", - "maintenance.help": "Efallai y bydd yn cymryd amser i gwblhau rhai gweithredoedd yn dibynnu ar nifer y data.", - "maintenance.maintenance.unconfirmedOptins": "Tanysgrifiadau optio i mewn sydd heb eu cadarnhau", - "maintenance.olderThan": "Cyn", - "maintenance.title": "Cynnal a chadw", - "maintenance.unconfirmedSubs": "Tanysgrifiadau sydd heb eu cadarnhau a wnaed dros {name} diwrnod yn ôl.", - "media.errorReadingFile": "Gwall wrth ddarllen ffeil: {error}", - "media.errorResizing": "Gwall wrth addasu maint y llun: {error}", - "media.errorSavingThumbnail": "Gwall wrth arbed mân-lun: {error}", - "media.errorUploading": "Gwall wrth lwytho ffeil i fyny: {error}", - "media.invalidFile": "Ffeil annilys: {error}", - "media.title": "Cyfryngau", - "media.unsupportedFileType": "Math o ffeil nad yw'n cael ei gefnogi ({type})", - "media.upload": "Llwytho i fyny", - "media.uploadHelp": "Clicio neu lusgo un llun neu fwy yma", - "media.uploadImage": "Llwytho llun i fyny", - "menu.allCampaigns": "Pob ymgyrch", - "menu.allLists": "Pob rhestr", - "menu.allSubscribers": "Pob tanysgrifiwr", - "menu.dashboard": "Dangosfwrdd", - "menu.forms": "Ffurflenni", - "menu.import": "Mewngludo", - "menu.logs": "Cofnodion", - "menu.maintenance": "Cynnal a chadw", - "menu.media": "Cyfryngau", - "menu.newCampaign": "Creu newydd", - "menu.settings": "Gosodiadau", - "public.archiveEmpty": "Nid oes negeseuon wedi'u harchifo eto.", - "public.archiveTitle": "Archif y rhestr bostio", - "public.blocklisted": "Wedi tanysgrifio'n barhaol.", - "public.campaignNotFound": "Heb ddod o hyd i'r neges e-bost.", - "public.confirmOptinSubTitle": "Cadarnhau tanysgrifiad", - "public.confirmSub": "Cadarnhau tanysgrifiad", - "public.confirmSubInfo": "Rydych chi wedi cael eich ychwanegu at y rhestrau canlynol:", - "public.confirmSubTitle": "Cadarnhau", - "public.dataRemoved": "Mae eich tanysgrifiadau a'r holl ddata amdanoch chi wedi cael eu dileu.", - "public.dataRemovedTitle": "Wedi dileu data", - "public.dataSent": "Mae eich data wedi cael eu hanfon atoch chi dros e-bost fel atodiad.", - "public.dataSentTitle": "Wedi anfon data dros e-bost", - "public.errorFetchingCampaign": "Gwall wrth chwilio am y neges e-bost.", - "public.errorFetchingEmail": "Heb ddod o hyd i'r neges e-bost", - "public.errorFetchingLists": "Gwall wrth chwilio am y rhestrau. Rhowch gynnig arall arni.", - "public.errorProcessingRequest": "Gwall wrth brosesu'r cais. Rhowch gynnig arall arni.", - "public.errorTitle": "Gwall", - "public.invalidFeature": "Nid yw'r nodwedd ar gael.", - "public.invalidLink": "Dolen annilys", - "public.managePrefs": "Rheoli dewisiadau", - "public.managePrefsUnsub": "Dad-ddewiswch y rhestrau i ddad-danysgrifio.", - "public.noListsAvailable": "Nid oes rhestrau ar gael i danysgrifio iddynt.", - "public.noListsSelected": "Nid ydych wedi dewis rhestrau dilys i danysgrifio iddynt.", - "public.noSubInfo": "Nid oes tanysgrifiadau i'w cadarnhau.", - "public.noSubTitle": "Dim tanysgrifiadau", - "public.notFoundTitle": "Heb ddod o hyd i unrhyw beth", - "public.prefsSaved": "Mae eich dewisiadau wedi cael eu cadw.", - "public.privacyConfirmWipe": "Ydych chi'n siŵr eich bod chi am ddileu'r holl ddata am eich tanysgrifiad yn barhaol?", - "public.privacyExport": "Allgludo eich data", - "public.privacyExportHelp": "Bydd copi o'ch data yn cael ei anfon atoch dros e-bost.", - "public.privacyTitle": "Preifatrwydd a data", - "public.privacyWipe": "Dileu eich data", - "public.privacyWipeHelp": "Dileu eich holl danysgrifiadau a'ch data cysylltiedig yn barhaol.", - "public.sub": "Tanysgrifio", - "public.subConfirmed": "Wedi llwyddo i danysgrifio.", - "public.subConfirmedTitle": "Wedi cadarnhau", - "public.subName": "Enw (dewisol)", - "public.subNotFound": "Heb ddod o hyd i'r tanysgrifiad.", - "public.subOptinPending": "Rydyn ni wedi anfon e-bost atoch er mwyn i chi gadarnhau eich tanysgrifiad(au).", - "public.subPrivateList": "Rhestr breifat", - "public.subTitle": "Tanysgrifio", - "public.unsub": "Dad-danysgrifio", - "public.unsubFull": "Dad-danysgrifio o bob e-bost yn y dyfodol.", - "public.unsubHelp": "Ydych chi am dad-danysgrifio o'r rhestr bostio hon?", - "public.unsubTitle": "Dad-danysgrifio", - "public.unsubbedInfo": "Rydych chi wedi llwyddo i dad-danysgrifio.", - "public.unsubbedTitle": "Dad-danysgrifio", - "public.unsubscribeTitle": "Dad-danysgrifio o'r rhestr bostio", - "settings.appearance.adminHelp": "CSS personol ar gyfer yr UI gweinyddol.", - "settings.appearance.adminName": "Gweinyddwr", - "settings.appearance.customCSS": "CSS personol", - "settings.appearance.customJS": "JavaScript personol", - "settings.appearance.name": "Golwg", - "settings.appearance.publicHelp": "CSS a JavaScript personol ar gyfer y tudalennau cyhoeddus.", - "settings.appearance.publicName": "Cyhoeddus", - "settings.bounces.action": "Gweithred", - "settings.bounces.blocklist": "Rhestr rwystro", - "settings.bounces.count": "Nifer y pethau sydd wedi sboncio'n ôl", - "settings.bounces.countHelp": "Nifer y pethau sydd wedi sboncio'n ôl fesul tanysgrifiwr", - "settings.bounces.delete": "Dileu", - "settings.bounces.enable": "Galluogi proses sboncio'n ôl", - "settings.bounces.enableMailbox": "Galluogi blwch post negeseuon sydd wedi sboncio'n ôl", - "settings.bounces.enableSES": "Galluogi SES", - "settings.bounces.enableSendgrid": "Galluogi SendGrid", - "settings.bounces.enableWebhooks": "Galluogi bachau gwe sydd wedi sboncio'n ôl", - "settings.bounces.enabled": "Wedi galluogi", - "settings.bounces.folder": "Ffolder", - "settings.bounces.folderHelp": "Enw'r ffolder IMAP i'w sganio. ee: blwch derbyn.", - "settings.bounces.invalidScanInterval": "Dylai'r cyfnod sganio ar gyfer negeseuon sydd wedi sboncio'n ôl bara o leiaf 1 munud", - "settings.bounces.name": "Wedi sboncio'n ôl", - "settings.bounces.scanInterval": "Cyfnod sganio", - "settings.bounces.scanIntervalHelp": "Y cyfnod ar gyfer sganio'r blwch post ar gyfer negeseuon sydd wedi sboncio'n ôl (e ar gyfer eiliad", - "settings.bounces.sendgridKey": "Allwedd SendGrid", - "settings.bounces.type": "Math", - "settings.bounces.username": "Enw defnyddiwr", - "settings.confirmRestart": "Sicrhewch bod yr ymgyrchoedd byw wedi'u rhewi. Ailddechrau?", - "settings.duplicateMessengerName": "Enw negesydd dyblyg: {name}", - "settings.errorEncoding": "Gwall wrth amgodio gosodiadau: {error}", - "settings.errorNoSMTP": "Dylid galluogi o leiaf un rhwystr SMTP", - "settings.general.adminNotifEmails": "E-byst atgoffa gweinyddol", - "settings.general.adminNotifEmailsHelp": "Rhestr o gyfeiriadau e-byst sydd wedi cael eu gwahanu gan goma ac y dylid eu defnyddio i anfon negeseuon atgoffa gweinyddol fel diweddariadau mewngludo", - "settings.general.checkUpdates": "Gwirio ar gyfer diweddariadau", - "settings.general.checkUpdatesHelp": "Gwirio ar gyfer apiau newydd sy'n cael eu rhyddhau o bryd i'w gilydd.", - "settings.general.enablePublicArchive": "Galluogi archif rhestr bostio gyhoeddus", - "settings.general.enablePublicArchiveHelp": "Cyhoeddi ymgyrchoedd lle mae archifo wedi'i alluogi ar y wefan gyhoeddus.", - "settings.general.enablePublicSubPage": "Galluogi tudalen tanysgrifio gyhoeddus", - "settings.general.enablePublicSubPageHelp": "Dangos tudalen tanysgrifio gyhoeddus gyda'r holl restrau cyhoeddus y gall pobl danysgrifio iddynt.", - "settings.general.faviconURL": "URL Favicon", - "settings.general.faviconURLHelp": "Dangos URL llawn (dewisol) i'r favicon statig ar y gwedd defnyddiwr", - "settings.general.fromEmail": "E-bost 'gan' diofyn", - "settings.general.fromEmailHelp": "E-bost 'gan' diofyn i'w ddangos ar e-byst yr ymgyrch. Mae modd newid hyn ar gyfer pob ymgyrch.", - "settings.general.language": "Iaith", - "settings.general.logoURL": "URL logo", - "settings.general.logoURLHelp": "Dangos URL llawn (dewisol) i'r logo statig ar y gwedd defnyddiwr", - "settings.general.name": "Cyffredinol", - "settings.general.rootURL": "URL gwraidd", - "settings.general.rootURLHelp": "URL cyhoeddus y gosodiad (dim slaes llusg).", - "settings.general.sendOptinConfirm": "Anfon cadarnhad optio i mewn", - "settings.general.sendOptinConfirmHelp": "Anfon e-bost cadarnhau optio i mewn pan fydd tanysgrifwyr yn cofrestru drwy'r ffurflen gyhoeddus neu pan fyddant yn cael eu hychwanegu gan y gweinyddwr.", - "settings.general.siteName": "Enw'r wefan", - "settings.invalidMessengerName": "Enw negesydd annilys.", - "settings.mailserver.authProtocol": "Protocol dilysu", - "settings.mailserver.host": "Lletywr", - "settings.mailserver.hostHelp": "Cyfeiriad lletya'r gweinydd SMTP", - "settings.mailserver.idleTimeout": "Terfyn amser segur", - "settings.mailserver.idleTimeoutHelp": "Amser aros ar gyfer gweithgaredd newydd ar gysylltiad cyn ei gau a'i ddileu o'r gronfa (e ar gyfer eiliad", - "settings.mailserver.maxConns": "Uchafswm nifer y cysylltiadau", - "settings.mailserver.maxConnsHelp": "Uchafswm nifer y cysylltiadau cydamserol â'r gweinydd", - "settings.mailserver.password": "Cyfrinair", - "settings.mailserver.passwordHelp": "Pwyswch enter i'w newid", - "settings.mailserver.port": "Porth", - "settings.mailserver.portHelp": "Porth gweinydd SMTP", - "settings.mailserver.skipTLS": "Hepgor dilysiad TLS", - "settings.mailserver.skipTLSHelp": "Hepgor y broses wirio enw lletywr ar y dystysgrif TLS.", - "settings.mailserver.tls": "TLS", - "settings.mailserver.tlsHelp": "Amgryptiad TLS/SSL. Mae STARTTLS yn cael ei ddefnyddio'n aml.", - "settings.mailserver.username": "Enw defnyddiwr", - "settings.mailserver.waitTimeout": "Terfyn amser aros", - "settings.mailserver.waitTimeoutHelp": "Amser aros ar gyfer gweithgaredd newydd ar gysylltiad cyn ei gau a'i ddileu o'r gronfa (e ar gyfer eiliad", - "settings.media.provider": "Darparwr", - "settings.media.s3.bucket": "Bwced", - "settings.media.s3.bucketPath": "Llwybr bwced", - "settings.media.s3.bucketPathHelp": "Llwybr yn y bwced i lwytho ffeiliau i fyny. Yr opsiwn diofyn yw /", - "settings.media.s3.bucketType": "Math o fwced", - "settings.media.s3.bucketTypePrivate": "Preifat", - "settings.media.s3.bucketTypePublic": "Cyhoeddus", - "settings.media.s3.key": "Allwedd mynediad AWS", - "settings.media.s3.publicURL": "URL cyhoeddus personol (dewisol)", - "settings.media.s3.publicURLHelp": "Parth S3 personol i'w ddefnyddio ar gyfer dolenni delweddau yn lle'r URL cefn ôl S3 diofyn.", - "settings.media.s3.region": "Rhanbarth", - "settings.media.s3.secret": "Cyfrinach mynediad AWS", - "settings.media.s3.uploadExpiry": "Dyddiad dod i ben ar gyfer llwytho i fyny", - "settings.media.s3.uploadExpiryHelp": "(Dewisol) Nodwch y TTL (mewn eiliadau) ar gyfer yr URL a lofnodwyd ymlaen llaw. Dim ond yn berthnasol ar gyfer bwcedi preifat (e", - "settings.media.s3.url": "URL cefn ôl S3", - "settings.media.s3.urlHelp": "Dim ond ei newid os ydych yn defnyddio URL cefn ôl personol sy'n gydnaws â S3 fel Minio.", - "settings.media.title": "Cyfryngau sydd wedi'u llwytho i fyny", - "settings.media.upload.path": "Llwytho llwybr i fyny", - "settings.media.upload.pathHelp": "Llwybr i'r gyfarwyddiaeth lle bydd cyfryngau'n cael eu llwytho i fyny.", - "settings.media.upload.uri": "Llwytho URI i fyny", - "settings.media.upload.uriHelp": "Llwytho URI sy'n weledol i'r byd tu allan. Bydd y cyfryngau sy'n cael eu llwytho i fyny i'r upload_path yn hygyrch i'r cyhoedd dan {root_url}", - "settings.messengers.maxConns": "Uchafswm nifer y cysylltiadau", - "settings.messengers.maxConnsHelp": "Uchafswm nifer y cysylltiadau â'r gweinydd ar yr un pryd", - "settings.messengers.messageSaved": "Wedi arbed y gosodiadau. Wrthi'n llwytho'r ap eto...", - "settings.messengers.name": "Negeseuwyr", - "settings.messengers.nameHelp": "Ee: my-sms. Llythrennau a rhifau / dash.", - "settings.messengers.password": "Cyfrinair", - "settings.messengers.retries": "Ailgynigion", - "settings.messengers.retriesHelp": "Nifer o weithiau y cewch roi cynnig arall arni pan fydd neges yn methu", - "settings.messengers.skipTLSHelp": "Hepgor y broses o wirio enw'r lletywr ar y dystysgrif TLS", - "settings.messengers.timeout": "Terfyn amser segur", - "settings.messengers.timeoutHelp": "Amser aros ar gyfer gweithgarwch newydd ar gysylltiad cyn ei gau a'i ddileu o'r gronfa (e ar gyfer eiliad", - "settings.messengers.url": "URL", - "settings.messengers.urlHelp": "URL gwraidd y gweinydd anfon yn ôl.", - "settings.messengers.username": "Enw defnyddiwr", - "settings.needsRestart": "Wedi newid y gosodiadau. Rhewi'r holl ymgyrchoedd byw ac ailgychwyn yr ap", - "settings.performance.batchSize": "Maint y swp", - "settings.performance.batchSizeHelp": "Nifer y tanysgrifwyr y mae modd eu tynnu o'r gronfa ddata ar yr un pryd. Bydd pob iteriad yn tynnu tanysgrifwyr o'r gronfa ddata", - "settings.performance.concurrency": "Cydamseru", - "settings.performance.concurrencyHelp": "Uchafswm nifer y gweithwyr (llinynnau) a fydd yn ceisio anfon negeseuon yr un pryd.", - "settings.performance.maxErrThreshold": "Uchafswm nifer y gwallau", - "settings.performance.maxErrThresholdHelp": "Nifer y gwallau (ee: SMTP yn dod i ben wrth anfon e-bost) y dylai ymgyrch fyw eu goddef cyn cael ei rhewi ar gyfer ymchwiliad neu ymyrryd. Ei osod yn 0 er mwyn osgoi ei rhewi.", - "settings.performance.messageRate": "Cyfradd negeseuon", - "settings.performance.messageRateHelp": "Uchafswm nifer y negeseuon i'w hanfon bob eiliad fesul gweithiwr. Os yw'r cydredeg yn 10 a bod cyfradd y negeseuon yn 10, yna mae modd anfon 10x10-100 neges bob eiliad. Dylid addasu hyn", - "settings.performance.name": "Perfformiad", - "settings.performance.slidingWindow": "Cyfyngu ar y ffenestr llithro", - "settings.performance.slidingWindowDuration": "Hyd", - "settings.performance.slidingWindowDurationHelp": "Hyd y ffenestr llithro (m ar gyfer munud", - "settings.performance.slidingWindowHelp": "Cyfyngu ar nifer y negeseuon sy'n cael eu hanfon mewn cyfnod penodol. Ar ôl cyrraedd yr uchafswm", - "settings.performance.slidingWindowRate": "Uchafswm nifer y negeseuon", - "settings.performance.slidingWindowRateHelp": "Uchafswm nifer y negeseuon y mae modd eu hanfon mewn cyfnod penodol.", - "settings.privacy.allowBlocklist": "Caniatáu rhestrau rhwystro", - "settings.privacy.allowBlocklistHelp": "Caniatáu i danysgrifwyr dad-danysgrifio o'r holl restrau postio a rhoi eu hunain ar y rhestr rwystro?", - "settings.privacy.allowExport": "Caniatáu allgludo", - "settings.privacy.allowExportHelp": "Caniatáu i danysgrifwyr allgludo data sydd wedi'u casglu amdanynt?", - "settings.privacy.allowPrefs": "Caniatáu newid dewisiadau", - "settings.privacy.allowPrefsHelp": "Caniatáu i danysgrifwyr newid dewisiadau fel eu henw a pha restrau maent wedi tanysgrifio iddynt.", - "settings.privacy.allowWipe": "Caniatáu sgubo", - "settings.privacy.allowWipeHelp": "Caniatáu i danysgrifwyr ddileu eu hunain", - "settings.privacy.domainBlocklist": "Rhestr rhwystro parthau", - "settings.privacy.domainBlocklistHelp": "Nid oes gan gyfeiriadau e-bost yn y parthau hyn yr hawl i danysgrifio. Rhowch un parth i bob llinell", - "settings.privacy.individualSubTracking": "Olrhain tanysgrifwyr unigol", - "settings.privacy.individualSubTrackingHelp": "Olrhain nifer y tanysgrifwyr sy'n gweld ac yn clicio'r ymgyrch. Pan fydd wedi'i analluogi", - "settings.privacy.listUnsubHeader": "Cynnwys y pennawd 'Dad-danysgrifio o'r rhestr'", - "settings.privacy.listUnsubHeaderHelp": "Cynnwys penynnau dad-danysgrifio sy'n caniatáu i ddefnyddwyr dad-danysgrifio drwy glicio un botwm.", - "settings.privacy.name": "Preifatrwydd", - "settings.restart": "Ailgychwyn", - "settings.smtp.customHeaders": "Penynnau personol", - "settings.smtp.customHeadersHelp": "Ystod eang o bennynau e-bost i'w cynnwys mewn negeseuon a anfonir gan y gweinydd hwn. ee: [{\"\"X-Custom\"\": \"\"gwerth\"\"}", - "settings.smtp.enabled": "Wedi galluogi", - "settings.smtp.heloHost": "HELO enw lletywr", - "settings.smtp.heloHostHelp": "Dewisol. Mae rhai gweinyddion SMTP yn gofyn am FQDN yn yr Enw Lletywr. Fel rhagosodiad", - "settings.smtp.name": "SMTP", - "settings.smtp.retries": "Ailgynigion", - "settings.smtp.retriesHelp": "Faint o weithiau y gallwch roi cynnig arall arni pan fydd neges yn methu.", - "settings.smtp.sendTest": "Anfon e-bost", - "settings.smtp.setCustomHeaders": "Gosod pennyn personol", - "settings.smtp.testConnection": "Profi cysylltiad", - "settings.smtp.testEnterEmail": "Rhowch gyfrinair i'w brofi", - "settings.smtp.toEmail": "E-bost derbynnydd", - "settings.title": "Gosodiadau", - "settings.updateAvailable": "Mae diweddariad {version} newydd ar gael.", - "subscribers.advancedQuery": "Uwch", - "subscribers.advancedQueryHelp": "Mynegiad SQL rhannol i wneud ymholiad ynghylch priodoleddau tanysgrifiwr", - "subscribers.attribs": "Priodoleddau", - "subscribers.attribsHelp": "Mae priodoleddau'n cael eu diffinio fel map JSON", - "subscribers.blocklistedHelp": "Ni fydd tanysgrifwyr ar y rhestr rwystro byth yn derbyn unrhyw e-byst.", - "subscribers.confirmBlocklist": "Rhoi {num} tanysgrifiwr ar y rhestr rwystro?", - "subscribers.confirmDelete": "Dileu {num} tanysgrifiwr?", - "subscribers.confirmExport": "Allgludo {num} tanysgrifiwr?", - "subscribers.domainBlocklisted": "Wedi rhoi'r parth e-bost ar y rhestr rhwystro.", - "subscribers.downloadData": "Llwytho data i lawr", - "subscribers.email": "E-bost", - "subscribers.emailExists": "Mae'r e-bost hwn yn bodoli'n barod.", - "subscribers.errorBlocklisting": "Gwall wrth roi tanysgrifwyr ar y rhestr rwystro: {error}", - "subscribers.errorNoIDs": "Heb roi ID.", - "subscribers.errorNoListsGiven": "Heb roi rhestrau.", - "subscribers.errorPreparingQuery": "Gwall wrth baratoi ymholiad tanysgrifiwr: {error}", - "subscribers.errorSendingOptin": "Gwall wrth anfon e-bost optio i mewn.", - "subscribers.export": "Allgludo", - "subscribers.invalidAction": "Gweithred annilys.", - "subscribers.invalidEmail": "E-bost annilys.", - "subscribers.invalidJSON": "JSON annilys yn y priodoleddau.", - "subscribers.invalidName": "Enw annilys.", - "subscribers.listChangeApplied": "Wedi newid y rhestr.", - "subscribers.lists": "Rhestrau", - "subscribers.listsHelp": "Does dim modd dileu rhestrau y mae pobl wedi dad-danysgrifio iddynt.", - "subscribers.listsPlaceholder": "Rhestrau y mae modd tanysgrifio iddynt", - "subscribers.manageLists": "Rheoli rhestrau", - "subscribers.markUnsubscribed": "Marcio ei fod wedi dad-danysgrifio", - "subscribers.newSubscriber": "Tanysgrifiwr newydd", - "subscribers.numSelected": "Wedi dewis {num} tanysgrifiwr", - "subscribers.optinSubject": "Cadarnhau tanysgrifiadau", - "subscribers.preconfirm": "Cadarnhau tanysgrifiadau ymlaen llaw", - "subscribers.preconfirmHelp": "Ni ddylid anfon e-byst optio i mewn a marcio bod holl danysgrifiadau'r rhestr 'wedi tanysgrifio'.", - "subscribers.query": "Ymholiad", - "subscribers.queryPlaceholder": "E-bost neu enw", - "subscribers.reset": "Ailosod", - "subscribers.selectAll": "Dewis y cyfan {num}", - "subscribers.sendOptinConfirm": "Anfon cadarnhad optio i mewn", - "subscribers.sentOptinConfirm": "Wedi anfon cadarnhad optio i mewn", - "subscribers.status.blocklisted": "Wedi'i roi ar y rhestr rhwystro", - "subscribers.status.confirmed": "Wedi cadarnhau", - "subscribers.status.enabled": "Wedi galluogi", - "subscribers.status.subscribed": "Wedi tanysgrifio", - "subscribers.status.unconfirmed": "Heb gadarnhau", - "subscribers.status.unsubscribed": "Wedi dad-danysgrifio", - "subscribers.subscribersDeleted": "Wedi dileu {num} tanysgrifiwr", - "templates.cantDeleteDefault": "Does dim modd dileu templed diofyn neu dempled nad yw'n bodoli", - "templates.default": "Rhagosodiad", - "templates.dummyName": "Ymgyrch ffug", - "templates.dummySubject": "Pwnc ymgyrch ffug", - "templates.errorCompiling": "Gwall wrth lunio templed: {error}", - "templates.errorRendering": "Gwall wrth rendro neges: {error}", - "templates.fieldInvalidName": "Hyd annilys ar gyfer enw.", - "templates.makeDefault": "Rhagosod", - "templates.newTemplate": "Templed newydd", - "templates.placeholderHelp": "Dylai'r ddalfan {placeholder} ond ymddangos unwaith yn y templed.", - "templates.preview": "Rhagolwg", - "templates.rawHTML": "HTML crai", - "templates.subject": "Pwnc", - "users.login": "Mewngofnodi", - "users.logout": "Allgofnodi" + "_.code": "cy", + "_.name": "Cymraeg (cy)", + "admin.errorMarshallingConfig": "Gwall wrth farsialu ffurfweddiad: {error}", + "analytics.count": "Nifer", + "analytics.fromDate": "Gan", + "analytics.invalidDates": "Dyddiadau 'o' neu 'i' annilys", + "analytics.isUnique": "Mae'r niferoedd yn unigryw i bob tanysgrifiwr.", + "analytics.links": "Dolenni", + "analytics.nonUnique": "Nid yw'r niferoedd yn unigryw gan fod y system olrhain tanysgrifiwr unigol wedi'i diffodd", + "analytics.title": "Dadansoddeg", + "analytics.toDate": "At", + "bounces.source": "Ffynhonnell", + "bounces.unknownService": "Gwasanaeth anhysbys.", + "bounces.view": "Gweld beth sydd wedi sboncio", + "campaigns.addAltText": "Ychwanegu neges destun blaen", + "campaigns.archive": "Archif", + "campaigns.archiveEnable": "Cyhoeddi i archif gyhoeddus", + "campaigns.archiveHelp": "Cyhoeddi neges yr ymgyrch (wrthi'n rhedeg", + "campaigns.archiveMeta": "Ymgyrch metaddata", + "campaigns.archiveMetaHelp": "Data tanysgrifiwr ffug i'w defnyddio yn y neges gyhoeddus", + "campaigns.cantUpdate": "Does dim modd diweddaru ymgyrch fyw neu ymgyrch sydd wedi dod i ben.", + "campaigns.clicks": "Cliciau", + "campaigns.confirmDelete": "Dileu {name}", + "campaigns.confirmSchedule": "Bydd yr ymgyrch hon yn dechrau'n awtomatig ar y dyddiad a'r amser sydd wedi'i drefnu. Dechrau nawr?", + "campaigns.confirmSwitchFormat": "Gallai'r cynnwys golli ei fformat. Parhau?", + "campaigns.content": "Cynnwys", + "campaigns.contentHelp": "Cynnwys yma", + "campaigns.continue": "Parhau", + "campaigns.copyOf": "Copi o {name}", + "campaigns.customHeadersHelp": "Ystod eang o benynnau i'w hatodi i negeseuon. ee: [{\"\"X-Custom\"\": \"\"gwerth\"\"}", + "campaigns.dateAndTime": "Dyddiad ac amser", + "campaigns.ended": "Wedi gorffen", + "campaigns.errorSendTest": "Gwall wrth geisio anfon: {error}", + "campaigns.fieldInvalidBody": "Gwall wrth lunio corff yr ymgyrch: {error}", + "campaigns.fieldInvalidFromEmail": "'ebost_gan' annilys.", + "campaigns.fieldInvalidListIDs": "ID rhestr annilys", + "campaigns.fieldInvalidMessenger": "Negesydd anhysbys {name}.", + "campaigns.fieldInvalidName": "Hyd annilys ar gyfer enw.", + "campaigns.fieldInvalidSendAt": "Dylai'r dyddiad fod yn y dyfodol.", + "campaigns.fieldInvalidSubject": "Hyd annilys ar gyfer y pwnc.", + "campaigns.formatHTML": "Fformat HTML", + "campaigns.fromAddress": "Cyfeiriad yr anfonwr", + "campaigns.fromAddressPlaceholder": "Eich Enw ", + "campaigns.invalid": "Ymgyrch annilys", + "campaigns.invalidCustomHeaders": "Penawdau personol annilys: {error}", + "campaigns.markdown": "Markdown", + "campaigns.needsSendAt": "Angen trefnu dyddiad ar gyfer yr ymgyrch", + "campaigns.newCampaign": "Ymgyrch newydd", + "campaigns.noKnownSubsToTest": "Dim tanysgrifwyr hysbys i'w profi.", + "campaigns.noOptinLists": "Heb ddod o hyd i restrau optio i mewn i greu ymgyrch.", + "campaigns.noSubs": "Nid oes tanysgrifwyr yn y rhestrau a ddewiswyd i greu'r ymgyrch.", + "campaigns.noSubsToTest": "Nid oes tanysgrifwyr i'w targedu.", + "campaigns.notFound": "Heb ddod o hyd i ymgyrch.", + "campaigns.onlyActiveCancel": "Dim ond ymgyrchoedd byw y mae modd eu canslo.", + "campaigns.onlyActivePause": "Dim ond ymgyrchoedd byw y mae modd eu rhewi.", + "campaigns.onlyDraftAsScheduled": "Dim ond ymgyrchoedd drafft y mae modd eu trefnu.", + "campaigns.onlyPausedDraft": "Dim ond ymgyrchoedd drafft a rhai wedi'u rhewi y mae modd eu dechrau.", + "campaigns.onlyScheduledAsDraft": "Dim ond ymgyrchoedd sydd wedi'u trefnu y mae modd eu harbed fel drafft.", + "campaigns.pause": "Rhewi", + "campaigns.plainText": "Testun Plaen", + "campaigns.preview": "Rhagolwg", + "campaigns.progress": "Cynnydd", + "campaigns.queryPlaceholder": "Enw neu bwnc", + "campaigns.rateMinuteShort": "isafswm", + "campaigns.rawHTML": "HTML crai", + "campaigns.removeAltText": "Dileu'r neges destun blaen arall", + "campaigns.richText": "Testun cyfoethog", + "campaigns.schedule": "Trefnu ymgyrch", + "campaigns.scheduled": "Wedi'i threfnu", + "campaigns.send": "Anfon", + "campaigns.sendLater": "Anfon yn nes ymlaen", + "campaigns.sendTest": "Anfon neges brawf", + "campaigns.sendTestHelp": "Pwyswch Enter ar ôl teipio cyfeiriad er mwyn ychwanegu derbynwyr. Rhaid i'r cyfeiriadau fod ar gyfer tanysgrifwyr presennol.", + "campaigns.sendToLists": "Rhestrau i'w hanfon at", + "campaigns.sent": "Wedi anfon", + "campaigns.start": "Dechrau ymgyrch", + "campaigns.started": "“[enw]” wedi dechrau", + "campaigns.startedAt": "Wedi dechrau", + "campaigns.stats": "Ystadegau", + "campaigns.status.cancelled": "Wedi canslo", + "campaigns.status.draft": "Drafft", + "campaigns.status.finished": "Wedi gorffen", + "campaigns.status.paused": "Wedi rhewi", + "campaigns.status.running": "Wrthi'n rhedeg", + "campaigns.status.scheduled": "Wedi'i drefnu", + "campaigns.statusChanged": "Mae “[enw]” {status}", + "campaigns.subject": "Pwnc", + "campaigns.testEmails": "E-byst", + "campaigns.testSent": "Wedi anfon neges brawf", + "campaigns.timestamps": "Stamp amser", + "campaigns.trackLink": "Olrhain dolen", + "campaigns.views": "Nifer y bobl sydd wedi'i gweld", + "dashboard.campaignViews": "Nifer y bobl sydd wedi gweld yr ymgyrch", + "dashboard.linkClicks": "Nifer y bobl sydd wedi clicio'r ddolen", + "dashboard.messagesSent": "Negeseuon wedi'u hanfon", + "dashboard.orphanSubs": "Amddifad", + "email.data.info": "Mae copi o'r data sydd wedi'u cadw amdanoch chi wedi'i atodi fel ffeil JSON. Gallwch edrych ar y ffeil mewn golygydd testun.", + "email.data.title": "Eich data", + "email.optin.confirmSub": "Cadarnhau tanysgrifiad", + "email.optin.confirmSubHelp": "Cadarnhewch eich tanysgrifiad drwy glicio'r botwm isod", + "email.optin.confirmSubInfo": "Rydych chi wedi cael eich ychwanegu at y rhestrau canlynol:", + "email.optin.confirmSubTitle": "Cadarnhau tanysgrifiad", + "email.optin.confirmSubWelcome": "Helo", + "email.optin.privateList": "Rhestr Breifat", + "email.status.campaignReason": "Rheswm", + "email.status.campaignSent": "Wedi anfon", + "email.status.campaignUpdateTitle": "Yr wybodaeth diweddaraf am yr ymgyrch", + "email.status.importFile": "Ffeil", + "email.status.importRecords": "Cofnodion", + "email.status.importTitle": "Yr wybodaeth ddiweddaraf am fewngludo", + "email.status.status": "Statws", + "email.unsub": "Dad-danysgrifio", + "email.unsubHelp": "Ddim eisiau derbyn yr e-byst hyn?", + "email.viewInBrowser": "Gweld mewn porwr", + "forms.formHTML": "HTML ffurflen", + "forms.formHTMLHelp": "Defnyddiwch yr HTML canlynol i ddangos ffurflen tanysgrifio ar wefan allanol. Dylai'r ffurflen gynnwys maes cyfeiriad e-bost ac un neu fwy o feysydd 'at' (UUID rhestr). Mae'r maes enw yn ddewisol.", + "forms.noPublicLists": "Nid oes rhestrau cyhoeddus ar gyfer llunio ffurflenni.", + "forms.publicLists": "Rhestrau cyhoeddus", + "forms.publicSubPage": "Tudalen tanysgrifio gyhoeddus", + "forms.selectHelp": "Dewiswch restrau i'w hychwanegu at y ffurflen.", + "forms.title": "Ffurflenni", + "globals.buttons.add": "Ychwanegu", + "globals.buttons.addNew": "Ychwanegu newydd", + "globals.buttons.back": "Yn ôl", + "globals.buttons.cancel": "Canslo", + "globals.buttons.clone": "Clonio", + "globals.buttons.close": "Cau", + "globals.buttons.continue": "Parhau", + "globals.buttons.delete": "Dileu", + "globals.buttons.deleteAll": "Dileu'r cyfan", + "globals.buttons.edit": "Golygu", + "globals.buttons.enabled": "Wedi galluogi", + "globals.buttons.insert": "Mewnosod", + "globals.buttons.learnMore": "Dysgu mwy", + "globals.buttons.more": "Mwy", + "globals.buttons.new": "Newydd", + "globals.buttons.ok": "Iawn", + "globals.buttons.remove": "Dileu", + "globals.buttons.save": "Cadw", + "globals.buttons.saveChanges": "Cadw'r newidiadau", + "globals.days.0": "Sul", + "globals.days.1": "Sul", + "globals.days.2": "Llun", + "globals.days.3": "Maw", + "globals.days.4": "Mer", + "globals.days.5": "Iau", + "globals.days.6": "Gwen", + "globals.days.7": "Sad", + "globals.fields.createdAt": "Wedi creu", + "globals.fields.description": "Disgrifiad", + "globals.fields.id": "ID", + "globals.fields.name": "Enw", + "globals.fields.status": "Statws", + "globals.fields.type": "Math", + "globals.fields.updatedAt": "Diweddaru", + "globals.fields.uuid": "UUID", + "globals.messages.confirm": "Ydych yn siŵr?", + "globals.messages.confirmDiscard": "Dileu'r newidiadau?", + "globals.messages.created": "wedi creu “[enw]”", + "globals.messages.deleted": "wedi dileu “{name}”", + "globals.messages.deletedCount": "wedi dileu {name} ({num})", + "globals.messages.done": "Gorffen", + "globals.messages.emptyState": "Dim yma", + "globals.messages.errorCreating": "Gwall wrth greu {name}: {error}", + "globals.messages.errorDeleting": "Gwall wrth ddileu {name}: {error}", + "globals.messages.errorFetching": "Gwall wrth nôl {name}: {error}", + "globals.messages.errorInvalidIDs": "Mae un ID neu fwy yn annilys: {error}", + "globals.messages.errorUUID": "Gwall wrth gynhyrchu UUID: {error}", + "globals.messages.errorUpdating": "Gwall wrth ddiweddaru {name}: {error}", + "globals.messages.internalError": "Gwall ar y gweinydd mewnol", + "globals.messages.invalidData": "Data annilys", + "globals.messages.invalidFields": "Invalid fields: {name}", + "globals.messages.invalidID": "ID annilys", + "globals.messages.invalidUUID": "UUID annilys", + "globals.messages.missingFields": "Maes/meysydd coll: {name}", + "globals.messages.notFound": "Heb ddod o hyd i {enw]", + "globals.messages.passwordChange": "Rhoi gwerth i'w newid", + "globals.messages.updated": "Wedi diweddaru “{name}”", + "globals.months.1": "Ion", + "globals.months.10": "Hyd", + "globals.months.11": "Tach", + "globals.months.12": "Rhag", + "globals.months.2": "Chwe", + "globals.months.3": "Maw", + "globals.months.4": "Ebr", + "globals.months.5": "Mai", + "globals.months.6": "Meh", + "globals.months.7": "Gorff", + "globals.months.8": "Awst", + "globals.months.9": "Med", + "globals.states.off": "Ffwrdd", + "globals.terms.all": "Pawb", + "globals.terms.analytics": "Dadansoddeg", + "globals.terms.bounce": "Wedi sboncio'n ôl", + "globals.terms.bounces": "Wedi sboncio'n ôl", + "globals.terms.campaign": "Ymgyrch | Ymgyrchoedd", + "globals.terms.campaigns": "Ymgyrchoedd", + "globals.terms.dashboard": "Dangosfwrdd", + "globals.terms.day": "Diwrnod | Diwrnodau", + "globals.terms.hour": "Awr | Oriau", + "globals.terms.list": "Rhestr | Rhestrau", + "globals.terms.lists": "Rhestrau", + "globals.terms.media": "Cyfryngau", + "globals.terms.messenger": "Negesydd | Negeseuwyr", + "globals.terms.messengers": "Negeseuwyr", + "globals.terms.minute": "Munud | Munudau", + "globals.terms.month": "Mis | Misoedd", + "globals.terms.second": "Eiliad | Eiliadau", + "globals.terms.settings": "Gosodiadau", + "globals.terms.subscriber": "Tanysgrifiwr | Tanysgrifwyr", + "globals.terms.subscribers": "Tanysgrifwyr", + "globals.terms.subscriptions": "Tanysgrifiad | Tanysgrifiadau", + "globals.terms.tag": "Tag | Tagiau", + "globals.terms.tags": "Tagiau", + "globals.terms.template": "Templed | Templedi", + "globals.terms.templates": "Templedi", + "globals.terms.tx": "Trafodion", + "globals.terms.year": "Blwyddyn | Blynyddoedd", + "import.alreadyRunning": "Mae rhywbeth wrthi'n cael ei fewngludo. Arhoswch iddo orffen neu ei stopio cyn rhoi cynnig arall arni.", + "import.blocklist": "Rhestr rwystro", + "import.csvDelim": "Amffinydd CSV", + "import.csvDelimHelp": "Yr amffinydd diofyn yw coma.", + "import.csvExample": "CSV crai enghreifftiol", + "import.csvFile": "Ffeil CSV neu ZIP", + "import.csvFileHelp": "Cliciwch neu lusgo'r ffeil CSV neu Zip yma", + "import.errorCopyingFile": "Gwall wrth gopïo ffeil: {error}", + "import.errorProcessingZIP": "Gwall wrth brosesu ffeil ZIP: {error}", + "import.errorStarting": "Gwall wrth ddechrau mewngludo: {error}", + "import.importDone": "Gorffen", + "import.importStarted": "Wedi dechrau mewngludo", + "import.instructions": "Cyfarwyddiadau", + "import.instructionsHelp": "Llwythwch ffeil CSV neu ZIP i fyny sy'n cynnwys un ffeil CSV er mwyn mewngludo tanysgrifwyr mewn swp. Dylai'r ffeil CSV gynnwys y penynnau a'r enwau colofnau canlynol. Dylai priodoleddau (dewisol) fod yn llinyn JSON dilys gyda dyfynnod bob ochr.", + "import.invalidDelim": "Ni ddylai'r amffinydd fod yn fwy nag un nod.", + "import.invalidFile": "Ffeil annilys: {error}", + "import.invalidMode": "Modd annilys", + "import.invalidParams": "Paramedrau annilys: {error}", + "import.invalidSubStatus": "Statws tanysgrifio annilys", + "import.listSubHelp": "Rhestrau y gellid tanysgrifio iddynt.", + "import.mode": "Modd", + "import.overwrite": "Disodli?", + "import.overwriteHelp": "Disodli enw", + "import.recordsCount": "{num} / {total} cofnod", + "import.stopImport": "Rhoi'r gorau i fewngludo", + "import.subscribe": "Tanysgrifio", + "import.title": "Mewngludo tanysgrifwyr", + "import.upload": "Llwytho i fyny", + "lists.confirmDelete": "Ydych chi'n siŵr? Nid yw hyn yn dileu tanysgrifwyr.", + "lists.confirmSub": "Cadarnhau tanysgrifiad i {name}", + "lists.invalidName": "Enw annilys", + "lists.newList": "Rhestr newydd", + "lists.optin": "Optio i mewn", + "lists.optinHelp": "Wrth optio i mewn ddwywaith", + "lists.optinTo": "Optio i mewn i {name}", + "lists.optins.double": "Optio i mewn ddwywaith", + "lists.optins.single": "Optio i mewn unwaith", + "lists.sendCampaign": "Anfon ymgyrch", + "lists.sendOptinCampaign": "Anfon ymgyrch optio i mewn", + "lists.type": "Math", + "lists.typeHelp": "Gall unrhyw un yn y byd danysgrifio i restrau cyhoeddus a gall eu henwau ymddangos ar dudalennau cyhoeddus fel y dudalen rheoli tanysgrifiadau.", + "lists.types.private": "Preifat", + "lists.types.public": "Cyhoeddus", + "logs.title": "Logos", + "maintenance.help": "Efallai y bydd yn cymryd amser i gwblhau rhai gweithredoedd yn dibynnu ar nifer y data.", + "maintenance.maintenance.unconfirmedOptins": "Tanysgrifiadau optio i mewn sydd heb eu cadarnhau", + "maintenance.olderThan": "Cyn", + "maintenance.title": "Cynnal a chadw", + "maintenance.unconfirmedSubs": "Tanysgrifiadau sydd heb eu cadarnhau a wnaed dros {name} diwrnod yn ôl.", + "media.errorReadingFile": "Gwall wrth ddarllen ffeil: {error}", + "media.errorResizing": "Gwall wrth addasu maint y llun: {error}", + "media.errorSavingThumbnail": "Gwall wrth arbed mân-lun: {error}", + "media.errorUploading": "Gwall wrth lwytho ffeil i fyny: {error}", + "media.invalidFile": "Ffeil annilys: {error}", + "media.title": "Cyfryngau", + "media.unsupportedFileType": "Math o ffeil nad yw'n cael ei gefnogi ({type})", + "media.upload": "Llwytho i fyny", + "media.uploadHelp": "Clicio neu lusgo un llun neu fwy yma", + "media.uploadImage": "Llwytho llun i fyny", + "menu.allCampaigns": "Pob ymgyrch", + "menu.allLists": "Pob rhestr", + "menu.allSubscribers": "Pob tanysgrifiwr", + "menu.dashboard": "Dangosfwrdd", + "menu.forms": "Ffurflenni", + "menu.import": "Mewngludo", + "menu.logs": "Cofnodion", + "menu.maintenance": "Cynnal a chadw", + "menu.media": "Cyfryngau", + "menu.newCampaign": "Creu newydd", + "menu.settings": "Gosodiadau", + "public.archiveEmpty": "Nid oes negeseuon wedi'u harchifo eto.", + "public.archiveTitle": "Archif y rhestr bostio", + "public.blocklisted": "Wedi tanysgrifio'n barhaol.", + "public.campaignNotFound": "Heb ddod o hyd i'r neges e-bost.", + "public.confirmOptinSubTitle": "Cadarnhau tanysgrifiad", + "public.confirmSub": "Cadarnhau tanysgrifiad", + "public.confirmSubInfo": "Rydych chi wedi cael eich ychwanegu at y rhestrau canlynol:", + "public.confirmSubTitle": "Cadarnhau", + "public.dataRemoved": "Mae eich tanysgrifiadau a'r holl ddata amdanoch chi wedi cael eu dileu.", + "public.dataRemovedTitle": "Wedi dileu data", + "public.dataSent": "Mae eich data wedi cael eu hanfon atoch chi dros e-bost fel atodiad.", + "public.dataSentTitle": "Wedi anfon data dros e-bost", + "public.errorFetchingCampaign": "Gwall wrth chwilio am y neges e-bost.", + "public.errorFetchingEmail": "Heb ddod o hyd i'r neges e-bost", + "public.errorFetchingLists": "Gwall wrth chwilio am y rhestrau. Rhowch gynnig arall arni.", + "public.errorProcessingRequest": "Gwall wrth brosesu'r cais. Rhowch gynnig arall arni.", + "public.errorTitle": "Gwall", + "public.invalidFeature": "Nid yw'r nodwedd ar gael.", + "public.invalidLink": "Dolen annilys", + "public.managePrefs": "Rheoli dewisiadau", + "public.managePrefsUnsub": "Dad-ddewiswch y rhestrau i ddad-danysgrifio.", + "public.noListsAvailable": "Nid oes rhestrau ar gael i danysgrifio iddynt.", + "public.noListsSelected": "Nid ydych wedi dewis rhestrau dilys i danysgrifio iddynt.", + "public.noSubInfo": "Nid oes tanysgrifiadau i'w cadarnhau.", + "public.noSubTitle": "Dim tanysgrifiadau", + "public.notFoundTitle": "Heb ddod o hyd i unrhyw beth", + "public.prefsSaved": "Mae eich dewisiadau wedi cael eu cadw.", + "public.privacyConfirmWipe": "Ydych chi'n siŵr eich bod chi am ddileu'r holl ddata am eich tanysgrifiad yn barhaol?", + "public.privacyExport": "Allgludo eich data", + "public.privacyExportHelp": "Bydd copi o'ch data yn cael ei anfon atoch dros e-bost.", + "public.privacyTitle": "Preifatrwydd a data", + "public.privacyWipe": "Dileu eich data", + "public.privacyWipeHelp": "Dileu eich holl danysgrifiadau a'ch data cysylltiedig yn barhaol.", + "public.sub": "Tanysgrifio", + "public.subConfirmed": "Wedi llwyddo i danysgrifio.", + "public.subConfirmedTitle": "Wedi cadarnhau", + "public.subName": "Enw (dewisol)", + "public.subNotFound": "Heb ddod o hyd i'r tanysgrifiad.", + "public.subOptinPending": "Rydyn ni wedi anfon e-bost atoch er mwyn i chi gadarnhau eich tanysgrifiad(au).", + "public.subPrivateList": "Rhestr breifat", + "public.subTitle": "Tanysgrifio", + "public.unsub": "Dad-danysgrifio", + "public.unsubFull": "Dad-danysgrifio o bob e-bost yn y dyfodol.", + "public.unsubHelp": "Ydych chi am dad-danysgrifio o'r rhestr bostio hon?", + "public.unsubTitle": "Dad-danysgrifio", + "public.unsubbedInfo": "Rydych chi wedi llwyddo i dad-danysgrifio.", + "public.unsubbedTitle": "Dad-danysgrifio", + "public.unsubscribeTitle": "Dad-danysgrifio o'r rhestr bostio", + "settings.appearance.adminHelp": "CSS personol ar gyfer yr UI gweinyddol.", + "settings.appearance.adminName": "Gweinyddwr", + "settings.appearance.customCSS": "CSS personol", + "settings.appearance.customJS": "JavaScript personol", + "settings.appearance.name": "Golwg", + "settings.appearance.publicHelp": "CSS a JavaScript personol ar gyfer y tudalennau cyhoeddus.", + "settings.appearance.publicName": "Cyhoeddus", + "settings.bounces.action": "Gweithred", + "settings.bounces.blocklist": "Rhestr rwystro", + "settings.bounces.count": "Nifer y pethau sydd wedi sboncio'n ôl", + "settings.bounces.countHelp": "Nifer y pethau sydd wedi sboncio'n ôl fesul tanysgrifiwr", + "settings.bounces.delete": "Dileu", + "settings.bounces.enable": "Galluogi proses sboncio'n ôl", + "settings.bounces.enableMailbox": "Galluogi blwch post negeseuon sydd wedi sboncio'n ôl", + "settings.bounces.enableSES": "Galluogi SES", + "settings.bounces.enableSendgrid": "Galluogi SendGrid", + "settings.bounces.enableWebhooks": "Galluogi bachau gwe sydd wedi sboncio'n ôl", + "settings.bounces.enabled": "Wedi galluogi", + "settings.bounces.folder": "Ffolder", + "settings.bounces.folderHelp": "Enw'r ffolder IMAP i'w sganio. ee: blwch derbyn.", + "settings.bounces.invalidScanInterval": "Dylai'r cyfnod sganio ar gyfer negeseuon sydd wedi sboncio'n ôl bara o leiaf 1 munud", + "settings.bounces.name": "Wedi sboncio'n ôl", + "settings.bounces.scanInterval": "Cyfnod sganio", + "settings.bounces.scanIntervalHelp": "Y cyfnod ar gyfer sganio'r blwch post ar gyfer negeseuon sydd wedi sboncio'n ôl (e ar gyfer eiliad", + "settings.bounces.sendgridKey": "Allwedd SendGrid", + "settings.bounces.type": "Math", + "settings.bounces.username": "Enw defnyddiwr", + "settings.confirmRestart": "Sicrhewch bod yr ymgyrchoedd byw wedi'u rhewi. Ailddechrau?", + "settings.duplicateMessengerName": "Enw negesydd dyblyg: {name}", + "settings.errorEncoding": "Gwall wrth amgodio gosodiadau: {error}", + "settings.errorNoSMTP": "Dylid galluogi o leiaf un rhwystr SMTP", + "settings.general.adminNotifEmails": "E-byst atgoffa gweinyddol", + "settings.general.adminNotifEmailsHelp": "Rhestr o gyfeiriadau e-byst sydd wedi cael eu gwahanu gan goma ac y dylid eu defnyddio i anfon negeseuon atgoffa gweinyddol fel diweddariadau mewngludo", + "settings.general.checkUpdates": "Gwirio ar gyfer diweddariadau", + "settings.general.checkUpdatesHelp": "Gwirio ar gyfer apiau newydd sy'n cael eu rhyddhau o bryd i'w gilydd.", + "settings.general.enablePublicArchive": "Galluogi archif rhestr bostio gyhoeddus", + "settings.general.enablePublicArchiveHelp": "Cyhoeddi ymgyrchoedd lle mae archifo wedi'i alluogi ar y wefan gyhoeddus.", + "settings.general.enablePublicSubPage": "Galluogi tudalen tanysgrifio gyhoeddus", + "settings.general.enablePublicSubPageHelp": "Dangos tudalen tanysgrifio gyhoeddus gyda'r holl restrau cyhoeddus y gall pobl danysgrifio iddynt.", + "settings.general.faviconURL": "URL Favicon", + "settings.general.faviconURLHelp": "Dangos URL llawn (dewisol) i'r favicon statig ar y gwedd defnyddiwr", + "settings.general.fromEmail": "E-bost 'gan' diofyn", + "settings.general.fromEmailHelp": "E-bost 'gan' diofyn i'w ddangos ar e-byst yr ymgyrch. Mae modd newid hyn ar gyfer pob ymgyrch.", + "settings.general.language": "Iaith", + "settings.general.logoURL": "URL logo", + "settings.general.logoURLHelp": "Dangos URL llawn (dewisol) i'r logo statig ar y gwedd defnyddiwr", + "settings.general.name": "Cyffredinol", + "settings.general.rootURL": "URL gwraidd", + "settings.general.rootURLHelp": "URL cyhoeddus y gosodiad (dim slaes llusg).", + "settings.general.sendOptinConfirm": "Anfon cadarnhad optio i mewn", + "settings.general.sendOptinConfirmHelp": "Anfon e-bost cadarnhau optio i mewn pan fydd tanysgrifwyr yn cofrestru drwy'r ffurflen gyhoeddus neu pan fyddant yn cael eu hychwanegu gan y gweinyddwr.", + "settings.general.siteName": "Enw'r wefan", + "settings.invalidMessengerName": "Enw negesydd annilys.", + "settings.mailserver.authProtocol": "Protocol dilysu", + "settings.mailserver.host": "Lletywr", + "settings.mailserver.hostHelp": "Cyfeiriad lletya'r gweinydd SMTP", + "settings.mailserver.idleTimeout": "Terfyn amser segur", + "settings.mailserver.idleTimeoutHelp": "Amser aros ar gyfer gweithgaredd newydd ar gysylltiad cyn ei gau a'i ddileu o'r gronfa (e ar gyfer eiliad", + "settings.mailserver.maxConns": "Uchafswm nifer y cysylltiadau", + "settings.mailserver.maxConnsHelp": "Uchafswm nifer y cysylltiadau cydamserol â'r gweinydd", + "settings.mailserver.password": "Cyfrinair", + "settings.mailserver.passwordHelp": "Pwyswch enter i'w newid", + "settings.mailserver.port": "Porth", + "settings.mailserver.portHelp": "Porth gweinydd SMTP", + "settings.mailserver.skipTLS": "Hepgor dilysiad TLS", + "settings.mailserver.skipTLSHelp": "Hepgor y broses wirio enw lletywr ar y dystysgrif TLS.", + "settings.mailserver.tls": "TLS", + "settings.mailserver.tlsHelp": "Amgryptiad TLS/SSL. Mae STARTTLS yn cael ei ddefnyddio'n aml.", + "settings.mailserver.username": "Enw defnyddiwr", + "settings.mailserver.waitTimeout": "Terfyn amser aros", + "settings.mailserver.waitTimeoutHelp": "Amser aros ar gyfer gweithgaredd newydd ar gysylltiad cyn ei gau a'i ddileu o'r gronfa (e ar gyfer eiliad", + "settings.media.provider": "Darparwr", + "settings.media.s3.bucket": "Bwced", + "settings.media.s3.bucketPath": "Llwybr bwced", + "settings.media.s3.bucketPathHelp": "Llwybr yn y bwced i lwytho ffeiliau i fyny. Yr opsiwn diofyn yw /", + "settings.media.s3.bucketType": "Math o fwced", + "settings.media.s3.bucketTypePrivate": "Preifat", + "settings.media.s3.bucketTypePublic": "Cyhoeddus", + "settings.media.s3.key": "Allwedd mynediad AWS", + "settings.media.s3.publicURL": "URL cyhoeddus personol (dewisol)", + "settings.media.s3.publicURLHelp": "Parth S3 personol i'w ddefnyddio ar gyfer dolenni delweddau yn lle'r URL cefn ôl S3 diofyn.", + "settings.media.s3.region": "Rhanbarth", + "settings.media.s3.secret": "Cyfrinach mynediad AWS", + "settings.media.s3.uploadExpiry": "Dyddiad dod i ben ar gyfer llwytho i fyny", + "settings.media.s3.uploadExpiryHelp": "(Dewisol) Nodwch y TTL (mewn eiliadau) ar gyfer yr URL a lofnodwyd ymlaen llaw. Dim ond yn berthnasol ar gyfer bwcedi preifat (e", + "settings.media.s3.url": "URL cefn ôl S3", + "settings.media.s3.urlHelp": "Dim ond ei newid os ydych yn defnyddio URL cefn ôl personol sy'n gydnaws â S3 fel Minio.", + "settings.media.title": "Cyfryngau sydd wedi'u llwytho i fyny", + "settings.media.upload.path": "Llwytho llwybr i fyny", + "settings.media.upload.pathHelp": "Llwybr i'r gyfarwyddiaeth lle bydd cyfryngau'n cael eu llwytho i fyny.", + "settings.media.upload.uri": "Llwytho URI i fyny", + "settings.media.upload.uriHelp": "Llwytho URI sy'n weledol i'r byd tu allan. Bydd y cyfryngau sy'n cael eu llwytho i fyny i'r upload_path yn hygyrch i'r cyhoedd dan {root_url}", + "settings.messengers.maxConns": "Uchafswm nifer y cysylltiadau", + "settings.messengers.maxConnsHelp": "Uchafswm nifer y cysylltiadau â'r gweinydd ar yr un pryd", + "settings.messengers.messageSaved": "Wedi arbed y gosodiadau. Wrthi'n llwytho'r ap eto...", + "settings.messengers.name": "Negeseuwyr", + "settings.messengers.nameHelp": "Ee: my-sms. Llythrennau a rhifau / dash.", + "settings.messengers.password": "Cyfrinair", + "settings.messengers.retries": "Ailgynigion", + "settings.messengers.retriesHelp": "Nifer o weithiau y cewch roi cynnig arall arni pan fydd neges yn methu", + "settings.messengers.skipTLSHelp": "Hepgor y broses o wirio enw'r lletywr ar y dystysgrif TLS", + "settings.messengers.timeout": "Terfyn amser segur", + "settings.messengers.timeoutHelp": "Amser aros ar gyfer gweithgarwch newydd ar gysylltiad cyn ei gau a'i ddileu o'r gronfa (e ar gyfer eiliad", + "settings.messengers.url": "URL", + "settings.messengers.urlHelp": "URL gwraidd y gweinydd anfon yn ôl.", + "settings.messengers.username": "Enw defnyddiwr", + "settings.needsRestart": "Wedi newid y gosodiadau. Rhewi'r holl ymgyrchoedd byw ac ailgychwyn yr ap", + "settings.performance.batchSize": "Maint y swp", + "settings.performance.batchSizeHelp": "Nifer y tanysgrifwyr y mae modd eu tynnu o'r gronfa ddata ar yr un pryd. Bydd pob iteriad yn tynnu tanysgrifwyr o'r gronfa ddata", + "settings.performance.concurrency": "Cydamseru", + "settings.performance.concurrencyHelp": "Uchafswm nifer y gweithwyr (llinynnau) a fydd yn ceisio anfon negeseuon yr un pryd.", + "settings.performance.maxErrThreshold": "Uchafswm nifer y gwallau", + "settings.performance.maxErrThresholdHelp": "Nifer y gwallau (ee: SMTP yn dod i ben wrth anfon e-bost) y dylai ymgyrch fyw eu goddef cyn cael ei rhewi ar gyfer ymchwiliad neu ymyrryd. Ei osod yn 0 er mwyn osgoi ei rhewi.", + "settings.performance.messageRate": "Cyfradd negeseuon", + "settings.performance.messageRateHelp": "Uchafswm nifer y negeseuon i'w hanfon bob eiliad fesul gweithiwr. Os yw'r cydredeg yn 10 a bod cyfradd y negeseuon yn 10, yna mae modd anfon 10x10-100 neges bob eiliad. Dylid addasu hyn", + "settings.performance.name": "Perfformiad", + "settings.performance.slidingWindow": "Cyfyngu ar y ffenestr llithro", + "settings.performance.slidingWindowDuration": "Hyd", + "settings.performance.slidingWindowDurationHelp": "Hyd y ffenestr llithro (m ar gyfer munud", + "settings.performance.slidingWindowHelp": "Cyfyngu ar nifer y negeseuon sy'n cael eu hanfon mewn cyfnod penodol. Ar ôl cyrraedd yr uchafswm", + "settings.performance.slidingWindowRate": "Uchafswm nifer y negeseuon", + "settings.performance.slidingWindowRateHelp": "Uchafswm nifer y negeseuon y mae modd eu hanfon mewn cyfnod penodol.", + "settings.privacy.allowBlocklist": "Caniatáu rhestrau rhwystro", + "settings.privacy.allowBlocklistHelp": "Caniatáu i danysgrifwyr dad-danysgrifio o'r holl restrau postio a rhoi eu hunain ar y rhestr rwystro?", + "settings.privacy.allowExport": "Caniatáu allgludo", + "settings.privacy.allowExportHelp": "Caniatáu i danysgrifwyr allgludo data sydd wedi'u casglu amdanynt?", + "settings.privacy.allowPrefs": "Caniatáu newid dewisiadau", + "settings.privacy.allowPrefsHelp": "Caniatáu i danysgrifwyr newid dewisiadau fel eu henw a pha restrau maent wedi tanysgrifio iddynt.", + "settings.privacy.allowWipe": "Caniatáu sgubo", + "settings.privacy.allowWipeHelp": "Caniatáu i danysgrifwyr ddileu eu hunain", + "settings.privacy.domainBlocklist": "Rhestr rhwystro parthau", + "settings.privacy.domainBlocklistHelp": "Nid oes gan gyfeiriadau e-bost yn y parthau hyn yr hawl i danysgrifio. Rhowch un parth i bob llinell", + "settings.privacy.individualSubTracking": "Olrhain tanysgrifwyr unigol", + "settings.privacy.individualSubTrackingHelp": "Olrhain nifer y tanysgrifwyr sy'n gweld ac yn clicio'r ymgyrch. Pan fydd wedi'i analluogi", + "settings.privacy.listUnsubHeader": "Cynnwys y pennawd 'Dad-danysgrifio o'r rhestr'", + "settings.privacy.listUnsubHeaderHelp": "Cynnwys penynnau dad-danysgrifio sy'n caniatáu i ddefnyddwyr dad-danysgrifio drwy glicio un botwm.", + "settings.privacy.name": "Preifatrwydd", + "settings.restart": "Ailgychwyn", + "settings.smtp.customHeaders": "Penynnau personol", + "settings.smtp.customHeadersHelp": "Ystod eang o bennynau e-bost i'w cynnwys mewn negeseuon a anfonir gan y gweinydd hwn. ee: [{\"\"X-Custom\"\": \"\"gwerth\"\"}", + "settings.smtp.enabled": "Wedi galluogi", + "settings.smtp.heloHost": "HELO enw lletywr", + "settings.smtp.heloHostHelp": "Dewisol. Mae rhai gweinyddion SMTP yn gofyn am FQDN yn yr Enw Lletywr. Fel rhagosodiad", + "settings.smtp.name": "SMTP", + "settings.smtp.retries": "Ailgynigion", + "settings.smtp.retriesHelp": "Faint o weithiau y gallwch roi cynnig arall arni pan fydd neges yn methu.", + "settings.smtp.sendTest": "Anfon e-bost", + "settings.smtp.setCustomHeaders": "Gosod pennyn personol", + "settings.smtp.testConnection": "Profi cysylltiad", + "settings.smtp.testEnterEmail": "Rhowch gyfrinair i'w brofi", + "settings.smtp.toEmail": "E-bost derbynnydd", + "settings.title": "Gosodiadau", + "settings.updateAvailable": "Mae diweddariad {version} newydd ar gael.", + "subscribers.advancedQuery": "Uwch", + "subscribers.advancedQueryHelp": "Mynegiad SQL rhannol i wneud ymholiad ynghylch priodoleddau tanysgrifiwr", + "subscribers.attribs": "Priodoleddau", + "subscribers.attribsHelp": "Mae priodoleddau'n cael eu diffinio fel map JSON", + "subscribers.blocklistedHelp": "Ni fydd tanysgrifwyr ar y rhestr rwystro byth yn derbyn unrhyw e-byst.", + "subscribers.confirmBlocklist": "Rhoi {num} tanysgrifiwr ar y rhestr rwystro?", + "subscribers.confirmDelete": "Dileu {num} tanysgrifiwr?", + "subscribers.confirmExport": "Allgludo {num} tanysgrifiwr?", + "subscribers.domainBlocklisted": "Wedi rhoi'r parth e-bost ar y rhestr rhwystro.", + "subscribers.downloadData": "Llwytho data i lawr", + "subscribers.email": "E-bost", + "subscribers.emailExists": "Mae'r e-bost hwn yn bodoli'n barod.", + "subscribers.errorBlocklisting": "Gwall wrth roi tanysgrifwyr ar y rhestr rwystro: {error}", + "subscribers.errorNoIDs": "Heb roi ID.", + "subscribers.errorNoListsGiven": "Heb roi rhestrau.", + "subscribers.errorPreparingQuery": "Gwall wrth baratoi ymholiad tanysgrifiwr: {error}", + "subscribers.errorSendingOptin": "Gwall wrth anfon e-bost optio i mewn.", + "subscribers.export": "Allgludo", + "subscribers.invalidAction": "Gweithred annilys.", + "subscribers.invalidEmail": "E-bost annilys.", + "subscribers.invalidJSON": "JSON annilys yn y priodoleddau.", + "subscribers.invalidName": "Enw annilys.", + "subscribers.listChangeApplied": "Wedi newid y rhestr.", + "subscribers.lists": "Rhestrau", + "subscribers.listsHelp": "Does dim modd dileu rhestrau y mae pobl wedi dad-danysgrifio iddynt.", + "subscribers.listsPlaceholder": "Rhestrau y mae modd tanysgrifio iddynt", + "subscribers.manageLists": "Rheoli rhestrau", + "subscribers.markUnsubscribed": "Marcio ei fod wedi dad-danysgrifio", + "subscribers.newSubscriber": "Tanysgrifiwr newydd", + "subscribers.numSelected": "Wedi dewis {num} tanysgrifiwr", + "subscribers.optinSubject": "Cadarnhau tanysgrifiadau", + "subscribers.preconfirm": "Cadarnhau tanysgrifiadau ymlaen llaw", + "subscribers.preconfirmHelp": "Ni ddylid anfon e-byst optio i mewn a marcio bod holl danysgrifiadau'r rhestr 'wedi tanysgrifio'.", + "subscribers.query": "Ymholiad", + "subscribers.queryPlaceholder": "E-bost neu enw", + "subscribers.reset": "Ailosod", + "subscribers.selectAll": "Dewis y cyfan {num}", + "subscribers.sendOptinConfirm": "Anfon cadarnhad optio i mewn", + "subscribers.sentOptinConfirm": "Wedi anfon cadarnhad optio i mewn", + "subscribers.status.blocklisted": "Wedi'i roi ar y rhestr rhwystro", + "subscribers.status.confirmed": "Wedi cadarnhau", + "subscribers.status.enabled": "Wedi galluogi", + "subscribers.status.subscribed": "Wedi tanysgrifio", + "subscribers.status.unconfirmed": "Heb gadarnhau", + "subscribers.status.unsubscribed": "Wedi dad-danysgrifio", + "subscribers.subscribersDeleted": "Wedi dileu {num} tanysgrifiwr", + "templates.cantDeleteDefault": "Does dim modd dileu templed diofyn neu dempled nad yw'n bodoli", + "templates.default": "Rhagosodiad", + "templates.dummyName": "Ymgyrch ffug", + "templates.dummySubject": "Pwnc ymgyrch ffug", + "templates.errorCompiling": "Gwall wrth lunio templed: {error}", + "templates.errorRendering": "Gwall wrth rendro neges: {error}", + "templates.fieldInvalidName": "Hyd annilys ar gyfer enw.", + "templates.makeDefault": "Rhagosod", + "templates.newTemplate": "Templed newydd", + "templates.placeholderHelp": "Dylai'r ddalfan {placeholder} ond ymddangos unwaith yn y templed.", + "templates.preview": "Rhagolwg", + "templates.rawHTML": "HTML crai", + "templates.subject": "Pwnc", + "users.login": "Mewngofnodi", + "users.logout": "Allgofnodi" } diff --git a/i18n/de.json b/i18n/de.json index 0d04ae5..83d29f4 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "Fehler beim Aktualisieren von {name}: {error}", "globals.messages.internalError": "Interner Serverfehler", "globals.messages.invalidData": "Ungültige Daten", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Ungültige ID", "globals.messages.invalidUUID": "Ungültige UUID", "globals.messages.missingFields": "Fehlende Felder: {name}", diff --git a/i18n/en.json b/i18n/en.json index e7114c7..2d8a3ae 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "Error updating {name}: {error}", "globals.messages.internalError": "Internal server error", "globals.messages.invalidData": "Invalid data", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Invalid ID(s)", "globals.messages.invalidUUID": "Invalid UUID(s)", "globals.messages.missingFields": "Missing field(s): {name}", diff --git a/i18n/es.json b/i18n/es.json index a41c4a3..117421b 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Error actualizando {name}: {error}", "globals.messages.internalError": "Error interno del servidor.", "globals.messages.invalidData": "Datos invalidos", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID inválido", "globals.messages.invalidUUID": "UUID inválido", "globals.messages.missingFields": "Cambpo(s) faltantes: {name}", diff --git a/i18n/fi.json b/i18n/fi.json index 6208305..8eb1d53 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Error updating {name}: {error}", "globals.messages.internalError": "Internal server error", "globals.messages.invalidData": "Invalid data", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Invalid ID(s)", "globals.messages.invalidUUID": "Invalid UUID(s)", "globals.messages.missingFields": "Missing field(s): {name}", diff --git a/i18n/fr.json b/i18n/fr.json index f0f130d..e604e08 100644 --- a/i18n/fr.json +++ b/i18n/fr.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Erreur lors de la mise à jour de {name} : {error}", "globals.messages.internalError": "Erreur interne du serveur", "globals.messages.invalidData": "Données invalides", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID invalide", "globals.messages.invalidUUID": "UUID invalide", "globals.messages.missingFields": "Champ(s) manquant(s) : {name}", diff --git a/i18n/hu.json b/i18n/hu.json index c9232a9..1d1a179 100644 --- a/i18n/hu.json +++ b/i18n/hu.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Hiba a frissítés során {name}: {error}", "globals.messages.internalError": "Belső Szerverhiba", "globals.messages.invalidData": "Érvénytelen adat", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Érvénytelen ID(s)", "globals.messages.invalidUUID": "Érvénytelen UUID(s)", "globals.messages.missingFields": "Hiányzó mező(k): {name}", diff --git a/i18n/it.json b/i18n/it.json index 0286e29..e2d5eae 100644 --- a/i18n/it.json +++ b/i18n/it.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Errore durante l'aggiornamento di {name}: {error}", "globals.messages.internalError": "Errore interno nel server", "globals.messages.invalidData": "Dati non validi", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID non valido", "globals.messages.invalidUUID": "UUID non valido", "globals.messages.missingFields": "Valore/i mancante/i: {name}", diff --git a/i18n/jp.json b/i18n/jp.json index 1dc5bce..cbc2e7b 100644 --- a/i18n/jp.json +++ b/i18n/jp.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "{name}更新エラー: {error}", "globals.messages.internalError": "内部サーバーエラー", "globals.messages.invalidData": "無効なデータ", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "無効なID", "globals.messages.invalidUUID": "無効なUUID", "globals.messages.missingFields": "フィールドがありません: {name}", diff --git a/i18n/ml.json b/i18n/ml.json index 4cd7d64..794affa 100644 --- a/i18n/ml.json +++ b/i18n/ml.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "{name} പുതുക്കുന്നതിൽ പിശകുണ്ടായി: {error}", "globals.messages.internalError": "സേർവറിനു തകരാറുപറ്റി", "globals.messages.invalidData": "അസാധുവായ വിവരം", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ഐഡി അസാധുവാണ്", "globals.messages.invalidUUID": "യുയുഐഡി അസാധുവാണ്", "globals.messages.missingFields": "വിട്ടുപോയ ഫീൽഡ്(കൾ): {name}", diff --git a/i18n/nl.json b/i18n/nl.json index 1669713..1578f58 100644 --- a/i18n/nl.json +++ b/i18n/nl.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Fout bij updaten {name}: {error}", "globals.messages.internalError": "Interne serverfout", "globals.messages.invalidData": "Ongeldige data", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Ongeldige ID(s)", "globals.messages.invalidUUID": "Ongeldige UUID(s)", "globals.messages.missingFields": "Ontbrekend(e) veld(en): {name}", diff --git a/i18n/pl.json b/i18n/pl.json index bddc09e..628893e 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Błąd podczas aktualizacji {name}: {error}", "globals.messages.internalError": "Internal server error", "globals.messages.invalidData": "Invalid data", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Nieprawidłowy iD", "globals.messages.invalidUUID": "Nieprawidłowy UUID", "globals.messages.missingFields": "Missing field(s): {name}", diff --git a/i18n/pt-BR.json b/i18n/pt-BR.json index f80c124..61c77b3 100644 --- a/i18n/pt-BR.json +++ b/i18n/pt-BR.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "Erro ao atualizar {name}: {error}", "globals.messages.internalError": "Erro no servidor", "globals.messages.invalidData": "Dados inválidos", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID inválido", "globals.messages.invalidUUID": "UUID inválido", "globals.messages.missingFields": "Campos ausente(s): {name}", diff --git a/i18n/pt.json b/i18n/pt.json index 2eecd25..d55fe2d 100644 --- a/i18n/pt.json +++ b/i18n/pt.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "Erro ao atualizar {name}: {error}", "globals.messages.internalError": "Erro interno no servidor", "globals.messages.invalidData": "Dados inválidos", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID inválido", "globals.messages.invalidUUID": "UUID inválido", "globals.messages.missingFields": "Campo(s) em falta: {name}", diff --git a/i18n/ro.json b/i18n/ro.json index 37910da..6c7a529 100644 --- a/i18n/ro.json +++ b/i18n/ro.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Eroare actualizare {nume}: {eroare}", "globals.messages.internalError": "Eroare server intern", "globals.messages.invalidData": "Date invalide", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID(uri) invalide", "globals.messages.invalidUUID": "UUID(uri) invalide", "globals.messages.missingFields": "Camuri lipsă: {nume}", diff --git a/i18n/ru.json b/i18n/ru.json index b91dafd..a3ed731 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "Ошибка обновления {name}: {error}", "globals.messages.internalError": "Внутренняя ошибка сервера", "globals.messages.invalidData": "Неверные данные", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Неверный ID", "globals.messages.invalidUUID": "Неверный UUID", "globals.messages.missingFields": "Отсутствующее поле (поля): {name}", diff --git a/i18n/tr.json b/i18n/tr.json index c2a34d6..f6d7550 100644 --- a/i18n/tr.json +++ b/i18n/tr.json @@ -147,6 +147,7 @@ "globals.days.4": "Per", "globals.days.5": "Cum", "globals.days.6": "Cmt", + "globals.days.7": "Sat", "globals.fields.createdAt": "Yaratılma", "globals.fields.description": "Açıklama", "globals.fields.id": "ID", @@ -170,6 +171,7 @@ "globals.messages.errorUpdating": "Hata güncellerken {name}: {error}", "globals.messages.internalError": "Sunucu hatası", "globals.messages.invalidData": "Geçersiz veri", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "Yanlış ID", "globals.messages.invalidUUID": "Yanlış UUID", "globals.messages.missingFields": "Eksik alan(lar): {name}", @@ -177,6 +179,9 @@ "globals.messages.passwordChange": "Değiştirmek için değer gir", "globals.messages.updated": "\"{name}\" güncellendi", "globals.months.1": "Oca", + "globals.months.10": "Eki", + "globals.months.11": "Kas", + "globals.months.12": "Ara", "globals.months.2": "Şub", "globals.months.3": "Mar", "globals.months.4": "Nis", @@ -185,9 +190,6 @@ "globals.months.7": "Tem", "globals.months.8": "Ağu", "globals.months.9": "Eyl", - "globals.months.10": "Eki", - "globals.months.11": "Kas", - "globals.months.12": "Ara", "globals.states.off": "Off", "globals.terms.all": "All", "globals.terms.analytics": "Analitik", diff --git a/i18n/vi.json b/i18n/vi.json index d480e98..6f5754b 100644 --- a/i18n/vi.json +++ b/i18n/vi.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "Lỗi khi cập nhật {name}: {error}", "globals.messages.internalError": "Lỗi máy chủ nội bộ", "globals.messages.invalidData": "Dữ liệu không hợp lệ", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID(s) không hợp lệ", "globals.messages.invalidUUID": " UUID(s) không hợp lệ", "globals.messages.missingFields": "Lỗi field(s): {name}", diff --git a/i18n/zh-CN.json b/i18n/zh-CN.json index d256357..23fd11f 100644 --- a/i18n/zh-CN.json +++ b/i18n/zh-CN.json @@ -170,6 +170,7 @@ "globals.messages.errorUpdating": "更新 {name} 时出错:{error}", "globals.messages.internalError": "内部服务器错误", "globals.messages.invalidData": "无效数据", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID 无效", "globals.messages.invalidUUID": "无效的 UUID", "globals.messages.missingFields": "缺少字段:{name}", diff --git a/i18n/zh-TW.json b/i18n/zh-TW.json index 3166187..cdfac47 100644 --- a/i18n/zh-TW.json +++ b/i18n/zh-TW.json @@ -171,6 +171,7 @@ "globals.messages.errorUpdating": "更新{name} 時出錯:{error}", "globals.messages.internalError": "內部服務器錯誤", "globals.messages.invalidData": "無效數據", + "globals.messages.invalidFields": "Invalid fields: {name}", "globals.messages.invalidID": "ID 無效", "globals.messages.invalidUUID": "無效的UUID", "globals.messages.missingFields": "缺少字段:{name}", diff --git a/internal/core/subscribers.go b/internal/core/subscribers.go index 3785a1c..2dc386c 100644 --- a/internal/core/subscribers.go +++ b/internal/core/subscribers.go @@ -34,7 +34,8 @@ func (c *Core) GetSubscriber(id int, uuid, email string) (models.Subscriber, err } if len(out) == 0 { return models.Subscriber{}, echo.NewHTTPError(http.StatusBadRequest, - c.i18n.Ts("globals.messages.notFound", "name", "{globals.terms.subscriber}")) + c.i18n.Ts("globals.messages.notFound", "name", + fmt.Sprintf("{globals.terms.subscriber} (%d: %s%s)", id, uuid, email))) } if err := out.LoadLists(c.q.GetSubscriberListsLazy); err != nil { c.log.Printf("error loading subscriber lists: %v", err) diff --git a/models/models.go b/models/models.go index ff70683..2d846a1 100644 --- a/models/models.go +++ b/models/models.go @@ -347,6 +347,10 @@ type Bounce struct { // TxMessage represents an e-mail campaign. type TxMessage struct { + SubscriberEmails []string `json:"subscriber_emails"` + SubscriberIDs []int `json:"subscriber_ids"` + + // Deprecated. SubscriberEmail string `json:"subscriber_email"` SubscriberID int `json:"subscriber_id"`