torskint/auto-translate

5.1.1 2025-09-14 19:44 UTC

This package is auto-updated.

Last update: 2025-09-19 05:51:58 UTC


README

Ce package fournit un moyen simple d’automatiser la génération de fichiers de traduction PHP pour vos projets Laravel.
Les traductions sont générées automatiquement à partir d’une langue de référence (base_locale) vers toutes les locales configurées, en utilisant une API de traduction (Google Translate ou OpenAI).

Il inclut :
✅ La protection stricte des placeholders ((WEBSITE_NAME), %s, {{statusCode}}, etc.)
✅ Un système de corrections post-traduction (to_replace) pour éviter les mauvaises substitutions faites par les moteurs de traduction
✅ La gestion de fichiers spécifiques (ex. conditions générales, politique de confidentialité, mentions légales…)
✅ Des commandes Artisan pour générer, vérifier et réinitialiser vos traductions

⚙️ Installation

Installer le package via Composer :

composer require torskint/auto-translate:^5.0.0

Ajouter le provider dans votre fichier config/app.php :

'providers' => [
    // ...
    \Torskint\AutoTranslate\AutoTranslateServiceProvider::class,
],

Publier le fichier de configuration :

php artisan vendor:publish --tag=auto-translate-config

📂 Configuration

Le fichier config/auto-translate.php permet de personnaliser le comportement du package.

Langue de base

'base_locale' => 'fr',

La langue de référence à partir de laquelle toutes les traductions seront générées.

Locales gérées

'locales' => [
    'en', 'de', 'es', 'it', 'ru', 'el', 'tr', 'pl', 'pt',
    'sv', 'fi', 'nl', 'hu', 'ro', 'sk', 'sq', 'sl', 'bg',
    'da', 'no', 'lv', 'lt', 'et', 'hr', 'mn', 'uz', 'ky',
    'hy', 'kk', 'tg', 'lb',
],

La liste complète des locales qui seront générées automatiquement.

Fichiers à traduire

'files' => [
    'torskint/privacy-policy.php',
    'torskint/terms-and-conditions-of-use.php',
    'torskint/cookie-policy.php',
    'torskint/legal-notice.php',
],

Liste des fichiers contenant du contenu statique (souvent juridique) à traduire.

Protection des placeholders

'preserve_words' => [
    '(WEBSITE_NAME)', '(WEBSITE_EMAIL)', '(WEBSITE_PHONE)',
    '(AUTHOR_NAME)', '(AUTHOR_EMAIL)', '(TEAG)',
    '(PDF)', '({{filesize}}MiB)', '{{maxFilesize}}MiB', '{{statusCode}}',
    '\\', '%s', '%d',
],

Regex utilisée pour détecter les placeholders dynamiques :

'preserve_words_pattern' => '/\(\w+\)|%s|%d|\\\\|\(PDF\)|\(\{\{[a-zA-Z0-9_]+\}\}MiB\)|\{\{[a-zA-Z0-9_]+\}\}MiB|\{\{[a-zA-Z0-9_]+\}\}/',

Corrections post-traduction (to_replace)

'to_replace' => [
    'es' => [
        '(NOMBRE_SITIO WEB)'    => '(WEBSITE_NAME)',
        '(SITIO WEB_TELÉFONO)'  => '(WEBSITE_PHONE)',
    ],
    'el' => [
        '(ΤΕΑΓ)' => '(TEAG)',
    ],
    'ru' => [
        '(ИМЯ_ВЕБ-САЙТА)' => '(WEBSITE_NAME)',
    ],
],

Permet de corriger automatiquement certains placeholders que Google Translate ou OpenAI peuvent traduire par erreur.

🚀 Utilisation

Générer toutes les traductions

php artisan ts-translate:all

👉 Génère toutes les traductions pour toutes les locales définies.

Réinitialiser toutes les traductions

php artisan ts-translate:reset

👉 Supprime toutes les traductions générées et conserve uniquement les fichiers de base.

Vérifier les placeholders

php artisan ts-translate:count

👉 Vérifie que le nombre de placeholders est identique avant et après traduction. Exemple : (WEBSITE_NAME) doit rester exactement (WEBSITE_NAME).

🔒 Sécurité

  • Les placeholders sont protégés avant l’envoi aux services de traduction et restaurés après.
  • Une vérification stricte s’assure qu’aucun placeholder n’est supprimé, ajouté ou modifié.
  • Des corrections (to_replace) sont appliquées automatiquement pour éviter les faux positifs.

📜 Licence

Le MIT License (MIT). Voir le fichier LICENSE.md pour plus d’informations.