Since every web frameworks use their class and different way to make localization, and some don't have it. To use L10N stuff, you need to declare a class which inherits from Locale::Maketext if your web framework doesn't handle it. And Locale::Maketext is not simple enough. You will need to use $hl->maketext everywhere.
So I am thinking about a common handler that doing L10N for most application or frameworks.
I18N::Handle is a common handler for web frameworks and applications.
I18N::Handle also provides a global locale function to make localization, you can use Gettext style locale function to make localization in every packages, the default loc function name is "_". To change the exporting loc function name , please use loc option.
The difference between I18N::Handle and Locale::Maketext is that I18N::Handle automatically does most things for you, and it provides simple API like speak, can_speak instead of get_handle, languages.
To generate po/mo files, App::I18N is an utility for this, App::I18N is a command-line tool for parsing, exporting, managing, editing, translating i18n messages. See also App::I18N.
Here is a simple usage:
More is on github.