Spesso capita di dover presentare la possibilità di scegliere un mese dell’anno. Possiamo farlo tramite un Calendario o anche semplicemente tramite una ComboBox.
Ma se il nostro sito è multilingua? Come facciamo a presentare i nomi dei mesi nella lingua giusta?

Il classico (e sbagliato) approccio dei dodici listitem dichiarati esplicitamente, che siano nella pagina ASPX, che siano nel codeBehind, non ci permette di essere “dinamici” rispetto alla lingua utilizzata nel contesto.

<asp:DropDownList ID="ddlMesi" runat="server">
    <asp:ListItem Text="Gennaio" Value="1" />
    <asp:ListItem Text="Febbraio" Value="2" />
    <!-- ... -->
    <asp:ListItem Text="Novembre" Value="11" />
    <asp:ListItem Text="Dicembre" Value="12" />
</asp:DropDownList>

Questo esempio ci fa notare che la visualizzazione dei dati è troppo legata alla scelta dello sviluppatore, e implementa l’esigenza solo per un caso singolo.

Per essere elastici e creare la medesima lista a runtime, e crearla nella lingua utilizzata nel contesto, ecco un piccolo snippet da usare nel codeBehind per una DropDownList vuota:

if (this.ddlMesi.Items.Count <= 1)
    for (int i = 1; i <= 12; i++)
    {
        ddlMesi.Items.Add(new ListItem(
            System.Globalization.DateTimeFormatInfo.CurrentInfo.GetMonthName(i),
            i.ToString()
        ));
    }

Buona visione….