Pages :
salut tout le monde !
Je suis en train de traduire un CMS en persan et japonais.....
Pour le persan, ça (c'est pas écrit en hexa, c'est le forum qui converti) :
ویرایش devient ویرایش

Pour le japonais :
変更 deviens 変更


d'où viens le problème ? ps : l'encodage, c'est de l'utf-8 sans BOM
Modifié par doc mcfly (26 Apr 2011 - 19:08)
Bonjour,

Si ce sont bien des données stockées en DB, c'est peut-être un problème avec la DB (interconnexion, encodage des tables...). Vérifie à quoi ressemblent les données dans la DB.
Nan, c'est codé en dur dans le code. En faites, c'est un array de traduction :
a écrit :
Alors la méthode habituelle c'est de définir dans un fichier à part un tableau associatif contenant tous les termes d'une même langue, et de définir le même tableau avec les mêmes clés pour les autres langues dans d'autres fichiers. Quand tu veux une langue précise, tu inclus le bon fichier uniquement.


en.php :
<?php
$termes = array();

$termes['Menu1'] = 'Website navigation';
$termes['Menu2'] = 'Frienly contacts';
?>
fr.php
<?php
$termes = array();

$termes['Menu1'] = 'Navigation du site';
$termes['Menu2'] = 'Contacts amis';
?>

index.php
<?php
$langue = 'fr'; // par exemple



require_once("./langues/$langue.php");

// affichage d'un menu
?>
<h3><?echo $termes['Menu1']; ?></h3>
doc mcfly a écrit :
comment ont fait ????

Pour vérifier les en-têtes HTTP envoyées par le serveur avec la page HTML?
Tu peux utiliser Web Sniffer (site web), Web Inspector dans Chrome ou Safari (onglet Ressources), l'onglet réseau de Firebug, la Web Console dans Firefox 4, etc.

Dans Firefox 4 ça peut ressembler à ça:

http://dl.dropbox.com/u/145744/screens/ff4-webconsole-response-headers.png

Je signale en passant que tout développeur web qui se respecte devrait avoir de bonnes notions de HTTP, et maitriser les outils permettant d'inspecter ou de fabriquer de toute pièce des requêtes HTTP. Peut-être une petite lacune à combler. Smiley cligne
Modifié par fvsch (06 May 2011 - 11:34)
Ah, la minute RTFM du jour. Smiley smile

doc mcfly a écrit :
j'ai ça :
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]
concrètement, c'est quoi ?

C'est un en-tête de la requête HTTP, c'est à dire ce que le navigateur envoie au serveur.
Tout ce qui t'intéresse c'est l'en-tête Content-Type de la réponse HTTP (du serveur au navigateur).

Au risque de me répéter:
fvsch a écrit :
tout développeur web qui se respecte devrait avoir de bonnes notions de HTTP, et maitriser les outils permettant d'inspecter ou de fabriquer de toute pièce des requêtes HTTP
OK, donc, ça devrait normalement marcher ? pourquoi, alors, j'ai ça ?
ویرایش حذف عنوان تاریخ au lieu des caractères ?
Ce forum est en ISO-8859-1, je suis pas sûr que le texte que tu veux nous montrer s'affiche correctement là.
Capture d'écran, page en ligne, ... ?

Pour le reste c'est le jeu habituel qui consiste à vérifier que:
- tes données sont bien en UTF-8 (données en base, fichiers PHP),
- les traitements des données que tu fais ne modifient pas le codage des caractères,
- et les lectures et écritures dans la base de données ne modifient pas le codage non plus.
Pour le texte, c'est le même que sur le forum. Tout est en UTF-8, donc normalement, il n'y a pas d'erreur !
Le seul moyen pour que ça marche, c'est de convertir chaque caractères en hexa. Smiley ohwell
doc mcfly a écrit :
Tout est en UTF-8, donc normalement, il n'y a pas d'erreur !

Si toute la chaine est en UTF-8 et qu'il n'y a pas d'erreurs, alors ce sont tes données qui sont comme ça à la base (donc mal encodées ou corrompues).
doc mcfly a écrit :
Je les ai encodé avec Notepad++. C'est une référence ?

Notepad++ (dans ses versions récentes, donc mettre à jour Smiley cligne ) gère plutôt bien les codages de caractère. Par contre il utilise parfois des noms erronés, notamment "ANSI" pour parler de ISO-8859-1. Il faut aussi distinguer les deux options disponibles qui s'appellent «encoder en <nom du codage>» et «convertir en <nom du codage>», ou quelque chose comme ça. L'une permet de réinterpréter le document (par exemple si l'éditeur a ouvert un document UTF-8 en pensant que c'était de l'ISO-8859-1, et qu'on veut lui dire «mais non c'est de l'UTF-8!»), et l'autre ne réinterprète pas le document mais réécrit les octets dans le codage choisi la prochaine fois que l'on enregistre le document.

