Aller au contenu

Internationaliser un lisp


Maximilien

Messages recommandés

Je suis en train de créer un applicatif pour mon bureau d'étude mais je me bute juste à une seule chose: la langue.

 

j'ai découvert la fonction (ver) "Visual Lisp 2005 (fr)" sur les postes en verson française et "Visual Lisp 2005 (en)" en anglaise

 

mon problème n'est pas dans les commandes : "_-layer" "_-SET" etc....

 

mais plus dans le style : (commande "_mtext" PointFinal " Justifier" " HautGauche") dont l'équivalent est TopLeft.

 

Je n'ai trouvé que la solution décrite ci dessous et je voudrais savoir s'il existe un moyen plus rapide de faire ce genre de traduction

 

(setq PRIVE_VERSION

(strcase (vl-string-subst "-" " "

(vl-string-subst "" ")"

(vl-string-subst "" "(" (vl-string-left-trim "Visual LISP " (ver)))))

)

)

(if

(= (strcat (chr (vl-string-elt PRIVE_VERSION

(+ (vl-string-position (ascii "-") PRIVE_VERSION) 1))

)

(chr (vl-string-elt PRIVE_VERSION

(+ (vl-string-position (ascii "-") PRIVE_VERSION) 2))

))

"FR")

(setq PUBLIC_LANGUE (list "DUCALQUE" "DUBLOC" ...... ))

)

(if

(= (strcat (chr (vl-string-elt PRIVE_VERSION

(+ (vl-string-position (ascii "-") PRIVE_VERSION) 1))

)

(chr (vl-string-elt PRIVE_VERSION

(+ (vl-string-position (ascii "-") PRIVE_VERSION) 2))

))

"EN")

(setq PUBLIC_LANGUE (list "BYLAYER" "BYBLOC" ......... ))

)

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Lien vers le commentaire
Partager sur d’autres sites

hello,

j'ai pas bien compris ton souci,

est ce que tu veux que la Ligne de Commande soit dans la langue choisie ?

ou est ce autre chose ?

 

sinon il te sera possible d'utiliser GETCNAME

qui te renseignera sur le nom de la commande.

il est Grandement conseillé d'utiliser l'anglais dans les Lisp.

amicalement

 

 

[Edité le 2/11/2004 par didier]

Lien vers le commentaire
Partager sur d’autres sites

c'est bon pour le getcname ca c'est fait

 

mais ce sont pour les paramètres du type "ducalque" ou "dubloc"

ou encore plus insidieux les pramètres de justifcation des textes :

 

HG (HautGauche) => TL (TopLeft)

BD (BasDroite) => BR (BottomRight)

 

getcname c'est bien pour trouver l'anglicisation des fonction mais les paramètres

 

quand tu tapes _pedit sur un AutoCAD francais :

[Clore/Joindre/Epaiss/Modif-sommet/Lissage/sPline/Retrouver/Typeligne gén/annUler]:

 

en anglais

[Open/Close/Join/Width/Fit/Spline/Decurve/Ltype gen/eXit]

 

tu remarquera que pour l'épaisseur c'est W en EN et E en FR

 

comment fais-tu? à part lister toute les commandes que tu veux et créer une liste qui aura les bon paramètres selon la langue de l'autoCAD?

 

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Lien vers le commentaire
Partager sur d’autres sites

hello,

je te prie de m'excuser, mais je ne connaîs toujours pas le but à atteindre.

 

pourquoi veux tu changer quelque chose à la langue ?

 

c'est pour que la ligne de commande soit française partout ?

 

Je réponds toujours en anglais dans mes lisp,

c'est vrai que la traduction des options est empirique, mais c'est toujours la même chose.

 

à plus

 

Lien vers le commentaire
Partager sur d’autres sites

En lisant ces différents messages j'étais un peu embarassé comme Didier.

Je n'arrivais pas à comprendre ce que Maximilien voulait.

Mais en fait la réponse de Patrick_35 m'a peut-être mis sur la voie:

 

