Compartilhar via


Torne seu aplicativo localizável

Um aplicativo localizado é aquele que pode ser localizado para outros mercados, idiomas ou regiões sem descobrir nenhum defeito funcional no aplicativo. A propriedade mais essencial de um aplicativo localizável é que seu código executável foi limpo separado de seus recursos localizáveis. Portanto, você deve determinar quais dos recursos do aplicativo precisam ser localizados. Pergunte a si mesmo o que precisa mudar se seu aplicativo deve ser localizado para outros mercados.

Também recomendamos que você se familiarize com as diretrizes de globalização para.

Coloque suas strings em Arquivos de Recursos (.resw)

Não codifique diretamente literais de string no seu código imperativo, nas marcações XAML, nem no manifesto do pacote do aplicativo. Em vez disso, coloque suas cadeias de caracteres em Arquivos de Recursos (.resw) para que elas possam ser adaptadas a diferentes mercados locais independentemente dos binários criados do aplicativo. Para obter detalhes, consulte Localizar cadeias de caracteres na interface do usuário e no manifesto do pacote do aplicativo.

Esse tópico também mostra como adicionar comentários ao arquivo de recursos padrão (.resw). Por exemplo, se você estiver adotando uma voz ou tom informal, certifique-se de explicar isso nos comentários. Além disso, para minimizar as despesas, confirme se apenas as cadeias de caracteres que precisam ser traduzidas são fornecidas aos tradutores.

Defina adequadamente o idioma padrão para seu aplicativo no arquivo de origem do manifesto do pacote (arquivo Package.appxmanifest). O idioma padrão determina o idioma usado quando os idiomas preferenciais do usuário não correspondem a nenhum dos idiomas com suporte do seu aplicativo. Marque todos os seus recursos com o idioma (até mesmo os do idioma padrão, por exemplo \Assets\en-us\Logo.png) para que o sistema possa informar em qual idioma o recurso está e como ele é usado em situações específicas.

Personalizar suas imagens e outros recursos de arquivo para o idioma

Idealmente, você poderá globalizar suas imagens, ou seja, torná-las independentes de cultura. Para quaisquer imagens e outros recursos de arquivo em que isso não seja possível, crie quantas variantes diferentes forem necessárias e coloque os qualificadores de idioma apropriados em seus nomes de arquivo ou pasta. Para saber mais, consulte Adapte seus recursos para linguagem, escala, alto contraste e outros qualificadores.

Para minimizar os custos de localização, não coloque texto nem material culturalmente sensível em imagens para começar. Uma imagem apropriada em sua própria cultura pode ser ofensiva ou mal interpretada em outras culturas. Evite o uso de imagens específicas da cultura, como caixas de correio, que não são comuns em todo o mundo. Evite símbolos religiosos, animais, imagens políticas ou específicas de gênero. A exibição de carne, partes do corpo ou gestos de mão também pode ser um tópico sensível. Se você não conseguir evitar todos esses elementos, suas imagens precisarão ser cuidadosamente localizadas. Se você estiver localizando um idioma com uma direção de leitura diferente da sua, o uso de imagens e efeitos simétricos facilitará o suporte ao espelhamento.

Evite também o uso de texto em imagens e fala em arquivos de áudio/vídeo.

O uso de cor em seu aplicativo

Esteja atento ao usar a cor. O uso de combinações de cores associadas a bandeiras nacionais ou movimentos políticos pode ser problemático. As opções de cores podem precisar ser revisadas por especialistas em cultura. Há também problemas de acessibilidade com o uso da cor. Se você usar a cor para transmitir significado, também deverá transmitir essas mesmas informações por outros meios, como tamanho, forma ou rótulo.

Considere fatorar suas cadeias de caracteres em frases

Use cadeias de caracteres de tamanho apropriado. Cadeias de caracteres curtas são mais fáceis de traduzir e permitem a reciclagem de tradução (o que economiza despesas porque a mesma cadeia de caracteres não é enviada ao localizador mais de uma vez). Além disso, cadeias de caracteres extremamente longas podem não ter suporte por ferramentas de localização.

