<p>次のコードがあります。これはロケールとして fr_FR を出力するはずですが、何らかの理由で (タイムゾーンに関係なく) en_US_POSIX を出力します。私が何を間違えたのでしょうか? </p>
<pre class="brush:php;toolbar:false;">$loc = IntlCalendar::createInstance(new DateTimeZone('ヨーロッパ/パリ'));
echo $loc->getLocale(Locale::VALID_LOCALE);</pre>
<p>参考リンク: https://www.php.net/manual/en/intlcalendar.createinstance.php および https://www.php.net/manual/en/intlcalendar.getlocale.php<br /> ;<br />これは正しいアプローチではないようです (コードは有効ですが) - 特定のタイムゾーンの「デフォルト」ロケールを見つけるためのより適切な方法はありますか? </p>
タイムゾーンをパリのタイムゾーンに設定しました。しかし、ロケールを設定していませんでした。それらは異なるものです。ロケールは言語と書式設定規則を定義し、タイム ゾーンは UTC を現地時間に変換し、またその逆に戻すためのルールを設定します。あなたの定義はパリにいるアメリカ人にも当てはまります。これは、特に 8 月に有効な使用例です。
次のコードを試してください:
リーリーまず、特定のタイムゾーンから関連する国 (および国コード) を取得します。
リーリー次に、この情報を ICU ライブラリで利用可能なリソースと組み合わせて、特定の国コードに最も可能性の高い言語を取得できます。
リーリーこれはすべてのユーザーに適用されるわけではないことに注意してください。これはデフォルトの開始点として適していますが、常にユーザーに言語の好みを尋ねる必要があります。
リーリー