diff --git a/casetracker.module b/casetracker.module
index 92c1a24..87a7917 100644
--- a/casetracker.module
+++ b/casetracker.module
@@ -534,11 +534,17 @@ function casetracker_case_state_load($csid = NULL, $realm = NULL, $reset = FALSE
                          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:'. $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($csid = NULL, $realm = NULL, $reset = FALSE
     $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,23 @@ function casetracker_case_state_load($csid = NULL, $realm = NULL, $reset = FALSE
 }
 
 /**
+ * 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')) {
+          $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);
+	  }
+        }
+  }
+}
+
+/**
  * Load states for a particular realm. Wrapper around casetracker_case_state_load()
  *
  * @param $realm
@@ -592,6 +615,10 @@ function casetracker_case_state_save($case_state = NULL) {
   else {
     drupal_write_record('casetracker_case_states', $record);
   }
+  if (module_exists('i18nstrings')) {
+    $language = language_default('language');
+    tt('casetracker:'. $case_state['realm'] .':'. $record['csid'] .':name', $case_state['name'], $language, TRUE);
+  }
   return $result;
 }
 
diff --git a/casetracker_admin.inc b/casetracker_admin.inc
index b17e708..d5798f1 100644
--- a/casetracker_admin.inc
+++ b/casetracker_admin.inc
@@ -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), );
