2014-05-17 17 views
7

creo traino file Localizable.strings uno per l'inglese e il secondo per l'arabo:NSLocalizedString restituire la chiave al posto del valore

/* The number 1 */ 
"LABEL_ONE" = "label number one"; 

Sto usando questo codice per ottenere il valore di stringa:

[self.Lable1 setText:NSLocalizedString(@"LABEL_ONE", @"The number 1")]; 

ma l'app mostra "LABEL_ONE" invece di "etichetta numero uno"? Qual è il problema? Grazie

+0

possibile duplicato di [NSLocalizedString recupera solo la chiave, non il valore in Localizable.strings (IOS)] (http://stackoverflow.com/questions/9251177/nslocalizedstring-only-retcheves-the-key-not-the -value-in-localizable-stringhe) – bummi

+0

Potrebbe verificarsi a causa del simulatore. Prova il dispositivo iPhone. Spero che funzionerà. –

risposta

5

Il tuo codice è corretto, quindi il problema è altrove.

Ecco alcune possibilità:

  1. Il file Localized.strings non viene copiato nel bundle dell'applicazione. Per verificare questo focus sul file Localized.strings utilizzando il 'Navigatore progetto' e assicurarsi che il bersaglio sia selezionata nel riquadro di destra sotto il 'target appartenenza'
  2. Ci sono alcuni problemi di sintassi all'interno del file Localized.strings, cioè mancanti ;
  3. Il il codice che hai citato non viene eseguito. Per verificare inserire un punto di interruzione e verificare se è stato raggiunto o utilizzare alcuni registri di debug ...
  4. La stringa viene visualizzata nell'array Localized.strings ma manca per l'inglese.
+0

mi scusi, quale stringa manca per Enlglish? (Punto 4) – user3648409

+0

Quello che intendo con (4) è che "LABEL_ONE" = "etichetta numero uno"; appare in arabo Localizable.strings ma non nel file inglese. –

0

Il tuo problema è molto semplice:

L'applicazione non trova il file con le traduzioni.

Quindi è necessario essere sicuri di creare i file localizzabili con il nome corretto (ad esempio en per l'inglese) e anche che nel dispositivo (o simulatore) si è impostato 1 delle lingue preparati da voi in questi file.

In caso contrario, il file non viene trovato e viene restituita la chiave anziché il valore.

+0

Ho i file di traino localizable.strings (inglese) e localisable.strings (arabo), xcode generano questo quando aggiungo localizzazione nelle informazioni del progetto !! – user3648409

+0

E quale lingua hai impostato sul tuo dispositivo? e hai scritto la parola in entrambi i file? –

+0

ora sto usando il simulatore non un vero dispositivo! Sì, scrivo la parola in entrambi i file – user3648409

0

prova questa risposta è lavoro per me Avevo problemi con questo su iOS Simulator. Ho finito per cancellare il file Localization.strings nella directory del simulatore

(/ Users/(me)/Libreria/Application Support/iPhone Simulator/5.0/Applicazioni/(etc)/(progetto)/(application.app)

copiato da qui

https://stackoverflow.com/a/11657945

0

Nel mio caso la pulizia del progetto dopo inizialmente l'introduzione i18n ad esso risolto.

3

il tuo nome file stringa deve essere Localizable.strings.

1

Oltre alla risposta principale, il file di localizzazione deve essere denominato Localizable.strings e non nient'altro.

0

Cerca la virgola (,) nella tua.stringhe di file

ho avuto la seguente linea:

"Changed your mind?" = "¿Cambiaste de opinión?";, 

E in qualche modo che ha fatto la compilazione successo, anche il comando plutil -lint Localizable.strings detto che andava bene. Dopo aver preso la stessa virgola giù da ogni file in quella linea, ora il compilatore è in grado di rilevare che ci sono degli errori.

Il problema precedente era la compilazione riuscita, ma a causa della virgola il file .strings era in realtà sbagliato, quindi nulla dopo la virgola veniva letto. Non so se la virgola ha alcun uso nei file .strings.

Nota: plutil Localizable.strings -lint viene utilizzata per i file di debug .strings Terminal tu come Xcode non può dire dove i .strings compilazione wen sbagliato.