(Es gibt ähnliche Fragen. Einige führten zu Antworten, die ich versucht habe und die nicht funktionierten. Andere haben keine Antworten, ich nehme an, weil die Fragen nicht Liefern so viele Details wie möglich.)Storyboard + Basislokalisierung + .strings Datei lokalisiert nicht zur Laufzeit
Ich begann mit einem Storyboard, das für meine App gut funktionierte; Die enthaltenen Strings sind in Englisch. Ich wollte eine französische Lokalisierung hinzufügen. Ich tat dies:
- Added eine Basis-Lokalisierung, die
MainStoryboard.storyboard
en.lproj
-Base.lproj
übertragen. - Eine französische Lokalisierung hinzugefügt, die geklont
InfoPlist.strings
(Englisch) undMainStoryboard.storyboard
(Base) infr.lproj
. - Geändert ein paar Strings (Titel von Segmenten in einem
UISegmentedControl
) in der FranzösischMainStoryboard.storyboard
. - Setzen Sie im Simulator die Sprache auf Französisch.
- Lief die App von Xcode.
Ergebnis: Dies hat funktioniert; Meine geänderten Zeichenfolgen erschienen in der laufenden Anwendung.
Aber ich möchte alle Phantasie sein. Ich möchte die französische Lokalisierung mit einer .strings
Datei machen. (Es ist nicht nur eine Frage des Seins Phantasie, die Französisch Lokalisierung auf nicht-technische Übersetzer übergeben werden, die nicht erwartet werden kann, Interface Builder zu meistern.) Also:
- ausgewählt, um die Basis
MainStoryboard.storyboard
in dem Xcode-Projekt Navigator. - Im Dateiinspektor unter Lokalisierung wurde die französische Lokalisierung von "Interface Builder Cocoa Touch Storyboard" zu "Localizable Strings" geändert.
- Akzeptierte Xcode-Warnung, dass das französische Storyboard verworfen wird zugunsten einer
.strings
Datei, die im Assistenten-Editor angezeigt wird. - Die gleichen zwei Bearbeitungen vorgenommen; Es gibt keine Frage, dass sie die falschen Zeichenfolgen sind, weil sie alle kommentiert sind als
IBUISegmentedControl...segmentTitles
; und der Beschriftungstext erscheint nicht irgendwo anders in der Datei.strings
. - Die vorhandene (funktionierende) Kopie der App wurde aus dem Simulator gelöscht.
- Lief die App.
Ergebnis: Die Ansicht verwendet die Basis (ursprünglich englisch) Lokalisierung, anstatt die Französisch-Strings zu laden.
Dies ist nicht zufriedenstellend. Ich habe versucht, die App aus dem Simulator zu löschen und sogar den Ordner für abgeleitete Daten zu löschen. Der Fehler bleibt bestehen.
Wie gesagt, ich kann eine .storyboard
Datei nicht an einen nichttechnischen Übersetzer übergeben. Wie kann ich iOS dazu bringen, die Storyboard-Lokalisierung aus einer .strings
Datei zu akzeptieren?
die Storyboard Umstellung auf Auto-Layout hatte Kein Effekt. – user698970
Eine Antwort auf eine andere ähnliche Frage schlug vor, ibtool auf dem Basis-Storyboard auszuführen und diese als Starter für die .strings-Datei anstelle des bereitgestellten Interface Builders zu verwenden. Die zwei Dateien sind identisch. – user698970
Hier ist eine weitere Variable: Das Storyboard hat viele unerreichbare Szenen: Sie sind nicht der anfängliche Controller, und sie haben keine Segmente, die in sie führen. (Nicht mein Tun; ich muss mit dem Entwickler sprechen, der dachte, das sei eine gute Idee.) Könnte das die Lokalisierung von .strings beeinträchtigen? – user698970