Ressources dans les applications .NETResources in .NET Apps

Presque toutes les applications d'une qualité de niveau "production" doivent utiliser des ressources.Nearly every production-quality app has to use resources. Une ressource est une donnée non exécutable qui est déployée logiquement avec une application.A resource is any nonexecutable data that is logically deployed with an app. Une ressource peut être affichée dans une application sous la forme de messages d'erreur ou comme faisant partie de l'interface utilisateur.A resource might be displayed in an app as error messages or as part of the user interface. Les ressources peuvent contenir des données sous plusieurs formes, telles que des chaînes, des images et des objets rendus persistants.Resources can contain data in a number of forms, including strings, images, and persisted objects. (Pour écrire des objets persistants dans un fichier de ressources, les objets doivent être sérialisables.) Le stockage de vos données dans un fichier de ressources vous permet de modifier les données sans avoir à recompiler l’intégralité de votre application.(To write persisted objects to a resource file, the objects must be serializable.) Storing your data in a resource file enables you to change the data without recompiling your entire app. Il vous permet également de stocker des données dans un emplacement unique, et élimine la nécessité d'avoir recours à des données codées en dur stockées dans plusieurs emplacements.It also enables you to store data in a single location, and eliminates the need to rely on hard-coded data that is stored in multiple locations.

Le .NET Framework et .NET Core fournissent une prise en charge complète de la création et de la localisation des ressources.The .NET Framework and .NET Core provide comprehensive support for the creation and localization of resources. De plus, .NET prend en charge un modèle simple pour la compression et le déploiement de ressources localisées.In addition, .NET supports a simple model for packaging and deploying localized resources.

Pour plus d’informations sur les ressources dans ASP.NET, consultez Vue d’ensemble des ressources des pages Web ASP.NET.For information about resources in ASP.NET, see ASP.NET Web Page Resources Overview.

Créer et localiser les ressourcesCreating and Localizing Resources

Dans une application non localisée, vous pouvez utiliser des fichiers de ressources comme référentiel pour les données d'application, notamment pour les chaînes qui auraient pu être codées en dur dans plusieurs emplacements de code source.In a non-localized app, you can use resource files as a repository for app data, particularly for strings that might otherwise be hard-coded in multiple locations in source code. En règle générale, vous créez des ressources sous forme de fichier texte (.txt) ou de fichiers XML (.resx), et vous utilisez Resgen.exe (Resource File Generator) pour les compiler dans des fichiers binaires .resources.Most commonly, you create resources as either text (.txt) or XML (.resx) files, and use Resgen.exe (Resource File Generator) to compile them into binary .resources files. Ces fichiers peuvent être incorporés dans le fichier exécutable de l'application par un compilateur de langage.These files can then be embedded in the app's executable file by a language compiler. Pour plus d’informations sur la création des ressources, consultez Création de fichiers de ressources.For more information about creating resources, see Creating Resource Files.

Vous pouvez également localiser les ressources de votre application pour des cultures spécifiques.You can also localize your app's resources for specific cultures. Cela vous permet de générer des versions localisées (traduites) de vos applications.This enables you to build localized (translated) versions of your apps. Lorsque vous développez une application qui utilise des ressources localisées, vous indiquez une culture qui sert de culture neutre ou de secours dont les ressources sont utilisées si aucune ressource appropriée n'est disponible.When you develop an app that uses localized resources, you designate a culture that serves as the neutral or fallback culture whose resources are used if no suitable resources are available. En général, les ressources de la culture neutre sont stockées dans le fichier exécutable de l'application.Typically, the resources of the neutral culture are stored in the app's executable. Les ressources restantes pour les cultures individuelles localisées sont stockées dans des assemblys satellites autonomes.The remaining resources for individual localized cultures are stored in standalone satellite assemblies. Pour plus d’informations, consultez Création d’assemblys satellites.For more information, see Creating Satellite Assemblies.

Empaquetage et déploiement de ressourcesPackaging and Deploying Resources

Vous déployez des ressources localisées d’application dans les assemblys satellites.You deploy localized app resources in satellite assemblies. Un assembly satellite contient les ressources d'une culture unique ; il ne contient aucun code d'application.A satellite assembly contains the resources of a single culture; it does not contain any app code. Dans le modèle de déploiement d'assembly satellite, vous créez une application avec un assembly par défaut (qui est généralement l'assembly principal) et un assembly satellite pour chaque culture que l'application prend en charge.In the satellite assembly deployment model, you create an app with one default assembly (which is typically the main assembly) and one satellite assembly for each culture that the app supports. Dans la mesure où les assemblys satellites ne font pas partie de l'assembly principal, vous pouvez facilement remplacer ou mettre à jour les ressources correspondant à une culture spécifique sans remplacer l'assembly principal de l'application.Because the satellite assemblies are not part of the main assembly, you can easily replace or update resources corresponding to a specific culture without replacing the app's main assembly.

