Django-fr

Forum

#1 19-01-2011 10:13:03

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

gerer les accents du français

Bonjour

dans ma config de django le moindre accent dans les templates ou les
fichiers py (concatenation de string) sont generateur d'erreur

mais plus je développe mon site et plus j'ai besoin d'accents dans les
templates

comment ça ce gére ces problemes d'accentuation dans django ?

Tout  conseils ou explicationsseront les bienvenue

merci

tonton

Hors ligne

#2 19-01-2011 10:23:08

Bruno Renié
Membre
Inscription : 11-08-2010
Messages : 52

Re : gerer les accents du français

Hello Tonton,

2011/1/19 Tonton <to.tonton _AT_ gmail.com>:
> Bonjour
>
> dans ma config de django le moindre accent dans les templates ou les
> fichiers py (concatenation de string) sont generateur d'erreur
>
> mais plus je développe mon site et plus j'ai besoin d'accents dans les
> templates
>
> comment ça ce gére ces problemes d'accentuation dans django ?
>
> Tout  conseils ou explicationsseront les bienvenue

Tu peux mettre

# -*- coding: utf-8 -*-

en haut de tes fichiers python. En supposant que tes fichiers sont en
UTF-8, sinon mets l'encoding que tu utilise.

Bruno

Hors ligne

#3 19-01-2011 10:26:21

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : gerer les accents du français

Bonjour,

Pour les accents dans tes fichiers python, il faut que sur la première ligne de ton fichier (avant tout code python) tu rajoutes :

# -*- coding: utf-8 -*-

Ensuite vérifie bien que l'encodage de ton fichier est utf-8

Pour mettre des accents dans des chaines python, fait les précéder par un u :

ma_chaine = u"Je suis une chaîne Unicode"

De même pour tes modèles, définit la méthode

def __unicode__(self):
    return unicode(self.name)

Cela te permet de retourner le nom de ton modèle avec des accents dans la BDD.
Vérifie que tes templates sélectionne bien un charset utf-8 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Titre de la page</title>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
   </body>
</html>

À partir de là, tu auras déjà plus de facilité à gérer les caractères spéciaux avec Python et Django.

Hors ligne

#4 19-01-2011 11:27:07

Bruno Bord
Membre
Inscription : 11-08-2010
Messages : 25

Re : gerer les accents du français

> dans ma config de django le moindre accent dans les templates ou les
> fichiers py (concatenation de string) sont generateur d'erreur
>

La norme, c'est aussi de mettre toutes les chaînes en anglais (donc,
pas d'accent dans les source .py) et d'utiliser l'internationalisation
intégrée dans Django

http://docs.djangoproject.com/en/dev/topics/i18n/

> mais plus je développe mon site et plus j'ai besoin d'accents dans les
> templates

Dans les templates, cela ne doit poser aucun problème, si tes fichiers
sont encodés en UTF-8 et qu'ils envoient les bon headers + meta.
Mais une fois de plus, mettre les chaînes des templates en anglais +
traduire, c'est un bon réflexe à adopter.

--
No'
http://jehaisleprintemps.net

Hors ligne

#5 19-01-2011 14:25:52

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : gerer les accents du français

2011/1/19 Bruno Bord <mlbrunobord _AT_ gmail.com>

> > dans ma config de django le moindre accent dans les templates ou les
> > fichiers py (concatenation de string) sont generateur d'erreur
> >
>
> La norme, c'est aussi de mettre toutes les chaînes en anglais (donc,
> pas d'accent dans les source .py) et d'utiliser l'internationalisation
> intégrée dans Django
> bon j'ai essayé
>

# -*- coding: utf-8 -*- et
# -*- coding: fr_FR.UTF-8-*-  (dans mon env )

a priori ça ne change rien !
mais j'y travaillerai !

Hors ligne

#6 19-01-2011 21:01:45

afranck64
Membre
Inscription : 30-12-2010
Messages : 20

Re : gerer les accents du français

Bonsoir,
Pour ce qui est des méthodes __unicode__ de tes objets tu pourrais utiliser des trucs du genre:

def str_to_unicode(txt):
    res = u""
    for char in txt:
        res+= unichr(ord(char))
    return res

Ou

unicode(txt,"latin1")

Par contre pour ce qui est des caractères accentués dans les Templates, je me creuse encore les méninges.

Dernière modification par afranck64 (19-01-2011 21:07:58)

Hors ligne

#7 22-01-2011 22:33:59

bibou
Membre
Inscription : 13-10-2010
Messages : 7

Re : gerer les accents du français

