2008-10-02 15 views
13

Estoy buscando introducir soporte multilingüe para una aplicación madura de CGI escrita en Perl. Originalmente, había considerado rodar mi propia solución usando un hash Perl (almacenado en el disco) para archivos de traducción, pero luego me encontré con un módulo CPAN que parece hacer justo lo que quiero (i18n).¿Cómo puedo agregar internacionalización a mi script de Perl?

¿Alguien tiene alguna experiencia con la internacionalización (específicamente el módulo i18n CPAN) en Perl? ¿El módulo i18n es el método preferido para soporte multilingüe o debería reconsiderar una solución personalizada?

Gracias

Respuesta

16

Hay un Perl Journal article en la localización del software. Le proporcionará una buena idea de lo que puede esperar al agregar soporte multilingüe. Está bellamente escrito y es gracioso.

Específicamente, el artículo está escrito por las personas que escribieron y mantienen Locale::Maketext, por lo que recomendaría ese módulo simplemente en función de la cantidad de dolor que los autores han tenido que soportar para que funcione correctamente.

+9

Su vista en gettext está desactualizada. Consulte http://rassie.org/archives/247 – Sergey

3

Si tiene tiempo, eche un vistazo a la forma en que se realiza el I18N en el marco Jifty, aunque inicialmente bastante confuso, es muy elegante y utilizable.

Sobrecargan _ para que pueda usar _("text to translate") en cualquier parte del código. Estas cadenas se traducen utilizando Locale::Maketext de forma normal.

Lo que lo hace realmente poderoso es que difieren la traducción hasta que se necesita la cadena usando Scalar::Defer para que pueda comenzar a agregar las cadenas en cualquier momento, incluso antes de saber en qué idioma se traducirán. Por ejemplo, en archivos de configuración, etc. Esto realmente hace que I18N sea fácil de usar.

+0

El uso del atajo de teclado único _() en Perl es una opción de diseño deficiente, ya que es automáticamente global. Esta es la razón por la cual [libintl-perl] (https://github.com/gflohr/libintl-perl) el marco l10n estándar para Perl usa un doble guión bajo. –

Cuestiones relacionadas