(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Locale::composeLocale -- locale_compose — Возвращает правильно упорядоченный и разделенный идентификатор локали
Объектно-ориентированный стиль
Процедурный стиль
Функция возвращает правильно упорядоченный и разделенный идентификатор локали. Ключи идентифицируют конкретные подтеги идентификатора локали, а значения — связанные значения подтегов.
subtagsМассив (array), который содержит список пар ключ-значение, где ключи — имена подтегов идентификатора локали, а значения, соответственно, значения этих подтегов.
Замечание:
Разрешается не более 15 подтегов
'variant'и'private', подтегов'extlang'не более 3 и т. д. Варианты допустимы с суффиксами от 0 до 14. Ключи для этого подтега должны называться так:variant0,variant1, …,variant14. В возвращаемом идентификаторе локали вложенный тег упорядочен по суффиксу, в результате чего следуетvariant0, за которым следуетvariant1, за которым следуетvariant2и так далее.В качестве альтернативы, множественные подтеги
'variant','private'и'extlang'можно задать в виде массива под соответствующим ключом (например'variant'). Тогда ограничения на количество распознанных вложенных тегов не применяются.
   Функция возвращает соответствующий идентификатор локали или false,
   если параметр subtags не задали.
  
Пример #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')
    и упорядочиваются в результате по числовому суффиксу.
    Ограничений нет, если подтеги задали в виде массива (array); порядок такой, как задали.
   
<?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
