2016-12-27 95 views
4

當我爲我的項目導入本地化時,Xcode(8.1)崩潰。 它也崩潰時,我導出,然後導入相同的xliff文件未經修改。Xcode 8本地化導入崩潰

這裏是XLIFF文件:http://ge.tt/7J5UY3i2

以下是完整的崩潰報告http://pastebin.com/JsJFeCqB。任何提示或解決方法?

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

林有同樣的問題。你有沒有找到任何東西? –

回答

0

其中一個字符串包含雙引號。請嘗試在未翻譯的XLIFF文件中將其替換爲",然後查看是否可以重新導入該文件。這只是一個瘋狂的猜測,我手邊沒有XCode 8.1來嘗試重現這一點,但這是我在XLIFF文件中注意到的唯一看起來不可靠的東西。

+0

這沒有遺憾的工作:/ – tdeegan

+0

對不起...... 下大膽猜測:您翻譯XLIFF不驗證對XLIFF 1.2嚴格的模式。某些「」元素出現在它們的「」之前。不過,我認爲這不是未翻譯文件的情況。 '''元素中不允許使用'build-num'屬性。 您也可以嘗試在反斜槓前面加上雙引號:這似乎很奇怪,但對於一些人來說,純XML並不夠複雜,所以他們將它與.properties語法混合使用。 – Jenszcz

2

這個問題殺了我。該工具可以/應該工作,讓你的生活變得如此簡單,但它卻沒有。我在夏天遇到了這個問題,並在第一個項目符號中使用info.plist提示修復了它,但是我最近更新了項目,並且我又回到了xliff異常地獄。在光明的一面,我目前的崩潰似乎在它完成工作後發生,所以我能夠繼續工作。

有一堆東西可能會出錯,導致導入崩潰。通常Xcode只是閃爍不存在。如果你想看到在飛機墜毀前的一些信息,使用xcodebuild聯編:

xcodebuild -verbose -importLocalizations -localizationPath "lang.xliff" -project ./myProject.xcodeproj 
  • 當本地化,不直接增加語言的info.plist中。相反,請將InfoPlist.Strings文件添加到您的項目並添加該語言。您可能需要在每個lang.lproj文件夾中手動創建該文件。確保在base.lproj以外的任何lang.lproj文件夾中沒有info.plist文件。

  • 本地化Settings.bundle時,創建您的lang.lproj文件夾。在創建Root.strings文件時,大小寫很重要。它必須是「Root.strings」,否則它可能在iOS上工作,但它不適用於iOS模擬器。

  • 環顧您的項目結構。在使用崩潰工具後,最終會在錯誤的地方出現一堆文件。您可以在項目的根組中包含Localized.Strings文件。刪除這些。

  • 只能使用base.lproj代替en.lproj,因此如果在項目中找到它們,請手動刪除en.lproj文件。

  • 的XLIFF文件確實需要很好地格式化,但是我不認爲這會導致系統崩潰。

  • 不適合你,但據說有固定在Xcode 7,以便確保您使用的是最新,以避免一個,至少一個特定的崩潰。

我有一些生活在xliff中的python腳本。他們需要源路徑在一些腳本的更新,但他們可以幫忙從長遠來看:https://github.com/danloughney/xliffHell

+2

第一個要點也適用於我。 – laynemoseley

+0

我的項目文件或工作區必須有問題。我有一個新的應用程序,導入XLIFF時不會崩潰。如果你遇到這個崩潰,也許完全重建該項目將會有所幫助。 –

+0

Xcode 9測試版發生崩潰 –