Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3187 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

htmlentities et code html, pb avec <br>

n°1353238
polo7
Posté le 25-04-2006 à 00:37:20  profilanswer
 

Reprise du message précédent :
Avec un BDD MySQL, un champ une langue et un champ pour le nom de variable ?

mood
Publicité
Posté le 25-04-2006 à 00:37:20  profilanswer
 

n°1353243
nargy
Posté le 25-04-2006 à 01:07:30  profilanswer
 

oui, je l'ai testé aussi, sur un gros système, et ça fonctionne aussi très bien, même pour du chinois!
PS: on utilisait Postgres et des chaînes binaires


Message édité par nargy le 25-04-2006 à 01:14:48
n°1353254
Djebel1
Nul professionnel
Posté le 25-04-2006 à 02:51:10  profilanswer
 

jsuis pas convaincu par un acces BDD pour un fichier linguistique quand meme. En plus c'est plus relou de les modifier que dans un fichier texte je trouve.

n°1353256
nargy
Posté le 25-04-2006 à 03:11:40  profilanswer
 

Ça dépends pour quelle application. On avait une grosse appli, et les traductions étaient faites par des traducteurs pro, donc on avait fait une BDD à part avec backoffice.

n°1353339
polo7
Posté le 25-04-2006 à 10:31:37  profilanswer
 

l'avantage en effet des BDD c'est qu'on modifie les champs des langues d'un coup et ajouter des variables, donc une ligne de plus, avec les fichiers  txt ou php, il faut aussi ajouter pour chaque langue la variable ou ne pas se tromper dans les lignes.
La BDD semble fournir moins d'erreur, mais quelles sont les caractéristiques les plus optimales? UTF8 ?

n°1353352
nargy
Posté le 25-04-2006 à 10:42:41  profilanswer
 

Pour un BDD le plus simple c'est de mettre carrément du binaire.
Tu n'a alors qu'une chose à configurer: le charset utilisé dans tes pages web. Genre t'a du chinois, il y a plusieurs charset possibles, tu en choisit un (genre BIG5), tu fait tes pages d'ajout/modifiaction de chaîne avec ce charset, et dans ta base tu a directement la chaîne binaire correspondante, sans avoir à te soucier si ta BDD supporte le charset.
Pour avoir une liste de charset, regarde dans les menus de ton navigateur. Pour spécifier un charset, change le doctype (voir w3c.org) et le header de tes pages (Content-type: text/html; charset=... ).
Clic clac ça roule.

n°1353376
polo7
Posté le 25-04-2006 à 11:02:42  profilanswer
 

Mais dans ma BDD, le champ FR par exemple, les é sont remplacé par des ? quand je passe vers binary comme interclassement, mais bon s'il n'y a que ça je remet à jour à la main.
Donc si j'ai bien compris, je choisi l'interclassement en fonction de la langue?
Et si je choisi utf_bin pour tous?

n°1353429
nargy
Posté le 25-04-2006 à 11:48:31  profilanswer
 

plutôt un blob avec MySql.

n°1353543
polo7
Posté le 25-04-2006 à 13:24:43  profilanswer
 

le blob est de toute manière en binary, c'est ça le truc, je vois.

n°1353547
Djebel1
Nul professionnel
Posté le 25-04-2006 à 13:32:12  profilanswer
 

sympa ton truc nargy.
Question très con, comment on faire pour avoir une chaîne de caractère en binaire. J'y capte rien à ces trucs :p

mood
Publicité
Posté le 25-04-2006 à 13:32:12  profilanswer
 

n°1353555
nargy
Posté le 25-04-2006 à 13:37:13  profilanswer
 

> sympa ton truc nargy.  
- heu, je ne souhaite pas récupérer une gloire qui ne m'est pas dû: c'est une méthode russe! (si,si, des fois les méthodes russes sont efficaces)
 
> Question très con, comment on faire pour avoir une chaîne de caractère en binaire. J'y capte rien à ces trucs :p
- t'a rien à faire pour transformer ta chaîne en binaire: de toutes façon toute donnée est codée en binaire dans un ordinateur.

n°1353602
polo7
Posté le 25-04-2006 à 14:29:33  profilanswer
 

avec phpmyadmin il faut changer le champ en blob et ça vient automatiquement en binary.
Le PB, c'est qu'avec mon phpmyadmin, on ne peut plus modifier le contenu, il y a un bouton parcourir.
Je crois que l'on peut garder varchar(200) par exemple et choisir l'interclassement: utf8_unicode_ci.
Il faut juste mettre:
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8">
Entre les balise <header>.
Je vais tester, mais si qqun pense qu'il est mieux de faire autrement?

n°1353610
polo7
Posté le 25-04-2006 à 14:38:56  profilanswer
 

Attention à ne pas oublier de mettre: charset=utf8_general ou utf8_unicode car juste utf-8 ne fonctionne pas.


Message édité par polo7 le 25-04-2006 à 14:46:10
n°1353642
nargy
Posté le 25-04-2006 à 15:11:37  profilanswer
 

En utilisant un charset, tu perds une partie du bénéfice d'avoir tes messages dans une BDD. Laisse tomber PHPMyAdmin pour la modification des messages, fait plutot une page de backoffice et utilise PhpMyAdmin pour ajouter/supprimer.

n°1353731
Djebel1
Nul professionnel
Posté le 25-04-2006 à 16:31:27  profilanswer
 

