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 — Busca en la lista de etiquetas de lenguaje la mejor coincidencia para el lenguaje
Estilo orientado a objetos
$langtag
,$locale
,$canonicalize
= false,$default
= ?Estilo por procedimientos
$langtag
,$locale
,$canonicalize
= false,$default
= ?
Busca los elementos en langtag
para la mejor coincidencia con
el rango de lenguajes especificado en locale
de acuerdo al
algorítmo de búsqueda de RFC 4647.
langtag
Un array que contiene una lista de etiquetas de lenguaje para compararlas con
locale
. Se permiten 100 elementos máximo.
locale
La configuración regional a usar como rango de lenguajes en la comparación.
canonicalize
Si es verdadero (true), los argumentos serán convertidos a su forma canónica antes de la comparación.
default
La configuración regional a usar si no se encuentra ninguna coincidencia.
La etiqueta de lenguaje más parecida o el valor del parámetro default.
Ejemplo #1 Ejemplo de locale_lookup()
<?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 orientado a objetos
<?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 resultado del ejemplo sería:
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.