diff --git a/modules/locale/locale.admin.inc b/modules/locale/locale.admin.inc
index 8a4e71f..79cb4a0 100644
--- a/modules/locale/locale.admin.inc
+++ b/modules/locale/locale.admin.inc
@@ -460,31 +460,7 @@ function locale_languages_delete_form($form, &$form_state, $langcode) {
  * Process language deletion submissions.
  */
 function locale_languages_delete_form_submit($form, &$form_state) {
-  $languages = language_list();
-  if (isset($languages[$form_state['values']['langcode']])) {
-    // Remove translations first.
-    db_delete('locales_target')
-      ->condition('language', $form_state['values']['langcode'])
-      ->execute();
-    cache_clear_all('locale:' . $form_state['values']['langcode'], 'cache');
-    // With no translations, this removes existing JavaScript translations file.
-    _locale_rebuild_js($form_state['values']['langcode']);
-    // Remove the language.
-    db_delete('languages')
-      ->condition('language', $form_state['values']['langcode'])
-      ->execute();
-    db_update('node')
-      ->fields(array('language' => ''))
-      ->condition('language', $form_state['values']['langcode'])
-      ->execute();
-    if ($languages[$form_state['values']['langcode']]->enabled) {
-      variable_set('language_count', variable_get('language_count', 1) - 1);
-    }
-    module_invoke_all('multilingual_settings_changed');
-    $variables = array('%locale' => $languages[$form_state['values']['langcode']]->name);
-    drupal_set_message(t('The language %locale has been removed.', $variables));
-    watchdog('locale', 'The language %locale has been removed.', $variables);
-  }
+  locale_language_delete($form_state['values']['langcode']);
 
   // Changing the language settings impacts the interface:
   cache_clear_all('*', 'cache_page', TRUE);
diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index da8ad13..8f0069f 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -778,6 +778,43 @@ function locale_language_list($field = 'name', $all = FALSE) {
 }
 
 /**
+ * Delete a language.
+ *
+ * http://drupal.org/node/1260528
+ */
+function locale_language_delete($language) {
+  $languages = &drupal_static(__FUNCTION__);
+  if (!isset($list)) {
+    $languages = language_list();
+  }
+  if (isset($languages[$language])) {
+    // Remove translations first.
+    db_delete('locales_target')
+      ->condition('language', $language)
+      ->execute();
+    cache_clear_all('locale:' . $language, 'cache');
+    // With no translations, this removes existing JavaScript translations file.
+    _locale_rebuild_js($language);
+    // Remove the language.
+    db_delete('languages')
+      ->condition('language', $language)
+      ->execute();
+    // On nodes with this language, unset the language
+    db_update('node')
+      ->fields(array('language' => ''))
+      ->condition('language', $language)
+      ->execute();
+    if ($languages[$language]->enabled) {
+      variable_set('language_count', variable_get('language_count', 1) - 1);
+    }
+    module_invoke_all('multilingual_settings_changed');
+    $variables = array('%locale' => $languages[$language]->name);
+    drupal_set_message(t('The language %locale has been removed.', $variables));
+    watchdog('locale', 'The language %locale has been removed.', $variables);
+  }
+}
+
+/**
  * Implements hook_modules_installed().
  */
 function locale_modules_installed($modules) {
