Skip to main content
RapidDev - Software Development Agency
bubble-tutorial

How to Create a Multi-Language Application in Bubble

Bubble has a built-in language and translation system accessible through Settings that lets you define translations for all static text in your app. This tutorial covers enabling multiple languages, translating UI elements, building a language switcher, handling right-to-left languages, and formatting dates and currencies per locale for a fully localized user experience.

What you'll learn

  • How to use Bubble's built-in language and translation settings
  • How to build a language switcher UI for your users
  • How to handle right-to-left languages like Arabic and Hebrew
  • How to format dates and currencies based on the selected locale
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner6 min read25-30 minAll Bubble plansMarch 2026RapidDev Engineering Team
TL;DR

Bubble has a built-in language and translation system accessible through Settings that lets you define translations for all static text in your app. This tutorial covers enabling multiple languages, translating UI elements, building a language switcher, handling right-to-left languages, and formatting dates and currencies per locale for a fully localized user experience.

Overview: Multi-Language Applications in Bubble

This tutorial guides you through creating a fully localized Bubble app that supports multiple languages. You will use Bubble's native translation system for static text, build a language selector, and handle special cases like RTL layouts and locale-specific formatting.

Prerequisites

  • A Bubble app with static text elements ready for translation
  • Basic familiarity with Bubble's Settings and Design tabs
  • Translated text prepared for your target languages
  • A Bubble account on any plan

Step-by-step guide

1

Enable multiple languages in Settings

Go to Settings in the left sidebar and click the Languages tab. You will see your default language, usually English. Click 'Add a new language' and select the languages you want to support — for example, Spanish, French, and Arabic. Each language creates a new column in the translation table. Bubble lists every text string in your app in this table. You can also export the translation file as a CSV, send it to translators, and import the completed translations back.

Pro tip: Export the CSV file for professional translators instead of translating each string manually in the editor. This is faster and produces better quality translations.

Expected result: Multiple languages are added to your app and the translation table shows all text strings with columns for each language.

2

Translate static text for each language

In the Settings → Languages tab, you will see a table with your default language text in the first column and empty columns for each added language. Click into each cell and type the translation. This covers button labels, placeholder text on inputs, static text elements, and error messages. For dynamic text from the database, you need a different approach — store translated versions in separate fields on your Data Type such as 'title_en', 'title_es', 'title_fr' or use a Translation Data Type that links translations to the original record.

Expected result: All static text strings have translations for each supported language in the translation table.

3

Build a language switcher UI

In the Design tab, create a Dropdown or a set of flag icon buttons for language selection. For a dropdown approach, add a Dropdown element and set its choices to your supported languages. When the dropdown value changes, create a workflow that uses Bubble's built-in Set language action from the Navigation actions to switch the app language. For a persistent preference, save the language choice to the Current User's profile using Make changes to Current User so it loads on their next visit.

Expected result: Users can select their preferred language and all static text updates immediately.

4

Handle right-to-left languages

If you support Arabic, Hebrew, or other RTL languages, your layout needs to mirror. Add an HTML element with a script that detects the current language and sets the page direction. When an RTL language is selected, apply document.body.dir = 'rtl' via JavaScript. Also use Bubble's conditional formatting: on each Row container, add a condition that changes alignment when the language is RTL. Test thoroughly — some elements like icons and navigation may need individual RTL adjustments.

Pro tip: Create a reusable RTL handler element placed on every page so the direction logic is centralized.

Expected result: When an RTL language is selected, the page layout mirrors correctly with right-aligned text and reversed element order.

5

Format dates and currencies per locale

Dates and currencies display differently across locales. For dates, use Bubble's :formatted as operator with locale-specific format strings. Create conditional formatting on text elements that shows different date formats based on the current language. For currencies, create an Option Set called Currency Locale with attributes for symbol, position, decimal separator, and thousands separator. Display prices using dynamic text that combines the symbol and formatted number based on current locale settings.

Expected result: Dates and currencies display in the correct format based on the user's selected language and locale.

