There are a couple of schools of thought on this process.
- Use the VI methods Import Strings and Export Strings to set and get the string values from a VI.
- Use custom methods to set and get strings for every control and block diagram constant you care about (controls have VI server methods to get their strings - sometimes well hidden). Use this to create an indexed string table with one entry for each control/string.
In practice, I found the latter method easier, even with the higher up-front cost, because it gave me the control and ease-of-maintenance I wanted in integrating it with the documentation (developer ease-of-use is another matter). When you design your system, make sure you take into account the full round trip experience - create the strings, translate them, store in some sort of string table, read back during execution. Think about how you want to do maintenance on the VIs and what implications this has for your string tables and translations.
For example, you want to add a new control to your VI. In method one, this would mean exporting the strings again, extracting the strings you want to translate, extracting the new strings from this list, translating, creating the new string file, then using it. In method 2, this would mean adding another entry to your string tables. Both methods can be automated to a high degree.
Bottom line - you can do this. It isn't particularly hard, but can take a fair amount of planning before you try to execute.