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_lookupPesquisa a lista de etiquetas de língua pela melhor correspondência à língua

Descrição

Estilo orientado a objetos

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

Estilo procedural

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

Pesquisa os itens em languageTag pela melhor correspondência ao intervalo de línguas especificado em locale de acordo com o algoritmo de procura da RFC 4647.

Parâmetros

languageTag

Um array contendo uma lista de etiquetas de língua para comparar a locale. Máximo de 100 itens permitidos.

locale

A localidade a ser usada como faixa de línguas na pesquisa.

canonicalize

Se verdedeiro, os argumentos serão convertidos para a forma canônica antes de se fazer a correspondência.

defaultLocale

A localidade a ser usada se nenhuma correspondência for encontrada.

Valor Retornado

A etiqueta de língua que melhor corresponder ou o valor padrão.

Retorna null quando o comprimento de locale excede INTL_MAX_LOCALE_LEN.

Registro de Alterações

Versão Descrição
7.4.0 defaultLocale agora pode ser nulo.

Exemplos

Exemplo #1 Exemplo 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');
?>

Exemplo #2 Exemplo OO

<?php
$arr
= array(
'de-DEVA',
'de-DE-1996',
'de',
'de-De'
);
echo
Locale::lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
?>

O exemplo acima produzirá:

de_de_1996

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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
0
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