Internacionalizar uma aplicação nem sempre é algo fácil, ainda mais no mundo Web. Mas nesse mundo o seu melhor amigo é o header Accept-Language. No lado do servidor, você provavelmente se limitará a duas formas de descobrir o idioma do usuário, uma pelo header Accept-Language e a outra pelo endereço IP.