現在の位置: ホーム> 最新記事一覧> 多言語構成ファイルの比較:どのキーと値が翻訳されていませんか?

多言語構成ファイルの比較:どのキーと値が翻訳されていませんか?

M66 2025-06-06

多言語サポートされているWebアプリケーションを開発する場合、多くの場合、複数の言語( En.phpFr.phpde.phpなど)の構成ファイルがあり、各構成ファイルには対応する言語の変換コンテンツが含まれています。実際の開発では、翻訳されていない場合にいくつかの重要な値が発生したり、特定の言語の構成ファイルにキーが欠落している場合があります。それでは、PHPプログラムを使用して、複数の言語で構成ファイルを自動的に比較し、これらの翻訳されていないキー値を見つける方法は何ですか?

この記事では、複数の言語構成ファイルを比較するPHPスクリプトを記述して、どのキー値が翻訳されていないかを特定し、開発者が多言語をよりよく管理できるようにする方法を示します。

1。構成ファイル構造

次の多言語構成ファイルがあるとします。

en.php (英語)

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

fr.php (フランス語)

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

de.php (ドイツ語)

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

上記のように、異なる言語の構成ファイルには同じキー( welcome_messageなど)の一部が含まれていますが、一部の言語でのみ表示されます(ログインは英語とフランス語でのみ表示されますが、ドイツ語はそのキーがありません)。

2。PHPスクリプトロジック

これらの構成ファイルを比較するために、PHPスクリプトを記述し、各言語の構成ファイルをロードし、それらを比較して、一部の言語のファイルに翻訳されていないキーを確認できます。

ステップ1:構成ファイルをロードします

まず、構成ファイルをロードする関数を記述する必要があります。これらのファイルは、これらの構成ファイルがすべて連想配列を返すと仮定して、含まれるまたは要求を使用してロードできます。

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

ステップ2:すべてのキーを見つけます

すべての構成ファイルからすべてのキーを見つける必要があります。便宜上、サポートされているすべての言語コード( ENFRDEなど)をすでに知っているとしましょう。各言語プロファイルを繰り返し、絆を結合することができます。

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

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

$allKeys = array_unique($allKeys);  // 重いものに行きます,重複したキーを避けてください

ステップ3:翻訳されていないキーを比較して見つけます

次に、すべてのキーを繰り返し、各言語構成ファイルに対応する値があるかどうかを確認します。言語の構成ファイルにキーが欠落または空の場合、キーが翻訳されていないと仮定できます。

 $missingKeys = [];

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

ステップ4:結果を出力します

最後に、翻訳されていないキーを出力して、開発者がどのキーが翻訳されていないかをすばやく見つけることができます。

 echo "翻訳されていないキー:\n";
foreach ($missingKeys as $langCode => $keys) {
    echo "\n言語で $langCode 次のキーがありません:\n";
    foreach ($keys as $key) {
        echo "- $key\n";
    }
}

3.完全なコードの例

すべてのコードをマージすると、最終的な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";
    }
}

4。概要

上記のPHPスクリプトを使用して、複数の言語で構成ファイルをすばやく比較し、どのキー値が翻訳されていないかを確認できます。これは、多言語アプリケーションのメンテナンスと更新に非常に役立ち、見逃した翻訳を減らしてユーザーエクスペリエンスを向上させることができます。