# APEX 26.1 New Features.  Message-Based App Translations

Creation of a parallel translated app is no longer the only way to handle multiple languages in APEX. Now under Globalization Attributes, we can select "Text Message-Based" as Translation Method.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/e8ba7b4f-75fc-49a0-8300-8a6382d0456c.png align="center")

Once that option is activated, We can navigate to Shared Components -> Application Translations

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/6de50ca1-bc35-4717-bc37-5bf12d03de2a.png align="center")

And click he "Add Language" button.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/20b33648-e925-4da6-b5d7-6cf418977488.png align="center")

Once you select a Language, it will apear below. I just picked a group of languages.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/be309a0f-5dc2-43bf-af57-5b83444979d0.png align="center")

Selecting one of the languages by clicking on the "Text Messages" number, we can see all the messages.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/56fb25f8-f7d9-4136-b0ad-27f3d25b992a.png align="center")

Using the first column we can select a Text Message to modify the actual value for that language.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/1d0a8d14-0fd2-4639-b982-5890e939ed80.png align="center")

In this page, we can also use the "Grid Edit" option, so we don't have to modify one record at the time.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/0c546246-5dd9-4b40-b7a7-1e542221e380.png align="center")

This can be useful to update specific words and phrases.

Becase this is a new app, and to test how easy this can be, I'm going to export all Text Messages in one language in XLIFF format and check how we can translate multiple messages at the time.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/73c23d18-5e90-46df-8778-0ad4375bdd0d.png align="center")

Now I'll just click Export and the file is downloaded.

Why this format? because it looks a lot as XML, so maybe I could ask an agent to translate it for me.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/dbc8e3a4-1e8a-46e4-8eba-d2730e48fe6c.png align="center")

Done, notice that it said "Placeholder phrases were left unchanged as requested" because in the prompt I said: "read only the current file. Translate all text inside a target tag to the target language of the file (Spanish), except for those words with a leading "%" like "%MAX\_ROW\_COUNT"

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/1183e0e1-58b4-4f24-8a1c-e8e13fca288d.png align="center")

So I keep this placeholders:

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/e1ef4b5d-8498-4bd0-93bf-83ff188f528d.png align="center")

Now, let's import back these messages, using the import tool

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/f27ed3c7-4bbb-47bc-9886-8c2f7aa888b9.png align="center")

We just need to Drag and Drop the file here, and click Import.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/fb6367cf-ba57-48b7-b124-238d5a241334.png align="center")

Now, I'm going to check Text Messages for Spanish again, and I can see the translated values.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/ea2fc3c3-5382-49cf-9b8b-71984105577a.png align="center")

To change from the app language, I'm using a simple method (There are more). First I created an application item called FSP\_LANGUAGE\_PREFERENCE

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/052e90cb-5198-4da8-9dad-bad51c83e0d8.png align="center")

Then, Added 3 new entries to the Navigation Bar List. One master "Language" entry with target type "URL" and target value "#" and 2 more for the languages, in this case English and Spanish, pointing to a page in the Application but page target is set to &APP\_PAGE\_ID. (current page)

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/8406e44a-c5e6-4b4e-a50e-de915f924c4c.png align="center")

Request is set to "LANG" and they set a value for the item FSP\_LANGUAGE\_PREFERENCE. "es" for Spanish and "en" for English.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/7b0c8a47-cb05-4a20-b398-afa1ba8d1cbc.png align="center")

Finally, under Shared Components -> Globalization Attributes, set the "Translation Language Derived From" value to: Item Preference.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/e19bd3af-0350-40ff-aafe-57084949bd69.png align="center")

Going back to my application Share components, Navigation Menu. I can see the Name column values were changed to Text Message format.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/6c15d0be-f8cf-4881-991f-9738a19a0ce6.png align="center")

Ok! now I can change the language of the APP.

![](https://cdn.hashnode.com/uploads/covers/6499b7e5318d636a22fc241e/6b9c6ceb-e9bf-4c48-85e3-5f39d1d306ef.png align="center")

Once this is in place, I can keep adding components to my app and translate it to several languages without the need of dealing with multiple application copies. That simplifies the way we do it right now and makes the maintenance process a lot simpler and faster.
