diff --git a/select_or_other.field_widget.inc b/select_or_other.field_widget.inc
index 05ade83..82f9143 100644
--- a/select_or_other.field_widget.inc
+++ b/select_or_other.field_widget.inc
@@ -386,3 +389,65 @@ function select_or_other_field_formatter_view($entity_type, $entity, $field, $in
 function select_or_other_field_widget_error($element, $error, $form, &$form_state) {
   form_error($element, $error['message']);
 }
+
+/**
+ * Implements hook_field_attach_view_alter().
+ *
+ * Replace key values with labels for fields using the select_or_other widget
+ */
+function select_or_other_field_attach_view_alter(&$output, $context) {
+
+  // Loop though each of the fields.
+  foreach (element_children($output) as $field_name) {
+
+    $info = select_or_other_formatter_info($field_name, $output['#entity_type'], $output['#bundle'], $context['view_mode']);
+
+    if (!empty($info['widget'])) {
+      $field_options = explode("\n", $info['widget']['available_options']);
+      $pos = strpos($info['widget']['available_options'], '|');
+
+      if ($pos !== FALSE) {
+        // There are keys. Explode out the available options
+        $temp_options = array();
+        foreach ($field_options as $field_item) {
+          $exploded = explode('|', $field_item);
+          $temp_options[$exploded[0]] = $exploded[1];
+        }
+        $field_options = $temp_options;
+      }
+
+      foreach ($output[$field_name]['#items'] as $delta => $item) {
+        if (array_key_exists($item['value'], $field_options)) {
+          $output[$field_name][$delta] = array('#markup' => $field_options[$item['value']]);
+          $output[$field_name]['#items'][$delta]['value'] = $field_options[$item['value']];
+        }
+      }
+    }
+  }
+}
+
+/**
+ * Get the formatter settings for a field instance and display.
+ *
+ * @param string $field_name
+ * @param string $display
+ * @param string $bundle
+ * @param string $display
+ *
+ * @return array
+ */
+function select_or_other_formatter_info($field_name, $entity_type, $bundle, $display) {
+  $info = _field_info_collate_fields();
+  // There is no bundle for this entity type so the bundle name in the
+  // entity_type name.
+  if (empty($bundle)) {
+    $bundle = $entity_type;
+  }
+
+  $settings = array();
+  if ($info['instances'][$entity_type][$bundle][$field_name]['widget']['type'] == 'select_or_other') {
+    $settings['widget'] = $info['instances'][$entity_type][$bundle][$field_name]['widget']['settings'];
+  }
+
+  return $settings;
+}
\ No newline at end of file
