Το IP location μάλλον είναι κάτι που θα πρέπει να αγνοήσεις. Αυτό που σε ενδιαφέρει στην ουσία είναι οι γλώσσες που έχει εγκατεστημένες ο χρήστης στον browser που χρησιμοποιεί. Το 99% των browser με τους οποίους θα έχει επαφή το web site σου θα μπορούν να σου δώσουν αυτή την πληροφορία. για το υπόλοιπο 1% μπορείς να κάνεις redirection τον χρήστη σε μια σελίδα επιλογής γλώσσας. Εννοείται ότι σε όλες τις περιπτώσεις θα έχεις εμφανή στη σελίδα σου την αλλαγή γλώσσας.
Στην ουσία αυτό που σου δίνει ο κάθε browser είναι μία λίστα με όλες τις εγκατεστημένες γλώσσες του χρήστη. Συνήθως είναι η local γλώσσα του χρήστη (πχ, ελληνικά) και αγγλικά, ενδέχεται όμως σε κάποιο ποσοστό να έχεις μόνο τη local γλώσσα. Οπότε, με το που έρχεται το request, παίρνεις τις γλώσσες που έχει ο χρήστης και ψάχνεις να δεις ποιες από τις γλώσσες που υποστηρίζει το web site θα βρεις μέσα. Αν βρεις ελληνικά (ακόμα και αν ο χρήστης την έχει σαν δεύτερη γλώσσα με πρώτη τα αγγλικά) γυρνάς το locale σε ελληνικά. Αν δεν βρεις καμία από τις γλώσσες που υποστηρίζεις, το βάζεις σε κάποια γλώσσα που θα θεωρείς σαν default ή τον πετάς σε σελίδα επιλογής γλώσσας.
Θυμίσου επίσης, ότι αυτό που θέλεις να αλλάζεις ουσιαστικά είναι το UICulture και όχι το απλό Culture, ώστε να αλλάζουν τα κείμενα μόνο και όχι τα σύμβολα για τις νομισματικές μονάδες (υποθέτω πουλάς σε ένα νόμισμα μόνο, ασχέτως από που έρχεται ο χρήστης).
Παράδειγμα για να θέσεις το culture σύμφωνα με τη γλώσσα του χρήστη:
// Import these namespaces at the beginning of the code module.
using System.Globalization;
using System.Threading;
// Set the culture and UI culture to the browser's accept language
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Request.UserLanguages[0]);
Επίσης, ρίξε μια ματιά και εδώ: How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization
Χρήστος Γεωργακόπουλος