2009-05-22 13 views
13

Ho bisogno di localizzare un'app in sviluppo per l'inglese & spagnolo.Come semplificare la localizzazione di iPhone?

Nonostante io segua il modo Apple di usare NSLocalizedString & creare pennini per entrambi, ho già perso la traccia della nuova stringa che deve essere localizzata e ho scoperto con sorpresa che ho bisogno di rifare i pennini in spagnolo quando cambia il maestro.

(Proprio come questo http://www.gigliwood.com/weblog/Cocoa/A_Great_Need_for_Be.html)

Mi chiedo se esiste un'alternativa/modo migliore/più automatizzato.

Conosco l'utilizzo di gettext & e mi chiedo se è possibile utilizzare qualcosa del genere.

Oppure se esiste qualche script o strumento per questo.

risposta

17

Non c'è davvero una soluzione facile qui. I NIB devono essere disposti individualmente per ogni lingua. In una certa misura, ciò migliora l'interfaccia utente generale, poiché in realtà lingue diverse spesso richiedono layout diversi per apparire al meglio. Il russo e il tedesco sono lingue molto più "grandi" in ambito immobiliare rispetto all'inglese. I cinesi possono essere spesso molto più piccoli e un layout diverso sembra migliore con i caratteri cinesi. L'arabo e l'ebraico sono da destra a sinistra e potrebbero richiedere modifiche radicali al layout. Il layout automatizzato è semplice, ma ciò si ottiene variando i livelli di brutto in tutte le lingue. Quando viene data la scelta tra facile per lo sviluppatore e brutto contro difficile per lo sviluppatore e bello, Apple sceglie quasi sempre quest'ultimo. Detto questo, Apple non ha ancora reso il tutto più semplice che potevano.

Quindi la prima lezione qui è quella di mantenere i vostri NIB semplici. Questo è più facile su iPhone che su Mac perché iPhone non ha binding e le NIB per iPhone sono in genere più semplici. È inoltre possibile utilizzare l'iniezione di testo per i NIB che hanno una quantità di testo molto ridotta (come un titolo). "Iniezione di testo" è un modo elegante per dire "usa una presa per l'etichetta e impostala sul testo localizzato quando carichi la vista".

ibtool è in grado di estrarre le stringhe dai NIB e anche inserirle nuovamente, il che può essere utile. Ho usato iLocalize, che è utile per lavorare con i localizzatori di contratti, ma in realtà non aiuta il problema di cui stai parlando.

Ho provato a sbarazzarsi di NIB e ad usare semplicemente il codice, pensando che avrebbe reso le cose più semplici, ma in realtà non è stato così. È stato più facile definire ogni lingua nella NIB piuttosto che elaborare una logica di layout che risultasse valida in tutte le lingue (vedere il primo paragrafo). L'iniezione di testo era utile solo in una manciata di posti. Se riesci a dividere i tuoi NIB in quelli che devono essere localizzati e quelli che non lo fanno, può essere utile. Sull'iPhone, ho scoperto che meno della metà dei miei NIB aveva effettivamente testo o immagini localizzate al loro interno.

Ovviamente si dovrebbe leggere Internationalization Programming Topics, ma mi dispiace dire che non c'è davvero una risposta facile al tuo problema. Spedizione prodotti localizzati in 19 lingue, sento il tuo dolore.

2

Talvolta i NiB devono essere disposti per ciascuna lingua, ma la maggior parte delle volte non devono essere ridisegnati per ogni lingua.

Se ibtool utilizzato per generare le corde dai pennini

ibtool --generate corde-di file

Si possono importare in nuovi pennini per ogni lingua.

ibtool --import corde-di file

Si tratta di strumenti a linea di comando in modo che siano script. Date un'occhiata a 'man ibtool'

2

Quello che faccio è che creo IBOutlet per tutto il testo ui nel mio file pennino (UILabel, UITextField, UITextView, ecc.) E assegno le sue proprietà text/placeHolder alla NSLocalizaedString desiderata in modo programmatico .

dato che io ho fornito le traduzioni di una particolare stringa in diverse Langs, apparirà la versione tradotta del testo nel file pennino quando l'iPhone impostazioni internazionali modifiche.

Spero che altri lo trovino utile

Problemi correlati