diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index 157551094f672ecce552b92260ed0bc0218e6148..87db417697eefd223257bfa0b694ac942c6360ac 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -114,18 +114,18 @@ function locale_menu($may_cache) {
     // We put this in !$may_cache so it's only added once per request
     drupal_add_css(drupal_get_path('module', 'locale') .'/locale.css');
 
-    if (is_numeric(arg(4))) {
+    if (is_numeric(arg(5))) {
       // String related callbacks
-      $items[] = array('path' => 'admin/settings/locale/string/edit/'. arg(4),
+      $items[] = array('path' => 'admin/settings/locale/string/edit/'. arg(5),
         'title' => t('edit string'),
-        'callback' => 'locale_admin_string_edit',
-        'callback arguments' => arg(4),
+        'callback' => 'drupal_get_form',
+        'callback arguments' => array('locale_admin_string_edit', arg(5)),
         'access' => $access,
         'type' => MENU_CALLBACK);
-      $items[] = array('path' => 'admin/settings/locale/string/delete/'. arg(4),
+      $items[] = array('path' => 'admin/settings/locale/string/delete/'. arg(5),
         'title' => t('delete string'),
         'callback' => 'locale_admin_string_delete',
-        'callback arguments' => arg(4),
+        'callback arguments' => array(arg(5)),
         'access' => $access,
         'type' => MENU_CALLBACK);
     }
@@ -412,6 +412,14 @@ function locale_admin_string_edit($lid) {
   return _locale_string_edit($lid);
 }
 
+/**
+ * Process the string edit form.
+ */
+function locale_admin_string_edit_submit($form_id, $form_values) {
+  include_once './includes/locale.inc';
+  return _locale_string_edit_submit($form_id, $form_values);
+}
+
 /**
  * Delete a string.
  */