Placer le choix des langues dans une liste déroulante

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Voila ne connaissant pas suffisamment php et Drupal.
Ma question est simple: je souhaiterai mettre les choix de langues pour les internautes dans une liste déroulante.
Comment je pourrais faire?

Thanks

Forum : 
Version de Drupal : 

Pour générer le SELECT (liste déroulante), tu peux créer un bloc de type PHP dans lequel tu mettras le code suivant :

<?php
$languages
= i18n_supported_languages();
$content = '<select>';
foreach (
$languages as $code => $language) {
 
$content .= '<option value="'. $code .'">'. $language .'</option>';
}
$content .= '</select>';
print
$content;
?>

Ensuite, tu affectes ton bloc à la région où tu veux que cette liste déroulante apparaisse.

Enfin, il faudra faire en sorte qu'un choix dans le SELECT déclenche une action (le passage à une autre url/langue), mais pour ça je te laisse te débrouiller (c'est du JavaScript).

Ou alors, tu écris juste un petit module qui fait cela (généralement, dans le développement d'un site sous Drupal, tu as toujours un module "fourre-tout" dans lequel tu place tout le code vraiment spécifique à ce site).

Il suffirait de quelque chose comme ca :

<?php
function i18n_switch_form() {
 
$form['lang'] = array(
 
'#type' => 'select',
 
'#title' => t('Change language'),
 
'#options' => i18n_supported_languages()
 );
 
$form['submit'] = array(
 
'#type' => 'submit',
 
'#value' => t('Submit')
 );
 return
$form;
}
function
i18n_switch_form_submit($form_id, $form_values) {
 
$query = drupal_query_string_encode($_GET, array('q'));
  return
url(i18n_path($_GET['q'], $form_values['lang']), array('query' => $query));
}
?>

et utiliser dans ta page (ou ton thème, ou un bloc), quelque chose du genre :

<?php
echo drupal_get_form('i18n_switch_form');
?>

<privatejoke>Tu te spécialises dans la ré-écriture de mon code damz ?</privatejoke>

On obtient rapidement des réponses de ta part ici, mais par e-mail c'est un chouia plus long. Ecris-moi damz, steuplaît, ça me fera tant plaisir.