diff --git a/.gitignore b/.gitignore
index 2e39bd120..a447bd9aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,8 @@ node_modules/
# vim swap files
*.swp
+# these are not done yet
+src/translation/ja.json
+src/translation/pl.json
+src/translation/si.json
+
diff --git a/src/translation/en.json b/src/translation/en.json
index beab50852..d0b2c7039 100644
--- a/src/translation/en.json
+++ b/src/translation/en.json
@@ -244,7 +244,7 @@
"recoveryEmail": "Password recovery email",
"errorDisplayNameRequired": "Name is required",
"activeCheckbox": "User is active",
- "displayNamePlaceholder": "Optional. If not provided, user can pick during sign up",
+ "displayNamePlaceholder": "Optional. If not provided, user can provide during sign up",
"fallbackEmailPlaceholder": "Optional. If not specified, primary email will be used"
},
"deleteUserDialog": {
@@ -310,9 +310,9 @@
"inviteLinkExplanation": "Use this to generate a new invite link. The link will also be sent to the user and will reset the password.",
"newLinkAction": "Invite user now",
"description": "The following invite link was sent to {{ email }}:",
- "sendAction": "Send",
- "descriptionLink": "Invite link for forwarding to the user",
- "descriptionEmail": "Send invite link to"
+ "sendAction": "Send Mail",
+ "descriptionLink": "Send invite link",
+ "descriptionEmail": "Send invite link"
},
"setGhostDialog": {
"title": "Create password to impersonate {{ username }}",
diff --git a/src/translation/es.json b/src/translation/es.json
index fc25f5f27..d4087053a 100644
--- a/src/translation/es.json
+++ b/src/translation/es.json
@@ -244,14 +244,17 @@
},
"passwordResetDialog": {
"sendEmailLinkAction": "Enviar enlace al usuario",
- "description": "Usa el enlace de abajo para restablecer la contraseña o re-invitar a {{ username }}:",
+ "description": "El siguiente enlace de restablecimiento de contraseña se envió a {{ email }}:",
"title": "Restablecer contraseña para {{ username }}",
"emailSent": "Enviados",
- "newLinkAction": "Generar nuevo enlace",
- "resetLinkExplanation": "Usa esto para generar un enlace de invitación o restablecimiento de contraseña. El nuevo enlace invalidará cualquier enlace antiguo inmediatamente.",
+ "newLinkAction": "Enlace de restablecimiento de correo electrónico",
+ "resetLinkExplanation": "Use esto para enviar por correo electrónico un enlace de restablecimiento de contraseña a la dirección de correo electrónico alternativa del usuario - {{ email }}.",
"2FAIsSetup": "Usa esto para deshabilitar 2FA del usuario. El usuario puede configurarlo nuevamente desde la vista Perfil.",
"no2FASetup": "Este usuario no ha configurado 2FA.",
- "reset2FAAction": "Restablecer 2FA"
+ "reset2FAAction": "Restablecer 2FA",
+ "sendAction": "Enviar",
+ "descriptionLink": "Enlace de restablecimiento de contraseña para reenviar al usuario",
+ "descriptionEmail": "Enviar enlace de restablecimiento de contraseña a"
},
"deleteGroupDialog": {
"deleteAction": "Borrar",
@@ -298,7 +301,27 @@
"groups": "Grupos",
"role": "Rol",
"username": "Usuario",
- "fullName": "Nombre Completo"
+ "fullName": "Nombre Completo",
+ "displayNamePlaceholder": "Opcional. Si no se proporciona, el usuario puede escogerlo durante el registro",
+ "fallbackEmailPlaceholder": "Opcional. Si no se especifica, se utilizará el correo electrónico principal"
+ },
+ "setGhostDialog": {
+ "title": "Crear contraseña para suplantar {{ username }}",
+ "description": "Establecer una contraseña temporal para iniciar sesión en nombre de este usuario en las aplicaciones o en el panel. Esta contraseña es válida por 6 horas.",
+ "password": "Contraseña",
+ "setPassword": "Establecer contraseña"
+ },
+ "setGhost": {
+ "password": "Contraseña"
+ },
+ "invitationDialog": {
+ "title": "Invitar {{ username }}",
+ "newLinkAction": "Invitar usuario ahora",
+ "description": "El siguiente enlace de invitación se envió a {{ email }}:",
+ "sendAction": "Enviar",
+ "descriptionLink": "Enlace de invitación para reenviar al usuario",
+ "descriptionEmail": "Enviar enlace de invitación a",
+ "inviteLinkExplanation": "Usa esto para generar un nuevo enlace de invitación. El enlace también se enviará al usuario y restablecerá la contraseña."
}
},
"backups": {
@@ -316,7 +339,7 @@
"noApps": "Sin Aplicaciones",
"version": "Versión",
"contents": "Contenidos",
- "noBackups": "No se han hecho copias de seguridad aún",
+ "noBackups": "No se han hecho copias de seguridad aún.",
"title": "Listado"
},
"schedule": {
@@ -334,7 +357,8 @@
"provider": "Proveedor",
"disabledList": "Las siguientes aplicaciones tienen las copias de seguridad deshabilitadas:",
"title": "Ubicación",
- "description": "Cloudron realiza una copia de seguridad completa de su sistema en la ubicación configurada."
+ "description": "Cloudron realiza una copia de seguridad completa de su sistema en la ubicación configurada.",
+ "remount": "Volver a montar almacenamiento"
},
"title": "Backups",
"configureBackupStorage": {
@@ -442,7 +466,11 @@
"changeFallbackEmail": {
"errorEmailInvalid": "La dirección de correo electrónico no es válida",
"errorEmailRequired": "Se requiere una dirección de correo electrónico válida",
- "title": "Cambiar la dirección de correo electrónico de recuperación de contraseña"
+ "title": "Cambiar la dirección de correo electrónico de recuperación de contraseña",
+ "password": "Contraseña para confirmación",
+ "errorWrongPassword": "Contraseña errónea",
+ "errorPasswordRequired": "Se requiere una contraseña",
+ "email": "Nueva dirección de correo electrónico para la recuperación de contraseña"
},
"changeEmail": {
"errorEmailRequired": "Se requiere una dirección de email válida",
@@ -505,20 +533,25 @@
"title": "Cambia tu Avatar",
"noAvatar": "Sin imagen de perfil"
},
- "title": "Perfil"
+ "title": "Perfil",
+ "passwordResetAction": "Olvidé mi contraseña",
+ "passwordResetNotification": {
+ "title": "Restablecimiento de contraseña exitosa",
+ "body": "Correo enviado a {{ email }}"
+ }
},
"emails": {
"eventlog": {
"searchPlaceholder": "Buscar",
"type": {
"spamFilterTrainedInfo": "Filtro de spam entrenado con contenido del buzón",
- "deniedInfo": "Conexión de {{ remote.ip }} denegada. {{ details.message || details.reason }}",
- "deliveredInfo": "Correo entregado a {{rcptTo | prettyEmailAddresses}} de {{mailFrom | prettyEmailAddresses}}",
- "receivedInfo": "Correo guardado de {{mailFrom | prettyEmailAddresses}} en el buzón {{rcptTo | prettyEmailAddresses}}",
- "outboundInfo": "Correo en cola para entregar a {{rcptTo | prettyEmailAddresses}} de {{mailFrom | prettyEmailAddresses}}",
- "inboundInfo": "Correo entrante de {{ mailFrom | prettyEmailAddresses }} a {{ rcptTo | prettyEmailAddresses }}. Spam: {{ details.spamStatus.indexOf(Sí,') === 0 ? 'Sí' : 'No' }}",
- "deferredInfo": "No se pudo entregar el correo a {{rcptTo | prettyEmailAddresses}}. {{detalles.mensaje || details.reason}}. Se reintentará en {{details.delay}} seg.",
- "bounceInfo": "Rebote enviado a {{mailFrom | prettyEmailAddresses}} para el correo enviado a {{rcptTo | prettyEmailAddresses}}. {{detalles.mensaje || details.reason}}",
+ "deniedInfo": "Conexión denegada",
+ "deliveredInfo": "Correo entregado",
+ "receivedInfo": "Guardado",
+ "outboundInfo": "En cola para entrega",
+ "inboundInfo": "Recibido",
+ "deferredInfo": "Error de entrega, se volverá a intentar en {{ delay }}s.",
+ "bounceInfo": "Rebote de envíos",
"spamFilterTrained": "Filtro de spam entrenado",
"bounce": "Rebote",
"denied": "Denegada",
@@ -530,7 +563,10 @@
"empty": "El Registro de Eventos está vacío.",
"details": "Detalles",
"time": "Hora",
- "title": "Registro de Eventos"
+ "title": "Registro de Eventos del Correo electrónico",
+ "from": "De",
+ "mailFrom": "De",
+ "rcptTo": "Para"
},
"settings": {
"solrNotRunning": "Parada",
@@ -544,7 +580,9 @@
"maxMailSize": "Tamaño máximo de correo electrónico",
"location": "Ubicación del Servidor de Correo",
"info": "Esta configuración es global y se aplica a todos los dominios.",
- "title": "Ajustes"
+ "title": "Ajustes",
+ "acl": "Correo ACL",
+ "aclOverview": "{{ dnsblZonesCount }} zona(s) DNSBL"
},
"domains": {
"testEmailTooltip": "Enviar Email de prueba",
@@ -589,7 +627,14 @@
"location": "Ubicación",
"description": "Cloudron realizará los cambios de DNS necesarios en todos los dominios y reiniciará el servidor de correo. Los clientes de correo electrónico de escritorio y móviles deben reconfigurarse para usar esta nueva ubicación como servidor IMAP y SMTP.",
"title": "Cambiar ubicación del Servidor de Correo"
- }
+ },
+ "aclDialog": {
+ "dnsblZones": "Zonas DNSBL",
+ "dnsblZonesInfo": "La dirección IP de conexión es buscada en estas listas de bloqueo de IP",
+ "dnsblZonesPlaceholder": "Nombres de zonas separados por líneas",
+ "title": "Cambiar Correo ACL"
+ },
+ "eventlogActionTooltip": "Registro de eventos de correo electrónico"
},
"branding": {
"logo": "Logotipo",
@@ -645,7 +690,9 @@
"accessControl": "Control de Acceso",
"memoryLimitDescription": "Cloudron asigna el 50% de este valor como RAM y el 50% como intercambio.",
"title": "Configurar {{ name }}",
- "resetToDefaults": "Restablecer a lo predeterminado"
+ "resetToDefaults": "Restablecer a lo predeterminado",
+ "enableRecoveryMode": "Habilitar el Modo de Recuperación",
+ "recoveryModeDescription": "Si el servicio se reinicia constantemente o no responde debido a daños en los datos, pon el servicio en modo de recuperación. Utiliza las siguientes instrucciones para volver a ejecutar el servicio."
},
"restartActionTooltip": "Reiniciar",
"configureActionTooltip": "Configurar",
@@ -667,7 +714,8 @@
"subscription": "Suscripción",
"cloudronId": "ID de Cloudron",
"subscriptionChangeAction": "Cambiar Suscripción",
- "description": "Se utiliza una cuenta de Cloudron.io para acceder a la App Store y administrar su suscripción."
+ "description": "Se utiliza una cuenta de Cloudron.io para acceder a la App Store y administrar su suscripción.",
+ "emailNotVerified": "Correo aún no verificado"
},
"title": "Ajustes",
"updateScheduleDialog": {
@@ -918,13 +966,20 @@
"disableDescription": "La configuración de entrega de correo de la aplicación es independiente. Puedes configurarla dentro de la aplicación.",
"description2": "Cuando está habilitada, la aplicación está configurada para enviar correos electrónicos a través del servidor de correo interno usando esta dirección. El servidor de correo interno utilizará la configuración de {{domain}} correo electrónico saliente para enviar correo. Cuando está deshabilitado, puede configurar los ajustes de correo electrónico dentro de la aplicación.",
"mailboxPlaceholder": "Dejar vacío para usar la plataforma predeterminada",
- "disable": "No configurar los ajustes de correo",
+ "disable": "No configurar la configuración de entrega de correo de la aplicación",
"enableDescription": "La aplicación está configurada para enviar correos electrónicos utilizando la dirección que aparece a continuación y la configuración de correo electrónico saliente de {{domain}}.",
"description": "Esto establece la dirección desde la que esta aplicación envía el correo electrónico. Esta aplicación ya está configurada para enviar correo mediante la configuración de {{domain}} correo electrónico saliente .",
"enable": "Utilizar Cloudron Mail para enviar correos electrónicos"
},
"csp": {
"title": "Política de seguridad de contenido"
+ },
+ "inbox": {
+ "title": "Correo entrante",
+ "enable": "Utiliza Cloudron Mail para recibir correos electrónicos",
+ "disable": "No configurar la bandeja de entrada",
+ "disableDescription": "La configuración de correo entrante de la aplicación es independiente. Puedes configurarlo dentro de la aplicación. Selecciona esta opción si el correo electrónico del dominio no está alojado en Cloudron.",
+ "enableDescription": "La aplicación está configurada para recibir correos electrónicos utilizando la siguiente dirección. Selecciona esta opción si el correo electrónico de {{ domain }} está alojado en este servidor."
}
},
"resources": {
@@ -952,9 +1007,13 @@
"visibleForAllUsers": "Visible para todos los usuarios de Cloudron",
"sftpAccessControl": "Este ajuste también controla el acceso SFTP.",
"dashboardVisibility": "Visibilidad del Panel",
- "descriptionSftp": "También controla el acceso SFTP.",
- "description": "Esta aplicación está configurada para autentificarse con el directorio de usuarios de Cloudron.",
+ "descriptionSftp": "Este ajuste también controla el acceso SFTP.",
+ "description": "Esta aplicación está configurada para autentificarse con el directorio de usuarios de Cloudron. Esta configuración controla quién puede iniciar sesión y usar la aplicación.",
"title": "Gestión de usuario"
+ },
+ "operators": {
+ "title": "Operadores",
+ "description": "Los operadores pueden configurar y mantener esta aplicación."
}
},
"location": {
@@ -1075,7 +1134,24 @@
"retryAction": "Reintentar {{ task }} tarea"
},
"appIsBusyTooltip": "La aplicación está ocupada"
- }
+ },
+ "eventlogTabTitle": "Registro de eventos",
+ "sftpInfoAction": "Acceso SFTP",
+ "cronTabTitle": "Cron",
+ "cron": {
+ "commonPattern": {
+ "twicePerDay": "Dos veces al día",
+ "everyMinute": "Cada Minuto",
+ "everyHour": "Cada Hora",
+ "twicePerHour": "Dos veces por hora",
+ "everyDay": "Cada día",
+ "everySunday": "Cada Domingo"
+ },
+ "title": "Crontab",
+ "saveAction": "Guardar",
+ "addCommonPattern": "Agregar patrón común"
+ },
+ "forumUrlAction": "¿Necesitas ayuda? Pregunta en el foro"
},
"lang": {
"zh_Hans": "Chino (simple)",
@@ -1087,7 +1163,8 @@
"fr": "Francés",
"de": "Alemán",
"en": "Inglés",
- "es": "Español"
+ "es": "Español",
+ "ru": "Ruso"
},
"system": {
"title": "Información del Sistema",
@@ -1133,7 +1210,9 @@
"subscriptionRequiredDescription": "Puedes encontrar respuestas en nuestra documentación o pregunta en el Foro.",
"emailInfo": "(El email de suscripción es {{ email }})",
"sshCheckbox": "Permitir que los ingenieros de soporte se conecten a este servidor a través de SSH",
- "emailPlaceholder": "Si es necesario, proporciona una dirección de correo electrónico diferente de la anterior para contactarte"
+ "emailPlaceholder": "Si es necesario, proporciona una dirección de correo electrónico diferente de la anterior para contactarte",
+ "emailVerifyAction": "Verificar ahora",
+ "emailNotVerified": "El correo electrónico de su cuenta cloudron.io {{email}} no está verificado. Verifíquelo para abrir tickets de soporte."
},
"title": "Soporte"
},
@@ -1146,7 +1225,7 @@
"addVolumeDialog": {
"addAction": "Añadir",
"title": "Añadir Volumen",
- "nameWarning": "Cloudron montará la ruta del host en el contenedor de la aplicación con este nombre en /media .",
+ "nameWarning": "Las aplicaciones pueden acceder a este volumen a través de /media/{name}.",
"mountpointWarning": "Cloudron no configurará el servidor para montar automáticamente este volumen",
"mountTypeInfo": "Cloudron configurará el servidor para montar automáticamente este volumen",
"server": "IP del servidor o Nombre de host",
@@ -1173,7 +1252,8 @@
"updateVolumeDialog": {
"title": "Actualizar Volumen {{ volume }}"
},
- "tooltipEdit": "Editar Volumen"
+ "tooltipEdit": "Editar Volumen",
+ "remountActionTooltip": "Volver a montar Volumen"
},
"eventlog": {
"filterAllEvents": "Todos los Eventos",
@@ -1343,7 +1423,8 @@
"connectionDetails": "Detalles de conexión para otros clientes de correo electrónico"
},
"updateMailboxDialog": {
- "activeCheckbox": "El buzón de correo está activo"
+ "activeCheckbox": "El buzón de correo está activo",
+ "enablePop3": "Habilitar acceso POP3"
},
"dnsStatus": {
"ptrInfo": "El registro PTR lo establece tu proveedor de VPS y no tu proveedor de DNS.",
@@ -1555,5 +1636,8 @@
"salutation": "Hola <%= user %>,",
"notice": "Notamos un inicio de sesión en tu cuenta de Cloudron desde un nuevo dispositivo.",
"action": "Si fuiste tú, puedes ignorar este correo electrónico. Si no fuiste tú, debes cambiar tu contraseña de inmediato."
+ },
+ "supportConfig": {
+ "emailNotVerified": "Por favor, primero verifica el correo electrónico de tu cuenta cloudron.io para asegurarnos de que podamos comunicarnos contigo."
}
}
diff --git a/src/translation/nl.json b/src/translation/nl.json
index 4a871af66..2e3ffb5f8 100644
--- a/src/translation/nl.json
+++ b/src/translation/nl.json
@@ -243,7 +243,9 @@
"errorDisplayNameRequired": "Naam is verplicht",
"activeCheckbox": "Gebruiker is actief",
"errorInvalidUsername": "Dit is geen geldige gebruikersnaam",
- "usernamePlaceholder": "Optioneel. Indien niet ingevuld mag de gebruiker bij registratie zelf kiezen"
+ "usernamePlaceholder": "Optioneel. Indien niet ingevuld mag de gebruiker bij registratie zelf kiezen",
+ "fallbackEmailPlaceholder": "Optioneel. Indien niet ingevoerd zal de primaire e-mail gebruikt worden",
+ "displayNamePlaceholder": "Optioneel. Indien niet ingevoerd kan de gebruiker het kiezen tijdens eerste aanmelding"
},
"deleteUserDialog": {
"deleteAction": "Verwijder",
@@ -283,7 +285,10 @@
"2FAIsSetup": "2FA van de gebruiker uit schakelen. De gebruiker kan het aanzetten via Profiel.",
"newLinkAction": "Verstuur wachtwoord herstel link",
"resetLinkExplanation": "Gebruik dit om een wachtwoord herstel link te e-mailen naar het alternatieve e-mailadres - {{ email }}.",
- "reset2FAAction": "2FA opnieuw instellen"
+ "reset2FAAction": "2FA opnieuw instellen",
+ "sendAction": "Verstuur",
+ "descriptionLink": "Wachtwoord herstel link om naar gebruiker te sturen",
+ "descriptionEmail": "Stuur wachtwoord reset link naar"
},
"externalLdapDialog": {
"title": "Configureer LDAP"
@@ -304,7 +309,10 @@
"title": "Nodig {{ username }} uit",
"inviteLinkExplanation": "Gebruik dit om een nieuwe uitnodigingslink te genereren. De link wordt ook gestuurd naar de gebruiker en herstelt het wachtwoord.",
"newLinkAction": "Nodig gebruiker nu uit",
- "description": "De volgende uitnodigingslink is gestuurd naar {{ email }}:"
+ "description": "De volgende uitnodigingslink is gestuurd naar {{ email }}:",
+ "sendAction": "Verstuur",
+ "descriptionLink": "Uitnodigingslink om naar gebruiker te sturen",
+ "descriptionEmail": "Stuur uitnodigingslink naar"
},
"setGhostDialog": {
"description": "Stel een tijdelijk wachtwoord in namens deze gebruiker in apps of het Dashboard. Dit wachtwoord is 6 uur geldig.",
@@ -441,7 +449,7 @@
},
"listing": {
"title": "Lijst met bestaande back-ups",
- "noBackups": "Er zijn nog geen backups gemaakt",
+ "noBackups": "Er zijn nog geen backups gemaakt.",
"contents": "Inhoud",
"version": "Versie",
"noApps": "Geen apps",
@@ -1579,7 +1587,8 @@
"zh_Hans": "Chinees (vereenvoudigd)",
"vi": "Vietnamees",
"pl": "Pools",
- "es": "Spaans"
+ "es": "Spaans",
+ "ru": "Russisch"
},
"passwordResetEmail": {
"subject": "[<%= cloudron %>] Wachtwoord herstellen",
diff --git a/src/translation/ru.json b/src/translation/ru.json
index ea4adf0b5..75d7a36fe 100644
--- a/src/translation/ru.json
+++ b/src/translation/ru.json
@@ -291,7 +291,10 @@
"inviteLinkExplanation": "Используйте данную опцию для генерации новой ссылки с приглашением. Ссылка также будет направлена пользователю и приведёт к сбросу пароля.",
"title": "Пригласить {{ username }}",
"newLinkAction": "Пригласить пользователя",
- "description": "Ссылка с приглашением отправлена на электронную почту {{ email }}:"
+ "description": "Ссылка с приглашением отправлена на электронную почту {{ email }}:",
+ "sendAction": "Отправить",
+ "descriptionEmail": "Отправить приглашение",
+ "descriptionLink": "Ссылка-приглашение для пересылки пользователю"
},
"setGhostDialog": {
"description": "Установите временный пароль для доступа к приложениям и панели управления от имени данного пользователя. Такой пароль будет действовать 6 часов.",