Por lo general el idioma que se le presenta al usuario proviene de dos fuentes:
- El usuario directamente seleccionó ese lenguage/dialecto dentro de un menú de configuraciones en tu aplicación
- Usando el Header Accept-Language del explorador, esto quiere decir que el usuario ya previamente dispuso que idiomas inclusive que dialectos del idioma prefiere y con cuál prioridad los quiere ver. Te aconsejo que uses esto si es que tu aplicación no tiene la opción 1, ya que de esta forma tendrás el idioma correcto.
Usando como base la IP del usuario para un idioma no es muy correcto, yo por ejemplo nací en Uruguay pero no vivo en Uruguay si no que en Alemania, si bien hablo Alemán, mi idioma preferencial es el español y eso es lo que tengo seleccionado en mi explorador y en un 99% de los casos las webs usan el Accept-Language y me muestran la web en español rioplatense.
Espero que te sirva de guia