Bonjour,
C'est une possibilité que de créer une rubrique par langue.
Mais par conséquent c'est leur accès qui va s'en ressentir.
voici des élément disparates qui devront, lors de leur mise en oeuvre dans votre projet, sans doute être structuées dans une classe pour plus de facilité.
Nation() va vous permettre de connaitre la langue appliquée dans votre projet. Un petit tableau de correspondance semble déjà nécessaire pour faire correspondre ses indices de langue avec votre organisation.
L'indirection va être indispensable. C'est une faculté de WinDev qui permet d'interpréter le contenu d'une chaine pour construire le nom d'un élément du projet... dont les noms des rubriques.
Un exemple est parlant :
cLangue est une chaine fixe sur 2 = "fr" // à modifier selon la valeur de Nation()
// appel du bon libellé dans type.fic
cValeurFr = {"TYPE.LIBELLE_"+cLangue,IndRubrique}
// cValeurFr contient la valeur de TYPE.LIBELLE_fr
L'indirection est l'interprétation de la chaine entre accolades qui permet de construire le nom d'un élément du projet. WinDev va parcourir l'espace mémoire à la rechrche de l'élément de ce nom. Il est possible de rendre cette recherche plus performante en spécifiant le type d'élément recherché (IndRubrique dans notre cas).
Vous avez les éléments voulus pour associer les bonnes rubriques.
Complément : pour faciliter votre programmation, il vous est possible de profiter des commandes EcranVersFichier et FichiersVersEcran en manipulant les propriétés des champs de vos fenêtres.
Mieux que programmer chaque affectation et lecture des champs "linguisitues", utilisez la propriété
..LiaisonFichier pour lier votre champs à la bonne rubrique de votre fichier.
Si par défaut vous associez vos champs aux rubriques de langue fr, l'application d'une autre langue sera possible par le code suivant :
// init projet
gcLangue est une chaine fixe sur 2 = "fr"
// on lui affecte "en" car vous avez associé les champs aux libellés en fr
PROCEDURE ChangeLangue(pcNomChamp)
// Récupère la rubrique associée au champ
cRub est une chaine = {pcNomChamp,IndChamp}..LiaisonFichier
// ceelle ci correspont elle à la langue courante
// on teste les deux dernier caractère de cRub et les compara à la globale gcLangue qui contien la langue à appliquer
SI droite(cRUB,2)<>gcLangue ALORS
// la langue par défaut n'est pas celle en cours, il faut changer
// Pour ce faire on remplace juste le "FR"
{pcNomChamp,IndChamp}..LiaisonFichier=droite(cRUB,2)+gcLangue
FIN
// Initilisation de la fenêtre (fiche dans cet exemple)
// change la rubrique de chaque champs 'linguisitique'
// attention libelle est un mot réserver il faudra utiliser un nom de champ/rubrique différent...
ChangeLangue(LIBELLE)
// à cet instant LIBELLE n'est plus associé à TYPE.LIBELLE_FR mais TYPE.LIBELLE_EN ! le contenu anglais sera acheminé au champ via FichierVersEcran.