Inicio Blog arrow-menu-nigmacode Vídeos Cursos Foro

Laravel - Multilenguaje con subdominios



Formulada por: gorka Realizada: 04-03-2020

Buenas, me surge una duda con respecto a este sistema.

Como lo hariamos si lo que queremos es que cada idioma este en un directorio, excepto el idioma proncipal, que seria el ingles?

es decir-> https://midominio.com ingles
¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† https://midominio.com/es¬† espa√Īol
                  https://midominio.com/fr frances

...

Respuesta de: Nigmacode Realizada: 26-07-2020

Buenas! tendría que controlar esto mediante un middleware y crear subdirectorios tipo es.miapp.com.

El middleware podría ser algo así:

public function handle($request, Closure $next){
 
            // compruebas si el subdominio existe
            $urlArray = explode('.', parse_url($request->url(), PHP_URL_HOST));
            if (count($urlArray) < 3){
                return $next($request);
            }
            $subdomain = $urlArray[0];
         
            /* Si es el idioma por defecto, por ejemplo espa√Īol, 
            lo mandas a la url principal sin subdominio*/
            if ($subdomain == 'es'){
                $baseUrl = str_replace('//es.', '//', $request->url());
                return redirect()->to($baseUrl);
            }        
            // Si el lenguaje del subdominio es valido, se envia al subdominio que corresponda
            if ( array_key_exists($subdomain, config()->get('app.locales')) ){
                \App::setLocale($subdomain);
                setlocale(LC_TIME, $subdomain);
            }
         
            return $next($request);
         
        }

¬ŅSabes la respuesta? ayuda a gorka