PHP Conference Japan 2024

Locale::composeLocale

locale_compose

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

Locale::composeLocale -- locale_compose返回正确排序和分隔的区域设置 ID

描述

面向对象风格

public static Locale::composeLocale(数组 $subtags): 字符串|false

过程式风格

locale_compose(数组 $subtags): 字符串|false

返回正确排序和分隔的区域设置 ID,键标识特定的区域设置 ID 子标签,值是关联的子标签值。

参数

subtags

一个包含键值对列表的 数组,其中键标识特定的区域设置 ID 子标签,值是关联的子标签值。

注意:

'variant''private' 子标签最多可以取 15 个值,而 'extlang' 最多可以取 3 个值。例如,变体允许使用从 0 到 14 的后缀。因此,输入数组的键可以是 variant0variant1、…、variant14。在返回的区域设置 ID 中,子标签按后缀排序,导致 variant0 后跟 variant1 后跟 variant2,依此类推。

或者,可以将 'variant''private''extlang' 值指定为特定键(例如 'variant')下的数组。在这种情况下,不限制识别到的子标签的数量。

返回值

相应的区域设置标识符,或者当 subtags 为空时为 false

示例

示例 #1 locale_compose() 示例

<?php
$arr
= array(
'language'=>'en',
'script' =>'Hans',
'region' =>'CN',
'variant2'=>'rozaj',
'variant1'=>'nedis',
'private1'=>'prv1',
'private2'=>'prv2',
);
echo
locale_compose($arr);
?>

示例 #2 面向对象示例

<?php
$arr
= array(
'language'=>'en' ,
'script' =>'Hans',
'region' =>'CN',
'variant2'=>'rozaj',
'variant1'=>'nedis',
'private1'=>'prv1',
'private2'=>'prv2',
);
echo
Locale::composeLocale($arr);
?>

以上示例将输出

Locale: en_Hans_CN_nedis_rozaj_x_prv1_prv2

示例 #3 子标签限制

如果 subtags 作为带有数字后缀的单独键给出,则不支持的键会被静默忽略(在本例中为 'extlang3'),并在结果中按数字后缀排序。如果 subtags 作为 数组 给出,则没有限制;顺序按给定顺序。

<?php
$arr
= array(
'language' => 'en',
'script' => 'Hans',
'region' => 'CN',
'extlang3' => 'd',
'extlang2' => 'c',
'extlang1' => 'b',
'extlang0' => 'a',
);
echo
locale_compose($arr), PHP_EOL;

$arr = array(
'language' => 'en',
'script' => 'Hans',
'region' => 'CN',
'extlang' => ['a', 'b', 'c', 'd'],
);
echo
locale_compose($arr), PHP_EOL;
?>

以上示例将输出

en_a_b_c_Hans_CN
en_a_b_c_d_Hans_CN

参见

  • locale_parse() - 返回区域设置 ID 子标签元素的键值数组

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top