I use "Polylang" in all my projects and it works perfect for me. Polylang does 2 things:
1) Creates siblings for post and pages, connected through ID, so you may write a post in english and then a "spanish sibling" with different contents but connected to the other, so when you do the language switch it displays the desired languahe.
2) Automatically creates a sub route in your WordPress URL (like yourdomain.com/en and yourdomain.com/es) so it matches and changes the desired language interface. You may even use functions on your templates to switch some contents by language on the same template file. You may add and define as many languages as you want.
Important: this is not a plugin for "auto translate" contents, its more like an option to create multilingual sites.
You may find Polylang here: Download Polylang from WordPress Plugins
If you're interested on using Polylang on your templates, here you could find a solution for calling different contents according to the language selected by the user: Multiple headers by language using Polylang
I hope this work for you.
Greetings!