btw: why trans? it’s called compile
I think because not exactly translation nor compilation. Source-to-source translation implies that a human might look at the result, or interact with it in some way before compiling it. They want source. Otherwise they should just compile directly to a linkable library (e.g. *.so object code). And traditionally, compilation refers to converting source into (non-readable) object code.
Here, translation is done to JS but with no interest in human reading. It’s meant to be executed (by a browser), and yet it’s neither object nor machine code. But it’s roughly equivalent to a platform-independent object code, made fast by good interpreters/JITs. See Gary Bernhardt’s talk about this very topic.
Nowadays, the lines are quite blurry. Machine code isn’t what it used to be, because underneath it is not “bare metal” but more layers of interpretation, e.g. micro-code or micro-operations. The CPU is interpreting instructions and doing all sorts of re-ordering, branch prediction, pipelining, cache management, etc. So maybe we should do away with the word compilation, since it’s turtles many levels down. (There is bare metal down there, somewhere.) But almost everything these days is interpretation or a translation (transpilation?) to another intermediate representation.