Edit: Whoops! We overlapped each other. Oh well.
can I make the 404 page a php file which I could them use alternative language text based on parsed request?
Yes, exactly. If the 404 is generated by the php, the ErrorDocument directive never gets involved anyway, because the server doesn't know anything about it. As soon as the server sends the request to the php page, its job is done; as far as the server is concerned, everything is a 200 and it can go home :)
So your php page already contains-- or should contain!-- a few lines that "Include" the complete 404 document. (If it doesn't, users will be met with a perfectly blank page. This is either funny or alarming, depending on whether the user knows what's happening.)
Now, since the php has been told what language it's in, it's trivial to let it choose among a set of different 404 documents to send out. Structurally it's just drawing another page. But do make sure the 404 header is getting sent out too. Humans won't know the difference, but search engines will.
I assume the php has a default language, so if this information is lost or damaged it will still build a page. Your users probably don't want to see a 404 page in Esperanto ;)