PHPで現在時刻をローカライズする
-
07-07-2019 - |
質問
PHPで現在の時刻を表示しようとする( this を使用) :
$date = date('m/d/Y h:i:s a', time());
echo $date;
できるだけ簡単です。ローカライズするにはどうすればよいですか?月と日をヘブライ語に翻訳したい。
ありがとう。
解決
Zend_Date
は完全に国際化されています。簡単な方法で確認してください:
すべてのフルネームおよび略称 月と平日がサポートされています 130以上の言語。方法 の入力と出力の両方をサポート ローカライズされた名前を使用した日付 月と平日、 に関連付けられた従来の形式 各ロケール。
他のヒント
実際には、PHP 5.2ではまったく可能だとは思いません:-(
少なくとも、PHPに同梱されているものではありません(ただし、PHPでコード化されたライブラリは、他の指摘のように使用できます)
ただし、PHP 5.3では、 IntlDateFormatter クラスがあります。あなたが欲しい:
このクラスはICUの日付を表します フォーマット機能。それが可能 ローカライズされた日付を表示するユーザー 文字列をPHPにフォーマットまたは解析する パターン文字列を使用した日付値 および/または缶詰のパターン。
たとえば、次のようにそのクラスを使用します:
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
echo IntlDateFormatter::create('en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('en_US', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
次のようになります:
dimanche 9 novembre 2008 23:54:47 GMT+00:00
9 nov. 2008 23:54
2008年11月9日星期日 下午11時54分47秒 GMT+00:00
2008/11/9 下午 11:54
Sunday, November 9, 2008 11:54:47 PM GMT+00:00
Nov 9, 2008 11:54 PM
非常に見栄えが良いですね?
残念なことに、PHP 5.3は数か月前のものであり、多くのホスティングサービスでは利用できません...そして、アプリケーションのテスト(およびおそらく修正)が必要になります...
それについて考える:多分、PHP 5.2に PECL intl拡張機能をインストールして、同じ機能...
Zend_DateやIntlDateFormatterよりも簡単な方法が必要な場合は、phpの標準の strftime
関数を試してください。 Ubuntuでphp 5.3を実行しているロシア語(ロシア語のロケールはインストールされていません)で起動して実行するために私がやったことです。
ロケールをインストールするには
-
cd / usr / share / locales
-
sudo ./install-language_pack ru_RU
-
sudo dpkg-reconfigure locales
- Apacheを再起動
次に、次のphpスニペットを使用します。
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%A', time());
今日の曜日を出力する必要があります。