diff --git a/modules/hs_taxonomy.module b/modules/hs_taxonomy.module
index f2aae7a..515f769 100644
--- a/modules/hs_taxonomy.module
+++ b/modules/hs_taxonomy.module
@@ -1031,11 +1031,23 @@ function _hs_taxonomy_hierarchical_select_get_tree($vid, $parent = 0, $depth = -
     }
   }
 
+  // Provide support for Title module. If Title module is enabled and this
+  // vocabulary uses translated term names we want output those terms with their
+  // translated version. Therefore a full taxonomy term entity load is required,
+  // similar to taxonomy_get_tree().
+  if (module_exists('title')) {
+    $vocabulary = taxonomy_vocabulary_load($vid);
+    if (title_field_replacement_enabled('taxonomy_term', $vocabulary->machine_name, 'name')) {
+      $term_entities = taxonomy_term_load_multiple(array_keys($terms[$vid]));
+    }
+  }
+
   $max_depth = (is_null($max_depth)) ? count($children[$vid]) : $max_depth;
   if (isset($children[$vid][$parent])) {
     foreach ($children[$vid][$parent] as $child) {
       if ($max_depth > $depth) {
-        $term = clone $terms[$vid][$child];
+        $term = isset($term_entities[$child]) ? $term_entities[$child] : $terms[$vid][$child];
+        $term = clone $term;
         $term->depth = $depth;
         // The "parent" attribute is not useful, as it would show one parent only.
         unset($term->parent);
@@ -1094,7 +1106,7 @@ function _hs_taxonomy_hierarchical_select_terms_to_options($terms) {
   $use_i18n = module_exists('i18n_taxonomy');
   foreach ($terms as $key => $term) {
     // Use the translated term when available!
-    $options[$term->tid] = $use_i18n && isset($term->vid) ? i18n_taxonomy_term_name($term) : t($term->name);
+    $options[$term->tid] = $use_i18n && isset($term->vid) ? i18n_taxonomy_term_name($term) : $term->name;
   }
   return $options;
 }
