5568 sujets

Sémantique web et HTML

Ca y est, je galère avec la validation w3c de ma page d'accueil.

Ce que me retourne W3C :

a écrit :
Errors found while checking this document as HTML 4.01 Transitional!


Ca commence mal, mon doctype est sensé être un html5. Je le force donc sur l'HTML5.

a écrit :
No Character Encoding Found!


A part que j'ai un encodage en iso ^^' Je le force donc là-aussi.

Et je me retrouve avec des erreurs incompréhensibles pour moi :
a écrit :
Line 3, Column 15: Stray doctype.
<!doctype html>

Line 4, Column 16: Stray start tag html.
<html lang="fr">

Line 4, Column 16: Cannot recover after last error. Any further errors will be ignored.



Pourtant, il me semble avoir bien suivi ce qui est écrit : dans l'article de Simon-K sur la structure globale du document...

Voilà mon début de code :
<!doctype html>
<html lang="fr">
<head>
	<meta charset="iso-8859-1">
	<title>Yuimen-Aventure, jeu d&#39;aventure gratuit</title>
	<meta name="description" content="Yuimen-Aventure, jeu d&#39;aventure gratuit en ligne. Garanti 100% amusement, d&eacute;lire et PvE (Personnage contre monstres). Jouable en une demi-heure par jour !" />
	<link rel="stylesheet" href="design/entree.css" type="text/css" />
	<link rel="icon" type="image/png" href="/design/favicon.png" />
</head>
<body>


J'ai loupé quoi ?
Modifié par Lothindil (24 Jun 2013 - 08:32)
Ton fichier est encodé en windows-1252, ton html affiche iso-8859-1 et ton serveur ne renvoi pas le charset utilisé.
Ca va, j'ai compris...

C'est mon système multi-lingue qui plante sous le validateur Smiley sweatdrop


edit : en gros il me génère une erreur là :

Il réinvente mon code source pour arriver à ça :
<br />
<b>Notice</b>: Undefined index: HTTP_ACCEPT_LANGUAGE in <b>/home/jeuxloth/www/sd/yui-aventure/classes/class.ToolBox.php</b> on line <b>132</b><br />
<!doctype html>
<html lang="fr">
<head>
 <meta charset="iso-8859-1">



Ce qui correspond dans mon code à :
$Langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$langue = strtoupper(substr(chop($Langue[0]),0,2));
$_SESSION['langue'] =$langue;


Et je fais quoi là ? Smiley sweatdrop
Modifié par Lothindil (21 Jun 2013 - 13:42)
Lothindil a écrit :

C'est mon système multi-lingue qui plante sous le validateur Smiley sweatdrop


Y'a pas que ça, tu as des problèmes avec ton charset. Essai de valider en téléchargeant ta page, tu verras.

Pour le reste définie une langue par défaut si $_SERVER['HTTP_ACCEPT_LANGUAGE'] est vide.

En passant tu parses mal cette valeur, regarde ici :

http://www.thefutureoftheweb.com/blog/use-accept-language-header
Modifié par jb_gfx (21 Jun 2013 - 13:45)
Je la parse mal ? Ta solution donne un tas de valeur, je veux juste la premier du premier crochet (et sinon, je passe en Français ou dans la langue du sous-domaine).


(et pour l'encodage, dreamweaver autant que notepad++ sont d'accord avec moi, mon fichier est bien en iso 8859-1)


edit : je confirme, avec un test d'existence sur le $_SERVER['HTTP_LANGAGE_ACCEPT'] ça passe, aussi bien le doctype que l'encodage ^^ Smiley biggrin

edit2 : ok, je dois utiliser windows-1552 comme label pour faire reconnaître l'encodage iso Smiley biggol (et il me casse les pieds pour que je passe en UTF-8, ce que je veux pas)
Modifié par Lothindil (21 Jun 2013 - 14:00)
Lothindil a écrit :
Je la parse mal ? Ta solution donne un tas de valeur, je veux juste la premier du premier crochet (et sinon, je passe en Français ou dans la langue du sous-domaine).


Tu devrais l'article. La première valeur n'est pas forcément celle par défaut. Il n'y a pas de règles pour l'ordre des langues.

Lothindil a écrit :