6

Store and load user language preferences

Add a field to your User Data Type called 'preferred_language' of type text. When a user changes their language via the switcher, add a workflow step to save the selection: Make changes to Current User → preferred_language = selected language. On the Page is loaded event, add a Set language action set to Current User's preferred_language with an Only When condition that the field is not empty. This ensures returning users automatically see the app in their chosen language.

Expected result: Returning users see the app in their previously selected language automatically on every page load.

Complete working example

Workflow summary
1MULTI-LANGUAGE APPLICATION SUMMARY
2=====================================
3
4SETUP:
5 Settings Languages tab
6 Add languages: Spanish, French, Arabic, etc.
7 Fill translation table or export/import CSV
8
9TRANSLATION COVERAGE:
10 Static text: Settings Languages (built-in)
11 Dynamic data: Separate fields per language
12 e.g., title_en, title_es, title_fr
13 Display: Conditional text source per language
14
15LANGUAGE SWITCHER:
16 Design tab Add Dropdown or flag buttons
17 Workflow: When dropdown changes
18 Navigation Set language
19 Make changes to Current User
20 preferred_language = selection
21
22PERSISTENCE:
23 User Data Type preferred_language (text)
24 Page is loaded workflow:
25 Set language = Current User's preferred_language
26 Only when: preferred_language is not empty
27
28RTL SUPPORT:
29 HTML element with script:
30 If Arabic/Hebrew: document.body.dir = 'rtl'
31 Else: document.body.dir = 'ltr'
32 Conditional formatting on containers:
33 When language is RTL alignment reversed
34
35DATE FORMATTING BY LOCALE:
36 en: MM/DD/YYYY
37 es/fr: DD/MM/YYYY
38 ja: YYYY/MM/DD
39
40CURRENCY FORMATTING:
41 Option Set: Currency Locale
42 Attributes: symbol, position, separators
43 Display: symbol + formatted number per locale

Common mistakes when creating a Multi-Language Application in Bubble

Why it's a problem: Trying to translate dynamic database content with the built-in language system

How to avoid: For dynamic content, create separate fields per language on Data Types or use a Translation Data Type

Why it's a problem: Forgetting to set the language on page load for returning users

How to avoid: Add a Page is loaded workflow that sets language to Current User's preferred_language

Why it's a problem: Not testing RTL layout on every page

How to avoid: Test every page in RTL mode and add conditional formatting for elements that do not mirror automatically

Best practices

  • Use Bubble's built-in translation system for all static text
  • Export translations as CSV for professional translators
  • Save user language preference to their profile for seamless returning experience
  • Test all supported languages thoroughly, especially RTL
  • Keep text strings short and context-free for easier translation
  • Use Option Sets for locale-specific formatting rules
  • Provide a visible language switcher in navigation

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I need to make my Bubble.io app available in English, Spanish, and Arabic. How do I set up the translation system, build a language switcher, and handle Arabic's right-to-left layout?

Bubble Prompt

Help me add multi-language support to my app. I need English, Spanish, and French with a language switcher in the header that persists the user's choice.

Frequently asked questions

How many languages can I add to a Bubble app?

Bubble supports over 100 language codes. There is no practical limit to the number of languages you can add.

Does the built-in translation system handle database content?

No. The built-in system only translates static editor text. For dynamic content, store translations as separate fields on your Data Types.

Can I auto-translate text using an API?

Yes. Use the Google Cloud Translation API via the API Connector to translate text on demand. Cache translations in your database to avoid repeated API costs.

Does language switching affect SEO?

Bubble apps are single-page applications, so language switching happens client-side without separate URLs. For multilingual SEO, consider separate pages with hreflang meta tags.

How do I handle images with text for multiple languages?

Avoid text in images. Use overlay text elements instead so the text can be translated. If you must use text images, store separate versions per language.

Can RapidDev help build a multi-language Bubble app?

Yes. RapidDev can set up the full localization system including translation management, language switching, RTL support, and locale-specific formatting for your Bubble application.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.