Condividi tramite


Formattazione per lingue differenti

Per la maggior parte dei metodi i valori restituiti con l'utilizzo di un identificatore di formato stringa vengono modificati dinamicamente in base alla lingua corrente o a una lingua specificata. Un overload del metodo ToString, ad esempio, accetta un provider di formato che implementa l'interfaccia IFormatProvider. Tramite le classi che implementano questa interfaccia vengono specificati i caratteri da utilizzare per i separatori decimali e delle migliaia nonché il tipo e la posizione dei simboli di valuta. Se non si utilizza un override che accetta questo parametro, il metodo ToString utilizzerà i caratteri specificati dalla lingua corrente.

Nell'esempio riportato di seguito viene utilizzata la classe CultureInfo per specificare la lingua che verrà utilizzata dalla stringa di formato e dal metodo ToString. Con questo codice viene creata una nuova istanza della classe CultureInfo denominata MyCulture che viene inizializzata per la lingua francese mediante la stringa fr-FR. L'oggetto viene passato al metodo ToString con la stringa C dell'identificatore di formato per produrre un valore monetario francese.

Dim MyInt As Integer = 100
Dim MyCulture As New CultureInfo("fr-FR")
Dim MyString As String = MyInt.ToString("C", MyCulture)
Console.WriteLine(MyString)
int MyInt = 100;
CultureInfo MyCulture = new CultureInfo("fr-FR");
String MyString = MyInt.ToString("C", MyCulture);
Console.WriteLine(MyString);

Mediante il codice precedente, in un form di Windows Form verrà visualizzato il valore 100,00 . Si noti che l'ambiente della console non supporta tutti i caratteri Unicode e visualizza invece 100,00 ?.

Per l'elenco di tutte le lingue supportate, vedere la classe CultureInfo.

Nell'esempio riportato di seguito viene illustrato come modificare l'oggetto CultureInfo associato al thread corrente. L'esempio si basa sul presupposto che la lingua associata al thread corrente sia l'inglese (en-US) e viene illustrato come modificare tale lingua a livello di codice. Nell'esempio viene inoltre illustrato come specificare una determinata lingua passando una classe CultureInfo modificata a un metodo ToString e come passare una nuova classe DateTimeFormatInfo a un metodo ToString.

Dim dt As DateTime = DateTime.Now
Dim dfi As DateTimeFormatInfo = New DateTimeFormatInfo()
Dim ci As CultureInfo = New CultureInfo("de-DE")

' Create a new custom time pattern for demonstration.
dfi.MonthDayPattern = "MM-MMMM, ddd-dddd"

' Use the DateTimeFormat from the culture associated with 
' the current thread.

Console.WriteLine( dt.ToString("d") ) 
Console.WriteLine( dt.ToString("m") )

' Use the DateTimeFormat object from the specific culture passed.
Console.WriteLine( dt.ToString("d", ci ) )

' Use the settings from the DateTimeFormatInfo object passed.
Console.WriteLine( dt.ToString("m", dfi ) )

' Reset the current thread to a different culture.
Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-BE")
Console.WriteLine( dt.ToString("d") )
DateTime dt = DateTime.Now;
DateTimeFormatInfo dfi = new DateTimeFormatInfo();
CultureInfo ci = new CultureInfo("de-DE");

// Create a new custom time pattern for demonstration.
dfi.MonthDayPattern = "MM-MMMM, ddd-dddd";

// Use the DateTimeFormat from the culture associated with 
// the current thread.
Console.WriteLine( dt.ToString("d") ); 
Console.WriteLine( dt.ToString("m") );

// Use the DateTimeFormat object from the specific culture passed.
Console.WriteLine( dt.ToString("d", ci ) );

// Use the settings from the DateTimeFormatInfo object passed.
Console.WriteLine( dt.ToString("m", dfi ) );

// Reset the current thread to a different culture.
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-BE");
Console.WriteLine( dt.ToString("d") );

Vedere anche

Riferimenti

System.IFormatProvider Interface
System.Globalization.CultureInfo Class

Altre risorse

Formattazione dei tipi di dati