This is similar to Stef Van Looveren's answer, but instead of loading all the taxonomy term IDs and then checking if each one has a specific translation, I include the language condition in the query.

```php
$vocabulary = 'MY_VOCABULARY_NAME';
$language = \Drupal::languageManager()->getCurrentLanguage()->getId();
$tids = \Drupal::entityQuery('taxonomy_term')
 ->condition('vid', $vocabulary)
 ->condition('langcode', $language)
 ->sort('weight')
 ->execute();
$terms = \Drupal\taxonomy\Entity\Term::loadMultiple($tids);
$termList = [];

foreach ($terms as $term) {
 $tid = $term->id();
 $translated_term = \Drupal::service('entity.repository')->getTranslationFromContext($term, $language);
 $termList[$tid] = $translated_term->getName();
}
```

This would return any term that has the `$language` translation, while `loadByProperties()` only returns the entity if the original language is `$language`.