Position actuelle: Accueil> Derniers articles> Comparaison de fichiers de configuration multilingue: quelles clés et valeurs ne sont pas traduites?

Comparaison de fichiers de configuration multilingue: quelles clés et valeurs ne sont pas traduites?

M66 2025-06-06

Lors du développement d'applications Web prises en charge multi-langues, nous avons souvent des fichiers de configuration pour plusieurs langages (tels que en.php , fr.php , de.php , etc.), et chaque fichier de configuration contient le contenu de traduction de la langue correspondante. Dans le développement réel, certaines valeurs de clés peuvent être rencontrées où elles ne sont pas traduites, ou certaines clés sont manquantes dans le fichier de configuration d'une certaine langue. Alors, comment utilisez-vous les programmes PHP pour comparer automatiquement les fichiers de configuration dans plusieurs langues et découvrir ces valeurs de clés non traduites?

Cet article montrera comment rédiger un script PHP qui compare plusieurs fichiers de configuration de langage pour identifier les valeurs de clés qui n'ont pas été traduites, ce qui aide les développeurs à mieux gérer multilingue.

1. Structure de fichiers de configuration

Supposons que nous ayons le fichier de configuration multilingue suivant:

en.php (anglais)

 return [
    'welcome_message' => 'Welcome to our website!',
    'login' => 'Login',
    'register' => 'Register',
];

fr.php (français)

 return [
    'welcome_message' => 'Bienvenue sur notre site!',
    'login' => 'Se connecter',
];

de.php (allemand)

 return [
    'welcome_message' => 'Willkommen auf unserer Website!',
    'register' => 'Registrieren',
];

Comme indiqué ci-dessus, les fichiers de configuration pour différentes langues contiennent certaines des mêmes clés (comme Welcome_Message ), mais certaines clés n'apparaissent que dans certaines langues (comme la connexion n'apparaît qu'en anglais et en français, mais l'allemand n'a pas cette clé).

2. Logique de script PHP

Pour comparer ces fichiers de configuration, nous pouvons écrire un script PHP, charger les fichiers de configuration de chaque langue et les comparer pour savoir quelles clés sont manquantes ou non traduites dans les fichiers de certaines langues.

Étape 1: Chargez le fichier de configuration

Tout d'abord, nous devons écrire une fonction pour charger le fichier de configuration. Ces fichiers peuvent être chargés à l'aide d'inclusion ou d'exigence , en supposant que ces fichiers de configuration renvoient tous un tableau associatif.

 function loadLangFile($langCode) {
    $filePath = __DIR__ . "/$langCode.php";
    if (file_exists($filePath)) {
        return include $filePath;
    }
    return [];
}

Étape 2: découvrez toutes les clés

Nous devons trouver toutes les clés de tous les fichiers de configuration. Pour plus de commodité, disons que nous connaissons déjà tous les codes linguistiques pris en charge (tels que EN , FR , DE, etc.). Nous pouvons parcourir chaque profil linguistique et combiner leurs liens ensemble.

 $langCodes = ['en', 'fr', 'de'];
$allKeys = [];

foreach ($langCodes as $langCode) {
    $langData = loadLangFile($langCode);
    $allKeys = array_merge($allKeys, array_keys($langData));
}

$allKeys = array_unique($allKeys);  // Aller au lourd,Évitez les clés en double

Étape 3: Comparez et trouvez des clés non traduites

Ensuite, nous allons parcourir toutes les clés et vérifier s'ils ont des valeurs correspondantes dans chaque fichier de configuration de la langue. Si une clé est manquante ou vide dans le fichier de configuration d'une langue, nous pouvons supposer que la clé n'est pas traduite.

 $missingKeys = [];

foreach ($allKeys as $key) {
    foreach ($langCodes as $langCode) {
        $langData = loadLangFile($langCode);
        if (!isset($langData[$key]) || empty($langData[$key])) {
            $missingKeys[$langCode][] = $key;
        }
    }
}

Étape 4: Sortie du résultat

Enfin, nous pouvons produire des clés non traduites pour aider les développeurs à localiser rapidement les clés n'ont pas été traduites.

 echo "Clés non traduites:\n";
foreach ($missingKeys as $langCode => $keys) {
    echo "\nEn langue $langCode La clé suivante est manquante:\n";
    foreach ($keys as $key) {
        echo "- $key\n";
    }
}

3. Exemple de code complet

Fusionne tout le code ensemble, et le script PHP final ressemble à ceci:

 function loadLangFile($langCode) {
    $filePath = __DIR__ . "/$langCode.php";
    if (file_exists($filePath)) {
        return include $filePath;
    }
    return [];
}

$langCodes = ['en', 'fr', 'de'];
$allKeys = [];

foreach ($langCodes as $langCode) {
    $langData = loadLangFile($langCode);
    $allKeys = array_merge($allKeys, array_keys($langData));
}

$allKeys = array_unique($allKeys);  // Aller au lourd,Évitez les clés en double

$missingKeys = [];

foreach ($allKeys as $key) {
    foreach ($langCodes as $langCode) {
        $langData = loadLangFile($langCode);
        if (!isset($langData[$key]) || empty($langData[$key])) {
            $missingKeys[$langCode][] = $key;
        }
    }
}

echo "Clés non traduites:\n";
foreach ($missingKeys as $langCode => $keys) {
    echo "\nEn langue $langCode La clé suivante est manquante:\n";
    foreach ($keys as $key) {
        echo "- $key\n";
    }
}

4. Résumé

Grâce au script PHP ci-dessus, nous pouvons rapidement comparer les fichiers de configuration dans plusieurs langues et savoir quelles valeurs de clés ne sont pas traduites. Cela est très utile pour la maintenance et la mise à jour des applications multilingues, et peut réduire les traductions manquées et améliorer l'expérience utilisateur.