Если у вас есть время, взгляните на способ, которым I18N работает в Jifty платформе - хотя вначале он довольно запутанный, он очень элегантен и удобен в использовании.
Они перегружают _
, так что вы можете использовать _("text to translate")
в любом месте кода. Затем эти строки переводятся с использованием Locale :: Maketext как обычно.
Что делает его действительно мощным, так это то, что они откладывают перевод до необходимой строки, используя Scalar :: Defer , так что вы можете начать добавлять строки в любое время, даже до того, как узнаете, на каком языке они будут быть переведены на. Например, в конфигурационных файлах и т. Д. Это действительно облегчает работу с I18N.