Έτσι ακριβώς δουλεύει το Localization στο .NET, όχι μόνο στη VB. Από εκεί και πέρα, η γλώσσα που θα χρησιμοποιηθεί εξαρτάται από την τιμή του CurrentUICulture του Thread της εφαρμογής σου, του οποίου η αρχική τιμή εξαρτάται από τη γλώσσα του λειτουργικού σου. Αν δηλαδή έχεις ελληνικά Windows, θα είναι ελληνικά. Αν έχεις αγγλικά Windows, θα είναι αγγλικά. Υπάρχει και το CurrentCulture το οποίο παίρνει σαν αρχική τιμή το user locale, αν δηλαδή έχεις ορίσει locale την Ελλάδα, θα είναι ελληνικά.
Τα defaults αυτά έχουν τη λογική τους, καθώς τα μηνύματα των Windows και του .ΝΕΤ αναγκαστικά χρησιμοποιούν τη γλώσσα του λειτουργικού. Μπορείς άνετα όμως να θέσεις το CurrentUiCulture ίσο με το CurrentCulture, π.χ.:
Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture
Αυτό που πρέπει να αποφεύγεις γενικά είναι να "καρφώνεις" τα Locale. Παρότι μπορείς να γράψεις
Thread.CurrentThread.CurrentUICulture = new CultureInfo("el-GR")
θα πρέπει να προσέχεις. Οι μετατροπές ημερομηνιών και αριθμών, αλλά και οι μετατροπές όταν επικοινωνείς με κάποια βάση δεδομένων, γίνονται χρησιμοποιώντας το CurrentLocale, όχι το CurrentUILocale. Θα πρέπει να προσέξεις να μην τα μπερδέψεις, γιατί διαφορετικά θα αρχίσουν να γίνονται πολλά περίεργα με τις μετατροπές.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos