Saltar al contenido

¿Cómo puedo encontrar el idioma actual en una vista de Laravel?

Solución:

La forma más limpia de conocer el idioma actual de su sitio web en Laravel parece ser:

Lang::locale();

https://laravel.com/api/5.8/Illuminate/Translation/Translator.html#method_locale

Es diferente a este comando que devolverá el idioma predeterminado de su sitio web:

Config::get('app.locale');

Una forma alternativa, un poco más corta, podría ser usar algo como esto:

app()->getLocale()

La ventaja de esto es que los IDE como PHPStorm reconocen esta función y pueden ayudarlo a desarrollarse mucho más rápido.

La respuesta de BenjaminRH es muy buena y su enfoque sugerido funciona perfectamente. He mejorado un poco el fragmento. Ahora detecta el idioma del navegador y comprueba si ese idioma es compatible de acuerdo con el archivo de configuración de la aplicación.

Es un truco rápido, pero funciona en mi aplicación. Tenga en cuenta que el idioma de la aplicación también está configurado ahora. Siéntete libre de usar o mejorarlo.

Route::filter('before', function()
{
    // current uri language ($lang_uri)
    $lang_uri = URI::segment(1);

    // Set default session language if none is set
    if(!Session::has('language'))
    {
        // use lang in uri, if provided
        if(in_array($lang_uri, Config::get('application.languages')))
        {
            $lang = $lang_uri;  
        }
        // detect browser language
        elseif(isset(Request::server('http_accept_language')))
        {
            $headerlang = substr(Request::server('http_accept_language'), 0, 2);

            if(in_array($headerlang, Config::get('application.languages')))
            {
                // browser lang is supported, use it
                $lang = $headerlang;
            }
            // use default application lang
            else
            {
                $lang = Config::get('application.language');
            }
        }
        // no lang in uri nor in browser. use default
        else 
        {
                // use default application lang
                $lang = Config::get('application.language');            
        }

        // set application language for that user
        Session::put('language', $lang);
        Config::set('application.language',  $lang);
    }
    // session is available
    else
    {
        // set application to session lang
        Config::set('application.language', Session::get('language'));
    }

    // prefix is missing? add it
    if(!in_array($lang_uri, Config::get('application.languages'))) 
    {
        return Redirect::to(URI::current());
    }
    // a valid prefix is there, but not the correct lang? change app lang
    elseif(in_array($lang_uri, Config::get('application.languages')) AND $lang_uri != Config::get('application.language'))
    {
        Session::put('language', $lang_uri);
        Config::set('application.language',  $lang_uri);    
    }
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *