(Ci sono domande simili, alcune hanno dato risposte che ho provato e trovato non funzionano.) Altri non hanno avuto risposta, presumo perché i querent non fornisci tutti i dettagli che sto per.)Storyboard + localizzazione base + file .strings non localizza in fase di esecuzione
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
en.lproj
-Base.lproj
. - Aggiunta una localizzazione francese, che ha clonato
InfoPlist.strings
(inglese) eMainStoryboard.storyboard
(Base) infr.lproj
. - Modificato un paio di stringhe (titoli di segmenti in un
UISegmentedControl
) nel franceseMainStoryboard.storyboard
. - 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:
- Selezionato la base
MainStoryboard.storyboard
nel progetto Xcode 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.
Questo non è soddisfacente. Ho provato a eliminare l'app dal simulatore e persino a eliminare la cartella dei dati derivati. Il bug persiste.
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
?
Conversione storyboard Layout Auto ha nessun effetto. – user698970
Una risposta a un'altra domanda simile suggeriva di eseguire ibtool sullo storyboard di base e usarlo come starter per il file .strings invece di quello fornito da Interface Builder. I due file sono identici. – user698970
Ecco un'altra variabile: lo storyboard ha molte scene non raggiungibili: non sono il controller iniziale e non hanno alcun passaggio che lo porti a termine. (Non è mia intenzione, dovrò parlare con lo sviluppatore che ha pensato che fosse una buona idea.) Potrebbe interferire con la localizzazione .strings? – user698970