GetText / Rails - FR

549 views
506 views

Published on

Traduire une application n'est pas facile.

GetText est une solution efficace et robuste, souvent ignorée.

Ces slides datent un peu mais restent pertinents. J'y mentionne quelques casse-têtes récurrents : avant de choisir une solution d'I18N, vérifiez bien que vos alternatives gèrent ces cas.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
549
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

GetText / Rails - FR

  1. 1. GetTextI18N : internationalisation
  2. 2. $ finger abelar_s http://www.linkedin.com/in/sylvainabelard•• 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é
  3. 3. Vue d’ensemble GNU GetText: GetText’s Never Useless•• 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
  4. 4. Rails I18N Pourquoi sortir du standard Rails ?•• 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
  5. 5. Linguistique C’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...
  6. 6. Que choisir ? Michael Grosser - FastGetText !• 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
  7. 7. Setup How to GetText part 1•• 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 GetText.locale = "fr" init_gettext "my_app" I18n.supported_locales = ["en", "fr", "de", "ar", "ru"] # mieux : faites-le lui deviner en listant les fichiers I18n.default_locale = "fr" # en par défaut
  8. 8. Usage How to GetText part II•• 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
  9. 9. Astuces How to GetText part III•• 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
  10. 10. Fichiers PO Les outils sont très bons pour ça.•• 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
  11. 11. Questions? On embauche, mais c’est le slide suivant. http://ruby-i18n.org/wikihttp://www.gnu.org/software/gettext/manual/gettext.html

×