ICU против Boost Locale в C ++ - PullRequest
16 голосов
/ 29 февраля 2012

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

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

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

Обратите внимание на новые функции Unicode в C ++ 11 при сравнении этих библиотек.

Ответы [ 3 ]

16 голосов
/ 16 марта 2012

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

  1. API ужасен с точки зрения современного дизайна C ++ и плохо работает со стандартной библиотекой C ++
  2. Этоориентирован на UTF-16
  3. Это инструменты перевода сообщений далеки от совершенства, поэтому Boost.Locale использует модель Gettext

См .: http://www.boost.org/doc/libs/1_49_0/libs/locale/doc/html/rationale.html#why_icu

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

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

3 голосов
/ 03 октября 2013

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

1 голос
/ 04 марта 2012

ICU был разработан экспертами по интернационализации, в то время как повышение было разработано программистами C ++.

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

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

...