Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347

    [VB6] Programma Multilingua.... consigli

    Un saluto a tutto il forum!
    Devo fare un programma multilingua (italiano, inglese, tedesco, francese e spagnolo) e volevo far cambiare in base alla lingua i label, i text e i vari messaggi del mio programma...
    Per effettuare questo ho pensato di crearmi un txt (file .dat) con tutte le varie stringhe in multilingua che poi caricherò in base alla selezione effettuata dall'utente...
    avevo pensato anche a degli array in alternativa....
    non sono molto esperto e volevo sapere se questa soluzione (la prima) è la più pratica e utilizzata per il mio scopo..
    voi che consigliate???
    mi affido alla vostra esperienza per un consiglio!
    grazie mille a tutti!!!!!!

  2. #2
    io per queste cose consiglierei l' XML per la suo struttura e gerarchia
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    giusto.. per la sua struttura ad albero è l'ideale...c'è un problema però.. non ho mai avuto a che fare con file xml... interfacciamento tra vb e xml.. dove posso documentarmi?

    grazie xeregallo!

  4. #4
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    sarà un po' più pesante come file ma io uso sempre database di access in questi casi.. risulta molto più semplice quando dai il file da tradurre (sicuramente non lo tradurrai tu in tutte quelle lingue... ) per di più è molto più semplice se poi vuoi aggiungere una lingua basta aggiungere una colonna.
    Puoi proteggerlo con password così l'utente che non sia un hacker non può giocare con i tuoi testi.. ecc..

    Ciao
    Andrea
    Ciao
    Andrea

  5. #5
    Originariamente inviato da Fado84
    giusto.. per la sua struttura ad albero è l'ideale...c'è un problema però.. non ho mai avuto a che fare con file xml... interfacciamento tra vb e xml.. dove posso documentarmi?

    grazie xeregallo!
    esempio scemotto ma per prendere spunto

    file XML
    codice:
    <?xml version="1.0"?>
    <Traduzioni>
    	<italiano>
    		<label1>ciao</label1>
    		<label2>buongiorno</label2>
    		<command1>x</command1>
    	</italiano>
    	<inglese>
    		<label1>hello</label1>
    		<label2>good morning</label2>
    		<command1>y</command1>
    	</inglese>
    	<francese>
    		<label1>salut</label1>
    		<label2>bonjour</label2>
    		<command1>z</command1>
    	</francese>
    </Traduzioni>
    codice vb6

    codice:
    Private Sub Form_Load()
        Call traduci
        Me.Refresh
    End Sub
    
    Private Sub mnuIt_Click()
        mnuIt.Checked = Not (mnuIt.Checked)
        If mnuEn.Checked = True Then mnuEn.Checked = False
        If mnuFR.Checked = True Then mnuFR.Checked = False
        Call traduci
    End Sub
    Private Sub mnuen_Click()
        mnuEn.Checked = Not (mnuEn.Checked)
        If mnuIt.Checked = True Then mnuIt.Checked = False
        If mnuFR.Checked = True Then mnuFR.Checked = False
        Call traduci
    End Sub
    Private Sub mnufr_Click()
        mnuFR.Checked = Not (mnuFR.Checked)
        If mnuEn.Checked = True Then mnuEn.Checked = False
        If mnuIt.Checked = True Then mnuIt.Checked = False
        Call traduci
    End Sub
    
    Private Sub traduci()
    Dim MyXml As New MSXML.DOMDocument
    Dim ListaNodi As IXMLDOMNodeList
    Dim Elemento As IXMLDOMElement
    Dim Nodo As IXMLDOMNode
    Dim l As Long
    Dim i As Integer
    Dim CTRL As Control
        If MyXml.Load(App.Path & "\lang.xml") Then
            If mnuIt.Checked = True Then
                Set ListaNodi = MyXml.getElementsByTagName("italiano")
            ElseIf mnuEn.Checked = True Then
                Set ListaNodi = MyXml.getElementsByTagName("inglese")
            ElseIf mnuFR.Checked = True Then
                Set ListaNodi = MyXml.getElementsByTagName("francese")
            End If
            For i = 0 To ListaNodi.length - 1
                Set Elemento = ListaNodi.Item(i)
                For l = 0 To Elemento.childNodes.length - 1
                    Set Nodo = Elemento.childNodes(l)
                    For Each CTRL In Controls
                        If UCase$(CTRL.Name) = UCase$(Nodo.nodeName) Then
                            If TypeOf CTRL Is Label Then
                                CTRL.Caption = Nodo.Text
                            End If
                            If TypeOf CTRL Is CommandButton Then
                                CTRL.Caption = Nodo.Text
                            End If
                            If TypeOf CTRL Is TextBox Then
                                CTRL.Text = Nodo.Text
                            End If
                            Exit For
                        End If
                    Next CTRL
                Next l
            Next i
        End If
    End Sub
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  6. #6
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    xegallo gentilissimo, velocissimo e chiarissimo..
    penso che adotterò questa soluzione...
    spero sia di aiuto anche ad altri che hanno o avrannò questo problema...

    Un'ultima cosa... per gestire i messaggi mi conviene utilizzare delle stringhe.. con il control non mi riconosce le stringhe o no? come faccio per passargli il valore? posso mettere un else e gestire il caso stringhe? cosa ne dici?

    ps: un hacker ti trova in 2 sec la password per un database access... meglio crittografare tutto quello che mandi al database se veramente è qualcosa di importante.. nel mio caso no.. cmq grazie gugu!

  7. #7
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Una curiosità relativa all'esempio riportato da xegallo:
    perchè non è visibile la proprietà "name" dei menuitem?

    Se hai un menu.. come puoi visualizzare il nome delle varie voci?
    Devi fare per forza con l'ID numerico?

    Nell'esempio.. come faresti a trovare le varie voci di un menu per poi tradurle?

    Grazie
    Ciao
    Ciao
    Andrea

  8. #8
    Originariamente inviato da Gugu
    Una curiosità relativa all'esempio riportato da xegallo:
    perchè non è visibile la proprietà "name" dei menuitem?

    Se hai un menu.. come puoi visualizzare il nome delle varie voci?
    Devi fare per forza con l'ID numerico?

    Nell'esempio.. come faresti a trovare le varie voci di un menu per poi tradurle?

    Grazie
    Ciao
    scusa non capisco quale ID? i menu nell'esempio non sono tradotti
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  9. #9
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    ok..
    nell'esempio non tratti i menu..
    ma se ti capitasse di doverli tradurre?

    Come puoi fare dato che il nome non è visibile da codice?
    Chiedevo io se avresti fatto una procedura che invece di usare il "name", utilizzasse l'id...
    Ciao
    Andrea

  10. #10
    Originariamente inviato da Gugu

    Come puoi fare dato che il nome non è visibile da codice?
    come no tutti i controlli hanno la proprietà name visibile
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.