Jan.09

.NET Internationalisatie (Globalization) en een library met internationale gegevens ter download

Zoals elke gemiddelde .NETter weet is binnen het .NET framework een stuk opgenomen wat localisatie van software vergemakkelijkt, de System.Globalization namespace. De voornaamste klassen binnen deze namespace zijn CultureInfo, RegionInfo en sinds .NET 2.0 CultureAndRegionInfoBuilder de meest belangrijke.

CultureInfo
Van de CultureInfo klasse kan een object worden geinstantieerd door een CultureCode mee te geven. Een culture is eigenlijk een combinatie van taal + land. Bijvoorbeeld: Frans – Belgie (fr-BE) , Nederlands – Belgie (nl-BE). De landcode of eigenlijk regioncode wordt volgens ISO 3166-1 met hoofdletters geschreven de taalcode (ISO 639) wordt lowercase geschreven. Dit samen maakt een cultuur. Een cultuur verteld vervolgens iets over de formatting van datum/tijd en numerieke waarden. Een .NET culture wordt ook wel ‘locale’ genoemd in de “unmanaged” volksmond.

RegionInfo
De RegionInfo klasse kan worden gebruikt voor het ophalen van gegevens van een land. Ook bij de constructie van een RegionInfo instantie dient een RegionCode te worden meegegeven. Het gaat hier om de 2-karakters lange ISO3166-1 code. Vervolgens heb je dan toegang tot de NativeName (naam in de taal van het land/region), EnglishName en niet te vergeten de Currency (Valuta).

De hele system.globalization namespace zit goed in elkaar en kan je heel wat programmeerwerk uit handen nemen bij het bouwen van internationale applicaties. Echter, CultureInfo en RegionInfo ondersteunen niet alle landen en cultures, maar alleen de belangrijke. Hoe deze schifting plaats heeft gevonden is mij niet duidelijk. Ik zou zeggen wie daar meer over weten, sta op en reageer! ;-). Het leek mij zelf leuk om informatie te hebben over alle landen, valuta, talen etc.. Ik ben via het web op zoek gegaan naar aan internationalisatie gerelateerde gegevens. Dit heeft geresulteerd en een verzameling data die je hieronder kunt downloaden

Internationalisatie Library
Dit library bevat heel veel gegevens over een land. Het is verzameld via allerlei verschillende webpagina’s en samengevoegd tot 1 geheel. De gegevens zijn dus niet 100% betrouwbaar en ik neem wat dat betreft dan ook geen enkele verantwoordelijkheid op me. (Geleden schade.. etc etc kun je dan ook niet op mij verhalen 😉 ) Ik heb trouwens eerlijk gezegd geen idee of op welk van deze gegevens een copyright rust. Mocht er wat dit betreft bezwaren zijn dan hoor ik dat graag. Ik zal in iedergeval waar mogelijk de noodzakelijk stappen ondernemen om te zorgen dat rechthebbende geen verdere schade zullen leiden.

..ok, nu ter zake.

