diff --git a/resources/lang/es/auth.php b/resources/lang/es/auth.php
new file mode 100644
index 00000000..47bad3f1
--- /dev/null
+++ b/resources/lang/es/auth.php
@@ -0,0 +1,19 @@
+ 'Estas credenciales no coinciden con nuestros registros.',
+ 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor intente nuevamente en :seconds segundos.',
+
+];
diff --git a/resources/lang/es/installer_messages.php b/resources/lang/es/installer_messages.php
new file mode 100644
index 00000000..45b4f56b
--- /dev/null
+++ b/resources/lang/es/installer_messages.php
@@ -0,0 +1,246 @@
+ 'Instalador de phpVMS',
+ 'next' => 'Siguiente',
+ 'back' => 'Anterior',
+ 'finish' => 'Instalar',
+ 'forms' => [
+ 'errorTitle' => 'Ocurrieron los siguientes errores:',
+ ],
+
+ /**
+ *
+ * Home page translations.
+ *
+ */
+ 'welcome' => [
+ 'templateTitle' => 'Bienvenido',
+ 'title' => 'Instalador de phpVMS',
+ 'message' => 'Instalación fácil y asistente de configuración.',
+ 'next' => 'Comprobar requisitios',
+ ],
+
+ /**
+ *
+ * Requirements page translations.
+ *
+ */
+ 'requirements' => [
+ 'templateTitle' => 'Paso 1 | Requisitos del Servidor',
+ 'title' => 'Requisitos del servidor',
+ 'next' => 'Comprobar permisos',
+ ],
+
+ /**
+ *
+ * Permissions page translations.
+ *
+ */
+ 'permissions' => [
+ 'templateTitle' => 'Paso 2 | Permisos',
+ 'title' => 'Permisos',
+ 'next' => 'Configurar entorno',
+ ],
+
+ /**
+ *
+ * Environment page translations.
+ *
+ */
+ 'environment' => [
+ 'menu' => [
+ 'templateTitle' => 'Paso 3 | Configuración de entorno',
+ 'title' => 'Configuraciones de entorno',
+ 'desc' => 'Seleccione cómo desea configurar las aplicaciones .env archivo.',
+ 'wizard-button' => 'Desde el asistente',
+ 'classic-button' => 'Editor de texto clásico',
+ ],
+ 'wizard' => [
+ 'templateTitle' => 'Paso 3 | Configuraciones de entorno | Asistente guíado',
+ 'title' => 'Asistente .env guíado',
+ 'tabs' => [
+ 'environment' => 'Entorno',
+ 'database' => 'Base de datos',
+ 'application' => 'Aplicación'
+ ],
+ 'form' => [
+ 'name_required' => 'Un nombre de entorno es requerido.',
+ 'app_name_label' => 'Nombre de la aplicación',
+ 'app_name_placeholder' => 'Nombre de la aplicación',
+ 'app_environment_label' => 'Entorno de aplicación',
+ 'app_environment_label_local' => 'Local',
+ 'app_environment_label_developement' => 'Desarrollo',
+ 'app_environment_label_qa' => 'QA',
+ 'app_environment_label_production' => 'Producción',
+ 'app_environment_label_other' => 'Otra',
+ 'app_environment_placeholder_other' => 'Introduce tu entorno...',
+ 'app_debug_label' => 'Debug de aplicación',
+ 'app_debug_label_true' => 'Verdadero',
+ 'app_debug_label_false' => 'Falso',
+ 'app_log_level_label' => 'Nivel de LOG de la aplicación',
+ 'app_log_level_label_debug' => 'debug',
+ 'app_log_level_label_info' => 'info',
+ 'app_log_level_label_notice' => 'aviso',
+ 'app_log_level_label_warning' => 'advertencia',
+ 'app_log_level_label_error' => 'error',
+ 'app_log_level_label_critical' => 'critico',
+ 'app_log_level_label_alert' => 'alerta',
+ 'app_log_level_label_emergency' => 'emergencía',
+ 'app_url_label' => 'URL de la App',
+ 'app_url_placeholder' => 'URL App ',
+ 'db_connection_label' => 'Conexión base de datos',
+ 'db_connection_label_mysql' => 'mysql',
+ 'db_connection_label_sqlite' => 'sqlite',
+ 'db_connection_label_pgsql' => 'pgsql',
+ 'db_connection_label_sqlsrv' => 'sqlsrv',
+ 'db_host_label' => 'Database: Host',
+ 'db_host_placeholder' => 'Database: Host',
+ 'db_port_label' => 'Database: Puerto',
+ 'db_port_placeholder' => 'Database: Puerto',
+ 'db_name_label' => 'Database: Nombre',
+ 'db_name_placeholder' => 'Database: Nombre',
+ 'db_username_label' => 'Database: Nombre usuario',
+ 'db_username_placeholder' => 'Database: Nombre usuario',
+ 'db_password_label' => 'Database: Contraseña',
+ 'db_password_placeholder' => 'Database: Contraseña',
+
+ 'app_tabs' => [
+ 'more_info' => 'Más info',
+ 'broadcasting_title' => 'Broadcasting, Caching, Session, & Queue',
+ 'broadcasting_label' => 'Broadcast Driver',
+ 'broadcasting_placeholder' => 'Broadcast Driver',
+ 'cache_label' => 'Cache Driver',
+ 'cache_placeholder' => 'Cache Driver',
+ 'session_label' => 'Session Driver',
+ 'session_placeholder' => 'Session Driver',
+ 'queue_label' => 'Queue Driver',
+ 'queue_placeholder' => 'Queue Driver',
+ 'redis_label' => 'Redis Driver',
+ 'redis_host' => 'Redis Host',
+ 'redis_password' => 'Redis Password',
+ 'redis_port' => 'Redis Port',
+
+ 'mail_label' => 'Mail',
+ 'mail_driver_label' => 'Mail Driver',
+ 'mail_driver_placeholder' => 'Mail Driver',
+ 'mail_host_label' => 'Mail Host',
+ 'mail_host_placeholder' => 'Mail Host',
+ 'mail_port_label' => 'Mail Port',
+ 'mail_port_placeholder' => 'Mail Port',
+ 'mail_username_label' => 'Mail Username',
+ 'mail_username_placeholder' => 'Mail Username',
+ 'mail_password_label' => 'Mail Password',
+ 'mail_password_placeholder' => 'Mail Password',
+ 'mail_encryption_label' => 'Mail Encryption',
+ 'mail_encryption_placeholder' => 'Mail Encryption',
+
+ 'pusher_label' => 'Pusher',
+ 'pusher_app_id_label' => 'Pusher App Id',
+ 'pusher_app_id_palceholder' => 'Pusher App Id',
+ 'pusher_app_key_label' => 'Pusher App Key',
+ 'pusher_app_key_palceholder' => 'Pusher App Key',
+ 'pusher_app_secret_label' => 'Pusher App Secret',
+ 'pusher_app_secret_palceholder' => 'Pusher App Secret',
+ ],
+ 'buttons' => [
+ 'setup_database' => 'Configurar base de datos',
+ 'setup_application' => 'Configurar aplicación',
+ 'install' => 'Instalar',
+ ],
+ ],
+ ],
+ 'classic' => [
+ 'templateTitle' => 'Paso 3 | Configuración de entorno | Editor clásico',
+ 'title' => 'Editor de entorno cásico',
+ 'save' => 'Guardar .env',
+ 'back' => 'Usar el asistente de formulario',
+ 'install' => 'Guardar e instalar',
+ ],
+ 'success' => 'Tu archivo de configuración .env ha sido guardado.',
+ 'errors' => 'No se ha guardado el archivo .env , Crealo manualmente.',
+ ],
+
+ 'install' => 'Instalar',
+
+ /**
+ *
+ * Installed Log translations.
+ *
+ */
+ 'installed' => [
+ 'success_log_message' => 'Inslatador Laravel exitosamente creado en ',
+ ],
+
+ /**
+ *
+ * Final page translations.
+ *
+ */
+ 'final' => [
+ 'title' => 'Instalación finalizada',
+ 'templateTitle' => 'Instalación finalizada',
+ 'finished' => 'La aplicación ha sido instalada exitosamente.',
+ 'migration' => 'Migración & salida de la consola:',
+ 'console' => 'Salida de la consola de la aplicación:',
+ 'log' => 'Instalación Log de entrada:',
+ 'env' => 'Final .env archivo:',
+ 'exit' => 'Clic aquí para salir',
+ ],
+
+ /**
+ *
+ * Update specific translations
+ *
+ */
+ 'updater' => [
+ /**
+ *
+ * Shared translations.
+ *
+ */
+ 'title' => 'Actualizador Laravel',
+
+ /**
+ *
+ * Welcome page translations for update feature.
+ *
+ */
+ 'welcome' => [
+ 'title' => 'Bienvenido al actualizador',
+ 'message' => 'Bienvenido al asistente de actualización.',
+ ],
+
+ /**
+ *
+ * Welcome page translations for update feature.
+ *
+ */
+ 'overview' => [
+ 'title' => 'Resumen',
+ 'message' => 'Hay 1 actualización.|Hay :number actualizaciones.',
+ 'install_updates' => "Instalar actualizaciones"
+ ],
+
+ /**
+ *
+ * Final page translations.
+ *
+ */
+ 'final' => [
+ 'title' => 'Finalizado',
+ 'finished' => 'Aplicación/es actualizada/s con éxito.',
+ 'exit' => 'Clic aquí para salir',
+ ],
+
+ 'log' => [
+ 'success_message' => 'Inslatador Laravel exitosamente actualizado en ',
+ ],
+ ],
+];
diff --git a/resources/lang/es/pagination.php b/resources/lang/es/pagination.php
new file mode 100644
index 00000000..8993ea3f
--- /dev/null
+++ b/resources/lang/es/pagination.php
@@ -0,0 +1,19 @@
+ '« Anterior',
+ 'next' => 'Siguiente »',
+
+];
diff --git a/resources/lang/es/passwords.php b/resources/lang/es/passwords.php
new file mode 100644
index 00000000..474bf9ee
--- /dev/null
+++ b/resources/lang/es/passwords.php
@@ -0,0 +1,23 @@
+ 'Las contraseñas deben tener al menos seis caracteres y coincidir con la confirmación.',
+ 'reset' => '¡Tu contraseña ha sido restablecida!',
+ 'sent' => '¡Le hemos enviado por correo electrónico el enlace de restablecimiento de contraseña!',
+ 'token' => 'Este token de restablecimiento de contraseña no es válido.',
+ 'user' => "No podemos encontrar un usuario con esa dirección de correo electrónico.",
+
+];
diff --git a/resources/lang/es/system.php b/resources/lang/es/system.php
new file mode 100644
index 00000000..5173e5f1
--- /dev/null
+++ b/resources/lang/es/system.php
@@ -0,0 +1,106 @@
+ [
+ 'active' => 'Activo',
+ 'inactive' => 'Inactivo'
+ ],
+
+ 'aircraft' => [
+ 'status' => [
+ 'active' => 'Activo',
+ 'stored' => 'Guardado',
+ 'retired' => 'Retirado',
+ 'scrapped' => 'Desguazado',
+ 'written' => 'Dado de baja',
+ ],
+ ],
+
+ 'days' => [
+ 'mon' => 'lunes',
+ 'tues' => 'martes',
+ 'wed' => 'miércoles',
+ 'thurs' => 'jueves',
+ 'fri' => 'viernes',
+ 'sat' => 'sábado',
+ 'sun' => 'domingo',
+ ],
+
+ 'expenses' => [
+ 'type' => [
+ 'flight' => 'Por vuelo',
+ 'daily' => 'Diario',
+ 'monthly' => 'Mensual',
+ ],
+ ],
+
+ 'flights' => [
+ 'type' => [
+ 'pass_scheduled' => 'Pasajero - Programado',
+ 'cargo_scheduled' => 'Carga - Programado',
+ 'charter_pass_only' => 'Charter - Pasajeros únicamente',
+ 'addtl_cargo_mail' => 'Carga/Correo adicional',
+ 'special_vip' => 'Vuelo VIP especial (Autoridad de Aviación Civil)',
+ 'pass_addtl' => 'Pasajero - Adicional',
+ 'charter_cargo' => 'Charter - Carga/Correo',
+ 'ambulance' => 'Vuelo ambulancia',
+ 'training_flight' => 'Vuelo de entrenamiento',
+ 'mail_service' => 'Servicio postal',
+ 'charter_special' => 'Charter con cargas especiales',
+ 'positioning' => 'Posicionamiento (Ferry/Entrega/Demo)',
+ 'technical_test' => 'Prueba técnica',
+ 'military' => 'Militar',
+ 'technical_stop' => 'Parada técnica',
+ ],
+ ],
+
+ 'pireps' => [
+ 'source' => [
+ 'manual' => 'Manual',
+ 'acars' => 'ACARS',
+ ],
+ 'state' => [
+ 'accepted' => 'Aceptado',
+ 'pending' => 'Pendiente',
+ 'rejected' => 'Rechazado',
+ 'in_progress' => 'En progreso',
+ 'cancelled' => 'Cancelado',
+ 'deleted' => 'Borrado',
+ 'draft' => 'Borrador',
+ ],
+ 'status' => [
+ 'initialized' => 'Inicializado',
+ 'scheduled' => 'Programado',
+ 'boarding' => 'Embarcando',
+ 'ready_start' => 'Listo para empezar',
+ 'push_tow' => 'Pushback/remolcado',
+ 'departed' => 'Salió',
+ 'ready_deice' => 'Listo para deshielo',
+ 'deicing' => 'Deeshielo en progreso',
+ 'ground_ret' => 'Retorno a tierra',
+ 'taxi' => 'Taxi',
+ 'takeoff' => 'Despegue',
+ 'initial_clb' => 'Ascenso inicial',
+ 'enroute' => 'En ruta',
+ 'diverted' => 'Desviado',
+ 'approach' => 'En aproximación',
+ 'final_appr' => 'En aproximación final',
+ 'landing' => 'Aterrizando',
+ 'landed' => 'En tierra',
+ 'arrived' => 'Llegó',
+ 'cancelled' => 'Cancelado',
+ 'emerg_decent' => 'Descenso de emergencia',
+ ]
+ ],
+
+ 'users' => [
+ 'state' => [
+ 'pending' => 'Pendiente',
+ 'active' => 'Activo',
+ 'rejected' => 'Rechazado',
+ 'on_leave' => 'De vacaciones',
+ 'suspended' => 'Suspendido',
+ ],
+ ],
+];
diff --git a/resources/lang/es/validation.php b/resources/lang/es/validation.php
new file mode 100644
index 00000000..8a5ab112
--- /dev/null
+++ b/resources/lang/es/validation.php
@@ -0,0 +1,120 @@
+ 'El :attribute debe ser aceptado.',
+ 'active_url' => 'El :attribute No es una URL valida.',
+ 'after' => 'El :attribute debe ser una fecha después de :date.',
+ 'alpha' => 'El :attribute solo puede contener letras.',
+ 'alpha_dash' => 'El :attribute solo puede contener letras, números, y guiones.',
+ 'alpha_num' => 'El :attribute solo puede contener letras y números.',
+ 'array' => 'El :attribute debe ser un array.',
+ 'before' => 'El :attribute debe ser una fecha antes de :date.',
+ 'between' => [
+ 'numeric' => 'El :attribute debe estar entre :min and :max.',
+ 'file' => 'El :attribute debe estar entre :min and :max kilobytes.',
+ 'string' => 'El :attribute debe estar entre :min and :max caracteres.',
+ 'array' => 'El :attribute debe estar entre :min and :max objetos.',
+ ],
+ 'boolean' => 'El :attribute campo debe ser verdadero o falso.',
+ 'confirmed' => 'El :attribute confirmación no coincide.',
+ 'date' => 'El :attribute no es una fecha valida.',
+ 'date_format' => 'El :attribute no coincide el formato :format.',
+ 'different' => 'El :attribute y :other deben ser diferentes.',
+ 'digits' => 'El :attribute debe ser :digits digitos.',
+ 'digits_between' => 'El :attribute debe estar entre :min and :max digitos.',
+ 'dimensions' => 'El :attribute tiene dimensiones de imagen no valida.',
+ 'distinct' => 'El :attribute campo tiene un valor duplicado.',
+ 'email' => 'El :attribute debe ser un email valido.',
+ 'exists' => 'El :attribute seleccionado es invalido.',
+ 'file' => 'El :attribute debe ser un archivo.',
+ 'filled' => 'El ":attribute" es requerido.',
+ 'image' => 'El :attribute debe ser una imagen.',
+ 'in' => 'El :attribute seleccionado es invalido.',
+ 'in_array' => 'El :attribute campo no existe en :other.',
+ 'integer' => 'El :attribute debe ser un integer.',
+ 'ip' => 'El :attribute debe ser una dirección IP valida.',
+ 'json' => 'El :attribute debe ser un string JSON valido.',
+ 'max' => [
+ 'numeric' => 'El :attribute no puede ser mayor que :max.',
+ 'file' => 'El :attribute no puede ser mayor que :max kilobytes.',
+ 'string' => 'El :attribute no puede ser mayor que :max caracteres.',
+ 'array' => 'El :attribute no puede tener más de :max objetos.',
+ ],
+ 'mimes' => 'El :attribute must be a file of type: :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 caracteres.',
+ 'array' => 'El :attribute must have at least :min objetos.',
+ ],
+ 'not_in' => 'El :attribute seleccionado es invalido.',
+ 'numeric' => 'El :attribute debe ser un número.',
+ 'present' => 'El :attribute campo debe estar presente.',
+ 'regex' => 'El :attribute formato es invalido.',
+ 'required' => 'El ":attribute" campo es requerido.',
+ 'required_if' => 'El :attribute campo es requerido cuando :other es :value.',
+ 'required_unless' => 'El :attribute campo es requerido a no ser que :other esté en :values.',
+ 'required_with' => 'El :attribute campo es requerido cuando :values es presente.',
+ 'required_with_all' => 'El :attribute campo es requerido cuando :values es presente.',
+ 'required_without' => 'El :attribute campo es requerido cuando :values no esté presente.',
+ 'required_without_all' => 'El :attribute campo es requerido cuando none of :values are presente.',
+ 'same' => 'El :attribute y :other debe coincidir.',
+ 'size' => [
+ 'numeric' => 'El :attribute debe ser :size.',
+ 'file' => 'El :attribute debe ser :size kilobytes.',
+ 'string' => 'El :attribute debe ser :size caracteres.',
+ 'array' => 'El :attribute debe contener :size objetos.',
+ ],
+ 'string' => 'El :attribute debe ser un string.',
+ 'timezone' => 'El :attribute debe ser una zona valida.',
+ 'unique' => 'El :attribute ha sido actualmente usado.',
+ 'url' => 'El :attribute es un formato invalido.',
+
+ /**
+ * Custom Validation Language Lines
+ */
+
+ 'custom' => [
+ 'airline_id' => [
+ 'required' => 'Una aerolínea es requerida',
+ 'exists' => 'La aerolínea no existe',
+ ],
+ 'aircraft_id' => [
+ 'required' => 'Una aeronave es requerido',
+ 'exists' => 'La aeronave no existe',
+ ],
+ 'arr_airport_id' => [
+ 'required' => 'Un aeropuerto de llegada es requerido',
+ ],
+ 'dpt_airport_id' => [
+ 'required' => 'Un aeropuerto de salida es requerido',
+ ],
+ 'flight_time' => [
+ 'required' => 'Tiempo de vuelo, en minutos, es requerido',
+ 'integer' => 'Tiempo de vuelo, en minutos, es requerido',
+ ],
+ 'planned_flight_time' => [
+ 'required' => 'Tiempo de vuelo, en minutos, es requerido',
+ 'integer' => 'Tiempo de vuelo, en minutos, es requerido',
+ ],
+ 'source_name' => [
+ 'required' => 'Origen del PIREP es requerido',
+ ],
+ 'g-recaptcha-response' => [
+ 'required' => 'Por favor verifica que no eres un robot.',
+ 'captcha' => '¡Error de CAPTCHA! intente de nuevo más tarde o póngase en contacto con el administrador del sitio.',
+ ],
+ ],
+
+ /**
+ * Custom Validation Attributes
+ */
+
+ 'attributes' => [],
+
+];