OVH Cloud OVH Cloud

[WD8] developpement International Multilangue

5 réponses
Avatar
Real Phil
Bonjour,

Je suis à transférer une application DOS internationale français/anglais à
Windev.

La version actuelle en langage DOS comporte une option qui permet à l'usager
de choisir tous les formats possibles sur la planète (jj.mm.aaaa,
mm/jj/aaaa, aaaa.mm.jj, etc...). Pour ce faire nous utilisons une seule
ligne de code pour modifier toutes les saisies et les affichages de dates
dans n'importe quel format choisi par l'usager.

J'ai cherché sans succès une fonction semblable dans Windev. Est-ce que cela
existe?

Réal Phil

5 réponses

Avatar
mat
Real Phil wrote:
Bonjour,

Je suis à transférer une application DOS internationale français/anglais à
Windev.

La version actuelle en langage DOS comporte une option qui permet à l'usager
de choisir tous les formats possibles sur la planète (jj.mm.aaaa,
mm/jj/aaaa, aaaa.mm.jj, etc...). Pour ce faire nous utilisons une seule
ligne de code pour modifier toutes les saisies et les affichages de dates
dans n'importe quel format choisi par l'usager.

J'ai cherché sans succès une fonction semblable dans Windev. Est-ce que cela
existe?



Salut Réal,

Désolé de te décevoir déjà le lundi...
pour les fenêtres, il faut employer le masque Système (Windows param
régionaux), je ne crois pas qu'il y a une autre solution. Pire, encore
Windev a la fâcheuse habitude de convertir un masque de champ
DateSystème en masque multilingue ce qui est vraiment ennuyeux, car non
seulement ce n'est pas voulu, mais seul Anglais et Français sont crées
et le projet est définie pour 5 langues. Je n'ai jamais compris à quel
moment Windev fait de telles changements, peut-être lorsqu'on copie des
fenêtres par "Sauvegarder sous...".

Sous l'éditeur d'états, le masque DateSystème n'existe pas. On peut
manuellement saisir "UseSystemMask" ce qui donne le même résultat...

Je ne pense pas qu'on puisse changer le masque des dates par
programmation, car les masques standard "mask..." n'incluent rien pour
les dates.

Salutations
Mat
Avatar
Real Phil
Salut Mat,

Désolé de te décevoir déjà le lundi...


Je ne suis pas trop déçu parce que je m'en doutais. Cela m'a plutôt stimulé
pour rechercher à élaborer les solutions possibles. Donc, je te remercie de
ta réponse qui m'a guidé dès le départ dans ma recherche.

Comme je sais que tu connais Foxpro, la commande "SET DATE [TO] AMERICAN |
ANSI | BRITISH | FRENCH | GERMAN | ITALIAN | JAPAN | TAIWAN | USA | MDY |
DMY | YMD | SHORT | LONG" est vraiment superbe et permet avec un minimum
d'effort d'appliquer aisément le format de date qui convient à quiconque. Je
crois vraiment que nous devrions en faire la suggestion à PC Soft. Je vais
d'ailleurs le faire.

Je ne vais pas utiliser DateSystème en masque multilingue puisqu'il cause
des problèmes.
Mais je constate après plusieurs tests que la propriété MasqueSaisie est
très très puissante.

Par exemple, le code suivant placé dans la déclaration globale d'un fenêtre
;
FmtDate="JJJ JJ MMM AAAA" // modifiable avec Ctrl+T selon la langue
DteNaissance..MasqueSaisie=FmtDate
DteAdhésion..MasqueSaisie=FmtDate

...fonctionne très bien.
Cela affiche correctement tel que demandé et la saisie jour, mois et année
se fait dans le bon ordre.

Plus fort encore, si le format demandé est (style américain) FmtDate="MMMM
JJ, AAAA", l'affichage est bien en mots et en chiffres tel que demandé, ET
la saisie est correcte en demandant la saisie dans le bon ordre, soit mois
jour, année. C'est superbe ça! Et après la saisie, ça affiche
automatiquement dans la format "étendue" tel que spécifié dans FmtDate. Le
jour au long peut même y être inclus avec "JJJJ" sans aucune programmation.
Vraiment bien.

