NeutralResourcesLanguageAttribute Classe

Definição

Informa o gerenciador de recursos da cultura padrão de um aplicativo. Essa 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 simples aplicativo "Olá, Mundo" para ilustrar o uso do atributo NeutralResourcesLanguageAttribute para definir uma cultura padrão ou de fallback. Requer a criação de arquivos de recurso separados para as culturas inglês (en), inglês (Estados Unidos) (en-US) e francês (França) (fr-FR). Veja a seguir 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 Recurso (Resgen.exe) para converter o arquivo de seu formato de texto (.txt) em um formato binário (.resources) da seguinte maneira:

resgen ExampleResources.txt

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

O seguinte 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 Gerador de Arquivos de Recurso (ResGen.exe) na linha de comando da seguinte maneira:

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

Em seguida, o arquivo de recurso binário deve 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

Veja a seguir 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

Comentários

Em aplicativos da área de trabalho, o NeutralResourcesLanguageAttribute atributo informa ao gerenciador de recursos a cultura padrão de um aplicativo e a localização de seus recursos. Por padrão, os recursos são inseridos no assembly principal do aplicativo 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 é feito mais comumente para indicar que os recursos residem em um conjunto satélite. Por exemplo, a instrução a seguir especifica que Inglês (Estados Unidos) é a cultura padrão ou neutra do aplicativo e que seus recursos residem em um assembly secundário. O ResourceManager objeto os procurará em um subdiretório chamado en-US.

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

Dica

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 forem inseridos no assembly principal do aplicativo e ResourceManager tiverem que recuperar recursos que pertencem à mesma cultura que a cultura padrão, ele ResourceManager usará automaticamente os recursos localizados no assembly principal em vez de procurar um assembly satélite. Isso contorna a verificação de assembly usual, melhora o desempenho da pesquisa do primeiro recurso carregado e pode reduzir a memória de trabalho. Consulte Empacotamento e Implantação de Recursos para o processo ResourceManager usado para procurar por arquivos de recursos.

  • Se os recursos da cultura padrão estiverem localizados em um assembly satélite em vez do assembly do aplicativo principal, o atributo NeutralResourcesLanguageAttribute especifica a cultura e o diretório do qual o runtime pode carregar os recursos.

Construtores

Nome Description
NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation)

Inicializa uma nova instância da NeutralResourcesLanguageAttribute classe com o local de fallback de recurso final especificado.

NeutralResourcesLanguageAttribute(String)

Inicializa uma nova instância da classe NeutralResourcesLanguageAttribute.

Propriedades

Nome Description
CultureName

Obtém o nome da cultura.

Location

Obtém o local para a ResourceManager classe usar para recuperar recursos neutros usando o processo de fallback de recurso.

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para esse Attribute.

(Herdado de Attribute)

Métodos

Nome Description
Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash dessa instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

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

Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo de uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

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

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

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

(Herdado de Attribute)

Aplica-se a

Confira também