跨平台本地化资源格式

时间:2011-03-10 19:40:57

标签: c++ file localization internationalization format

我希望将我的替换字符串(德语,法语等)保留为标准的文件格式,并且可以在Windows和Linux平台上使用。因此,立即排除VC ++资源文件。

其他人喜欢使用哪种文件格式来保留这些l10n资源?我希望支持的格式还有两个功能:

  1. 索引l10n字符串的“键”本身就是英文字符串,而不是枚举。
  2. 格式可以携带消息摘要,因此我可以验证没有篡改。
  3. 我的意图是使用一个函数(例如wstring foo = GetString(L"I am %1% years old");)来提供boost :: format或boost :: wformat函数。请注意,提供给GetString的键是一个字符串,而不是枚举。

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

3 个答案:

答案 0 :(得分:1)

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

1)键 英文字符串 2)标准格式没有防篡改方法,所以你需要自己做饭。

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

答案 1 :(得分:0)

我们使用了一个名为I18N的库(我确信有大量的实现以相同的方式命名)。密钥和翻译存储在.txt文件中,并使用一些哈希来加快查找速度。我们对其进行了一些修改以改进上下文 - 它使用了文件名的上下文,因此您无法在同一文件中使用相同字符串文字的多个翻译。

用法类似于Translated = String :: Format(I18N(“我是%d岁”),年);

我们会定期针对源代码运行单独的可执行文件,以解析所有各种I18N条目,重新整理它们,并使用任何新增内容更新文件。

不幸的是我在源代码中找不到作者的任何属性。

答案 2 :(得分:0)

不确定是否有,但如果有机会在lisa.org上提到:http://www.lisa.org/Standards.30.0.html