TOC

This article has been localized into Czech by the community.

Práce s kulturou a regiony:

Úvod

Doba, kdy byl software vytvořen k provozování pouze na několika lokálních počítačích, je v podstatě pryč. Díky globalizaci a zejména díky internetu je dnes software obecně používán po celém světě na velmi široké škále zařízení. To znamená, že váš kód musí zvládat mnoho specifických případů pro různé kultury, jako je zacházení s čísly a daty v jiném formátu, než jaký očekáváte. Například víte, že v mnoha zemích se pro desetinné číslo (např. 1,42) nepoužívá tečka, ale čárka jako oddělovač desetinných míst (např. 1,42)? A jste si vědomi toho, že v mnoha zemích se den v datu píše před měsícem, zatímco v jiných se píše prvně rok?

Zvládnout všechno toto může být velký oříšek, ale naštěstí pro nás má .NET framework několik tříd, které nám mohou pomoci vypořádat se s těmito situacemi. Nejčastěji používanou je třída CultureInfo, o které si povíme v dalším článku, ale .NET nabízí také třídy pro práci s regiony a dokonce i specifickými kalendáři (víte, že i kalendář není po celém světě stejný, že?).

Toto téma je obzvláště důležité, pokud pracujete na aplikaci, která by měla podporovat více jazyků, ale i v případě, že to není váš případ, stále musíte řešit skutečnost, že by mohla být používána na zařízení, které nepoužívá stejné zápisy například pro data a čísla. Abychom ilustrovali, jak je to důležité, zvažte tento příklad:

string inputNumber = "1.425";
double usNumber = double.Parse(inputNumber, CultureInfo.GetCultureInfo("en-US"));
double germanNumber = double.Parse(inputNumber, CultureInfo.GetCultureInfo("de-DE"));
Console.WriteLine(usNumber.ToString() + " is not the same as " + germanNumber);

Představte si proměnnou inputNumber jako něco, co jsme právě obdrželi od uživatele aplikace, například něco napsaného v textovém poli na webovém formuláři. Používáme metodu double.Parse() pro převod na float, ale předáváme druhý parametr typu CultureInfo - pokud bychom tento parametr nepředali, použily by se systémová nastavení, která by mohla být anglická, německá nebo úplně jiná. Nyní si všimněte výstupu:

1,425 is not the same as 1425

Je to opravdu pravda! Naše číselná hodnota se právě zvětšila tisíckrát, protože v Německu používají čárku jako desetinný oddělovač, zatímco tečka slouží jako oddělovač tisíců. To by byl ve většině aplikací velký problém, ale dobrá zpráva je, že i když příklad ilustruje problém, ilustruje také řešení: Vždy musíte mít kontrolu nad tím, jak přijímáte vstupy, a poté s nimi náležitě zacházet, protože jak vidíte, díky třídě CultureInfo je .NET schopen analyzovat číslo (a také data!) ve všech možných formátech, pokud mu řeknete, co očekáváte.

Shrnutí

Zvládání kulturních a regionálních rozdílů je možná ještě důležitější při programování než v reálném životě. Naštěstí pro nás může .NET framework v těchto ohledech velmi pomoci, pokud víte, kam se podívat. V následujících několika článcích probereme nástroje, které .NET framework nabízí pro zvládání těchto rozdílů.


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!