Classe CultureAndRegionInfoBuilder

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

Remarque

La CultureAndRegionInfoBuilder classe est utile uniquement pour les systèmes d’exploitation Windows. Les fichiers .nlp générés ne sont pas pris en charge sur les systèmes d’exploitation non Windows. En outre, même sur Windows, les fichiers .nlp générés sont pris en charge uniquement sur .NET Framework (ou dans .NET Core lors de l’utilisation du mode de globalisation NLS).

La classe CultureInfo contient des informations propres à la culture, telles que la langue, la sous-langue, le pays/la région, le calendrier et les conventions culturelles associés. Cette classe fournit également des instances spécifiques à la culture des classe DateTimeFormatInfo, NumberFormatInfo, CompareInfo et TextInfo qui sont requises pour des opérations spécifiques à la culture, telles que la casse, la mise en forme et l’analyse des dates et des nombres, ainsi que la comparaison des chaînes.

Par défaut, .NET prend en charge des objets CultureInfo qui représentent un groupe prédéfini de cultures. Pour obtenir la liste de ces cultures disponibles sur des systèmes Windows, consultez la colonne Balise de langue dans la liste des noms de langue/région pris en charge par Windows. Les noms de culture respectent la norme définie par BCP 47. La classe CultureAndRegionInfoBuilder vous permet de créer une culture personnalisée qui est complètement nouvelle ou qui remplace une culture prédéfinie. Lorsqu’une culture personnalisée est installée et inscrite sur un ordinateur particulier, elle devient impossible à distinguer à partir des objets CultureInfo prédéfinis et peut être instanciée et utilisée comme ces objets.

Important

La CultureAndRegionInfoBuilder classe se trouve dans un assembly nommé sysglobl.dll. Pour compiler le code qui utilise ce type, vous devez ajouter une référence à sysglobl.dll.

Une culture personnalisée ne peut être inscrite sur un ordinateur que par un utilisateur disposant de droits d’administration sur cet ordinateur. Par conséquent, les applications ne créent et n’installent généralement pas des cultures personnalisées. Au lieu de cela, vous pouvez utiliser la classe CultureAndRegionInfoBuilder pour créer un outil à usage spécial qu’un administrateur peut utiliser pour créer, installer et inscrire une culture personnalisée. Une fois la culture personnalisée inscrite sur un ordinateur, vous pouvez utiliser la classe CultureInfo dans votre application pour créer des instances de la culture personnalisée comme vous le feriez pour une culture prédéfinie.

Si vous analysez des chaînes de date et d’heure générées pour une culture personnalisée, vous devez utiliser la méthode DateTime.ParseExact ou DateTime.TryParseExact au lieu de la méthode DateTime.Parse ou DateTime.TryParse pour améliorer la probabilité que l’opération d’analyse aboutisse. Une chaîne de date et d’heure pour une culture personnalisée peut être compliquée et par conséquent difficile à analyser. Les méthodes Parse et TryParse essaient d’analyser une chaîne avec plusieurs modèles d’analyse implicite, lesquels peuvent tous échouer. La méthode TryParseExact, en revanche, requiert que l’application désigne explicitement un ou plusieurs modèles d’analyse exacts susceptibles d’être correctement exécutés.

Définir et créer une culture personnalisée

Vous utilisez la classe CultureAndRegionInfoBuilder pour définir et nommer une culture personnalisée. La culture personnalisée peut être une culture entièrement nouvelle, une nouvelle culture basée sur une culture existante (à savoir une culture supplémentaire) ou une culture qui remplace une culture .NET existante. Dans chaque cas, les étapes de base sont les mêmes :

  1. Instanciez un objet CultureAndRegionInfoBuilder en appelant son constructeur CultureAndRegionInfoBuilder(String, CultureAndRegionModifiers). Pour remplacer une culture existante, transmettez le nom de la culture et la valeur d’énumération CultureAndRegionModifiers.Replacement au constructeur. Pour créer une culture ou une culture supplémentaire, transmettez un nom de culture unique et la valeur d’énumération CultureAndRegionModifiers.Neutral ou CultureAndRegionModifiers.None.

    Remarque

    Si vous utilisez la valeur d’énumération CultureAndRegionModifiers.Replacement pour instancier un objet CultureAndRegionInfoBuilder, les propriétés de l’objet CultureAndRegionInfoBuilder sont automatiquement remplies avec les valeurs de l’objet CultureInfo à remplacer.

  2. Si vous créez une culture ou une culture supplémentaire :

  3. Modifiez les propriétés de l’objet CultureAndRegionInfoBuilder en fonction des besoins.

  4. Si vous envisagez d’inscrire la culture personnalisée dans une routine distincte, appelez la méthode Save. Cette opération génère un fichier XML que vous pouvez charger et inscrire dans une routine d’installation de culture personnalisée distincte.

Inscrire une culture personnalisée

Si vous développez une application d’inscription pour une culture personnalisée distincte de l’application qui crée la culture, vous appelez la méthode CreateFromLdml pour charger le fichier XML contenant la définition de la culture personnalisée et instancier l’objet CultureAndRegionInfoBuilder. Pour gérer l’inscription, appelez la méthode Register. Pour que l’inscription réussisse, l’application qui inscrit la culture personnalisée doit s’exécuter avec des privilèges administratifs sur le système cible. Sinon, l’appel à Register lève une exception UnauthorizedAccessException.

Avertissement

Les données de culture peuvent varier en fonction des systèmes. Si vous utilisez la classe CultureAndRegionInfoBuilder pour créer une culture personnalisée uniforme sur plusieurs systèmes et que vous créez votre culture personnalisée en chargeant des données à partir d’objets CultureInfo et RegionInfo existants et en les personnalisant, vous devez développer deux utilitaires différents. Le premier crée la culture personnalisée et l’enregistre dans un fichier XML. Le deuxième utilise la méthode CreateFromLdml pour charger la culture personnalisée à partir d’un fichier XML et l’inscrire sur l’ordinateur cible.

Le processus d’inscription effectue les tâches suivantes :

  • Crée un fichier .nlp qui contient les informations définies dans l’objet CultureAndRegionInfoBuilder .
  • Stocke le fichier .nlp dans le répertoire système %windir%\Globalization sur l’ordinateur cible. Cette opération permet aux paramètres de la culture personnalisée de persister d’une session à l’autre. (La CultureAndRegionInfoBuilder méthode nécessite des privilèges d’administration, car le fichier .nlp est stocké dans un répertoire système.)
  • Prépare .NET pour la recherche du répertoire système %windir%\Globalization au lieu d’un cache interne la prochaine fois qu’il existe une demande de création de votre nouvelle culture personnalisée.

Lorsqu’une culture personnalisée est correctement inscrite, elle est impossible à distinguer des cultures prédéfinies par .NET. La culture personnalisée est disponible jusqu’à ce qu’un appel à la CultureAndRegionInfoBuilder méthode supprime le fichier .nlp de l’ordinateur local.

Instancier une culture personnalisée

Vous pouvez créer une instance de la culture personnalisée de l’une des manières suivantes :

En outre, le tableau d’objets CultureInfo retourné par la méthode CultureInfo.GetCultures comprend la culture personnalisée.