Source Composant "Up ! Translator" Version 4.0.0;
ImporterModule
/************/
UpsTrn(<UpsTrn.upi>, ImporterDefinitions);
Parametre <upstrn> Section "UpsTrn"
/*********************************/
Prive :
/*****/
Action : Nul Ou Caractere;
Detail : Booleen;
Entete : Booleen;
Format : Nul Ou Caractere;
SousAction : Nul Ou Caractere;
Thesaurus : Nul Ou Caractere;
ThesaurusArrivee : Nul Ou Caractere;
ThesaurusDepart : Nul Ou Caractere;
LangueArrivee : Nul Ou Caractere;
LangueCible : Nul Ou Caractere;
LangueDepart : Nul Ou Caractere;
Variable
/******/
Prive :
/*****/
SousActionDeConstituer : ActionConstituer;
LangueArriveeDecodee:LanguesSupportees;
LangueDepartDecodee:LanguesSupportees;
FormatDeFormater : FormatThesaurus;
LangueCibleDecodee:LanguesSupportees;
Prive :
/*****/
Fonction AppliquerAuxFichiersDuRepertoire2(NomRepertoire:Caractere, Filtre:Caractere,
Traitement : Fonction(NomDuRepertoire:Caractere, NomDuFichier:Caractere)
/***********************************************************************************/
Retourner Booleen) Retourner Booleen
Variable
/******/
ListeFichiers:Nul Ou ListeDe FichierListe;
FichierListeCourant:Nul Ou FichierListe;
Debut
ListeFichiers=ListerFichiers(NomRepertoire,Filtre);
Si ListeFichiers!=Nul Alors
Pour FichierListeCourant=ListeFichiers.ParcoursAuDebut() JusquA ListeFichiers.DernierElement() Faire
Fin Si
Si FichierListeCourant.EstUnRepertoire Alors
Fin Pour
Si (FichierListeCourant.NomFichier==".") Ou (FichierListeCourant.NomFichier=="..") Alors
Sinon
Continuer;
Fin Si
Si Non AppliquerAuxFichiersDuRepertoire2(NomRepertoire+FichierListeCourant.NomFichier+"/",Filtre,Traitement) Alors
Retourner Faux;
Fin Si
Si Non Traitement(NomRepertoire,FichierListeCourant.NomFichier) Alors
Fin Si
Retourner Faux;
Fin Si
Retourner Vrai;
Fin Fonction
Fonction AppliquerAuxFichiersDuRepertoire(Traitement : Fonction(NomDuRepertoire:Caractere,
NomDuFichier:Caractere) Retourner Booleen) Retourner Booleen
/****************************************************************************************/
Variable
/******/
Numero:Entier;
NomDuParametre:Caractere;
NomFichier:Caractere;
NomDuRepertoire:Caractere;
NomDuFichier:Caractere;
Debut
Numero=1;
TantQue Vrai Faire
NomDuParametre=Traduire(UpsTrn,SectionLibelleParametreModule,"Fichier")+Caractere(Numero,"&&");
Fin TantQue
Si Non(LireParametre(UpsTrn,NomDuParametre,"UpsTrn",NomFichier)) Alors
Arreter;
Fin Si
NomDuFichier=ExtraireNomFichier(NomFichier);
NomDuRepertoire=ExtraireNomRepertoire(NomFichier);
Si NomDuFichier.IlExisteJoker() Alors
Si Non AppliquerAuxFichiersDuRepertoire2(NomDuRepertoire,NomDuFichier,Traitement) Alors
Sinon
Retourner Faux;
Fin Si
Si Non Traitement(NomDuRepertoire,NomDuFichier) Alors
Fin Si
Retourner Faux;
Fin Si
Numero++;
Retourner Vrai;
Fin Fonction
Fonction ChargerUnFichierMessage(NomDuRepertoire:Caractere, NomFichierMessage:Caractere) Retourner Booleen
/********************************************************************************************************/
Debut
Si Detail Alors
Ecran.Ecrire(Message(UpsTrn,"ChargementFichierMessage",NomDuRepertoire+NomFichierMessage));
Fin Si
Si Non ChargerFichierMessage(NomDuRepertoire+NomFichierMessage) Alors
Retourner Faux;
Fin Si
Retourner Vrai;
Fin Fonction
Procedure EnvoyerMessageConstituer(LibelleSection:Caractere, MotCle:Caractere)
/****************************************************************************/
Debut
Ecran.Ecrire(Message(UpsTrn,"TraductionSupprimee",MotCle,LibelleSection));
Fin Procedure
Fonction ExecuterConstituer() Retourner Entier
/********************************************/
Debut
SousActionDeConstituer=ActionConstituer(SousAction);
Si ((SousActionDeConstituer!=ConstituerCreation) Et (ThesaurusDepart==Nul)) Ou (ThesaurusArrivee==Nul) Alors
Ecran.Ecrire(Message(UpsTrn,"UsageUpsTrnConstituer"));
Fin Si
Retourner 1;
Si (SousActionDeConstituer==ConstituerCreation) Et IlExisteFichier(UpsHome+"upsnls/upsnls/"+LanguesSupportees(Langue)+"/"+ThesaurusArrivee+".nlt") Alors
Ecran.Ecrire(Message(UpsTrn,"CreationThesaurusImpossible",ThesaurusArrivee));
Fin Si
Retourner 1;
Si ThesaurusDepart!=Nul Alors
Si Detail Alors
Fin Si
Ecran.Ecrire(Message(UpsTrn,"ChargementThesaurus",ThesaurusDepart));
Fin Si
Si Non ChargerThesaurus(ThesaurusDepart) Alors
Retourner 1;
Fin Si
Si AppliquerAuxFichiersDuRepertoire(ChargerUnFichierMessage) Alors
Si GenererThesaurus(ThesaurusArrivee,SousActionDeConstituer==ConstituerSuppression,
Fin Si
Decoder(Detail,Vrai,EnvoyerMessageConstituer,Nul)) Alors
Fin Si
Ecran.Ecrire("\n"+Message(UpsTrn,"GenerationUpsTrnAvecSucces",ThesaurusArrivee));
Retourner 0;
Ecran.Ecrire("\n"+Message(UpsTrn,"GenerationUpsTrnEnEchec",ThesaurusArrivee));
Retourner 1;
Fin Fonction
Procedure EnvoyerMessageTraduire(LibelleSection:Caractere,MotCle:Caractere)
/*************************************************************************/
Debut
Ecran.Ecrire(Message(UpsTrn,"TraductionManquante",MotCle,LibelleSection));
Fin Procedure
Fonction TraduireUnFichier(NomDuRepertoire:Caractere, NomFichier:Caractere) Retourner Booleen
/*******************************************************************************************/
Debut
Si Detail Alors
Ecran.Ecrire(Message(UpsTrn,"TraductionFichier",NomDuRepertoire+NomFichier));
Sinon
Si Non TraduireFichier(NomDuRepertoire+NomFichier,LangueDepartDecodee,LangueArriveeDecodee,EnvoyerMessageTraduire) Alors
Retourner Faux;
Fin Si
Si Non TraduireFichier(NomDuRepertoire+NomFichier,LangueDepartDecodee,LangueArriveeDecodee,Nul) Alors
Fin Si
Retourner Faux;
Fin Si
Retourner Vrai;
Fin Fonction
Fonction ExecuterTraduire() Retourner Entier
/******************************************/
Variable
/******/
IlExisteThesaurus : Booleen;
NomDuParametre : Caractere;
NomThesaurus : Caractere;
NomFichierThesaurus : Caractere;
Numero : Entier;
Debut
LangueDepartDecodee=LanguesSupportees(LangueDepart);
LangueArriveeDecodee=LanguesSupportees(LangueArrivee);
Si LangueDepartDecodee==LangueArriveeDecodee Alors
Ecran.Ecrire(Message(UpsTrn,"UsageUpsTrnTraduire"));
Fin Si
Retourner 1;
Numero=1;
TantQue Vrai Faire
NomDuParametre=Traduire(UpsTrn,SectionLibelleParametreModule,"Thesaurus")+Caractere(Numero,"&&");
Fin TantQue
Si Non(LireParametre(UpsTrn,NomDuParametre,"UpsTrn",NomThesaurus)) Alors
Arreter;
Fin Si
IlExisteThesaurus=Vrai;
Si Detail Alors
Ecran.Ecrire(Message(UpsTrn,"ChargementThesaurus",NomThesaurus));
Fin Si
NomFichierThesaurus=UpsHome+"upsnls/upsnls/"+LanguesSupportees(LangueDepartDecodee)+"/"+NomThesaurus+".nlt";
Si Non IlExisteFichier(NomFichierThesaurus) Alors
Ecran.Ecrire(Message(UpsTrn,"ChargementThesaurusImpossible",NomFichierThesaurus));
Retourner 1;
Fin Si
Si Non ChargerThesaurus(NomThesaurus,LangueDepartDecodee,Vrai) Alors
Retourner 1;
Fin Si
NomFichierThesaurus=UpsHome+"upsnls/upsnls/"+LanguesSupportees(LangueArriveeDecodee)+"/"+NomThesaurus+".nlt";
Si Non IlExisteFichier(NomFichierThesaurus) Alors
Ecran.Ecrire(Message(UpsTrn,"ChargementThesaurusImpossible",NomFichierThesaurus));
Fin Si
Retourner 1;
Si Non ChargerThesaurus(NomThesaurus,LangueArriveeDecodee,Faux) Alors
Retourner 1;
Fin Si
Numero++;
Si Non IlExisteThesaurus Alors
Ecran.Ecrire(Message(UpsTrn,"UsageUpsTrnTraduire"));
Fin Si
Retourner 1;
Si AppliquerAuxFichiersDuRepertoire(TraduireUnFichier) Alors
Ecran.Ecrire("\n"+Message(UpsTrn,"TraductionUpsTrnAvecSucces",LangueArrivee));
Sinon
Retourner 0;
Ecran.Ecrire("\n"+Message(UpsTrn,"TraductionUpsTrnEnEchec",LangueArrivee));
Fin Si
Retourner 1;
Fin Fonction
Procedure EnvoyerMessageFormater(NomFichier:Caractere)
/****************************************************/
Debut
Ecran.Ecrire(Message(UpsTrn,"FormatageFichier",NomFichier));
Fin Procedure
Fonction ExecuterFormater() Retourner Entier
/******************************************/
Debut
FormatDeFormater=FormatThesaurus(Format);
LangueCibleDecodee=LanguesSupportees(LangueCible);
Si FormaterThesaurus(Thesaurus,FormatDeFormater,LangueCibleDecodee,
Decoder(Detail,Vrai,EnvoyerMessageFormater,Nul)) Alors
Sinon
Ecran.Ecrire("\n"+Message(UpsTrn,"FormatageUpsTrnAvecSucces",Thesaurus));
Retourner 0;
Ecran.Ecrire("\n"+Message(UpsTrn,"FormatageUpsTrnEnEchec",Thesaurus));
Fin Si
Retourner 1;
Fin Fonction
Procedure EnvoyerMessageFormaterInverse(MessageEnvoye:Caractere)
/**************************************************************/
Debut
Ecran.Ecrire(Message(UpsTrn,"FormatageDepuisFichier",MessageEnvoye));
Fin Procedure
Procedure EnvoyerMessageFormaterInverse2(LibelleSection:Caractere, MotCle:Caractere)
/**********************************************************************************/
Debut
Ecran.Ecrire(Message(UpsTrn,"TraductionManquante",MotCle,LibelleSection));
Fin Procedure
Fonction ExecuterFormaterInverse() Retourner Entier
/*************************************************/
Debut
Si Thesaurus==Nul Alors
Ecran.Ecrire(Message(UpsTrn,"UsageUpsTrnTraduire"));
Fin Si
Retourner 1;
FormatDeFormater=FormatThesaurus(Format);
LangueDepartDecodee=LanguesSupportees(LangueDepart);
LangueArriveeDecodee=LanguesSupportees(LangueArrivee);
Si Detail Alors
Ecran.Ecrire(Message(UpsTrn,"ChargementThesaurus",Thesaurus));
Fin Si
Si Non ChargerThesaurus(Thesaurus,LangueDepartDecodee,Vrai) Alors
Retourner 1;
Fin Si
Si IlExisteFichier(UpsHome+"upsnls/upsnls/"+LanguesSupportees(LangueArriveeDecodee)+"/"+Thesaurus+".nlt") Alors
Si Non ChargerThesaurus(Thesaurus,LangueArriveeDecodee,Faux) Alors
Fin Si
Retourner 1;
Fin Si
Si FormaterInverseThesaurus(Thesaurus,FormatDeFormater,LangueDepartDecodee,LangueArriveeDecodee,
Decoder(Detail,Vrai,EnvoyerMessageFormaterInverse,Nul),Decoder(Detail,Vrai,EnvoyerMessageFormaterInverse2,Nul)) Alors
Sinon
Ecran.Ecrire("\n"+Message(UpsTrn,"FormatageInverseUpsTrnAvecSucces",Thesaurus));
Retourner 0;
Ecran.Ecrire("\n"+Message(UpsTrn,"FormatageInverseUpsTrnEnEchec",Thesaurus));
Fin Si
Retourner 1;
Retourner 1;
Fin Fonction
Principal
/*******/
Debut
Si Entete Alors
Ecran.Ecrire(Message(UpsTrn,"PresentationUpsTrn1")+"\n");
Fin Si
Ecran.Ecrire(Message(UpsTrn,"PresentationUpsTrn2",Caractere(DateSysteme(),FiltreDate),Caractere(DateSysteme(),FiltreHeure))+"\n");
Selon Action Faire
Cas Pour Traduire(UpsTrn,SectionDivers,"Constituer") Faire
Fin Selon
Retourner ExecuterConstituer();
Fin Cas
Cas Pour Traduire(UpsTrn,SectionDivers,"Traduire") Faire
Retourner ExecuterTraduire();
Fin Cas
Cas Pour Traduire(UpsTrn,SectionDivers,"Formater") Faire
Retourner ExecuterFormater();
Fin Cas
Cas Pour Traduire(UpsTrn,SectionDivers,"FormaterInverse") Faire
Retourner ExecuterFormaterInverse();
Fin Cas
Defaut
Ecran.Ecrire(Message(UpsTrn,"UsageUpsTrn"));
Fin Defaut
Retourner 1;
Fin Principal