PHP Conference Nagoya 2025

Locale::lookup

locale_lookup

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

Locale::lookup -- locale_lookupBusca en la lista de etiquetas de lenguaje la mejor coincidencia para el lenguaje

Descripción

Estilo orientado a objetos

public static Locale::lookup(
    array $langtag,
    string $locale,
    bool $canonicalize = false,
    string $default = ?
): string

Estilo por procedimientos

locale_lookup(
    array $langtag,
    string $locale,
    bool $canonicalize = false,
    string $default = ?
): string

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.

Parámetros

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.

Valores devueltos

La etiqueta de lenguaje más parecida o el valor del parámetro default.

Ejemplos

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

Ver también

  • locale_filter_matches() - Comprobar si unfiltro de etiquetas de lenguaje coincide con una configuración regional

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