すでに作成したプログラムをローカライズしたい..それはかなり大きく(ほぼ5万行)、理想的には、私(プログラマー)が可能な限り最小限の作業を実行できるシステムが必要であり、プログラムに大きな変更を加える必要はありません。まったく不可能です。
gettext()を見てとても気に入りましたが、次のような文字列をどのように変換するかはわかりません。
const char *Colors[] = {
{ "Red" },
{ "Blue" },
{ "Yellow" },
....
};
これは私のプログラムでは非常に一般的です。ここで「Red」をgettext( "Red")に置き換えると、明らかに機能しません。
そこで、OutputFunction(gettext(Colors [Id]))のようなことをすると思いましたが、ローカライズする文字列のリストを取得するにはどうすればよいですか?ローカライズするリストのプログラムから「赤」、「青」、「黄色」を静的に取得できるほどスマートなプログラムはないと思います。
基本的にはサーバーなので、再コンパイルせずに言語を変更する必要はありません(サポートされているすべての言語で大きな問題や煩わしさなしにコンパイルできます)。C++ 0xのconstexprについて考えました。これは完璧です!配列などで機能し、コンパイル時にローカライズする文字列のリストを簡単に取得できます。コンパイラがまだ実装していないのは残念です。
すべての文字列をIDに変更することは、私の側で膨大な量の作業を必要とし、特に新しい文字列ごとに新しいIDを作成することは地獄のように煩わしいため、オプションではありません。上記のようなすべての配列を別の配列に変換する場合も同様です。
それで、何かアイデアはありますか?:/