Mas, em tensão com essa diretriz, há o risco de reutilizar uma cadeia de caracteres em contextos diferentes. Até mesmo palavras simples como "ativado" e "desativado" podem ser traduzidas de forma diferente, dependendo do contexto. No idioma inglês, "ativado" e "desativado" podem ser usados para indicar uma comutação do Modo de Voo, Bluetooth e dispositivos. Mas, em italiano, a tradução depende do contexto do que está sendo ativado e desativado. Você precisaria criar um par de cadeias de caracteres para cada contexto. Você poderá reutilizar cadeias de caracteres se os dois contextos forem os mesmos. Por exemplo, você pode reutilizar a cadeia de caracteres "Volume" para volume de efeito sonoro e volume de música porque ambos se referem à intensidade do som. Você não deve reutilizar essa mesma cadeia de caracteres ao se referir a um volume de disco rígido porque o contexto e o significado são diferentes e a palavra pode ser traduzida de forma diferente.

Além disso, uma cadeia de caracteres como "text" ou "fax" pode ser usada como um verbo e um substantivo no idioma inglês, o que pode confundir o processo de tradução. Em vez disso, crie uma cadeia de caracteres separada para o formato verbo e substantivo. Quando você não tiver certeza se os contextos são iguais, erre no lado seguro e use uma cadeia de caracteres distinta.

Em suma, fatore suas cadeias de caracteres em partes que funcionam em todos os contextos. Haverá casos em que uma cadeia de caracteres precisará ser uma frase inteira.

Considere a seguinte cadeia de caracteres: "{0} não pôde ser sincronizado."

Uma variedade de palavras pode substituir {0}, como "compromisso", "tarefa" ou "documento". Embora este exemplo funcione para o idioma inglês, ele não funcionará em todos os casos para a frase correspondente em, por exemplo, alemão. Observe que, nas seguintes frases em alemão, algumas das palavras na cadeia de caracteres de modelo ("Der", "Die", "Das") precisam corresponder à palavra parametrizada:

Inglês Alemão
Não foi possível sincronizar o compromisso. Der Termin konnte nicht synchronisiert werden.
Não foi possível sincronizar a tarefa. Die Aufgabe konnte nicht synchronisiert werden.
Não foi possível sincronizar o documento. Das Dokument konnte nicht synchronisiert werden.

Como outro exemplo, considere a frase "Lembre-me em {0} minuto(s)". O uso de "minute(s)" funciona para o idioma inglês, mas outros idiomas podem usar termos diferentes. Por exemplo, a língua polonesa usa "minuta", "minuty" ou "minut" dependendo do contexto.

Para resolver esse problema, localize toda a frase, em vez de uma única palavra. Fazer isso pode parecer um trabalho extra e uma solução deselegante, mas é a melhor solução porque:

  • Uma mensagem gramaticalmente correta será exibida para todos os idiomas.
  • O tradutor não precisará perguntar por quais cadeias de caracteres serão substituídas.
  • Você não precisará implementar uma correção de código dispendiosa quando um problema como esse aparecer após a conclusão do aplicativo.

Outras considerações para cadeias de caracteres

Evite coloquialismos e metáforas nas cadeias de caracteres que você cria em seu idioma padrão. A linguagem específica a um grupo demográfico, como cultura e idade, pode ser difícil de entender ou traduzir porque apenas as pessoas nesse grupo demográfico usam essa linguagem. Da mesma forma, metáforas podem fazer sentido para uma pessoa, mas não significam nada para outra pessoa. Por exemplo, um "bluebird" significa algo específico para aqueles que fazem parte da cultura do esqui, mas aqueles que não fazem parte dessa cultura não entendem a referência.

