Repeating groups
Rows filled from your database are translated as they render, including when visitors filter, paginate or load more. SiteTran keeps watching the page for new content.
Translate your Bubble app into 187+ languages in minutes. SiteTran translates every page, repeating group and popup in the visitor's browser, while your workflows and database stay exactly as they are.
Driving growth for companies with millions of users
SiteTran runs as a small script in your app's header. Bubble keeps rendering your app as usual, and SiteTran swaps in the visitor's language.
Sign up free and create a site for your Bubble app. SiteTran gives you your Widget Code, which adds the language dropdown to your app.
Paste the Widget Code into your app's header so it loads on every page, then deploy to Live.
Open your live app and pick a language. SiteTran discovers your text, then you translate it with AI, your own translators, or both, and publish.
<script>var sitetran = { site_id: your_site_id };</script> <script src="//c.sitetran.com/widget/v3.js"></script>
Your real code, with your site ID, is on the Dropdown Style page in SiteTran.
Bubble apps are dynamic. Content loads from your database, groups appear and disappear, and workflows run in the background. Here's how SiteTran handles each part.
Rows filled from your database are translated as they render, including when visitors filter, paginate or load more. SiteTran keeps watching the page for new content.
Popups, floating groups, alerts, dropdowns and groups that are shown by conditions or workflows are translated when they appear. You don't need to set anything up.
SiteTran only changes what the visitor sees. Your workflows, API Connector calls, backend workflows and plugins run exactly as they did before.
Nothing is written to your data. Things and fields stay in their original language, and text visitors type into inputs is saved as typed. You don't need a field per language.
Keep names, addresses and brand terms untranslated with notranslate. Use variables for names, dates and prices inside a sentence, so one translation covers every value.
Page titles, meta descriptions and social tags are translated. Languages share your app's URL by default, and indexable language URLs are available through our Static Translation API. See the details.
There are three common ways to add multi-language support to a Bubble.io app. The right one depends on how much text you have and where it comes from.
Text you type into the Bubble editor: button labels, headings, navigation, placeholders and error messages. It only changes when you edit your app.
Text that comes from your Bubble database or from users: listings, product descriptions, profiles, posts and anything shown in a repeating group. It changes every day without you.
| Bubble App TextBuilt in, under Settings › Languages | API Connector + translation APIDo it yourself with workflows | SiteTranOne script in your header | |
|---|---|---|---|
| How it works | You create an ID for each piece of text and type every translation into a table. | Workflows send text to a machine translation API and display or store the result. | SiteTran translates your app as it renders in the visitor's browser. |
| Changes to your app | Rebuild each text element to use App Text. | Add API calls, custom states and conditions to elements and workflows. | None. Paste the Widget Code and deploy. |
| Database content | Not covered. Needs extra fields or logic for each language. | Possible, usually by storing extra fields such as title_es. | Translated as it's displayed. Your database stays unchanged. |
| Machine translation | No. You enter every translation. | Yes, paid per API call. | Yes, with DeepL, Google Translate and OpenAI. |
| Review and approval | Edit translations in the Bubble editor. | Build your own. | Translators, reviewers, approval and publishing built in. |
| Titles and meta tags | Set per language with conditions. | Build your own. | Translated automatically. |
| Language switcher | Build a dropdown and workflow. | Build a dropdown and workflow. | Included, with flags and custom CSS. |
Translation plugins in the Bubble marketplace vary a lot. Most either call a translation API, like the second column, or add a script, like SiteTran.
Start with machine translation and refine it with your own team. You decide what gets approved and when it goes live in your app.
Get suggestions for any phrase, or translate new phrases automatically. You choose whether they're approved automatically or reviewed first.
Invite your own translators for each language and choose who can approve. Turn on AI Translation Review for a second opinion on each translation.
Lock product names and brand terms in the Glossary, set Translation Rules that AI translation follows, and reuse past work with Similar Phrases.
Choose from three dropdown types, with or without flags, and add your own CSS. Visitors are switched to their browser language automatically.
Here's what's translated as soon as you install SiteTran, and what it takes to give each language its own indexable URL.
SiteTran translates more than visible text. When a visitor switches language, the page's metadata switches with it.
lang attribute, set to the selected languageBy default, every language uses your app's existing URL and the visitor's choice is remembered. For a separate, indexable page per language, SiteTran's Static Translation API returns translated HTML for URLs like these:
Bubble's hosting can't serve those URLs on its own, so this needs a proxy or edge worker in front of your app. We'll help you plan it.
Talk to us about Bubble SEOFollow the integration guide, Translate Bubble with SiteTran, for every click from copying your Widget Code to testing your first language.
Most setup problems come down to where the code was pasted or a translation that isn't live yet.
?sitetran=on to your URL to see the dropdown.sitetran.ignore_selectors in your Widget Code. In HTML elements, you can add translate="no" directly.Every plan includes unlimited languages and teammates. Start free and upgrade when your traffic grows.
For small apps and testing
For apps with moderate translation needs
For larger apps or several smaller ones
For large-scale international apps
Can't find your answer? Our team is happy to help with your Bubble setup.
Email supportnotranslate class or the translate="no" attribute to any element, or list selectors in sitetran.ignore_selectors. Use this for user names, addresses and other personal data. For text that changes inside a sentence, such as names, dates and prices, use variables so one translation covers every value.Paste one script, pick your languages, and reach users in the language they think in. Start on the Free plan and upgrade only when you grow.