Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
Charles_Bannon
Employee
Employee

Today’s corporate environment is global. QlikView application developers are required to support many regions and many languages. So how does a QlikView application developer handle multiple languages?  Well, that depends on how the data is captured and the overall goal of the application developer. Let’s look at two scenarios.

Scenario 1:  The developer only needs to translate the labels and textboxes within the application and not the actual data.  blog picture 1.png

  1. Create a translation spreadsheet that contains an index column to be used for reference and columns for every language that each label and text entry that needs to be translated.
  2. Fill in the English language column with the text to be translated and have translators fill out their language. 
  3. In the script load the translation spreadsheet and create an inline table that contains all of the language translations. Then create a variable, say vDataLanguage,  that reads the Language field.
  4. Using set analysis, create an expression that references the index number and the language to display

=Only({<Index={12}>} [$(=vDataLanguage)]) 

for all textbox and object captions that need to be translated.   

Scenario 2:  The data from which the QlikView application developer is developing is recorded in English but he/she needs to have some of the actual data translated into other languages.

blog picture 2.png

  1. The first thing that he/she needs to do is determine the fields that need to be translated and create a translation spreadsheet that contains a worksheet for each of the fields to be translated. For example, we need to translate the Industry data. Now we need to load the data translation file into QlikView as a Mapping Load for each language. For this example we need to translate into German and French so we’ll create a mapping file for French_Industry and a mapping file for German_Industry.
  2. Create an inline table that contains all of the language translations.
  3. Create a variable that reads the Language field (vDataLanguage). 
  4. In the script, find the Industry Field that we need to translate.  Using the Applymap function we can translate the English data into the different languages and be sure to name the translated field as Fieldname_Language (e.g. Industry_French) .
  5. We now need to create a variable for each translated field. So for industry we’ll create vIndustry. The expression in vIndustry is  
         =chr(91)&'Industry' &chr(95) & '$(vDataLanguage)' & chr(93) .
  6. Now to get the correct language to display in a list box you need a calculated dimension using this expression,  which is

            =$(vIndustry).

That’s it! Easy, right? Well, it is a bit time consuming if you are trying to translate data in fields but translating text and labels is really not that difficult. I created a technical overview that walks you through the two scenarios mentioned in this blog as well as a third scenario which can be found here. This resource includes a How-To, sample data files and 2 QVWs.

Good luck with the translations!  Lycka till med översättningarna!  翻訳で頑張ってください!

21 Comments
beck_bakytbek
Master
Master

Thanks for sharing

very helpful

0 Likes
5,640 Views
Anonymous
Not applicable

Awesome, great job! These stupid [...] couldn't let me sleep.

0 Likes
5,640 Views
Not applicable

Thanks! Very helpful!

Is there a way to do this in QlikSense? It seems like QlikSense is not recognizing the variable in the filter as a field name.

Would be happy to see your thoughts about this!

0 Likes
5,560 Views
Not applicable

In Qliksense 3.2 




=Only({<Id={2}>} [$(=vLanguage)])  returns "-" ,

=Only( {< [Id] = {2} >} $(=vLanguage))  returns word "Japanese"


=Only( {< Id = {2} >} [Japanese])  returns the  correctly translated word


Any suggestion on where I am wrong?



0 Likes
5,560 Views
anderseriksson
Partner - Specialist
Partner - Specialist

We need to see your definition of vLanguage also.
Probably your problem is with the variable.

And why do you have the '=' in your dollar expansion?

That indicates your variable holds an expression that should be evaluated before being copied into context.

0 Likes
5,560 Views
Not applicable

Hello

Set vLanguage= if(isNull(Language  ),'English',Language);

=Only({<Id={2}>} [$(vLanguage)]) Also Returns "-"

0 Likes
5,560 Views
anderseriksson
Partner - Specialist
Partner - Specialist

Can't spot the problem, run in as an expression in a table without a label and you will see the expanded expression in the column header. That might tell you the problem.

0 Likes
5,560 Views
rohitk1609
Master
Master

Hi Charles,

Dynamic labeling is not present in Qlik Sense, How to create same solution in Qlik Sense then ?

5,560 Views
santiago_respane
Specialist
Specialist

Thanks for sharing!

Will try!

Regards,

0 Likes
5,505 Views
professionalser
Partner - Contributor
Partner - Contributor

Hi

Please, someone, find the solution or an example of how to create the same solution in Qlik Sense?

Thanks

Best regards

0 Likes
5,359 Views