Bonjour,

Je souhaite réaliser une application en plusieurs langues c'est-à-dire que mes labels et autres informations se mettront dans la langue choisie par l'utilisateur dans une liste.

Je ne peux pas utilisée de fichiers de ressources car des administrateurs peuvent à tout moment modifier des labels donc tous les libellés doivent être stockés en table dans une base de données.

J'utilise donc une fonction pour effectuer la traduction.
Le hic, c'est que je ne suis pas experte ASP.NET donc je suis obligée de copier/coller ma fonction dans toutes mes pages car je n'arrive pas à modifier des contrôles d'une page à partir d'une classe.

Pourriez-vous m'aider à trouver une solution qui m'évite d'effectuer un copier/coller ??

Voici ma fonction :
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
'Cette procédure permet de traduire les contrôles de la page
Private Sub TranslatePage(ByVal PageName As String)
 
  'Filtre le DataView sur le nom de la page
  Dim dtsLabel As DataSet = Application("DS_LABEL")
  Dim dtvLabel As DataView = dtsLabel.Tables("tabLabel").DefaultView
  dtvLabel.RowFilter = "ELBL_PAGE = '" & PageName & "'"
 
  'Définition des variables
  Dim myContent As ContentPlaceHolder = CType(Master.FindControl("main"), ContentPlaceHolder)
  Dim myControl As Control
  Dim myCtrlText As String
  Dim myLabel As Label
  Dim myLinkButton As LinkButton
  Dim myButton As Button
  Dim myRadioButton As RadioButton
  Dim myRadioButtonList As RadioButtonList
  Dim myGridView As GridView
  Dim myReqFldVld As RequiredFieldValidator
  Dim myRegExpVld As RegularExpressionValidator
  Dim myCompVld As CompareValidator
  Dim myVldSumm As ValidationSummary
  Dim j As Long = 0
 
  'Pour chaque ligne du DataView
  For Each rowView As DataRowView In dtvLabel
 
    'Recherche le contrôle dans la page
    myControl = myContent.FindControl(rowView("ELBL_NAME"))
    myCtrlText = rowView("ELBL_TEXT_" & Session("VG_USERLANG"))
    j = rowView("ELBL_INDEX")
 
    'Si le contrôle existe, on le traduit en fonction de son type
    If Not myControl Is Nothing Then
      Select Case rowView("ELBL_TYPE")
        Case "Label"
          myLabel = CType(myControl, Label)
          myLabel.Text = myCtrlText
        Case "LinkButton"
          myLinkButton = CType(myControl, LinkButton)
          myLinkButton.Text = myCtrlText
        Case "Button"
          myButton = CType(myControl, Button)
          myButton.Text = myCtrlText
        Case "RadioButton"
          myRadioButton = CType(myControl, RadioButton)
          myRadioButton.Text = myCtrlText
        Case "RadioButtonList"
          myRadioButtonList = CType(myControl, RadioButtonList)
          myRadioButtonList.Items(j).Text = myCtrlText
        Case "GridView"
          myGridView = CType(myControl, GridView)
          myGridView.Columns(j).HeaderText = myCtrlText
        Case "RequiredFieldValidator"
          myReqFldVld = CType(myControl, RequiredFieldValidator)
          myReqFldVld.ErrorMessage = myCtrlText
        Case "RegularExpressionValidator"
          myRegExpVld = CType(myControl, RegularExpressionValidator)
          myRegExpVld.ErrorMessage = myCtrlText
        Case "CompareValidator"
          myCompVld = CType(myControl, CompareValidator)
          myCompVld.ErrorMessage = myCtrlText
        Case "ValidationSummary"
          myVldSumm = CType(myControl, ValidationSummary)
          myVldSumm.HeaderText = myCtrlText
        Case Else
           'LE CONTRÔLE NE SERA PAS TRADUIT
        End Select
      Else
        'Affiche le nom de la page
        If (rowView("ELBL_NAME") = "TitlePage") Then Me.Title = myCtrlText
    End If
 Next
 
End Sub
Merci pour votre aide.
Biz