(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Locale::composeLocale -- locale_compose — 正しく並べ替えて区切られたロケール ID を返す
オブジェクト指向型
手続き型
正しく並べ替えて区切られたロケール ID を返します。 キーが特定のロケール ID サブタグを表し、 サブタグの値がそのキーに対応する値となります。
subtags
キーと値のペアを含む配列。 キーには特定のロケール ID サブタグを指定し、 そのサブタグの値を関連付けます。
注意:
サブタグ
'variant'
と'private'
には最大で 15 の値を指定できますが、'extlang'
には最大で 3 つの値しか指定できません。 たとえば、variant には 0 から 14 までの サフィックスをつけることができ、 配列のキーはvariant0
,variant1
, ...,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'
)、
結果は末尾の数値の順に並びます。
サブタグの値に配列が指定された場合は、
この制限はなく、結果は与えられた順に並びます。
<?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