Browse Source

Fix up language inconsistenties

Jamie Curnow 1 tháng trước cách đây
mục cha
commit
711f312b71

+ 1 - 0
frontend/check-locales.cjs

@@ -9,6 +9,7 @@
 const allLocales = [
 	["en", "en-US"],
 	["es", "es-ES"],
+	["de", "de-DE"],
 ];
 
 const ignoreUnused = [

+ 10 - 21
frontend/src/locale/IntlProvider.tsx

@@ -1,23 +1,23 @@
 import { createIntl, createIntlCache } from "react-intl";
+import langDe from "./lang/de.json";
 import langEn from "./lang/en.json";
 import langEs from "./lang/es.json";
-import langDe from "./lang/de.json";
 import langList from "./lang/lang-list.json";
 
 // first item of each array should be the language code,
 // not the country code
 // Remember when adding to this list, also update check-locales.js script
 const localeOptions = [
-  ["en", "en-US"],
-  ["es", "es-ES"],
-	["de", "de-DE"]
+	["en", "en-US"],
+	["es", "es-ES"],
+	["de", "de-DE"],
 ];
 
 const loadMessages = (locale?: string): typeof langList & typeof langEn => {
 	const thisLocale = locale || "en";
 	switch (thisLocale.slice(0, 2)) {
-	  case "es":
-			return Object.assign({}, langList, langEs);
+		case "es":
+			return Object.assign({}, langList, langEn, langEs);
 		case "de":
 			return Object.assign({}, langList, langEn, langDe);
 		default:
@@ -27,8 +27,8 @@ const loadMessages = (locale?: string): typeof langList & typeof langEn => {
 
 const getFlagCodeForLocale = (locale?: string) => {
 	switch (locale) {
-	  case "es-ES":
-	  case "es":
+		case "es-ES":
+		case "es":
 			return "ES";
 		case "de-DE":
 		case "de":
@@ -56,10 +56,7 @@ const getLocale = (short = false) => {
 const cache = createIntlCache();
 
 const initialMessages = loadMessages(getLocale());
-let intl = createIntl(
-	{ locale: getLocale(), messages: initialMessages },
-	cache,
-);
+let intl = createIntl({ locale: getLocale(), messages: initialMessages }, cache);
 
 const changeLocale = (locale: string): void => {
 	const messages = loadMessages(locale);
@@ -99,12 +96,4 @@ const T = ({
 	);
 };
 
-export {
-	localeOptions,
-	getFlagCodeForLocale,
-	getLocale,
-	createIntl,
-	changeLocale,
-	intl,
-	T,
-};
+export { localeOptions, getFlagCodeForLocale, getLocale, createIntl, changeLocale, intl, T };

+ 3 - 2
frontend/src/locale/lang/de.json

@@ -32,6 +32,7 @@
   "certificate.none.subtitle.for-http": "Dieser Host verwendet kein HTTPS.",
   "certificate.none.title": "Kein",
   "certificate.not-in-use": "Nicht in Benutzung",
+  "certificate.renew": "Zertifikat erneuern",
   "certificates": "Zertifikate",
   "certificates.custom": "Benutzerdefiniertes Zertifikat",
   "certificates.custom.warning": "Mit einem Passwort geschützte Schlüsseldateien werden nicht unterstützt.",
@@ -168,7 +169,7 @@
   "public": "Öffentlich",
   "redirection-host": "Redirection Host",
   "redirection-host.forward-domain": "Forward Domain",
-  "redirection-host.forward-http-code" : "HTTP Code",
+  "redirection-host.forward-http-code": "HTTP Code",
   "redirection-hosts": "Redirection Hosts",
   "redirection-hosts.count": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}",
   "role.admin": "Administrator",
@@ -212,4 +213,4 @@
   "user.switch-light": "Zum Light Mode wechslen",
   "username": "Benutzername",
   "users": "Benutzer"
-}
+}

+ 1 - 1
frontend/src/locale/lang/lang-list.json

@@ -2,4 +2,4 @@
   "locale-de-DE": "German",
   "locale-en-US": "English",
   "locale-es-ES": "Español"
-}
+}

+ 3 - 0
frontend/src/locale/src/de.json

@@ -98,6 +98,9 @@
 	"certificate.not-in-use": {
 		"defaultMessage": "Nicht in Benutzung"
 	},
+	"certificate.renew": {
+		"defaultMessage": "Zertifikat erneuern"
+	},
 	"certificates": {
 		"defaultMessage": "Zertifikate"
 	},

+ 642 - 639
frontend/src/locale/src/es.json

@@ -1,641 +1,644 @@
 {
-  "redirection-host.forward-domain": {
-    "defaultMessage": "Dominio de Reenvío"
-  },
-  "redirection-hosts.count": {
-    "defaultMessage": "{count} {count, plural, one {Host de Redirección} other {Hosts de Redirección}}"
-  },
-  "notification.success": {
-    "defaultMessage": "Éxito"
-  },
-  "setup.preamble": {
-    "defaultMessage": "Comienza creando tu cuenta de administrador."
-  },
-  "column.event": {
-    "defaultMessage": "Evento"
-  },
-  "auditlogs": {
-    "defaultMessage": "Registros de Auditoría"
-  },
-  "enabled": {
-    "defaultMessage": "Habilitado"
-  },
-  "column.source": {
-    "defaultMessage": "Origen"
-  },
-  "column.details": {
-    "defaultMessage": "Detalles"
-  },
-  "column.ssl": {
-    "defaultMessage": "SSL"
-  },
-  "column.destination": {
-    "defaultMessage": "Destino"
-  },
-  "settings.default-site.html": {
-    "defaultMessage": "HTML Personalizado"
-  },
-  "proxy-host": {
-    "defaultMessage": "Host Proxy"
-  },
-  "certificates.dns.propagation-seconds-note": {
-    "defaultMessage": "Dejar vacío para usar el valor predeterminado del plugin. Número de segundos a esperar para la propagación DNS."
-  },
-  "settings.default-site.redirect": {
-    "defaultMessage": "Redirigir"
-  },
-  "hosts": {
-    "defaultMessage": "Hosts"
-  },
-  "users": {
-    "defaultMessage": "Usuarios"
-  },
-  "permissions.visibility.all": {
-    "defaultMessage": "Todos los Elementos"
-  },
-  "password.generate": {
-    "defaultMessage": "Generar contraseña aleatoria"
-  },
-  "host.flags.preserve-path": {
-    "defaultMessage": "Preservar Ruta"
-  },
-  "password.show": {
-    "defaultMessage": "Mostrar Contraseña"
-  },
-  "permissions.visibility.title": {
-    "defaultMessage": "Visibilidad de Elementos"
-  },
-  "http-only": {
-    "defaultMessage": "Solo HTTP"
-  },
-  "empty-search": {
-    "defaultMessage": "No se encontraron resultados"
-  },
-  "column.provider": {
-    "defaultMessage": "Proveedor"
-  },
-  "user": {
-    "defaultMessage": "Usuario"
-  },
-  "domain-names.placeholder": {
-    "defaultMessage": "Comienza a escribir para añadir dominio..."
-  },
-  "certificates": {
-    "defaultMessage": "Certificados"
-  },
-  "host.flags.websockets-upgrade": {
-    "defaultMessage": "Soporte de Websockets"
-  },
-  "dead-host": {
-    "defaultMessage": "Host 404"
-  },
-  "column.email": {
-    "defaultMessage": "Correo Electrónico"
-  },
-  "settings.default-site": {
-    "defaultMessage": "Sitio Predeterminado"
-  },
-  "action.add-location": {
-    "defaultMessage": "Añadir Ubicación"
-  },
-  "settings.default-site.404": {
-    "defaultMessage": "Página 404"
-  },
-  "user.change-password": {
-    "defaultMessage": "Cambiar Contraseña"
-  },
-  "settings": {
-    "defaultMessage": "Configuración"
-  },
-  "certificate.custom-certificate": {
-    "defaultMessage": "Certificado"
-  },
-  "streams": {
-    "defaultMessage": "Streams"
-  },
-  "streams.count": {
-    "defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}"
-  },
-  "error.passwords-must-match": {
-    "defaultMessage": "Las contraseñas deben coincidir"
-  },
-  "ssl-certificate": {
-    "defaultMessage": "Certificado SSL"
-  },
-  "certificate.none.subtitle.for-http": {
-    "defaultMessage": "Este host no usará HTTPS"
-  },
-  "user.confirm-password": {
-    "defaultMessage": "Confirmar Contraseña"
-  },
-  "notfound.title": {
-    "defaultMessage": "Ups… Has encontrado una página de error"
-  },
-  "object.edit": {
-    "defaultMessage": "Editar {object}"
-  },
-  "error.max-domains": {
-    "defaultMessage": "Demasiados dominios, el máximo es {max}"
-  },
-  "column.scheme": {
-    "defaultMessage": "Esquema"
-  },
-  "permissions.hidden": {
-    "defaultMessage": "Oculto"
-  },
-  "certificate.in-use": {
-    "defaultMessage": "En Uso"
-  },
-  "column.satisfy": {
-    "defaultMessage": "Satisfacer"
-  },
-  "column.protocol": {
-    "defaultMessage": "Protocolo"
-  },
-  "action.add": {
-    "defaultMessage": "Añadir"
-  },
-  "column.custom-locations": {
-    "defaultMessage": "Ubicaciones Personalizadas"
-  },
-  "certificate.renew": {
-    "defaultMessage": "Renovar Certificado"
-  },
-  "offline": {
-    "defaultMessage": "Desconectado"
-  },
-  "permissions.visibility.user": {
-    "defaultMessage": "Solo Elementos Creados"
-  },
-  "certificates.dns.credentials": {
-    "defaultMessage": "Contenido del Archivo de Credenciales"
-  },
-  "proxy-hosts": {
-    "defaultMessage": "Hosts Proxy"
-  },
-  "user.edit-profile": {
-    "defaultMessage": "Editar Perfil"
-  },
-  "user.switch-dark": {
-    "defaultMessage": "Cambiar a modo Oscuro"
-  },
-  "certificates.custom.warning": {
-    "defaultMessage": "No se admiten archivos de claves protegidos con contraseña."
-  },
-  "access-list.help.rules-order": {
-    "defaultMessage": "Ten en cuenta que las directivas de permitir y denegar se aplicarán en el orden en que estén definidas."
-  },
-  "save": {
-    "defaultMessage": "Guardar"
-  },
-  "certificates.http.reachability-404": {
-    "defaultMessage": "Se encontró un servidor en este dominio pero no parece ser Nginx Proxy Manager. Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM."
-  },
-  "certificates.http.reachability-wrong-data": {
-    "defaultMessage": "Se encontró un servidor en este dominio pero devolvió datos inesperados. ¿Es el servidor NPM? Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM."
-  },
-  "settings.default-site.congratulations": {
-    "defaultMessage": "Página de Felicitaciones"
-  },
-  "streams.tcp": {
-    "defaultMessage": "TCP"
-  },
-  "user.current-password": {
-    "defaultMessage": "Contraseña Actual"
-  },
-  "access-list": {
-    "defaultMessage": "Lista de Acceso"
-  },
-  "column.access": {
-    "defaultMessage": "Acceso"
-  },
-  "action.delete": {
-    "defaultMessage": "Eliminar"
-  },
-  "certificates.custom": {
-    "defaultMessage": "Certificado Personalizado"
-  },
-  "column.authorizations": {
-    "defaultMessage": "Autorizaciones"
-  },
-  "host.flags.block-exploits": {
-    "defaultMessage": "Bloquear Exploits Comunes"
-  },
-  "object.event.created": {
-    "defaultMessage": "{object} Creado"
-  },
-  "options": {
-    "defaultMessage": "Opciones"
-  },
-  "redirection-host": {
-    "defaultMessage": "Host de Redirección"
-  },
-  "certificate.none.title": {
-    "defaultMessage": "Ninguno"
-  },
-  "created-on": {
-    "defaultMessage": "Creado: {date}"
-  },
-  "user.login-as": {
-    "defaultMessage": "Iniciar sesión como {name}"
-  },
-  "certificates.request.subtitle": {
-    "defaultMessage": "con Let's Encrypt"
-  },
-  "proxy-hosts.count": {
-    "defaultMessage": "{count} {count, plural, one {Host Proxy} other {Hosts Proxy}}"
-  },
-  "host.forward-port": {
-    "defaultMessage": "Puerto de Reenvío"
-  },
-  "notfound.content": {
-    "defaultMessage": "Lo sentimos, pero la página que buscas no fue encontrada"
-  },
-  "access-list.public.subtitle": {
-    "defaultMessage": "No se requiere autenticación básica"
-  },
-  "proxy-host.forward-host": {
-    "defaultMessage": "Nombre de Host / IP de Reenvío"
-  },
-  "settings.default-site.444": {
-    "defaultMessage": "Sin Respuesta (444)"
-  },
-  "settings.default-site.description": {
-    "defaultMessage": "Qué mostrar cuando Nginx recibe un Host desconocido"
-  },
-  "column.expires": {
-    "defaultMessage": "Expira"
-  },
-  "object.delete": {
-    "defaultMessage": "Eliminar {object}"
-  },
-  "notification.object-deleted": {
-    "defaultMessage": "{object} ha sido eliminado"
-  },
-  "cancel": {
-    "defaultMessage": "Cancelar"
-  },
-  "user.set-password": {
-    "defaultMessage": "Establecer Contraseña"
-  },
-  "nginx-config.placeholder": {
-    "defaultMessage": "# ¡Introduce aquí tu configuración personalizada de Nginx bajo tu propio riesgo!"
-  },
-  "access-list.auth-count": {
-    "defaultMessage": "{count} {count, plural, one {Usuario} other {Usuarios}}"
-  },
-  "password.hide": {
-    "defaultMessage": "Ocultar Contraseña"
-  },
-  "settings.default-site.html.placeholder": {
-    "defaultMessage": "<!-- Introduce aquí tu contenido HTML personalizado -->"
-  },
-  "notification.object-renewed": {
-    "defaultMessage": "{object} ha sido renovado"
-  },
-  "object.event.deleted": {
-    "defaultMessage": "{object} Eliminado"
-  },
-  "error.invalid-auth": {
-    "defaultMessage": "Correo electrónico o contraseña no válidos"
-  },
-  "domains.force-ssl": {
-    "defaultMessage": "Forzar SSL"
-  },
-  "domains.hsts-subdomains": {
-    "defaultMessage": "HSTS en Subdominios"
-  },
-  "host.flags.protocols": {
-    "defaultMessage": "Protocolos"
-  },
-  "action.download": {
-    "defaultMessage": "Descargar"
-  },
-  "certificates.dns.warning": {
-    "defaultMessage": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos."
-  },
-  "certificates.request.title": {
-    "defaultMessage": "Solicitar un nuevo Certificado"
-  },
-  "password": {
-    "defaultMessage": "Contraseña"
-  },
-  "notification.object-saved": {
-    "defaultMessage": "{object} ha sido guardado"
-  },
-  "setting": {
-    "defaultMessage": "Configuración"
-  },
-  "object.empty": {
-    "defaultMessage": "No hay {objects}"
-  },
-  "lets-encrypt-via-http": {
-    "defaultMessage": "Let's Encrypt vía HTTP"
-  },
-  "domains.hsts-enabled": {
-    "defaultMessage": "HSTS Habilitado"
-  },
-  "error.maximum": {
-    "defaultMessage": "El máximo es {max}"
-  },
-  "user.switch-light": {
-    "defaultMessage": "Cambiar a modo Claro"
-  },
-  "action.edit": {
-    "defaultMessage": "Editar"
-  },
-  "access-list.subtitle": {
-    "defaultMessage": "{users} {users, plural, one {Usuario} other {Usuarios}}, {rules} {rules, plural, one {Regla} other {Reglas}} - Creado: {date}"
-  },
-  "action.enable": {
-    "defaultMessage": "Habilitar"
-  },
-  "error.access.duplicate-usernames": {
-    "defaultMessage": "Los nombres de usuario de autorización deben ser únicos"
-  },
-  "notfound.action": {
-    "defaultMessage": "Llévame al inicio"
-  },
-  "notification.object-disabled": {
-    "defaultMessage": "{object} ha sido deshabilitado"
-  },
-  "user.logout": {
-    "defaultMessage": "Cerrar Sesión"
-  },
-  "stream.incoming-port": {
-    "defaultMessage": "Puerto de Entrada"
-  },
-  "certificates.http.reachability-ok": {
-    "defaultMessage": "Tu servidor es accesible y debería ser posible crear certificados."
-  },
-  "access-list.help-rules-last": {
-    "defaultMessage": "Cuando exista al menos 1 regla, esta regla de denegar todo se añadirá al final"
-  },
-  "action.view-details": {
-    "defaultMessage": "Ver Detalles"
-  },
-  "notification.object-enabled": {
-    "defaultMessage": "{object} ha sido habilitado"
-  },
-  "object.actions-title": {
-    "defaultMessage": "{object} #{id}"
-  },
-  "username": {
-    "defaultMessage": "Nombre de Usuario"
-  },
-  "user.nickname": {
-    "defaultMessage": "Apodo"
-  },
-  "column.name": {
-    "defaultMessage": "Nombre"
-  },
-  "column.roles": {
-    "defaultMessage": "Roles"
-  },
-  "footer.github-fork": {
-    "defaultMessage": "Bifúrcame en Github"
-  },
-  "object.event.updated": {
-    "defaultMessage": "{object} Actualizado"
-  },
-  "certificates.dns.credentials-warning": {
-    "defaultMessage": "¡Estos datos se almacenarán como texto plano en la base de datos y en un archivo!"
-  },
-  "access-list.satisfy-any": {
-    "defaultMessage": "Satisfacer Cualquiera"
-  },
-  "dead-hosts.count": {
-    "defaultMessage": "{count} {count, plural, one {Host 404} other {Hosts 404}}"
-  },
-  "certificates.dns.propagation-seconds": {
-    "defaultMessage": "Segundos de Propagación"
-  },
-  "error.min-character-length": {
-    "defaultMessage": "La longitud mínima es {min} caracter{min, plural, one {} other {es}}"
-  },
-  "domain-names.max": {
-    "defaultMessage": "{count} nombres de dominio como máximo"
-  },
-  "object.delete.content": {
-    "defaultMessage": "¿Estás seguro de que quieres eliminar este {object}?"
-  },
-  "column.rules": {
-    "defaultMessage": "Reglas"
-  },
-  "error.required": {
-    "defaultMessage": "Este campo es obligatorio"
-  },
-  "certificate": {
-    "defaultMessage": "Certificado"
-  },
-  "public": {
-    "defaultMessage": "Público"
-  },
-  "domains.use-dns": {
-    "defaultMessage": "Usar Desafío DNS"
-  },
-  "error.max-character-length": {
-    "defaultMessage": "La longitud máxima es {max} caracter{max, plural, one {} other {es}}"
-  },
-  "permissions.view": {
-    "defaultMessage": "Solo Ver"
-  },
-  "expires.on": {
-    "defaultMessage": "Expira: {date}"
-  },
-  "setup.title": {
-    "defaultMessage": "¡Bienvenido!"
-  },
-  "certificates.http.reachability-failed-to-check": {
-    "defaultMessage": "No se pudo verificar la accesibilidad debido a un error de comunicación con site24x7.com."
-  },
-  "certificates.http.warning": {
-    "defaultMessage": "Estos dominios ya deben estar configurados para apuntar a esta instalación."
-  },
-  "certificate.custom-certificate-key": {
-    "defaultMessage": "Clave del Certificado"
-  },
-  "empty-subtitle": {
-    "defaultMessage": "¿Por qué no creas uno?"
-  },
-  "dead-hosts": {
-    "defaultMessage": "Hosts 404"
-  },
-  "lets-encrypt": {
-    "defaultMessage": "Let's Encrypt"
-  },
-  "email-address": {
-    "defaultMessage": "Dirección de correo electrónico"
-  },
-  "domain-names": {
-    "defaultMessage": "Nombres de Dominio"
-  },
-  "user.full-name": {
-    "defaultMessage": "Nombre Completo"
-  },
-  "column.incoming-port": {
-    "defaultMessage": "Puerto de Entrada"
-  },
-  "column.http-code": {
-    "defaultMessage": "Acceso"
-  },
-  "certificate.not-in-use": {
-    "defaultMessage": "Sin Usar"
-  },
-  "action.disable": {
-    "defaultMessage": "Deshabilitar"
-  },
-  "redirection-hosts": {
-    "defaultMessage": "Hosts de Redirección"
-  },
-  "streams.udp": {
-    "defaultMessage": "UDP"
-  },
-  "role.admin": {
-    "defaultMessage": "Administrador"
-  },
-  "nginx-config.label": {
-    "defaultMessage": "Configuración Personalizada de Nginx"
-  },
-  "disabled": {
-    "defaultMessage": "Deshabilitado"
-  },
-  "domain-names.wildcards-not-permitted": {
-    "defaultMessage": "No se permiten comodines para este tipo"
-  },
-  "online": {
-    "defaultMessage": "Conectado"
-  },
-  "access-list.public": {
-    "defaultMessage": "Accesible Públicamente"
-  },
-  "action.renew": {
-    "defaultMessage": "Renovar"
-  },
-  "object.add": {
-    "defaultMessage": "Añadir {object}"
-  },
-  "certificates.dns.credentials-note": {
-    "defaultMessage": "Este plugin requiere un archivo de configuración que contenga un token de API u otras credenciales para tu proveedor"
-  },
-  "error.invalid-email": {
-    "defaultMessage": "Dirección de correo electrónico no válida"
-  },
-  "notification.error": {
-    "defaultMessage": "Error"
-  },
-  "error.invalid-domain": {
-    "defaultMessage": "Dominio no válido: {domain}"
-  },
-  "user.set-permissions": {
-    "defaultMessage": "Establecer Permisos para {name}"
-  },
-  "certificate.none.subtitle": {
-    "defaultMessage": "Sin certificado asignado"
-  },
-  "object.event.enabled": {
-    "defaultMessage": "{object} Habilitado"
-  },
-  "login.title": {
-    "defaultMessage": "Inicia sesión en tu cuenta"
-  },
-  "access-list.access-count": {
-    "defaultMessage": "{count} {count, plural, one {Regla} other {Reglas}}"
-  },
-  "certificate.custom-intermediate": {
-    "defaultMessage": "Certificado Intermedio"
-  },
-  "error.access.at-least-one": {
-    "defaultMessage": "Se requiere al menos una Autorización o una Regla de Acceso"
-  },
-  "stream": {
-    "defaultMessage": "Stream"
-  },
-  "action.close": {
-    "defaultMessage": "Cerrar"
-  },
-  "certificates.http.test-results": {
-    "defaultMessage": "Resultados de la Prueba"
-  },
-  "certificates.dns.provider": {
-    "defaultMessage": "Proveedor DNS"
-  },
-  "object.event.renewed": {
-    "defaultMessage": "{object} Renovado"
-  },
-  "lets-encrypt-via-dns": {
-    "defaultMessage": "Let's Encrypt vía DNS"
-  },
-  "certificates.http.reachability-not-resolved": {
-    "defaultMessage": "No hay ningún servidor disponible en este dominio. Asegúrate de que tu dominio existe y apunta a la IP donde se está ejecutando tu instancia de NPM y, si es necesario, que el puerto 80 esté redirigido en tu router."
-  },
-  "no-permission-error": {
-    "defaultMessage": "No tienes acceso para ver esto."
-  },
-  "column.satisfy-all": {
-    "defaultMessage": "Todo"
-  },
-  "host.forward-scheme": {
-    "defaultMessage": "Esquema"
-  },
-  "domains.http2-support": {
-    "defaultMessage": "Soporte HTTP/2"
-  },
-  "action.permissions": {
-    "defaultMessage": "Permisos"
-  },
-  "loading": {
-    "defaultMessage": "Cargando…"
-  },
-  "object.event.disabled": {
-    "defaultMessage": "{object} Deshabilitado"
-  },
-  "dashboard": {
-    "defaultMessage": "Panel de Control"
-  },
-  "sign-in": {
-    "defaultMessage": "Iniciar Sesión"
-  },
-  "permissions.manage": {
-    "defaultMessage": "Gestionar"
-  },
-  "user.new-password": {
-    "defaultMessage": "Nueva Contraseña"
-  },
-  "stream.forward-host": {
-    "defaultMessage": "Host de Reenvío"
-  },
-  "test": {
-    "defaultMessage": "Probar"
-  },
-  "column.authorization": {
-    "defaultMessage": "Autorización"
-  },
-  "column.satisfy-any": {
-    "defaultMessage": "Cualquiera"
-  },
-  "host.flags.cache-assets": {
-    "defaultMessage": "Cachear Recursos"
-  },
-  "access-lists": {
-    "defaultMessage": "Listas de Acceso"
-  },
-  "role.standard-user": {
-    "defaultMessage": "Usuario Estándar"
-  },
-  "certificates.http.reachability-other": {
-    "defaultMessage": "Se encontró un servidor en este dominio pero devolvió un código de estado inesperado {code}. ¿Es el servidor NPM? Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM."
-  },
-  "column.status": {
-    "defaultMessage": "Estado"
-  },
-  "error.minimum": {
-    "defaultMessage": "El mínimo es {min}"
-  },
-  "domain-names.wildcards-not-supported": {
-    "defaultMessage": "No se admiten comodines para esta CA"
-  },
-  "access-list.pass-auth": {
-    "defaultMessage": "Pasar Autenticación al Upstream"
-  }
+	"access-list": {
+		"defaultMessage": "Lista de Acceso"
+	},
+	"access-list.access-count": {
+		"defaultMessage": "{count} {count, plural, one {Regla} other {Reglas}}"
+	},
+	"access-list.auth-count": {
+		"defaultMessage": "{count} {count, plural, one {Usuario} other {Usuarios}}"
+	},
+	"access-list.help-rules-last": {
+		"defaultMessage": "Cuando exista al menos 1 regla, esta regla de denegar todo se añadirá al final"
+	},
+	"access-list.help.rules-order": {
+		"defaultMessage": "Ten en cuenta que las directivas de permitir y denegar se aplicarán en el orden en que estén definidas."
+	},
+	"access-list.pass-auth": {
+		"defaultMessage": "Pasar Autenticación al Upstream"
+	},
+	"access-list.public": {
+		"defaultMessage": "Accesible Públicamente"
+	},
+	"access-list.public.subtitle": {
+		"defaultMessage": "No se requiere autenticación básica"
+	},
+	"access-list.satisfy-any": {
+		"defaultMessage": "Satisfacer Cualquiera"
+	},
+	"access-list.subtitle": {
+		"defaultMessage": "{users} {users, plural, one {Usuario} other {Usuarios}}, {rules} {rules, plural, one {Regla} other {Reglas}} - Creado: {date}"
+	},
+	"access-lists": {
+		"defaultMessage": "Listas de Acceso"
+	},
+	"action.add": {
+		"defaultMessage": "Añadir"
+	},
+	"action.add-location": {
+		"defaultMessage": "Añadir Ubicación"
+	},
+	"action.close": {
+		"defaultMessage": "Cerrar"
+	},
+	"action.delete": {
+		"defaultMessage": "Eliminar"
+	},
+	"action.disable": {
+		"defaultMessage": "Deshabilitar"
+	},
+	"action.download": {
+		"defaultMessage": "Descargar"
+	},
+	"action.edit": {
+		"defaultMessage": "Editar"
+	},
+	"action.enable": {
+		"defaultMessage": "Habilitar"
+	},
+	"action.permissions": {
+		"defaultMessage": "Permisos"
+	},
+	"action.renew": {
+		"defaultMessage": "Renovar"
+	},
+	"action.view-details": {
+		"defaultMessage": "Ver Detalles"
+	},
+	"auditlogs": {
+		"defaultMessage": "Registros de Auditoría"
+	},
+	"cancel": {
+		"defaultMessage": "Cancelar"
+	},
+	"certificate": {
+		"defaultMessage": "Certificado"
+	},
+	"certificate.custom-certificate": {
+		"defaultMessage": "Certificado"
+	},
+	"certificate.custom-certificate-key": {
+		"defaultMessage": "Clave del Certificado"
+	},
+	"certificate.custom-intermediate": {
+		"defaultMessage": "Certificado Intermedio"
+	},
+	"certificate.in-use": {
+		"defaultMessage": "En Uso"
+	},
+	"certificate.none.subtitle": {
+		"defaultMessage": "Sin certificado asignado"
+	},
+	"certificate.none.subtitle.for-http": {
+		"defaultMessage": "Este host no usará HTTPS"
+	},
+	"certificate.none.title": {
+		"defaultMessage": "Ninguno"
+	},
+	"certificate.not-in-use": {
+		"defaultMessage": "Sin Usar"
+	},
+	"certificate.renew": {
+		"defaultMessage": "Renovar Certificado"
+	},
+	"certificates": {
+		"defaultMessage": "Certificados"
+	},
+	"certificates.custom": {
+		"defaultMessage": "Certificado Personalizado"
+	},
+	"certificates.custom.warning": {
+		"defaultMessage": "No se admiten archivos de claves protegidos con contraseña."
+	},
+	"certificates.dns.credentials": {
+		"defaultMessage": "Contenido del Archivo de Credenciales"
+	},
+	"certificates.dns.credentials-note": {
+		"defaultMessage": "Este plugin requiere un archivo de configuración que contenga un token de API u otras credenciales para tu proveedor"
+	},
+	"certificates.dns.credentials-warning": {
+		"defaultMessage": "¡Estos datos se almacenarán como texto plano en la base de datos y en un archivo!"
+	},
+	"certificates.dns.propagation-seconds": {
+		"defaultMessage": "Segundos de Propagación"
+	},
+	"certificates.dns.propagation-seconds-note": {
+		"defaultMessage": "Dejar vacío para usar el valor predeterminado del plugin. Número de segundos a esperar para la propagación DNS."
+	},
+	"certificates.dns.provider": {
+		"defaultMessage": "Proveedor DNS"
+	},
+	"certificates.dns.warning": {
+		"defaultMessage": "Esta sección requiere algunos conocimientos sobre Certbot y sus plugins DNS. Consulta la documentación de los plugins respectivos."
+	},
+	"certificates.http.reachability-404": {
+		"defaultMessage": "Se encontró un servidor en este dominio pero no parece ser Nginx Proxy Manager. Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM."
+	},
+	"certificates.http.reachability-failed-to-check": {
+		"defaultMessage": "No se pudo verificar la accesibilidad debido a un error de comunicación con site24x7.com."
+	},
+	"certificates.http.reachability-not-resolved": {
+		"defaultMessage": "No hay ningún servidor disponible en este dominio. Asegúrate de que tu dominio existe y apunta a la IP donde se está ejecutando tu instancia de NPM y, si es necesario, que el puerto 80 esté redirigido en tu router."
+	},
+	"certificates.http.reachability-ok": {
+		"defaultMessage": "Tu servidor es accesible y debería ser posible crear certificados."
+	},
+	"certificates.http.reachability-other": {
+		"defaultMessage": "Se encontró un servidor en este dominio pero devolvió un código de estado inesperado {code}. ¿Es el servidor NPM? Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM."
+	},
+	"certificates.http.reachability-wrong-data": {
+		"defaultMessage": "Se encontró un servidor en este dominio pero devolvió datos inesperados. ¿Es el servidor NPM? Asegúrate de que tu dominio apunte a la IP donde se está ejecutando tu instancia de NPM."
+	},
+	"certificates.http.test-results": {
+		"defaultMessage": "Resultados de la Prueba"
+	},
+	"certificates.http.warning": {
+		"defaultMessage": "Estos dominios ya deben estar configurados para apuntar a esta instalación."
+	},
+	"certificates.request.subtitle": {
+		"defaultMessage": "con Let's Encrypt"
+	},
+	"certificates.request.title": {
+		"defaultMessage": "Solicitar un nuevo Certificado"
+	},
+	"column.access": {
+		"defaultMessage": "Acceso"
+	},
+	"column.authorization": {
+		"defaultMessage": "Autorización"
+	},
+	"column.authorizations": {
+		"defaultMessage": "Autorizaciones"
+	},
+	"column.custom-locations": {
+		"defaultMessage": "Ubicaciones Personalizadas"
+	},
+	"column.destination": {
+		"defaultMessage": "Destino"
+	},
+	"column.details": {
+		"defaultMessage": "Detalles"
+	},
+	"column.email": {
+		"defaultMessage": "Correo Electrónico"
+	},
+	"column.event": {
+		"defaultMessage": "Evento"
+	},
+	"column.expires": {
+		"defaultMessage": "Expira"
+	},
+	"column.http-code": {
+		"defaultMessage": "Código HTTP"
+	},
+	"column.incoming-port": {
+		"defaultMessage": "Puerto de Entrada"
+	},
+	"column.name": {
+		"defaultMessage": "Nombre"
+	},
+	"column.protocol": {
+		"defaultMessage": "Protocolo"
+	},
+	"column.provider": {
+		"defaultMessage": "Proveedor"
+	},
+	"column.roles": {
+		"defaultMessage": "Roles"
+	},
+	"column.rules": {
+		"defaultMessage": "Reglas"
+	},
+	"column.satisfy": {
+		"defaultMessage": "Satisfacer"
+	},
+	"column.satisfy-all": {
+		"defaultMessage": "Todo"
+	},
+	"column.satisfy-any": {
+		"defaultMessage": "Cualquiera"
+	},
+	"column.scheme": {
+		"defaultMessage": "Esquema"
+	},
+	"column.source": {
+		"defaultMessage": "Origen"
+	},
+	"column.ssl": {
+		"defaultMessage": "SSL"
+	},
+	"column.status": {
+		"defaultMessage": "Estado"
+	},
+	"created-on": {
+		"defaultMessage": "Creado: {date}"
+	},
+	"dashboard": {
+		"defaultMessage": "Panel de Control"
+	},
+	"dead-host": {
+		"defaultMessage": "Host 404"
+	},
+	"dead-hosts": {
+		"defaultMessage": "Hosts 404"
+	},
+	"dead-hosts.count": {
+		"defaultMessage": "{count} {count, plural, one {Host 404} other {Hosts 404}}"
+	},
+	"disabled": {
+		"defaultMessage": "Deshabilitado"
+	},
+	"domain-names": {
+		"defaultMessage": "Nombres de Dominio"
+	},
+	"domain-names.max": {
+		"defaultMessage": "{count} nombres de dominio como máximo"
+	},
+	"domain-names.placeholder": {
+		"defaultMessage": "Comienza a escribir para añadir dominio..."
+	},
+	"domain-names.wildcards-not-permitted": {
+		"defaultMessage": "No se permiten comodines para este tipo"
+	},
+	"domain-names.wildcards-not-supported": {
+		"defaultMessage": "No se admiten comodines para esta CA"
+	},
+	"domains.force-ssl": {
+		"defaultMessage": "Forzar SSL"
+	},
+	"domains.hsts-enabled": {
+		"defaultMessage": "HSTS Habilitado"
+	},
+	"domains.hsts-subdomains": {
+		"defaultMessage": "HSTS en Subdominios"
+	},
+	"domains.http2-support": {
+		"defaultMessage": "Soporte HTTP/2"
+	},
+	"domains.use-dns": {
+		"defaultMessage": "Usar Desafío DNS"
+	},
+	"email-address": {
+		"defaultMessage": "Dirección de correo electrónico"
+	},
+	"empty-search": {
+		"defaultMessage": "No se encontraron resultados"
+	},
+	"empty-subtitle": {
+		"defaultMessage": "¿Por qué no creas uno?"
+	},
+	"enabled": {
+		"defaultMessage": "Habilitado"
+	},
+	"error.access.at-least-one": {
+		"defaultMessage": "Se requiere al menos una Autorización o una Regla de Acceso"
+	},
+	"error.access.duplicate-usernames": {
+		"defaultMessage": "Los nombres de usuario de autorización deben ser únicos"
+	},
+	"error.invalid-auth": {
+		"defaultMessage": "Correo electrónico o contraseña no válidos"
+	},
+	"error.invalid-domain": {
+		"defaultMessage": "Dominio no válido: {domain}"
+	},
+	"error.invalid-email": {
+		"defaultMessage": "Dirección de correo electrónico no válida"
+	},
+	"error.max-character-length": {
+		"defaultMessage": "La longitud máxima es {max} caracter{max, plural, one {} other {es}}"
+	},
+	"error.max-domains": {
+		"defaultMessage": "Demasiados dominios, el máximo es {max}"
+	},
+	"error.maximum": {
+		"defaultMessage": "El máximo es {max}"
+	},
+	"error.min-character-length": {
+		"defaultMessage": "La longitud mínima es {min} caracter{min, plural, one {} other {es}}"
+	},
+	"error.minimum": {
+		"defaultMessage": "El mínimo es {min}"
+	},
+	"error.passwords-must-match": {
+		"defaultMessage": "Las contraseñas deben coincidir"
+	},
+	"error.required": {
+		"defaultMessage": "Este campo es obligatorio"
+	},
+	"expires.on": {
+		"defaultMessage": "Expira: {date}"
+	},
+	"footer.github-fork": {
+		"defaultMessage": "Bifúrcame en Github"
+	},
+	"host.flags.block-exploits": {
+		"defaultMessage": "Bloquear Exploits Comunes"
+	},
+	"host.flags.cache-assets": {
+		"defaultMessage": "Cachear Recursos"
+	},
+	"host.flags.preserve-path": {
+		"defaultMessage": "Preservar Ruta"
+	},
+	"host.flags.protocols": {
+		"defaultMessage": "Protocolos"
+	},
+	"host.flags.websockets-upgrade": {
+		"defaultMessage": "Soporte de Websockets"
+	},
+	"host.forward-port": {
+		"defaultMessage": "Puerto de Reenvío"
+	},
+	"host.forward-scheme": {
+		"defaultMessage": "Esquema"
+	},
+	"hosts": {
+		"defaultMessage": "Hosts"
+	},
+	"http-only": {
+		"defaultMessage": "Solo HTTP"
+	},
+	"lets-encrypt": {
+		"defaultMessage": "Let's Encrypt"
+	},
+	"lets-encrypt-via-dns": {
+		"defaultMessage": "Let's Encrypt vía DNS"
+	},
+	"lets-encrypt-via-http": {
+		"defaultMessage": "Let's Encrypt vía HTTP"
+	},
+	"loading": {
+		"defaultMessage": "Cargando…"
+	},
+	"login.title": {
+		"defaultMessage": "Inicia sesión en tu cuenta"
+	},
+	"nginx-config.label": {
+		"defaultMessage": "Configuración Personalizada de Nginx"
+	},
+	"nginx-config.placeholder": {
+		"defaultMessage": "# ¡Introduce aquí tu configuración personalizada de Nginx bajo tu propio riesgo!"
+	},
+	"no-permission-error": {
+		"defaultMessage": "No tienes acceso para ver esto."
+	},
+	"notfound.action": {
+		"defaultMessage": "Llévame al inicio"
+	},
+	"notfound.content": {
+		"defaultMessage": "Lo sentimos, pero la página que buscas no fue encontrada"
+	},
+	"notfound.title": {
+		"defaultMessage": "Ups… Has encontrado una página de error"
+	},
+	"notification.error": {
+		"defaultMessage": "Error"
+	},
+	"notification.object-deleted": {
+		"defaultMessage": "{object} ha sido eliminado"
+	},
+	"notification.object-disabled": {
+		"defaultMessage": "{object} ha sido deshabilitado"
+	},
+	"notification.object-enabled": {
+		"defaultMessage": "{object} ha sido habilitado"
+	},
+	"notification.object-renewed": {
+		"defaultMessage": "{object} ha sido renovado"
+	},
+	"notification.object-saved": {
+		"defaultMessage": "{object} ha sido guardado"
+	},
+	"notification.success": {
+		"defaultMessage": "Éxito"
+	},
+	"object.actions-title": {
+		"defaultMessage": "{object} #{id}"
+	},
+	"object.add": {
+		"defaultMessage": "Añadir {object}"
+	},
+	"object.delete": {
+		"defaultMessage": "Eliminar {object}"
+	},
+	"object.delete.content": {
+		"defaultMessage": "¿Estás seguro de que quieres eliminar este {object}?"
+	},
+	"object.edit": {
+		"defaultMessage": "Editar {object}"
+	},
+	"object.empty": {
+		"defaultMessage": "No hay {objects}"
+	},
+	"object.event.created": {
+		"defaultMessage": "{object} Creado"
+	},
+	"object.event.deleted": {
+		"defaultMessage": "{object} Eliminado"
+	},
+	"object.event.disabled": {
+		"defaultMessage": "{object} Deshabilitado"
+	},
+	"object.event.enabled": {
+		"defaultMessage": "{object} Habilitado"
+	},
+	"object.event.renewed": {
+		"defaultMessage": "{object} Renovado"
+	},
+	"object.event.updated": {
+		"defaultMessage": "{object} Actualizado"
+	},
+	"offline": {
+		"defaultMessage": "Desconectado"
+	},
+	"online": {
+		"defaultMessage": "Conectado"
+	},
+	"options": {
+		"defaultMessage": "Opciones"
+	},
+	"password": {
+		"defaultMessage": "Contraseña"
+	},
+	"password.generate": {
+		"defaultMessage": "Generar contraseña aleatoria"
+	},
+	"password.hide": {
+		"defaultMessage": "Ocultar Contraseña"
+	},
+	"password.show": {
+		"defaultMessage": "Mostrar Contraseña"
+	},
+	"permissions.hidden": {
+		"defaultMessage": "Oculto"
+	},
+	"permissions.manage": {
+		"defaultMessage": "Gestionar"
+	},
+	"permissions.view": {
+		"defaultMessage": "Solo Ver"
+	},
+	"permissions.visibility.all": {
+		"defaultMessage": "Todos los Elementos"
+	},
+	"permissions.visibility.title": {
+		"defaultMessage": "Visibilidad de Elementos"
+	},
+	"permissions.visibility.user": {
+		"defaultMessage": "Solo Elementos Creados"
+	},
+	"proxy-host": {
+		"defaultMessage": "Host Proxy"
+	},
+	"proxy-host.forward-host": {
+		"defaultMessage": "Nombre de Host / IP de Reenvío"
+	},
+	"proxy-hosts": {
+		"defaultMessage": "Hosts Proxy"
+	},
+	"proxy-hosts.count": {
+		"defaultMessage": "{count} {count, plural, one {Host Proxy} other {Hosts Proxy}}"
+	},
+	"public": {
+		"defaultMessage": "Público"
+	},
+	"redirection-host": {
+		"defaultMessage": "Host de Redirección"
+	},
+	"redirection-host.forward-domain": {
+		"defaultMessage": "Dominio de Reenvío"
+	},
+	"redirection-host.forward-http-code": {
+		"defaultMessage": "Código HTTP"
+	},
+	"redirection-hosts": {
+		"defaultMessage": "Hosts de Redirección"
+	},
+	"redirection-hosts.count": {
+		"defaultMessage": "{count} {count, plural, one {Host de Redirección} other {Hosts de Redirección}}"
+	},
+	"role.admin": {
+		"defaultMessage": "Administrador"
+	},
+	"role.standard-user": {
+		"defaultMessage": "Usuario Estándar"
+	},
+	"save": {
+		"defaultMessage": "Guardar"
+	},
+	"setting": {
+		"defaultMessage": "Configuración"
+	},
+	"settings": {
+		"defaultMessage": "Configuración"
+	},
+	"settings.default-site": {
+		"defaultMessage": "Sitio Predeterminado"
+	},
+	"settings.default-site.404": {
+		"defaultMessage": "Página 404"
+	},
+	"settings.default-site.444": {
+		"defaultMessage": "Sin Respuesta (444)"
+	},
+	"settings.default-site.congratulations": {
+		"defaultMessage": "Página de Felicitaciones"
+	},
+	"settings.default-site.description": {
+		"defaultMessage": "Qué mostrar cuando Nginx recibe un Host desconocido"
+	},
+	"settings.default-site.html": {
+		"defaultMessage": "HTML Personalizado"
+	},
+	"settings.default-site.html.placeholder": {
+		"defaultMessage": "<!-- Introduce aquí tu contenido HTML personalizado -->"
+	},
+	"settings.default-site.redirect": {
+		"defaultMessage": "Redirigir"
+	},
+	"setup.preamble": {
+		"defaultMessage": "Comienza creando tu cuenta de administrador."
+	},
+	"setup.title": {
+		"defaultMessage": "¡Bienvenido!"
+	},
+	"sign-in": {
+		"defaultMessage": "Iniciar Sesión"
+	},
+	"ssl-certificate": {
+		"defaultMessage": "Certificado SSL"
+	},
+	"stream": {
+		"defaultMessage": "Stream"
+	},
+	"stream.forward-host": {
+		"defaultMessage": "Host de Reenvío"
+	},
+	"stream.incoming-port": {
+		"defaultMessage": "Puerto de Entrada"
+	},
+	"streams": {
+		"defaultMessage": "Streams"
+	},
+	"streams.count": {
+		"defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}"
+	},
+	"streams.tcp": {
+		"defaultMessage": "TCP"
+	},
+	"streams.udp": {
+		"defaultMessage": "UDP"
+	},
+	"test": {
+		"defaultMessage": "Probar"
+	},
+	"user": {
+		"defaultMessage": "Usuario"
+	},
+	"user.change-password": {
+		"defaultMessage": "Cambiar Contraseña"
+	},
+	"user.confirm-password": {
+		"defaultMessage": "Confirmar Contraseña"
+	},
+	"user.current-password": {
+		"defaultMessage": "Contraseña Actual"
+	},
+	"user.edit-profile": {
+		"defaultMessage": "Editar Perfil"
+	},
+	"user.full-name": {
+		"defaultMessage": "Nombre Completo"
+	},
+	"user.login-as": {
+		"defaultMessage": "Iniciar sesión como {name}"
+	},
+	"user.logout": {
+		"defaultMessage": "Cerrar Sesión"
+	},
+	"user.new-password": {
+		"defaultMessage": "Nueva Contraseña"
+	},
+	"user.nickname": {
+		"defaultMessage": "Apodo"
+	},
+	"user.set-password": {
+		"defaultMessage": "Establecer Contraseña"
+	},
+	"user.set-permissions": {
+		"defaultMessage": "Establecer Permisos para {name}"
+	},
+	"user.switch-dark": {
+		"defaultMessage": "Cambiar a modo Oscuro"
+	},
+	"user.switch-light": {
+		"defaultMessage": "Cambiar a modo Claro"
+	},
+	"username": {
+		"defaultMessage": "Nombre de Usuario"
+	},
+	"users": {
+		"defaultMessage": "Usuarios"
+	}
 }