? 128228-casetracker-translatable_states-2.patch
Index: casetracker.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/casetracker/casetracker.module,v
retrieving revision 1.123.2.14
diff -u -p -r1.123.2.14 casetracker.module
--- casetracker.module	13 Aug 2009 04:48:15 -0000	1.123.2.14
+++ casetracker.module	21 Nov 2009 18:22:15 -0000
@@ -534,11 +534,17 @@ function casetracker_case_state_load($cs
                          FROM {casetracker_case_states} ORDER BY weight");
     $states_lookup = array();
     while ($row = db_fetch_object($results)) {
+      if (module_exists('i18nstrings')) {
+        $row->localized_name = tt('casetracker:'. $row->realm .':'. $row->csid .':name', $row->name);
+      }
       $states_lookup[$row->realm][$row->csid] = $states_lookup['all'][$row->csid] = $row;
     }
   }
 
   if ($csid && $realm) {
+    if (module_exists('i18nstrings')) {
+      return $states_lookup['all'][$csid]->localized_name;
+    }
     return $states_lookup['all'][$csid]->name;
   }
   elseif ($csid && !$realm) {
@@ -548,7 +554,7 @@ function casetracker_case_state_load($cs
     $options = array(); // suitable for form api.
     if (!empty($states_lookup[$realm])) {
       foreach ($states_lookup[$realm] as $state) {
-        $options[$state->csid] = $state->name;
+        $options[$state->csid] = module_exists('i18nstrings') ? $state->localized_name : $state->name;
       }
     }
     return $options;
@@ -556,6 +562,36 @@ function casetracker_case_state_load($cs
 }
 
 /**
+ * Implementation of hook_locale().
+ */
+function casetracker_locale($op = 'groups', $group = NULL) {
+  switch ($op) {
+    case 'groups':
+      return array('casetracker' => t('Case Tracker'));
+    case 'refresh':
+      if (module_exists('i18nstrings')) {
+        casetracker_locale_refresh();
+      }
+      break;
+    case 'info':
+      $info['casetracker']['refresh callback'] = 'casetracker_locale_refresh';
+      return $info;
+  }
+}
+
+/**
+ * Refresh locale strings.
+ */
+function casetracker_locale_refresh() {
+  $results = db_query("SELECT csid, case_state_name AS name, case_state_realm AS realm FROM {casetracker_case_states}");
+  while ($row = db_fetch_object($results)) {
+    tt('casetracker:'. $row->realm .':'. $row->csid .':name', $row->name, NULL, TRUE);
+  }
+  // Meaning it completed with no issues. @see i18nmenu_locale_refresh().
+  return TRUE;
+}
+
+/**
  * Load states for a particular realm. Wrapper around casetracker_case_state_load()
  *
  * @param $realm
Index: casetracker_admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/casetracker/casetracker_admin.inc,v
retrieving revision 1.2.2.4
diff -u -p -r1.2.2.4 casetracker_admin.inc
--- casetracker_admin.inc	12 Jun 2009 20:04:45 -0000	1.2.2.4
+++ casetracker_admin.inc	21 Nov 2009 18:22:16 -0000
@@ -157,7 +157,7 @@ function casetracker_case_state_overview
   foreach (array('priority', 'status', 'type') as $realm) {
     foreach (casetracker_realm_load($realm) as $csid => $name) {
       $rows[] = array(
-        t($name), 
+        module_exists('i18nstrings') ? tt('casetracker:'. $realm .':'. $csid .':name', $name) : $name,
         $realm,
         l(t('edit'), 'admin/settings/casetracker/states/edit/'. $csid),
         l(t('delete'), 'admin/settings/casetracker/states/delete/'. $csid), );
