2016-08-02 93 views
0

使用包含框架的複雜項目時,我們開始在使用導出/導入XLIFF文件腳本時遇到問題。這個問題實際上是圍繞進口腳本,它扔在未來的錯誤:在/ Library斷言失敗:XCode 7.3.1 importLocalization崩潰

--- xcodebuild2016-04-13 11:56:20.933 xcodebuild聯編[3927:40233] [MT] DVTAssertions /Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-10183.3/IDEFoundation/Localization/IDELocalizationWork.m:177
詳細信息:(組)不應該爲零。
對象:
方法:+ groupStreamFromFileReference:語言:
主題:{數= 1,姓名=主}
提示:無
回溯:
0 - [DVTAssertionHandler handleFailureInMethod:對象:文件名:LINENUMBER:assertionSignature :MessageFormat中:參數:(在DVTFoundation)
1 _DVTAssertionHandler(在DVTFoundation)
2 _DVTAssertionFailureHandler(在DVTFoundation)

任何人都可以建議我解決這個bug嗎?

回答

0

花費1天的時間來找出Apple在7.3.1中修復了一些本地化崩潰,並引入了其他錯誤。因此,使用7.2.1命令行工具測試相同的腳本就像是魅力一樣。但是,這並沒有停下來尋找解決方案,所以這裏是流程,這使得我的腳本再次正確運行。

輸入:

  • 具有從代碼只定位項目;
  • 幾個子項目/框架,每個都有一個目標二進制+目標單元測試;
  • 放心,以你的項目

步驟刪除任何Localizable.strings文件: 1.選擇項目並進行本地化出口(編輯>導出本地化..)。 2.在我的情況下(但也許這只是一個導出錯誤,其中不包括標籤),我不得不編輯導出的en.xliff文件並在每個<file .. target-language="en">塊的末尾添加target-language="en"。 3.導入迴文件(編輯器>導入本地化..)

但這並非全部......似乎第一次導出不會一直導出所有的東西(越野車),所以你可能必須運行相同的處理幾次。每次我再次輸出時,XLIFF文件都包含一個額外的本地化塊。

例如,擁有一個包含app目標+單元測試目標的項目,第一個導出過程生成了3個文件(2個InfoPlist.strings + 1個Localizable.strings)。下一次,導出將生成4個文件(2個InfoPlist.strings + 2個Localizable.strings)。

無論何時從XCode導出,停止添加新的本地化文件,我的腳本開始工作,我可以重新使用這些文件。