This article has been localized into Czech by the community.
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ů.