Changer la langue

cs_chili Messages postés 12 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 13 juin 2003 - 23 mai 2003 à 11:45
cs_Base Messages postés 70 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 31 juillet 2003 - 23 mai 2003 à 13:17
Bonjour,

J'ai fais une application et je desirerais la traduire dans une autre langue, j'utilise VB.Net.

Savez vous si il existe un moyen d'indiquer au logiciel que tous les boutons comprtant le nom "annuler" devront être changé par "cancel" ou faut il faire une reference a tous les boutons?

Merci
Syl

1 réponse

cs_Base Messages postés 70 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 31 juillet 2003
23 mai 2003 à 13:17
Salut,

Voici le code que j'utilise :

Public Sub Localise(Frm As Form)
    '**** Localise l'interface en changeant tous les contoles dans la bonne langue ****
    Dim Va As Long
    Dim ctl As Control
    Dim Btt As MSComctlLib.Button
    Dim CtlType As String
    Dim ColonH As ColumnHeader
    
    Va = Val(Frm.Tag)
    If Va > 0 Then Frm.Caption = GetStr(Va)
    
    For Each ctl In Frm.Controls
        '=> Recup du type de controle
        CtlType = TypeName(ctl)
        If CtlType = "Menu" Then
            '=> Les menu utilisent l'ID
            Va = 0
            Va = Val(ctl.Index)
            If Va > 0 Then ctl.Caption = GetStr(Va)
        ElseIf CtlType = "Toolbar" Then
            '=> Balayage des boutons pour les toolbars
            If ctl.Name = "tbMain" Then
                ctl.ImageList = frmMain.iml_32_32
            Else
                ctl.ImageList = frmMain.iml_16_16
            End If
            For Each Btt In ctl.Buttons
                Va = 0
                Va = Val(Btt.ToolTipText)
                If Va > 0 Then Btt.ToolTipText = GetStr(Va)
            Next
        ElseIf CtlType = "ListView" Then
            '=> Balayge des des Entetes des colones
            For Each ColonH In ctl.ColumnHeaders
                Va = 0
                Va = Val(ColonH.Tag)
                If Va > 0 Then ColonH.Text = GetStr(Va)
            Next
        Else
            '=> Les autres controles utilisent le Tag
            Va = 0
            Va = Val(ctl.Tag)
            If Va > 0 Then ctl.Caption = GetStr(Va)
        End If
    Next
End Sub

Public Function GetStr(ID As Long) As String
    '**** Retourne la chaine correspondante à l'ID ****
    Dim ST As String
    
    Select Case ID
        '=> Texte (explications ou avertissements)
        Case 1            If Sett_IntLang 0 Then ST "Annuler"            If Sett_IntLang 1 Then ST "Cancel"
        Case 2
            '...ETC...
        Case Else
            ST = ""
    End Select    
    GetStr = ST
End Function


Sett_IntLang est égale à 0 si la langue est en FR et 1 si la langue est en US

Il ne te reste plus qu'a placer la ligne 'Localise Me' dans l'évenement Load de chaque Forms.

Si par exemple tu veux le mot Annuler sur le bouton Command1 de ta form, il suffit de placer '1' dans la propriété Tag du bouton conserné... Comme tu peux le constater, ça s'applique à tous les controles, comme les ToolBar, ect...

Voilà si tu as des questions, n'hésites pas

B@se 8-)
0
Rejoignez-nous