Partager via


Méthodes System.Resources.ResourceManager.GetString

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

La IgnoreCase propriété détermine si la comparaison des name noms de ressources ne respecte pas la casse (valeur par défaut) ou respectant la casse.

Remarque

Les GetString méthodes peuvent lever plus d’exceptions que celles répertoriées. Une raison pour laquelle cela peut se produire est si une méthode que cette méthode appelle lève une exception. Par exemple, une FileLoadException exception peut être levée si une erreur a été effectuée lors du déploiement ou de l’installation d’un assembly satellite, ou une SerializationException exception peut être levée si un type défini par l’utilisateur lève une exception définie par l’utilisateur lorsque le type est désérialisé.

Méthode GetString(String)

Applications de bureau

Dans les applications de bureau, la ressource retournée est localisée pour la culture de l’interface utilisateur du thread actuel, telle que définie par la CultureInfo.CurrentUICulture propriété. Si la ressource n’a pas été localisée pour cette culture, le gestionnaire de ressources sonde une ressource en suivant les étapes décrites dans la section « Processus de secours des ressources » de l’article Empaquetage et déploiement de ressources . Si aucun ensemble utilisable de ressources localisées n’est trouvé, le gestionnaire de ressources revient sur les ressources de la culture par défaut. Si le gestionnaire de ressources ne peut pas charger le jeu de ressources de la culture par défaut, la méthode lève une MissingManifestResourceException exception ou, si le jeu de ressources est censé résider dans un assembly satellite, une MissingSatelliteAssemblyException exception. Si le gestionnaire de ressources peut charger un jeu de ressources approprié, mais qu’il ne trouve pas de ressource nommée name, la méthode retourne null.

Applications Windows 8.x

Important

Bien que la ResourceManager classe soit prise en charge dans les applications Windows 8.x, nous ne recommandons pas son utilisation. Utilisez cette classe uniquement lorsque vous développez des projets de bibliothèque de classes portables qui peuvent être utilisés avec des applications Windows 8.x. Pour récupérer des ressources à partir d’applications Windows 8.x, utilisez plutôt la classe Windows.ApplicationModel.Resources.ResourceLoader .

Dans les applications Windows 8.x, la GetString(String) méthode retourne la valeur de la name ressource de chaîne, localisée pour les paramètres actuels de culture de l’interface utilisateur de l’appelant. La liste des cultures est dérivée de la liste de langues d’interface utilisateur préférée du système d’exploitation. Si le gestionnaire de ressources ne peut pas correspondre name, la méthode retourne null.

Exemple

L’exemple suivant utilise la méthode pour récupérer des ressources spécifiques à la GetString culture. Il se compose de ressources compilées à partir de .txt fichiers pour les cultures anglaises (en), Français (France) (fr-FR) et russe (Russie) (ru-RU). L’exemple modifie la culture actuelle et la culture actuelle de l’interface utilisateur en anglais (États-Unis), Français (France), Russe (Russie) et Suédois (Suède). Il appelle ensuite la GetString méthode pour récupérer la chaîne localisée, qu’elle affiche avec le jour et le mois actuels. Notez que la sortie affiche la chaîne localisée appropriée, sauf lorsque la culture actuelle de l’interface utilisateur est suédoise (Suède). Étant donné que les ressources de langue suédoise ne sont pas disponibles, l’application utilise plutôt les ressources de la culture par défaut, qui est l’anglais. L’exemple nécessite les fichiers de ressources textuels répertoriés dans le tableau suivant. Chacun a une ressource de chaîne unique nommée DateStart.

culture Nom de fichier Nom de la ressource Valeur de la ressource
fr-FR DateStrings.txt DateStart Aujourd’hui est
fr-FR DateStrings.fr-FR.txt DateStart Aujourd’hui, c’est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

Vous pouvez utiliser le fichier batch suivant pour compiler l’exemple C#. Pour Visual Basic, remplacez csc par vbc, et modifiez l’extension du fichier de code source .cs en .vb.

