Gettext izar en Ruby on Rails (RoR)
Ruby on Rails é un contorno feito para traballar en inglés. O problema chega cando o noso cliente só fala galego (ou zulú) e quere o aplicativo, como é lóxico, no seu propio idioma.
E agora como traducimos as datas? E os formatos de moeda? Preguntas como estas xa teñen solución. Imos utilizar Gettext, a biblioteca GNU de localización de software por excelencia, e Localize, o plugin escrito por Ramon Salvadó, Miquel Ibero e Pau Colomer que nos permitirá manexar as funcións de Gettext desde o noso aplicativo RoR.
Contenido
Instalación da xema Gettext
Pasemos á acción. O primeiro é instalar a xema Gettext:
sudo gem install gettext
Instalación do engadido Gettext Localize
A continuación, instalamos o engadido Gettext Localize no noso proxecto via github:
git clone git://github.com/rsalvado/gettext_localize.git vendor/plugins/gettext_localize
Agora temos que localizar todo o texto que queremos que sexa traducible e marcalo coa seguinte sintaxe:
_("text to translate")
Xerar a plantilla POT
Agora temos que xerar o fichero POT, o modelo base a partir da cal poderanse realizar todas as traducións. Imos ao terminal e escribimos:
rake gettext:updatepo
Si todo foi ben, veremos un novo cartafol no noso aplicativo co fichero POT dentro del:
po/nome_aplicativo.pot.
Xerar o ficheiro de tradución PO
Dentro dese cartafol temos que crear un ficheiro po/lang1/nome_aplicativo.po para cada tradución, onde lang1 é o ISO do idioma destino. Por exemplo, para a nosa tradución ao galego, o ficheiro será po/gl/nome_aplicativo.po. Para a tradución ao alemán o fichero será po/de/nome_aplicativo.po. E así sucesivamente.
Xerar o binario MO
Unha vez fixemos as traducións correspondentes co noso editor preferido (podemos facelo con Poedit ou con calquera outro como Lokalize ou Gtranslator etc...), imos de novo ao terminal e escribimos:
rake gettext:makemo
E iso é todo.
Gettext Localize foi probado cos seguintes idiomas: galego, catalán, español, inglés, francés e alemán. Para configurar novos idiomas, cambiar a configuración predeterminada, etc..., consultaremos a documentación que vén co plugin.