ConFoo 2025

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(array $subtags): string|false

手続き型

locale_compose(array $subtags): string|false

正しく並べ替えて区切られたロケール ID を返します。 キーが特定のロケール ID サブタグを表し、 サブタグの値がそのキーに対応する値となります。

パラメータ

subtags

キーと値のペアを含む配列。 キーには特定のロケール ID サブタグを指定し、 そのサブタグの値を関連付けます。

注意:

サブタグ 'variant''private' には最大で 15 の値を指定できますが、 'extlang' には最大で 3 つの値しか指定できません。 たとえば、variant には 0 から 14 までの サフィックスをつけることができ、 配列のキーは variant0, variant1, ..., variant14 となります。 返されるロケール ID において、このサブタグは variant0variant1variant2、……の順に並びます。

代わりに、'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

参考

  • locale_parse() - ロケール ID のサブタグ要素を連想配列で返す

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top