diff --git a/i18n_field/i18n_field.pages.inc b/i18n_field/i18n_field.pages.inc
index 47bbc04..b9d6804 100644
--- a/i18n_field/i18n_field.pages.inc
+++ b/i18n_field/i18n_field.pages.inc
@@ -16,31 +16,18 @@ function i18n_field_page_translate($instance, $language = NULL) {
   }
   else {
     drupal_set_title(t('Translate to @language', array('@language' => i18n_language_name($language->language))));
-    return drupal_get_form('i18n_field_page_translate_form', $instance, $language->language);
+    //return drupal_get_form('i18n_field_page_translate_form', $instance, $language->language);
+    // Create form with two tabs, one for instance, once for field.
+    $groups = array(
+      'instance' => t('Field instance'),
+      'field' => t('Field settings'),
+    );
+    // Field instance
+    $instance_object = i18n_object('field_instance', $instance);
+    $strings['instance'] = $instance_object->get_strings(array('empty' => TRUE));
+    // Field settings
+    $field_object = i18n_object('field', $instance);
+    $strings['field'] = $field_object->get_strings(array('empty' => TRUE));
+    return drupal_get_form('i18n_string_translate_page_form', $strings, $language->language, $groups);
   }
 }
-
-/**
- * Field instance and field translation in a single form on two different fieldsets.
- */
-function i18n_field_page_translate_form($form, &$form_state, $instance, $langcode) {
-  $form = i18n_string_translate_page_form_base($form, $langcode);
-  $object = i18n_object('field_instance', $instance);
-  $form['#redirect'] = array($object->get_translate_path($langcode));
-  // Field instance
-  $form['strings']['instance'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Field instance'),
-    '#collapsible' => TRUE,
-  );
-  $form['strings']['instance'] += i18n_string_translate_page_form_strings($object->get_strings(array('empty' => TRUE)), $langcode);
-  // Field settings
-  $object = i18n_object('field', $instance);
-  $form['strings']['field'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Field settings'),
-    '#collapsible' => TRUE, '#collapsed' => TRUE,
-  );
-  $form['strings']['field'] += i18n_string_translate_page_form_strings($object->get_strings(array('empty' => TRUE)), $langcode); 
-  return $form;
-}
\ No newline at end of file
diff --git a/i18n_string/i18n_string.pages.inc b/i18n_string/i18n_string.pages.inc
index 698be90..bd1e971 100644
--- a/i18n_string/i18n_string.pages.inc
+++ b/i18n_string/i18n_string.pages.inc
@@ -97,9 +97,25 @@ function i18n_string_translate_page_overview_form($form, &$form_state, $object,
 /**
  * Form builder callback for in-place string translation.
  */
-function i18n_string_translate_page_form($form, &$form_state, $strings, $langcode) {
+function i18n_string_translate_page_form($form, &$form_state, $strings, $langcode, $groups = NULL) {
   $form = i18n_string_translate_page_form_base($form, $langcode);
-  $form['strings'] += i18n_string_translate_page_form_strings($strings, $langcode);
+  if ($groups) {
+    $form['string_groups'] = array('#type' => 'value', '#value' => $groups);
+    foreach ($groups as $key => $title) {
+      $form['display'] = array(
+        '#type' => 'vertical_tabs',
+      );
+      $form['strings'][$key] = array(
+        '#group' => 'display',
+        '#title' => $title,
+        '#type' => 'fieldset',
+      	//'#collapsible' => TRUE, '#collapsed' => TRUE,
+      ) + i18n_string_translate_page_form_strings($strings[$key], $langcode);
+    }
+  }
+  else {
+    $form['strings']['all'] = i18n_string_translate_page_form_strings($strings, $langcode);
+  }
   return $form;
 }
 
@@ -111,13 +127,10 @@ function i18n_string_translate_page_form_base($form, $langcode, $redirect = NULL
     '#type' => 'value',
     '#value' => $langcode,
   );
-  $form['strings'] = array(
-    // Use a tree, so we can access the values easily.
-    '#tree' => TRUE,
-  );
   $form['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save translation'),
+    '#weight' => 10,
   );
   if ($redirect) {
     $form['#redirect'] = array(
