I guess the closest translation of weshalb to English would be: “On what’s (or whose) behalf”, which comes pretty close to “from what cause”. The thing is, that warum acts exactly like the English “why” (both meanings covered), so you can switch weshalb for warum in most cases.
Warum bist du zu spaet?
and Weshalb bist du zu spaet?
both parse the same.
Similarly, you can switch warum and wozu: Warum hast du angerufen?
and Wozu hast du angerufen?
However wozu and wodurch parse differently: Wozu hast du angerufen?
and Wodurch hast du angerufen?
give completely different meanings. Wozu hast du angerufen? can best be translated as “What did you call for?” and Wodurch hast du angerufen? can best be translated as “What caused you to call?”
Weshalb hast du angerufen? can also best be translated as “What caused you to call?”
Well, now I see that Nils has corrected my error. As he said: wieso, weshalb, and warum are like the English “why”, while wodurch and wozu can be used to mean “from what cause” and “for what purpose”.
Thanks Nils! I guess I should brush up on my German. All this Dutch (which is very simple in comparison) I’ve been speaking has corrupted me.
It’s possible (I have nothing to back me up here but a somewhat shoddy knowledge of genderal trends in language change) that why initially had only the one meaning, and later took on the second meaning. My money would be on “from what cause” as the original, but that’s just a guess.