Drupal - How do I change text on the submission button in the node form?
In #value
is a translatable string. You can override it with a simple text value:
if ( isset($form['actions']['publish']) ) {
$form['actions']['publish']['#value'] = 'New Text';
}
Or you can put there a new translatable string with the t() function, if you want to translate the new string in different languages:
if ( isset($form['actions']['publish']) ) {
$form['actions']['publish']['#value'] = t('New Text');
}
Edit: Answer the question in comments
What you see in dpm() is the result of t(), which is used in the original form in NodeForm.php:
$element['publish']['#value'] = t('Save and publish');
In D8 this is an object, which will result in the translated text when used in a string context. For the enduser you simply use it like a string value, but magically it will always be translated. You don't have to look into this object to find a way to change it. To set a new value you simply generate a new translatable object and put this into the place of the old one.