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

Aqui estão algumas razões importantes pelas quais você deve localizar seu site Laravel .
- Alcance um público global: Ao localizar seu Laravel, você pode estender o alcance do seu aplicativo para um público internacional. Isso permite que usuários de diferentes países e origens linguísticas compreendam e interajam com seu conteúdo.
- Melhora a experiência do usuário: A localização permite que os usuários interajam com o aplicativo em seu idioma nativo, o que melhora significativamente a experiência do usuário. Isso pode aumentar as taxas de engajamento, 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 fornecer 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 uma classificação melhor nos motores 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 Laravel

Existem alguns requisitos e etapas a considerar ao implementar a localização multilíngue em Laravel.
- Para obter as últimas funcionalidades de localização, 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 do framework Laravel será útil no processo de implementação.
- Configure um ambiente de desenvolvimento local ou servidor que suporte Laravel, incluindo um servidor web e banco de dados.
- Determine os idiomas que sua aplicação suportará desde o início.
Traduções simples de Laravel

Depois de entender quais os requisitos que devem ser atendidos antes de traduzir uma aplicação ou web Laravel , iremos fornecer alguns passos para traduzir 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 código a seguir.
Welcome to Linguise website!
Como você pode ver, o texto acima está atualmente escrito diretamente no código. Isso é menos eficiente e torna difícil traduzir sites para diferentes idiomas (internacionalização).
Vamos tornar o texto acima mais flexível para que possa ser facilmente adaptado a diferentes idiomas. Laravel fornece um recurso muito útil para isso; o sistema de localização. Como primeiro passo, substitua o texto existente pelo código a seguir.
{{ __('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. Neste caso, o inglês será usado como idioma padrão da aplicação.
Configurando localidades em uma web 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 pelas duas chaves seguintes.
/*
|--------------------------------------------------------------------------
| 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 ser clara. Em resumo, a chave de localidade mantém a localidade padrão para sua aplicação (se nenhuma outra localidade for especificada no código). A fallback_locale é ativada se uma localidade inexistente for solicitada em sua aplicação.
Agora, vamos adicionar uma nova chave a este arquivo para fornecer uma lista de todos os locais suportados.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
Neste ponto, tentamos a web Laravel para suportar três idiomas, nomeadamente Inglês, Italiano e Francês.
Visão geral dos arquivos de tradução Laravel

No Laravel, assim 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, além das diferenças em como as chaves de tradução são nomeadas e acessadas.
Para idiomas com variações regionais, você deve nomear os diretórios ou arquivos de idioma de acordo com o padrão ISO 15897. Por exemplo, o inglês britânico seria nomeado en_GB em vez de en-gb.
Informações gerais
No Laravel, assim 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 sob o caminho: resources/lang/{en,fr,it}/{myfile.php}.
- A abordagem moderna utiliza 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 em como as chaves de tradução são nomeadas e acessadas).
Para idiomas que variam por região, é recomendado nomear diretórios/arquivos de idioma de acordo com as normas ISO 15897. Por exemplo, o inglês britânico seria denotado como en_GB em vez de en-gb.
Criando arquivos de tradução Laravel
Tendo configurado os locais para nossa aplicação, podemos prosseguir para traduzir nossa mensagem de boas-vindas padrão.
Vamos começar criando novos arquivos de localização em formato JSON dentro do diretório resources/lang. Primeiro, criaremos um arquivo resources/lang/it.json e o preencheremos com as traduções apropriadas.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Em seguida, adicione um arquivo resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Como você pode observar, estamos consistentemente referenciando 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 Laravel reconhece automaticamente que as mensagens padrão estão em inglês.
Configurando o alternador de idioma em um aplicativo multilíngue Laravel

Além disso, o Laravel ainda não está configurado para substituir o idioma local, então, por enquanto, lidaremos com a tradução diretamente dentro da rota. Modifique a rota de boas-vindas padrão dentro do arquivo routes/web.php como este.
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 localidade opcional e definindo a localidade atual com base nele (se a localidade solicitada for suportada).
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 uma localidade ou escolher uma que não seja suportada, o Laravel será padronizado para Inglês (en).
Middleware de localização para Laravel
Incluir o local em cada URL pode não ser ideal e pode prejudicar a aparência visual do site. Para resolver isso, vamos configurar um alternador 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 código a seguir dentro.
Este middleware irá direcionar Laravel para usar a localização selecionada pelo usuário se esta opção estiver presente na sessão.
Já que precisamos que a operação seja executada a cada solicitaçã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
],
Modificando rotas
Em seguida, defina uma rota para alterar o local no arquivo routes/web.php. Estamos usando uma rota de fechamento aqui, mas você pode colocar o mesmo código dentro de um controlador se preferir.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Além disso, remova a troca de localidade que foi previamente adicionada à rota de boas-vindas padrão. Sua rota raiz agora deve ter esta aparência.
Route::get('/', function () {
return view('welcome');
});
Uma vez feito isso, o usuário só pode alternar o idioma ativo visitando localhost/language/{locale}. O local selecionado será salvo na sessão e os usuários serão redirecionados de volta para a página anterior (conforme tratado pelo middleware de Localização).
Para testá-lo, vá para localhost/language/it (supondo 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 a linguagem escolhida permanecerá em vigor.
Implementação do seletor de idioma
Agora, precisamos fornecer ao usuário uma opção clicável para alterar o seletor de idioma Laravel web em vez de exigir que eles insiram códigos de localidade na URL manualmente. Para conseguir 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 idioma recém-criado na visualização “welcome”, basta adicionar a seguinte linha ao seu arquivo welcome.blade.php onde você gostaria que o seletor aparecesse.
@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 a localidade 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 em Laravel PHP

Nesta discussão, vamos lidar com outros componentes de localização, nomeadamente data, número e moeda. Aqui estão as etapas.
Datas localizadas em Laravel
Lidar com datas e horários é crucial no processo de localização. Laravel usa o Carbon para gerenciar datas e horários. Aqui está 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 local do Carbon com base no local atual da aplicação e formata a data de acordo.
Para exibir a data localizada em uma 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 }}
Formatando números e moedas
Diferentes países têm várias maneiras 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 o NumberFormatter.
Você também pode soletrar números em um idioma específico.
Aqui estão as moedas. Para o local francês (`fr`), a moeda será exibida em euros (€), enquanto para o local dos EUA (`en_US`), será exibida em dólares americanos ($).
Solução alternativa Laravel localização com Linguise

Depois de entender as etapas da localização da Laravel conforme descrito no artigo, este processo envolve muitas etapas que exigem que os usuários entendam o código do programa Laravel em profundidade.
Isso certamente pode dificultar para os usuários novatos que desejam localizar seus aplicativos. Portanto, é necessária uma solução mais inovadora que seja capaz de tradução rápida, suporte à localização e exija apenas algumas etapas simples para implementar.
Uma solução promissora é a Linguise. A Linguise oferece uma abordagem mais fácil e eficiente para a localização da Laravel sem a necessidade de conhecimento de codificação aprofundado. As principais características da Linguise incluem.
- Fácil integração com Laravel
- Personalize o alternador de idioma sem codificação
- Tradução de imagens
- Editor ao vivo para personalizar as traduções para o contexto local
- Tradução dinâmica para conteúdo gerado dinamicamente
- Otimização de SEO para versões multilíngues
As etapas para instalar Linguise em Laravel sites também podem ser feitas facilmente. Aqui está uma breve explicação.
- Crie uma conta Linguise (use o teste gratuito de 30 dias gratuitamente)
- Registre seu domínio web Laravel e insira algumas informações. Você receberá uma chave API.
- Faça o upload e conecte o script de tradução Linguise à pasta Laravel que você obteve.
- Configure URLs de idioma no arquivo htaccess.
- Insira o script do seletor de idioma no cabeçalho do seu HTML.
- Personalize o seletor de idioma conforme necessário
- O seletor de idioma aparecerá na web Laravel , e o conteúdo pode ser traduzido automaticamente.
Como? Com Linguise, você só precisa se registrar e ativar, e o seletor de idioma aparecerá. Depois disso, você está livre para localizar, por exemplo, através do editor ao vivo, traduzir mídia, imagens, etc.
Conclusão
Laravel localização é um recurso poderoso que permite aos desenvolvedores criar sites e aplicativos multilíngues. Como vimos, o processo de localização Laravel integrado envolve várias etapas e requer uma boa compreensão da estrutura. Pode ser desafiador para iniciantes ou aqueles que buscam uma solução mais rápida.
Ferramentas como Linguise fornecem uma alternativa inovadora para aqueles que buscam uma abordagem mais simplificada. Essas soluções oferecem capacidades de tradução rápida, integração fácil e recursos fáceis de usar, como seletores de idioma personalizáveis e tradução de imagens. Agora, crie sua conta Linguise e aproveite nossa funcionalidade para localizar seu Laravel!



