Not sure about "the scenario where every page has a 'Translate' button", but the code above could be used in a select language action to change the language to one chosen by the user at any point, all subsequent pages would be in the chosen language.I'd guess translating the current page without rerunning the code that generated it would require code outside the scope of struts to cache results - but I've only just started looking at Struts, so don't really know.
I'd also be interested in any tips on i18n as we're going to be i18nning our app at work soon. Not sure if we're going to use Struts, I'd quite like to, but it would be a lot of work for an existing webapp.It might be easier for us just to use message tags and properties files.
I had thought that the following code would set the locale of the whole webapp, but have just tried it out and it works per user session, so thanks to Rick for that.