Observação

Este artigo fornece comentários complementares à documentação de referência para esta API.

Observação

A CultureAndRegionInfoBuilder classe é útil apenas para sistemas operacionais Windows. Os arquivos .nlp gerados não têm suporte em sistemas operacionais não Windows. Além disso, mesmo no Windows, os arquivos .nlp gerados têm suporte apenas no .NET Framework (ou no .NET Core ao usar o modo de globalização nls).

A CultureInfo classe contém informações específicas da cultura, como a linguagem associada, o subidioma, o país/região, o calendário e as convenções culturais. Essa classe também fornece instâncias específicas da cultura das classes DateTimeFormatInfo, NumberFormatInfo, CompareInfo e TextInfo, que são necessárias para operações específicas da cultura, como colocação de maiúsculas e minúsculas, formatação e análise de datas e números e comparação de cadeias de caracteres.

Por padrão, o .NET dá CultureInfo suporte a objetos que representam um conjunto predefinido de culturas. Para obter uma lista dessas culturas disponíveis em sistemas Windows, consulte a coluna de etiqueta de idioma na lista de nomes de idioma/região compatíveis com o Windows. Os nomes de cultura seguem o padrão definido pelo BCP 47. A CultureAndRegionInfoBuilder classe permite que você crie uma cultura personalizada completamente nova ou que substitua uma cultura predefinida. Quando uma cultura personalizada é instalada e registrada em um computador específico, ela se torna indistinguível de objetos predefinidos CultureInfo e pode ser instanciada e usada da mesma forma que esses objetos.

Importante

A CultureAndRegionInfoBuilder classe é encontrada em um assembly chamado sysglobl.dll. Para compilar com êxito o código que usa esse tipo, você deve adicionar uma referência a sysglobl.dll.

Uma cultura personalizada pode ser registrada em um computador somente por um usuário que tenha direitos administrativos nesse computador. Consequentemente, os aplicativos normalmente não criam e instalam culturas personalizadas. Em vez disso, você pode usar a CultureAndRegionInfoBuilder classe para criar uma ferramenta de finalidade especial que um administrador pode usar para criar, instalar e registrar uma cultura personalizada. Depois que a cultura personalizada for registrada em um computador, você poderá usar a CultureInfo classe em seu aplicativo para criar instâncias da cultura personalizada da mesma forma que faria para uma cultura predefinida.

Se você analisar as cadeias de caracteres de data e hora geradas para uma cultura personalizada, deverá usar o método DateTime.ParseExact ou DateTime.TryParseExact em vez do método DateTime.Parse ou DateTime.TryParse para melhorar a probabilidade de que a operação de análise seja bem-sucedida. Uma cadeia de caracteres de data e hora para uma cultura personalizada pode ser complicada e, portanto, difícil de analisar. Os métodos Parse e TryParse tentam analisar uma cadeia de caracteres com vários padrões implícitos de análise, todos os quais podem falhar. O TryParseExact método, por outro lado, requer que o aplicativo designe explicitamente um ou mais padrões exatos de análise que provavelmente serão bem-sucedidos.

Definir e criar uma cultura personalizada

Você usa a CultureAndRegionInfoBuilder classe para definir e nomear uma cultura personalizada. A cultura personalizada pode ser uma cultura totalmente nova, uma nova cultura baseada em uma cultura existente (ou seja, uma cultura complementar) ou uma cultura que substitui uma cultura .NET existente. Em cada caso, as etapas básicas são as mesmas:

  1. Instancie um CultureAndRegionInfoBuilder objeto chamando seu CultureAndRegionInfoBuilder(String, CultureAndRegionModifiers) construtor. Para substituir uma cultura existente, passe o nome dessa cultura e o valor de enumeração CultureAndRegionModifiers.Replacement para o construtor. Para criar uma nova cultura ou uma cultura complementar, passe um nome de cultura exclusivo e o valor de enumeração CultureAndRegionModifiers.Neutral ou CultureAndRegionModifiers.None.

    Observação

    Se você usar o CultureAndRegionModifiers.Replacement valor de enumeração para instanciar um CultureAndRegionInfoBuilder objeto, as CultureAndRegionInfoBuilder propriedades do objeto serão preenchidas automaticamente com valores do CultureInfo objeto a serem substituídos.

  2. Se você estiver criando uma cultura nova ou complementar:

  3. Modifique as propriedades do CultureAndRegionInfoBuilder objeto conforme necessário.

  4. Se você estiver planejando registrar a cultura personalizada em uma rotina separada, chame o método Save. Isso gera um arquivo XML que você pode carregar e registrar em uma rotina de instalação de cultura personalizada separada.

Registrar uma cultura personalizada

Se você estiver desenvolvendo um aplicativo de registro para uma cultura personalizada separada do aplicativo que cria a cultura, chame o CreateFromLdml método para carregar o arquivo XML que contém a definição da cultura personalizada e instanciar o CultureAndRegionInfoBuilder objeto. Para lidar com o registro, chame o Register método. Para que o registro seja bem-sucedido, o aplicativo que registra a cultura personalizada deve estar em execução com privilégios administrativos no sistema de destino; caso contrário, a chamada para Register gera uma exceção UnauthorizedAccessException.

Aviso

Os dados de cultura podem ser diferentes entre sistemas. Se você estiver usando a CultureAndRegionInfoBuilder classe para criar uma cultura personalizada uniforme em vários sistemas e estiver criando sua cultura personalizada carregando dados de objetos existentes CultureInfo e RegionInfo e personalizando-os, você deverá desenvolver dois utilitários diferentes. O primeiro cria a cultura personalizada e a salva em um arquivo XML. O segundo usa o CreateFromLdml método para carregar a cultura personalizada de um arquivo XML e registrá-la no computador de destino.

O processo de registro executa as seguintes tarefas:

  • Cria um arquivo .nlp que contém as informações definidas no CultureAndRegionInfoBuilder objeto.
  • Armazena o arquivo .nlp no diretório %windir%\Globalization system no computador de destino. Isso permite que as configurações da cultura personalizada persistam entre as sessões. (O CultureAndRegionInfoBuilder método requer privilégios administrativos porque o arquivo .nlp é armazenado em um diretório do sistema.)
  • Prepara o .NET para pesquisar o diretório do sistema %windir%\Globalization em vez de um cache interno na próxima vez que houver uma solicitação para criar sua nova cultura personalizada.

Quando uma cultura personalizada é registrada com êxito, ela é indistinguível das culturas predefinidas pelo .NET. A cultura personalizada está disponível até que uma chamada para o CultureAndRegionInfoBuilder método remova o arquivo .nlp do computador local.

Criar uma instância de uma cultura personalizada

Você pode criar uma instância da cultura personalizada de uma das seguintes maneiras:

Além disso, a matriz de CultureInfo objetos que é retornada pelo CultureInfo.GetCultures método inclui a cultura personalizada.