From a technical standpoint, if we look into the way C++ templates are implemented vs how Java generics are implemented, there is a big difference. C# generics are implemented in a way more similar to C++ templates, but there are a few differences as well. Certainly there's more, but these are the languages I know about.
From a semantic standpoint, my understanding is that both templates and generics represent the same concept of type generic programming. From this perspective, then yes, the words are synonyms.
Now from a cultural standpoint, I don't recall ever hearing a C++ programmer use the term generics to talk about templates, so I'm not sure if mixing both terminologies is a good idea due to the historial meaning of the word template in the C++ community.
So in the end, all that beating around the bush is my way of saying that I'm not sure
:P. It seems to me that I can go both ways just as well.