c++ - 在 C++ 项目中嵌入 XML 字符串资源

标签 c++ xml dictionary cross-platform translation

我有一个需要翻译的 C++ 插件项目。因此,我创建了一个可用于访问字符串的 Dictionary 类。但是,我不完全确定存储字符串的最佳方式是什么。我正在考虑创建一个 XML 文件并将所有字符串存储在那里,并将它们的不同语言环境存储在一个变量名下,例如

<sHello>
  <en_GB>Hello</en_GB>
  <fr_FR>Bonjour</fr_FR>
  ...
</sHello>

但是,我宁愿不必将 XML 文件与其他可分发文件一起分发。插件需要跨平台,所以我在 Visual Studio 中开发 Windows 版本,在 XCode 中开发 Mac OS 版本。最好是,我的 Dictionary 类中用于访问 XML 值的 C++ 代码在两个平台上都是相同的,这意味着我可以将 XML 包含在各自的项目中,而不必担心维护 2 个独立的代码库。

是否可以以不需要分发的方式将 XML 文件作为编译资源嵌入?

最佳答案

分发 xml 文件有什么问题?

如果你真的不想分发 XML 文件,你可以制作一个小的实用程序,将 xml 文件转换为 C++ 源文件,如下所示:

// autogenerated by <put your fancy name here>
// Don't hand edit this source file

const char xmlfile[] = "<sHello>\
  <en_GB>Hello</en_GB>\
  <fr_FR>Bonjour</fr_FR>\
  ...\
</sHello>";

除了 XML,您还可以使用任何其他合适的格式,例如 json 或您认为最适合您需要的任何格式。

关于c++ - 在 C++ 项目中嵌入 XML 字符串资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49033046/

相关文章:

c++ - 使用从具体类继承来实现纯虚方法C++

java - 修改Java中现有的XML样式表处理指令

xml - XSLT 文档 ('' ) 函数不起作用

xml - 如何在 XML 配置文件中指定 Octopus 内置变量名?

swift - 检查字典中的 nil 值 - Swift 3

python - 将字符串转换为字典的简单方法

http - 使用http时使用delete函数删除 map 条目

c++ - C++ 中的线程安全单例使用静态成员实例(无惰性实例化)

c++ - 在 OS X 中针对不同的 SDK 运行应用程序?

c++ - 仅当类重写方法时,XCode 4.3/4.4 类型信息才会在动态加载的共享库中实例化的类丢失