diff --git a/app/config/langs.php b/app/config/langs.php index cd5bd7cd..155ae27e 100644 --- a/app/config/langs.php +++ b/app/config/langs.php @@ -5,6 +5,7 @@ return [ 'en-UD' => 'CrowdIn - InContext Localization', 'de' => 'Deutsch', 'en' => 'English', + 'es' => 'Español', 'fr' => 'Français', 'pt-BR' => 'Portuguese, Brazilian', ]; diff --git a/app/lang/es/cachet.php b/app/lang/es/cachet.php new file mode 100644 index 00000000..d6b2c303 --- /dev/null +++ b/app/lang/es/cachet.php @@ -0,0 +1,47 @@ + [ + 'status' => [ + 1 => 'Operacional', + 2 => 'Problemas de rendimiento', + 3 => 'Interrupción parcial', + 4 => 'Interrupción mayor', + ], + ], + + // Incidents + 'incidents' => [ + 'none' => 'No hay ninguna incidencia reportada.', + 'past' => 'Incidentes anteriores', + 'previous_week' => 'Semana anterior', + 'next_week' => 'Siguiente semana', + 'none' => 'No hay ninguna incidencia reportada.', + 'status' => [ + 1 => 'Investigando', + 2 => 'Identificado', + 3 => 'Observando', + 4 => 'Corregido', + ], + ], + + // Service Status + 'service' => [ + 'good' => 'Todos los sistemas funcionando.', + 'bad' => 'Algunos sistemas están experimentando problemas.', + ], + + 'api' => [ + 'regenerate' => 'Regenerar API Key', + 'revoke' => 'Revocar API Key', + ], + + // Other + 'powered_by' => ':app La página de estado es alimentada por Cachet.', + 'about_this_site' => 'Acerca de este sitio', + 'rss-feed' => 'Feed RSS', + 'atom-feed' => 'Atom Feed', + 'feed' => 'Estado del Feed', + +]; diff --git a/app/lang/es/dashboard.php b/app/lang/es/dashboard.php new file mode 100644 index 00000000..aba94620 --- /dev/null +++ b/app/lang/es/dashboard.php @@ -0,0 +1,153 @@ + 'Panel de Control', + + // Incidents + 'incidents' => [ + 'incidents' => 'Incidentes', + 'logged' => '{0} No hay incidencias, ¡buen trabajo!|Has registrado una incidencia.|Has reportado :count incidencias.', + 'incident-create-template' => 'Crear plantilla', + 'incident-templates' => 'Plantillas de incidente', + 'add' => [ + 'title' => 'Agregar un incidente', + 'success' => 'Incidente agregado.', + 'failure' => 'Algo salió mal con el incidente.', + ], + 'edit' => [ + 'title' => 'Editar un incidente', + 'success' => 'Incidente actualizado.', + 'failure' => 'Algo salió mal con el incidente.', + ], + + // Incident templates + 'templates' => [ + 'title' => 'Plantillas de incidente', + 'add' => [ + 'title' => 'Crear una plantilla de incidente', + 'success' => 'Plantilla creada.', + 'failure' => 'Algo salió mal con la plantilla de incidente.', + ], + 'edit' => [ + 'title' => 'Editar plantilla', + 'success' => '¡Se ha actualizado la plantilla!', + 'failure' => 'Algo salió mal actualizar la plantilla de incidente', + ], + ], + ], + + // Components + 'components' => [ + 'components' => 'Componente|Componentes', + 'component_statuses' => 'Estatus de los componentes', + 'add' => [ + 'title' => 'Agregar un componente', + 'message' => 'Deberías agregar un componente.', + 'success' => 'Componente creado.', + 'failure' => 'Algo salió mal con el componente.', + ], + 'edit' => [ + 'title' => 'Editar un componente', + 'success' => 'Componente actualizado.', + 'failure' => 'Algo salió mal con el componente.', + ], + + // Component groups + 'groups' => [ + 'groups' => 'Grupo de componente|Grupos de componente', + 'add' => [ + 'title' => 'Agregar un grupo', + 'success' => 'Grupo componente agregado.', + 'failure' => 'Algo salió mal con el grupo del componente.', + ], + ], + ], + + // Metrics + 'metrics' => [ + 'metrics' => 'Métricas', + 'add' => [ + 'title' => 'Crear una métrica', + 'success' => 'Métrica creada.', + 'failure' => 'Algo salió mal con la métrica.', + ], + ], + + // Team + 'team' => [ + 'team' => 'Equipo', + 'member' => 'Miembro', + 'profile' => 'Perfil', + 'description' => 'Los miembros del equipo será capaces de añadir, modificar y editar componentes e incidentes.', + 'add' => [ + 'title' => 'Agregar miembro de equipo', + 'success' => 'Miembro del equipo agregado.', + 'failure' => 'Algo salió mal con el componente.', + ], + 'edit' => [ + 'title' => 'Actualizar perfil', + 'success' => 'Perfil actualizado.', + 'failure' => 'Algo salió mal al actualizar.', + ], + ], + + // Settings + 'settings' => [ + 'settings' => 'Ajustes', + 'app-setup' => [ + 'app-setup' => 'Configuración', + 'images-only' => 'Sólo puedes subir imágenes.', + 'too-big' => 'El archivo subido es demasiado grande. Sube una imagen con tamaño menor a: tamaño', + ], + 'security' => [ + 'security' => 'Seguridad', + ], + 'stylesheet' => [ + 'stylesheet' => 'Hoja de estilo', + ], + 'theme' => [ + 'theme' => 'Tema', + ], + 'edit' => [ + 'success' => 'Configuración guardada.', + 'failure' => 'La configuración no ha podido ser guardada.', + ], + ], + + // Login + 'login' => [ + 'login' => 'Iniciar Sesión', + 'logged_in' => 'Estás conectado.', + 'welcome' => '¡Bienvenido!', + 'two-factor' => 'Por favor ingresa tu token.', + ], + + // Sidebar footer + 'help' => 'Ayuda', + 'status_page' => 'Página de estado', + 'logout' => 'Salir', + + // Notifications + 'notifications' => [ + 'notifications' => 'Notificaciones', + 'awesome' => 'Excelente.', + 'whoops' => 'Whoops.', + ], + + // Welcome modal + 'welcome' => [ + 'welcome' => 'Bienvenido a Cachet', + 'message' => 'La página de estado está casi lista! Tal vez quieras configurar estos ajustes adicionales', + 'close' => 'Ir directo al Panel de Control', + 'steps' => [ + 'component' => 'Crear componentes', + 'incident' => 'Crear incidentes', + 'customize' => 'Personaliza tu página de estado Cachet.', + 'team' => 'Agregar usuarios a tu equipo.', + 'api' => 'Generar token API.', + 'two-factor' => 'Habilitar autenticación de dos pasos.', + ], + ], + +]; diff --git a/app/lang/es/errors.php b/app/lang/es/errors.php new file mode 100644 index 00000000..3892bfd5 --- /dev/null +++ b/app/lang/es/errors.php @@ -0,0 +1,16 @@ + [ + 'code' => '404', + 'title' => '¡Esta página se perdió!', + 'message' => 'Lo sentimos, no se ha encontrado la página que estás buscando. Comprueba que la dirección URL no contenga errores y vuelve a intentarlo.', + 'link' => 'Regresar a la página de inicio', + ], + 'unauthorized' => [ + 'code' => '401', + 'title' => 'No autorizado', + 'message' => 'Lo sentimos, necesitas privilegios de administrador para ver esta página.', + 'link' => 'Regresar a la página de inicio', + ], +]; diff --git a/app/lang/es/forms.php b/app/lang/es/forms.php new file mode 100644 index 00000000..634f6379 --- /dev/null +++ b/app/lang/es/forms.php @@ -0,0 +1,107 @@ + [ + 'email' => 'Correo electrónico', + 'username' => 'Nombre de usario', + 'password' => 'Contraseña', + 'site_name' => 'Nombre del sitio', + 'site_domain' => 'Dominio de sitio', + 'site_timezone' => 'Selecciona tu zona horaria', + 'site_locale' => 'Selecciona tu idioma', + 'enable_google2fa' => 'Habilitar la verificación en dos pasos de Google', + ], + + // Login form fields + 'login' => [ + 'email' => 'Correo electrónico', + 'password' => 'Contraseña', + '2fauth' => 'Código de Autenticación', + 'invalid' => 'Dirección de correo o contraseña incorrectos', + 'invalid-token' => 'Token inválido', + ], + + // Incidents form fields + 'incidents' => [ + 'name' => 'Nombre', + 'status' => 'Estado', + 'component' => 'Componente', + 'message' => 'Mensaje', + 'message-help' => 'También puedes usar Markdown.', + + 'templates' => [ + 'name' => 'Nombre', + 'template' => 'Plantilla', + ], + ], + + // Components form fields + 'components' => [ + 'name' => 'Nombre', + 'status' => 'Estatus', + 'group' => 'Grupo', + 'description' => 'Descripción', + 'link' => 'Enlace', + 'tags' => 'Etiquetas', + 'tags-help' => 'Separado por comas.', + + 'groups' => [ + 'name' => 'Nombre', + ], + ], + + // Settings + 'settings' => [ + /// Application setup + 'app-setup' => [ + 'site-name' => 'Nombre del sitio', + 'site-url' => 'URL del sitio', + 'site-timezone' => 'Zona horaria del sitio', + 'site-locale' => 'Idioma del sitio', + 'date-format' => 'Formato de la fecha', + 'about-this-page' => 'Sobre esta página', + 'days-of-incidents' => '¿Cuántos días de incidentes mostrar?', + 'banner' => 'Imagen de inicio', + 'banner-help' => "Se recomienda subir una imagen no más grande de 930px de ancho .", + 'google-analytics' => "Código de Google Analytics", + ], + 'security' => [ + 'allowed-domains' => 'Dominios permitidos', + 'allowed-domains-help' => 'Separados por coma. El dominio establecido en la configuración del sitio formará automáticamente parte de los dominios permitidos.', + ], + 'stylesheet' => [ + 'custom-css' => 'Hoja de estilo personalizada', + ], + 'theme' => [ + 'background-color' => 'Color de fondo', + 'text-color' => 'Color de Texto', + ], + ], + + 'user' => [ + 'username' => 'Nombre de usario', + 'email' => 'Correo electrónico', + 'password' => 'Contraseña', + 'api-token' => 'API Token', + 'api-token-help' => 'Al regenerar su API key revocara todas las aplicaciones existentes.', + '2fa' => [ + 'help' => 'Habilitar autenticación de dos pasos aumenta la seguridad de tu cuenta. Necesitarás descargar Google Authenticator o una aplicación similar a su dispositivo móvil. Al iniciar sesión, te pedirá proporcionar un token generado por la aplicación.', + ], + ], + + // Buttons + 'add' => 'Agregar', + 'save' => 'Guardar', + 'update' => 'Actualizar', + 'create' => 'Crear', + 'edit' => 'Editar', + 'delete' => 'Eliminar', + 'submit' => 'Enviar', + 'cancel' => 'Cancelar', + 'remove' => 'Remover', + + // Other + 'optional' => '* Opcional', +]; diff --git a/app/lang/es/pagination.php b/app/lang/es/pagination.php new file mode 100644 index 00000000..325916dc --- /dev/null +++ b/app/lang/es/pagination.php @@ -0,0 +1,19 @@ + '« Anterior', + 'next' => 'Siguiente »', + +]; diff --git a/app/lang/es/reminders.php b/app/lang/es/reminders.php new file mode 100644 index 00000000..db970a07 --- /dev/null +++ b/app/lang/es/reminders.php @@ -0,0 +1,22 @@ + 'Las contraseñas deben tener al menos seis caracteres y coincidir con la confirmación.', + 'user' => 'No podemos encontrar un usuario con esa dirección de correo electrónico.', + 'token' => 'El token para resetear el password no es válido.', + 'sent' => '!Recordatorio de contraseña enviado!', + 'reset' => '!La contraseña ha sido restablecida!', + +]; diff --git a/app/lang/es/setup.php b/app/lang/es/setup.php new file mode 100644 index 00000000..2034cf2e --- /dev/null +++ b/app/lang/es/setup.php @@ -0,0 +1,13 @@ + 'Configurar', + 'title' => 'Configurar Cachet', + 'service_details' => 'Detalles del servicio', + 'status_page_setup' => 'Configuración de la página de estado', + 'show_support' => '¿Mostrar tu apoyo a Cachet? Colocara un enlace en el footer vinculando a Cachet.', + 'admin_account' => 'Cuenta de administrador', + 'complete_setup' => 'Completar configuración', + 'completed' => '¡Cachet se ha configurado correctamente!', + 'finish_setup' => 'Ir a Panel de control', +]; diff --git a/app/lang/es/validation.php b/app/lang/es/validation.php new file mode 100644 index 00000000..8c788bc3 --- /dev/null +++ b/app/lang/es/validation.php @@ -0,0 +1,106 @@ + "El :attribute debe ser aceptado.", + "active_url" => "El :attribute no es un enlace válido.", + "after" => "El :attribute debe ser una fecha después de :date.", + "alpha" => "El :attribute sólo puede contener letras.", + "alpha_dash" => "El :attribute sólo puede contener letras, números y guiones.", + "alpha_num" => "El :attribute sólo puede contener letras y números.", + "array" => "El :attribute debe ser una matriz.", + "before" => "El :attribute debe ser una fecha antes de :date.", + "between" => [ + "numeric" => "El :attribute debe ser entre :min y :max.", + "file" => "El :attribute debe ser entre :min y :max kilobytes.", + "string" => "El :attribute debe tener entre :min y :max caracteres.", + "array" => "El :attribute debe tener entre :min y :max objetos.", + ], + "boolean" => "El campo del :attribute debe ser verdadero o falso.", + "confirmed" => "La confirmación del :attribute no coincide.", + "date" => "El :attribute no es una fecha válida.", + "date_format" => "El :attribute no cumple el formato :format.", + "different" => ":attribute y :other deben ser diferentes.", + "digits" => "El :attribute debe tener :digits dígitos.", + "digits_between" => "El :attribute debe tener entre: min y :max dígitos.", + "email" => "El :attribute debe ser una dirección de email válida.", + "exists" => "El :attribute seleccionado es inválido.", + "image" => "El :attribute debe ser una imagen.", + "in" => "El :attribute seleccionado es inválido.", + "integer" => "El :attribute debe ser un número entero.", + "ip" => "El :attribute debe ser una dirección IP válida.", + "max" => [ + "numeric" => "El :attribute no puede tener más de :max.", + "file" => "El :attribute no puede tener más de :max kilobytes.", + "string" => "El :attribute no puede tener más de :max caracteres.", + "array" => "El :attribute no puede tener más de :max objetos.", + ], + "mimes" => "El :attribute debe ser un archivo de tipo: :values.", + "min" => [ + "numeric" => "El :attribute debe tener al menos :min.", + "file" => "El :attribute debe tener al menos :min kilobytes.", + "string" => "El :attribute debe tener al menos :min characters.", + "array" => "El :attribute debe tener al menos :min objetos.", + ], + "not_in" => "El :attribute seleccionado es inválido.", + "numeric" => "El :attribute sebe ser un número.", + "regex" => "El formato del :attribute es inválido.", + "required" => "El campo del :attribute es requerido.", + "required_if" => "El campo del :attribute se requiere cuando :other es :value.", + "required_with" => "El campo del :attribute se requiere cuando :values es presente.", + "required_with_all" => "El campo del :attribute se requiere cuando :values es presente.", + "required_without" => "El campo del :attribute se requiere cuando :values no es presente.", + "required_without_all" => "El campo del :attribute se requiere cuando ninguno de los :values son presentes.", + "same" => "Los :attribute y :other deben coincidir.", + "size" => [ + "numeric" => "El :attribute debe ser :size.", + "file" => "El :attribute debe ser :size kilobytes.", + "string" => "El :attribute debe tener :size caracteres.", + "array" => "El :attribute debe contener :size objetos.", + ], + "unique" => "El :attribute ya ha sido usado.", + "url" => "El formato :attribute es inválido.", + "timezone" => "El :attribute debe ser una zona válida.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'mensaje-personalizado', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +];