Preparando seu aplicativo da Windows Store para o mercado mundial

Deseja tornar seu novo aplicativo acessível para um mercado mundial e possivelmente aumentar seu número de clientes? Mais do que nunca, o Windows 8 facilita a escrita de um aplicativo que pode ser adaptado para diversos idiomas e culturas. Mostrarei aqui como criar um novo aplicativo mundial com pouca ou nenhuma modificação de código.

Sara Thomas descreveu as oportunidades de mercado disponíveis em seu artigo sobre o Kit de Ferramentas de Aplicativo Multilíngue. Espero que sua menção a "um possível alcance de mais de 4,5 bilhões de pessoas" e a possibilidade de vender aplicativos "em mais de 200 mercados" instigue você a prosseguir na leitura.

Um cenário

Digamos que você tenha criado um aplicativo da Windows Store que é executado em um tablet e usado em uma locadora de veículos. O funcionário e a cliente usam o aplicativo para ver a imagem de um carro para aluguel, sua descrição e localização na agência. Eles carregam o tablet enquanto inserem ou verificam informações sobre o carro (como a quilometragem atual) e anotam qualquer dano existente. A cliente assina o contrato no tablet.

Aplicativo para aluguel de carro com rótulos e controles em inglês

O mesmo aplicativo será usado quando o carro for devolvido. Eles inserem a nova quilometragem e anotam qualquer dano adicional ao carro. Essa é uma experiência universal. As pessoas no mundo todo alugam carros e seguem um protocolo similar. Esse aplicativo é um ótimo candidato ao mercado global , criando várias oportunidades para você vender seu aplicativo.

Há dois processos estreitamente relacionados que você emprega ao desenvolver seu aplicativo:

  • Globalização: o processo de criação e desenvolvimento de um aplicativo para funcionar em várias áreas geográficas e idiomas.
  • Localização: o processo de adaptação do aplicativo (incluindo texto e outros elementos) para atender às expectativas de um mercado local específico em termos de idioma, cultura e política.

Globalização

Algumas coisas para levar em conta ao globalizar seu aplicativo:

  • Crie um layout de aplicativo flexível.

Não crie aplicativos com formas estáticas. Os aplicativos da Windows Store oferecem suporte a recursos de layout que permitem a flexibilidade e o ajuste do seu aplicativo a vários tamanhos de texto, layouts e orientações. Consulte a seção Escolhendo um layout no Centro de Desenvolvimento para obter recomendações.

Se por algum motivo você precisar usar formas estáticas, verifique se as legendas dos botões e campos de texto são grandes o bastante para caber a tradução. As cadeias de texto em inglês podem aumentar até 40% ao serem traduzidas. É necessário espaço vertical adicional para idiomas com caracteres marcados como Å ou Ņ, ou que exijam tamanhos mínimos de fonte maiores para continuarem legíveis.

  • Crie texto e imagens que sejam fáceis de traduzir.

Seu aplicativo deve ser traduzido com facilidade para outros idiomas e culturas, quer a tradução seja feita por você mesmo ou por terceiros.

Tópicos para levar em conta:

    • Evite coloquialismos ou metáforas específicos de um único idioma.
    • Evite jargão técnico, abreviações ou acrônimos que dificultem a tradução.

Se você adotar um tom informal em seu aplicativo ou empregar jargões para um público específico, tenha certeza de explicar isso para seus tradutores.

    • Evite textos em imagens que precisem ser traduzidos.
    • Evite também imagens específicas de uma cultura (como caixas de correio) que não sejam comuns ao redor do mundo. Se isso não puder ser evitado, forneça imagens localizadas (voltarei a este tópico mais tarde).
  • Leve em conta as diferenças culturais.

Imagens que possam ser apropriadas em sua própria cultura podem ser ofensivas ou mal interpretadas em outras culturas.

Tópicos para levar em conta:

  • Evite o uso de símbolos religiosos, animais ou combinação de cores associados a bandeiras nacionais ou movimentos políticos,
  • Evite mapas que incluam fronteiras nacionais ou regionais controversas. Refira-se a uma nação como "país/região". Você não deve colocar um território em disputa em uma lista identificada como "Países".
  • Tenha cuidado ao usar cores para dar um significado. Cores podem ter conotações inesperadas em algumas culturas. Tente transmitir informações por outros meios, como tamanho, forma ou rótulos, para beneficiar os leitores daltônicos.

