Nomes de localidades, idiomas e cadeias de caracteres de país/região
O argumento locale para as funções setlocale e _create_locale pode ser definido usando os nomes de localidades, idiomas, códigos de país/região e as páginas de códigos com suporte da API NLS do Windows. O argumento locale usa o seguinte formato:
locale :: "locale_name"
| "language[_country_region[.code_page]]"
| ".code_page"
| "C"
| ""
| NULL
O formato de nome da localidade — por exemplo, en-US para inglês (Estados Unidos) ou bs-Cyrl-BA para bósnio (cirílico, Bósnia e Herzegovina) — é preferido. O conjunto de nomes de localidade é descrito em Nomes de localidade. Para obter uma lista de nomes de localidade com suporte na versão do sistema operacional Windows, consulte a coluna Nome da cultura da Referência da API NSL (Suporte ao Idioma Nacional). 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 localidades com suporte que têm ordens de classificação não padrão, consulte a coluna Nome da localidade em Identificadores da ordem de classificação.
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/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/região com suporte é listada em Cadeias de caracteres de país/região. Se o idioma especificado não for associado ao país/região especificado, o idioma padrão do país/região especificado será armazenado na configuração de localidade. Não recomendamos esse formato para cadeias de caracteres de localidade inseridas no código ou serializadas para armazenamento, pois essas cadeias de caracteres são mais prováveis de serem modificadas por uma atualização do sistema operacional do que o formato do 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 “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, será armazenada como Greek_Greece.737 (a página de código OEM para grego). Para obter mais informações páginas de códigos, consulte Páginas de código. Para obter uma lista de páginas de códigos com suporte no Windows, consulte Identificadores de páginas de códigos.
Se você usar somente a página de código para especificar a localidade, o idioma padrão e o país/região do sistema serão usados. Por exemplo, se você especificar “.1254" (turco ANSI) como a localidade em um sistema que está configurado para inglês (Estados Unidos), a localidade armazenada será English_United States.1254. Não recomendamos essa forma, pois isso poderia resultar em comportamento inconsistente.
Um valor locale de C especifica o ambiente em conformidade mínima com ANSI para a conversão em 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 da categoria que não especificados usam a definição de localidade atual. Por exemplo, este código define a localidade atual para todas as categorias como de-DE e 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");
Consulte também
Referência
_create_locale, _wcreate_locale
Cadeias de caracteres de idioma
Cadeias de caracteres de país/região