Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Dear Qlik Community
We are using an approach very similar to the one described in this post to make our app multilingual.
However, we found that this drastically decreases the performance of dashboards up to a factor of 2-3. E.g. a dashboard with a table with 30 columns would load in 4 seconds without translation of the column titles. Adding translations increases load time to about 12 seconds.
We use the following expressions in the label:
=only({<[Language.Code]= {'Street'}>} Language.Text_$(v_Language))
=only({<[Language.Code]= {'City'}>} Language.Text_$(v_Language))
We set the language in the variable v_Language which then determines which column is used, e.g. Language.Text_EN, Language.Text_DE etc. Our datamodel is quite complex with almost 2000 fields (we are trying to improve that), but I would not expect this to be a problem for the translation. As in the linked post, our Language table is an island table.
Does anyone have an idea why this performance decrease happens and how it could be fixed?
I am using Qlik Sense Enterprise on Windows, Nov 2024 Patch 9.
Do you have translation of all columns or just the text(titles)?
I also have translation of the data, but this seems to be less of a performance issue. The main issue are the labels (I would have expected it the other way around, that the labels make a small contribution to the performance).
I made some more tests and the complex data model definitely is an issue. If I reduce the data model from 2000 to 650 fields, load time is reduced to about 4 sec. with translation / 3 sec. without (from 12 / 4 sec.).
I probably should split the app into multiple apps each with a simpler data model, but that's not an easy task.
I assume your v_Language variable is an expression like
=Minstring(Language)
Can you post your v_Language content? Confirm that you have a leading "=" in the definition.
The Language listbox and the expressions that reference should be in an alternate state, for example "LanguageState". Then reference that statename in your expressions like:
=Minstring({LanguageState}Language)
=only({LanguageState <[Language.Code]= {'Street'}>} Language.Text_$(v_Language))
Consider analyzing your App with QSDA Pro to see where the compute time is going.
-Rob