J'ai testé avec succès dans les fenêtres, les tables et les états. Ça
fonctionne bien partout.
Les seuls problèmes est qu'il faut placer les formats de dates au début de
CHAQUE fenêtre, table ou État et spécifier chaque champ Date qui doit être
impliqué.

Une solution consisterait à écrire le format choisi par l'usager dans une
rubrique de fichier (comme Info.FmtDateGeneral) et imputer cette valeur à la
variable FmtDate par ex. FmtDate=Info.FmtDateGeneral + l'assignation aux
champs concernés.

Ou encore, placer au début de chaque fenêtre, table, état une procédure qui
"examine" tous les champs et si le champ est de TypDate lui imputer le
format désiré.

Bref, il y a plusieurs solutions mais plus laborieuses qu'en Foxpro - mais,
plus puissantes.

J'ai bien l'impression que je n'ai pas trop le choix que de transférer cette
fonction sur la nouvelle version en Windev. Par exemple, aux USA, ils sont
habitué à entrer leurs dates dans le format mm/jj/aaaa, alors je présume
qu'ils pourraient trouver agaçant et sujet à erreurs d'entrer leurs dates
dans le format des français de France soit, jj/mm/aaaa. Cela risquerait
d'affecter les ventes de façon négatives.

Autre problème - si le format demandé affiche les jours/mois en texte.
Les formats de dates qui montrent les jours/mois abréviés ou au long (comme
le format "JJJJ JJ MMMM AAAA") montrent toujours les jours et les mois en
français quelle que soit la Nation(). Est-ce que WDMsg et/ou WDInt règlent
cela ou s'il y a un autre truc que j'ignore?

Salutations.

Réal Phil

--------------------------------------

"mat" a écrit dans le message de
news:42358785$
Real Phil wrote:
> Bonjour,
>
> Je suis à transférer une application DOS internationale français/anglais


à
> Windev.
>
> La version actuelle en langage DOS comporte une option qui permet à


l'usager
> de choisir tous les formats possibles sur la planète (jj.mm.aaaa,
> mm/jj/aaaa, aaaa.mm.jj, etc...). Pour ce faire nous utilisons une seule
> ligne de code pour modifier toutes les saisies et les affichages de


dates
> dans n'importe quel format choisi par l'usager.
>
> J'ai cherché sans succès une fonction semblable dans Windev. Est-ce que


cela
> existe?

Salut Réal,

Désolé de te décevoir déjà le lundi...
pour les fenêtres, il faut employer le masque Système (Windows param
régionaux), je ne crois pas qu'il y a une autre solution. Pire, encore
Windev a la fâcheuse habitude de convertir un masque de champ
DateSystème en masque multilingue ce qui est vraiment ennuyeux, car non
seulement ce n'est pas voulu, mais seul Anglais et Français sont crées
et le projet est définie pour 5 langues. Je n'ai jamais compris à quel
moment Windev fait de telles changements, peut-être lorsqu'on copie des
fenêtres par "Sauvegarder sous...".

Sous l'éditeur d'états, le masque DateSystème n'existe pas. On peut
manuellement saisir "UseSystemMask" ce qui donne le même résultat...

Je ne pense pas qu'on puisse changer le masque des dates par
programmation, car les masques standard "mask..." n'incluent rien pour
les dates.

Salutations
Mat


Avatar
mat
Bonjour Réal,

Real Phil wrote:
Mais je constate après plusieurs tests que la propriété MasqueSaisie
est très très puissante.



Oui, je l'utilise pour formater des champs texte, pour les forcer en
majuscule ou pas, selon configuration de l'utilisateur. Le problème avec
les dates c'est que dois prédéfinir les formats, mais je veux utiliser
le format définie sous Windows. Je n'ai pas trouvé une autre façon de le
faire qu'avec DateSystème dans chaque champ.

Puisque tu travailles surtout dans des pays francophones et les
Etats-Unis, les formats JJ/MM/AAAA (Europe) et MM/JJ/AAAA (USA) seront
probablement suffisants. En Suisse, on utilise JJ.MM.AAAA mais je doute
que quelqu'un serait serieusement disturbé par une barre au lieu d'un point.

