I just added a paragraph to the test-driven development page about my approach to rendering the form.
It may be too late for your app at this point, but I mention anyway, it could help you in future apps.
With my approach components don’t need to know each other because they all show what’s in the global singleton. So in your example, when you type something on a textbox, the textbox immediately updates a property of the singleton. When you click on the translate button, the button calls the translate()
method of the singleton, then refreshes the whole form. When the form refreshes reads the data from the singleton that has already been translated.