2016-12-27 6 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 exception hell. С яркой стороны мой текущий крах, похоже, происходит после того, как он заканчивает работу, поэтому я могу продолжать работать.

Есть куча вещей, которые могут пойти не так и вызвать сбой импорта. Обычно Xcode просто мигает из существования. Если вы хотите увидеть некоторую информацию до аварии, используйте xcodebuild:

xcodebuild -verbose -importLocalizations -localizationPath "lang.xliff" -project ./myProject.xcodeproj 
  • При локализации, не добавить язык непосредственно к info.plist. Вместо этого добавьте файл InfoPlist.Strings в свой проект и добавьте к нему этот язык. Возможно, вам придется вручную создать файл в каждой папке lang.lproj. Убедитесь, что у вас нет файла info.plist в любой папке lang.lproj, кроме base.lproj.

  • При локализации Settings.bundle создайте свои папки lang.lproj. Когда вы создаете файл Root.strings, важна капитализация. Он должен быть «Root.strings», иначе он мог бы работать на iOS, но он не будет работать на iOS Simulator.

  • Осмотритесь в своей структуре проекта. После того, как вы работаете с ручным инструментом, вы получите кучу файлов в неправильном месте. У вас может быть файл Localized.Strings в корневой группе вашего проекта. Удалите их.

  • Используйте base.lproj вместо en.lproj, поэтому вручную удалите файлы en.lproj, если вы найдете их в проекте.

  • Файл XLIFF должен быть хорошо отформатирован, но я не думаю, что это приводит к сбою.

  • не для вас, но предположительно в Xcode 7 произошел определенный сбой, поэтому убедитесь, что вы на последнем, чтобы избежать этого.

У меня есть скрипты python для жизни с xliff. Им нужно, чтобы исходный путь обновлялся в некоторых сценариях, но они могут помочь в долгосрочной перспективе: https://github.com/danloughney/xliffHell

+2

Первый пункт выстрела работал и на меня. – laynemoseley

+0

Должно быть что-то не так с моим файлом проекта или рабочей областью. У меня есть новое приложение, которое не сбой при импорте XLIFF. если вы получите этот крах, возможно, полное воссоздание проекта поможет. –

+0

Crash все еще происходит с Xcode 9 beta –

Смежные вопросы