Localização passo a passo do Laravel [Guia]

Leve o seu negócio para o próximo nível com a expansão global. Crescimento e desenvolvimento empresarial.
Índice

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 ?

Um homem com um colete laranja segurando um tablet com um mapa-múndi. Várias bandeiras de países são exibidas.

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

Duas pessoas colaborando em uma tela grande de computador com vários aplicativos. Elas parecem estar trabalhando juntas.

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

Homem trabalhando no laptop. Navegação na web na tela.

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.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                Welcome to Linguise website!
            </div>
        </div>
    </div>
</body>
				
			

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

Duas pessoas trabalhando em telas de computador. Elas estão interagindo com grandes displays.

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

Uma mulher a apontar para um grande ecrã de computador que exibe vários ícones coloridos. O ecrã tem um fundo branco com ícones azuis e roxos.

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 .

  1. A abordagem legada envolve armazenar arquivos no caminho: resources/lang/{en,fr,it}/{myfile.php}.
  2. 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

Pessoas a interagir com uma grande interface de e-mail.

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.

				
					<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;

class Localization
{
    /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure  $next
    * @return mixed
    */
    public function handle(Request $request, Closure $next)
    {
        if (Session::has('locale')) {
            App::setLocale(Session::get('locale'));
        }
        return $next($request);
    }
}


				
			

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<string, array<int, class-string|string>>
*/
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.

				
					<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
    @foreach($available_locales as $locale_name => $available_locale)
        @if($available_locale === $current_locale)
            <span class="ml-2 mr-2 text-gray-700">{{ $locale_name }}</span>
        @else
            <a class="ml-1 underline ml-2 mr-2" href="language/{{ $available_locale }}">
                <span>{{ $locale_name }}</span>
            </a>
        @endif
    @endforeach
</div>


				
			

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.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            @include('partials/language_switcher')

            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                {{ __('Welcome to our website!') }}
            </div>
        </div>
    </div>
</body>


				
			

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

Ilustração de pessoas a trabalhar num projeto. Uma equipa colaborando.

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.

				
					<?php
Route::get('/', function () {
    $today = \Carbon\Carbon::now()
        ->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’]) }}
<br>
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
<br>
{{ $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.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);

$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
				
			

Você também pode escrever números por extenso em um idioma específico.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);

$num2 = NumberFormatter::create('it', NumberFormatter::SPELLOUT);
				
			

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 ($).

				
					<?php
$currency1 = NumberFormatter::create('it', NumberFormatter::CURRENCY);

$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
				
			
Quebre Barreiras Linguísticas
Diga adeus às barreiras linguísticas e olá ao crescimento sem limites! Experimente hoje o nosso serviço de tradução automática.

Solução alternativa para a localização Laravel com Linguise

Uma equipe trabalhando junta em um projeto digital. Eles estão cercados por várias ferramentas e símbolos digitais.

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.

  1. Crie uma conta Linguise (utilize o período de teste gratuito de 30 dias)
  2. Registre seu domínio web Laravel e insira algumas informações. Você receberá uma chave de API.
  3. Faça o upload e conecte o script de tradução Linguise à pasta Laravel que você recebeu.
  4. Configure os URLs de idioma no arquivo htaccess.
  5. Insira o script do seletor de idioma no head do seu HTML.
  6. Personalize o seletor de idiomas conforme necessário
  7. 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.

Pronto para explorar novos mercados? Experimente nosso serviço de tradução automática gratuitamente com nosso teste sem risco de 1 mês. Não é necessário cartão de crédito!

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!

Você também pode se interessar por ler

Não perca esta oportunidade!
Assine a nossa Newsletter

Receba novidades sobre tradução automática de sites, SEO internacional e muito mais!

Invalid email address
Experimente. Uma vez por mês, e pode cancelar a subscrição a qualquer momento.

Não saia sem compartilhar seu e-mail!

Não podemos garantir que ganhará a lotaria, mas podemos prometer algumas notícias informativas interessantes sobre tradução e descontos ocasionais.

Não perca esta oportunidade!
Invalid email address