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 — Búsqueda en la lista de la mejor lengua
Estilo orientado a objetos
$languageTag,$locale,$canonicalize = false,$defaultLocale = nullEstilo procedimental
$languageTag,$locale,$canonicalize = false,$defaultLocale = null
Búsqueda en la lista languageTag de la mejor lengua,
para la configuración local especificada por locale, según
el algoritmo de la RFC 4647.
languageTag
Un array que contiene una lista de lenguas a comparar
con la configuración local locale.
Se permite un máximo de 100 elementos.
localeLa configuración local a utilizar para realizar la búsqueda.
canonicalize
Si true los argumentos serán convertidos a su forma
canónica antes de su búsqueda.
defaultLocaleLa configuración local a utilizar si no se encuentra ninguna solución.
La lengua más cercana que haya sido encontrada en la lista, o bien el valor por defecto.
Returns null when the length of locale exceeds INTL_MAX_LOCALE_LEN.
| Versión | Descripción |
|---|---|
| 7.4.0 |
defaultLocale ahora es nullable.
|
Ejemplo #1 Ejemplo con locale_lookup(), procedimental
<?php
$arr = array(
'de-DEVA',
'de-DE-1996',
'de',
'de-De'
);
echo locale_lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
?>Ejemplo #2 Ejemplo con 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');
?>El ejemplo anterior mostrará:
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.