Share via


Métodos System.Resources.ResourceManager.GetString

Este artigo fornece observações complementares à documentação de referência para essa API.

A IgnoreCase propriedade determina se a comparação com os nomes dos recursos não diferencia maiúsculas de minúsculas (o padrão) ou diferencia maiúsculas de name minúsculas.

Observação

Os GetString métodos podem lançar mais exceções do que as listadas. Uma razão pela qual isso pode ocorrer é se um método que esse método chama lança uma exceção. Por exemplo, uma exceção pode ser lançada se um erro foi feito ao implantar ou instalar um assembly satélite, ou uma exceção pode ser lançada se um tipo definido pelo usuário lançar uma FileLoadExceptionSerializationException exceção definida pelo usuário quando o tipo for desserializado.

Método GetString(String)

Aplicativos da área de trabalho

Em aplicativos de área de trabalho, o recurso retornado é localizado para a cultura de interface do usuário do thread atual, conforme definido pela CultureInfo.CurrentUICulture propriedade. Se o recurso não tiver sido localizado para essa cultura, o gerenciador de recursos examinará um recurso seguindo as etapas descritas na seção "Processo de fallback de recursos" do artigo Empacotando e implantando recursos . Se nenhum conjunto utilizável de recursos localizados for encontrado, o gerenciador de recursos recorrerá aos recursos da cultura padrão. Se o gerenciador de recursos não puder carregar o conjunto de recursos da cultura padrão, o método lançará uma exceção ou, se for esperado que o conjunto de recursos resida em um assembly satélite, uma MissingManifestResourceExceptionMissingSatelliteAssemblyException exceção. Se o gerenciador de recursos puder carregar um conjunto de recursos apropriado, mas não conseguir localizar um recurso chamado name, o método retornará null.

Aplicativos do Windows 8.x

Importante

Embora a classe tenha suporte em aplicativos do ResourceManager Windows 8.x, não recomendamos seu uso. Use essa classe somente quando você desenvolver projetos de biblioteca de classes portátil que podem ser usados com aplicativos do Windows 8.x. Para recuperar recursos de aplicativos do Windows 8.x, use a classe Windows.ApplicationModel.Resources.ResourceLoader .

Em aplicativos do Windows 8.x, o método retorna o GetString(String) valor do recurso de cadeia de caracteres, localizado para as configurações atuais de cultura de interface do usuário do name chamador. A lista de culturas é derivada da lista de idiomas de interface do usuário preferidos do sistema operacional. Se o gerenciador de recursos não puder corresponder namea , o método retornará null.

Exemplo

O exemplo a seguir usa o GetString método para recuperar recursos específicos da cultura. Consiste em recursos compilados a partir de arquivos .txt para as culturas inglesa (en), francesa (França) (fr-FR) e russa (Rússia) (ru-RU). O exemplo altera a cultura atual e a cultura atual da interface do usuário para inglês (Estados Unidos), francês (França), russo (Rússia) e sueco (Suécia). Em seguida, ele chama o método para recuperar a cadeia de caracteres localizada, que exibe junto com o dia e o GetString mês atuais. Observe que a saída exibe a cadeia de caracteres localizada apropriada, exceto quando a cultura atual da interface do usuário é sueca (Suécia). Como os recursos do idioma sueco não estão disponíveis, o aplicativo usa os recursos da cultura padrão, que é o inglês. O exemplo requer os arquivos de recursos baseados em texto listados na tabela a seguir. Cada um tem um único recurso de cadeia de caracteres chamado DateStart.

Cultura Nome do arquivo Nome do recurso Valor do recurso
en-US DateStrings.txt DateStart Hoje é
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

Você pode usar o arquivo em lotes a seguir para compilar o exemplo C#. Para o Visual Basic, altere csc para vbc e altere a extensão do arquivo de código-fonte de .cs para .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

