diff --git a/facetapi.callbacks.inc b/facetapi.callbacks.inc
index fc15b7c..e9f2143 100644
--- a/facetapi.callbacks.inc
+++ b/facetapi.callbacks.inc
@@ -10,7 +10,13 @@
  */
 function facetapi_map_bundle(array $values) {
   $names = node_type_get_names();
-  return array_intersect_key($names, array_flip($values));
+  $result =  array_intersect_key($names, array_flip($values));
+  if(module_exists('i18n_node')) {
+    foreach($result as $key => $value) {
+      $result[$key] = i18n_node_type_name($key, $value);
+    }
+  }
+  return $result;
 }
 
 /**
@@ -40,7 +46,7 @@ function facetapi_map_language(array $values) {
   $language_list = language_list();
   foreach ($values as $language) {
     if (isset($language_list[$language])) {
-      $map[$language] = $language_list[$language]->name;
+      $map[$language] = t($language_list[$language]->name);
     }
     else {
       $map[$language] = t('Language neutral');
@@ -110,8 +116,13 @@ function facetapi_get_max_date(array $facet) {
 function facetapi_map_taxonomy_terms(array $values) {
   $map = array();
   $terms = taxonomy_term_load_multiple($values);
+  $i18n_taxonomy_on = module_exists('i18n_taxonomy');
   foreach ($terms as $term) {
-    $map[$term->tid] = $term->name;
+    if($i18n_taxonomy_on) {
+      $map[$term->tid] = i18n_taxonomy_term_name($term);
+    } else {
+      $map[$term->tid] = $term->name;
+    }
   }
   return $map;
 }
