I had some difficulties with printing tags in the current language in code too. This is what worked to get ONLY the translated terms of a vocabulary:
$vocabulary = 'MY_VOCABULARY_NAME'; $language = \Drupal::languageManager()->getCurrentLanguage()->getId(); $query = \Drupal::entityQuery('taxonomy_term'); $query->condition('vid', $vocabulary); $query->sort('weight'); $tids = $query->execute(); $terms = \Drupal\taxonomy\Entity\Term::loadMultiple($tids); $termList = array(); foreach($terms as $term) { if($term->hasTranslation($language)){ $tid = $term->id(); $termList[$tid]$translated_term = \Drupal::service('entity.repository')->getTranslationFromContext($term, $language); $termList[$tid] = $translated_term->getName(); } } // To print a list of translated terms. foreach($termList as $tid => $name) { print $name; } To link the tags, see https://drupal.stackexchange.com/a/243160/71941