response = [ 'code' => $this->statusCode, 'lang' => $lang, 'categories' => $this->buildVocabulary($lang)]; return new JsonResponse($this->response, $this->statusCode); } // RESPONSE ARRAY private function buildVocabulary($lang): array { $terms = $this->loadTerms($lang); $terms_response = []; foreach ($terms as $type) { $terms_response[] = [ 'id' => $type->id(), 'name' => $type->getName() ]; } return $terms_response; } // RESPONSE ARRAY VALUES private function loadTerms($lang) { // All terms from the vocabulary $terms=\Drupal::entityTypeManager() ->getStorage('taxonomy_term') ->loadByProperties([ 'vid' => self::VOCABULARY, ]); // Current language only $termList=[]; foreach($terms as $term) { if($term->hasTranslation($lang)){ $tid = $term->id(); $translated_term = \Drupal::service('entity.repository')->getTranslationFromContext($term, $lang); $termList[$tid] = $translated_term; } } return $termList; } }