Traduction Laravel

Utilisation d'un script créer par webO3 pour travailler avec les traductions sous Laravel.

Traduction Laravel

Utilisation d'un script créer par webO3 pour travailler avec les traductions sous Laravel.

Introduction

Le paquet créé par webO3 vous aide à gérer vos traductions via des commandes artisan. Il extrait les clés de traduction de votre code source, gère les fichiers JSON de langues et supporte les formats CSV et XLIFF pour travailler avec les traducteurs. La découverte automatique des paquets est activée avec Laravel >= 5.5.

Fonctions de traduction supportées

Fonction Types de fichiers Exemple
__() PHP, JS, TS, Vue __('Hello world')
Lang::get() PHP Lang::get('messages.welcome')
@lang() PHP (Blade) @lang('Please login')
$t() JS, TS, Vue $t('Vue key')
.t() JS, TS, Vue i18n.t('My key')

Gestion des guillemets

  • Guillemets simples : __('key')
  • Guillemets doubles : __("key")
  • Guillemets échappés : __('It\'s a test') extrait correctement It's a test
  • Backtick template literals (JS/TS/Vue uniquement) : __(`multi-line key`)
  • Les backticks sont ignorés dans les fichiers PHP (où ils sont l'opérateur d'exécution shell)

Télécharger via composer :

Voir le paquet sur Packagist | Code source sur GitHub

# Installer un nouveau projet laravel
laravel new translator-project

# Ajouter le paquet au projet
cd translator-project
composer require webo3/laravel-translator

Pour Laravel <5.5

Vous devez enregistrer le "service provider" dans app.php:

webO3\Translator\Providers\TranslatorServiceProvider::class,

Configuration

Publiez le fichier de configuration pour spécifier les langues que vous souhaitez gérer :

php artisan vendor:publish --provider="webO3\Translator\Providers\TranslatorServiceProvider" --tag=config

Ceci crée le fichier config/webo3-translator.php avec les options suivantes :

return [
    // Langues à gérer
    'languages' => ['en', 'fr'],

    // Chemin des fichiers JSON de langues
    'lang_path' => resource_path('lang'),

    // Chemin d'exportation (null = même que lang_path)
    'export_path' => null,

    // Répertoires à scanner pour les clés de traduction
    'scan_paths' => [app_path(), resource_path()],

    // Format d'exportation : 'csv' ou 'xliff'
    'format' => 'csv',
];

Extraction des traductions

La commande translations:scan balaye les fichiers *.php, *.js, *.ts et *.vue dans les répertoires configurés via scan_paths pour les appels aux fonctions de traduction. Elle extrait les clés uniques et crée/met à jour un fichier JSON pour chaque langue configurée.

php artisan translations:scan
  • Les nouvelles clés sont ajoutées avec la clé elle-même comme valeur par défaut
  • Les traductions existantes sont préservées
  • Les clés sont triées alphabétiquement
  • Les commentaires (// et /* */) sont retirés avant le scan, mais les // à l'intérieur des chaînes (ex. URLs) sont préservés

Exportation des traductions

Lit tous les fichiers JSON de langues et les exporte dans le format configuré.

php artisan translations:export

Format CSV (par défaut)

Exporte un seul fichier translations.csv avec un BOM UTF-8 pour la compatibilité Excel :

key en fr
Hello world Hello world Bonjour le monde
Goodbye Goodbye Au revoir

Les valeurs non traduites (où la valeur est identique à la clé) apparaissent comme des cellules vides.

Lorsque nous envoyons ce fichier à notre traducteur, nous devons leur spécifier de ne pas toucher la colonne de "key", qui est notre référence pour la traduction. S'il y a une erreur dans la clé, cela n'a pas d'importance, corrigez-la simplement dans la colonne de langue correspondante.

Format XLIFF

Définissez 'format' => 'xliff' dans votre configuration. Exporte un fichier XLIFF 1.2 par langue cible (ex. translations-fr.xlf). La première langue dans votre tableau languages est utilisée comme langue source.

XLIFF est le format standard de l'industrie supporté par les outils de traduction professionnels (SDL Trados, memoQ, Phrase, Crowdin, etc.).

Importation de traductions

Lit le(s) fichier(s) exporté(s) et fusionne les valeurs traduites dans les fichiers JSON de langues.

php artisan translations:import
  • Les nouvelles clés sont ajoutées
  • Les traductions existantes sont mises à jour si le fichier contient une valeur différente
  • Les valeurs vides reprennent la clé elle-même comme valeur par défaut
  • Les clés sont triées alphabétiquement après l'importation
  • Le format d'importation est déterminé par l'option format de la configuration (même que l'exportation)

Flux de travail typique

  1. Écrire du code en utilisant __('key'), $t('key'), etc.
  2. Exécuter php artisan translations:scan pour extraire toutes les clés
  3. Exécuter php artisan translations:export pour générer le(s) fichier(s) de traduction
  4. Envoyer le(s) fichier(s) au traducteur (CSV ou XLIFF)
  5. Remettre le(s) fichier(s) traduit(s) dans le chemin d'exportation
  6. Exécuter php artisan translations:import pour fusionner les traductions

Utilisation du fichier de traduction dans Vue.js

Pour pouvoir utiliser le fichier JSON dans Vue.js, nous devons ajouter un package NPM. (vue-i18n).

npm install vue-i18n --save-dev

Ajoutez ce qui suit dans le fichier app.js :

import { createI18n } from 'vue-i18n';
import en from '../lang/en.json';
import fr from '../lang/fr.json';

const i18n = createI18n({
    locale: 'en',
    messages: { en, fr }
});

app.use(i18n);

Il sera alors possible d'utiliser les fonctions de VueI18n pour traduire à l'aide des fonctions $t() ou i18n.t() :

i18n.t("This is an example key.");

Ou dans le modèle de vue:

<a :title="$t('Hello world')">{{ $t('Hello world') }}</a>
Audit gratuit · 24 h

Votre site est lent ? Recevez un diagnostic gratuit en 24 h.

Triage gratuit sans engagement. Un expert vous répond en moins de 8 h ouvrables.