PHP Conference Japan 2024

Locale::lookup

locale_lookup

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

Locale::lookup -- locale_lookup搜索语言标签列表中与语言最匹配的项

描述

面向对象风格

public static Locale::lookup(
    数组 $languageTag,
    字符串 $locale,
    布尔值 $canonicalize = false,
    ?字符串 $defaultLocale = null
): ?字符串

过程式风格

locale_lookup(
    数组 $languageTag,
    字符串 $locale,
    布尔值 $canonicalize = false,
    ?字符串 $defaultLocale = null
): ?字符串

根据 RFC 4647 的查找算法,在 languageTag 中搜索与 locale 中指定的语言范围最匹配的项。

参数

languageTag

一个 数组,包含要与 locale 比较的语言标签列表。最多允许 100 个项目。

locale

用作匹配时的语言范围的区域设置。

canonicalize

如果为 true,则在匹配之前将参数转换为规范形式。

defaultLocale

如果找不到匹配项,则使用的区域设置。

返回值

最接近匹配的语言标签或默认值。

locale 的长度超过 INTL_MAX_LOCALE_LEN 时,返回 null

变更日志

版本 描述
7.4.0 defaultLocale 现在可以为空。

示例

示例 #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

参见

添加注释

用户贡献的注释 2 条注释

vladimir at bashkirtsev dot com
10 年前
值得注意的是,如果 $langtag 数组为空,则此函数返回空字符串,而不是 $default。如果您的 $langtag 数组为空,请使用 array(false) 以获取默认区域设置。
匿名
9 年前
请注意,此方法不理解“相似”语言,因此以下情况

Locale::lookup(["en-US"], "en-GB", false);

Locale::lookup(["es-ES"], "es-CO", false);

不会按预期工作(空结果)。要在这些情况下获得匹配,您必须改用两位语言代码

Locale::lookup(["en"], "en-GB", false);

Locale::lookup(["es"], "es-CO", false);

这些分别返回 'en' 和 'es'。
To Top