[pt_br]
Olá, Amigo.
Para a lista suspensa eu uso o código padr?o do plugin:
<?php pll_the_languages(array('display_names_as' =>'slug')); ?>
leia mais aqui:
https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/
Para o select eu uso assim:
<select name="languages" id="languages" required>
<?php if(class_exists('Polylang')) {
global $polylang;
if (isset($polylang)) {
?>
<optgroup label="<?php _e( 'Polylang', 'load_plugin_textdomain' ); ?>">
<?php foreach ($polylang->get_languages_list() as $languages) { ?>
<option value="<?php echo esc_attr($languages->locale); ?>" lang="<?php echo esc_attr($languages->flag_code); ?>">
<?php echo esc_attr($languages->name); ?>
</option>
<?php } ?>
</optgroup>
<?php } } ?>
</select>