Bandiere Localizzazione Applicazioni iPhone Salve a tutti mi chiamo Vanni ( nickname Ragazzetto ) e sono lo sviluppatore dell applicazione per iPhone iEcology che attualmente è in fase di revisione !
Con questo articolo volevo illustrarvi un modo piuttosto semplice per localizzare le vostra applicazione in altre lingue !
A parer mio la localizzazione di un’applicazione in più lingue acquista un valore molto importante nel caso vogliate pubblicarla in AppStore , ogni utente apprezzerà il fatto di poter usare l’applicazione nella propria lingua e quindi, considerando che il 58% degli iPhone del mondo sono nel Nordamerica ( statistica AdMob di luglio 2009 ), almeno la localizzazione in inglese la reputo praticamente indispensabile !
Nel mio caso tutto lo sviluppo, per comodità, è stato fatto in italiano per poi aggiungere una seconda lingua: l’ inglese.

Cominciamo con il localizzare i file di interfaccia grafica .xib:

clicchiamo con il tasto destro del mouse sul file _ViewController.xib e dal menù a tendina selezioniamo Get Info:


T034 - Localizzazione app iphone screenshot 01

Dalla finestra info, all’interno del tab “ General “, clicchiamo sul tasto in basso a sinistra “ make File Localizable “


T034 - Localizzare applicazioni iPhone screenshot 02

Controlliamo che sia spuntato il Target della nostra applicazione e torniamo quindi nel Tab General.


t034 - Localizzare applicazioni iPhone screenshot 03

All’interno di questa finestra Clicchiamo sul tasto in basso a sinistra “ Add Localization “


t034 - Localizzare applicazioni iPhone screenshot 04

Inseriamo il nome della nostra localizzazione e clicchimo su Add.


t034 - Localizzare applicazioni iPhone screensgot 05

Ci ritroveremo quindi le nostre due localizzazioni. Chiudendo la finestra noteremo che Xcode avrà creato una copia del nostro file .xib


t034 - Localizzare applicazioni iPhone screenshot 06

Adesso i 2 file sono completamente identici , toccherà a noi variare i testi al loro interno per adattarli alla lingua impostata.


t034 - Localizzare applicazioni iPhone screenshot 07

In questo modo Xcode utilizzerà il file provalocalizzazione_ViewController.xib ( English) di default ogni volta che troverà impostata all’interno del nostro iPhone ( o del simulatore ) una lingua diversa dall’italiano mentre quando troverà impostata la lingua “Italiano” utilizzerà il file provalocalizzazione_ViewController.xib (Italian).

Ci tengo a sottolineare che la localizzazione è un aspetto che va eseguito nelle ultime fasi di tutto il progetto , nel nostro caso, infatti, i file per l’interfaccia grafica sono solo 2 e ogni modifica all’interfaccia effettuata da ora in avanti va eseguita su entrambi i file. Questo può risultare molto più scomodo se applicato a più file. Considerate inoltre che a causa di una semplice svista, potreste tralasciare qualche modifica in un file o in un altro, cosa che porterebbe sicuramente a qualche malfunzionamento indesiderato.

A questo punto dobbiamo localizzare ogni testo che viene visualizzato attraverso il codice , ad esempio, quello presente in un alertView.

Vediamo quindi questo piccolo esempio che, tramite queste poche righe di codice, ci permette di intercettare la lingua impostata dall’utente e di conseguenza mostrare a video l’alertView nella lingua desiderata:

-(IBAction)alert1:(id)sender{
	// codice per intercettare la lingua impostata dall utente  
 
	NSUserDefaults  *defaults         = [NSUserDefaults standardUserDefaults];
	NSArray         *languages        = [defaults objectForKey:@"AppleLanguages"];
	NSString    *currentLanguage  = [languages objectAtIndex:0];
	NSLog(@"Codice lingua %@", currentLanguage);
 
 
	if( [currentLanguage isEqualToString:@"it"] ) {
		// codice in italiano !
		UIAlertView * alertView1 = [[UIAlertView alloc] initWithTitle:@"Titolo in Italiano " message:@"Testo in Italiano" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
		[alertView1 show];
		[alertView1 release];
	} 
	else {
		// codice in altra lingua !
			UIAlertView * alertView1 = [[UIAlertView alloc] initWithTitle:@"Title in English " message:@"Text in English " delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
		[alertView1 show];
		[alertView1 release];
	}

Con le prime 4 righe all’interno dell’ IBAction non faremo altro che determinare la lingua impostata dall’utente, mentre con il successivo ciclo di “If else” assegneremo un’azione nel caso la lingua impostata sia l’italiano:

if( [currentLanguage isEqualToString:@"it"] ){
}

ed un altra azione negli altri casi ( ovvero una lingua diversa dall italiano )

else {
}

Nel caso decidiate di inserire localizzazioni in più lingue i cicli di if else saranno più lunghi ma avranno lo stesso concetto! (o eventualmente potrete usare altri sistemi, ad esempio uno switch)

Il risultato di questa nostra prova sarà quello mostrato in figura qui sotto:


t034 - Localizzare applicazioni iPhone screenshot 08

Noterete la lingua impostata nello spazio riservato al gestore telefonico nella barra in alto a sinistra !

Per verificare il diverso funzionamento ci basterà dopo il “Build and Go” modificare le impostazioni all’interno del nostro iPhone / Simulatore:

Impostazioni > Generali > Internazionale > Lingua

Sperando di essere stato chiaro ed esauriente vi saluto

Ciao

Vanni

AGGIORNAMENTO

In riferimento al commento di dylandogg volevo sottolineare e precisare che con la stessa tecnica utilizzata per localizzare i file .xib è possibile localizzare anche solo le immagini.
Riepilogando:

Tasto destro > get info > make file localizable >add localization > lingua ( ad esempio Italian ) .

Analogamente al caso precedente adesso avremo il nostro file immagine perfettamente sdoppiato in due cartelle del nostro progetto English.lproj e Italian.lproj .

In questo caso ci basterà sovrascrivere il file che ci interessa far variare nelle diverse localizzazioni ed il gioco è fatto !