Mask passwords on the UI accurately with the actual passwords length.

This PR masks all the password fields in the UI with a pseudo dot character
retaining the rune length of the original password so that the password
fields on the UI appear to be containing the entered value as-is.

The earlier implementation would revert to a fixed length dummy password
confusing certain users and making it look like the password they entered
wasn't being saved.
This commit is contained in:
Kailash Nadh 2023-07-21 23:46:46 +05:30
parent 0be5901df7
commit a62851915c
26 changed files with 162 additions and 39 deletions

View file

@ -10,6 +10,7 @@ import (
"strings"
"syscall"
"time"
"unicode/utf8"
"github.com/gofrs/uuid"
"github.com/jmoiron/sqlx/types"
@ -21,6 +22,8 @@ import (
"github.com/labstack/echo/v4"
)
const pwdMask = "•"
type aboutHost struct {
OS string `json:"os"`
OSRelease string `json:"os_release"`
@ -57,17 +60,17 @@ func handleGetSettings(c echo.Context) error {
// Empty out passwords.
for i := 0; i < len(s.SMTP); i++ {
s.SMTP[i].Password = ""
s.SMTP[i].Password = strings.Repeat(pwdMask, utf8.RuneCountInString(s.SMTP[i].Password))
}
for i := 0; i < len(s.BounceBoxes); i++ {
s.BounceBoxes[i].Password = ""
s.BounceBoxes[i].Password = strings.Repeat(pwdMask, utf8.RuneCountInString(s.BounceBoxes[i].Password))
}
for i := 0; i < len(s.Messengers); i++ {
s.Messengers[i].Password = ""
s.Messengers[i].Password = strings.Repeat(pwdMask, utf8.RuneCountInString(s.Messengers[i].Password))
}
s.UploadS3AwsSecretAccessKey = ""
s.SendgridKey = ""
s.SecurityCaptchaSecret = ""
s.UploadS3AwsSecretAccessKey = strings.Repeat(pwdMask, utf8.RuneCountInString(s.UploadS3AwsSecretAccessKey))
s.SendgridKey = strings.Repeat(pwdMask, utf8.RuneCountInString(s.SendgridKey))
s.SecurityCaptchaSecret = strings.Repeat(pwdMask, utf8.RuneCountInString(s.SecurityCaptchaSecret))
return c.JSON(http.StatusOK, okResp{s})
}

View file

@ -77,8 +77,6 @@ import BounceSettings from './settings/bounces.vue';
import MessengerSettings from './settings/messengers.vue';
import AppearanceSettings from './settings/appearance.vue';
const dummyPassword = ' '.repeat(8);
export default Vue.extend({
components: {
GeneralSettings,
@ -113,10 +111,13 @@ export default Vue.extend({
const form = JSON.parse(JSON.stringify(this.form));
// SMTP boxes.
let hasDummy = '';
for (let i = 0; i < form.smtp.length; i += 1) {
// If it's the dummy UI password placeholder, ignore it.
if (form.smtp[i].password === dummyPassword) {
if (this.isDummy(form.smtp[i].password)) {
form.smtp[i].password = '';
} else if (this.hasDummy(form.smtp[i].password)) {
hasDummy = `smtp #${i + 1}`;
}
if (form.smtp[i].strEmailHeaders && form.smtp[i].strEmailHeaders !== '[]') {
@ -129,30 +130,45 @@ export default Vue.extend({
// Bounces boxes.
for (let i = 0; i < form['bounce.mailboxes'].length; i += 1) {
// If it's the dummy UI password placeholder, ignore it.
if (form['bounce.mailboxes'][i].password === dummyPassword) {
if (this.isDummy(form['bounce.mailboxes'][i].password)) {
form['bounce.mailboxes'][i].password = '';
} else if (this.hasDummy(form['bounce.mailboxes'][i].password)) {
hasDummy = `bounce #${i + 1}`;
}
}
if (form['upload.s3.aws_secret_access_key'] === dummyPassword) {
if (this.isDummy(form['upload.s3.aws_secret_access_key'])) {
form['upload.s3.aws_secret_access_key'] = '';
} else if (this.hasDummy(form['upload.s3.aws_secret_access_key'])) {
hasDummy = 's3';
}
if (form['bounce.sendgrid_key'] === dummyPassword) {
if (this.isDummy(form['bounce.sendgrid_key'])) {
form['bounce.sendgrid_key'] = '';
} else if (this.hasDummy(form['bounce.sendgrid_key'])) {
hasDummy = 'sendgrid';
}
if (form['security.captcha_secret'] === dummyPassword) {
if (this.isDummy(form['security.captcha_secret'])) {
form['security.captcha_secret'] = '';
} else if (this.hasDummy(form['security.captcha_secret'])) {
hasDummy = 'captcha';
}
for (let i = 0; i < form.messengers.length; i += 1) {
// If it's the dummy UI password placeholder, ignore it.
if (form.messengers[i].password === dummyPassword) {
if (this.isDummy(form.messengers[i].password)) {
form.messengers[i].password = '';
} else if (this.hasDummy(form.messengers[i].password)) {
hasDummy = `messenger #${i + 1}`;
}
}
if (hasDummy) {
this.$utils.toast(this.$t('globals.messages.passwordChangeFull', { name: hasDummy }), 'is-danger');
return false;
}
// Domain blocklist array from multi-line strings.
form['privacy.domain_blocklist'] = form['privacy.domain_blocklist'].split('\n').map((v) => v.trim().toLowerCase()).filter((v) => v !== '');
@ -181,6 +197,8 @@ export default Vue.extend({
}, () => {
this.isLoading = false;
});
return false;
},
getSettings() {
@ -191,30 +209,8 @@ export default Vue.extend({
// Serialize the `email_headers` array map to display on the form.
for (let i = 0; i < d.smtp.length; i += 1) {
d.smtp[i].strEmailHeaders = JSON.stringify(d.smtp[i].email_headers, null, 4);
// The backend doesn't send passwords, so add a dummy so that
// the password looks filled on the UI.
d.smtp[i].password = dummyPassword;
}
for (let i = 0; i < d['bounce.mailboxes'].length; i += 1) {
// The backend doesn't send passwords, so add a dummy so that
// the password looks filled on the UI.
d['bounce.mailboxes'][i].password = dummyPassword;
}
for (let i = 0; i < d.messengers.length; i += 1) {
// The backend doesn't send passwords, so add a dummy so that it
// the password looks filled on the UI.
d.messengers[i].password = dummyPassword;
}
if (d['upload.provider'] === 's3') {
d['upload.s3.aws_secret_access_key'] = dummyPassword;
}
d['bounce.sendgrid_key'] = dummyPassword;
d['security.captcha_secret'] = dummyPassword;
// Domain blocklist array to multi-line string.
d['privacy.domain_blocklist'] = d['privacy.domain_blocklist'].join('\n');
@ -227,6 +223,14 @@ export default Vue.extend({
});
});
},
isDummy(pwd) {
return !pwd || (pwd.match(/•/g) || []).length === pwd.length;
},
hasDummy(pwd) {
return pwd.includes('•');
},
},
computed: {

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Servei desconegut",
"bounces.view": "Veure rebots",
"campaigns.addAltText": "Afegeix un missatge de text pla alternatiu",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Arxiu",
"campaigns.archiveEnable": "Publica a l'arxiu públic",
"campaigns.archiveHelp": "Publica (en curs, aturada, finalitzada) el missatge de campanya a l'arxiu públic ",
"campaigns.archiveMeta": "Metadades de la campanya",
"campaigns.archiveMetaHelp": "Dades del subscriptor de prova per ser usat en el missatge públic que inclou nom, correu electrònic i qualsevol atribut opcional emprat en el missatge de campanya o plantilla.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "No es pot actualitzar una campanya en curs o ja finalitzada.",
"campaigns.clicks": "Clics",
"campaigns.confirmDelete": "Esborra {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Falten camps: {name}",
"globals.messages.notFound": "No s'ha trobat {name} ",
"globals.messages.passwordChange": "Introduïu un valor per canviar",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" actualitzat",
"globals.months.1": "gen.",
"globals.months.10": "oct.",
@ -438,6 +441,8 @@
"settings.media.s3.url": "URL del backend S3",
"settings.media.s3.urlHelp": "Canvia només si fas servir un backend personalitzat compatible amb S3 com Minio.",
"settings.media.title": "Càrrega de mèdia",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Ruta de càrrega",
"settings.media.upload.pathHelp": "Ruta al directori on es carregaran els mèdia.",
"settings.media.upload.uri": "Carrega URI",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Neznámá služba.",
"bounces.view": "Zobrazit převzetí",
"campaigns.addAltText": "Přidat alternativní zprávu ve formátu prostého textu",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archiv",
"campaigns.archiveEnable": "Zveřejnit ve veřejném archivu",
"campaigns.archiveHelp": "Zveřejnit (bežící, pozastavenou, dokončenou) zprávu kampaně ve veřejném archivu",
"campaigns.archiveMeta": "Metadata kampaně",
"campaigns.archiveMetaHelp": "Použít prázdná data přihlášených ve veřejné zpráve včetně jména, emailu a jiných volitelných atributů použitých ve zprávách kampaně nebo šablonách.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Nelze aktualizovat spuštěnou nebo dokončenou kampaň.",
"campaigns.clicks": "Klepnutí",
"campaigns.confirmDelete": "Odstranit {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Chybějící pole: {name}",
"globals.messages.notFound": "{name} nebyl nalezen",
"globals.messages.passwordChange": "Zadejte hodnotu ke změně",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" aktualizován",
"globals.months.1": "Led",
"globals.months.10": "Říj",
@ -438,6 +441,8 @@
"settings.media.s3.url": "Adresa URL pro S3 backend",
"settings.media.s3.urlHelp": "Lze změnit, pouze pokud se použije S3 kompatibilní backend, jako je Minio.",
"settings.media.title": "Odeslání médií",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Cesta odeslání",
"settings.media.upload.pathHelp": "Cesta k adresáři, kam se odešlou média.",
"settings.media.upload.uri": "URI odeslání",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Gwasanaeth anhysbys.",
"bounces.view": "Gweld beth sydd wedi sboncio",
"campaigns.addAltText": "Ychwanegu neges destun blaen",
"campaigns.addAttachments": "Add attachments",
"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.attachments": "Attachments",
"campaigns.cantUpdate": "Does dim modd diweddaru ymgyrch fyw neu ymgyrch sydd wedi dod i ben.",
"campaigns.clicks": "Cliciau",
"campaigns.confirmDelete": "Dileu {name}",
@ -181,6 +183,7 @@
"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.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "Wedi diweddaru “{name}”",
"globals.months.1": "Ion",
"globals.months.10": "Hyd",
@ -438,6 +441,8 @@
"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.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"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",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Unbekannter Dienst.",
"bounces.view": "Bounces anzeigen",
"campaigns.addAltText": "Füge eine alternative Nachricht in unformatierten Text hinzu (falls HTML nicht angezeigt werden kann).",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archiv",
"campaigns.archiveEnable": "Im öffentlichen Archiv veröffentlichen",
"campaigns.archiveHelp": "Veröffentliche die Nachricht (laufende, pausierte, beendete) der Kampagne im öffentlichen Archiv.",
"campaigns.archiveMeta": "Kampagne Metadaten",
"campaigns.archiveMetaHelp": "Dummy-Abonnentendaten, die in der öffentlichen Nachricht verwendet werden sollen, einschließlich Name, E-Mail und alle optionalen Attribute, die in der Kampagnennachricht oder -vorlage verwendet werden.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Eine laufende oder abgeschlossene Kampagne kann nicht geändert werden.",
"campaigns.clicks": "Klicks",
"campaigns.confirmDelete": "Lösche {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Fehlende Felder: {name}",
"globals.messages.notFound": "{name} nicht gefunden",
"globals.messages.passwordChange": "Gib dein Passwort für die Änderung ein",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" aktualisiert",
"globals.months.1": "Jan",
"globals.months.10": "Okt",
@ -438,6 +441,8 @@
"settings.media.s3.url": "S3 Backend-URL",
"settings.media.s3.urlHelp": "Nur bei Verwendungen eines eigenen S3-kompatiblen Backends (wie Minio) ändern.",
"settings.media.title": "Medien Uploads",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Upload Pfad",
"settings.media.upload.pathHelp": "Pfad zum Upload Verzeichnis.",
"settings.media.upload.uri": "Upload URI",

View file

@ -18,12 +18,12 @@
"bounces.view": "View bounces",
"campaigns.addAltText": "Add alternate plain text message",
"campaigns.addAttachments": "Add attachments",
"campaigns.attachments": "Attachments",
"campaigns.archive": "Archive",
"campaigns.archiveEnable": "Publish to public archive",
"campaigns.archiveHelp": "Publish (running, paused, finished) the campaign message on the public archive.",
"campaigns.archiveMeta": "Campaign metadata",
"campaigns.archiveMetaHelp": "Dummy subscriber data to use in the public message including name, email, and any optional attributes used in the campaign message or template.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Cannot update a running or a finished campaign.",
"campaigns.clicks": "Clicks",
"campaigns.confirmDelete": "Delete {name}",
@ -183,6 +183,7 @@
"globals.messages.missingFields": "Missing field(s): {name}",
"globals.messages.notFound": "{name} not found",
"globals.messages.passwordChange": "Enter a value to change",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" updated",
"globals.months.1": "Jan",
"globals.months.10": "Oct",
@ -436,9 +437,9 @@
"settings.media.s3.url": "S3 backend URL",
"settings.media.s3.urlHelp": "Only change if using a custom S3 compatible backend like Minio.",
"settings.media.title": "Media uploads",
"settings.media.upload.path": "Upload path",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Upload path",
"settings.media.upload.pathHelp": "Path to the directory where media will be uploaded.",
"settings.media.upload.uri": "Upload URI",
"settings.media.upload.uriHelp": "Upload URI that is visible to the outside world. The media uploaded to upload_path will be publicly accessible under {root_url}, for instance, https://listmonk.yoursite.com/uploads.",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Servicio desconocido.",
"bounces.view": "Ver rebotes",
"campaigns.addAltText": "Agregar mensaje en texto plano alternativo",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archivo",
"campaigns.archiveEnable": "Hacer el archivo público",
"campaigns.archiveHelp": "Publicar los mensajes de las campañas (en marcha, pausadas y terminadas) en el archivo público.",
"campaigns.archiveMeta": "Metadata de la campaña",
"campaigns.archiveMetaHelp": "Información de suscripción de ejemplo (por defecto) para ser usada en el mensaje público incluido nombre, correo electrónico, o cualquier valor accesible mediante atributos `{}` opcionales tanto en el mensaje de la campaña como en la plantilla.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "No es posible actualizar una campaña iniciada o finalizada.",
"campaigns.clicks": "Clics",
"campaigns.confirmDelete": "Eliminar {name}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "Falta el campo(s): {name}",
"globals.messages.notFound": "{name} no encontrado",
"globals.messages.passwordChange": "Ingresar una contraseña para cambiar",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" actualizado",
"globals.months.1": "Enero",
"globals.months.10": "Octubre",
@ -439,6 +442,8 @@
"settings.media.s3.url": "URL de API de S3",
"settings.media.s3.urlHelp": "Cambiar únicamente si se utiliza un servicio S3 personalizado (por ejemplo MinIO).",
"settings.media.title": "Cargas multimedia",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Ruta de carga",
"settings.media.upload.pathHelp": "Ruta o prefijo donde los archivos seránn cargados.",
"settings.media.upload.uri": "URI de carga",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Tuntematon palvelu.",
"bounces.view": "Näytä epäonnistuneet toimitukset",
"campaigns.addAltText": "Lisää vaihtoehtoinen tekstimuotoinen viesti",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archive",
"campaigns.archiveEnable": "Publish to public archive",
"campaigns.archiveHelp": "Publish (running, paused, finished) the campaign message on the public archive.",
"campaigns.archiveMeta": "Campaign metadata",
"campaigns.archiveMetaHelp": "Dummy subscriber data to use in the public message including name, email, and any optional attributes used in the campaign message or template.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Käynnissä olevaa tai päättynyttä kampanjaa ei voi päivittää.",
"campaigns.clicks": "Klikkaukset",
"campaigns.confirmDelete": "Poista {name}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "Missing field(s): {name}",
"globals.messages.notFound": "{name} not found",
"globals.messages.passwordChange": "Enter a value to change",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" updated",
"globals.months.1": "Jan",
"globals.months.10": "Oct",
@ -439,6 +442,8 @@
"settings.media.s3.url": "S3 backend URL",
"settings.media.s3.urlHelp": "Only change if using a custom S3 compatible backend like Minio.",
"settings.media.title": "Media uploads",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Upload path",
"settings.media.upload.pathHelp": "Path to the directory where media will be uploaded.",
"settings.media.upload.uri": "Upload URI",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Service inconnu.",
"bounces.view": "Voir les rebonds",
"campaigns.addAltText": "Ajouter un message alternatif en texte brut",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archive",
"campaigns.archiveEnable": "Publier dans l'archive publique",
"campaigns.archiveHelp": "Publier (en cours, en pause, terminé) le message de la campagne sur l'archive publique.",
"campaigns.archiveMeta": "Métadonnées de la campagne",
"campaigns.archiveMetaHelp": "Données d'abonné fictives à utiliser dans le message public, notamment le nom, l'adresse électronique et tout attribut facultatif utilisé dans le message ou le modèle de la campagne.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Impossible de mettre à jour une campagne en cours ou terminée.",
"campaigns.clicks": "Clics",
"campaigns.confirmDelete": "Supprimer la campagne {name}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "Champ(s) manquant(s) : {name}",
"globals.messages.notFound": "{name} introuvable",
"globals.messages.passwordChange": "Entrez un nouveau mot de passe pour en changer",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "Mise à jour de \"{name}\"",
"globals.months.1": "jan.",
"globals.months.10": "oct.",
@ -439,6 +442,8 @@
"settings.media.s3.url": "URL du 'backend' S3",
"settings.media.s3.urlHelp": "Ne changez que si vous utilisez un 'backend' personnalisé compatible S3 comme Minio.",
"settings.media.title": "Mise en ligne de fichiers",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Emplacement d'envoi des fichiers",
"settings.media.upload.pathHelp": "Chemin vers le répertoire où les médias seront mis en ligne",
"settings.media.upload.uri": "URI d'envoi des fichiers",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Ismeretlen szolgáltatás.",
"bounces.view": "Visszapattanások megtekintése",
"campaigns.addAltText": "Alternatív egyszerű szöveges üzenet hozzáadása",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archívum",
"campaigns.archiveEnable": "Nyilvános archívumba mentés",
"campaigns.archiveHelp": "A kampány nyilvános archívumba mentése, közzététele.",
"campaigns.archiveMeta": "Kapány metaadat",
"campaigns.archiveMetaHelp": "A nyilvánosan közzétett kampányüzenetbe helyettesítendő adatok (pl. név, e-mail cím, és amiket a sablon használ).",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Nem lehet frissíteni futó vagy befejezett kampányt.",
"campaigns.clicks": "Kattintások",
"campaigns.confirmDelete": "Kampány törlése: {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Hiányzó mező(k): {name}",
"globals.messages.notFound": "{name} nem található",
"globals.messages.passwordChange": "Adja meg az új jelszót",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" frissítve",
"globals.months.1": "Jan",
"globals.months.10": "Okt",
@ -438,6 +441,8 @@
"settings.media.s3.url": "S3 backend URL",
"settings.media.s3.urlHelp": "Csak akkor módosítsa, ha egyéni S3-kompatibilis hátteret használ, mint például a Minio.",
"settings.media.title": "Média",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Könyvtár",
"settings.media.upload.pathHelp": "A feltöltött fájlok célkönyvtára.",
"settings.media.upload.uri": "Nyilvános URI",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Servizio sconosciuto.",
"bounces.view": "Visualizza i rimbalzi",
"campaigns.addAltText": "Aggiungere un messaggio sostitutivo in testo semplice",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archivio",
"campaigns.archiveEnable": "Rendere pubblico l'archivio",
"campaigns.archiveHelp": "Pubblicare i messagi delle campagne (avviate, pausate, finite) nel archivio pubblico.",
"campaigns.archiveMeta": "Metadati della campagna",
"campaigns.archiveMetaHelp": "Dati di essempio di suscrizioni per essere usate nei messagi publici, inclossi nome, posta elettronica, e qualche altro attributo ozionale `{}` che sia fatto servire nell messagio della campagna o pure della sagoma.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Impossibile aggiornare una campagna in corso o già effettuata.",
"campaigns.clicks": "Clic",
"campaigns.confirmDelete": "Cancellare {nome}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "Valore/i mancante/i: {name}",
"globals.messages.notFound": "{name} introvabile",
"globals.messages.passwordChange": "Inserisci un valore da modificare",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" aggiornato",
"globals.months.1": "Gen",
"globals.months.10": "Ott",
@ -439,6 +442,8 @@
"settings.media.s3.url": "S3 backend URL",
"settings.media.s3.urlHelp": "Modifficare soltanto se stai utilizando uno backend compatibile con S3, ad essempio Minio.",
"settings.media.title": "Caricamento dei media",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Percorso del caricamento",
"settings.media.upload.pathHelp": "Percorso verso il repertorio dove i media saranno caricati.",
"settings.media.upload.uri": "URI del caricamento",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "不明のサービス。",
"bounces.view": "バウンスビュー",
"campaigns.addAltText": "代替のプレーンテキストメッセージを追加する",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "アーカイブ",
"campaigns.archiveEnable": "公開アーカイブに発行する",
"campaigns.archiveHelp": "公開アーカイブにキャンペーンメッセージを発行(実行中, 停止された, 終わりましたキャンペーン全部含めて)。",
"campaigns.archiveMeta": "キャンペーンメタデータ",
"campaigns.archiveMetaHelp": "キャンペーンのメッセージやテンプレートに使う偽データ(名やメールアドレスや設定)。",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "実行中又は終了しているキャンペーンの更新はできません。",
"campaigns.clicks": "クリック",
"campaigns.confirmDelete": "削除 {name}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "フィールドがありません: {name}",
"globals.messages.notFound": "{name} が見つかりません。",
"globals.messages.passwordChange": "変更するには値を入力",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" 更新済み",
"globals.months.1": "1月",
"globals.months.10": "10月",
@ -439,6 +442,8 @@
"settings.media.s3.url": "S3バックエンドURL",
"settings.media.s3.urlHelp": "MinioのようなS3互換のカスタムバックエンドを使用する場合のみ変更。",
"settings.media.title": "メディアアップロード",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "パスアップロード",
"settings.media.upload.pathHelp": "メディアをアップロードするディレクトリへのパス",
"settings.media.upload.uri": "URIアップロード",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "അറിയാത്ത സേവനം",
"bounces.view": "ബൗൺസായവ കാണുക",
"campaigns.addAltText": "ബദൽ സന്ദേശം ചേർക്കുക",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "ആർക്കൈവ്",
"campaigns.archiveEnable": "പൊതു ആർക്കൈവിൽ പ്രസിദ്ധീകരിക്കുക",
"campaigns.archiveHelp": "പ്രചാരണ സന്ദേശം (റൺ ചെയ്യുന്ന, താൽക്കാലികമായി നിർത്തിയ, പൂർത്തിയായ) പൊതു ആർക്കൈവിൽ പ്രസിദ്ധീകരിക്കുക.",
"campaigns.archiveMeta": "കാമ്പെയ്‌ൻ മെറ്റാഡാറ്റ",
"campaigns.archiveMetaHelp": "പേര്, ഇമെയിൽ, പ്രചാരണ സന്ദേശത്തിലോ ടെംപ്ലേറ്റിലോ ഉപയോഗിക്കുന്ന ഏതെങ്കിലും ഓപ്ഷണൽ ആട്രിബ്യൂട്ടുകൾ എന്നിവയുൾപ്പെടെ പൊതു സന്ദേശത്തിൽ ഉപയോഗിക്കാനുള്ള ഡമ്മി സബ്സ്ക്രൈബർ ഡാറ്റ.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "ഇപ്പോൾ നടന്നുകൊണ്ടിരിയ്ക്കുന്നതോ, അവസാനിച്ചതോ ആയ ക്യാമ്പേയ്ൻ പുതുക്കാനാകില്ല.",
"campaigns.clicks": "ക്ലീക്കുകൾ",
"campaigns.confirmDelete": "{name} നീക്കം ചെയ്യുക",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "വിട്ടുപോയ ഫീൽഡ്(കൾ): {name}",
"globals.messages.notFound": "{name} കണ്ടെത്തിയില്ല",
"globals.messages.passwordChange": "മാറ്റം വരുത്തേണ്ട വില രേഖപ്പെടുത്തുക",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" പുതുക്കി",
"globals.months.1": "ജനുവരി",
"globals.months.10": "ഒക്ടോബർ",
@ -438,6 +441,8 @@
"settings.media.s3.url": "S3 വിലാസം",
"settings.media.s3.urlHelp": "Minio പോലെയുള്ള ഒരു ഇഷ്‌ടാനുസൃത S3 അനുയോജ്യമായ ബാക്കെൻഡ് ഉപയോഗിക്കുകയാണെങ്കിൽ മാത്രം മാറ്റുക.",
"settings.media.title": "മീഡിയാ അപ്ലോഡുകൾ",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "അപ്ലോഡ് പാത്ത്",
"settings.media.upload.pathHelp": "മീഡിയ അപ്ലോഡ് ചെയ്യുന്നതിനുള്ള ഡയറക്ടറിയിലേക്കുള്ള പാത്ത്.",
"settings.media.upload.uri": "അപ്ലോഡ് യൂ. ആർ. ഐ",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Onbekende service.",
"bounces.view": "Zie bounces",
"campaigns.addAltText": "Voeg alternatieve tekst zonder opmaak toe",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archiveren",
"campaigns.archiveEnable": "Publiceren naar publiek archief",
"campaigns.archiveHelp": "Publiceer (lopende, gepauzeerde, afgeronde) het campange bericht naar het publiek archief.",
"campaigns.archiveMeta": "Campagne metadata",
"campaigns.archiveMetaHelp": "Dummy subscriber data to use in the public message including name, email, and any optional attributes used in the campaign message or template.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Kan een lopende of afgelopen campagne niet updaten.",
"campaigns.clicks": "Kliks",
"campaigns.confirmDelete": "Verwijder {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Ontbrekend(e) veld(en): {name}",
"globals.messages.notFound": "{name} niet gevonden",
"globals.messages.passwordChange": "Geef een nieuw wachtwoord in",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" geüpdatet",
"globals.months.1": "Jan",
"globals.months.10": "Okt",
@ -438,6 +441,8 @@
"settings.media.s3.url": "S3 backend URL",
"settings.media.s3.urlHelp": "Enkel veranderen als je een custom S3-compatibele backend gebruikt zoals Minio.",
"settings.media.title": "Media uploads",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Upload pad",
"settings.media.upload.pathHelp": "Pad naar de map waar media geüpload zal worden.",
"settings.media.upload.uri": "Upload URI",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Nieznane usługi.",
"bounces.view": "Zobacz odbicia",
"campaigns.addAltText": "Dodaj alternatywną wiadomość jako plain text",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archiwizacja",
"campaigns.archiveEnable": "Opublikuj do publicznego archiwum",
"campaigns.archiveHelp": "Opublikuj (w trakcie, zatrzymane, zakończone) treść kampanii do publicznego archiwum.",
"campaigns.archiveMeta": "Metadane kampanii",
"campaigns.archiveMetaHelp": "Dane podstawione subskrybenta do użycia w publicznym archiwum. W tym nazwa, email, i dowolne opcjonalne atrybuty użyte w szablonie kampanii.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Nie można aktualizować aktywnej ani zakończonej kampanii",
"campaigns.clicks": "Kliknięcia",
"campaigns.confirmDelete": "Usuń {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Brakujące pole(a): {name}",
"globals.messages.notFound": "{name} nie znaleziono",
"globals.messages.passwordChange": "Podaj wartość do zmiany",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" zaktualizowano",
"globals.months.1": "Sty",
"globals.months.10": "Paź",
@ -438,6 +441,8 @@
"settings.media.s3.url": "S3 backend URL",
"settings.media.s3.urlHelp": "Zmień tylko, jeśli używasz niestandardowego backendu kompatybilnego z S3, takiego jak Minio.",
"settings.media.title": "Wysyłka mediów",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Ścieżka do wysyłki",
"settings.media.upload.pathHelp": "Ścieżka do folderu do którego media będą wrzucane.",
"settings.media.upload.uri": "URI wysyłki",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Serviço desconhecido.",
"bounces.view": "Ver bounces",
"campaigns.addAltText": "Adicionar mensagem alternativa em texto simples",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Arquivo",
"campaigns.archiveEnable": "Publicar no arquivo publico",
"campaigns.archiveHelp": "Publicar (executando, pausada, finalizada) a mensagem da campanha no arquivo publico.",
"campaigns.archiveMeta": "Metadados da campanha",
"campaigns.archiveMetaHelp": "Dados de assinante fictício para utilizar na mensagem publica incluindo nome, email e qualquer atributo opcional usado na mensagem ou template da campanha.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Não é possível atualizar uma campanha em execução ou finalizada.",
"campaigns.clicks": "Cliques",
"campaigns.confirmDelete": "Excluir {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Campos ausente(s): {name}",
"globals.messages.notFound": "{name} não encontrado",
"globals.messages.passwordChange": "Digite um valor para alterar",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\"atualizado",
"globals.months.1": "Jan",
"globals.months.10": "Out",
@ -438,6 +441,8 @@
"settings.media.s3.url": "URL backend do S3",
"settings.media.s3.urlHelp": "Altere apenas se usar um backnd customizado compatível com S3, como o Minio.",
"settings.media.title": "Envios de mídias",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Caminho de envio",
"settings.media.upload.pathHelp": "Caminho para o diretório onde a mídia será enviado.",
"settings.media.upload.uri": "URI de envio",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Serviço desconhecido.",
"bounces.view": "Ver bounces",
"campaigns.addAltText": "Adicionar mensagem alternativa em texto simples",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Arquivo",
"campaigns.archiveEnable": "Publicar para o arquivo público",
"campaigns.archiveHelp": "Publicar (em execução, em pausa e terminadas) as mensagens da campanha no arquivo público.",
"campaigns.archiveMeta": "Metadados da campanha",
"campaigns.archiveMetaHelp": "Dados do subscritor modelo a usar em mensagens públicas, tais como nome, email e quais quer outros atributos opcionais usados na mensagem ou template da campanha.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Não é possível atualizar uma campanha em curso ou terminada.",
"campaigns.clicks": "Cliques",
"campaigns.confirmDelete": "Eliminar {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Campo(s) em falta: {name}",
"globals.messages.notFound": "{name} não encontrado",
"globals.messages.passwordChange": "Insere um valor para alterar",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" atualizado",
"globals.months.1": "Jan",
"globals.months.10": "Out",
@ -438,6 +441,8 @@
"settings.media.s3.url": "URL do backend S3",
"settings.media.s3.urlHelp": "Apenas alterar quando um backend customizado compatível com S3, como Minio, está em uso.",
"settings.media.title": "Upload de mídia",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Caminho de upload",
"settings.media.upload.pathHelp": "Caminho para a pasta onde será enviada a mídia.",
"settings.media.upload.uri": "URI de envio",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Serviciu necunoscut.",
"bounces.view": "Vizualizarea bounce-urilor",
"campaigns.addAltText": "Adăugarea unui mesaj text alternativ simplu",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Arhivă",
"campaigns.archiveEnable": "Publicarea în arhiva publică",
"campaigns.archiveHelp": "Publicați (rulând, întrerupt, terminat) mesajul campaniei în arhiva publică.",
"campaigns.archiveMeta": "Metadatele campaniei",
"campaigns.archiveMetaHelp": "Datele abonaților inactivi de utilizat în mesajul public, inclusiv numele, e-mailul și orice atribute opționale utilizate în mesajul sau șablonul campaniei.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Nu se poate actualiza o campanie care rulează sau s-a terminat.",
"campaigns.clicks": "Click-uri",
"campaigns.confirmDelete": "Ștergerea {name}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "Câmp(e) lipsă: {name}",
"globals.messages.notFound": "{name} nu a fost găsit",
"globals.messages.passwordChange": "Introducerea unei valori de modificat",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" actualizat",
"globals.months.1": "Ian",
"globals.months.10": "Oct",
@ -439,6 +442,8 @@
"settings.media.s3.url": "S3 backend URL-ul",
"settings.media.s3.urlHelp": "Schimbă numai dacă folosești un backend personalizat compatibil S3, cum ar fi Minio.",
"settings.media.title": "Încărcări media",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Calea de încărcare",
"settings.media.upload.pathHelp": "Calea către directorul în care va fi încărcat conținutul media.",
"settings.media.upload.uri": "Încărcați URI-ul",
@ -571,4 +576,4 @@
"templates.subject": "Subiect",
"users.login": "Conectează-te",
"users.logout": "Deconectare"
}
}

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Неизвестная услуга.",
"bounces.view": "Просмотр отскоков",
"campaigns.addAltText": "Добавить альтернативное простое текстовое сообщение",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Архив",
"campaigns.archiveEnable": "Опубликовать в общедоступном архиве",
"campaigns.archiveHelp": "Опубликовать (запущено, на паузе, завершено) сообщение кампании в общедоступном архиве.",
"campaigns.archiveMeta": "Метаданные кампании",
"campaigns.archiveMetaHelp": "Данные фиктивных подписчиков для использования в публичном сообщении, включая имя, электронную почту и любые дополнительные атрибуты, используемые в сообщении или шаблоне кампании.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Не возможно обновить запущенную или завершённую кампанию.",
"campaigns.clicks": "Клики",
"campaigns.confirmDelete": "Удалить {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Отсутствующее поле (поля): {name}",
"globals.messages.notFound": "{name} не найдено",
"globals.messages.passwordChange": "Введите значение для изменения",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" обновлено",
"globals.months.1": "Янв",
"globals.months.10": "Окт",
@ -438,6 +441,8 @@
"settings.media.s3.url": "URL бэкенда S3",
"settings.media.s3.urlHelp": "Измените только в случае использования бэкенда, совместимого с S3, например, Minio.",
"settings.media.title": "Выгрузки медиа",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Путь для выгрузок",
"settings.media.upload.pathHelp": "Путь до каталога, куда будут выгружаться медиа-файлы.",
"settings.media.upload.uri": "URI выгрузок",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Unknown service.",
"bounces.view": "View bounces",
"campaigns.addAltText": "Add alternate plain text message",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archive",
"campaigns.archiveEnable": "Publish to public archive",
"campaigns.archiveHelp": "Publish (running, paused, finished) the campaign message on the public archive.",
"campaigns.archiveMeta": "Campaign metadata",
"campaigns.archiveMetaHelp": "Dummy subscriber data to use in the public message including name, email, and any optional attributes used in the campaign message or template.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Cannot update a running or a finished campaign.",
"campaigns.clicks": "Clicks",
"campaigns.confirmDelete": "Delete {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Missing field(s): {name}",
"globals.messages.notFound": "{name} not found",
"globals.messages.passwordChange": "Enter a value to change",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" updated",
"globals.months.1": "Jan",
"globals.months.10": "Oct",
@ -438,6 +441,8 @@
"settings.media.s3.url": "S3 backend URL",
"settings.media.s3.urlHelp": "Only change if using a custom S3 compatible backend like Minio.",
"settings.media.title": "Media uploads",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Upload path",
"settings.media.upload.pathHelp": "Path to the directory where media will be uploaded.",
"settings.media.upload.uri": "Upload URI",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Neznáma služba.",
"bounces.view": "Zobraziť prevzetie",
"campaigns.addAltText": "Pridať alternatívnu správu vo formáte obyčajného textu",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archív",
"campaigns.archiveEnable": "Zverejniť vo verejnom archíve",
"campaigns.archiveHelp": "Zverejniť (prebiehajúcu, pozastavenú, dokončenú) správu kampane vo verejnom archíve",
"campaigns.archiveMeta": "Metadáta kampane",
"campaigns.archiveMetaHelp": "Použíť prázdne dáta prihlásených vo verejnom archíve vrátane mena, emailu a iných voliteľných atribútov použitých v správach kampane aleebo šablónach.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Nedá sa aktualizovať spustená alebo dokončená kampaň.",
"campaigns.clicks": "Kliknutia",
"campaigns.confirmDelete": "Odstrániť {name}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "Chýbajúce pole: {name}",
"globals.messages.notFound": "{name} sa nenašlo",
"globals.messages.passwordChange": "Zadajte zmenenú hodnotu",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" upravené",
"globals.months.1": "Jan",
"globals.months.10": "Okt",
@ -438,6 +441,8 @@
"settings.media.s3.url": "Adresa URL pre S3 backend",
"settings.media.s3.urlHelp": "Dá sa nastaviť ak používateľ S3 kompatibilný backend ako napr. Minio.",
"settings.media.title": "Nahrávanie médií",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Cesta nahrávania",
"settings.media.upload.pathHelp": "Cesta k priečinku, kde se nahrávajú médiá.",
"settings.media.upload.uri": "URI nahrávania",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Bilinmeyen servis.",
"bounces.view": "Sıçramaları görüntüleyin",
"campaigns.addAltText": "Alternatif düz metin ekleyin",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Arşiv",
"campaigns.archiveEnable": "Halka açık arşivde yayınlayın",
"campaigns.archiveHelp": "Kampanya mesajını genel arşivde yayınlayın (çalışıyor, duraklatıldı, bitti).",
"campaigns.archiveMeta": "Kampanya meta verisi",
"campaigns.archiveMetaHelp": "Ad, e-posta ve kampanya mesajında veya şablonunda kullanılan tüm isteğe bağlı öznitelikler dahil olmak üzere genel mesajda kullanılacak kukla abone verileri.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Gönderilmekte olan veya gönderilmiş kampaynalar güncellenemez.",
"campaigns.clicks": "Tıklama",
"campaigns.confirmDelete": "Sil {name}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "Eksik alan(lar): {name}",
"globals.messages.notFound": "{name} bulunamadı",
"globals.messages.passwordChange": "Değiştirmek için değer gir",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" güncellendi",
"globals.months.1": "Oca",
"globals.months.10": "Eki",
@ -439,6 +442,8 @@
"settings.media.s3.url": "S3 arka uç URL'si",
"settings.media.s3.urlHelp": "Yalnızca Minio gibi özel bir S3 uyumlu arka uç kullanıyorsanız değiştirin.",
"settings.media.title": "Medya yüklemeleri",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Yükleme yolu",
"settings.media.upload.pathHelp": "Medyanın yükleneceği dizinin yolu.",
"settings.media.upload.uri": "Yüklwmw URI si",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "Dịch vụ không xác định.",
"bounces.view": "Xem thư bị trả lại",
"campaigns.addAltText": "Thêm tin nhắn văn bản thuần túy thay thế",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archive",
"campaigns.archiveEnable": "Publish to public archive",
"campaigns.archiveHelp": "Publish (running, paused, finished) the campaign message on the public archive.",
"campaigns.archiveMeta": "Campaign metadata",
"campaigns.archiveMetaHelp": "Dummy subscriber data to use in the public message including name, email, and any optional attributes used in the campaign message or template.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "Không thể cập nhật chiến dịch đang chạy hoặc đã kết thúc.",
"campaigns.clicks": "Số lần nhấp chuột",
"campaigns.confirmDelete": "Xóa {name}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "Lỗi field(s): {name}",
"globals.messages.notFound": "{name} không tìm thấy",
"globals.messages.passwordChange": "Nhập một giá trị để thay đổi",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "\"{name}\" đã cập nhật",
"globals.months.1": "Tháng 1",
"globals.months.10": "Tháng 10",
@ -439,6 +442,8 @@
"settings.media.s3.url": "URL phụ trợ S3",
"settings.media.s3.urlHelp": "Chỉ thay đổi nếu sử dụng chương trình phụ trợ tương thích S3 tùy chỉnh như Minio.",
"settings.media.title": "Tải lên phương tiện",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "Đường dẫn tải lên",
"settings.media.upload.pathHelp": "Đường dẫn đến thư mục nơi phương tiện sẽ được tải lên.",
"settings.media.upload.uri": "Tải lên URI",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "未知的服务。",
"bounces.view": "查看退回邮",
"campaigns.addAltText": "添加备用纯文本消息",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "存档",
"campaigns.archiveEnable": "发布到公开存档",
"campaigns.archiveHelp": "在公共档案中发布(运行、暂停、完成)活动消息。",
"campaigns.archiveMeta": "活动元数据",
"campaigns.archiveMetaHelp": "在公共消息中使用的模拟订阅者数据,包括姓名、电子邮件以及活动消息或模板中使用的任何可选属性。",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "无法更新正在运行或已完成的广告系列。",
"campaigns.clicks": "点击次数",
"campaigns.confirmDelete": "删除{名称}",
@ -181,6 +183,7 @@
"globals.messages.missingFields": "缺少字段:{name}",
"globals.messages.notFound": "{name} 未找到",
"globals.messages.passwordChange": "输入要更改的值",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "“{name}”已更新",
"globals.months.1": "一月",
"globals.months.10": "十月",
@ -438,6 +441,8 @@
"settings.media.s3.url": "S3后端URL",
"settings.media.s3.urlHelp": "只有在使用像Minio这样的自定义S3兼容后端时才进行更改。",
"settings.media.title": "媒体上传",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "上传路径",
"settings.media.upload.pathHelp": "将上传媒体的目录的路径。",
"settings.media.upload.uri": "上传URI",

View file

@ -17,11 +17,13 @@
"bounces.unknownService": "未知的服務。",
"bounces.view": "查看退回郵",
"campaigns.addAltText": "添加備用純文本消息",
"campaigns.addAttachments": "Add attachments",
"campaigns.archive": "Archive",
"campaigns.archiveEnable": "Publish to public archive",
"campaigns.archiveHelp": "Publish (running, paused, finished) the campaign message on the public archive.",
"campaigns.archiveMeta": "Campaign metadata",
"campaigns.archiveMetaHelp": "Dummy subscriber data to use in the public message including name, email, and any optional attributes used in the campaign message or template.",
"campaigns.attachments": "Attachments",
"campaigns.cantUpdate": "無法更新正在運行或已完成的廣告系列。",
"campaigns.clicks": "點擊次數",
"campaigns.confirmDelete": "刪除{名稱}",
@ -182,6 +184,7 @@
"globals.messages.missingFields": "缺少字段:{name}",
"globals.messages.notFound": "{name} 未找到",
"globals.messages.passwordChange": "輸入要更改的值",
"globals.messages.passwordChangeFull": "Clear and re-enter the full password in '{name}'.",
"globals.messages.updated": "“{name}”已更新",
"globals.months.1": "一月",
"globals.months.10": "十月",
@ -439,6 +442,8 @@
"settings.media.s3.url": "S3後端URL",
"settings.media.s3.urlHelp": "只有在使用像Minio這樣的自定義S3兼容後端時才進行更改。",
"settings.media.title": "媒體上傳",
"settings.media.upload.extensions": "Permitted file extensions",
"settings.media.upload.extensionsHelp": "Add * to allow all extensions",
"settings.media.upload.path": "上傳路徑",
"settings.media.upload.pathHelp": "將上傳媒體的目錄的路徑。",
"settings.media.upload.uri": "上傳URI",