Nomes de localidades, idiomas e cadeias de caracteres de país–região do UCRT
Você pode definir o locale
argumento para as setlocale
funções , _wsetlocale
, _create_locale
, e _wcreate_locale
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 compatíveis com a API NLS do Windows. O locale
argumento assume uma das seguintes formas:
locale
:: "nome-da-localidade"
| "language[_country-region[.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, jp-US
é uma marca BCP-47 válida, mas é efetivamente apenas US
para 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 inseridas 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 de 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 "Greek_Greece.ACP"
como a localidade, a localidade será armazenada como Greek_Greece.1253
(a página de código ANSI para grego) e, se você especificar "Greek_Greece.OCP"
como a localidade, ela será armazenada como Greek_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, pois ele pode levar a um comportamento inconsistente.
Um locale
valor de argumento de C
especifica o ambiente mínimo em conformidade com ANSI 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