Xcode 4.6, iOS 6, SDK iOS bersaglio 6.1localizzazione Base + Storyboard + .strings -> nessuna localizzazione
Ho iniziato con uno storyboard che ha funzionato bene per la mia app; le stringhe che contiene sono in inglese. Volevo aggiungere una localizzazione francese. Ho fatto questo:
- Aggiunto una localizzazione di base, che ha trasferito MainStoryboard.storyboard da en.lproj a Base.lproj.
- Aggiunta una localizzazione francese, che ha clonato InfoPlist.strings (inglese) e MainStoryboard.storyboard (Base) in fr.lproj.
- Modificato un paio di stringhe (titoli di segmenti in un UISegmentedControl) in MainStoryboard.storyboard francese.
- Nel simulatore, impostare la lingua sul francese.
- Ha eseguito l'applicazione da Xcode.
Risultato: questo ha funzionato; le mie stringhe modificate sono state visualizzate nell'applicazione in esecuzione.
Ma io voglio essere tutto elegante. Voglio fare la localizzazione francese usando un file .strings. (Non è solo una questione di essere di fantasia, la localizzazione francese sarà girato a traduttori non tecnici, che non ci si può aspettare di padroneggiare Interface Builder.) Quindi:
- selezionata la MainStoryboard.storyboard base nel Xcode Progetto navigatore.
- Nella finestra di ispezione File, in Localizzazione, è stata modificata la localizzazione francese da "Interface Builder Cocoa Touch Storyboard" a "Stringhe localizzabili".
- Avviso Xcode accettato che lo storyboard francese verrà scartato in favore di un file .strings, che appare nell'editor Assistant.
- Fatto le stesse due modifiche; non c'è dubbio che siano le stringhe sbagliate, perché sono tutte commentate come IBUISegmentedControl ... segmentTitles; e il testo dell'etichetta non è visualizzato altrove nel file .strings.
- Eliminata la copia (funzionante) esistente dell'app dal simulatore.
- Ran l'app.
Risultato: La visualizzazione utilizza la base (in origine inglese) la localizzazione, invece di caricare le stringhe francesi.
La conversione in Autolayout non ha avuto alcun effetto. L'eliminazione dell'app dal simulatore non ha avuto alcun effetto. L'eliminazione della directory dei prodotti derivati non ha avuto alcun effetto. Un overflow dello stack ha suggerito di utilizzare ibtool per generare il file .strings anziché Xcode; i due file generati sono identici.
Questo non è soddisfacente. Come ho detto, non posso trasformare un file .storyboard in un traduttore non tecnico. Come posso convincere iOS ad accettare le localizzazioni dello storyboard da un file .strings?
La pulizia della cartella di build ha risolto il problema per me. – Robert