Look, this can be hard to grasp. In zproject we write models of our library APIs. From these we get stuff as exotic as bindings in Java, python, Ruby, node, and all scripts to build them.
Think of it as as generic templating library/system. It has no knowledge of the output, or the differences. The benefit is that you write one "unified" say model, or some sort of input. And then write the translation to different languages (if you want, it can just be one), and have it generate for you automatically based on the rules you coded into the translation logic.