Nomes de localidades, idiomas e cadeias de caracteres de país–região do UCRT

Você pode definir o argumento para o localesetlocale, _wsetlocale, _create_localee _wcreate_locale funções de várias maneiras. A localidade pode ser definida usando os nomes de localidade, idiomas, códigos de país/região e páginas de código que são suportados pela API NLS do Windows. O locale argumento assume uma das seguintes formas:

locale:: "nome-da-localidade"
 | "idioma[_país-região[.página de código]]"
 | ".página de código"
 | "C"
 | ""
 | NULL

O formato locale-name é uma cadeia de caracteres curta padronizada pelo IETF; por exemplo, en-US para inglês (Estados Unidos) ou bs-Cyrl-BA para bósnio (cirílico, Bósnia e Herzegovina). Esses formatos são preferenciais. Para obter uma lista de nomes de locais com suporte pela versão do sistema operacional Windows, veja a coluna Marca de idioma da tabela no Apêndice A: comportamento de produto no [MS-LCID]: referência do identificador de código de idioma (LCID) do Windows. Esse recurso lista o idioma, o script e as partes da região com suporte dos nomes de localidade. Para obter informações sobre os nomes de localidade com suporte que têm ordens de classificação não padrão, consulte a coluna Nome da localidade em Identificadores de ordem de classificação. Com o Windows 10 ou posterior, são permitidos nomes de localidade que correspondem às marcas de idioma BCP-47 válidas. Por exemplo, é uma marca BCP-47 válida, jp-US mas é efetivamente apenas US para a funcionalidade de localidade.

O formato language[_country_region[.code-page]] é armazenado na configuração de localidade da categoria quando uma cadeia de caracteres de idioma ou uma cadeia de caracteres de idioma e de país ou região é usada para criar a localidade. O conjunto de cadeias de caracteres de idioma com suporte é descrito em Cadeias de caracteres de idioma e a lista de cadeias de caracteres de país e região com suporte é listada em Cadeias de caracteres de país/região. Se o idioma especificado não estiver associado ao país ou região especificado, o idioma padrão do país ou região especificado será armazenado na configuração de localidade. Não recomendamos este formulário para cadeias de caracteres de localidade incorporadas no código ou serializadas no armazenamento: essas cadeias de caracteres têm maior probabilidade de serem alteradas por uma atualização do sistema operacional do que o formulário de nome da localidade.

A página de código é a página de código ANSI/OEM associada à localidade. A página de código é determinada por você ao especificar uma localidade por idioma ou por idioma e país/região apenas. O valor especial .ACP especifica a página de código ANSI para o país/região. O valor especial .OCP especifica a página de código OEM para o país/região. Por exemplo, se você especificar como a localidade, a localidade será armazenada como (a página de código ANSI para grego) e, se você especificar "Greek_Greece.OCP""Greek_Greece.ACP" como a localidade, ela será armazenada como Greek_Greece.1253Greek_Greece.737 (a página de código OEM para grego). Para obter mais informações sobre páginas de código, consulte Páginas de código. Para obter uma lista de páginas de código com suporte no Windows, consulte Identificadores de página de código.

Se você usar apenas a página de código para especificar a localidade, o idioma padrão do usuário e o país/região conforme relatado por GetUserDefaultLocaleName serão usados. Por exemplo, se você especificar ".1254" (turco ANSI) como a localidade de um usuário que está configurado para inglês (Estados Unidos), a localidade armazenada será English_United States.1254. Não recomendamos esse formulário, porque pode levar a um comportamento inconsistente.

Um locale valor de argumento de C especifica o ambiente de conformidade ANSI mínimo para tradução C. A localidade C pressupõe que cada tipo de dados char tem 1 byte e seu valor é sempre menor que 256. Se locale apontar para uma cadeia de caracteres vazia, a localidade será o ambiente nativo definido pela implementação.

Você pode especificar todas as categorias de localidade ao mesmo tempo para as funções setlocale e _wsetlocale usando a categoria LC_ALL. Todas as categorias podem ser definidas para a mesma localidade, ou você pode definir cada categoria individualmente usando um argumento de localidade que tenha esta forma:

LC-ALL-specifier :: locale
 | [LC_COLLATE=locale][;LC_CTYPE=locale][;LC_MONETARY=locale][;LC_NUMERIC=locale][;LC_TIME=locale]

Você pode especificar vários tipos de categoria, separados por ponto-e-vírgula. Os tipos de categoria que não são especificados usam a configuração de localidade atual. Por exemplo, este snippet de código define a localidade atual para todas as categorias como de-DE e, em seguida, define as categorias LC_MONETARY como en-GB e LC_TIME como es-ES:

_wsetlocale(LC_ALL, L"de-DE");
_wsetlocale(LC_ALL, L"LC_MONETARY=en-GB;LC_TIME=es-ES");

Suporte a UTF-8

O suporte UTF-8 pode ser habilitado usando a página de código UTF-8 em sua cadeia de caracteres de localidade. Para obter mais informações, consulte a seção de suporte UTF-8 do setlocale.

Confira também

Referência da biblioteca de tempo de execução do C
_get_current_locale
setlocale, _wsetlocale
_create_locale, _wcreate_locale
Cadeias de caracteres de idioma
Cadeias de caracteres de país/região