我想本地化我已经编写的程序。它相当大(几乎 50k 行),理想情况下,我想要一个允许我(程序员)做尽可能少的工作的系统,并且不需要对程序进行重大更改 - 如果可能根本没有。
我查看了 gettext() 并非常喜欢它,但我不清楚它将如何翻译如下字符串:
const char *Colors[] = {
{ "Red" },
{ "Blue" },
{ "Yellow" },
....
};
这在我的程序中很常见。这里用 gettext("Red") 替换 "Red" 显然是行不通的。
所以我想我会做类似的事情,OutputFunction(gettext(Colors[Id])),但是我怎样才能获得要本地化的字符串列表呢?我怀疑任何程序都足够聪明,能够从本地化列表中静态地获取“红色”、“蓝色”、“黄色”。
由于它基本上是一个服务器,因此无需重新编译即可更改语言(我可以为每种支持的语言编译它而没有任何重大问题或烦恼),我想到了 C++0x 的 constexpr,这将是完美的!它可以在数组/等中工作,我很容易在编译时获得要本地化的字符串列表。太糟糕了,还没有编译器实现它。
将所有字符串更改为 ID 不是一种选择,因为这需要我做大量工作,尤其是为每个新字符串创建一个新 id 会很烦人。这同样适用于将上述所有数组转换为其他数组。
那么,有什么想法吗?:/