For me one of the major headaches of Mac OS X and iOS development was project localization. The manual process is tedious and error-prone and tools I tried, both free and commercial, did not satisfy me. They either lacked some features I needed or were awkward and sluggish.
The workflow I employ is very simple: get new strings, get them translated, regenerate localized files, check if everything works. How hard would it be to automate something like this? Shouldn’t be that hard. That’s what I thought starting Vocabulist project. As always I let the fractal nature of software development get the better of me: each subtask contained a bunch of smaller subtask and so forth. And all of them required time and efforts. So it wasn’t one week as I cheerfully estimated in the beginning. It wasn’t even two weeks. But by cutting some features from original requirement I managed to finish it in reasonable amount of time.
So let me introduce to to you: Vocabulist, localization tool for Xcode projects. It does exactly what I described above. First you import Xcode project. Result will look like this:
To the left is project structure and language selector. In the middle – list of strings in base language. To the right is translation area: string’s key, original text and current translation. Not yet translated strings are highlighted red. You just go through them, enter translation and export the localized version of the file when finished. As simple as that.
You can download demo version and try it. The only limitation is number of localizations imported from Xcode: two (one base localization and one translation). Otherwise functionality of demo is the same as the one of full version. You can buy license for $19 to get full version. Vocabulist wasn’t published in Mac AppStore due to sandboxing limitations. They’re real PITA to conform to for an application that extensively works with files used by other applications. The binary is signed with my developer’s account though and automatic updates are available thanks to wonderful Sparkle Framework.