emerre, se hace por las dos cosas, aunque se podría pensar que la configuración del navegador sería más apropiada para determinar el lenguaje del usuario. Además es más sencila de consultar.
La configuración del navegador la consultas de $_SERVER['HTTP_ACCEPT_LANGUAGE']
Si quieres resolver el país por IP y luego deducir de allí el idioma, te va a servir echar mano a una base de IP to Country como la de:
http://www.ip-to-country.com/ Allí hay ejemplos de código php con consultas a la base.
Saludos!