Alternative Xcode XLIFF import/export?

Since Xcode's XLIFF importer and exporter are so broken in so many ways (and yes, I've filed radar after radar after radar, only to see either new things break with each release and old stuff not fixed - I still have the same old problems and a variety of new ones each release)… does anyone have any OTHER tools you like using for XLIFF import/export?


The thing that makes it difficult for us is we are a mixed project with a dozen targets - for iOS, watchOS, macOS, etc… - and we have libraries (like Helpshift) that have their own localizations. Xcode chokes on the library localizations, it chokes on our localization helpers, and it constantly chokes on import. Every import I do, I have to deal with stupid stuff like:

xcodebuild: error: “InfoPlist.strings” couldn’t be moved to “de.lproj” because an item with the same name already exists.


Of course I have 40 different "InfoPlist.strings". WHICH ONE?!?!?!? No idea. I've deleted ALL of them from and I still get the error. I do it all from the command line so I can get the erros, but I'm about to rip my hair out and burn the house down over this.


So…rant over…what tools do you use? 🙂

Post not yet marked as solved Up vote post of alex_kac Down vote post of alex_kac
1.8k views

Replies

And btw - I removed ALL InfoPlist.string from the XLIFF. And yet, I STILL get this error. ARGH! Am I going to have to tell my customers - sorry, our major new release has no localizations because Apple Xcode *****? Nobody cares. Just get the job done.

IDELocalizationWork Temporary File


This is the file its having an error on. I'm stuck. I've spent 5 hours on this now…and I can't get past this point. I've literally deleted everything in the xliff pertaining to plists and its still…

After deleting everything, did you perform an 'option-clean build folder'...

So I'm watching Xcode. Its creating blank string files for Info.plists in different targets. No idea why its copying them to the same spot though.


I went and renamed the Info.plist for each of the extensions to Info-<targetname>.plist and that fixed it.

That was a good call. Renaming Info.plists to include the target name seems to indeed fix things. I had to rename a test target's one, and that made the same error go away

So I'm back…and I still still still have issues with this.


Again, I'm back to xcodebuild: error: “InfoPlist.strings” couldn’t be moved to “fr.lproj” because an item with the same name already exists.


I can sort of fix that by deleting all InfoPList.string files before importing… and then continuing to delete them while the import works. Yeah…that's messed up.


But I'm ALSO having issues like

2017-05-29 13:44:06.710 xcodebuild[13816:786887] [MT] DVTAssertions: ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-12175/IDEFoundation/Localization/IDELocalizationWork.m:177

Details: (group) should not be nil.

Object: <IDELocalizationWork>

Method: +groupStreamFromFileReference:language:

Thread: <NSThread: 0x7fc8a3c159b0>{number = 1, name = main}

Hints:

Backtrace:

0 -[DVTAssertionHandler handleFailureInMethod:object:fileName:lineNumber:assertionSignature:messageFormat:arguments:] (in DVTFoundation)

1 _DVTAssertionHandler (in DVTFoundation)

2 _DVTAssertionFailureHandler (in DVTFoundation)

3 __61+[IDELocalizationWork groupStreamFromFileReference:language:]_block_invoke_2.252 (in IDEFoundation)

4 __33-[IDEStream(IDEStreamMonad) map:]_block_invoke (in IDEFoundation)

5 __24-[_IDEStreamMap onNext:]_block_invoke_4 (in IDEFoundation)

6 -[_DVTTimeSlicedMainThreadOrderedUniquingWorkQueue _processWorkItemsWithDeadline:] (in DVTFouAbort trap: 6



Seriously???? I just can't get a break here. I'm simply exporting my xLIFF file, uploading it to getLocalization, then downloading their generated version - and bam. Its ridiculous. It may be a getLocalization issue, but its been YEARS now and the Xcode team *still* hasn't learned how to give me enough info in the errors? What line number? Where in the file is the problem? SOMETHING!