Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Projete seu aplicativo para estar pronto para o mundo formatando adequadamente datas, horas, números, números de telefone e moedas. Posteriormente, você poderá adaptar seu aplicativo para culturas, regiões e idiomas adicionais no mercado global.
Introdução
Ao criar seu aplicativo, se você pensar mais amplamente do que uma única linguagem e cultura, terá menos (se houver) problemas inesperados quando seu aplicativo crescer em novos mercados. Por exemplo, datas, horas, números, calendários, moeda, números de telefone, unidades de medida e tamanhos de papel são todos os itens que podem ser exibidos de forma diferente em diferentes culturas ou idiomas.
Diferentes regiões e culturas usam diferentes formatos de data e hora. Elas incluem convenções para a ordem de dia e mês na data, para a separação de horas e minutos no tempo e até mesmo para qual pontuação é usada como separador. Além disso, as datas podem ser exibidas em vários formatos longos ("Quarta-feira, 28 de março de 2012") ou formatos curtos ("28/3/12"), que variam entre culturas. E, claro, os nomes e abreviações dos dias da semana e meses do ano diferem entre idiomas.
Você pode visualizar os formatos usados para idiomas diferentes. Vá para Configurações>Hora & Idioma>Região e idioma, e clique em Configurações regionais adicionais de data, hora, e região>Alterar formatos de data, hora ou número. Na guia Formatos , selecione um idioma na lista suspensa Formatar e previsualize os formatos em Exemplos.
Este tópico usa os termos "lista de idiomas de perfil do usuário", "lista de idiomas de manifesto do aplicativo" e "lista de idiomas do runtime do aplicativo". Para obter detalhes sobre exatamente o que esses termos significam e como acessar seus valores, consulte Noções básicas sobre idiomas de perfil de usuário e idiomas de manifesto do aplicativo.
Formatar datas e horas para a lista de idiomas do runtime do aplicativo
Se você precisar permitir que os usuários escolham uma data ou selecionem uma hora, use os controles padrão calendário, data e hora. Eles usam automaticamente o melhor formato de data e hora para a lista de idiomas do runtime do aplicativo.
Se você precisar exibir datas ou horas por conta própria, poderá usar a classe DateTimeFormatter. Por padrão, DateTimeFormatter usa automaticamente o melhor formato de data e hora para a lista de idiomas do runtime do aplicativo. Portanto, o código abaixo formata um determinado DateTime da melhor maneira para essa lista. Por exemplo, suponha que sua lista de idiomas de manifesto do aplicativo inclua inglês (Estados Unidos), que também é seu padrão, e alemão (Alemanha). Se a data atual for 6 de novembro de 2017 e a lista de idiomas de perfil do usuário contiver alemão (Alemanha) primeiro, o formatador fornecerá "06.11.2017". Se a lista de idiomas de perfil de usuário contiver inglês (Estados Unidos) primeiro (ou se não contiver inglês nem alemão), o formatador fornecerá "11/6/2017" (uma vez que "en-US" corresponde ou é usado como o padrão).
// Use the DateTimeFormatter class to display dates and times using basic formatters.
var shortDateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate");
var shortTimeFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shorttime");
var dateTimeToFormat = DateTime.Now;
var shortDate = shortDateFormatter.Format(dateTimeToFormat);
var shortTime = shortTimeFormatter.Format(dateTimeToFormat);
var results = "Short Date: " + shortDate + "\n" +
"Short Time: " + shortTime;
Você pode testar o código acima em seu próprio computador assim.
- Verifique se você tem arquivos de recurso em seu projeto qualificados para "en-US" e "de-DE" (consulte Personalizar seus recursos para linguagem, escala, alto contraste e outros qualificadores).
- Altere sua lista de idiomas do perfil de usuário em Configurações>Tempo e Idioma>Região e idioma>Idiomas. Adicione alemão (Alemanha), torne-o o padrão e execute o código novamente.
Formatar datas e horas para a lista de idiomas de perfil do usuário
Lembre-se de que, por padrão, DateTimeFormatter corresponde à lista de idiomas do runtime do aplicativo. Dessa forma, se você exibir cadeias de caracteres como "A data é <data>", o idioma corresponderá ao formato de data.
Se, por qualquer motivo, você quiser formatar datas e/ou horas apenas de acordo com a lista de idiomas do perfil do usuário, poderá fazer isso usando código como o exemplo abaixo. Mas se você fizer isso, entenda que o usuário pode escolher um idioma para o qual seu aplicativo não tem cadeias de caracteres traduzidas. Por exemplo, se seu aplicativo não estiver localizado em alemão (Alemanha), mas o usuário escolher isso como seu idioma preferido, isso poderá resultar na exibição de cadeias de caracteres indiscutivelmente ímpares, como "A data é 06.11.2017".
// Use the DateTimeFormatter class to display dates and times using basic formatters.
var userLanguages = Windows.System.UserProfile.GlobalizationPreferences.Languages;
var shortDateFormatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate", userLanguages);
var results = "Short Date: " + shortDateFormatter.Format(DateTime.Now);
Formatar números e moedas adequadamente
Diferentes culturas formatam números de forma diferente. As diferenças de formato podem incluir quantos dígitos decimais exibir, quais caracteres usar como separadores decimais e qual símbolo de moeda usar. Use classes no namespace
Este exemplo mostra como exibir moedas de acordo com o perfil do usuário e para um determinado sistema monetário específico.
// This scenario uses the CurrencyFormatter class to format a number as a currency.
var userCurrency = Windows.System.UserProfile.GlobalizationPreferences.Currencies[0];
var valueToBeFormatted = 12345.67;
var userCurrencyFormatter = new Windows.Globalization.NumberFormatting.CurrencyFormatter(userCurrency);
var userCurrencyValue = userCurrencyFormatter.Format(valueToBeFormatted);
// Create a formatter initialized to a specific currency,
// in this case US Dollar (specified as an ISO 4217 code)
// but with the default number formatting for the current user.
var currencyFormatUSD = new Windows.Globalization.NumberFormatting.CurrencyFormatter("USD");
var currencyValueUSD = currencyFormatUSD.Format(valueToBeFormatted);
// Create a formatter initialized to a specific currency.
// In this case it's the Euro with the default number formatting for France.
var currencyFormatEuroFR = new Windows.Globalization.NumberFormatting.CurrencyFormatter("EUR", new[] { "fr-FR" }, "FR");
var currencyValueEuroFR = currencyFormatEuroFR.Format(valueToBeFormatted);
// Results for display.
var results = "Fixed number (" + valueToBeFormatted + ")\n" +
"With user's default currency: " + userCurrencyValue + "\n" +
"Formatted US Dollar: " + currencyValueUSD + "\n" +
"Formatted Euro (fr-FR defaults): " + currencyValueEuroFR;
Você pode testar o código acima em seu próprio computador alterando o país ou a região em
Usar um calendário culturalmente apropriado
O calendário difere entre regiões e idiomas. O calendário gregoriano não é o padrão para todas as regiões. Os usuários em algumas regiões podem escolher calendários alternativos, como o calendário da era japonesa ou calendários lunares árabes. Datas e horários no calendário também são sensíveis a fusos horários diferentes e horário de verão.
Para garantir que o formato de calendário preferencial seja usado, você pode usar os controles de calendário, data e hora padrão . Para cenários mais complexos, onde pode ser necessário trabalhar diretamente com operações em datas de calendário, Windows.Globalization oferece uma classe Calendar que proporciona uma representação de calendário adequada para a cultura, região e tipo de calendário específicos.
Formatar números de telefone adequadamente
Os números de telefone são formatados de forma diferente entre regiões. O número de dígitos, como os dígitos são agrupados e a significância de determinadas partes do número de telefone variam entre países/regiões. A partir do Windows 10, versão 1607, você pode usar classes no namespace
PhoneNumberInfo analisa uma cadeia de caracteres de dígitos e permite que você: determine se os dígitos são um número de telefone válido na região atual; comparar dois números para igualdade; e extrair as diferentes partes funcionais do número de telefone, como código de país ou código de área geográfica.
PhoneNumberFormatter formata uma sequência de dígitos ou um PhoneNumberInfo para exibição, mesmo quando a sequência de dígitos representa um número de telefone parcial. Você pode usar essa formatação de número parcial para formatar um número enquanto um usuário está inserindo o número.
O exemplo a seguir mostra como usar PhoneNumberFormatter para formatar um número de telefone à medida que ele está sendo inserido. Sempre que o texto é alterado em um TextBox chamado phoneNumberInputTextBox, o conteúdo da caixa de texto é formatado usando a região padrão atual e exibido em um TextBlock chamado phoneNumberOutputTextBlock. Para fins de demonstração, a cadeia de caracteres também é formatada usando a região para a Nova Zelândia e exibida em um TextBlock chamado phoneNumberOutputTextBlockNZ.
using Windows.Globalization.PhoneNumberFormatting;
PhoneNumberFormatter currentFormatter, NZFormatter;
public MainPage()
{
this.InitializeComponent();
// Use the default formatter for the current region
this.currentFormatter = new PhoneNumberFormatter();
// Create an explicit formatter for New Zealand.
PhoneNumberFormatter.TryCreate("NZ", out this.NZFormatter);
}
private void phoneNumberInputTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
// Format for the default region.
this.phoneNumberOutputTextBlock.Text = currentFormatter.FormatPartialString(this.phoneNumberInputTextBox.Text);
// If the NZFormatter was created successfully, format the partial string for the NZ TextBlock.
if(this.NZFormatter != null)
{
this.phoneNumberOutputTextBlockNZ.Text = this.NZFormatter.FormatPartialString(this.phoneNumberInputTextBox.Text);
}
}
Você pode testar o código acima em seu próprio computador alterando o país ou a região em
Idioma e preferências culturais do usuário
Para cenários em que você deseja fornecer funcionalidades diferentes com base apenas na linguagem, região ou preferências culturais do usuário, o Windows oferece uma maneira de acessar essas preferências, por meio de Windows.System.UserProfile.GlobalizationPreferences. Quando necessário, use a classe GlobalizationPreferences para obter o valor da região geográfica atual do usuário, idiomas preferenciais, moedas preferenciais e assim por diante. Mas lembre-se de que se as cadeias de caracteres/imagens do aplicativo não forem localizadas para o idioma preferido do usuário, datas e horas e outros dados formatados para esse idioma preferencial não corresponderão às cadeias de caracteres exibidas.
APIs importantes
- DateTimeFormatter
-
NumberFormatting - calendário
- FormataçãoDeNúmeroDeTelefone
- GlobalizationPreferences
Tópicos relacionados
- controles de calendário, data e hora
- Noções básicas sobre idiomas de perfil de usuário e idiomas de manifesto do aplicativo
- Personalize seus recursos considerando idioma, escala, alto contraste e outros qualificadores
Exemplos
Windows developer