我想本地化一个我已经编写的程序。它相当大(几乎有5万行),理想情况下我想要一个系统让我(程序员)做最少量可能的工作,并且没有重大改变 - 如果可能的话,根本没有。C++:如何本地化一个已经编写的程序
我看着gettext的(),喜欢它了很多,但它是我不清楚它如何转化的字符串,如这些:
const char *Colors[] = {
{ "Red" },
{ "Blue" },
{ "Yellow" },
....
};
这是非常共同在我的计划。这里更换带有gettext(“红色”)的“红色”显然不起作用。
所以我想我会做类似OutputFunction(gettext(Colors [Id])),但是我怎样才能得到一个字符串列表本地化?我怀疑任何程序都足够聪明,可以静态地从本地化列表中获得“红色”,“蓝色”,“黄色”。
因为它基本上是一个服务器,所以没有必要在没有重新编译的情况下改变语言(我可以在没有任何重大问题或烦恼的情况下为每种支持的语言编译它),我想到了C++ 0x的constexpr,完美!它可以在数组/等工作,我很容易得到一个字符串列表本地化在编译时间..太糟糕了,没有编译器实现它呢。
将所有字符串更改为ID不是一个选项,因为它需要大量的工作,尤其是为每个新字符串创建一个新的ID会让人讨厌。这同样适用于将所有数组转换为其他数组。
那么,有什么想法? :/
不是说这对你有帮助,但是就像旁边一样,即使'constexpr'可用,我也怀疑它会帮助你。 'constexpr'只有在函数本身可以在编译时进行评估的情况下才能正常工作,所以如果修改过的'gettext'是基于打开和读取本地化文件的,那么无论如何你都无法使它成为'constexpr'(因为打开&读取文件不能在编译时完成)。鉴于大多数这样的系统都是基于这种方式的,我怀疑'constexpr'确实会有帮助。 – GRB 2009-09-14 01:49:27