IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

internationalisation avec pylons


Sujet :

Réseau/Web Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut internationalisation avec pylons
    Bonjour,

    J'essaie de mettre plusieurs langues sur mon site avec le modules pylons.
    J'ai compris le principe et je sais traduire un mot en plusieurs langues grâce aux fichiers compiler lorsque je fais les commandes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    python setup.py extract_messages
    python setup.py update_catalog
    tout fonctionne mais ce que je ne sais pas c'est traduire la page .mako entièrement

    j'ai une page mako de base qui contient le graphisme de la page et dedans je viens importer le contenu des pages

    donc dans base.mako j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
      <head></head>
       <body>
            contenu de la page
    </body>
    </html>
    et dans mes page j'inser le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <%inherit file="/base.mako" />
     
    <%def name="head_tags()">
      <!-- add some head tags here -->
        	<title>${c.title}</title>
    </%def>
     
    <h3>titre</h3>
     
    <p>paragraphe</p>
    Donc si quelqu'un pouvais m'aiguillé pour la traduction d'une page entière, j'ai trouvé un module appellé makolang qui apparemment ferait ceci mais je ne vois pas comment l'utilisé je ne comprend pas leur tuto
    http://www.mr-pc.kiev.ua/en/projects/MakoLang

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Bonsoir,
    Aller à Pylons Book, chapitre 11

    Cherchez 'Translations Within Templates'

    En supposant que cela doivent retourner par défaut "xyz", il va falloir récupérer le langage 'courant' et la traduction de 'xyz' dans celui-ci. I.e. ajouter un peu de 'logique' pour y arriver - qui devrait pouvoir être 'factorisée'.

    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    J'ai déjà été sur leur site et j'ai bien suivi tout ce qu'ils disent, je sais traduire un mot ou une phrase mais pas un texte.

    en fait j'aimerai traduire le corps de ma page

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut c'est pas magique!
    Ha je comprends mieux le soucis

    L'idée des template c'est d'avoir une suite de phrases dans une langue donnée et remplacer automatiquement certains KEYS balisés par $ ou autre par des valeurs qui vont dépendre d'un contexte : autrement dit, on obtient une sorte de texte "paramétrable" à qui on passe un dictionnaire de propriétés pour récupérer la valeur associée à la clé.

    Si on part d'un texte paramétrable écrit en français, il faut non seulement traduire la valeur du paramètre en fonction de... mais aussi le texte paramétrable dans la langue qui va bien et récupérer la variante associée au langage


    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    Pourriez-vous me dire comment je peux faire ?
    Qu'est ce que je dois faire dans les template pour traduire le texte ?

    merci

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Un template n'est qu'un fichier texte dans lequel sont déclarées des 'tags' qui devront être remplacés en fonction de... leur définition dans le contexte.

    Maintenant, partons d'une page avec beaucoup de texte écrit en anglais nous n'allons peut être pas passer directement(*) par des templates quoiqu'il doit être possible de faire correspondre à un "tag" une chaine de caractères de longueur arbitraire contenant des instructions de formatage.

    => a priori pour chaque page de ce type, il y aura une version spécifique à chaque langage: page_en.html et page_fr.html.

    directement(*) : dans page_xx.html, il sera peut être utile de remplacer certains éléments en fonction du contexte (langue, personne, ...).

    => transformer page_xx.html en template pour effectuer ces remplacements.

    Suis je plus clair?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    A ce que j'ai compris il faut créer un page pour chaque langue inde_en.html, index_fr.html, index_es.html etc..
    Et dans chaque page on met des 'tags' par exemple ?

    voilà ce que j'ai dans mon fichier base.mako

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
    <%!
    	from pylons.i18n.translation import set_lang, _, lazy_ugettext, get_lang
            from makolang import format, gettext, ngettext
     
    %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
      <head>
     
    	 <link rel="stylesheet" href="../css/stylesIE.css" type="text/css" media="screen" />
    	<link rel="alternate" type="application/rss+xml" href="http://127.0.0.1:5000/web_page/rss.xml" />
    	<!--[if !IE]> <!-->
    	<style type="text/css">
                    @import "../css/stylesFF.css";
    	</style>
    	<!--> <![endif]-->
            ${self.head_tags()}
     
      </head>
      <body>
     
     
     
    <div id="container">
     
    		<div id="header">
    			<img src="../images/logo.png" alt="logo" id="logo" />
    			<h2>Bienvenue sur notre Wiki </h2>
    		</div>
    		<!-- fin header -->
    		<hr />
     
     
     
    			<div id="menu">
    				<div id="flags_bar">
    					<a href=""><img src="../images/FR.png" alt="francais" onclick="changeLangue()"/></a>
    		       		 	<a href="en"><img src="../images/GB.png" alt="anglais"/></a>
    				</div>
    				<!-- fin flags bar -->
     
    			    	<ul>
    				    	<li><a href="../wiki2/index" class="home">Accueil</a></li>
    				    	<li><a href="../telechargement/index">Téléchargement</a></li>
    				    	<li><a href="../documentation/index">Documentation</a></li>
    				    	<li><a href="../contact/index">Contact</a></li>
    				    	<li><a href="">FAQ</a></li>
    				</ul>
     
    		    	</div>
     
    		    	<!-- fin div id="menu" -->
    		     	<div id="barre_chemin">
    			    	<span>Vous êtes ici : chemin/vers/la/page</span>
    		    	</div>
    		    	<!-- fin div id="barre_ss_menu" -->
     
     
    		<div id="content">
    			<div class="left">
      				 ${self.body()}
      				 <br /><br />
     
      				 Default: ${_(u'Hello')} <br />
     
    				% for lang in ['fr', 'en', 'es']:
    					<% set_lang(lang) %>
    					${get_lang()}: ${_(u'Hello')} <br />
    				% endfor
     
      				<% test = _(u"some text avec des e é et plusieurs lettre avec accent à l'accent ") %>
     
     
    				<% session['lang'] = 'es' %>
    				<% session.save() %>
     
    				% if 'lang' in session:
            				<% set_lang(session['lang']) %>
            				${get_lang()}
            			% endif
     
     
     
    			</div>
    			<!-- fin div id="left" -->
     
    			<div class="right search">
    				<h2>Rechercher :</h2>
    				<form name="search" action="">
    					<input type="text" name="search" />
    					<input type="submit" value="ok" />
    				</form>
     
    			</div>
    			<!-- fin search -->
     
    			<div class="right">
     
    				<h2>Categories :</h2>
    					<p class="puces_list">
    						<ul><li>menu de droite Categories</li></ul>
    					</p>
     
    					<p class="puces_list">
    					<ul><li>
    					Ciliciam vero, quae Cydno amni exultat, Tarsus nobilitat, urbs perspicabilis hanc condidisse Perseus 						memoratur, Iovis filius et Danaes, vel certe ex Aethiopia profectus Sandan quidam nomine vir opulentus et 						nobilis et
    					</li></ul>
    					</p>
     
    				<h2>Archives</h2>
    					<ul><li>menu de droite Archives </li></ul>
     
    					<ul><li>
    					Ciliciam vero, quae Cydno amni exultat, Tarsus nobilitat, urbs perspicabilis hanc condidisse Perseus 						memoratur, Iovis filius et Danaes, vel certe ex Aethiopia profectus Sandan quidam nomine vir opulentus et 						nobilis et
    					</li></ul>
     
    			</div>
     
    			<div class="right rss">
     
    				<a href="../web_page/promoRss.xml"><img src="../images/feed-icon.png" /></a> <h2>RSS :</h2>
    				<p>
    					% for item in c.myfeed['entries']:
    						<div class="titleFeed"><a href="${item.link}">${item.title}</a></div>
    						<div class="descFeed">${item.description}</div>
     
    					% endfor
     
    				</p>
    			</div>
    			<!-- fin div id="right" -->
     
    			<div style="clear: both;"> </div>
    		</div>
                 	<!-- fin div id="content" -->
     
                 <div id="footer">
    			<a href="">pied de page</a> -
    			<a href="http://www.pylonshq.com">www.pylonshq.com</a>
    	     </div>
    	     <!-- fin div id="footer" -->
            </div>
            <!-- fin div id="container" -->
        </body>
    </html>
    et les autres pages hérite de base.mako comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%inherit file="/base.mako" />
     
    <%def name="head_tags()">
        	<title>${c.title}</title>
    </%def>
     
     
    <h3>index documentation</h3>
    ici est le texte à traduire entre les balise <p> et </p>

    J'ai trouvé aussi que l'on pouvait utilisé gettext
    http://www.gnu.org/software/gettext
    http://docs.python.org/library/gettext.html

    auriez vous un exemple s'il vous plait ?

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Pour utiliser gettext via Mako, vous avez la possibilité de le faire avec le plugins Babel, voir: http://www.makotemplates.org/docs/usage.html
    qui donne aussi des examples.

    Mais je ne vois pas trop d'intérêt à cela sauf à construire une interface WEB pour (par exemple) une application C utilisant un gestionnaire de fenêtre style GTK/Qt/autre. Dans ce cas, vous avez peut être un existant I18N sous gettext laborieux à reconstruire... et à récupérer car le "coeur" métier pourra évoluer encore longtemps dans son langage d'origine et son GUI GTK/QT/...

    Si vous faites du neuf, ajoutez ces couches (et de la complexité) ne me semble pas utile (mais je n'ai peut être pas compris votre besoin).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    Je pense que je me suis mal exprimé

    Je veux juste avoir un petit exemple comment faire un fichier .mako avec sa traduction depuis le fichier .mo de pylons?

    si j'ai un paragraphe dans mon fichier .mako comment le traduire lorsque je clique sur le drapeau anglais du site ?

Discussions similaires

  1. Probleme d'Internationalisation avec JSF
    Par perezoso dans le forum JSF
    Réponses: 8
    Dernier message: 08/11/2010, 22h49
  2. Internationalisation avec Eclipse
    Par ymerej dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 15/12/2006, 07h46
  3. internationalisation avec struts
    Par guitouu dans le forum Struts 1
    Réponses: 2
    Dernier message: 16/10/2006, 21h57
  4. [NetBeans] Internationalisation avec netbeans 5.0
    Par jeltimohamed dans le forum NetBeans
    Réponses: 4
    Dernier message: 01/05/2006, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo