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 現在可以為 null。

範例

範例 #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 則註記

2
vladimir at bashkirtsev dot com
10 年前
值得注意的是,如果 $langtag 陣列是空的,這個函式會返回空字串而不是 $default。如果您的 $langtag 陣列是空的,請使用 array(false) 以取得預設的語系設定。
1
匿名
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