et dans un fichier texte, tu peux avoir ton texte en binaire pour faire la même chose ? Ou il est forcément encodé dans un charset ?

n°1353828
nargy
Posté le 25-04-2006 à 18:54:21  profilanswer
 

> et dans un fichier texte, tu peux avoir ton texte en binaire pour faire la même chose ? Ou il est forcément encodé dans un charset ?
- il est forcément encodé. C'est à cause que l'éditeur de texte est obligé, à un moment donné, d'enregistrer les caractères que tu a écrit, et il l'enregistre avec des 1 et des 0 (binaire) et il doit connaître quel charset utiliser, histoire de savoir si 'A' est 00101000101 ou 011010100101 (et encore, je simplifie).
Au final, c'est codé eb binaire, seulement il faut bien définir si ``1`` veut dire ``vrai`` et ``0`` faux, ou si ``0`` veut dire ``vrai`` et ``1`` faux. C'est le charset qui indique celà.

n°1354096
polo7
Posté le 26-04-2006 à 10:20:21  profilanswer
 

donc si je créé un fichier fr.txt avec windows, le charset sera celui de windows ?
J'ai déjà fait des scripts avec ces fichiers lang.txt mais selon des serveurs, ca ne s'affiche pas de la même manière.

n°1354102
the_bigboo
Posté le 26-04-2006 à 10:22:53  profilanswer
 

l'un fait de l'utf-8 par défaut tandis que l'autre , ce serait plus de l'ISO8859-1

n°1354116
nargy
Posté le 26-04-2006 à 10:33:01  profilanswer
 

> donc si je créé un fichier fr.txt avec windows, le charset sera celui de windows ?  
- oui, sauf si ton éditeur supporte d'autres charsets (ce doit être le cas de word).

n°1354167
nargy
Posté le 26-04-2006 à 11:14:50  profilanswer
 

Si tu a que des langues européennes, ça ne pose pas de problème, tu utilise le charset iso-western partout. Dans ce cas un fichier texte ou un include fait l'affaire. Et encore, même en franco-français tu voit des grands sites faits avec un charset windows faussement déclaré dans la page HTML qui n'affiche pas certains caractères (comme l'apostrophe).
 
Si tu doit faire cohabiter du russe et du chinois, c'est plus délicat, ça nécessite d'avoir un éditeur capable de changer de charset. La solution de facilité est d'utiliser l'Unicode, avec UTF-8, qui est théoriquement capable d'afficher tous les caractères.
 
Si tu utilise une BDD, tu va avoir des problèmes avec PHPMyAdmin, tu devra changer le charset à la main dans ton navigateur, en utilisant le menu Affichage->Encodage.
 
Toutes les solutions ci-dessus fonctionnent à peu près correctement quand tu est seul à entrer des messages dans la base de donnée. Si tu doit faire traduire les messages par quelqu'un d'autre, c'est déjà plus délicat puisque tu doit lui expliquer qu'il faut choisir le bon charset.
 
Dans la solution avec stockage binaire, tes traducteurs n'ont plus à se soucier de ce détail, et de ton côté ça te facilite la tâche car tu n'est plus obligé de faire correspondre le charset à la fois dans l'HTML et dans la base de donnée. Comme toutes les bases de données ont un stockage binaire, tu peut plus facilement changer de base de donnée ou avoir de multiples bases sans te soucier quelle base supporte quel charset.
 
À chaque langue traduite, tu as un charset associé, et c'est le navigateur qui se charge d'afficher proprement lorsqu'il rencontre le tag <DOCTYPE>. Le navigateur séléctionne aussi le bon clavier, c'est important pour certaines langues qui supportent à la fois plusieurs dispositions de clavier.
 
Ça donne une structure qui ressemble à ça:
Table Traductions:

  • varchar langue
  • varchar nom_message
  • blob message

Table Langues:

  • varchar langue // par ex. ``fr``
  • varchar nom // par ex. ``Français``
  • varchar charset

Indexes:
(Traductions.langue)
(Traductions.nom_message)
(Traductions.langue, Traductions.nom_message)
(Langues.langue)
Jointures:
(Langues.langue, Traductions.langue)
requêtes principales:

  • Requête pour lister les langues:

SELECT langue, nom, charset FROM Langues;

  • Requête pour lister les messages:

SELECT nom_message FROM Traductions WHERE langue='$langue';

  • Requête pour extraire un message:

SELECT message FROM Traductions WHERE langue='$langue' AND nom_message='$nom_message';

  • Requête pour modifier un message:

UPDATE Traductions set message='".mysql_real_escape_string($message)."' WHERE langue='$langue' AND nom_message='$nom_message';
 
Structure de la page de modification des messages:

  • choisir une langue
  • choisir un message
  • donner la traduction
  • enregistrer

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[RESOLU]Faire une gallerie de photo en HTML [SISI CA MARCHE] :)[valid HTML vs invalid HTML] le saviez-vous ?
[Résolu] Du mal a analyser ce codeajouter un label sur un formulaire par code?
souci avec player mp3 flash et page htmlprobleme affichage php/html (simple)
HTML et W3C[PHP] transformer un fichier PDF en TXT ou HTML(idéalement)
Pb de code VB sous access : FileDialogAfficher le lecteur windows media dans une page html
Plus de sujets relatifs à : htmlentities et code html, pb avec <br>


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR