一个统一码(unicode)字符串类,支持本地化 。
Wt提供咯这个字符串类型,以协助在用户界面上处理统一码文本文字,并且使用消息资源集来为本地化文字提供支持。
一个WString可以从一个std::string、std::wstring或者C语言类型的字符串(const char *和const wchar_t *)构造而来,并且能够转换成其中的任一种 ,在这个过程中会将这个Wt 程序所运行于其上的网页服务器的语言区域选项考虑在内 。你可以不理会网页服务器上的本地语言区域选项 ,将 WString 与UTF8 编码的std::string互相转换。
通过使用静态函数WString::tr() (或者 WWidget::tr() ),你可以构造一个本地化字符串 。键 (key)被用来从程序的消息资源集中提取它的当前值。
字符串中的参数占位符,用{ n }表示第 n 个参数,可以使用 arg(int) 和arg(std::string)来设置值进行代替 。
WString被所有的内置部件用于显示文字。通过调用WApplication::setLocale()或者WApplication::refresh() ,可以使每个WString 通过调用 refresh() 来重新计算它在新的本地语言中的值。通过这种方式,整个用户界面的内容就能适应一个可能会改变的本地化语言。
要想利用WString 所提供的本地化属性,你应当在自己设计的部件类中所有显示文字的地方使用WString 。这样 ,你自己的部件就会自动地 、不费吹灰之力地,参与到由 WApplication::setLocale() 触发的语言切换过程中 。
这个字符串类仅提供基本的操作功能。你应当将它转换成一个标准库的字符串类,以进行字符串内容的操作以及在其上使用字符串算法。特别地 ,我们建议使用转换方法 toUTF8() 、 fromUTF8() 来在 WString 与UTF8 编码的std::string之间转换。 这样,你就可以支持整个统一码的字符集 ,并且还对标准的 7位 ASCII 字符集进行后向兼容。由于WString 内部使用UTF8 编码,而这个库也是使用UTF8 编码来与浏览器进行通信的 ,所以实际上没有转换所需的开销。仅仅是当你使用那些需要知道 以字符个数所表示的字符串的实际长度 的字符串算法时 ,你才需要转换成一个宽字符的字符串 ,例如std::wstring。
参见 :
HxLauncher: Launch Android applications by voice commands