symfony - PowerPoint PPT Presentation

1 / 15
About This Presentation
Title:

symfony

Description:

Contient un contenu diff rent selon le pays partir duquel le site est consult ... Affichage des donn es fonction de la culture III ?php use_helper ... – PowerPoint PPT presentation

Number of Views:237
Avg rating:3.0/5.0
Slides: 16
Provided by: notesM8
Category:

less

Transcript and Presenter's Notes

Title: symfony


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 639-1 standard)
  • Le pays est codé sur 2 caractères majuscules
    (ISO 3166-1 standard)

4
Changer de culture
  • // Culture setter
  • this-gtgetUser()-gtsetCulture('en_US')  
  • // Culture getter
  • culture this-gtgetUser()-gtgetCulture()
  • 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 (?frende)
  • params ...
  • article
  • url /sf_culture/year/month/day/slug
  • requirements sf_culture (?frende)
  • 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-gtgetRequest()-gtgetLanguages()
  • 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
  • lt?php use_helper('Number') ?gt  
  • lt?php sf_user-gtsetCulture('en_US') ?gt
  • lt?php echo format_number(12000.10) ?gt
  • '12,000.10'
  • lt?php sf_user-gtsetCulture('fr_FR') ?gt
  • lt?php echo format_number(12000.10) ?gt
  • '12 000,10'
  • Pas de passage explicite de la culture

8
Affichage des données fonction de la culture II
  • lt?php use_helper('Date') ?gt  
  • lt?php echo format_date(time()) ?gt
  • '9/14/06'  
  • lt?php echo format_datetime(time()) ?gt
  • 'September 14, 2006 61107 PM CEST'

9
Affichage des données fonction de la culture III
  • lt?php use_helper('I18N') ?gt  
  • lt?php echo format_country('US') ?gt
  • 'United States'  
  • lt?php format_language('en') ?gt
  • 'English'  

10
Affichage des données fonction de la culture IV
  • lt?php use_helper('Form') ?gt  
  • lt?php echo input_date_tag('birth_date', mktime(0,
    0, 0, 9, 14, 2006)) ?gt
  • ltinput type"text" name"birth_date"
    id"birth_date" value"9/14/06" size"11" /gt  
  • lt?php echo select_country_tag('country', 'US') ?gt
  • ltselect name"country" id"country"gt
  • ltoption value"AF"gtAfghanistanlt/optiongt
  • ...
  • ltoption value"GB"gtUnited Kingdomlt/optiongt
  • ltoption value"US" selected"selected"gtUnited
    Stateslt/optiongt
  • ltoption value"UM"gtUnited States Minor Outlying
    Islandslt/optiongt
  • ltoption value"UY"gtUruguaylt/optiongt ... lt/selectgt
  • 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-gtgetRequestParameter('birth_date')
  • user_culture this-gtgetUser()-gtgetCulture()  
  • // Getting a timestamp
  • timestamp sfI18NgetTimestampForCulture(date,
    user_culture)
  • // Getting a structured date
  • list(d, m, y) sfI18NgetDateForCulture(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 ProductPeerretrieveByPk(1)
  • product-gtsetCulture('fr')
  • product-gtsetName('Nom du produit')
  • product-gtsave()
  • product-gtsetCulture('en')
  • product-gtsetName('Product name')
  • product-gtsave()  
  • echo product-gtgetName()
  • 'Product name'  
  • product-gtsetCulture('fr')
  • echo product-gtgetName()
  • 'Nom du produit'

15
Automatiser la localisation dun objet
  • Ajouter cette méthode au modèle
  • public function hydrate(ResultSet rs, startcol
    1)
  • user sfContextgetInstance()-gtgetUser()
  • culture user-gtgetCulture()
  • this-gtsetCulture(culture)  
  • return parenthydrate(rs, startcol)
Write a Comment
User Comments (0)
About PowerShow.com