Aqui está o código-fonte para o exemplo (ShowDate.vb para a versão do Visual Basic ou ShowDate.cs para a versão 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étodo GetString(String, CultureInfo)

Aplicativos da área de trabalho

Em aplicativos de área de trabalho, if culture is , o GetString(String, CultureInfo) método usa a cultura de interface do usuário atual obtida da CultureInfo.CurrentUICulturenullpropriedade.

O recurso retornado é localizado para a cultura especificada pelo culture parâmetro. Se o recurso não tiver sido localizado para culture, o gerenciador de recursos investigará um recurso seguindo as etapas descritas na seção "Processo de fallback de recursos" do tópico Empacotando e implantando recursos . Se nenhum conjunto utilizável de recursos for encontrado, o gerenciador de recursos recorrerá aos recursos da cultura padrão. Se o gerenciador de recursos não puder carregar o conjunto de recursos da cultura padrão, o método lançará uma exceção ou, se for esperado que o conjunto de recursos resida em um assembly satélite, uma MissingManifestResourceExceptionMissingSatelliteAssemblyException exceção. Se o gerenciador de recursos puder carregar um conjunto de recursos apropriado, mas não conseguir localizar um recurso chamado name, o método retornará null.

Aplicativos do Windows 8.x

Importante

Embora a classe tenha suporte em aplicativos do ResourceManager Windows 8.x, não recomendamos seu uso. Use essa classe somente quando você desenvolver projetos de biblioteca de classes portátil que podem ser usados com aplicativos do Windows 8.x. Para recuperar recursos de aplicativos do Windows 8.x, use a classe Windows.ApplicationModel.Resources.ResourceLoader .

Em aplicativos do Windows 8.x, o GetString(String, CultureInfo) método retorna o name valor do recurso de cadeia de caracteres, localizado para a cultura especificada pelo culture parâmetro. Se o recurso não estiver localizado para a cultura, a pesquisa usará toda a lista de fallback de idioma do Windows 8 e será interrompida depois de examinar a culture cultura padrão. Se o gerenciador de recursos não puder corresponder namea , o método retornará null.

Exemplo

O exemplo a seguir usa o GetString(String, CultureInfo) método para recuperar recursos específicos da cultura. A cultura padrão do exemplo é o inglês (en) e inclui assemblies satélites para as culturas francesa (França) (fr-FR) e russa (Rússia) (ru-RU). O exemplo altera a cultura atual e a cultura atual da interface do usuário para russo (Rússia) antes de chamar GetString(String, CultureInfo). Em seguida, chama o método e o GetStringDateTime.ToString(String, IFormatProvider) método e passa CultureInfo objetos que representam as culturas francesa (França) e sueca (Suécia) para cada método. Na saída, o mês e o dia do mês, bem como a cadeia de caracteres que os precede, aparecem em francês, porque o método é capaz de recuperar o GetString recurso de idioma francês. No entanto, quando a cultura sueca (Suécia) é usada, o mês e o dia do mês aparecem em sueco, embora a cadeia que os precede esteja em inglês. Isso ocorre porque o gerenciador de recursos não pode encontrar recursos localizados no idioma sueco, portanto, ele retorna um recurso para a cultura inglesa padrão.

O exemplo requer os arquivos de recursos baseados em texto listados na tabela a seguir. Cada um tem um único recurso de cadeia de caracteres chamado DateStart.

Cultura Nome do arquivo Nome do recurso Valor do recurso
en-US DateStrings.txt DateStart Hoje é
fr-FR DateStrings.fr-FR.txt DateStart Aujourd'hui, c'est le
ru-RU DateStrings.ru-RU.txt DateStart Сегодня

Você pode usar o seguinte arquivo em lotes para compilar o exemplo do Visual Basic. Para compilar em C#, altere para e altere vbc a extensão do arquivo de código-fonte de .vb para csc.cs.

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

Aqui está o código-fonte para o exemplo (ShowDate.vb para a versão do Visual Basic ou ShowDate.cs para a versão 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.