Bei der Entwicklung von mit mehrsprachigen Webanwendungen unterstützten Webanwendungen verfügen wir häufig über Konfigurationsdateien für mehrere Sprachen (z. B. en.php , fr.php , de.php usw.), und jede Konfigurationsdatei enthält den Übersetzungsinhalt der entsprechenden Sprache. In der tatsächlichen Entwicklung können einige Schlüsselwerte auftreten, wenn sie nicht übersetzt werden, oder einige Schlüssel fehlen in der Konfigurationsdatei einer bestimmten Sprache. Wie verwenden Sie PHP -Programme, um Konfigurationsdateien automatisch in mehreren Sprachen zu vergleichen und diese nicht translatierten Schlüsselwerte herauszufinden?
In diesem Artikel wird angezeigt, wie ein PHP -Skript geschrieben wird, das mehrere Sprachkonfigurationsdateien vergleicht, um zu identifizieren, welche Schlüsselwerte nicht übersetzt wurden, wodurch Entwickler mehr mehrsprachig verwaltet werden können.
Angenommen, wir haben die folgende mehrsprachige Konfigurationsdatei:
return [
'welcome_message' => 'Welcome to our website!',
'login' => 'Login',
'register' => 'Register',
];
return [
'welcome_message' => 'Bienvenue sur notre site!',
'login' => 'Se connecter',
];
return [
'welcome_message' => 'Willkommen auf unserer Website!',
'register' => 'Registrieren',
];
Wie oben gezeigt, enthalten Konfigurationsdateien für verschiedene Sprachen einige der gleichen Tasten (z. B. Welcome_Message ), aber einige Schlüssel erscheinen nur in einigen Sprachen (z. B. Login erscheinen nur in Englisch und Französisch, aber Deutsch fehlt diesen Schlüssel).
Um diese Konfigurationsdateien zu vergleichen, können wir ein PHP -Skript schreiben, die Konfigurationsdateien jeder Sprache laden und sie vergleichen, um herauszufinden, welche Tasten in den Dateien einiger Sprachen fehlen oder nicht übersetzt werden.
Zunächst müssen wir eine Funktion schreiben, um die Konfigurationsdatei zu laden. Diese Dateien können mit inklusiven oder verlangen geladen werden, vorausgesetzt, diese Konfigurationsdateien geben alle ein assoziatives Array zurück.
function loadLangFile($langCode) {
$filePath = __DIR__ . "/$langCode.php";
if (file_exists($filePath)) {
return include $filePath;
}
return [];
}
Wir müssen alle Schlüssel aus allen Konfigurationsdateien finden. Angenommen, wir kennen bereits alle unterstützten Sprachcodes (wie EN , FR , DE usw.). Wir können jedes Sprachprofil durchlaufen und ihre Bindungen miteinander kombinieren.
$langCodes = ['en', 'fr', 'de'];
$allKeys = [];
foreach ($langCodes as $langCode) {
$langData = loadLangFile($langCode);
$allKeys = array_merge($allKeys, array_keys($langData));
}
$allKeys = array_unique($allKeys); // In den schweren gehen,Vermeiden Sie doppelte Schlüssel
Als nächstes werden wir alle Schlüssel durchlaufen und prüfen, ob sie in jeder Sprachkonfigurationsdatei entsprechende Werte haben. Wenn in der Konfigurationsdatei einer Sprache ein Schlüssel fehlt oder leer wird, können wir davon ausgehen, dass der Schlüssel nicht übersetzt wird.
$missingKeys = [];
foreach ($allKeys as $key) {
foreach ($langCodes as $langCode) {
$langData = loadLangFile($langCode);
if (!isset($langData[$key]) || empty($langData[$key])) {
$missingKeys[$langCode][] = $key;
}
}
}
Schließlich können wir unübersetzte Schlüssel ausgeben, um Entwicklern dabei zu helfen, schnell zu lokalisieren, welche Schlüssel nicht übersetzt wurden.
echo "Unbeschuldete Schlüssel:\n";
foreach ($missingKeys as $langCode => $keys) {
echo "\nIn der Sprache $langCode Der folgende Schlüssel fehlt:\n";
foreach ($keys as $key) {
echo "- $key\n";
}
}
Führen Sie den gesamten Code zusammen, und das endgültige PHP -Skript sieht so aus:
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); // In den schweren gehen,Vermeiden Sie doppelte Schlüssel
$missingKeys = [];
foreach ($allKeys as $key) {
foreach ($langCodes as $langCode) {
$langData = loadLangFile($langCode);
if (!isset($langData[$key]) || empty($langData[$key])) {
$missingKeys[$langCode][] = $key;
}
}
}
echo "Unbeschuldete Schlüssel:\n";
foreach ($missingKeys as $langCode => $keys) {
echo "\nIn der Sprache $langCode Der folgende Schlüssel fehlt:\n";
foreach ($keys as $key) {
echo "- $key\n";
}
}
Über das obige PHP -Skript können wir Konfigurationsdateien in mehreren Sprachen schnell vergleichen und herausfinden, welche Schlüsselwerte nicht übersetzt werden. Dies ist sehr hilfreich für die Wartung und Aktualisierung mehrsprachiger Anwendungen und kann die verpassten Übersetzungen reduzieren und die Benutzererfahrung verbessern.