• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#069 – Localizzare applicazioni iPhone tramite NSLocalizedString

By Luca Di Franco | on 1 Settembre 2010 | 6 Comments
Senza categoria

Bandiere Localizzazione Applicazioni iPhone Ecco qui il secondo tutorial promesso! In questo articolo spiegherò come potete fare per rendere le vostre applicazioni iPhone localizzate, ovvero adattate alla lingua di chi le usa (sempre che siate bravi traduttori si intende, mica come me XD).

Cominciamo subito col creare un’applicazione view based.
Il comando NSLocalizedString non fa altro che cercare in delle tabelle “chiave-valore” che altro non sono che dei file di testo con estensione .strings. Più precisamente questa istruzione cercherà la chiave solamente nelle tabelle chiamate “Localizable.string” ovvero nella tabella di default per ogni lingua.
Visto che queste tabelle non sono presenti nelle Risorse della nostra applicazione andiamo a crearle. Facciamo click secondario (è brutto dire tasto destro con un mac) sul gruppo Resources e scegliamo Add -> New File…
Nella finestra che apparirà scegliamo dal gruppo Resource di MacOS X “Strings File”.


Selezione del file Strings

Quando vi verrà chiesto come salvarlo chiamatelo “Localizable.strings”. Create poi nello stesso modo un secondo file che chiameremo invece “Uppercase.strings”.
Fatte queste operazioni possiamo cominciare ad aggiungere una coppia “chiave-valore” in ognuno di questi due file. Per esempio mettendo

"HELLO WORLD" = "Hello world";

nel primo e

"HELLO WORLD" = "HELLO WORLD";

nel secondo.

Ora dobbiamo però localizzare in un’altra lingua (per esempio in italiano) queste due tabelle. Per far questo facciamo clic secondario sul file “Localizable.strings” e questa volta selezioniamo Get Info.

Ci apparirà una nuova finestra e nella tab General possiamo vedere che il file non è attualmente localizzato in nessuna lingua, ma possiamo renderlo localizzabile premendo il relativo bottone in basso a sinistra.


Make File Localizable

Premendolo noteremo che il contenuto della tab General verrà modificato ed ora questo file è localizzato solamente in lingua inglese. Per aggiungere l’italiano premiamo Add Localization e nel campo di testo che apparirà immettiamo la parola “Italian”.


Add Localization

Fatto questo possiamo chiudere la finestra delle Info.
Eseguiamo la stessa operazione anche per l’altro file Uppercase.string.

Se avete prestato attenzione, avrete forse notato che i due file .strings sono leggermente cambiati, ora infatti è presente in “Group & Files” un triangolino esattamente come i gruppi e le cartelle. Se lo espandete noterete le due lingue in cui è localizzato il file: English e Italian.

Localizziamo in italiano i due file Italian come segue, mettendo

"HELLO WORLD" = "Ciao mondo";

nel primo e

"HELLO WORLD" = "CIAO MONDO";

nel secondo.

Bene. Abbiamo appena creato le nostre quattro tabelle (2×2 lingue). Ora non ci resta che vedere come richiamare i valori associati alla chiave nel nostro codice.
Apriamo il file NomeProgettoViewController.m e modifichiamo la loadVied come segue:

- (void)loadView {
	[super loadView];

	UILabel *localizedLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 300, 30)] autorelease];
	localizedLabel.text = NSLocalizedString(@"HELLO WORLD", @"");
	[self.view addSubview:localizedLabel];

	localizedLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 80, 300, 30)] autorelease];
	localizedLabel.text = NSLocalizedString(@"DevApp", @"");
	[self.view addSubview:localizedLabel];

	localizedLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 150, 300, 30)] autorelease];
	localizedLabel.text = NSLocalizedStringFromTable(@"HELLO WORLD", @"Uppercase", @"");
	[self.view addSubview:localizedLabel];
}

In ognuno dei tre blocchi del codice sopra riportato creiamo una label che visualizzeremo sullo schermo del terminale. Ora quello che importa a noi è la seconda rigadi ogni blocco: esatto la NSLocalizedString!

Spieghiamo bene i risultati che ci aspettiamo da ognuna:

  1. La prima NSLocalizedString visualizzail valore associato alla chiave “HELLO WORLD” presente nella tabella Localizable.strings. Visualizzerà quindi “Ciao mondo” se la lingua del device è settata su italiano, “Hello World” altrimenti.
  2. In questo caso cerchiamo una chiave che non è presente nella tabella di default. In questi casi non viene generato nessun errore, semplicemente il sistema adotta la seguente convenzione: chiave = valore. Visualizzeremo quindi all’interno della chiave la parola “DevApp”.
  3. Come ultima abbiamo invece una particolare tipo di NSLocalizedString che ci permette di prelevare i valori da tabelle diverse da quelle di default. In questo caso dalla tabella Uppercase. Visualizzeremo quindi “CIAO MONDO” se la lingua del device è settata su italiano, “HELLO WORLD” altrimenti.

Con questo credo di aver terminato la preview sulla NSLocalizedString. In ogni caso, se avete dei problemi, potete scaricare l’archivio con il codice dalla repository su Google Code.

Share this story:
  • tweet

Tags: iphonelocalizzare applicazione iphonelocalizzazioneLuca di FrancoNSLocalizedStringObjective-cteoriatutorialTutorial Pratici

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Uno sguardo al runtime Objective-c

    10 Settembre 2013 - 0 Comment
  • Andrea Picchi: Programmare con Objective-C 2.0 per iOS e OS X

    27 Febbraio 2013 - 10 Comments
  • Google Maps API aperte a tutti gli sviluppatori iOS

    26 Febbraio 2013 - 2 Comments

Author Description

6 Responses to “T#069 – Localizzare applicazioni iPhone tramite NSLocalizedString”

  1. 1 Settembre 2010

    Tweets that mention Localizzare applicazioni iPhone tramite NSLocalizedString | devAPP -- Topsy.com

    […] This post was mentioned on Twitter by Rynox and iPadWorld.it, devAPP. devAPP said: Localizzare applicazioni iPhone tramite NSLocalizedString http://bit.ly/dpn7BL […]

  2. 6 Settembre 2010

    fabiosoft

    ciao!
    vorrei fare una richiesta…se è possibile…
    vorrei sapere come manipolare le immagini…del tipo da una UIImage modificare i pixel…il contrastro…luminosità… o semplicemente modificare pixel per pixel.
    Grazie

  3. 21 Gennaio 2011

    Carlo

    Ho seguito il Tutorial ed è perfetto. Vorrei però sapere come mettere sotto svn il gruppo Localizable.strings.
    Grazie

  4. 27 Gennaio 2011

    Luca Di Franco

    Se hai la svn configurata come la mia quando hai un file che non è sul repository questo ti viene segnalato con un “?”. Per aggiungerlo al repository ti basta un semplice tasto destro sul file e scegliere “Add to repository”

  5. 2 Febbraio 2011

    Paolo

    E’ possibile far cambiare la lingua del applicazione tramite le Localizable.strings selezionandola all’intetrno della stessa in una view impostazioni ad esempio? altri metodi… Grazie per l’aiuto

  6. 16 Novembre 2012

    Davide

    Nel caso io usi nella mia app delle stringhe (testo per textView e titolo dei bottoni) da localizzare che sono prelevate da un file data.plist, come posso fare?

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO