Ce face IntlListFormatter
Fiecare limbă leagă altfel elementele unei liste: româna pune „și” înaintea ultimului element, engleza americană pune și virgulă înainte de „and”. IntlListFormatter folosește datele CLDR din biblioteca ICU, așa că nu mai scrii manual logica cu implode și ultimul element.
Tipul listei poate fi TYPE_AND („și”), TYPE_OR („sau”) sau TYPE_UNITS (unități de măsură). Lățimea WIDTH_WIDE, WIDTH_SHORT sau WIDTH_NARROW alege forma lungă sau prescurtată.
Parametri
| Parametru | Descriere |
|---|---|
$locale |
Limba și regiunea, de exemplu "ro_RO" sau "en_US". |
$type |
IntlListFormatter::TYPE_AND, TYPE_OR sau TYPE_UNITS. |
$width |
IntlListFormatter::WIDTH_WIDE, WIDTH_SHORT sau WIDTH_NARROW. |
Ce returnează
Metoda format() returnează textul format, sau false la eroare.
Exemple
Exemplul 1: Listă în română și în engleză
<?php
$nume = ["Ana", "Mihai", "Ioana"];
echo (new IntlListFormatter("ro_RO"))->format($nume) . "\n";
echo (new IntlListFormatter("en_US"))->format($nume) . "\n";
echo (new IntlListFormatter("ro_RO", IntlListFormatter::TYPE_OR))->format(["card", "numerar", "transfer"]);
Rezultat
Ana, Mihai și Ioana
Ana, Mihai, and Ioana
card, numerar sau transfer
Exemplul 2: Liste scurte
<?php
$f = new IntlListFormatter("ro_RO");
echo $f->format(["Iași"]) . "\n";
echo $f->format(["Iași", "Cluj"]) . "\n";
echo "Livrăm în: " . $f->format(["Iași", "Cluj", "Brașov", "Sibiu"]);
Rezultat
Iași
Iași și Cluj
Livrăm în: Iași, Cluj, Brașov și Sibiu
Greșeli frecvente
- Construiești lista cu
implode(", ", ...)și adaugi manual „și”: merge în română, dar greșește în alte limbi. CuIntlListFormatterschimbi doar codul limbii. - Clasa lipsește: ai PHP sub 8.5 sau extensia
intlnu este instalată.
Comenzi înrudite
implode: Unește elementele unui tablou într-un singur text, cu un separator între ele.setlocale: Setează limba și regiunea (locale) folosite de funcțiile care depind de țară: sortare, clasificarea literelor, formate.locale_is_right_to_left: Spune dacă o limbă se scrie de la dreapta la stânga (araba, ebraica), ca să setezi dir=”rtl” în pagină.number_format: Formatează un număr cu zecimale și separator de mii, de exemplu 1.299,50.