我在考虑使用ICU或Boost Locale。
它们各有利弊,您需要权衡一下。
我了解这两个库都使用ICU,但是ICU被Boost Locale隐藏起来了。根据Boost Locale的理念页面:“...整个ICU API都被封装在不透明指针后面,用户无法访问它。”
请在比较这些库时考虑C++11中的新Unicode功能。
ICU是一款非常好的库,但它存在一些缺点:
参见: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++应用程序。
ICU是由国际化专家设计的,而boost是由C++程序员设计的。
尽管C++的boost强大而优雅,但其国际化方面存在很多问题。 现在,boost是一个庞大的库集合,有些做得比其他的好。 但ICU从头到尾都非常扎实,并且除了微软之外,几乎每个人都将其用作基础。
因此,如果您想要可靠的国际化,请选择ICU。 如果您想要前沿的C++(但国际化方面可能不太稳定),请选择boost。