Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Internationalisation et
localisation avec
Zend Framework
Mickaël Perraud
Contributeur Zend Framework
Responsable documenta...
Mickael Perraud
       Contributeur ZF depuis 2007
       Responsable documentation française
       Travaille sur l'aide ...
Qu'allons-nous voir aujourd'hui ?




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 ...
Généralités – Qu'est-ce qu'une locale ?

    • Locale
         Locale, le point central pour la L10n
         Langue + R...
Zend Framework et I18n – Les classes
                                                                                     ...
Zend Framework et I18n – Les classes
    • Zend_Currency
         Gestion de monnaies localisées



    • Zend_Date
     ...
Traduction avec Zend Framework




10               © All rights reserved. Zend Technologies, Inc.
Généralités
     • Comment fonctionne la traduction
         Concept et processus

     • Fichiers sources
         Créa...
Comment fonctionne la traduction
     • Toutes les langues sont différentes
         Il faut fournir à votre utilisateur ...
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' => 'T...
Fichier sources – Adaptateur CSV

                    “Original content”;”Translated content”
                    “Another...
Fichiers sources – Adaptateurs INI

                    Original_content = “Translated content”
                    Anothe...
Fichiers sources – Adaptateur Gettext

                     FORMAT BINAIRES (fichiers *.mo)… *.po n'est pas Gettext




  ...
Fichiers sources – Adaptateur TMX
                    ** XML HEADERS **
                    <tu tuid='Message 1'>
        ...
Exemples concrets




