OVH Cloud OVH Cloud

multilingue

17 réponses
Avatar
lolodev
bonjour

je travaille sur un site multilingue

en l'occurence en ce moment sur la langue polonaise

le menu du site se construit dynamiquement à partir de datas d'une
base myslq4
la table menu est en utf8-unicode

ma page posséde un charset: utf-8
je suis obligé de codé sous forme hexa les caractéres particuliers de
la langue polonaise comme &#263 = c accent
dans la table mysql des menus-

comment procéder ??

merci

10 réponses

1 2
Avatar
Olivier Miakinen

je travaille sur un site multilingue

en l'occurence en ce moment sur la langue polonaise

le menu du site se construit dynamiquement à partir de datas d'une
base myslq4
la table menu est en utf8-unicode

ma page posséde un charset: utf-8


Ok.

je suis obligé de codé sous forme hexa les caractéres particuliers de
la langue polonaise comme &#263 = c accent
dans la table mysql des menus-


Tiens ? Pourquoi donc ? Si à la fois ta table et ta page sont en utf-8,
tu n'as pas besoin d'utiliser les entités numériques. Cela dit, si tu
les utilises, fais-le correctement (« ć » et non pas « &#263 »)
même si cela semble marcher comme ça dans Internet Explorer 6.

comment procéder ??


Comment procéder pour quoi faire exactement ?

Avatar
Thierry
si tout est comme tu le dis... tu n'as rien à faire à part t'assurer
que ta base mysql est bien remplie.

le fichier test.php joint écrit le caractère polonais que tu cites dans une
table mysql dont
le charset EST utf8, et ce sans appliquer aucune conversion.
le même script affiche le contenu de la table dans une page dont le charset
EST utf8.
Le caractère polonais est correctement affiché.

test.php
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>

<?php
require_once('MDB2.php');
$db = MDB2::connect("mysql://root:/test");
if ( isset($_REQUEST['test']) ) {
$req = "insert into test values (null, "{$_REQUEST['test']}")";
$res = $db->query($req);
}
$req = "select * from test";
$res = $db->query($req);
echo "<table>";
while ( $row = $res->fetchRow(MDB2_FETCHMODE_ASSOC) ) {
echo "<tr><td>{$row['id']}</td><td>{$row['text']}</td></tr>";
}
echo "</table>";
?>

<form>
<input type='test' value='&#263;' name='test' /><br />
<input type='submit' />
</form>
</body>

</html>
Avatar
Thief13
FCKEditor à une option qui permet de changer toutles caractère non latin
en entité comme ça. ça marche avec le polonais, le japonais, le
chinois, tout...
Avatar
lolodev
On 23 fév, 07:43, Thief13 wrote:
FCKEditor à une option qui permet de changer toutles caractère non latin
en entité comme ça. ça marche avec le polonais, le japonais, le
chinois, tout...


oups ça m'interresse car j'utilise l editeur wysiwyg fck
où celà se configure ?
merci

Avatar
lolodev
On 22 fév, 16:34, "Thierry" wrote:
si tout est comme tu le dis... tu n'as rien à faire à part t'assurer
que ta base mysql est bien remplie.



La traduction polonaise m'a été donnée sous forme d'un doc pdf que
j'ai copie/colle depuis w2000 dans une base mysql installee
sur un serveur linux via phpmyadmin - à l'affichage le caractere
se transforme en '?'

j'ai de plus testé en créant une table test, interclassement utf8-
unicode-ci
j'ai copié collé le c accent
et affiche toujours ? sur une page web quelque soit le charset de la
page je ne comprends pas ...

Avatar
Thierry
La traduction polonaise m'a été donnée sous forme d'un doc pdf que
j'ai copie/colle depuis w2000 dans une base mysql installee
sur un serveur linux via phpmyadmin - à l'affichage le caractere
se transforme en '?'

moué... il peut s'en passer des choses dans le 'bloc note' de windows.


un truc affreux auquel je pense comme ça
1/- copie colle vers ms word
2/- force l'enregistrement en html
(je l'ai fait une fois pour du chinois... c'est trés agaçant, mais ça
marche.)
3/- récupère les entités &#....; pour batir un formulaire utf-8 ayant autant
de lignes
<input type=='text' name='labels[]' value='&#....;&#....;.....' />
que le label à enregistrer
4/- utilise ce formulaire dans un script pour mettre ta bdd à jour
(un peu de php quand même et en admettant que tu es connecté
à une bdd qui comporte une table labels...)

foreach ($labels as $label) {
$db->query("insert into labels values ("$label")");
}

voilà, c'est boeuf, mais sur le papier ça marche.

Avatar
Olivier Miakinen

j'ai de plus testé en créant une table test, interclassement utf8-
unicode-ci
j'ai copié collé le c accent
et affiche toujours ? sur une page web quelque soit le charset de la
page je ne comprends pas ...


Eh bien la toute première chose à faire, avant de mettre le souk dans ta
base et dans tes programmes, c'est justement de *comprendre* ce qui se
passe. En matière de jeux de caractères, jouer à l'apprenti-sorcier en
appliquant des recettes au hasard n'est jamais une bonne idée : tu
risques de te retrouver avec un truc qui semble marcher mais qui peut
planter plus tard dans un cas que tu n'auras pas prévu.

Alors la première chose à savoir, c'est si le charset est bon *dans les
entêtes HTTP*. Quand tu t'en seras assuré tu pourras éventuellement
doubler cette info par une balise META *dans le code HTML* mais cela ne
doit venir qu'après, quand tu auras complètement résolu tes problèmes de
polonais.

Tu n'aurais pas une URL où l'on pourrait voir le résultat nous-mêmes ?

Avatar
l.hermann
http://www.microkinesitherapie.fr/mk2/pages/fr/3.htm

puis remplcer /fr/ par /pl/ dans l'URL pour passer en polonais
en bas de page à droit de "mentions légales", y mon test: pol?

voilà
Avatar
Thierry
"Olivier Miakinen" <om+ a écrit dans le message de
news:45dec9c4$


Alors la première chose à savoir, c'est si le charset est bon *dans les
entêtes HTTP*. Quand tu t'en seras assuré tu pourras éventuellement
doubler cette info par une balise META *dans le code HTML* mais cela ne
doit venir qu'après, quand tu auras complètement résolu tes problèmes de
polonais.

c'est pas faux. à ce sujet

http://www.fiddlertool.com/fiddler/
ou l'équivalent est ton ami.

Tu n'aurais pas une URL où l'on pourrait voir le résultat nous-mêmes ?
oui, s'il te plaît.


Avatar
Thierry
alors au moins:

je ne trouve pas de charset dans le header http

tu as un
<meta http-equiv="Content-Type" content="text/html; charset=iso8859-1">
----------------------------------------------------------------^
qui traine dans le <head>

tes entités sont "mals" codées
Nowo&#347ci => Nowo&#347;ci
---------------------------------^

voilà
1 2