15

Ho utilizzato la localizzazione nella mia app, ma per qualche motivo, alcune delle stringhe (non tutte) non verranno tradotte, vedo la chiave invece il valore. Ho cercato di verificare se l'applicazione trova i file di localizzazione in questo modo:Localizzazione app che mostra la chiave anziché il valore in iOS

NSString *enPath = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
NSString *hePath = [[NSBundle mainBundle] pathForResource:@"he" ofType:@"lproj"]; 
NSString *ruPath = [[NSBundle mainBundle] pathForResource:@"ru" ofType:@"lproj"]; 
NSString *esPath = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"]; 
NSString *frPath = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"]; 
NSString *arPath = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"]; 

E nessuno di loro è pari a zero.

Ho controllato il nome del file di localizzazione ed è Localizable.strings come dovrebbe essere. Controllato anche se la chiave esiste all'interno dei file Localizable.strings e lo fa.

Ho anche provato:

  • Empty Cache
  • pulizia tutti i bersagli
  • Elimina cartella di dati derivati ​​
  • Restart
  • reset simulatore
  • Converti in UTF-16
  • Rimuovere tutti i file di localizzazione e ricrearli.

Anche provato a fare tutto ciò che è nella domanda this.

È importante dire che questo non è solo un problema di Simulatore/Cache. Viene mostrato anche sui dispositivi che scaricano l'app. (Ho un account Enterprise).

Cos'altro posso fare per identificare o risolvere il problema?

+0

è il vostro file chiamato Localizable.string o Localizable.strings? –

+0

Il nome del file è Localizable.strings –

risposta

8

Quindi ho trovato il problema, immagino chi ha tradotto i file Localizable.strings per me è uno stronzo. In 4 posti nei miei stringhe di file c'era una riga come segue:

"KEY" ;= "Value" 

Questa linea causa un qualche tipo di un incidente, ma lasciare che il compilatore per costruire con successo per qualche ragione. Ecco perché non sono riuscito a trovare il bug, solo quando ho deciso di prendere l'ultima chiave e valore che non sono traducibili e spostarli nella parte superiore del file Localizable.strings. Poi sono stato in grado di capire e vedere che il problema è da qualche parte nel mezzo del file e le chiavi e i valori in alto sono tradotti bene.

0

Se si specifica table:nil, quindi NSBundle tenterà di recuperare la localizzazione dalla tabella predefinita (quella in SOMELANG.lproj/Localizable.strings). Se avete la localization altrove, è necessario specificare in modo esplicito la tabella utilizzando table:@"File" (o utilizzare la macro NSLocalizedStringFromTable() in un modo simile:

NSString *value = NSLocalizedStringFromTable(@"key", @"File", nil); 

Inoltre, Doppio controllo che il file Localizable.strings è stato aggiunto al

Targets -> BuildPhases -> Copy Bundle Resources 

non era stato aggiunto automaticamente per me.

2

una cosa che si può fare prendere questo tipo di errori è quello di fare una copia del file stringhe, modificare la posta xtension per plistare e provare ad aprirlo in Xcode.Se c'è qualche problema nel file delle stringhe, verrà mostrato in Xcode poiché il dizionario conterrà solo le chiavi fino al punto in cui c'è un errore. È quindi possibile eseguire un'operazione Trova e trovare l'errore finché non si è sicuri che tutte le stringhe vengano visualizzate nel file Plist. È quindi possibile rinominare il file indietro al .strings

enter image description here

Problemi correlati