One comment I'd like to add to improve performance is to opt for a LookUp within an AddColumns function which defines a collection rather than having a LookUp at a specific control. There is always a balance with this, but if you have a scenario where you are committing hundreds of lookups when you change a dropdown, or click on an item in a gallery, or potentially in your case where you are localizing your app to a specific language, you will see significant performance increase by lifting up the lookup function to a collection.
For example, consider the following:
GLOBAL_VARIABLE:
g_selected_language_value = Text(5)
GALLERY.Items:
c_terminology
LABEL_1.Text
LookUp(c_language_translations, terminlogy_id.Value = Text(ThisItem.ID) && language = g_selected_language_value).Title
In this scenario, you have a global variable which defines the language you are translating to, a collection of terminology, and a collection of translations which you are looking up against in a label in your gallery. If you only show a few items translated, this isn't too bad. But let's say instead that you are localizing your app, which every text control is doing a lookup to get a value. This will yield significant overhead on your app.
You may instead be better off to do something like this:
GLOBAL_VARIABLE:
g_selected_language_value = Text(5)
GALLERY.Items:
AddColumns(c_terminology, "sLanguageTitle", LookUp(c_language_translations, terminlogy_id.Value = Text(c_terminology[@ID]) && language = g_selected_language_value).Title
LABEL_1.Text
ThisItem.sLanguageTitle
What this achieves is lifting up the LookUp of data to the collection which drives your gallery (or your application), allowing all child controls to access the text they need without a LookUp. I have implemented this pattern in many applications and the performance improvement is incredible. You still need to commit the Lookup, but you only do it once and when the user would expect to have a delay (like when clicking a button).