It worth to note that if $langtag array is empty this function returns empty string and not $default . Use array(false) if your $langtag array is empty in order to get default locale.
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Locale::lookup -- locale_lookup — Recherche dans la liste la meilleure langue
Style orienté objet
$languageTag
,$locale
,$canonicalize
= false
,$defaultLocale
= null
Style procédural
$languageTag
,$locale
,$canonicalize
= false
,$defaultLocale
= null
Recherche dans la liste languageTag
la meilleure langue,
pour la locale spécifiée par locale
, en fonction
de l'algorithme de la RFC 4647.
languageTag
Un tableau contenant une liste de langues à comparer
à la locale locale
.
Un maximum de 100 éléments est autorisé.
locale
La locale à utiliser pour effectuer la recherche.
canonicalize
Si true
les arguments seront convertis en leur forme
canonique avant leur recherche.
defaultLocale
La locale à utiliser si aucune solution n'est trouvée.
La langue la plus proche qui ait été trouvée dans la liste, ou bien la valeur par défaut.
Retourne null
quand la longueur de locale
excède
INTL_MAX_LOCALE_LEN
.
Version | Description |
---|---|
7.4.0 |
defaultLocale est désormais nullable.
|
Exemple #1 Exemple avec locale_lookup(), procédural
<?php
$arr = array(
'de-DEVA',
'de-DE-1996',
'de',
'de-De'
);
echo locale_lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
?>
Exemple #2 Exemple avec Locale::lookup(), POO
<?php
$arr = array(
'de-DEVA',
'de-DE-1996',
'de',
'de-De'
);
echo Locale::lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
?>
L'exemple ci-dessus va afficher :
de_de_1996
It worth to note that if $langtag array is empty this function returns empty string and not $default . Use array(false) if your $langtag array is empty in order to get default locale.
Note that this method does not understand "similar" languages, so the following:
Locale::lookup(["en-US"], "en-GB", false);
Or:
Locale::lookup(["es-ES"], "es-CO", false);
Does not work as you would expect (empty result). To get a match in those cases you will have to use two letter language codes instead:
Locale::lookup(["en"], "en-GB", false);
Or:
Locale::lookup(["es"], "es-CO", false);
These do return 'en' and 'es' respectively.