Pular para o conteúdo principal

Laravel

O pacote neiderruiz/translate-projects-laravel extrai os textos de __(), trans() e @lang() para lang/<idioma base>.json, os traduz e grava lang/en.json, lang/pt_BR.json, etc., que o Laravel usa diretamente.

Requisitos​

  • PHP 8.1 ou superior e Laravel 10, 11, 12 ou 13.
  • Um projeto e um API token do Translate Projects. Veja Primeiros passos.

1. Instale o pacote​

Terminal
composer require neiderruiz/translate-projects-laravel
php artisan vendor:publish --tag=translate-config # Opcional

2. Configure o .env​

.env
TRANSLATE_PROJECTS_API_KEY=tu_token
APP_LOCALE=es
TRANSLATE_PROJECTS_TARGET_LANGUAGES=en,pt-BR,fr
Chave em config/translate-projects.phpVariável de ambientePadrão
api_keyTRANSLATE_PROJECTS_API_KEY—
api_urlTRANSLATE_PROJECTS_API_URLhttps://api.translateprojects.dev
default_localeTRANSLATE_PROJECTS_DEFAULT_LOCALE ou APP_LOCALEen
target_languagesTRANSLATE_PROJECTS_TARGET_LANGUAGES (separados por vírgulas)es,fr,de,it
scan_paths—app, resources, routes

default_locale deve corresponder ao idioma padrão do projeto no Translate Projects. Os códigos podem ser escritos como pt-BR, pt_BR ou pt-br: o pacote usa pt-BR com a API e pt_BR no nome do arquivo, como o Laravel espera. Se você usar php artisan config:cache, execute php artisan config:clear depois de alterar o .env.

3. Marque seus textos​

routes/web.php
Route::get('/', fn () => __('Bienvenido a mi aplicación'));
resources/views/welcome.blade.php
<h1>{{ __('Hola mundo') }}</h1>
<p>{{ __('Bienvenido, :name', ['name' => $user->name]) }}</p>
<p>@lang('Este texto también se traduce')</p>

4. Extraia e traduza​

Terminal
php artisan translate:scan        # Extraia os textos para lang/es.json
php artisan translate # Traduza para todos os idiomas de destino
php artisan translate pt-BR # Apenas um idioma
php artisan translate --force # Traduza mesmo sem alterações
  • translate:scan procura __('...'), trans('...'), trans_choice('...') e @lang('...') com um texto literal. Adiciona os textos novos a lang/<idioma base>.json e mantém os que já existiam. Ignora as chaves de grupo (como auth.failed) e as de pacotes (pacote::arquivo.chave).
  • translate envia os textos somente se mudaram, aguarda o backend e grava lang/<idioma>.json. Mantém as entradas que já existiam nesse arquivo, por exemplo traduções feitas manualmente.

Arquivos que são gerados​

lang/
├── es.json ← idioma base (gerado pelo translate:scan)
├── en.json
├── pt_BR.json
├── fr.json
└── .translate-projects.json ← cache

Cache e --force​

Em lang/.translate-projects.json fica registrada a versão de cada idioma: uma segunda execução sem alterações faz uma única requisição e não traduz nada. Use --force para traduzir novamente mesmo sem alterações. Mais detalhes em Cache e erros.

Erros comuns​

O comando nunca deixa um arquivo pela metade nem o apaga.

  • Falta TRANSLATE_PROJECTS_API_KEY: falha sem fazer requisições. Se você usar config:cache, execute config:clear.
  • Não foi encontrado ou não é válido lang/es.json: você ainda não extraiu os textos: execute php artisan translate:scan.
  • O idioma de origem não é o padrão ou O idioma de destino não está ativo no seu projeto: verifique o idioma padrão do projeto ou ative esse idioma no painel.
  • Token inválido ou erro 4xx: mostra o código e a mensagem da API e não altera os arquivos.
  • Erro 429, 5xx ou de rede: tenta novamente 3 vezes; se continuar falhando, mantém esse idioma como estava e segue com os demais.
  • Falta a key de IA (MISSING_API_KEY): grava o que chegou, avisa quantos textos faltam e os tenta novamente na próxima execução.
  • Placeholders: se a IA alterar um :placeholder, essa tradução é descartada e o Laravel mostra o texto original.

Limitações​

  • Somente os arquivos JSON são traduzidos (textos usados como chave). Os arquivos de grupo lang/<idioma>/*.php não são enviados.
  • Chaves dinâmicas como __($variable) não são detectadas.
Grátis

🚀 Automatize suas traduções de graça​

Translate Projects é gratuito. Você cria seu projeto, conecta a chave do seu provedor de IA e paga apenas a ele pelo que gastar.

  • Sem planos nem cartão de crédito: Todos os recursos estão disponíveis desde o primeiro dia.
  • Use sua própria IA: Claude, OpenAI, DeepSeek ou Gemini. Sua chave é armazenada criptografada.
  • Rede de traduções compartilhada: Se um texto já foi traduzido, você o recebe instantaneamente sem gastar sua chave.
  • Painel de administração: Revise e edite todas as suas traduções em um único lugar.

Criar conta grátis →

Suporte

Estamos aqui para ajudar você​

Se você tiver alguma dúvida, precisar de ajuda ou quiser contribuir, não hesite em entrar em contato comigo. Estou à sua disposição para apoiá-lo no que precisar.

Apoie o Projeto​

Se este projeto foi útil para você, convido você a me pagar um café. Seu apoio me ajuda a continuar melhorando e criando conteúdo de valor. Obrigado por estar aqui! ☕

Buy me a coffee