Laravel é uma ferramenta poderosa que permite aos desenvolvedores criar sites multilíngues. Ao implementar a localização web em seus projetos Laravel , você pode proporcionar uma experiência de usuário personalizada para visitantes de diferentes origens linguísticas, ampliando seu alcance e melhorando o engajamento do usuário.
Vamos orientá-lo na implementação da localização em sua aplicação Laravel e apresentar uma ferramenta que pode simplificar e aprimorar seus esforços de localização!
Por que deve localizar o site Laravel ?

Aqui estão alguns motivos importantes pelos quais deve localizar o seu site Laravel .
- Alcance um público global: Ao localizar o seu Laravel , pode ampliar o alcance da sua aplicação a um público internacional. Isto permite que utilizadores de diferentes países e origens linguísticas compreendam e interajam com o seu conteúdo.
- Melhora a experiência do utilizador: A localização permite que os utilizadores interajam com a aplicação no seu idioma nativo, o que melhora significativamente a experiência do utilizador. Isto pode aumentar as taxas de engagement, reduzir as taxas de rejeição e aumentar as conversões.
- Vantagem competitiva: Em um mercado global competitivo, oferecer aplicativos em vários idiomas pode proporcionar uma vantagem significativa sobre os concorrentes. Isso demonstra seu compromisso com os mercados internacionais e pode ajudá-lo a entrar em novos mercados de forma mais eficaz.
- Melhora o SEO: Sites bem localizados tendem a ter um melhor posicionamento nos mecanismos de busca para pesquisas em um determinado idioma. Isso pode aumentar o tráfego do seu blog e a visibilidade online em vários mercados com tradução multilíngue.
Requisitos para uma localização multilíngue do Laravel

Existem alguns requisitos e passos a considerar ao implementar a localização multilingue no Laravel.
- Para obter os recursos de localização mais recentes, certifique-se de que está a utilizar a versão mais recente do Laravel (por exemplo, versão 10.x).
- Um conhecimento básico de PHP e da framework Laravel será útil no processo de implementação.
- Configure um ambiente de desenvolvimento local ou um servidor que suporte Laravel, incluindo um servidor web e um banco de dados.
- Determine os idiomas que sua aplicação irá suportar desde o início.
Traduções simples do Laravel

Depois de entender quais requisitos devem ser atendidos antes de traduzir uma aplicação ou site Laravel , forneceremos algumas etapas para traduzir o Laravel de forma simples.
Para fazer isso, abra o arquivo de visualização que você deseja localizar, por exemplo, resources/views/welcome.blade.php. Em seguida, substitua a tag body pelo seguinte código.
Welcome to Linguise website!
Como você pode ver, o texto acima está atualmente escrito diretamente no código. Isso é menos eficiente e dificulta a tradução de sites para diferentes idiomas (internacionalização).
Vamos tornar o texto acima mais flexível para que possa ser facilmente adaptado a diferentes idiomas. O Laravel oferece um recurso muito útil para isso: o sistema de localização. Como primeiro passo, substitua o texto existente pelo seguinte código.
{{ __('Welcome to Linguise website!') }}
Laravel exibirá o texto acima por padrão e procurará a tradução se o usuário selecionar um idioma diferente do inglês. Nesse caso, o inglês será usado como idioma padrão do aplicativo.
Configurando locales em um site multilíngue Laravel

Mas como o Laravel determina o idioma atual ou sabe quais idiomas estão disponíveis na aplicação? Ele verifica as configurações de localidade no arquivo config/app.php. Abra este arquivo e procure as duas chaves a seguir.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
A explicação acima das chaves deve estar clara. Em resumo, a chave locale contém o idioma padrão do seu aplicativo (se nenhum outro idioma for especificado no código). O fallback_locale é ativado se um idioma inexistente for solicitado no seu aplicativo.
Agora, vamos adicionar uma nova chave a este arquivo para fornecer uma lista de todos os idiomas suportados.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
Neste ponto, testamos o Laravel web para oferecer suporte a três idiomas, a saber, inglês, italiano e francês.
Visão geral dos ficheiros de tradução Laravel

