2013-02-26 21 views
7

Xcode 4.6, Ziel iOS 6, SDK iOS 6.1Basis Lokalisierung + + Storyboard .strings -> keine Lokalisierung

ich mit einem Storyboard gestartet, die gut für meinen App gearbeitet; Die enthaltenen Strings sind in Englisch. Ich wollte eine französische Lokalisierung hinzufügen. Ich tat dies:

  • Added eine Basis-Lokalisierung, die MainStoryboard.storyboard von en.lproj zu Base.lproj übertragen.
  • Eine französische Lokalisierung hinzugefügt, die InfoPlist.strings (Englisch) und MainStoryboard.storyboard (Base) in fr.lproj geklont hat.
  • Ein paar Zeichenfolgen (Titel von Segmenten in einem UISegmentedControl) in der französischen MainStoryboard.storyboard geändert.
  • 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 durchführen. (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 im 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 zugunsten einer .strings-Datei verworfen wird, die im Assistenten-Editor angezeigt wird.
  • Die gleichen zwei Bearbeitungen vorgenommen; Es gibt keine Frage, dass sie die falschen Strings sind, weil sie alle kommentiert sind als IBUISegmentedControl ... segmentTitles; und der Beschriftungstext erscheint nicht irgendwo sonst in der .strings-Datei.
  • 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.

Die Konvertierung in Autolayout hatte keine Auswirkungen. Das Löschen der App aus dem Simulator hatte keine Auswirkungen. Das Löschen des Verzeichnisses für abgeleitete Produkte hatte keine Auswirkungen. Ein Stack-Overflow schlug vor, ibtool zum Generieren der .strings-Datei anstelle von Xcode zu verwenden. Die zwei generierten Dateien sind identisch.

Dies ist nicht zufriedenstellend. 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?

Antwort

4

Ich hoffe, Sie haben bereits gelöst. hatte ich das gleiche Problem (mit Übersetzung in italienischer Sprache) und ich es auf diese Weise gelöst:

1) Datei Localizable.string in it.lproj

2) verwenden NSLocalizedString (@ "TEST", @ „Kommentar ") Methode, wo es benötigt

3) hinzufügen Localizable.string in Build-Phasen-> Kopieren Bundle-Ressource Der letzte Schritt ist nicht erforderlich in iOS 5.1.

Ich löste dank der Reaktion von Cocoanetics in [Frage]: Base internationalization and multiple storyboard not working right

5

die englische Lokalisierung Kontrollkästchen aktivieren, die Lokalisierung Strings Einstellung mit:

Localization settings

Reinigen Sie Ihren Build-Ordner (⌥⇧ ⌘K) und neu aufbauen.

+0

Die Reinigung des Build-Ordners löste das Problem für mich. – Robert

1

Um die Antwort von clayymation zu einem sauberen Build hinzuzufügen, hilft es auch, die App aus dem iOS Simulator zu löschen.

Es kann sich darauf beziehen, was John Hess's answer describes.

1

Hatte meine Strings-Datei in ein Storyboard und dann wieder in eine Zeichenkette-Datei zu konvertieren, um dies zu arbeiten. Lächerlich. Apple könnte von Microsoft etwas über die Entwicklung zuverlässigerer Entwicklerwerkzeuge lernen.

+0

Es ist mir genauso passiert. :3 –