@php // Página de mantenimiento (503). // // Se PRE-RENDERIZA en el deploy con `php artisan down --render="errors::503"` y queda guardada // como HTML estático dentro de storage/framework/maintenance.php, que public/index.php sirve // ANTES de cargar vendor/autoload.php. Por eso esta vista tiene reglas propias: // - Todo el CSS va INLINE: durante el deploy `npm run build` reescribe public/build y el // manifest de Vite desaparece por unos segundos (@vite aquí reventaría). // - No puede depender de sesión, rutas nombradas ni del contenedor (url()->previous(), auth…): // se renderiza desde consola y se sirve sin framework. // - El idioma NO se puede resolver por request (es un HTML fijo para todos), así que se // embeben los 6 idiomas y JS elige según navigator.language. Las cadenas siguen viviendo // en lang/*.json: el diccionario se arma con __($key, [], $locale). $strings = [ 'title' => 'Scheduled maintenance', 'heading' => 'We are updating the site', 'message' => 'We will be back in a few minutes. Nothing is broken and no action is needed on your part.', 'note' => 'This page refreshes automatically.', 'retry' => 'Retry now', ]; // Clave JS (prefijo de navigator.language) => locale de Laravel. $locales = ['en' => 'en', 'es' => 'es', 'fr' => 'fr', 'it' => 'it', 'pt' => 'pt', 'zh' => 'zh_CN']; $dictionary = []; foreach ($locales as $jsLocale => $appLocale) { foreach ($strings as $slot => $key) { $dictionary[$jsLocale][$slot] = __($key, [], $appLocale); } } $appName = config('app.name'); @endphp {{-- Si el deploy termina mientras el usuario mira la página, vuelve solo. --}} {{ $dictionary['en']['title'] }} - {{ $appName }}
{{-- SVG inline: durante el deploy no hay assets compilados a los que apuntar. --}}

{{ $dictionary['en']['heading'] }}

{{ $dictionary['en']['message'] }}

{{ $dictionary['en']['note'] }}