Отображать образцы форматов для разных локалей в 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.
Если объект действительно представляет собой нейтральную культуру, код поднимается на свою родительскую иерархию, пока не найдет не нейтральную культуру, и она использует ее.