Locale::lookup()
locale_lookup
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
Searches the language tag list for the best match to the language
说明
面向对象风格public static Locale::lookup(array $langtag,string $locale[,bool $canonicalize=FALSE
[,string $default]]): string
过程化风格
locale_lookup(array $langtag,string $locale[,bool $canonicalize=FALSE
[,string $default]]): string
Searches the items in$langtagfor the best match to the language range specified in$localeaccording to RFC 4647's lookup algorithm.
参数
- $langtag
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.
- $default
The locale to use if no match is found.
返回值
The closest matching language tag or default value.
范例
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'); ?>
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
参见
- locale_filter_matches() Checks if a language tag filter matches with locale
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.