How to access the value of a Drupal\Core\StringTranslation\TranslatableMarkup object within a form?
You can get the string value by calling the magic function -&gt;__tostring() or casting the object to a (string). But most time you don't need to do this, because if you use the translation object in a string context it will return the translated string automatically.

You can't change the original string in the translation object. You have to generate a new one with the t-function:

$button['#value'] = $this-&gt;t('new text');