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
= null
Estilo por procedimientos
$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 tableau que contiene una lista de lenguas a comparar
con la configuración local locale
.
Se permite un máximo de 100 elementos.
locale
La 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.
defaultLocale
La 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 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.