TOC

This article has been localized into Czech by the community.

Práce s kulturou a regiony:

Třída RegionInfo

V předchozím článku o třídě CultureInfo jsme trochu probírali část týkající se země/regionu, ale můžeme s jednou z dalších tříd v oboru názvů System.Globalization dělat mnohem více věcí týkajících se regionu: Třídou RegionInfo. Obsahuje mnoho užitečných informací o konkrétním regionu (obvykle zemi), například název a symbol jejich měny, zda používají metrický systém a podobně.

Získání instance RegionInfo

Pro přístup k regionálním informacím potřebujete instanci třídy RegionInfo. Má konstruktor, který může přijmout kód ISO 3166 nebo kód jazyka/regionu-země (např. "en-US"). Zde je příklad:

RegionInfo regionInfo = new RegionInfo("en-US");
Console.WriteLine(regionInfo.EnglishName);

To také znamená, že pokud už máte odkaz na třídu CultureInfo, můžete ho snadno použít k zajištění, že získáte odpovídající RegionInfo. A jak jsme se dozvěděli v předchozím článku, vaše aplikace vždy má záložní instanci CultureInfo, na kterou se můžete odkázat:

RegionInfo regionInfo = new RegionInfo(CultureInfo.CurrentCulture.Name);
Console.WriteLine(regionInfo.EnglishName);

S tímto na místě se podívejme na některé užitečné funkce třídy RegionInfo.

Důležité vlastnosti třídy RegionInfo

Už jsme se podívali na vlastnost EnglishName - jednoduše vrací název regionu v angličtině. Ale samozřejmě tam je více užitečných informací - například několik vlastností souvisejících s měnou:

RegionInfo regionInfo = new RegionInfo("sv-SE");
Console.WriteLine(regionInfo.CurrencySymbol);
Console.WriteLine(regionInfo.ISOCurrencySymbol);
Console.WriteLine(regionInfo.CurrencyEnglishName);
Console.WriteLine(regionInfo.CurrencyNativeName);

Použitím CurrencySymbol, ISOCurrencySymbol, CurrencyEnglishName a/nebo CurrencyNativeName získáme informace, které potřebujeme k výpisu zpráv souvisejících s měnou. Výsledek bude vypadat takto (v tomto případě pro švédský/Švédsko):

kr
SEK
Swedish Krona
Svensk krona

Můžete také snadno zkontrolovat, zda daný region používá metrický systém, pomocí vlastnosti IsMetric:

RegionInfo regionInfo = new RegionInfo(CultureInfo.CurrentCulture.Name);
Console.WriteLine("Is the metric system used in " + regionInfo.EnglishName + "? " + (regionInfo.IsMetric ? "Yes" : "No"));

To nás nechává se všemi vlastnostmi souvisejícími s identitou:

  • Name vám poskytne kód ISO 3166, který identifikuje jazyk a zemi/region, například "en-US" pro angličtinu/USA.
  • DisplayName vám poskytne úplný název země/regionu v lokalizované verzi .NET frameworku.
  • EnglishName vám poskytne úplný název země/regionu v angličtině.
  • NativeName vám poskytne úplný název země/regionu v daném jazyce, například "United States" pro en-US nebo "Deutschland" pro de-DE.
  • TwoLetterISORegionName vám poskytne dvoupísmenný kód ISO 3166 pro zemi/region, například "US" pro Spojené státy nebo "DE" pro Německo.
  • ThreeLetterISORegionName vám poskytne třípísmenný kód ISO 3166 pro zemi/region, například "USA" pro Spojené státy nebo "DEU" pro Německo.

Zjevně se tyto vlastnosti hodí, když potřebujete zobrazit informace o zemi/regionu, jak uvidíme v našem příštím příkladu.

Získání seznamu zemí pomocí RegionInfo

V předchozím článku jsem vám ukázal, jak získat seznam všech definovaných kultur v .NET frameworku, což nám v podstatě zanechá seznam kombinací jazyka-země/regionu. To můžeme použít ve spojení s třídou RegionInfo k získání seznamu zemí/regionů.

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;

namespace RegionInfoCountries
{
    class Program
    {
static void Main(string[] args)
{
    CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
    List<RegionInfo> countries = new List<RegionInfo>();
    foreach (CultureInfo ci in cultures)
    {
RegionInfo regionInfo = new RegionInfo(ci.Name);
if (countries.Count(x => x.EnglishName == regionInfo.EnglishName) <= 0)
    countries.Add(regionInfo);
    }
    foreach (RegionInfo regionInfo in countries.OrderBy(x => x.EnglishName))
Console.WriteLine(regionInfo.EnglishName);
}
    }
}

Tento příklad je trochu delší než ostatní příklady v tomto článku, ale dovolte mi ho pro vás rozložit. Začneme získáním seznamu všech dostupných konkrétních kultur - jak jsme se dozvěděli v předchozím článku, konkrétní kultury jsou ty, které definují jak jazyk, tak region/zemi. Procházíme tento seznam a v každé iteraci použijeme instanci CultureInfo k vytvoření odpovídající instance RegionInfo. Zkontrolujeme, zda země s tímto názvem již byla do našeho seznamu přidána, a pokud ne, přidáme ji. Když cyklus skončí, máme nyní kompletní seznam zemí definovaných .NET frameworkem, který můžeme projít a vypsat na konzoli nebo dělat s ním v podstatě cokoli jiného, co by nám mohlo být užitečné.

Toto je skvělý příklad toho, co lze dosáhnout kombinací CultureInfo a RegionInfo, ale dovolte mi zdůraznit, že to není úplný a přesný seznam zemí. Místo toho jde o kompletní seznam zemí definovaných ve verzi .NET frameworku, kterou používáte, což v podstatě znamená, že některé země mohou chybět nebo mohly od vydání této verze změnit svůj název. Takže pokud potřebujete seznam zemí, který je 100% přesný a aktuální, pravděpodobně si ho budete muset vytvořit a udržovat sami.

Shrnutí

Třída RegionInfo je v podstatě rozšířením třídy CultureInfo o další užitečné informace o konkrétní zemi/regionu. Umožňuje vám získat více informací o identitě a měně konkrétního regionu a může vám pomoci získat seznam zemí/regionů.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!