PHP 7.1.20 Released

Locale::lookup

locale_lookup

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

Locale::lookup -- locale_lookupПоиск языковых меток наиболее подходящих заданной локали

Описание

Объектно-ориентированный стиль

public static string Locale::lookup ( array $langtag , string $locale [, bool $canonicalize = FALSE [, string $default ]] )

Процедурный стиль

string locale_lookup ( array $langtag , string $locale [, bool $canonicalize = FALSE [, string $default ]] )

Ищет элементы langtag, наилучшим образом подходящие для диапазона языков, указанного в locale, в соответствии с алгоритмом поиска RFC 4647.

Список параметров

langtag

Массив, содержащий список меток языков для сравнения с locale. Не более 100 элементов.

locale

Локаль.

canonicalize

Если TRUE, то аргументы сперва будут приведены к каноническому виду.

default

Локаль по умолчанию, если совпадений не будет найдено.

Возвращаемые значения

Наиболее подходящая данной локали метка языка.

Примеры

Пример #1 Пример использования 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');
?>

Пример #2 Пример использования в объектно ориентированном стиле

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

Результат выполнения данного примера:

de_de_1996

Смотрите также

  • locale_filter_matches() - Проверить, соответствует ли тег фильтра языка локали

add a note add a note

User Contributed Notes 2 notes

up
4
vladimir at bashkirtsev dot com
3 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
3 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