Pour faire suite à l’article traitant de la récupération des chaines à traduire dans les sources, cet article va traiter de la récupération des chaines à traduire se trouvant dans la base de données.

Dans certains cas les chaines à traduire peuvent ne pas avoir de fichier spécifique, du coup j’ai arbitrairement ajouté dans certaines tables un champ label, cette fonction va donc chercher dans la base tous les champs label afin de les inclure dans la liste des chaines à traduire.

La fonction ci-dessous est donc appelée par la fonction principale checkExistingStrings :

public function checkExistingStringsFromDb($db_fields)

{

$tables_in_db = DB::select('SHOW TABLES');

$db = "Tables_in_".env('DB_DATABASE');

$tables = [];

foreach($tables_in_db as $table){

$tables[] = $table->{$db};

}

foreach ($tables as $table) {

$fields = array_values(Schema::getColumnListing($table));

foreach ($fields as $field) {

if (in_array($field, $db_fields)) {

$rows = DB::table($table)

->pluck($field);

foreach ($rows as $row) {

// Check string in file

$this->checkString($row);

}

}

}

}

// Save all strings

$this->_saveStrings();

}

Suite à l’exécution de la fonction, toutes les chaines se trouvant dans le champ label d’une table sont inclus dans les fichiers JSON pour être traduites, l’affichage dans les tpl se faisant de la manière suivante :

{{ __($toto->label) }}

Maintenant le système de traduction est bien abouti et il devrait pouvoir permettre de gérer l’exhaustivité des cas.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

quatre-vingt trois + = quatre-vingt sept