Internationalization can be hard. Not only is it hard from a programming perspective, it is can be hard from a management perspective.
The recommended approach in Java is to do the following:
This can work reasonably well, and there are certainly enough people making due with it; however, it has many shortcomings:
This library is intended to address these problems with a multi-faceted approach: