I recently released Country Redirect, a plugin that handles this smoothly: https://superbig.co/plugins/country-redirect
It lets you map which countries get redirected to which locales, let visitors override the country, and easily let you create a locale nav based on the country mapping.
The plugin uses the same database as the accepted answer, but actually allows the user to override it, which makes for a better UX than forcing everyone into a locale.