Heim >Backend-Entwicklung >PHP-Tutorial >Lokalisierung von Daten, Währung und Zahlen mit PHP-Intl

Lokalisierung von Daten, Währung und Zahlen mit PHP-Intl

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-15 12:32:12263Durchsuche

Dieses Tutorial baut auf der vorherigen Einführung in die PHP INTL -Erweiterung auf und konzentriert sich auf die Lokalisierung komplexer Daten wie Zahlen, Daten und Währungen. Lassen Sie uns eintauchen!

Localizing Dates, Currency, and Numbers with Php-Intl

Schlüsselkonzepte:

  • Die PHP INTL-Erweiterung nutzt die Intensivbibliothek für robuste Datenhandhabung von Gebietsschema, die für mehrsprachige Anwendungen unerlässlich sind.
  • NumberFormatter verarbeitet die Anzahl der Lokalisierung, die Variationen in Dezimalabschlüssen und Formatierungsstile in verschiedenen Orten berücksichtigt.
  • Währungsformatierung wird leicht mit NumberFormatter erreicht, indem der Währungscode angegeben und die formatCurrency -Methode verwendet wird.
  • Die Erweiterung enthält eine umfassende Kalender -API (IntlCalendar) für die Manipulation und den Vergleich von Datum, der Funktionalitäten anbietet, die den Volksdatum-/Zeitbibliotheken ähneln.

Dezimallokalisierung:

Inkonsistenzen in Dezimalabscheidern in den Regionen sind eine häufigste Herausforderung. Die NumberFormatter Klasse löst elegant Folgendes:

<code class="language-php">$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) "১২,৩৪,৫৬,৭৮৯"</code>

Der Gebietsschemascode (z. B. 'de_de', 'en_us') diktiert den Formatierungsstil. Verschiedene Formatierungsstile (Dezimal, Währung, Dauer usw.) sind verfügbar.

Formatierungsstile und -attribute:

Wir können die Zahlenformatierung mit Attributen anpassen:

<code class="language-php">$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"</code>

Rundungsverhalten kann kontrolliert werden:

<code class="language-php">$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"</code>

SPELLOUT und DURATION, die zuvor eingeführt wurden, gelten auch hier. Die analysierten Zeichenfolgen in Zahlen werden über die parse -Methode unterstützt.

Währungslokalisierung:

Formatierungsnummern als Währungen ist einfach:

<code class="language-php">$nf = new NumberFormatter( 'en_US', NumberFormatter::CURRENCY );
var_dump( $nf->formatCurrency(1234.56789, "USD" ) ); // Output: string(9) ",234.57"</code>

Die getSymbol -Methode vereinfacht das Abrufen des Währungssymbols:

<code class="language-php">$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 €"</code>

Zeitzonen und Kalender:

IntlTimeZone verwaltet Zeitzonen und spiegelt die Funktionen von DateTimeZone wider. IntlCalendar bietet eine reiche API für Kalenderoperationen:

<code class="language-php">$calendar = IntlCalendar::createInstance();
var_dump($calendar->getTimeZone()->getId()); // Output:  Time zone ID (e.g., "UTC")

$calendar = IntlCalendar::fromDateTime(new DateTime()); // Create from DateTime object

// Comparisons
$calendar1 = IntlCalendar::fromDateTime( DateTime::createFromFormat('j-M-Y', '11-Apr-2016') );
$calendar2 = IntlCalendar::createInstance();
$diff = $calendar1->fieldDifference($calendar2->getTime(), IntlCalendar::FIELD_MILLISECOND);
// ... (comparison and date navigation examples as before)</code>

Datumsnavigation ist intuitiv:

<code class="language-php">$calendar = IntlCalendar::createInstance();
$calendar->add(IntlCalendar::FIELD_MONTH, 1); // Add a month
$calendar->add(IntlCalendar::FIELD_DAY_OF_WEEK, 1); // Add a day of the week
// ...</code>

Schlussfolgerung:

Die von der Intensivstation betriebene PHP INTL -Erweiterung bietet eine leistungsstarke und umfassende Lösung für die Internationalisierung Ihrer PHP -Anwendungen. Diese zweiteilige Serie hat die Lokalisierung von Nachrichten und die jetzt komplexe Datenlokalisierung behandelt. Zukünftige Artikel werden zusätzliche Funktionen innerhalb der INTL -Erweiterung untersuchen.

Das obige ist der detaillierte Inhalt vonLokalisierung von Daten, Währung und Zahlen mit PHP-Intl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn