A possible (temporary) sollution:
In theme_form_contact_message_form_alter I've put an array with all the fields that need translation. Based on those fields I change the "#title" variables if the "#title" variable is a string. A TranslatableMarkup "#title" doesn't need another translation:
function theme_form_contact_message_form_alter(&$form,
\Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
// Change items
$title_items = array(
'subject',
'message',
'name',
'mail',
'field_amount' ,
'field_phone',
'field_receiver',
);
foreach ($title_items as $form_item) {
if(isset($form[$form_item])) {
$item = $form[$form_item];
if($item['#type'] == 'container') {
if(isset($form[$form_item]['widget'][0]['value']['#title'])) {
if(is_string($form[$form_item]['widget'][0]['value']['#title'])) {
$form[$form_item]['widget'][0]['value']['#title'] = $form[$form_item]['widget']['#title'] = t($form[$form_item]['widget'][0]['value']['#title']);
}
}
} elseif ($form[$form_item]['#type'] != 'item') {
// Make sure the item is not a pre-filled element.
if(isset($item['#title']) && is_string($item['#title'])) {
if(is_string($item['#title'])) {
$form[$form_item]['#title'] = t($form[$form_item]['#title']);
}
}
}
}
}
}