Globaliser vos formats de date/heure/chiffresGlobalize your date/time/number formats

Concevez votre application pour qu’elle soit prête à l’international en mettant en forme de manière appropriée les dates, les heures, les nombres, les numéros de téléphone et les devises.Design your app to be global-ready by appropriately formatting dates, times, numbers, phone numbers, and currencies. Vous pourrez ensuite adapter votre application à des cultures, régions et langues supplémentaires sur le marché mondial.You'll then be able later to adapt your app for additional cultures, regions, and languages in the global market.

IntroductionIntroduction

Lors de la création de votre application, si vous pensez plus largement qu’une seule langue et une seule culture, vous aurez moins de problèmes inattendus lorsque votre application se développera sur de nouveaux marchés.When creating your app, if you think more broadly than a single language and culture then you'll have fewer (if any) unexpected issues when your app grows into new markets. Par exemple, les dates, les heures, les nombres, les calendriers, les devises, les numéros de téléphone, les unités de mesure et les formats du papier sont des éléments susceptibles de s’afficher différemment selon la culture ou la langue.For example, dates, times, numbers, calendars, currency, telephone numbers, units of measurement, and paper sizes are all items that can be displayed differently in different cultures or languages.

Les différentes régions et cultures utilisent des formats de date et d’heure différents.Different regions and cultures use different date and time formats. Celles-ci incluent des conventions pour l’ordre des jours et des mois de la date, pour la séparation des heures et des minutes dans le temps, et même pour la ponctuation utilisée comme séparateur.These include conventions for the order of day and month in the date, for the separation of hours and minutes in the time, and even for what punctuation is used as a separator. En outre, les dates peuvent être affichées dans différents formats longs (« mercredi 28 mars, 2012 ») ou des formats courts (« 3/28/12 »), qui varient d’une culture à l’autre.In addition, dates may be displayed in various long formats ("Wednesday, March 28, 2012") or short formats ("3/28/12"), which vary across cultures. Et, bien sûr, les noms et les abréviations des jours de la semaine et les mois de l’année diffèrent entre les langues.And, of course, the names and abbreviations for the days of the week and months of the year differ between languages.

Vous pouvez afficher un aperçu des formats utilisés pour les différentes langues.You can preview the formats used for different languages. Accédez à paramètres > heure & langue > & langue, puis cliquez sur date, heure, & paramètres régionaux > modifier les formats de date, d’heure ou de nombre.Go to Settings > Time & Language > Region & language, and click Additional date, time, & regional settings > Change date, time, or number formats. Sous l’onglet formats , sélectionnez une langue dans la liste déroulante format et affichez un aperçu des formats des exemples.On the Formats tab, select a language from the Format drop-down and preview the formats in Examples.

Cette rubrique utilise les termes « liste des langues du profil utilisateur », « liste des langues du manifeste de l’application » et « liste des langues du runtime de l’application ».This topic uses the terms "user profile language list", "app manifest language list", and "app runtime language list". Pour plus d’informations sur ce que signifient ces termes et sur la manière d’accéder à leurs valeurs, consultez comprendre les langages de profil utilisateur et les langages du manifeste d’application.For details on exactly what those terms mean and how to access their values, see Understand user profile languages and app manifest languages.

Mettre en forme les dates et les heures de la liste des langues du runtime de l’applicationFormat dates and times for the app runtime language list

Si vous devez autoriser les utilisateurs à choisir une date, ou à sélectionner une heure, utilisez les contrôles calendrier, date et heurestandard.If you need to allow users to choose a date, or to select a time, then use the standard calendar, date, and time controls. Ils utilisent automatiquement le meilleur format de date et heure pour la liste des langues du runtime de l’application.These automatically use the best date and time format for the app runtime language list.

Si vous devez afficher des dates ou des heures vous-même, vous pouvez utiliser la classe DateTimeFormatter .If you need to display dates or times yourself then you can use the DateTimeFormatter class. Par défaut, DateTimeFormatter utilise automatiquement le format de date et d’heure le plus approprié pour la liste des langues du runtime de l’application.By default, DateTimeFormatter automatically uses the best date and time format for the app runtime language list. Ainsi, le code ci-dessous met en forme une valeur DateTime donnée dans la meilleure méthode pour cette liste.So, the code below formats a given DateTime in the best way for that list. En guise d’exemple, supposons que la liste des langages de manifeste de votre application comprend l’anglais (États-Unis), qui est également votre valeur par défaut et l’allemand (Allemagne).As an example, assume that your app manifest language list includes English (United States), which is also your default, and German (Germany). Si la date actuelle est le 6 2017 novembre et que la liste des langues du profil utilisateur contient en premier allemand (Allemagne), le formateur fournit « 06.11.2017 ».If the current date is Nov 6 2017 and the user profile language list contains German (Germany) first, then the formatter gives "06.11.2017". Si la liste des langues du profil utilisateur contient en anglais (États-Unis) en premier (ou si elle ne contient ni l’anglais, ni l’allemand), le formateur donne « 11/6/2017 » (car « en-US » correspond à, ou est utilisé comme valeur par défaut).If the user profile language list contains English (United States) first (or if it contains neither English nor German), then the formatter gives "11/6/2017" (since "en-US" matches, or is used as the default).

    // 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;