edit : je confirme, avec un test d'existence sur le $_SERVER['HTTP_LANGAGE_ACCEPT'] ça passe, aussi bien le doctype que l'encodage ^^ Smiley biggrin


L'encodage de ta page diffère toujours du charset déclaré dans ta page :

Validation Output: 2 Errors

Warning Line 4, Column 28: Using windows-1252 instead of the declared encoding iso-8859-1.

<meta charset="iso-8859-1">
Modifié par jb_gfx (21 Jun 2013 - 14:01)
Bah en même temps, sont pas clair :

Each encoding has a name, and one or more labels.

iso-8859-1 que je pensais être un nom est un label et le nom c'est "windows-1252" Smiley biggol (pourquoi on trouve partout dans les charset iso-8859-1 alors ? -enfin quand c'est pas utf-8 bien sûr^^)


Et je sais bien qu'il n'y a pas de règles, mais dans mon traitement, ça reviendra à prendre la première qui correspond à une de mes langues. Ca change pas grand chose, finalement ? Smiley sweatdrop
Lothindil a écrit :

(et pour l'encodage, dreamweaver autant que notepad++ sont d'accord avec moi, mon fichier est bien en iso 8859-1)


Dans UltraEdit quand j'ouvre ta page j'ai bien Windows 1252 comme encodage, dans DreamWeaver CS6 j'ai Europe de l'ouest mais pas ISO. Et idem sur le validateur du W3C comme tu as pu voir.

Lothindil a écrit :

iso-8859-1 que je pensais être un nom est un label et le nom c'est &quot;windows-1252&quot; Smiley biggol (pourquoi on trouve partout dans les charset iso-8859-1 alors ? -enfin quand c'est pas utf-8 bien sûr^^)


Gné ? Smiley langue

iso-8859-1, windows 1252 et utf-8 sont 3 encodages différents.
Modifié par jb_gfx (21 Jun 2013 - 14:08)
Lothindil a écrit :

Et je sais bien qu'il n'y a pas de règles, mais dans mon traitement, ça reviendra à prendre la première qui correspond à une de mes langues. Ca change pas grand chose, finalement ? Smiley sweatdrop


Je m'auto-cite :

a écrit :

Cette variable renvoie une chaine qui à la forme :

es,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

L'ordre dans lesquelles apparaissent les langues peut varier et la note q est un indice de préférence de l'utilisateur entre 0 et 1 (pour 1 la valeur n'apparait pas).

Ainsi si tu as :

en;q=0.3,fr,fr-fr;q=0.8,en-us;q=0.5

L'utilisateur préfère le français mais ton script va l'envoyer sur le site anglais (parce que "en" apparait au début mais il a un indice de préférence moins élevé que "fr" ou "fr-fr".
jb_gfx a écrit :
Gné ? Smiley langue

iso-8859-1, windows 1252 et utf-8 sont 3 encodages différents.

utf-8 et les autres oui... pour le reste

http://encoding.spec.whatwg.org/#encodings

Si tu recherches dans le tableau iso-8859-1, tu verras qu'il est considéré comme un label de "windows-1252". C'est peut-être la raison pour laquelle dreamweaver ne fait pas de différences (et mets tout ça en "Wester European")

Enfin, j'ai changé mon charset en windows-1252 ^^ et je crois que je vais surtout plus rien changer sous peine de tout casser. (j'ai mes accents qui marchent, mon json qui marche avec les accents et w3c qui est content, je touche plus à rien XD )
jb_gfx a écrit :


Je m'auto-cite :


Cette variable renvoie une chaine qui à la forme :

es,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

L'ordre dans lesquelles apparaissent les langues peut varier et la note q est un indice de préférence de l'utilisateur entre 0 et 1 (pour 1 la valeur n'apparait pas).

Ainsi si tu as :

en;q=0.3,fr,fr-fr;q=0.8,en-us;q=0.5

L'utilisateur préfère le français mais ton script va l'envoyer sur le site anglais (parce que &quot;en&quot; apparait au début mais il a un indice de préférence moins élevé que &quot;fr&quot; ou &quot;fr-fr&quot;.

J'avais loupé le asort dans le code... Ce qui rendait son truc moins intéressant... Smiley biggol

Bon, vais modifier ça (et tenter de pas tout faire planter). Et je mets dans un coin l'article pour plus tard^^)