zwiicms-translations/tools/extract.php

57 lines
1.9 KiB
PHP
Raw Normal View History

2023-07-25 19:32:53 +02:00
<?php
// Charger le contenu du fichier fr_FR.json
$json_file_path = 'module/slider/i18n/fr_FR.json';
$json_data = json_decode(file_get_contents($json_file_path), true);
// Extraire les clés du tableau JSON
$json_keys = array_keys($json_data);
// Parcourir les fichiers PHP dans les deux répertoires source 'module/blog/' et 'core/'
$core_directories = ['module/slider/', 'core/'];
$php_files = [];
foreach ($core_directories as $core_directory) {
$php_files = array_merge($php_files, get_php_files($core_directory));
}
// Fonction récursive pour récupérer les fichiers PHP dans l'arborescence et exclure les dossiers 'i18n'
function get_php_files($directory) {
$php_files = [];
$files = scandir($directory);
foreach ($files as $file) {
if ($file === '.' || $file === '..') continue;
$path = $directory . DIRECTORY_SEPARATOR . $file;
if (is_dir($path) && $file !== 'i18n') {
$php_files = array_merge($php_files, get_php_files($path));
} elseif (pathinfo($file, PATHINFO_EXTENSION) === 'php') {
$php_files[] = $path;
}
}
return $php_files;
}
// Créer un tableau pour stocker les clés présentes dans les fichiers PHP
$php_keys = [];
// Rechercher les clés du tableau JSON dans les fichiers PHP et les ajouter à $php_keys
foreach ($json_keys as $key) {
foreach ($php_files as $php_file) {
$content = file_get_contents($php_file);
if (strpos($content, "'{$key}'") !== false) {
$php_keys[] = $key;
break;
}
}
}
// Supprimer les clés absentes du fichier fr_FR.json
$keys_to_remove = array_diff($json_keys, $php_keys);
foreach ($keys_to_remove as $key) {
unset($json_data[$key]);
}
// Enregistrer les modifications dans le fichier fr_FR.json
file_put_contents($json_file_path, json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
echo "Le fichier fr_FR.json a été mis à jour avec succès !";