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
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
valeur par défaut • Pas de clés complexes à retenir • Jamais de « no translation found » • Jamais de traductions approximatives Pourquoi sortir du standard Rails ?
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...
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 !
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 fichiers I18n.default_locale = "fr" # en par défaut
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
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.