2016-12-27 3 views
4

Xcode (8.1) abstürzt, wenn ich die Lokalisierungen für mein Projekt zu importieren. Es stürzt auch ab, wenn ich die gleiche xliff-Datei ohne Änderung exportieren und dann importieren. HierXcode 8 Lokalisierung Import Absturz

ist die XLIFF-Datei: http://ge.tt/7J5UY3i2

Hier ist der vollständige Absturzbericht http://pastebin.com/JsJFeCqB. Irgendwelche Tipps oder Workarounds dafür?

Application Specific Information: 
ProductBuildVersion: 8B62 
UNCAUGHT EXCEPTION (NSInvalidArgumentException): -[Xcode3VariantGroup addToTargetDefaultResourcesBuildPhase:]: unrecognized selector sent to instance 0x7fe69615cba0 
UserInfo: (null) 
Hints: None 

Backtrace: 
    0 __exceptionPreprocess (in CoreFoundation) 
    1 DVTFailureHintExceptionPreprocessor (in DVTFoundation) 
    2 objc_exception_throw (in libobjc.A.dylib) 
    3 -[NSObject(NSObject) doesNotRecognizeSelector:] (in CoreFoundation) 
    4 ___forwarding___ (in CoreFoundation) 
    5 _CF_forwarding_prep_0 (in CoreFoundation) 
    6 __81+[IDELocalizationWork fileReferenceStreamForName:directoryPath:superitem:target:]_block_invoke (in IDEFoundation) 
    7 __33-[IDEStream(IDEStreamMonad) map:]_block_invoke (in IDEFoundation) 
    8 __24-[_IDEStreamMap onNext:]_block_invoke_4 (in IDEFoundation) 
    9 -[_DVTTimeSlicedMainThreadOrderedUniquingWorkQueue _processWorkItemsWithDeadline:] (in DVTFoundation) 
10 -[DVTTimeSlicedMainThreadWorkQueue _processWithDeadline:] (in DVTFoundation) 
11 -[_DVTTimeSlicedMainThreadActiveWorkQueues _processWorkQueuesOnDeadline] (in DVTFoundation) 
12 __NSFireDelayedPerform (in Foundation) 
13 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (in CoreFoundation) 
14 __CFRunLoopDoTimer (in CoreFoundation) 
15 __CFRunLoopDoTimers (in CoreFoundation) 
16 __CFRunLoopRun (in CoreFoundation) 
17 CFRunLoopRunSpecific (in CoreFoundation) 
18 RunCurrentEventLoopInMode (in HIToolbox) 
19 ReceiveNextEventCommon (in HIToolbox) 
20 _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) 
21 _DPSNextEvent (in AppKit) 
22 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit) 
23 -[DVTApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in DVTKit) 
24 -[NSApplication run] (in AppKit) 
25 NSApplicationMain (in AppKit) 
26 start (in libdyld.dylib) 
+0

Ich habe das gleiche Problem. Hast du schon etwas gefunden? –

Antwort

0

Einer Ihrer Strings enthält doppelte Anführungszeichen. Versuchen Sie, sie durch " in Ihrer nicht übersetzten XLIFF-Datei zu ersetzen und sehen Sie, ob Sie diese Datei erneut importieren können. Dies ist nur eine wilde Vermutung, und ich habe nicht XCode 8.1 zur Hand, um zu versuchen und diese selbst zu reproduzieren, aber das ist das einzige, was ich in der XLIFF-Datei bemerkt, die zwielichtigen aussah.

+0

Das hat leider nicht funktioniert:/ – tdeegan

+0

Sorry ... Nächste wilde Vermutung: Ihre übersetzte XLIFF validiert nicht gegen das strenge Schema XLIFF 1.2.Einige '' Elemente treten vor ihrer '' auf. Ich vermute jedoch, dass dies bei der nicht übersetzten Datei nicht der Fall ist. Und das 'build-num' Attribut ist im' ' Element nicht erlaubt. Sie könnten auch versuchen, diese doppelten Anführungszeichen mit einem umgekehrten Schrägstrich zu versehen: es scheint seltsam, aber für einige Leute ist einfaches XML nicht kompliziert genug, also mischen sie es mit .properties Syntax. – Jenszcz

2

Dieses Problem tötet mich. Das Werkzeug könnte/sollte funktionieren und dein Leben so viel einfacher machen, aber es tut einfach nicht. Ich hatte dieses Problem über den Sommer und reparierte es mit dem info.plist Tipp in der ersten Kugel, aber ich habe vor kurzem das Projekt aktualisiert und bin wieder in xliff exception hell wieder. Auf der positiven Seite scheint mein aktueller Absturz nach dem Abschluss der Arbeit zu geschehen, so dass ich weiterarbeiten kann.

Es gibt eine Reihe von Dingen, die schief gehen können und bewirken, dass der Import zum Absturz bringen. Normalerweise blinkt Xcode einfach nicht mehr. Wenn Sie einige Informationen vor dem Absturz sehen möchten, verwenden Sie xcodebuild:

xcodebuild -verbose -importLocalizations -localizationPath "lang.xliff" -project ./myProject.xcodeproj 
  • Wenn Sie lokalisieren, fügen Sie nicht die Sprache direkt an einen info.plist. Fügen Sie Ihrem Projekt stattdessen eine InfoPlist.Strings-Datei hinzu, und fügen Sie die Sprache hinzu. Möglicherweise müssen Sie die Datei in jedem lang.lproj-Ordner manuell erstellen. Stellen Sie sicher, dass Sie keine Datei "info.plist" in einem beliebigen Ordner "lang.lproj" außer "base.lproj" haben.

  • Wenn lokalisierende Settings.bundle, Ihre Lang.lproj Ordner erstellen. Wenn Sie die Root.strings-Datei erstellen, ist die Groß-/Kleinschreibung von Bedeutung. Es muss "Root.strings" sein, sonst funktioniert es unter iOS, aber auf dem iOS Simulator funktioniert es nicht.

  • Schauen Sie sich um in Ihrer Projektstruktur. Nachdem Sie mit dem Absturzwerkzeug gearbeitet haben, landen Sie am falschen Ort. Sie können eine Localized.Strings-Datei in der Stammgruppe Ihres Projekts haben. Entferne diese.

  • Verwenden Sie nur base.lproj anstelle von en.lproj, also entfernen Sie en.lproj Dateien manuell, wenn Sie sie im Projekt finden.

  • die XLIFF-Datei muss gut formatiert sein, aber ich denke nicht, dass das einen Absturz verursacht.

  • nicht für Sie, aber angeblich gab es einen bestimmten Absturz in Xcode 7 behoben, so stellen Sie sicher, dass Sie auf dem neuesten Stand sind, um das zumindest zu vermeiden.

Ich habe einige Python-Skripte für mit xliff leben. Sie brauchen Quellpfad in einigen der Skripte aktualisiert, aber sie können auf lange Sicht helfen: https://github.com/danloughney/xliffHell

+2

Der erste Punkt hat auch für mich funktioniert. – laynemoseley

+0

Es muss etwas mit meiner Projektdatei oder meinem Arbeitsbereich nicht stimmen. Ich habe eine neue App, die beim Importieren von XLIFFs nicht abstürzt. Wenn Sie diesen Absturz bekommen, wird das Projekt vielleicht komplett neu erstellt. –

+0

Absturz passiert immer noch mit Xcode 9 beta –