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 — Searches the language tag list for the best match to the language
Об'єктно-орієнтований стиль
$languageTag
,$locale
,$canonicalize
= false
,$defaultLocale
= null
Процедурний стиль
$languageTag
,$locale
,$canonicalize
= false
,$defaultLocale
= null
Searches the items in languageTag
for the best match to
the language range specified in locale
according to
RFC 4647's lookup algorithm.
languageTag
An array containing a list of language tags to compare to
locale
. Maximum 100 items allowed.
locale
The locale to use as the language range when matching.
canonicalize
If true, the arguments will be converted to canonical form before matching.
defaultLocale
The locale to use if no match is found.
The closest matching language tag or default value.
Повертає null
, якщо довжина
параметра locale
перевищує
INTL_MAX_LOCALE_LEN
.
Версія | Опис |
---|---|
7.4.0 |
defaultLocale is nullable now.
|
Приклад #1 locale_lookup() example
<?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 OO example
<?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
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.