I would like to give options of different languages to my visitors. I don't know which is the best way to do it as to rank well for search engines in local languages yet ensuring the main domain .com in English does very well? Is there a best practice for it? I also want to ensure there is no duplicate content issue.
put the content for each geography in a separate subdomain. make sure to properly specify the language attributes in the document markup. set the geotargeting for each of the geography-specific subdomains in GWT. this will filter out any duplicate content to the intended same-language targets. (no duplicate content if languages are different.) ideally you would host each of the geography-specific subdomains locally. you will have to address additional issues with multilingual geographies, both in terms of visitor selection/preference and url structure.
google won't give you a method to target language. you can only target geography.
so this means not necessarily "french in France, spanish in etc". more like - host content targeted to French french-language speakers in France; host content targeted to Canadian french-language speakers in Canada; etc...
What do you mean by visitor selection/preference.
if you put up a swiss flag which language will you show? see above about putting up a french flag for french-language speakers. this means you might need to provide a means of specifying a visitor preference for language and location. it also means you should structure your url such that you can geotarget in GWT (subdomain or subdirectory) as well as distinguish among languages within a geography.