今日のグローバルなインターネット時代では、多言語のウェブサイトを構築することが特に重要になりました。 PHPを使用すると、複数の言語オプションをWebサイトに簡単に追加して、さまざまな地域のユーザーにパーソナライズされたアクセスエクスペリエンスを提供できます。この記事では、PHPを使用して多言語のWebサイトを構築し、言語の障壁を排除し、Webサイトのグローバリゼーションと魅力を強化する方法を理解するための段階的なものをご覧ください。
まず、Webサイトの多言語コンテンツのデータベーステーブルを作成する必要があります。このテーブルは、翻訳情報をさまざまな言語で保存します。以下は、多言語テーブルを作成するためのSQLステートメントです。
CREATE TABLE translations (
id INT NOT NULL AUTO_INCREMENT,
locale VARCHAR(255) NOT NULL,
key VARCHAR(255) NOT NULL,
value TEXT NOT NULL,
PRIMARY KEY (id)
);
ユーザーが自分の言語を選択できるようにするために、Webサイトの上部またはサイドバーに言語スイッチャーを追加できます。単純なGETパラメーターを設定することにより、ユーザーは必要な言語を選択できます。これがサンプルコードです:
// 現在の言語を取得します
$current_locale = isset($_GET["locale"]) ? $_GET["locale"] : "en";
// 言語リンク
$languages = array("en", "es", "fr");
foreach ($languages as $lang) {
echo "<a href=?locale=$lang">$lang</a> ";
}
ユーザーが選択した言語に従って対応する翻訳コンテンツをロードするには、データベースから翻訳情報を取得する必要があります。データベースから現在の言語翻訳をロードするコードは次のとおりです。
// クエリ翻訳
$translations = $db->prepare("SELECT * FROM translations WHERE locale = ?");
$translations->execute(array($current_locale));
// 翻訳配列を保存します
$tr = array();
foreach ($translations as $row) {
$tr[$row["key"]] = $row["value"];
}
HTMLページでは、getText関数を使用して、現在の言語の翻訳されたコンテンツを表示できます。
// 使用 gettext 翻訳を取得します
echo gettext("This is a test");
日時については、PHPのINTL拡張を使用して国際化を達成できます。これにより、異なる地域の設定に従って日付と時刻がフォーマットされることが保証されます。
// 作成する DateTime 物体
$dt = new DateTime();
// タイムゾーンを設定します
$dt->setTimezone(new DateTimeZone("Europe/London"));
echo $dt->format("Y-m-d H:i:s");
同様に、INTL拡張機能を使用して数値と通貨をローカライズすることもできます。たとえば、米国の形式で通貨を表示します。
// 作成する NumberFormatter 物体
$formatter = new NumberFormatter("en_US", NumberFormatter::CURRENCY);
// フォーマット通貨
$amount = 1000;
echo $formatter->formatCurrency($amount, "USD");
コードを明確にするために、翻訳と国際化のプロセスを簡素化するための関数を記述できます。たとえば、単純化された翻訳関数を作成できます。
function t($key) {
global $tr;
return isset($tr[$key]) ? $tr[$key] : $key;
}
上記の手順を通じて、PHPを使用して多言語サポートされたWebサイトを簡単に構築し、言語の障壁を排除し、ウェブサイトの国際化を改善できます。翻訳テキスト、国際的な日付と時間、通貨のフォーマットであろうと、PHPは、Webサイトが世界中のユーザーにサービスを提供できるようにするための強力なサポートを提供します。