Your SlideShare is downloading. ×
0
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
GetText / Rails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

GetText / Rails

299

Published on

Translations are hard. …

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
299
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
5
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. GetTextI18N : internationalisation
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Questions? On embauche, mais c’est le slide suivant. http://ruby-i18n.org/wikihttp://www.gnu.org/software/gettext/manual/gettext.html

×