I function much like ShaunR. I have a text file translation (spreadsheet): the first column corresponds to tags (full names in my case), the second column is the Language 1 (French), the third column is the language 2 (English), etc.. When the main VI starts, it reads this text file and the default language (first line of the spreadsheet file). The file is transfered in a 3D array. The cell "i,0,0" contains a tag associated with a particular VI (a VI who needs translation).
When I call a VI, if translation is needed, I send to him the corresponding 2D array.
This part is not included in the attachment.
For all VIS who need translation, I read the references of the controls (visible in the pane). I search in the 2D array to find the tag and I write the text in the proper caption, ring text, tab caption, XY Graph axes, etc.
This second part is included in the attachment.