Search code examples
phparraysdrupaldrupal-7lang

How to create array of all the language in drupal form dropdown list


I need to create dropdown list for all languages in my Drupal form, Is there any function in PHP to achieve this. I want to create an array of all languages and pass it to drupal form.

function video_upload_subtitles_form($form, &$form_state) {
 $form = array('#attributes' => array('enctype' => 'multipart/form-data'));
 $lang_list = array();//**how to create this array**
 $form['video_name'] = array(
    '#title' => t('Name Of the video'),
    '#type' => 'textfield',
 );

 $form['sub_file'] = array(
        '#type' => 'file',
        '#title' => t('Upload video'),
        '#description' => t('Pick a video file to upload.'),
    );
$form['user_list']=array(
    '#type'=>'select',
    '#title' => t('Language'),
    '#options' => $lang_list,//array of language
    '#multiple' => false,
    '#attributes'=>array('size'=>4),
    '#weight'=>8,
);
 $form['submit_button'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
 );

 return $form;

}

I know listing of language can be done in php by listing and making a array manually but is it possible to do with any php function, just looking for some easy way to save time.

Got this cool website for Country List . Is there anything for the Language like this


Solution

  • Try this,

        $select = db_select('Your table name', 's');
        $select = $select->fields('s',array('languages_name','id'));
        // 'languages_name' , 'id' this is a column
        $queried_nodes = $select->execute()
        ->fetchAllAssoc('id');
        $lang_list = array();
        foreach ($queried_nodes as $result)
        {   
           $lang_list[$result->languages_name] = t($result->languages_name);
        }
    

    after set a $lang_list variable

    $form['user_list']=array(
         '#type'=>'select',
         '#title' => t('Language'),
         '#options' => $lang_list,//array of language
         '#multiple' => false,
         '#attributes'=>array('size'=>4),
         '#weight'=>8,
    );
    

    you are create a new Language table or content types and you use a drupal inbuilt language list so try this code.

      include_once DRUPAL_ROOT . '/includes/iso.inc';
      $lang = _locale_get_predefined_list();
    
      $lang_list = array();
    
      foreach ($lang as $key => $value) 
      {
        $lang_list[$value[0]] = t($value[0]);
      }
    

    after use a $lang_list varible in form api