Vous pouvez tester le code ci-dessus sur votre propre ordinateur comme celui-ci.You can test the code above on your own PC like this.

Mettre en forme les dates et les heures de la liste des langues du profil utilisateurFormat dates and times for the user profile language list

N’oubliez pas que, par défaut, DateTimeFormatter correspond à la liste des langues du runtime de l’application.Remember that, by default, DateTimeFormatter matches the app runtime language list. De cette façon, si vous affichez des chaînes telles que « date date < > », la langue correspondra au format de date.That way, if you display strings such as "The date is <date>", then the language will match the date format.

Si, pour une raison quelconque, vous souhaitez mettre en forme des dates et/ou des heures uniquement en fonction de la liste des langues du profil utilisateur, vous pouvez le faire à l’aide d’un code similaire à celui de l’exemple ci-dessous.If for whatever reason you want to format dates and/or times only according to the user profile language list, then you can do that using code like the example below. Toutefois, si vous le faites, sachez que l’utilisateur peut choisir une langue pour laquelle votre application n’a pas de chaînes traduites.But if you do so then understand that the user can choose a language for which your app doesn't have translated strings. Par exemple, si votre application n’est pas localisée en allemand (Allemagne), mais que l’utilisateur choisit que comme langue par défaut, cela peut entraîner l’affichage de chaînes inhabituelles, telles que « la date est 06.11.2017 ».For example, if your app is not localized into German (Germany), but the user chooses that as their preferred language, then that could result in the display of arguably odd-looking strings such as "The date is 06.11.2017".

    // 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);

Mettre correctement en forme les nombres et les devisesFormat numbers and currencies appropriately

La mise en forme des nombres varie en fonction des cultures.Different cultures format numbers differently. Les différences de mise en forme peuvent concerner le nombre de décimales affichées, le caractère servant de séparateur décimal et le symbole monétaire.Format differences may include how many decimal digits to display, what characters to use as decimal separators, and what currency symbol to use. Utilisez les classes de l’espace de noms NumberFormatting pour afficher les nombres décimaux, les pourcentages, les valeurs de permouture et les devises.Use classes in the NumberFormatting namespace to display decimal, percent, or permille numbers, and currencies. La plupart du temps, vous souhaiterez que ces classes de formateur utilisent le meilleur format pour le profil utilisateur.Most of the time, you will want these formatter classes to use the best format for the user profile. Toutefois, vous pouvez utiliser les formateurs pour afficher une devise pour toute région ou format.But you may use the formatters to display a currency for any region or format.

Cet exemple montre comment afficher les devises à la fois par profil utilisateur et pour un système monétaire donné spécifique.This example shows how to display currencies both per the user profile, and for a specific given currency system.

    // 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;

Vous pouvez tester le code ci-dessus sur votre propre PC en modifiant le pays ou la région dans paramètres > heure & langue > & > pays ou régionde langue.You can test the code above on your own PC by changing the country or region in Settings > Time & Language > Region & language > Country or region. Choisissez un pays ou une région (peut-être Islande) et réexécutez le code.Choose a country or region (perhaps Iceland), and run the code again.

Utiliser un calendrier adapté à la cultureUse a culturally appropriate calendar

Le calendrier peut être différent selon les régions et les langues.The calendar differs across regions and languages. Le calendrier grégorien n’est pas le calendrier utilisé par défaut dans toutes les régions.The Gregorian calendar is not the default for every region. Les utilisateurs dans certaines régions peuvent choisir d’autres calendriers, tels que le calendrier d’ère japonaise ou les calendriers lunaires arabes.Users in some regions may choose alternate calendars, such as the Japanese era calendar, or Arabic lunar calendars. Les dates et heures du calendrier sont également sensibles aux différents fuseaux horaires et à l’heure d’été.Dates and times on the calendar are also sensitive to different time zones and daylight-saving time.

Pour vous assurer que le format de calendrier par défaut est utilisé, vous pouvez utiliser les contrôles de calendrier, de date et d’heurestandard.To ensure that the preferred calendar format is used, you can use the standard calendar, date, and time controls. Pour les scénarios plus complexes, lorsque l’utilisation directe d’opérations sur des dates de calendrier peut être nécessaire, Windows. Globalization fournit une classe Calendar qui donne une représentation de calendrier appropriée pour la culture, la région et le type de calendrier donnés.For more complex scenarios, where working directly with operations on calendar dates may be required, Windows.Globalization provides a Calendar class that gives an appropriate calendar representation for the given culture, region, and calendar type.

