Подтвердить что ты не робот

ICU против Boost Locale в С++

Я рассматриваю использование ICU или Boost Locale.

Каковы плюсы и минусы каждого?

Я понимаю, что оба используют ICU, но ICU скрыт Boost Locale. Согласно страница Boost Locale rational: "... весь API ICU скрыт за непрозрачными указателями, и пользователи не имеют к нему доступа".

При сравнении этих библиотек учитывайте новые возможности Unicode в С++ 11.

4b9b3361

Ответ 1

ICU - очень хорошая библиотека, но имеет свои недостатки:

  • API ужасен с точки зрения современного дизайна на С++, и он не очень хорошо работает со стандартной библиотекой С++.
  • Он ориентирован на UTF-16
  • Инструменты перевода текста далеко не идеальны, поэтому Boost.Locale использует модель Gettext

Смотрите: http://www.boost.org/doc/libs/1_49_0/libs/locale/doc/html/rationale.html#why_icu

Boost.Locale делает локализацию на С++, а также позволяет использовать другие back-end, кроме ICU (конечно, ICU лучше), так что во многих случаях Boost.Locale предоставляет вам лучшую альтернативу локализации, поскольку она проще, предназначена для современных С++ и, как правило, проще в использовании.

Конечно, если вам нужны очень сложные алгоритмы, которые не поддерживаются Boost.Locale или все, что ваше приложение делает, это обработка в Юникоде, тогда ICU может быть лучше, кроме этого Boost.Locale лучше для локализации приложений на С++.

Ответ 2

Boost.Locale использует ICU в качестве базового сервера по умолчанию. Некоторые другие бэкэнды могут использоваться также Boost.Locale. Вы можете подумать, что Boost.Locale лучше взаимодействует с ICU.

Ответ 3

ICU был разработан специалистами по интернационализации, а boost был разработан программистами на С++.

Несмотря на то, что сильный и элегантный С++, форсинг сильно искажает интернационализацию. Теперь boost - это большая коллекция библиотек, а некоторые - лучше, чем другие. Но ICU устойчив во всем, и он используется как основа почти всем, кроме Microsoft.

Итак, если вы хотите прочной интернационализации, пойдите в ICU. Если вам нужен ультрасовременный С++ (но i18n вроде шаткий), поднимитесь.