多言語サポートされているWebアプリケーションを開発する場合、多くの場合、複数の言語( En.php 、 Fr.php 、 de.phpなど)の構成ファイルがあり、各構成ファイルには対応する言語の変換コンテンツが含まれています。実際の開発では、翻訳されていない場合にいくつかの重要な値が発生したり、特定の言語の構成ファイルにキーが欠落している場合があります。それでは、PHPプログラムを使用して、複数の言語で構成ファイルを自動的に比較し、これらの翻訳されていないキー値を見つける方法は何ですか?
この記事では、複数の言語構成ファイルを比較するPHPスクリプトを記述して、どのキー値が翻訳されていないかを特定し、開発者が多言語をよりよく管理できるようにする方法を示します。
次の多言語構成ファイルがあるとします。
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',
];
上記のように、異なる言語の構成ファイルには同じキー( welcome_messageなど)の一部が含まれていますが、一部の言語でのみ表示されます(ログインは英語とフランス語でのみ表示されますが、ドイツ語はそのキーがありません)。
これらの構成ファイルを比較するために、PHPスクリプトを記述し、各言語の構成ファイルをロードし、それらを比較して、一部の言語のファイルに翻訳されていないキーを確認できます。
まず、構成ファイルをロードする関数を記述する必要があります。これらのファイルは、これらの構成ファイルがすべて連想配列を返すと仮定して、含まれるまたは要求を使用してロードできます。
function loadLangFile($langCode) {
$filePath = __DIR__ . "/$langCode.php";
if (file_exists($filePath)) {
return include $filePath;
}
return [];
}
すべての構成ファイルからすべてのキーを見つける必要があります。便宜上、サポートされているすべての言語コード( EN 、 FR 、 DEなど)をすでに知っているとしましょう。各言語プロファイルを繰り返し、絆を結合することができます。
$langCodes = ['en', 'fr', 'de'];
$allKeys = [];
foreach ($langCodes as $langCode) {
$langData = loadLangFile($langCode);
$allKeys = array_merge($allKeys, array_keys($langData));
}
$allKeys = array_unique($allKeys); // 重いものに行きます,重複したキーを避けてください
次に、すべてのキーを繰り返し、各言語構成ファイルに対応する値があるかどうかを確認します。言語の構成ファイルにキーが欠落または空の場合、キーが翻訳されていないと仮定できます。
$missingKeys = [];
foreach ($allKeys as $key) {
foreach ($langCodes as $langCode) {
$langData = loadLangFile($langCode);
if (!isset($langData[$key]) || empty($langData[$key])) {
$missingKeys[$langCode][] = $key;
}
}
}
最後に、翻訳されていないキーを出力して、開発者がどのキーが翻訳されていないかをすばやく見つけることができます。
echo "翻訳されていないキー:\n";
foreach ($missingKeys as $langCode => $keys) {
echo "\n言語で $langCode 次のキーがありません:\n";
foreach ($keys as $key) {
echo "- $key\n";
}
}
すべてのコードをマージすると、最終的なPHPスクリプトは次のようになります。
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); // 重いものに行きます,重複したキーを避けてください
$missingKeys = [];
foreach ($allKeys as $key) {
foreach ($langCodes as $langCode) {
$langData = loadLangFile($langCode);
if (!isset($langData[$key]) || empty($langData[$key])) {
$missingKeys[$langCode][] = $key;
}
}
}
echo "翻訳されていないキー:\n";
foreach ($missingKeys as $langCode => $keys) {
echo "\n言語で $langCode 次のキーがありません:\n";
foreach ($keys as $key) {
echo "- $key\n";
}
}
上記のPHPスクリプトを使用して、複数の言語で構成ファイルをすばやく比較し、どのキー値が翻訳されていないかを確認できます。これは、多言語アプリケーションのメンテナンスと更新に非常に役立ち、見逃した翻訳を減らしてユーザーエクスペリエンスを向上させることができます。