I also failed to find a direct solution.
Thus, it seems that a small user module is required. I copied the implementation of hook_user from the locale module and changed it a bit.
Therefore, create your own custom module, and this hook will be enough.
/** * Implementation of hook_user(). */ function yourmodulename_user($op, &$edit, &$account, $category = NULL) { global $language; // If we have more then one language and either creating a user on the // admin interface or edit the user, show the language selector. if ($op == 'register') { $languages = language_list('enabled'); $languages = $languages[1]; // If the user is being created, we set the user language to the page language. $user_preferred_language = $user ? user_preferred_language($user) : $language; $names = array(); foreach ($languages as $langcode => $item) { $name = t($item->name); $names[$langcode] = $name . ($item->native != $name ? ' ('. $item->native .')' : ''); } $form['locale'] = array( '#type' => 'fieldset', '#title' => t('Language settings'), '#weight' => 1, ); $form['locale']['language'] = array( '#type' => (count($names) <= 5 ? 'radios' : 'select'), '#title' => t('Language'), '#default_value' => $user_preferred_language->language, '#options' => $names, '#description' => t("This account default language for e-mails."), ); return $form; } }
source share