GetTextI18N : internationalisation
$ finger abelar_s                  http://www.linkedin.com/in/sylvainabelard•• EPITA MTI 2008     Utilise Rails depuis sept...
Vue d’ensemble                   GNU GetText: GetText’s Never Useless•• Pourquoi ?     Parce que vous voudrez utiliser plu...
Rails I18N                            Pourquoi sortir du standard Rails ?•• Simple     Il y a toujours une valeur par défa...
Linguistique                           C’est dur.• Un mot, une traduction ?•• Nombre, genre et cas grammatical     Le nomb...
Que choisir ?                          Michael Grosser - FastGetText !• github.com/grosser/fast_gettext•• Améliorations   ...
Setup                                       How to GetText part 1•• PO/MO files      Ce sont des fichiers qui stockent clé e...
Usage                              How to GetText part II•• La fonction « underscore »     _("string")•• Variables, à la p...
Astuces                                  How to GetText part III•• Singulier / pluriel     n_("File not found!", "%{n} fil...
Fichiers PO                          Les outils sont très bons pour ça.•• Mise à jour du PO     rake updatepo •   Note les...
Questions?                 On embauche, mais c’est le slide suivant.               http://ruby-i18n.org/wikihttp://www.gnu...
Upcoming SlideShare
Loading in...5
×

GetText / Rails

345

Published on

Translations are hard.

GetText is an often overlooked solution, but it has many advantages.

These slides are a bit old but still relevant. They have some details about translations horror stories: before choosing any I18N solution, match these against your prospective answers.

5 Comments
0 Likes
Statistics
Notes
  • @Zoé Ly De rien, je suis surpris qu'il soit encore lu après deux ans, mais après tout GetText dans Unix ça a bien 20 ans ! Merci,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Merci ! Je vais approfondir tout ça ! En tout cas merci pour ce slide !
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • http://stackoverflow.com/questions/6143547/handling-grammatical-gender-with-gettext
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @Zoé Ly le nombre est géré avec n_("texte", nombre) mais rien de "par défaut" pour le genre. On peut gérer avec les contextes "Contexte|Texte" ou p_("genre", "texte")
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Bonjour, C'est super mais du coup pour gérer le féminin, vous faites comment ?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
345
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
5
Likes
0
Embeds 0
No embeds

No notes for slide

GetText / Rails

  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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×