Locale::lookup

locale_lookup

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

Locale::lookup -- locale_lookupSearches the language tag list for the best match to the language

说明

面向对象风格

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

过程化风格

locale_lookup ( array $languageTag , string $locale , bool $canonicalize = false , string|null $defaultLocale = null ) : string|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.

Returns null when the length of locale exceeds INTL_MAX_LOCALE_LEN.

更新日志

版本 说明
7.4.0 defaultLocale is nullable now.

范例

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

Example #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

参见

User Contributed Notes

Anonymous 08-May-2015 10:59
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.
vladimir at bashkirtsev dot com 28-Jul-2014 03:22
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.
PHP8中文手册 站长在线 整理 版权归PHP文档组所有