Localizar aplicativos ClickOnce

Localização é o processo de tornar seu aplicativo apropriado para uma cultura específica. Esse processo envolve a tradução de texto da interface do usuário (UI) para um idioma específico da região, usando a formatação correta de data e moeda, ajustando o tamanho dos controles em um formulário e espelhando controles da direita para a esquerda, se necessário.

A localização da sua aplicação resulta na criação de um ou mais assemblies satélite. Cada assembly contém cadeias de caracteres da interface do usuário, imagens e outros recursos específicos de uma determinada cultura. (O arquivo executável principal do aplicativo contém as cadeias de caracteres para a cultura padrão do seu aplicativo.)

Este tópico descreve três maneiras de implantar um aplicativo ClickOnce para outras culturas:

  • Inclua todos os assemblies satélite em uma única implantação.

  • Gere uma implantação para cada cultura, com um único conjunto de satélite incluído em cada uma.

  • Faça o download de conjuntos de satélite conforme necessário.

Incluindo todos os conjuntos de satélites em uma implantação

Em vez de publicar várias implantações ClickOnce, é possível publicar uma única implantação ClickOnce que inclua todos os assemblies satélite.

Esse método é o padrão no Visual Studio. Para usar esse método no Visual Studio, você não precisa fazer nenhum trabalho adicional.

Para usar esse método com MageUI.exe, você deve definir a cultura do seu aplicativo como neutra em MageUI.exe. Em seguida, você deve incluir manualmente todos os assemblies satélite em sua implantação. No MageUI.exe, você pode adicionar os assemblies de satélite usando o botão Preencher no separador Arquivos do manifesto do aplicativo.

O benefício dessa abordagem é que ela cria uma única implantação e simplifica sua história de implantação localizada. Em tempo de execução, o conjunto satélite apropriado será usado, dependendo da cultura padrão do sistema operacional Windows do usuário. Uma desvantagem dessa abordagem é que ela baixa todos os assemblies satélite sempre que o aplicativo é instalado ou atualizado em um computador cliente. Se seu aplicativo tiver um grande número de cadeias de caracteres ou seus clientes tiverem uma conexão de rede lenta, esse processo poderá afetar o desempenho durante a atualização do aplicativo.

Observação

Essa abordagem pressupõe que seu aplicativo ajuste a altura, a largura e a posição dos controles automaticamente para acomodar diferentes tamanhos de cadeia de caracteres de texto em diferentes culturas. O Windows Forms contém uma variedade de controlos e tecnologias que permitem criar formulários para torná-los facilmente localizáveis, incluindo os FlowLayoutPanel e TableLayoutPanel controlos e a AutoSize propriedade. Consulte também Como: Suporte à localização em formulários do Windows usando AutoSize e o controle TableLayoutPanel.

Gerar uma implantação para cada cultura

Nesta estratégia de implantação, você gera várias implantações. Em cada implantação, você inclui apenas o assembly de satélite necessário para uma cultura específica e marca a implantação como específica para essa cultura.

Para usar esse método no Visual Studio, defina a propriedade Publish Language na guia Publish para a região desejada. O Visual Studio incluirá automaticamente o assembly satélite necessário para a região selecionada e excluirá todos os outros assemblies satélite da implantação.

Observação

No ClickOnce para .NET Core 3.1 e .NET 5 ou posterior, você define propriedades de implantação usando a ferramenta Publicar em vez do assistente de publicação e da página Publicar do Designer de Projeto. Para obter mais informações, consulte Implantar um aplicativo .NET do Windows usando ClickOnce e ClickOnce para .NET.

Você pode realizar a mesma coisa usando a ferramenta MageUI.exe no Microsoft Windows Software Development Kit (SDK). Use o botão Preencher no separador Ficheiros do manifesto da aplicação para excluir todos os outros assemblies satélite do diretório da aplicação e, em seguida, defina o campo Cultura no separador Nome do manifesto de implementação no MageUI.exe. Essas etapas não apenas incluem a assemblagem de satélite correta, mas também definem o atributo language no elemento do seu manifesto de implantação assemblyIdentity para a cultura correspondente.

Depois de publicar o aplicativo, você deve repetir esta etapa para cada cultura adicional suportada pelo aplicativo. Você deve certificar-se de publicar em um diretório de servidor Web diferente ou diretório de compartilhamento de arquivos todas as vezes, porque cada manifesto do aplicativo fará referência a um assembly satélite diferente e cada manifesto de implantação terá um valor diferente para o language atributo.

Faça o download de conjuntos de satélite a pedido

Se você decidir incluir todos os assemblies satélite em uma única implantação, poderá melhorar o desempenho usando o download sob demanda, que permite marcar assemblies como opcionais. Os assemblies marcados não serão baixados quando a aplicação for instalada ou atualizada. Você pode instalar os assemblies quando precisar deles, chamando o DownloadFileGroup método na ApplicationDeployment classe.

Observação

A classe ApplicationDeployment e as APIs no namespace System.Deployment.Application não são suportadas no .NET Core e no .NET 5 e versões posteriores. No .NET 7, um novo método de acessar propriedades de implantação de aplicativo é suportado. Para obter mais informações, consulte Acessar propriedades de implantação do ClickOnce no .NET. O .NET 7 não suporta o equivalente aos métodos ApplicationDeployment.

O download de montagens satélite sob demanda difere ligeiramente do download de outros tipos de montagens sob demanda. Para obter mais informações e exemplos de código sobre como habilitar esse cenário usando as ferramentas do SDK do Windows para ClickOnce, consulte Passo a passo: Baixando assemblies satélite sob demanda com a API de implantação do ClickOnce.

Você também pode habilitar esse cenário no Visual Studio. Para obter mais informações, consulte Passo a passo: Baixando assemblies satélite sob demanda com a API de implantação ClickOnce usando o designer.

Testando aplicativos ClickOnce localizados antes da implantação

Um assembly satélite será usado para um aplicativo Windows Forms somente se a CurrentUICulture propriedade para o thread principal do aplicativo estiver definida para a cultura do assembly satélite. Os clientes em mercados locais provavelmente já estarão executando uma versão localizada do Windows com sua cultura definida para o padrão apropriado.

Você tem três opções para testar implantações localizadas antes de disponibilizar seu aplicativo aos clientes:

  • Você pode executar seu aplicativo ClickOnce nas versões localizadas apropriadas do Windows.

  • Você pode definir a CurrentUICulture propriedade programaticamente em seu aplicativo. (Esta propriedade deve ser definida antes de chamar o Run método.)