Multilingual Starter App w/ support for 106 Languages

Hi Everyone! We are releasing a multilingual starter app to help you get started when creating an app that supports multiple languages. This app carries over the translation efforts from the multilingual support that was added to the Community support app (Demo Available) earlier this year.

View the Starter App

106 languages are supported by this app! 8 languages have been verified by individuals in the community (Spanish, French, Japanese, Portuguese, Danish, Dutch, Finnish). Google Translate was used to translate the remaining 98 languages. If you would like to help verify these remaining languages please DM me or reply to this thread.

How it works

A single table called “Translations” is used where each translatable entity is setup as a column in the spreadsheet. For example, to translate “Sync” or “Save”, each of these terms have their own column in the translation table. Each language is a single record in this table. To remove a language from your app, simply delete the record that corresponds to that language.

The app is setup to use a single “usersettings” column called “language” that references the Translate table and gives the ability for users to select their language when the app starts.

A lookup formula is used to change the text of any fields after the user selects a language; this formula can be placed in any “display name” property of views, columns, actions, etc. Simply change the TARGET in the lookup formula below to retrieve a different field.

lookup(usersettings(Language),Translations, Language, TARGET )

Example: Creating a new action called "Mark Complete"

Adding additional translatable views, columns and actions to your app is simple exercise. Following these steps to add a new translatable entity.

  1. First create a new column in the translation spreadsheet called Mark Complete
  2. Add the translations for each language record you would like to have in your app
  3. Regenerate the structure of the Translate table
  4. Set the display name for the action to the formula lookup(usersettings(Language),Translations, Language, Mark Complete )

That’s all there is to it! Please let me know if you have any questions or suggestions. This app is intended to be an empty app to help the community get started when building an app that supports multiple languages. If you want to see a demo of an app that uses this idea extensively, take a look at the Community Support app.

A special thanks goes out to the following individuals for helping translate:

Spanish/Español: @Gaston_Barcia
French/français: @Romain
Japanese/日本語: @tsuji_koichi
Portuguese/Português: @Leonardo_Foletto
Danish/dansk: @Bjarne_Allerup
Dutch/Nederlands, Vlaams: @Ewout_van_Zonneveld
Finnish/suomi, suomen kieli: @Aleksi @Tocionist
Turkish: @LeventK
Albanian: Fabian
German: Fabian
Tamil: Sid
Indonesian: Heru
Sundanese: Heru
Javanese: Heru
Russian: Vadim
Ukrainian: Vadim

14 Likes

Really cool; awesome to see the community work together in developing this.

1 Like

Wow. That is fantastic. I hope to make use of this.

@Rich
Turkish translation has been completed. FYI.

3 Likes

@Rich
Albanian & German translation is done.

4 Likes

The following languages were added. Thanks to the following individuals for helping! We now have 15 fully verified translations!

Turkish: LeventK
Albanian: Fabian
German: Fabian
Tamil: Sid
Indonesian: Heru
Sundanese: Heru
Javanese: Heru

6 Likes

Hi Rick,
Really cool!

Just a question…

How we can manage the language of the “Enum” fields?
They are all hardcoded.

Hi @Stephane_Ouellet. Are you talking about the Usersettings (Language) column?

The column pulls a list from the Translations table so you can either delete the languages that are not needed from the spreadsheet or change the “valid if” attribute to something like this:

"list(“Language A”, “Language B”, “Language C”)

No, is in the data, for Enum field type.
As you can see, all fields definition is english except the buttons selection.

My first language is french as you see!

Thank you very much

2 Likes

Oh I see. In this example if enums show as Eenglish do you want the data to get stored as French? It gets a little complicated because you probably don’t want to mix languages in the same table…

Hi Rich,

Store in the language as shown in the Enum field. I use the Enum field only for simple lists (Yes, No, N/A).
My applications will be deployed in many countries in the world and I wish to have one application for all languages.
Actually I have to manage english, french, Spanish, Finland, German.
Each country has its own database.

Thanks for your help Rich

1 Like

Sorry for the delay in getting back to you.

To do this I would create a new table “enumValues” for these enum values that has two columns.

image

Then instead of populating static enum values for the field, use a valid if formula

select(enumValues[Enum Value], [Language]=usersettings(Language))

This should then populate an enum list based on what the user’s language is.

2 Likes

Russian and Ukrainian have been verified! Thanks @Vadim!

1 Like

Hi! I’m late to this discussion but I’m interested in Japanese so I took a look. Though Japanese is my second language, I know it well enough to be able to say that most of the translations look good. Some, however, need some fixing. Here are my suggestions. Perhaps @tsuji_koichi can confirm if my suggestions are appropriate:

Home
家 --> ホーム

Are you sure?
宜しいですか? --> よろしいですか?

Are you sure you want to logout?
あなたがログアウトしてもよろしいですか?–> ログアウトしてもよろしいですか?-

Select photo source
写真を選択ソース --> 写真のソースを選択 or perhaps just 写真を選択 (Select photo)

2 Likes

I agree with your suggestion!

3 Likes

@Kirk_Masden @tsuji_koichi cool I updated those entries.

1 Like

@Kirk_Masden @tsuji_koichi
私は辻浩一に強く同意します。 あなたの翻訳は非常に適切です :hugs:

2 Likes

Hi @Rich! Just took a look at the revised version.

Since I am dealing with Japanese orthography, I should have been more explicit. The " --> " in each of the Japanese texts above was intended as an arrow. So, please replace what was before the arrow only with what came after the arrow. Thanks!

1 Like

Hi again!

The semester has just ended in Japan and I now have a bit more time to work on my app.

I’ve been enjoying customizing my menus but have noticed a few minor issues with linguistic customization:

  1. We don’t seem to be able to translate some system messages.

    This is not a big deal but if part of the idea is to avoid displaying messages that some users may find unsettling because they are unable to interpret them with confidence, more complete ability to convert system statements to other languages strikes me as a good idea. By the way, the arrow points to a period that probably isn’t necessary even in English and seems rather out of place after this Japanese text.
  2. The capitalization in the original English strikes me as inexplicably inconsistent so I have been replacing uppercase letters with lowercase ones as needed to improve consistency. For example “Add or search” only capitalizes “add” but “Take a Photo” capitalizes both “take” and “photo.”
3 Likes

fixed :slight_smile:

1 Like