Laravel
El paquete neiderruiz/translate-projects-laravel extrae los textos de __(), trans() y @lang() a lang/<idioma base>.json, los traduce y escribe lang/en.json, lang/pt_BR.json, etc., que Laravel usa directamente.
Prérequis
- PHP 8.1 ou supérieur et Laravel 10, 11, 12 ou 13.
- Un projet et un token API de Translate Projects. Consulte Premiers pas.
1. Installe le paquet
composer require neiderruiz/translate-projects-laravel
php artisan vendor:publish --tag=translate-config # Facultatif
2. Configura el .env
TRANSLATE_PROJECTS_API_KEY=tu_token
APP_LOCALE=es
TRANSLATE_PROJECTS_TARGET_LANGUAGES=en,pt-BR,fr
Clave en config/translate-projects.php | Variable de entorno | Par défaut |
|---|---|---|
api_key | TRANSLATE_PROJECTS_API_KEY | — |
api_url | TRANSLATE_PROJECTS_API_URL | https://api.translateprojects.dev |
default_locale | TRANSLATE_PROJECTS_DEFAULT_LOCALE o APP_LOCALE | en |
target_languages | TRANSLATE_PROJECTS_TARGET_LANGUAGES (séparés par des virgules) | es,fr,de,it |
scan_paths | — | app, resources, routes |
default_locale debe coincidir con el idioma por defecto del proyecto en Translate Projects. Los códigos se pueden escribir como pt-BR, pt_BR o pt-br: el paquete usa pt-BR con la API y pt_BR en el nombre del archivo, como espera Laravel. Si usas php artisan config:cache, ejecuta php artisan config:clear después de cambiar el .env.
3. Marca tus textos
Route::get('/', fn () => __('Bienvenido a mi aplicación'));
<h1>{{ __('Hola mundo') }}</h1>
<p>{{ __('Bienvenido, :name', ['name' => $user->name]) }}</p>
<p>@lang('Este texto también se traduce')</p>
4. Extrae y traduis
php artisan translate:scan # Extrais les textes vers lang/es.json
php artisan translate # Traduis vers toutes les langues cibles
php artisan translate pt-BR # Une seule langue
php artisan translate --force # Traduis même s'il n'y a pas de changements
translate:scanrecherche__('...'),trans('...'),trans_choice('...')et@lang('...')avec un texte littéral. Ajoute les nouveaux textes àlang/<idioma base>.jsonet conserve ceux qui existaient déjà. Ignore les clés de groupe (commeauth.failed) et celles des paquets (pkg::archivo.clave).translatesube los textos solo si cambiaron, espera al backend y escribelang/<idioma>.json. Conserva las entradas que ya había en ese archivo, por ejemplo traducciones hechas a mano.
Fichiers générés
lang/
├── es.json ← idioma base (generado por translate:scan)
├── en.json
├── pt_BR.json
├── fr.json
└── .translate-projects.json ← cache
Cache et --force
En lang/.translate-projects.json se guarda qué versión tiene cada idioma: una segunda ejecución sin cambios hace una sola petición y no traduce nada. Usa --force para traducir de nuevo aunque no haya cambios. Más detalles en Caché y errores.
Erreurs courantes
El comando nunca deja un archivo a medias ni lo borra.
- Il manque
TRANSLATE_PROJECTS_API_KEY: échoue sans faire de requêtes. Si vous utilisezconfig:cache, exécutezconfig:clear. No se encontró o no es válido lang/es.json: vous n'avez pas encore extrait les textos : exécutezphp artisan translate:scan.El idioma de origen no es el predeterminadooEl idioma de destino no está activo en tu proyecto: vérifiez la langue par défaut du projet ou activez cette langue dans le panneau.- Jeton invalide ou erreur 4xx: affiche le code et le message de l'API et ne touche pas aux fichiers.
- Erreur 429, 5xx ou réseau: réessaie 3 fois ; si cela échoue encore, laisse cette langue telle quelle et continue avec les autres.
- Clé d'IA manquante (
MISSING_API_KEY): écrit ce qui est arrivé, signale combien de textes manquent et les réessaie lors de la prochaine exécution. - Placeholders: si l'IA modifie un
:placeholder, cette traduction est écartée et Laravel affiche le texte original.
Limitations
- Seuls les fichiers JSON sont traduits (textes utilisés comme clés). Les fichiers de groupe
lang/<idioma>/*.phpne sont pas envoyés. - Les clés dynamiques comme
__($variable)ne sont pas détectées.
🚀 Automatisez vos traductions gratuitement
Translate Projects est gratuit. Vous créez votre projet, connectez la clé de votre fournisseur d'IA et ne lui payez que ce que vous dépensez.
- Sans forfaits ni carte de crédit: Toutes les fonctionnalités sont disponibles dès le premier jour.
- Utilisez votre propre IA: Claude, OpenAI, DeepSeek ou Gemini. Votre clé est stockée chiffrée.
- Réseau de traductions partagé: Si un texte a déjà été traduit, vous le recevez instantanément sans dépenser votre clé.
- Panneau d'administration: Vérifiez et modifiez toutes vos traductions depuis un seul endroit.
Nous sommes là pour vous aider
Si vous avez des questions, besoin d'aide ou souhaitez contribuer, n'hésitez pas à me contacter. Je suis à votre disposition pour vous soutenir dans tout ce dont vous avez besoin.
- Site web: neiderruiz.com
- GitHub: @neiderruiz
- Twitter: @neiderruiz
- YouTube: Neider Ruiz
Soutenez le projet
Si ce projet vous a été utile, je vous invite à m'offrir un café. Votre soutien m'aide à continuer de m'améliorer et à créer du contenu de valeur. Merci d'être là ! ☕