diff --git a/dashboard/public/translation/cs.json b/dashboard/public/translation/cs.json
index 8b4ef5e84..ce21805f3 100644
--- a/dashboard/public/translation/cs.json
+++ b/dashboard/public/translation/cs.json
@@ -912,7 +912,8 @@
"rebootRequired": "Vyžadován restart serveru",
"cloudronUpdateFailed": "Aktualizace Cloudronu selhala",
"diskSpace": "Nedostatek místa na disku",
- "appAutoUpdateFailed": "Automatická aktualizace aplikace selhala"
+ "appAutoUpdateFailed": "Automatická aktualizace aplikace selhala",
+ "manualUpdateRequired": "Platforma nebo aplikace vyžaduje ruční aktualizaci"
},
"settingsDialog": {
"description": "Na váš primární e-mail bude odeslán e-mail souhrn těchto vybraných událostí."
diff --git a/dashboard/public/translation/es.json b/dashboard/public/translation/es.json
index ff8163bb0..19bde84f9 100644
--- a/dashboard/public/translation/es.json
+++ b/dashboard/public/translation/es.json
@@ -39,7 +39,7 @@
"main": {
"rebootDialog": {
"rebootAction": "Reiniciar ahora",
- "description": "Todas las aplicaciones y servicios se reiniciarán automáticamente.
¿Reiniciar el servidor ahora?",
+ "description": "Todas las aplicaciones y servicios se reiniciarán automáticamente. ¿Reiniciar el servidor ahora?",
"title": "Reiniciar el servidor"
},
"action": {
@@ -52,7 +52,9 @@
"configure": "Configurar",
"restart": "Reanudar",
"reset": "Reiniciar",
- "loadMore": "Cargar más"
+ "loadMore": "Cargar más",
+ "setup": "Configurar",
+ "disable": "Desactivar"
},
"table": {
"version": "Versión",
@@ -189,11 +191,11 @@
"deleteGroupDialog": {
"deleteAction": "Borrar",
"description": "Este grupo tiene {{ memberCount }} miembros. ¿Seguro que quieres eliminarlo?",
- "title": "Borrar Grupo {{ name }}"
+ "title": "Borrar Grupo"
},
"editGroupDialog": {
"externalLdapWarning": "Este grupo se sincroniza desde el directorio LDAP externo.",
- "title": "Editar Grupo {{ name }}"
+ "title": "Editar Grupo"
},
"group": {
"addGroupAction": "Añadir",
@@ -206,12 +208,12 @@
},
"editUserDialog": {
"externalLdapWarning": "Este usuario está sincronizado desde el directorio LDAP externo.",
- "title": "Editar usuario {{ nombre de usuario }}"
+ "title": "Editar usuario"
},
"deleteUserDialog": {
"deleteAction": "Eliminar",
- "description": "Después de la eliminación, el usuario no podrá acceder al panel de control ni iniciar sesión en ninguna de las aplicaciones. Tenga en cuenta que los datos de usuario dentro de las aplicaciones no se eliminan.",
- "title": "Borrar Usuario {{ username }}"
+ "description": "Después de la eliminación, el usuario no podrá acceder al panel de control ni iniciar sesión en ninguna de las aplicaciones. Tenga en cuenta que los datos de usuario dentro de las aplicaciones no se eliminan.
Delete user \"{{ username }}\" ?",
+ "title": "Borrar Usuario"
},
"user": {
"activeCheckbox": "El usuario está activo",
@@ -219,7 +221,7 @@
"primaryEmail": "Email Principal",
"displayName": "Nombre para mostrar",
"usernamePlaceholder": "Opcional. Si no se proporciona, el usuario puede elegirlo durante el registro.",
- "noGroups": "No hay grupos disponibles.",
+ "noGroups": "No hay grupos disponibles",
"groups": "Grupos",
"role": "Rol",
"username": "Usuario",
@@ -228,31 +230,33 @@
"fallbackEmailPlaceholder": "Si no se especifica, se utilizará el correo electrónico principal"
},
"setGhostDialog": {
- "title": "Suplantar al usuario {{ username }}",
+ "title": "Suplantar al usuario",
"description": "Establece una contraseña temporal para iniciar sesión en las aplicaciones o el panel de control. Esta contraseña es válida por 6 horas.",
"password": "Contraseña temporal",
"setPassword": "Establecer contraseña",
- "generatePassword": "Generar Contraseña"
+ "generatePassword": "Generar Contraseña",
+ "context": "Suplantar al usuario \"{{nombre de usuario}}\""
},
"invitationDialog": {
- "title": "Invitar {{ username }}",
+ "title": "Invitar usuario",
"description": "El siguiente enlace de invitación se envió a {{ email }}:",
"sendAction": "Enviar correo",
- "descriptionLink": "Copiar enlace de invitación",
- "descriptionEmail": "Enviar enlace de invitación"
+ "descriptionLink": "Enlace de invitación",
+ "descriptionEmail": "Correo con enlace de invitación",
+ "context": "Invitar usuario \"{{ nombre de usuario }}\""
},
"invitationNotification": {
"body": "Correo enviado a {{ email }}"
},
"exposedLdap": {
"ipRestriction": {
- "description": "Acceso limitado del Servidor de Directorio a IP o rangos específicos. Las líneas que comienzan con # se tratan como comentarios.",
- "placeholder": "Dirección IP o Subred separada por líneas",
- "label": "Acceso Restringido"
+ "description": "Acceso limitado del Servidor de Directorio a IP o rangos específicos",
+ "placeholder": "Dirección IP o Subred separada por líneas. Las líneas que comienzan con # se tratan como comentarios.",
+ "label": "Direcciones IP y rangos permitidos"
},
"description": "El servidor LDAP permite que las aplicaciones externas autentifiquen a los usuarios en el directorio de usuarios de Cloudron.",
"secret": {
- "label": "Vincular Contraseña",
+ "label": "Vincular contraseña",
"description": "Autentificar consultas con el DN de usuario {{ userDN }} y este secreto",
"url": "URL del Servidor"
},
@@ -261,7 +265,11 @@
"title": "Servidor LDAP",
"enabled": "Habilitar Servidor LDAP"
},
- "title": "Usuarios"
+ "title": "Usuarios",
+ "2FAResetDialog": {
+ "title": "Restablecer usuario 2FA",
+ "description": "Eliminar la configuración 2FA existente para el usuario \"{{nombre de usuario}}\"?"
+ }
},
"backups": {
"listing": {
@@ -274,7 +282,8 @@
"contents": "Contenidos",
"noBackups": "No hay copias de seguridad",
"title": "Copias de seguridad del sistema",
- "tooltipPreservedBackup": "Esta copia de seguridad se conservará"
+ "tooltipPreservedBackup": "Esta copia de seguridad se conservará",
+ "description": "Las copias de seguridad del sistema contienen la configuración de Cloudron y los metadatos de instalación de la aplicación. Se pueden usar para restore or migrate toda la instalación de Cloudron a otro servidor."
},
"schedule": {
"retentionPolicy": "Política de retención",
@@ -284,27 +293,27 @@
"location": {
"remount": "Volver a montar almacenamiento"
},
- "title": "Backups",
+ "title": "Copias de seguridad",
"configureBackupStorage": {
"encryptionPasswordRepeat": "Repetir Contraseña",
"encryptionPasswordPlaceholder": "Frase de contraseña utilizada para cifrar las copias de seguridad",
- "copyConcurrencyDescription": "Número de copias de archivos remotos en paralelo al realizar una copia de seguridad.",
+ "copyConcurrencyDescription": "Número de copias de archivos remotos en paralelo al realizar una copia de seguridad",
"copyConcurrency": "Copiar simultaneidad",
"uploadConcurrencyDescription": "Número de archivos para cargar en paralelo al realizar una copia de seguridad",
"uploadConcurrency": "Subir simultaneidad",
- "downloadConcurrencyDescription": "Número de archivos para descargar en paralelo al restaurar",
+ "downloadConcurrencyDescription": "Número de archivos para descargar en paralelo",
"downloadConcurrency": "Descargar simultaneidad",
"uploadPartSizeDescription": "Carga de tamaño de pieza de varias partes. Se cargan hasta 3 partes en paralelo y requieren mucha más memoria.",
"uploadPartSize": "Cargar Tamaño de pieza",
- "memoryLimitDescription": "Límite de memoria para la tarea de backup. Ajuste esto si aumenta los valores de simultaneidad de sus valores predeterminados.",
+ "memoryLimitDescription": "Límite de memoria para la tarea de backup. Ajuste esto si aumenta los valores de simultaneidad de sus valores predeterminados",
"memoryLimit": "Límite de Memoria",
- "encryptionDescription": "Guarde esta frase de contraseña en un lugar seguro. Cloudron no almacena esta contraseña. Las copias de seguridad no se pueden descifrar sin la frase de contraseña",
+ "encryptionDescription": "Guarde esta frase de contraseña en un lugar seguro. Cloudron no almacena esta contraseña. Las copias de seguridad no se pueden descifrar sin la frase de contraseña.",
"encryptionPassword": "Contraseña de cifrado",
"s3LikeNote": "Elimine cualquier regla del ciclo de vida de vencimiento de los objetos, ya que dañará las copias de seguridad de rsync.",
"format": "Formato de Almacenamiento",
"gcsServiceKey": "Clave de cuenta de servicio",
"s3SecretAccessKey": "Clave de acceso secreta",
- "s3AccessKeyId": "Id de la clave de acceso",
+ "s3AccessKeyId": "ID de la clave de acceso",
"region": "Región",
"prefix": "Prefijo",
"bucketName": "Nombre del depósito",
@@ -337,27 +346,40 @@
"description": "Selecciona qué respaldar en este sitio.",
"everything": "Todo",
"excludeSelected": "Excluir seleccionado",
- "includeOnlySelected": "Incluir sólo lo seleccionado"
+ "includeOnlySelected": "Incluir sólo lo seleccionado",
+ "context": "Configurar el contenido del sitio de copia de seguridad \"{{ nombre }}\""
},
"automaticUpdates": {
"title": "Copias de seguridad de actualizaciones automáticas",
"description": "Siempre se crea una copia de seguridad antes de aplicar las actualizaciones automáticas. Elija si desea guardar esas copias de seguridad en este sitio."
},
- "useEncryption": "Cifrar Copias de seguridad"
+ "useEncryption": "Cifrar Copias de seguridad",
+ "regionHelperText": "Si se deja vacío, se utiliza por defecto \"us-east-1\"",
+ "prefixHelperText": "Las copias de seguridad se almacenan dentro de esta subcarpeta"
},
"configureBackupSchedule": {
"retentionPolicy": "Política de Retención",
"hours": "Horas",
"days": "Días",
- "title": "Configurar la Programación y Retención de la Copia de Seguridad"
+ "title": "Configurar la Programación y Retención de la Copia de Seguridad",
+ "schedule": {
+ "context": "Configurar la programación y la retención del sitio de copia de seguridad \"{{ nombre }}\"",
+ "description": "Establezca los días y las horas para las copias de seguridad. Asegúrese de que este cronograma no se superponga con el cronograma de actualización.",
+ "title": "Horario de respaldo"
+ },
+ "disable": "Desactivar backups automáticos",
+ "enable": "Activar backups automáticos"
},
"backupDetails": {
- "version": "Versión",
- "date": "Fecha",
- "id": "ID",
+ "version": "Versión del paquete",
+ "date": "Creado",
+ "id": "ID de copia de seguridad",
"title": "Detalles de la Copia de Seguridad",
"size": "Tamaño",
- "duration": "Duración"
+ "duration": "Duración de copia de seguridad",
+ "lastIntegrityCheck": "Última comprobación de integridad",
+ "integrityNever": "Nunca",
+ "integrityInProgress": "En curso"
},
"backupEdit": {
"title": "Editar Backup",
@@ -372,14 +394,14 @@
"restoreAction": "Restaurar",
"restoreActionOverwrite": "Restaurar y sobrescribir DNS",
"title": "Restaurar desde archivo",
- "description": "Esto instalará {{appId}} en la ubicación especificada con copia de seguridad de {{creationTime}}."
+ "description": "Esto instalará {{appId}} en la ubicación especificada con copia de seguridad de {{creationTime}}"
},
"archives": {
"title": "Archivo de aplicación",
"info": "Información"
},
"deleteArchiveDialog": {
- "description": "Después de la eliminación, el archivo se limpiará según la política de copia de seguridad.",
+ "description": "Después de la eliminación, el archivo se limpiará según la política de copia de seguridad. ¿Borrar \"{{ appTitle }} ({{ appFqdn }})\"?",
"title": "Eliminar archivo de {{appTitle}} ({{fqdn}})"
},
"deleteArchive": {
@@ -399,7 +421,9 @@
"title": "Configurar contenido de la copia de seguridad"
},
"useFileAndFileNameEncryption": "Se utiliza cifrado de archivos y nombres de archivos",
- "useFileEncryption": "Se usa cifrado de archivos"
+ "useFileEncryption": "Se usa cifrado de archivos",
+ "checkIntegrity": "Verificar la integridad",
+ "stopIntegrity": "Detener la verificación de integridad"
},
"profile": {
"changePasswordAction": "Cambiar contraseña",
@@ -416,7 +440,8 @@
"description": "Utiliza la siguiente contraseña para autentificarte en la aplicación:",
"app": "Aplicación",
"name": "Nombre de la contraseña",
- "title": "Crear una contraseña para la aplicación"
+ "title": "Crear una contraseña para la aplicación",
+ "expiresAt": "Fecha de caducidad"
},
"changeFallbackEmail": {
"title": "Cambiar la dirección de correo electrónico de recuperación de contraseña"
@@ -449,13 +474,19 @@
"noPasswordsPlaceholder": "Sin contraseñas de aplicaciones",
"name": "Nombre",
"app": "Aplicación",
- "title": "Contraseñas de la Aplicación"
+ "title": "Contraseñas de la Aplicación",
+ "expires": "Caduca"
},
"enable2FA": {
"enable": "Habilitar",
"token": "Token",
"authenticatorAppDescription": "Usar Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) o aplicación TOTP para escanear clave secreta.",
- "title": "Habilitar Autentificación de 2 Factores"
+ "title": "Habilitar Autentificación de 2 Factores",
+ "mandatorySetup": "Se requiere autenticación de dos factores (2FA) para acceder al panel de control. Complete la configuración para continuar.",
+ "passkeyOption": "Llave maestra",
+ "registerPasskey": "Configurar llave maestra",
+ "passkeyDescription": "El navegador te pedirá que crees una clave de acceso utilizando los datos biométricos de tu dispositivo o un gestor de contraseñas.",
+ "totpOption": "TOTP"
},
"disable2FA": {
"disable": "Deshabilitar",
@@ -471,16 +502,38 @@
},
"language": "Idioma",
"passwordRecoveryEmail": "Correo electrónico de recuperación de contraseña",
- "primaryEmail": "Email Principal",
+ "primaryEmail": "Email principal",
"title": "Perfil",
"passwordResetNotification": {
"body": "Correo enviado a {{ email }}"
},
"removeAppPassword": {
- "title": "¿Seguro que quieres eliminar la contraseña {{ name }}?"
+ "title": "Eliminar la contraseña de aplicación",
+ "description": "¿Eliminar la contraseña de la aplicación \"{{ nombre }}\"?"
},
"removeApiToken": {
- "title": "¿Realmente quieres eliminar el token {{ name }}?"
+ "title": "Eliminar el token API",
+ "description": "¿Eliminar el token de API \"{{ nombre }}\"?"
+ },
+ "twoFactorAuth": {
+ "title": "Autenticación de 2 factores",
+ "totpEnabled": "Activado",
+ "passkeyEnabled": "Activado",
+ "passkeyTitle": "Llave maestra",
+ "totpTitle": "TOTP"
+ },
+ "notSet": "No está configurado",
+ "enablePasskey": {
+ "title": "Activar llave maestra"
+ },
+ "enableTotp": {
+ "title": "Activar TOTP"
+ },
+ "disableTotp": {
+ "title": "Desactivar TOTP"
+ },
+ "disablePasskey": {
+ "title": "Desactivar llave maestra"
}
},
"emails": {
@@ -513,7 +566,7 @@
},
"settings": {
"solrFts": "Búsqueda de texto completo",
- "spamFilterOverview": "{{ blacklistCount }} dirección(es) en la lista negra.",
+ "spamFilterOverview": "{{ blacklistCount }} dirección(es) en la lista negra",
"spamFilter": "Filtro de Spam",
"maxMailSize": "Tamaño máximo de correo electrónico",
"location": "Ubicación del Servidor de Correo",
@@ -538,7 +591,7 @@
"testMailDialog": {
"sendAction": "Enviar",
"description": "Esto enviará un correo electrónico de prueba de no-reply @ {{domain}} a la siguiente dirección.",
- "title": "Enviar email de prueba para {{ domain }}"
+ "title": "Enviar email de prueba"
},
"spamFilterDialog": {
"customRulesPlaceholder": "Reglas personalizadas de Spamassassin",
@@ -549,10 +602,11 @@
"title": "Filtro de spam"
},
"changeMailSizeDialog": {
- "description": "Cambiar el tamaño máximo del mensaje de correo electrónico requiere reiniciar el servidor de correo."
+ "description": "Los correos electrónicos entrantes de tamaño superior a este son rechazados"
},
"changeDomainDialog": {
- "description": "Esto moverá el servidor IMAP y SMTP a la ubicación especificada."
+ "description": "Esto moverá el servidor IMAP y SMTP a la ubicación especificada",
+ "setAction": "Establecer ubicación"
},
"aclDialog": {
"dnsblZones": "Zonas DNSBL",
@@ -562,7 +616,7 @@
},
"mailboxSharing": {
"title": "Compartir buzón",
- "description": "Cuando está habilitado, los usuarios pueden compartir sus carpetas IMAP con otros usuarios."
+ "description": "Cuando está habilitado, los usuarios pueden compartir sus carpetas IMAP con otros usuarios"
},
"changeVirtualAllMailDialog": {
"description": "La carpeta \"Todos los correos\" es una carpeta única que contiene todos los correos electrónicos de su bandeja de entrada. La carpeta puede resultar útil en clientes de correo que no admiten la búsqueda recursiva de carpetas."
@@ -616,7 +670,7 @@
"description": "Esta dirección IPv6 se utiliza para configurar registros AAAA en los DNS."
},
"configureIpv6": {
- "title": "Configurar Proveedor de IPv6"
+ "title": "Configurar IPv6"
},
"trustedIps": {
"summary": "{{ trustCount }} IPs confiables",
@@ -627,9 +681,10 @@
},
"services": {
"configure": {
- "title": "Configurar {{ name }}",
+ "title": "Configurar servicio",
"resetToDefaults": "Restablecer a lo predeterminado",
- "enableRecoveryMode": "Habilitar el Modo de Recuperación"
+ "enableRecoveryMode": "Habilitar el Modo de Recuperación",
+ "description": "Configurar servicio \"{{ nombre }}\""
},
"restartActionTooltip": "Reiniciar",
"memoryLimit": "Límite de Memoria",
@@ -669,7 +724,10 @@
"title": "Actualizaciones",
"description": "Las actualizaciones de la plataforma y de la aplicación se aplican según el cronograma establecido aquí, utilizando la Zona horaria del sistema.",
"disabled": "Deshabilitado",
- "onLatest": "el último"
+ "onLatest": "el último",
+ "config": "Actualizaciones automáticas",
+ "appsOnly": "Solo aplicaciones",
+ "platformAndApps": "Plataforma y Aplicaciones"
},
"language": {
"description": "Establece el idioma predeterminado para los correos electrónicos de Cloudron y del sistema (p. ej., invitaciones y restablecimiento de contraseña). Los usuarios pueden configurar el idioma del panel en su perfil.",
@@ -686,31 +744,42 @@
"updateDialog": {
"changes": "Cambios",
"updateAction": "Actualizar",
- "title": "Actualizar Cloudron a",
+ "title": "Actualizar Cloudron",
"skipBackupCheckbox": "Omitir Copia de Seguridad",
"blockingAppsInfo": "Por favor, espere a que terminen las operaciones anteriores.",
"blockingApps": "Las aplicaciones siguientes están bloqueando la actualización porque tienen acciones pendientes:",
- "unstableWarning": "Esta actualización es una versión previa y no se considera estable aún. Por favor, actualiza bajo tu responsabilidad."
+ "unstableWarning": "Esta actualización es una versión previa y no se considera estable aún. Por favor, actualiza bajo tu responsabilidad.",
+ "updateAvailable": "Cloudron {{ nuevaVersion }} está disponible"
+ },
+ "configureUpdates": {
+ "title": "Configurar actualizaciones automáticas",
+ "policy": "Política",
+ "policyDescription": "Elige qué se actualiza automáticamente",
+ "days": "Días",
+ "hours": "Horas",
+ "schedule": "Calendario"
}
},
"domains": {
"title": "Dominios",
"changeDashboardDomain": {
- "description": "Esto moverá el panel al subdominio my del dominio seleccionado.",
+ "description": "Esto moverá el panel al subdominio my del dominio seleccionado",
"changeAction": "Cambiar dominio",
- "title": "Dominio del Panel"
+ "title": "Dominio del Panel",
+ "confirmMessage": "Esto invalidará todas las claves de acceso para los usuarios.",
+ "confirmTitle": "¿Realmente cambiar el dominio del panel de control?"
},
"domainDialog": {
"cloudflareTokenType": "Tipo de Token",
"goDaddyApiSecret": "Clave Secreta API",
- "goDaddyApiKey": "Clave API",
+ "goDaddyApiKey": "Clave API GoDaddy",
"digitalOceanToken": "Token de DigitalOcean",
"gcdnsServiceAccountKey": "Clave de la Cuenta de Servicio",
"route53SecretAccessKey": "Clave de acceso Secreta",
"route53AccessKeyId": "ID de clave de acceso",
"provider": "Proveedor DNS",
"domain": "Dominio",
- "editTitle": "Configurar {{ domain }}",
+ "editTitle": "Configurar Dominio",
"addTitle": "Añadir Dominio",
"gandiApiKey": "Clave API de Gandi",
"cloudflareTokenTypeGlobalApiKey": "Clave API Global",
@@ -719,9 +788,9 @@
"linodeToken": "Token de Linode",
"nameComUsername": "Usuario de Name.com",
"nameComApiToken": "Token API",
- "namecheapApiKey": "Clave API",
+ "namecheapApiKey": "Clave API de Namecheap",
"manualInfo": "Todos los registros DNS deben configurarse manualmente antes de instalar una aplicación",
- "letsEncryptInfo": "Let's Encrypt requiere que tu servidor sea accesible en el puerto 80.",
+ "letsEncryptInfo": "Let's Encrypt requiere que tu servidor sea accesible en el puerto 80",
"advancedAction": "Configuración Avanzada…",
"zoneName": "Nombre de Zona (Opcional)",
"fallbackCert": "Certificado alternativo (opcional)",
@@ -729,10 +798,10 @@
"fallbackCertKeyPlaceholder": "Clave",
"fallbackCertCertificatePlaceholder": "Certificado",
"mastodonHostname": "Ubicación del Servidor Mastodon",
- "netcupCustomerNumber": "Número de cliente",
- "netcupApiKey": "Clave API",
- "netcupApiPassword": "Contraseña API",
- "namecheapUsername": "Usuario de Namecheap",
+ "netcupCustomerNumber": "Número de cliente Netcup",
+ "netcupApiKey": "Clave API Netcup",
+ "netcupApiPassword": "Contraseña API Netcup",
+ "namecheapUsername": "Nombre de Usuario de Namecheap",
"namecheapInfo": "La dirección IP del servidor debe agregarse a la lista de permitidos para esta clave API",
"wildcardInfo": "Configurar manualmente los registros DNS A (IPv4) y AAAA (IPv6) para *.{{ domain }}. y {{ domain }}. que apuntan a este servidor",
"matrixHostname": "Ubicación del Servidor Matrix",
@@ -742,20 +811,23 @@
"hetznerToken": "Token de Hetzner",
"bunnyAccessKey": "Clave de acceso Bunny",
"cloudflareDefaultProxyStatus": "Habilitar el Proxy para nuevos Registros DNS",
- "porkbunApikey": "Clave API",
- "porkbunSecretapikey": "Clave API secreta",
+ "porkbunApikey": "Clave API Porkbun",
+ "porkbunSecretapikey": "Clave API secreta Porkbun",
"dnsimpleAccessToken": "Token de acceso",
- "ovhEndpoint": "Punto final",
- "ovhConsumerKey": "Clave del consumidor",
- "ovhAppKey": "Clave de Aplicación",
- "ovhAppSecret": "Clave Secreta Aplicación",
+ "ovhEndpoint": "Punto final OVH",
+ "ovhConsumerKey": "Clave del consumidor OVH",
+ "ovhAppKey": "Clave de Aplicación OVH",
+ "ovhAppSecret": "Clave Secreta Aplicación OVH",
"deSecToken": "Token deSEC",
"gandiTokenTypeApiKey": "Clave API (obsoleta)",
"gandiTokenType": "Tipo de Token",
"gandiTokenTypePAT": "Token de acceso personal (PAT)",
- "inwxUsername": "Nombre de usuario",
- "inwxPassword": "Contraseña",
- "customNameservers": "El dominio utiliza servidores de nombres personalizados (Vanity)"
+ "inwxUsername": "Nombre de usuario INWX",
+ "inwxPassword": "Contraseña INWX",
+ "customNameservers": "El dominio utiliza servidores de nombres personalizados (Vanity)",
+ "zoneNamePlaceholder": "Opcional. Si no se especifica, se utilizará el dominio raíz por defecto.",
+ "carddavLocation": "Ubicación del servidor CardDAV",
+ "caldavLocation": "Ubicación del servidor CalDAV"
},
"renewCerts": {
"renewAllAction": "Renovar todos los certificados",
@@ -766,15 +838,23 @@
"domain": "Dominio",
"syncDns": {
"title": "Sincronizar DNS",
- "description": "Esto reaprovisionará los registros DNS de la aplicación y del correo electrónico en todos los dominios.",
+ "description": "Actualiza los registros DNS de la aplicación y del correo electrónico para todos los dominios.",
"syncAction": "Sincronizar DNS"
},
"removeDialog": {
- "title": "Realmente quieres borrar {{ domain }}?",
- "removeAction": "Borrar"
+ "title": "Borrar el dominio",
+ "removeAction": "Borrar",
+ "description": "¿Eliminar el dominio \"{{ dominio }}\"?"
},
"emptyPlaceholder": "Sin Dominios",
- "noMatchesPlaceholder": "No coincide ningún dominio"
+ "noMatchesPlaceholder": "No coincide ningún dominio",
+ "description": "Agregar un dominio te permite instalar aplicaciones en sus subdominios.",
+ "wellknown": {
+ "editAction": "URIs conocidas",
+ "title": "URIs conocidas",
+ "context": "Configurar respuestas a las URL \"https://{{ dominio }}/.well-known/\"",
+ "description": "Esta función requiere una aplicación instalada en el dominio raíz \"{{ domain }}\". Consulte la documentación para obtener más detalles."
+ }
},
"app": {
"appInfo": {
@@ -791,10 +871,11 @@
"packageVersion": "Versión del Paquete",
"appId": "ID de la Aplicación",
"description": "Título y Versión de la Aplicación",
- "installedAt": "Instalado en"
+ "installedAt": "Instalado",
+ "packager": "Empaquetador"
},
"auto": {
- "description": "Las actualizaciones de la aplicación se aplican periódicamente según el Programa de actualizaciones.",
+ "description": "Las actualizaciones de la aplicación se aplican periódicamente según el Programa de actualizaciones",
"title": "Actualizaciones Automáticas"
},
"updates": {
@@ -805,7 +886,7 @@
"storage": {
"mounts": {
"addMountAction": "Añade un volumen a montar",
- "noMounts": "No se ha montado ningún volumen.",
+ "noMounts": "No se ha montado ningún volumen",
"volume": "Volumen",
"saveAction": "Guardar",
"title": "Montajes de Volumen",
@@ -844,37 +925,54 @@
"restoreTooltip": "Restaurar",
"cloneTooltip": "Clonar",
"downloadConfigTooltip": "Descargar configuración",
- "title": "Backups",
- "description": "Las copias de seguridad son instantáneas completas de la aplicación. Puede utilizar copias de seguridad de la aplicación para restaurar o clonar esta aplicación.",
+ "title": "Copias de seguridad",
+ "description": "Las copias de seguridad son instantáneas completas de la aplicación. Puede utilizar copias de seguridad de la aplicación para restaurar o clonar esta aplicación",
"downloadBackupTooltip": "Descargar",
"checkIntegrity": "Comprobar la integridad"
},
"import": {
- "title": "Importar desde una Copia de Seguridad Externa",
- "description": "Usar para migrar una aplicación desde otro Cloudron. La otra aplicación debe tener la misma versión de paquete y configuración de control de acceso que esta."
+ "title": "Importar",
+ "description": "Importar la aplicación desde una copia de seguridad externa. Usar para migrar una aplicación desde otro Cloudron. La otra aplicación debe tener la misma versión de paquete y configuración de control de acceso que esta"
},
"auto": {
"title": "Backups automáticos",
- "description": "La aplicación se respalda periódicamente según el Programa de copias de seguridad."
+ "description": "La aplicación se respalda periódicamente según el Programa de copias de seguridad"
}
},
"security": {
"robots": {
- "title": "Robots.txt"
+ "title": "Robots.txt",
+ "description": "Por defecto, los bots pueden indexar esta aplicación",
+ "commonPattern": {
+ "allowAll": "Permitir todo (predeterminado)",
+ "disallowAll": "Deshabilitar todo",
+ "disallowCommonBots": "Deshabilitar bots comunes",
+ "disallowAdminPaths": "Deshabilitar rutas de administrador",
+ "disallowApiPaths": "No permitir rutas de API"
+ },
+ "insertCommonRobotsTxt": "Inserta el archivo robots.txt común"
},
"csp": {
"saveAction": "Guardar",
- "description": "La configuración de esta opción anulará cualquier encabezado CSP enviado por la propia aplicación",
- "title": "Política de seguridad de contenido"
+ "description": "Esta opción anulará cualquier encabezado CSP enviado por la propia aplicación",
+ "title": "Política de seguridad de contenido",
+ "insertCommonCsp": "Insertar CSP común",
+ "commonPattern": {
+ "allowEmbedding": "Permitir la incrustación",
+ "sameOriginEmbedding": "Permitir la incrustación (solo subdominios)",
+ "allowCdnAssets": "Permitir activos de CDN",
+ "reportOnly": "Denunciar las infracciones de CSP",
+ "strictBaseline": "Línea de base estricta"
+ }
},
"hstsPreload": "Habilitar la precarga de HSTS (incluidos los subdominios)"
},
"email": {
"from": {
"saveAction": "Guardar",
- "title": "Correo DESDE la dirección",
- "disableDescription": "La configuración de entrega de correo de la aplicación es independiente. Puedes configurarla dentro de la aplicación.",
- "mailboxPlaceholder": "Nombre del buzón",
+ "title": "Correo desde la dirección",
+ "disableDescription": "La configuración de entrega de correo de la aplicación permanece sin cambios. Puedes configurarla dentro de la aplicación.",
+ "mailboxPlaceholder": "Nombre del buzón 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}}.",
"enable": "Utilizar Cloudron Mail para enviar correos electrónicos",
@@ -884,8 +982,11 @@
"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."
+ "disableDescription": "La configuración de correo entrante de la aplicación permanece sin cambios. Puedes configurarla dentro de la aplicación. Selecciona esta opción si el correo electrónico del dominio no está alojado en Cloudron.",
+ "enableDescription": "Configura la aplicación para recibir correos electrónicos con la dirección que aparece a continuación. Selecciona esta opción si el correo electrónico de {{ domain }} está alojado en este servidor."
+ },
+ "configuration": {
+ "title": "Correo saliente"
}
},
"resources": {
@@ -900,7 +1001,8 @@
"title": "Límite de Memoria"
},
"devices": {
- "label": "Dispositivos"
+ "label": "Dispositivos",
+ "description": "Lista de dispositivos conectados a la aplicación, separados por comas"
}
},
"accessControl": {
@@ -913,22 +1015,25 @@
"userManagement": {
"visibleForSelected": "Solo visible para los siguientes usuarios y grupos",
"visibleForAllUsers": "Visible para todos los usuarios de Cloudron",
- "dashboardVisibility": "Visibilidad del Panel",
+ "dashboardVisibility": "Visibilidad del Panel de control",
"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."
+ "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"
},
"operators": {
"title": "Operadores",
- "description": "Los operadores pueden configurar y mantener esta aplicación."
+ "description": "Configura quién puede mantener la aplicación"
+ },
+ "dashboardVisibility": {
+ "description": "Configura quién puede ver esta aplicación en el panel de control."
}
},
"location": {
- "noAliases": "No se han configurado alias.",
+ "noAliases": "No se han configurado dominios alias",
"addAliasAction": "Añadir un alias",
"aliases": "Alias",
"saveAction": "Guardar",
"addRedirectionAction": "Añadir una redirección",
- "noRedirections": "No se han configurado redirecciones.",
+ "noRedirections": "No se han configurado redirecciones de dominio",
"redirections": "Redirecciones",
"locationPlaceholder": "Dejar vacío para usar el dominio desnudo",
"location": "Ubicación",
@@ -944,7 +1049,7 @@
},
"uninstallTabTitle": "Desinstalar",
"repairTabTitle": "Raparar",
- "backupsTabTitle": "Backups",
+ "backupsTabTitle": "Copias de seguridad",
"emailTabTitle": "Correo",
"securityTabTitle": "Seguridad",
"graphsTabTitle": "Gráficos",
@@ -954,8 +1059,8 @@
"locationTabTitle": "Ubicación",
"adminPageAction": "Página de administrador",
"uninstallDialog": {
- "description": "Esto desinstalará {{ app }} y borrará todos sus datos.",
- "title": "Desinstalar {{ app }}",
+ "description": "¿Desinstalar la aplicación y borrar todos sus datos?",
+ "title": "Desinstalar la Aplicación",
"uninstallAction": "Desinstalar"
},
"importBackupDialog": {
@@ -963,12 +1068,14 @@
"uploadAction": "cargar una configuración de respaldo",
"importAction": "Importar",
"remotePath": "Ruta del Backup",
- "provideBackupInfo": "Proporciona la información de respaldo para restaurar desde allí, o"
+ "provideBackupInfo": "Proporciona la información de respaldo para restaurar desde allí, o",
+ "warning": "Todos los datos creados desde la última copia de seguridad se perderán definitivamente. Se recomienda crear una nueva copia de seguridad antes de importarla.",
+ "versionMustMatchInfo": "La copia de seguridad debe haberse creado utilizando la misma versión del paquete y la misma configuración de control de acceso que esta aplicación."
},
"restoreDialog": {
"warning": "Todos los datos generados entre ahora y la última copia de seguridad conocida se perderán de forma irrevocable. Se recomienda crear una copia de seguridad de los datos actuales antes de intentar una restauración.",
- "title": "Restaurar {{ app }}",
- "description": "Esto restaurará esta aplicación con los datos de {{creationTime}}.",
+ "title": "Restaurar Aplicación",
+ "description": "¿Restaurar \"{{ fqdn }}\" desde la copia de seguridad creada el {{ creationTime }}?",
"restoreAction": "Restaurar",
"cloneAction": "Clonar",
"cloneActionOverwrite": "Clonar y sobreescribir DNS"
@@ -981,8 +1088,8 @@
}
},
"cloneDialog": {
- "description": "Usando la copia de seguridad de {{creationTime}} y la versión v {{packageVersion}} ",
- "title": "Clonar {{ app }}",
+ "description": "Clonar usando la copia de seguridad de {{ creationTime }} (versión {{ packageVersion }}).",
+ "title": "Clonar aplicación",
"location": "Ubicación"
},
"updateDialog": {
@@ -1010,7 +1117,7 @@
},
"taskError": {
"title": "Error de tarea",
- "description": "Si una acción de instalación, configuración, actualización, restauración o copia de seguridad generó un error, puede volver a intentar la tarea.",
+ "description": "Si una acción de instalación, configuración, actualización, restauración o copia de seguridad generó un error, puede volver a intentarlo.",
"retryAction": "Reintentar {{ task }} tarea"
},
"restart": {
@@ -1051,11 +1158,11 @@
},
"servicesTabTitle": "Servicios",
"turn": {
- "title": "Configuración de TURN",
+ "title": "Autoconfiguración de TURN",
"info": "Habilita esta opción para configurar la aplicación para que use el servidor TURN integrado. Al deshabilitarla, la configuración de TURN de la aplicación se conserva."
},
"redis": {
- "title": "Configuración de Redis",
+ "title": "Autoconfiguración de Redis",
"info": "Si está habilitado, la aplicación usará el servicio Redis integrado. Si está deshabilitado, la configuración de Redis de la aplicación no se modifica."
},
"infoTabTitle": "Información",
@@ -1072,14 +1179,24 @@
"title": "Archivo"
},
"archiveDialog": {
- "title": "Archivo {{app}}",
- "description": "Esto desinstalará la aplicación y colocará la última copia de seguridad de la aplicación creada el {{date}} en el Archivo de aplicaciones."
+ "title": "Aplicación de archivo",
+ "description": "¿Desinstalar la aplicación y colocar la última copia de seguridad de la aplicación creada el {{date}} en el Archivo de aplicaciones?"
},
"configureTooltip": "Configurar",
"updateAvailableTooltip": "Actualización disponible",
"forumAction": "Foro",
"appLink": {
"title": "Enlace externo"
+ },
+ "start": {
+ "title": "Empezar",
+ "description": "Inicia la aplicación para que vuelva a estar disponible.",
+ "action": "Iniciar"
+ },
+ "stop": {
+ "action": "Parar",
+ "title": "Detener",
+ "description": "Detén la aplicación para ahorrar recursos. Realiza una copia de seguridad antes de detenerla para conservar los cambios recientes."
}
},
"system": {
@@ -1120,7 +1237,9 @@
},
"volumes": {
"removeVolumeDialog": {
- "removeAction": "Borrar"
+ "removeAction": "Borrar",
+ "title": "Eliminar volumen",
+ "description": "¿Eliminar volumen \"{{ volumeName }}\"?"
},
"addVolumeDialog": {
"title": "Añadir Volumen",
@@ -1141,7 +1260,7 @@
"mountType": "Tipo de montaje",
"remountActionTooltip": "Volver a montar",
"editVolumeDialog": {
- "title": "Editar volumen {{ name }}"
+ "title": "Editar volumen"
},
"emptyPlaceholder": "No hay volúmenes"
},
@@ -1162,7 +1281,8 @@
"restartApp": "Reiniciar aplicación",
"uploadFolder": "Subir carpeta",
"openTerminal": "Abrir Terminal",
- "openLogs": "Abrir Registros"
+ "openLogs": "Abrir Registros",
+ "refresh": "Refrescar"
},
"title": "Gestor de Archivos",
"newDirectoryDialog": {
@@ -1170,7 +1290,7 @@
"create": "Crear"
},
"newFileDialog": {
- "title": "Nuevo Archivo",
+ "title": "Nuevo Nombre de Archivo",
"create": "Crear"
},
"renameDialog": {
@@ -1186,7 +1306,7 @@
"pasteInProgress": "Pegado en progreso",
"deleteInProgress": "Borrado en progreso",
"chownDialog": {
- "title": "Cambiar propiedad",
+ "title": "Cambiar propietario",
"newOwner": "Nuevo propietario",
"change": "Cambiar propietario",
"recursiveCheckbox": "Cambiar propiedad recursivamente"
@@ -1262,11 +1382,13 @@
"plainTextFormat": "Formato de texto",
"htmlFormat": "Formato HTML",
"title": "Firma de correo electrónico",
- "description": "El texto aquí se adjuntará a todos los correos electrónicos que se envíen desde este dominio."
+ "description": "El texto aquí se adjuntará a todos los correos electrónicos que se envíen desde este dominio.",
+ "customSignatureSet": "Firma personalizada configurada",
+ "noSignatureSet": "No se ha configurado ninguna firma"
},
"incoming": {
"catchall": {
- "description": "Los correos electrónicos enviados a direcciones no existentes se reenviarán a los siguientes buzones de correo.",
+ "description": "Los correos electrónicos enviados a direcciones no existentes se reenviarán a los siguientes buzones de correo",
"title": "Atrapa todo",
"saveAction": "Guardar"
},
@@ -1278,7 +1400,7 @@
"owner": "Propietario",
"usage": "Uso",
"stats": "Conteo: {{ mailboxCount }} / Uso: {{ usage }}",
- "emptyPlaceholder": "No hay buzones",
+ "emptyPlaceholder": "No hay buzones de correo",
"noMatchesPlaceholder": "No hay buzones coincidentes"
},
"mailinglists": {
@@ -1291,7 +1413,7 @@
"noMatchesPlaceholder": "No hay listas de correo que coincidan"
},
"outgointServerInfo": "Correo Saliente (SMTP)",
- "sieveServerInfo": "ManageSieve",
+ "sieveServerInfo": "Gestionar Sieve",
"title": "Correo electrónico entrante",
"server": "Servidor",
"port": "Puerto",
@@ -1300,11 +1422,11 @@
"incomingUserInfo": "Nombre de Usuario",
"incomingPasswordInfo": "Contraseña",
"incomingPasswordUsage": "Contraseña del propietario del buzón",
- "description": "Recibir correos electrónicos entrantes para este dominio."
+ "description": "Recibir correos electrónicos entrantes para este dominio"
},
"outbound": {
"noopAdminDomainWarning": "Cloudron no puede enviar invitaciones de usuario, restablecimiento de contraseña y otras notificaciones cuando el correo electrónico está deshabilitado en el dominio principal",
- "noopNonAdminDomainWarning": "Cloudron no puede proporcionar el envío de correo electrónico para aplicaciones alojadas en este dominio cuando el correo electrónico está deshabilitado.",
+ "noopNonAdminDomainWarning": "Cloudron no puede proporcionar el envío de correo electrónico para aplicaciones alojadas en este dominio cuando el correo electrónico está deshabilitado",
"mailRelay": {
"spfDocInfo": "Cloudron no configura automáticamente el registro SPF. Configúralo manualmente siguiendo la {{name}} documentación .",
"host": "Host SMTP",
@@ -1315,7 +1437,7 @@
"password": "Contraseña"
},
"title": "Retransmisión de correo electrónico",
- "description": "Este servidor de correo (host inteligente) se utilizará para enviar los correos salientes de las aplicaciones instaladas en este dominio."
+ "description": "Este servidor de correo (host inteligente) se utilizará para enviar los correos salientes de las aplicaciones instaladas. Configure la entrega de correo saliente para este dominio"
},
"config": {
"title": "Configuración de correo electrónico {{ domain }}",
@@ -1328,7 +1450,7 @@
}
},
"updateMailboxDialog": {
- "activeCheckbox": "Buzón activo",
+ "activeCheckbox": "Buzón de correo activo",
"enablePop3": "Acceso POP3"
},
"dnsStatus": {
@@ -1352,53 +1474,57 @@
"noProviderInfo": "No se ha configurado ningún proveedor de DNS. Los registros DNS enumerados en la pestaña Estado deben configurarse manualmente.",
"description": "Esto configurará Cloudron para recibir correos electrónicos de {{dominio}} . Consulta la documentación para abrir los puertos obligatorios para Cloudron Email.",
"setupDnsInfo": "Utiliza esta opción para configurar automáticamente los registros DNS relacionados con el correo electrónico. Dejar esta opción sin marcar es útil para crear buzones de correo e importar correo electrónico antes de publicarlo.",
- "title": "¿Habilitar el correo electrónico para {{ domain }}?",
+ "title": "Habilitar el correo electrónico entrante",
"setupDnsCheckbox": "Configura los registros DNS de correo ahora",
"enableAction": "Habilitar"
},
"disableEmailDialog": {
"description": "Esto configurará Cloudron para que deje de recibir correos electrónicos para {{dominio}} . Los buzones de correo y las listas asociadas con este dominio no se eliminarán.",
- "title": "¿Deshabilitar Servidor de Correo para {{ domain }}?",
+ "title": "Deshabilitar correo electrónico entrante",
"disableAction": "Deshabilitar"
},
"addMailinglistDialog": {
"membersOnlyCheckbox": "Restringir la publicación a los miembros de la lista",
"title": "Añadir Lista de correo",
- "members": "Lista de miembros",
- "name": "Nombre"
+ "members": "Lista de Miembros de la lista de correo",
+ "name": "Nombre de la lista de correo"
},
"deleteMailinglistDialog": {
"description": "¿Realmente quieres borrar la lista de correo {{ name }}@{{ domain }}?",
- "title": "Borrar lista de correo {{ name }}@{{ domain }}",
+ "title": "Borrar lista de correo",
"deleteAction": "Borrar"
},
"deleteMailboxDialog": {
- "description": "Después de la eliminación, los correos electrónicos enviados a este buzón rebotarán. Puedes optar por no eliminar los correos electrónicos de este buzón con fines de archivo. Los correos electrónicos archivados se encuentran en /home/yellowtent/boxdata/mail/vmail en el servidor.",
- "title": "Borrar Buzón de correo {{ name }}@{{ domain }}",
+ "description": "Después de la eliminación, los correos electrónicos enviados a este buzón rebotarán. Puedes optar por no eliminar los correos electrónicos de este buzón con fines de archivo. Los correos electrónicos archivados se encuentran en /home/yellowtent/boxdata/mail/vmail en el servidor.
¿Borrar \"{{ name }}@{{ domain }}\"?",
+ "title": "Borrar Buzón de correo",
"purgeMailboxCheckbox": "Eliminar todos los correos y filtros de este buzón",
"deleteAction": "Borrar"
},
"addMailboxDialog": {
"title": "Añadir Buzón de correo",
- "name": "Nombre",
- "incomingDisabledWarning": "El correo electrónico entrante para este dominio no está habilitado."
+ "name": "Nombre del buzón de correo",
+ "incomingDisabledWarning": "El correo electrónico entrante para este dominio no está habilitado"
},
"editMailboxDialog": {
- "title": "Editar buzón {{ nombre }}@{{ dominio }}",
+ "title": "Editar buzón de correo",
"owner": "Propietario del Buzón de correo",
"aliases": "Alias",
- "noAliases": "No hay alias configuradas.",
+ "noAliases": "No hay alias configurados",
"addAliasAction": "Añadir un alias",
"addAnotherAliasAction": "Añadir otro alias",
"enableStorageQuota": "Cuota de almacenamiento"
},
"editMailinglistDialog": {
- "title": "Editar lista de correo {{ nombre }}@{{ dominio }}"
+ "title": "Editar lista de correo"
},
"updateMailinglistDialog": {
"activeCheckbox": "Lista de correo activa"
},
- "howToConnectInfoModal": "Configuración de clientes de correo electrónico"
+ "howToConnectInfoModal": "Configuración de clientes de correo electrónico",
+ "customFrom": {
+ "title": "Permitir dirección personalizada",
+ "description": "Permitir que los usuarios y aplicaciones autenticados utilicen cualquier dirección de origen"
+ }
},
"passwordResetEmail": {
"expireNote": "Tenga en cuenta que el enlace para restablecer la contraseña caducará en 24 horas.",
@@ -1420,20 +1546,29 @@
"appUp": "La aplicación está nuevamente en línea",
"backupFailed": "La copia de seguridad falló",
"appDown": "La aplicación no funciona",
- "diskSpace": "Poco espacio en disco"
+ "diskSpace": "Poco espacio en disco",
+ "appAutoUpdateFailed": "La actualización automática de la aplicación falló",
+ "manualUpdateRequired": "La plataforma o la aplicación requiere actualización manual"
},
"settingsDialog": {
"description": "Se enviará un correo electrónico para los eventos seleccionados a su dirección de correo electrónico principal."
},
- "allCaughtUp": "Todos atrapados"
+ "allCaughtUp": "Todos atrapados",
+ "title": "Notificaciones",
+ "showAll": "Todo",
+ "showUnread": "No leido",
+ "markUnread": "Marcar como no leído",
+ "markRead": "Marcar como leído"
},
"terminal": {
"title": "Terminal",
"download": {
- "download": "Descargar"
+ "download": "Descargar archivo",
+ "title": "Descargar archivo",
+ "description": "Introduzca la ruta del archivo o directorio que desea descargar desde el sistema de archivos de la aplicación."
},
"scheduler": "Programador / Cron",
- "downloadAction": "Descargar",
+ "downloadAction": "Descargar archivo",
"uploadTo": "Subir a {{ path }}"
},
"passwordReset": {
@@ -1454,7 +1589,7 @@
},
"success": {
"title": "Contraseña cambiada",
- "openDashboardAction": "Abrir Panel"
+ "openDashboardAction": "Abrir Panel de control"
}
},
"setupAccount": {
@@ -1472,17 +1607,18 @@
},
"success": {
"title": "Tu cuenta está lista",
- "openDashboardAction": "Abrir Panel"
+ "openDashboardAction": "Abrir Panel de control"
},
"noUsername": {
"title": "No se puede configurar la cuenta",
- "description": "La cuenta no se puede configurar sin un nombre de usuario."
- }
+ "description": "La cuenta no se puede configurar sin un nombre de usuario. Por favor, póngase en contacto con el administrador."
+ },
+ "welcome": "Bienvenido"
},
"welcomeEmail": {
"welcomeTo": "Bienvenid@ a <%= cloudronName %>!",
"salutation": "Hola <%= user %>,",
- "inviteLinkAction": "Empezar",
+ "inviteLinkAction": "Comience",
"invitor": "Recibió este correo electrónico porque fue invitado por <%= invitor%>.",
"inviteLinkActionText": "Siga el enlace para comenzar: <%- inviteLink %>",
"subject": "Bienvenid@ a <%= cloudron %>"
@@ -1495,7 +1631,10 @@
"resetPasswordAction": "Resetear contraseña",
"errorIncorrect2FAToken": "El token 2FA es inválido",
"errorInternal": "Error interno, prueba de nuevo más tarde",
- "loginAction": "Acceder"
+ "loginAction": "Acceder",
+ "usePasskeyAction": "Usar llave maestra",
+ "errorPasskeyFailed": "Error al iniciar sesión con la clave de acceso",
+ "passkeyAction": "Iniciar sesión con la clave de acceso"
},
"newLoginEmail": {
"subject": "[<% = cloudron%>] Nuevo inicio de sesión en tu cuenta",
@@ -1515,19 +1654,20 @@
"createAction": "Añadir"
},
"client": {
- "name": "Nombre",
+ "name": "Nombre de cliente",
"id": "ID de cliente",
"secret": "Secreto de cliente",
"signingAlgorithm": "Algoritmo de firma",
- "loginRedirectUri": "URL de devolución de llamada de inicio de sesión (separadas por comas)"
+ "loginRedirectUri": "URL de devolución de llamada de inicio de sesión (separadas por comas)",
+ "loginRedirectUriPlaceholder": "URLs separadas por comas"
},
"description": "El proveedor OpenID puede ser utilizado por aplicaciones externas para el inicio de sesión único.",
"editClientDialog": {
- "title": "Editar cliente {{ client }}"
+ "title": "Editar cliente"
},
"deleteClientDialog": {
- "title": "¿Realmente quieres borrar el cliente {{ client }}?",
- "description": "Si eliminas este cliente OIDC, se invalidarán todos los tokens de acceso. Las aplicaciones que utilicen este cliente OIDC ya no podrán autentificarse."
+ "title": "Borrar el cliente",
+ "description": "Si eliminas este cliente, se invalidarán todos los tokens de acceso. Las aplicaciones que utilicen este cliente ya no podrán autentificarse. ¿Borrar client \"{{ clientName }}\"?"
},
"env": {
"discoveryUrl": "URL de descubrimiento"
@@ -1535,6 +1675,10 @@
"clients": {
"title": "Clientes OpenID",
"empty": "No hay clientes OpenID"
+ },
+ "clientCredentials": {
+ "title": "Credenciales del cliente",
+ "description": "Copia las credenciales del cliente \"{{ clientName }}\""
}
},
"userdirectory": {
@@ -1546,12 +1690,14 @@
"sites": {
"lastRun": "Última ejecución",
"title": "Sitios de respaldo",
- "emptyPlaceholder": "No hay Sitios de Respaldo"
+ "emptyPlaceholder": "No hay Sitios de Respaldo",
+ "description": "Los sitios de copia de seguridad especifican dónde se almacenan las copias de seguridad del sistema y de las aplicaciones. Las copias de seguridad de las aplicaciones se pueden restaurar individualmente.",
+ "noAutomaticUpdateBackupWarning": "No hay ningún sitio de copia de seguridad configurado para almacenar copias de seguridad para actualizaciones automáticas. Habilite la opción \"Almacenar copias de seguridad de actualizaciones automáticas aquí\" en al menos un sitio de copia de seguridad para permitir las actualizaciones automáticas."
},
"site": {
"removeDialog": {
- "description": "Esto también eliminará cualquier entrada de respaldo vinculada a este sitio.",
- "title": "¿Realmente quieres eliminar este sitio de respaldo?"
+ "description": "Esto también eliminará cualquier entrada de respaldo vinculada a este sitio. Eliminar un sitio de copia de seguridad elimina sus entradas de copia de seguridad de Cloudron. Los archivos de copia de seguridad almacenados en el destino remoto no se eliminan.
¿Eliminar el sitio de copia de seguridad \"{{ name }}\"?",
+ "title": "Eliminar este sitio de respaldo"
}
},
"target": {
@@ -1565,17 +1711,21 @@
"provider": "Proveedor",
"username": "Nombre de usuario",
"title": "Registros de Docker",
- "description": "Cloudron puede extraer e instalar aplicaciones personalizadas desde un registro de Docker privado.",
+ "description": "Configure el acceso a los registros privados de Docker para instalar aplicaciones personalizadas.",
"removeDialog": {
- "title": "Borrar {{ serverAddress }}"
+ "title": "Borrar registro Docker"
},
"email": "Correo electrónico",
"passwordToken": "Contraseña/Token",
- "emptyPlaceholder": "No hay registros de Docker"
+ "emptyPlaceholder": "No hay registros de Docker",
+ "dialog": {
+ "addTitle": "Agregar registro de Docker",
+ "editTitle": "Editar registro de Docker"
+ }
},
"dockerRegistres": {
"removeDialog": {
- "description": "¿Realmente quieres eliminar este registro?"
+ "description": "¿Realmente quieres eliminar este registro Docker?"
}
},
"appearance": {
@@ -1590,6 +1740,11 @@
"archives": {
"listing": {
"placeholder": "No hay aplicaciones archivadas"
- }
+ },
+ "description": "Las aplicaciones archivadas conservan la última copia de seguridad realizada al momento del archivado. Estas copias de seguridad se guardan de forma permanente y se pueden restaurar."
+ },
+ "communityapp": {
+ "installwarning": "Cloudron no revisa las aplicaciones de la comunidad. Instala únicamente aplicaciones de desarrolladores de confianza. El código de terceros puede comprometer la seguridad de tu sistema.",
+ "unstablewarning": "Esta aplicación está marcada como inestable por su desarrollador."
}
}
diff --git a/dashboard/public/translation/id.json b/dashboard/public/translation/id.json
index 912d7fdf8..40a200b7c 100644
--- a/dashboard/public/translation/id.json
+++ b/dashboard/public/translation/id.json
@@ -1691,7 +1691,8 @@
"rebootRequired": "Diperlukan menyalakan ulang server",
"cloudronUpdateFailed": "Pembaruan Cloudron gagal",
"diskSpace": "Ruang disk hampir penuh",
- "appAutoUpdateFailed": "Pembaruan otomatis aplikasi gagal"
+ "appAutoUpdateFailed": "Pembaruan otomatis aplikasi gagal",
+ "manualUpdateRequired": "Platform atau aplikasi memerlukan pembaruan manual"
},
"settingsDialog": {
"description": "E-mail akan dikirimkan ke e-mail utama Anda untuk acara-acara yang dipilih."
diff --git a/dashboard/public/translation/nl.json b/dashboard/public/translation/nl.json
index 1112e973b..a6f2cdd13 100644
--- a/dashboard/public/translation/nl.json
+++ b/dashboard/public/translation/nl.json
@@ -1255,7 +1255,8 @@
"rebootRequired": "Server herstart noodzakelijk",
"cloudronUpdateFailed": "Cloudron update mislukt",
"diskSpace": "Weinig diskruimte",
- "appAutoUpdateFailed": "Automatische update van de app is mislukt"
+ "appAutoUpdateFailed": "Automatische update van de app is mislukt",
+ "manualUpdateRequired": "Platform of app moet handmatig geüpdatet worden"
},
"settingsDialog": {
"description": "Een e-mail wordt verstuurd voor de geselecteerde gebeurtenissen naar je primaire e-mail."
diff --git a/dashboard/public/translation/vi.json b/dashboard/public/translation/vi.json
index 13ad066ac..ea15f034c 100644
--- a/dashboard/public/translation/vi.json
+++ b/dashboard/public/translation/vi.json
@@ -33,7 +33,8 @@
"username": "Tên đăng nhập",
"displayName": "Tên hiển thị",
"table": {
- "version": "Phiên bản"
+ "version": "Phiên bản",
+ "created": "Đã tạo"
},
"action": {
"reboot": "Khởi động lại",
@@ -44,7 +45,10 @@
"next": "Kế tiếp",
"configure": "Cấu hình",
"restart": "Khởi động lại",
- "reset": "Đặt lại"
+ "reset": "Đặt lại",
+ "loadMore": "Hiển thị thêm",
+ "setup": "Cài đặt",
+ "disable": "Tắt"
},
"rebootDialog": {
"title": "Khởi động lại server",
@@ -66,6 +70,9 @@
"loadingPlaceholder": "Đang tải",
"platform": {
"startupFailed": "Khởi động nền tảng không thành công"
+ },
+ "sidebar": {
+ "collapseAction": "Đóng thanh bên"
}
},
"appstore": {
@@ -100,7 +107,10 @@
"title": "Không tìm thấy app",
"description": "Không có app {{ appId }} với phiên bản {{ version }}."
},
- "searchPlaceholder": "Tìm kiếm app thay thế cho GitHub, Dropbox, Slack, Trello, …"
+ "searchPlaceholder": "Tìm kiếm app thay thế cho GitHub, Dropbox, Slack, Trello, …",
+ "action": {
+ "addCustomApp": "Thêm app riêng"
+ }
},
"users": {
"editUserDialog": {
@@ -109,26 +119,26 @@
},
"deleteUserDialog": {
"deleteAction": "Xoá",
- "description": "Sau khi xoá, người dùng này sẽ không được truy cập vào dashboard hay đăng nhập bất kỳ app nào. Lưu ý rằng dữ liệu người dùng sẽ vẫn chưa được xoá trong app.",
- "title": "Xoá người dùng {{ username }}"
+ "description": "Sau khi xoá, người dùng này sẽ không được truy cập vào dashboard hay đăng nhập bất kỳ app nào. Lưu ý rằng dữ liệu người dùng sẽ vẫn chưa được xoá trong app.
Chắc chắn xóa \"{{ username }}\" ?",
+ "title": "Xoá người dùng"
},
"user": {
"activeCheckbox": "Người dùng đang hoạt động",
"recoveryEmail": "Email khôi phục mật khẩu",
"primaryEmail": "Email chính",
"displayName": "Tên hiển thị",
- "usernamePlaceholder": "Không bắt buộc. Nếu để trống, người dùng có thể tự chọn khi đăng ký",
- "noGroups": "Hiện không có nhóm nào.",
+ "usernamePlaceholder": "Không bắt buộc. Nếu để trống, người dùng có thể tự chọn khi đăng ký.",
+ "noGroups": "Hiện không có nhóm nào",
"groups": "Nhóm",
"role": "Vai trò",
"username": "Tên đăng nhập",
"fullName": "Họ tên",
- "fallbackEmailPlaceholder": "Không bắt buộc. Nếu không được xác định, email chính sẽ được sử dụng",
- "displayNamePlaceholder": "Không bắt buộc. Nếu để trống, người dùng có thể tự cài đặt trong lúc đăng ký"
+ "fallbackEmailPlaceholder": "Nếu không xác định, email chính sẽ được sử dụng",
+ "displayNamePlaceholder": "Không bắt buộc. Nếu để trống, người dùng có thể tự cài đặt trong lúc đăng ký."
},
"addUserDialog": {
- "addUserAction": "Thêm người dùng",
- "sendInviteCheckbox": "Gửi email mời ngay",
+ "addUserAction": "Thêm",
+ "sendInviteCheckbox": "Gửi email mời",
"title": "Thêm người dùng"
},
"externalLdap": {
@@ -220,25 +230,29 @@
"mailmanager": "Quản lý Người dùng & Email"
},
"exposedLdap": {
- "description": "Cloudron có thể đóng vai trò là máy chủ chỉ mục người dùng trung tâm cho những app bên ngoài.",
+ "description": "Máy chủ LDAP cho phép những app bên ngoài xác minh người dùng dựa theo danh sách người dùng có trên Cloudron.",
"ipRestriction": {
- "description": "Giới hạn quyền truy cập máy chủ chỉ mục cho những địa chỉ IP hoặc khoảng vùng cụ thể. Những dòng bắt đầu bằng dấu # được xem như ghi chú thêm.",
- "placeholder": "Viết xuống dòng những địa chỉ IP hoặc Subnet",
- "label": "Giới hạn quyền truy cập"
+ "description": "Giới hạn quyền truy cập máy chủ chỉ mục cho những địa chỉ IP hoặc phạm vi cụ thể",
+ "placeholder": "Viết xuống dòng những địa chỉ IP hoặc Subnet. Những dòng bắt đầu bằng dấu # được xem là bình luận.",
+ "label": "IP & phạm vi được cho phép"
},
"secret": {
"label": "Mật khẩu bind",
- "description": "Tất cả những yêu cầu LDAP cần phải được xác minh với mã bí mật này và tên người dùng user DN {{ userDN }}",
+ "description": "Xác minh những yêu cầu với tên người dùng {{ userDN }} và mã bí mật này",
"url": "URL máy chủ"
},
- "cloudflarePortWarning": "Cần tắt proxy Cloudflare cho tên miền dashboard để truy cập LDAP server"
+ "cloudflarePortWarning": "Cần tắt proxy Cloudflare cho tên miền dashboard để truy cập LDAP server",
+ "enable": "Bật máy chủ LDAP",
+ "title": "Máy chủ LDAP",
+ "enabled": "Bật máy chủ LDAP"
},
"setGhostDialog": {
"generatePassword": "Tạo mật khẩu",
"title": "Nhập vai người dùng",
"description": "Đặt một mật khẩu tạm thời để đăng nhập vào thay mặt người dùng trong các app hoặc dashboard. Mật khẩu tạm thời chỉ có hiệu lực trong vòng 6 tiếng.",
- "password": "Mật khẩu",
- "setPassword": "Cài mật khẩu"
+ "password": "Mật khẩu tạm thời",
+ "setPassword": "Cài mật khẩu",
+ "context": "Nhập vai người dùng \"{{ username }}\""
},
"invitationNotification": {
"body": "Email đã được gửi đến {{ email }}"
@@ -252,8 +266,10 @@
"context": "Mời người dùng \"{{ username }}\""
},
"2FAResetDialog": {
- "description": "Xóa bảo mật 2 Bước cho người dùng “{{ username }}”?"
- }
+ "description": "Xóa bảo mật 2 Bước cho người dùng “{{ username }}”?",
+ "title": "Đặt lại Mã xác minh 2 Bước cho người dùng"
+ },
+ "title": "Người dùng"
},
"profile": {
"language": "Ngôn ngữ",
@@ -274,14 +290,19 @@
"token": "Mã",
"authenticatorAppDescription": "Dùng Google Authenticator (Android, iOS), FreeOTP authenticator (Android, iOS) hoặc một app TOTP tương tự để quét mã.",
"enable": "Bật",
- "mandatorySetup": "Cần có bảo mật 2 Bước để truy cập bảng điều khiển. Vui lòng hoàn thành cài đặt này để tiếp tục thao tác."
+ "mandatorySetup": "Cần có bảo mật 2 Bước để truy cập bảng điều khiển. Vui lòng hoàn thành cài đặt này để tiếp tục thao tác.",
+ "passkeyOption": "Mã passkey",
+ "totpOption": "Mật mã dùng một lần dựa trên thời gian (TOTP)",
+ "registerPasskey": "Cài đặt passkey",
+ "passkeyDescription": "Trình duyệt sẽ thông báo để bạn tạo một passkey sử dụng mã sinh trắc học của thiết bị hoặc trình quản lý mật khẩu."
},
"createAppPassword": {
"title": "Thêm mật khẩu app",
"name": "Tên cho mật khẩu",
"app": "App",
"copyNow": "Xin copy mật khẩu này bây giờ. Nó sẽ không được hiển thị lại vì lý do an ninh.",
- "description": "Sử dụng mật khẩu sau để xác minh cho app:"
+ "description": "Sử dụng mật khẩu sau để xác minh cho app:",
+ "expiresAt": "Ngày hết hạn"
},
"createApiToken": {
"title": "Thêm mã API",
@@ -298,14 +319,15 @@
"name": "Tên",
"noPasswordsPlaceholder": "Không có mật khẩu app",
"title": "Mật khẩu app",
- "description": "Mật khẩu app là một biện pháp an ninh giúp bảo vệ tài khoản người dùng Cloudron của bạn. Khi bạn cần truy cập một app trong Cloudron từ một app điện thoại hay client không đáng tin cậy, bạn có thể đăng nhập bằng tên đăng nhập và mật khẩu app thay thế ở đây."
+ "description": "Mật khẩu app là một biện pháp an ninh giúp bảo vệ tài khoản người dùng Cloudron của bạn. Khi bạn cần truy cập một app trong Cloudron từ một app điện thoại hay client không đáng tin cậy, bạn có thể đăng nhập bằng tên đăng nhập và mật khẩu app thay thế ở đây.",
+ "expires": "Hết hạn"
},
"apiTokens": {
"title": "Mã API",
- "description": "Dùng những mã truy cập cá nhân này để xác minh cho Cloudron API",
+ "description": "Dùng những mã truy cập cá nhân này để xác minh cho Cloudron API.",
"noTokensPlaceholder": "Không có mã API",
"name": "Tên",
- "lastUsed": "Lần dùng cuối",
+ "lastUsed": "Lần dùng gần nhất",
"neverUsed": "chưa từng dùng",
"readonly": "Chỉ đọc",
"scope": "Mức độ bao phủ",
@@ -338,6 +360,26 @@
"removeAppPassword": {
"title": "Xóa mật khẩu app",
"description": "Xóa mật khẩu app \"{{ name }}\" ?"
+ },
+ "twoFactorAuth": {
+ "title": "Xác thực 2 yếu tố",
+ "totpEnabled": "Đã bật",
+ "passkeyEnabled": "Đã bật",
+ "totpTitle": "Mật mã dùng một lần dựa trên thời gian (TOPT)",
+ "passkeyTitle": "Mã passkey"
+ },
+ "notSet": "Chưa cài đặt",
+ "enablePasskey": {
+ "title": "Bật mã passket"
+ },
+ "enableTotp": {
+ "title": "Bật TOTP"
+ },
+ "disableTotp": {
+ "title": "Tắt TOTP"
+ },
+ "disablePasskey": {
+ "title": "Tắt mã passkey"
}
},
"backups": {
@@ -346,19 +388,19 @@
},
"title": "Bản sao lưu",
"configureBackupStorage": {
- "copyConcurrencyDescription": "Số bản sao tập tin từ xa cùng lúc khi đang sao lưu Cloudron.",
- "memoryLimitDescription": "Giới hạn bộ nhớ cho thao tác sao lưu. Điều chỉnh nếu bạn cần tăng giới hạn hiện tại so với giá trị mặc định.",
+ "copyConcurrencyDescription": "Số lượng tập tin từ xa được sao chép cùng lúc",
+ "memoryLimitDescription": "Giới hạn bộ nhớ cho thao tác sao lưu",
"encryptionPasswordRepeat": "Nhập lại mật khẩu",
"encryptionPasswordPlaceholder": "Mật khẩu để mã hoá các bản sao lưu",
"copyConcurrency": "Copy đồng thời",
- "uploadConcurrencyDescription": "Số tập tin để tải lên cùng lúc khi đang sao lưu Cloudron",
+ "uploadConcurrencyDescription": "Số lượng tập tin tải lên cùng lúc",
"downloadConcurrency": "Tải xuống đồng thời",
"uploadConcurrency": "Tải lên đồng thời",
- "downloadConcurrencyDescription": "Số tập tin để tải xuống cùng lúc khi khôi phục lại Cloudron",
- "uploadPartSize": "Kích cỡ bản sao lưu tải lên",
+ "downloadConcurrencyDescription": "Số lượng tập tin tải xuống cùng lúc",
+ "uploadPartSize": "Kích cỡ một phần bản sao lưu được tải lên",
"uploadPartSizeDescription": "Kích cỡ bản tải lên nhiều phần. Có đến 3 phần được tải lên cùng lúc và cần lượng bộ nhớ như nhau.",
- "encryptionDescription": "Lưu dòng mật khẩu này ở nơi an toàn. Cloudron không lưu trữ mật khẩu này. Các bản sao lưu sẽ không được giải mã khi không có dòng mật khẩu này",
- "encryptionPassword": "Mật khẩu mã hoá bản sao lưu (không bắt buộc)",
+ "encryptionDescription": "Lưu dòng mật khẩu này ở nơi an toàn. Cloudron không lưu trữ mật khẩu này. Các bản sao lưu sẽ không được giải mã nếu thiếu dòng mật khẩu này.",
+ "encryptionPassword": "Mật khẩu mã hoá bản sao lưu",
"localDirectory": "Thư mục sao lưu địa phương",
"memoryLimit": "Giới hạn bộ nhớ",
"s3LikeNote": "Xin xoá các quy định vòng đời khi hết hạn của object vì nó sẽ làm hỏng bản sao lưu dạng rsync.",
@@ -373,7 +415,7 @@
"hardlinksLabel": "Sử dụng hardlink",
"provider": "Nhà cung cấp dịch vụ lưu trữ",
"mountPointDescription": "Điểm mount cần được cài đặt thủ công. Xem hướng dẫn.",
- "title": "Cấu hình nơi lưu trữ bản sao lưu",
+ "title": "Cấu hình vị trí lưu trữ bản sao lưu",
"mountPoint": "Điểm mount",
"format": "Định dạng lưu trữ",
"chown": "Hệ thống tập tin bên ngoài có hỗ trợ chown",
@@ -385,21 +427,52 @@
"user": "Người dùng",
"privateKey": "Mật mã riêng",
"diskPath": "Đường dẫn đến ổ đĩa",
- "cifsSealSupport": "Dùng mã hoá SEAL. Cần SMB thấp nhất là phiên bản v3",
+ "cifsSealSupport": "Dùng mã hoá SEAL (cần SMB thấp nhất là phiên bản v3)",
"encryptFilenames": "Mã hoá tên tập tin",
- "preserveAttributesLabel": "Giữ nguyên thuộc tính của tập tin"
+ "preserveAttributesLabel": "Giữ nguyên thuộc tính của tập tin",
+ "name": "Tên",
+ "encryptionHint": "Gợi ý mật khẩu mã hóa",
+ "usesEncryption": "Bản sao lưu đã được mã hóa",
+ "useForUpdates": "Lưu giữ bản sao lưu của cập nhật tự động tại đây",
+ "backupContents": {
+ "title": "Nội dung sao lưu",
+ "description": "Chọn phần được sao lưu đến vị trí này.",
+ "everything": "Tất cả",
+ "excludeSelected": "Loại trừ phần được chọn",
+ "includeOnlySelected": "Chỉ gồm phần được chọn",
+ "context": "Chỉnh nội dung của vị trí sao lưu \"{{ name }}\""
+ },
+ "automaticUpdates": {
+ "title": "Sao lưu của cập nhật tự động",
+ "description": "Một bản sao lưu luôn được tạo ra trước khi cập nhật tự động. Chọn lựa chọn này để lưu giữ những bản sao lưu đó vào vị trí này."
+ },
+ "useEncryption": "Mã hóa bản sao lưu",
+ "regionHelperText": "Mặc định là \"us-east-1\" nếu để trống",
+ "prefixHelperText": "Các bản sao lưu được lưu giữ trong thư mục con này"
},
"configureBackupSchedule": {
"retentionPolicy": "Thời gian lưu giữ",
"hours": "Thời gian",
"days": "Ngày",
- "title": "Cấu hình lịch sao lưu và thời gian lưu giữ"
+ "title": "Cài đặt lịch sao lưu & thời gian lưu giữ",
+ "schedule": {
+ "context": "Cài đặt lịch sao lưu & thời gian lưu giữ của \"{{ name }}\"",
+ "description": "Cài đặt ngày giờ để sao lưu. Tránh đặt trùng với lịch cập nhật hệ thống.",
+ "title": "Lịch sao lưu"
+ },
+ "disable": "Tắt sao lưu tự động",
+ "enable": "Bật sao lưu tự động"
},
"backupDetails": {
- "version": "Phiên bản",
- "date": "Thời gian",
- "id": "ID",
- "title": "Chi tiết sao lưu"
+ "version": "Phiên bản đóng gói",
+ "date": "Được tạo lúc",
+ "id": "ID bản sao lưu",
+ "title": "Chi tiết sao lưu",
+ "size": "Kích cỡ",
+ "duration": "Thời hạn sao lưu",
+ "lastIntegrityCheck": "Lần cuối kiểm tra tính toàn vẹn của dữ liệu",
+ "integrityNever": "chưa lần nào",
+ "integrityInProgress": "Đang thực hiện"
},
"listing": {
"backupNow": "Sao lưu ngay bây giờ",
@@ -411,7 +484,8 @@
"contents": "Nội dung",
"noBackups": "Không có bản sao lưu",
"title": "Bản sao lưu hệ thống",
- "tooltipPreservedBackup": "Bản sao này sẽ được giữ lại"
+ "tooltipPreservedBackup": "Bản sao này sẽ được giữ lại",
+ "description": "Sao lưu hệ thống chứa thông tin cấu hình và cài đặt app trong Cloudron của bạn. Các bản sao lưu có thể được dùng để khôi phục hoặc di chuyển toàn bộ hệ thống Cloudron sang một máy chủ mới."
},
"schedule": {
"retentionPolicy": "Thời gian lưu giữ",
@@ -421,29 +495,46 @@
"backupEdit": {
"preserved": {
"tooltip": "Lựa chọn này cũng sẽ giữ lại những bản sao lưu mail và {{ appsLength }} app.",
- "description": "Vẫn giữ bản sao lưu mặc kệ chính sách lưu giữ được định thế nào"
+ "description": "Giữ bản sao lưu vĩnh viễn (loại trừ ra khỏi chính sách lưu giữ)"
},
"title": "Chỉnh sửa Bản sao lưu",
"label": "Nhãn",
- "remotePath": "Đường dẫn"
+ "remotePath": "Đường dẫn ngoài"
},
"archives": {
"info": "Thông tin",
"title": "Kho Lưu Trữ App"
},
"deleteArchiveDialog": {
- "description": "Sau khi xóa, bản lưu trữ sẽ được dọn dẹp dựa trên chính sách sao lưu.",
- "title": "Xóa Lưu trữ của {{appTitle}} ({{fqdn}})"
+ "description": "Sau khi xóa, bản lưu trữ được dọn dẹp dựa trên chính sách sao lưu.
Xóa \"{{ appTitle }} ({{ appFqdn }})\"?",
+ "title": "Xóa lưu trữ"
},
"restoreArchiveDialog": {
"title": "Khôi phục từ Lưu Trữ",
- "description": "Việc này sẽ cài đặt {{appId}} tại vị trí được xác định từ bản sao lưu hồi {{creationTime}}.",
+ "description": "Khôi phục \"{{appId}}\" đến vị trí được xác định từ bản sao lưu được tạo lúc {{creationTime}}",
"restoreAction": "Khôi phục",
"restoreActionOverwrite": "Khôi phục và tạo DNS mới"
},
"deleteArchive": {
"deleteAction": "Xóa"
- }
+ },
+ "sites": {
+ "title": "Vị trí"
+ },
+ "site": {
+ "addDialog": {
+ "title": "Thêm vị trí sao lưu"
+ }
+ },
+ "configAction": "Thiết lập",
+ "contentAction": "Nội dung",
+ "configureContent": {
+ "title": "Chỉnh nội dung sao lưu"
+ },
+ "useFileAndFileNameEncryption": "Mã hóa tập tin và tên tập tin được sử dụng",
+ "useFileEncryption": "Mã hóa tập tin được sử dụng",
+ "checkIntegrity": "Kiểm tra tính toàn vẹn của dữ liệu",
+ "stopIntegrity": "Dừng kiểm tra tính toàn vẹn dữ liệu"
},
"login": {
"2faToken": "Mã xác minh 2 bước",
@@ -452,12 +543,16 @@
"username": "Tên đăng nhập",
"errorIncorrectCredentials": "Không đúng tên đăng nhập hoặc mật khẩu",
"errorIncorrect2FAToken": "Mã bảo mật 2 Bước không đúng",
- "errorInternal": "Lỗi nội bộ hệ thống, vui lòng thử lại sau"
+ "errorInternal": "Lỗi nội bộ hệ thống, vui lòng thử lại sau",
+ "loginAction": "Đăng nhập",
+ "usePasskeyAction": "Dùng passkey",
+ "errorPasskeyFailed": "Không đăng nhập bằng passkey được",
+ "passkeyAction": "Đăng nhập bằng passkey"
},
"setupAccount": {
"username": "Tên đăng nhập",
"success": {
- "openDashboardAction": "Mở dashboard",
+ "openDashboardAction": "Mở bảng điều khiển",
"title": "Tài khoản của bạn đã sẵn sàng"
},
"invalidToken": {
@@ -472,18 +567,19 @@
"fullName": "Họ tên",
"description": "Xin cài đặt tài khoản của bạn",
"noUsername": {
- "description": "Tài khoản không thể được tạo khi thiếu tên đăng nhập.",
+ "description": "Tài khoản không thể tạo nếu thiếu tên đăng nhập. Vui lòng liên hệ admin.",
"title": "Không thể tạo tài khoản"
- }
+ },
+ "welcome": "Chào mừng"
},
"email": {
"enableEmailDialog": {
"enableAction": "Bật",
- "setupDnsInfo": "Sử dụng lựa chọn này để cài đặt những bản ghi có liên quan đến email. Để trống lựa chọn này sẽ hữu ích cho việc tạo ra các hộp thư và nhập dữ liệu các mail đã có sẵn trước khi đưa vào sử dụng.",
+ "setupDnsInfo": "Tự động cài đặt những bản ghi DNS về mail. Bạn cũng có thể đồng bộ DNS sau đó nếu cần nhập hộp thư trước.",
"setupDnsCheckbox": "Cài đặt các bản ghi DNS ngay",
"noProviderInfo": "Chưa cài đặt nhà cung cấp DNS. Những bản ghi DNS trong phần Trạng thái cần được cài đặt thủ công.",
- "description": "Lựa chọn này sẽ cấu hình Cloudron để nhận mail cho {{ domain }}. Xem hướng dẫn để mở những cổng cần thiết cho Email Cloudron.",
- "title": "Bật chế độ email cho {{ domain }}?"
+ "description": "Cloudron sẽ bắt đầu nhận mail cho \"{{ domain }}\". Xem hướng dẫn để mở những cổng bắt buộc.",
+ "title": "Bật chế độ nhận email"
},
"incoming": {
"mailinglists": {
@@ -491,7 +587,9 @@
"title": "Danh sách chuyển tiếp mail",
"membersOnlyTooltip": "Chỉ cho phép chuyển tiếp mail đến thành viên trong danh sách",
"everyoneTooltip": "Cho phép chuyển tiếp mail cho những người ngoài danh sách",
- "name": "Tên"
+ "name": "Tên",
+ "emptyPlaceholder": "Không có danh sách mail",
+ "noMatchesPlaceholder": "Không có danh sách mail trùng khớp"
},
"mailboxes": {
"usage": "Đã sử dụng",
@@ -499,7 +597,10 @@
"owner": "Chủ sở hữu",
"name": "Tên",
"addAction": "Thêm hộp thư",
- "title": "Hộp thư"
+ "title": "Hộp thư",
+ "emptyPlaceholder": "Không có hộp thư",
+ "noMatchesPlaceholder": "Không có hộp thư trùng khớp",
+ "stats": "Số hộp thư: {{ mailboxCount }} / Đã dùng: {{ usage }}"
},
"port": "Cổng",
"server": "Server",
@@ -509,70 +610,78 @@
"incomingServerInfo": "Mail đến (IMAP)",
"catchall": {
"saveAction": "Lưu",
- "description": "Những mail gửi đến địa chỉ mail không tồn tại sẽ được chuyển tiếp cho những hộp thư dưới đây.",
+ "description": "Những mail gửi đến địa chỉ mail không tồn tại sẽ được chuyển tiếp cho những hộp thư dưới đây",
"title": "Bắt hết cả mail"
},
"howToConnectDescription": "Dùng những cài đặt bên dưới để chỉnh client trao đổi mail.",
"incomingPasswordUsage": "Mật khẩu của chủ sở hữu hộp thư",
"incomingUserInfo": "Tên đăng nhập",
- "incomingPasswordInfo": "Mật khẩu"
+ "incomingPasswordInfo": "Mật khẩu",
+ "description": "Nhận thư gửi vào cho tên miền này"
},
"config": {
"title": "Cấu hình email cho {{ domain }}",
- "clientConfiguration": "Chỉnh client trao đổi email"
+ "clientConfiguration": "Chỉnh client trao đổi email",
+ "sending": {
+ "title": "Gửi thư"
+ },
+ "receiving": {
+ "title": "Nhận thư"
+ }
},
"outbound": {
"mailRelay": {
"username": "Tên đăng nhập",
- "spfDocInfo": "Cloudron không tự động cài đặt bản ghi SPF. Xin cài đặt thủ công theo hướng dẫn {{ name }}.",
+ "spfDocInfo": "Cloudron không tự động cài đặt bản ghi SPF. Xin cài đặt thủ công theo {{ name }} hướng dẫn.",
"password": "Mật khẩu",
"apiTokenOrKey": "Mã/key API",
"selfsignedCheckbox": "Chấp nhận chứng chỉ số tự ký",
"port": "Cổng SMTP (STARTTLS)",
"host": "Host SMTP"
},
- "noopNonAdminDomainWarning": "Cloudron không thể cung cấp dịch vụ gửi mail cho các app trên tên miền này khi chế độ email chưa được bật.",
- "noopAdminDomainWarning": "Cloudron không thể gửi link mời người dùng, đặt lại mật khẩu hay gửi các thông báo khác khi chế độ email chưa được bật trên tên miền chính",
- "description": "Mail server này (Smart host) sẽ được dùng để gửi mail ra cho các app được cài đặt trên tên miền này.",
+ "noopNonAdminDomainWarning": "Email sẽ không được gửi từ tên miền này",
+ "noopAdminDomainWarning": "Cloudron không thể gửi link mời người dùng, đặt lại mật khẩu hay gửi các thông báo khác khi chế độ email gửi ra chưa được bật trên tên miền chính",
+ "description": "Cài đặt cách thức gửi mail ra cho tên miền này",
"title": "Hệ thống relay chuyển mail ra ngoài"
},
"deleteMailinglistDialog": {
"deleteAction": "Xoá",
- "description": "Chắc chắn xoá danh sách chuyển tiếp mail {{ name }}@{{ domain }}?",
- "title": "Xoá danh sách chuyển tiếp mail {{ name }}@{{ domain }}"
+ "description": "Xoá danh sách mail\"{{ name }}@{{ domain }}\"?",
+ "title": "Xoá danh sách mail"
},
"editMailinglistDialog": {
- "title": "Chỉnh sửa danh sách chuyển tiếp mail {{ name }}@{{ domain }}"
+ "title": "Chỉnh danh sách mail"
},
"addMailinglistDialog": {
- "membersOnlyCheckbox": "Chỉ cho phép chuyển tiếp mail cho thành viên trong danh sách",
- "members": "Thành viên",
- "title": "Thêm danh sách chuyển tiếp mail",
- "name": "Tên"
+ "membersOnlyCheckbox": "Chỉ gửi mail cho thành viên trong danh sách",
+ "members": "Thành viên danh sách mail",
+ "title": "Thêm danh sách mail",
+ "name": "Tên danh sách mail"
},
"deleteMailboxDialog": {
"deleteAction": "Xoá",
- "purgeMailboxCheckbox": "Xoá hết tất cả mail và bộ lọc trong hộp thư này",
- "description": "Sau khi xoá hộp thư, tất cả mail đến hộp thư này sẽ bị văng ra. Bạn có thể chọn không xoá mail trong hộp thư vì lý do lưu trữ. Những mail được lưu trữ nằm ở /home/yellowtent/boxdata/mail/vmail trên server này.",
- "title": "Xoá hộp thư {{ name }}@{{ domain }}"
+ "purgeMailboxCheckbox": "Xoá tất cả mail và bộ lọc trong hộp thư này",
+ "description": "Sau khi xoá hộp thư, tất cả mail đến hộp thư này sẽ bị trả lại chủ của nó. Bạn có thể chọn không xoá mail trong hộp thư vì lý do lưu trữ. Những mail được lưu trữ nằm ở \"/home/yellowtent/boxdata/mail/vmail\" trên server này.
Xóa \"{{ name }}@{{ domain }}\"?",
+ "title": "Xoá hộp thư"
},
"editMailboxDialog": {
"addAnotherAliasAction": "Thêm một tên gọi khác nữa",
"addAliasAction": "Thêm một tên gọi khác",
- "noAliases": "Không có tên gọi khác nào được chỉnh.",
+ "noAliases": "Không có tên gọi khác",
"aliases": "Tên gọi khác",
"owner": "Chủ hộp thư",
- "title": "Chỉnh sửa hộp thư {{ name }}@{{ domain }}",
- "enableStorageQuota": "Bật giới hạn lưu trữ"
+ "title": "Chỉnh sửa hộp thư",
+ "enableStorageQuota": "Giới hạn lưu trữ"
},
"addMailboxDialog": {
- "name": "Tên",
- "title": "Thêm hộp thư"
+ "name": "Tên hộp thư",
+ "title": "Thêm hộp thư",
+ "incomingDisabledWarning": "Chưa bật chế độ nhận thư cho tên miền này"
},
"disableEmailDialog": {
"disableAction": "Tắt",
- "description": "Lựa chọn này sẽ cấu hình Cloudron để ngưng nhận mail cho {{ domain }}. Những hộp thư và danh sách liên quan hiện có của tên miền này sẽ không được xoá.",
- "title": "Tắt mail server cho {{ domain }}?"
+ "description": "Cloudron sẽ ngưng nhận mail cho {{ domain }}. Những hộp thư và danh sách thư có trong tên miền này sẽ không bị xoá.",
+ "title": "Tắt nhận email"
},
"smtpStatus": {
"notBlacklisted": "IP của server này {{ ip }} không có trên danh sách chặn.",
@@ -594,35 +703,41 @@
"signature": {
"htmlFormat": "Dạng HTML",
"plainTextFormat": "Dạng văn bản",
- "description": "Phần chữ này sẽ được gắn thêm vào phía cuối mail gửi đi từ tên miền này.",
- "title": "Chữ ký cuối mail"
+ "description": "Phần chữ này sẽ được gắn thêm vào phía cuối mail gửi ra từ tên miền này.",
+ "title": "Chữ ký cuối mail",
+ "customSignatureSet": "Đã chỉnh chữ ký tự chọn",
+ "noSignatureSet": "Chưa cài đặt chữ ký"
},
"updateMailboxDialog": {
"activeCheckbox": "Hộp thư đang hoạt động",
- "enablePop3": "Bật truy cập POP3"
+ "enablePop3": "Truy cập POP3"
},
"updateMailinglistDialog": {
"activeCheckbox": "Danh sách chuyển tiếp đang hoạt động"
},
- "howToConnectInfoModal": "Đang chỉnh client trao đổi mail"
+ "howToConnectInfoModal": "Đang chỉnh client trao đổi mail",
+ "customFrom": {
+ "title": "Cho phép tùy chỉnh địa chỉ mail Gửi từ",
+ "description": "Cho phép người dùng và app đã xác minh tùy chọn địa chỉ Gửi từ"
+ }
},
"network": {
"configureIp": {
"providerGenericDescription": "Địa chỉ IP công cộng của server này sẽ được tự động dò tìm ra.",
- "title": "Cấu hình nhà cung cấp IPv4"
+ "title": "Cấu hình IPv4"
},
"dyndns": {
- "description": "Bật lựa chọn này để đồng bộ các bản ghi DNS với một địa chỉ IP thường xuyên thay đổi. Việc này hữu ích khi Cloudron chạy trên hệ thống mạng với địa chỉ IP hay thay đổi như kết nối mạng ở nhà.",
+ "description": "Giữ các bản ghi DNS đồng bộ ngay cả với một địa chỉ IP công cộng thường xuyên thay đổi. Việc này hữu ích khi Cloudron chạy trên hệ thống mạng với địa chỉ IP hay thay đổi, ví dụ như kết nối mạng ở nhà.",
"title": "DNS động"
},
"firewall": {
"configure": {
"blocklistPlaceholder": "Địa chỉ IP hay Subnet (ghi cách dòng)",
- "description": "Những địa chỉ IP trong đây sẽ không kết nối vào server này được bao gồm mail server, dashboard và tất cả các app. Cẩn thận đừng tự khoá mình ra khỏi server.",
+ "description": "Những địa chỉ IP trùng khớp sẽ bị chặn truy cập vào server này, bao gồm cả mail server, dashboard và tất cả các app. Cẩn thận đừng chặn IP của chính mình.",
"title": "Cấu hình tường lửa"
},
"blocklist": "{{ blockCount }} địa chỉ IP đã được chặn",
- "blockedIpRanges": "Địa chỉ IP và các vùng bị chặn",
+ "blockedIpRanges": "Địa chỉ IP & các phạm vi bị chặn",
"title": "Tường lửa"
},
"ip": {
@@ -631,7 +746,7 @@
"configure": "Cấu hình",
"interface": "Tên giao diện mạng",
"provider": "Nhà cung cấp",
- "description": "Địa chỉ IPv4 này được dùng để cài đặt các bản ghi A của DNS.",
+ "description": "Địa chỉ IPv4 dùng để cho các bản ghi A trong DNS.",
"title": "IPv4",
"address": "Địa chỉ IP"
},
@@ -642,17 +757,17 @@
"ipv6": {
"address": "Địa chỉ IPv6",
"title": "IPv6",
- "description": "Địa chỉ IPv6 này được dùng để cài đặt các bản ghi DNS AAAA."
+ "description": "Địa chỉ IPv6 dùng cho các bản ghi DNS AAAA."
},
"configureIpv6": {
- "title": "Cài đặt nhà cung cấp IPv6"
+ "title": "Cài đặt IPv6"
},
"trustedIps": {
"summary": "{{ trustCount }} địa chỉ IP được tin tưởng",
- "description": "Những HTTP header từ những địa chỉ IP trùng khớp sẽ được chấp thuận cho qua",
+ "description": "HTTP header từ những địa chỉ IP trùng khớp này sẽ được tin tưởng cho qua.",
"title": "Thiết lập những địa chỉ IP đáng tin cậy"
},
- "trustedIpRanges": "Địa chỉ IP & Vùng được tin cậy "
+ "trustedIpRanges": "Địa chỉ IP & Phạm vi được tin cậy "
},
"emails": {
"typeFilterHeader": "Tất cả sự kiện",
@@ -661,22 +776,23 @@
},
"testMailDialog": {
"sendAction": "Gửi",
- "description": "Gửi mail thử từ no-reply@{{ domain }} tới địa chỉ mail dưới đây.",
- "title": "Gủi mail thử cho {{ domain }}"
+ "description": "Gửi mail thử từ no-reply@{{ domain }} tới địa chỉ mail được xác định.",
+ "title": "Gủi mail thử"
},
"spamFilterDialog": {
"customRulesPlaceholder": "Quy định Spamassassin tuỳ chỉnh",
"blacklisteAddressesPlaceholder": "Mẫu địa chỉ mail (ghi cách dòng)",
"customRules": "Quy định Spamassassin tuỳ chỉnh",
"blacklisteAddressesInfo": "Địa chỉ mail trùng khớp trong danh sách đen sẽ bị cho vào mục Spam. Kiểu ghi ‘*’ và ‘?’ cũng được hỗ trợ.",
- "blacklisteAddresses": "Địa chỉ mail trong danh sách đen",
+ "blacklisteAddresses": "Danh sách đen địa chỉ email",
"title": "Bộ lọc spam"
},
"changeMailSizeDialog": {
- "description": "Việc thay đổi kích cỡ mail tối đa này cần phải khởi động lại mail server."
+ "description": "Email lớn hơn kích cỡ này sẽ bị từ chối"
},
"changeDomainDialog": {
- "description": "Hành động này sẽ di chuyển server IMAP và SMTP đến vị trí được xác định."
+ "description": "Đặt server IMAP và SMTP đến vị trí được xác định",
+ "setAction": "Chỉnh vị trí"
},
"eventlog": {
"type": {
@@ -701,13 +817,13 @@
},
"details": "Chi tiết",
"time": "Vào lúc",
- "title": "Log sự kiện email",
+ "title": "Log sự kiện",
"mailFrom": "Đến từ",
"rcptTo": "Gửi cho"
},
"settings": {
"solrFts": "Tìm kiếm dạng văn bản đầy đủ",
- "spamFilterOverview": "{{ blacklistCount }} email có trong danh sách bị chặn.",
+ "spamFilterOverview": "{{ blacklistCount }} email có trong danh sách chặn",
"location": "Nơi đặt máy chủ mail",
"spamFilter": "Lọc spam",
"maxMailSize": "Kích cỡ mail tối đa",
@@ -718,14 +834,15 @@
},
"domains": {
"testEmailTooltip": "Gửi mail thử",
- "stats": "{{ mailboxCount }} Hộp thư / Đã sử dụng: {{ usage }}",
+ "stats": "Hộp thư: {{ mailboxCount }} / Đã sử dụng: {{ usage }}",
"disabled": "Tắt",
"outbound": "Chỉ gửi ra",
- "title": "Tên miền"
+ "title": "Tên miền",
+ "inbound": "Thư vào & Thư ra"
},
"title": "Email",
"mailboxSharing": {
- "description": "Khi tính năng này được bật, người dùng có thể chia sẻ thư mục IMAP của mình với những người dùng khác.",
+ "description": "Khi bật, người dùng có thể chia sẻ thư mục IMAP của mình với những người dùng khác",
"title": "Chia sẻ hộp thư"
},
"aclDialog": {
@@ -735,7 +852,7 @@
"title": "Đổi danh sách quản lý truy cập mail"
},
"changeVirtualAllMailDialog": {
- "description": "Thư mục \"Tất cả Thư\" là một thư mục chứa tất cả thư trong hộp thư của bạn. Thư mục này hữu dụng cho những mail client mà không hỗ trợ chức năng tìm kiếm thư mục xoay vòng."
+ "description": "Thư mục \"Tất cả Thư\" là một thư mục đơn chứa tất cả các email. Nó hữu dụng cho những mail client không hỗ trợ chức năng tìm kiếm thư mục theo vòng lặp đệ quy."
}
},
"branding": {
@@ -743,8 +860,8 @@
"title": "Phần lề dưới"
},
"logo": "Logo",
- "cloudronName": "Tên cho Cloudron",
- "title": "Giao diện",
+ "cloudronName": "Tên Cloudron",
+ "title": "Thương hiệu",
"backgroundImage": "Hình nền trang đăng nhập"
},
"eventlog": {
@@ -769,18 +886,24 @@
"vendor": "Nhà cung cấp",
"product": "Sản phẩm",
"memory": "Bộ nhớ",
- "uptime": "Thời gian online"
+ "uptime": "Thời gian online",
+ "cloudronVersion": "Phiên bản Cloudron",
+ "ubuntuVersion": "Phiên bản Ubuntu"
},
"graphs": {
"title": "Biểu đồ"
},
"locale": {
- "title": "Tùy chỉnh Vùng địa phương"
+ "title": "Vùng địa phương"
+ },
+ "title": "Hệ thống",
+ "settings": {
+ "title": "Cài đặt"
}
},
"support": {
"help": {
- "description": "Xin dùng những nguồn lực sau để được trợ giúp và hỗ trợ\n* [Diễn dàn Cloudron]({{ forumLink }}) - Vui lòng vào Mục Hỗ trợ & App cụ thể để đặt câu hỏi.\n* [HDSD & Kho kiến thức Cloudron]({{ docsLink }})\n* [Đóng gói App tùy chỉnh & API]({{ packagingLink }})\n",
+ "description": "Xin dùng những nguồn lực sau để được trợ giúp và hỗ trợ\n\n* [Diễn dàn Cloudron]({{ forumLink }}) - Vui lòng vào Mục Hỗ trợ & App cụ thể để đặt câu hỏi.\n* [HDSD]({{ docsLink }})\n* [Đóng gói App]({{ packagingLink }})\n* [API]({{ apiLink }})",
"title": "Hỗ trợ"
}
},
@@ -790,7 +913,7 @@
"providerOther": "Khác"
},
"language": {
- "description": "Ngôn ngữ mặc định cho Cloudron được cài đặt ở đây. Ngôn ngữ này sẽ được dùng trong các email trao đổi như mời người dùng hay đặt lại mật khẩu. Mỗi người dùng có thể tuỳ chỉnh ngôn ngữ mình thích trong dashboard.",
+ "description": "Ngôn ngữ mặc định cho Cloudron và email hệ thống (ví dụ: thư mời, đặt lại mật khẩu). Người dùng có thể cài đặt lại ngôn ngữ trong bảng điều khiển ở hồ sơ của mình.",
"title": "Ngôn ngữ"
},
"updateDialog": {
@@ -800,24 +923,29 @@
"unstableWarning": "Bản cập nhật này là phiên bản ra mắt sớm và chưa được ổn định. Xin lưu ý rủi ro khi cập nhật.",
"blockingAppsInfo": "Xin chờ các quá trình trên hoàn thành.",
"blockingApps": "Những app sau đang chặn quá trình cập nhật vì có những tác vụ chưa hoàn thành:",
- "title": "Cập nhật Cloudron lên phiên bản"
+ "title": "Cập nhật Cloudron",
+ "updateAvailable": "Cloudron {{ newVersion }} đã có"
},
"updateScheduleDialog": {
- "description": "Chọn ngày và thời gian mà Cloudron sẽ tự động cập nhật phiên bản mới của hệ thống và app. Xin tránh chọn trùng lịch cập nhật này với lịch sao lưu.",
+ "description": "Cài đặt ngày giờ cho cập nhật tự động hệ thống và app. Tránh chọn trùng lịch với lịch sao lưu.",
"selectOne": "Xin chọn ít nhất một ngày và thời gian",
- "enableCheckbox": "Bật chế độ cập nhật tự động",
- "disableCheckbox": "Tắt chế độ cập nhật tự động"
+ "enableCheckbox": "Bật cập nhật tự động",
+ "disableCheckbox": "Tắt cập nhật tự động"
},
"updates": {
"checkForUpdatesAction": "Kiểm tra cập nhật",
"stopUpdateAction": "Dừng cập nhật",
- "updateAvailableAction": "Có phiên bản cập nhật mới",
+ "updateAvailableAction": "Có bản cập nhật mới",
"title": "Cập nhật",
"disabled": "Đã tắt",
- "description": "Cập nhật Hệ thống và Ứng dụng được thực hiện tự động dựa trên Lịch cập nhật trong Múi giờ hệ thống."
+ "description": "Cập nhật được thực hiện theo lịch trình cài sẵn, chạy theo Múi giờ hệ thống.",
+ "onLatest": "mới nhất",
+ "config": "Cập nhật tự động",
+ "appsOnly": "Chỉ có app",
+ "platformAndApps": "Hệ thống & App"
},
"timezone": {
- "description": "Múi giờ hiện tại là ở {{ timeZone }}. Cài đặt này được dùng cho tác vụ sao lưu và cập nhật. Dấu thời gian hiện ở giao diện được hiển thị theo múi giờ của trình duyệt hiện dùng.",
+ "description": "Được dùng để lên lịch sao lưu và cập nhật. Dấu thời gian trên giao diện luôn đi theo múi giờ của trình duyệt.",
"title": "Múi giờ hệ thống"
},
"appstoreAccount": {
@@ -826,23 +954,38 @@
"cloudronId": "Mã Cloudron ID",
"subscription": "Gói đăng ký",
"setupAction": "Cài đặt tài khoản",
- "description": "Tài khoản Cloudron.io được dùng để truy cập Cửa hàng App và quản lý gói đăng ký.",
+ "description": "Tài khoản Cloudron.io được dùng để quản lý gói đăng ký.",
"title": "Tài khoản Cloudron.io",
- "emailNotVerified": "Địa chỉ email chưa được xác minh"
+ "emailNotVerified": "Địa chỉ email chưa được xác minh",
+ "unlinkDialog": {
+ "title": "Xóa liên kết Tài khoản Cloudron.io",
+ "description": "Xóa liên kết Cloudron với tài khoản Cloudron.io này. Nó có thể được liên kết đến một tài khoản khác."
+ },
+ "account": "Tài khoản",
+ "unlinkAction": "Xóa liên kết tài khoản"
},
- "title": "Hệ thống"
+ "title": "Cài đặt",
+ "configureUpdates": {
+ "title": "Thiết lập Cập Nhật Tự Động",
+ "policyDescription": "Chọn phần được cập nhật tự động",
+ "days": "Ngày",
+ "hours": "Giờ",
+ "schedule": "Lịch cập nhật",
+ "policy": "Chính sách"
+ }
},
"services": {
"configure": {
"resetToDefaults": "Chỉnh về mặc định",
- "title": "Cấu hình {{ name }}",
- "enableRecoveryMode": "Bật chế độ phục hồi"
+ "title": "Cấu hình dịch vụ",
+ "enableRecoveryMode": "Bật chế độ phục hồi",
+ "description": "Chỉnh dịch vụ \"{{ name }}\""
},
"restartActionTooltip": "Khởi động lại",
"memoryLimit": "Giới hạn bộ nhớ",
"memoryUsage": "Dung lượng bộ nhớ sử dụng",
"service": "Dịch vụ",
- "description": "Các dịch vụ dùng cho những tính năng như cơ sở dữ liệu, email và xác thực.",
+ "description": "Những dịch vụ cung cấp các tính năng như cơ sở dữ liệu, email và xác thực.",
"title": "Dịch vụ"
},
"filemanager": {
@@ -855,8 +998,9 @@
"upload": "Tải lên",
"new": "Thêm mới",
"uploadFolder": "Tải thư mục lên",
- "openTerminal": "Mở màn hình terminal",
- "openLogs": "Mở log"
+ "openTerminal": "Mở terminal",
+ "openLogs": "Mở log",
+ "refresh": "Làm mới"
},
"renameDialog": {
"reallyOverwrite": "Trùng tên tập tin hiện có. Ghi đè lên tập tin cũ?",
@@ -866,7 +1010,7 @@
},
"newFileDialog": {
"create": "Tạo",
- "title": "Tập tin mới"
+ "title": "Tên tập tin mới"
},
"newDirectoryDialog": {
"title": "Thư mục mới",
@@ -879,10 +1023,10 @@
"pasteInProgress": "Đang dán",
"deleteInProgress": "Đang xoá",
"chownDialog": {
- "title": "Đổi quyền sở hữu",
+ "title": "Đổi chủ sở hữu",
"newOwner": "Chủ sở hữu mới",
"change": "Đổi chủ sở hữu",
- "recursiveCheckbox": "Đổi quyền sở hữu theo vòng lặp đệ quy"
+ "recursiveCheckbox": "Đổi chủ sở hữu theo vòng lặp đệ quy"
},
"uploadingDialog": {
"title": "Đang tải lên các tập tin ({{ countDone }}/{{ count }})",
@@ -946,22 +1090,24 @@
}
},
"terminal": {
- "downloadAction": "Tải xuống",
+ "downloadAction": "Tải tập tin",
"scheduler": "Lên lịch tự động/Cron",
"download": {
- "download": "Tải xuống"
+ "download": "Tải tập tin",
+ "title": "Tải tập tin",
+ "description": "Nhập đường dẫn của tập tin hoặc thư mục để tải xuống từ hệ thống tập tin trong app."
},
"title": "Màn hình terminal",
"uploadTo": "Tải lên {{ path }}"
},
"logs": {
"download": "Tải xuống tất cả log",
- "clear": "Làm sạch phần xem log",
+ "clear": "Xóa phần xem log",
"title": "Log"
},
"notifications": {
"dismissTooltip": "Xoá",
- "markAllAsRead": "Đánh dấu đã xem qua tất cả",
+ "markAllAsRead": "Đã xem tất cả",
"settings": {
"appOutOfMemory": "App đã chạy hết bộ nhớ",
"appDown": "App bị sụp nguồn",
@@ -971,92 +1117,114 @@
"appUp": "App đã hoạt động trở lại bình thường",
"rebootRequired": "Cần khởi động lại máy chủ",
"cloudronUpdateFailed": "Cập nhật Cloudron thất bại",
- "diskSpace": "Sắp hết dung lượng ổ đĩa"
+ "diskSpace": "Sắp hết dung lượng ổ đĩa",
+ "appAutoUpdateFailed": "Cập nhật tự động app thất bại",
+ "manualUpdateRequired": "Hệ thống hoặc app cần cập nhật thủ công"
},
"settingsDialog": {
- "description": "Một email sẽ được gửi để thông báo những sự kiện được chọn đến địa chỉ email chính của bạn."
+ "description": "Một email sẽ được gửi để thông báo những sự kiện được chọn đến email chính của bạn."
},
- "allCaughtUp": "Đã xem tất cả"
+ "allCaughtUp": "Đã xem tất cả",
+ "title": "Thông báo",
+ "showAll": "Tất cả",
+ "showUnread": "Chưa đọc",
+ "markUnread": "Đánh dấu chưa xem",
+ "markRead": "Đánh dấu đã xem"
},
"domains": {
"removeDialog": {
"removeAction": "Xoá",
- "title": "Chắc chắn xoá {{ domain }}?"
+ "title": "Xóa tên miền",
+ "description": "Xóa tên miền \"{{ domain }}\" ?"
},
"domainDialog": {
- "netcupApiKey": "Key API",
- "netcupApiPassword": "Mật khẩu API",
- "netcupCustomerNumber": "Số khách hàng",
+ "netcupApiKey": "Mã API Netcup",
+ "netcupApiPassword": "Mật khẩu API Netcup",
+ "netcupCustomerNumber": "Mã số khách hàng Netcup",
"mastodonHostname": "Vị trí server Mastodon",
"matrixHostname": "Vị trí server Matrix",
"fallbackCertCertificatePlaceholder": "Chứng chỉ số",
"fallbackCertKeyPlaceholder": "Mã chứng chỉ số",
- "fallbackCertCustomCertInfo": "Chứng chỉ số wildcard tuỳ chỉnh này sẽ được dùng cho tất cả app trên tên miền này. Nếu CCS không được nhập vào, một CCS tự ký sẽ được tự động tạo ra.",
+ "fallbackCertCustomCertInfo": "Cung cấp một chứng chỉ số wildcard để dùng cho tất cả app trên tên miền này. Nếu không được cung cấp, một chưsng chỉ số tự ký sẽ được tự động tạo ra.",
"fallbackCertCustomCert": "Chứng chỉ số tuỳ chỉnh",
"fallbackCert": "Chứng chỉ số dự phòng (không bắt buộc)",
- "zoneName": "Tên zone (không bắt buộc)",
+ "zoneName": "Tên zone",
"advancedAction": "Cài đặt nâng cao…",
"letsEncryptInfo": "Let’s Encrypt cần cổng 80 trên server này mở để kết nối",
"wildcardInfo": "Cài đặt thủ công bản ghi DNS A (IPv4) và AAAA (IPv6) cho *.{{ domain }}. và {{ domain }}. chỉ về máy chủ này",
- "manualInfo": "Tất cả các bản ghi DNS cần được cài đặt thủ công trước khi cài đặt mỗi app.",
- "namecheapInfo": "IP của server này còn được cho phép sử dụng mã API này.",
- "namecheapApiKey": "Mã API",
+ "manualInfo": "Tất cả các bản ghi DNS cần được cài đặt thủ công trước khi cài đặt mỗi app",
+ "namecheapInfo": "IP của server này phải được thêm vào danh sách cho phép sử dụng mã API này",
+ "namecheapApiKey": "Mã API Namecheap",
"namecheapUsername": "Tên đăng nhập Namecheap",
- "nameComApiToken": "Mã API",
+ "nameComApiToken": "Mã token API",
"nameComUsername": "Tên đăng nhập Name.com",
- "linodeToken": "Mã Linode",
+ "linodeToken": "Mã token Linode",
"cloudflareEmail": "Email Cloudflare",
- "cloudflareTokenTypeApiToken": "Mã API",
- "cloudflareTokenTypeGlobalApiKey": "Mã API toàn cầu",
+ "cloudflareTokenTypeApiToken": "Mã token API",
+ "cloudflareTokenTypeGlobalApiKey": "Mã API toàn cầu (Global)",
"cloudflareTokenType": "Loại mã",
- "goDaddyApiSecret": "Mã secret API",
- "goDaddyApiKey": "Key API",
+ "goDaddyApiSecret": "Mã secret API GoDaddy",
+ "goDaddyApiKey": "Mã API GoDaddy",
"gandiApiKey": "Mã API Gandi",
- "digitalOceanToken": "Mã DigitalOcean",
+ "digitalOceanToken": "Mã token DigitalOcean",
"gcdnsServiceAccountKey": "Mã tài khoản dịch vụ",
"route53SecretAccessKey": "Mã secret",
"route53AccessKeyId": "Mã access",
"provider": "Nhà cung cấp DNS",
"domain": "Tên miền",
- "editTitle": "Cấu hình {{ domain }}",
+ "editTitle": "Chỉnh tên miền",
"addTitle": "Thêm tên miền",
- "vultrToken": "Mật mã Vultr",
+ "vultrToken": "Mã token Vultr",
"jitsiHostname": "Vị trí Jitsi",
- "hetznerToken": "Mật mã Hetzner",
- "cloudflareDefaultProxyStatus": "Bật tính năng proxy cho những bản ghi DNS mới",
- "porkbunSecretapikey": "Mã bí mật API",
+ "hetznerToken": "Mã token Hetzner",
+ "cloudflareDefaultProxyStatus": "Bật tính năng proxy cho bản ghi DNS mới",
+ "porkbunSecretapikey": "Mã bí mật API Porkbun",
"bunnyAccessKey": "Mã truy cập Bunny",
- "porkbunApikey": "Key API",
+ "porkbunApikey": "Mã API Porkbun",
"deSecToken": "Mã deSEC",
"dnsimpleAccessToken": "Mã truy cập",
- "ovhAppSecret": "Mã bí mật App",
- "ovhEndpoint": "Điểm Endpoint",
- "ovhConsumerKey": "Mã Khách hàng",
- "ovhAppKey": "Mã App",
- "gandiTokenType": "Loại mã",
+ "ovhAppSecret": "Mã bí mật app OVH",
+ "ovhEndpoint": "Điểm endpoint OVH",
+ "ovhConsumerKey": "Mã Khách hàng OVH",
+ "ovhAppKey": "Mã app OVH",
+ "gandiTokenType": "Loại mã token",
"gandiTokenTypeApiKey": "Mã API (Đã loại bỏ)",
"gandiTokenTypePAT": "Mã truy cập cá nhân (PAT)",
- "inwxUsername": "Tên đăng nhập",
- "inwxPassword": "Mật khẩu",
- "customNameservers": "Tên miền sử dụng nameserver riêng"
+ "inwxUsername": "Tên đăng nhập INWX",
+ "inwxPassword": "Mật khẩu INWX",
+ "customNameservers": "Tên miền sử dụng nameserver riêng",
+ "zoneNamePlaceholder": "Không bắt buộc. Nếu bỏ trống, mặc định là tên miền chính.",
+ "carddavLocation": "Vị trí máy chủ CardDAV",
+ "caldavLocation": "Vị trí máy chủ CalDAV"
},
"changeDashboardDomain": {
"changeAction": "Thay đổi tên miền",
- "description": "Lựa chọn này sẽ chuyển dashboard và mail server sang tên miền con my của tên miền chính được chọn.",
- "title": "Thay đổi tên miền dashboard"
+ "description": "Đổi bảng điều khiển sang tên miền con \"my\" của tên miền chính được chọn",
+ "title": "Tên miền Bảng điều khiển",
+ "confirmMessage": "Lựa chọn này sẽ vô hiệu hóa các mã passkey của người dùng.",
+ "confirmTitle": "Chắc chắn muốn đổi tên miền bảng điều khiển?"
},
"renewCerts": {
- "renewAllAction": "Gia hạn tất cả CCS",
- "description": "Chứng chỉ số Let’s Encrypt được gia hạn tự động. Dùng lựa chọn này để kích hoạt lệnh gia hạn ngay lập tức.",
+ "renewAllAction": "Gia hạn tất cả chứng chỉ số",
+ "description": "Chứng chỉ số Let’s Encrypt được gia hạn tự động. Bạn có thể tự gia hạn nếu cần.",
"title": "Gia hạn chứng chỉ số"
},
- "title": "Tên miền & CCS",
+ "title": "Tên miền",
"provider": "Nhà cung cấp",
"domain": "Tên miền",
"syncDns": {
"title": "Đồng bộ DNS",
- "description": "Lựa chọn này sẽ cấp lại các bản ghi DNS cho app và email cho tất cả tên miền.",
+ "description": "Cập nhật các bản ghi DNS cho app và email cho tất cả tên miền.",
"syncAction": "Đồng bộ DNS"
+ },
+ "emptyPlaceholder": "Không có tên miền",
+ "noMatchesPlaceholder": "Không có tên miền trùng khớp",
+ "description": "Thêm tên miền cho phép bạn cài đặt app trên những tên miền con của nó.",
+ "wellknown": {
+ "context": "Chỉnh phản hồi đến link \"https://{{ domain }}/.well-known/\"",
+ "description": "Tính năng này yêu cầu một app được cài đặt ở tên miền chính \"{{ domain }}\". Xem hướng dẫn sử dụng để biết thêm chi tiết.",
+ "editAction": "Địa chỉ URI Well-known",
+ "title": "Địa chỉ URI Well-known"
}
},
"app": {
@@ -1070,80 +1238,115 @@
"uninstall": {
"uninstall": {
"uninstallAction": "Xoá",
- "description": "Việc này sẽ gỡ cài đặt app và xóa tất cả dữ liệu trong app. Các bản sao lưu sẽ được dọn dẹp dựa trên chính sách sao lưu.",
+ "description": "Gỡ cài đặt app và xóa tất cả dữ liệu trong app. Các bản sao lưu sẽ được dọn dẹp dựa trên chính sách sao lưu.",
"title": "Xoá"
}
},
"repair": {
"recovery": {
- "description": "Nếu app không có phản hồi, hãy thử khởi động lại app. Nếu app bị tự khởi động lại liên tục vì một plugin hay cấu hình hỏng, hãy bật app vào chế độ phục hồi để truy cập vào màn hình console. \nDùng những hướng dẫn sau đây để khởi chạy app trở lại.",
- "title": "Khôi phục khi app bị sụp",
- "restartAction": "Khởi động lại"
+ "description": "Để sửa plugin bị hư hay sai cấu hình, bật chế độ phục hồi cho app.",
+ "title": "Chế độ khôi phục",
+ "restartAction": "Khởi động lại",
+ "disableAction": "Tắt chế độ khôi phục",
+ "enableAction": "Bật chế độ khôi phục"
},
"taskError": {
"retryAction": "Thử lại tác vụ {{ task }}",
- "description": "Nếu một tác vụ cấu hình, cập nhật, khôi phục hay sao lưu bị lỗi, hãy thử làm lại tác vụ đó.",
+ "description": "Thử lại khi tác vụ cài đặt, cấu hình, cập nhật, khôi phục, hay sao lưu bị lỗi.",
"title": "Lỗi tác vụ"
+ },
+ "restart": {
+ "title": "Khởi động lại",
+ "description": "Nếu app không phản hồi, thử khởi động lại app."
}
},
"backups": {
"auto": {
- "description": "Các bản sao lưu được tự động tạo ra dựa trên Lịch sao lưu .",
+ "description": "Sao lưu app theo định kỳ vào Vị trí sao lưu",
"title": "Bản sao lưu tự động"
},
"import": {
- "description": "Dùng tính năng nhập này để di dời app từ một Cloudron khác. App kia phải có phiên bản đóng gói và quyền truy cập giống như app ở đây.",
- "title": "Nhập vào từ bản sao lưu ngoài"
+ "description": "Nhập app từ bản sao lưu ngoài",
+ "title": "Nhập"
},
"backups": {
- "importAction": "Nhập bản sao lưu vào",
+ "importAction": "Nhập bản sao lưu",
"createBackupAction": "Tạo bản sao lưu",
- "restoreTooltip": "Khôi phục app trở về bản sao lưu này",
- "cloneTooltip": "Nhân bản app từ bản sao lưu này",
- "downloadConfigTooltip": "Tải xuống cấu hình bản sao lưu",
- "description": "Bản sao lưu là những bản chụp snapshot hoàn chỉnh của app. Bạn có thể dùng các bản sao lưu để khôi phục hoặc nhân bản app này.",
+ "restoreTooltip": "Khôi phục",
+ "cloneTooltip": "Nhân bản",
+ "downloadConfigTooltip": "Tải xuống cấu hình",
+ "description": "Tạo bản chụp snapshot hoàn chỉnh của app",
"title": "Bản sao lưu",
- "downloadBackupTooltip": "Tải bản sao lưu"
+ "downloadBackupTooltip": "Tải xuống",
+ "checkIntegrity": "Kiểm tra tính toàn vẹn của dữ liệu"
}
},
"updates": {
"info": {
"customAppUpdateInfo": "Tự động cập nhật không có sẵn cho các app tùy chỉnh.",
- "lastUpdated": "Lần cuối cập nhật",
+ "lastUpdated": "Lần cập nhật gần nhất",
"packageVersion": "Phiên bản đóng gói",
"appId": "ID của app",
- "description": "Tên app và phiên bản",
- "installedAt": "Được cài lúc"
+ "description": "Tên app & phiên bản",
+ "installedAt": "Được cài lúc",
+ "packager": "Nhà đóng gói"
+ },
+ "auto": {
+ "description": "Cập nhật app được thực hiện định kỳ dựa trên lịch cập nhật",
+ "title": "Cập nhật tự động"
+ },
+ "updates": {
+ "description": "Cloudron tự động kiểm tra cập nhật mới cho app. Bạn cũng có thể tự kiểm tra thủ công."
}
},
"security": {
"robots": {
- "title": "File Robots.txt"
+ "title": "File Robots.txt",
+ "description": "Mặc định bot có thể lên chỉ mục app này",
+ "commonPattern": {
+ "allowAll": "Cho phép tất cả (mặc định)",
+ "disallowAll": "Không cho phép tất cả",
+ "disallowCommonBots": "Không cho phép bot thông thường",
+ "disallowAdminPaths": "Không cho phép đường dẫn admin",
+ "disallowApiPaths": "Không cho phép đường dẫn API"
+ },
+ "insertCommonRobotsTxt": "Thêm vào robots.txt thông dụng"
},
"csp": {
"saveAction": "Lưu",
"title": "Chính sách an ninh nội dung",
- "description": "Cài đặt lựa chọn này sẽ ghi chèn lên những CSP header gửi từ app này ra"
+ "description": "Ghi đè lên những CSP header được định từ app này",
+ "commonPattern": {
+ "reportOnly": "Báo cáo vi phạm CSP",
+ "allowEmbedding": "Cho phép nhúng",
+ "sameOriginEmbedding": "Cho phép những (chỉ tên miền con)",
+ "allowCdnAssets": "Cho phép các tài sản CDN",
+ "strictBaseline": "Giới hạn mức thấp nhất nghiêm ngặt"
+ },
+ "insertCommonCsp": "Thêm chính sách bảo mật nội dung (CSP) thường dùng"
},
- "hstsPreload": "Bật HSTS preload cho trang web này và tất cả tên miền phụ"
+ "hstsPreload": "Bật HSTS preload (gồm cả tên miền phụ)"
},
"email": {
"from": {
"saveAction": "Lưu",
- "mailboxPlaceholder": "Tên Hộp thư",
- "title": "Địa chỉ mail GỬI TỪ (FROM)",
- "enable": "Dùng Mail Cloudron để gửi mail",
- "disable": "Không chỉnh nhận mail cho app này",
- "enableDescription": "App được cấu hình để gửi mail bằng địa chỉ email sau và theo cài đặt phần Mail gửi ra của {{ domain }}.",
- "disableDescription": "Các cài đặt email của app chưa được chỉnh. Bạn có thể tuỳ chỉnh trong app.",
+ "mailboxPlaceholder": "Tên hộp thư",
+ "title": "Địa chỉ mail gửi từ",
+ "enable": "Dùng Cloudron Mail để gửi thư",
+ "disable": "Không chỉnh nhận gửi mail cho app này",
+ "enableDescription": "Cấu hình app để gửi thư bằng địa chỉ sau và dựa theo cài đặt thư gửi ra.",
+ "disableDescription": "Cài đặt nhận gửi mail của app được giữ nguyên. Bạn có thể tuỳ chỉnh trong app.",
"displayName": "Tên người gửi"
},
"inbox": {
"disable": "Không chỉnh hộp thư",
- "disableDescription": "Cài đặt nhận mail đến của app đang được để trống. Bạn có thể tuỳ chỉnh nó trong app. Hãy chọn phần này nếu email của tên miền không được cài đặt trên Cloudron.",
+ "disableDescription": "Cài đặt nhận mail đến của app được giữ nguyên. Bạn có thể tuỳ chỉnh nó trong app. Chọn lựa chọn này nếu email của tên miền không được đặt trên Cloudron.",
"title": "Mail đến",
"enable": "Dùng mail Cloudron để nhận mail",
- "enableDescription": "App được chỉnh để nhận thư bằng địa chỉ email bên dưới. Hãy chọn phần này nếu email của {{ domain }} đang được chạy trên máy chủ này."
+ "enableDescription": "Cài đặt app để nhận thư bằng địa chỉ email bên dưới. Chọn lựa chọn này nếu email của {{ domain }} đang được chạy trên máy chủ này."
+ },
+ "configuration": {
+ "title": "Thư gửi ra"
}
},
"graphs": {
@@ -1156,14 +1359,14 @@
"live": "Trực tiếp",
"1h": "1 tiếng"
},
- "diskIOTotal": "tổng: đọc {{ read }} / ghi {{ write }}",
- "networkIOTotal": "tổng: vào {{ inbound }} / ra {{ outbound }}"
+ "diskIOTotal": "Tổng: đọc {{ read }} Tổng ghi: {{ write }}",
+ "networkIOTotal": "Tổng vào: {{ inbound }} Tổng ra: {{ outbound }}"
},
"storage": {
"mounts": {
"saveAction": "Lưu",
"addMountAction": "Gắn thêm một volume vào",
- "noMounts": "Không có volume được gắn thêm.",
+ "noMounts": "Không có volume gắn thêm",
"volume": "Volume",
"title": "Volume gắn thêm",
"permissions": {
@@ -1174,8 +1377,8 @@
},
"appdata": {
"moveAction": "Chuyển dữ liệu",
- "description": "Nếu hệ thống đang chạy sắp hết dung lượng ổ đĩa, hãy dùng chức năng này để dời những dữ liệu của app sang qua volume. Bất cứ dữ liệu nào trong đây đều được sao lưu như một phần trong tổng thể app.",
- "title": "Thư mục Dữ liệu",
+ "description": "Chuyển dữ liệu app đến volume. Dữ liệu có trong này được gồm trong bản sao lưu của app.",
+ "title": "Thư mục dữ liệu",
"mountTypeWarning": "Hệ thống tập tin điểm cuối phải hỗ trợ quyền cấp phép và sở hữu cho tập tin để có thể di chuyển dữ liệu"
}
},
@@ -1189,6 +1392,10 @@
"resizeAction": "Chỉnh lại",
"description": "Bộ nhớ tối đa app có thể dùng",
"title": "Giới hạn bộ nhớ"
+ },
+ "devices": {
+ "label": "Thiết bị",
+ "description": "Danh sách thiết bị gắn thêm vào app (cách bởi dấu phẩy)"
}
},
"accessControl": {
@@ -1203,20 +1410,23 @@
"visibleForAllUsers": "Hiển thị với tất cả người dùng trên Cloudron",
"dashboardVisibility": "Chế độ hiển thị dashboard",
"descriptionSftp": "Cài đặt này cũng quản lý quyền truy cập SFTP.",
- "description": "App này được cấu hình để xác minh người dùng bằng thư mục người dùng trên Cloudron. Cài đặt này quản lý việc ai có thể đăng nhập vào và sử dụng app."
+ "description": "Cài đặt ai có thể đăng nhập và sử dụng app"
},
"operators": {
"title": "Điều hành viên",
- "description": "Điều hành viên có thể chỉnh và bảo trì app này."
+ "description": "Cài đặt ai có thể quản lý lâu dài app"
+ },
+ "dashboardVisibility": {
+ "description": "Chỉnh ai có thể thấy app này trên bảng điều khiển."
}
},
"location": {
- "noAliases": "Không có tên miền với tên gọi khác được cài đặt.",
+ "noAliases": "Không có tên miền với tên gọi khác",
"addAliasAction": "Thêm một tên gọi khác",
"aliases": "Tên gọi khác",
"saveAction": "Lưu",
"addRedirectionAction": "Thêm đường chuyển hướng",
- "noRedirections": "Không có tên miền chuyển hướng được cài đặt.",
+ "noRedirections": "Không có tên miền chuyển hướng",
"redirections": "Chuyển hướng",
"locationPlaceholder": "Để trống để dùng tên miền gốc",
"location": "Nơi cài đặt",
@@ -1252,14 +1462,14 @@
"logsActionTooltip": "Log",
"cloneDialog": {
"location": "Nơi cài đặt",
- "description": "Sử dụng bản sao lưu từ {{ creationTime }} và phiên bản v{{ packageVersion }}",
- "title": "Nhân bản {{ app }}"
+ "description": "Dùng bản sao lưu từ {{ creationTime }} (phiên bản {{ packageVersion }}).",
+ "title": "Nhân bản App"
},
"restoreDialog": {
"restoreAction": "Khôi phục",
- "warning": "Những dữ liệu được tạo ra tính từ thời điểm này và lần sao lưu cuối sẽ bị mất vĩnh viễn. Bạn nên tạo một bản sao lưu của những dữ liệu hiện tại trước khi thực hiện việc khôi phục app.",
- "description": "Lựa chọn này sẽ khôi phục app về phần dữ liệu từ {{ creationTime }}.",
- "title": "Khôi phục {{ app }}",
+ "warning": "Bất kỳ dữ liệu được tạo mới từ lần sao lưu trước đến nay sẽ bị mất vĩnh viễn. Bạn nên tạo một bản sao lưu mới trước khi khôi phục app.",
+ "description": "Khôi phục \"{{ fqdn }}\" từ bản sao lưu được tạo ra từ {{ creationTime }} ?",
+ "title": "Khôi phục App",
"cloneAction": "Nhân bản",
"cloneActionOverwrite": "Nhân bản và ghi đè lên DNS"
},
@@ -1274,13 +1484,16 @@
},
"importBackupDialog": {
"importAction": "Nhập vào",
- "uploadAction": "Tải lên cấu hình bản sao lưu",
+ "uploadAction": "tải lên cấu hình bản sao lưu",
"title": "Nhập bản sao lưu vào",
- "remotePath": "Đường dẫn bản sao lưu"
+ "remotePath": "Đường dẫn bản sao lưu",
+ "provideBackupInfo": "Cung cấp thông tin sao lưu để khôi phục",
+ "warning": "Bất kỳ dữ liệu mới được tạo ra kể từ lần sao lưu trước đến nay sẽ bị mất vĩnh viễn. Bạn nên tạo một bản sao lưu mới trước khi nhập.",
+ "versionMustMatchInfo": "Bản sao lưu phải có cùng phiên bản đóng gói và cài đặt quyền truy cập giống với app hiện tại."
},
"uninstallDialog": {
"uninstallAction": "Xoá",
- "description": "Lựa chọn này sẽ xoá {{ app }} và xoá toàn bộ dữ liệu trong đó.",
+ "description": "Xóa \"{{ app }}\" và tất cả dữ liệu trong đó?",
"title": "Xoá {{ app }}"
},
"cron": {
@@ -1295,7 +1508,7 @@
"hourly": "Mỗi tiếng",
"service": "Dịch vụ (chạy 1 lần)"
},
- "description": "Những tác vụ lặp lại cron cụ thể theo app có thể được thêm vào tại đây. Hãy lưu ý rằng những tác vụ cron cần thiết cho app chạy đã được liên kết sẵn với phần đóng gói app và không cần chỉnh ở đây.",
+ "description": "Những tác vụ cron cần thiết cho app hoạt động đã được tích hợp sẵn vào phần đóng gói app. Chỉ thêm tác vụ bổ sung cần cho thiết lập của bạn tại đây.",
"title": "Bảng chạy cron",
"saveAction": "Lưu",
"addCommonPattern": "Thêm bản mẫu thông dụng"
@@ -1306,18 +1519,18 @@
"forumUrlAction": "Cần trợ giúp? Hãy hỏi thử trên diễn đàn nhé",
"servicesTabTitle": "Dịch vụ",
"turn": {
- "title": "Cài đặt TURN",
- "info": "Bật chế độ này để app sử dụng máy chủ TURN được cài sẵn. Khi tắt, cài đặt TURN của app sẽ được để yên."
+ "title": "Cài đặt tự động cho TURN",
+ "info": "Sử dụng máy chủ TURN được cài sẵn. Khi tắt, cài đặt TURN của app được giữ nguyên."
},
"redis": {
- "title": "Thiết lập Redis",
- "info": "Nếu bật, app sẽ sử dụng dịch vụ Redis có sẵn. Khi tắt, cài đặt Redis của app sẽ được giữ nguyên."
+ "title": "Cài đặt tự động Redis",
+ "info": "Dùng dịch vụ Redis có sẵn. Khi tắt, cài đặt Redis của app được giữ nguyên."
},
"addApplinkDialog": {
- "title": "Thêm link app bên ngoài"
+ "title": "Thêm link bên ngoài"
},
"editApplinkDialog": {
- "title": "Chỉnh sửa link app"
+ "title": "Chỉnh sửa link ngoài"
},
"applinks": {
"upstreamUri": "Đường dẫn bên ngoài",
@@ -1326,48 +1539,65 @@
"infoTabTitle": "Thông tin",
"info": {
"notes": {
- "title": "Ghi chú của Admin"
+ "title": "Ghi chú admin"
}
},
"archive": {
"title": "Kho lưu trữ",
- "description": "Bản cập nhật mới nhất sẽ được thêm vào Kho lưu trữ. App sẽ được gỡ bỏ sau đó, nhưng vẫn có thể được khôi phục từ Mục Sao lưu. Những bản sao lưu trước đó sẽ được dọn dẹp dựa trên chính sách sao lưu.",
+ "description": "Thêm bản sao lưu app mới nhất vào Kho Lưu Trữ và xóa app.",
"action": "Kho lưu trữ",
- "latestBackupInfo": "Bản sao lưu mới nhất được tạo lúc {{date}}.",
+ "latestBackupInfo": "Bản sao lưu mới nhất được tạo tại {{siteName}} lúc {{date}}.",
"noBackup": "App chưa có bản sao lưu. Cần một bản sao lưu gần nhất để lưu trữ."
},
"archiveDialog": {
- "title": "Lưu trữ {{app}}",
- "description": "Việc này sẽ xóa app và đặt bản sao lưu app mới nhất được tạo ra lúc {{date}} trong Kho lưu trữ App."
+ "title": "Lưu trữ App",
+ "description": "Xóa app và di chuyển bản sao lưu mới nhất (được tạo ra lúc {{date}}) vào Kho lưu trữ App?"
},
"updateAvailableTooltip": "Có phiên bản cập nhật mới",
- "configureTooltip": "Cấu hình"
+ "configureTooltip": "Cấu hình",
+ "forumAction": "Diễn đàn",
+ "appLink": {
+ "title": "Link ngoài"
+ },
+ "start": {
+ "title": "Khởi động",
+ "description": "Khởi động app để nó hoạt động lại.",
+ "action": "Khởi động"
+ },
+ "stop": {
+ "action": "Dừng",
+ "title": "Dừng",
+ "description": "Dừng app để tiết kiệm tài nguyên. Sao lưu trước khi dừng để bảo lưu lại những thay đổi gần đây."
+ }
},
"volumes": {
"name": "Tên volume",
"title": "Volume",
- "description": "Volume là những hệ thống tập tin trên máy hoặc bên ngoài. Volume có thể được dùng như một nơi lưu trữ chính cho dữ liệu hay là một vị trí lưu trữ được chia sẻ chung ra giữa các app.",
+ "description": "Volume là hệ thống tập tin trên máy chủ này hoặc bên ngoài. Volume có thể được dùng như một nơi lưu trữ chính cho dữ liệu hay chia sẻ qua cho nhau giữa các app.",
"removeVolumeDialog": {
- "removeAction": "Xoá"
+ "removeAction": "Xoá",
+ "title": "Xóa volume",
+ "description": "Xóa volume \"{{ volumeName }}\"?"
},
"addVolumeDialog": {
"title": "Thêm volume",
- "server": "IP hoặc hostname máy chủ",
- "remoteDirectory": "Thư mục bên ngoài",
+ "server": "IP máy chủ / Hostname",
+ "remoteDirectory": "Thư mục ngoài",
"password": "Mật khẩu",
- "diskPath": "Đường dẫn đến ổ đĩa",
+ "diskPath": "Đường dẫn ổ đĩa",
"port": "Cổng",
"user": "Người dùng",
- "privateKey": "Mã SSH riêng",
+ "privateKey": "Mã SSH riêng tư",
"username": "Tên đăng nhập"
},
- "openFileManagerActionTooltip": "Mở Quản lý tập tin",
+ "openFileManagerActionTooltip": "Quản lý tập tin",
"localDirectory": "Thư mục trên máy",
- "remountActionTooltip": "Mount Volume lại",
+ "remountActionTooltip": "Gắn vào lại",
"mountType": "Dạng mount",
"editVolumeDialog": {
- "title": "Chỉnh volume {{ name }}"
- }
+ "title": "Chỉnh Volume"
+ },
+ "emptyPlaceholder": "Không có volume"
},
"welcomeEmail": {
"inviteLinkAction": "Bắt đầu tạo tải khoản",
@@ -1387,7 +1617,7 @@
},
"passwordReset": {
"success": {
- "openDashboardAction": "Mở dashboard",
+ "openDashboardAction": "Mở bảng điều khiển",
"title": "Mật khẩu đã đổi thành công"
},
"passwordChanged": {
@@ -1415,7 +1645,7 @@
},
"storage": {
"mounts": {
- "description": "Các app có thể truy cập vào những volume được mount lên thông qua thư mục /media/(volume name). Dữ liệu này không được bao gồm trong phần bản sao lưu của app."
+ "description": "Volume đã gắn vào có thể được truy cập vào ở \"/media/(volume name)\". Dữ liệu này không được bao gồm trong bản sao lưu của app."
}
},
"oidc": {
@@ -1424,27 +1654,97 @@
"createAction": "Thêm"
},
"client": {
- "loginRedirectUri": "Đường dẫn callback khi đăng nhập (viết cách ra bởi dấu phẩy)",
- "name": "Tên",
+ "loginRedirectUri": "Đường dẫn callback đăng nhập",
+ "name": "Tên client",
"id": "ID client",
"secret": "Mật khẩu client",
- "signingAlgorithm": "Thuật toán ký mã hoá"
+ "signingAlgorithm": "Thuật toán ký mã hoá",
+ "loginRedirectUriPlaceholder": "Đường dẫn cách bởi dấu phẩy"
},
- "description": "Cloudron có thể làm nhà cung cấp kết nối OpenID cho các app trong và ngoài hệ thống.",
+ "description": "Cloudron OpenID có thể được dùng cho đăng nhập một lần (SSO) cho các app ngoài hệ thống.",
"editClientDialog": {
- "title": "Chỉnh sửa client {{ client }}"
+ "title": "Chỉnh client"
},
"deleteClientDialog": {
- "title": "Chắc chắn muốn xoá client {{ client }}?",
- "description": "Xóa OIDC client này sẽ vô hiệu hóa tất cả mã truy cập. Những app sử dụng OIDC client này sẽ không còn xác minh được theo cách này nữa."
+ "title": "Xoá client",
+ "description": "Sau khi xóa, bất kỳ mã truy cập nào được client này tạo ra từ trước sẽ bị vô hiệu hóa. App sử dụng những mã này sẽ không còn xác minh người dùng được.
Xóa client \"{{ clientName }}\"?"
},
"env": {
"discoveryUrl": "Đường dẫn Tìm kiếm"
+ },
+ "clients": {
+ "title": "Client OpenID",
+ "empty": "Không có client OpenID"
+ },
+ "clientCredentials": {
+ "title": "Mật mã client",
+ "description": "Sao chép mật mã cho client \"{{ clientName }}\""
}
},
"userdirectory": {
"settings": {
"title": "Cài đặt"
}
+ },
+ "archives": {
+ "listing": {
+ "placeholder": "Không có app lưu trữ"
+ },
+ "description": "App lưu trữ giữ lại bản sao lưu mới nhất khi app vào Kho lưu trữ. Những bản sao lưu này được lưu giữ vĩnh viễn và có thể được phục hồi."
+ },
+ "backup": {
+ "target": {
+ "label": "Vị trí",
+ "size": "Kích cỡ",
+ "fileCount": "Tập tin"
+ },
+ "sites": {
+ "title": "Vị trí Sao lưu",
+ "emptyPlaceholder": "Không có vị trí sao lưu",
+ "lastRun": "Lần cuối hoạt động",
+ "description": "Vị trí sao lưu xác định nơi mà các bản sao lưu hệ thống và app được lưu giữ. Bản sao lưu app có thể được khôi phục riêng biệt.",
+ "noAutomaticUpdateBackupWarning": "Không có vị trí sao lưu được cài đặt để lưu giữ các bản sao lưu của cập nhật tự động. Bật \"Lưu giữ bản sao lưu của cập nhật tự động tại đây\" trên ít nhất một vị trí sao lưu để cho phép cập nhật tự động."
+ },
+ "site": {
+ "removeDialog": {
+ "description": "Xóa vị trí sao lưu sẽ xóa những mục sao lưu khỏi Cloudron. Những tập tin sao lưu được lưu ở vị trí bên ngoài không được xóa.
Xóa vị trí sao lưu \"{{ name }}\" ?",
+ "title": "Xóa vị trí sao lưu"
+ }
+ }
+ },
+ "dockerRegistries": {
+ "server": "Địa chỉ máy chủ",
+ "provider": "Nhà cung cấp",
+ "username": "Tên đăng nhập",
+ "title": "Registry của Docker",
+ "description": "Chỉnh truy cập vào các registry cá nhân của Docker để cài đặt app tùy chỉnh.",
+ "removeDialog": {
+ "title": "Xóa Registry Docker"
+ },
+ "email": "Email",
+ "passwordToken": "Mật khẩu/Token",
+ "emptyPlaceholder": "Không có registry docker",
+ "dialog": {
+ "addTitle": "Thêm Registry Docker",
+ "editTitle": "Chỉnh Registry Docker"
+ }
+ },
+ "dockerRegistres": {
+ "removeDialog": {
+ "description": "Xóa registry Docker \"{{ serverAddress }}\"?"
+ }
+ },
+ "appearance": {
+ "title": "Giao diện"
+ },
+ "dashboard": {
+ "title": "Bảng điều khiển"
+ },
+ "server": {
+ "title": "Máy chủ"
+ },
+ "communityapp": {
+ "installwarning": "App cộng đồng không được kiểm duyệt bởi Cloudron. Chỉ cài đặt app từ những nhà phát triển đáng tin cậy. Mã chương trình bên ngoài có thể làm nguy hại hệ thống của bạn.",
+ "unstablewarning": "App được nhà phát triển đánh dấu chưa ổn định."
}
}