CakeFest 2024: The Official CakePHP Conference

Locale::composeLocale

locale_compose

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

Locale::composeLocale -- locale_composeВозвращает корректно отсортированные и разделённые идентификаторы локали

Описание

Объектно-ориентированный стиль

public static Locale::composeLocale(array $subtags): string|false

Процедурный стиль

locale_compose(array $subtags): string|false

Возвращает строку, состоящую из корректно отсортированных и разделённых идентификаторов локали, собранную из массива, ключи которого обозначают подтеги идентификатора, а значения соответствующие значения этих подтегов.

Список параметров

subtags

Массив (array), содержащий список пар ключ-значение, где ключи являются именами подтегов идентификатора локали, а значения, соответственно, значениями этих подтегов.

Замечание:

Подтегов 'variant' и 'private' может быть не более 15, подтегов '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

Смотрите также

  • locale_parse() - Получить ассоциативный массив всех подтегов локали

add a note

User Contributed Notes

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