In the context of computer languages, there is no official (or standard) definition of compile, translate and interpret.
Like Java, C# provides binary portability. See Slashdot | Interviews | C++ Answers From Bjarne Stroustrup (I assume you know who Bjarne Stroustrup is). In that he says:
The technical hardest problem is probably the lack of a C++ binary interface (ABI).
C and C++ do not have a binary interface, therefore they do not provide binary portability.
As has been said, C# is compiled into IL (providing binary portability) then during execution the IL is compiled into machine code. Since it becomes machine language during execution, it is usually as efficient as C++.
Note that C++ is not used for websites, I assume due to the security risk of the machine language.