icu
Комплексная библиотека для поддержки интернационализации (i18n) и локализации (l10n) в приложениях. Она предоставляет полный набор инструментов для работы с Unicode, преобразования текста, форматирования данных с учетом языковых стандартов и других операций, необходимых для создания приложений, поддерживающих множество языков и культур. Библиотека используется в операционных системах, браузерах и корпоративных приложениях для обеспечения кросс-платформенной поддержки интернационализации.
Особенности
- полная поддержка стандарта Unicode и всех связанных с ним технологий;
- форматирование чисел, дат, времени, валют с учетом локали;
- преобразование текста (транслитерация, нормализация, регистр);
- анализ и обработка текста (разбивка на слова, предложения, символы);
- поддержка двунаправленного текста (BIDI) для языков с написанием справа налево.
Основные компоненты
ICU состоит из нескольких модулей, каждый из которых отвечает за определенный аспект интернационализации и работы с Unicode (подробнее с документацией можно ознакомиться здесь).
Обработка Unicode и текста
Библиотека предоставляет фундаментальные функции для работы с текстом в формате Unicode, включая нормализацию, преобразование регистра, поддержку различных систем письма и обработку специальных символов.
Ключевые функции обработки текста:
u_strToUpper(),u_strToLower(),u_strToTitle()— преобразование регистра с учетом локали;unorm_normalize()— нормализация Unicode (NFC, NFD, NFKC, NFKD);u_strHasMoreChar32()иu_strNext32()— итерация по символам Unicode (code points);u_getIntPropertyValue()— получение свойств символов Unicode;ubidi_open()иubidi_setPara()— обработка двунаправленного текста (BIDI).
Форматирование данных с учетом локали
ICU предоставляет мощные средства для форматирования чисел, дат, времени, валют и других типов данных в соответствии с правилами конкретного языка и региона. Эти функции учитывают все особенности локали, включая разделители, валютные символы и порядок элементов.
Функции форматирования:
icu::NumberFormat— форматирование чисел (целых, дробных, процентов, валют);icu::DateFormat— форматирование дат и времени (различные стили, календарные системы);icu::MessageFormat— форматирование сообщений с плюрализацией и выбором по полу;icu::PluralFormatиicu::PluralRules— работа с формами множественного числа;icu::MeasureFormat— форматирование единиц измерения.
Преобразования кодировок и текста
Библиотека включает систему преобразования текста между различными кодировками, а также инструменты для транслитерации и других преобразований текста. Поддерживаются сотни кодировок, включая все современные стандарты.
Функции преобразования:
icu::Converter— преобразование между различными кодировками (ICU4C:ucnv_open(),ucnv_convert());icu::Transliterator— транслитерация текста между системами письма;icu::IDNA— обработка доменных имен в международных форматах (IDNA 2003/2008);icu::StringPrep— подготовка строк по стандарту SASLprep, Nameprep и другим.
Анализ текста и границ
ICU предоставляет средства для лингвистического анализа текста, включая определение границ символов, слов, предложений и строк. Это особенно важно для правильного отображения текста, переноса слов и текстового поиска.
Функции анализа:
icu::BreakIterator— определение границ символов, слов, предложений и строк;icu::CharsetDetector— автоматическое определение кодировки текста;icu::Collator— сравнение и сортировка строк с учетом локали;icu::StringSearch— поиск подстрок с учетом особенностей языка.
Календари и временные зоны
Библиотека поддерживает различные календарные системы (григорианский, исламский, еврейский, китайский и др.) и предоставляет инструменты для работы с временными зонами по всему миру.
Функции работы с календарями и временем:
icu::Calendar— абстракция календаря с поддержкой множества календарных систем;icu::TimeZone— работа с временными зонами (конвертация, получение смещений);icu::SimpleDateFormat— форматирование дат и времени для конкретного календаря;- Расчеты с датами (добавление, вычитание, получение полей).