2010-07-26 107 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