phpday 2025 - Call For Papers

Locale::lookup

locale_lookup

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Locale::lookup -- locale_lookupRecherche dans la liste la meilleure langue

Description

Style orienté objet

public static Locale::lookup(
    array $languageTag,
    string $locale,
    bool $canonicalize = false,
    ?string $defaultLocale = null
): ?string

Style procédural

locale_lookup(
    array $languageTag,
    string $locale,
    bool $canonicalize = false,
    ?string $defaultLocale = null
): ?string

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.

Liste de paramètres

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.

Valeurs de retour

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.

Historique

Version Description
7.4.0 defaultLocale est désormais nullable.

Exemples

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

Voir aussi

add a note

User Contributed Notes 2 notes

up
2
vladimir at bashkirtsev dot com
10 years ago
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.
up
1
Anonymous
9 years ago
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.
To Top