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 SelectIl 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 SubEd 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: 
			
		
	
								
								
									
	
		
			
		
	
								
							
							 
				 
 
		 
			 
 
		 
 
		 
 
		 
 
		