Index du Forum » » English and others languages Support

Auteur

Aptitude de NPDS à devenir polyglote
jpb
2626       
 

  Posté : 08-11-2004 16:37

Bonjour tous

Alors récapitulons :
l'aptitude de NPDS à devenir polyglote...
un petit point...

Contexte de test :
-remove hack est sans la ligne qui sépare par un underscore le & du # (pour ça reste à voir les prob de sécu mais DEV veille... je n'oublie pas je prépare une liste de caractères interdits...)
-l'encodage des pages est en utf-8 (modifié ds meta/meta.php)
21/11/04=>
en fait c'est uniquement le fichier admin/metatags.php qu'il faut modifier (puisque c'est lui qui génère meta/meta.php)
ligne 152 :
$content .= MetaTagMakeSingleTag('content-type', "text/html; charset=utf-8", 'http-equiv');
<=21/11/04

et ne pas oublier toutes les pages "extérieures" chat, print etc...

Ca va mieux beaucoup mieux...

les articles, le chat, le forum, les prefs supporte allégrement le mélange du français et du chinois et de n'importe quel autre langue d'ailleur, à part le martien qui n'est pas dans les base unicode...

Après cette modification de l'encodage bien évidement on a le problème suivant tous les caractères ASCII dont le code est supérieur à 127 (car c'est à partir de la que diverge les voies de l'encodage) pose des problèmes... Ils ne s'affichent plus...
Bien évidement cela est valable pour les donnée dynamiques (bd) et statiques (fichiers php)

les données statiques :
J'ai trouvé une solution pour les fichiers langues ce qui veut dire que tout ce qui passe par une fonction translate est ok !!

modification des fichiers lang-french.php,lang-adm-french.php,pp-lang-french.php,push-lang-french.php etc...

le return de la fonction :

return preg_replace ("/([\x80-\xFF])/e" ,"chr(0xC0|ord('\\1')>>6).chr(0x80|ord('\\1')&0x3F)" , $tmp);
ou alors
return iconv ("ISO-8859-1" ,"UTF-8" ,$tmp);
(le désavantage de cette solution : il faut que la fonction iconv soit implémenté dans php...ce qui n'est pas toujours le cas)

Ces deux solutions fonctionnent pour qu'elle soient définitivement stable il faut que dans les fichier d'autres langues les strings de la varible $tmp soient écrit avec des entitées html pour tout les ch sup à 127.
( j'utilise les entitées dans mes propres traductions (français) et ça ne semble pas poser de problème à part celui d'avoir des phrase peu voire illisible dans les fichiers langues...mais l'outil d'aide à la traduction réglera ce petit problème...)

Une troisième solution serait la modification de ces caractères dans les fichiers langues... ce qui signifie aussi une intervention dans les fichiers php qui utilisent les fonction adm-translate et editor-translate...
Mais est ce la peine...

les données dynamiques :

maintenant reste a s'occuper de ce qui vient des bases de donnée et qui à donc (en théorie) été introduit par des form utilisant l'encodage ISO-8859-1
car à partir du moment ou l'on change l'encodage en utf-8 tout ce qui va entrer maintenant dans les bases de données par les form sera encodé utf-8

la je sèche à part faire une intervention sur la totalité des base de données c.a.d remettre au format toutes les données qui ont été entrée avant le changement d'encodage ?? une petite idée quelque part ????

pour mémoire :
Modification du fichier print.php :
ligne 55 : echo "$sitename
au lieu de
ligne 55 : echo "$sitename

Pour rendre le chat parfaitement multilangue :

Modification des fichiers :
chatrafraich.php
ligne 70 : $Xthing="";
au lieu de
ligne 70 : $Xthing="";

ligne 108 :
au lieu de
ligne 108 :
#######################
chatinput.php
ligne 36 :echo " ";
au lieu de
ligne 36 : echo "";
#######################
chat.php
ajout de ligne entre ligne 17 et 18
nouvelle ligne :


Bon j'ai pas trouver un smiley d'un mec content mais qui sait que d'autres sérieux problèmes à régler se pointent à l'horizon

Message édité par : developpeur




Cet article provient de NPDS

http://www.npds.org/viewtopic.php?topic=14195&forum=32