/bubble-tutorials

How to build a multilingual app in Bubble

Learn how to build a multilingual Bubble app with easy steps, translation setup, and best practices to deliver a seamless global user experience.

Matt Graham, CEO of Rapid Developers

Book a call with an Expert

Starting a new venture? Need to upgrade your web or mobile app? RapidDev builds Bubble apps with your growth in mind.

Book a Free Consultation

How to build a multilingual app in Bubble

The simplest and most scalable way to build a multilingual Bubble app is to store all your text in a “dictionary” data type, load the correct language into custom states when the page loads, and then display text dynamically instead of hard‑coding it. Bubble doesn’t translate automatically for you — you manage the translations yourself. The user’s chosen language can be stored on the User thing or detected from the browser.

 

Core Idea

 

You create a data type like Text Item with fields such as key, english, spanish, etc. Then every text you show on the page uses “Do a search for Text Item…:filtered:first item’s english/spanish/etc”. To avoid slow searches, you load all Text Items into a single custom state when the page loads and reference them instantly.

 

Step‑by‑Step Setup

 

  • Create a data type Text Item with a field key (text) and one field per language, like en, es, fr.
  • Add one entry per phrase you need. Example: key = “login\_button”, en = “Log in”, es = “Iniciar sesión”.
  • On page load, run a workflow: “Set state” for the page → all\_texts (type: list of Text Item) → value = Do a search for Text Items.
  • Store the user’s language on the User thing, e.g., field language = en.
  • For each text element, set the text to dynamic. Example: Parent group's text item’s :filtered by key = 'login\_button' :first item’s en (replace en with the user’s language using “Get field by name”).

 

Using “Get field by name”

 

This Bubble feature lets you dynamically pick the language field based on the user’s language code. Example:

// text source inside a text element
Parent group's Text Item:get field by name Current User's language

 

Switching Languages

 

  • Add a dropdown with values like “en”, “es”, “fr”.
  • When dropdown changes → Make changes to Current User → language = dropdown’s value.
  • Refresh page or run a workflow that re‑sets the custom state with dictionary again.

 

Why This Works Well

 

This method avoids slow database searches, keeps your page responsive, lets you update translations without touching the page design, and supports unlimited languages. It’s the real approach used in production Bubble apps.

Explore More Valuable No-Code Resources

How to integrate Bubble.io with Git?

Learn how to seamlessly integrate Bubble.io with Git through our comprehensive step-by-step guide. Perfect for beginners and professionals.

Explore

How to integrate Bubble.io with Reddit Ads?

Learn how to seamlessly integrate Bubble.io with Reddit Ads using our easy step-by-step guide. Boost your ad management today!

Explore

How to integrate Bubble.io with AWS S3?

Explore our step-by-step guide on integrating Bubble.io with AWS S3, making your app development process more efficient and secure.

Explore

How to integrate Bubble.io with Lucidchart?

Follow our step-by-step guide to seamlessly integrate Bubble.io with Lucidchart, enhancing your workflow & productivity.

Explore

How to integrate Bubble.io with Kentico?

Learn how to seamlessly integrate Bubble.io and Kentico with our comprehensive, easy to follow step-by-step guide.

Explore

How to integrate Bubble.io with Box?

Discover easy-to-follow steps for integrating Bubble.io with Box. Boost your workflow and secure your files seamlessly today.

Explore

Stuck in Bubble.io? We’re here to help!

Fix broken workflows | Optimize logic | Boost performance | Scale with confidence

4.9
Clutch rating 🌟
600+
Happy partners
17+
Countries served
190+
Team members

By clicking “Accept”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.

Cookie preferences