No Laravel, como em muitos outros frameworks, as traduções para diferentes idiomas são armazenadas em arquivos separados. Dois métodos são usados para organizar esses arquivos de tradução.
O método mais antigo armazena arquivos na seguinte estrutura: resources/lang/{en,fr,it}/{myfile.php}. O método mais recente usa arquivos JSON, como resources/lang/{fr.json, it.json}. Este artigo se concentrará no método mais recente, embora os princípios sejam semelhantes para o método mais antigo, exceto pelas diferenças na forma como as chaves de tradução são nomeadas e acessadas.
Para idiomas com variações regionais, deve nomear os diretórios ou ficheiros de idioma de acordo com a norma ISO 15897. Por exemplo, o inglês britânico seria nomeado como en_GB em vez de en-gb.
informações gerais
No Laravel, como em muitos frameworks, as traduções para diferentes idiomas são armazenadas em arquivos separados. Existem dois métodos principais para organizar os arquivos de tradução do Laravel .
- A abordagem legada envolve armazenar arquivos no caminho: resources/lang/{en,fr,it}/{myfile.php}.
- A abordagem moderna utiliza os arquivos resources/lang/{fr.json, it.json}.
Este artigo se concentrará no segundo método, embora os princípios sejam aplicáveis a ambos (com variações na forma como as chaves de tradução são nomeadas e acessadas).
Para idiomas que variam por região, recomenda-se nomear os diretórios/arquivos de idioma de acordo com os padrões ISO 15897. Por exemplo, o inglês britânico seria denotado como en_GB em vez de en-gb.
Criação de ficheiros de tradução Laravel
Depois de configurar os idiomas para nossa aplicação, podemos prosseguir para traduzir nossa mensagem de boas-vindas padrão.
Vamos começar por criar novos ficheiros de localização em formato JSON dentro do diretório resources/lang. Primeiro, criaremos um ficheiro resources/lang/it.json e preenchê-lo-emos com as traduções adequadas.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Em seguida, adicione um ficheiro resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Como você pode observar, estamos referenciando consistentemente a mensagem padrão do arquivo welcome.blade.php ({{ __(‘Bem-vindo ao site Linguise !’) }}). Não há necessidade de criar um arquivo en.json, pois o Laravel reconhece automaticamente que as mensagens padrão estão em inglês.
Configurando o seletor de idioma em um aplicativo multilíngue Laravel

Além disso, o Laravel ainda não está configurado para substituir o idioma local, portanto, por enquanto, trataremos a tradução diretamente dentro da rota. Modifique a rota de boas-vindas padrão dentro do arquivo routes/web.php assim.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
Neste caso, estamos capturando um parâmetro GET de locale opcional e definindo o locale atual com base nele (se o locale solicitado for suportado).
Agora, você pode visitar seu site e incluir qualquer um dos idiomas suportados como o primeiro segmento na URL. Por exemplo, navegar para localhost/it ou localhost/fr exibirá o conteúdo localizado. Se você não especificar um idioma ou escolher um que não seja suportado, Laravel usará o inglês (en) como padrão.
Middleware de localização para Laravel
Incluir o idioma em cada URL pode não ser o ideal e pode prejudicar o apelo visual do site. Para resolver isso, vamos configurar um seletor de idioma e utilizar a sessão do usuário para exibir o conteúdo traduzido. Você pode criar um novo middleware no arquivo app/Http/Middleware/Localization.php ou gerá-lo executando o comando artisan make:middleware Localization.
Em seguida, adicione o seguinte código dentro.
Este middleware direcionará o Laravel para usar o local selecionado pelo usuário se esta opção estiver presente na sessão.
Como precisamos que a operação seja executada em cada requisição, adicione-a à pilha de middleware padrão em app/Http/Kernel.php para o grupo de middleware web.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
Modificação de rotas
Em seguida, defina uma rota para alterar o idioma no arquivo routes/web.php. Estamos usando uma rota de closure aqui, mas você pode colocar o mesmo código dentro de um controller, se preferir.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Além disso, remova a alternância de idioma que foi adicionada anteriormente à rota de boas-vindas padrão. Sua rota raiz agora deve ficar assim.
Route::get('/', function () {
return view('welcome');
});
Depois de fazer isso, o usuário só poderá alternar o idioma ativo visitando localhost/language/{locale}. O idioma selecionado será salvo na sessão, e os usuários serão redirecionados de volta à página anterior (conforme tratado pelo middleware de Localização).
Para testá-lo, acesse localhost/language/it (assumindo que o cookie de sessão esteja ativo no seu navegador) e você deverá ver o conteúdo traduzido. Você pode navegar pelo site ou atualizar a página, e o idioma escolhido permanecerá em vigor.
Implementação do seletor de idiomas
Agora, precisamos oferecer ao usuário uma opção clicável para alterar o seletor de idioma Laravel web em vez de exigir que ele insira manualmente os códigos de localidade na URL. Para isso, crie um seletor de idioma simples. Adicione um novo arquivo em resources/views/partials/language_switcher.blade.php e insira o seguinte código.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Para incluir o seletor de idiomas recém-criado na visualização “welcome”, basta adicionar a seguinte linha ao seu arquivo welcome.blade.php onde você deseja que o seletor apareça.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Abra o arquivo app/Providers/AppServiceProvider.php e adicione o seguinte código no método boot() para compartilhar o idioma atual com todas as visualizações quando o seletor de idioma for usado
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Recursos avançados de tradução no Laravel PHP

