Coda Translator Public

icon picker
How to install and use

1. Add to workspace

Copy this doc to your workspace
Close this doc and open your copy
Open doc options and click “Make doc into a template”
CleanShot 2021-11-24 at 12.30.17.png
4. Use this template when creating a document or import it into existing document

2. Set up backend

Whatever you are translating, needs to be in a table. To show translated text on canvas, go to .

Use custom table

If you don’t have it, create table and
create a Original column for text that needs to be translated
create a Handle column that will be used to easily find the row
optionally you can use structure for naming columns: Page, Element and Block
Go to and follow instructions there to plug in the table
Go back to your table and
create Edit URL column. Add this formula:
Format([@-Reference to a row in DB Settings with this table].[Column Popup URL Template],thisRow.UID)
create Display column. Add this formula (or copy it from [DB Texts].Display):
[DB Targets].Filter(Translation.Target = [Flow 1].[Current Lang] and Source = thisRow).First(),
If(CurrentFlow.[Visual editing],
Hyperlink([thisRow].[Edit URL],[text-site-header-empty].Original),
"Empty. Enable visual editing to edit this."
If(CurrentFlow.[Show source version],
If(CurrentFlow.[Visual editing],
Hyperlink(thisRow.[Edit URL], thisRow.Original),
if(CurrentFlow.[Visual editing],
Hyperlink(TranslatedVersion.[Edit URL],TranslatedVersion.[Translated text]),
TranslatedVersion.[Translated text]
optionally change [text-site-header-empty] to some other value that will show if the original text is empty
create Page formula column. Add this formula: Format("@[{1}].Display",thisRow.Handle)
create Prepare translations button. Name it “Prepare translations for” + the name of your table, add label “Prepare translations”
Add this formula to the Action of the Prepare translations button
[DB Translations]
[DB Texts].Filter(CurrentValue.In(
[DB Targets].Filter(Translation = CurrentTranslation).Source) =false)
[DB Targets]
[DB Targets].Translation,CurrentTranslation,
[DB Targets].Source,CurrentSource
create Translate button. Name it “Translate” + the name of your table, add label “Translate”
add this formula to the action of Translate button: [DB Targets].Filter(Source.In([DB Texts])).Automatic
create Delete with translations button column in the table. Add formula to button action:
DeleteRows([DB Targets].Filter(Source=thisRow)),
5. You can now add rows with texts into this table.
6. To translate texts, simply first click Prepare translation button, and then Translate button. Depending on how many translations are needed, it will take some time to execute.

Use provided table

With this template, we have provided a table DB Texts. This table is already set up and ready to be translated. If you just have some texts that you want to translate, you can add them to this table. Simply add new rows and first click Prepare translation button, and then Translate button. Depending on how many translations are needed, it will take some time to execute.

3. Set up frontend

Use custom pages

You can translate your existing page.
Copy all the texts from the page to custom origin table (see: ) or to the provided table.
Then reference the texts on the page this way:
CleanShot 2021-11-25 at 00.11.03.gif
If the text is translated, switching the language will work.

Copy provided page

Go to , and click Add new page button.
Open and rename your new page.
Add content to your page this way:
CleanShot 2021-11-25 at 17.18.57.gif
4. Style your content as a paragraph to maintain style across all translations this way:
CleanShot 2021-11-25 at 19.28.01.gif
5. When you are done inserting content to the page, just delete the helper tables:
CleanShot 2021-11-25 at 17.35.45.gif

Finally, go to DB Texts, click Prepare translations button and then Translate button. This will translate your content.
You can then visually edit different translations directly on the page, or disable this option in .
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
) instead.