2010-07-26 118 views
10

我在這裏看一些C源代碼和我發現這一點:下劃線功能

fprintf(stderr, _("Try `%s --help' for more information.\n"), command); 

我已經看到下劃線當我wxWidget一看,我看它是用來實現國際化。我發現它非常可怕(最不直觀的名字),但我認爲這只是另一個奇怪的wxWidget慣例。

現在我再次在一些Alsa源代碼中找到它。有誰知道它來自哪裏?

+1

這個名字實際上並不直觀,我認爲他們大部分時間只會輸入較少的字符。 – 2010-07-26 15:00:51

+0

想了解這一點,...... 2年後?地獄,我覺得這麼老了......我想這個名字確實是這樣選擇的,以便儘量減少翻譯現有節目的努力。 – Dacav 2013-09-23 12:19:39

回答

11

它來自GNU gettext,封裝旨在緩解國際化過程。 _()函數只是一個字符串包裝器。這個函數基本上用系統語言中的翻譯替換運行時給定的字符串(如果可用的話)(即,如果他們用該程序爲此語言提供了.mo文件)。

7

它來自gettext的。最初認爲,每次你需要一個國際化的字符串時,國際化的時間太長。所以程序員創建了i18n的快捷方式(因爲國際化中'i'和'n'之間有18個字母),你可能會看到使用它的源代碼。顯然,儘管i18n還太長,現在它只是一個下劃線。

+4

+1諷刺和嘲弄gettext。 – 2010-07-26 15:22:59

+1

該函數的名稱不是'i18n',但是'gettext'儘管... – Hasturkun 2010-07-26 15:59:38