> If you use a key that does not exist, this will only blow up at runtime.
Using Poedit scans automatically your source and imports all missing translation keys. It's just a simple step you have to be aware of when dealing with translations.
> Keys left over from removed code accumulate in the resource files, introducing unnecessary overhead on the translators.
Again, Poedit scans your source and also removes all unused keys.
We're using Poedit for ages and never had troubles with missing keys or orphaned keys. Just use it every time you deal with translations. The only issue you have with Poedit is you cannot translate variables, only strings, but this seems to be the same with i18n-tasks?
i18n-tasks is on the command line, easily extensible, with configuration that can be easily tailored to the app from data layer to usage search. It is also very easy to integrate it into the test suite.
The default data adapter supports YAML and JSON by default, more common in many web communities (rails, node) than .po.
There's also a good technical overview of Facebook's I18N framework here: https://www.quora.com/Facebook-Internationalization/What-was... .
Don't let this discourage you, your work looks great (props on the correctly tabulated output!) - but it would never work for me in what I think is a reasonable usecase :(