Download pdf - GetText / Rails - FR

Transcript
Page 1: GetText / Rails - FR

GetTextI18N : internationalisation

Page 2: GetText / Rails - FR

$ finger abelar_s• EPITA MTI 2008

• Utilise Rails depuis sept.2006 (rails 1.0.?)

• Ingénieur R&D à Faveod• Nous développons et vendons la technologie Faveod Designer

• Vous permet de construire des applications complexes plus vite à partir des spécifications

• Les applications sont plus rapides, sécurisées, et de meilleure qualité

http://www.linkedin.com/in/sylvainabelard

Page 3: GetText / Rails - FR

Vue d’ensemble• Pourquoi ?

• Parce que vous voudrez utiliser plusieurs langues un jour

• GetText est un standard UNIX bien connu et maîtrisé

• Comment ?• Quelques horreurs de traducteurs

• Montre-moi du code !

• Avec quoi ?• Quelques outils autour de GetText

• Alternatives

GNU GetText: GetText’s Never Useless

Page 4: GetText / Rails - FR

Rails I18N• Simple

• Il y a toujours une valeur par défaut

• Pas de clés complexes à retenir

• Jamais de « no translation found »

• Jamais de traductions approximatives

Pourquoi sortir du standard Rails ?

Page 5: GetText / Rails - FR

LinguistiqueC’est dur.

• Un mot, une traduction ?

• Nombre, genre et cas grammatical• Le nombre a l’air simple : car/cars, mais child/children et person/people

• De nombreuses langues (surtout slaves) différencient singulier, duel et pluriel, parfois plus.

• Le genre est souvent masculin, féminin et neutre (et rarement intuitif)

• D’autres langues différencient animé et inanimé, homme, animal et chose, etc.

• Conjugaison: personne, temps, mode, voix... aspect ?• ... je crois qu’on ne va même pas essayer...

Page 6: GetText / Rails - FR

Que choisir ?• github.com/grosser/fast_gettext

• Améliorations• 3.5x plus vite et 560x moins de consommation mémoire

• thread safety

• simple, et namespace propre

• Backends• fichiers .mo et .po

• .yml

• DB

• ... codez le vôtre

Michael Grosser - FastGetText !

Page 7: GetText / Rails - FR

Setup• PO/MO files

• Ce sont des fichiers qui stockent clé et valeur

• Beaucoup d’outils disponibles, y compris un mode emacs

• Choisir la locale• À chaque utilisation, choisir la locale (en Rails, par requête le plus souvent)

• Setup

How to GetText part 1

GetText.locale = "fr"init_gettext "my_app"

I18n.supported_locales = ["en", "fr", "de", "ar", "ru"] # mieux : faites-le lui deviner en listant les fichiersI18n.default_locale = "fr" # en par défaut

Page 8: GetText / Rails - FR

Usage• La fonction « underscore »

• _("string")

• Variables, à la printf• _("string with %s") % "arg"

• _("string with %s and %s") % ["arg1", "arg2"]

• Variables nommées• _("Could not find this %{obj}") % {:obj => _("stuff")}

• Et maintenant, les cas difficiles

How to GetText part II

Page 9: GetText / Rails - FR

Astuces• Singulier / pluriel

• n_("File not found!", "%{n} files not found!", n) % {:n => n}

• Et pour les pluriels irréguliers ?"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"

• FastGettext.pluralisation_rule = lambda{|count| count > 5 ? 1 : (count > 2 ? 0 : 2)}

• Contexte• s_("File|Open") # ouvrir

• s_("Sports|Open") # open

• s_("Even|More|Contexts|Open") # traduit uniquement ‘open‘

• p_("even more bindinds", "for contexts", "open") # open

How to GetText part III

Page 10: GetText / Rails - FR

Fichiers PO• Mise à jour du PO

• rake updatepo

• Note les obsolètes, ajoute les nouvelles et propose une traduction (« fuzzy »)

• Modification du fichier # translator comments #. extracted comments #: reference #, flag

msgid "One file removed" msgid_plural "%d files removed" msgstr[0] "%d slika uklonjenih" msgstr[1] "%d slika uklonjenih" msgstr[2] "%d slika uklonjenih"

• Mise à jour des traductions effectuées• rake makemo

Les outils sont très bons pour ça.

Page 11: GetText / Rails - FR

Questions?On embauche, mais c’est le slide suivant.

http://ruby-i18n.org/wiki

http://www.gnu.org/software/gettext/manual/gettext.html


Recommended