2015-05-26 16 views
8

Ho completato la traduzione della mia app in turco utilizzando la localizzazione di base. Tuttavia, devo anche tradurre la chiave NSLocationWhenInUseUsageDescription nel mio file Info.plist. Ho fatto esattamente quello che ho fatto per tutto il resto:NSLocationWhenInUseUsageDescrizione localizzazione tramite file .strings non funzionante

Siamo andati al file ispettore e controllato turco:

enter image description here

poi sono andato alla nuova risorsa stringhe e completato la mia traduzione con l'aggiunta di questo tasto per la localizzazione File:

enter image description here

"NSLocationWhenInUseUsageDescription" = "[my Turkish description of location permissions]";

Salvata, compilata, persino cancellata dall'app dispositivo e ricostruita, ma inutilmente. Quando la mia app richiede i permessi di localizzazione, la spiegazione sotto è ancora quella inglese (ho provato a includere anche la traduzione inglese sotto il file di traduzione di base, ma non ha cambiato nulla).

Tutto il resto è turco, tradotto bene. È solo il permesso di posizione che non traduce. Ho anche visto How to localise a string inside the iOS info.plist file? e ho aggiunto la chiave "Localized resources can be mixed" = YES (ovviamente come CFBundleAllowMixedLocalizations, non letteralmente quella frase) al mio plist originale ma anche questo non ha cambiato nulla.

Come posso risolvere il problema?

+0

Prova con make clean ed elimina il progetto dalla cartella DerivedData –

+0

@DanieleCandotti ha pulito la cartella di build, ha eliminato tutto all'interno di DerivedData, ha rimosso l'app, ha riavviato Xcode, è stato ricostruito. ancora lo stesso. –

+0

Prova a rimuovere la base quindi aggiungi l'inglese –

risposta

2

Ho ricominciato. Rimosso le traduzioni, pulito il progetto e riprovato. Ha funzionato. Non ho idea del perché inizialmente non lo fosse.

+0

funziona in simulatore o solo dispositivo? –

+0

@Zak bene a causa della natura indeterministica del problema non posso dire qualcosa di esatto, ma se vuoi essere al sicuro, resettare il simulatore prima di provare questi non ti farà male :) –

+0

lo proverò. Grazie! –

18

Ecco cosa ha funzionato per me in Xcode 7.1.

Per prima cosa, passare alla directory del progetto e creare manualmente due file , il primo nella cartella en.lproj e il secondo nella cartella fr.lproj.

Entrambi i file devono avere il seguente contenuto:

NSLocationWhenInUseUsageDescription = "YOUR TEXT HERE"; 

Dal momento che i file non verranno visualizzati automaticamente in Xcode, è necessario aggiungere manualmente sia al fascio di progetto, questo può essere raggiungere attraverso il tasto destro del mouse il nome del progetto in Xcode e scegliendo l'opzione Add files to X, quindi selezionando i file appena creati.


Inoltre, se si desidera verificare il risultato & far funzionare le cose sicure, cambiando il Application Language in Edit Scheme > Run > Options non è sufficiente.

è necessario modificare il simulatore o dispositivo lingua tramite Settings > General > Language & Region > iPhone Language

+0

Xcode non crea automaticamente i file/le cartelle appropriati quando si attiva la localizzazione da inspector? O stai dicendo che c'è un bug con il tracciamento di Xcode (modifiche/cancellazione/creazione, ecc.) In questo modo? –

+1

Ho provato a localizzare 'Info.plist' usando il pulsante di localizzazione nel menu Inspector ma non ha funzionato per me, anche dopo aver pulito, rimosso e ripetuto più volte. –

+0

C'è sicuramente un bug nel processo di localizzazione, bello vedere che non lo si è incontrato durante la creazione manuale di file/cartelle. Ci proveremo. –

0

Il mio problema sembra essere case sensitive:

mio InfoPlist.strings avevano un più basso "i" nel Finder e Xcode (infoPlist), ma deve essere superiore.

Ho cambiato nome file e riferimento nel progetto sorgente Xcode e funziona (o eliminato e ricreato con il nome giusto).

Problemi correlati