Het library bevat de volgende tabellen:

  • Continent – Continenten
  • Region – Landen
  • Culture – Taal – Land combinaties (Locales)
  • Currency – Valuta
  • Language – Talen
  • TimeZone – Tijdzones
  • TimeZoneNames – Tijdzone namen
  • RegionCurrency – Koppeling land-valuta
  • RegionIP – Koppeling land-internet IP adres
  • RegionTimeZone – Koppeling land-tijdzone
  • RegionLanguage – Koppeling land-taal
  • RegionName – Namen van een land inde verschillende talen
  • PrimaryAdministrativeDivision – Primaire onderverdeling van een land (bijv. Provincie)
  • PrimaryAdministrativeDivisionPopulation – Bevolkingsaantallen van een primaire administratieve divisie per jaar
  • SecondaryAdministrativeDivision – Secundaire onderverdeling van een land (bijv. Gemeente)
  • SecondaryAdministrativeDivisionPopulation – Bevolkingsaantallen van een secundaire administratieve divisie per jaar
  • De regio (=land) tabel bevat belangrijk informatie zoals:

  • Volledige benaming
  • Verkorte benaming
  • Engelse benaming
  • Hoofdstad (Capital)
  • Top Level Domain
  • Dialing Code
  • National Dialing Code
  • Primary Administrative Division Name
  • Secundary Administrative Division Name
  • Zomertijd (Day Light Savings) (ja/nee)
  • Voertuigidentificatiecode
  • Voor elk land zijn er in de RegionName tabel de namen van een land in gemiddeld +/- 50 verschillende talen opgenomen. Mocht je hier vierkantjes als karakters tegenkomen dan heb je waarschijnlijk de chinese karakterset niet geinstalleerd.

    Kortom, een bak informatie heb je interesse dan kun je de zaak hier downloaden in zowel xml, mdb (MS Access 2000) als sdf (SQL 2005 Everywhere Edition) formaat. Mocht je toevoegingen hebben wees dan zo vriendelijk deze ook met ons allen te delen!!

    (Bevolkingsaantallen per land zijn bijvoorbeeld nog niet aanwezig en deze kunnen niet zonder meer worden afgeleid uit de primaire administratieve divisies. Bijvoorbeeld in landen als die van het midden-oosten leven veel nomaden leven die in geen enkele divisie zijn ingedeeld.)

    Download opties

  • GlobalizationXML.zip (XML bestanden)
  • GlobalizationMDB.zip (MS Access database)
  • GlobalizationSDF.zip (SQL Server 2005 Compact Edition / Everywhere Edition database)
  • Vlaggen

  • Flags.zip
  • Meer weten over Globalization in .NET:
    .NET Magazine Maart 2006

    Deel dit Verhaal:
    • facebook
    • twitter
    • gplus

    Over Ton Snoei

    Een enthousiaste ontwikkelaar in de allerbreedste zin van het woord.

    Het aansturen maar vooral coachen van mensen geeft me veel plezier en een leuke uitdaging. Ik houdt me graag bezig met het bouwen van software maar ook met alle anderen dingen die komen kijken bij het vak dat IT heet.

    Met als achtergrond ontwikkelaar heb ik veel ervaring met C# .NET en alles wat daarbij komt kijken. Deze kennis komt nog regelmatig goed van pas. Mijn liefde voor ontwikkeling van software is nooit verdwenen en heb mij daarom in het afgelopen jaar meer verdiept in Java, Android, iOS/iPhone/iPad (Monotouch/Xamarin), PHP en Unity 3D development. Ik noem dat altijd maar: "Lego-spelen voor grote mensen" ;-)

    Kortom van de grote lijnen naar projecten tot hands-on problem solven.

    Reacties(2)

    1. Richard
      5165 days geleden

      Wat is eigenlijk het verschil tussen CultureInfo en RegionInfo? Ik heb namelijk voor de globalisatie van een website combinaties opgeslagen van UICulture en Culture die op de website gebruikt kunnen worden, maar van RegionInfo heb ik nog nooit gehoord.

    2. tsnoei
      5165 days geleden

      RegionInfo is eigenlijk puur land informatie. Zo vindt je in RegionInfo de naam van een land in de NativeName, EnglishName etc… In een land zijn 1 of meerdere valuta mogelijk dit is niet culture afhankelijk vandaar dat valutagegevens (currency) worden bijgehouden in de RegionInfo class.

      Voorbeeld: Belgie, 2 cultures: nl-BE (nederlands belgisch) en fr-BE (frans belgisch).
      Constructie: new CultureInfo(“nl-BE”);
      new CultureInfo(“fr-BE”)

      RegionInfo, 1x BE. (Valuta EUR)
      Constructie: new RegionInfo(“BE”)

      Het is correct dat je Cultures gebruikt voor de internationalisatie van je software. Formatting van datum/tijd, numeriek zijn land-taal (Culture of Locale) afhankelijk. RegionInfo wordt in de praktijk ook een stuk minder gebruikt.

    Laat een reactie achter

    Comment