Международные компоненты для Unicode ( ICU ) - это открытый проект зрелых библиотек C / C ++ и Java для поддержки Unicode , интернационализации программного обеспечения и глобализации программного обеспечения. ICU широко переносится во многие операционные системы и среды. Он дает приложениям одинаковые результаты на всех платформах и между программным обеспечением C, C ++ и Java. Проект ICU - это технический комитет Консорциума Unicode, спонсируемый, поддерживаемый и используемый IBM и многими другими компаниями. [1]
Разработчики) | Консорциум Unicode |
---|---|
Первый выпуск | 1999 г. |
Стабильный выпуск | 68.2 / 17 декабря 2020 г . |
Репозиторий | |
Написано в | C / C ++ (C ++ 11) и Java |
Операционная система | Кроссплатформенность |
Тип | библиотеки для Unicode и интернационализации |
Лицензия | Лицензия Unicode |
Веб-сайт | www |
ICU предоставляет следующие услуги: обработка текста Unicode , полные свойства символов и преобразование наборов символов ; Регулярные выражения Unicode ; полные наборы Unicode; границы символов, слов и строк; сортировка и поиск с учетом языка ; нормализация , преобразование в верхний и нижний регистр и транслитерация скрипта ; комплексная архитектура пакетов локальных данных и ресурсов через Common Locale Data Repository (CLDR); мульти- календарь и часовые пояса ; и основанное на правилах форматирование и анализ дат, времени, чисел, валют и сообщений. ICU исторически предоставляла комплексную услугу по верстке текста для арабского, иврита, индийского и тайского языков, но в версии 54 она устарела и была полностью удалена в версии 58 в пользу HarfBuzz . [2]
ICU предоставляет более широкие возможности интернационализации, чем стандартные библиотеки для C и C ++. ICU 67 поддерживает Unicode 13.0 и обрабатывает удаление Великобритании из регионов ЕС . ICU 64 поддерживает Unicode 12.0 , в то время как ICU 64.2 добавила поддержку Unicode 12.1, то есть единственного нового символа для текущей японской эры Reiwa (но его поддержка также была перенесена в более старые версии ICU до ICU 4.8.2). ICU 58 (с поддержкой Unicode 9.0) - последняя версия, поддерживающая старые платформы, такие как Windows XP , Windows Vista . Поддержка AIX , Solaris и z / OS также может быть ограничена в более поздних версиях (т. Е. Сборка зависит от поддержки компилятора). [3]
ICU исторически использовала UTF-16 и до сих пор использует только для Java; в то время как для C / C ++ поддерживается UTF-8 , [4] включая правильную обработку «недопустимого UTF-8». [5]
ICU 68 не может быть собран с компилятором C ++ 20 [6], но должен быть возможен с 69.1.
Происхождение и развитие
После того, как Taligent стал частью IBM в начале 1996 года, Sun Microsystems решила, что новый язык Java должен лучше поддерживать интернационализацию. Поскольку Taligent имела опыт работы с такими технологиями и была близка географически, их текстовой и международной группе было предложено внести международные классы в Java Development Kit как часть API-интерфейсов интернационализации JDK 1.1 . [7] Большая часть этого кода все еще существует в и пакетах. Дополнительные функции интернационализации добавлялись с каждым последующим выпуском Java.java.text
java.util
Затем классы интернационализации Java были перенесены на C ++ и C [8] как часть библиотеки, известной как ICU4C («ICU для C»). Проект ICU также предоставляет ICU4J («ICU для Java»), который добавляет функции, отсутствующие в стандартных библиотеках Java. ICU4C и ICU4J очень похожи, но не идентичны; например, ICU4C включает API регулярных выражений, а ICU4J - нет. Обе платформы со временем были усовершенствованы для поддержки новых возможностей и новых функций Unicode и Common Locale Data Repository (CLDR).
ICU был выпущен как проект с открытым исходным кодом в 1999 году под названием IBM Classes for Unicode. Позже он был переименован в Международные компоненты для Unicode. [9] В мае 2016 года проект ICU присоединился к консорциуму Unicode в качестве технического комитета ICU-TC , и теперь исходные тексты библиотеки распространяются по лицензии Unicode. [10]
MessageFormat
Частью ICU является класс MessageFormat , система форматирования, которая позволяет любому количеству аргументов управлять формой множественного числа ( plural
, selectordinal
) или более общим выбором стиля switch-case ( select
) для таких вещей, как грамматический род . Эти утверждения могут быть вложенными. [11] JavaScript порт этой библиотеки обычно используются AngularJS разработчиков в сочетании с ngx-translate
, так что простой библиотека ключа на основе может работать с нюансами входов локализации. [12] Пример этой системы может выглядеть так:
# Использование YAML для простоты примера. привет : Привет, {пользователь}! # offset позволяет вычитать категории на указанную сумму перед обработкой. Однако это не влияет на систему точного соответствия. party : { user } пригласил {player_count, plural, offset: 1, = 0 {никто} один {игрок} другой {# Players}} в {user_gender, select, male {his}, female {her}, other { их}} партия.
// Использование простой формы https://messageformat.github.io/messageformat/page-build import msg from './example.yaml' function say ( messageKey , options ) { console . log ( msg [ messageKey ] ( параметры )) }say ( 'hello' , { user : 'Jimmy' }) // Привет, Джимми! say ( 'party' , { user : 'Whales' , player_count : 5000 , user_gender : 'male' }) // Киты пригласили в свою игру 4999 игроков. say ( 'party' , { user : 'Dolphin' , player_count : 20 , user_gender : 'other' }) // Дельфин пригласил 19 игроков в свою игру. say ( 'party' , { user : 'Elephant' , player_count : 1 , user_gender : 'female' }) // Elephant никого не пригласил в свою игру.
ICU MessageFormat был создан путем добавления системы множественного числа и выбора к одноименной системе в Java SE .
Смотрите также
- Продвинутая типографика Apple
- Службы Apple Type для обработки изображений Unicode
- GNU GetText
- Графит (SIL)
- NetRexx (лицензия ICU)
- OpenType
- Панго
- Uconv
- Не описывать
Рекомендации
- ^ «ICU - Международные компоненты для Unicode» . site.icu-project.org .
- ^ «Механизм компоновки - Руководство пользователя ICU» . userguide.icu-project.org .
- ^ «Загрузить ICU 64 - ICU - Международные компоненты для Unicode» . site.icu-project.org . Проверено 20 октября 2019 .
- ^ «UTF-8 - Руководство пользователя ICU» . userguide.icu-project.org . Проверено 3 апреля 2018 .
- ^ "# 13311 (изменить обработку нелегальных UTF-8 на Unicode" лучшие практики ")" . bugs.icu-project.org . Проверено 3 апреля 2018 .
- ^ «ICU 68 - ICU - Международные компоненты Unicode» . site.icu-project.org . Проверено 10 февраля 2021 .
- ^ Лаура Вернер (1999). «Готовим Java к миру: краткая история усилий IBM и Sun по интернационализации» .
- ^ «Руководство пользователя ICU» . userguide.icu-project.org .
- ^ «Комитет управления проектами ICU» .
- ^ «ICU присоединяется к Консорциуму Unicode» . Unicode, Inc. 2016-05-16 . Проверено 1 августа 2016 .
- ^ «Форматирование сообщений» . Руководство пользователя ICU .
- ^ "формат сообщения (js)" . Страницы GitHub .
Внешние ссылки
- Официальный веб-сайт
- Международные компоненты для служб транслитерации Unicode
- Онлайн редактор ICU