Custom tag

vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009 - 8 nov. 2007 à 11:15
vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009 - 12 nov. 2007 à 11:29
Bonjour,

je viens d'hétité d'une appli en coldfusion et je dois l'adapter au multilinguisme. Après quelques recherches, je me suis dit que le plus simple était de faire un custom tag qui recevrait 3 parametres :
- file : un fichier xml dns lequel se trouve les traductions
- id :id de l'element que je veux traduire
- lng : la langue

Mais j'ai certains problèmes.
1. Comment fait-on pour que coldfusion reconnaisse mon custom tag. Pour l'instant, j'ai le message suivant : Unknown tag: CFTRANS
2. Comment utiliser mes paramètres dans mon custom tag? Je m'explique. Voici mon code (il n'est pas fini, je cherche). J'aimerais remplacer les string en dur (en gras) par les paramètres (en rouge).
<CFPARAM name= "Attributes.lng" default="EN">
<cfif isDefined('Attributes.file') and isDefined ('Attributes.id')>>   
    <cffile action="read"
    file= "/ec/prod/app/webroot/external/secure/SANCO/idb/web.xml"     a remplacer par le parametre FILE
    variable ="myxml">
   
    <cfscript>
        myxmldoc = XmlParse(myxml);
        selectedElements = XmlSearch(myxmldoc, "/web-app/security-role(ID)/role-name(LNG)"    a remplacer par les parametres I D / LNG );        for (i 1; i LTE ArrayLen(selectedElements); i i + 1)
            writeoutput(selectedElements[i].XmlText & "
");
    </cfscript>
</cfif>
Je sais que ces questions doivent sembler basique pour pas mal de gens mais je viens d'un monde PowerBuilder et tout ceci me dépasse un peu pour l'instant.

Merci

8 réponses

vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009
8 nov. 2007 à 11:22
Au fait, j'utilise HomeSite+ 5.5
0
vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009
8 nov. 2007 à 12:29
Bon, j'ai résolu certains problèmes. Maintenant, j'affiche bien les données se trouvant dans le fichier xml et j'utilise correctement les parametres.

Mais, je suis obligé de mettre mon fichier CFTRANS.cmf dans le répertoire ou se trouve mes cfm qui l'utilisent.
Autre chose, et je ne vois absolument pas pourquoi, mon custom tag semble etre appele 2 fois. En effet, a la place d'avoir mon libellé traduit, je l'ai deux fois.

Exemple, ce code
                General information

                <CF_CFTRANS file="/ec/prod/app/webroot/external/secure/SANCO/idb/Translates/IDB-Homepage-Home.xml" lng="FR" id="title"/>

donne :
General information
Informations générales Informations générales

voici le code de mon custom tag
<CFPARAM name="Attributes.lng" default="EN">
<cfif isDefined('Attributes.file') and isDefined ('Attributes.id')>   
    <cffile action="read" file=#attributes.file#  variable="myxml">
    <cfscript>
        myxmldoc = XmlParse(myxml);
        selectedElements = XmlSearch(myxmldoc, "/doc/#Attributes.id#/#Attributes.lng#");
        writeoutput(selectedElements[1].XmlText);
    </cfscript>
</cfif>
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
8 nov. 2007 à 13:48
Bonjour,

lorsque l'on utilise un module sous forme de customTag il est normal qu'il soit appelé 2 fois :
1. à l'ouverture de la balise
2. à la fermeture de la balise

Pour bien définir un custom tag il faut définir au sein du code ce qu'il faut faire lors de l'appel de l'ouverture ou celui de fermeture comme ci dessous :
<cfif thistag.executionmode EQ "start">
<!--- démarrage du custom tag, c'est ici que l'on récupéreère l'ensemnble des paramètres --->
<cfelse>
<!--- fin du custom tag, généralement c'est ici que l'on renvoie le résultat, éventuellement il peut être agrémenté du contenu qui se trouve entre la balise d'ouverture et de fermeture--->
</cfif>

Pour pouvoir utiliser un autre répertoire (exemple un répertoire reprenant l'ensemble des customtags) il suffit d'utiliser la fonction cfimport :
<cfimport taglib="le path de la librairie" prefix="le nom du préfix, facultatif">

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009
8 nov. 2007 à 14:00
Super, ca marche

merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009
9 nov. 2007 à 10:26
Voici le problème suivant.
J'ai donc bien créé mon custom tag et le fichier xml contenant les traductions. L'entête de mon fichier xml est <?xml version="1.0" encoding="UTF-8"?> car je dois utiliser des caractères de tout types (grecs, bulgares...).
Mais voici ce qui est affiché à l'écran : Informations générales
Il semblerait qu'il y ait un problème avec le CharacterSet. Ou et comment puis-je le changer? Normalement mon browser est capable d'afficher les accents dond je suppose que le problème vient de ColdFucion.
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
9 nov. 2007 à 19:50
Bonjour,

lors de l'écriture de ton fichier XML, tu dois utiliser la fonction XmlFormat pour insérer des données.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009
12 nov. 2007 à 08:30
Je n'écris pas mon fichier xml à partir de coldfusion. Je l'ai créé à la main avec Altova XMLSpy
0
vendrce Messages postés 7 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 10 décembre 2009
12 nov. 2007 à 11:29
C'est bon, j'ai trouvé la solution. Je dois utiliser un ancoding ISO mais le ISO-10646-UCS-2 qui est unicode.

Maintenant, tout fonctionne

Merci encore pour tout
0
Rejoignez-nous