ホームページ > バックエンド開発 > PHPチュートリアル > PHP-INTLを使用した日付、通貨、および数値をローカライズします

PHP-INTLを使用した日付、通貨、および数値をローカライズします

Joseph Gordon-Levitt
リリース: 2025-02-15 12:32:12
オリジナル
261 人が閲覧しました

このチュートリアルは、数字、日付、通貨などの複雑なデータをローカライズすることに焦点を当てた、PHP INTL拡張の前の紹介に基づいています。 飛び込みましょう!

Localizing Dates, Currency, and Numbers with Php-Intl

重要な概念:

    PHP Intl拡張は、多言語アプリケーションに不可欠な堅牢なロケール認識データ処理のためにICUライブラリをレバレッジします。
  • 数字のローカリゼーションを処理し、小数の分離器のバリエーションに対処し、さまざまな地域でのフォーマットスタイルを処理します。
  • 通貨のフォーマットは、通貨コードを指定し、NumberFormatterメソッドを使用して簡単に実現できます。
  • 拡張機能は、日付の操作と比較のための包括的なカレンダーAPI(
  • )を提供し、一般的な日付/時刻ライブラリと同様の機能を提供します。 NumberFormatter formatCurrency
  • 小数局在:
  • IntlCalendar
  • 地域全体の小数分層の矛盾は、一般的な課題です。
クラスはこれをエレガントに解決します:

ロケールコード(例: 'de_de'、 'en_us')は、フォーマットスタイルを決定します。 さまざまなフォーマットスタイル(小数、通貨、期間など)が利用可能です

スタイルと属性のフォーマット:NumberFormatter

$numberFormatter = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
var_dump( $numberFormatter->format(123456789) ); // Output: string(11) "123.456.789"

$numberFormatter = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL );
var_dump( $numberFormatter->format(123456789) ); // Output: string(11) "123,456,789"

$numberFormatter = new NumberFormatter( 'ar', NumberFormatter::DECIMAL );
var_dump( $numberFormatter->format(123456789) ); // Output: string(22) "١٢٣٬٤٥٦٬٧٨٩"

$numberFormatter = new NumberFormatter( 'bn', NumberFormatter::DECIMAL );
var_dump( $numberFormatter->format(123456789) ); // Output: string(30) "১২,৩৪,৫৬,৭৮৯"
ログイン後にコピー
属性を使用して数値形式をカスタマイズできます:

丸め動作は制御できます:

および

スタイルは、以前に導入されたスタイルもここにも適用されます。 フォーマットされた文字列を数字に戻す解析は、
$nf = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL );
$nf->setAttribute(NumberFormatter::FRACTION_DIGITS, 2);
var_dump( $nf->format(1234.56789) ); // Output: string(8) "1,234.57"
var_dump( $nf->format(1234) );       // Output: string(8) "1,234.00"
ログイン後にコピー
メソッドを介してサポートされています。

通貨のローカリゼーション:
$nf = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL );
$nf->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
$nf->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_CEILING);
var_dump($nf->format(1234.5678) ); // Output: string(8) "1,234.57"

$nf->setAttribute(NumberFormatter::ROUNDING_MODE, NumberFormatter::ROUND_DOWN);
var_dump($nf->format(1234.5678) ); // Output: string(8) "1,234.56"
ログイン後にコピー

SPELLOUT通貨としての数値のフォーマットは簡単です:DURATION parse

メソッドは通貨記号の取得を簡素化します:

タイムゾーンとカレンダー:

$nf = new NumberFormatter( 'en_US', NumberFormatter::CURRENCY );
var_dump( $nf->formatCurrency(1234.56789, "USD" ) ); // Output: string(9) ",234.57"
ログイン後にコピー

getSymbolタイムゾーンを管理し、機能性をミラーリングします。

カレンダー操作に豊富なAPIを提供します:
$nf = new NumberFormatter( 'en_US', NumberFormatter::CURRENCY );
var_dump( $nf->formatCurrency(1234.56789, $nf->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL)) ); // Output: string(9) ",234.57"

$nf = new NumberFormatter( 'fr_FR', NumberFormatter::CURRENCY );
var_dump( $nf->formatCurrency(1234.56789, $nf->getSymbol(NumberFormatter::INTL_CURRENCY_SYMBOL)) ); // Output: string(14) "1 234,57 €"
ログイン後にコピー

日付ナビゲーションは直感的です:

IntlTimeZone結論:DateTimeZoneIntlCalendar

ICUを搭載したPHP Intl拡張機能は、PHPアプリケーションを国際化するための強力で包括的なソリューションを提供します。 この2部構成のシリーズは、メッセージのローカリゼーションと現在、複雑なデータローカリゼーションをカバーしています。将来の記事では、INTL拡張内の追加の機能を調査します。

以上がPHP-INTLを使用した日付、通貨、および数値をローカライズしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート