Bonjour.
Autant le dire tout de suite Access n'est pas concue pour etre multiingue.
J'ai mis le champs "product_name" en gras puisque c'est sur ce champs que se porte ma question : est-il possible, sans passer par du VBA, que ce champ ne soit pas 1 champ, mais n champs, n étant le nombre de langues cochées (is_used = True) de ltbl_Languages. C'est à dire que si je coche un nouveau langage, j'aurai un nouveau champ dans ma table tbl_Products. Et dans le cas contraire, quelles sont les méthodes les plus couramment admises pour gérer du multilingue évolutif ?
Om peut faire cela comme cela :
tblProduit
ClefProduit
Autres info non texte
tblNomProduit
ClefProduit
ClefLangue
LibProduit
Une autre possibilite est d'avoir une table des traductions :
tblTraduction
ClefTraduction
NomTableSource
NomChampSource
ClefElement (attention il faut que tout tes "elements" aient une clef du meme type).
ClefLangue
Libelle
Apres quand tu as besoin d'un texte tu vas le pecher dans la table soit avec une jointure, soit avec une function VBA. Le problem de la jointure c'est que cela peut bloquer tes donnees en lecture seule.
Et je te conseille de definir une langue par defaut pour toujours avoir un libelle associe.
L'avantage majeur de tblTraduction c'est qu'elle regroupe tous tes textes a traduire a une seule place.
Elle t'evite aussi d'avoir une table associee a chacune de tes tables de donnees pour y stocker les valeurs textes qui changent en fonction des langues.
Et on doit aussi pouvoir utiliser une relation si tu as un truc di genre :
tblProduit
ClefProduit
Autres Infos
NomTable toujours eagle a "tblProduit"
Nom toujours egale a "Nom"
On pourrait aloirs faire une jointure sur
- tblProduit.ClefProduit <-> tblTraduction.ClefElement
- tblProduit.NomTable <-> tblTraduction.NomTableSource
- tblProduit.Nom <-> tblTraduction.NomChampSource
C'est un peu etrange comme structure mais cela devrait marcher.
Si tu as besoin de traduire des elements d'interface (ex : bouton, etiquette) la solution la plus simple est une table
tblTraductionObjet
ClefTraductionControl
NomParent
TypeParent
NomObjet
TypeObjet
ClefLangue
TexteObjet
Et evidement il faut renir compte que les textes ne se composent pas de la meme facon dans toutes les langues et que leur taille varie.
A+
Partager