Vorrei trasformare una mia applicazione in multilingua. in modo da raggiungere un maggior numero di utenti.
Supponendo per semplicità di avere un pulsante "APRI" e che la lingua sia memorizzata nella variabile globale Lingua, ho pensato un primo metodo :
che però ho scartato perchè macchinoso e soprattutto perchè aggiungere una nuova lingua sarebbe assai laborioso.
Il secondo metodo da me pensato prevede l'uso di alcuni file di testo (forse ti tipo XML) del tipo
"NomeApp_ITA.XML"
"NomeApp_ENG.XML"
"NomeApp_FRA.XML"
ciascuno per una specifica lingua.
In Activity_Create scriverei semplicemente
che è abbastanza semplice da scrivere. Differisce poco dal
consueto.
Segue qui la bozza della sub Traduci.
Ed ecco come sarebbe scritto, secondo questa ipotesi, un file XML; in questo caso per l'inglese. Premetto che non conosco quasi questo tipo di file.
La domanda è: ho reinventato l'acqua calda ?
Vale la pena di utilizzare i file XML o un semplice file di testo potrebbe sostituirlo ? Ma forse con i file XML ci sono maggiori possibilità di interazione, di facile e veloce ricerca.
Ci sono soluzioni alternative migliori ?
Esistono dei tool che, dandogli in pasto un file .BAS, creano automaticamente il file XML con tutti i testi pronto per essere sottoposto - manualmente - all'operazione di traduzione/adattamento ?
Soprattutto: come rendere efficiente la ricerca (nell'esempio) di "APRI" e la sua traduzione "OPEN" ?
Grazie per l'attenzione.
P.S.: Se, con un po' di lavoro in più, si dispongono in ordine alfabetico i vari item nei file di traduzione, allora si può fare una più veloce ricerca binaria invece che quella sequenziale, tipica del ciclo FOR NEXT.
Supponendo per semplicità di avere un pulsante "APRI" e che la lingua sia memorizzata nella variabile globale Lingua, ho pensato un primo metodo :
B4X:
Select case Lingua
Case "ITA" : BotApri.text = "APRI"
Case "ENG" : BotApri.text = "OPEN"
Case "FRA" : BotApri.text = "OUVRIR"
End Select
Il secondo metodo da me pensato prevede l'uso di alcuni file di testo (forse ti tipo XML) del tipo
"NomeApp_ITA.XML"
"NomeApp_ENG.XML"
"NomeApp_FRA.XML"
ciascuno per una specifica lingua.
In Activity_Create scriverei semplicemente
B4X:
BotApri.text = Traduci("APRI")
B4X:
BotApri.text = "APRI"
Segue qui la bozza della sub Traduci.
B4X:
Sub Traduci(Testo as string)
Dim Traduzione as string
Dim Trovato as boolean
if Lingua="ITA" then
Return Testo ' non bisogna proseguire, l'italiano è predefinito
end if
FileXML = NomeApp & "_XML.XML"
Trovato=False
' a questo punto leggo lo specifico file XML fino a trovare la prima
' occorrenza di "APRI" e la sua relativa traduzione nella specifica lingua
' .................
. .................
If Trovato=True then
Return Traduzione
else
Return Testo ' non traduco, accetto il testo in italiano
end if
End Sub
Ed ecco come sarebbe scritto, secondo questa ipotesi, un file XML; in questo caso per l'inglese. Premetto che non conosco quasi questo tipo di file.
B4X:
<XML>
<ITEM>
<ORIGINALE>APRI</ORIGINALE>
<TRADUZIONE>OPEN</TRADUZIONE>
</ITEM>
<ITEM>
<ORIGINALE>CHIUDI</ORIGINALE>
<TRADUZIONE>CLOSE</TRADUZIONE>
</ITEM>
</XML>
La domanda è: ho reinventato l'acqua calda ?
Vale la pena di utilizzare i file XML o un semplice file di testo potrebbe sostituirlo ? Ma forse con i file XML ci sono maggiori possibilità di interazione, di facile e veloce ricerca.
Ci sono soluzioni alternative migliori ?
Esistono dei tool che, dandogli in pasto un file .BAS, creano automaticamente il file XML con tutti i testi pronto per essere sottoposto - manualmente - all'operazione di traduzione/adattamento ?
Soprattutto: come rendere efficiente la ricerca (nell'esempio) di "APRI" e la sua traduzione "OPEN" ?
Grazie per l'attenzione.
P.S.: Se, con un po' di lavoro in più, si dispongono in ordine alfabetico i vari item nei file di traduzione, allora si può fare una più veloce ricerca binaria invece che quella sequenziale, tipica del ciclo FOR NEXT.
Last edited: