Built in localization is a "language-region" (such as es-es and es-mx).
However, sometimes the content needed to change on the region, not the language, so I had to use categories and add region categories and set pages to have those categories, and adjusted what they saw based on that (I used the actual maxmind ip to county service along with a custom region selector).
This may be the route you want to go, use global events or a custom web part to determine the county, and with some form of alookup say "Mexico, Spain, etc use es-es Spanish, USA Canada use en-us English"