Il est important de déterminer avec précision les ressources qui composent l'assembly de ressources par défaut d'une application.Carefully determine which resources will make up your app's default resource assembly. Dans la mesure où il fait partie de l’assembly principal, toute modification apportée vous contraint à remplacer cet assembly.Because it is a part of the main assembly, any changes to it will require you to replace the main assembly. Si vous ne fournissez pas une ressource par défaut, une exception sera levée au moment où le processus de secours pour les ressources tente de la localiser.If you do not provide a default resource, an exception will be thrown when the resource fallback process attempts to find it. Dans une application bien conçue, l'utilisation de ressources ne doit pas renvoyer d'exception.In a well-designed app, using resources should never throw an exception.

Pour plus d’informations, consultez l’article Empaquetage et déploiement de ressources.For more information, see the Packaging and Deploying Resources article.

Récupération de ressourcesRetrieving Resources

Au moment de l'exécution, une application charge les ressources localisées appropriées sur une base par thread, selon la culture spécifiée par la propriété CultureInfo.CurrentUICulture.At run time, an app loads the appropriate localized resources on a per-thread basis, based on the culture specified by the CultureInfo.CurrentUICulture property. Cette valeur de propriété est dérivée comme suit :This property value is derived as follows:

  • En assignant directement un objet CultureInfo qui représente la culture localisée à la propriété Thread.CurrentUICulture.By directly assigning a CultureInfo object that represents the localized culture to the Thread.CurrentUICulture property.

  • Si une culture n'est pas explicitement assignée, en extrayant la culture d'interface utilisateur par défaut du thread de la propriété CultureInfo.DefaultThreadCurrentUICulture.If a culture is not explicitly assigned, by retrieving the default thread UI culture from the CultureInfo.DefaultThreadCurrentUICulture property.

  • Si une culture d’interface utilisateur par défaut du thread n’est pas explicitement assignée, en extrayant la culture de l’utilisateur actuel sur l’ordinateur local.If a default thread UI culture is not explicitly assigned, by retrieving the culture for the current user on the local computer. Les implémentations de .NET s’exécutant sur Windows le font en appelant la fonction Windows GetUserDefaultUILanguage..NET implementations running on Windows do this by calling the Windows GetUserDefaultUILanguage function.

Pour plus d'informations sur la façon dont la culture d'interface utilisateur actuelle est définie, consultez les pages de référence CultureInfo et CultureInfo.CurrentUICulture.For more information about how the current UI culture is set, see the CultureInfo and CultureInfo.CurrentUICulture reference pages.

Vous pouvez ensuite extraire des ressources pour la culture de l'interface utilisateur actuelle ou pour une culture spécifique en utilisant la classe System.Resources.ResourceManager.You can then retrieve resources for the current UI culture or for a specific culture by using the System.Resources.ResourceManager class. Bien que la classe ResourceManager soit la plus fréquemment utilisée pour extraire des ressources, l’espace de noms System.Resources contient des types supplémentaires que vous pouvez utiliser pour récupérer des ressources.Although the ResourceManager class is most commonly used for retrieving resources, the System.Resources namespace contains additional types that you can use to retrieve resources. Elles incluent notamment les suivantes :These include:

  • La classe ResourceReader, qui vous permet d'énumérer des ressources incorporées dans un assembly ou stockées dans un fichier .resources binaire.The ResourceReader class, which enables you to enumerate resources embedded in an assembly or stored in a standalone binary .resources file. C'est utile lorsque vous ne connaissez pas les noms exacts des ressources disponibles au moment de l'exécution.It is useful when you don't know the precise names of the resources that are available at run time.

  • La classe ResXResourceReader, qui permet d'accéder aux ressources d'un fichier XML (.resx).The ResXResourceReader class, which enables you to retrieve resources from an XML (.resx) file.

  • La classe ResourceSet, qui vous permet de récupérer les ressources d'une culture spécifique sans observer les règles de secours.The ResourceSet class, which enables you to retrieve the resources of a specific culture without observing fallback rules. Les ressources peuvent être stockées dans un assembly ou un fichier .resources binaire.The resources can be stored in an assembly or a standalone binary .resources file. Vous pouvez également développer une implémentation de IResourceReader qui vous permet d'utiliser la classe ResourceSet pour récupérer les ressources d'une autre source.You can also develop an IResourceReader implementation that enables you to use the ResourceSet class to retrieve resources from some other source.

  • La classe ResXResourceSet, qui permet de récupérer tous les éléments dans un fichier de ressources XML en mémoire.The ResXResourceSet class, which enables you to retrieve all the items in an XML resource file into memory.

Voir aussiSee also