我想本地化一個我已經編寫的程序。它相當大(幾乎有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