CultureAndRegionInfoBuilder-Klasse

Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.

Hinweis

Die CultureAndRegionInfoBuilder Klasse ist nur für Windows-Betriebssysteme nützlich. Die generierten NLP-Dateien werden auf Nicht-Windows-Betriebssystemen nicht unterstützt. Auch unter Windows werden die generierten NLP-Dateien nur in .NET Framework (oder in .NET Core bei Verwendung des NLS-Globalisierungsmodus) unterstützt.

Die CultureInfo-Klasse enthält kulturspezifische Informationen, z. B. die zugeordnete Sprache, die Teilsprache, das Land bzw. die Region, den Kalender und kulturspezifische Konventionen. Diese Klasse stellt auch kulturspezifische Instanzen der DateTimeFormatInfo-, NumberFormatInfo-, CompareInfo- und TextInfo-Klasse bereit, die für kulturspezifische Vorgänge wie z. B. die Groß- und Kleinschreibung, das Formatieren und das Parsen von Datumsangaben und Zahlen sowie das Vergleichen von Zeichenfolgen erforderlich sind.

Standardmäßig unterstützt .NET CultureInfo-Objekte, die einen vordefinierten Satz von Kulturen darstellen. Eine Liste dieser Kulturen, die für Windows-Systeme verfügbar sind, finden Sie in der Spalte Sprachtag in der Liste der von Windows unterstützten Sprach- und Regionsnamen. Kulturnamen befolgen den von BCP 47 definierten Standard. Die CultureAndRegionInfoBuilder-Klasse ermöglicht es Ihnen, eine benutzerdefinierte Kultur zu erstellen, die vollständig neu ist oder eine vordefinierte Kultur überschreibt. Wenn eine benutzerdefinierte Kultur auf einem bestimmten Computer installiert und registriert wird, ist sie nicht mehr von vordefinierten CultureInfo-Objekten zu unterscheiden und kann wie diese Objekte instanziiert und verwendet werden.

Wichtig

Die CultureAndRegionInfoBuilder Klasse befindet sich in einer Assembly namens sysglobl.dll. Zum erfolgreichen Kompilieren von Code, der diesen Typ verwendet, müssen Sie einen Verweis auf sysglobl.dll hinzufügen.

Eine benutzerdefinierte Kultur kann auf einem Computer nur von einem Benutzer registriert werden, der auf diesem Computer über Administratorrechte verfügt. Entsprechend werden von Apps normalerweise keine benutzerdefinierten Kulturen erstellt und installiert. Stattdessen können Sie die CultureAndRegionInfoBuilder-Klasse verwenden, um ein spezielles Tool zu erstellen, mit dessen Hilfe ein Administrator eine benutzerdefinierte Kultur erstellen, installieren und registrieren kann. Nachdem die benutzerdefinierte Kultur auf einem Computer registriert wurde, können Sie die CultureInfo-Klasse in Ihrer App verwenden, um Instanzen der benutzerdefinierten Kultur exakt wie für eine vordefinierte Kultur zu erstellen.

Wenn Sie Datums- und Uhrzeitzeichenfolgen parsen, die für eine benutzerdefinierte Kultur generiert wurden, sollten Sie anstelle der DateTime.ParseExact- oder DateTime.TryParseExact-Methode die DateTime.Parse- oder DateTime.TryParse-Methode verwenden, um die Wahrscheinlichkeit zu erhöhen, dass das Parsen erfolgreich ist. Eine Datums- und Uhrzeitzeichenfolge für eine benutzerdefinierte Kultur kann kompliziert und daher schwer zu parsen sein. Die Parse- und die TryParse-Methode versuchen, eine Zeichenfolge mit mehreren impliziten Mustern zu parsen, die möglicherweise alle fehlschlagen. Die TryParseExact-Methode erfordert hingegen, dass die App explizit ein oder mehrere exakte Parsemuster festzulegen, die wahrscheinlich erfolgreich sind.

Definieren und Erstellen einer benutzerdefinierten Kultur

