This article has been localized into Dutch by the community.
Inleiding
De tijd dat je software ontwikkelde om die alleen maar op een paar locale computers te laten draaien, ligt echt wel achter ons. Dankzij globalisatie en het internet in het bijzonder, wordt software tegenwoordig vrijwel over op de wereld gebruikt op een brede variëteit aan apparaten. Dit betekent dat je code een heleboel cultuurspecifieke zaken zaken moet aankunnen, zoals het omgaan met getallen en data in andere formaten dan je zou verwachten. Wist je bijvoorbeeld dat in sommige landen bij bepaalde getallen (bv. 1,24) geen komma wordt gebruikt maar een punt (bv 1.24)? En wist je dat data in landen op diverse manieren worden weergeven? In Nederland is dat dd/mm/jjjj .
Het kan een heel gedoe zijn om hiermee uit de voeten te kunnen, maar gelukkig voor ons heeft .NET diverse classes die van dienst kunnen zijn in dit soort gevallen.De meest algemeen gebruikte is de CultureInfo class, die we in het volgende artikel gaan bespreken. Maar .Net heeft ook classes voor het werken in regio's en zelfs specifieke kalenders (niet overal in de wereld wordt dezelfde soort kalender gebruikt!)
Deze kwestie is vooral belangrijk als je aan een applicatie werkt die meerdere talen moet kunnen ondersteunen. Maar zelfs al is dat niet zo, dan nog moet je een oplossing vinden voor het feit dat hij kan worden gebruikt op een apparaat dat niet dezelfde notaties gebruikt voor bv. data en getallen. Om te laten zien hoe belangrijk dit is, is hier het volgende voorbeeld:
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);
Denk aan de inputNumber variabele als iets dat je zojuist ontving van de gebruiker van de applicatie, bv. iets dat werd ingetoetst in een tekstveld of op een web formulier. We gebruiken de double.Parse() method om er een float van te maken, maar we voeren een tweede parameter in van het CultureInfo type. Als we dat niet zouden doen, zouden de systeeminstellingen worden gebruikt, die dan bv. Engels zouden kunnen zijn, of Duits of welke andere taal dan ook maar. Let nu op de output:
1,425 is not the same as 1425
Helemaal waar! Onze 'getal' waarde is zojuist duizend keer groter geworden omdat in bv. Nederland een komma wordt gebruikt als decimaal scheider, en een punt (.) als duizendtallen scheider. Dit zou voor de meeste applicaties een probleem kunnen zijn, maar er is een oplossing. Je moet altijd weten hoe je input binnenkrijgt en er dan op de juiste manier mee omgaan. Je ziet dat dankzij de CultureInfo class .Net in staat is tot het 'parsen' van een getal ( en ook data!) in elke gewenst format, zolang als je die class maar laat weten wat hij kan verwachten.
Samenvatting
Bij het programmeren is het omgaan met culturele en regionale verschillen misschien nog belangrijker dan in het dagelijkse leven. Gelukkig voor ons kan in dit opzicht het .NET framework een geweldige steun zijn, zolang je maar weet waar je moet zoeken. In de volgende reeks artikelen zullen we de tools bespreken die .NET ons biedt om met deze verschillen om te gaan.