Não use jargões técnicos, abreviações ou acrônimos. A linguagem técnica é menos provável de ser compreendida por públicos não técnicos ou pessoas de outras culturas ou regiões, e é difícil traduzir. As pessoas não usam esse tipo de palavras em conversas cotidianas. A linguagem técnica é frequentemente usada em mensagens de erro para identificar problemas de hardware e software, mas você deve usar cadeias de caracteres técnicas somente quando o usuário precisar desse nível de informação e puder acioná-la ou encontrar alguém que possa ajudar.

Usar uma voz ou tom informal em suas cadeias de caracteres é uma opção válida. Você pode usar comentários no arquivo de recursos padrão (.resw) para indicar essa intenção.

Pseudo-localização

Pseudo-localize seu aplicativo para descobrir quaisquer problemas de localizabilidade. A pseudolocação é uma espécie de teste de execução a seco de localização ou divulgação. Você produz um conjunto de recursos que não são realmente traduzidos; eles só parecem assim. Seus textos têm aproximadamente 40% a mais que no idioma padrão, por exemplo, e eles têm delimitadores visuais para que você possa verificar rapidamente se eles foram truncados na interface.

Considerações sobre implantação

Ao instalar um aplicativo que contém dados de idioma localizados, você pode descobrir que apenas o idioma padrão está disponível para o aplicativo, embora você tenha incluído inicialmente recursos para vários idiomas. Isso ocorre porque o processo de instalação é otimizado para instalar apenas os recursos de idioma que correspondem à linguagem e à cultura atuais do dispositivo. Portanto, se o dispositivo estiver configurado para en-US, somente os recursos de idioma en-US serão instalados com seu aplicativo.

Observação

Não é possível instalar suporte adicional de idioma para seu aplicativo após a instalação inicial. Se você alterar o idioma padrão depois de instalar um aplicativo, o aplicativo continuará a usar apenas os recursos de idioma originais.

Se você quiser garantir que todos os recursos de idioma estejam disponíveis após a instalação, crie um arquivo de configuração para o pacote do aplicativo que especifica que determinados recursos são necessários durante a instalação (incluindo recursos de idioma). Esse recurso de instalação otimizado é habilitado automaticamente quando o .appxbundle do aplicativo é gerado durante o empacotamento. Para obter mais informações, consulte Assegure-se de que os recursos estejam instalados em um dispositivo, independentemente de o dispositivo necessitar deles.

Opcionalmente, para garantir que todos os recursos estejam instalados (não apenas um subconjunto), você pode desabilitar a geração do .appxbundle ao empacotar seu aplicativo. No entanto, isso não é recomendado, pois pode aumentar o tempo de instalação do seu aplicativo.

Desabilite a geração automática do .appxbundle definindo o atributo "Gerar Pacote de Aplicativos" como "nunca":

  1. No Visual Studio, clique com o botão direito do mouse no nome do projeto
  2. Selecione Store ->Criar pacotes de aplicativos...
  3. Na caixa de diálogo Criar Seus Pacotes, selecione Quero criar pacotes para enviar para a Microsoft Store usando um novo nome de aplicativo e então clique em Avançar.
  4. Na caixa de diálogo Selecionar um nome de aplicativo , selecione/crie um nome de aplicativo para o pacote.
  5. Na caixa de diálogo Selecionar e Configurar Pacotes, defina Gerar pacote de aplicativos como Nunca.

Consciência geopolítica

Evite ofensas políticas em mapas ou ao se referir a regiões. Mapas podem incluir fronteiras regionais ou nacionais controversas, e são uma fonte frequente de ofensa política. Tenha cuidado para que qualquer interface do usuário usada para selecionar uma nação se refira a ela como um "país/região". Listar um território disputado em uma lista rotulada como "países", como em um formulário de endereço, pode ofender alguns usuários.

Eventos de alteração de idioma e região

Assine eventos gerados quando as configurações de idioma e região do sistema forem alteradas. Faça isso para que você possa recarregar recursos, se apropriado. Para obter detalhes, consulte Atualizando cadeias de caracteres em resposta a eventos de alteração de valor qualificador e Atualizando imagens em resposta a eventos de alteração de valor qualificador.

