Development

Documentation/fr_FR/book/1.0/trunk/13-I18n-and-L10n (diff)

You must first sign up to be able to contribute.

Changes between Version 8 and Version 9 of Documentation/fr_FR/book/1.0/trunk/13-I18n-and-L10n

Show
Ignore:
Author:
forresst (IP: 86.65.176.14)
Timestamp:
04/14/08 13:38:21 (10 years ago)
Comment:

Respect Markdown

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/fr_FR/book/1.0/trunk/13-I18n-and-L10n

    v8 v9  
    88</div> 
    99}}} 
     10 
     11{{{ 
     12#!WikiMarkdown 
     13Chapitre 13 - I18n et L10n  
     14==========================  
    1015 
    1116Si vous avez déjà développé une application dont l'interface est en plusieurs langues, vous savez combien les traductions, la localisation des différents contenus peuvent rapidement tourner au cauchemard. Symfony gère tous ces aspects nativement. 
    2530Ce chapitre va nous montrer la façon dont symfony gère tous ces aspects et comment on peut l'utiliser pour créer des applications internationalisées et localisées. 
    2631 
    27 # Culture de l'utilisateur 
     32Culture de l'utilisateur 
     33------------------------ 
    2834 
    2935Toutes les fonctionalités internes de symfony sont basées sur une variable de session utilisateur appelé culture. La culture est la combinaison de la langue et du pays de l'utilisateur. Elle détermine la façon dont sont affichées les textes et les informations dépendant de la culture. La culture est une variable de session, elle est donc conservée de pages en pages.  
    3036 
    3137 
    32 ## Positionner la culture par défaut 
     38### Configurer la culture par défaut 
    3339 
    34 Par défaut, la culture d'un nouveau visiteur est la culture par défaut (default_culture). Vous pouvez changer cette valeur dans le fichier de configuration i18n.yml, comme montré sur le Listing 13-1. 
     40Par défaut, la culture d'un nouveau visiteur est `default_culture`. Vous pouvez changer cette valeur dans le fichier de configuration `i18n.yml`, comme montré sur le Listing 13-1. 
    3541 
    36 Listing 13-1 - Positionner la culture par défaut, dans myapp/config/i18n.yml 
     42Listing 13-1 - Positionner la culture par défaut, dans `myapp/config/i18n.yml` 
    3743 
    38 all: 
    39   default_culture:     fr_FR 
     44    all:  
     45      default_culture:     fr_FR  
    4046 
    41 Pendant la phase de développement, ne soyez pas surpris si un changement de la culture dans le fichier i18n.yml ne change pas la culture dans le navigateur. Cette persistance est dû au fait que la culture est présente dans la session utilisateur. Si vous voulez que votre changement soit effectif, supprimer le cookie de session ou redémarrez votre navigateur. 
    4247 
    43 Garder à l'esprit que la langue et le pays sont nécessaires, vous pouvez avoir des traductions françaises différentes pour des français, des belges ou des québécois et de même vous pouvez avoir des traductions espagnoles différentes pour des espagnols ou des méxicains. Le langage est codé sur deux caractères, en accord avec la norme ISO 639-1 (par exemple fr pour français). Le pays est codé sur deux caractères en majuscules en accord avec la norme ISO 3166-1 (par exemple FR pour des français de France). 
     48>**NOTE**  
     49>Pendant la phase de développement, ne soyez pas surpris si un changement de la culture dans le fichier `i18n.yml` ne change pas la culture dans le navigateur. Cette persistance est dû au fait que la culture est présente dans la session utilisateur. Si vous voulez que votre changement soit effectif, supprimer le cookie de session ou redémarrez votre navigateur. 
    4450 
    45 ## Changer la culture d'un utilisateur 
     51Garder à l'esprit que la langue et le pays sont nécessaires, vous pouvez avoir des traductions françaises différentes pour des français, des belges ou des québécois et de même vous pouvez avoir des traductions espagnoles différentes pour des espagnols ou des méxicains. Le langage est codé sur deux caractères, en accord avec la norme ISO 639-1 (par exemple `fr` pour français). Le pays est codé sur deux caractères en majuscules en accord avec la norme ISO 3166-1 (par exemple `FR` pour des français de France). 
    4652 
    47 Vous pouvez changer la culture d'un utilisateur - par exemple si l'utilisateur décide de passer de la version en anglais à la version en français. -, ou par exemple quand un utilisateur se connecte et que l'on veut utiliser la langue de son navigateur. Pour faciliter ces changements, la classe sfUser fournit des accesseurs à la culture de l'utilisateur. Le listing 13-2 montre comment utiliser ces méthodes dans une action. 
     53### Changer la culture d'un utilisateur 
    4854 
    49 [php] 
    50 // Culture setter 
    51 $this->getUser()->setCulture('en_US'); 
    52   
    53 // Culture getter 
    54 $culture = $this->getUser()->getCulture(); 
    55  => en_US 
     55Vous pouvez changer la culture d'un utilisateur - par exemple si l'utilisateur décide de passer de la version en anglais à la version en français. -, ou par exemple quand un utilisateur se connecte et que l'on veut utiliser la langue de son navigateur. Pour faciliter ces changements, la classe `sfUser` fournit des accesseurs à la culture de l'utilisateur. Le listing 13-2 montre comment utiliser ces méthodes dans une action. 
     56 
     57    [php] 
     58    // Culture setter 
     59    $this->getUser()->setCulture('en_US'); 
     60     
     61    // Culture getter 
     62    $culture = $this->getUser()->getCulture(); 
     63     => en_US 
    5664 
    5765     
    58 Gestion de la culture dans l'URL 
     66>**SIDEBAR**  
     67>Gestion de la culture dans l'URL 
     68
     69>Quand vous utilisez la localisation et l'internationalisation dans symfony, vos pages ont des versions différentes pour une même URL. Cela vous empêche de cacher vos pages et cela empêche un robot d'indéxer vos pages de manière correcte. 
     70
     71>La solution est d'ajouter la culture dans toutes vos URL. Ainsi toutes les pages traduites ont des URL différentes. Pour faire cela, il suffit d'ajouter le paramètre `:sf_culture` dans toutes les règles du fichier `routing.yml` de votre application. 
     72>  
     73>  
     74>     page:  
     75>       url: /:sf_culture/:page  
     76>       requirements: { sf_culture: (?:fr|en|de) }  
     77>       params: ...  
     78>  
     79>     article:  
     80>       url: /:sf_culture/:year/:month/:day/:slug  
     81>       requirements: { sf_culture: (?:fr|en|de) }  
     82>       params: ...  
     83>  
     84>  
     85>  
     86>Nul besoin, d'ajouter le paramètre sf_culture à chaque utilisation de la fonction `link_to()`, symfony ajoute automatiquement la culture aux paramètres de toutes les règles de routage. Le mécanisme fonctionne dans l'autre sens : symfony change automatiquement la culture de l'utilisateur si le paramètre `sf_culture` est trouvé dans l'URL. 
    5987 
    60 Quand vous utilisez la localisation et l'internationalisation dans symfony, vos pages ont des versions différentes pour une même URL. Cela vous empêche de cacher vos pages et cela empêche un robot d'indéxer vos pages de manière correcte. 
     88### Determiner la culture automatiquement 
    6189 
    62 La solution est d'ajouter la culture dans toutes vos URL. Ainsi toutes les pages traduites ont des URL différentes. Pour faire cela, il suffit d'ajouter le paramètre :sf_culture dans toutes les règles du fichier routing.yml de votre application. 
     90Dans de nombreuses applications, la culture est définie à la première requête, en se basant sur les préférences du navigateur. Les utilisateurs peuvent défiir une liste de langues acceptées, dans leur navigateur. Ces informations sont envoyées au serveur à chaque requête, dans l'entête HTTP `Accept-Language`. Dans symfony, vous pouvez récupérer ces informations à travers l'objet `sfRequest`. Par exemple, pour récupérer la liste des langues acceptées, dans une action, faîtes ceci : 
    6391 
    64 page: 
    65   url: /:sf_culture/:page 
    66   requirements: { sf_culture: (?:fr|en|de) } 
    67   params: ... 
    68  
    69   article: 
    70     url: /:sf_culture/:year/:month/:day/:slug 
    71     requirements: { sf_culture: (?:fr|en|de) } 
    72     params: ... 
    73  
    74 Nul besoin, d'ajouter le paramètre sf_culture à chaque utilisation de la fonction link_to(), symfony ajoute automatiquement la culture aux paramètres de toutes les règles de routage. Le mécanisme fonctionne dans l'autre sens : symfony change automatiquement la culture de l'utilisateur si le paramètre sf_culture est trouvé dans l'URL. 
    75  
    76 ## Determiner la culture automatiquement 
    77  
    78 Dans de nombreuses applications, la culture est définie à la première requête, en se basant sur les préférences du navigateur. Les utilisateurs peuvent défiir une liste de langues acceptées, dans leur navigateur. Ces informations sont envoyées au serveur à chaque requête, dans l'entête HTTP Accept-Language. Dans symfony, vous pouvez récupérer ces informations à travers l'objet sfRequest. Par exemple, pour récupérer la liste des langues acceptées, dans une action, faîtes ceci : 
    79  
    80 [php] 
    81 $languages = $this->getRequest()->getLanguages(); 
     92     [php] 
     93     $languages = $this->getRequest()->getLanguages(); 
    8294  
    83 Les entêtes HTTP sont en fait une chaîne de caractères mais symfony analyse automatiquement cette chaîne et la transforme en tableau. Ainsi la langue préférée de l'utilisateur est accessible par $languages[0] dans l'exemple précédent. 
     95Les entêtes HTTP sont en fait une chaîne de caractères mais symfony analyse automatiquement cette chaîne et la transforme en tableau. Ainsi la langue préférée de l'utilisateur est accessible par `$languages[0]` dans l'exemple précédent. 
    8496 
    8597Ainsi on peut positionner de manière automatique la culture de l'utilisateur dans l'application en se basant sur la langue préférée de son navigateur. On peut faire cela sur la page d'accueil ou au moyen d'un filtre dans toutes les pages. 
     98 
     99}}}