That's a hard one Mr.Hoxley [headshake]
I don't know if these are any good advice at all, since I don't know what technical limitations you have and exactly what kind of information will be present in the FAQ.
But if it's possible to make the FAQ content dynamic, then this idea might work.
Instead of hard writing all content, you could fetch content for each segment based on selected API/lang. So for example, "How do I use ID3DXSprite?" for C++/D3D9, becomes "How do I use Sprite?" if C#/D3D9 is selected, and "How do I use <put D3D10 equiv. here>" for D3D10.
Then inside that segment the content might be the same or similar for C++/C#, so could fetch the same content. That content however might have keywords which are once again variables, so "ID3DXSprite::Begin()" for C++ becomes "Sprite.Begin" for C# etc.
All functions, classes, enums etc could be variable instead of static text.
You could have some kind of API/lang selection at the top of the FAQ, or above every affected segment, so that you can switch the content by a single click. That would probably be quite convenient for the user. It does not however solve the problem of having to write all the extra content.
A parallel idea might be to have some standard pseudo code which you use for all code segments, so that everyone can understand them. Then you could have api/lang specific code to accompany that, but not guarantee that it will be available for all languages and/or API:s.
In this way you can fill in missing API/lang specific code a little bit at a time whilst still providing, what hopefully will be, comprehendible pseudo code.
Anyway, I don't know if this is any help at all, I didn't really think it through that thoroughly [smile]
Hope you come up with a good solution