1 Tout d'abord il faut installer ruby-gettext

une ligne de commande de ce genre devrait suffire :

sudo gem install gettext

sur mon Mac OS X, j'utilise la version 1.3.0 ruby.



2 On va créer notre application :

creation de l'application :

rails monappli

et configurer l'accés à la Base de Données :

modifier les lignes : (database / username / password) du fichier config/database.yml

jusqu'ici rien de particulier.

3 UTF-8

On va configurer notre application pour qu'elle utilise l'utf-8 :

on crée un fichier config/custom_environment.rb comment celui ci :

# --
# ma configuration

# support utf-8
$KCODE = 'u'
require 'jcode'
# --

on ajoute ce fichier de configuration à la configuration de l'application.

ajouter a la fin du fichier config/environment.rb, les lignes suivantes :
# j'ajoute ma configuration :
require 'custom_environment.rb'

Voila notre application utilisera l'utf-8. Attention de ne pas oublier d'utiliser aussi l'utf-8 dans la base de données.

4 les outils gettext.

gettext utilise des fichiers .po qui contiennent toutes les chaines de caratères à traduire et traduite. A partir de ces fichiers, on génère des fichiers .mo qui sont permettent l'internationnalisation dynamique de l'application. On a donc 2 outils : un outils de creation/mise a jour des fichiers .po, et un outils de generation des fichiers .mo. (j'explique plus bas comment les utiliser)

On ajoute le fichier gettext.rake dans le dossier lib/tasks

# -
#gettext.rake

require 'gettext/utils'

desc "Create mo-files for L10n" 
task :makemo do
  GetText.create_mofiles(true, "po", "locale")
end

desc "Update pot/po files to match new version." 
task :updatepo do
  MY_APP_TEXT_DOMAIN = "monappli" 
  MY_APP_VERSION     = "monappli 0.1.0" 
  GetText.update_pofiles(MY_APP_TEXT_DOMAIN, 
                         Dir.glob("{app,lib}/**/*.{rb,rhtml}"), 
                         MY_APP_VERSION)
end
# -

et, bien sur, on personnalise ce fichier :MY_APP_TEXT_DOMAIN, MY_APP_VERSION.

5 l'arborescence po :

cette arborescence doit contenir tous les fichiers po, un pour chaque langue. on a un dossier po/ qui contient un sous dossier pour chaque langue. Dans chaque sous dossier il y a dans notre cas un fichier po.

d'abord on crée le fichier inital avec les commande suivante :

rake updatepo

cette commande crée le dossier po/ et le fichier po/monappli.pot

on va creer ensuite un dossier pour le francais :

on crée un dossier op/fr/ et on copie le fichier po/monappli.pot dans po/fr/ avec le nom monappli.po (sans le t).

notre arborescence po et prête.

6 Utilisation de gettext par l'application rails.

Pour que l'application rails utilise gettext il faut ajouter les lignes suivantes dans le fichier app/controllers/application.rb :

# Filters added to this controller will be run for all controllers in the application.
# Likewise, all the methods added will be available for all controllers.

require 'gettext/rails'
class ApplicationController < ActionController::Base

 init_gettext "monappli" # nom de domaine gettext
end

maintenant rails sait que nous utilisons gettext

7 Programmer l' application avec gettext

on peut maintenant commencer à developper notre application avec gettext.

les chaines à traduire :

dans tous nos fichiers sources il faut remplacer les chaines de la manière suivante :

'example'

par

_('example')

le fichier po :

on met a jour ensuite les fichiers .po avec la commande suivante :

rake updatepo

traduction :

on edite le fichier po/fr/monappli.po, et pour chaque chaine on ajoute le traduction:

msgid "example"
msgstr ""

devient :

msgid "example"
msgstr "exemple"

creation du fichier mo :

une fois la traduction finie, on génère le fichier .mo par la commande :

rake makemo

Et voila ! notre application est prête a fonctionner en francais.

il ne faut pas oublie de mettre a jour le fichier po, et regenerer le fichier mo a chaque fois.

C'est la fin de la première partie sur rails et gettext.