Ответ 1
Существует статья Locale::Maketext
, поэтому я бы рекомендовал этот модуль просто основываться на сумме боли ясно, что авторам пришлось выдержать, чтобы они работали правильно.
Я смотрю на внедрение многоязычной поддержки зрелого приложения CGI, написанного на Perl. Первоначально я рассматривал возможность переноса собственного решения с использованием хэша Perl (хранящегося на диске) для файлов перевода, но затем я наткнулся на модуль CPAN, который, как представляется, делает то, что я хочу (i18n).
Есть ли у кого-нибудь опыт интернационализации (в частности, модуль iANn CPAN) в Perl? Является ли модуль i18n предпочтительным методом многоязычной поддержки или я должен пересмотреть собственное решение?
Спасибо
Существует статья Locale::Maketext
, поэтому я бы рекомендовал этот модуль просто основываться на сумме боли ясно, что авторам пришлось выдержать, чтобы они работали правильно.
См. http://rassie.org/archives/247 для сравнения современного GNU gettext, Locale:: Maketext и Locale:: TextDomain.
В ответ на мой вопрос об этом один из комментариев предложил прочитать в этой статье о локализации Perl-кода.
Если у вас есть время, взгляните на то, как I18N выполняется в Jifty framework, хотя первоначально довольно путайте его очень элегантно и удобно.
Они перегружают _
, чтобы вы могли использовать _("text to translate")
в любом месте кода. Эти строки затем переводятся с использованием Locale:: Maketext как обычно.
Что делает его действительно мощным, так это то, что они переносят перевод до тех пор, пока строка не понадобится, используя Scalar:: Defer, чтобы вы могли начать добавлять строки в любое время, даже до того, как вы узнаете, на каком языке они будут переведены. Например, в конфигурационных файлах и т.д. Это действительно упрощает работу с I18N.