Pour tester le codage réel d'un document texte, tu peux l'ouvrir dans Firefox (ou un autre navigateur), et modifier le codage utilisé pour interpréter la page avec le menu Affichage > Codage des caractères. Quand tu as trouvé le bon codage, l'affichage du texte devrait être correct.
OK. Ca me dit que c'est de l'iISO-8859-1, je comprend pourquoi ça coince. Je vais essayer de résoudre.
Bonjour !
sinon vous connaissez pas un moyen de traduire des caractères en &#1608;&#1740;&#1585;&#1575;&#1740;&#1588; ?
Coucou,

dans le code source de la page alsacreation, on peut lire :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Cela signifie que tes caractères ne pourront pas s'afficher : la norme iso est assez basé sur l'europe.

UTF-8-general pourrait peut-être t'aider ?

dans ce cas, sur ton site, pour forcer l'affichage avec un autre encodage, il faut modifier la META sus-mentionné.

Pour résumé ma compréhension des encodages :
Une des différences fondamentale entre iso et utf (concernant l'encodage) est que ISO est limité en nombre de caractère. UTF utilise un principe qui fait qu'un caractère peut-être encodé sur 2, 3, 5 octets si besoin. UTF est bien plus évolutif, mais ... il prend aussi plus de place car tout caractère est codé en minimum 2 octets.

Ainsi, si un caractère s'affiche bisarrement en plusieurs symbol ... il s'agit certainement d'un caractère UTF qui est interprété en ISO. (ton problème je pense)
A l'inverse, si un caractère s'affiche sous forme d'un point d'interrogation dans un losange ... il s'agit certainement d'un caractère ISO, affiché en UTF. (ça peut être le cas des accents, des OE bouclé, des ç cédilles, etc.)


kéké
PS : Je n'ai jamais essayé de mettre Magdales en Japonnais. Peut-être l'occasion, juste pour tester ?
Modifié par keke (16 Dec 2011 - 09:18)
Hello,

Désolé keke, mais ton message contient un grand nombre de contresens.
keke a écrit :
Cela signifie que tes caractères ne pourront pas s'afficher : la norme iso est assez basé sur l'europe.

ISO n'est pas une norme mais un organisme de normalisation qui produit un ensemble de normes très variées (loin d'être limitées aux encodages).

Les encodages ISO-8859 ne sont pas "basés sur l'Europe" : par exemple, ISO-8859-6 permet de coder les caractères arabes les plus courants. En revanche, aucun encodage ISO-8859 ne permet de coder un caractère sur plus d'un octet, limitant donc effectivement le nombre de caractères possibles.
keke a écrit :
Une des différences fondamentale entre iso et utf (concernant l'encodage) est que ISO est limité en nombre de caractère. UTF utilise un principe qui fait qu'un caractère peut-être encodé sur 2, 3, 5 octets si besoin. UTF est bien plus évolutif, mais ... il prend aussi plus de place car tout caractère est codé en minimum 2 octets.

"UTF" n'est pas un encodage de caractères. Il faut parler d'UTF-8, UTF-16, UTF-32, ... Concernant UTF-8 (le plus utilisé sur le Web), il est faux de dire de tout caractère est codé sur 2 octets. Chaque caractère est codé sur un nombre d'octets allant de 1 à 6, ce qui permet notamment de faire en sorte que tout document codé en ASCII soit équivalent au même document codé en UTF-8.
Modifié par Julien Royer (16 Dec 2011 - 10:50)
Salut Julien,

Je n'ai pas trop l'impression de me contredire ... au pire, je suis pas assez précis. Dis moi si effectivement tu persistes à croire en mes contre-sens.

>>> "basé en europe"
Mis à part l'arabe donc, ce ne sont que des langues européennes. Je sais qu'historiquement ca a été le cas ... et que peu d'efforts a été fait pour internationaliser les normes. Unicode étant par exemple moins "global" que UTF-8-general.

>>> Norme iso.
Dans le contexte, et avec le lien juste au dessus, il s'agit bien de l'iso-8859-1 pour le web. Je ne parle évidement pas de ISO 14000 sur l'environnement, ni de ISO Lux pour les fenêtres.
Cependant, merci de m'indiquer que je manquais de précisions.

>>> il est faux de dire de tout caractère est codé sur 2 octets
Là, je crois que c'est une erreur de lecture. J'indique explicitement que UTF-8 est codé sur au minimum 2 octets, et qu'il peut y en avoir 2,3,5 voir plus. Je manque de précision, mais là, tu me fais dire ce que je ne dis pas ^^. (cela dit, c'est pas grave, tu apportes encore plus de précision encore une fois)


Ces précisions ayant été apportées, penses que la modification que je propose (à savoir, rajouter une ligne de META sur le site de doc McFly) soit une solution à son problème ?

kéké
PS : j'essayerais de passer Magdales en Japonnais... juste pour voir ^^
http://forum.alsacreations.com/topic-18-59257-1-jeu-web-Magdales-internationalise.html
Pages :