Take a look at this:

What I have done here is create three separate welcome pages with a common header at the top and only one language highlighted. The languages can be clickable to switch between each. I apologize if my french and spanish in each page is inaccurate. The buttons could point to the following URLs respectively:
http://example.com/en/home
http://example.com/fr/home
http://example.com/es/home
The reason why I use english words after every language is because it will be easier to manage later down the road, plus the odds of someone manually typing in a URL will be low.
Let's start with the english home page by adding content then links to a project page and a contact page, my available links would be:
http://example.com/en/home
http://example.com/fr/home
http://example.com/es/home
http://example.com/en/projects
http://example.com/en/contact
Now if we do a page for french in a similar way, the links on that page would be:
http://example.com/en/home
http://example.com/fr/home
http://example.com/es/home
http://example.com/fr/projects
http://example.com/fr/contact
And for the spanish page:
http://example.com/en/home
http://example.com/fr/home
http://example.com/es/home
http://example.com/es/projects
http://example.com/es/contact
Notice how in all above cases, I only changed the language code in the last two links? This is because on each page, the links people click on will need to be in the same language except for when they click the language button.
Also with the way I designed the links, there should be no duplicate content issues. unless you make two language pages the same. For example, you made a french home page the english home page instead.
If static links are insufficient for language switching for you, then you could implement cookies to keep states. This works well if you use a server-side language such as PHP.
If you'd rather have the language button jump to the last page visited in the previous language used, then you may need a server side language to set a cookie to match the current page visited then when the user selects another language, they are taken to a special page that reads the cookie then loads the correct page in the correct language.