Here’s how to translate your posts to any language instantly for free (well, 500.000 characters / month) with DeepL Translate and Make. Links, images and Ghost Cards are preserved in the translation.
The Make scenario triggers on Post Published in Ghost. Since the scenario will/can publish a post, we have to cut the loop, else Make will continue to translate already translated posts… until we run out of Make credits.
And, if we leave the translated post as Draft, we don’t want it to translated again when we Publish.
In the next step we will set up a filter with this #translated tag so Make will not execute the translation if the tag is found.
Add a Ghost Publish Post module, using the data from Ghost Custom integration
Add a DeepL translate module, using the API key - translate the HTML field from Ghost module, and assign source and target language.
Add a second DeepL translate module, translate the Title field from Ghost module, and assign source and target language.
Add a Ghost Create Post module using the output from the two DeepL modules (HTML and Title). Add a hash-translated tag to the new post, and don’t forget the Feature Image. Suggestion: create new posts as Draft until you see everything working.
Add a Filter after the first Ghost module to stop execution if the hash-translated tag is found. Here’s the filter set-up. Only posts which do not contain hash-translated are processed.
Done
Activate the scenario in Make and publish a post in Ghost. Your post, translated, shows up a few seconds later in Ghost.
Thank you so much for sharing this! Just to clarify, this process produces a translated post within the same Ghost site? In other words, the English and (for example) French content would be in the same site. Or can the post be published in a second French site?
Hey @mheland , thanks so much for posting this! I was able to help a journalist client get this set up yesterday for several languages. She’s super excited about being able to support community members who would otherwise have poor access to local news.
We hit one snag, and I wonder if you have any ideas on it. Although she sees a bunch of language choices in the dropdown for target language, she’s missing several of the ones she needs, even though they’re on this list: Languages supported | DeepL API Documentation
Any ideas, or have you seen something similar? I looked over the blueprint, thinking that maybe it had hard-coded the languages, but it doesn’t, so I’m guessing they must be coming from DeepL, and I’m not sure why she’s getting only a partial list?
I’m continuing to play with this, doing some expansion (doing multiple languages in one scenario eventually), BUT… I’m having problems with the tags filter. I can replicate that if there’s just one tag (actually named hash-translated, not #translated) and i do current.tags.name text does not contain hash-translated, that filters correctly.
However, when I switch to the array syntax you recommend in your January '24 update, the filter lets everything through.
I’ve got some other improvements to share back – appending tags, multiple languages, etc, but I’m hoping you can help me get this one sorted before someone else makes the mistake I did and completely bombs themselves out of free tier. (Yes, I should have been experimenting with “run once”, but I thought it was working! Oops…)
Update: I scrapped Make and wrote my own in javascript. Which I should have done several hours earlier. Works great. I’m going to tidy up a bit and then will update with it in case anyone wants it. :)
Thanks Cathy, you’re doing great as always. Just to point out (since I read you like human translations) that DeepL was created by the makers of Linguee, a dictionary that uses real human translations.
That explains why their translations feel more natural and clear than everything else. Perhaps the only service that could match this level is machinetranslation(.)com, which combines DeepL with other providers.
It’s expensive, and I don’t know if they really improved the quality, to be honest.
Is that from clicking ‘deploy on netlify’ or from forking the repo and running ‘netlify dev’ from the command line?
It definitely builds for me when I deploy from netlify-cli, but this is my first time trying to make a ‘deploy on netlify’ button and perhaps I’ve failed somewhere…
Oh well, I think it’s more probable that I’m failing trying to deploy it. I tried using the button on your Github page without forking and forking it, without success.
I can start to play around using netlify-cli, for sure and I will update if I found anything valuable. Just sharing my experience because we all know that a single click should bring more users around and that’s how Ghost is improving those days :)
This. Make is more and more buggy every day. I guess they moved all staff over to the AI team, as they dropped the ball on that one, a lot of strange stuff is happening on the platform. Integrations suddenly just falling apart… troubling. We switched to n8n which is absolutely bussin’.