【问题标题】:C++ l10n, i18n solution with GNU gettext, libunistring使用 GNU gettext、libunistring 的 C++ l10n、i18n 解决方案
【发布时间】:2010-10-03 10:11:55
【问题描述】:

我正在编写一个独立于语言环境的 C++ 应用程序,因此我决定使用 UTF-16 作为字符串/文本的内存表示(应用程序应尽可能独立于平台)。为了本地化应用程序的消息,我想使用 GNU 的 gettext 库。由于这个库似乎在内部使用GNU's libunistring 库,我也想使用这个。

这对 i18n、l10n 来说是一个好的解决方案吗?我的意思是我的 C++ 类中有很多 C 代码(我没有找到 libunistring 库的 C++ 包装器)。

斯蒂芬

PS:这是我的第一个大型 C++ 应用程序。

【问题讨论】:

  • 这是一个 gui 应用程序吗?如果这是你用什么工具包写的?
  • 对,应该是GUI应用,不过想先写个命令行界面,所以还没选工具包。
  • 关于 GUI 的问题是有效的,例如 Qt 具有 Unicode 字符串 (QString) 的内置表示。和不同的(非gettext)本地化模型。这可能是更容易(但不一定更好)的方法。
  • @Pawel Dyda:我以前不知道 Qt 的本地化模型 - 会觉得很有趣。

标签: c++ c localization internationalization


【解决方案1】:

【讨论】:

  • libunistring 库还支持 UTF-8 作为内存表示,所以使用它没有问题。你知道一个更好的图书馆来做这件事吗? libunistring 的文档似乎不太好。
  • @Downvoter:在 C++ 代码中使用 UTF-16 可能会出现问题,尤其是当需要在 UTF-16 和 UTF-8 之间进行转换时。我没有看到拒绝此答案的正当理由。
【解决方案2】:

如果它是一个用 c++ 编写的 gui 应用程序,qt 可能是一个很好的工具包。 它包括自己的字符串类和自己的国际化支持:

http://doc.trolltech.com/4.7/internationalization.html

您也可以自己使用核心的非 gui 类(它们在自己的 QtCore 命名空间中,与 QtGui 命名空间分开,并且编译为单独的动态链接库)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多