Come mantenere invariato il formato valuta in ASP.NET in un'applicazione multi lingua

Le impostazioni linguistiche in una pagina ASP.NET sono dipendenti da due proprietà: Culture e UICulture. 
La proprietà Culture deterimina il risultato delle funzioni dipendenti dalle impostazioni lingiuistiche come ad esempio l'uso delle maiuscole e delle minuscole, la formattazione di date e numeri, il formato della valutam, il confronto tra stringhe ecc...
La proprietà UICulture determina quali risorse devono essere caricate per la pagina.
Da questa premessa è quindi semplice comprendere come è possibile mantenere invariato il formato della valuta in un'applicazione multilingua: sarà sufficiente infatti mantenere costante il valore della proprietà Culture e cambiare la propietà UICulture per caricare di volta in volta le risorse della pagina in base alla lingua selezionata.
Ciò è possibile  eseguendo l'override del metodo InitializeCulture in ogni pagina dell'applicazione. Volendo quindi mantenere costante il formato della valuta all'€, per ogni pagina sarà sufficiente richiamare la seguente Sub:
Protected Overrides Sub InitializeCulture()
        ' Culture: valore costante
        Thread.CurrentThread.CurrentCulture = New CultureInfo("it-IT")

        ' UI Culture: valore contenuto nella variabile di Sessione Session("UICulture")
        Dim c As CultureInfo
        If Session("UICulture") IsNot Nothing Then
            c = DirectCast(Session("UICulture"), CultureInfo)
        Else
            c = New CultureInfo("it-IT")
        End If

        Thread.CurrentThread.CurrentUICulture = c

        MyBase.InitializeCulture()
    End Sub
in cui il valore di UICulture è determinato dalla variabile di Sessione UICulture in modo che diventi comune a tutte le pagine.
Comments are closed