Assembly : mscorlib (dans mscorlib.dll)
Syntaxe<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public Class ResourceManager
Dim instance As ResourceManager
[SerializableAttribute] [ComVisibleAttribute(true)] public class ResourceManager
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class ResourceManager
/** @attribute SerializableAttribute() */ /** @attribute ComVisibleAttribute(true) */ public class ResourceManager
SerializableAttribute ComVisibleAttribute(true) public class ResourceManager
NotesLa classe ResourceManager accède aux ressources spécifiques d'une culture, fournit une ressource de secours lorsqu'une ressource localisée n'existe pas et prend en charge la sérialisation des ressources.
À l'aide des méthodes de ResourceManager, un appelant peut accéder aux ressources d'une culture spécifique en utilisant les méthodes GetObject et GetString. Par défaut, ces méthodes retournent les ressources de la culture définie par les paramètres de culture actuels du thread responsable de l'appel. (Consultez Thread.CurrentUICulture pour plus d'informations.) Un appelant peut utiliser la méthode ResourceManager.GetResourceSet pour obtenir ResourceSet, qui représente les ressources d'une culture spécifique, en ignorant les règles de la culture de secours. Il peut ensuite utiliser ResourceSet pour accéder aux ressources localisées pour cette culture, par nom.
Il est conseillé de créer des ressources pour chaque langue, ou du moins un sous-ensemble significatif par langue. Les noms des fichiers de ressources utilisent la convention d'affectation de noms basename.cultureName.resources, où basename (nom de base) correspond au nom de l'application ou à celui d'une classe, selon le niveau de détail souhaité. La propriété Name de CultureInfo permet de déterminer le nom de la culture. Les ressources de la culture neutre (retournées par InvariantCulture) doivent être nommées nomdebase.resources.
Prenons l'exemple d'un assembly contenant plusieurs ressources dans un fichier de ressources dont le nom de base est "MyResources". Les noms de ces fichiers de ressources seront par exemple "MyResources.ja-JP.resources", "MyResources.de.resources", "MyResources.zh-CHS.resources" ou "MyResources.fr-BE.resources", indiquant qu'il s'agit respectivement des ressources japonaises, allemandes, chinoises simplifiées et françaises (Belgique). Le fichier de ressources par défaut doit se nommer MyResources.resources. Les fichiers de ressources spécifiques à la culture sont généralement livrés dans les assemblys satellites pour chaque culture. Le fichier de ressources par défaut doit résider dans votre assembly principal.
Supposons maintenant qu'un ResourceManager ait été créé pour représenter les ressources dotées de ce nom de base. Avec ResourceManager, vous pouvez obtenir un ResourceSet qui encapsule "MyResources.ja-JP.resources" en appelant GetResourceSet(new CultureInfo ("ja-JP"), TRUE, FALSE). Ou, si "MyResources" contient une ressource nommée "TOOLBAR_ICON", vous pouvez obtenir la valeur de cette ressource localisée pour le Japon en appelant GetObject("TOOLBAR_ICON", new CultureInfo("ja-JP")).
Même si cela n'est pas strictement nécessaire pour les utilisations les plus courantes de ResourceManager, les assemblys d'envoi public doivent utiliser SatelliteContractVersionAttribute pour prendre en charge le versioning de votre assembly principal sans redéployer vos satellites, et NeutralResourcesLanguageAttribute pour éviter de rechercher un assembly satellite qui peut ne jamais exister.
Pour plus d'informations sur le versioning pris en charge pour les assemblys satellites, consultez Récupération de ressources d'assemblys satellites. Pour en savoir plus sur la création des assemblys satellites, consultez Création d'assemblys satellites. Pour obtenir de l'aide sur la localisation des boîtes de dialogue Windows Forms, consultez l'outil Windows Forms Resource Editor (Winres.exe) dans le Kit de développement Microsoft .NET Framework SDK.
Pour en savoir plus sur la configuration et la création de ressources, consultez Ressources dans les applications.
Attention |
|---|
| L'utilisation de fichiers .resources autonomes dans une application ASP.NET interrompt le déploiement XCOPY, dans la mesure où les ressources restent verrouillées jusqu'à ce qu'elles soient libérées de manière explicite par la méthode ReleaseAllResources. Si vous souhaitez déployer des ressources dans des applications ASP.NET, vous devez compiler vos fichiers .resources en assemblys satellites. |
Attention |
|---|
| Les ressources privées sont accessibles uniquement dans l'assembly qui les contient. Dans la mesure où un assembly satellite ne contient aucun code, les ressources qui lui sont privées deviennent indisponibles quel que soit le mécanisme. Par conséquent, les ressources dans les assemblys satellites doivent toujours être publiques de façon à être accessibles à partir de votre assembly principal. Les ressources incorporées dans votre assembly principal lui sont accessibles, qu'il soit privé ou public. |
N?ud de fichier de configuration <satelliteassemblies>
Vous pouvez créer un n?ud <satelliteassemblies> dans le fichier de configuration de l'application pour spécifier que vous avez déployé un jeu spécifique de cultures pour votre application, et que la classe ResourceManager ne doit pas tenter de détecter une culture qui n'est pas répertoriée dans ce n?ud.
Remarque |
|---|
| L'approche alternative pour créer un n?ud <satelliteassemblies> consiste à utiliser la fonctionnalité Manifeste de déploiement ClickOnce. |
Créez une section de fichier de configuration semblable à l'exemple de code suivant :
<?xml version ="1.0"?> <configuration> <satelliteassemblies> <assembly name="MainAssemblyName, Version=versionNumber, Culture=neutral, PublicKeyToken=null|yourPublicKeyToken"> <culture>cultureName1</culture> <culture>cultureName2</culture> <culture>cultureName3</culture> </assembly> </satelliteassemblies> </configuration>
Dans votre fichier de configuration, procédez comme suit :
-
Spécifiez un ou plusieurs n?uds <assembly> pour chaque assembly principal que vous déployez, où l'attribut de n?ud <assembly> spécifie un nom d'assembly qualifié complet. Spécifiez le nom de votre assembly principal au lieu de MainAssemblyName, et spécifiez les valeurs d'attributs Version, PublicKeyToken et Culture qui correspondent à votre assembly principal.
Pour l'attribut Version, spécifiez le numéro de version de votre assembly. Par exemple, le numéro de la première version finale de votre assembly peut être 1.0.0.0.
Pour l'attribut PublicKeyToken, spécifiez le mot clé "null" si vous n'avez pas signé votre assembly avec un nom fort, ou spécifiez le jeton de votre clé publique si vous avez signé votre assembly.
Pour l'attribut Culture, spécifiez le mot clé "neutral" pour désigner l'assembly principal et forcer la classe ResourceManager à détecter uniquement les cultures répertoriées dans les n?uds <culture>.
Pour plus d'informations sur les noms d'assemblys qualifiés complets, consultez Noms d'assemblys. Pour plus d'informations sur les assemblys avec nom fort, consultez Création et utilisation d'assemblys avec nom fort.
-
Spécifiez un ou plusieurs n?uds <culture> avec un nom de culture spécifique, tel que "fr-FR", ou un nom de culture neutre, tel que "fr."
Si des ressources sont exigées pour un assembly non répertorié sous le n?ud <satelliteassemblies>, la classe ResourceManager détecte les cultures à l'aide des règles de détection standard.
ExempleL'exemple de code suivant illustre l'utilisation d'une culture explicite et de la culture d'interface utilisateur actuelle implicite pour obtenir des ressources de type chaîne d'un assembly principal et d'un assembly satellite. Pour plus d'informations, consultez la sous-rubrique « Emplacement des répertoires d'assemblys satellites non installés dans le Global Assembly Cache » de la rubrique Création d'assemblys satellites.
' This code example demonstrates the ResourceManager() ' constructor and ResourceManager.GetString() method. Imports System Imports System.Resources Imports System.Reflection Imports System.Threading Imports System.Globalization ' 'Perform the following steps to use this code example: ' 'Main assembly: '1) In a main directory, create a file named "rmc.txt" that 'contains the following resource strings: ' 'day=Friday 'year=2006 'holiday="Cinco de Mayo" ' '2) Use the resgen.exe tool to generate the "rmc.resources" 'resource file from the "rmc.txt" input file. ' '> resgen rmc.txt ' 'Satellite Assembly: '3) Create a subdirectory of the main directory and name the 'subdirectory "es-ES", which is the culture name of the 'satellite assembly. ' '4) Create a file named "rmc.es-ES.txt" that contains the 'following resource strings: ' 'day=Viernes 'year=2006 'holiday="Cinco de Mayo" ' '5) Use the resgen.exe tool to generate the "rmc.es-ES.resources" 'resource file from the "rmc.es-ES.txt" input file. ' '> resgen rmc.es-ES.txt ' '6) Use the al.exe tool to create a satellite assembly. If the 'base name of the application is "rmc", the satellite assembly 'name must be "rmc.resources.dll". Also, specify the culture, 'which is es-ES. ' '> al /embed:rmc.es-ES.resources /c:es-ES /out:rmc.resources.dll ' '7) Assume the filename for this code example is "rmc.vb". Compile 'rmc.vb and embed the main assembly resource file, rmc.resources, in 'the executable assembly, rmc.exe: ' '>vbc /res:rmc.resources rmc.vb ' '8) Execute rmc.exe, which obtains and displays the embedded 'resource strings. ' Class Sample Public Shared Sub Main() Dim day As String Dim year As String Dim holiday As String Dim celebrate As String = "{0} will occur on {1} in {2}." & vbCrLf ' Create a resource manager. The GetExecutingAssembly() method ' gets rmc.exe as an Assembly object. Dim rm As New ResourceManager("rmc", [Assembly].GetExecutingAssembly()) ' Obtain resources using the current UI culture. Console.WriteLine("Obtain resources using the current UI culture.") ' Get the resource strings for the day, year, and holiday ' using the current UI culture. Use those strings to ' display a message. day = rm.GetString("day") year = rm.GetString("year") holiday = rm.GetString("holiday") Console.WriteLine(celebrate, holiday, day, year) ' Obtain the es-ES culture. Dim ci As New CultureInfo("es-ES") ' Get the resource strings for the day, year, and holiday ' using the specified culture. Use those strings to ' display a message. ' Obtain resources using the es-ES culture. Console.WriteLine("Obtain resources using the es-ES culture.") day = rm.GetString("day", ci) year = rm.GetString("year", ci) holiday = rm.GetString("holiday", ci) ' --------------------------------------------------------------- ' Alternatively, comment the preceding 3 code statements and ' uncomment the following 4 code statements: ' ---------------------------------------------------------------- ' Set the current UI culture to "es-ES" (Spanish-Spain). ' Thread.CurrentThread.CurrentUICulture = ci ' Get the resource strings for the day, year, and holiday ' using the current UI culture. Use those strings to ' display a message. ' day = rm.GetString("day") ' year = rm.GetString("year") ' holiday = rm.GetString("holiday") ' --------------------------------------------------------------- ' Regardless of the alternative that you choose, display a message ' using the retrieved resource strings. Console.WriteLine(celebrate, holiday, day, year) End Sub 'Main End Class 'Sample ' 'This code example produces the following results: ' '>rmc 'Obtain resources using the current UI culture. '"5th of May" will occur on Friday in 2006. ' 'Obtain resources using the es-ES culture. '"Cinco de Mayo" will occur on Viernes in 2006. '
// This code example demonstrates the ResourceManager() // constructor and ResourceManager.GetString() method. using System; using System.Resources; using System.Reflection; using System.Threading; using System.Globalization; /* Perform the following steps to use this code example: Main assembly: 1) In a main directory, create a file named "rmc.txt" that contains the following resource strings: day=Friday year=2006 holiday="Cinco de Mayo" 2) Use the resgen.exe tool to generate the "rmc.resources" resource file from the "rmc.txt" input file. > resgen rmc.txt Satellite Assembly: 3) Create a subdirectory of the main directory and name the subdirectory "es-ES", which is the culture name of the satellite assembly. 4) Create a file named "rmc.es-ES.txt" that contains the following resource strings: day=Viernes year=2006 holiday="Cinco de Mayo" 5) Use the resgen.exe tool to generate the "rmc.es-ES.resources" resource file from the "rmc.es-ES.txt" input file. > resgen rmc.es-ES.txt 6) Use the al.exe tool to create a satellite assembly. If the base name of the application is "rmc", the satellite assembly name must be "rmc.resources.dll". Also, specify the culture, which is es-ES. > al /embed:rmc.es-ES.resources /c:es-ES /out:rmc.resources.dll 7) Assume the filename for this code example is "rmc.cs". Compile rmc.cs and embed the main assembly resource file, rmc.resources, in the executable assembly, rmc.exe: >csc /res:rmc.resources rmc.cs 8) Execute rmc.exe, which obtains and displays the embedded resource strings. */ class Sample { public static void Main() { string day; string year; string holiday; string celebrate = "{0} will occur on {1} in {2}.\n"; // Create a resource manager. The GetExecutingAssembly() method // gets rmc.exe as an Assembly object. ResourceManager rm = new ResourceManager("rmc", Assembly.GetExecutingAssembly()); // Obtain resources using the current UI culture. Console.WriteLine("Obtain resources using the current UI culture."); // Get the resource strings for the day, year, and holiday // using the current UI culture. Use those strings to // display a message. day = rm.GetString("day"); year = rm.GetString("year"); holiday = rm.GetString("holiday"); Console.WriteLine(celebrate, holiday, day, year); // Obtain the es-ES culture. CultureInfo ci = new CultureInfo("es-ES"); // Get the resource strings for the day, year, and holiday // using the specified culture. Use those strings to // display a message. // Obtain resources using the es-ES culture. Console.WriteLine("Obtain resources using the es-ES culture."); day = rm.GetString("day", ci); year = rm.GetString("year", ci); holiday = rm.GetString("holiday", ci); // --------------------------------------------------------------- // Alternatively, comment the preceding 3 code statements and // uncomment the following 4 code statements: // ---------------------------------------------------------------- // Set the current UI culture to "es-ES" (Spanish-Spain). // Thread.CurrentThread.CurrentUICulture = ci; // Get the resource strings for the day, year, and holiday // using the current UI culture. Use those strings to // display a message. // day = rm.GetString("day"); // year = rm.GetString("year"); // holiday = rm.GetString("holiday"); // --------------------------------------------------------------- // Regardless of the alternative that you choose, display a message // using the retrieved resource strings. Console.WriteLine(celebrate, holiday, day, year); } } /* This code example produces the following results: >rmc Obtain resources using the current UI culture. "5th of May" will occur on Friday in 2006. Obtain resources using the es-ES culture. "Cinco de Mayo" will occur on Viernes in 2006. */
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Attention
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