Internationalisation etlocalisation avecZend FrameworkMickaël PerraudContributeur Zend FrameworkResponsable documentation ...
Mickael Perraud       Contributeur ZF depuis 2007       Responsable documentation française       Travaille sur laide à la...
Quallons-nous voir aujourdhui ?3                 © All rights reserved. Zend Technologies, Inc.
Plan    • Internationalisation (I18n)           Généralités           Zend Framework et I18n    • Traduction           ...
Internationalisation (I18N)5                 © All rights reserved. Zend Technologies, Inc.
Généralités – I18n vs L10n                           Tout le monde ne parle pas anglais !    • Internationalisation vs. Lo...
Généralités – Quest-ce quune locale ?    • Locale         Locale, le point central pour la L10n         Langue + Région ...
Zend Framework et I18n – Les classes                                                                                      ...
Zend Framework et I18n – Les classes    • Zend_Currency         Gestion de monnaies localisées    • Zend_Date         Ge...
Traduction avec Zend Framework10               © All rights reserved. Zend Technologies, Inc.
Généralités     • Comment fonctionne la traduction         Concept et processus     • Fichiers sources         Création ...
Comment fonctionne la traduction     • Toutes les langues sont différentes         Il faut fournir à votre utilisateur un...
Fichiers sources – Concept des adaptateurs     • Concept des adaptateurs         Multiples types de source supportés     ...
Fichiers sources – Adaptateurs         Array         Csv         Gettext         Ini         Qt         Tbx        ...
Fichiers sources – Adaptateur Array                      return array(                          Original content => Transl...
Fichier sources – Adaptateur CSV                    “Original content”;”Translated content”                    “Another co...
Fichiers sources – Adaptateurs INI                    Original_content = “Translated content”                    Another_c...
Fichiers sources – Adaptateur Gettext                     FORMAT BINAIRES (fichiers *.mo)… *.po nest pas Gettext     • Pou...
Fichiers sources – Adaptateur TMX                    ** XML HEADERS **                    <tu tuid=Message 1>             ...
Exemples concrets20               © All rights reserved. Zend Technologies, Inc.
Traduisez-moi – Exemple dutilisation                    $trans = new Zend_Translate(                        array(adapter ...
Traduisez-moi – Exemple dutilisation                    $trans = new Zend_Translate(                        array(adapter ...
Traduisez moi – Exemple dutilisation                    $trans = new Zend_Translate(                        array(adapter ...
Traduisez-moi – Exemple dutilisation                    $trans = new Zend_Translate(                        array(adapter ...
Traduisez-moi – Exemple dutilisation                    $trans = new Zend_Translate(                        array(adapter ...
Traduisez-moi – Exemple dutilisation                    $trans = new Zend_Translate(                        array(adapter ...
Traduisez-moi – Exemple dutilisation                   /language                   /language/en_GB                   /lang...
Traduisez-moi – Exemple dutilisation                   /language                   /language/dir/                   /langu...
Traduisez-moi – Aide de vue                        $this->translate(I said hello);                        $this->translate...
Traduisez-moi – Traductions dynamiques              $this->translate("Pay %1$s euro", $money);              $this->transla...
Autres composants – Le registre                    $translate = new Zend_Translate(/*...*/);                    Zend_Regis...
Autres composants – Application                    resources.translate.adapter = “array“;                    resources.tra...
Pour aller plus loin – Traduction des pluriels                    $translate->plural(Car, Cars, 2);                    $tr...
Pour aller plus loin – Traduction des pluriels                 $this->translate(array(%1$s Car, %1$s Cars, $nb));         ...
Pour aller plus loin – Traduction des pluriels                $this->translate(array(Singular, Plural1, Plural2, 2));     ...
Pour aller plus loin – Traduction des pluriels     Les règles plurielles sont supportées par :                          Ma...
Pour aller plus loin – Performance         Cache… cache… cache         • Règle 1: utilisez un cache !!!37   Working exampl...
Pour aller plus loin – Performance         Cache… cache… cache         • Règle 1: utilisez un cache !!!         • Règle 2:...
Pour allez plus loin – Performance         Cache… cache… cache         • Règle 1: utilisez un cache !!!         • Règle 2:...
Pour aller plus loin – Performance         Caching… caching… caching         • Règle 1: utilisez un cache !!!         • Rè...
Résumé     La traduction avec Zend_Translate est         Simple à utiliser         Facile à mettre en oeuvre         In...
Merci        Des questions ?           Talks : http://joind.in/event/view/2504           Slideshare : http://www.slideshar...
Formation Zend Framework                     Zend Framework : concepts avancés      Ce cours est conçu pour apprendre aux ...
Prochain SlideShare
Chargement dans…5
×

Découvrez le noyau d'internationalisation du Zend Framework

4 189 vues

Publié le

Le Zend Framework est fourni avec un noyau d’internationalisation (I18N) complet.

Avec ce premier Webinar à propos du noyau I18N, vous découvrirez les bases de l’internationalisation. Ce Webinar traitera des détails de traduction, décrira les différences entre les « adapters » disponibles et vous expliquera comment mettre en place les traductions.

Vous découvrirez comment utiliser des traductions au sein d’une vue ou d’un contrôleur et comment travailler avec les pluriels.

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
4 189
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
52
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Découvrez le noyau d'internationalisation du Zend Framework

  1. 1. Internationalisation etlocalisation avecZend FrameworkMickaël PerraudContributeur Zend FrameworkResponsable documentation française © All rights reserved. Zend Technologies, Inc.
  2. 2. Mickael Perraud Contributeur ZF depuis 2007 Responsable documentation française Travaille sur laide à la traduction et propose les versions déconnectées de la documentation PDF / CHM @mikaelkael / http://mikaelkael.fr © All rights reserved. Zend Technologies, Inc.
  3. 3. Quallons-nous voir aujourdhui ?3 © All rights reserved. Zend Technologies, Inc.
  4. 4. Plan • Internationalisation (I18n) Généralités Zend Framework et I18n • Traduction Quentendons-nous par traduction ? Créer et travailler avec les traductions Regardons en détails ! Futures améliorations4 Plan © All rights reserved. Zend Technologies, Inc.
  5. 5. Internationalisation (I18N)5 © All rights reserved. Zend Technologies, Inc.
  6. 6. Généralités – I18n vs L10n Tout le monde ne parle pas anglais ! • Internationalisation vs. Localisation:  I18n => supporte les autres régions sans changer votre code  L10n => propose votre projet pour une région en particulier • Zend Framework supporte tout ceci6 Internationalisation © All rights reserved. Zend Technologies, Inc.
  7. 7. Généralités – Quest-ce quune locale ? • Locale  Locale, le point central pour la L10n  Langue + Région  Région vs Pays  Informations additionnelles (table de caractères, encodage) en_US = langue anglaise + région USA fr_FR = langue française + région France7 Internationalisation © All rights reserved. Zend Technologies, Inc.
  8. 8. Zend Framework et I18n – Les classes Zend Framework ZF I18n core Zend_Locale Zend_Currency Zend_Date Zend_Translate • Zend_Locale  Gestion de la locale (indépendant de PHP et de lOS)  Informations pré-traduites  Contient le formatage8 Internationalisation © All rights reserved. Zend Technologies, Inc.
  9. 9. Zend Framework et I18n – Les classes • Zend_Currency  Gestion de monnaies localisées • Zend_Date  Gestion des heures et dates localisées • Zend_Translate  Gestion générique de la traduction9 Internationalisation © All rights reserved. Zend Technologies, Inc.
  10. 10. Traduction avec Zend Framework10 © All rights reserved. Zend Technologies, Inc.
  11. 11. Généralités • Comment fonctionne la traduction  Concept et processus • Fichiers sources  Création et gestion • Traduisez-moi !  Exemple dutilisation • Pour aller plus loin  Mise en cache, performance11 Traduction avec Zend Framework © All rights reserved. Zend Technologies, Inc.
  12. 12. Comment fonctionne la traduction • Toutes les langues sont différentes  Il faut fournir à votre utilisateur un site dans une langue quil comprend  La plupart des navigateurs envoie leurs langues préférées Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7,fr-be;q=0.6,fr-fr;q=0.4,fr-fr;q=0.3,en-us;q=0.2,en;q=0.1  La traduction nest quune partie dun site multilingue Utilisateur Détection Choix de la Affectation accède au site de la langue traduction traduction12 Traduction avec Zend Framework © All rights reserved. Zend Technologies, Inc.
  13. 13. Fichiers sources – Concept des adaptateurs • Concept des adaptateurs  Multiples types de source supportés  Facile dimplémenter votre propre adaptateur • Sélectionnez ladaptateur suivant votre utilisation  Lutilisation peut ensuite évoluer  Basculer vers un autre adaptateur se fait alors en 1 seule ligne13 Translation within Zend Framework © All rights reserved. Zend Technologies, Inc.
  14. 14. Fichiers sources – Adaptateurs  Array  Csv  Gettext  Ini  Qt  Tbx  Tmx  Xliff  XmlTm  Le vôtre…14 Translation within Zend Framework © All rights reserved. Zend Technologies, Inc.
  15. 15. Fichiers sources – Adaptateur Array return array( Original content => Translated content, Another content => Also translated ); • Pour • Contre  Rapide, le plus rapide  Pas doutil dédition  Lisible par lhomme  Pas simple pour le client final • Utilisation  Au cours du développement  Petit site à site moyen15 Translation within Zend Framework © All rights reserved. Zend Technologies, Inc.
  16. 16. Fichier sources – Adaptateur CSV “Original content”;”Translated content” “Another content”;“Also translated” • Pour • Contre  Rapide  Pas doutil dédition  Lisible par lhomme  Éditable par le client • Utilisation  Traduction par le client  Petit site à site moyen16 Translation within Zend Framework © All rights reserved. Zend Technologies, Inc.
  17. 17. Fichiers sources – Adaptateurs INI Original_content = “Translated content” Another_content = “Also translated” • Pour • Contre  Rapide  Pas doutil dédition  Lisible par lhomme  Pas simple pour le client final  Limitation au niveau des clés • Utilisation  Mixe la traduction avec la configuration  Petit site à site moyen17 Translation within Zend Framework © All rights reserved. Zend Technologies, Inc.
  18. 18. Fichiers sources – Adaptateur Gettext FORMAT BINAIRES (fichiers *.mo)… *.po nest pas Gettext • Pour • Contre  Crypté pour le client  Figé pour le client  Outils gratuits  Pas lisible par lhomme  Traduction professionnelle • Utilisation  De nombreuses sources sont disponibles  Petit site à site dentreprise18 Translation within Zend Framework © All rights reserved. Zend Technologies, Inc.
  19. 19. Fichiers sources – Adaptateur TMX ** XML HEADERS ** <tu tuid=Message 1> <tuv xml:lang="en"><seg>Message 1 (en)</seg></tuv> <tuv xml:lang="fr"><seg>Message 1 (fr)</seg></tuv> </tu> • Pour • Contre  Outils de traduction  Pas de bons outils dédition libre professionnels  Difficile pour le client final  Supporte les balises HTML  Nécessité dutiliser un cache • Utilisation  Avec les services de traduction professionnels  Site moyen à site dentreprise REMARQUE : on lit parfois quil sagit dun « standard19 Translation within Zend Framework industriel », ATTENTION cest un format lourd et verbeux © All rights reserved. Zend Technologies, Inc.
  20. 20. Exemples concrets20 © All rights reserved. Zend Technologies, Inc.
  21. 21. Traduisez-moi – Exemple dutilisation $trans = new Zend_Translate( array(adapter => array, content => /www/lang/, locale => fr_FR, scan => Zend_Translate::LOCALE_DIRECTORY ) ); $trans->translate(I said hello);21 Working examples © All rights reserved. Zend Technologies, Inc.
  22. 22. Traduisez-moi – Exemple dutilisation $trans = new Zend_Translate( array(adapter => array, content => /www/lang/, locale => fr_FR, scan => Zend_Translate::LOCALE_DIRECTORY ) ); $trans->translate(I said hello); Sélectionner votre adaptateur  Une seule ligne nécessaire pour changer dadaptateur22 Working examples © All rights reserved. Zend Technologies, Inc.
  23. 23. Traduisez moi – Exemple dutilisation $trans = new Zend_Translate( array(adapter => array, content => /www/lang/, locale => fr_FR, scan => Zend_Translate::LOCALE_DIRECTORY ) ); $trans->translate(I said hello); Où sont les traductions ?  Dossier  Fichier unique23 Working examples © All rights reserved. Zend Technologies, Inc.
  24. 24. Traduisez-moi – Exemple dutilisation $trans = new Zend_Translate( array(adapter => array, content => /www/lang/, locale => fr_FR, scan => Zend_Translate::LOCALE_DIRECTORY ) ); $trans->translate(I said hello); Quelle langue ?  Détection automatique (‘auto’, ‘browser’)  Déclaration manuelle (‘de_AT’, ‘en_US’)  Paramètre global de lapplication (Zend_Application)24 Working examples © All rights reserved. Zend Technologies, Inc.
  25. 25. Traduisez-moi – Exemple dutilisation $trans = new Zend_Translate( array(adapter => array, content => /www/lang/, locale => fr_FR, scan => Zend_Translate::LOCALE_DIRECTORY ) ); $trans->translate(I said hello); Options possibles  Scan : recherche de traduction • LOCALE-DIRECTORY : /www/lang/fr/file.php • LOCALE-FILE: /www/lang/file-fr.php25 Working examples © All rights reserved. Zend Technologies, Inc.
  26. 26. Traduisez-moi – Exemple dutilisation $trans = new Zend_Translate( array(adapter => array, content => /www/lang/, locale => fr_FR, scan => Zend_Translate::LOCALE_DIRECTORY ) ); $trans->translate(I said hello); Ça marche !  Retourne « Jai dit bonjour »26 Working examples © All rights reserved. Zend Technologies, Inc.
  27. 27. Traduisez-moi – Exemple dutilisation /language /language/en_GB /language/en_GB/file1.xxx /language/fr_BE /language/fr_BE/file1.xxx Zend_Translate::LOCALE_DIRECTORY :  Locale à lintérieur dun dossier  Partiellement possible sous la forme : • /language/App1-en_US/xxx • /language/Something_en_GB_different/xxx27 Working examples © All rights reserved. Zend Technologies, Inc.
  28. 28. Traduisez-moi – Exemple dutilisation /language /language/dir/ /language/dir/file1-en_GB.xxx /language/dir2 /language/dir2/file2-fr_BE.xxx Zend_Translate::LOCALE_FILE:  Locale à lintérieur dun fichier  Partiellement possible sous la forme : • file1.en.tmx • file_en-GB.php • file_fr-something.mo28 Working examples © All rights reserved. Zend Technologies, Inc.
  29. 29. Traduisez-moi – Aide de vue $this->translate(I said hello); $this->translate(Company Name, en); Aide de vue traduction (dans vos scripts de vue)  Plus simple  Plus court29 Working examples © All rights reserved. Zend Technologies, Inc.
  30. 30. Traduisez-moi – Traductions dynamiques $this->translate("Pay %1$s euro", $money); $this->translate("Pay %1$s euro until %2$s", $money, $date); Ajouter des paramètres à votre traduction  Avec une syntaxe de type sprintf  Plusieurs paramètres possibles  Les autres langues peuvent changer lordre30 Working examples © All rights reserved. Zend Technologies, Inc.
  31. 31. Autres composants – Le registre $translate = new Zend_Translate(/*...*/); Zend_Registry::set(‘Zend_Translate’, $translate); Zend_Registry  Utilisable partout dans votre application • Zend_Form • Zend_Validate • Zend_View • Et dautres...31 Working examples © All rights reserved. Zend Technologies, Inc.
  32. 32. Autres composants – Application resources.translate.adapter = “array“; resources.translate.locale = “fr_FR”; resources.translate.data = “/www/lang/”; Application  Reconnu partout dans votre application  Configurable32 Working examples © All rights reserved. Zend Technologies, Inc.
  33. 33. Pour aller plus loin – Traduction des pluriels $translate->plural(Car, Cars, 2); $translate->translate(array(Car, Cars, 2)); $this->translate(array(Car, Cars, 2)); Singulier / Pluriel  Car (un élément) / Singulier  Cars (plusieurs éléments) / Pluriel  Même méthode pour gérer le singulier ou le pluriel33 Working examples © All rights reserved. Zend Technologies, Inc.
  34. 34. Pour aller plus loin – Traduction des pluriels $this->translate(array(%1$s Car, %1$s Cars, $nb)); Noubliez pas vos paramètres  1 Car  3 Cars  Règles des pluriels implémentées pour toutes les langues34 Working examples © All rights reserved. Zend Technologies, Inc.
  35. 35. Pour aller plus loin – Traduction des pluriels $this->translate(array(Singular, Plural1, Plural2, 2)); Préparé pour le futur de PHP (PHP 6 ?)  Plusieurs langues permettent de définir plus d1 pluriel  Vous permet décrire votre code source dans la langue considérée35 Working examples © All rights reserved. Zend Technologies, Inc.
  36. 36. Pour aller plus loin – Traduction des pluriels Les règles plurielles sont supportées par : Mais pas par : ▶ Array ▶ Ini ▶ CSV ▶ Qt ▶ Gettext ▶ Tmx ▶ Tbx ▶ Xliff ▶ XmlTm36 Working examples © All rights reserved. Zend Technologies, Inc.
  37. 37. Pour aller plus loin – Performance Cache… cache… cache • Règle 1: utilisez un cache !!!37 Working examples © All rights reserved. Zend Technologies, Inc.
  38. 38. Pour aller plus loin – Performance Cache… cache… cache • Règle 1: utilisez un cache !!! • Règle 2: utilisez toujours un cache !!!38 Working examples © All rights reserved. Zend Technologies, Inc.
  39. 39. Pour allez plus loin – Performance Cache… cache… cache • Règle 1: utilisez un cache !!! • Règle 2: utilisez toujours un cache !!! • Règle 3: vous devez utiliser un cache !!!39 Working examples © All rights reserved. Zend Technologies, Inc.
  40. 40. Pour aller plus loin – Performance Caching… caching… caching • Règle 1: utilisez un cache !!! • Règle 2: utilisez toujours un cache !!! • Règle 3: vous devez utiliser un cache !!! Tous les adaptateurs ont la MÊME VITESSE • Seule la lecture initiale est différente40 Working examples © All rights reserved. Zend Technologies, Inc.
  41. 41. Résumé La traduction avec Zend_Translate est  Simple à utiliser  Facile à mettre en oeuvre  Intégrée à plusieurs autres composants de Zend Framework Pour plus dinformations  Lisez le manuel : http://framework.zend.com/manual/ ou http://doczf.mikaelkael.fr  Reportez-vous au blog de lauteur de quasiment toute la partie I18N et L10N de ZF : http://www.thomasweidner.com41 Working examples © All rights reserved. Zend Technologies, Inc.
  42. 42. Merci Des questions ? Talks : http://joind.in/event/view/2504 Slideshare : http://www.slideshare.net/mikaelkael42 © All rights reserved. Zend Technologies, Inc.
  43. 43. Formation Zend Framework Zend Framework : concepts avancés Ce cours est conçu pour apprendre aux développeurs PHP qui travaillent déjà avec le Zend Framework comment appliquer les bonnes pratiques lorsqu’ils construisent et configurent leurs applications que ce soit pour la scalabilité, l’interactivité ou les hautes performances. http://www.zend.com/en/services/training/course-catalog/zend-framework-advancedSujets abordés• Présentation et approfondissement des concepts de base (incluant le design pattern MVC, Zend_Db,Zend_Form, les plug-ins)• Développement et test (incluant Zend_Application, Zend_Tool, Zend_Test)• Rich Internet Applications (incluant Zend_Dojo, Zend_Soap_Server)• Les systèmes interactifs (incluant Zend_Mail, Zend_Feed, linternationalisation, Zend_Pdf,Zend_Search_Lucene)• Systèmes gérant la scalabilité, la fléxibilité et les hautes performances (incluant Zend_Cache, lesmodules MVC, Zend_Navigation, Zend_Queue)Prochains cours :  Du 4 au 6 avril  Du 20 au 22 juin © All rights reserved. Zend Technologies, Inc.

×