- no necesitas la subconsulta
- no es necesario volver a seleccionar los mensajes (la tabla de destino ya está en la tabla de rango)
- necesita asociar la consulta de origen a la fila de resultados
UPDATE messages msg
SET vector = to_tsvector(lang.language::regconfig, msg.message)
FROM locales as loco
JOIN languages as lang ON loco.language_id = lang.id
WHERE msg.locale_id = loco.id
;