diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index f05df48..21712b5 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -528,15 +528,15 @@ function install_tasks($install_state) {
   // Start with the core installation tasks that run before handing control
   // to the install profile.
   $tasks = array(
+    'install_select_locale' => array(
+      'display_name' => st('Choose language'),
+      'run' => INSTALL_TASK_RUN_IF_REACHED,
+    ),
     'install_select_profile' => array(
       'display_name' => st('Choose profile'),
       'display' => count($install_state['profiles']) != 1,
       'run' => INSTALL_TASK_RUN_IF_REACHED,
     ),
-    'install_select_locale' => array(
-      'display_name' => st('Choose language'),
-      'run' => INSTALL_TASK_RUN_IF_REACHED,
-    ),
     'install_load_profile' => array(
       'run' => INSTALL_TASK_RUN_IF_REACHED,
     ),
@@ -1168,8 +1168,7 @@ function install_find_locale_files($langcode = NULL) {
  */
 function install_select_locale(&$install_state) {
   // Find all available locales.
-  $profilename = $install_state['parameters']['profile'];
-  $locales = install_find_locales($profilename);
+  $locales = install_find_locales();
   $install_state['locales'] += $locales;
 
   if (!empty($_POST['locale'])) {
@@ -1188,26 +1187,25 @@ function install_select_locale(&$install_state) {
     // is doing.
     if (count($locales) == 1) {
       if ($install_state['interactive']) {
+        $directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');
+
         drupal_set_title(st('Choose language'));
         if (!empty($install_state['parameters']['localize'])) {
           $output = '<p>Follow these steps to translate Drupal into your language:</p>';
           $output .= '<ol>';
           $output .= '<li>Download a translation from the <a href="http://localize.drupal.org/download" target="_blank">translation server</a>.</li>';
-          $output .= '<li>Place it into the following directory:
-<pre>
-/profiles/' . $profilename . '/translations/
-</pre></li>';
+          $output .= '<li>Place it into the following directory:<pre>' . $directory . '</pre></li>';
           $output .= '</ol>';
           $output .= '<p>For more information on installing Drupal in different languages, visit the <a href="http://drupal.org/localize" target="_blank">drupal.org handbook page</a>.</p>';
           $output .= '<p>How should the installation continue?</p>';
           $output .= '<ul>';
-          $output .= '<li><a href="install.php?profile=' . $profilename . '">Reload the language selection page after adding translations</a></li>';
-          $output .= '<li><a href="install.php?profile=' . $profilename . '&amp;locale=en">Continue installation in English</a></li>';
+          $output .= '<li><a href="install.php">Reload the language selection page after adding translations</a></li>';
+          $output .= '<li><a href="install.php?locale=en">Continue installation in English</a></li>';
           $output .= '</ul>';
         }
         else {
           include_once DRUPAL_ROOT . '/core/includes/form.inc';
-          $elements = drupal_get_form('install_select_locale_form', $locales, $profilename);
+          $elements = drupal_get_form('install_select_locale_form', $locales);
           $output = drupal_render($elements);
         }
         return $output;
@@ -1219,20 +1217,6 @@ function install_select_locale(&$install_state) {
       return;
     }
     else {
-      // Allow profile to pre-select the language, skipping the selection.
-      $function = $profilename . '_profile_details';
-      if (function_exists($function)) {
-        $details = $function();
-        if (isset($details['language'])) {
-          foreach ($locales as $locale) {
-            if ($details['language'] == $locale->name) {
-              $install_state['parameters']['locale'] = $locale->name;
-              return;
-            }
-          }
-        }
-      }
-
       // We still don't have a locale, so display a form for selecting one.
       // Only do this in the case of interactive installations, since this is
       // not a real form with submit handlers (the database isn't even set up
@@ -1241,7 +1225,7 @@ function install_select_locale(&$install_state) {
       if ($install_state['interactive']) {
         drupal_set_title(st('Choose language'));
         include_once DRUPAL_ROOT . '/core/includes/form.inc';
-        $elements = drupal_get_form('install_select_locale_form', $locales, $profilename);
+        $elements = drupal_get_form('install_select_locale_form', $locales);
         return drupal_render($elements);
       }
       else {
@@ -1254,25 +1238,52 @@ function install_select_locale(&$install_state) {
 /**
  * Form API array definition for language selection.
  */
-function install_select_locale_form($form, &$form_state, $locales, $profilename) {
+function install_select_locale_form($form, &$form_state, $locales) {
   include_once DRUPAL_ROOT . '/core/includes/standard.inc';
+  include_once DRUPAL_ROOT . '/core/includes/locale.inc';
   $languages = standard_language_list();
+  $options = array();
+  $enabled_languages = array();
+
   foreach ($locales as $locale) {
     $name = $locale->langcode;
     if (isset($languages[$name])) {
-      $name = $languages[$name][0] . (isset($languages[$name][1]) ? ' ' . st('(@language)', array('@language' => $languages[$name][1])) : '');
+      $langname = $languages[$name][1];
+      $options[$locale->langcode] = $langname;
+      $enabled_languages[$locale->langcode] = (object) array(
+        'language' => $langname,
+      );
+    }
+  }
+
+  $default_language = locale_language_from_browser($enabled_languages);
+  $default_langcode = 'en';
+  foreach ($enabled_languages as $langcode => $language) {
+    if ($language->language == $default_language) {
+      $default_langcode = $langcode;
     }
-    $form['locale'][$locale->langcode] = array(
-      '#type' => 'radio',
-      '#return_value' => $locale->langcode,
-      '#default_value' => $locale->langcode == 'en' ? 'en' : '',
-      '#title' => $name . ($locale->langcode == 'en' ? ' ' . st('(built-in)') : ''),
-      '#parents' => array('locale')
-    );
   }
+
+  $form['locale'][$locale->langcode] = array(
+    '#type' => 'textfield',
+    '#default_value' => $locale->langcode == 'en' ? 'en' : '',
+    '#title' => st('Default Language'),
+    '#size' => 12,
+    '#maxlength' => 60,
+  );
+
+  $form['locale']['languages'] = array(
+    '#type' => 'select',
+    '#title' => t('Available Language'),
+    '#options' => $options,
+    '#default_value' => $default_langcode,
+    '#description' => st('The language you choose will be the default. You can change the default or add other languages later.'),
+    '#multiple' => TRUE,
+  );
+
   if (count($locales) == 1) {
     $form['help'] = array(
-      '#markup' => '<p><a href="install.php?profile=' . $profilename . '&amp;localize=true">' . st('Learn how to install Drupal in other languages') . '</a></p>',
+      '#markup' => '<p><a href="install.php?localize=true">' . st('Learn how to install Drupal in other languages') . '</a></p>',
     );
   }
   $form['actions'] = array('#type' => 'actions');
