Отображать образцы форматов для разных локалей в C#
При запуске программы выполняется следующий код.
private void Form1_Load(object sender, EventArgs e)
{
float float_value = 1234.56f;
decimal dec_value = 1234.56m;
DateTime now = DateTime.Now;
// Петля через локали.
foreach (CultureInfo info in
CultureInfo.GetCultures(CultureTypes.AllCultures))
{
ListViewItem item = lvwResults.Items.Add(
info.EnglishName);
item.SubItems.Add(info.NativeName);
item.SubItems.Add(info.Name);
// Вы не можете использовать нейтральную культуру как формат
//, поэтому, если CultureInfo нейтрален,
// искать не нейтрального предка.
CultureInfo culture = info;
while ((culture != null) && (culture.IsNeutralCulture))
culture = culture.Parent;
if (culture != null)
{
item.SubItems.Add(float_value.ToString("N", culture));
item.SubItems.Add(dec_value.ToString("C", culture));
item.SubItems.Add(now.ToString("d", culture));
item.SubItems.Add(now.ToString("t", culture));
}
}
}
Этот код сначала создает значения float, decimal и DateTime. Затем он перебирает объекты CultureInfo, возвращаемые CultureInfo.GetCultures.
Этот код сначала создает значения float, decimal и DateTime. Затем он перебирает объекты CultureInfo, возвращаемые CultureInfo.GetCultures.
...
Далее код проверяет, является ли объект нейтральной культурой, такой как en. Если это так, объект не содержит информацию о конкретной культуре, которая необходима для форматирования значений. Например, культура en не содержит эту информацию. Напротив, определенная культура, такая как en-US или en-GB.
Если объект действительно представляет собой нейтральную культуру, код поднимается на свою родительскую иерархию, пока не найдет не нейтральную культуру, и она использует ее.
