Reminds me of an article of yore from The Perl Journal "Localizing Your Perl Programs" http://interglacial.com/tpj/13/ which discusses the reasoning behind Locale::Maketext
the point of which is that the "values" you're looking up should be able to be functions, to handle some edge cases where nothing else will do. That module isn't exactly what Darren is looking for since the keys are English strings with a little meta-language mixed in, but the rest of it is worth referencing.