Gewusst wie: Erstellen von benutzerdefinierten Kulturen

Die mit .NET Framework und Windows bereitgestellten vordefinierten Kulturen geben die in einem Land/einer Region verwendete Sprache und den verwendeten Kalender an sowie Textkonventionen zum Formatieren, Analysieren und Vergleichen von Zeichenfolgen, Datumsangaben und Zahlen. Sie können jedoch auch benutzerdefinierte Kulturen erstellen, wenn die vordefinierten Kulturen nicht die erforderlichen Informationen bereitstellen.

So definieren und erstellen Sie eine benutzerdefinierte Kultur

  1. Verwenden Sie ein CultureAndRegionInfoBuilder-Objekt, um eine benutzerdefinierte Kultur zu definieren und zu benennen. Bei der benutzerdefinierten Kultur kann es sich um eine ganz neue Kultur handeln, um eine Kultur, die auf einer anderen basiert, oder um eine Kultur, die eine vorhandene .NET Framework-Kultur oder ein vorhandenes Windows-Gebietsschema ersetzt.

    Für neue Kulturen können Sie die CultureAndRegionInfoBuilder-Objekteigenschaften durch das Aufrufen der CultureAndRegionInfoBuilder.LoadDataFromCultureInfo-Methode mit Kulturinformationen auffüllen, und mit Regionsinformationen durch das Aufrufen der CultureAndRegionInfoBuilder.LoadDataFromRegionInfo-Methode. Bei Ersatzkulturen werden die CultureAndRegionInfoBuilder-Objekteigenschaften automatisch mit den Eigenschaften der Kultur aufgefüllt, die ersetzt wird.

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

  3. Rufen Sie die CultureAndRegionInfoBuilder.Register-Methode auf, um die benutzerdefinierte Kultur zu registrieren. Bei der Registrierung werden die folgenden Aufgaben ausgeführt:

    • Erstellt eine NLP-Datei, die die im CultureAndRegionInfoBuilder-Objekt definierten Informationen enthält.

    • Speichert die NLP-Datei im Systemverzeichnis "%windir%\Globalization" auf dem Computer. Dadurch bleiben die Kulturinformationen auf dem Computer erhalten, auch wenn der Computer ausgeschaltet wird. Sie müssen über Administratorrechte auf diesem Computer verfügen, da die NLP-Datei in einem Systemverzeichnis gespeichert ist.

    • .NET Framework wird so eingestellt, dass bei der nächsten Anforderung zum Erstellen einer neuen benutzerdefinierten Kultur das Systemverzeichnis "%windir%\Globalization" anstelle eines internen Caches durchsucht wird.

    WarnhinweisVorsicht

    Wenn Sie über keine Administratorrechte auf dem Computer verfügen, auf dem die benutzerdefinierte Kultur registriert werden soll, löst der Aufruf der CultureAndRegionInfoBuilder.Register-Methode eine UnauthorizedAccessException aus.Sie können diese Anforderung mit der Reflektion umgehen, um eine private Methode aufzurufen.Weitere Informationen finden Sie unter Gewusst wie: Speichern benutzerdefinierter Kulturen ohne Administratorrechte.

    Die benutzerdefinierte Kultur hat jetzt den gleichen Status wie eine beliebige vordefinierte .NET Framework-Kultur oder ein beliebiges vordefiniertes Windows-Gebietsschema auf dem Computer. Die benutzerdefinierte Kultur zur Verfügung, bis ein Aufruf der CultureAndRegionInfoBuilder.Unregister-Methode die NLP-Datei vom lokalen Computer entfernt.

  4. Um auf Grundlage der benutzerdefinierten Kultur ein CultureInfo-Objekt zu instanziieren, geben Sie seinen Namen in einem CultureInfo-Klassenkonstruktor an.

Beispiel

Im folgenden Codebeispiel wird mithilfe der CultureAndRegionInfoBuilder-Klasse eine benutzerdefinierte Kultur mit dem Namen x-en-US-sample definiert und registriert. Anschließend wird ein CultureInfo-Objekt für die benutzerdefinierte Kultur erstellt. Außerdem werden entsprechende Eigenschaften des CultureAndRegionInfoBuilder-Objekts und des CultureInfo-Objekts veranschaulicht.

' This example demonstrates the System.Globalization.Culture-
' AndRegionInfoBuilder Register method.
' Compile this code example with a reference to sysglobl.dll.

Imports System
Imports System.Globalization

Class Sample
    Public Shared Sub Main() 
        Dim cib As CultureAndRegionInfoBuilder = Nothing
        Try
            ' Create a CultureAndRegionInfoBuilder object named "x-en-US-sample".
            Console.WriteLine("Create and explore the CultureAndRegionInfoBuilder..." & vbCrLf)
            cib = New CultureAndRegionInfoBuilder("x-en-US-sample", CultureAndRegionModifiers.None)

            ' Populate the new CultureAndRegionInfoBuilder object with culture information.
            Dim ci As New CultureInfo("en-US")
            cib.LoadDataFromCultureInfo(ci)

            ' Populate the new CultureAndRegionInfoBuilder object with region information.
            Dim ri As New RegionInfo("US")
            cib.LoadDataFromRegionInfo(ri)

            ' Display some of the properties of the CultureAndRegionInfoBuilder object.
            Console.WriteLine("CultureName:. . . . . . . . . . {0}", cib.CultureName)
            Console.WriteLine("CultureEnglishName: . . . . . . {0}", cib.CultureEnglishName)
            Console.WriteLine("CultureNativeName:. . . . . . . {0}", cib.CultureNativeName)
            Console.WriteLine("GeoId:. . . . . . . . . . . . . {0}", cib.GeoId)
            Console.WriteLine("IsMetric: . . . . . . . . . . . {0}", cib.IsMetric)
            Console.WriteLine("ISOCurrencySymbol:. . . . . . . {0}", cib.ISOCurrencySymbol)
            Console.WriteLine("RegionEnglishName:. . . . . . . {0}", cib.RegionEnglishName)
            Console.WriteLine("RegionName: . . . . . . . . . . {0}", cib.RegionName)
            Console.WriteLine("RegionNativeName: . . . . . . . {0}", cib.RegionNativeName)
            Console.WriteLine("ThreeLetterISOLanguageName: . . {0}", cib.ThreeLetterISOLanguageName)
            Console.WriteLine("ThreeLetterISORegionName: . . . {0}", cib.ThreeLetterISORegionName)
            Console.WriteLine("ThreeLetterWindowsLanguageName: {0}", cib.ThreeLetterWindowsLanguageName)
            Console.WriteLine("ThreeLetterWindowsRegionName: . {0}", cib.ThreeLetterWindowsRegionName)
            Console.WriteLine("TwoLetterISOLanguageName: . . . {0}", cib.TwoLetterISOLanguageName)
            Console.WriteLine("TwoLetterISORegionName: . . . . {0}", cib.TwoLetterISORegionName)
            Console.WriteLine()

            ' Register the custom culture.
            Console.WriteLine("Register the custom culture...")
            cib.Register()

            ' Display some of the properties of the custom culture.
            Console.WriteLine("Create and explore the custom culture..." & vbCrLf)
            ci = New CultureInfo("x-en-US-sample")

            Console.WriteLine("Name: . . . . . . . . . . . . . {0}", ci.Name)
            Console.WriteLine("EnglishName:. . . . . . . . . . {0}", ci.EnglishName)
            Console.WriteLine("NativeName: . . . . . . . . . . {0}", ci.NativeName)
            Console.WriteLine("TwoLetterISOLanguageName: . . . {0}", ci.TwoLetterISOLanguageName)
            Console.WriteLine("ThreeLetterISOLanguageName: . . {0}", ci.ThreeLetterISOLanguageName)
            Console.WriteLine("ThreeLetterWindowsLanguageName: {0}", ci.ThreeLetterWindowsLanguageName)

            Console.WriteLine(vbCrLf & "Note:" & vbCrLf & "Use the example in the " & _
                              "Unregister method topic to remove the custom culture.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub 'Main
End Class 'Sample

'This code example produces the following results:
'
'Create and explore the CultureAndRegionInfoBuilder...
'
'CultureName:. . . . . . . . . . x-en-US-sample
'CultureEnglishName: . . . . . . English (United States)
'CultureNativeName:. . . . . . . English (United States)
'GeoId:. . . . . . . . . . . . . 244
'IsMetric: . . . . . . . . . . . False
'ISOCurrencySymbol:. . . . . . . USD
'RegionEnglishName:. . . . . . . United States
'RegionName: . . . . . . . . . . x-en-US-sample
'RegionNativeName: . . . . . . . United States
'ThreeLetterISOLanguageName: . . eng
'ThreeLetterISORegionName: . . . USA
'ThreeLetterWindowsLanguageName: ENU
'ThreeLetterWindowsRegionName: . USA
'TwoLetterISOLanguageName: . . . en
'TwoLetterISORegionName: . . . . US
'
'Register the custom culture...
'Create and explore the custom culture...
'
'Name: . . . . . . . . . . . . . x-en-US-sample
'EnglishName:. . . . . . . . . . English (United States)
'NativeName: . . . . . . . . . . English (United States)
'TwoLetterISOLanguageName: . . . en
'ThreeLetterISOLanguageName: . . eng
'ThreeLetterWindowsLanguageName: ENU
'
'Note:
'Use the example in the Unregister method topic to remove the custom culture.
'
// This example demonstrates the System.Globalization.Culture-
// AndRegionInfoBuilder Register method.
// Compile this code example with a reference to sysglobl.dll.

using System;
using System.Globalization;

class Sample 
{
    public static void Main() 
    {
    CultureAndRegionInfoBuilder cib = null;
    try 
    {
// Create a CultureAndRegionInfoBuilder object named "x-en-US-sample".
    Console.WriteLine("Create and explore the CultureAndRegionInfoBuilder...\n");
    cib = new CultureAndRegionInfoBuilder(
                         "x-en-US-sample", CultureAndRegionModifiers.None);

// Populate the new CultureAndRegionInfoBuilder object with culture information.
    CultureInfo ci = new CultureInfo("en-US");
    cib.LoadDataFromCultureInfo(ci);

// Populate the new CultureAndRegionInfoBuilder object with region information.
    RegionInfo  ri = new RegionInfo("US");
    cib.LoadDataFromRegionInfo(ri);

// Display some of the properties of the CultureAndRegionInfoBuilder object.
    Console.WriteLine("CultureName:. . . . . . . . . . {0}", cib.CultureName);
    Console.WriteLine("CultureEnglishName: . . . . . . {0}", cib.CultureEnglishName);
    Console.WriteLine("CultureNativeName:. . . . . . . {0}", cib.CultureNativeName);
    Console.WriteLine("GeoId:. . . . . . . . . . . . . {0}", cib.GeoId);
    Console.WriteLine("IsMetric: . . . . . . . . . . . {0}", cib.IsMetric);
    Console.WriteLine("ISOCurrencySymbol:. . . . . . . {0}", cib.ISOCurrencySymbol);
    Console.WriteLine("RegionEnglishName:. . . . . . . {0}", cib.RegionEnglishName);
    Console.WriteLine("RegionName: . . . . . . . . . . {0}", cib.RegionName);
    Console.WriteLine("RegionNativeName: . . . . . . . {0}", cib.RegionNativeName);
    Console.WriteLine("ThreeLetterISOLanguageName: . . {0}", cib.ThreeLetterISOLanguageName);
    Console.WriteLine("ThreeLetterISORegionName: . . . {0}", cib.ThreeLetterISORegionName);
    Console.WriteLine("ThreeLetterWindowsLanguageName: {0}", cib.ThreeLetterWindowsLanguageName);
    Console.WriteLine("ThreeLetterWindowsRegionName: . {0}", cib.ThreeLetterWindowsRegionName);
    Console.WriteLine("TwoLetterISOLanguageName: . . . {0}", cib.TwoLetterISOLanguageName);
    Console.WriteLine("TwoLetterISORegionName: . . . . {0}", cib.TwoLetterISORegionName);
    Console.WriteLine();

// Register the custom culture.
    Console.WriteLine("Register the custom culture...");
    cib.Register();

// Display some of the properties of the custom culture.
    Console.WriteLine("Create and explore the custom culture...\n");
    ci = new CultureInfo("x-en-US-sample");

    Console.WriteLine("Name: . . . . . . . . . . . . . {0}", ci.Name);
    Console.WriteLine("EnglishName:. . . . . . . . . . {0}", ci.EnglishName);
    Console.WriteLine("NativeName: . . . . . . . . . . {0}", ci.NativeName);
    Console.WriteLine("TwoLetterISOLanguageName: . . . {0}", ci.TwoLetterISOLanguageName);
    Console.WriteLine("ThreeLetterISOLanguageName: . . {0}", ci.ThreeLetterISOLanguageName);
    Console.WriteLine("ThreeLetterWindowsLanguageName: {0}", ci.ThreeLetterWindowsLanguageName);

    Console.WriteLine("\nNote:\n" +
        "Use the example in the Unregister method topic to remove the custom culture.");
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
    }
}
/*
This code example produces the following results:

Create and explore the CultureAndRegionInfoBuilder...

CultureName:. . . . . . . . . . x-en-US-sample
CultureEnglishName: . . . . . . English (United States)
CultureNativeName:. . . . . . . English (United States)
GeoId:. . . . . . . . . . . . . 244
IsMetric: . . . . . . . . . . . False
ISOCurrencySymbol:. . . . . . . USD
RegionEnglishName:. . . . . . . United States
RegionName: . . . . . . . . . . x-en-US-sample
RegionNativeName: . . . . . . . United States
ThreeLetterISOLanguageName: . . eng
ThreeLetterISORegionName: . . . USA
ThreeLetterWindowsLanguageName: ENU
ThreeLetterWindowsRegionName: . USA
TwoLetterISOLanguageName: . . . en
TwoLetterISORegionName: . . . . US

Register the custom culture...
Create and explore the custom culture...

Name: . . . . . . . . . . . . . x-en-US-sample
EnglishName:. . . . . . . . . . English (United States)
NativeName: . . . . . . . . . . English (United States)
TwoLetterISOLanguageName: . . . en
ThreeLetterISOLanguageName: . . eng
ThreeLetterWindowsLanguageName: ENU

Note:
Use the example in the Unregister method topic to remove the custom culture.

*/

Siehe auch

Referenz

CultureInfo

CultureAndRegionInfoBuilder

CultureAndRegionModifiers

Weitere Ressourcen

Codierung und Lokalisierung

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Dezember 2010

Ein Hinweis zum Speichern einer benutzerdefinierten Kultur ohne Administratorrechte wurde hinzugefügt.

Informationsergänzung.