20               © All rights reserved. Zend Technologies, Inc.
Traduisez-moi – Exemple d'utilisation
                    $trans = new Zend_Translate(
                        array('adap...
Traduisez-moi – Exemple d'utilisation
                    $trans = new Zend_Translate(
                        array('adap...
Traduisez moi – Exemple d'utilisation
                    $trans = new Zend_Translate(
                        array('adap...
Traduisez-moi – Exemple d'utilisation
                    $trans = new Zend_Translate(
                        array('adap...
Traduisez-moi – Exemple d'utilisation
                    $trans = new Zend_Translate(
                        array('adap...
Traduisez-moi – Exemple d'utilisation
                    $trans = new Zend_Translate(
                        array('adap...
Traduisez-moi – Exemple d'utilisation
                   /language

                   /language/en_GB
                   ...
Traduisez-moi – Exemple d'utilisation
                   /language

                   /language/dir/
                   /...
Traduisez-moi – Aide de vue
                        $this->translate('I said hello');
                        $this->trans...
Traduisez-moi – Traductions dynamiques
              $this->translate("Pay %1$s euro", $money);
              $this->trans...
Autres composants – Le registre
                    $translate = new Zend_Translate(/*...*/);

                    Zend_Re...
Autres composants – Application

                    resources.translate.adapter = “array“;
                    resources....
Pour aller plus loin – Traduction des pluriels
                    $translate->plural('Car', 'Cars', 2);
                 ...
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 :                          M...
Pour aller plus loin – Performance
         Cache… cache… cache


         • Règle 1: utilisez un cache !!!




37   Worki...
Pour aller plus loin – Performance
         Cache… cache… cache


         • Règle 1: utilisez un cache !!!
         • Règ...
Pour allez plus loin – Performance
         Cache… cache… cache


         • Règle 1: utilisez un cache !!!
         • Règ...
Pour aller plus loin – Performance
         Caching… caching… caching


         • Règle 1: utilisez un cache !!!
        ...
Résumé
     La traduction avec Zend_Translate est

         Simple à utiliser
         Facile à mettre en oeuvre
       ...
Merci
        Des questions ?


           Talks : http://joind.in/event/view/2504
           Slideshare : http://www.slid...
Formation Zend Framework
                     Zend Framework : concepts avancés
      Ce cours est conçu pour apprendre au...
Prochain SlideShare
Chargement dans…5
×

sur

Découvrez le noyau d'internationalisation du Zend Framework Slide 1 Découvrez le noyau d'internationalisation du Zend Framework Slide 2 Découvrez le noyau d'internationalisation du Zend Framework Slide 3 Découvrez le noyau d'internationalisation du Zend Framework Slide 4 Découvrez le noyau d'internationalisation du Zend Framework Slide 5 Découvrez le noyau d'internationalisation du Zend Framework Slide 6 Découvrez le noyau d'internationalisation du Zend Framework Slide 7 Découvrez le noyau d'internationalisation du Zend Framework Slide 8 Découvrez le noyau d'internationalisation du Zend Framework Slide 9 Découvrez le noyau d'internationalisation du Zend Framework Slide 10 Découvrez le noyau d'internationalisation du Zend Framework Slide 11 Découvrez le noyau d'internationalisation du Zend Framework Slide 12 Découvrez le noyau d'internationalisation du Zend Framework Slide 13 Découvrez le noyau d'internationalisation du Zend Framework Slide 14 Découvrez le noyau d'internationalisation du Zend Framework Slide 15 Découvrez le noyau d'internationalisation du Zend Framework Slide 16 Découvrez le noyau d'internationalisation du Zend Framework Slide 17 Découvrez le noyau d'internationalisation du Zend Framework Slide 18 Découvrez le noyau d'internationalisation du Zend Framework Slide 19 Découvrez le noyau d'internationalisation du Zend Framework Slide 20 Découvrez le noyau d'internationalisation du Zend Framework Slide 21 Découvrez le noyau d'internationalisation du Zend Framework Slide 22 Découvrez le noyau d'internationalisation du Zend Framework Slide 23 Découvrez le noyau d'internationalisation du Zend Framework Slide 24 Découvrez le noyau d'internationalisation du Zend Framework Slide 25 Découvrez le noyau d'internationalisation du Zend Framework Slide 26 Découvrez le noyau d'internationalisation du Zend Framework Slide 27 Découvrez le noyau d'internationalisation du Zend Framework Slide 28 Découvrez le noyau d'internationalisation du Zend Framework Slide 29 Découvrez le noyau d'internationalisation du Zend Framework Slide 30 Découvrez le noyau d'internationalisation du Zend Framework Slide 31 Découvrez le noyau d'internationalisation du Zend Framework Slide 32 Découvrez le noyau d'internationalisation du Zend Framework Slide 33 Découvrez le noyau d'internationalisation du Zend Framework Slide 34 Découvrez le noyau d'internationalisation du Zend Framework Slide 35 Découvrez le noyau d'internationalisation du Zend Framework Slide 36 Découvrez le noyau d'internationalisation du Zend Framework Slide 37 Découvrez le noyau d'internationalisation du Zend Framework Slide 38 Découvrez le noyau d'internationalisation du Zend Framework Slide 39 Découvrez le noyau d'internationalisation du Zend Framework Slide 40 Découvrez le noyau d'internationalisation du Zend Framework Slide 41 Découvrez le noyau d'internationalisation du Zend Framework Slide 42 Découvrez le noyau d'internationalisation du Zend Framework Slide 43
Prochain SlideShare
Karim Baïna (ENSIAS) invited keynote at JOS2013, ENSA de Khouribga, 21-22 Feb, 2013
Suivant
Télécharger pour lire hors ligne et voir en mode plein écran

0 j’aime

Partager

Télécharger pour lire hors ligne

Découvrez le noyau d'internationalisation du Zend Framework

Télécharger pour lire hors ligne

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.

  • Soyez le premier à aimer ceci

Découvrez le noyau d'internationalisation du Zend Framework

  1. 1. Internationalisation et localisation avec Zend Framework Mickaël Perraud Contributeur Zend Framework Responsable documentation française © All rights reserved. Zend Technologies, Inc.
  2. 2. Mickael Perraud Contributeur ZF depuis 2007 Responsable documentation française Travaille sur l'aide à 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. Qu'allons-nous voir aujourd'hui ? 3 © All rights reserved. Zend Technologies, Inc.
  4. 4. Plan • Internationalisation (I18n) Généralités Zend Framework et I18n • Traduction Qu'entendons-nous par traduction ? Créer et travailler avec les traductions Regardons en détails ! Futures améliorations 4 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 ceci 6 Internationalisation © All rights reserved. Zend Technologies, Inc.
  7. 7. Généralités – Qu'est-ce qu'une 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 France 7 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 l'OS)  Informations pré-traduites  Contient le formatage 8 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 traduction 9 Internationalisation © All rights reserved. Zend Technologies, Inc.
  10. 10. Traduction avec Zend Framework 10 © 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 d'utilisation • Pour aller plus loin  Mise en cache, performance 11 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 qu'il 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 n'est qu'une partie d'un site multilingue Utilisateur Détection Choix de la Affectation accède au site de la langue traduction traduction 12 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 d'implémenter votre propre adaptateur • Sélectionnez l'adaptateur suivant votre utilisation  L'utilisation peut ensuite évoluer  Basculer vers un autre adaptateur se fait alors en 1 seule ligne 13 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 d'outil d'édition  Lisible par l'homme  Pas simple pour le client final • Utilisation  Au cours du développement  Petit site à site moyen 15 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 d'outil d'édition  Lisible par l'homme  Éditable par le client • Utilisation  Traduction par le client  Petit site à site moyen 16 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 d'outil d'édition  Lisible par l'homme  Pas simple pour le client final  Limitation au niveau des clés • Utilisation  Mixe la traduction avec la configuration  Petit site à site moyen 17 Translation within Zend Framework © All rights reserved. Zend Technologies, Inc.
  18. 18. Fichiers sources – Adaptateur Gettext FORMAT BINAIRES (fichiers *.mo)… *.po n'est pas Gettext • Pour • Contre  Crypté pour le client  Figé pour le client  Outils gratuits  Pas lisible par l'homme  Traduction professionnelle • Utilisation  De nombreuses sources sont disponibles  Petit site à site d'entreprise 18 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é d'utiliser un cache • Utilisation  Avec les services de traduction professionnels  Site moyen à site d'entreprise REMARQUE : on lit parfois qu'il s'agit d'un « standard 19 Translation within Zend Framework industriel », ATTENTION c'est un format lourd et verbeux © All rights reserved. Zend Technologies, Inc.
  20. 20. Exemples concrets 20 © All rights reserved. Zend Technologies, Inc.
  21. 21. Traduisez-moi – Exemple d'utilisation $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 d'utilisation $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 d'adaptateur 22 Working examples © All rights reserved. Zend Technologies, Inc.
  23. 23. Traduisez moi – Exemple d'utilisation $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 unique 23 Working examples © All rights reserved. Zend Technologies, Inc.
  24. 24. Traduisez-moi – Exemple d'utilisation $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 l'application (Zend_Application) 24 Working examples © All rights reserved. Zend Technologies, Inc.
  25. 25. Traduisez-moi – Exemple d'utilisation $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.php 25 Working examples © All rights reserved. Zend Technologies, Inc.
  26. 26. Traduisez-moi – Exemple d'utilisation $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 « J'ai dit bonjour » 26 Working examples © All rights reserved. Zend Technologies, Inc.
  27. 27. Traduisez-moi – Exemple d'utilisation /language /language/en_GB /language/en_GB/file1.xxx /language/fr_BE /language/fr_BE/file1.xxx Zend_Translate::LOCALE_DIRECTORY :  Locale à l'intérieur d'un dossier  Partiellement possible sous la forme : • /language/App1-en_US/xxx • /language/Something_en_GB_different/xxx 27 Working examples © All rights reserved. Zend Technologies, Inc.
  28. 28. Traduisez-moi – Exemple d'utilisation /language /language/dir/ /language/dir/file1-en_GB.xxx /language/dir2 /language/dir2/file2-fr_BE.xxx Zend_Translate::LOCALE_FILE:  Locale à l'intérieur d'un fichier  Partiellement possible sous la forme : • file1.en.tmx • file_en-GB.php • file_fr-something.mo 28 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 court 29 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 l'ordre 30 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 d'autres... 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  Configurable 32 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 pluriel 33 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)); N'oubliez pas vos paramètres  1 Car  3 Cars  Règles des pluriels implémentées pour toutes les langues 34 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 d'1 pluriel  Vous permet d'écrire votre code source dans la langue considérée 35 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 ▶ XmlTm 36 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érente 40 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 d'informations  Lisez le manuel : http://framework.zend.com/manual/ ou http://doczf.mikaelkael.fr  Reportez-vous au blog de l'auteur de quasiment toute la partie I18N et L10N de ZF : http://www.thomasweidner.com 41 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/mikaelkael 42 © 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-advanced Sujets 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, l'internationalisation, Zend_Pdf, Zend_Search_Lucene) • Systèmes gérant la scalabilité, la fléxibilité et les hautes performances (incluant Zend_Cache, les modules MVC, Zend_Navigation, Zend_Queue) Prochains cours :  Du 4 au 6 avril  Du 20 au 22 juin © All rights reserved. Zend Technologies, Inc.

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.

Vues

Nombre de vues

4 699

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

7

Actions

Téléchargements

53

Partages

0

Commentaires

0

Mentions J'aime

0

×