Sie verwenden die CultureAndRegionInfoBuilder-Klasse, um eine benutzerdefinierte Kultur zu definieren und zu benennen. Die benutzerdefinierte Kultur kann eine völlig neue Kultur, eine neue Kultur, die auf einer vorhandenen Kultur basiert (d. h. eine ergänzende Kultur), oder eine Kultur, die eine vorhandene .NET-Kultur ersetzt, sein. In allen drei Fällen sind die grundlegenden Schritte identisch:

  1. Instanziieren Sie ein CultureAndRegionInfoBuilder-Objekt, indem Sie dessen CultureAndRegionInfoBuilder(String, CultureAndRegionModifiers)-Konstruktor aufrufen. Um eine vorhandene Kultur zu ersetzen, übergeben Sie den Namen der Kultur und den CultureAndRegionModifiers.Replacement-Enumerationswert an den Konstruktor. Um eine neue oder eine ergänzende Kultur zu erstellen, übergeben Sie einen eindeutigen Kulturnamen und entweder den CultureAndRegionModifiers.Neutral- oder den CultureAndRegionModifiers.None-Enumerationswert.

    Hinweis

    Wenn Sie den CultureAndRegionModifiers.Replacement-Enumerationswert verwenden, um ein CultureAndRegionInfoBuilder-Objekt zu instanziieren, werden die Eigenschaften des CultureAndRegionInfoBuilder-Objekts automatisch mit Werten aus dem CultureInfo-Objekt aufgefüllt, das ersetzt werden soll.

  2. Wenn Sie eine neue oder ergänzende Kultur erstellen, tun Sie Folgendes:

  3. Ändern Sie nach Bedarf die Eigenschaften des CultureAndRegionInfoBuilder-Objekts.

  4. Wenn Sie beabsichtigen, die benutzerdefinierte Kultur in einer separaten Routine zu registrieren, müssen Sie die Save-Methode aufrufen. Dadurch wird eine XML-Datei generiert, die in einer separaten benutzerdefinierten Installationsroutine für die Kultur geladen und registriert werden kann.

Registrieren einer benutzerdefinierten Kultur

Wenn Sie eine Registrierungsanwendung für eine benutzerdefinierte Kultur entwickeln, die von der App getrennt ist, die die Kultur erstellt, müssen Sie die CreateFromLdml-Methode zum Laden der XML-Datei aufrufen, die die Definition der benutzerdefinierten Kultur enthält, und das CultureAndRegionInfoBuilder-Objekt instanziieren. Um die Registrierung durchzuführen, rufen Sie die Register-Methode auf. Damit die Registrierung erfolgreich ist, muss die Anwendung, die die benutzerdefinierte Kultur registriert, auf dem Zielsystem mit Administratorrechten ausgeführt werden. Andernfalls löst der Register-Aufruf die Ausnahme UnauthorizedAccessException aus.

Warnung

Kulturdaten können sich zwischen Systemen unterscheiden. Wenn Sie die CultureAndRegionInfoBuilder-Klasse verwenden, um eine benutzerdefinierte Kultur zu erstellen, die über mehrere Systeme hinweg einheitlich ist, und Sie Ihre benutzerdefinierte Kultur erstellen, indem Sie Daten aus vorhandenen CultureInfo- und RegionInfo-Objekten laden und anpassen, sollten Sie zwei verschiedene Dienstprogramme entwickeln. Das erste erstellt die benutzerdefinierte Kultur und speichert Sie in einer XML-Datei. Das zweite verwendet die CreateFromLdml-Methode, um die benutzerdefinierte Kultur aus einer XML-Datei zu laden und auf dem Zielcomputer zu registrieren.

Der Registrierungsvorgang führt die folgenden Aufgaben aus:

  • Erstellt eine NLP-Datei , die die im CultureAndRegionInfoBuilder Objekt definierten Informationen enthält.
  • Speichert die NLP-Datei im Systemverzeichnis %windir%\Globalization auf dem Zielcomputer. Dadurch können die Einstellungen der benutzerdefinierten Kultur zwischen Sitzungen beibehalten werden. (Die CultureAndRegionInfoBuilder Methode erfordert Administratorrechte, da die NLP-Datei in einem Systemverzeichnis gespeichert ist.)
  • Er bereitet .NET darauf vor, das Systemverzeichnis „%windir%\Globalization“ anstelle eines internen Caches zu durchsuchen, wenn das nächste Mal eine Anforderung zum Erstellen Ihrer neuen benutzerdefinierten Kultur erfolgt.

Wenn eine benutzerdefinierte Kultur erfolgreich registriert wurde, ist sie nicht mehr von den von .NET vordefinierten Kulturen zu unterscheiden. Die benutzerdefinierte Kultur ist verfügbar, bis ein Aufruf der CultureAndRegionInfoBuilder Methode die NLP-Datei vom lokalen Computer entfernt.

Instanziieren einer benutzerdefinierten Kultur

Sie können eine Instanz der benutzerdefinierten Kultur mit einer der folgenden Methoden erstellen:

Außerdem enthält das Array von CultureInfo-Objekten, das von der CultureInfo.GetCultures-Methode zurückgegeben wird, die benutzerdefinierte Kultur.