在 C++ 项目中嵌入 XML 字符串资源
Embedding XML string resource in C++ project
我有一个需要翻译的 C++ 插件项目。因此,我创建了一个可用于访问字符串的字典 class。但是,我不完全确定存储字符串的最佳方式是什么。我正在考虑创建一个 XML 文件并将所有字符串存储在其中,并将它们的不同语言环境存储在一个变量名下,例如
<sHello>
<en_GB>Hello</en_GB>
<fr_FR>Bonjour</fr_FR>
...
</sHello>
但是,我宁愿不必将 XML 文件与其他可分发文件一起分发。插件需要跨平台,所以我在 Visual Studio 中开发 Windows 版本,在 XCode 中开发 Mac OS 版本。最好是,我的字典 class 中用于访问 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++ 插件项目。因此,我创建了一个可用于访问字符串的字典 class。但是,我不完全确定存储字符串的最佳方式是什么。我正在考虑创建一个 XML 文件并将所有字符串存储在其中,并将它们的不同语言环境存储在一个变量名下,例如
<sHello>
<en_GB>Hello</en_GB>
<fr_FR>Bonjour</fr_FR>
...
</sHello>
但是,我宁愿不必将 XML 文件与其他可分发文件一起分发。插件需要跨平台,所以我在 Visual Studio 中开发 Windows 版本,在 XCode 中开发 Mac OS 版本。最好是,我的字典 class 中用于访问 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 或您认为最适合您需要的任何格式。