178

Images et traductions

Créez site3 en copiant site2.

  1. /cms
    1. ...
    2. site2
    3. site3

Dans ce chapitre, nous allons programmer le contenu de la page d'accueil et sa traduction.

Pour tester le résultat en ligne, entrez http://www.frasq.org/cms/site3 dans la barre d'adresse de votre navigateur. Essayez les adresses http://www.frasq.org/cms/site3/fr et http://www.frasq.org/cms/site3/en.

Créez le dossier images dans site3.

  1. /cms/site3
    1. images

Ajoutez l'icône pour Ubuntu dans images.

  1. /cms/site3
    1. images
      1. ubuntu.png

Ajoutez un pied de page avec l'icône d'Ubuntu à home.phtml. En français dans views/fr :

  1. <h3>Bienvenue</h3>
  2. <div id="footer">
  3. <p>&copy;2010-2011 frasq.org - Tous droits r&eacute;serv&eacute;s - <a href="http://www.frasq.org">www.frasq.org</a></p>
  4. <p><img src="<?php echo $base_path; ?>/images/ubuntu.png" alt="" width="16" height="16" />&nbsp;<a href="http://www.ubuntu.com" target="_blank">Ubuntu</a></p>
  5. </div>

Puis en anglais dans views/en :

  1. <h3>Welcome</h3>
  2. <div id="footer">
  3. <p>&copy;2010-2011 frasq.org - All rights reserved - <a href="http://www.frasq.org">www.frasq.org</a></p>
  4. <p><img src="<?php echo $base_path; ?>/images/ubuntu.png" alt="" width="16" height="16"/>&nbsp;<a href="http://www.ubuntu.com" target="_blank">Ubuntu</a></p>
  5. </div>

Si vous entrez http://localhost/cms/site3/fr dans la barre d'adresse de votre navigateur, l'icône n'est pas affichée. Rappelez-vous que le fichier .htaccess ordonne à Apache de rediriger toutes les requêtes vers index.php. index.php va retourner un document "HTTP/1.0 404 Not Found". Installez l'extension Live HTTP Headers de Firefox. Choisissez En-tête Live HTTP dans le menu Outils. Rechargez la page http://localhost/cms/site3 pour afficher l'en-tête du document renvoyé par le site.

GET /cms/site3/images/ubuntu.png HTTP/1.1
Host: localhost
...

HTTP/1.0 404 Not Found
...

Éditez .htaccess et ajoutez les lignes suivantes pour laisser passer tous les fichiers avec une extension .gif, .png, .jpg, .jpeg ou .ico ainsi que .css pour les feuilles de style et .js pour les sources en JavaScript.

  1. RewriteCond %{REQUEST_FILENAME} -f
  2. RewriteRule /*\.(css|js|gif|png|jpe?g|ico)$ - [NC,L]

La première ligne impose que l'URL pointe bien sur un fichier existant. Sinon, la requête doit être redirigée vers index.php. Cette condition est importante pour que le site puisse capturer des erreurs d'adressage ou gérer le téléchargement de fichiers dont les noms ont des extensions qui pourraient porter à confusion. La règle suivante indique que toutes les URL se terminant par une des extensions de fichier données ne doivent pas être récrites.

Vérifiez que l'icône est bien affichée en entrant http://localhost/cms/site3/fr et http://localhost/cms/site3/en dans la barre d'adresse de votre navigateur.

Ajoutez le fichier strings.inc dans includes avec le contenu suivant :

  1. /cms/site3
    1. includes
      1. strings.inc
  1. global $strings;
  2.  
  3. $strings = array(
  4.     array('title'               => 'frasq.org',
  5.     ),
  6.     'fr' => array(
  7.         'home:title'            => 'Accueil',
  8.     ),
  9.     'en' => array(
  10.         'home:title'            => 'Home',
  11.     ),
  12. );

strings.inc définit la variable globale $strings. $strings contient un tableau qui associe pour chaque langue gérée par le programme une liste de chaînes de caractères à leurs traductions. Le tableau des chaînes de caractères qui ne dépendent pas de la langue est placé à la position 0.

Ajoutez le fichier translate.php dans library avec le contenu suivant :

  1. /cms/site3
    1. library
      1. translate.php
  1. global $strings;
  2.  
  3. $strings = array();
  4.  
  5. @include 'strings.inc';
  6.  
  7. function translate($s, $lang) {
  8.     global $strings;
  9.  
  10.     if ($s) {
  11.         if (array_key_exists($lang, $strings) && array_key_exists($s, $strings[$lang])) {
  12.             return $strings[$lang][$s];
  13.         }
  14.         if (array_key_exists(0, $strings) && array_key_exists($s, $strings[0])) {
  15.             return $strings[0][$s];
  16.         }
  17.     }
  18.  
  19.     return false;
  20. }

Modifiez la version française de la page d'accueil :

  1. <?php
  2. require_once 'translate.php';
  3.  
  4. $title=translate('home:title', 'fr');
  5. ?>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8. <head>
  9. <title><?php echo $title; ?></title>
  10. </head>
  11. <body>
  12. <h3>Bienvenue</h3>
  13. <div id="footer">
  14. <p>&copy;2010-2011 frasq.org - Tous droits r&eacute;serv&eacute;s - <a href="http://www.frasq.org">www.frasq.org</a></p>
  15. <p><img src="<?php echo $base_path; ?>/images/ubuntu.png" alt="" width="16" height="16" />&nbsp;<a href="http://www.ubuntu.com" target="_blank">Ubuntu</a></p>
  16. </div>
  17. </body>
  18. </html>

Le titre de la page est maintenant généré dynamiquement selon la langue de la page qui est affichée.

Dans la version en anglais, passez 'en' en argument à translate.

  1. <?php
  2. require_once 'translate.php';
  3.  
  4. $title=translate('home:title', 'en');
  5. ?>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8. <head>
  9. <title><?php echo $title; ?></title>
  10. </head>
  11. <body>
  12. <h3>Welcome</h3>
  13. <div id="footer">
  14. <p>&copy;2010-2011 frasq.org - All rights reserved - <a href="http://www.frasq.org">www.frasq.org</a></p>
  15. <p><img src="<?php echo $base_path; ?>/images/ubuntu.png" alt="" width="16" height="16"/>&nbsp;<a href="http://www.ubuntu.com" target="_blank">Ubuntu</a></p>
  16. </div>
  17. </body>
  18. </html>

Entrez http://localhost/cms/site3/fr puis http://localhost/cms/site3/en dans la barre d'adresse de votre navigateur pour valider la page d'accueil en français et en anglais.

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].