Effectivement Patrick en langage universel, le paramètre à introduire dans les ordres commandés par autolisp va s'écrire comme tu l'as si bien décrit:

 

- F comme fenêtre va donner _w comme windows.

 

Ensuite, il faut se faire patiement une liste de correspondance entre les paramètres que l'on a l'habitude de saisir en francais et ceux que l'on va écrire dans notre programme en langage universel.

 

Je crois en fait que Maximilien veut permettre à l'opérateur de saisir le paramètre au clavier dans son programme lisp.

Auquel cas , si celui-ci est francais il va taper F, s'il est espagnol il va taper autre chose , etc ...

Ensuite son programme pourrait interpreter le paramêtre ainsi saisi dans sa langue d'origine pour le tranformer en langage universel afin que son applicatif puisse être porté sur plusieurs licences de langues différentes ...

Néanmoins à celà il y aura un autre pb. Il faut alors référencer tous les dialogues du programme ainsi développé dans des fichiers textes spécifiques adaptés pour chaque langue.

Et dans ce cas mon cher Maximilien, il te faut aussi te farcir des listes d'équivalence entre tous les paramètres à saisir dans la langue voulue vers le langage universel..

Ca peut se faire mais bon courage tout de même !!

 

Il y a une solution plus simple qui consiste à proposer tout simplement le paramètre en langage unversel:

 

(setq tstyle (getstring "\n Saisir style de texte: HautDroit[_TR]\HautGauche[_TL] ....))

avec éventuellement un initget avant.

L'Utilisateur est donc obligé quelquesoit sa langue d'utiliser d'office les paramètres en langage unversel. Auquel cas il n'est plus nécessaire de faire une correspondance entre les paramètres .

 

Formateur

ATC Autocad - Mechanical - Inventor - Electrical

Lien vers le commentaire
Partager sur d’autres sites

bonsoir,

ben ça fait plaisir de ne pas être seul dans l'embarras ;)

vivement que Maximilien nous explicite,

car je ne vois pas l'utilité de Traduire les Options.

le but du Lisp étant justement d'Automatiser

toutes ces saisies...

attendons les explications Maximiliennes.

ciao

 

Lien vers le commentaire
Partager sur d’autres sites

Maximilien,

 

Pour les options des commandes en international, malheuresement rien ne peut t'aider à les trouver sur une version Française. Il faut, soit avoir bosser sur une version Anglaise, soit avoir un vocabulaire un peu étoffé en Anglais pour les trouver.

 

Même moi, j'ai du mal des fois à trouver certaines options en Anglais.

 

Dans un lisp (j'avais déjà donné cet exemple!) il faut utiliser (initget)

(defun c:mnutextuel ( / cle_cod)
(initget "Bonjour Aurevoir _Hello Goodbye")
(setq cle_cod (getkword "\nChoix de l'option [bonjour/Aurevoir]? :"))
(if (null cle_cod) (setq cle_cod "Hello"))
(cond
 ((eq cle_cod "Hello")
  (print cle_cod)
  (prin1 " : Bonjour tout le monde")
 )
 ((eq cle_cod "Goodbye")
  (print cle_cod)
  (prin1 " : Au revoir tout le monde")
 )
 (T
  (print cle_cod)
  (prin1 " : Erreur")
 )
)
(prin1)
)

Si tu execute ce code tu remarqueras que la fonction accepte aussi bien les options Francaises que Internationales. Soit tu entre "Bonjour" "B" "_Hello" "_H" "Aurevoir" "A" "_Goodbye" "_G".

La fonction (getkword) pour cet exemple retournera toujours la version internationale si celle ci est définie dans (initget). Donc les tests des réponses devra se faire avec les options en language international.

Ce qui veut dire que le portage du code sur une version Anglaise ne posera aucun problème.

 

NB:Il n'y a qu'un seul underscore "_" dans initget qui spécifie que tu passe en International, toutes les options suivantes (sans underscore) sont considéré AUSSI en International.

 

 

 

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

merci j'essayerai les _TL et _DR sur les postes en anglais dès ce soir quand notre sous-traitant viendra avec son portable.

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité