Freigeben über


Globalisieren Sie Ihre Datums-, Uhrzeit- und Zahlenformate

Entwerfen Sie Ihre App so, dass sie global vorbereitet ist, indem Sie Datumsangaben, Uhrzeiten, Zahlen, Telefonnummern und Währungen entsprechend formatieren. Sie können Ihre App später für weitere Kulturen, Regionen und Sprachen auf dem globalen Markt anpassen.

Einleitung

Wenn Sie beim Erstellen Ihrer App über die Grenzen einer einzelnen Sprache und Kultur hinausdenken, werden Sie weniger unerwartete Probleme haben, wenn Ihre App in neue Märkte expandiert. Beispielsweise sind Datumsangaben, Uhrzeiten, Zahlen, Kalender, Währungen, Telefonnummern, Maßeinheiten und Papierformate alle Elemente, die in verschiedenen Kulturen oder Sprachen unterschiedlich angezeigt werden können.

In verschiedenen Regionen und Kulturen werden unterschiedliche Datums- und Uhrzeitformate verwendet. Dazu gehören Konventionen für die Reihenfolge von Tag und Monat im Datum, für die Trennung von Stunden und Minuten bei der Uhrzeit und sogar, welche Interpunktion als Trennzeichen dient. Darüber hinaus können Datumsangaben in verschiedenen langen Formaten ("Mittwoch, 28. März 2012") oder kurzen Formaten ("28.03.12") angezeigt werden, die sich in verschiedenen Kulturen unterscheiden. Und natürlich unterscheiden sich die Namen und Abkürzungen für die Wochentage und Monate des Jahres zwischen Sprachen.

Sie können eine Vorschau der Formate anzeigen, die für verschiedene Sprachen verwendet werden. Wechseln Sie zu Einstellungen>Zeit und Sprache>Region und Sprache, und klicken Sie auf Zusätzliche Datum-, Zeit- und Regionaleinstellungen>Datum, Uhrzeit oder Zahlenformate ändern. Wählen Sie auf der Registerkarte Formate eine Sprache aus der Dropdownliste Format aus, und zeigen Sie eine Vorschau der Formate unter Beispielean.

In diesem Thema werden die Begriffe "Benutzerprofilsprachenliste", "App-Manifestsprachenliste" und "App-Laufzeitsprachenliste" verwendet. Ausführliche Informationen darüber, was diese Begriffe bedeuten und wie auf ihre Werte zugegriffen werden kann, finden Sie unter Grundlegendes zu Benutzerprofilsprachen und App-Manifestsprachen.

Formatieren von Datums- und Uhrzeitangaben für die App-Laufzeitsprachenliste

Wenn Sie Es Benutzern erlauben müssen, ein Datum auszuwählen oder eine Uhrzeit auszuwählen, verwenden Sie die standardmäßigen Kalender-, Datums- und Uhrzeitsteuerelemente. Diese verwenden automatisch das beste Datums- und Uhrzeitformat für die App-Laufzeitsprachenliste.

Wenn Sie Datums- oder Uhrzeitangaben selbst anzeigen müssen, können Sie die DateTimeFormatter Klasse verwenden. Standardmäßig verwendet DateTimeFormatter automatisch das beste Datums- und Uhrzeitformat für die App-Laufzeitsprachenliste. Der folgende Code formatiert ein gegebenes DateTime- optimal für diese Liste. Nehmen Wir beispielsweise an, dass Ihre App-Manifest-Sprachliste Englisch (USA) enthält, was auch Ihre Standardeinstellung ist, und Deutsch (Deutschland). Wenn das aktuelle Datum 6. November 2017 ist und die Benutzerprofilsprachenliste zuerst Deutsch (Deutschland) enthält, gibt der Formatierer "06.11.2017" an. Wenn die Benutzerprofil-Sprachliste zuerst Englisch (USA) enthält (oder wenn sie weder Englisch noch Deutsch enthält), liefert der Formatierer "11/6/2017" (da "en-US" übereinstimmt oder als Standard verwendet wird).

    // Use the DateTimeFormatter class to display dates and times using basic formatters.

    var shortDateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate");
    var shortTimeFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shorttime");

    var dateTimeToFormat = DateTime.Now;

    var shortDate = shortDateFormatter.Format(dateTimeToFormat);
    var shortTime = shortTimeFormatter.Format(dateTimeToFormat);

    var results = "Short Date: " + shortDate + "\n" +
                  "Short Time: " + shortTime;

Sie können den obigen Code auf Ihrem eigenen PC wie folgt testen.

Datums- und Uhrzeitangaben für die Sprachliste des Benutzerprofils formatieren

Denken Sie daran, dass DateTimeFormatter- standardmäßig der App-Laufzeitsprachenliste entspricht. Wenn Sie Zeichenfolgen wie "Das Datum ist <Datum>" anzeigen, wird die Sprache so eingestellt, dass sie dem Datumsformat entspricht.

Wenn Sie aus irgendeinem Grund Datums- und/oder Uhrzeitangaben nur entsprechend der Benutzerprofilsprachenliste formatieren möchten, können Sie dies mit Code wie dem folgenden Beispiel tun. Wenn Sie dies tun, können Sie jedoch verstehen, dass der Benutzer eine Sprache auswählen kann, für die Ihre App keine übersetzten Zeichenfolgen enthält. Wenn Ihre App z. B. nicht in Deutsch (Deutschland) lokalisiert ist, aber der Benutzer dies als bevorzugte Sprache auswählen kann, kann dies zu einer Anzeige seltsam aussehender Zeichenfolgen wie "Das Datum ist 06.11.2017" führen.

    // Use the DateTimeFormatter class to display dates and times using basic formatters.

    var userLanguages = Windows.System.UserProfile.GlobalizationPreferences.Languages;

    var shortDateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate", userLanguages);

    var results = "Short Date: " + shortDateFormatter.Format(DateTime.Now);

Zahlen und Währungen angemessen formatieren

Verschiedene Kulturen formatieren Zahlen unterschiedlich. Zu den Formatunterschieden zählen u. U. die Anzahl der anzuzeigenden Dezimalziffern, die Zeichen, die als Dezimaltrennzeichen verwendet werden sollen, und welches Währungssymbol verwendet werden soll. Verwenden Sie Klassen im NumberFormatting- Namespace, um Dezimal-, Prozent- oder Permillezahlen und Währungen anzuzeigen. Meistens möchten Sie, dass diese Formatiererklassen das beste Format für das Benutzerprofil verwenden. Sie können jedoch die Formatierer verwenden, um eine Währung für eine beliebige Region oder ein beliebiges Format anzuzeigen.

In diesem Beispiel wird gezeigt, wie Währungen sowohl pro Benutzerprofil als auch für ein bestimmtes Währungssystem angezeigt werden.

    // This scenario uses the CurrencyFormatter class to format a number as a currency.

    var userCurrency = Windows.System.UserProfile.GlobalizationPreferences.Currencies[0];

    var valueToBeFormatted = 12345.67;

    var userCurrencyFormatter = new Windows.Globalization.NumberFormatting.CurrencyFormatter(userCurrency);
    var userCurrencyValue = userCurrencyFormatter.Format(valueToBeFormatted);

    // Create a formatter initialized to a specific currency,
    // in this case US Dollar (specified as an ISO 4217 code) 
    // but with the default number formatting for the current user.
    var currencyFormatUSD = new Windows.Globalization.NumberFormatting.CurrencyFormatter("USD");
    var currencyValueUSD = currencyFormatUSD.Format(valueToBeFormatted);

    // Create a formatter initialized to a specific currency.
    // In this case it's the Euro with the default number formatting for France.
    var currencyFormatEuroFR = new Windows.Globalization.NumberFormatting.CurrencyFormatter("EUR", new[] { "fr-FR" }, "FR");
    var currencyValueEuroFR = currencyFormatEuroFR.Format(valueToBeFormatted);

    // Results for display.
    var results = "Fixed number (" + valueToBeFormatted + ")\n" +
                    "With user's default currency: " + userCurrencyValue + "\n" +
                    "Formatted US Dollar: " + currencyValueUSD + "\n" +
                    "Formatted Euro (fr-FR defaults): " + currencyValueEuroFR;

Sie können den obigen Code auf Ihrem eigenen PC testen, indem Sie das Land oder die Region in den Einstellungen>Zeit & Sprache>Region & Sprache>Land oder Region ändern. Wählen Sie ein Land oder eine Region (vielleicht Island) aus, und führen Sie den Code erneut aus.

Verwenden eines kulturell geeigneten Kalenders

Der Kalender unterscheidet sich je nach Region und Sprache. Der gregorianische Kalender ist nicht die Standardeinstellung für jede Region. Benutzer in einigen Regionen können alternative Kalender auswählen, z. B. den kalender der japanischen Ära oder arabische Mondkalender. Datum und Uhrzeit im Kalender sind auch von verschiedenen Zeitzonen und der Sommerzeit abhängig.

Um sicherzustellen, dass das bevorzugte Kalenderformat verwendet wird, können Sie die standardmäßigen Kalender-, Datums- und Uhrzeitsteuerelementeverwenden. Für komplexere Szenarien, bei denen direkt mit Operationen auf Kalenderdaten gearbeitet werden muss, stellt Windows.Globalization eine Calendar-Klasse bereit, die eine geeignete Kalenderdarstellung für die jeweilige Kultur, Region und den Kalendertyp bietet.

Geeignetes Formatieren von Telefonnummern

Telefonnummern werden in verschiedenen Regionen unterschiedlich formatiert. Die Anzahl der Ziffern, die Gruppierungen der Ziffern und die Bedeutung bestimmter Teile der Telefonnummer variieren zwischen Ländern/Regionen. Ab Windows 10, Version 1607, können Sie Klassen im PhoneNumberFormatting Namespace verwenden, um Telefonnummern entsprechend für die aktuelle Region zu formatieren.

PhoneNumberInfo analysiert eine Ziffernzeichenfolge und ermöglicht es, Folgendes zu tun: zu bestimmen, ob es sich bei den Ziffern um eine gültige Telefonnummer in der aktuellen Region handelt, zwei Nummern auf Gleichheit zu vergleichen und die verschiedenen funktionalen Teile der Telefonnummer zu extrahieren, wie z. B. Ländervorwahl oder geografische Ortsvorwahl.

PhoneNumberFormatter formatiert eine Zeichenfolge aus Ziffern oder eine PhoneNumberInfo- für die Anzeige, auch wenn die Ziffernzeichenfolge eine partielle Telefonnummer darstellt. Sie können diese partielle Zahlenformatierung verwenden, um eine Zahl zu formatieren, während ein Benutzer die Zahl eingibt.

Das folgende Beispiel zeigt, wie Sie PhoneNumberFormatter- verwenden, um eine Telefonnummer so zu formatieren, wie sie eingegeben wird. Jedes Mal, wenn Text in einer -TextBox- namens "phoneNumberInputTextBox" geändert wird, werden die Inhalte des Textfelds mithilfe der aktuellen Standardregion formatiert und in einem -TextBlock- namens "phoneNumberOutputTextBlock" angezeigt. Zu Demonstrationszwecken wird die Zeichenfolge auch unter Verwendung der regionalen Einstellungen für Neuseeland formatiert und in einem TextBlock mit dem Namen "phoneNumberOutputTextBlockNZ" angezeigt.

    using Windows.Globalization.PhoneNumberFormatting;

    PhoneNumberFormatter currentFormatter, NZFormatter;

    public MainPage()
    {
        this.InitializeComponent();

        // Use the default formatter for the current region
        this.currentFormatter = new PhoneNumberFormatter();

        // Create an explicit formatter for New Zealand. 
        PhoneNumberFormatter.TryCreate("NZ", out this.NZFormatter);
    }

    private void phoneNumberInputTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        // Format for the default region.
        this.phoneNumberOutputTextBlock.Text = currentFormatter.FormatPartialString(this.phoneNumberInputTextBox.Text);

        // If the NZFormatter was created successfully, format the partial string for the NZ TextBlock.
        if(this.NZFormatter != null)
        {
            this.phoneNumberOutputTextBlockNZ.Text = this.NZFormatter.FormatPartialString(this.phoneNumberInputTextBox.Text);
        }
    }

Sie können den obigen Code auf Ihrem eigenen PC testen, indem Sie das Land oder die Region in den Einstellungen>Zeit & Sprache>Region & Sprache>Land oder Region ändern. Wählen Sie ein Land oder eine Region aus (vielleicht Neuseeland, um zu bestätigen, dass die Formate übereinstimmen), und führen Sie den Code erneut aus. Für Testdaten können Sie eine Websuche nach der Telefonnummer eines Unternehmens in Neuseeland durchführen.

Die Sprach- und Kultureinstellungen des Benutzers

Für Szenarien, in denen Sie unterschiedliche Funktionen bereitstellen möchten, die ausschließlich auf den Sprach-, Regions- oder Kultureinstellungen des Benutzers basieren, bietet Windows eine Möglichkeit, auf diese Einstellungen über Windows.System.UserProfile.GlobalizationPreferenceszuzugreifen. Verwenden Sie bei Bedarf die GlobalizationPreferences Klasse, um den Wert der aktuellen geografischen Region des Benutzers, bevorzugte Sprachen, bevorzugte Währungen usw. abzurufen. Denken Sie aber daran, dass, wenn die Zeichenfolgen/Bilder Ihrer App nicht für die bevorzugte Sprache des Benutzers lokalisiert werden, Datums- und Uhrzeitangaben und andere daten, die für diese bevorzugte Sprache formatiert sind, nicht mit den angezeigten Zeichenfolgen übereinstimmen.

Wichtige APIs

Beispiele