Международные компоненты для Unicode

редактировать
Библиотека программного обеспечения
Международные компоненты для Unicode
Разработчик (и) Консорциум Unicode
Первоначальный выпуск1999
Стабильный выпуск 67.1 / 22 апреля 2020 г.; 5 месяцев назад (2020-04-22)
Репозиторий Измените это в Викиданных
Написано наC /C ++ (C + +11) и Java
Операционная система Кросс-платформенная
Тип библиотеки для Unicode и интернационализации
Лицензия Лицензия Unicode
Веб-сайтwww.icu-project.org

Международные компоненты для Unicode (ICU ) является открытым исходным кодом проект зрелых библиотек C /C ++ и Java для поддержки Unicode, программного обеспечения интернационализации и глобализации программного обеспечения. ICU широко переносится во многие операционные системы и среды. Он дает приложениям одинаковые результаты на всех платформах и между программным обеспечением C, C ++ и Java. Проект ICU является техническим комитетом Консорциума Unicode и спонсируется, поддерживается и используется IBM и многими другими компаниями.

ICU предоставляет следующие услуги: Unicode обработка текста, полные свойства символов и преобразование набора символов ; Юникод регулярные выражения ; полные наборы Unicode; границы символов, слов и строк; с учетом языка сопоставление и поиск; нормализация, преобразование верхнего и нижнего регистра и транслитерация скрипта ; комплексная локаль архитектура пакета данных и ресурсов через Common Locale Data Repository (CLDR); мульти- календарь и часовые пояса ; и основанное на правилах форматирование и анализ дат, времени, чисел, валют и сообщений. ICU исторически предоставляла услугу сложной текстовой компоновки для арабского, иврита, индийского и тайского языков, но она устарела в версии 54 и была полностью удалена в версии 58 в пользу HarfBuzz.

. 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 также ограничена в более поздних версиях.

ICU исторически использовал UTF-16, и по-прежнему работает только для Java; в то время как для C / C ++ поддерживается UTF-8, включая правильную обработку «недопустимого UTF-8».

Содержание
  • 1 Происхождение и развитие
  • 2 MessageFormat
  • 3 См. также
  • 4 Ссылки
  • 5 Внешние ссылки
Происхождение и развитие

После того, как Taligent стал частью IBM в начале 1996 года, Sun Microsystems решили, что новый язык Java должен лучше поддерживать интернационализацию. Поскольку Taligent имела опыт работы с такими технологиями и была близка географически, их группе Text и International было предложено внести международные классы в Java Development Kit в рамках интернационализации JDK 1.1 API. Большая часть этого кода все еще существует в пакетах java.text и java.util . Дополнительные функции интернационализации добавлялись с каждым последующим выпуском Java.

Затем классы интернационализации Java были перенесены на C ++ и C как часть библиотеки, известной как 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. В мае 2016 года проект ICU присоединился к консорциуму Unicode в качестве технического комитета ICU-TC, и исходные тексты библиотеки теперь распространяются по лицензии Unicode.

MessageFormat

Часть ICU является MessageFormat класс, система форматирования "локализация 2.0" (l20n), которая позволяет любому количеству аргументов управлять формой множественного числа (множественное число, selectordinal) или более общий switch-case выбор стиля (select) для таких вещей, как грамматический род. Эти утверждения могут быть вложенными. Порт JavaScript этой библиотеки обычно используется разработчиками Angular.js в сочетании с ngx-translate, так что простая библиотека на основе ключей может обрабатывать нюансы входы локализации. Пример для этой системы может выглядеть так:

# Использование 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 импортировать сообщение из функции './example.yaml' say (messageKey, options) {console.log (msg [messageKey ] (options))} 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 как систему l20n. Термин происходит от одноименной библиотеки JavaScript от Mozilla с аналогичной функциональностью, которая позже была заменена другой системой JavaScript, названной «Fluent».

ICU MessageFormat был создан путем добавления системы множественного числа и выбора к системе с идентичным именем в Java SE.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-24 04:26:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте