I don’t know about the easy plug-and-play solution for this, so you probably have to implement it yourself - plan to spend a lot of time just by going over how the localization functions of struts 2 (and XWork) are. The key will probably be to provide your own implementation of com.opensymphony.xwork2.TextProvider (and say that struts use it, bean> tag in struts.xml). I can come up with at least two ways to fit this into a common architecture:
Ask your TextProvider implementation to directly access the database. In the spirit of YAGNI, this is probably the best way to get started (you can always reorganize later if necessary).
Java ResourceBundle, XWork, , , , .