言語ファイルの整合性を維持することは、多言語のWebサイトまたはアプリケーションを開発するときに重要です。機能が増加すると、新しいフィールドがメイン言語ファイルに追加される場合があり、対応するフィールドが他の言語ファイルに欠落している可能性があります。この時点で、すべての言語ファイルの整合性を確認して確認する方法が必要です。 PHPのarray_diff_key()関数は、これを非常にうまく達成するのに役立ちます。
array_diff_key()関数は、2つ以上の配列のキーを比較するために使用され、他の配列にない最初の配列のすべてのキーを含む配列を返します。これは、言語ファイルのフィールドが欠落していることを確認するのに非常に役立ちます。さまざまな言語ファイルのキーを比較するために使用でき、各言語ファイルに必要なすべてのフィールドが含まれるようにします。
メインの言語ファイル(英語ファイルなど)があり、他の言語ファイル(中国語、フランス語など)に欠落しているフィールドがないことを確認したいとします。 array_diff_key()を使用して、これらのファイルのキー値を比較して、欠落しているフィールドを見つけることができます。
言語ファイルが次の構造と同様に、配列に保存されているとします。
英語ファイル( EN.PHP ):
return [
'welcome_message' => 'Welcome to our website!',
'login_button' => 'Login',
'logout_button' => 'Logout',
'contact_us' => 'Contact Us'
];
中国語ファイル( zh.php ):
return [
'welcome_message' => '当社のウェブサイトへようこそ!',
'login_button' => 'ログイン',
// 'logout_button' => 'ログアウト', ここにはありません 'logout_button' フィールド
];
次に、これらの2つの言語ファイルをarray_diff_key()を使用して比較して、中国のファイルの欠落フィールドを見つけたいと思います。
// 英語と中国語のファイルをロードします
$en = include('en.php');
$zh = include('zh.php');
// 中国語ファイルのキーを英語ファイルと比較する,找出缺失的フィールド
$missingFields = array_diff_key($en, $zh);
// 输出缺失的フィールド
if (!empty($missingFields)) {
echo "以下フィールド在中文语言文件ない:\n";
foreach ($missingFields as $key => $value) {
echo "- $key\n";
}
} else {
echo "中文语言文件没有缺失任何フィールド。\n";
}
言語ファイルの読み込み: conterming()を使用して、翻訳データをキー値ペア形式に保存するEn.phpおよびzh.phpファイルをロードします。
array_diff_key()を呼び出します: array_diff_key($ en、$ zh)を使用して、英語と中国語のファイルのキーを比較します。 array_diff_key()は、英語ファイルではなく、英語ファイルにないキーを含む配列を返します。
出力の欠落フィールド:返された$ MissingFieldsアレイが空でない場合、中国語ファイルに一部のフィールドが欠落していることを意味します。ループすることにより、これらの欠落したフィールドを出力します。
複数の言語ファイルの整合性を確認する必要がある場合は、同様のアプローチを使用して、各言語ファイルをメイン言語ファイルと比較して、すべてのフィールドが翻訳されることを確認できます。たとえば、チェックロジックを関数にカプセル化できます。
function checkMissingFields($primaryLangFile, $compareLangFile) {
$primaryLang = include($primaryLangFile);
$compareLang = include($compareLangFile);
$missingFields = array_diff_key($primaryLang, $compareLang);
if (!empty($missingFields)) {
echo "以下フィールド在 $compareLangFile ない:\n";
foreach ($missingFields as $key => $value) {
echo "- $key\n";
}
} else {
echo "$compareLangFile 没有缺失任何フィールド。\n";
}
}
// 英語と中国語の文書の比較
checkMissingFields('en.php', 'zh.php');
// 英語とフランス語の文書の比較
checkMissingFields('en.php', 'fr.php');
PHPのarray_diff_key()関数を使用して、多言語ファイルで欠落しているフィールドを効率的に確認できます。これにより、異なる言語のファイルが一貫していることが保証され、翻訳の不作為により、インターフェイス表示が不完全になります。このようにして、多言語プロジェクトの品質と保守性を大幅に改善できます。