Salut, ben moi dans les template je remplace les accents par le codage HTML.
exemple je remplace "é" par "&eacute;"
cf. la page http://www.commentcamarche.net/contents/html/htmlcarac.php3 pour
la liste des caractères spéciaux.

A+

Le 19 janvier 2011 21:01, Franck Awounang Nekdem <afranck64 _AT_ yahoo.fr> a
écrit :

> Bonsoir,
> Pour ce qui est des méthodes __unicode__ de tes objets tu pourrais
> utiliser des trucs du genre:
>

def str_to_unicode(txt):
>    res = u""
>    for char in txt:
>        res+= unichr(ord(chr(char)))

> Ou
>

unicode(txt,"latin1")

>
> Par contre pour ce qui est des caractères accentués dans les Templates,
> je me creuse encore les méninges.
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#8 23-01-2011 01:33:22

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : gerer les accents du français

Où alors tu configures proprement le charset de tes pages HTML et tu n'a plus
besoin d'utiliser des entités html pour représenter tes caractères
accentués/spéciaux :

http://www.w3.org/International/O-HTTP-charset


Le samedi 22 janvier 2011 22:33:59, Franck PUJOL a écrit :
> Salut, ben moi dans les template je remplace les accents par le codage
> HTML. exemple je remplace "é" par "&eacute;"
> cf. la page http://www.commentcamarche.net/contents/html/htmlcarac.php3
> pour la liste des caractères spéciaux.
>
> A+
>
> Le 19 janvier 2011 21:01, Franck Awounang Nekdem <afranck64 _AT_ yahoo.fr> a
>
> écrit :
> > Bonsoir,
> > Pour ce qui est des méthodes __unicode__ de tes objets tu pourrais
> > utiliser des trucs du genre:
> >
> >

def str_to_unicode(txt):
> >    res = u""
> >    
> >    for char in txt:
> >        res+= unichr(ord(chr(char)))

> >
> > Ou
> >

unicode(txt,"latin1")

> >
> > Par contre pour ce qui est des caractères accentués dans les Templates,
> > je me creuse encore les méninges.
> > _______________________________________________
> > django mailing list
> > django _AT_ lists.afpy.org
> > http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#9 23-01-2011 11:41:15

bibou
Membre
Inscription : 13-10-2010
Messages : 7

Re : gerer les accents du français

Salut David, concrètement comment tu configure le charset dans tes templates
django ?

Sinon, je viens de m'apercevoir que finalement je n'ai pas besoin de
remplacer les caractères accentués dans mes templates par des entités HTML.
j'ai tout simplement changer l'encodage de l'éditeur que j'utilise
(notepad++): j'ai mis UTF8 au lieu de ANSI (valeur par défaut).

cordialement,
Franck

Le 23 janvier 2011 01:33, David THENON <david.thenon _AT_ wanadoo.fr> a écrit :

> Où alors tu configures proprement le charset de tes pages HTML et tu n'a
> plus
> besoin d'utiliser des entités html pour représenter tes caractères
> accentués/spéciaux :
>
> http://www.w3.org/International/O-HTTP-charset
>
>
> Le samedi 22 janvier 2011 22:33:59, Franck PUJOL a écrit :
> > Salut, ben moi dans les template je remplace les accents par le codage
> > HTML. exemple je remplace "é" par "&eacute;"
> > cf. la page http://www.commentcamarche.net/contents/html/htmlcarac.php3
> > pour la liste des caractères spéciaux.
> >
> > A+
> >
> > Le 19 janvier 2011 21:01, Franck Awounang Nekdem <afranck64 _AT_ yahoo.fr> a
> >
> > écrit :
> > > Bonsoir,
> > > Pour ce qui est des méthodes __unicode__ de tes objets tu pourrais
> > > utiliser des trucs du genre:
> > >
> > >

def str_to_unicode(txt):
> > >    res = u""
> > >
> > >    for char in txt:
> > >        res+= unichr(ord(chr(char)))

> > >
> > > Ou
> > >

unicode(txt,"latin1")

> > >
> > > Par contre pour ce qui est des caractères accentués dans les Templates,
> > > je me creuse encore les méninges.
> > > _______________________________________________
> > > django mailing list
> > > django _AT_ lists.afpy.org
> > > http://lists.afpy.org/mailman/listinfo/django
>
> --
> Cordialement,
> David THENON.
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#10 24-01-2011 10:03:41

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : gerer les accents du français

Salut,

> Salut David, concrètement comment tu configure le charset dans tes
> templates django ?

Je code toujours en utf8 et je spécifie bien le bon charset dans les métas de
mon template de base :

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

C'est tout.

Hors ligne

Pied de page des forums