Nesta discussão, trataremos então de outros componentes de localização, nomeadamente data, número e moeda. Aqui estão os passos.
Datas localizadas no Laravel
Lidar com datas e horas é crucial no processo de localização. O Laravel usa o Carbon para gerenciar datas e horas. Veja como você pode usar o Carbon para exibir uma data localizada.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
Este código define o locale do Carbon com base no locale atual da aplicação e formata a data de acordo.
Para visualizar a data localizada numa visualização:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
Formatação de números e moedas
Diferentes países têm várias formas de formatar números. Por exemplo.
- França → 123 123,12
- Alemanha → 123.123,12
- Japão → 123.123
Para acomodar essas variações em sua aplicação Laravel , você pode usar NumberFormatter.
Você também pode escrever números por extenso em um idioma específico.
Aqui estão as moedas. Para o idioma francês (`fr`), a moeda será exibida em euros (€), enquanto para o idioma dos EUA (`en_US`), será exibida em dólares americanos ($).
Solução alternativa para a localização Laravel com Linguise

Depois de entender as etapas da localização do Laravel conforme descrito no artigo, esse processo envolve muitas etapas que exigem que os usuários entendam o código do programa Laravel em profundidade.
Isso certamente pode dificultar para usuários novatos que desejam localizar seus aplicativos. Portanto, é necessária uma solução mais inovadora, capaz de traduzir rapidamente, oferecer suporte à localização e exigir apenas alguns passos simples para ser implementada.
Uma solução promissora é Linguise. Linguise oferece uma abordagem mais fácil e eficiente para a localização Laravel , sem a necessidade de conhecimento aprofundado em programação. Os principais recursos do Linguise incluem.
- Integração fácil com Laravel
- Personalize o seletor de idiomas sem codificação
- Tradução de imagem
- Editor ao vivo para personalizar traduções para o contexto local
- Tradução dinâmica para conteúdo gerado dinamicamente
- Otimização de SEO para versões em vários idiomas
As etapas para instalar o Linguise em sites Laravel também podem ser realizadas facilmente. Aqui está uma breve explicação.
- Crie uma conta Linguise (utilize o período de teste gratuito de 30 dias)
- Registre seu domínio web Laravel e insira algumas informações. Você receberá uma chave de API.
- Faça o upload e conecte o script de tradução Linguise à pasta Laravel que você recebeu.
- Configure os URLs de idioma no arquivo htaccess.
- Insira o script do seletor de idioma no head do seu HTML.
- Personalize o seletor de idiomas conforme necessário
- O seletor de idiomas aparecerá no site Laravel e o conteúdo poderá ser traduzido automaticamente.
Como? Com Linguise, você só precisa se registrar e ativar, e o seletor de idiomas aparecerá. Depois disso, você fica livre para localizar, por exemplo, através do editor ao vivo, traduzir mídia, imagens, etc.
Conclusion
A localização do Laravel é um recurso poderoso que permite aos desenvolvedores criar sites e aplicativos multilíngues. Como vimos, o processo de localização integrado do Laravel envolve várias etapas e exige um bom entendimento do framework. Pode ser desafiador para iniciantes ou para quem procura uma solução mais rápida.
Ferramentas como o Linguise oferecem uma alternativa inovadora para quem busca uma abordagem mais simplificada. Essas soluções oferecem recursos de tradução rápida, integração fácil e funcionalidades amigáveis, como seletores de idioma personalizáveis e tradução de imagens. Agora, crie sua conta Linguise e aproveite nosso recurso para localizar seu Laravel!



