c++ - C++ 中的 I18N 资源

标签 c++ internationalization

我正在玩 c++ 中的语言环境和 I18N 的东西,并且一直在寻找真实世界的例子。我已经阅读了他的 book 中关于 I18N 的 Josuttis 章节。 (C++11 的第 2 版将于 2012 年 4 月发布),并发现它很有用,但没有可借鉴的真实世界示例我不知道我是否遵循最佳实践正在犯初学者错误。 StackOverflow 可以为我在网络上和打印品上提供哪些资源来用 C++ 做 I18N 的事情?

还有哪些可用于 C++ 的库使 i18n 更容易?标准库中没有什么需要?乍一看,标准库中似乎不存在对 UTF8 的支持。

编辑:

在做了更多阅读之后,似乎 C 和 C++ 都是 Unicode“不可知论”。似乎还需要使用第三方库来处理以 Unicode/UTF8/16/32 编码的数据。关键在于标准库本身只考虑 ISO 8859 和相关字符页面,这些页面会根据您的语言环境设置而变化。这意味着我可能想将 ICU 库用于字符串,而不是使用 std::string 甚至 std::wstring

最佳答案

您已被指向 GNU gettext ,它允许您在运行时用本地化版本替换文字字符串 - 本地化的一个方面(这是在您完成国际化之后发生的事情,当有人在特定语言环境中实际使用您的国际化代码时)。您还被指向 Boost (特别是 Boost.Locale )库;对于与 C++ 相关的任何事情,这通常是一个很好的答案。

您可能会看到的另一个地方是ICU (Unicode 的国际组件)项目。作为数据源,您可以查看 CLDR (Common Locale Data Repository)作为不同地区信息的来源; Unicode 网站还包含许多关于不同文化其他方面的信息,因为它涉及多种语言。

作为目前的最后一个资源,一个相当专业的资源,有 Olson Time Zone database ,每年都会更新多次,以跟踪不同国家/地区更改冬季和夏季(夏令时和标准)时间之间何时更改规则的方式。

关于c++ - C++ 中的 I18N 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/195497/

相关文章:

java - 在 JTextPane 中显示乌尔都语字符

c++ - 重载 "function call"运算符有什么用?

c++ - MFC...如何更改名称

android - 用于android人脸识别的openCV显示 "mat not continuous"错误

c++ - std 函数 std::_Rb_tree_rebalance_for_erase () 中的段错误

c++ - VK_DEFINE_NON_DISPATCHABLE_HANDLE 是什么意思

internationalization - 如何在 plone 4 实例的基础上覆盖翻译

javascript - 如何在 AngularJS 应用程序中支持用户可选择的区域设置

java - Struts 1.2.9 - 关于自定义国际化的问题

powershell - 非英语系统上的新 SMBShare