问题标签 [boost-locale]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
346 浏览

c++ - 为 gettext 提升语言环境“转换失败”

当我从boost运行这个示例代码时

我遇到了这样的例外:std::runtime_error("Conversion failed")

仅当我在翻译中使用非 ascii 字符时才会出现问题。

我的文件中的示例内容.mo(命令msgunfmt foo.mo:)

0 投票
2 回答
334 浏览

c++ - 为什么 boost::locale::to_title 没有返回预期的输出?

所以我已经找到了如何在 C++ 字符串中大写单词?,但我尝试了与建议的类似代码,包括 Boost::locale 示例中提供的代码。我还将包括我的代码当前是什么以及预期和实际输出是什么。所以我试图理解为什么我没有得到预期的输出。

代码

预期产出

实际输出

附加信息

  • 操作系统:Windows 10 家庭版 64 位
  • 编译器:Microsoft Visual Studio 15.8.0
  • 平台:x64
  • 非默认编译选项:/std:c++latest
  • 提升版本:106700

编辑#1

似乎 vcpkg 安装的 Boost 没有使用 ICU 编译,这显然是boost::locale::to_title正常运行所必需的。

0 投票
0 回答
840 浏览

c++ - 由于 Ubuntu 18.04 上的 libicu 链接错误,无法静态链接 boost-locale

以下代码:

使用以下标志构建:

链接失败,出现以下错误:

我正在使用 Ubuntu 18.04,两者都libboost-all-dev安装libicu-dev在 Ubuntu 存储库中。我可能缺少使其链接在一起所需的一些琐碎的组件/标志/库,但我无法找到它。

0 投票
4 回答
824 浏览

c++ - 如何将代码点转换为 utf-8?

我有一些读取 unicode 代码点的代码(在字符串 0xF00 中转义)。

由于我使用,我推测以下是否是最好的(和正确的)方法:

?

0 投票
0 回答
147 浏览

c++ - 对 boost::locale 关于“ß”大写的异常行为感到困惑

我正在尝试使用该boost::locale库在我的代码(版本 1.71)中执行字符串的大写和小写转换。

我对“ß”的大写有疑问。为了符合我的代码库中已经存在的单元测试,我希望将字母“ß”大写为“SS”。这应该不是问题,因为据我了解这是预期的行为(https://www.boost.org/doc/libs/1_71_0/libs/locale/doc/html/conversions.html)。

这是此页面上提供的示例的副本以供参考:

Upper GRÜSSEN

Lower grüßen

Title Grüßen

Fold grüssen

但是,当我在代码中使用该方法时,情况并非如此。应用大写方法时,“ß”保持为“ß”。

boost::locale我很困惑,在库源中找到了以下示例:

我尝试编译它,这是我得到的结果:

强调部分:

我真的不明白这句话是怎么回事。实际的预期行为是什么?

0 投票
1 回答
15 浏览

string - Boot.Locale 的“线性/连续文本块”是什么意思?

我阅读 Boost.Locale: Design Rationale并且有章节Why most parts of Boost.Locale work only on linear/contiguous chunks of textlinear/contiguous chunks of text在这种情况下意味着什么?

0 投票
1 回答
196 浏览

c++ - 带有 boost::locale::normalize 的 bad_cast 错误

我正在尝试将包含以utf编码的txt文件内容的字符串转换为unicode字符串,使用boost并在此之后对其进行规范化。不幸的是,我得到了 bad_cast 错误。任何人都可以帮忙吗?代码:

0 投票
1 回答
133 浏览

c++ - 为什么 boost::locale::date_time 中的 std::bad_cast 异常适用于全局对象而不是本地对象?

我在使用 boost::locale::date_time 库编写包装类时遇到问题。具体来说,我无法从我的班级创建一个全局对象,尽管除此之外一切正常。

这是相关的示例代码:

正如您在代码中看到的,我使用静态成员来确保在第一次创建 DateTimeWrapper 对象时初始化全局语言环境。通常,这可以防止在我创建 boost::locale::date_time 成员时引发 std::bad_cast 异常。但是,当创建的第一个 DateTimeWrapper 对象是全局实例时,我仍然从该行收到异常。

请注意,通过调试器,我可以确认 Init_Global_Locale() 方法中的所有行都在构建全局对象期间运行。此示例代码还在同一个源文件中声明 global_date_time_object 之前声明了 DateTimeWrapper::m_Global_Locale_Initialized,因此我知道这里的初始化顺序不是问题(无论如何通过调试器进行确认)。

那么为什么代码适用于本地对象而不适用于全局对象,即使我可以看到所有代码行都以正确的顺序运行,对于两个版本?

0 投票
0 回答
182 浏览

c++ - 如何使用 Boost.Locale 和 Boost.Predef 解决 C++WinRT 项目中的 vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker 不匹配问题?

我正在开发一个 C++/WinRT 项目,并希望在其中使用 Boost (1.73.0) 语言环境。受Microsoft 博客文章的启发,我已经替换了对库源中不受支持的 WinApi 函数的调用,并使用windows-api=store. 我设法构建了所有预期的库变体(arm / x64,debug / release)并继续构建 UWP 应用程序。这就是我现在卡住的地方。构建无法与以下输出链接:

vccorlibd.lib(init.obj):错误 LNK2038:检测到“vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker”不匹配:值“1”与 MSVCRTD.lib(app_appinit.obj) 中的值“0”不匹配

vccorlibd.lib(init.obj):错误 LNK2005:__crtWinrtInitType 已在 MSVCRTD.lib(app_appinit.obj) 中定义

触发失败的行:

我的设置是 Visual Studio 17 和 19,SDK 10.0.19041.0。我已经尝试过针对类似问题提出的解决方案,但无济于事。我在boost_1_73_0/libs/locale/src/win32目录中所做的修改如下:

api.h

lcid.cpp

更新

我发现,这个问题实际上是由包含<boost/predef.h>api.h中引起的,我在适当的时候用它来定义BOOST_PLAT_WINDOWS_RUNTIME宏。但是,我仍然不知道如何处理这种情况。有人可以指点我的地方吗?谢谢你。

0 投票
0 回答
123 浏览

boost - cmake, boost locale 和一个静态库

我有两个应用程序和一个两者都使用的静态库。

这三个都使用 CMake 作为构建系统。

我想本地化我的应用程序。

我或多或少了解如何本地化应用程序,但我不确定我应该如何本地化我的静态库。

如果它是一个动态库,我可以将编译后的翻译与二进制文件一起安装并访问它们。

但是静态库只与开发人员相关。最终产品中不再有库。我会以某种方式需要将库的编译翻译传输到应用程序。

当为我的一个应用程序调用 make install 时,我的静态库的翻译也需要安装。

如何使用 CMake 实现这样的目标?