Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost.Locale: Locale Generation

Boost , ,

Locale Generation

Каждая локализация определяется конкретным идентификатором локализации, который содержит обязательную часть (Язык) и несколько дополнительных частей (Страна, Вариант, ключевые слова и кодирование символов std::string). Повышаю. Locale использует POSIX-конвенцию именования для локалов, т.е. локал определяется как language[_COUNTRY][.encoding][@variant], где lang — это название языка ISO-639, такое как «en» или «ru», COUNTRY — это идентификатор страны ISO-3166, такой как «US» или «DE», кодирование — это восьмибитное кодирование символов, такое как UTF-8 или ISO-8859-1, а вариант — дополнительные опции для специализации локала, такие как euro или calendar=hebrew, см. Variant.

Обратите внимание, что каждая локализация должна включать кодирование, чтобы правильно обрабатывать строки на основе char.

Basics

Генератор класса предоставляет инструменты для генерации необходимых нам локаций. Самый простой способ использования генератора — создать локальную сеть и сделать ее глобальной:

#include <boost/locale.hpp>
using namespace boost::locale;
int main()
{
generator gen;
// Create locale generator
std::locale::global(gen(""));
// "" - the system default locale, set
// it globally
}

Конечно, мы также можем указать местоположение вручную

std::locale loc = gen("en_US.UTF-8");
// Use English, United States locale
Note
  • Даже если ваше приложение использует широкие строки везде, вы должны указать 8-битное кодирование для использования для 8-битных операций ввода-вывода потока, таких какcoutилиfstream.
  • Локальность по умолчанию определяется переменными средыLC_CTYPE,LC_ALLиLANGв этом порядке (то естьLC_CTYPEпервый иLANGпоследний). В Windows библиотека также запрашивает опциюLOCALE_USER_DEFAULTв API Win32, когда эти переменные не установлены.

Совет: Предпочтительнее использовать кодировку UTF-8 Unicode по сравнению с 8-битными кодировками, такими как ISO-8859-X.

По умолчанию генерируемые локализации включают все поддерживаемые категории и типы символов. Однако, если в вашем приложении используются только 8-битные кодировки, только кодировки с широкими символами или только конкретные грани, вы можете ограничить генерацию граней конкретными категориями и типами символов, назвав категории и символы функции-члены класса генератор .

Например:

generator gen;
gen.characters(wchar_t_facet);
gen.categories(collation_facet | formatting_facet);
std::locale::global(gen("de_DE.UTF-8"));

Variant

Вариантная часть локализации (часть, которая приходит после символа @) зависит от локализации back-end.

Non ICU Backends

POSIX и std бэкэнды используют свои собственные соглашения об именах ОС и зависят от текущей конфигурации ОС. Например, типичный дистрибутив Linux предоставляет euro для выбора валюты, cyrillic и latin для спецификации языкового скрипта.

winapi back-end не поддерживает никаких вариантов.

ICU Backend

ICU предоставляет широкий спектр вариантов локальных вариантов. Подробные инструкции читать This Ручные страницы ICU.

Однако в целом он представлен как набор пар ключ = значение, разделенных с полуколоном ";" Например: «@collation=phonebook;calendar=islamic-civil».

В настоящее время ICU поддерживает следующие ключи:

  • calendar— календарь, используемый для текущей местности. Например:gregorian,japanese,buddhist,islamic,hebrew,chinese,islamic-civil.
  • collation— порядок сопоставления, используемый для этих местностей, напримерphonebook,pinyin,traditional,stroke,direct,posix.
  • currency- валюта, используемая в этой местности, стандартный 3-буквенный код, такой как USD или JPY.
  • numbers— используемая система нумерации, например:latn,arab,thai.

Пожалуйста, обратитесь к документации CLDR и ICU для точного списка ключей и значений:

Статья Boost.Locale: Locale Generation раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:13:45/0.0084528923034668/1