Introdução
Symfony é um framework de desenvolvimento web PHP de código aberto que facilita muito a criação de aplicativos da web. Com suas diversas ferramentas e bibliotecas, ele ajuda no desenvolvimento rápido e eficiente de aplicativos web com eficiência.
Neste artigo, abordaremos como criar um site multilingue com Symfony, implementando URLs amigáveis para diferentes idiomas.
Criação de uma rota de idioma padrão
O primeiro passo é configurar a rota de idioma padrão. Isso garantirá que, se nenhuma língua for especificada na URL, a rota padrão será carregada.
Route::get('/', 'HomeController@index')->name('home');
Aqui, definimos a rota padrão que carrega o método index no HomeController. Você pode substituir isso pelo seu controlador e método.
Criação de rotas para cada idioma
Agora, precisamos criar rotas para cada idioma em que nosso site será traduzido. Por exemplo, imagine que queremos ter nosso site em inglês e francês. Para isso, precisamos criar duas rotas, uma para cada idioma:
Route::group(['prefix' => 'en'], function () {
Route::get('/', 'HomeController@index')->name('home_en');
});
Route::group(['prefix' => 'fr'], function () {
Route::get('/', 'HomeController@index')->name('home_fr');
});
Aqui, as rotas são criadas sob os prefixos ‘en’ e ‘fr’, respectivamente. Ambas as rotas apontam para o mesmo método no controlador.
Definindo o middleware de idioma
Agora, precisamos validar o idioma da URL e definir o idioma a ser usado na aplicação. Isso é feito usando um middleware Symfony que faz isso para nós. Crie um middleware personalizado com o seguinte código:
namespace AppHttpMiddleware;
use Closure;
use IlluminateHttpRequest;
class LanguageMiddleware
{
public function handle(Request $request, Closure $next)
{
if ($request->segment(1) === 'fr') {
app()->setLocale('fr');
} else {
app()->setLocale('en');
}
return $next($request);
}
}
Aqui, verificamos o primeiro segmento da URL para determinar se é uma rota em inglês ou francês. Se for francês, definimos a localidade do Symfony como ‘fr’. Caso contrário, definimos como ‘en’.
Adicionando o middleware de idioma à rota
Por fim, precisamos adicionar o middleware de idioma à rota. Isso garantirá que o middleware seja executado todas as vezes que uma rota for acessada.
Route::group(['middleware' => 'language'], function () {
Route::get('/', 'HomeController@index')->name('home');
});
Agora, sempre que a rota for acessada, o middleware de idioma definirá o idioma correto antes de a rota ser carregada.
Conclusão
Neste artigo, abordamos como criar um site multilingue com Symfony, implementando URLs amigáveis para diferentes idiomas. Seguindo esses passos, você pode criar um site multilingue facilmente e torná-lo acessível para pessoas que falam diferentes idiomas.