URLs first
There are three valid ways to separate languages: separate domains, subdomains, or folders. For a small business, folders, almost always: one property, one accumulated authority, and no certificates or DNS in triplicate.
What matters is that changing language changes the URL. If your site shows English without the address changing, Google sees a single page and will never show the English version to somebody searching in English, because as far as it is concerned there is no English version.
And translate the slug as well. /ca/serveis/ ranks in Catalan where /ca/services/ does not, because the word in the title and the word in the URL is the one people actually type.
hreflang, and the three mistakes that void it
Each version of a page declares every version of that page, itself included. Three languages means four tags per page: the three versions plus x-default. When they are missing, Google does what it can, which usually means picking one and burying the others.
The first mistake is not including itself. The second is non-reciprocal declarations: if the Spanish page points at the Catalan one but the Catalan one does not point back, the whole declaration is ignored. The third is pointing at a page that redirects or carries a canonical to somewhere else: also ignored.
And the most forgotten detail: the sitemap has to say exactly what the head says. Two sources that contradict each other are not half a signal; they are none.
What to translate and what not to
A trilingual site does not need everything to exist in all three. What you sell and how to reach you, yes. A guide written about Spanish regulation probably makes no sense in English beyond a summary.
What has to be avoided is machine translation published unreviewed. Google does not penalise machine translation as such, but it does treat unsupervised published output as low quality, and your customers notice anyway. A page in odd Spanish makes a worse impression than a page only in English.
One local note: in Catalonia, Catalan is not a courtesy. There is regional consumer legislation affecting customer service, and a large share of the public simply expects to find it.
How to check it is right
Open the source of one page in each language and count the alternate tags: there should be four on all three, and the same four on all three. Then open the sitemap and check it says the same thing.
Finally, look in Search Console for hreflang errors, which is usually where you discover somebody added a Spanish page and forgot the other two. That is the most common failure and the one that accumulates most quietly.