Getting a translated country name from an address field
The country name in the country list is already a translatable markup object. It's not possible to add new options to it. So your idea to translate the country name again, this time with a specific langcode in options, is right. But you have to get the untranslated string if you want to translate it again

t($full_country_list[$country_code]-&gt;getUntranslatedString(), [], ['langcode' =&gt; 'de'])


because how you do it you get the translated string when running the code in a non english language context and translating from a non english language is not supported.



Edit: this answer is valid for the core country list

$full_country_list = \Drupal::service('country_manager')-&gt;getList();


there are probably other versions in contrib, see comment from @Berdir.