Mettre correctement en forme les numéros de téléphoneFormat phone numbers appropriately

Les numéros de téléphone affichent une mise en forme différente selon les régions.Phone numbers are formatted differently across regions. Le nombre de chiffres, la façon dont les chiffres sont regroupés et l’importance de certaines parties du numéro de téléphone varient d’un pays à l’autre.The number of digits, how the digits are grouped, and the significance of certain parts of the phone number vary between countries. À partir de Windows 10, version 1607, vous pouvez utiliser les classes de l’espace de noms PhoneNumberFormatting pour mettre en forme les numéros de téléphone de manière appropriée pour la région actuelle.Starting in Windows 10, version 1607, you can use classes in the PhoneNumberFormatting namespace to format phone numbers appropriately for the current region.

PhoneNumberInfo analyse une chaîne de chiffres et vous permet de déterminer si les chiffres sont un numéro de téléphone valide dans la région active ; compare l’égalité de deux nombres ; et pour extraire les différentes parties fonctionnelles du numéro de téléphone, telles que le code de pays ou le code de zone géographique.PhoneNumberInfo parses a string of digits and allows you to: determine whether the digits are a valid phone number in the current region; compare two numbers for equality; and to extract the different functional parts of the phone number, such as country code or geographical area code.

PhoneNumberFormatter met en forme une chaîne de chiffres ou un PhoneNumberInfo pour l’affichage, même lorsque la chaîne de chiffres représente un numéro de téléphone partiel.PhoneNumberFormatter formats a string of digits or a PhoneNumberInfo for display, even when the string of digits represents a partial phone number. Vous pouvez utiliser cette mise en forme de nombres partiels pour mettre en forme un nombre lorsqu’un utilisateur entre le nombre.You can use this partial number formatting to format a number as a user is entering the number.

L’exemple ci-dessous montre comment utiliser PhoneNumberFormatter pour formater un numéro de téléphone lors de son entrée.The example below shows how to use PhoneNumberFormatter to format a phone number as it is being entered. Chaque fois que du texte change dans une zone de texte nommée phoneNumberInputTextBox, le contenu de la zone de texte est mis en forme à l’aide de la région par défaut actuelle et affiché dans un TextBlock nommé phoneNumberOutputTextBlock.Each time text changes in a TextBox named phoneNumberInputTextBox, the contents of the text box are formatted using the current default region and displayed in a TextBlock named phoneNumberOutputTextBlock. À des fins de démonstration, la chaîne est également mise en forme à l’aide de la région de la Nouvelle-Zélande et affichée dans un TextBlock nommé phoneNumberOutputTextBlockNZ.For demonstration purposes, the string is also formatted using the region for New Zealand, and displayed in a TextBlock named phoneNumberOutputTextBlockNZ.

    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);
        }
    }

Vous pouvez tester le code ci-dessus sur votre propre PC en modifiant le pays ou la région dans paramètres > heure & langue > & > pays ou régionde langue.You can test the code above on your own PC by changing the country or region in Settings > Time & Language > Region & language > Country or region. Choisissez un pays ou une région (par exemple, Nouvelle-Zélande pour confirmer que les formats correspondent), puis réexécutez le code.Choose a country or region (perhaps New Zealand to confirm that the formats match), and run the code again. Pour les données de test, vous pouvez effectuer une recherche sur le Web pour le numéro de téléphone d’une entreprise en Nouvelle-Zélande.For test data, you can do a web search for the phone number of a business in New Zealand.

Les préférences de langue et de culture de l’utilisateurThe user's language and cultural preferences

Pour les scénarios où vous souhaitez fournir des fonctionnalités différentes basées uniquement sur la langue, la région ou les préférences culturelles de l’utilisateur, Windows vous donne la possibilité d’accéder à ces préférences, par le biais de Windows.SysTEM. UserProfile. GlobalizationPreferences.For scenarios where you wish to provide different functionality based solely on the user's language, region, or cultural preferences, Windows gives you a way to access those preferences, through Windows.System.UserProfile.GlobalizationPreferences. Si nécessaire, utilisez la classe GlobalizationPreferences pour obtenir les préférences actuelles de l’utilisateur (emplacement géographique, langues par défaut, devises par défaut, etc.).When needed, use the GlobalizationPreferences class to get the value of the user's current geographic region, preferred languages, preferred currencies, and so on. Toutefois, n’oubliez pas que si les chaînes/images de votre application ne sont pas localisées pour la langue par défaut de l’utilisateur, les dates et heures et les autres données formatées pour cette langue par défaut ne correspondent pas aux chaînes que vous affichez.But remember that if your app's strings/images aren't localized for the user's preferred language then dates and times and other data formatted for that preferred language won't match the strings that you display.

API importantesImportant APIs

ExemplesSamples