resgen DateStrings.txt
csc showdate.cs /resource:DateStrings.resources

md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources

md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources

Voici le code source de l’exemple (ShowDate.vb pour la version visual Basic ou ShowDate.cs pour la version C#).

using System;
using System.Globalization;
using System.Resources;
using System.Threading;

public class Example
{
   public static void Main()
   {
      string[] cultureNames = [ "en-US", "fr-FR", "ru-RU", "sv-SE" ];
      ResourceManager rm = new ResourceManager("DateStrings",
                                               typeof(Example).Assembly);

      foreach (var cultureName in cultureNames) {
         CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
         Thread.CurrentThread.CurrentCulture = culture;
         Thread.CurrentThread.CurrentUICulture = culture;

         Console.WriteLine("Current UI Culture: {0}",
                           CultureInfo.CurrentUICulture.Name);
         string dateString = rm.GetString("DateStart");
         Console.WriteLine("{0} {1:M}.\n", dateString, DateTime.Now);
      }
   }
}
// The example displays output similar to the following:
//       Current UI Culture: en-US
//       Today is February 03.
//
//       Current UI Culture: fr-FR
//       Aujourd'hui, c'est le 3 février
//
//       Current UI Culture: ru-RU
//       Сегодня февраля 03.
//
//       Current UI Culture: sv-SE
//       Today is den 3 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguage("en")>

Module Example
   Public Sub Main()
      Dim cultureNames() As String = { "en-US", "fr-FR", "ru-RU", "sv-SE" }
      Dim rm As New ResourceManager("DateStrings",
                                    GetType(Example).Assembly)
      
      For Each cultureName In cultureNames
         Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
         Thread.CurrentThread.CurrentCulture = culture 
         Thread.CurrentThread.CurrentUICulture = culture

         Console.WriteLine("Current UI Culture: {0}", 
                           CultureInfo.CurrentUICulture.Name)
         Dim dateString As String = rm.GetString("DateStart")
         Console.WriteLine("{0} {1:M}.", dateString, Date.Now)                           
         Console.WriteLine()
      Next                                           
   End Sub
End Module
' The example displays output similar to the following:
'       Current UI Culture: en-US
'       Today is February 03.
'       
'       Current UI Culture: fr-FR
'       Aujourd'hui, c'est le 3 février
'       
'       Current UI Culture: ru-RU
'       Сегодня февраля 03.
'       
'       Current UI Culture: sv-SE
'       Today is den 3 februari.

Méthode GetString(String, CultureInfo)

Applications de bureau

Dans les applications de bureau, si culture c’est nullle cas, la GetString(String, CultureInfo) méthode utilise la culture actuelle de l’interface utilisateur obtenue à partir de la CultureInfo.CurrentUICulture propriété.

La ressource retournée est localisée pour la culture spécifiée par le culture paramètre. Si la ressource n’a pas été localisée pour culture, les sondes Resource Manager pour une ressource en suivant les étapes décrites dans la section « Processus de secours des ressources » de la rubrique Empaquetage et déploiement de ressources . Si aucun ensemble de ressources utilisable n’est trouvé, le gestionnaire de ressources revient sur les ressources de la culture par défaut. Si le gestionnaire de ressources ne peut pas charger le jeu de ressources de la culture par défaut, la méthode lève une MissingManifestResourceException exception ou, si le jeu de ressources est censé résider dans un assembly satellite, une MissingSatelliteAssemblyException exception. Si le gestionnaire de ressources peut charger un jeu de ressources approprié, mais qu’il ne trouve pas de ressource nommée name, la méthode retourne null.

Applications Windows 8.x

Important

Bien que la ResourceManager classe soit prise en charge dans les applications Windows 8.x, nous ne recommandons pas son utilisation. Utilisez cette classe uniquement lorsque vous développez des projets de bibliothèque de classes portables qui peuvent être utilisés avec des applications Windows 8.x. Pour récupérer des ressources à partir d’applications Windows 8.x, utilisez plutôt la classe Windows.ApplicationModel.Resources.ResourceLoader .

Dans les applications Windows 8.x, la GetString(String, CultureInfo) méthode retourne la valeur de la name ressource de chaîne, localisée pour la culture spécifiée par le culture paramètre. Si la ressource n’est pas localisée pour la culture culture, la recherche utilise l’intégralité de la liste de secours de langue Windows 8 et s’arrête après avoir regardé la culture par défaut. Si le gestionnaire de ressources ne peut pas correspondre name, la méthode retourne null.

Exemple

L’exemple suivant utilise la méthode pour récupérer des ressources spécifiques à la GetString(String, CultureInfo) culture. La culture par défaut de l’exemple est l’anglais (en) et inclut des assemblys satellites pour les cultures Français (France) (fr-FR) et russe (Russie) (ru-RU). L’exemple modifie la culture actuelle et la culture actuelle de l’interface utilisateur en Russe (Russie) avant d’appeler GetString(String, CultureInfo). Il appelle ensuite la méthode et la GetStringDateTime.ToString(String, IFormatProvider) méthode et transmet des CultureInfo objets qui représentent les cultures Français (France) et suédoise (Suède) à chaque méthode. Dans la sortie, le mois et le jour du mois ainsi que la chaîne qui les précède apparaissent dans Français, car la GetString méthode peut récupérer la ressource de langue Français. Toutefois, lorsque la culture suédoise (Suède) est utilisée, le mois et le jour du mois apparaissent en suédois, bien que la chaîne qui les précède soit en anglais. Cela est dû au fait que le gestionnaire de ressources ne trouve pas les ressources de langue suédoise localisées. Il retourne donc une ressource pour la culture anglaise par défaut.

L’exemple nécessite les fichiers de ressources textuels répertoriés dans le tableau suivant. Chacun a une ressource de chaîne unique nommée DateStart.

culture Nom de fichier Nom de la ressource Valeur de la ressource
fr-FR DateStrings.txt DateStart Aujourd’hui est
fr-FR DateStrings.fr-FR.txt DateStart Aujourd’hui, c’est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

Vous pouvez utiliser le fichier batch suivant pour compiler l’exemple Visual Basic. Pour compiler en C#, passez vbc à cscl’extension du fichier de code source à .cspartir de .vb .

resgen DateStrings.txt
vbc showdate.vb /resource:DateStrings.resources

md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources

md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources

Voici le code source de l’exemple (ShowDate.vb pour la version visual Basic ou ShowDate.cs pour la version C#).

using System;
using System.Globalization;
using System.Resources;
using System.Threading;

public class Example2
{
    public static void Main()
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");

        string[] cultureNames = [ "fr-FR", "sv-SE" ];
        ResourceManager rm = new ResourceManager("DateStrings",
                                                 typeof(Example).Assembly);

        foreach (var cultureName in cultureNames)
        {
            CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
            string dateString = rm.GetString("DateStart", culture);
            Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
                                               DateTime.Now.ToString("M", culture));
            Console.WriteLine();
        }
    }
}
// The example displays output similar to the following:
//       French (France): Aujourd'hui, c'est le 7 février.
//
//       Swedish (Sweden): Today is den 7 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading

Module Example2
    Public Sub Main()
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU")
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")

        Dim cultureNames() As String = {"fr-FR", "sv-SE"}
        Dim rm As New ResourceManager("DateStrings",
                                    GetType(Example).Assembly)

        For Each cultureName In cultureNames
            Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
            Dim dateString As String = rm.GetString("DateStart", culture)
            Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
                                            Date.Now.ToString("M", culture))
            Console.WriteLine()
        Next
    End Sub
End Module
' The example displays output similar to the following:
'       French (France): Aujourd'hui, c'est le 7 février.
'       
'       Swedish (Sweden): Today is den 7 februari.