Saw earlier on twitter a post by Thomas Bolz (@TeaBeeOh) pertaining a particular issue he's currently facing: updating i18n content defined on an FXML file without restarting. Sadly for him the short answer is that it can't be done with what FXML and the JavaFX 2.0 APIs provide out of the box, that is, setting a ResourceBundle and changing the application's Locale as a minimum.
This task ought to be simple with Griffon, and as it turns out it is . The first step is to create a sample application using the JavaFX archetype
Next fire up SceneBuilder and create a simple layout with one label and 2 buttons. Each component should have their id property set. Here's the FXML file I came up with
Name it simple.fxml and place it under griffon-app/resources. Next open up griffon-app/views/simple/SimpleView.groovy and tweak the code so that it looks like the following snippet
The fxml node has been configured to read the FXML file. Make a special note of the children nodes used within fxml, these are the controls created in SceneBuilder! Here we are setting up a property binding to the Model and adding a pair of EventHandlers, one to each button. What's going to happen next is setting up the Model (griffon-app/models/simple/SimpleModel.groovy)
And the Controller (griffon-app/controllers/simple/SimpleController.groovy)
Great. All that's left to do is write the i18n resource files, one for English and another for Spanish. We'll need a file named messages.properties and another named messages_es.properties, both located inside griffon-app/i18n.
Launching the application results in the following screen

Clicking on the 'Spanish' button results in

Cool! The trick is then to use property bindings where required and react to the application's locale change, a trivial matter given that all Griffon applications trigger an event whenever their Locale changes value; compound that with the excellent I18N support found in Griffon 1.1.0 and you got a recipe for success and fun!
Keep on Groovying!