Actually Doc-Doc method seem good.
While I have not try the following, you could try it
You could make this quite painless.
Create a VI utility that inspect your VIs to be translated. Get all controls and terminal references, get their labels and or captions. Create the Logic you want here. example: get caption only if label is empty. Then you can connect to an online service translator (check: http://www.google.com/search?hl=en&ie=UTF-8&q=translate&btnG=Google+Search) to automatically do the label translation. Save everything in a table as described by Doc-Doc (and inspect the result later to be sure it is accurate enough).
Now for the runtime switch to a new language. Put a hidden control or something equivalent on every VIs that should be translat
ed. Now create a new tool that will monitor every VI in memory, for example every 1 second, and will cache a list of VI that has that hidden control flag. When it found one VIs with this flag this tool should translate the VI, if required, using the previously created table. You can even be more fancy. If you have the hidden flag on a VI and by chance you dont have the associated translation table, you can do a translation on the fly by connecting to a translation website on the internet.
This method will require some up front time to develop the require tools but it should be fairly easy to integrate in the final application.
Once again, I have not try this, but it might work
PJM