Cookies, préférences, et gestion multilingues (i18n)

Cookies, préférences, et gestion multilingues (i18n)

Lien vers le cours

L. Delafontaine, avec l'aide de GitHub Copilot.

Ce travail est sous licence CC BY-SA 4.0.

Cookies, préférences, et gestion multilingues (i18n)

Retrouvez plus de détails dans le support de cours

Cette présentation est un résumé du support de cours. Pour plus de détails, consultez le support de cours.

Cookies, préférences, et gestion multilingues (i18n)

Objectifs

  • Utiliser les cookies pour stocker les préférences des utilisateurs.
  • Implémenter la gestion multilingue (i18n) dans une application web PHP.
  • (Vous donner envie de manger des cookies).
Cookies, préférences, et gestion multilingues (i18n)

Les cookies (1/2)

  • Fichiers textes stockés sur le poste client (navigateur).
  • Définis par le serveur et envoyés au client via les en-têtes HTTP.
  • Renvoyés par le client au serveur avec chaque requête HTTP.
  • Permettent de stocker les préférences utilisateur (ex. : langue, thème, etc.).
Cookies, préférences, et gestion multilingues (i18n)

Les cookies (2/2)

  • Les cookies ont des attributs comme :
    • Le nom du cookie.
    • Sa valeur.
    • Sa date d'expiration.
    • Et quelques autres options (domaine, chemin, sécurité, etc.).
  • Valides pour une durée ou jusqu'à la fermeture du navigateur.
Cookies, préférences, et gestion multilingues (i18n)
Cookies, préférences, et gestion multilingues (i18n)
Cookies, préférences, et gestion multilingues (i18n)
Cookies, préférences, et gestion multilingues (i18n)

Créer des cookies en PHP

<?php
// Définit un cookie 'language'
// avec la valeur 'fr'
// qui expire dans 30 jours.
setcookie(
  'language',
  'fr',
  time() + (30 * 24 * 60 * 60)
);
Cookies, préférences, et gestion multilingues (i18n)

Lire des cookies en PHP

<?php
// Vérifie si le cookie 'language' est défini
if (isset($_COOKIE['language'])) {
    $language = $_COOKIE['language'];
    echo "La langue préférée est : " .
        htmlspecialchars($language);
} else {
    echo "Aucune langue préférée définie.";
}
Cookies, préférences, et gestion multilingues (i18n)

Invalider/supprimer des cookies en PHP

<?php
// Supprime le cookie en le recréant
// avec une date d'expiration dans le passé.
setcookie('language', '', time() - 3600);
<?php
// Supprime le cookie en lui
// donnant une valeur vide.
setcookie('language', '');
Cookies, préférences, et gestion multilingues (i18n)

Visualiser les cookies dans le navigateur

  • Tous les navigateurs modernes offrent des outils de développement (DevTools) pour inspecter les cookies.
  • Le support de cours détaille comment faire cela dans différents navigateurs.
Cookies, préférences, et gestion multilingues (i18n)

Gestion multilingue (i18n) (1/2)

  • i18n = internationalization (18 lettres entre le "i" et le "n").
  • Gestion des langues et des cultures dans une application.
  • Plusieurs manières de l'implémenter (fichiers de traduction, bases de données, services externes, etc.).
Cookies, préférences, et gestion multilingues (i18n)

Gestion multilingue (i18n) (2/2)

  • Permet aux utilisateurs de choisir leur langue préférée.
  • Utilisation de cookies pour mémoriser la langue préférée.
Cookies, préférences, et gestion multilingues (i18n)

Fichiers de traduction

  • Utilisation de fichiers de traduction pour stocker les textes dans différentes langues pour cette unité d'enseignement.
  • Chaque fichier contient des tableaux associatifs avec les textes d'une langue spécifique.
  • Un exemple plus complet est disponible dans les codes d'exemples.
Cookies, préférences, et gestion multilingues (i18n)

Utilisation des fichiers de traduction (1/2)

<?php
// translations.php
$translations = [
    'en' => [
        'welcome' => 'Welcome',
        'hello' => 'Hello',
    ],
    'fr' => [
        'welcome' => 'Bienvenue',
        'hello' => 'Bonjour',
    ],
];
?>
Cookies, préférences, et gestion multilingues (i18n)

Utilisation des fichiers de traduction (2/2)

<?php
require_once 'translations.php';

// Langue par défaut
const DEFAULT_LANGUAGE = 'en';

// Définit la langue par défaut
$language = DEFAULT_LANGUAGE;

// Vérifie si le cookie de langue est défini et valide
if (isset($_COOKIE['language']) && array_key_exists($_COOKIE['language'], $translations)) {
    // Si le cookie est défini et valide, utilise la langue du cookie
    $language = $_COOKIE['language'];
}

// Exemple d'utilisation
echo $translations[$language]['welcome'];
Cookies, préférences, et gestion multilingues (i18n)

Conclusion

  • Les cookies permettent de stocker les préférences utilisateur.
  • Ils sont échangés entre le client et le serveur avec chaque requête HTTP.
  • Nous pouvons utiliser des cookies pour mémoriser les préférences de langue.
  • La gestion multilingue (i18n) améliore l'expérience utilisateur.
Cookies, préférences, et gestion multilingues (i18n)

Questions

Est-ce que vous avez des questions ?

Cookies, préférences, et gestion multilingues (i18n)

À vous de jouer !

  • (Re)lire le support de cours.
  • Explorer les exemples de code.
  • Faire les exercices.
  • Poser des questions si nécessaire.

➡️ Lien vers le cours

N'hésitez pas à vous entraidez si vous avez des difficultés !

Cookies, préférences, et gestion multilingues (i18n)

Sources (1/2)

Cookies, préférences, et gestion multilingues (i18n)

Sources (2/2)

  • Illustration par Tamas Pap sur Unsplash
  • Illustration de la gestion multilingue (i18n) générée avec ChatGPT à partir de la saisie suivante :
    "Make a realistic scene of a cookie as the Earth with all continents as the chocolate chips."
  • Illustration de "À vous de jouer !" générée avec ChatGPT à partir de la saisie suivante :
    "Make a game controller made out of cookies in portrait mode."

URLs

Illustrations