Hi all,

The OutSystems Platform has built-in support for Multilingual applications. However, the translation process itself is done outside the Platform with the eventual aid of expert localization tools. One of such tools is Passolo from PASS Engineering whose web site has a lot of resources available for you to use, namely:If you use Multilingual frequently, consider consulting these resources to increase your productivity and taking a look at the How to Use Multilingual support technical note for in-depth details on how to use Multilingual in the OutSystems Platform.

Now, as users usually find some obstacles when using Passolo to perform translations, I'll post here solutions for the gathered common problems:

How can I locate in Service Studio the Resources that appear in Passolo to translate?

Copy the translation ID in Passolo and do a Find in Service Studio searching for the Resource Name and selecting the “Find Resource by Name” option. For instance, if the Passolo ID is ” Main_Flow / Input_Validations:widget429.761105491.1” search for “widget429”. Note that Passolo 6.0 and higher allows you to copy the translation IDs to the clipboard.

How can I avoid all the “(only visible in Service Studio)” Resources to appear in Passolo for translation?

These Resources will only be exported if you use OmlResources with the –generateAll option. To avoid exporting these Resources, use the –generate command line option.

There are a lot of Resources I don’t want to translate but they are always in the way. How can I avoid this?

Mark those Resources as translated. This way they will both disappear and also help you identifying newer or changed Resources caused by evolutions in your eSpace.

There are a lot of Resources either from a Screen or with specific characters that I want to ignore. How can I do this?

Passolo 6.0 and higher allow you to filter Resources according to some criteria over its attributes. In Passolo’s toolbar or View menu, select the Filter option and then add a custom filter for strings that match a given expression (last option of the dialog). You can filter strings by equal, different, contains… For further information check Passolo’s documentation. Once you have filtered those strings you can either mark them as translated or simply ignore them. Tough you can use advanced macros to filter translations using, for instance, regular expressions, follows a simple example of an expression that filters strings you probably don’t want to translate:

instr(.Text, "only visible in Service Studio" Or instr(.Text, "_") > 0 (I was unable to test this with the Trial version of Passolo 6.0. Though the feature is there, it does nothing.)

My eSpaces always have several Resources with equal translations, namely, the eSpace properties and validation messages. How can I avoid having to translate them always for all eSpaces?

Create an empty eSpace, translate those common properties and save its .resX files somewhere to use as templates. Before starting a translation, use a common text diff and merge program like CSDiff or Araxis to merge into your eSpace .resX files the templates previously saved. Beware not to change the Resources Names, merge only the translation texts. Another preferable option is to have a clean eSpace with those translations and use it to start your development by cloning such clean eSpace.

Happy translations!

Rodrigo Castelo
Hi all,

One remark on the question "How can I locate in Service Studio the Resources that appear in Passolo to translate?"

Note that to search on the resource in Service Studio, you have to search for the whole key, so widget429.761105491.1 in the example. Also, if working with Passolo version 5.0, it would be possible to use copy-paste by opening the resX file with Notepad.
Here is another document that explains the usage of the Passolo "client" side only; this can be used by people with a probable non-technical profile, who only need to know about the translation itself, for example because the translation is done by the customer.