「辞書関数」を実装しようとすることができます。言及した地理コードで呼び出すと、html テンプレートに埋め込みたいローカライズされたコンテンツが返されます。バックグラウンドでは、通常は次のような配列構造である「カタログ」を調べます。
$LCat = array (
'India' => array (
'Assam' => array (
'Dispur' => "some Dispur specific content",
'Guwahati' => "some Guwahati specific content",
... some other cities in that state ...
),
'Orissa' => array (
'Bhubaneswar' => "some Bhubaneswar specific content",
... some other cities in that state ...
),
... some other states in that country ...
),
... some other countries ...
);
この関数は、カタログ内の matchin エントリを探します (たとえば、 is_set() 関数を使用して):
if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']]) ) {
if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]) )
if ( is_set($LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']['city_code']]) ) ) {
$Location=$LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]['city_code']];
} else {
$Location=$LCat[$_SESSION['smart_ip']['location']['country_code']['state_code']]
} else {
$Location=$LCat[$_SESSION['smart_ip']['location']['country_code']]
} else {
$Location="location specific content for 'Nirwana'";
}
したがって、構造は次のとおりです: 州 > 国 > 都市、または必要な構造。アイデアは次のとおりです。カタログで最も具体的な一致を使用してみてください。存在しない場合は、エントリの具体性を少し下げて使用します。このようにして、スクリプトが遭遇する可能性のあるすべての場所に対してフォールバックをコーディングする代わりに、構造内に常に安全なフォールバックをコーディングします。
当然のことながら、一致のために保存されるコンテンツは何でもかまいません。要点を明確にするために単純な文字列のみを選択しました。また、構造は別の方法で保存することもできます。たとえば、実行時に調べるファイル システム階層、国ごとのフォルダー、州ごとのフォルダー、都市ごとのファイルなどです。パフォーマンスを向上させ、カタログ データを管理する簡単な方法を提供したい場合は、実行時にクエリを実行するデータベースにそのカタログを格納する必要があります。ただし、アイデアは同じままです。
私はそのコードをテストしていないことに注意してください。ただし、考えられるアプローチの提案が得られるはずです。