--- profile.module.orig	2009-02-27 00:24:14.000000000 +0100
+++ profile.module	2009-02-27 02:25:11.000000000 +0100
@@ -261,6 +261,14 @@
         return check_markup($value);
       case 'textfield':
       case 'selection':
+        if($field->options) {
+          $pipe_find = strpos($field->options, $value.'|');
+          if(false !== $pipe_find) {
+            $pipe_find += strlen($value) + 1;
+            $crlf_find = strpos($field->options, "\n", $pipe_find);
+            $value = trim(substr($field->options, $pipe_find, $crlf_find - $pipe_find));
+          }
+        }
         return $browse ? l($value, 'profile/'. $field->name .'/'. $value) : check_plain($value);
       case 'checkbox':
         return $browse ? l($field->title, 'profile/'. $field->name) : check_plain($field->title);
@@ -396,7 +404,13 @@
         $lines = split("[\n\r]", $field->options);
         foreach ($lines as $line) {
           if ($line = trim($line)) {
-            $options[$line] = $line;
+            if(false !== ($pipe_pos = strpos($line, '|'))) {
+              $value = drupal_substr($line, 0, $pipe_pos);
+              $line  = drupal_substr($line, 1 + $pipe_pos);
+            } else {
+              $value = $line;
+            }
+            $options[$value] = $line;
           }
         }
         $fields[$category][$field->name] = array('#type' => 'select',
