c++ - 一种跨平台的本地化资源格式

标签 c++ file localization internationalization format

我想将我的替换字符串(德语、法语等)保存为标准的文件格式,并可在 Windows 和 Linux 平台上使用。这样VC++资源文件就直接排除了。

其他人喜欢使用什么文件格式来保存这些本地资源?我希望该格式支持的另外两个功能是:

  1. 索引 l10n 字符串的“键”本身就是一个英文字符串,而不是一个枚举。
  2. 格式可以携带消息摘要,所以我可以验证没有篡改。

我的意图是使用一个函数(例如 wstring foo = GetString(L"I am %1% years old");)来提供 boost::format 或 boost::wformat职能。请注意,提供给 GetString 的键是一个字符串,而不是一个枚举。

显然,我可以使用我想要的任何 XML 格式(或其他格式)。但我宁愿使用有点标准的东西。

最佳答案

对于标准格式,使用 gettext和 msgfmt 制作二进制 .mo 文件。该格式来自 Unix,但可跨平台使用。 Audacity,即 Linux/Mac/Windows,都在使用它。

1) 键英文字符串。
2) 标准格式没有防篡改方法,因此您需要自己编写。

还有一个编辑器 poEdit 和一个 emacs 模式,用于处理中间文本 .po 格式的翻译。

关于c++ - 一种跨平台的本地化资源格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264969/

相关文章:

asp.net - 如何访问 .ashx 文件中的本地化资源?

c++ - _beginthread 疑似内存泄漏

c++ - Windows API编程为什么需要RegisterClass?

c++ - 为什么这只是一个空白的输出文件

c++ - 在 C++ 中创建一个用于不断计算数学函数的 dll

file - 打开输入 VB 时指定编码

ruby - Ruby 中是否有独立的 i18n 库?

file - 在 Vim 的 C/C++ 代码中打开声明为 #include 的光标下的文件?

C 在字符串中搜索单词

java - 何时使用国家代码和语言代码