La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Symfony i18n. terminologie internationalization = i18n –Un même contenu traduit en plusieurs langue, éventuellement converti en différents formats localization.

Présentations similaires


Présentation au sujet: "Symfony i18n. terminologie internationalization = i18n –Un même contenu traduit en plusieurs langue, éventuellement converti en différents formats localization."— Transcription de la présentation:

1 symfony i18n

2 terminologie internationalization = i18n –Un même contenu traduit en plusieurs langue, éventuellement converti en différents formats localization = l10n –Contient un contenu différent selon le pays à partir duquel le site est consulté

3 Culture utilisateur La culture est une combinaison du pays et de la langue de lutilisateur –Persistante en session Culture par défaut myapp/config/i18n.yml all: default_culture: fr_FR Pour que les changements prennent effet –Réinitialiser la session (supprimer les cookies, « effacer mes traces ») La langue est codée sur 2 caractères minuscules (ISO standard) Le pays est codé sur 2 caractères majuscules (ISO standard)

4 Changer de culture // Culture setter $this->getUser()->setCulture('en_US'); // Culture getter $culture = $this->getUser()->getCulture(); en_US La culture étant stockée dans la session les Moteur de recherche ne peuvent indexer quune langue

5 Culture dans url routing.yml page: url: /:sf_culture/:page requirements: { sf_culture: (?:fr|en|de) } params:... article: url: /:sf_culture/:year/:month/:day/:slug requirements: { sf_culture: (?:fr|en|de) } params:... La culture sera accolé dans chaque url générée par link_to Si le paramètre sf_culture change dans lurl symfony changera automatiquement la culture de lutilisateur

6 Déterminer la culture $languages = $this->getRequest()->getLanguages(); Permet de déterminer automatiquement la culture le Accept-Language HTTP nest pas très fiable –Rarement modifié par les utilisateurs –La plupart du temps le langage est celui de linterface –Les browsers ne sont pas disponibles dans toutes les langues –Lutilisateur doit pouvoir choisir une autre langue

7 Affichage des données fonction de la culture setCulture('en_US') ?> '12,000.10' setCulture('fr_FR') ?> '12 000,10' Pas de passage explicite de la culture

8 Affichage des données fonction de la culture II '9/14/06' 'September 14, :11:07 PM CEST'

9 Affichage des données fonction de la culture III 'United States' 'English'

10 Affichage des données fonction de la culture IV Afghanistan... United Kingdom United States United States Minor Outlying Islands Uruguay... Les helpers date acceptent un paramètre spécifique pour forcer la culture déconseillé

11 Récupérer des données localisées $date= $this->getRequestParameter('birth_date'); $user_culture = $this->getUser()->getCulture(); // Getting a timestamp $timestamp = sfI18N::getTimestampForCulture($date, $user_culture); // Getting a structured date list($d, $m, $y) = sfI18N::getDateForCulture($date, $user_culture);

12 Schéma localisé my_product: _attributes: { phpName: Product, isI18N: true, i18nTable: my_product_i18n } id: { type: integer, required: true, primaryKey: true, autoincrement: true } price: { type: float } my_product_i18n: _attributes: { phpName: ProductI18n } id: type: integer required: true primaryKey: true foreignTable: my_product foreignReference: id culture: { isCulture: true, type: varchar, size: 7, required: true, primaryKey: true } name: { type: varchar, size: 50 }

13 Schéma localisé – version courte my_product: _attributes: { phpName: Product } id: price: float my_product_i18n: _attributes: { phpName: ProductI18n } name: varchar(50)

14 Utilisation dun objet localisé $product = ProductPeer::retrieveByPk(1); $product->setCulture('fr'); $product->setName('Nom du produit'); $product->save(); $product->setCulture('en'); $product->setName('Product name'); $product->save(); echo $product->getName(); 'Product name' $product->setCulture('fr'); echo $product->getName(); 'Nom du produit'

15 Automatiser la localisation dun objet Ajouter cette méthode au modèle public function hydrate(ResultSet $rs, $startcol = 1) { $user = sfContext::getInstance()->getUser(); $culture = $user->getCulture(); $this->setCulture($culture); return parent::hydrate($rs, $startcol); }


Télécharger ppt "Symfony i18n. terminologie internationalization = i18n –Un même contenu traduit en plusieurs langue, éventuellement converti en différents formats localization."

Présentations similaires


Annonces Google