Verifique a ordem de parâmetro correta ao formatar cadeias de caracteres

Não suponha que todos os idiomas expressem parâmetros na mesma ordem. Por exemplo, considere esse formato.

    string.Format("Every {0} {1}", monthName, dayNumber); // For example, "Every April 1".

A cadeia de caracteres de formato neste exemplo funciona para inglês (Estados Unidos). Mas não é apropriado para a Alemanha, por exemplo, onde o dia e o mês são exibidos na ordem inversa. Verifique se o tradutor sabe a intenção de cada um dos parâmetros para que eles possam reverter a ordem dos itens de formato na cadeia de caracteres de formato (por exemplo, "{1}{0}") conforme apropriado para o idioma de destino.

Não localize demais

Envie apenas o idioma natural para tradutores; não linguagem de programação nem marcação. Uma etiqueta <link> não é uma linguagem natural. Considere esses exemplos.

Não localize isso Localize isso
<link>termos de uso</link> termos de uso
<link>política de privacidade</link> política de privacidade

Incluir a marca <link> em seu Arquivo de Recursos (.resw) significa que ela também provavelmente será traduzida. Isso tornaria a marca inválida. Se você tiver cadeias de caracteres longas que precisam incluir marcação para manter o contexto e garantir a ordenação, deixe claro nos comentários o que não traduzir.

Escolher uma abordagem de tradução apropriada

Depois que as cadeias de caracteres são separadas em arquivos de recursos, elas podem ser traduzidas. O momento ideal para traduzir cadeias de caracteres é depois que as cadeias de caracteres em seu projeto são finalizadas, o que geralmente acontece no final de um projeto. Você pode abordar o processo de tradução de várias maneiras. Isso pode depender do volume de cadeias de caracteres a serem traduzidas, do número de idiomas a serem traduzidos e de como a tradução será feita (como internamente versus a contratação de um fornecedor externo).

Considere essas opções.

  • Os arquivos de recurso podem ser traduzidos abrindo-os diretamente no projeto. Essa abordagem funciona bem para um projeto que tem um pequeno volume de cadeias de caracteres que precisam ser convertidas em dois ou três idiomas. Ele pode ser adequado para um cenário em que um desenvolvedor fala mais de um idioma e está disposto a lidar com o processo de tradução. Essa abordagem se beneficia de ser rápida, não requer ferramentas e minimiza o risco de erros de transmissão. Mas não é escalonável. Em particular, os recursos em diferentes idiomas podem facilmente sair da sincronização, causando experiências ruins do usuário e dores de cabeça de manutenção.
  • Os arquivos de recurso de cadeia de caracteres estão no formato de texto XML ou ResJSON, portanto, podem ser entregues para tradução usando qualquer editor de texto. Os arquivos traduzidos seriam copiados de volta para o projeto. Essa abordagem traz um risco de tradutores editarem acidentalmente as marcas XML, mas permite que o trabalho de tradução ocorra fora do projeto do Microsoft Visual Studio. Essa abordagem pode funcionar bem para projetos que precisam ser convertidos em um pequeno número de idiomas. O formato XLIFF é um formato XML especificamente projetado para uso na localização e deve ser bem suportado por alguns fornecedores de localização ou ferramentas de localização. Você pode usar o Kit de Ferramentas de Aplicativo Multilíngue para gerar arquivos XLIFF de outros arquivos de recurso, como .resw ou .resjson.

Observação

A localização também pode ser necessária para outros ativos, incluindo imagens e arquivos de áudio.

