Setting a default localization in a website

We are having trouble understanding the best case for UX when it comes to default language/locale on a website

At the moment, the website behave like this:

a predefined list of languages is set - in this case, "en" ,"es" (English and Spanish)

  1. check browser accepted languages
  2. if the accepted lanagues contain spanish, set the language to spanish
  3. if not, set the language to be the first match of the predefined with the accepted languages (and if not found, set as english)

Our problem is - what is the best experience if the user know spanish, but their browser doesn't reflect that?

What is the recommend/best practice way of display many languages (for that user who knows spanish, but the site is in english - to let the user know that the interface is available in spanish (or other languages he/she may know)

At the moment, I have a "Languages" dropdown in the navbar of the site, when dropped-down there is a list of all available languages with each languages written it its own (English in English, Espanol in Spanish, etc).