CodeS-SourceS
Rechercher un code, un tuto, une réponse

Application multilingue choix usager.

Juin 2017


Application multilingue choix usager



Introduction


Pour permettre la possibilité de choix à l'usager et rendre les mises à niveaux facile, if faut utiliser un ficher type CSV L'extension n'a pas d'importance car ce fichier sera lu comme un bloc binaire. Mais avoir un fichier CSV permettra l'ouverture dand un tableur pour modifications ultérieures.

Voici un exemple du contenu d'un tel ficher:
ctrlID,Francais;Anglais[vbCRLF]
btnOK,Accepter;OK[vbCRLF]
btnCancel,Canceller;Cancel[vbCRLF]
btnSuivant,Suivant;Next (fin de fichier, pas de vbCRLF)


Pour en extraire la structure (parsing) il faut ouvrir le ficher en binaire.

Code


'
' ============================================
' Idéalement mettre ce block dans une fonction...
' ============================================
Dim nFh As Integer, lngLen As Long
Dim strBuffer As String

nFh = FreeFile
lngLen = FileLen("lang.dat")

Open "lang.dat" For Binary As #nFh

strBuffer = String$(lngLen, "0") ' remplir avec des zéros.

Get #nFh, , strBuffer ' le paramètre vide veut dire commencer au début.
' lire en un coup: rapide.

Close #nFh ' important

Dim strLines() As String ' définir comme un array dynamique
strLines = Split(strBuffer, vbCrLf)
'Cet array contiendra autant de string distinctes qu'il y avait de lignes dans le CSV.

Dim i As Integer, k As Integer
Dim nLo As Integer
Dim nHi As Integer
Dim strOneLile() As String

On Error Resume Next ' au cas out strLines ne serait pas initialisé
nLo = LBound(strLines) ' toujours vérifier les index possibles.
nHi = UBound(strLines)
If Err.Number <> 0 Then Exit Sub

Dim blnFound As Boolean
' Mettre ceci dans un module au cas ou il y aurait plusieurs formes.
Public arrGlobal() As String
Public nIndex As Integer ' Index unique pour indiquer laquelle colonne sélectionner
Public nNumLanguage As Integer

strOneLine = Split(strLines(0), ";")
' il faut détecter combien il y a de langues.
' et pour fixer les limites des index d'array...sinon runtime Error: index out of bound
nNumLanguage = UBound(strOneLine) - LBound(strOneLine) + 1
' Ceci donnera un nouvel array contenant la structure suivante:
' "ctrlID" = strOneLine(0)
' "Francais" = strOneLine(1)
' "Anglais" = strOneLine(2)
' "Autre langue dans le futur

' Détecter et fixer ici l'index de la langue à utiliser
For k = LBound(strOneLine) To UBound(strOneLine) Step 1
    If strOneLine(k) = "Francais" Then '- selon le choix de l'usager.
        nIndex = k ' Ex.: Francais serais l'index 1
        blnFound = True
    Exit For ' Inutile de continuer
    End If
Next k
' il serait prudent de mettre ici un langage par défaut si le choix sélectionné dans le INI file n'est pas trouvé.
If Not blnFound Then
    nIndex = 1 ' celui du langage original par défaut.
End If
' ============================================
' Fin de fonction
' ============================================
' Nous avons maintenant l'index du langage à utiliser.
' Il faut maintenant remplir l'array qui donnera les mots exacts pour tous les contrôles

ReDim arrGlobal(nLo To nHi)
ReDim arrID(nLo To nHi)

For i = nLo To nHi Step 1
    strOneLine = Split(strLines(i), ",")
    arrGlobal(i) = strOneLine(nIndex)
    arrID(i) = strOneLine(0) ' L'ID du control permet de mettre ceux-ci en vrac et facilite les modifications ultérieures.
    ' Pour traduire, ouvrir le dossier CSV dans Excel: chaque langue aura sa propre colonne.
Next i
' L'index des nIDs des controls et de leur "captions" étant toujours les mêmes, il suffit d'orienter correctement la propriété

Sub Form_Load()
Dim i As Integer, nLo As Integer, nHi As Integer
' fonction regroupant tout le code ci-dessus.
GetAllCorrectLanguages(valeur_sauvée_dans_un_Ini_file)
nLo = LBound(arrGlobal)
nHi = UBound(arrGlobal)
For i = nLo To nHi Step 1
    Select Case arrID(i)
        Case "btnOK"
        buttonOK.Caption = arrGlobal(i)
        
        Case "btnCancel"
        buttonCancel.Caption = arrGlobal(i)

        Case "btnSuivant"
        buttonNext.Caption = arrGlobal(i)
        Case Else
        ' ne rien faire
    End Select
Next i
End Sub


Voila.

Bonne chance !

A voir également

Publié par bitshifter.
Ce document intitulé «  Application multilingue choix usager.  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Présentation et utilisation des fichiers ini
Générateur 3d