Hi Experts,
I’m facing a performance issue with a Canvas app. My client requires the app to support multiple languages, so I designed a Dataverse dictionary table to store language records.
My initial design was a column-based structure, meaning one row per language, and each label had its own column. Then, in the OnStart property, I would load one row into a collection and reference the corresponding column for each label. This approach was entirely for optimal performance. Of course, this sacrifices maintainability because the table would require more upkeep, so the client rejected this design.
Now, the client wants a row-based structure, meaning each column represents a language, and each label corresponds to a row record. This design is indeed easier to maintain, but in the Canvas app, I must load the entire table into a collection during OnStart, and each label’s Text property must use Lookup() to find the correct value. If one screen has 100 labels, that means 100 lookups.
Could you provide me with a best practice recommendation? What is the most appropriate way to design the table structure? Based on my calculation, I need 4 languages and about 500 labels, with a total character size of 130k. Will this collection size have a noticeable impact on performance? Thank you.