Не все знают, но в Друпале элемент формы Select (выпадающий список) поддерживает группировку опций по подзаголовкам (см. тег OPTGROUP). Причем всего-то надо собирать опции в массиве '#options'
в подмассивы:
t('Arabic') => array(
'IBM864' => 'IBM864',
'ISO-885–6' => 'ISO-885–6',
'WINDOWS-1256' => 'WINDOWS-1256',
),
t('Armenian') => array(
'ARMSCII-8' => 'ARMSCII-8',
),
t('Baltic') => array(
'ISO-885–4' => 'ISO-885–4',
'ISO-885–13' => 'ISO-885–13',
'WINDOWS-1257' => 'WINDOWS-1257',
),
t('Celtic') => array(
'ISO-885–14' => 'ISO-885–14',
),
t('Central European') => array(
'IBM852' => 'IBM852',
'ISO-885–2' => 'ISO-885–2',
'MAC-CENTRALEUROPE' => 'MacCE',
'WINDOWS-1250' => 'WINDOWS-1250',
),
//и т.д.
Тогда получится так:
Странно, однако, что в Form API об этом — ни слова.
На будущее сохраняю генератор краткого списка кодировок. Пригодится.
Улучшенная версия:
function _get_iconv_encodings() {
return array(
t('Arabic') => drupal_map_assoc(array(
'IBM864',
'ISO-885–6',
'WINDOWS-1256',
)),
t('Armenian') => drupal_map_assoc(array(
'ARMSCII-8',
)),
t('Baltic') => drupal_map_assoc(array(
'ISO-885–4',
'ISO-885–13',
'WINDOWS-1257',
)),
t('Celtic') => drupal_map_assoc(array(
'ISO-885–14',
)),
t('Central European') => drupal_map_assoc(array(
'IBM852',
'ISO-885–2',
'MacCE',
'WINDOWS-1250',
)),
t('Chinese Simplified') => drupal_map_assoc(array(
'GB18030',
'GB2312',
'GBK',
'ISO-2022-CN',
)),
t('Chinese Traditional') => drupal_map_assoc(array(
'BIG5',
'BIG5-HKSCS',
'EUC-TW',
)),
t('Cyrillic') => drupal_map_assoc(array(
'IBM855',
'ISO-885–5',
'ISO-IR-111',
'KOI8-R',
'MACCYRILLIC',
'CP866',
'KOI8-U',
'MACUKRAINIAN',
'Windows-1251',
)),
t('Greek') => drupal_map_assoc(array(
'ISO-885–7',
'WINDOWS-1253',
)),
t('Hebrew') => drupal_map_assoc(array(
'IBM862',
'ISO-885–8',
'WINDOWS-1255',
)),
t('Japanese') => drupal_map_assoc(array(
'EUC-JP',
'ISO-2022-JP',
'SHIFT_JIS',
)),
t('Korean') => drupal_map_assoc(array(
'EUC-KR',
'ISO-2022-KR',
'JOHAB',
)),
t('Nordic') => drupal_map_assoc(array(
'ISO-885–10',
)),
t('Romanian') => drupal_map_assoc(array(
'ISO-885–16',
)),
t('South European') => drupal_map_assoc(array(
'ISO-885–3',
)),
t('Thai') => drupal_map_assoc(array(
'ISO-885–11',
'TIS-620',
'WINDOWS-874',
)),
t('Turkish') => drupal_map_assoc(array(
'IBM857',
'ISO-885–9',
'WINDOWS-1254',
)),
t('Unicode') => drupal_map_assoc(array(
'UTF16',
'UTF16BE',
'UTF16LE',
'UTF32',
'UTF32BE',
'UTF32LE',
'UTF8',
)),
t('Vietnamese') => drupal_map_assoc(array(
'VISCII',
'WINDOWS-1258',
)),
t('Western') => drupal_map_assoc(array(
'IBM850',
'ISO-885–1',
'ISO-885–15',
'WINDOWS-1252',
)),
);
}
Спасибо, bohart.