Contact form placeholder translation
Normally you should be able to translate the placeholder in configuration translation as described in https://drupal.stackexchange.com/a/191927/47547. @Berdir pointed out that there is an open issue that prevents this: https://www.drupal.org/node/2546212

A workaround is to make the placeholder translatable in a form alter hook:

function mytheme_form_contact_message_feedback_form_alter(&amp;$form, $form_state) {
  $form['subject']['widget']['0']['value']['#placeholder'] = t('Please enter a subject');
}


After visiting the translated form you can translate this string in the user interface translation.

If you want to translate all placeholders in the form and use the untranslated strings from the widget settings:

function mytheme_form_contact_message_feedback_form_alter(&amp;$form, $form_state) {
  array_walk_recursive($form, function (&amp;$value, $key) {
    if ($key === '#placeholder' &amp;&amp; is_string($value) &amp;&amp; $value !== '') {
      $value = t($value);
    }
  });
}