Index: signup.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/signup.module,v
retrieving revision 1.205.2.6
diff -u -p -r1.205.2.6 signup.module
--- signup.module	20 Dec 2008 06:31:27 -0000	1.205.2.6
+++ signup.module	23 Dec 2008 21:18:14 -0000
@@ -59,6 +59,14 @@ function signup_theme() {
         'data' => NULL,
       ),
     ),
+    'signup_custom_data_field_text' => array(
+      'file' => 'email.inc',
+      'path' => $path,
+      'arguments' => array(
+        'key' => NULL,
+        'value' => NULL,
+      ),
+    ),
     'signup_broadcast_sender_copy' => array(
       'file' => 'email.inc',
       'path' => $path,
cvs diff: Diffing theme
Index: theme/email.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/email.inc,v
retrieving revision 1.1
diff -u -p -r1.1 email.inc
--- theme/email.inc	12 Nov 2008 23:22:19 -0000	1.1
+++ theme/email.inc	23 Dec 2008 21:18:14 -0000
@@ -45,13 +45,36 @@ function theme_signup_custom_data_email(
       $output .= "\n\r". call_user_func(__FUNCTION__, $value) ."\n\r";
     }
     else {
-      $output .= $key .': '. $value ."\n\r";
+      $output .= theme('signup_custom_data_field_text', $key, $value) ."\n\r";
     }
   }
   return $output;
 }
 
 /**
+ * Renders a single custom signup form field into unfiltered output.
+ *
+ * @param $key
+ *   Name of the custom signup field (the array key).
+ * @param $value
+ *   Value of the custom signup field (the array value).
+ *
+ * @return
+ *   Plain text output to display this key/value pair.
+ *
+ * @see theme_signup_user_form()
+ */
+function theme_signup_custom_data_field_text($key, $value) {
+  // All of the possible array key values should already be translated as
+  // string literals in theme_signup_user_form() via the #title attributes, so
+  // passing a variable to t() is actually safe here.  However, to avoid
+  // warnings when extracting strings, "hide" the call to t() by using a
+  // variable to hold the function name.
+  $tr = 't';
+  return $tr($key) .': '. $value;
+}
+
+/**
  * Controls the body of the copy of the broadcast message sent to the sender.
  *
  * @param $raw_message
Index: theme/node.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/node.admin.inc,v
retrieving revision 1.4.2.2
diff -u -p -r1.4.2.2 node.admin.inc
--- theme/node.admin.inc	20 Dec 2008 06:31:27 -0000	1.4.2.2
+++ theme/node.admin.inc	23 Dec 2008 21:18:15 -0000
@@ -110,6 +110,12 @@ function theme_signup_node_admin_details
  */
 function theme_signup_custom_data($data) {
   $output = '';
+  // All of the possible array key values should already be translated as
+  // string literals in theme_signup_user_form() via the #title attributes, so
+  // passing a variable to t() is actually safe here.  However, to avoid
+  // warnings when extracting strings, "hide" the call to t() by using a
+  // variable to hold the function name.
+  $tr = 't';
   // Loop through each first level element.
   foreach ($data as $key => $value) {
     $output .= '<div id="'. signup_id_safe($key) .'">';
@@ -119,7 +125,7 @@ function theme_signup_custom_data($data)
       $output .= call_user_func(__FUNCTION__, $value);
     }
     else {
-      $output .= $key .': '. check_plain($value);
+      $output .= $tr($key) .': '. check_plain($value);
     }
     $output .= "</div>\n";
   }
