Como criar aplicações multi-idiomas com Laravel (Atualizado 2023)

📆
Como criar aplicações multi-idiomas com Laravel (Atualizado 2023)

Opa, tudo bem? Criar aplicação Laravel em português ou alterar o locale padrão do Laravel para pt-br pode parecer uma tarefa difícil, mas na verdade é bem simples.

Nesse artigo eu vou te mostrar como criar aplicações multi-idiomas com Laravel de forma simples e rápida. 🚀

Ao criar projetos com Laravel o idioma padrão que definido é o Inglês, porém o próprio framework nos permitir customizar as mensagens padrões e até mesmo criar as nossas próprias mensagens com versões traduzidas para outros idiomas.

Utilizando esse recurso, eu criei disponbilizei um repositório no meu perfil do Github com as mensagens padrões do Laravel, já traduzidas para português, e nós iremos utilizar esses arquivos nesse exemplo.

Você pode conferir esse repositório no link https://github.com/rafaellaurindo/laravel-traducao-pt-br.

Agora, vamos pôr a mão na massa, ou melhor, no código. 🙂

Eu irei criar um novo projeto Laravel, na versão 10, utilizando o composer, mas se você já tiver um projeto criado, pode utilizar ele mesmo.

composer create-project --prefer-dist laravel/laravel laravel-multi-idiomas

Abra o projeto no seu editor de código favorito, e vamos começar a configurar o suporte a multi-idiomas.

Essa é a estrutura de pastas do nosso projeto recém criado:

Estrutura de pastas do projeto

Podemos notar que já temos uma pasta chamada lang/, que é onde ficam os arquivos de tradução da nossa aplicação.

Vamos acessar a aplicação em um navegador, para vermos como ela está no momento.

Página inicial da aplicação

Agora que já temos nosso projeto criado, vamos clonar o repositório com as mensagens traduzidas para português, dentro da pasta lang/pt_BR/ do nosso projeto.

git clone https://github.com/rafaellaurindo/laravel-pt-br ./lang/pt_BR

Precisamos agora definir o idioma padrão da nossa aplicação para português.

Vamos então acessar o arquivo config/app.php você deve encontrar uma linha parecida com essa:

config/app.php
'locale' => 'en',

Alteramos o valor da chave locale para pt_BR, ficando assim:

config/app.php
'locale' => 'pt_BR',

Com essa mudança feita, nossa aplicação já está configurada para utilizar o idioma português como padrão.

Agora, iremos alterar a página inicial para exibirmos uma mensagem de boas vindas, e em seguida exibir essa mensagem tanto em inglês como português.

Acesse a view welcome.blade.php para fazer essa customização, vamos remover alguns dos cards de exemplos deixando apenas um card uma mensagem de boas vindas, e abaixo desse card, vamos adicionar um texto de exemplo.

resources/views/welcome.blade.php
// trecho inicial omitido

<h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">
    Seja bem vindo!
</h2>

<p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed">
    Projeto de exemplo suporte a multi-idomas com Laravel.
</p>

// trecho final omitido

O resultado deve ficar assim:

Home com mensagem alterada

O Blade, template engine utilizada no Laravel, possui uma diretiva para fazermos o uso dos arquivos de traduções, que é a diretiva @lang. Ela deve ser utilizada no formato @lang('nomeDoArquivoDeTraducao.chave').

Vamos alterar agora esse conteúdo para usar a direta @lang() do blade.

resources/views/welcome.blade.php
<h2 class="mt-6 text-xl font-semibold text-gray-900 dark:text-white">
    @lang('messages.welcome.title')
</h2>

<p class="mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed">
    @lang('messages.welcome.description')
</p>

O resultado deve ficar assim:

Home com mensagem alterada

Como você pode ver, agora estamos utilizando a diretiva @lang() do blade para exibir as mensagens, e estamos passando como parâmetro o nome do arquivo de tradução, seguido da chave do texto que queremos exibir.

Porém, ainda não temos esses arquivos de tradução criados, então vamos criar eles agora.

A pasta lang/{idioma}/ é onde, por padrão, no Laravel são salvos os arquivos com as traduções dos textos da nossa aplicação, cada cada arquivo deverá retornar um array no formato chave => valor, sendo a chave uma identificação do texto, e o valor representando o texto traduzido para o idioma.

Então vamos lá, crie o arquivo messages.php nas pastas lang/pt_BR/ e lang/en/ com o seguinte código:

lang/pt_BR/messages.php
<?php

return [
    'welcome' => [
        'title' => 'Seja bem vindo(a)',
        'description' => 'Projeto de exemplo suporte a multi-idomas com Laravel.',
    ]
];
lang/en/messages.php
<?php

return [
    'welcome' => [
        'title' => 'Welcome!',
        'description' => 'Example project with multi-language support with Laravel.',
    ]
];

Agora que já temos as versões traduzidas do nosso texto para inglês e português, e já sabemos como utilizá-las, vamos alterar nossa view, para buscar a tradução desses arquivos:

Agora finalmente nossa aplicação está utilizando as traduções para as nossas mensagens.

Acessando novamente a página inicial, você verá que as mensagens estão sendo exibidas em português, através do arquivo de tradução que criamos.

Home com tradução

Vamos então alterar o idioma padrão da aplicação, novamente para o inglês, parar ver se realmente a tradução em inglês será exibida.

Para isso, vamos acessar o arquivo config/app.php, e alterar o valor da chave locale para en, ficando assim:

config/app.php
'locale' => 'en',

Agora, ao acessar a página inicial, você verá que as mensagens estão sendo exibidas em inglês.

Home com tradução em inglês

Finalmente temos nossa aplicação suportando vários idiomas. 🚀

Conclusão

Nesse artigo eu te mostrei como criar aplicações multi-idiomas com Laravel de forma simples e rápida.

Ficou com alguma dúvida? Deixa aí nos comentários que eu te ajudo. 🙂