Use APIs de globalização para expressar datas, horas, números e moedas nos devidos formatos.

Nosso aplicativo de aluguel de carro exibe as datas e o horário de saída e devolução do carro, e queremos exibir essas informações no formato e idioma apropriados. Verifique se a quilometragem está formatada com o grupo de dígitos correto e a moeda do preço do aluguel é exibida adequadamente.

Seu aplicativo da Windows Store pode usar namespaces de globalização para criar objetos de formatação. Esses objetos fornecem cadeias de caracteres formatadas para o idioma preferencial do usuário. Por exemplo, usar o JavaScript para exibir a data de hoje qualquer que seja o idioma do usuário:

JavaScript:

 var dtf = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter
              ("dayofweek day month year");
var now = new Date();
var el = document.getElementById('todaysDate');
el.TextContent = dtf.format(now);

Em C#:

 var dtf = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter
              ("dayofweek day month year");
DateTime now = DateTime.Now;
todaysDate.Text = dtf.Format(now);  // todaysDate is a XAML TextBlock.

Para obter mais informações, consulte: Início Rápido: usando formatos globais. Veja nossos exemplos de formatação:

Localização

Agora que você tem todas as informações necessárias para criar um aplicativo globalizado, desejará começar a se aprofundar nos códigos. Ao escrever seu aplicativo, use a tecnologia dos recursos do Windows 8 para ajudar na localização.

Não escreva seu aplicativo pensando que o localizará em outro idioma mais tarde quando necessário. A melhor forma de tornar seu aplicativo localizável é pensar na primeira versão como sendo localizada para seu idioma inicial! Para tanto, siga essas etapas desde o começo:

Separe o código dos recursos.

Ao escrever o código, não inclua qualquer cadeia de caracteres, elementos de exibição ou controles codificados. Não inclua nada: nem um título, rótulo, legenda de botão, legenda de imagem ou parágrafo! A separação completa do código e dos recursos de cadeia de caracteres proporcionam dois benefícios complementares:

  • Você pode localizar os recursos separadamente do código. Os tradutores não precisam compilar seu código, portanto, você não precisa se preocupar com a introdução de bugs durante a localização.
  • Você pode manter o código separado do conteúdo dos recursos. O código pode ser modificado em uma única base de códigos, o que reduz o risco de alteração do conteúdo localizado.

Em sua marcação, refira-se aos recursos usando identificadores de recurso (veremos como na próxima seção). As cadeias de caracteres serão recuperadas do recurso apropriado e exibidas quando a página for processada.

No seu código, carregue as cadeias de caracteres usando identificadores de recurso e as versões apropriadas serão recuperadas.

Escreva uma marcação e código que usem recursos.

HTML e JavaScript

Apresentarei alguns destaques de um processo abordado de forma mais completa em Início Rápido: usando recursos de cadeia de caracteres (aplicativos da Windows Store com JavaScript e HTML). Use as informações nesse início rápido quando estiver realmente codificando.

No Visual Studio, crie uma pasta para guardar os arquivos de recursos. Guarde o arquivo de recursos de cada idioma em uma subpasta denominada com a marca de idioma BCP-47. O próprio arquivo de recursos geralmente é denominado resources.resjson.

Por exemplo, para o inglês dos EUA, crie o seguinte arquivo resources.resjson em uma pasta Cadeias de caracteres/en-US:

 {
    "greeting"              : "Hello",
    "_greeting.comment"     : "A welcome greeting.",

    "farewell"              : "Goodbye",
    "_farewell.comment"     : "A goodbye."
}

Essa sintaxe é estritamente JSON (JavaScript Object Notation), onde você deve inserir uma vírgula após cada par de nome/valor, exceto o último. Nesse exemplo, "greeting" (saudações) e "farewell" (adeus) identificam as cadeias de texto que são exibidas. Também criamos "_greeting.comment" e "_farewell.comment" como comentários descrevendo as cadeias de caracteres. Os comentários são onde você fornece qualquer instrução especial aos tradutores sobre tom ou significado.

Em seu HTML, refira-se aos recursos de cadeias de caracteres usando identificadores de recurso:

 <h2><span data-win-res="{textContent: 'greeting'}"></span></h2>