Index: theme/node.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/node.inc,v
retrieving revision 1.1
diff -u -p -r1.1 node.inc
--- theme/node.inc	12 Nov 2008 23:22:19 -0000	1.1
+++ theme/node.inc	23 Dec 2008 21:18:15 -0000
@@ -116,6 +116,12 @@ function theme_signup_custom_data_table(
  */
 function theme_signup_custom_data_rows($data) {
   $rows = array();
+  // All of the possible array key values should already be translated as
+  // string literals in theme_signup_user_form() via the #title attributes, so
+  // passing a variable to t() is actually safe here.  However, to avoid
+  // warnings when extracting strings, "hide" the call to t() by using a
+  // variable to hold the function name.
+  $tr = 't';
   // Loop through each first level element.
   foreach ($data as $key => $value) {
     if (is_array($value)) {
@@ -124,7 +130,7 @@ function theme_signup_custom_data_rows($
       $rows += call_user_func(__FUNCTION__, $value);
     }
     else {
-      $rows[] = array($key .':', check_plain($value));
+      $rows[] = array($tr($key) .':', check_plain($value));
     }
   }
   return $rows;
Index: theme/signup_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/theme/signup_form.inc,v
retrieving revision 1.3
diff -u -p -r1.3 signup_form.inc
--- theme/signup_form.inc	19 Nov 2008 18:35:11 -0000	1.3
+++ theme/signup_form.inc	23 Dec 2008 21:18:15 -0000
@@ -19,12 +19,14 @@
  * 'Name' field in this function, you will probably have to implement a
  * version of theme_signup_email_token_anonymous_username() for your site.
  *
- * In order for the form to be rendered properly, the name of the form
- * element must be $form['signup_form_data']['NameOfDataField'], where
- * NameOfDataField is replaced with the actual name of the data field.
- * We suggest that the displayed name of the field (the '#title'
- * property) be the same as the name of the data field, but it's not
- * required.  See below for examples.
+ * In order for the form to be rendered properly and for the custom
+ * fields to be fully translatable when printed in other parts of the
+ * Signup module (displayed in signup lists, emails, etc), the name of
+ * the form element must be $form['signup_form_data']['NameOfDataField'],
+ * where NameOfDataField is replaced with the actual name of the data
+ * field.  For translation to work, the displayed name of the field
+ * (the '#title' property) be the same as the name of the data field,
+ * but wrapped in t().  See below for examples.
  *
  * Fieldsets are not currently supported in this form.  Any
  * '#default_value' will be filled in by default when the form is
cvs diff: Diffing views
cvs diff: Diffing views/handlers
Index: views/handlers/signup_handler_field_signup_user_form_data.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/views/handlers/signup_handler_field_signup_user_form_data.inc,v
retrieving revision 1.1
diff -u -p -r1.1 signup_handler_field_signup_user_form_data.inc
--- views/handlers/signup_handler_field_signup_user_form_data.inc	12 Nov 2008 01:00:58 -0000	1.1
+++ views/handlers/signup_handler_field_signup_user_form_data.inc	23 Dec 2008 21:18:15 -0000
@@ -10,18 +10,23 @@ class signup_handler_field_signup_user_f
     $form['form_data_fieldname'] = array(
       '#type' => 'textfield',
       '#title' => t(' Field Name'),
-      '#description' => t('If you want to display a single field from signup.theme, enter its name here, otherwise, all fields will be displayed.'),
+      '#description' => t('If you want to display a single field from the signup form (see theme/signup_form.inc), enter its name here. Otherwise, all fields will be displayed.'),
       '#default_value' => isset($this->options['form_data_fieldname']) ? $this->options['form_data_fieldname'] : '',
     );
   }
 
+  /**
+   * Set each field value to "$key: $value" when rendering all fields.
+   *
+   * @see theme_signup_custom_data_field_text()
+   */
   function pre_render($values) {
     if (!$this->options['form_data_fieldname']) {
       foreach ($values as $key => $result) {
         $form_data = unserialize($result->{$this->field_alias});
         if ($form_data) {
           foreach ($form_data as $key => $value) {
-            $this->items[$result->{$this->field_alias}][$key] = check_plain($key .': '. $value);
+            $this->items[$result->{$this->field_alias}][$key] = check_plain(theme('signup_custom_data_field_text', $key, $value));
           }
         }
       }
cvs diff: Diffing views/plugins