Windev accepte le format de saisie au niveau de groupe de champs ce qui
veut dire que tu peux faire une petite procédure globale au projet qui
formate toutes tes dates. Evidemment il faut associer les champs au
groupe et appeller la procédure dans tous les fenêtres et états...
mais si c'était mon seul souci avec Windev, je t'assure je viverais
mieux.

Personnellement, je préfère utiliser le format définie sous Windows: le
choix est chez l'utilisateur et il n'y a rien à programmer... :-)


Autre problème - si le format demandé affiche les jours/mois en
texte. Les formats de dates qui montrent les jours/mois abréviés ou
au long (comme le format "JJJJ JJ MMMM AAAA") montrent toujours les
jours et les mois en français quelle que soit la Nation(). Est-ce que
WDMsg et/ou WDInt règlent cela ou s'il y a un autre truc que
j'ignore?



Le texte des dates provient de Windows et ne pas de Windev. Donc, rien à
programmer :-) .

Salutations
Mat
Avatar
Real Phil
Salut Mat,

Mais je constate après plusieurs tests que la propriété
MasqueSaisie est très très puissante.



Après d'autres tests je constate que les dates élaborées dans des champs de
saisies causent des problèmes si on a le malheur de faire une
RepriseSaisie() dans un champ de date avec du texte (JJJ ou MMM ou MMMM).
J'en déduit qu'il est mieux de saisir les dates en chiffres seulement et
d'afficher si besoin est, en date/texte.

J'ai finalement décidé de faire comme toi et d'utiliser le format de la
DateSystème. Je crois que c'est la solution qui demande le moins de
travail - je suis déjà beaucoup en retard sur ce projet.

Je comprend maintenant et j'utilise aussi UseSystemMask (pas d'autres choix)
dans les états.

Par contre, j'avais fait quelques tentatives d'utilisation des champs et
rubriques DateHeure. Alors avec notre masque DateSystème on oublie ça,
l'affichage DateHeure (fenêtre ou États) ne fonctionne plus, il n'y a que
l'heure dans le "Short Date". Je présume qu'il faut retoucher ces champs et
utiliser des rubriques et des champs séparées. Est-ce exact?

Le texte des dates provient de Windows et ne pas de Windev.
Donc, rien à programmer :-) .



J'ai fait des tests sur Windows francais et Windows anglais et sur les deux,
j'ai mis le choix de langue anglais (Canada) dans le paramètres régionaux et
les textes des dates en formats tels que "JJJJ JJ MMMM AAAA" sortent
toujours en francais. Non je n'ai pas oublié de redémarrer les ordinateurs
;-)

Comment ça se fait?

Salutations.

Réal Phil
Avatar
mat
Real Phil wrote:
...
Par contre, j'avais fait quelques tentatives d'utilisation des champs
et rubriques DateHeure. Alors avec notre masque DateSystème on
oublie ça, l'affichage DateHeure (fenêtre ou États) ne fonctionne
plus, il n'y a que l'heure dans le "Short Date". Je présume qu'il
faut retoucher ces champs et utiliser des rubriques et des champs
séparées. Est-ce exact?



Je n'utilise ce format que rarement comme info interne pour moi, alors
je fais ce que je veux.


Le texte des dates provient de Windows et ne pas de Windev. Donc,
rien à programmer :-) .




J'ai fait des tests sur Windows francais et Windows anglais et sur
les deux, j'ai mis le choix de langue anglais (Canada) dans le
paramètres régionaux et les textes des dates en formats tels que
"JJJJ JJ MMMM AAAA" sortent toujours en francais. Non je n'ai pas
oublié de redémarrer les ordinateurs ;-)

Comment ça se fait?



Bonne question. J'étais aveugle hier, ou j'ai oublié que j'utilise
maintenant la version anglaise de Windev. En fait, chez moi le texte est
toujours en anglais, aujourd'hui de toute façon... :-) Alors il faut
penser que c'est bien Windev qui gère ça et probablement on pourra
l'adapter par WDInt. Pas génial pour un "5GL" multilingue.


Salutations
Mat