8311 sujets

Développement web côté serveur, CMS

Bonjour,

Afin de finaliser mon site, je me préoccupe des entete html de mon document.

Le site est multilingue. Aussi, je me pose la question de savoir quel sont les entetes et les balises à modifier.

Apres avoir lu l'article à propos des balises META, voici les balises que je modifie actuellement en fonction du language affiché (Le code n'est pas structuré, ce sont des extraits) :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
...
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Language" content="fr-FR" />

Et en php :
header('Content-Type: text/html; charset=UTF-8');// Pas precisé par mon serveur
header('Content-Language: '.$language);// Envoi du serveur toujours en "fr" par defaut


Alors ai-je tout renseigné?
Dois je modifier aussi le DOCTYPE ?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Manque t il quelque choses ?

Concernant le cache, j'ai du mal à avoir une approche clair. Mon site est plutôt statique. Pas de changement quotidien, mais plutot mensuel, voir bi-mensuel.

J'ai cru comprendre qu'en ce cas, il était conseillé de mettre un cache infini (ou presque) et de changer le nom des fichiers lorsque l'on modifie le site.

Mais doit on définir le cache pour chaque appel au sein de la page (chargement des js, des css, des images), ou doit on définir un cache global (je ne crois pas).

Si l'un d'entre vous à un lien vers un article qui s'attarde longuement sur le cache?

Merci
Modifié par tepaze (22 Mar 2011 - 13:35)
Bonjour,

À priori, c'est correct, à un détail près. Puisque tu sert ton document en text/html, il serait préférable d'avoir
<html lang="fr" >


Même si tu souhaite conserver les élément "xhtml" (même si un doctype html serait, du coup, plus logique), il faut avoir l'attribut lang.
Modifié par Laurie-Anne (23 Mar 2011 - 09:58)
Complément à Anne-Laure et par rapport à ton post, la valeur de l'attribut lang de ton élément HTML (langue par défaut du document) doit impérativement être modifiée en conséquence.

<edit>Tu peux coupler xml:lang et lang (avec la même valeur bien-sûr). lang reste indispensable (car supporté par les aides techniques contrairement à xml:lang).
Modifié par yodaswii (23 Mar 2011 - 16:28)
Merci à vous 2 Laurie-Anne et yodaswii.

Mais je me demande s'il est vraiment pertinant de declarer mon document en xhtml. D'autant que j'ai lu ici que cela posais des problemes avec IE.
Et en plus le HTML5 à bien plus le vent en poupe que le xhtml2...
C'est pas trop le lieu pour en debattre, mais si vous avez un lien ou un avis sur le sujet, je suis preneur Smiley smile

Donc, en xhtml

Pour une page en francais :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" >
...
<meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" /> 
<meta http-equiv="Content-Language" content="fr-FR" />


et pour une page en anglais :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
...
<meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" /> 
<meta http-equiv="Content-Language" content="en-EN" />


Et dans tous les cas, en php :
header('Content-Type: application/xhtml+xml; charset=UTF-8');// Pas precisé par mon serveur 
header('Content-Language: '.$language);// Envoi du serveur toujours en "fr" par defaut


C'est mieux ?

Merci
Bonjour,
Tu as raison de dire au PHP dans quel encodage il doit travailler
Et à la page HTML son encodage, alors pourquoi ne pas te jeter à l'eau avec HTML5 ? si je reprends l'exemple français ce donnerai :

<?php
header('Content-type: text/html; charset=UTF8');
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<![endif]-->
</head><body>


La c'est TOP et tu sais que tu peux dire à PHP de travailler dans un encodage différent de celui du HTML résultant, deux exemples
Si PHP doit parcourir un répertoire avec des noms accentués ou lire un SQL en PDO ou MySql codé en Latin-1....
Hop this Help
Modérateur
Bonjour,

Il ne faut pas confondre l'encodage et la langue. Ce sont deux notions complètement différentes.

Pour l'encodage, en 2019, on travaille en UTF-8 autant que possible. On l'indique via la ligne <meta charset="UTF-8"> ou via un header() en php. Attention, dans certains cas le charset peut être imposé par le serveur quoiqu'on mette dans le php ou le html. Et bien sûr, il faut que la page ait été effectivement encodée en UTF-8 lorsqu'elle a été écrite.

Pour la langue, c'est l'attribut "lang" qui permet de la définir. Si ton site est multi-langue, note que tu peux mettre un attribut "lang" avec une valeur différente pour chaque élément de la page si tu le souhaite (et donc pas seulement pour l'élément <html> au début du code de la page).

Le code en html5 (parce qu'il y a très peu de bonnes raisons de faire autre chose) sera du genre ci-dessous (cas d'une page en japonais, avec un paragraphe en Français et un autre en Latin). Tu noteras que selon la langue utilisée, la police et la taille de la police (ainsi que d'autres détails éventuellement) ne sont pas les mêmes par défaut dans toutes les langues et dans tous les navigateurs.

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>&#x30C6;&#x30B9;&#x30C8;</h1>
<p lang="fr">Ci-dessous un texte en Latin.</p>
<p lang="la">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</body>
</html>

On pourrait mettre un header() php précisant le charset. Mais bon, y a des tas de pages qui ne sont pas en php et qui se passent très bien de ce header.

De même, on peut très bien avoir un navigateur qui ignore <meta charset="UTF-8">.

Bref, tout ça est loin d'être de la science exacte Smiley smile .

Amicalement,
Modifié par parsimonhi (28 Oct 2019 - 11:31)
Modérateur
Bonjour,

kustolovic a écrit :
à mon avis, depuis 8 ans, le site a dû être mis en ligne Smiley smile


Misère ! Encore piégé ! Smiley smash

Amicalement,