heeft is for the 3rd person singular (he/she/it in English; hij/ze/zij/het in Dutch), whilst hebt is for the second person singular (you in English and je/jij in Dutch. Also, in English verb to have, the 3rd person is conjugated as "has" in the positive (the sheep has a tail, for example), but as "have" in the negative (the sheep does not have a tail).
Because has not a tail is not standard English (note that it is still used in certain dialects, but in academic/formal contexts it would be frowned upon - it was the norm in the times if Shakespeare, though).
Thus, the only grammatically correct possibilities are
√ The sheep doesn't have a tail
√ The sheep has not got a tail
√ The sheep hasn't got a tail
As I said before, this doesn't mean that it isn't used in certain dialects. But I gather from your username that English is not your native language, therefore I strongly recommend that you stick to standard English.
I think whoever added that translation took context into consideration. Obviously with geen hoorn it's best to translate it as does not have a horn. Though since there are plenty of animals that have multiple horns they might have added that. Saying that though for it to make that translation it really should be geen hoorns.
In this case sheep tend to have one tail, hence the best translation is a tail.