次の 5 つの言語をサポートするサイトがあります。
- 英語
- フランス語
- ドイツ人
- イタリアの
- スペイン語
ユーザーは必要に応じて言語を交換できます。次のようなテキストで平日の月日を表示するページがあります。
1月12日月曜日
これに対する私のコードは次のとおりです。
setlocale(LC_TIME, $_SESSION['lang'] . "_" . strtoupper($_SESSION['lang']));
foreach($data['Location']['Day'] as $key => $val) {
$date = strftime("%A %e, %B", strtotime($val['@attributes']['val']));
$data['Location']['Day'][$key]['date'] = $date;
}
localhost では、言語を切り替えると、週と月が切り替わり、正常に動作します。ただし、サーバー上では、常に英語で表示されます。_SESSION['lang'] は正常に動作し、変更されるため、ロケールが fr_FR である必要があるときにフランス語が表示されない理由がわかりません。
サーバーにロケールがインストールされていないことが原因でしょうか? または、これらの文字列をローカライズするより良い方法はありますか?
編集:私はまた、次のように setlocale 呼び出しに「.utf8」を追加しようとしました:
setlocale(LC_TIME, $_SESSION['lang'] . "_" . strtoupper($_SESSION['lang']) . ".utf8");
しかし、それも機能しませんでした(ローカルホストでもサーバーでも機能しませんでした)