NeutralResourcesLanguageAttribute Classe

Definição

Informa o gestor de recursos sobre a cultura padrão de uma aplicação. Esta classe não pode ser herdada.

public ref class NeutralResourcesLanguageAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
public sealed class NeutralResourcesLanguageAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class NeutralResourcesLanguageAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
type NeutralResourcesLanguageAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NeutralResourcesLanguageAttribute = class
    inherit Attribute
Public NotInheritable Class NeutralResourcesLanguageAttribute
Inherits Attribute
Herança
NeutralResourcesLanguageAttribute
Atributos

Exemplos

O exemplo a seguir usa um aplicativo "Hello World" simples para ilustrar o uso do atributo NeutralResourcesLanguageAttribute para definir uma cultura padrão ou de fallback. Requer a criação de arquivos de recursos separados para as culturas inglesa (en), inglesa (Estados Unidos) (en-US) e francesa (França) (fr-FR). A seguir mostra o conteúdo de um arquivo de texto chamado ExampleResources.txt para a cultura inglesa.

# Resources for the default (en) culture.
Greeting=Hello

Para usar o arquivo de recurso em um aplicativo, você deve usar o Gerador de Arquivos de Recursos (Resgen.exe) para converter o arquivo de seu formato de texto (.txt) para um formato binário (.resources) da seguinte maneira:

resgen ExampleResources.txt

Quando o aplicativo é compilado, o arquivo de recurso binário será incorporado no assembly principal do aplicativo.

A seguir mostra o conteúdo de um arquivo de texto chamado ExampleResources.en-US.txt que fornece recursos para a cultura inglesa (Estados Unidos).

# Resources for the en-US culture.
Greeting=Hi

O arquivo de texto pode ser convertido em um arquivo de recursos binários usando o Resource File Generator (ResGen.exe) na linha de comando da seguinte maneira:

resgen ExampleResources.en-US.txt ExampleResources.en-US.resources

O arquivo de recurso binário deve então ser compilado em um assembly usando o Assembly Linker (Al.exe) e colocado no subdiretório en-US do diretório do aplicativo emitindo o seguinte comando:

al /t:lib /embed:ExampleResources.en-US.resources /culture:en-US /out:en-us\Example.resources.dll

A seguir mostra o conteúdo de um arquivo de texto chamado ExampleResources.fr-FR.txt que fornece recursos para a cultura francesa (França).

# Resources for the fr-FR culture.
Greeting=Bonjour

O arquivo de texto pode ser convertido em um arquivo de recurso binário usando ResGen.exe na linha de comando da seguinte maneira:

resgen ExampleResources.fr-FR.txt ExampleResources.fr-FR.resources

O arquivo de recursos binários deve então ser compilado em um assembly usando o Assembly Linker e colocado no subdiretório fr-FR do diretório do aplicativo emitindo o seguinte comando:

al /t:lib /embed:ExampleResources.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll

O exemplo a seguir fornece o código executável que define a cultura atual, solicita o nome do usuário e exibe uma cadeia de caracteres localizada.

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

[assembly: NeutralResourcesLanguageAttribute("en")]
public class Example
{
    public static void Main()
    {
        // Select the current culture randomly to test resource fallback.
        string[] cultures = { "de-DE", "en-us", "fr-FR" };
        Random rnd = new Random();
        int index = rnd.Next(0, cultures.Length);
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures[index]);
        Console.WriteLine($"The current culture is {CultureInfo.CurrentUICulture.Name}");

        // Retrieve the resource.
        ResourceManager rm = new ResourceManager("ExampleResources",
                                                 typeof(Example).Assembly);
        string greeting = rm.GetString("Greeting");

        Console.Write("Enter your name: ");
        string name = Console.ReadLine();
        Console.WriteLine($"{greeting} {name}!");
    }
}
Imports System.Globalization
Imports System.Resources
Imports System.Threading 

<Assembly:NeutralResourcesLanguageAttribute("en")>

Module Example
   Public Sub Main()
      ' Select the current culture randomly to test resource fallback.
      Dim cultures() As String = { "de-DE", "en-us", "fr-FR" }
      Dim rnd As New Random()
      Dim index As Integer = rnd.Next(0, cultures.Length)
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures(index))      
      Console.WriteLine("The current culture is {0}", 
                        CultureInfo.CurrentUICulture.Name)       

      ' Retrieve the resource.
      Dim rm As New ResourceManager("ExampleResources" , GetType(Example).Assembly)
      Dim greeting As String = rm.GetString("Greeting")
      
      Console.Write("Enter your name: ")
      Dim name As String = Console.ReadLine()
      Console.WriteLine("{0} {1}", greeting, name)
   End Sub
End Module

Ele pode ser compilado usando o seguinte comando no Visual Basic:

vbc Example.vb /resource:ExampleResources.resources

ou usando o seguinte comando em C#:

csc Example.cs /resource:ExampleResources.resources

Observações

Em aplicativos da área de trabalho, o NeutralResourcesLanguageAttribute atributo informa o gerenciador de recursos sobre a cultura padrão de um aplicativo e o local de seus recursos. Por padrão, os recursos são incorporados no assembly do aplicativo principal e você pode usar o atributo da seguinte maneira. Esta instrução especifica que o inglês (Estados Unidos) é a cultura padrão do aplicativo.

[assembly: NeutralResourcesLanguage("en-US")]
<Assembly:NeutralResourcesLanguage("en-US")>

Você também pode usar o NeutralResourcesLanguageAttribute atributo para indicar onde ResourceManager pode encontrar os recursos da cultura padrão fornecendo um UltimateResourceFallbackLocation valor de enumeração na instrução de atributo. Isso é mais comumente feito para indicar que os recursos residem em um conjunto de satélites. Por exemplo, a instrução a seguir especifica que o inglês (Estados Unidos) é a cultura padrão ou neutra do aplicativo e que seus recursos residem em um assembly satélite. O ResourceManager objeto irá procurá-los em um subdiretório chamado en-US.

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
<Assembly:NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>

Sugestão

Recomendamos que você sempre use o NeutralResourcesLanguageAttribute atributo para definir a cultura padrão do seu aplicativo.

O atributo executa duas funções:

  • Se os recursos da cultura padrão estiverem incorporados no assembly principal do aplicativo e ResourceManager tiverem que recuperar recursos que pertencem à mesma cultura da cultura padrão, o ResourceManager usará automaticamente os recursos localizados no assembly principal em vez de procurar um assembly satélite. Isso ignora a sonda de montagem usual, melhora o desempenho de pesquisa para o primeiro recurso que você carrega e pode reduzir seu conjunto de trabalho. Consulte Empacotamento e implantação de recursos para o processo que ResourceManager usa para sondar arquivos de recursos.

  • Se os recursos da cultura padrão são localizados num conjunto satélite em vez de no conjunto do aplicativo principal, NeutralResourcesLanguageAttribute especifica a cultura e o diretório a partir de onde o tempo de execução pode carregar os recursos.

Construtores

Name Descrição
NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation)

Inicializa uma nova instância da NeutralResourcesLanguageAttribute classe com a localização de recurso final especificada.

NeutralResourcesLanguageAttribute(String)

Inicializa uma nova instância da NeutralResourcesLanguageAttribute classe.

Propriedades

Name Descrição
CultureName

Recebe o nome da cultura.

Location

Obtém a localização para a ResourceManager classe usar para recuperar recursos neutros usando o processo de reserva de recursos.

TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Descrição
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Descrição
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Ver também