in reply to Language Guess from IP
You should look at CPAN... a search on Geographical returns Geo::IP which looks quite a good fit for your problem.