Recursos em aplicativos ASP.NET

Após ter criado os assemblies de satélite para um aplicativo ASP.NET, você deve colocá-los em locais específicos onde o common linguagem tempo de execução é capaz de localizar e usá-los.A estrutura de diretórios para assemblies de satélite em aplicativos ASP.NET e controles ASP.NET difere a estrutura de diretórios para assemblies de satélite em um aplicativo baseado no Windows.Aplicativos ASP.NET podem conter os assemblies.No entanto, como páginas ASP.NET são convertidas dinamicamente em módulos (assemblies), o nome do assembly não é conhecido antecipadamente e configuração do asssembly satélite padrão não se aplica.Esta seção descreve como usar recursos em páginas ASP.NET e controles ASP.NET.

Observação:

Os procedimentos para criar e compilar os recursos para usar em um aplicativo ASP.NET replicação não diferir os procedimentos para criar recursos para um aplicativo baseado no Windows.Para obter detalhes sobre esse processo, consulte Criando arquivos de recursos, Empacotamento e implantação de recursos, and Criando assemblies satélites.

Recursos em páginas ASP.NET

Para usar recursos em páginas ASP.NET, crie primeiro um assembly principal paralelo para armazenar recursos de seu aplicativo.Este assembly conterá o padrão ou recursos neutros para o aplicativo.Em seguida, criar um asssembly satélite contendo recursos localizados para cada cultura com suporte para seu aplicativo.Instale o assembly no diretório de bin do aplicativo principal e os assemblies satélite nos subdiretórios esperados.

Observação:

Ao implantar recursos aplicativos ASP.NET usando esse modelo, todos os assemblies são copiado de sombra no cache global de assemblies, eliminar possíveis problemas de bloqueio.

O exemplo a seguir, usado em uma página ASP.NET, cria um ResourceManager para recuperar os recursos apropriados.

<%
    Dim a As Assembly = Assembly.Load("myApp")
    Dim rm As ResourceManager = New ResourceManager("myApp", a)
    Response.Write(rm.GetString("string"))
    %>
<%
    Assembly a = Assembly.Load("myApp");
    ResourceManager rm = new ResourceManager("myApp", a);
    Response.Write(rm.GetString("string"));
    %>

Você pode especificar explicitamente a cultura a ser usada para recuperar os recursos em uma página .aspx, seguindo as linhas de código no exemplo anterior com o código que cria um CultureInfo objeto a partir de uma cultura que você especificar e usa o valor de CultureInfo a inicializarPropriedade CurrentUICulture.O exemplo a seguir força a recuperação de recursos alemão sempre porque ela define o CurrentUICulture propriedade para a cultura pai alemão "de".

Thread.CurrentThread.CurrentUICulture = new CultureInfo("de")
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");

Observe que, embora você possa especificar uma cultura neutra como "de" para criar umCultureInfo objeto que pode ser usado para inicializar o CurrentUICulture propriedade, você deve especificar uma cultura específica para inicializar o Propriedade CurrentCulture.The CurrentCulture propriedade espera uma cultura específica, ou seja, um associado a um linguagem e uma região, sistema autônomo ("de-AT") para alemão na Áustria.A cultura neutra "de" não funcionará porque ele está associado apenas um linguagem.Para criar um CultureInfo objeto no formato que o CurrentCulture propriedade espera, use o Método CultureInfo.CreateSpecificCulture.Esse método cria um CultureInfo objeto que representa a cultura específica associada a uma cultura neutra especificada.O exemplo a seguir utiliza o CultureInfo.CreateSpecificCulture método para criar um CultureInfo objeto que representa a cultura específica associada a cultura neutra "de" e o usa para inicializar o valor da CurrentCulturepropriedade .

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de");

É recomendável conjunto explicitamente os valores para o CurrentUICulture and CurrentCulture propriedades na sua página .aspx.O exemplo a seguir define CurrentCulture para "de" e, em seguida, usa o valor de CurrentCulture a inicializarCurrentUICulture propriedade .

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de")

Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de");

Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

The CultureInfo.CreateSpecificCulture método também permite que você use o linguagem corrente do navegador da Web para inicializar o CurrentCulture propriedade em uma página .aspx.No exemplo a seguir, a Propriedade solicitação.UserLanguages retorna o linguagem corrente do navegador da Web sistema autônomo uma seqüência de caracteres.The CultureInfo.CreateSpecificCulture método analisa essa seqüência de caracteres e retorna um CultureInfo objeto no formato que pode ser usado para inicializar o valor do CurrentCulturepropriedade .

' Set the CurrentCulture property to the culture associated with the Web
' browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0])

' It is good practice to explicitly set the CurrentUICulture property.
' Initialize the CurrentUICulture property
' with the CurrentCulture property.
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
// Set the CurrentCulture property to the culture associated with the Web
// browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);

// It is good practice to explicitly set the CurrentUICulture property.
// Initialize the CurrentUICulture property
// with the CurrentCulture property.
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

Para obter mais exemplos de como trabalhar com recursos em aplicativos ASP.NET, consulte o Como: Recuperar valores de recurso por programação tutorial e as amostras Localizing aplicativos do ASP.NET e trabalhando com arquivos de recursos a ASP.NET QuickStart.

Recursos em ASP.NET Controls

Se seu aplicativo ASP.NET é desenvolvido usando controles ASP.NET, você pode usar a mesma estrutura de diretório, conforme descrito acima.Quando você cria controles, você pode escrever código que usa recursos para exibir diferentes conjuntos de informações ao usuário.Como os controles são compilados, eles têm um assembly.Isso permite que você incorporar um conjunto de recursos padrão desse assembly.Você pode criar assemblies de satélite para os recursos para ser usado pelo controle e colocá-las na estrutura do diretório esperada para assemblies satélites.Para obter detalhes, consulte Criando assemblies satélites.Coloque o controle e recursos do controle no diretório bin da raiz do aplicativo.A ilustração a seguir fornece um exemplo da estrutura de diretório correto.

Controla o aplicativo ASP.NET com o ASP.NET diretório

Você pode colocar várias instâncias de myControl, chamada na ilustração, na myPage.aspx. Você pode conjunto cada versão para fazer referência a uma entrada do arquivo de recurso diferente.O exemplo de código a seguir ASP.NET demonstra isso.

<Loc:myControl  Text="entry1" />
<Loc:myControl  Text="entry2" />

Neste exemplo, a ResourceManager usa o Propriedade CultureInfo.CurrentUICulture para determinar quais recursos para recuperar.

O exemplo a seguir é um Botão controle.The Textovariável refere-se ao valor da propriedade que está sendo recuperado e, em seguida, conjunto no controle dentro da página aspx.Esse valor é usado para determinar o nome da entrada para recuperar.Neste exemplo, é a mesma propriedade usada para exibir o resultado para o usuário.

Public Class myControl
Inherits Button

    Protected Overrides Sub Render(HtmlTextWriter writer)
        ' rm refers to the ResourceManager.
        Text = rm.GetString(Text)
        MyBase.Render(writer)
    End Sub
End Class
public class mycontrol : Button 
{
    protected override void Render(HtmlTextWriter writer) 
    {
        // rm refers to the ResourceManager.
        Text = rm.GetString(Text);      
        base.Render(writer);
    }
}

Consulte também

Conceitos

Recursos em aplicativos

Criando arquivos recurso

Empacotamento e implantação de recursos

Criando assemblies satélites

Referência

System.Globalization.CultureInfo

Outros recursos

Criando sites da Web ASP.NET