# Translate Column

**URL:** <https://community.glideapps.com/t/translate-column/30668>\
**Category:** Ask for Help\
**Tags:** custom-code\
**Created:** [August 19, 2021, 7:10am UTC](https://community.glideapps.com/t/translate-column/30668 "2021-08-19T07:10:22Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Yasin\_Hassanien](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/yasin_hassanien/32/9042_2.png) [@Yasin\_Hassanien](https://community.glideapps.com/u/Yasin_Hassanien)\
**Post date:** [August 19, 2021, 2:10pm UTC](https://community.glideapps.com/t/translate-column/30668/21 "2021-08-19T14:10:03Z")

</div>

That’s something worth the trial 👏

---

<div class="post-metadata">

**Author:** ![Mark\_Turrell](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mark_turrell/32/26605_2.png) [@Mark\_Turrell](https://community.glideapps.com/u/Mark_Turrell)\
**Post date:** [August 19, 2021, 2:57pm UTC](https://community.glideapps.com/t/translate-column/30668/22 "2021-08-19T14:57:13Z")

</div>

I made a fork of yours and it did not work (hence the screenshot of the error). I used yours to test to see if it worked at all (with my api key, and yes, it worked fine).

---

<div class="post-metadata">

**Author:** ![Manu.n](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/manu.n/32/11679_2.png) [@Manu.n](https://community.glideapps.com/u/Manu.n)\
**Post date:** [August 19, 2021, 8:13pm UTC](https://community.glideapps.com/t/translate-column/30668/26 "2021-08-19T20:13:00Z")

</div>

awesome.  
You know you can translate the placeholder of your edit text into the user’s language !!! just leave Lang empty 🤣 😜

---

<div class="post-metadata">

**Author:** ![Lucas\_Pires](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lucas_pires/32/64863_2.png) [@Lucas\_Pires](https://community.glideapps.com/u/Lucas_Pires)\
**Post date:** [August 19, 2021, 8:14pm UTC](https://community.glideapps.com/t/translate-column/30668/27 "2021-08-19T20:14:15Z")

</div>

Yes, but I did it in 5min & started working again yet lol 🤣

Edit¹: @Manu.n added another column to placeholder, test it 😅

---

<div class="post-metadata">

**Author:** ![Manu.n](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/manu.n/32/11679_2.png) [@Manu.n](https://community.glideapps.com/u/Manu.n)\
**Post date:** [August 19, 2021, 8:37pm UTC](https://community.glideapps.com/t/translate-column/30668/28 "2021-08-19T20:37:51Z")

</div>

it does not work, disappointment 🤔

![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/c/7/c7df4487bf84579d3791f5878e49f10a6e1fc025.png)

---

<div class="post-metadata">

**Author:** ![Lucas\_Pires](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lucas_pires/32/64863_2.png) [@Lucas\_Pires](https://community.glideapps.com/u/Lucas_Pires)\
**Post date:** [August 19, 2021, 10:55pm UTC](https://community.glideapps.com/t/translate-column/30668/29 "2021-08-19T22:55:10Z")

</div>

Yep… I let it blank as it says to be to get local language …

Anyway, afterwards I see it. It was only a test

---

<div class="post-metadata">

**Author:** ![SantiagoPerez](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/santiagoperez/32/16807_2.png) [@SantiagoPerez](https://community.glideapps.com/u/SantiagoPerez)\
**Post date:** [August 25, 2021, 2:09pm UTC](https://community.glideapps.com/t/translate-column/30668/30 "2021-08-25T14:09:25Z")

</div>

Thanks @david for the replit and @Manu.n for adapting it.

My wife doesn’t speak Spanish and my aunt doesn’t speak English which more times that I can count leaves me in the middle translating messages for them.

So… Thanks to this thread I came up with this. ⬇

Video is in Spanish but I think you can get the idea.

Edit: This gave me the idea that it would be great if we could access the comment table and add an EC to show the comments in the users’ language.

---

<div class="post-metadata">

**Author:** ![Hannibal](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/hannibal/32/30634_2.png) [@Hannibal](https://community.glideapps.com/u/Hannibal)\
**Post date:** [August 25, 2021, 4:35pm UTC](https://community.glideapps.com/t/translate-column/30668/31 "2021-08-25T16:35:18Z")

</div>

Excellent thread and showcases everyone. I’m definitely going to play around wiith this and integrate it into some apps. Cheers 🙂

---

<div class="post-metadata">

**Author:** ![Stef](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/stef/32/48261_2.png) [@Stef](https://community.glideapps.com/u/Stef)\
**Post date:** [September 1, 2021, 7:19am UTC](https://community.glideapps.com/t/translate-column/30668/32 "2021-09-01T07:19:05Z")

</div>

Awesome!  
How can I get a free API key?

---

<div class="post-metadata">

**Author:** ![Nopparat\_Tongsak](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nopparat_tongsak/32/56202_2.png) [@Nopparat\_Tongsak](https://community.glideapps.com/u/Nopparat_Tongsak)\
**Post date:** [March 31, 2023, 8:55am UTC](https://community.glideapps.com/t/translate-column/30668/33 "2023-03-31T08:55:10Z")

</div>

Is this still working i try to follow the url inside it goes 404

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [March 31, 2023, 11:38pm UTC](https://community.glideapps.com/t/translate-column/30668/34 "2023-03-31T23:38:04Z")

</div>

Please try this in an Experimental Code column.

```auto
https://glide-translate-column.dvdsgl.repl.co/

```

---

<div class="post-metadata">

**Author:** ![Ovi](https://avatars.discourse-cdn.com/v4/letter/o/3ab097/32.png) [@Ovi](https://community.glideapps.com/u/Ovi)\
**Post date:** [April 6, 2023, 4:37pm UTC](https://community.glideapps.com/t/translate-column/30668/35 "2023-04-06T16:37:27Z")

</div>

@ThinhDinh does this have the cache enabled ?  
Also, how does the cache actually work, do you know ?

For example :  
if I add a variable based on a user selection, it translates the content for all the users that will select that language or the cache is local only for that particular user ?

---

<div class="post-metadata">

**Author:** ![Ovi](https://avatars.discourse-cdn.com/v4/letter/o/3ab097/32.png) [@Ovi](https://community.glideapps.com/u/Ovi)\
**Post date:** [April 6, 2023, 4:58pm UTC](https://community.glideapps.com/t/translate-column/30668/36 "2023-04-06T16:58:05Z")

</div>

I’ve noticed that if I do what I want it uses the API every time a user loads that page … what I created is something like this

col A = original text  
col B = experimental code - with google translate API based on the user selection  
col C = IF then else column - to display the default if no language was selected, I can make it mandatory at the beginning and remove this column

but still, it will take a lot of API calls and money if people start playing with the language option :))

---

<div class="post-metadata">

**Author:** ![Uzo](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/uzo/32/22639_2.png) [@Uzo](https://community.glideapps.com/u/Uzo)\
**Post date:** [April 6, 2023, 5:02pm UTC](https://community.glideapps.com/t/translate-column/30668/37 "2023-04-06T17:02:34Z")

</div>

Check out this template… free API.

> **[Translated Page DEMO](https://page1-demo.glide.page)**
>
> Translate the Page to any Language plus HTML elements, TEMPLATE

---

<div class="post-metadata">

**Author:** ![Ovi](https://avatars.discourse-cdn.com/v4/letter/o/3ab097/32.png) [@Ovi](https://community.glideapps.com/u/Ovi)\
**Post date:** [April 6, 2023, 6:45pm UTC](https://community.glideapps.com/t/translate-column/30668/38 "2023-04-06T18:45:26Z")

</div>

@Uzo great solution but I see it doesn’t keep the language on refresh and this is something I need to have as it is annoying to make a user select the language every time the app starts … and also as this apps are pwa’s they will load a lot

---

<div class="post-metadata">

**Author:** ![Uzo](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/uzo/32/22639_2.png) [@Uzo](https://community.glideapps.com/u/Uzo)\
**Post date:** [April 6, 2023, 7:16pm UTC](https://community.glideapps.com/t/translate-column/30668/39 "2023-04-06T19:16:20Z")

</div>

The language will reset to de User device language, so they don’t need to change anything… when they want to see another translation, they can switch it… If they are signed in… it will stay on the last choice… and if that is still not good for you… I can create an option to record IP and pull out the settings 😉

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [April 6, 2023, 11:01pm UTC](https://community.glideapps.com/t/translate-column/30668/40 "2023-04-06T23:01:11Z")

</div>

> [@Ovi](#):
>
> if I add a variable based on a user selection, it translates the content for all the users that will select that language or the cache is local only for that particular user ?

I think that only caches for the particular user but might have to get @Jeff_Hager in here to confirm. So the question is “Does the column run on the client-side, Jeff?”

---

<div class="post-metadata">

**Author:** ![Jeff\_Hager](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/jeff_hager/32/43_2.png) [@Jeff\_Hager](https://community.glideapps.com/u/Jeff_Hager)\
**Post date:** [April 7, 2023, 2:30am UTC](https://community.glideapps.com/t/translate-column/30668/41 "2023-04-07T02:30:56Z")

</div>

Yes, I’m pretty sure the Replit would run client-side. I think just like GitHub, it’s mostly just a code repository. Replit and Github don’t run the code on their servers, they just keep a copy and serve up the code to where it’s needed, and its ran at that destination. In this case, it’s served up to every individual device.

With that said, I think it’s possible that the results are cached for the duration of the session for each individual user. If a user closes the app and reopens it, even though the selected language may already be set, it’s still going to call the API at least once.

So I would assume that there will be an API call once for each user device…every time they reload the app or change the language. Still could end up being a lot of calls depending on how many users there are and how often they use the app.

---

<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:** [April 7, 2023, 4:34am UTC](https://community.glideapps.com/t/translate-column/30668/42 "2023-04-07T04:34:29Z")

</div>

> [@Jeff\_Hager](#):
>
> Yes, I’m pretty sure the Replit would run client-side. I think just like GitHub, it’s mostly just a code repository.

I asked Mark this question a while back, and he confirmed that this is the case.

---

<div class="post-metadata">

**Author:** ![\_ffwpu](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/_ffwpu/32/16380_2.png) [@\_ffwpu](https://community.glideapps.com/u/_ffwpu)\
**Post date:** [June 9, 2023, 2:38am UTC](https://community.glideapps.com/t/translate-column/30668/43 "2023-06-09T02:38:46Z")

</div>

Where can I find the Key API?

[Previous page](https://community.glideapps.com/t/translate-column/30668.md?page=1)

[Next page](https://community.glideapps.com/t/translate-column/30668.md?page=3)
