diff --git a/includes/form.inc b/includes/form.inc
index decca00..5eb16ec 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -2533,6 +2533,43 @@ function form_process_select($element) {
 }
 
 /**
+ * Processes a language select list form element.
+ *
+ * @param $element
+ *   The form element to process.
+ */
+function form_process_language_select($element) {
+  // If #only_enabled => TRUE, show only the enabled
+  // languages in the select.
+  $only_enabled = isset($element['#only_enabled']) ?$element['#only_enabled'] : FALSE;
+  if (!$only_enabled) {
+    include_once DRUPAL_ROOT . '/includes/standard.inc';
+    $standard_languages = standard_language_list();
+    $get_first = function($value) {
+      return $value[0];
+    };
+    $options = array_map($get_first, $standard_languages);
+    $element['#options'] = $options;
+    $element['#empty_value'] = LANGUAGE_NONE;
+    $element['#empty_option'] = t('Language neutral');
+    $element['#theme'] = 'select';
+    $element['#theme_wrappers'] = array('form_element');
+  }
+  else if (module_exists('locale')) {
+    $element['#empty_value'] = LANGUAGE_NONE;
+    $element['#empty_option'] = t('Language neutral');
+    $element['#theme'] = 'select';
+    $element['#theme_wrappers'] = array('form_element');
+    $element['#options'] = locale_language_list('name');
+  }
+  else {
+    $element['#theme_wrappers'] = NULL;
+    $element['#process'] = array('form_process_language_select');
+  }
+  return $element;
+}
+
+/**
  * Returns HTML for a select form element.
  *
  * It is possible to group options together; to do this, change the format of
@@ -4442,3 +4479,4 @@ function _batch_queue($batch_set) {
 /**
  * @} End of "defgroup batch".
  */
+
diff --git a/modules/path/path.admin.inc b/modules/path/path.admin.inc
index f10142b..b9c17cf 100644
--- a/modules/path/path.admin.inc
+++ b/modules/path/path.admin.inc
@@ -132,8 +132,11 @@ function path_admin_form($form, &$form_state, $path = array('source' => '', 'ali
 
   // This will be a hidden value unless locale module is enabled.
   $form['language'] = array(
-    '#type' => 'value',
-    '#value' => $path['language']
+    '#type' => 'language_select',
+    '#only_enabled' => TRUE,
+    '#value' => $path['language'],
+    '#description' => t('A path alias set for a specific language will always be used when displaying this page in that language, and takes precedence over path aliases set for <em>All languages</em>.'),
+    '#weight' => -10,
   );
 
   $form['actions'] = array('#type' => 'actions');
diff --git a/modules/system/system.module b/modules/system/system.module
index d7dc69c..5bd01fe 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -452,6 +452,12 @@ function system_element_info() {
     '#empty' => '',
     '#theme' => 'tableselect',
   );
+  $types['language_select'] = array(
+    '#input' => TRUE,
+    '#multiple' => FALSE,
+    '#process' => array('form_process_language_select', 'form_process_select', 'ajax_process_form'),
+    '#title' => t('Language'),
+  );
 
   // Form structure.
   $types['item'] = array(
