# Best way to create an app with multiple languages

**URL:** https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358
**Category:** Ask for Help
**Created:** [September 20, 2023, 9:14am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358 "2023-09-20T09:14:59Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Lemonrouge](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lemonrouge/32/64259_2.png) [@Lemonrouge](https://community.glideapps.com/u/Lemonrouge)
#### Post date: [September 20, 2023, 9:15am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/1 "2023-09-20T09:15:00Z")

</div>

Hi everyone,

I am putting together a local community application and I would like to have a toggle on the app to switch between 2 languages - Thai and English. What would be the best way to do this?

Thank you in advance!

---

<div class="post-metadata">

### Author: ![nathanaelb](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nathanaelb/32/43079_2.png) [@nathanaelb](https://community.glideapps.com/u/nathanaelb)
#### Post date: [September 20, 2023, 11:54pm UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/2 "2023-09-20T23:54:28Z")

</div>

Glide does not yet have a multilingual feature built in, but you could build it yourself:

1. A different app per language
2. Or: Different tabs in each language and activate tab visibility
3. Or: Different components in each language on each tab, and activate component visibility

2 would be the simplest to setup, maintain and would probably give you better loading performance.

---

<div class="post-metadata">

### Author: ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)
#### Post date: [September 21, 2023, 2:27am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/3 "2023-09-21T02:27:12Z")

</div>

1. Use dynamic labels for all components, and use data editor logic to switch language based on user preference 🙂

---

<div class="post-metadata">

### Author: ![nathanaelb](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nathanaelb/32/43079_2.png) [@nathanaelb](https://community.glideapps.com/u/nathanaelb)
#### Post date: [September 21, 2023, 8:54am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/4 "2023-09-21T08:54:17Z")

</div>

I had never thought of it and like approach 4 _a lot_.

Darren, would the setup you have in mind be as follows:

- Language of preference in the User table
- In other tables, display columns for language 1, language 2, etc.
- If-Then-Else columns for each field and label of each component to display the language that matches the language of preference in the User table.

Approach 2 feels easier to maintain, though each change in the Layout Editor needs to be performed as many times as available languages. Approach 4 is more elegant and maybe better for performance?

---

<div class="post-metadata">

### Author: ![Flowcode](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/flowcode/32/64316_2.png) [@Flowcode](https://community.glideapps.com/u/Flowcode)
#### Post date: [September 21, 2023, 9:03am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/5 "2023-09-21T09:03:39Z")

</div>

I think I read somewhere that the easiest way to do it is using Weglot! You should be able to install Weglot and everything will be translated automatically! I am going to test it myself today as a I need an application in both German and English! 😉

---

<div class="post-metadata">

### Author: ![nathanaelb](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nathanaelb/32/43079_2.png) [@nathanaelb](https://community.glideapps.com/u/nathanaelb)
#### Post date: [September 21, 2023, 9:08am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/6 "2023-09-21T09:08:00Z")

</div>

I’d be curious to know if Weglot will translate everything in the app. And how would the language picker be implemented?

Whatever you manage to do, if you have the time please share here 🙏

---

<div class="post-metadata">

### Author: ![Flowcode](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/flowcode/32/64316_2.png) [@Flowcode](https://community.glideapps.com/u/Flowcode)
#### Post date: [September 21, 2023, 9:20am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/7 "2023-09-21T09:20:26Z")

</div>

Testing it out right now. I read it on the forum some months ago.

Here’s the link: [Machine Translations with WeGlot](https://community.glideapps.com/t/machine-translations-with-weglot/47413)  
Here’s a youtube video explaining it: [https://www.youtube.com/watch?v=Y\_5MbmQMhFE](https://www.youtube.com/watch?v=Y_5MbmQMhFE)

The language picker is not supported so you access the translated version through another URL. (of course you can add a button to your app which leads to the right language version)

Testing it out right now 😉

---

<div class="post-metadata">

### Author: ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)
#### Post date: [September 21, 2023, 9:27am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/8 "2023-09-21T09:27:03Z")

</div>

> [@nathanaelb](#):
>
> Darren, would the setup you have in mind be as follows:
> 
> - Language of preference in the User table
> - In other tables, display columns for language 1, language 2, etc.
> - If-Then-Else columns for each field and label of each component to display the language that matches the language of preference in the User table.

Not exactly.  
I’ve been using variations of this approach for about 3 years now, and the approach has evolved and been refined with each new App that I’ve implemented it in. The current approach works as follows:

- I have a separate “Strings” table. This table has one row for each text snippet that is used anywhere in the App.
- I have a JSON column that contains the translations for each supported language. It looks something like this:

```auto
{
  "translations": {
    "zh": "输入总工作时间",
    "ms": "Masukkan Jumlah Jam bekerja",
    "ta": "வேலை செய்த மொத்த நேரத்தை உள்ளிடவும்"
  }
}

```

- I use a JavaScript column to extract the appropriate translated value, based on the Users preferred language, which is stored in the User Profile.
- In my User Profile table, I create a series of Single Value columns - one for each row in my Strings table. Each one takes `N` from start from the Strings table, beginning at zero.
- I then reference those Single Value columns where ever I need them in component settings.

So a typical component configuration might look something like:

 ![CleanShot 2023-09-21 at 17.20.48@2x](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/4/6/4693de90795c7c015bf2d02ca82c640bbdc10980.png)

In the above example, each of the Field Component Labels (and the Title) takes a value from User Profile → s/number

The most tedious part is creating all the Single Value columns in the User Profile (I have one App that has almost 300 of them), but the naming convention that I use makes it pretty easy to quickly duplicate/edit/save. And once it’s done, it’s very easy to manage.

You might ask the question - why not use an integration to dynamically translate on the fly? I have done this in one App, using Google Translate, and the cost skyrocketed. And because this is all static text that never changes, dynamic translation is really overkill.

---

<div class="post-metadata">

### Author: ![Lemonrouge](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lemonrouge/32/64259_2.png) [@Lemonrouge](https://community.glideapps.com/u/Lemonrouge)
#### Post date: [September 21, 2023, 9:50am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/9 "2023-09-21T09:50:43Z")

</div>

Thank you, Nathanael, I appreciate your response. I will explore these options 🙏

---

<div class="post-metadata">

### Author: ![Lemonrouge](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lemonrouge/32/64259_2.png) [@Lemonrouge](https://community.glideapps.com/u/Lemonrouge)
#### Post date: [September 21, 2023, 9:51am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/10 "2023-09-21T09:51:47Z")

</div>

Thanks Nathan, I will take a look 🙏

---

<div class="post-metadata">

### Author: ![Lemonrouge](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lemonrouge/32/64259_2.png) [@Lemonrouge](https://community.glideapps.com/u/Lemonrouge)
#### Post date: [September 21, 2023, 9:53am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/11 "2023-09-21T09:53:13Z")

</div>

Thank you Darren, much appreciated 🙏

---

<div class="post-metadata">

### Author: ![l3oy8231](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/l3oy8231/32/32303_2.png) [@l3oy8231](https://community.glideapps.com/u/l3oy8231)
#### Post date: [September 21, 2023, 10:17am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/12 "2023-09-21T10:17:57Z")

</div>

> [@Darren\_Murphy](#):
>
> ```auto
> {
> "translations": {
> "zh": "输入总工作时间",
> "ms": "Masukkan Jumlah Jam bekerja",
> "ta": "வேலை செய்த மொத்த நேரத்தை உள்ளிடவும்"
> }
> }
> 
> ```

Can you share the JS code you used? If you can share, thank you very much. 🙏🙏

---

<div class="post-metadata">

### Author: ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)
#### Post date: [September 21, 2023, 10:37am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/13 "2023-09-21T10:37:01Z")

</div>

To extract the required language string?

It’s quite simple:

```auto
const json = JSON.parse(p1);
return json.translations[p2];

```

p1 is the JSON string  
p2 is the Users preferred language

Note that JavaScript isn’t actually required. The same thing could be done with the new Query JSON column.

---

<div class="post-metadata">

### Author: ![Flowcode](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/flowcode/32/64316_2.png) [@Flowcode](https://community.glideapps.com/u/Flowcode)
#### Post date: [September 21, 2023, 10:42am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/14 "2023-09-21T10:42:05Z")

</div>

Would be cool if you could make a simple public template with how you use translation? 😉

---

<div class="post-metadata">

### Author: ![Flowcode](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/flowcode/32/64316_2.png) [@Flowcode](https://community.glideapps.com/u/Flowcode)
#### Post date: [September 21, 2023, 10:43am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/15 "2023-09-21T10:43:00Z")

</div>

I made a little video & explanation because I have seen this question a lot before and because it was so easy to do with my app (just did it in 5 minutes) I think this might be one of the best ways to translate apps! 😉

> [@Multilanguage App (Auto-Translation) Within 5 minutes With Glide](https://community.glideapps.com/t/multilanguage-app-auto-translation-within-5-minutes-with-glide/66397):
>
> Today I added automatic translation to my Glide app with Weglot within 5 minutes and because I think that’s pretty cool, I recorded a little video to show how I did it: [Loom | Free Screen & Video Recording Software | Loom](https://www.loom.com/share/7d4d75d1f9bd4fda9f8496724d41e726) Downside You won’t have a language switcher in the app. Each translation lives on a different subdomain. Logging in with Gmail for example redirects to the original app so it’s better to use pincodes. Upside Translations happen automatically on all co…

---

<div class="post-metadata">

### Author: ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)
#### Post date: [September 21, 2023, 10:48am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/16 "2023-09-21T10:48:06Z")

</div>

Yeah, that’s occurred to me. Something for a rainy day 🙂

---

<div class="post-metadata">

### Author: ![Connor\_Finlayson](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/connor_finlayson/32/79079_2.png) [@Connor\_Finlayson](https://community.glideapps.com/u/Connor_Finlayson)
#### Post date: [September 21, 2023, 11:04am UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/17 "2023-09-21T11:04:25Z")

</div>

Holy shit Darren, this is an awesome solution!

---

<div class="post-metadata">

### Author: ![Celtyshire](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/celtyshire/32/81220_2.png) [@Celtyshire](https://community.glideapps.com/u/Celtyshire)
#### Post date: [October 27, 2024, 12:57pm UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/18 "2024-10-27T12:57:07Z")

</div>

Hey, @Darren_Murphy

It’s been a year since you posted this awesome tip on multilingual app. Has it changed since then?

Building my own app now and trying to find solution to not add hundreds of columns, but seems like it is still impossible to do localization without them

---

<div class="post-metadata">

### Author: ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)
#### Post date: [October 27, 2024, 1:06pm UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/19 "2024-10-27T13:06:03Z")

</div>

I still do it the same way that I described above.  
Have you explored the option that @Flowcode posted?

> [@Flowcode](#):
>
> I made a little video & explanation because I have seen this question a lot before and because it was so easy to do with my app (just did it in 5 minutes) I think this might be one of the best ways to translate apps! 😉
> 
> > [@](#):
> >
> > Today I added automatic translation to my Glide app with Weglot within 5 minutes and because I think that’s pretty cool, I recorded a little video to show how I did it: [Loom | Free Screen & Video Recording Software | Loom](https://www.loom.com/share/7d4d75d1f9bd4fda9f8496724d41e726) [[Weglot and Glide]](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/6/7/6738c277f2b08afe1a931bc651a301b559ec0071.jpeg) Downside You won’t have a language switcher in the app. Each translation lives on a different subdomain. Logging in with Gmail for example redirects to the original app so it’s better to use pincodes. Upside Translations happen automatically on all co…

---

<div class="post-metadata">

### Author: ![Celtyshire](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/celtyshire/32/81220_2.png) [@Celtyshire](https://community.glideapps.com/u/Celtyshire)
#### Post date: [October 28, 2024, 6:41pm UTC](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358/20 "2024-10-28T18:41:06Z")

</div>

Great, thank you!

I thought about weglot and also translating with Glide AI on the fly, but I have only 3 languages and there is no need to make an automated translation, actually. Just wanted to have the most optimized solution for manual translation)

[Next page](https://community.glideapps.com/t/best-way-to-create-an-app-with-multiple-languages/66358.md?page=2)
