Non occorre recuperare via codice la coppia chiave/valore tutto avviene in automatico. Ma prima devi decidere come avverrà la scelta della lingua: in automatico in base a quella impostata nel browser oppure a scelta dell'utente, oppure un mix delle due (di default quella del browser fino a quando non viene scelta espressamente). Se avviene in base alla scelta devi anche decidere dove salvare la scelta (profilo? cookies?).
Una volta presa la decisione deriva tutte le pagine del tuo sito da una tua classe page. Questa è una buona abitudine a prescindere dalla internazionalizzione delle pagine. Ecco come fare:
Creare una nuova classe MyPage derivata da Page
Public Class mypage : Inherits Page
end class
Tutte le mie pagine aspx derivano da questa mia classe invece che da Page.
Public Class default : Inherits mypage
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
end class
All'interno della classe MyPage implementa:
Protected Overrides Sub InitializeCulture()
dim lang as string
(tuo codice che imposta la lingua nella variabile lang)
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang)
MyBase.InitializeCulture()
end sub
A questo nelle tue pagine ASPX devi inserire il riferimento alle risorse. Per esempio:
<asp:Label runat="server" id="Label" Text="Solo un test" />
deve diventare
<asp:Label runat="server" id="Label" meta:resourcekey="tuachiave"/>
Nel file di risorse nella directory App_LocalResources inserisci tanti quante sono le lingue file per ogni pagina aspx. Ogni file avrà la chiave tuachiave.text = "Solo un test" (ovviamente tuachiave.text = "Just a test" per l'inglese per esempio).
Per la pagina chisiamo.aspx crea:
chisiamo.aspx.resx (con la lingua di default)
chisiamo.aspx.en.resx (per l'inglese)
Spero di avere dato l'idea ma se necessario posso darti maggiori dettagli. Fammi sapere.