标准C / C ++库能在多长时间内解决上述问题?我可以通过平台轻松制作软件吗?该领域的标准/最佳实践是什么?
答案 0 :(得分:4)
我会避免使用wchar_t
或std::wstring
,因为此数据类型在不同环境中的大小不同。例如,在Windows上它是16位,而在Unix系统上它是32位。哪个要求麻烦。
如果您没有时间/资源来实现Unicode标准(最低限度),最好使用std::string
作为UTF-8字符的容器。虽然您必须知道,在UTF-8的情况下,您将不得不处理多字节编码(1个字符可能对应于1个或更多字节)。
至于库 ICU 是需要考虑的事项,它将允许您在编码之间进行转换,转换为上/下/标题情况等。它还可以帮助区域设置。
Marius 所提到的翻译通常是通过一个函数来完成的,该函数通过您提供的键查找表(无论是字符串,id还是其他任何内容),最后返回翻译字符串
如果你坚持使用每个平台上相同的数据类型,移植将会顺利进行,更不用说 ICU 是一个跨平台的库,所以必须解决这个问题。
答案 1 :(得分:0)
wchar_t
或std::wstring
是您的朋友。将它们与适用的宽字符函数和wcscpy()
或std::wcout
等对象一起使用。
您还将为每个语言环境使用字符串表,并使用类似std::wstring getLocalizedString(MY_MESSAGE)
的函数在字符串表中查找当前语言环境中的常量MY_MESSAGE
。你如何实现字符串表取决于你,将这些东西存储在外部文件中总是一个好主意。