Bonjour,
Sans prétention mais surtout parceque j'ai un peu sué dessus pour y arriver (même si j'ai l'impression de réinventer le fil à couper le beurre), voici une fonction qui permet de rendre sa base multilingues.
L'idée est d'avoir une table qui regroupe les version d'un texte en différents languages (un language par colonne), la première colone (= colonne 0) étant réservée à une numérotation croissante qui identifie chaque enregistrement.
Et par ailleurs, on définit une valeur qui correspond a la langue désirée. Ceci peut se faire via un formulaire qui reste tout le temps ouvert (genre menu principal sur lequel par exemple on a un toggle bouton avec deux choix: 1- francais, 2- anglais), soit via une variable globale initialisée au départ ou en fonction du choix de l'utilisateur. Les possibilité sont nombreuses.
Pour utiliser cette fonction, il faut d'abord initialiser le toggle bouton (ou la variable globale), puis dans le code appeler par exemple:
Le principe fonctionne pour les zones de textes, les captions, enfin un peu tout quoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox mylng(14) 'ici 14 représente le 14ème enregistrement de la table
Voila.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Public Function mylng(idctrl As Integer) As String Dim oDb As DAO.Database Dim oRst As DAO.Recordset Dim SQL As String Dim varX As Variant Dim n As Integer Dim tbl As String 'Instancie la base de données Set oDb = CurrentDb tbl = "tbl" 'table qui contient en colone 0 un nombre croissant(indexé ou non), en colonne 1 la version française d'un texte, en colonne 2 la version étrangère du texte SQL = "SELECT * FROM " & tbl Set oRst = oDb.OpenRecordset(SQL) n = Forms!MenuPrincipal!frmlng.Value 'fait référence a la valeur d'un frame contenant pour l'exemple un toggle bouton avec 2 choix 'idctrl fait référence au nombre de la colone 0 de la table de référence langues Select Case frmlng Case 1 varX = DLookup(oRst.Fields(n).Name, "tblMenuPrincipal", "[IDctrl] = " & idctrl) Case 2 varX = DLookup(oRst.Fields(n).Name, "tblMenuPrincipal", "[IDctrl] = " & idctrl) Case Else End Select mylng = varX oRst.Close oDb.Close Set oRst = Nothing Set oDb = Nothing End Function
Partager