Localize an application (how-to)
The Localization feature in Flowfactory lets you build multilingual apps by defining supported languages and managing translated terms for use in views and workflows. You can easily add and update translations without changing your app’s logic. In GO, you set the language your application should run in, ensuring users see the app in their preferred language for a seamless experience. Selecting a language for an app also affects display of dates, numeric values etc. so that it matches the region of the locale.
In this how to article we will demonstrate this functionality with a simple todo app that will be available in Swedish and English.
Adding locales
The languages that your app support are determined by the locales that you have added to your app. By default the app runs in English US (en-US) locale.
To add a new one you start studio and select ribbon menu Localization and then click Locales > Show.
Click Add locale to add a new one.
Terms and translations
In Flowfactory, Terms are used to define words or sentences that need translation. Each term can have translations for all supported languages in your app. When you reference a term in views, workflows, or other parts of the application, the corresponding translation is displayed based on the language set for the app.
Managing
To manage the terms and tranlsations go to the ribbon menu Localization and click Translations > Show.
At the top of the page there is a drop down control that can switch between the different locales that you have added.
Beneath that is a list of all terms that should be available in the application. For each term there is a neutral translation which is used if no language specific one is provided.
To simplify the translation there is an export and import function available that exports all terms to an Excel file. This file could then be used to translate all terms with for instance ChatGPT or some other tool. Add translations into the Translation column and then import the file to update all terms in the app.
Note: As of Aug 6, 2025 there is an issue with import terms function so translated terms needs to be manually entered into Studio.
Using in Entity Model
We added some additional terms to our app and we now want to use these as Display Name for our entities.
In the Entity designer there is a drop down available for the Display Name input field. Click this to show a list of translations. By double clicking a term in the list you insert a reference to it.
Note that you can mix both static content and translations. A reference to a translation is written like ${Translation.<Term Name>}
The completed model looks like this
Using in Views
Terms are referenced in the same way when used in views for control labels. Right click a control and select Insert Translation. Then double click a term in the list and the label text is replaced with the clicked term. You can mix translated and static content by manually editing the text.
You can also use translations in placeholder text and label content. Right click the input field and select Insert Translation. Then you can insert translated text the same way as for control labels.
This can also be used for commands when editing App Navigation.
Using in Workflows
Translations are used the same way in Workflows. For example we want to translate the confirm message before deleting a todo in our app. Right click the Message input for the Show message box activity and select Insert Translation.
Then you can also translate the Command caption to ensure that the buttons that reference this Workflow are translated.
Using from Custom Code
There is a Global Service in the platform that provides functionality to retrieve translations from custom code. Here is a simple example that shows how to retrieve a translation.
public class UseTranslationActivity : WorkflowActivityBase
{
public UseTranslationActivity(IRootEntity rootEntity, ContextBase context, EntityState initialState) : base(rootEntity, context, initialState)
{
}
public override void Initialize()
{
}
protected override void ExecuteCore(WorkflowContext workflowContext)
{
var translationService = UserWorkingSet.GlobalServices.TranslationsService;
var header = translationService.GetTranslationFor("Delete");
var message = translationService.GetTranslationFor("Delete_Confirm");
var result = UserWorkingSet.UserServices.UserMessageService.Show(
message,
header,
Perfedge.Core.Messages.MessageButtons.YesNo,
Perfedge.Core.Messages.MessageType.Info);
}
protected override void ValidateCore()
{
}
}Specifying locale for instance in GO
You set which locale your app should run in from GO. Go to your project in GO and then click Project Settings to set the default which is used in test sessions and for test and customer apps if not set.
Click Set Language and select the desired language from the dialog.
Here we can see what are app looks like in our two different languages.