Você também deve considerar o seguinte:

  • Ferramentas de localização Várias ferramentas de localização estão disponíveis para analisar arquivos de recursos e permitir que apenas as cadeias de caracteres traduzidas sejam editadas por tradutores. Essa abordagem reduz o risco de um tradutor editar acidentalmente as marcas XML. Mas ele tem a desvantagem de introduzir uma nova ferramenta e processo no processo de localização. Uma ferramenta de localização é boa para projetos com um grande volume de cadeias de caracteres, mas um pequeno número de idiomas. Para saber mais, confira Como usar o Kit de Ferramentas de Aplicativo Multilíngue.
  • Prestadores de serviços de localização Considere a utilização de um prestador de serviços de localização se o aplicativo contiver textos longos que precisam ser traduzidos para um grande número de idiomas. Um fornecedor de localização pode fornecer conselhos sobre ferramentas e processos, bem como traduzir seus arquivos de recursos. Essa é uma solução ideal, mas também é a opção mais dispendiosa e pode aumentar o tempo de reviravolta para o conteúdo traduzido.

Manter as chaves de acesso e os rótulos consistentes

É um desafio "sincronizar" as chaves de acesso usadas na acessibilidade com a exibição das chaves de acesso localizadas, pois os dois recursos de cadeia de caracteres são categorizados em duas seções separadas. Certifique-se de fornecer comentários para a cadeia de caracteres de rótulo, como: Make sure that the emphasized shortcut key is synchronized with the access key.

Suporte a furigana para cadeias de caracteres japonesas que podem ser classificadas

Os caracteres kanji japoneses têm a propriedade de ter mais de uma leitura (pronúncia) dependendo da palavra em que são usados. Isso leva a problemas quando você tenta classificar objetos nomeados em japonês, como nomes de aplicativos, arquivos, músicas e assim por diante. Kanji japonês, no passado, geralmente foi classificado em uma ordem compreensível por máquina chamada XJIS. Infelizmente, como essa ordem de classificação não é fonética, não é muito útil para os humanos.

O Furigana soluciona esse problema, permitindo que o usuário ou o criador especifique a fonética para os caracteres que está usando. Se você usar o procedimento a seguir para adicionar furigana ao nome do aplicativo, poderá garantir que ele seja classificado no local adequado na lista de aplicativos. Se o nome do aplicativo contiver caracteres kanji e furigana não for fornecido quando o idioma da interface do usuário ou a ordem de classificação estiver definida como japonês, o Windows fará o seu melhor esforço para gerar a pronúncia apropriada. No entanto, há a possibilidade de nomes de aplicativos que contêm leituras raras ou exclusivas serem classificados sob uma leitura mais comum. Portanto, a melhor prática para aplicativos japoneses (especialmente aqueles que contêm caracteres kanji em seus nomes) é fornecer uma versão furigana do nome do aplicativo como parte do processo de localização japonês.

  1. Adicione "ms-resource:Appname" como o Nome de Exibição do Pacote e o Nome de Exibição do Aplicativo.

  2. Crie uma pasta ja-JP em strings e adicione dois arquivos de recurso da seguinte maneira:

    strings\
        en-us\
        ja-jp\
            Resources.altform-msft-phonetic.resw
            Resources.resw
    
  3. Em Resources.resw para geral ja-JP: Adicione um recurso de string para o nome do aplicativo "希蒼"

  4. Em Resources.altform-msft-phonetic.resw para os recursos japoneses furigana: Adicione o valor furigana para AppName "のあ"

O usuário pode pesquisar o nome do aplicativo "希蒼" usando o valor furigana "のあ" (noa) e o valor fonético (usando a função GetPhonetic do Editor de Método de Entrada (IME)) "まれあお" (mare-ao).

A classificação segue o formato do Painel de Controle Regional :

  • Sob uma configuração regional de usuário japonesa,
    • Se furigana estiver habilitado, "希蒼" será classificado em "の".
    • Se furigana estiver ausente, "希蒼" será classificado em "ま".
  • Em uma configuração regional de usuário não japonesa,
    • Se furigana estiver habilitado, "希蒼" será classificado em "の".
    • Se furigana estiver ausente, "希蒼" será classificado em "漢字".

Exemplos