Bonjour tout le monde,
Je travaille à l'heure actuelle sur une application multilangue (4).
Me basant sur différents messages et contributions postés sur ce forum je suis parvenu à développer mes différents formulaires en fonction de mes besoins.
Toutefois je rencontre à présent un problème en ce qui concerne l'actualisation de mes sous-formulaires. Lesdits sous-formulaires se présentent en mode "Feuille de données" - chaque formulaire présentant en guise de nom de colonne le nom du champ en question. Lorsque je laisse ces sous-formulaires en tant que formulaire indépendant l'actualisation de mes champs fonctionne parfaitement sur la base du code annexé. Dès l'instant où j'intègre ces sous-formulaires dans un autre formulaire la mise à jour ne fonctionne plus du tout. Indépendamment du code de langue choisi dans le menu principal l'application me renvoie à chaque reprise la légende du champ en question.
Pour quels motifs cette adaptation n'a t-elle plus lieu ?
Les sous-formulaires cités ci-dessus contiennent le code suivant:
Pour complément:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 Dim valeur As Integer Private Sub deutsch_Click() cliquer (1) End Sub Private Sub français_Click() cliquer (2) End Sub Private Sub italiano_Click() cliquer (3) End Sub Private Sub English_Click() cliquer (4) End Sub Private Sub Form_Open(Cancel As Integer) cliquer (Chercher_langue) End Sub Sub cliquer(bouton As Integer) valeur = bouton ChangeFormReportLanguage "sfrmNouvBV", "Form", valeur sauvegarder_langue (valeur) End Sub 'Cette procédure stocke la langue dans la table Langue choisie Sub sauvegarder_langue(bouton As Integer) Dim rkt As DAO.Recordset Set rkt = CurrentDb.OpenRecordset("Langue") If Not rkt.EOF Then rkt.Edit Else rkt.AddNew End If rkt.Fields(0).Value = bouton rkt.Update rkt.Close Set rkt = Nothing End Sub 'Rechecher la langue de la précédente utilisation Function Chercher_langue() As Integer Dim rkt As DAO.Recordset Set rkt = CurrentDb.OpenRecordset("Langue") If Not rkt.EOF Then Chercher_langue = rkt.Fields(0).Value Else 'choisi l'allemand par défaut Chercher_langue = 1 End If Set rkt = Nothing End Function Function ChangeFormReportLanguage(NomFormulaire As String, fType As String, fLangue As Integer) Dim chSQL As String Dim ctl As Control Dim bds As DAO.Database Dim rst As DAO.Recordset Dim a As Long Dim ObjectType As Object On Error Resume Next Set bds = CurrentDb chSQL = "SELECT * FROM T_Langue WHERE [#Formulaire] = '" & NomFormulaire & "'" Set rst = bds.OpenRecordset(chSQL) If fType = "Form" Then Set ObjectType = Forms ElseIf fType = "Report" Then Set ObjectType = Reports Else Exit Function End If With rst ' Remplit l'objet Recordset. Do Until rst.EOF For Each ctl In ObjectType.Item(NomFormulaire).Controls ' Vérifie si le contrôle est une étiquette. If IsNumeric(ctl.Tag) Then If Val(ctl.Tag) = rst!ID Then Select Case fLangue Case 1 ctl.Caption = rst!German Case 2 ctl.Caption = rst!French Case 3 ctl.Caption = rst!Italian Case 4 ctl.Caption = rst!English End Select Exit For End If End If Next ctl rst.MoveNext Loop .Close End With End Function Private Sub Form_Load() cliquer (Chercher_langue) End Sub Private Sub C_langue_Click() Dim a As Long a = ChangeFormReportLanguage("Mainboard", "Form", Me!C_Langue) End Sub
Les éléments à traduire se trouvent dans une table destinée à cet effet et comprennent les informations suivantes:
- un Numéro ID (à saisir sous "Remarque" ou Tag en englais)
- #Formular (Indication du nom du formulaire concerné)
- TypeOfObject (précision quant à savoir s'il s'agit d'un formulaire ou d'un état)
Ladite table présente encore les informations que voici:
- ControlName (nom de contrôle de l'objet)
- French (les différents termes dans les diverses langues)
- German
- Italiano
- English
Le passage d'une langue déterminée à une autre s'effectue sur le menu principal. Ce dernier reste ouvert en arrière plan aussi longtemps que l'application est active.
J'espère avoir été clair dans mes propos. Je me tiens bien évidemment en tout temps à disposition pour de plus amples renseignements.
Amicalement
Papillon00
Partager