Как добавить интернационализацию в свой Perl script?

Я смотрю на внедрение многоязычной поддержки зрелого приложения CGI, написанного на Perl. Первоначально я рассматривал возможность переноса собственного решения с использованием хэша Perl (хранящегося на диске) для файлов перевода, но затем я наткнулся на модуль CPAN, который, как представляется, делает то, что я хочу (i18n).

Есть ли у кого-нибудь опыт интернационализации (в частности, модуль iANn CPAN) в Perl? Является ли модуль i18n предпочтительным методом многоязычной поддержки или я должен пересмотреть собственное решение?

Спасибо

Ответы

Ответ 1

Существует статья Locale::Maketext, поэтому я бы рекомендовал этот модуль просто основываться на сумме боли ясно, что авторам пришлось выдержать, чтобы они работали правильно.

Ответ 2

См. http://rassie.org/archives/247 для сравнения современного GNU gettext, Locale:: Maketext и Locale:: TextDomain.

Ответ 4

Если у вас есть время, взгляните на то, как I18N выполняется в Jifty framework, хотя первоначально довольно путайте его очень элегантно и удобно.

Они перегружают _, чтобы вы могли использовать _("text to translate") в любом месте кода. Эти строки затем переводятся с использованием Locale:: Maketext как обычно.

Что делает его действительно мощным, так это то, что они переносят перевод до тех пор, пока строка не понадобится, используя Scalar:: Defer, чтобы вы могли начать добавлять строки в любое время, даже до того, как вы узнаете, на каком языке они будут переведены. Например, в конфигурационных файлах и т.д. Это действительно упрощает работу с I18N.