<h2><span data-win-res="{textContent: 'farewell'}"></span></h2>

Em JavaScript, você pode configurar as cadeias de caracteres em HTML da seguinte maneira:

 var el = document.getElementById('header');
var res = WinJS.Resources.getString('greeting');
el.textContent = res.value;
el.setAttribute('lang', res.lang);

XAML e C#/VB/C++

Veja aqui mais destaques, dessa vez em Início Rápido: usando recursos de cadeia de caracteres (aplicativos da Windows Store com C#/VB/C++ e XAML).

No Visual Studio, crie uma pasta para guardar os arquivos de recursos. Guarde o arquivo de recursos de cada idioma em uma subpasta denominada com a marca de idioma BCP-47. O próprio arquivo de recursos geralmente é denominado Resources.resw.

Por exemplo, para o inglês dos EUA, crie o seguinte arquivo Resources.resw em uma pasta Cadeias de caracteres/en-US:

Arquivo de recursos mostrando nome, valor e comentário para que as cadeias de texto sejam exibidas

Nesse exemplo, "Greeting.Text" (texto de saudações) e "Farewell" (adeus) identificam as cadeias de texto a serem exibidas. O identificador "Greeting.Text" inclui a propriedade do controle XAML que recebe a cadeia de caracteres, e "Farewell" identifica uma cadeia de caracteres a ser carregada pelo código. Os comentários são onde você fornece qualquer instrução especial aos tradutores sobre tom ou significado.

Em seu XAML, refira-se ao recurso de cadeias de caracteres usando o identificador de recurso e a propriedade:

 <TextBlock x:Uid="Greeting" Text="" />

Na linguagem C#, é possível obter cadeias de caracteres da seguinte forma:

 var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
var string = loader.GetString('Farewell');

Forneça imagens localizadas.

Se você não puder criar imagens que dispensem tradução, será possível criar versões localizadas, e o arquivo correto será carregado automaticamente pelo seu aplicativo. Na verdade, independente da localização, você usa a mesma tecnologia de recursos para criar várias versões de suas imagens com diferentes fatores de escala, configurações de contraste e muito mais.

Por exemplo, é possível criar um arquivo de logotipo em conjunto com diferentes fatores de escala, configurações de contraste e idiomas. Nomeie-os qualificadamente, como

  • Images\en-Us\logo.scale-100.png
  • Images\en-Us\logo.scale-140.png
  • Images\fr-Fr\logo.scale-100.png
  • Images\fr-Fr\logo.scale-140.png

Bastará seu aplicativo se referir a Images/logo.png, e a imagem apropriada será carregada. Consulte a seção Como nomear recursos usando qualificadores.

Requisitos da Windows Store:

Atrai você com um grande número de mercados para seu aplicativo, portanto, você desejará conhecer os requisitos da Windows Store para começar a vendê-los. Continue lendo para obter informações detalhadas sobre a certificação de aplicativos e a seleção de mercados e idiomas.

    • Idiomas de certificação: os idiomas aos quais oferecemos suporte mediante confirmação de que seu aplicativo atende aos requisitos de certificação. Seu aplicativo deve oferecer suporte a pelo menos um desses idiomas.
    • Idiomas permitidos: os idiomas aos quais oferecemos suporte, mas não usamos como parte do processo de certificação. Seu aplicativo pode oferecer suporte a quantos idiomas você quiser, desde que isso inclua pelo menos um dos idiomas de certificação.

Resumo

Como se saiu nosso aplicativo de aluguel de carro? Se o desenvolvemos corretamente, ele conterá todas as cadeias de texto e imagens nos recursos. Exibirá datas, horas, números e moedas formatados adequadamente para o idioma preferencial do usuário. Quando desejarmos localizá-lo para outro mercado, nenhum código será alterado — adicionaremos um novo arquivo de recurso (traduzido por nossa própria conta ou enviado a um tradutor terceirizado), criaremos novos arquivos de imagem (se necessário) e recompilaremos o aplicativo.

aluguel de carro em francês

Para obter mais informações sobre o processo descrito aqui, consulte

--Ray Shuman, programador, Windows Content Services

Agradecimentos especiais a Karl Bridge, Rylan Hawkins, Dave Shevitz e Bob Watson pela ajuda e contribuições neste artigo.